@jxrstudios/jxr 1.2.18 → 1.2.19

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 (42) hide show
  1. package/bin/jxr.js +1 -1
  2. package/package.json +1 -1
  3. package/dist/deployer.d.ts +0 -83
  4. package/dist/deployer.d.ts.map +0 -1
  5. package/dist/deployer.js +0 -163
  6. package/dist/deployer.js.map +0 -1
  7. package/dist/enhanced-transpiler.d.ts +0 -36
  8. package/dist/enhanced-transpiler.d.ts.map +0 -1
  9. package/dist/enhanced-transpiler.js +0 -272
  10. package/dist/enhanced-transpiler.js.map +0 -1
  11. package/dist/entry-point-detection.d.ts +0 -22
  12. package/dist/entry-point-detection.d.ts.map +0 -1
  13. package/dist/entry-point-detection.js +0 -415
  14. package/dist/entry-point-detection.js.map +0 -1
  15. package/dist/index.d.ts +0 -72
  16. package/dist/index.d.ts.map +0 -1
  17. package/dist/index.js +0 -2315
  18. package/dist/index.js.map +0 -1
  19. package/dist/jxr-server-manager.d.ts +0 -32
  20. package/dist/jxr-server-manager.d.ts.map +0 -1
  21. package/dist/jxr-server-manager.js +0 -353
  22. package/dist/jxr-server-manager.js.map +0 -1
  23. package/dist/module-resolver.d.ts +0 -115
  24. package/dist/module-resolver.d.ts.map +0 -1
  25. package/dist/module-resolver.js +0 -430
  26. package/dist/module-resolver.js.map +0 -1
  27. package/dist/moq-transport.d.ts +0 -96
  28. package/dist/moq-transport.d.ts.map +0 -1
  29. package/dist/moq-transport.js +0 -188
  30. package/dist/moq-transport.js.map +0 -1
  31. package/dist/runtime.d.ts +0 -70
  32. package/dist/runtime.d.ts.map +0 -1
  33. package/dist/runtime.js +0 -150
  34. package/dist/runtime.js.map +0 -1
  35. package/dist/web-crypto.d.ts +0 -77
  36. package/dist/web-crypto.d.ts.map +0 -1
  37. package/dist/web-crypto.js +0 -186
  38. package/dist/web-crypto.js.map +0 -1
  39. package/dist/worker-pool.d.ts +0 -83
  40. package/dist/worker-pool.d.ts.map +0 -1
  41. package/dist/worker-pool.js +0 -238
  42. package/dist/worker-pool.js.map +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQ9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQlD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtD,aAAa;AACb,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,wBAAwB;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -1,32 +0,0 @@
