@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
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  A JavaScript runtime framework for elite developers. Execute JavaScript at the edge with zero-build JSX transformation, virtual file system, worker pools, and secure module resolution.
4
4
 
5
+ **Website:** https://jxrstudios.online
6
+
5
7
  ## Installation
6
8
 
7
9
  ```bash
@@ -19,7 +21,7 @@ await jxrRuntime.init();
19
21
  // Or create your own instance
20
22
  const runtime = new JXRRuntime({
21
23
  maxWorkers: 8,
22
- moqEndpoint: 'wss://edge.jxr.dev',
24
+ moqEndpoint: 'wss://jxrstudios.workers.dev',
23
25
  enableCrypto: true,
24
26
  });
25
27
  await runtime.init();
@@ -102,6 +104,8 @@ const manifest = await jxrCrypto.signManifest({
102
104
 
103
105
  Deploy to JXR Studios' Cloudflare infrastructure without configuring wrangler or having a Cloudflare account.
104
106
 
107
+ Get your API key at: https://jxrstudios.online/dashboard
108
+
105
109
  ```typescript
106
110
  import { JXRDeployer, jxrDeployer } from '@jxrstudios/jxr';
107
111
 
@@ -122,7 +126,7 @@ if (result.success) {
122
126
  ### Environment Variables
123
127
 
124
128
  ```bash
125
- # Set your JXR API key
129
+ # Set your JXR API key (get it at https://jxrstudios.online/dashboard)
126
130
  export JXR_API_KEY=jxr_live_xxxxx
127
131
 
128
132
  # Optional: Set default project ID
package/bin/jxr.js CHANGED
@@ -1,86 +1,124 @@
1
1
  #!/usr/bin/env node
2
- import { spawn } from "child_process";
3
- import { fileURLToPath } from "url";
4
- import path from "path";
5
- import { readFileSync } from "fs";
6
-
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = path.dirname(__filename);
9
-
10
- const command = process.argv[2];
11
- const isDev = command === "dev" || process.argv.includes("--dev");
12
-
13
- // Show help if no command
14
- if (!command || command === "--help" || command === "-h") {
15
- console.log(`
16
- JXR.js CLI
17
-
18
- Usage: jxr <command> [options]
19
-
20
- Commands:
21
- dev Start development server with JXR runtime (zero build)
22
- start Start production server
23
- deploy Deploy to JXR Cloudflare infrastructure
2
+ import { JXRServerManager, JXRDeployer } from "../src/index.ts";
24
3
 
25
- Options:
26
- --port <port> Port to run on (default: 3000)
27
- --host <host> Host to bind to (default: localhost)
28
- --help, -h Show this help message
4
+ import { mkdir, writeFile, cp } from "fs/promises";
5
+ import { existsSync } from "fs";
6
+ import path from "path";
7
+ import { fileURLToPath } from "url";
29
8
 
30
- Examples:
31
- jxr dev
32
- jxr dev --port 8080
33
- jxr deploy
34
- `);
35
- process.exit(0);
36
- }
9
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
10
+ const args = process.argv.slice(2);
11
+ const command = args[0] || "dev";
37
12
 
38
- // Development mode - use JXR Runtime dev server (zero build)
39
- if (isDev) {
40
- const port = process.argv.find((arg, i) => process.argv[i - 1] === "--port") || "3000";
41
- const host = process.argv.find((arg, i) => process.argv[i - 1] === "--host") || "localhost";
13
+ if (command === "init") {
14
+ // Init command - create new project
15
+ const projectName = args[1] || "my-jxr-app";
16
+ const projectDir = path.resolve(process.cwd(), projectName);
17
+
18
+ if (existsSync(projectDir)) {
19
+ console.error(`❌ Directory ${projectName} already exists`);
20
+ process.exit(1);
21
+ }
22
+
23
+ console.log(`🚀 Creating new JXR project: ${projectName}`);
24
+
25
+ try {
26
+ // Create directories
27
+ await mkdir(projectDir, { recursive: true });
28
+ await mkdir(path.join(projectDir, "src"), { recursive: true });
29
+
30
+ // Create package.json
31
+ const packageJson = {
32
+ name: projectName,
33
+ version: "1.0.0",
34
+ type: "module",
35
+ scripts: {
36
+ dev: "jxr dev",
37
+ deploy: "jxr deploy"
38
+ },
39
+ dependencies: {
40
+ "@jxrstudios/jxr": "^1.0.5"
41
+ }
42
+ };
43
+ await writeFile(
44
+ path.join(projectDir, "package.json"),
45
+ JSON.stringify(packageJson, null, 2)
46
+ );
47
+
48
+ // Copy template from zzz_react_template
49
+ const templateDir = path.join(__dirname, "..", "zzz_react_template");
50
+ const files = ["App.tsx", "index.css", "main.tsx"];
51
+ for (const file of files) {
52
+ await cp(
53
+ path.join(templateDir, file),
54
+ path.join(projectDir, "src", file)
55
+ );
56
+ }
57
+
58
+ console.log(`✅ Project created: ${projectDir}`);
59
+ console.log("");
60
+ console.log("Next steps:");
61
+ console.log(` cd ${projectName}`);
62
+ console.log(" npm install");
63
+ console.log(" jxr dev");
64
+
65
+ } catch (err) {
66
+ console.error("❌ Failed to create project:", err.message);
67
+ process.exit(1);
68
+ }
69
+
70
+ } else if (command === "deploy") {
71
+ // Deploy command
72
+ const projectPath = args[1] || "./dist";
73
+ const env = args.find((a) => a.startsWith("--env="))?.split("=")[1] || "production";
74
+
75
+ if (!process.env.JXR_API_KEY) {
76
+ console.error("❌ JXR_API_KEY environment variable required");
77
+ console.error(" Get your key at: https://jxrstudios.online/dashboard");
78
+ process.exit(1);
79
+ }
80
+
81
+ const deployer = new JXRDeployer(process.env.JXR_API_KEY, process.env.JXR_PROJECT_ID);
82
+
83
+ const result = await deployer.deploy(projectPath, { environment: env });
84
+
85
+ if (result.success) {
86
+ console.log("✅ Deployed successfully!");
87
+ console.log(` URL: ${result.url}`);
88
+ result.logs.forEach(log => console.log(` ${log}`));
89
+ } else {
90
+ console.error("❌ Deploy failed");
91
+ result.logs.forEach(log => console.error(` ${log}`));
92
+ process.exit(1);
93
+ }
94
+
95
+ } else if (command === "dev" || !command) {
96
+ // Dev server (default)
97
+ const port = parseInt(process.env.PORT || args.find((a, i) => args[i - 1] === "--port" || a.startsWith("--port="))?.split("=")[1] || "3000");
98
+ const hmr = !args.includes("--no-hmr");
42
99
 
43
- console.log(`🚀 Starting JXR Dev Server on http://${host}:${port}/`);
100
+ const server = new JXRServerManager({ port, enableHMR: hmr });
44
101
 
45
- // Run the JXR dev server with experimental TypeScript support (no build needed)
46
- const serverPath = path.resolve(__dirname, "..", "server", "jxr-serve.mjs");
47
- const node = spawn("node", ["--experimental-strip-types", serverPath, "--port", port, "--host", host], {
48
- stdio: "inherit",
49
- cwd: path.resolve(__dirname, ".."),
50
- shell: true,
51
- env: { ...process.env, NODE_ENV: "development", PORT: port },
52
- });
53
- node.on("close", (code) => process.exit(code));
54
- }
55
- // Production mode
56
- else if (command === "start") {
57
- console.log("🚀 Starting JXR Production Server...");
102
+ await server.initialize();
103
+ await server.start();
58
104
 
59
- const serverPath = path.resolve(__dirname, "..", "server", "jxr-serve.mjs");
60
- const node = spawn("node", ["--experimental-strip-types", serverPath], {
61
- stdio: "inherit",
62
- cwd: path.resolve(__dirname, ".."),
63
- shell: true,
64
- env: { ...process.env, NODE_ENV: "production" },
65
- });
66
- node.on("close", (code) => process.exit(code));
67
- }
68
- // Deploy mode
69
- else if (command === "deploy") {
70
- console.log("🚀 Deploying with JXR Deployer...");
105
+ // Graceful shutdown - only register once
106
+ let shuttingDown = false;
107
+ const shutdown = async () => {
108
+ if (shuttingDown) return;
109
+ shuttingDown = true;
110
+ console.log("\n⚠️ Shutting down...");
111
+ await server.stop();
112
+ process.exit(0);
113
+ };
71
114
 
72
- const deployPath = path.resolve(__dirname, "..", "deploy-landing.mjs");
73
- const node = spawn("node", ["--experimental-strip-types", deployPath, ...process.argv.slice(3)], {
74
- stdio: "inherit",
75
- cwd: path.resolve(__dirname, ".."),
76
- shell: true,
77
- env: { ...process.env, NODE_ENV: "production" },
78
- });
79
- node.on("close", (code) => process.exit(code));
80
- }
81
- // Unknown command
82
- else {
83
- console.error(`❌ Unknown command: ${command}`);
84
- console.log("Run 'jxr --help' for usage information.");
115
+ process.on("SIGINT", shutdown);
116
+ process.on("SIGTERM", shutdown);
117
+
118
+ } else {
119
+ console.log("Usage:");
120
+ console.log(" jxr init <project-name> Create new project");
121
+ console.log(" jxr dev [--port=3000] Start dev server");
122
+ console.log(" jxr deploy <path> Deploy to production");
85
123
  process.exit(1);
86
124
  }
