@opentui/core 0.1.94 → 0.1.95

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.
@@ -11,6 +11,10 @@ var CORE_RUNTIME_SPECIFIER = "@opentui/core";
11
11
  var CORE_TESTING_RUNTIME_SPECIFIER = "@opentui/core/testing";
12
12
  var RUNTIME_MODULE_PREFIX = "opentui:runtime-module:";
13
13
  var MAX_RUNTIME_RESOLVE_PARENTS = 64;
14
+ var DEFAULT_RUNTIME_PLUGIN_REWRITE_OPTIONS = {
15
+ nodeModulesRuntimeSpecifiers: true,
16
+ nodeModulesBareSpecifiers: false
17
+ };
14
18
  var DEFAULT_CORE_RUNTIME_MODULE_SPECIFIERS = [CORE_RUNTIME_SPECIFIER, CORE_TESTING_RUNTIME_SPECIFIER];
15
19
  var DEFAULT_CORE_RUNTIME_MODULE_SPECIFIER_SET = new Set(DEFAULT_CORE_RUNTIME_MODULE_SPECIFIERS);
16
20
  var isCoreRuntimeModuleSpecifier = (specifier) => {
@@ -40,6 +44,15 @@ var sourcePath = (path) => {
40
44
  const end = [searchIndex, hashIndex].filter((index) => index >= 0).sort((a, b) => a - b)[0];
41
45
  return end === undefined ? path : path.slice(0, end);
42
46
  };
47
+ var isNodeModulesPath = (path) => {
48
+ return /(?:^|[/\\])node_modules(?:[/\\])/.test(path);
49
+ };
50
+ var resolveRuntimePluginRewriteOptions = (options) => {
51
+ return {
52
+ nodeModulesRuntimeSpecifiers: options?.nodeModulesRuntimeSpecifiers ?? DEFAULT_RUNTIME_PLUGIN_REWRITE_OPTIONS.nodeModulesRuntimeSpecifiers,
53
+ nodeModulesBareSpecifiers: options?.nodeModulesBareSpecifiers ?? DEFAULT_RUNTIME_PLUGIN_REWRITE_OPTIONS.nodeModulesBareSpecifiers
54
+ };
55
+ };
43
56
  var runtimeLoaderForPath = (path) => {
44
57
  const cleanPath = sourcePath(path);
45
58
  if (cleanPath.endsWith(".tsx")) {
@@ -56,7 +69,7 @@ var runtimeLoaderForPath = (path) => {
56
69
  }
57
70
  return null;
58
71
  };
59
- var runtimeSourceFilter = /^(?!.*(?:\/|\\)node_modules(?:\/|\\)).*\.(?:[cm]?js|[cm]?ts|jsx|tsx)(?:[?#].*)?$/;
72
+ var runtimeSourceFilter = /\.(?:[cm]?js|[cm]?ts|jsx|tsx)(?:[?#].*)?$/;
60
73
  var resolveImportSpecifierPatterns = [
61
74
  /(from\s+["'])([^"']+)(["'])/g,
62
75
  /(import\s+["'])([^"']+)(["'])/g,
@@ -138,6 +151,7 @@ function createRuntimePlugin(input = {}) {
138
151
  const runtimeModules = new Map;
139
152
  runtimeModules.set(CORE_RUNTIME_SPECIFIER, input.core ?? exports_src);
140
153
  runtimeModules.set(CORE_TESTING_RUNTIME_SPECIFIER, loadCoreTestingRuntimeModule);
154
+ const rewriteOptions = resolveRuntimePluginRewriteOptions(input.rewrite);
141
155
  for (const [specifier, moduleEntry] of Object.entries(input.additional ?? {})) {
142
156
  runtimeModules.set(specifier, moduleEntry);
143
157
  }
@@ -162,17 +176,23 @@ function createRuntimePlugin(input = {}) {
162
176
  }
163
177
  build.onLoad({ filter: runtimeSourceFilter }, async (args) => {
164
178
  const path = sourcePath(args.path);
179
+ const nodeModulesPath = isNodeModulesPath(path);
180
+ const shouldRewriteRuntimeSpecifiers = !nodeModulesPath || rewriteOptions.nodeModulesRuntimeSpecifiers;
181
+ const shouldRewriteBareSpecifiers = !nodeModulesPath || rewriteOptions.nodeModulesBareSpecifiers;
182
+ if (!shouldRewriteRuntimeSpecifiers && !shouldRewriteBareSpecifiers) {
183
+ return;
184
+ }
165
185
  const loader = runtimeLoaderForPath(args.path);
166
186
  if (!loader) {
167
187
  throw new Error(`Unable to determine runtime loader for path: ${args.path}`);
168
188
  }
169
189
  const file = Bun.file(path);
170
190
  const contents = await file.text();
171
- const runtimeRewrittenContents = rewriteRuntimeSpecifiers(contents, runtimeModuleIdsBySpecifier);
172
- if (runtimeRewrittenContents !== contents) {
191
+ const runtimeRewrittenContents = shouldRewriteRuntimeSpecifiers ? rewriteRuntimeSpecifiers(contents, runtimeModuleIdsBySpecifier) : contents;
192
+ if (runtimeRewrittenContents !== contents && shouldRewriteBareSpecifiers) {
173
193
  registerResolveParent(resolveParentsByRecency, path);
174
194
  }
175
- const transformedContents = rewriteImportsFromResolveParents(runtimeRewrittenContents, resolveParentsByRecency);
195
+ const transformedContents = shouldRewriteBareSpecifiers ? rewriteImportsFromResolveParents(runtimeRewrittenContents, resolveParentsByRecency) : runtimeRewrittenContents;
176
196
  return {
177
197
  contents: transformedContents,
178
198
  loader
@@ -184,5 +204,5 @@ function createRuntimePlugin(input = {}) {
184
204
 
185
205
  export { isCoreRuntimeModuleSpecifier, runtimeModuleIdForSpecifier, createRuntimePlugin };
186
206
 
187
- //# debugId=320B34A5E2C7118F64756E2164756E21
188
- //# sourceMappingURL=index-t7fkn9sh.js.map
207
+ //# debugId=28B0B69C36E6FDF764756E2164756E21
208
+ //# sourceMappingURL=index-d991k25n.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/runtime-plugin.ts"],
4
+ "sourcesContent": [
5
+ "import { 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\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 = \"@opentui/core\"\nconst CORE_TESTING_RUNTIME_SPECIFIER = \"@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\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 isNodeModulesPath = (path: string): boolean => {\n return /(?:^|[/\\\\])node_modules(?:[/\\\\])/.test(path)\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 runtimeSourceFilter = /\\.(?:[cm]?js|[cm]?ts|jsx|tsx)(?:[?#].*)?$/\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 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 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\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.onLoad({ filter: runtimeSourceFilter }, async (args) => {\n const path = sourcePath(args.path)\n const nodeModulesPath = isNodeModulesPath(path)\n const shouldRewriteRuntimeSpecifiers = !nodeModulesPath || rewriteOptions.nodeModulesRuntimeSpecifiers\n const shouldRewriteBareSpecifiers = !nodeModulesPath || rewriteOptions.nodeModulesBareSpecifiers\n\n if (!shouldRewriteRuntimeSpecifiers && !shouldRewriteBareSpecifiers) {\n return undefined\n }\n\n const loader = runtimeLoaderForPath(args.path)\n if (!loader) {\n throw new Error(`Unable to determine runtime loader for path: ${args.path}`)\n }\n\n const file = Bun.file(path)\n const contents = await file.text()\n const runtimeRewrittenContents = shouldRewriteRuntimeSpecifiers\n ? rewriteRuntimeSpecifiers(contents, runtimeModuleIdsBySpecifier)\n : contents\n\n if (runtimeRewrittenContents !== contents && shouldRewriteBareSpecifiers) {\n registerResolveParent(resolveParentsByRecency, path)\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}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "28B0B69C36E6FDF764756E2164756E21",
9
+ "names": []
10
+ }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "type": "module",
7
- "version": "0.1.94",
7
+ "version": "0.1.95",
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": {
@@ -67,11 +67,11 @@
67
67
  "bun-webgpu": "0.1.5",
68
68
  "planck": "^1.4.2",
69
69
  "three": "0.177.0",
70
- "@opentui/core-darwin-x64": "0.1.94",
71
- "@opentui/core-darwin-arm64": "0.1.94",
72
- "@opentui/core-linux-x64": "0.1.94",
73
- "@opentui/core-linux-arm64": "0.1.94",
74
- "@opentui/core-win32-x64": "0.1.94",
75
- "@opentui/core-win32-arm64": "0.1.94"
70
+ "@opentui/core-darwin-x64": "0.1.95",
71
+ "@opentui/core-darwin-arm64": "0.1.95",
72
+ "@opentui/core-linux-x64": "0.1.95",
73
+ "@opentui/core-linux-arm64": "0.1.95",
74
+ "@opentui/core-win32-x64": "0.1.95",
75
+ "@opentui/core-win32-arm64": "0.1.95"
76
76
  }
77
77
  }
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  createRuntimePlugin,
4
4
  runtimeModuleIdForSpecifier
5
- } from "./index-t7fkn9sh.js";
5
+ } from "./index-d991k25n.js";
6
6
  import"./index-t2rqapaa.js";
7
7
  import"./index-wv534m5j.js";
8
8
 
@@ -2,9 +2,14 @@ import { type BunPlugin } from "bun";
2
2
  export type RuntimeModuleExports = Record<string, unknown>;
3
3
  export type RuntimeModuleLoader = () => RuntimeModuleExports | Promise<RuntimeModuleExports>;
4
4
  export type RuntimeModuleEntry = RuntimeModuleExports | RuntimeModuleLoader;
5
+ export interface RuntimePluginRewriteOptions {
6
+ nodeModulesRuntimeSpecifiers?: boolean;
7
+ nodeModulesBareSpecifiers?: boolean;
8
+ }
5
9
  export interface CreateRuntimePluginOptions {
6
10
  core?: RuntimeModuleEntry;
7
11
  additional?: Record<string, RuntimeModuleEntry>;
12
+ rewrite?: RuntimePluginRewriteOptions;
8
13
  }
9
14
  export declare const isCoreRuntimeModuleSpecifier: (specifier: string) => boolean;
10
15
  export declare const runtimeModuleIdForSpecifier: (specifier: string) => string;
package/runtime-plugin.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  createRuntimePlugin,
4
4
  isCoreRuntimeModuleSpecifier,
5
5
  runtimeModuleIdForSpecifier
6
- } from "./index-t7fkn9sh.js";
6
+ } from "./index-d991k25n.js";
7
7
  import"./index-t2rqapaa.js";
8
8
  import"./index-wv534m5j.js";
9
9
  export {
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/runtime-plugin.ts"],
4
- "sourcesContent": [
5
- "import { 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\nexport interface CreateRuntimePluginOptions {\n core?: RuntimeModuleEntry\n additional?: Record<string, RuntimeModuleEntry>\n}\n\nconst CORE_RUNTIME_SPECIFIER = \"@opentui/core\"\nconst CORE_TESTING_RUNTIME_SPECIFIER = \"@opentui/core/testing\"\nconst RUNTIME_MODULE_PREFIX = \"opentui:runtime-module:\"\nconst MAX_RUNTIME_RESOLVE_PARENTS = 64\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\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 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 runtimeSourceFilter = /^(?!.*(?:\\/|\\\\)node_modules(?:\\/|\\\\)).*\\.(?:[cm]?js|[cm]?ts|jsx|tsx)(?:[?#].*)?$/\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 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 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\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\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.onLoad({ filter: runtimeSourceFilter }, async (args) => {\n const path = sourcePath(args.path)\n const loader = runtimeLoaderForPath(args.path)\n if (!loader) {\n throw new Error(`Unable to determine runtime loader for path: ${args.path}`)\n }\n\n const file = Bun.file(path)\n const contents = await file.text()\n const runtimeRewrittenContents = rewriteRuntimeSpecifiers(contents, runtimeModuleIdsBySpecifier)\n\n if (runtimeRewrittenContents !== contents) {\n registerResolveParent(resolveParentsByRecency, path)\n }\n\n const transformedContents = rewriteImportsFromResolveParents(runtimeRewrittenContents, resolveParentsByRecency)\n\n return {\n contents: transformedContents,\n loader,\n }\n })\n },\n }\n}\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "320B34A5E2C7118F64756E2164756E21",
9
- "names": []
10
- }