1
- export interface JXRServerConfig {
2
- port?: number;
3
- host?: string;
4
- srcDir?: string;
5
- enableHMR?: boolean;
6
- debounceMs?: number;
7
- }
8
- export declare class JXRServerManager {
9
- private runtime;
10
- private transpiler;
11
- private server;
12
- private config;
13
- private projectFiles;
14
- private entryPoint;
15
- private watchers;
16
- private debounceTimer;
17
- private pendingChanges;
18
- private clients;
19
- constructor(config?: JXRServerConfig);
20
- initialize(): Promise<void>;
21
- private loadProjectFiles;
22
- private setupEntryPoint;
23
- private startFileWatching;
24
- private handleFileChange;
25
- private scheduleReload;
26
- private processPendingChanges;
27
- private broadcastReload;
28
- start(): Promise<void>;
29
- stop(): Promise<void>;
30
- private generateHTML;
31
- }
32
- //# sourceMappingURL=jxr-server-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jxr-server-manager.d.ts","sourceRoot":"","sources":["../src/jxr-server-manager.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,OAAO,CAAuC;gBAE1C,MAAM,GAAE,eAAoB;IAYlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YASnB,gBAAgB;IAoC9B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,cAAc;YAUR,qBAAqB;IA2BnC,OAAO,CAAC,eAAe;IAOjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmLtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B,OAAO,CAAC,YAAY;CAsHrB"}
@@ -1,353 +0,0 @@
1
- import { readFile, readdir, watch } from "fs/promises";
2
- import path from "path";
3
- import http from "http";
4
- import { JXRRuntime, findOrCreateEntryPoint, EnhancedTranspiler } from "./index.ts";
5
- export class JXRServerManager {
6
- runtime;
7
- transpiler;
8
- server = null;
9
- config;
10
- projectFiles = [];
11
- entryPoint = "src/App.tsx";
12
- watchers = new Map();
13
- debounceTimer = null;
14
- pendingChanges = new Map();
15
- clients = new Set();
16
- constructor(config = {}) {
17
- this.config = {
18
- port: config.port || 3000,
19
- host: config.host || "localhost",
20
- srcDir: config.srcDir || "src",
21
- enableHMR: config.enableHMR !== false,
22
- debounceMs: config.debounceMs || 300,
23
- };
24
- this.runtime = new JXRRuntime();
25
- this.transpiler = new EnhancedTranspiler();
26
- }
27
- async initialize() {
28
- await this.runtime.init();
29
- await this.loadProjectFiles();
30
- this.setupEntryPoint();
31
- if (this.config.enableHMR) {
32
- this.startFileWatching();
33
- }
34
- }
35
- async loadProjectFiles() {
36
- const srcPath = path.resolve(process.cwd(), this.config.srcDir);
37
- this.projectFiles = [];
38
- async function readDirRecursive(dir, base, files, runtime) {
39
- for (const entry of await readdir(dir, { withFileTypes: true })) {
40
- const fullPath = path.join(dir, entry.name);
41
- const relativePath = path.join(base, entry.name);
42
- if (entry.isDirectory()) {
43
- await readDirRecursive(fullPath, relativePath, files, runtime);
44
- }
45
- else if (/\.(tsx?|jsx?|css)$/.test(entry.name)) {
46
- const content = await readFile(fullPath, "utf-8");
47
- const vfsPath = "/" + relativePath.replace(/\\/g, "/");
48
- runtime.vfs.write(vfsPath, content);
49
- files.push({
50
- id: Math.random().toString(36).slice(2),
51
- path: relativePath.replace(/\\/g, "/"),
52
- content,
53
- language: entry.name.endsWith(".tsx") || entry.name.endsWith(".ts") ? "typescript" : "javascript",
54
- createdAt: Date.now(),
55
- updatedAt: Date.now(),
56
- });
57
- }
58
- }
59
- }
60
- try {
61
- await readDirRecursive(srcPath, this.config.srcDir, this.projectFiles, this.runtime);
62
- console.log(`📁 Loaded ${this.projectFiles.length} files into VirtualFS`);
63
- }
64
- catch (err) {
65
- console.error("Error loading files:", err);
66
- }
67
- }
68
- setupEntryPoint() {
69
- const result = findOrCreateEntryPoint(this.projectFiles);
70
- this.entryPoint = result.entryPoint;
71
- // If a new entry was created, add it to VFS
72
- if (result.createdEntry) {
73
- const entryFile = result.files.find(f => f.path === this.entryPoint);
74
- if (entryFile) {
75
- this.runtime.vfs.write("/" + entryFile.path, entryFile.content);
76
- }
77
- }
78
- console.log(`🎯 Entry point: ${this.entryPoint}`);
79
- }
80
- startFileWatching() {
81
- const srcPath = path.resolve(process.cwd(), this.config.srcDir);
82
- const watchDir = async (dir) => {
83
- try {
84
- const watcher = watch(dir, { recursive: true });
85
- this.watchers.set(dir, watcher);
86
- for await (const event of watcher) {
87
- if (event.filename && /\.(tsx?|jsx?|css)$/.test(event.filename)) {
88
- this.handleFileChange(event.filename);
89
- }
90
- }
91
- }
92
- catch (err) {
93
- console.error(`Watch error for ${dir}:`, err);
94
- }
95
- };
96
- watchDir(srcPath);
97
- console.log(`👀 Watching ${this.config.srcDir} for changes...`);
98
- }
99
- handleFileChange(filename) {
100
- const fullPath = path.resolve(process.cwd(), this.config.srcDir, filename);
101
- const relativePath = path.join(this.config.srcDir, filename).replace(/\\/g, "/");
102
- readFile(fullPath, "utf-8")
103
- .then(content => {
104
- const file = {
105
- id: Math.random().toString(36).slice(2),
106
- path: relativePath,
107
- content,
108
- language: filename.endsWith(".tsx") || filename.endsWith(".ts") ? "typescript" : "javascript",
109
- createdAt: Date.now(),
110
- updatedAt: Date.now(),
111
- };
112
- this.pendingChanges.set(relativePath, file);
113
- this.scheduleReload();
114
- })
115
- .catch(err => console.error(`Error reading ${filename}:`, err));
116
- }
117
- scheduleReload() {
118
- if (this.debounceTimer) {
119
- clearTimeout(this.debounceTimer);
120
- }
121
- this.debounceTimer = setTimeout(() => {
122
- this.processPendingChanges();
123
- }, this.config.debounceMs);
124
- }
125
- async processPendingChanges() {
126
- if (this.pendingChanges.size === 0)
127
- return;
128
- console.log(`🔄 Processing ${this.pendingChanges.size} file changes...`);
129
- for (const [path, file] of this.pendingChanges) {
130
- this.runtime.vfs.write("/" + path, file.content);
131
- // Update project files array
132
- const existingIndex = this.projectFiles.findIndex(f => f.path === path);
133
- if (existingIndex >= 0) {
134
- this.projectFiles[existingIndex] = file;
135
- }
136
- }
137
- this.pendingChanges.clear();
138
- // Notify connected clients
139
- this.broadcastReload();
140
- }
141
- broadcastReload() {
142
- const message = JSON.stringify({ type: "reload", timestamp: Date.now() });
143
- this.clients.forEach(client => {
144
- client.write(`data: ${message}\n\n`);
145
- });
146
- }
147
- async start() {
148
- this.server = http.createServer(async (req, res) => {
149
- const url = new URL(req.url || "/", `http://${this.config.host}:${this.config.port}`);
150
- // SSE endpoint for HMR
151
- if (url.pathname === "/__hmr" && this.config.enableHMR) {
152
- res.writeHead(200, {
153
- "Content-Type": "text/event-stream",
154
- "Cache-Control": "no-cache",
155
- "Connection": "keep-alive",
156
- "Access-Control-Allow-Origin": "*",
157
- });
158
- this.clients.add(res);
159
- req.on("close", () => {
160
- this.clients.delete(res);
161
- });
162
- // Send initial connection message
163
- res.write(`data: ${JSON.stringify({ type: "connected" })}\n\n`);
164
- return;
165
- }
166
- // Health check
167
- if (url.pathname === "/__health") {
168
- res.writeHead(200, { "Content-Type": "application/json" });
169
- res.end(JSON.stringify({ status: "ok", runtime: "JXR", version: this.runtime.version }));
170
- return;
171
- }
172
- // Serve index.html
173
- if (url.pathname === "/") {
174
- res.writeHead(200, { "Content-Type": "text/html" });
175
- res.end(this.generateHTML());
176
- return;
177
- }
178
- // Serve transformed TSX/TS files (with or without extension)
179
- if (url.pathname.match(/\.(tsx?|jsx?|ts|js)$/) || url.pathname.startsWith('/src/')) {
180
- try {
181
- let vfsPath = url.pathname;
182
- // Try to resolve the file with various extensions
183
- let file = this.runtime.vfs.read(vfsPath);
184
- // If not found and no extension, try adding extensions
185
- if (!file && !vfsPath.match(/\.(tsx?|jsx?|ts|js|css)$/)) {
186
- const extensions = ['.tsx', '.ts', '.jsx', '.js', '.css'];
187
- for (const ext of extensions) {
188
- file = this.runtime.vfs.read(vfsPath + ext);
189
- if (file) {
190
- vfsPath = vfsPath + ext;
191
- break;
192
- }
193
- }
194
- }
195
- if (!file) {
196
- res.writeHead(404, { "Content-Type": "text/plain" });
197
- res.end(`// Module not found: ${url.pathname}`);
198
- return;
199
- }
200
- // Serve CSS files as JavaScript that injects the CSS
201
- if (vfsPath.endsWith('.css')) {
202
- const escapedCSS = file.content
203
- .replace(/\\/g, '\\\\')
204
- .replace(/`/g, '\\`')
205
- .replace(/\$/g, '\\$');
206
- const js = `
207
- const style = document.createElement('style');
208
- style.textContent = \`${escapedCSS}\`;
209
- document.head.appendChild(style);
210
- export default \`${escapedCSS}\`;
211
- `;
212
- res.writeHead(200, {
213
- "Content-Type": "application/javascript",
214
- "Cache-Control": "no-cache"
215
- });
216
- res.end(js);
217
- return;
218
- }
219
- // Use EnhancedTranspiler (Babel) for proper JSX transformation
220
- const result = this.transpiler.transpileTypeScript(file.content, vfsPath);
221
- if (result.error) {
222
- console.error(`Transform error for ${url.pathname}:`, result.error);
223
- res.writeHead(500, { "Content-Type": "text/plain" });
224
- res.end(`// Transform error: ${result.error.message}`);
225
- return;
226
- }
227
- res.writeHead(200, {
228
- "Content-Type": "application/javascript",
229
- "Cache-Control": "no-cache"
230
- });
231
- res.end(result.code);
232
- }
233
- catch (err) {
234
- console.error(`Error serving ${url.pathname}:`, err);
235
- res.writeHead(500, { "Content-Type": "text/plain" });
236
- res.end(`// Error: ${err?.message || String(err)}`);
237
- }
238
- return;
239
- }
240
- res.writeHead(404);
241
- res.end("Not found");
242
- });
243
- return new Promise((resolve, reject) => {
244
- this.server.listen(this.config.port, this.config.host, () => {
245
- console.log(`🚀 JXR server running on http://${this.config.host}:${this.config.port}/`);
246
- if (this.config.enableHMR) {
247
- console.log(`🔥 HMR enabled (debounce: ${this.config.debounceMs}ms)`);
248
- }
249
- resolve();
250
- });
251
- this.server.on("error", reject);
252
- });
253
- }
254
- async stop() {
255
- // Stop watchers - we can't easily abort async iterators, but we can clear the map
256
- // The watch() iterator will naturally stop when the process exits
257
- this.watchers.clear();
258
- // Clear any pending timers
259
- if (this.debounceTimer) {
260
- clearTimeout(this.debounceTimer);
261
- this.debounceTimer = null;
262
- }
263
- // Close all SSE connections
264
- this.clients.forEach(client => {
265
- try {
266
- client.end();
267
- }
268
- catch { }
269
- });
270
- this.clients.clear();
271
- // Close server
272
- if (this.server) {
273
- await new Promise((resolve) => {
274
- this.server.close(() => resolve());
275
- });
276
- this.server = null;
277
- }
278
- // Dispose runtime
279
- this.runtime.dispose();
280
- console.log("👋 JXR server stopped");
281
- }
282
- generateHTML() {
283
- const hmrScript = this.config.enableHMR ? `
284
- <script>
285
- // HMR Client
286
- const evtSource = new EventSource('/__hmr');
287
- evtSource.onmessage = (e) => {
288
- const data = JSON.parse(e.data);
289
- if (data.type === 'reload') {
290
- console.log('[JXR] Reloading...');
291
- location.reload();
292
- }
293
- };
294
- evtSource.onerror = () => console.log('[JXR] HMR connection lost');
295
- </script>` : '';
296
- // Import map with react/jsx-runtime for Babel's automatic runtime
297
- const importMap = {
298
- "imports": {
299
- "react": "https://esm.sh/react@19.2.4",
300
- "react/jsx-runtime": "https://esm.sh/react@19.2.4/jsx-runtime",
301
- "react/jsx-dev-runtime": "https://esm.sh/react@19.2.4/jsx-dev-runtime",
302
- "react-dom/client": "https://esm.sh/react-dom@19.2.4/client"
303
- }
304
- };
305
- // Check if we have a main.tsx/bootstrap file - if so, use it directly
306
- // Otherwise use the component entry point pattern
307
- const hasMainFile = this.projectFiles.some(f => f.path === 'src/main.tsx' || f.path === 'src/main.ts' ||
308
- f.path === 'src/index.tsx' || f.path === 'src/index.ts');
309
- if (hasMainFile) {
310
- // Use the bootstrap file pattern (like the react template)
311
- return `<!DOCTYPE html>
312
- <html lang="en">
313
- <head>
314
- <meta charset="UTF-8">
315
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
316
- <title>JXR App</title>
317
- <script type="importmap">
318
- ${JSON.stringify(importMap)}
319
- </script>
320
- </head>
321
- <body>
322
- <div id="root"></div>
323
- <script type="module" src="/src/main.tsx"></script>
324
- ${hmrScript}
325
- </body>
326
- </html>`;
327
- }
328
- // Fallback: use component entry point directly
329
- return `<!DOCTYPE html>
330
- <html lang="en">
331
- <head>
332
- <meta charset="UTF-8">
333
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
334
- <title>JXR App</title>
335
- <script type="importmap">
336
- ${JSON.stringify(importMap)}
337
- </script>
338
- </head>
339
- <body>
340
- <div id="root"></div>
341
- <script type="module">
342
- import { createRoot } from 'react-dom/client';
343
- import App from '/${this.entryPoint}';
344
-
345
- const root = createRoot(document.getElementById('root'));
346
- root.render(App());
347
- </script>
348
- ${hmrScript}
349
- </body>
350
- </html>`;
351
- }
352
- }
353
- //# sourceMappingURL=jxr-server-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jxr-server-manager.js","sourceRoot":"","sources":["../src/jxr-server-manager.ts"],"names":[],"mappings":"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"}
@@ -1,115 +0,0 @@
1
- /**
2
- * JXR.js — Module Resolver & Virtual File System
3
- * ─────────────────────────────────────────────────────────────────────────────
4
- * Design: LavaFlow OS — Thermal Precision + Edge Command
5
- * Layer: Core Runtime / Module System
6
- *
7
- * Architecture:
8
- * Zero-build-step module resolution pipeline:
9
- * 1. VirtualFS: In-memory file system with change notification
10
- * 2. ModuleResolver: Resolves imports to VirtualFS entries
11
- * 3. JSXTransformer: Browser-native JSX → JS transform (no Babel/esbuild)
12
- * 4. ImportMapBuilder: Generates browser-native import maps for esm.sh CDN
13
- * 5. ModuleCache: LRU cache with crypto integrity verification
14
- *
15
- * The resolver produces browser-executable ES modules from JSX/TSX source
16
- * without any build step, using the esm.sh CDN for npm package resolution.
17
- * ─────────────────────────────────────────────────────────────────────────────
18
- */
19
- export interface VirtualFile {
20
- path: string;
21
- content: string;
22
- language: 'tsx' | 'ts' | 'jsx' | 'js' | 'css' | 'json' | 'md' | 'html';
23
- lastModified: number;
24
- size: number;
25
- dirty: boolean;
26
- }
27
- export interface VirtualDirectory {
28
- path: string;
29
- name: string;
30
- children: (VirtualFile | VirtualDirectory)[];
31
- expanded: boolean;
32
- }
33
- export interface ResolvedModule {
34
- path: string;
35
- source: string;
36
- transformed: string;
37
- objectUrl: string | null;
38
- dependencies: string[];
39
- resolvedAt: number;
40
- transformMs: number;
41
- }
42
- export interface ImportMap {
43
- imports: Record<string, string>;
44
- scopes?: Record<string, Record<string, string>>;
45
- }
46
- type FileChangeHandler = (file: VirtualFile, event: 'create' | 'update' | 'delete') => void;
47
- /**
48
- * VirtualFS — In-memory file system with reactive change notifications
49
- */
50
- export declare class VirtualFS {
51
- private files;
52
- private changeHandlers;
53
- constructor(initialFiles?: VirtualFile[]);
54
- write(path: string, content: string): VirtualFile;
55
- read(path: string): VirtualFile | null;
56
- delete(path: string): boolean;
57
- list(prefix?: string): VirtualFile[];
58
- exists(path: string): boolean;
59
- onChange(handler: FileChangeHandler): () => void;
60
- private emit;
61
- buildTree(rootPath?: string): VirtualDirectory;
62
- toJSON(): Record<string, string>;
63
- private detectLanguage;
64
- }
65
- /**
66
- * JSXTransformer — Zero-dependency JSX → JS transform
67
- *
68
- * Uses a lightweight regex-based transform for simple JSX,
69
- * with Sucrase-style transforms for production accuracy.
70
- * Falls back to esm.sh/sucrase for complex transforms.
71
- */
72
- export declare class JSXTransformer {
73
- private objectUrls;
74
- /**
75
- * Transform JSX/TSX source to browser-executable ES module
76
- * Uses the automatic JSX runtime (React 17+)
77
- */
78
- transform(source: string, filePath: string): string;
79
- private stripTypeScript;
80
- private transformJSX;
81
- private parseProps;
82
- private rewriteImports;
83
- createObjectUrl(source: string, type?: string): string;
84
- revokeObjectUrl(url: string): void;
85
- cleanup(): void;
86
- }
87
- /**
88
- * ImportMapBuilder — Generates browser-native import maps
89
- */
90
- export declare class ImportMapBuilder {
91
- private imports;
92
- /** Add a package mapping to the import map */
93
- add(specifier: string, url: string): this;
94
- /** Add React and common packages */
95
- addReactDefaults(reactVersion?: string): this;
96
- build(): ImportMap;
97
- toScriptTag(): string;
98
- }
99
- /**
100
- * ModuleCache — LRU cache with integrity verification
101
- */
102
- export declare class ModuleCache {
103
- private cache;
104
- private readonly maxSize;
105
- constructor(maxSize?: number);
106
- set(path: string, module: ResolvedModule): void;
107
- get(path: string): ResolvedModule | null;
108
- invalidate(path: string): void;
109
- clear(): void;
110
- get size(): number;
111
- }
112
- /** Default project template files */
113
- export declare const DEFAULT_PROJECT_FILES: VirtualFile[];
114
- export {};
115
- //# sourceMappingURL=module-resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-resolver.d.ts","sourceRoot":"","sources":["../src/module-resolver.ts"],"names":[],"mappings":"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"}