@@ -1,9 +1,7 @@
1
1
  /**
2
2
  * JXR.js — Wranglerless Deployer
3
- * ─────────────────────────────────────────────────────────────────────────────
4
3
  * Deploy projects to JXR Studios' Cloudflare infrastructure without wrangler.
5
4
  * Users only need a JXR API key - no Cloudflare account required.
6
- * ─────────────────────────────────────────────────────────────────────────────
7
5
  */
8
6
  export interface DeployConfig {
9
7
  projectId?: string;
@@ -29,15 +27,20 @@ export interface DeploymentStatus {
29
27
  */
30
28
  export declare class JXRDeployer {
31
29
  private apiKey;
32
- private apiUrl;
33
30
  private projectId;
34
31
  constructor(apiKey: string, projectId?: string);
35
32
  /**
36
33
  * Deploy the current project to JXR infrastructure
37
- * @param projectPath Path to the built project (dist/ folder)
38
- * @param config Deployment configuration
39
34
  */
40
35
  deploy(projectPath: string, config?: DeployConfig): Promise<DeployResult>;
36
+ /**
37
+ * Create a tarball of the build directory
38
+ */
39
+ private createTarball;
40
+ /**
41
+ * Upload tarball to JXR API
42
+ */
43
+ private uploadTarball;
41
44
  /**
42
45
  * Get deployment status
43
46
  */
@@ -56,13 +59,6 @@ export declare class JXRDeployer {
56
59
  * Rollback to a previous deployment
57
60
  */
58
61
  rollback(deploymentId: string): Promise<DeployResult>;
59
- /**
60
- * Delete a deployment
61
- */
62
- deleteDeployment(deploymentId: string): Promise<void>;
63
- private uploadBuild;
64
- private triggerDeployment;
65
- private pollDeployment;
66
62
  private generateProjectId;
67
63
  }
68
64
  /** Global deployer singleton */
@@ -1 +1 @@
1
- {"version":3,"file":"deployer.d.ts","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAM9C;;;;OAIG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA+CnF;;OAEG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAehE;;OAEG;IACG,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QACvD,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAgBH;;OAEG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwB3D;;OAEG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAe7C,WAAW;YAkCX,iBAAiB;YAyBjB,cAAc;IAuB5B,OAAO,CAAC,iBAAiB;CAM1B;AAED,gCAAgC;AAChC,eAAO,MAAM,WAAW,aAGvB,CAAC"}
1
+ {"version":3,"file":"deployer.d.ts","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAK9C;;OAEG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA+CnF;;OAEG;YACW,aAAa;IAkB3B;;OAEG;YACW,aAAa;IAgC3B;;OAEG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAchE;;OAEG;IACG,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QACvD,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAgBH;;OAEG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAuB3D,OAAO,CAAC,iBAAiB;CAK1B;AAED,gCAAgC;AAChC,eAAO,MAAM,WAAW,aAGvB,CAAC"}
package/dist/deployer.js CHANGED
@@ -1,76 +1,113 @@
1
1
  /**
2
2
  * JXR.js — Wranglerless Deployer
3
- * ─────────────────────────────────────────────────────────────────────────────
4
3
  * Deploy projects to JXR Studios' Cloudflare infrastructure without wrangler.
5
4
  * Users only need a JXR API key - no Cloudflare account required.
6
- * ─────────────────────────────────────────────────────────────────────────────
7
5
  */
6
+ import { readFile, stat } from "fs/promises";
7
+ import path from "path";
8
+ import { spawn } from "child_process";
8
9
  /**
9
10
  * JXRDeployer — Deploy to JXR Cloudflare infrastructure
10
11
  * No wrangler config needed. Just your JXR API key.
11
12
  */
12
13
  export class JXRDeployer {
13
14
  apiKey;
14
- apiUrl;
15
15
  projectId;
16
16
  constructor(apiKey, projectId) {
17
17
  this.apiKey = apiKey;
18
- this.apiUrl = 'https://api.jxrstudios.online/v1';
19
18
  this.projectId = projectId || this.generateProjectId();
20
19
  }
21
20
  /**
22
21
  * Deploy the current project to JXR infrastructure
23
- * @param projectPath Path to the built project (dist/ folder)
24
- * @param config Deployment configuration
25
22
  */
26
23
  async deploy(projectPath, config = {}) {
27
24
  const env = config.environment || 'production';
28
25
  const branch = config.branch || 'main';
26
+ const pid = config.projectId || this.projectId;
29
27
  console.log(`🚀 Deploying to JXR ${env}...`);
28
+ const logs = [];
30
29
  try {
31
- // Step 1: Upload build files
32
- const uploadResult = await this.uploadBuild(projectPath, {
33
- projectId: config.projectId || this.projectId,
34
- environment: env,
35
- branch,
36
- });
37
- if (!uploadResult.success) {
38
- throw new Error(`Upload failed: ${uploadResult.error}`);
39
- }
40
- // Step 2: Trigger deployment
41
- const deployment = await this.triggerDeployment({
42
- projectId: config.projectId || this.projectId,
43
- environment: env,
44
- uploadId: uploadResult.uploadId,
45
- });
46
- // Step 3: Poll for completion
47
- const result = await this.pollDeployment(deployment.deploymentId);
30
+ // Verify project path exists
31
+ await stat(projectPath);
32
+ logs.push(`📁 Deploying from: ${projectPath}`);
33
+ // Create tarball of build files
34
+ const tarballPath = await this.createTarball(projectPath);
35
+ logs.push(`📦 Created tarball: ${tarballPath}`);
36
+ // Upload tarball
37
+ const uploadResult = await this.uploadTarball(tarballPath, pid, env, branch);
38
+ logs.push(`☁️ Uploaded to JXR`);
39
+ // Get deployment URL
40
+ const url = `https://${pid}.jxr.dev`;
41
+ logs.push(`🌐 Live at: ${url}`);
48
42
  return {
49
- success: result.status === 'deployed',
50
- url: result.url || `https://${this.projectId}.jxr.dev`,
51
- deploymentId: deployment.deploymentId,
43
+ success: true,
44
+ url,
45
+ deploymentId: uploadResult.deploymentId,
52
46
  timestamp: new Date().toISOString(),
53
- logs: result.logs || [],
47
+ logs,
54
48
  };
55
49
  }
56
50
  catch (error) {
51
+ const errorMsg = error instanceof Error ? error.message : 'Unknown error';
52
+ logs.push(`❌ Error: ${errorMsg}`);
57
53
  return {
58
54
  success: false,
59
55
  url: '',
60
56
  deploymentId: '',
61
57
  timestamp: new Date().toISOString(),
62
- logs: [`Error: ${error instanceof Error ? error.message : 'Unknown error'}`],
58
+ logs,
63
59
  };
64
60
  }
65
61
  }
62
+ /**
63
+ * Create a tarball of the build directory
64
+ */
65
+ async createTarball(projectPath) {
66
+ const tarballPath = path.join(process.cwd(), '.jxr-deploy.tar.gz');
67
+ return new Promise((resolve, reject) => {
68
+ const tar = spawn('tar', ['-czf', tarballPath, '-C', projectPath, '.']);
69
+ tar.on('close', (code) => {
70
+ if (code === 0) {
71
+ resolve(tarballPath);
72
+ }
73
+ else {
74
+ reject(new Error(`tar exited with code ${code}`));
75
+ }
76
+ });
77
+ tar.on('error', reject);
78
+ });
79
+ }
80
+ /**
81
+ * Upload tarball to JXR API
82
+ */
83
+ async uploadTarball(tarballPath, projectId, environment, branch) {
84
+ const formData = new FormData();
85
+ const fileContent = await readFile(tarballPath);
86
+ const blob = new Blob([fileContent]);
87
+ formData.append('build', blob, 'build.tar.gz');
88
+ formData.append('projectId', projectId);
89
+ formData.append('environment', environment);
90
+ formData.append('branch', branch);
91
+ const response = await fetch('https://api.jxrstudios.online/v1/deployments', {
92
+ method: 'POST',
93
+ headers: {
94
+ 'Authorization': `Bearer ${this.apiKey}`,
95
+ },
96
+ body: formData,
97
+ });
98
+ if (!response.ok) {
99
+ throw new Error(`Upload failed: ${response.statusText}`);
100
+ }
101
+ const result = await response.json();
102
+ return { deploymentId: result.deploymentId };
103
+ }
66
104
  /**
67
105
  * Get deployment status
68
106
  */
69
107
  async getStatus(deploymentId) {
70
- const response = await fetch(`${this.apiUrl}/deployments/${deploymentId}`, {
108
+ const response = await fetch(`https://api.jxrstudios.online/v1/deployments/${deploymentId}`, {
71
109
  headers: {
72
110
  'Authorization': `Bearer ${this.apiKey}`,
73
- 'Content-Type': 'application/json',
74
111
  },
75
112
  });
76
113
  if (!response.ok) {
@@ -83,7 +120,7 @@ export class JXRDeployer {
83
120
  */
84
121
  async listDeployments(projectId) {
85
122
  const pid = projectId || this.projectId;
86
- const response = await fetch(`${this.apiUrl}/projects/${pid}/deployments`, {
123
+ const response = await fetch(`https://api.jxrstudios.online/v1/projects/${pid}/deployments`, {
87
124
  headers: {
88
125
  'Authorization': `Bearer ${this.apiKey}`,
89
126
  },
@@ -97,11 +134,10 @@ export class JXRDeployer {
97
134
  * Rollback to a previous deployment
98
135
  */
99
136
  async rollback(deploymentId) {
100
- const response = await fetch(`${this.apiUrl}/deployments/${deploymentId}/rollback`, {
137
+ const response = await fetch(`https://api.jxrstudios.online/v1/deployments/${deploymentId}/rollback`, {
101
138
  method: 'POST',
102
139
  headers: {
103
140
  'Authorization': `Bearer ${this.apiKey}`,
104
- 'Content-Type': 'application/json',
105
141
  },
106
142
  });
107
143
  if (!response.ok) {
@@ -116,80 +152,7 @@ export class JXRDeployer {
116
152
  logs: ['Rollback successful'],
117
153
  };
118
154
  }
119
- /**
120
- * Delete a deployment
121
- */
122
- async deleteDeployment(deploymentId) {
123
- const response = await fetch(`${this.apiUrl}/deployments/${deploymentId}`, {
124
- method: 'DELETE',
125
- headers: {
126
- 'Authorization': `Bearer ${this.apiKey}`,
127
- },
128
- });
129
- if (!response.ok) {
130
- throw new Error(`Delete failed: ${response.statusText}`);
131
- }
132
- }
133
- // ─── Private Methods ────────────────────────────────────────────────────────
134
- async uploadBuild(projectPath, options) {
135
- // In a real implementation, this would:
136
- // 1. Create a tarball of the build files
137
- // 2. Upload to JXR's blob storage
138
- // 3. Return an upload ID
139
- // For now, simulate the API call
140
- const formData = new FormData();
141
- formData.append('projectId', options.projectId);
142
- formData.append('environment', options.environment);
143
- formData.append('branch', options.branch);
144
- // TODO: Actually create and append tarball
145
- // formData.append('build', tarballBlob);
146
- const response = await fetch(`${this.apiUrl}/uploads`, {
147
- method: 'POST',
148
- headers: {
149
- 'Authorization': `Bearer ${this.apiKey}`,
150
- },
151
- body: formData,
152
- });
153
- if (!response.ok) {
154
- return { success: false, uploadId: '', error: response.statusText };
155
- }
156
- const data = await response.json();
157
- return { success: true, uploadId: data.uploadId };
158
- }
159
- async triggerDeployment(options) {
160
- const response = await fetch(`${this.apiUrl}/deployments`, {
161
- method: 'POST',
162
- headers: {
163
- 'Authorization': `Bearer ${this.apiKey}`,
164
- 'Content-Type': 'application/json',
165
- },
166
- body: JSON.stringify({
167
- projectId: options.projectId,
168
- environment: options.environment,
169
- uploadId: options.uploadId,
170
- }),
171
- });
172
- if (!response.ok) {
173
- throw new Error(`Failed to trigger deployment: ${response.statusText}`);
174
- }
175
- return response.json();
176
- }
177
- async pollDeployment(deploymentId, maxAttempts = 60) {
178
- for (let i = 0; i < maxAttempts; i++) {
179
- const status = await this.getStatus(deploymentId);
180
- if (status.status === 'deployed') {
181
- return { status: 'deployed', url: status.url, logs: [] };
182
- }
183
- if (status.status === 'failed') {
184
- return { status: 'failed', logs: [status.error || 'Deployment failed'] };
185
- }
186
- // Wait 2 seconds before next poll
187
- await new Promise(resolve => setTimeout(resolve, 2000));
188
- }
189
- throw new Error('Deployment timed out');
190
- }
191
155
  generateProjectId() {
192
- // Generate a unique project ID from the current directory or package.json
193
156
  const timestamp = Date.now().toString(36);
194
157
  const random = Math.random().toString(36).substring(2, 8);
195
158
  return `jxr-${timestamp}-${random}`;
@@ -1 +1 @@
1
- {"version":3,"file":"deployer.js","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployer.js","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface TranspilerOptions {
2
+ filename: string;
3
+ presets?: string[];
4
+ plugins?: any[];
5
+ cache?: boolean;
6
+ }
7
+ export interface TranspilationResult {
8
+ code: string;
9
+ map?: any;
10
+ error?: Error;
11
+ cached?: boolean;
12
+ }
13
+ export declare class EnhancedTranspiler {
14
+ private transformCache;
15
+ private dependencyGraph;
16
+ private options;
17
+ constructor(options?: Partial<TranspilerOptions>);
18
+ transpileTypeScript(code: string, filename: string, options?: Partial<TranspilerOptions>): TranspilationResult;
19
+ transpileJSX(code: string, filename: string, options?: Partial<TranspilerOptions>): TranspilationResult;
20
+ private createImportTransformer;
21
+ private resolveImportPath;
22
+ trackDependencies(filename: string, dependencies: string[]): void;
23
+ invalidateCache(changedFiles: string[]): void;
24
+ clearCache(): void;
25
+ invalidateFile(filename: string): void;
26
+ getCacheStats(): {
27
+ size: number;
28
+ hitRate: number;
29
+ };
30
+ extractDependencies(code: string): string[];
31
+ validateTranspiledCode(code: string): {
32
+ valid: boolean;
33
+ errors: string[];
34
+ };
35
+ }
36
+ //# sourceMappingURL=enhanced-transpiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanced-transpiler.d.ts","sourceRoot":"","sources":["../src/enhanced-transpiler.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,eAAe,CAAiC;IACxD,OAAO,CAAC,OAAO,CAA4B;gBAE/B,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAIpD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,mBAAmB;IA8ClH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,mBAAmB;IA4C3G,OAAO,CAAC,uBAAuB;IAyD/B,OAAO,CAAC,iBAAiB;IAiCzB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI;IAKjE,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI;IAuB7C,UAAU,IAAI,IAAI;IAKlB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAmBtC,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAQlD,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAyC3C,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAwB3E"}