@jxrstudios/jxr 1.0.4 → 1.0.6

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 (41) hide show
  1. package/README.md +6 -2
  2. package/bin/jxr.js +114 -76
  3. package/dist/deployer.d.ts +8 -12
  4. package/dist/deployer.d.ts.map +1 -1
  5. package/dist/deployer.js +69 -106
  6. package/dist/deployer.js.map +1 -1
  7. package/dist/enhanced-transpiler.d.ts +36 -0
  8. package/dist/enhanced-transpiler.d.ts.map +1 -0
  9. package/dist/enhanced-transpiler.js +272 -0
  10. package/dist/enhanced-transpiler.js.map +1 -0
  11. package/dist/entry-point-detection.d.ts +22 -0
  12. package/dist/entry-point-detection.d.ts.map +1 -0
  13. package/dist/entry-point-detection.js +415 -0
  14. package/dist/entry-point-detection.js.map +1 -0
  15. package/dist/index.d.ts +19 -12
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1025 -126
  18. package/dist/index.js.map +1 -1
  19. package/dist/jxr-server-manager.d.ts +32 -0
  20. package/dist/jxr-server-manager.d.ts.map +1 -0
  21. package/dist/jxr-server-manager.js +353 -0
  22. package/dist/jxr-server-manager.js.map +1 -0
  23. package/dist/runtime.d.ts +9 -9
  24. package/dist/runtime.d.ts.map +1 -1
  25. package/dist/runtime.js +3 -3
  26. package/package.json +9 -2
  27. package/src/deployer.ts +231 -0
  28. package/src/enhanced-transpiler.ts +331 -0
  29. package/src/entry-point-detection.ts +470 -0
  30. package/src/index.ts +63 -0
  31. package/src/jxr-server-manager.ts +419 -0
  32. package/src/module-resolver.ts +520 -0
  33. package/src/moq-transport.ts +267 -0
  34. package/src/runtime.ts +188 -0
  35. package/src/web-crypto.ts +279 -0
  36. package/src/worker-pool.ts +321 -0
  37. package/zzz_react_template/App.tsx +160 -0
  38. package/zzz_react_template/index.css +16 -0
  39. package/zzz_react_template/index.html +12 -0
  40. package/zzz_react_template/main.tsx +10 -0
  41. package/zzz_react_template/package.json +25 -0
