@fairyhunter13/opentui-core 0.1.104 → 0.1.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3d.js +1 -1
- package/3d.js.map +2 -2
- package/README.md +2 -2
- package/assets/markdown_inline/highlights.scm +12 -25
- package/console.d.ts +2 -1
- package/{index-rghvzce0.js → index-5pg4y19k.js} +6 -6
- package/index-5pg4y19k.js.map +10 -0
- package/{index-vvxmgn7j.js → index-8wcsb0bc.js} +202 -12
- package/{index-vvxmgn7j.js.map → index-8wcsb0bc.js.map} +19 -19
- package/{index-8z2zcznw.js → index-dnchmavt.js} +4 -4
- package/{index-8z2zcznw.js.map → index-dnchmavt.js.map} +8 -8
- package/index.js +2 -2
- package/package.json +12 -9
- package/parser.worker.js +16 -8
- package/parser.worker.js.map +3 -3
- package/renderables/Markdown.d.ts +4 -0
- package/renderables/Slider.d.ts +4 -1
- package/renderables/TextNode.d.ts +1 -1
- package/runtime-plugin-support.js +3 -3
- package/runtime-plugin.js +3 -3
- package/testing.js +1 -1
- package/testing.js.map +2 -2
- package/index-rghvzce0.js.map +0 -10
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ OpenTUI is a native terminal UI core written in Zig with TypeScript bindings. Th
|
|
|
13
13
|
## Install
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
bun install @opentui
|
|
16
|
+
bun install @fairyhunter13/opentui-core
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
## Build
|
|
@@ -52,7 +52,7 @@ NativeSpanFeed TypeScript benchmarks:
|
|
|
52
52
|
Renderables are hierarchical objects that can be positioned, nested, styled and rendered to the terminal:
|
|
53
53
|
|
|
54
54
|
```typescript
|
|
55
|
-
import { createCliRenderer, TextRenderable } from "@opentui
|
|
55
|
+
import { createCliRenderer, TextRenderable } from "@fairyhunter13/opentui-core"
|
|
56
56
|
|
|
57
57
|
const renderer = await createCliRenderer()
|
|
58
58
|
|
|
@@ -40,37 +40,24 @@
|
|
|
40
40
|
"]" @conceal)
|
|
41
41
|
(#set! conceal " "))
|
|
42
42
|
|
|
43
|
-
;
|
|
43
|
+
; Conceal image links
|
|
44
44
|
(image
|
|
45
|
-
[
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
(#set! conceal ""))
|
|
54
|
-
|
|
55
|
-
; Conceal image opening bracket
|
|
56
|
-
((image
|
|
57
|
-
"[" @conceal)
|
|
45
|
+
[
|
|
46
|
+
"!"
|
|
47
|
+
"["
|
|
48
|
+
"]"
|
|
49
|
+
"("
|
|
50
|
+
(link_destination)
|
|
51
|
+
")"
|
|
52
|
+
] @markup.link
|
|
58
53
|
(#set! conceal ""))
|
|
59
54
|
|
|
60
|
-
; Conceal
|
|
61
|
-
((image
|
|
62
|
-
"]" @conceal)
|
|
63
|
-
(#set! conceal " "))
|
|
64
|
-
|
|
65
|
-
; Style image link destination
|
|
66
|
-
(image
|
|
67
|
-
(link_destination) @markup.link.url)
|
|
68
|
-
|
|
69
|
-
; Conceal full reference links - only conceal brackets, keep link_label visible
|
|
55
|
+
; Conceal full reference links
|
|
70
56
|
(full_reference_link
|
|
71
57
|
[
|
|
72
58
|
"["
|
|
73
59
|
"]"
|
|
60
|
+
(link_label)
|
|
74
61
|
] @markup.link
|
|
75
62
|
(#set! conceal ""))
|
|
76
63
|
|
|
@@ -105,7 +92,7 @@
|
|
|
105
92
|
; Replace common HTML entities.
|
|
106
93
|
((entity_reference) @character.special
|
|
107
94
|
(#eq? @character.special " ")
|
|
108
|
-
(#set! conceal "
|
|
95
|
+
(#set! conceal ""))
|
|
109
96
|
|
|
110
97
|
((entity_reference) @character.special
|
|
111
98
|
(#eq? @character.special "<")
|
package/console.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from "events";
|
|
2
|
-
import type { CliRenderer,
|
|
2
|
+
import type { CliRenderer, MouseEvent } from "./renderer.js";
|
|
3
|
+
import type { ColorInput } from "./lib/RGBA.js";
|
|
3
4
|
import { OptimizedBuffer } from "./buffer.js";
|
|
4
5
|
import { type Clock } from "./lib/clock.js";
|
|
5
6
|
import { Capture } from "./lib/output.capture.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
exports_src
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-8wcsb0bc.js";
|
|
5
5
|
import {
|
|
6
6
|
__require
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-dnchmavt.js";
|
|
8
8
|
|
|
9
9
|
// src/runtime-plugin.ts
|
|
10
10
|
import { existsSync, readFileSync, realpathSync } from "fs";
|
|
11
11
|
import { basename, dirname, isAbsolute, join } from "path";
|
|
12
12
|
import { fileURLToPath } from "url";
|
|
13
|
-
var CORE_RUNTIME_SPECIFIER = "@opentui
|
|
14
|
-
var CORE_TESTING_RUNTIME_SPECIFIER = "@opentui
|
|
13
|
+
var CORE_RUNTIME_SPECIFIER = "@fairyhunter13/opentui-core";
|
|
14
|
+
var CORE_TESTING_RUNTIME_SPECIFIER = "@fairyhunter13/opentui-core/testing";
|
|
15
15
|
var RUNTIME_MODULE_PREFIX = "opentui:runtime-module:";
|
|
16
16
|
var MAX_RUNTIME_RESOLVE_PARENTS = 64;
|
|
17
17
|
var DEFAULT_RUNTIME_PLUGIN_REWRITE_OPTIONS = {
|
|
@@ -407,5 +407,5 @@ function createRuntimePlugin(input = {}) {
|
|
|
407
407
|
|
|
408
408
|
export { isCoreRuntimeModuleSpecifier, runtimeModuleIdForSpecifier, createRuntimePlugin };
|
|
409
409
|
|
|
410
|
-
//# debugId=
|
|
411
|
-
//# sourceMappingURL=index-
|
|
410
|
+
//# debugId=127A9B143CE0234164756E2164756E21
|
|
411
|
+
//# sourceMappingURL=index-5pg4y19k.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/runtime-plugin.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/*\n * Exposes runtime-only modules (for example `@opentui/core`, `@opentui/solid`,\n * `solid-js`) to externally loaded plugins by rewriting matching imports to\n * virtual `opentui:runtime-module:*` ids.\n *\n * Why this is exact-path + prescan instead of one broad `onLoad`:\n * - Bun can break CJS/UMD interop if a file is routed through plugin `onLoad`\n * (real repro: `jsonc-parser` resolving to `lib/umd/main.js`;\n * https://github.com/oven-sh/bun/issues/19279,\n * https://github.com/oven-sh/bun/issues/21369), so arbitrary `node_modules`\n * JS cannot be blanket-rewritten.\n * - runtime `onResolve` is sync-only, so package/type/source discovery here is\n * synchronous and cached.\n * - a matched `onLoad` cannot safely fall through, so loaders must be narrow.\n * - Bun may canonicalize paths before `onLoad`, so loaders are registered for\n * both the resolved path spelling and its realpath, then canonical-checked.\n * - Bun may native-load `node_modules` ESM without firing `onResolve` for\n * nested package imports, so `node_modules` ESM is recursively prescanned and\n * only files that actually need runtime rewriting get exact-path loaders.\n *\n * Behavior:\n * - non-`node_modules` source files get a dedicated rewrite loader immediately.\n * - `node_modules` files are rewritten only if they are ESM (`.mjs`, `.mts`,\n * `.ts`, `.tsx`, `.jsx`, or `.js` under `package.json#type=\"module\"`) and\n * directly or transitively need runtime-module rewriting; unrelated CJS stays\n * untouched.\n * - optional bare-specifier rewriting is preserved for sibling files in\n * packages already marked for runtime rewriting.\n *\n * Notes:\n * - import scanning is regex-based, not a full parser.\n * - CJS helper libraries that themselves import runtime modules are still not\n * supported.\n * - `package.json#type` caching is per plugin setup, not module-global, so a\n * later plugin instance in the same process can observe filesystem changes.\n */\nimport { existsSync, readFileSync, realpathSync } from \"node:fs\"\nimport { basename, dirname, isAbsolute, join } from \"node:path\"\nimport { fileURLToPath } from \"node:url\"\nimport { type BunPlugin } from \"bun\"\nimport * as coreRuntime from \"./index.js\"\n\nexport type RuntimeModuleExports = Record<string, unknown>\nexport type RuntimeModuleLoader = () => RuntimeModuleExports | Promise<RuntimeModuleExports>\nexport type RuntimeModuleEntry = RuntimeModuleExports | RuntimeModuleLoader\n\ninterface SourceAnalysis {\n importSpecifiers: string[]\n needsRuntimeSpecifierRewrite: boolean\n}\n\nexport interface RuntimePluginRewriteOptions {\n nodeModulesRuntimeSpecifiers?: boolean\n nodeModulesBareSpecifiers?: boolean\n}\n\nexport interface CreateRuntimePluginOptions {\n core?: RuntimeModuleEntry\n additional?: Record<string, RuntimeModuleEntry>\n rewrite?: RuntimePluginRewriteOptions\n}\n\nconst CORE_RUNTIME_SPECIFIER = \"@fairyhunter13/opentui-core\"\nconst CORE_TESTING_RUNTIME_SPECIFIER = \"@fairyhunter13/opentui-core/testing\"\nconst RUNTIME_MODULE_PREFIX = \"opentui:runtime-module:\"\nconst MAX_RUNTIME_RESOLVE_PARENTS = 64\nconst DEFAULT_RUNTIME_PLUGIN_REWRITE_OPTIONS: Required<RuntimePluginRewriteOptions> = {\n nodeModulesRuntimeSpecifiers: true,\n nodeModulesBareSpecifiers: false,\n}\n\nconst DEFAULT_CORE_RUNTIME_MODULE_SPECIFIERS = [CORE_RUNTIME_SPECIFIER, CORE_TESTING_RUNTIME_SPECIFIER] as const\n\nconst DEFAULT_CORE_RUNTIME_MODULE_SPECIFIER_SET = new Set<string>(DEFAULT_CORE_RUNTIME_MODULE_SPECIFIERS)\n\nexport const isCoreRuntimeModuleSpecifier = (specifier: string): boolean => {\n return DEFAULT_CORE_RUNTIME_MODULE_SPECIFIER_SET.has(specifier)\n}\n\nconst loadCoreTestingRuntimeModule = async (): Promise<RuntimeModuleExports> => {\n return (await import(\"./testing.js\")) as RuntimeModuleExports\n}\n\nconst escapeRegExp = (value: string): string => {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n}\n\nconst exactSpecifierFilter = (specifier: string): RegExp => {\n return new RegExp(`^${escapeRegExp(specifier)}$`)\n}\n\nconst exactPathFilter = (paths: string[]): RegExp => {\n const candidates = [...new Set(paths.map(sourcePath))]\n return new RegExp(`^(?:${candidates.map(escapeRegExp).join(\"|\")})(?:[?#].*)?$`)\n}\n\nexport const runtimeModuleIdForSpecifier = (specifier: string): string => {\n return `${RUNTIME_MODULE_PREFIX}${encodeURIComponent(specifier)}`\n}\n\nconst resolveRuntimeModuleExports = async (moduleEntry: RuntimeModuleEntry): Promise<RuntimeModuleExports> => {\n if (typeof moduleEntry === \"function\") {\n return await moduleEntry()\n }\n\n return moduleEntry\n}\n\nconst sourcePath = (path: string): string => {\n const searchIndex = path.indexOf(\"?\")\n const hashIndex = path.indexOf(\"#\")\n const end = [searchIndex, hashIndex].filter((index) => index >= 0).sort((a, b) => a - b)[0]\n return end === undefined ? path : path.slice(0, end)\n}\n\nconst normalizedSourcePathByPath = new Map<string, string>()\n\nconst normalizeSourcePath = (path: string): string => {\n const cleanPath = sourcePath(path)\n const cachedPath = normalizedSourcePathByPath.get(cleanPath)\n if (cachedPath !== undefined) {\n return cachedPath\n }\n\n let normalizedPath = cleanPath\n\n try {\n normalizedPath = realpathSync(cleanPath)\n } catch {\n normalizedPath = cleanPath\n }\n\n normalizedSourcePathByPath.set(cleanPath, normalizedPath)\n return normalizedPath\n}\n\nconst isNodeModulesPath = (path: string): boolean => {\n return /(?:^|[/\\\\])node_modules(?:[/\\\\])/.test(path)\n}\n\nconst packageTypeForPath = (\n path: string,\n packageTypeByPackageJsonPath: Map<string, \"module\" | \"commonjs\">,\n): \"module\" | \"commonjs\" => {\n let currentDir = dirname(path)\n\n while (true) {\n const packageJsonPath = join(currentDir, \"package.json\")\n if (existsSync(packageJsonPath)) {\n const cachedPackageType = packageTypeByPackageJsonPath.get(packageJsonPath)\n if (cachedPackageType) {\n return cachedPackageType\n }\n\n let packageType: \"module\" | \"commonjs\" = \"commonjs\"\n\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf8\")) as { type?: string }\n if (packageJson.type === \"module\") {\n packageType = \"module\"\n }\n } catch {\n packageType = \"commonjs\"\n }\n\n packageTypeByPackageJsonPath.set(packageJsonPath, packageType)\n return packageType\n }\n\n const parentDir = dirname(currentDir)\n if (parentDir === currentDir) {\n return \"commonjs\"\n }\n\n currentDir = parentDir\n }\n}\n\nconst isNodeModulesEsmPath = (\n path: string,\n packageTypeByPackageJsonPath: Map<string, \"module\" | \"commonjs\">,\n): boolean => {\n const normalizedPath = normalizeSourcePath(path)\n\n if (!isNodeModulesPath(normalizedPath)) {\n return false\n }\n\n if (\n normalizedPath.endsWith(\".mjs\") ||\n normalizedPath.endsWith(\".mts\") ||\n normalizedPath.endsWith(\".ts\") ||\n normalizedPath.endsWith(\".tsx\") ||\n normalizedPath.endsWith(\".jsx\")\n ) {\n return true\n }\n\n if (normalizedPath.endsWith(\".cjs\") || normalizedPath.endsWith(\".cts\") || !normalizedPath.endsWith(\".js\")) {\n return false\n }\n\n return packageTypeForPath(normalizedPath, packageTypeByPackageJsonPath) === \"module\"\n}\n\nconst nodeModulesPackageRootForPath = (path: string): string | null => {\n let currentDir = dirname(path)\n\n while (true) {\n const parentDir = dirname(currentDir)\n if (parentDir === currentDir) {\n return null\n }\n\n if (basename(parentDir) === \"node_modules\") {\n return currentDir\n }\n\n if (basename(dirname(parentDir)) === \"node_modules\" && basename(parentDir).startsWith(\"@\")) {\n return currentDir\n }\n\n currentDir = parentDir\n }\n}\n\nconst resolveRuntimePluginRewriteOptions = (\n options: RuntimePluginRewriteOptions | undefined,\n): Required<RuntimePluginRewriteOptions> => {\n return {\n nodeModulesRuntimeSpecifiers:\n options?.nodeModulesRuntimeSpecifiers ?? DEFAULT_RUNTIME_PLUGIN_REWRITE_OPTIONS.nodeModulesRuntimeSpecifiers,\n nodeModulesBareSpecifiers:\n options?.nodeModulesBareSpecifiers ?? DEFAULT_RUNTIME_PLUGIN_REWRITE_OPTIONS.nodeModulesBareSpecifiers,\n }\n}\n\nconst runtimeLoaderForPath = (path: string): \"js\" | \"ts\" | \"jsx\" | \"tsx\" | null => {\n const cleanPath = sourcePath(path)\n\n if (cleanPath.endsWith(\".tsx\")) {\n return \"tsx\"\n }\n\n if (cleanPath.endsWith(\".jsx\")) {\n return \"jsx\"\n }\n\n if (cleanPath.endsWith(\".ts\") || cleanPath.endsWith(\".mts\") || cleanPath.endsWith(\".cts\")) {\n return \"ts\"\n }\n\n if (cleanPath.endsWith(\".js\") || cleanPath.endsWith(\".mjs\") || cleanPath.endsWith(\".cjs\")) {\n return \"js\"\n }\n\n return null\n}\n\nconst resolveImportSpecifierPatterns = [\n /(from\\s+[\"'])([^\"']+)([\"'])/g,\n /(import\\s+[\"'])([^\"']+)([\"'])/g,\n /(import\\s*\\(\\s*[\"'])([^\"']+)([\"']\\s*\\))/g,\n /(require\\s*\\(\\s*[\"'])([^\"']+)([\"']\\s*\\))/g,\n] as const\n\nconst isBareSpecifier = (specifier: string): boolean => {\n if (specifier.startsWith(\".\") || specifier.startsWith(\"/\") || specifier.startsWith(\"\\\\\")) {\n return false\n }\n\n if (\n specifier.startsWith(\"node:\") ||\n specifier.startsWith(\"bun:\") ||\n specifier.startsWith(\"http:\") ||\n specifier.startsWith(\"https:\") ||\n specifier.startsWith(\"file:\") ||\n specifier.startsWith(\"data:\")\n ) {\n return false\n }\n\n if (specifier.startsWith(RUNTIME_MODULE_PREFIX)) {\n return false\n }\n\n return true\n}\n\nconst registerResolveParent = (resolveParentsByRecency: string[], resolveParent: string): void => {\n const existingIndex = resolveParentsByRecency.indexOf(resolveParent)\n if (existingIndex >= 0) {\n resolveParentsByRecency.splice(existingIndex, 1)\n }\n\n resolveParentsByRecency.push(resolveParent)\n\n if (resolveParentsByRecency.length > MAX_RUNTIME_RESOLVE_PARENTS) {\n resolveParentsByRecency.shift()\n }\n}\n\nconst rewriteImportSpecifiers = (code: string, resolveReplacement: (specifier: string) => string | null): string => {\n let transformedCode = code\n\n for (const pattern of resolveImportSpecifierPatterns) {\n transformedCode = transformedCode.replace(pattern, (fullMatch, prefix, specifier, suffix) => {\n const replacement = resolveReplacement(specifier)\n if (!replacement || replacement === specifier) {\n return fullMatch\n }\n\n return `${prefix}${replacement}${suffix}`\n })\n }\n\n return transformedCode\n}\n\nconst collectImportSpecifiers = (code: string): string[] => {\n const specifiers = new Set<string>()\n\n for (const pattern of resolveImportSpecifierPatterns) {\n code.replace(pattern, (_fullMatch, _prefix, specifier) => {\n specifiers.add(specifier)\n return _fullMatch\n })\n }\n\n return [...specifiers]\n}\n\nconst resolveFromParent = (specifier: string, parent: string): string | null => {\n try {\n const resolvedSpecifier = import.meta.resolve(specifier, parent)\n if (\n resolvedSpecifier === specifier ||\n resolvedSpecifier.startsWith(\"node:\") ||\n resolvedSpecifier.startsWith(\"bun:\")\n ) {\n return null\n }\n\n return resolvedSpecifier\n } catch {\n return null\n }\n}\n\nconst resolveSourcePathFromSpecifier = (specifier: string, importer: string): string | null => {\n if (\n specifier.startsWith(\"node:\") ||\n specifier.startsWith(\"bun:\") ||\n specifier.startsWith(\"http:\") ||\n specifier.startsWith(\"https:\") ||\n specifier.startsWith(\"data:\") ||\n specifier.startsWith(RUNTIME_MODULE_PREFIX)\n ) {\n return null\n }\n\n if (specifier.startsWith(\"file:\")) {\n return sourcePath(fileURLToPath(specifier))\n }\n\n if (isAbsolute(specifier)) {\n return sourcePath(specifier)\n }\n\n const resolvedSpecifier = resolveFromParent(specifier, importer)\n if (!resolvedSpecifier) {\n return null\n }\n\n if (resolvedSpecifier.startsWith(\"file:\")) {\n return sourcePath(fileURLToPath(resolvedSpecifier))\n }\n\n if (isAbsolute(resolvedSpecifier)) {\n return sourcePath(resolvedSpecifier)\n }\n\n return null\n}\n\nconst rewriteImportsFromResolveParents = (code: string, resolveParentsByRecency: string[]): string => {\n if (resolveParentsByRecency.length === 0) {\n return code\n }\n\n const resolveFromParents = (specifier: string): string | null => {\n if (!isBareSpecifier(specifier)) {\n return null\n }\n\n for (let index = resolveParentsByRecency.length - 1; index >= 0; index -= 1) {\n const resolveParent = resolveParentsByRecency[index]\n const resolvedSpecifier = resolveFromParent(specifier, resolveParent)\n if (resolvedSpecifier) {\n return resolvedSpecifier\n }\n }\n\n return null\n }\n\n return rewriteImportSpecifiers(code, resolveFromParents)\n}\n\nconst rewriteRuntimeSpecifiers = (code: string, runtimeModuleIdsBySpecifier: Map<string, string>): string => {\n return rewriteImportSpecifiers(code, (specifier) => {\n const runtimeModuleId = runtimeModuleIdsBySpecifier.get(specifier)\n return runtimeModuleId ?? null\n })\n}\n\nexport function createRuntimePlugin(input: CreateRuntimePluginOptions = {}): BunPlugin {\n const runtimeModules = new Map<string, RuntimeModuleEntry>()\n runtimeModules.set(CORE_RUNTIME_SPECIFIER, input.core ?? (coreRuntime as RuntimeModuleExports))\n runtimeModules.set(CORE_TESTING_RUNTIME_SPECIFIER, loadCoreTestingRuntimeModule)\n const rewriteOptions = resolveRuntimePluginRewriteOptions(input.rewrite)\n\n for (const [specifier, moduleEntry] of Object.entries(input.additional ?? {})) {\n runtimeModules.set(specifier, moduleEntry)\n }\n\n const runtimeModuleIdsBySpecifier = new Map<string, string>()\n for (const specifier of runtimeModules.keys()) {\n runtimeModuleIdsBySpecifier.set(specifier, runtimeModuleIdForSpecifier(specifier))\n }\n\n return {\n name: \"bun-plugin-opentui-runtime-modules\",\n setup: (build) => {\n const resolveParentsByRecency: string[] = []\n const installedRewriteLoaders = new Set<string>()\n const nodeModulesBareRewritePackageRoots = new Set<string>()\n const packageTypeByPackageJsonPath = new Map<string, \"module\" | \"commonjs\">()\n const sourceAnalysisByPath = new Map<string, SourceAnalysis>()\n const nodeModulesRuntimeRewritePathsByPath = new Map<string, string[]>()\n\n const installRewriteLoader = (path: string): void => {\n const resolvedTargetPath = sourcePath(path)\n const canonicalTargetPath = normalizeSourcePath(resolvedTargetPath)\n\n if (installedRewriteLoaders.has(canonicalTargetPath)) {\n return\n }\n\n installedRewriteLoaders.add(canonicalTargetPath)\n\n // Register both the resolved path spelling and its canonical realpath so Bun\n // can reach the loader even if it reports the same file through a different alias.\n build.onLoad({ filter: exactPathFilter([resolvedTargetPath, canonicalTargetPath]) }, async (args) => {\n const loadedPath = normalizeSourcePath(args.path)\n if (loadedPath !== canonicalTargetPath) {\n return undefined\n }\n\n const nodeModulesPath = isNodeModulesPath(loadedPath)\n const shouldRewriteRuntimeSpecifiers = !nodeModulesPath || rewriteOptions.nodeModulesRuntimeSpecifiers\n const shouldRewriteBareSpecifiers = !nodeModulesPath || rewriteOptions.nodeModulesBareSpecifiers\n const loader = runtimeLoaderForPath(args.path)\n\n if (!loader) {\n throw new Error(`Unable to determine runtime loader for path: ${args.path}`)\n }\n\n const contents = await Bun.file(loadedPath).text()\n const runtimeRewrittenContents = shouldRewriteRuntimeSpecifiers\n ? rewriteRuntimeSpecifiers(contents, runtimeModuleIdsBySpecifier)\n : contents\n\n if (runtimeRewrittenContents !== contents && shouldRewriteBareSpecifiers) {\n registerResolveParent(resolveParentsByRecency, loadedPath)\n }\n\n const transformedContents = shouldRewriteBareSpecifiers\n ? rewriteImportsFromResolveParents(runtimeRewrittenContents, resolveParentsByRecency)\n : runtimeRewrittenContents\n\n return {\n contents: transformedContents,\n loader,\n }\n })\n }\n\n const analyzeSourcePath = (path: string): SourceAnalysis => {\n const normalizedPath = normalizeSourcePath(path)\n const cachedAnalysis = sourceAnalysisByPath.get(normalizedPath)\n if (cachedAnalysis) {\n return cachedAnalysis\n }\n\n const contents = readFileSync(normalizedPath, \"utf8\")\n const importSpecifiers = collectImportSpecifiers(contents)\n const analysis = {\n importSpecifiers,\n needsRuntimeSpecifierRewrite: importSpecifiers.some((specifier) =>\n runtimeModuleIdsBySpecifier.has(specifier),\n ),\n }\n\n sourceAnalysisByPath.set(normalizedPath, analysis)\n return analysis\n }\n\n const collectNodeModulesRuntimeRewritePaths = (path: string, visiting = new Set<string>()): string[] => {\n const normalizedPath = normalizeSourcePath(path)\n\n if (!isNodeModulesEsmPath(normalizedPath, packageTypeByPackageJsonPath)) {\n return []\n }\n\n const cachedPaths = nodeModulesRuntimeRewritePathsByPath.get(normalizedPath)\n if (cachedPaths) {\n return cachedPaths\n }\n\n if (visiting.has(normalizedPath)) {\n return []\n }\n\n visiting.add(normalizedPath)\n\n const rewritePaths = new Set<string>()\n const analysis = analyzeSourcePath(normalizedPath)\n\n if (analysis.needsRuntimeSpecifierRewrite) {\n rewritePaths.add(normalizedPath)\n }\n\n for (const specifier of analysis.importSpecifiers) {\n const resolvedPath = resolveSourcePathFromSpecifier(specifier, normalizedPath)\n if (!resolvedPath || !isNodeModulesEsmPath(resolvedPath, packageTypeByPackageJsonPath)) {\n continue\n }\n\n for (const nestedPath of collectNodeModulesRuntimeRewritePaths(resolvedPath, visiting)) {\n rewritePaths.add(nestedPath)\n }\n }\n\n visiting.delete(normalizedPath)\n\n const resolvedRewritePaths = [...rewritePaths]\n nodeModulesRuntimeRewritePathsByPath.set(normalizedPath, resolvedRewritePaths)\n return resolvedRewritePaths\n }\n\n for (const [specifier, moduleEntry] of runtimeModules.entries()) {\n const moduleId = runtimeModuleIdsBySpecifier.get(specifier)\n\n if (!moduleId) {\n continue\n }\n\n build.module(moduleId, async () => ({\n exports: await resolveRuntimeModuleExports(moduleEntry),\n loader: \"object\",\n }))\n\n build.onResolve({ filter: exactSpecifierFilter(specifier) }, () => ({ path: moduleId }))\n }\n\n build.onResolve({ filter: /.*/ }, (args) => {\n if (runtimeModuleIdsBySpecifier.has(args.path) || args.path.startsWith(RUNTIME_MODULE_PREFIX)) {\n return undefined\n }\n\n const path = resolveSourcePathFromSpecifier(args.path, args.importer)\n if (!path || !runtimeLoaderForPath(path)) {\n return undefined\n }\n\n const nodeModulesPath = isNodeModulesPath(path)\n\n if (!nodeModulesPath) {\n installRewriteLoader(path)\n return undefined\n }\n\n if (!rewriteOptions.nodeModulesRuntimeSpecifiers && !rewriteOptions.nodeModulesBareSpecifiers) {\n return undefined\n }\n\n for (const rewritePath of collectNodeModulesRuntimeRewritePaths(path)) {\n installRewriteLoader(rewritePath)\n }\n\n const packageRoot = nodeModulesPackageRootForPath(path)\n if (\n rewriteOptions.nodeModulesBareSpecifiers &&\n packageRoot &&\n nodeModulesBareRewritePackageRoots.has(packageRoot)\n ) {\n installRewriteLoader(path)\n return undefined\n }\n\n if (!rewriteOptions.nodeModulesRuntimeSpecifiers || !analyzeSourcePath(path).needsRuntimeSpecifierRewrite) {\n return undefined\n }\n\n if (rewriteOptions.nodeModulesBareSpecifiers && packageRoot) {\n nodeModulesBareRewritePackageRoots.add(packageRoot)\n }\n\n installRewriteLoader(path)\n return undefined\n })\n },\n }\n}\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "127A9B143CE0234164756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -167,7 +167,7 @@ import {
|
|
|
167
167
|
white,
|
|
168
168
|
wrapWithDelegates,
|
|
169
169
|
yellow
|
|
170
|
-
} from "./index-
|
|
170
|
+
} from "./index-dnchmavt.js";
|
|
171
171
|
|
|
172
172
|
// src/index.ts
|
|
173
173
|
var exports_src2 = {};
|
|
@@ -9194,7 +9194,7 @@ function parseMarkdownIncremental(newContent, prevState, trailingUnstable = 2) {
|
|
|
9194
9194
|
}
|
|
9195
9195
|
|
|
9196
9196
|
// src/renderables/Markdown.ts
|
|
9197
|
-
var TRAILING_MARKDOWN_BLOCK_BREAKS_RE = /(?:\r?\n)
|
|
9197
|
+
var TRAILING_MARKDOWN_BLOCK_BREAKS_RE = /(?:\r?\n)+$/;
|
|
9198
9198
|
function colorsEqual(left, right) {
|
|
9199
9199
|
if (!left || !right)
|
|
9200
9200
|
return left === right;
|
|
@@ -9219,6 +9219,9 @@ class MarkdownRenderable extends Renderable {
|
|
|
9219
9219
|
content: context.content,
|
|
9220
9220
|
highlights: context.highlights
|
|
9221
9221
|
});
|
|
9222
|
+
_inlineConcealChunks = (chunks, context) => {
|
|
9223
|
+
return this.buildInlineConcealChunks(chunks, context);
|
|
9224
|
+
};
|
|
9222
9225
|
_contentDefaultOptions = {
|
|
9223
9226
|
content: "",
|
|
9224
9227
|
conceal: true,
|
|
@@ -9428,9 +9431,6 @@ class MarkdownRenderable extends Renderable {
|
|
|
9428
9431
|
const imageHref = { url: token.href };
|
|
9429
9432
|
if (this._conceal) {
|
|
9430
9433
|
chunks.push(this.createChunk(token.text || "image", "markup.link.label", imageHref));
|
|
9431
|
-
chunks.push(this.createChunk(" (", "markup.link", imageHref));
|
|
9432
|
-
chunks.push(this.createChunk(token.href, "markup.link.url", imageHref));
|
|
9433
|
-
chunks.push(this.createChunk(")", "markup.link", imageHref));
|
|
9434
9434
|
} else {
|
|
9435
9435
|
chunks.push(this.createChunk("![", "markup.link", imageHref));
|
|
9436
9436
|
chunks.push(this.createChunk(token.text || "", "markup.link.label", imageHref));
|
|
@@ -9475,6 +9475,196 @@ class MarkdownRenderable extends Renderable {
|
|
|
9475
9475
|
break;
|
|
9476
9476
|
}
|
|
9477
9477
|
}
|
|
9478
|
+
buildInlineConcealChunks(chunks, context) {
|
|
9479
|
+
const result = [];
|
|
9480
|
+
try {
|
|
9481
|
+
const parsed = parseMarkdownIncremental(context.content, null, 0);
|
|
9482
|
+
const tokens = parsed.tokens;
|
|
9483
|
+
for (const token of tokens) {
|
|
9484
|
+
this.renderBlockTokenInline(token, result);
|
|
9485
|
+
}
|
|
9486
|
+
} catch {
|
|
9487
|
+
return chunks;
|
|
9488
|
+
}
|
|
9489
|
+
if (result.length > 0 && result[result.length - 1].text === `
|
|
9490
|
+
`) {
|
|
9491
|
+
result.pop();
|
|
9492
|
+
}
|
|
9493
|
+
if (result.length === 0)
|
|
9494
|
+
return chunks;
|
|
9495
|
+
const linked = this._linkifyMarkdownChunks(result, context);
|
|
9496
|
+
if (Array.isArray(linked))
|
|
9497
|
+
return linked;
|
|
9498
|
+
return result;
|
|
9499
|
+
}
|
|
9500
|
+
renderBlockTokenInline(token, chunks) {
|
|
9501
|
+
switch (token.type) {
|
|
9502
|
+
case "heading": {
|
|
9503
|
+
const headingToken = token;
|
|
9504
|
+
const style = `markup.heading.${headingToken.depth}`;
|
|
9505
|
+
for (const child of headingToken.tokens) {
|
|
9506
|
+
this.renderInlineTokenWithStyle(child, chunks, style);
|
|
9507
|
+
}
|
|
9508
|
+
chunks.push(this.createDefaultChunk(`
|
|
9509
|
+
`));
|
|
9510
|
+
break;
|
|
9511
|
+
}
|
|
9512
|
+
case "paragraph": {
|
|
9513
|
+
const paragraphToken = token;
|
|
9514
|
+
this.renderInlineContent(paragraphToken.tokens, chunks);
|
|
9515
|
+
chunks.push(this.createDefaultChunk(`
|
|
9516
|
+
`));
|
|
9517
|
+
break;
|
|
9518
|
+
}
|
|
9519
|
+
case "list": {
|
|
9520
|
+
this.renderListInline(token, chunks, 0);
|
|
9521
|
+
break;
|
|
9522
|
+
}
|
|
9523
|
+
case "blockquote": {
|
|
9524
|
+
const quoteToken = token;
|
|
9525
|
+
for (const child of quoteToken.tokens) {
|
|
9526
|
+
const markedChild = child;
|
|
9527
|
+
if (markedChild.type === "paragraph" && "tokens" in markedChild) {
|
|
9528
|
+
chunks.push(this.createChunk("\u258E ", "markup.quote"));
|
|
9529
|
+
for (const inline of markedChild.tokens) {
|
|
9530
|
+
this.renderInlineTokenWithStyle(inline, chunks, "markup.quote");
|
|
9531
|
+
}
|
|
9532
|
+
chunks.push(this.createDefaultChunk(`
|
|
9533
|
+
`));
|
|
9534
|
+
} else {
|
|
9535
|
+
chunks.push(this.createChunk("\u258E ", "markup.quote"));
|
|
9536
|
+
this.renderBlockTokenInline(markedChild, chunks);
|
|
9537
|
+
}
|
|
9538
|
+
}
|
|
9539
|
+
break;
|
|
9540
|
+
}
|
|
9541
|
+
case "code": {
|
|
9542
|
+
const codeToken = token;
|
|
9543
|
+
const rawStyle = this.getStyle("markup.raw.block");
|
|
9544
|
+
const codeText = codeToken.text;
|
|
9545
|
+
for (const line of codeText.split(`
|
|
9546
|
+
`)) {
|
|
9547
|
+
chunks.push({
|
|
9548
|
+
__isChunk: true,
|
|
9549
|
+
text: " " + line,
|
|
9550
|
+
fg: rawStyle?.fg,
|
|
9551
|
+
bg: rawStyle?.bg,
|
|
9552
|
+
attributes: rawStyle ? createTextAttributes({
|
|
9553
|
+
bold: rawStyle.bold,
|
|
9554
|
+
italic: rawStyle.italic,
|
|
9555
|
+
underline: rawStyle.underline,
|
|
9556
|
+
dim: rawStyle.dim
|
|
9557
|
+
}) : 0
|
|
9558
|
+
});
|
|
9559
|
+
chunks.push(this.createDefaultChunk(`
|
|
9560
|
+
`));
|
|
9561
|
+
}
|
|
9562
|
+
break;
|
|
9563
|
+
}
|
|
9564
|
+
case "html": {
|
|
9565
|
+
chunks.push(this.createDefaultChunk(token.text));
|
|
9566
|
+
chunks.push(this.createDefaultChunk(`
|
|
9567
|
+
`));
|
|
9568
|
+
break;
|
|
9569
|
+
}
|
|
9570
|
+
case "hr": {
|
|
9571
|
+
const hrStyle = this.getStyle("punctuation.special");
|
|
9572
|
+
chunks.push({
|
|
9573
|
+
__isChunk: true,
|
|
9574
|
+
text: "\u2500".repeat(40),
|
|
9575
|
+
fg: hrStyle?.fg,
|
|
9576
|
+
bg: hrStyle?.bg,
|
|
9577
|
+
attributes: hrStyle ? createTextAttributes({
|
|
9578
|
+
bold: hrStyle.bold,
|
|
9579
|
+
italic: hrStyle.italic,
|
|
9580
|
+
underline: hrStyle.underline,
|
|
9581
|
+
dim: hrStyle.dim
|
|
9582
|
+
}) : 0
|
|
9583
|
+
});
|
|
9584
|
+
chunks.push(this.createDefaultChunk(`
|
|
9585
|
+
`));
|
|
9586
|
+
break;
|
|
9587
|
+
}
|
|
9588
|
+
case "table": {
|
|
9589
|
+
chunks.push(this.createDefaultChunk(token.raw ?? ""));
|
|
9590
|
+
chunks.push(this.createDefaultChunk(`
|
|
9591
|
+
`));
|
|
9592
|
+
break;
|
|
9593
|
+
}
|
|
9594
|
+
case "def":
|
|
9595
|
+
break;
|
|
9596
|
+
case "space":
|
|
9597
|
+
chunks.push(this.createDefaultChunk(`
|
|
9598
|
+
`));
|
|
9599
|
+
break;
|
|
9600
|
+
default:
|
|
9601
|
+
if ("tokens" in token && Array.isArray(token.tokens)) {
|
|
9602
|
+
this.renderInlineContent(token.tokens, chunks);
|
|
9603
|
+
} else {
|
|
9604
|
+
chunks.push(this.createDefaultChunk(token.raw ?? ""));
|
|
9605
|
+
}
|
|
9606
|
+
chunks.push(this.createDefaultChunk(`
|
|
9607
|
+
`));
|
|
9608
|
+
break;
|
|
9609
|
+
}
|
|
9610
|
+
}
|
|
9611
|
+
renderListInline(list, chunks, depth) {
|
|
9612
|
+
const listStyle = this.getStyle("markup.list");
|
|
9613
|
+
const checkedStyle = this.getStyle("markup.list.checked");
|
|
9614
|
+
const uncheckedStyle = this.getStyle("markup.list.unchecked");
|
|
9615
|
+
for (let i = 0;i < list.items.length; i++) {
|
|
9616
|
+
const item = list.items[i];
|
|
9617
|
+
const indent = " ".repeat(depth);
|
|
9618
|
+
const start = typeof list.start === "number" ? list.start : 1;
|
|
9619
|
+
if (item.task) {
|
|
9620
|
+
const checkmark = item.checked ? "\u2611 " : "\u2610 ";
|
|
9621
|
+
const checkStyle = item.checked ? checkedStyle : uncheckedStyle;
|
|
9622
|
+
chunks.push({
|
|
9623
|
+
__isChunk: true,
|
|
9624
|
+
text: indent + checkmark,
|
|
9625
|
+
fg: checkStyle?.fg ?? listStyle?.fg,
|
|
9626
|
+
bg: checkStyle?.bg ?? listStyle?.bg,
|
|
9627
|
+
attributes: checkStyle ? createTextAttributes({
|
|
9628
|
+
bold: checkStyle.bold,
|
|
9629
|
+
italic: checkStyle.italic,
|
|
9630
|
+
underline: checkStyle.underline,
|
|
9631
|
+
dim: checkStyle.dim
|
|
9632
|
+
}) : 0
|
|
9633
|
+
});
|
|
9634
|
+
} else {
|
|
9635
|
+
const bullet = list.ordered ? `${start + i}. ` : "\u2022 ";
|
|
9636
|
+
chunks.push({
|
|
9637
|
+
__isChunk: true,
|
|
9638
|
+
text: indent + bullet,
|
|
9639
|
+
fg: listStyle?.fg,
|
|
9640
|
+
bg: listStyle?.bg,
|
|
9641
|
+
attributes: listStyle ? createTextAttributes({
|
|
9642
|
+
bold: listStyle.bold,
|
|
9643
|
+
italic: listStyle.italic,
|
|
9644
|
+
underline: listStyle.underline,
|
|
9645
|
+
dim: listStyle.dim
|
|
9646
|
+
}) : 0
|
|
9647
|
+
});
|
|
9648
|
+
}
|
|
9649
|
+
for (const subToken of item.tokens) {
|
|
9650
|
+
const markedSub = subToken;
|
|
9651
|
+
if (markedSub.type === "text" && "tokens" in markedSub && Array.isArray(markedSub.tokens)) {
|
|
9652
|
+
this.renderInlineContent(markedSub.tokens, chunks);
|
|
9653
|
+
} else if (markedSub.type === "list") {
|
|
9654
|
+
chunks.push(this.createDefaultChunk(`
|
|
9655
|
+
`));
|
|
9656
|
+
this.renderListInline(markedSub, chunks, depth + 1);
|
|
9657
|
+
continue;
|
|
9658
|
+
} else if (markedSub.type === "paragraph" && "tokens" in markedSub) {
|
|
9659
|
+
this.renderInlineContent(markedSub.tokens, chunks);
|
|
9660
|
+
} else {
|
|
9661
|
+
this.renderInlineToken(markedSub, chunks);
|
|
9662
|
+
}
|
|
9663
|
+
}
|
|
9664
|
+
chunks.push(this.createDefaultChunk(`
|
|
9665
|
+
`));
|
|
9666
|
+
}
|
|
9667
|
+
}
|
|
9478
9668
|
createMarkdownCodeRenderable(content, id, marginBottom = 0) {
|
|
9479
9669
|
return new CodeRenderable(this.ctx, {
|
|
9480
9670
|
id,
|
|
@@ -9484,9 +9674,9 @@ class MarkdownRenderable extends Renderable {
|
|
|
9484
9674
|
fg: this._fg,
|
|
9485
9675
|
bg: this._bg,
|
|
9486
9676
|
conceal: this._conceal,
|
|
9487
|
-
drawUnstyledText:
|
|
9677
|
+
drawUnstyledText: true,
|
|
9488
9678
|
streaming: true,
|
|
9489
|
-
onChunks: this._linkifyMarkdownChunks,
|
|
9679
|
+
onChunks: this._conceal ? this._inlineConcealChunks : this._linkifyMarkdownChunks,
|
|
9490
9680
|
treeSitterClient: this._treeSitterClient,
|
|
9491
9681
|
width: "100%",
|
|
9492
9682
|
marginBottom
|
|
@@ -9515,8 +9705,9 @@ class MarkdownRenderable extends Renderable {
|
|
|
9515
9705
|
renderable.fg = this._fg;
|
|
9516
9706
|
renderable.bg = this._bg;
|
|
9517
9707
|
renderable.conceal = this._conceal;
|
|
9518
|
-
renderable.drawUnstyledText =
|
|
9708
|
+
renderable.drawUnstyledText = true;
|
|
9519
9709
|
renderable.streaming = true;
|
|
9710
|
+
renderable.onChunks = this._conceal ? this._inlineConcealChunks : this._linkifyMarkdownChunks;
|
|
9520
9711
|
renderable.marginBottom = marginBottom;
|
|
9521
9712
|
}
|
|
9522
9713
|
applyCodeBlockRenderable(renderable, token, marginBottom) {
|
|
@@ -9547,8 +9738,7 @@ class MarkdownRenderable extends Renderable {
|
|
|
9547
9738
|
};
|
|
9548
9739
|
}
|
|
9549
9740
|
normalizeMarkdownBlockRaw(raw) {
|
|
9550
|
-
return raw.replace(TRAILING_MARKDOWN_BLOCK_BREAKS_RE,
|
|
9551
|
-
`);
|
|
9741
|
+
return raw.replace(TRAILING_MARKDOWN_BLOCK_BREAKS_RE, "");
|
|
9552
9742
|
}
|
|
9553
9743
|
buildRenderableTokens(tokens) {
|
|
9554
9744
|
if (this._renderNode) {
|
|
@@ -12072,5 +12262,5 @@ class TimeToFirstDrawRenderable extends Renderable {
|
|
|
12072
12262
|
}
|
|
12073
12263
|
export { TextBufferView, convertThemeToStyles, SyntaxStyle, DistortionEffect, VignetteEffect, CloudsEffect, FlamesEffect, CRTRollingBarEffect, RainbowTextEffect, applyScanlines, applyInvert, applyNoise, applyChromaticAberration, applyAsciiArt, applyBrightness, applyGain, applySaturation, BloomEffect, SEPIA_MATRIX, PROTANOPIA_SIM_MATRIX, DEUTERANOPIA_SIM_MATRIX, TRITANOPIA_SIM_MATRIX, ACHROMATOPSIA_MATRIX, PROTANOPIA_COMP_MATRIX, DEUTERANOPIA_COMP_MATRIX, TRITANOPIA_COMP_MATRIX, TECHNICOLOR_MATRIX, SOLARIZATION_MATRIX, SYNTHWAVE_MATRIX, GREENSCALE_MATRIX, GRAYSCALE_MATRIX, INVERT_MATRIX, Timeline, engine, createTimeline, SlotRegistry, createSlotRegistry, createCoreSlotRegistry, registerCorePlugin, resolveCoreSlot, SlotRenderable, NativeSpanFeed, FrameBufferRenderable, ASCIIFontRenderable, BoxRenderable, TextBufferRenderable, CodeRenderable, isTextNodeRenderable, TextNodeRenderable, RootTextNodeRenderable, Generic, Box, Text, ASCIIFont, Input, Select, TabSelect, FrameBuffer, Code, ScrollBox, vstyles, VRenderable, LineNumberRenderable, TextRenderable, DiffRenderable, TextareaRenderable, InputRenderableEvents, InputRenderable, TextTableRenderable, MarkdownRenderable, SliderRenderable, ScrollBarRenderable, ArrowRenderable, ScrollBoxRenderable, SelectRenderableEvents, SelectRenderable, TabSelectRenderableEvents, TabSelectRenderable, TimeToFirstDrawRenderable, exports_src2 as exports_src };
|
|
12074
12264
|
|
|
12075
|
-
//# debugId=
|
|
12076
|
-
//# sourceMappingURL=index-
|
|
12265
|
+
//# debugId=0E05C243502EEC0264756E2164756E21
|
|
12266
|
+
//# sourceMappingURL=index-8wcsb0bc.js.map
|