wexts 2.0.9 → 3.0.0
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/dist/chunk-2KAQYLVN.js +1 -0
- package/dist/chunk-2KAQYLVN.js.map +1 -0
- package/dist/chunk-3OM7CHCA.js +65 -0
- package/dist/chunk-3OM7CHCA.js.map +1 -0
- package/dist/chunk-667BQCEM.js +375 -0
- package/dist/chunk-667BQCEM.js.map +1 -0
- package/dist/chunk-FCEZDH42.mjs +20 -0
- package/dist/chunk-FCEZDH42.mjs.map +1 -0
- package/dist/chunk-KXYLEUSW.mjs +242 -0
- package/dist/chunk-KXYLEUSW.mjs.map +1 -0
- package/dist/chunk-O42L6HOX.js +242 -0
- package/dist/chunk-O42L6HOX.js.map +1 -0
- package/dist/chunk-ONXNE2A6.mjs +375 -0
- package/dist/chunk-ONXNE2A6.mjs.map +1 -0
- package/dist/chunk-STTOPUZ2.mjs +88 -0
- package/dist/chunk-STTOPUZ2.mjs.map +1 -0
- package/dist/chunk-VMT3LALB.mjs +51 -0
- package/dist/chunk-VMT3LALB.mjs.map +1 -0
- package/dist/chunk-VNNVLQLJ.mjs +65 -0
- package/dist/chunk-VNNVLQLJ.mjs.map +1 -0
- package/dist/chunk-WF65EDRZ.js +88 -0
- package/dist/chunk-WF65EDRZ.js.map +1 -0
- package/dist/chunk-XE4OXN2W.js +12 -0
- package/dist/chunk-XE4OXN2W.js.map +1 -0
- package/dist/chunk-XVKTIYHY.js +51 -0
- package/dist/chunk-XVKTIYHY.js.map +1 -0
- package/dist/chunk-YSLEF5C5.mjs +1 -0
- package/dist/chunk-YSLEF5C5.mjs.map +1 -0
- package/dist/cli/index.js +134 -81
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +93 -41
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/index.js +3 -3
- package/dist/client/index.mjs +2 -2
- package/dist/codegen/index.js +4 -4
- package/dist/codegen/index.mjs +3 -3
- package/dist/dev-server/index.js +4 -4
- package/dist/dev-server/index.mjs +3 -3
- package/dist/index.js +93 -51
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +75 -33
- package/dist/index.mjs.map +1 -1
- package/dist/nest/index.js +3 -3
- package/dist/nest/index.mjs +2 -2
- package/dist/next/index.js +22 -9
- package/dist/next/index.js.map +1 -1
- package/dist/next/index.mjs +23 -9
- package/dist/next/index.mjs.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.mjs +2 -2
- package/package.json +113 -112
- package/templates/nextjs-web/next-env.d.ts +1 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import {
|
|
2
|
+
logger
|
|
3
|
+
} from "./chunk-VNNVLQLJ.mjs";
|
|
4
|
+
import {
|
|
5
|
+
__export,
|
|
6
|
+
__name
|
|
7
|
+
} from "./chunk-FCEZDH42.mjs";
|
|
8
|
+
|
|
9
|
+
// src/dev-server/index.ts
|
|
10
|
+
var dev_server_exports = {};
|
|
11
|
+
__export(dev_server_exports, {
|
|
12
|
+
FusionDevServer: () => FusionDevServer,
|
|
13
|
+
ProcessRunner: () => ProcessRunner,
|
|
14
|
+
ProxyServer: () => ProxyServer
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// src/dev-server/process-runner.ts
|
|
18
|
+
import { spawn } from "child_process";
|
|
19
|
+
import * as pc from "picocolors";
|
|
20
|
+
var ProcessRunner = class {
|
|
21
|
+
static {
|
|
22
|
+
__name(this, "ProcessRunner");
|
|
23
|
+
}
|
|
24
|
+
processes = /* @__PURE__ */ new Map();
|
|
25
|
+
colors = {
|
|
26
|
+
cyan: pc.cyan,
|
|
27
|
+
green: pc.green,
|
|
28
|
+
yellow: pc.yellow,
|
|
29
|
+
magenta: pc.magenta,
|
|
30
|
+
blue: pc.blue
|
|
31
|
+
};
|
|
32
|
+
async run(configs) {
|
|
33
|
+
logger.info("\u{1F680} Starting development servers...\n");
|
|
34
|
+
for (const config of configs) {
|
|
35
|
+
this.startProcess(config);
|
|
36
|
+
}
|
|
37
|
+
process.on("SIGINT", () => this.stopAll());
|
|
38
|
+
process.on("SIGTERM", () => this.stopAll());
|
|
39
|
+
}
|
|
40
|
+
startProcess(config) {
|
|
41
|
+
const { name, command, args, cwd, color, env } = config;
|
|
42
|
+
const colorFn = this.colors[color];
|
|
43
|
+
const prefix = colorFn(`[${name}]`);
|
|
44
|
+
logger.info(`${prefix} Starting...`);
|
|
45
|
+
const proc = spawn(command, args, {
|
|
46
|
+
cwd,
|
|
47
|
+
stdio: "pipe",
|
|
48
|
+
shell: true,
|
|
49
|
+
env: {
|
|
50
|
+
...process.env,
|
|
51
|
+
...env
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
this.processes.set(name, proc);
|
|
55
|
+
proc.stdout?.on("data", (data) => {
|
|
56
|
+
const lines = data.toString().split("\n").filter((l) => l.trim());
|
|
57
|
+
lines.forEach((line) => {
|
|
58
|
+
console.log(`${prefix} ${line}`);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
proc.stderr?.on("data", (data) => {
|
|
62
|
+
const lines = data.toString().split("\n").filter((l) => l.trim());
|
|
63
|
+
lines.forEach((line) => {
|
|
64
|
+
console.error(`${prefix} ${pc.red(line)}`);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
proc.on("exit", (code) => {
|
|
68
|
+
if (code !== 0 && code !== null) {
|
|
69
|
+
logger.error(`${prefix} Exited with code ${code}`);
|
|
70
|
+
}
|
|
71
|
+
this.processes.delete(name);
|
|
72
|
+
});
|
|
73
|
+
proc.on("error", (error) => {
|
|
74
|
+
logger.error(`${prefix} Error:`, error.message);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
stopAll() {
|
|
78
|
+
logger.info("\n\u{1F6D1} Stopping all processes...");
|
|
79
|
+
for (const [name, proc] of this.processes.entries()) {
|
|
80
|
+
logger.info(`Stopping ${name}...`);
|
|
81
|
+
proc.kill("SIGTERM");
|
|
82
|
+
}
|
|
83
|
+
setTimeout(() => {
|
|
84
|
+
process.exit(0);
|
|
85
|
+
}, 1e3);
|
|
86
|
+
}
|
|
87
|
+
isRunning(name) {
|
|
88
|
+
return this.processes.has(name);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
// src/dev-server/proxy.ts
|
|
93
|
+
import http from "http";
|
|
94
|
+
import httpProxy from "http-proxy";
|
|
95
|
+
import * as pc2 from "picocolors";
|
|
96
|
+
var ProxyServer = class {
|
|
97
|
+
static {
|
|
98
|
+
__name(this, "ProxyServer");
|
|
99
|
+
}
|
|
100
|
+
server = null;
|
|
101
|
+
proxy = null;
|
|
102
|
+
async start(config) {
|
|
103
|
+
const { port, apiTarget, apiPrefix } = config;
|
|
104
|
+
this.proxy = httpProxy.createProxyServer({
|
|
105
|
+
target: apiTarget,
|
|
106
|
+
changeOrigin: true,
|
|
107
|
+
ws: true
|
|
108
|
+
});
|
|
109
|
+
this.proxy.on("error", (err, req, res) => {
|
|
110
|
+
logger.error("Proxy error:", err.message);
|
|
111
|
+
if (res && "headersSent" in res && !res.headersSent) {
|
|
112
|
+
res.writeHead(502, {
|
|
113
|
+
"Content-Type": "text/plain"
|
|
114
|
+
});
|
|
115
|
+
res.end("Bad Gateway - API server unavailable");
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
this.server = http.createServer((req, res) => {
|
|
119
|
+
if (req.url?.startsWith(apiPrefix)) {
|
|
120
|
+
const newUrl = req.url.substring(apiPrefix.length) || "/";
|
|
121
|
+
req.url = newUrl;
|
|
122
|
+
logger.info(pc2.gray(`\u2192 ${req.method} ${apiPrefix}${newUrl}`));
|
|
123
|
+
this.proxy.web(req, res);
|
|
124
|
+
} else {
|
|
125
|
+
res.writeHead(404);
|
|
126
|
+
res.end("Not Found");
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
this.server.on("upgrade", (req, socket, head) => {
|
|
130
|
+
if (req.url?.startsWith(apiPrefix)) {
|
|
131
|
+
const newUrl = req.url.substring(apiPrefix.length) || "/";
|
|
132
|
+
req.url = newUrl;
|
|
133
|
+
this.proxy.ws(req, socket, head);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return new Promise((resolve2) => {
|
|
137
|
+
this.server.listen(port, () => {
|
|
138
|
+
logger.success(`\u2705 Proxy server running on port ${port}`);
|
|
139
|
+
logger.info(` Forwarding ${pc2.cyan(apiPrefix + "/*")} \u2192 ${pc2.cyan(apiTarget)}
|
|
140
|
+
`);
|
|
141
|
+
resolve2();
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
stop() {
|
|
146
|
+
if (this.server) {
|
|
147
|
+
this.server.close();
|
|
148
|
+
this.server = null;
|
|
149
|
+
}
|
|
150
|
+
if (this.proxy) {
|
|
151
|
+
this.proxy.close();
|
|
152
|
+
this.proxy = null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
// src/dev-server/dev-server.ts
|
|
158
|
+
import * as path from "path";
|
|
159
|
+
import * as fs from "fs";
|
|
160
|
+
var FusionDevServer = class {
|
|
161
|
+
static {
|
|
162
|
+
__name(this, "FusionDevServer");
|
|
163
|
+
}
|
|
164
|
+
processRunner;
|
|
165
|
+
proxyServer = null;
|
|
166
|
+
constructor() {
|
|
167
|
+
this.processRunner = new ProcessRunner();
|
|
168
|
+
}
|
|
169
|
+
async start(config) {
|
|
170
|
+
const { apiPath, webPath, webPort = 3e3, apiPort = 5050, useProxy = true } = config;
|
|
171
|
+
if (!fs.existsSync(apiPath)) {
|
|
172
|
+
throw new Error(`API path not found: ${apiPath}`);
|
|
173
|
+
}
|
|
174
|
+
if (!fs.existsSync(webPath)) {
|
|
175
|
+
throw new Error(`Web path not found: ${webPath}`);
|
|
176
|
+
}
|
|
177
|
+
const processes = [];
|
|
178
|
+
processes.push({
|
|
179
|
+
name: "API",
|
|
180
|
+
command: "npm",
|
|
181
|
+
args: [
|
|
182
|
+
"run",
|
|
183
|
+
"start:dev"
|
|
184
|
+
],
|
|
185
|
+
cwd: path.resolve(apiPath),
|
|
186
|
+
color: "cyan",
|
|
187
|
+
env: {
|
|
188
|
+
PORT: apiPort.toString()
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
processes.push({
|
|
192
|
+
name: "Web",
|
|
193
|
+
command: "npm",
|
|
194
|
+
args: [
|
|
195
|
+
"run",
|
|
196
|
+
"dev",
|
|
197
|
+
"--",
|
|
198
|
+
"-p",
|
|
199
|
+
webPort.toString()
|
|
200
|
+
],
|
|
201
|
+
cwd: path.resolve(webPath),
|
|
202
|
+
color: "green",
|
|
203
|
+
env: {
|
|
204
|
+
NEXT_PUBLIC_API_URL: useProxy ? `http://localhost:${webPort}/api` : `http://localhost:${apiPort}`
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
if (useProxy) {
|
|
208
|
+
this.proxyServer = new ProxyServer();
|
|
209
|
+
setTimeout(async () => {
|
|
210
|
+
await this.proxyServer.start({
|
|
211
|
+
port: webPort,
|
|
212
|
+
apiTarget: `http://localhost:${apiPort}`,
|
|
213
|
+
apiPrefix: "/api"
|
|
214
|
+
});
|
|
215
|
+
}, 3e3);
|
|
216
|
+
}
|
|
217
|
+
await this.processRunner.run(processes);
|
|
218
|
+
logger.info("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
|
|
219
|
+
logger.info("\u2551 Fusion Development Server Ready \u2551");
|
|
220
|
+
logger.info("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n");
|
|
221
|
+
logger.info(`\u{1F310} Web: http://localhost:${webPort}`);
|
|
222
|
+
logger.info(`\u{1F50C} API: http://localhost:${apiPort}`);
|
|
223
|
+
if (useProxy) {
|
|
224
|
+
logger.info(`\u{1F504} Proxy: Enabled (${webPort}/api \u2192 ${apiPort})`);
|
|
225
|
+
}
|
|
226
|
+
logger.info("\n");
|
|
227
|
+
}
|
|
228
|
+
stop() {
|
|
229
|
+
this.processRunner.stopAll();
|
|
230
|
+
if (this.proxyServer) {
|
|
231
|
+
this.proxyServer.stop();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
export {
|
|
237
|
+
ProcessRunner,
|
|
238
|
+
ProxyServer,
|
|
239
|
+
FusionDevServer,
|
|
240
|
+
dev_server_exports
|
|
241
|
+
};
|
|
242
|
+
//# sourceMappingURL=chunk-KXYLEUSW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/dev-server/index.ts","../src/dev-server/process-runner.ts","../src/dev-server/proxy.ts","../src/dev-server/dev-server.ts"],"sourcesContent":["export * from './dev-server';\r\nexport * from './process-runner';\r\nexport * from './proxy';\r\n","import { spawn, ChildProcess } from 'child_process';\r\nimport { logger } from '../core/logger';\r\nimport * as pc from 'picocolors';\r\n\r\nexport interface ProcessConfig {\r\n name: string;\r\n command: string;\r\n args: string[];\r\n cwd: string;\r\n color: 'cyan' | 'green' | 'yellow' | 'magenta' | 'blue';\r\n env?: Record<string, string>;\r\n}\r\n\r\n/**\r\n * Run multiple processes concurrently with colored output\r\n */\r\nexport class ProcessRunner {\r\n private processes: Map<string, ChildProcess> = new Map();\r\n private colors = {\r\n cyan: pc.cyan,\r\n green: pc.green,\r\n yellow: pc.yellow,\r\n magenta: pc.magenta,\r\n blue: pc.blue,\r\n };\r\n\r\n async run(configs: ProcessConfig[]): Promise<void> {\r\n logger.info('🚀 Starting development servers...\\n');\r\n\r\n for (const config of configs) {\r\n this.startProcess(config);\r\n }\r\n\r\n // Handle graceful shutdown\r\n process.on('SIGINT', () => this.stopAll());\r\n process.on('SIGTERM', () => this.stopAll());\r\n }\r\n\r\n private startProcess(config: ProcessConfig): void {\r\n const { name, command, args, cwd, color, env } = config;\r\n\r\n const colorFn = this.colors[color];\r\n const prefix = colorFn(`[${name}]`);\r\n\r\n logger.info(`${prefix} Starting...`);\r\n\r\n const proc = spawn(command, args, {\r\n cwd,\r\n stdio: 'pipe',\r\n shell: true,\r\n env: { ...process.env, ...env },\r\n });\r\n\r\n this.processes.set(name, proc);\r\n\r\n // Handle stdout\r\n proc.stdout?.on('data', (data) => {\r\n const lines = data.toString().split('\\n').filter((l: string) => l.trim());\r\n lines.forEach((line: string) => {\r\n console.log(`${prefix} ${line}`);\r\n });\r\n });\r\n\r\n // Handle stderr\r\n proc.stderr?.on('data', (data) => {\r\n const lines = data.toString().split('\\n').filter((l: string) => l.trim());\r\n lines.forEach((line: string) => {\r\n console.error(`${prefix} ${pc.red(line)}`);\r\n });\r\n });\r\n\r\n // Handle exit\r\n proc.on('exit', (code) => {\r\n if (code !== 0 && code !== null) {\r\n logger.error(`${prefix} Exited with code ${code}`);\r\n }\r\n this.processes.delete(name);\r\n });\r\n\r\n // Handle errors\r\n proc.on('error', (error) => {\r\n logger.error(`${prefix} Error:`, error.message);\r\n });\r\n }\r\n\r\n stopAll(): void {\r\n logger.info('\\n🛑 Stopping all processes...');\r\n\r\n for (const [name, proc] of this.processes.entries()) {\r\n logger.info(`Stopping ${name}...`);\r\n proc.kill('SIGTERM');\r\n }\r\n\r\n setTimeout(() => {\r\n process.exit(0);\r\n }, 1000);\r\n }\r\n\r\n isRunning(name: string): boolean {\r\n return this.processes.has(name);\r\n }\r\n}\r\n","import http from 'http';\r\nimport httpProxy from 'http-proxy';\r\nimport { logger } from '../core/logger';\r\nimport * as pc from 'picocolors';\r\n\r\nexport interface ProxyConfig {\r\n port: number;\r\n apiTarget: string;\r\n apiPrefix: string;\r\n}\r\n\r\n/**\r\n * Proxy server to forward API requests from Next.js to NestJS\r\n */\r\nexport class ProxyServer {\r\n private server: http.Server | null = null;\r\n private proxy: httpProxy | null = null;\r\n\r\n async start(config: ProxyConfig): Promise<void> {\r\n const { port, apiTarget, apiPrefix } = config;\r\n\r\n this.proxy = httpProxy.createProxyServer({\r\n target: apiTarget,\r\n changeOrigin: true,\r\n ws: true, // WebSocket support\r\n });\r\n\r\n // Handle proxy errors\r\n this.proxy.on('error', (err, req, res) => {\r\n logger.error('Proxy error:', err.message);\r\n if (res && 'headersSent' in res && !(res as any).headersSent) {\r\n (res as http.ServerResponse).writeHead(502, { 'Content-Type': 'text/plain' });\r\n (res as http.ServerResponse).end('Bad Gateway - API server unavailable');\r\n }\r\n });\r\n\r\n this.server = http.createServer((req, res) => {\r\n // Check if request is for API\r\n if (req.url?.startsWith(apiPrefix)) {\r\n // Remove prefix before forwarding\r\n const newUrl = req.url.substring(apiPrefix.length) || '/';\r\n req.url = newUrl;\r\n\r\n logger.info(pc.gray(`→ ${req.method} ${apiPrefix}${newUrl}`));\r\n this.proxy!.web(req, res);\r\n } else {\r\n // Not an API request - should not happen\r\n res.writeHead(404);\r\n res.end('Not Found');\r\n }\r\n });\r\n\r\n // Handle WebSocket upgrade\r\n this.server.on('upgrade', (req, socket, head) => {\r\n if (req.url?.startsWith(apiPrefix)) {\r\n const newUrl = req.url.substring(apiPrefix.length) || '/';\r\n req.url = newUrl;\r\n this.proxy!.ws(req, socket, head);\r\n }\r\n });\r\n\r\n return new Promise((resolve) => {\r\n this.server!.listen(port, () => {\r\n logger.success(`✅ Proxy server running on port ${port}`);\r\n logger.info(` Forwarding ${pc.cyan(apiPrefix + '/*')} → ${pc.cyan(apiTarget)}\\n`);\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n stop(): void {\r\n if (this.server) {\r\n this.server.close();\r\n this.server = null;\r\n }\r\n if (this.proxy) {\r\n this.proxy.close();\r\n this.proxy = null;\r\n }\r\n }\r\n}\r\n","import { ProcessRunner, ProcessConfig } from './process-runner';\r\nimport { ProxyServer } from './proxy';\r\nimport { logger } from '../core/logger';\r\nimport * as path from 'path';\r\nimport * as fs from 'fs';\r\n\r\nexport interface DevServerConfig {\r\n apiPath: string;\r\n webPath: string;\r\n webPort?: number;\r\n apiPort?: number;\r\n useProxy?: boolean;\r\n}\r\n\r\n/**\r\n * Unified development server for Fusion projects\r\n */\r\nexport class FusionDevServer {\r\n private processRunner: ProcessRunner;\r\n private proxyServer: ProxyServer | null = null;\r\n\r\n constructor() {\r\n this.processRunner = new ProcessRunner();\r\n }\r\n\r\n async start(config: DevServerConfig): Promise<void> {\r\n const {\r\n apiPath,\r\n webPath,\r\n webPort = 3000,\r\n apiPort = 5050,\r\n useProxy = true,\r\n } = config;\r\n\r\n // Validate paths\r\n if (!fs.existsSync(apiPath)) {\r\n throw new Error(`API path not found: ${apiPath}`);\r\n }\r\n if (!fs.existsSync(webPath)) {\r\n throw new Error(`Web path not found: ${webPath}`);\r\n }\r\n\r\n const processes: ProcessConfig[] = [];\r\n\r\n // Add API server\r\n processes.push({\r\n name: 'API',\r\n command: 'npm',\r\n args: ['run', 'start:dev'],\r\n cwd: path.resolve(apiPath),\r\n color: 'cyan',\r\n env: {\r\n PORT: apiPort.toString(),\r\n },\r\n });\r\n\r\n // Add Web server\r\n processes.push({\r\n name: 'Web',\r\n command: 'npm',\r\n args: ['run', 'dev', '--', '-p', webPort.toString()],\r\n cwd: path.resolve(webPath),\r\n color: 'green',\r\n env: {\r\n NEXT_PUBLIC_API_URL: useProxy\r\n ? `http://localhost:${webPort}/api`\r\n : `http://localhost:${apiPort}`,\r\n },\r\n });\r\n\r\n // Start proxy if enabled\r\n if (useProxy) {\r\n this.proxyServer = new ProxyServer();\r\n\r\n // Wait a bit for API to be ready\r\n setTimeout(async () => {\r\n await this.proxyServer!.start({\r\n port: webPort,\r\n apiTarget: `http://localhost:${apiPort}`,\r\n apiPrefix: '/api',\r\n });\r\n }, 3000);\r\n }\r\n\r\n // Start processes\r\n await this.processRunner.run(processes);\r\n\r\n // Log info\r\n logger.info('╔═══════════════════════════════════════╗');\r\n logger.info('║ Fusion Development Server Ready ║');\r\n logger.info('╚═══════════════════════════════════════╝\\n');\r\n logger.info(`🌐 Web: http://localhost:${webPort}`);\r\n logger.info(`🔌 API: http://localhost:${apiPort}`);\r\n if (useProxy) {\r\n logger.info(`🔄 Proxy: Enabled (${webPort}/api → ${apiPort})`);\r\n }\r\n logger.info('\\n');\r\n }\r\n\r\n stop(): void {\r\n this.processRunner.stopAll();\r\n if (this.proxyServer) {\r\n this.proxyServer.stop();\r\n }\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;AAAA;;;;;;;;ACAA,SAASA,aAA2B;AAEpC,YAAYC,QAAQ;AAcb,IAAMC,gBAAN,MAAMA;EAhBb,OAgBaA;;;EACDC,YAAuC,oBAAIC,IAAAA;EAC3CC,SAAS;IACbC,MAASA;IACTC,OAAUA;IACVC,QAAWA;IACXC,SAAYA;IACZC,MAASA;EACb;EAEA,MAAMC,IAAIC,SAAyC;AAC/CC,WAAOC,KAAK,6CAAA;AAEZ,eAAWC,UAAUH,SAAS;AAC1B,WAAKI,aAAaD,MAAAA;IACtB;AAGAE,YAAQC,GAAG,UAAU,MAAM,KAAKC,QAAO,CAAA;AACvCF,YAAQC,GAAG,WAAW,MAAM,KAAKC,QAAO,CAAA;EAC5C;EAEQH,aAAaD,QAA6B;AAC9C,UAAM,EAAEK,MAAMC,SAASC,MAAMC,KAAKC,OAAOC,IAAG,IAAKV;AAEjD,UAAMW,UAAU,KAAKrB,OAAOmB,KAAAA;AAC5B,UAAMG,SAASD,QAAQ,IAAIN,IAAAA,GAAO;AAElCP,WAAOC,KAAK,GAAGa,MAAAA,cAAoB;AAEnC,UAAMC,OAAOC,MAAMR,SAASC,MAAM;MAC9BC;MACAO,OAAO;MACPC,OAAO;MACPN,KAAK;QAAE,GAAGR,QAAQQ;QAAK,GAAGA;MAAI;IAClC,CAAA;AAEA,SAAKtB,UAAU6B,IAAIZ,MAAMQ,IAAAA;AAGzBA,SAAKK,QAAQf,GAAG,QAAQ,CAACgB,SAAAA;AACrB,YAAMC,QAAQD,KAAKE,SAAQ,EAAGC,MAAM,IAAA,EAAMC,OAAO,CAACC,MAAcA,EAAEC,KAAI,CAAA;AACtEL,YAAMM,QAAQ,CAACC,SAAAA;AACXC,gBAAQC,IAAI,GAAGjB,MAAAA,IAAUe,IAAAA,EAAM;MACnC,CAAA;IACJ,CAAA;AAGAd,SAAKiB,QAAQ3B,GAAG,QAAQ,CAACgB,SAAAA;AACrB,YAAMC,QAAQD,KAAKE,SAAQ,EAAGC,MAAM,IAAA,EAAMC,OAAO,CAACC,MAAcA,EAAEC,KAAI,CAAA;AACtEL,YAAMM,QAAQ,CAACC,SAAAA;AACXC,gBAAQG,MAAM,GAAGnB,MAAAA,IAAaoB,OAAIL,IAAAA,CAAAA,EAAO;MAC7C,CAAA;IACJ,CAAA;AAGAd,SAAKV,GAAG,QAAQ,CAAC8B,SAAAA;AACb,UAAIA,SAAS,KAAKA,SAAS,MAAM;AAC7BnC,eAAOiC,MAAM,GAAGnB,MAAAA,qBAA2BqB,IAAAA,EAAM;MACrD;AACA,WAAK7C,UAAU8C,OAAO7B,IAAAA;IAC1B,CAAA;AAGAQ,SAAKV,GAAG,SAAS,CAAC4B,UAAAA;AACdjC,aAAOiC,MAAM,GAAGnB,MAAAA,WAAiBmB,MAAMI,OAAO;IAClD,CAAA;EACJ;EAEA/B,UAAgB;AACZN,WAAOC,KAAK,uCAAA;AAEZ,eAAW,CAACM,MAAMQ,IAAAA,KAAS,KAAKzB,UAAUgD,QAAO,GAAI;AACjDtC,aAAOC,KAAK,YAAYM,IAAAA,KAAS;AACjCQ,WAAKwB,KAAK,SAAA;IACd;AAEAC,eAAW,MAAA;AACPpC,cAAQqC,KAAK,CAAA;IACjB,GAAG,GAAA;EACP;EAEAC,UAAUnC,MAAuB;AAC7B,WAAO,KAAKjB,UAAUqD,IAAIpC,IAAAA;EAC9B;AACJ;;;ACrGA,OAAOqC,UAAU;AACjB,OAAOC,eAAe;AAEtB,YAAYC,SAAQ;AAWb,IAAMC,cAAN,MAAMA;EAdb,OAcaA;;;EACDC,SAA6B;EAC7BC,QAA0B;EAElC,MAAMC,MAAMC,QAAoC;AAC5C,UAAM,EAAEC,MAAMC,WAAWC,UAAS,IAAKH;AAEvC,SAAKF,QAAQM,UAAUC,kBAAkB;MACrCC,QAAQJ;MACRK,cAAc;MACdC,IAAI;IACR,CAAA;AAGA,SAAKV,MAAMW,GAAG,SAAS,CAACC,KAAKC,KAAKC,QAAAA;AAC9BC,aAAOC,MAAM,gBAAgBJ,IAAIK,OAAO;AACxC,UAAIH,OAAO,iBAAiBA,OAAO,CAAEA,IAAYI,aAAa;AACzDJ,YAA4BK,UAAU,KAAK;UAAE,gBAAgB;QAAa,CAAA;AAC1EL,YAA4BM,IAAI,sCAAA;MACrC;IACJ,CAAA;AAEA,SAAKrB,SAASsB,KAAKC,aAAa,CAACT,KAAKC,QAAAA;AAElC,UAAID,IAAIU,KAAKC,WAAWnB,SAAAA,GAAY;AAEhC,cAAMoB,SAASZ,IAAIU,IAAIG,UAAUrB,UAAUsB,MAAM,KAAK;AACtDd,YAAIU,MAAME;AAEVV,eAAOa,KAAQC,SAAK,UAAKhB,IAAIiB,MAAM,IAAIzB,SAAAA,GAAYoB,MAAAA,EAAQ,CAAA;AAC3D,aAAKzB,MAAO+B,IAAIlB,KAAKC,GAAAA;MACzB,OAAO;AAEHA,YAAIK,UAAU,GAAA;AACdL,YAAIM,IAAI,WAAA;MACZ;IACJ,CAAA;AAGA,SAAKrB,OAAOY,GAAG,WAAW,CAACE,KAAKmB,QAAQC,SAAAA;AACpC,UAAIpB,IAAIU,KAAKC,WAAWnB,SAAAA,GAAY;AAChC,cAAMoB,SAASZ,IAAIU,IAAIG,UAAUrB,UAAUsB,MAAM,KAAK;AACtDd,YAAIU,MAAME;AACV,aAAKzB,MAAOU,GAAGG,KAAKmB,QAAQC,IAAAA;MAChC;IACJ,CAAA;AAEA,WAAO,IAAIC,QAAQ,CAACC,aAAAA;AAChB,WAAKpC,OAAQqC,OAAOjC,MAAM,MAAA;AACtBY,eAAOsB,QAAQ,uCAAkClC,IAAAA,EAAM;AACvDY,eAAOa,KAAK,iBAAoBU,SAAKjC,YAAY,IAAA,CAAA,WAAciC,SAAKlC,SAAAA,CAAAA;CAAc;AAClF+B,QAAAA,SAAAA;MACJ,CAAA;IACJ,CAAA;EACJ;EAEAI,OAAa;AACT,QAAI,KAAKxC,QAAQ;AACb,WAAKA,OAAOyC,MAAK;AACjB,WAAKzC,SAAS;IAClB;AACA,QAAI,KAAKC,OAAO;AACZ,WAAKA,MAAMwC,MAAK;AAChB,WAAKxC,QAAQ;IACjB;EACJ;AACJ;;;AC7EA,YAAYyC,UAAU;AACtB,YAAYC,QAAQ;AAab,IAAMC,kBAAN,MAAMA;EAjBb,OAiBaA;;;EACDC;EACAC,cAAkC;EAE1C,cAAc;AACV,SAAKD,gBAAgB,IAAIE,cAAAA;EAC7B;EAEA,MAAMC,MAAMC,QAAwC;AAChD,UAAM,EACFC,SACAC,SACAC,UAAU,KACVC,UAAU,MACVC,WAAW,KAAI,IACfL;AAGJ,QAAI,CAAIM,cAAWL,OAAAA,GAAU;AACzB,YAAM,IAAIM,MAAM,uBAAuBN,OAAAA,EAAS;IACpD;AACA,QAAI,CAAIK,cAAWJ,OAAAA,GAAU;AACzB,YAAM,IAAIK,MAAM,uBAAuBL,OAAAA,EAAS;IACpD;AAEA,UAAMM,YAA6B,CAAA;AAGnCA,cAAUC,KAAK;MACXC,MAAM;MACNC,SAAS;MACTC,MAAM;QAAC;QAAO;;MACdC,KAAUC,aAAQb,OAAAA;MAClBc,OAAO;MACPC,KAAK;QACDC,MAAMb,QAAQc,SAAQ;MAC1B;IACJ,CAAA;AAGAV,cAAUC,KAAK;MACXC,MAAM;MACNC,SAAS;MACTC,MAAM;QAAC;QAAO;QAAO;QAAM;QAAMT,QAAQe,SAAQ;;MACjDL,KAAUC,aAAQZ,OAAAA;MAClBa,OAAO;MACPC,KAAK;QACDG,qBAAqBd,WACf,oBAAoBF,OAAAA,SACpB,oBAAoBC,OAAAA;MAC9B;IACJ,CAAA;AAGA,QAAIC,UAAU;AACV,WAAKR,cAAc,IAAIuB,YAAAA;AAGvBC,iBAAW,YAAA;AACP,cAAM,KAAKxB,YAAaE,MAAM;UAC1BuB,MAAMnB;UACNoB,WAAW,oBAAoBnB,OAAAA;UAC/BoB,WAAW;QACf,CAAA;MACJ,GAAG,GAAA;IACP;AAGA,UAAM,KAAK5B,cAAc6B,IAAIjB,SAAAA;AAG7BkB,WAAOC,KAAK,wPAAA;AACZD,WAAOC,KAAK,oDAAA;AACZD,WAAOC,KAAK,0PAAA;AACZD,WAAOC,KAAK,oCAA6BxB,OAAAA,EAAS;AAClDuB,WAAOC,KAAK,oCAA6BvB,OAAAA,EAAS;AAClD,QAAIC,UAAU;AACVqB,aAAOC,KAAK,6BAAsBxB,OAAAA,eAAiBC,OAAAA,GAAU;IACjE;AACAsB,WAAOC,KAAK,IAAA;EAChB;EAEAC,OAAa;AACT,SAAKhC,cAAciC,QAAO;AAC1B,QAAI,KAAKhC,aAAa;AAClB,WAAKA,YAAY+B,KAAI;IACzB;EACJ;AACJ;","names":["spawn","pc","ProcessRunner","processes","Map","colors","cyan","green","yellow","magenta","blue","run","configs","logger","info","config","startProcess","process","on","stopAll","name","command","args","cwd","color","env","colorFn","prefix","proc","spawn","stdio","shell","set","stdout","data","lines","toString","split","filter","l","trim","forEach","line","console","log","stderr","error","red","code","delete","message","entries","kill","setTimeout","exit","isRunning","has","http","httpProxy","pc","ProxyServer","server","proxy","start","config","port","apiTarget","apiPrefix","httpProxy","createProxyServer","target","changeOrigin","ws","on","err","req","res","logger","error","message","headersSent","writeHead","end","http","createServer","url","startsWith","newUrl","substring","length","info","gray","method","web","socket","head","Promise","resolve","listen","success","cyan","stop","close","path","fs","FusionDevServer","processRunner","proxyServer","ProcessRunner","start","config","apiPath","webPath","webPort","apiPort","useProxy","existsSync","Error","processes","push","name","command","args","cwd","resolve","color","env","PORT","toString","NEXT_PUBLIC_API_URL","ProxyServer","setTimeout","port","apiTarget","apiPrefix","run","logger","info","stop","stopAll"]}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3;
|
|
2
|
+
|
|
3
|
+
var _chunk3OM7CHCAjs = require('./chunk-3OM7CHCA.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkXE4OXN2Wjs = require('./chunk-XE4OXN2W.js');
|
|
8
|
+
|
|
9
|
+
// src/dev-server/index.ts
|
|
10
|
+
var dev_server_exports = {};
|
|
11
|
+
_chunkXE4OXN2Wjs.__export.call(void 0, dev_server_exports, {
|
|
12
|
+
FusionDevServer: () => FusionDevServer,
|
|
13
|
+
ProcessRunner: () => ProcessRunner,
|
|
14
|
+
ProxyServer: () => ProxyServer
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// src/dev-server/process-runner.ts
|
|
18
|
+
var _child_process = require('child_process');
|
|
19
|
+
var _picocolors = require('picocolors'); var pc = _interopRequireWildcard(_picocolors); var pc2 = _interopRequireWildcard(_picocolors);
|
|
20
|
+
var ProcessRunner = (_class = class {constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this); }
|
|
21
|
+
static {
|
|
22
|
+
_chunkXE4OXN2Wjs.__name.call(void 0, this, "ProcessRunner");
|
|
23
|
+
}
|
|
24
|
+
__init() {this.processes = /* @__PURE__ */ new Map()}
|
|
25
|
+
__init2() {this.colors = {
|
|
26
|
+
cyan: pc.cyan,
|
|
27
|
+
green: pc.green,
|
|
28
|
+
yellow: pc.yellow,
|
|
29
|
+
magenta: pc.magenta,
|
|
30
|
+
blue: pc.blue
|
|
31
|
+
}}
|
|
32
|
+
async run(configs) {
|
|
33
|
+
_chunk3OM7CHCAjs.logger.info("\u{1F680} Starting development servers...\n");
|
|
34
|
+
for (const config of configs) {
|
|
35
|
+
this.startProcess(config);
|
|
36
|
+
}
|
|
37
|
+
process.on("SIGINT", () => this.stopAll());
|
|
38
|
+
process.on("SIGTERM", () => this.stopAll());
|
|
39
|
+
}
|
|
40
|
+
startProcess(config) {
|
|
41
|
+
const { name, command, args, cwd, color, env } = config;
|
|
42
|
+
const colorFn = this.colors[color];
|
|
43
|
+
const prefix = colorFn(`[${name}]`);
|
|
44
|
+
_chunk3OM7CHCAjs.logger.info(`${prefix} Starting...`);
|
|
45
|
+
const proc = _child_process.spawn.call(void 0, command, args, {
|
|
46
|
+
cwd,
|
|
47
|
+
stdio: "pipe",
|
|
48
|
+
shell: true,
|
|
49
|
+
env: {
|
|
50
|
+
...process.env,
|
|
51
|
+
...env
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
this.processes.set(name, proc);
|
|
55
|
+
_optionalChain([proc, 'access', _ => _.stdout, 'optionalAccess', _2 => _2.on, 'call', _3 => _3("data", (data) => {
|
|
56
|
+
const lines = data.toString().split("\n").filter((l) => l.trim());
|
|
57
|
+
lines.forEach((line) => {
|
|
58
|
+
console.log(`${prefix} ${line}`);
|
|
59
|
+
});
|
|
60
|
+
})]);
|
|
61
|
+
_optionalChain([proc, 'access', _4 => _4.stderr, 'optionalAccess', _5 => _5.on, 'call', _6 => _6("data", (data) => {
|
|
62
|
+
const lines = data.toString().split("\n").filter((l) => l.trim());
|
|
63
|
+
lines.forEach((line) => {
|
|
64
|
+
console.error(`${prefix} ${pc.red(line)}`);
|
|
65
|
+
});
|
|
66
|
+
})]);
|
|
67
|
+
proc.on("exit", (code) => {
|
|
68
|
+
if (code !== 0 && code !== null) {
|
|
69
|
+
_chunk3OM7CHCAjs.logger.error(`${prefix} Exited with code ${code}`);
|
|
70
|
+
}
|
|
71
|
+
this.processes.delete(name);
|
|
72
|
+
});
|
|
73
|
+
proc.on("error", (error) => {
|
|
74
|
+
_chunk3OM7CHCAjs.logger.error(`${prefix} Error:`, error.message);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
stopAll() {
|
|
78
|
+
_chunk3OM7CHCAjs.logger.info("\n\u{1F6D1} Stopping all processes...");
|
|
79
|
+
for (const [name, proc] of this.processes.entries()) {
|
|
80
|
+
_chunk3OM7CHCAjs.logger.info(`Stopping ${name}...`);
|
|
81
|
+
proc.kill("SIGTERM");
|
|
82
|
+
}
|
|
83
|
+
setTimeout(() => {
|
|
84
|
+
process.exit(0);
|
|
85
|
+
}, 1e3);
|
|
86
|
+
}
|
|
87
|
+
isRunning(name) {
|
|
88
|
+
return this.processes.has(name);
|
|
89
|
+
}
|
|
90
|
+
}, _class);
|
|
91
|
+
|
|
92
|
+
// src/dev-server/proxy.ts
|
|
93
|
+
var _http = require('http'); var _http2 = _interopRequireDefault(_http);
|
|
94
|
+
var _httpproxy = require('http-proxy'); var _httpproxy2 = _interopRequireDefault(_httpproxy);
|
|
95
|
+
|
|
96
|
+
var ProxyServer = (_class2 = class {constructor() { _class2.prototype.__init3.call(this);_class2.prototype.__init4.call(this); }
|
|
97
|
+
static {
|
|
98
|
+
_chunkXE4OXN2Wjs.__name.call(void 0, this, "ProxyServer");
|
|
99
|
+
}
|
|
100
|
+
__init3() {this.server = null}
|
|
101
|
+
__init4() {this.proxy = null}
|
|
102
|
+
async start(config) {
|
|
103
|
+
const { port, apiTarget, apiPrefix } = config;
|
|
104
|
+
this.proxy = _httpproxy2.default.createProxyServer({
|
|
105
|
+
target: apiTarget,
|
|
106
|
+
changeOrigin: true,
|
|
107
|
+
ws: true
|
|
108
|
+
});
|
|
109
|
+
this.proxy.on("error", (err, req, res) => {
|
|
110
|
+
_chunk3OM7CHCAjs.logger.error("Proxy error:", err.message);
|
|
111
|
+
if (res && "headersSent" in res && !res.headersSent) {
|
|
112
|
+
res.writeHead(502, {
|
|
113
|
+
"Content-Type": "text/plain"
|
|
114
|
+
});
|
|
115
|
+
res.end("Bad Gateway - API server unavailable");
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
this.server = _http2.default.createServer((req, res) => {
|
|
119
|
+
if (_optionalChain([req, 'access', _7 => _7.url, 'optionalAccess', _8 => _8.startsWith, 'call', _9 => _9(apiPrefix)])) {
|
|
120
|
+
const newUrl = req.url.substring(apiPrefix.length) || "/";
|
|
121
|
+
req.url = newUrl;
|
|
122
|
+
_chunk3OM7CHCAjs.logger.info(pc2.gray(`\u2192 ${req.method} ${apiPrefix}${newUrl}`));
|
|
123
|
+
this.proxy.web(req, res);
|
|
124
|
+
} else {
|
|
125
|
+
res.writeHead(404);
|
|
126
|
+
res.end("Not Found");
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
this.server.on("upgrade", (req, socket, head) => {
|
|
130
|
+
if (_optionalChain([req, 'access', _10 => _10.url, 'optionalAccess', _11 => _11.startsWith, 'call', _12 => _12(apiPrefix)])) {
|
|
131
|
+
const newUrl = req.url.substring(apiPrefix.length) || "/";
|
|
132
|
+
req.url = newUrl;
|
|
133
|
+
this.proxy.ws(req, socket, head);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return new Promise((resolve2) => {
|
|
137
|
+
this.server.listen(port, () => {
|
|
138
|
+
_chunk3OM7CHCAjs.logger.success(`\u2705 Proxy server running on port ${port}`);
|
|
139
|
+
_chunk3OM7CHCAjs.logger.info(` Forwarding ${pc2.cyan(apiPrefix + "/*")} \u2192 ${pc2.cyan(apiTarget)}
|
|
140
|
+
`);
|
|
141
|
+
resolve2();
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
stop() {
|
|
146
|
+
if (this.server) {
|
|
147
|
+
this.server.close();
|
|
148
|
+
this.server = null;
|
|
149
|
+
}
|
|
150
|
+
if (this.proxy) {
|
|
151
|
+
this.proxy.close();
|
|
152
|
+
this.proxy = null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}, _class2);
|
|
156
|
+
|
|
157
|
+
// src/dev-server/dev-server.ts
|
|
158
|
+
var _path = require('path'); var path = _interopRequireWildcard(_path);
|
|
159
|
+
var _fs = require('fs'); var fs = _interopRequireWildcard(_fs);
|
|
160
|
+
var FusionDevServer = (_class3 = class {
|
|
161
|
+
static {
|
|
162
|
+
_chunkXE4OXN2Wjs.__name.call(void 0, this, "FusionDevServer");
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
__init5() {this.proxyServer = null}
|
|
166
|
+
constructor() {;_class3.prototype.__init5.call(this);
|
|
167
|
+
this.processRunner = new ProcessRunner();
|
|
168
|
+
}
|
|
169
|
+
async start(config) {
|
|
170
|
+
const { apiPath, webPath, webPort = 3e3, apiPort = 5050, useProxy = true } = config;
|
|
171
|
+
if (!fs.existsSync(apiPath)) {
|
|
172
|
+
throw new Error(`API path not found: ${apiPath}`);
|
|
173
|
+
}
|
|
174
|
+
if (!fs.existsSync(webPath)) {
|
|
175
|
+
throw new Error(`Web path not found: ${webPath}`);
|
|
176
|
+
}
|
|
177
|
+
const processes = [];
|
|
178
|
+
processes.push({
|
|
179
|
+
name: "API",
|
|
180
|
+
command: "npm",
|
|
181
|
+
args: [
|
|
182
|
+
"run",
|
|
183
|
+
"start:dev"
|
|
184
|
+
],
|
|
185
|
+
cwd: path.resolve(apiPath),
|
|
186
|
+
color: "cyan",
|
|
187
|
+
env: {
|
|
188
|
+
PORT: apiPort.toString()
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
processes.push({
|
|
192
|
+
name: "Web",
|
|
193
|
+
command: "npm",
|
|
194
|
+
args: [
|
|
195
|
+
"run",
|
|
196
|
+
"dev",
|
|
197
|
+
"--",
|
|
198
|
+
"-p",
|
|
199
|
+
webPort.toString()
|
|
200
|
+
],
|
|
201
|
+
cwd: path.resolve(webPath),
|
|
202
|
+
color: "green",
|
|
203
|
+
env: {
|
|
204
|
+
NEXT_PUBLIC_API_URL: useProxy ? `http://localhost:${webPort}/api` : `http://localhost:${apiPort}`
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
if (useProxy) {
|
|
208
|
+
this.proxyServer = new ProxyServer();
|
|
209
|
+
setTimeout(async () => {
|
|
210
|
+
await this.proxyServer.start({
|
|
211
|
+
port: webPort,
|
|
212
|
+
apiTarget: `http://localhost:${apiPort}`,
|
|
213
|
+
apiPrefix: "/api"
|
|
214
|
+
});
|
|
215
|
+
}, 3e3);
|
|
216
|
+
}
|
|
217
|
+
await this.processRunner.run(processes);
|
|
218
|
+
_chunk3OM7CHCAjs.logger.info("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
|
|
219
|
+
_chunk3OM7CHCAjs.logger.info("\u2551 Fusion Development Server Ready \u2551");
|
|
220
|
+
_chunk3OM7CHCAjs.logger.info("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n");
|
|
221
|
+
_chunk3OM7CHCAjs.logger.info(`\u{1F310} Web: http://localhost:${webPort}`);
|
|
222
|
+
_chunk3OM7CHCAjs.logger.info(`\u{1F50C} API: http://localhost:${apiPort}`);
|
|
223
|
+
if (useProxy) {
|
|
224
|
+
_chunk3OM7CHCAjs.logger.info(`\u{1F504} Proxy: Enabled (${webPort}/api \u2192 ${apiPort})`);
|
|
225
|
+
}
|
|
226
|
+
_chunk3OM7CHCAjs.logger.info("\n");
|
|
227
|
+
}
|
|
228
|
+
stop() {
|
|
229
|
+
this.processRunner.stopAll();
|
|
230
|
+
if (this.proxyServer) {
|
|
231
|
+
this.proxyServer.stop();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}, _class3);
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
exports.ProcessRunner = ProcessRunner; exports.ProxyServer = ProxyServer; exports.FusionDevServer = FusionDevServer; exports.dev_server_exports = dev_server_exports;
|
|
242
|
+
//# sourceMappingURL=chunk-O42L6HOX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["c:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\chunk-O42L6HOX.js"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;AACA,IAAI,mBAAmB,EAAE,CAAC,CAAC;AAC3B,uCAAQ,kBAAmB,EAAE;AAC7B,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,eAAe;AACxC,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,aAAa;AACpC,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG;AACrB,CAAC,CAAC;AACF;AACA;AACA,8CAAqC;AACrC,uIAAgC;AAChC,IAAI,cAAc,YAAE,MAAM;AAC1B,EAAE,OAAO;AACT,IAAI,qCAAM,IAAK,EAAE,eAAe,CAAC;AACjC,EAAE;AACF,iBAAE,UAAU,kBAAkB,IAAI,GAAG,CAAC,EAAC;AACvC,kBAAE,OAAO,EAAE;AACX,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI;AACjB,IAAI,KAAK,EAAE,EAAE,CAAC,KAAK;AACnB,IAAI,MAAM,EAAE,EAAE,CAAC,MAAM;AACrB,IAAI,OAAO,EAAE,EAAE,CAAC,OAAO;AACvB,IAAI,IAAI,EAAE,EAAE,CAAC;AACb,EAAE,EAAC;AACH,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE;AACrB,IAAI,uBAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC;AAC9D,IAAI,IAAI,CAAC,MAAM,OAAO,GAAG,OAAO,EAAE;AAClC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC/B,IAAI;AACJ,IAAI,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,IAAI,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,EAAE;AACF,EAAE,YAAY,CAAC,MAAM,EAAE;AACvB,IAAI,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM;AAC3D,IAAI,MAAM,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACtC,IAAI,MAAM,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,uBAAM,CAAC,IAAI,CAAC,CAAC,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,oBAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,oBAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,kBAAA;AACA,kBAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,kBAAA;AACA,EAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,MAAA;AACA,QAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,QAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,IAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AACA,IAAA;AACA,MAAA;AACA,IAAA;AACA,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"C:\\Users\\ziad\\Desktop\\wexts\\packages\\dist\\chunk-O42L6HOX.js","sourcesContent":[null]}
|