@@ -0,0 +1,272 @@
1
+ import * as Babel from "@babel/standalone";
2
+ export class EnhancedTranspiler {
3
+ transformCache = new Map();
4
+ dependencyGraph = new Map();
5
+ options;
6
+ constructor(options = {}) {
7
+ this.options = options;
8
+ }
9
+ transpileTypeScript(code, filename, options = {}) {
10
+ const mergedOptions = { ...this.options, ...options, filename };
11
+ const cacheKey = `${filename}:${code}:${JSON.stringify(mergedOptions)}`;
12
+ if (mergedOptions.cache !== false && this.transformCache.has(cacheKey)) {
13
+ return { ...this.transformCache.get(cacheKey), cached: true };
14
+ }
15
+ try {
16
+ const result = Babel.transform(code, {
17
+ filename,
18
+ presets: [
19
+ ["react", { runtime: "automatic" }],
20
+ "typescript",
21
+ ...(mergedOptions.presets || [])
22
+ ],
23
+ plugins: [
24
+ // Handle import/export transformations - pass filename for context
25
+ this.createImportTransformer(filename),
26
+ ...(mergedOptions.plugins || [])
27
+ ],
28
+ sourceMaps: true,
29
+ sourceFileName: filename
30
+ });
31
+ const transformed = {
32
+ code: result.code || code,
33
+ map: result.map,
34
+ cached: false
35
+ };
36
+ if (mergedOptions.cache !== false) {
37
+ this.transformCache.set(cacheKey, transformed);
38
+ }
39
+ return transformed;
40
+ }
41
+ catch (error) {
42
+ console.error("[EnhancedTranspiler] Transpilation error:", error);
43
+ return {
44
+ code,
45
+ error: error,
46
+ cached: false
47
+ };
48
+ }
49
+ }
50
+ transpileJSX(code, filename, options = {}) {
51
+ const mergedOptions = { ...this.options, ...options, filename };
52
+ const cacheKey = `jsx:${filename}:${code}:${JSON.stringify(mergedOptions)}`;
53
+ if (mergedOptions.cache !== false && this.transformCache.has(cacheKey)) {
54
+ return { ...this.transformCache.get(cacheKey), cached: true };
55
+ }
56
+ try {
57
+ const result = Babel.transform(code, {
58
+ filename,
59
+ presets: [
60
+ ["react", { runtime: "automatic" }],
61
+ ...(mergedOptions.presets || [])
62
+ ],
63
+ plugins: mergedOptions.plugins || [],
64
+ sourceMaps: true,
65
+ sourceFileName: filename
66
+ });
67
+ console.log('[v0] Transpiled JSX for', filename);
68
+ console.log('[v0] Output (first 500 chars):', result.code?.substring(0, 500));
69
+ const transformed = {
70
+ code: result.code || code,
71
+ map: result.map,
72
+ cached: false
73
+ };
74
+ if (mergedOptions.cache !== false) {
75
+ this.transformCache.set(cacheKey, transformed);
76
+ }
77
+ return transformed;
78
+ }
79
+ catch (error) {
80
+ console.error("[EnhancedTranspiler] JSX transformation error:", error);
81
+ return {
82
+ code,
83
+ error: error,
84
+ cached: false
85
+ };
86
+ }
87
+ }
88
+ createImportTransformer(filename) {
89
+ const self = this;
90
+ return function importTransformer() {
91
+ return {
92
+ visitor: {
93
+ ImportDeclaration(path) {
94
+ const source = path.node.source.value;
95
+ // Skip external packages
96
+ if (!source.startsWith('./') && !source.startsWith('../') && !source.startsWith('@/')) {
97
+ return;
98
+ }
99
+ // Rewrite to absolute path that matches import map
100
+ const resolvedPath = self.resolveImportPath(filename, source);
101
+ if (resolvedPath) {
102
+ console.log(`[Transpiler] Rewriting: ${filename} imports "${source}" → "${resolvedPath}"`);
103
+ path.node.source.value = resolvedPath;
104
+ }
105
+ },
106
+ ExportNamedDeclaration(path) {
107
+ if (path.node.source) {
108
+ const source = path.node.source.value;
109
+ // Skip external packages
110
+ if (!source.startsWith('./') && !source.startsWith('../') && !source.startsWith('@/')) {
111
+ return;
112
+ }
113
+ const resolvedPath = self.resolveImportPath(filename, source);
114
+ if (resolvedPath) {
115
+ console.log(`[Transpiler] Rewriting export: ${filename} exports from "${source}" → "${resolvedPath}"`);
116
+ path.node.source.value = resolvedPath;
117
+ }
118
+ }
119
+ },
120
+ ExportAllDeclaration(path) {
121
+ if (path.node.source) {
122
+ const source = path.node.source.value;
123
+ // Skip external packages
124
+ if (!source.startsWith('./') && !source.startsWith('../') && !source.startsWith('@/')) {
125
+ return;
126
+ }
127
+ const resolvedPath = self.resolveImportPath(filename, source);
128
+ if (resolvedPath) {
129
+ console.log(`[Transpiler] Rewriting export all: ${filename} exports from "${source}" → "${resolvedPath}"`);
130
+ path.node.source.value = resolvedPath;
131
+ }
132
+ }
133
+ }
134
+ }
135
+ };
136
+ };
137
+ }
138
+ resolveImportPath(fromFile, importPath) {
139
+ // Normalize fromFile - remove leading slash for consistent resolution
140
+ const normalizedFromFile = fromFile.startsWith('/') ? fromFile.substring(1) : fromFile;
141
+ // Handle @/ alias
142
+ if (importPath.startsWith('@/')) {
143
+ // Convert @/components/Button → /src/components/Button (with leading slash)
144
+ return ('/src/' + importPath.substring(2)).replace(/\.(tsx|ts|jsx|js)$/, '');
145
+ }
146
+ // Handle relative imports
147
+ if (importPath.startsWith('./') || importPath.startsWith('../')) {
148
+ // Calculate absolute path from relative import
149
+ const fromDir = normalizedFromFile.split('/').slice(0, -1);
150
+ const importParts = importPath.split('/');
151
+ let currentPath = [...fromDir];
152
+ for (const part of importParts) {
153
+ if (part === '..') {
154
+ currentPath.pop();
155
+ }
156
+ else if (part !== '.') {
157
+ currentPath.push(part);
158
+ }
159
+ }
160
+ // Return absolute path with leading slash and without extension
161
+ return '/' + currentPath.join('/').replace(/\.(tsx|ts|jsx|js)$/, '');
162
+ }
163
+ return null;
164
+ }
165
+ // Track dependencies for cache invalidation
166
+ trackDependencies(filename, dependencies) {
167
+ this.dependencyGraph.set(filename, new Set(dependencies));
168
+ }
169
+ // Invalidate cache entries that depend on changed files
170
+ invalidateCache(changedFiles) {
171
+ const toInvalidate = new Set();
172
+ // Find all entries that depend on changed files
173
+ for (const [file, deps] of this.dependencyGraph) {
174
+ for (const changedFile of changedFiles) {
175
+ if (deps.has(changedFile)) {
176
+ toInvalidate.add(file);
177
+ }
178
+ }
179
+ }
180
+ // Invalidate cache entries
181
+ for (const file of toInvalidate) {
182
+ for (const [key] of this.transformCache) {
183
+ if (key.startsWith(`${file}:`)) {
184
+ this.transformCache.delete(key);
185
+ }
186
+ }
187
+ }
188
+ }
189
+ // Clear all cache
190
+ clearCache() {
191
+ this.transformCache.clear();
192
+ this.dependencyGraph.clear();
193
+ }
194
+ invalidateFile(filename) {
195
+ // Invalidate cache entries for this file
196
+ for (const key of this.transformCache.keys()) {
197
+ if (key.startsWith(filename)) {
198
+ this.transformCache.delete(key);
199
+ console.log('[Transpiler] Invalidated cache for', filename);
200
+ }
201
+ }
202
+ // Invalidate dependents
203
+ const dependents = this.dependencyGraph.get(filename);
204
+ if (dependents) {
205
+ for (const dependent of dependents) {
206
+ this.invalidateFile(dependent);
207
+ }
208
+ }
209
+ }
210
+ // Get cache statistics
211
+ getCacheStats() {
212
+ return {
213
+ size: this.transformCache.size,
214
+ hitRate: 0 // Could be implemented with usage tracking
215
+ };
216
+ }
217
+ // Extract dependencies from code for tracking
218
+ extractDependencies(code) {
219
+ const dependencies = [];
220
+ try {
221
+ // Simple regex-based dependency extraction for browser compatibility
222
+ // Import statements: import ... from 'module'
223
+ const importRegex = /import\s+(?:[\w\s{},*]*\s+from\s+)?['"]([^'"]+)['"]/g;
224
+ let match;
225
+ while ((match = importRegex.exec(code)) !== null) {
226
+ dependencies.push(match[1]);
227
+ }
228
+ // Export statements: export ... from 'module'
229
+ const exportRegex = /export\s+(?:[\w\s{},*]*\s+from\s+)?['"]([^'"]+)['"]/g;
230
+ while ((match = exportRegex.exec(code)) !== null) {
231
+ dependencies.push(match[1]);
232
+ }
233
+ // Dynamic imports: import('module')
234
+ const dynamicImportRegex = /import\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
235
+ while ((match = dynamicImportRegex.exec(code)) !== null) {
236
+ dependencies.push(match[1]);
237
+ }
238
+ // Require statements: require('module')
239
+ const requireRegex = /require\s*\(\s*['"]([^'"]+)['"]\s*\)/g;
240
+ while ((match = requireRegex.exec(code)) !== null) {
241
+ dependencies.push(match[1]);
242
+ }
243
+ }
244
+ catch (error) {
245
+ console.warn('[EnhancedTranspiler] Failed to extract dependencies:', error);
246
+ }
247
+ return [...new Set(dependencies)]; // Remove duplicates
248
+ }
249
+ // Validate transpiled code
250
+ validateTranspiledCode(code) {
251
+ const errors = [];
252
+ try {
253
+ // Basic syntax check
254
+ new Function(code);
255
+ }
256
+ catch (error) {
257
+ errors.push(`Syntax error: ${error.message}`);
258
+ }
259
+ // Check for common issues
260
+ if (code.includes('undefined') && code.includes('import')) {
261
+ errors.push('Possible import resolution issue detected');
262
+ }
263
+ if (code.includes('require(') && !code.includes('module.exports')) {
264
+ errors.push('CommonJS require() detected in ES module');
265
+ }
266
+ return {
267
+ valid: errors.length === 0,
268
+ errors
269
+ };
270
+ }
271
+ }
272
+ //# sourceMappingURL=enhanced-transpiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-transpiler.js","sourceRoot":"","sources":["../src/enhanced-transpiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Entry point detection utility for the preview system
3
+ * Automatically finds or creates appropriate entry points for preview rendering
4
+ */
5
+ export interface ProjectFile {
6
+ id: string;
7
+ path: string;
8
+ content: string;
9
+ language: string;
10
+ createdAt: number;
11
+ updatedAt: number;
12
+ }
13
+ export interface EntryPointDetection {
14
+ entryPoint: string;
15
+ files: ProjectFile[];
16
+ createdEntry: boolean;
17
+ }
18
+ /**
19
+ * Finds or creates an entry point for preview rendering
20
+ */
21
+ export declare function findOrCreateEntryPoint(files: ProjectFile[]): EntryPointDetection;
22
+ //# sourceMappingURL=entry-point-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-point-detection.d.ts","sourceRoot":"","sources":["../src/entry-point-detection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;CACtB;AAkCD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,mBAAmB,CA6ChF"}