@jxrstudios/jxr 1.2.27 → 1.2.29

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # JXR.js — Edge OS Runtime Framework
1
+ # JXR.js — Edge OS Web Runtime Framework
2
2
 
3
3
  > **Execute JavaScript at the edge with zero-build JSX transformation.**
4
4
  >
@@ -8,9 +8,10 @@
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-orange.svg)](https://opensource.org/licenses/MIT)
9
9
 
10
10
  **Website:** https://jxrstudios.online
11
- **Documentation:** https://jxrstudios.online/docs
11
+ **Documentation:** https://jxrstudios.online/
12
12
 
13
13
  ---
14
+ Pro Tip: Just swap in your tsx where the template /src is run ``` jxr dev ``` zero build step needed if it doesnt work update your browser. Enjoy
14
15
 
15
16
  ## Table of Contents
16
17
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jxrstudios/jxr",
3
- "version": "1.2.27",
3
+ "version": "1.2.29",
4
4
  "description": "JXR.js — Edge OS Runtime Framework for elite developers",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -2,8 +2,8 @@ export { COOKIE_NAME, ONE_YEAR_MS } from "@shared/const";
2
2
 
3
3
  // Generate login URL at runtime so redirect URI reflects the current origin.
4
4
  export const getLoginUrl = () => {
5
- const oauthPortalUrl = import.meta.env.VITE_OAUTH_PORTAL_URL;
6
- const appId = import.meta.env.VITE_APP_ID;
5
+ const oauthPortalUrl = import.meta.env.JXR_OAUTH_PORTAL_URL;
6
+ const appId = import.meta.env.JXR_APP_ID;
7
7
  const redirectUri = `${window.location.origin}/api/oauth/callback`;
8
8
  const state = btoa(redirectUri);
9
9
 
package/dist/deployer.js DELETED
@@ -1,278 +0,0 @@
1
- /**
2
- * JXR.js — Wranglerless Deployer
3
- * Deploy projects to JXR Studios' Cloudflare infrastructure without wrangler.
4
- * Users only need a JXR API key - no Cloudflare account required.
5
- */
6
- import { readFile, readdir, stat } from "fs/promises";
7
- import path from "path";
8
- import { existsSync } from "fs";
9
- import { spawn } from "child_process";
10
- /**
11
- * JXRDeployer — Deploy to JXR Cloudflare infrastructure
12
- * No wrangler config needed. Just your JXR API key.
13
- */
14
- export class JXRDeployer {
15
- apiKey;
16
- projectId;
17
- constructor(apiKey, projectId) {
18
- this.apiKey = apiKey;
19
- this.projectId = projectId || this.generateProjectId();
20
- }
21
- /**
22
- * Auto-detect build output directory
23
- * Checks dist/, build/, out/, or any directory with index.html
24
- */
25
- async detectBuildDir(projectPath = '.') {
26
- const possibleDirs = ['dist', 'build', 'out'];
27
- // Check standard build directories
28
- for (const dir of possibleDirs) {
29
- const fullPath = path.resolve(projectPath, dir);
30
- if (existsSync(fullPath)) {
31
- // Verify it has index.html
32
- if (existsSync(path.join(fullPath, 'index.html'))) {
33
- return fullPath;
34
- }
35
- }
36
- }
37
- // Search for any directory with index.html
38
- try {
39
- const entries = await readdir(projectPath, { withFileTypes: true });
40
- for (const entry of entries) {
41
- if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
42
- const dirPath = path.join(projectPath, entry.name);
43
- if (existsSync(path.join(dirPath, 'index.html'))) {
44
- return dirPath;
45
- }
46
- }
47
- }
48
- }
49
- catch {
50
- // Ignore errors
51
- }
52
- return null;
53
- }
54
- /**
55
- * Detect if running on Cloudflare Pages
56
- */
57
- isCloudflarePages() {
58
- return process.env.CF_PAGES === '1' || !!process.env.CF_PAGES_URL;
59
- }
60
- /**
61
- * Get project name from package.json or directory
62
- */
63
- async getProjectName(projectPath = '.') {
64
- // Check CF_PAGES_PROJECT_NAME first
65
- if (process.env.CF_PAGES_PROJECT_NAME) {
66
- return process.env.CF_PAGES_PROJECT_NAME;
67
- }
68
- // Try to read from package.json
69
- try {
70
- const pkgPath = path.join(projectPath, 'package.json');
71
- const pkgContent = await readFile(pkgPath, 'utf-8');
72
- const pkg = JSON.parse(pkgContent);
73
- if (pkg.name) {
74
- return pkg.name;
75
- }
76
- }
77
- catch {
78
- // Ignore errors
79
- }
80
- // Fall back to directory name
81
- return path.basename(path.resolve(projectPath));
82
- }
83
- /**
84
- * Deploy to Cloudflare Pages
85
- */
86
- async deployToCloudflarePages(projectPath = '.', config = {}) {
87
- const logs = [];
88
- try {
89
- // Auto-detect build directory
90
- const buildDir = await this.detectBuildDir(projectPath);
91
- if (!buildDir) {
92
- throw new Error('No build output found. Run "jxr build" first.');
93
- }
94
- logs.push(`📁 Build directory: ${buildDir}`);
95
- // Get project name
96
- const projectName = await this.getProjectName(projectPath);
97
- logs.push(`📦 Project: ${projectName}`);
98
- // Check for manifest
99
- const manifestPath = path.join(buildDir, 'jxr-manifest.json');
100
- if (existsSync(manifestPath)) {
101
- const manifest = JSON.parse(await readFile(manifestPath, 'utf-8'));
102
- logs.push(`📋 Manifest: ${manifest.platform} platform, ${manifest.files?.length || 0} files`);
103
- }
104
- // Determine URL
105
- const env = config.environment || 'production';
106
- const url = `https://${projectName}.app.jxrstudios.online`;
107
- logs.push(`🌐 URL: ${url}`);
108
- // If running on Cloudflare Pages, the deployment is automatic
109
- if (this.isCloudflarePages()) {
110
- logs.push('☁️ Cloudflare Pages auto-detected');
111
- logs.push('✅ Deployment ready - build output will be deployed automatically');
112
- return {
113
- success: true,
114
- url,
115
- deploymentId: `cf-pages-${Date.now()}`,
116
- timestamp: new Date().toISOString(),
117
- logs,
118
- };
119
- }
120
- // Manual deployment via JXR API
121
- return await this.deploy(buildDir, { ...config, projectId: projectName });
122
- }
123
- catch (error) {
124
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
125
- logs.push(`❌ Error: ${errorMsg}`);
126
- return {
127
- success: false,
128
- url: '',
129
- deploymentId: '',
130
- timestamp: new Date().toISOString(),
131
- logs,
132
- };
133
- }
134
- }
135
- /**
136
- * Deploy the current project to JXR infrastructure
137
- */
138
- async deploy(projectPath, config = {}) {
139
- const env = config.environment || 'production';
140
- const branch = config.branch || 'main';
141
- const pid = config.projectId || this.projectId;
142
- console.log(`🚀 Deploying to JXR ${env}...`);
143
- const logs = [];
144
- try {
145
- // Verify project path exists
146
- await stat(projectPath);
147
- logs.push(`📁 Deploying from: ${projectPath}`);
148
- // Create tarball of build files
149
- const tarballPath = await this.createTarball(projectPath);
150
- logs.push(`📦 Created tarball: ${tarballPath}`);
151
- // Upload tarball
152
- const uploadResult = await this.uploadTarball(tarballPath, pid, env, branch);
153
- logs.push(`☁️ Uploaded to JXR`);
154
- // Get deployment URL
155
- const url = `https://${pid}.app.jxrstudios.online`;
156
- logs.push(`🌐 Live at: ${url}`);
157
- return {
158
- success: true,
159
- url,
160
- deploymentId: uploadResult.deploymentId,
161
- timestamp: new Date().toISOString(),
162
- logs,
163
- };
164
- }
165
- catch (error) {
166
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
167
- logs.push(`❌ Error: ${errorMsg}`);
168
- return {
169
- success: false,
170
- url: '',
171
- deploymentId: '',
172
- timestamp: new Date().toISOString(),
173
- logs,
174
- };
175
- }
176
- }
177
- /**
178
- * Create a tarball of the build directory
179
- */
180
- async createTarball(projectPath) {
181
- const tarballPath = path.join(process.cwd(), '.jxr-deploy.tar.gz');
182
- return new Promise((resolve, reject) => {
183
- const tar = spawn('tar', ['-czf', tarballPath, '-C', projectPath, '.']);
184
- tar.on('close', (code) => {
185
- if (code === 0) {
186
- resolve(tarballPath);
187
- }
188
- else {
189
- reject(new Error(`tar exited with code ${code}`));
190
- }
191
- });
192
- tar.on('error', reject);
193
- });
194
- }
195
- /**
196
- * Upload tarball to JXR API
197
- */
198
- async uploadTarball(tarballPath, projectId, environment, branch) {
199
- const formData = new FormData();
200
- const fileContent = await readFile(tarballPath);
201
- const blob = new Blob([fileContent]);
202
- formData.append('build', blob, 'build.tar.gz');
203
- formData.append('projectId', projectId);
204
- formData.append('environment', environment);
205
- formData.append('branch', branch);
206
- const response = await fetch('https://jxrstudios.workers.dev/v1/deployments', {
207
- method: 'POST',
208
- headers: {
209
- 'Authorization': `Bearer ${this.apiKey}`,
210
- },
211
- body: formData,
212
- });
213
- if (!response.ok) {
214
- throw new Error(`Upload failed: ${response.statusText}`);
215
- }
216
- const result = await response.json();
217
- return { deploymentId: result.deploymentId };
218
- }
219
- /**
220
- * Get deployment status
221
- */
222
- async getStatus(deploymentId) {
223
- const response = await fetch(`https://jxrstudios.workers.dev/v1/deployments/${deploymentId}`, {
224
- headers: {
225
- 'Authorization': `Bearer ${this.apiKey}`,
226
- },
227
- });
228
- if (!response.ok) {
229
- throw new Error(`Failed to get status: ${response.statusText}`);
230
- }
231
- return response.json();
232
- }
233
- /**
234
- * List all deployments for a project
235
- */
236
- async listDeployments(projectId) {
237
- const pid = projectId || this.projectId;
238
- const response = await fetch(`https://jxrstudios.workers.dev/v1/projects/${pid}/deployments`, {
239
- headers: {
240
- 'Authorization': `Bearer ${this.apiKey}`,
241
- },
242
- });
243
- if (!response.ok) {
244
- throw new Error(`Failed to list deployments: ${response.statusText}`);
245
- }
246
- return response.json();
247
- }
248
- /**
249
- * Rollback to a previous deployment
250
- */
251
- async rollback(deploymentId) {
252
- const response = await fetch(`https://jxrstudios.workers.dev/v1/deployments/${deploymentId}/rollback`, {
253
- method: 'POST',
254
- headers: {
255
- 'Authorization': `Bearer ${this.apiKey}`,
256
- },
257
- });
258
- if (!response.ok) {
259
- throw new Error(`Rollback failed: ${response.statusText}`);
260
- }
261
- const result = await response.json();
262
- return {
263
- success: true,
264
- url: result.url,
265
- deploymentId: result.deploymentId,
266
- timestamp: new Date().toISOString(),
267
- logs: ['Rollback successful'],
268
- };
269
- }
270
- generateProjectId() {
271
- const timestamp = Date.now().toString(36);
272
- const random = Math.random().toString(36).substring(2, 8);
273
- return `jxr-${timestamp}-${random}`;
274
- }
275
- }
276
- /** Global deployer singleton */
277
- export const jxrDeployer = new JXRDeployer(process.env.JXR_API_KEY || '', process.env.JXR_PROJECT_ID);
278
- //# sourceMappingURL=deployer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deployer.js","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"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"}
@@ -1,272 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"enhanced-transpiler.js","sourceRoot":"","sources":["../src/enhanced-transpiler.ts"],"names":[],"mappings":"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"}