wexts 4.1.0 ā 4.1.5
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 +49 -49
- package/bin/wexts.cjs +2 -2
- package/package.json +153 -148
- package/templates/.dockerignore +43 -43
- package/templates/.env.example +17 -17
- package/templates/Dockerfile +60 -60
- package/templates/Procfile +1 -1
- package/templates/README.md +67 -67
- package/templates/api-sdk.ts +115 -115
- package/templates/docker-compose.yml +34 -34
- package/templates/nestjs-api/.env.example +3 -3
- package/templates/nestjs-api/README.md +87 -87
- package/templates/nestjs-api/nest-cli.json +6 -6
- package/templates/nestjs-api/package.json +40 -40
- package/templates/nestjs-api/prisma/migrations/20251123205437_init/migration.sql +24 -24
- package/templates/nestjs-api/prisma/migrations/migration_lock.toml +3 -3
- package/templates/nestjs-api/prisma/schema.prisma +29 -29
- package/templates/nestjs-api/src/app.module.ts +17 -17
- package/templates/nestjs-api/src/auth/auth.controller.ts +27 -27
- package/templates/nestjs-api/src/auth/auth.module.ts +37 -37
- package/templates/nestjs-api/src/auth/auth.service.ts +86 -86
- package/templates/nestjs-api/src/auth/dto/auth.dto.ts +22 -22
- package/templates/nestjs-api/src/auth/guards/jwt-auth.guard.ts +5 -5
- package/templates/nestjs-api/src/auth/strategies/jwt.strategy.ts +27 -27
- package/templates/nestjs-api/src/main.ts +32 -32
- package/templates/nestjs-api/src/prisma/prisma.module.ts +9 -9
- package/templates/nestjs-api/src/prisma/prisma.service.ts +14 -14
- package/templates/nestjs-api/src/todos/dto/todo.dto.ts +24 -24
- package/templates/nestjs-api/src/todos/todos.controller.ts +39 -39
- package/templates/nestjs-api/src/todos/todos.module.ts +11 -11
- package/templates/nestjs-api/src/todos/todos.service.ts +53 -53
- package/templates/nestjs-api/src/users/users.controller.ts +14 -14
- package/templates/nestjs-api/src/users/users.module.ts +12 -12
- package/templates/nestjs-api/src/users/users.service.ts +19 -19
- package/templates/nestjs-api/tsconfig.json +39 -39
- package/templates/nextjs-web/README.md +76 -76
- package/templates/nextjs-web/app/actions/auth.ts +108 -108
- package/templates/nextjs-web/app/dashboard/error.tsx +39 -39
- package/templates/nextjs-web/app/dashboard/loading.tsx +14 -14
- package/templates/nextjs-web/app/dashboard/page.tsx +5 -5
- package/templates/nextjs-web/app/globals.css +93 -93
- package/templates/nextjs-web/app/layout.tsx +29 -29
- package/templates/nextjs-web/app/login/page.tsx +5 -5
- package/templates/nextjs-web/app/page.tsx +28 -28
- package/templates/nextjs-web/app/register/page.tsx +5 -5
- package/templates/nextjs-web/components/ui/button.tsx +56 -56
- package/templates/nextjs-web/components/ui/card.tsx +79 -79
- package/templates/nextjs-web/components/ui/input.tsx +25 -25
- package/templates/nextjs-web/components/ui/label.tsx +24 -24
- package/templates/nextjs-web/features/auth/LoginForm.tsx +140 -140
- package/templates/nextjs-web/features/auth/RegisterForm.tsx +159 -159
- package/templates/nextjs-web/features/auth/api.ts +35 -35
- package/templates/nextjs-web/features/auth/index.ts +3 -3
- package/templates/nextjs-web/features/dashboard/DashboardView.tsx +204 -204
- package/templates/nextjs-web/features/dashboard/api.ts +9 -9
- package/templates/nextjs-web/features/dashboard/components.tsx +74 -74
- package/templates/nextjs-web/features/dashboard/index.ts +3 -3
- package/templates/nextjs-web/hooks/index.ts +4 -4
- package/templates/nextjs-web/lib/api-client.ts +89 -89
- package/templates/nextjs-web/lib/api.ts +115 -115
- package/templates/nextjs-web/lib/axios-global-config.ts +17 -17
- package/templates/nextjs-web/lib/utils.ts +6 -6
- package/templates/nextjs-web/lib/wexts-client.ts +4 -4
- package/templates/nextjs-web/next-env.d.ts +6 -6
- package/templates/nextjs-web/next.config.ts +20 -20
- package/templates/nextjs-web/package.json +37 -37
- package/templates/nextjs-web/postcss.config.js +6 -6
- package/templates/nextjs-web/tailwind.config.ts +69 -69
- package/templates/nextjs-web/tsconfig.json +41 -41
- package/templates/nixpacks.toml +11 -11
- package/templates/root-package.json +31 -31
- package/templates/server.ts +66 -66
- package/templates/tsconfig.json +30 -30
- package/dist/chunk-2KAQYLVN.js +0 -1
- package/dist/chunk-2KAQYLVN.js.map +0 -1
- package/dist/chunk-2LJVUMXW.js +0 -228
- package/dist/chunk-2LJVUMXW.js.map +0 -1
- package/dist/chunk-342VRT25.mjs +0 -504
- package/dist/chunk-342VRT25.mjs.map +0 -1
- package/dist/chunk-7HNQWJWV.js +0 -504
- package/dist/chunk-7HNQWJWV.js.map +0 -1
- package/dist/chunk-7QKLIVRF.js +0 -94
- package/dist/chunk-7QKLIVRF.js.map +0 -1
- package/dist/chunk-7SSCNCTW.mjs +0 -137
- package/dist/chunk-7SSCNCTW.mjs.map +0 -1
- package/dist/chunk-7TLSPR65.mjs +0 -95
- package/dist/chunk-7TLSPR65.mjs.map +0 -1
- package/dist/chunk-7WULUGLH.mjs +0 -22
- package/dist/chunk-7WULUGLH.mjs.map +0 -1
- package/dist/chunk-AVMQJWYD.js +0 -95
- package/dist/chunk-AVMQJWYD.js.map +0 -1
- package/dist/chunk-BG56B4DE.js +0 -106
- package/dist/chunk-BG56B4DE.js.map +0 -1
- package/dist/chunk-CLM5PNSG.mjs +0 -496
- package/dist/chunk-CLM5PNSG.mjs.map +0 -1
- package/dist/chunk-DNLGCKTT.js +0 -31
- package/dist/chunk-DNLGCKTT.js.map +0 -1
- package/dist/chunk-JHOVXH3X.mjs +0 -65
- package/dist/chunk-JHOVXH3X.mjs.map +0 -1
- package/dist/chunk-MXINIFPC.js +0 -105
- package/dist/chunk-MXINIFPC.js.map +0 -1
- package/dist/chunk-O4II6N34.js +0 -137
- package/dist/chunk-O4II6N34.js.map +0 -1
- package/dist/chunk-SE32ZPOZ.js +0 -496
- package/dist/chunk-SE32ZPOZ.js.map +0 -1
- package/dist/chunk-UAL54DVV.mjs +0 -106
- package/dist/chunk-UAL54DVV.mjs.map +0 -1
- package/dist/chunk-WCKSKU3C.js +0 -65
- package/dist/chunk-WCKSKU3C.js.map +0 -1
- package/dist/chunk-WU6FW77M.mjs +0 -105
- package/dist/chunk-WU6FW77M.mjs.map +0 -1
- package/dist/chunk-XE4OXN2W.js +0 -12
- package/dist/chunk-XE4OXN2W.js.map +0 -1
- package/dist/chunk-YBM3IJEA.mjs +0 -94
- package/dist/chunk-YBM3IJEA.mjs.map +0 -1
- package/dist/chunk-YN6WIWNQ.mjs +0 -228
- package/dist/chunk-YN6WIWNQ.mjs.map +0 -1
- package/dist/chunk-YSLEF5C5.mjs +0 -1
- package/dist/chunk-YSLEF5C5.mjs.map +0 -1
- package/dist/chunk-ZX7QIN24.mjs +0 -31
- package/dist/chunk-ZX7QIN24.mjs.map +0 -1
- package/dist/cli/index.d.mts +0 -23
- package/dist/cli/index.d.ts +0 -23
- package/dist/cli/index.js +0 -716
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/index.mjs +0 -718
- package/dist/cli/index.mjs.map +0 -1
- package/dist/client/index.d.mts +0 -21
- package/dist/client/index.d.ts +0 -21
- package/dist/client/index.js +0 -13
- package/dist/client/index.js.map +0 -1
- package/dist/client/index.mjs +0 -13
- package/dist/client/index.mjs.map +0 -1
- package/dist/codegen/index.d.mts +0 -2
- package/dist/codegen/index.d.ts +0 -2
- package/dist/codegen/index.js +0 -16
- package/dist/codegen/index.js.map +0 -1
- package/dist/codegen/index.mjs +0 -16
- package/dist/codegen/index.mjs.map +0 -1
- package/dist/decorators-BT1FFqN0.d.mts +0 -29
- package/dist/decorators-DvS58PqC.d.ts +0 -29
- package/dist/dev-server/index.d.mts +0 -1
- package/dist/dev-server/index.d.ts +0 -1
- package/dist/dev-server/index.js +0 -13
- package/dist/dev-server/index.js.map +0 -1
- package/dist/dev-server/index.mjs +0 -13
- package/dist/dev-server/index.mjs.map +0 -1
- package/dist/index-7QeQEf37.d.ts +0 -92
- package/dist/index-7RvU-jGE.d.mts +0 -66
- package/dist/index-7RvU-jGE.d.ts +0 -66
- package/dist/index-8nzxy0NN.d.mts +0 -92
- package/dist/index-Co5ZsLqq.d.ts +0 -58
- package/dist/index-D94W1__r.d.mts +0 -58
- package/dist/index-DQmyVp6F.d.mts +0 -27
- package/dist/index-KL_1BrQb.d.ts +0 -27
- package/dist/index.d.mts +0 -294
- package/dist/index.d.ts +0 -294
- package/dist/index.js +0 -424
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -424
- package/dist/index.mjs.map +0 -1
- package/dist/nest/index.d.mts +0 -3
- package/dist/nest/index.d.ts +0 -3
- package/dist/nest/index.js +0 -38
- package/dist/nest/index.js.map +0 -1
- package/dist/nest/index.mjs +0 -38
- package/dist/nest/index.mjs.map +0 -1
- package/dist/next/index.d.mts +0 -66
- package/dist/next/index.d.ts +0 -66
- package/dist/next/index.js +0 -289
- package/dist/next/index.js.map +0 -1
- package/dist/next/index.mjs +0 -251
- package/dist/next/index.mjs.map +0 -1
- package/dist/rpc/index.d.mts +0 -2
- package/dist/rpc/index.d.ts +0 -2
- package/dist/rpc/index.js +0 -23
- package/dist/rpc/index.js.map +0 -1
- package/dist/rpc/index.mjs +0 -23
- package/dist/rpc/index.mjs.map +0 -1
- package/dist/runtime/index.d.mts +0 -55
- package/dist/runtime/index.d.ts +0 -55
- package/dist/runtime/index.js +0 -221
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/index.mjs +0 -221
- package/dist/runtime/index.mjs.map +0 -1
- package/dist/types/index.d.mts +0 -12
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/index.mjs +0 -3
- package/dist/types/index.mjs.map +0 -1
- package/dist/types-7d_fC-C3.d.mts +0 -32
- package/dist/types-7d_fC-C3.d.ts +0 -32
- package/dist/vercel-builder/index.d.mts +0 -58
- package/dist/vercel-builder/index.d.ts +0 -58
- package/dist/vercel-builder/index.js +0 -330
- package/dist/vercel-builder/index.js.map +0 -1
- package/dist/vercel-builder/index.mjs +0 -330
- package/dist/vercel-builder/index.mjs.map +0 -1
package/dist/chunk-2LJVUMXW.js
DELETED
|
@@ -1,228 +0,0 @@
|
|
|
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;
|
|
2
|
-
|
|
3
|
-
var _chunkWCKSKU3Cjs = require('./chunk-WCKSKU3C.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
|
-
_chunkWCKSKU3Cjs.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
|
-
_chunkWCKSKU3Cjs.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
|
-
_chunkWCKSKU3Cjs.logger.error(`${prefix} Exited with code ${code}`);
|
|
70
|
-
}
|
|
71
|
-
this.processes.delete(name);
|
|
72
|
-
});
|
|
73
|
-
proc.on("error", (error) => {
|
|
74
|
-
_chunkWCKSKU3Cjs.logger.error(`${prefix} Error:`, error.message);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
stopAll() {
|
|
78
|
-
_chunkWCKSKU3Cjs.logger.info("\n\u{1F6D1} Stopping all processes...");
|
|
79
|
-
for (const [name, proc] of this.processes.entries()) {
|
|
80
|
-
_chunkWCKSKU3Cjs.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/dev-server.ts
|
|
93
|
-
var _path = require('path'); var path = _interopRequireWildcard(_path);
|
|
94
|
-
var _fs = require('fs'); var fs = _interopRequireWildcard(_fs);
|
|
95
|
-
var FusionDevServer = class {
|
|
96
|
-
static {
|
|
97
|
-
_chunkXE4OXN2Wjs.__name.call(void 0, this, "FusionDevServer");
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
constructor() {
|
|
101
|
-
this.processRunner = new ProcessRunner();
|
|
102
|
-
}
|
|
103
|
-
async start(config) {
|
|
104
|
-
const { apiPath, webPath, webPort = 3e3, apiPort = 5050, useProxy = false } = config;
|
|
105
|
-
if (useProxy) {
|
|
106
|
-
throw new Error("The legacy dev proxy is disabled because it conflicts with the Next.js port. Use the production runtime for single-port serving.");
|
|
107
|
-
}
|
|
108
|
-
if (!fs.existsSync(apiPath)) {
|
|
109
|
-
throw new Error(`API path not found: ${apiPath}`);
|
|
110
|
-
}
|
|
111
|
-
if (!fs.existsSync(webPath)) {
|
|
112
|
-
throw new Error(`Web path not found: ${webPath}`);
|
|
113
|
-
}
|
|
114
|
-
const processes = [];
|
|
115
|
-
processes.push({
|
|
116
|
-
name: "API",
|
|
117
|
-
command: "npm",
|
|
118
|
-
args: [
|
|
119
|
-
"run",
|
|
120
|
-
"start:dev"
|
|
121
|
-
],
|
|
122
|
-
cwd: path.resolve(apiPath),
|
|
123
|
-
color: "cyan",
|
|
124
|
-
env: {
|
|
125
|
-
PORT: apiPort.toString()
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
processes.push({
|
|
129
|
-
name: "Web",
|
|
130
|
-
command: "npm",
|
|
131
|
-
args: [
|
|
132
|
-
"run",
|
|
133
|
-
"dev",
|
|
134
|
-
"--",
|
|
135
|
-
"-p",
|
|
136
|
-
webPort.toString()
|
|
137
|
-
],
|
|
138
|
-
cwd: path.resolve(webPath),
|
|
139
|
-
color: "green",
|
|
140
|
-
env: {
|
|
141
|
-
NEXT_PUBLIC_API_URL: `http://localhost:${apiPort}`
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
await this.processRunner.run(processes);
|
|
145
|
-
_chunkWCKSKU3Cjs.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");
|
|
146
|
-
_chunkWCKSKU3Cjs.logger.info("\u2551 Fusion Development Server Ready \u2551");
|
|
147
|
-
_chunkWCKSKU3Cjs.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");
|
|
148
|
-
_chunkWCKSKU3Cjs.logger.info(`\u{1F310} Web: http://localhost:${webPort}`);
|
|
149
|
-
_chunkWCKSKU3Cjs.logger.info(`\u{1F50C} API: http://localhost:${apiPort}`);
|
|
150
|
-
_chunkWCKSKU3Cjs.logger.info("\n");
|
|
151
|
-
}
|
|
152
|
-
stop() {
|
|
153
|
-
this.processRunner.stopAll();
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
// src/dev-server/proxy.ts
|
|
158
|
-
var _http = require('http'); var _http2 = _interopRequireDefault(_http);
|
|
159
|
-
var _httpproxy = require('http-proxy'); var _httpproxy2 = _interopRequireDefault(_httpproxy);
|
|
160
|
-
|
|
161
|
-
var ProxyServer = (_class2 = class {constructor() { _class2.prototype.__init3.call(this);_class2.prototype.__init4.call(this); }
|
|
162
|
-
static {
|
|
163
|
-
_chunkXE4OXN2Wjs.__name.call(void 0, this, "ProxyServer");
|
|
164
|
-
}
|
|
165
|
-
__init3() {this.server = null}
|
|
166
|
-
__init4() {this.proxy = null}
|
|
167
|
-
async start(config) {
|
|
168
|
-
const { port, apiTarget, apiPrefix } = config;
|
|
169
|
-
this.proxy = _httpproxy2.default.createProxyServer({
|
|
170
|
-
target: apiTarget,
|
|
171
|
-
changeOrigin: true,
|
|
172
|
-
ws: true
|
|
173
|
-
});
|
|
174
|
-
this.proxy.on("error", (err, req, res) => {
|
|
175
|
-
_chunkWCKSKU3Cjs.logger.error("Proxy error:", err.message);
|
|
176
|
-
if (res && "headersSent" in res && !res.headersSent) {
|
|
177
|
-
res.writeHead(502, {
|
|
178
|
-
"Content-Type": "text/plain"
|
|
179
|
-
});
|
|
180
|
-
res.end("Bad Gateway - API server unavailable");
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
this.server = _http2.default.createServer((req, res) => {
|
|
184
|
-
if (_optionalChain([req, 'access', _7 => _7.url, 'optionalAccess', _8 => _8.startsWith, 'call', _9 => _9(apiPrefix)])) {
|
|
185
|
-
const newUrl = req.url.substring(apiPrefix.length) || "/";
|
|
186
|
-
req.url = newUrl;
|
|
187
|
-
_chunkWCKSKU3Cjs.logger.info(pc2.gray(`\u2192 ${req.method} ${apiPrefix}${newUrl}`));
|
|
188
|
-
this.proxy.web(req, res);
|
|
189
|
-
} else {
|
|
190
|
-
res.writeHead(404);
|
|
191
|
-
res.end("Not Found");
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
this.server.on("upgrade", (req, socket, head) => {
|
|
195
|
-
if (_optionalChain([req, 'access', _10 => _10.url, 'optionalAccess', _11 => _11.startsWith, 'call', _12 => _12(apiPrefix)])) {
|
|
196
|
-
const newUrl = req.url.substring(apiPrefix.length) || "/";
|
|
197
|
-
req.url = newUrl;
|
|
198
|
-
this.proxy.ws(req, socket, head);
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
return new Promise((resolve2) => {
|
|
202
|
-
this.server.listen(port, () => {
|
|
203
|
-
_chunkWCKSKU3Cjs.logger.success(`\u2705 Proxy server running on port ${port}`);
|
|
204
|
-
_chunkWCKSKU3Cjs.logger.info(` Forwarding ${pc2.cyan(apiPrefix + "/*")} \u2192 ${pc2.cyan(apiTarget)}
|
|
205
|
-
`);
|
|
206
|
-
resolve2();
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
stop() {
|
|
211
|
-
if (this.server) {
|
|
212
|
-
this.server.close();
|
|
213
|
-
this.server = null;
|
|
214
|
-
}
|
|
215
|
-
if (this.proxy) {
|
|
216
|
-
this.proxy.close();
|
|
217
|
-
this.proxy = null;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}, _class2);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
exports.ProcessRunner = ProcessRunner; exports.FusionDevServer = FusionDevServer; exports.ProxyServer = ProxyServer; exports.dev_server_exports = dev_server_exports;
|
|
228
|
-
//# sourceMappingURL=chunk-2LJVUMXW.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Volumes/Projects/wexts/packages/dist/chunk-2LJVUMXW.js","../src/dev-server/index.ts","../src/dev-server/process-runner.ts","../src/dev-server/dev-server.ts","../src/dev-server/proxy.ts"],"names":["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","spawn","lines","forEach","log","error","code","exit","path","fs","FusionDevServer","processRunner","apiPath","useProxy","Error","existsSync","push","resolve","apiPort","toString","NEXT_PUBLIC_API_URL","httpProxy","pc","ProxyServer","port","apiTarget","changeOrigin","writeHead","server","url","newUrl","proxy","Promise","success","close"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;ACRA,IAAA,mBAAA,EAAA,CAAA,CAAA;ADUA,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;AEhBA,8CAAoC;AAEpC,uIAAoB;AAcb,IAAMA,cAAAA,YAAN,MAAMA;AFIb,EEpBA,OAgBaA;AFKb,IAAI,qCAAM,IAAK,EAAE,eAAe,CAAC;AACjC,EAAE;AACF,iBENYC,UAAAA,kBAAuC,IAAIC,GAAAA,CAAAA,EAAAA;AFOvD,kBENYC,OAAAA,EAAS;AFOrB,IENQC,IAAAA,EAASA,EAAAA,CAAAA,IAAAA;AFOjB,IENQC,KAAAA,EAAUA,EAAAA,CAAAA,KAAAA;AFOlB,IENQC,MAAAA,EAAWA,EAAAA,CAAAA,MAAAA;AFOnB,IENQC,OAAAA,EAAYA,EAAAA,CAAAA,OAAAA;AFOpB,IENQC,IAAAA,EAASA,EAAAA,CAAAA;AFOjB,EENI,EAAA;AFOJ,EELI,MAAMC,GAAAA,CAAIC,OAAAA,EAAyC;AAC/CC,IAAAA,uBAAAA,CAAOC,IAAAA,CAAK,6CAAA,CAAA;AAEZ,IAAA,IAAA,CAAA,MAAWC,OAAAA,GAAUH,OAAAA,EAAS;AAC1B,MAAA,IAAA,CAAKI,YAAAA,CAAaD,MAAAA,CAAAA;AFK9B,IEJQ;AAGAE,IAAAA,OAAAA,CAAQC,EAAAA,CAAG,QAAA,EAAU,CAAA,EAAA,GAAM,IAAA,CAAKC,OAAAA,CAAO,CAAA,CAAA;AACvCF,IAAAA,OAAAA,CAAQC,EAAAA,CAAG,SAAA,EAAW,CAAA,EAAA,GAAM,IAAA,CAAKC,OAAAA,CAAO,CAAA,CAAA;AFGhD,EEFI;AFGJ,EEDYH,YAAAA,CAAaD,MAAAA,EAA6B;AAC9C,IAAA,MAAM,EAAEK,IAAAA,EAAMC,OAAAA,EAASC,IAAAA,EAAMC,GAAAA,EAAKC,KAAAA,EAAOC,IAAG,EAAA,EAAKV,MAAAA;AAEjD,IAAA,MAAMW,QAAAA,EAAU,IAAA,CAAKrB,MAAAA,CAAOmB,KAAAA,CAAAA;AAC5B,IAAA,MAAMG,OAAAA,EAASD,OAAAA,CAAQ,CAAA,CAAA,EAAIN,IAAAA,CAAAA,CAAAA,CAAO,CAAA;AAElCP,IAAAA,uBAAAA,CAAOC,IAAAA,CAAK,CAAA,EAAA;AAECc,IAAAA;AACTL,MAAAA;AACO,MAAA;AACA,MAAA;AACF,MAAA;AAAKN,QAAAA;AAAgBQ,QAAAA;AAAI,MAAA;AAClC,IAAA;AAEKtB,IAAAA;AAGQe,oBAAAA;AACHW,MAAAA;AACAC,MAAAA;AACMC,QAAAA;AACZ,MAAA;AACJ,IAAA;AAGab,oBAAAA;AACHW,MAAAA;AACAC,MAAAA;AACME,QAAAA;AACZ,MAAA;AACJ,IAAA;AAGQ,IAAA;AACAC,MAAAA;AACOD,QAAAA;AACX,MAAA;AACK7B,MAAAA;AACT,IAAA;AAGQ,IAAA;AACG6B,MAAAA;AACX,IAAA;AACJ,EAAA;AAEgB,EAAA;AACA,IAAA;AAEAZ,IAAAA;AACDN,MAAAA;AACG,MAAA;AACd,IAAA;AAEW,IAAA;AACCoB,MAAAA;AACT,IAAA;AACP,EAAA;AAEUd,EAAAA;AACMjB,IAAAA;AAChB,EAAA;AACJ;AFXiB;AACA;AGzFLgC;AACAC;AAaCC;AAAAA,EAAAA;AHgFI,IAAA;AACA,EAAA;AGhFLC,EAAAA;AAEM,EAAA;AACLA,IAAAA;AACT,EAAA;AAEYvB,EAAAA;AAEJwB,IAAAA;AAOAC,IAAAA;AACUC,MAAAA;AACd,IAAA;AAGQC,IAAAA;AACMD,MAAAA;AACd,IAAA;AACQC,IAAAA;AACMD,MAAAA;AACd,IAAA;AAEMtC,IAAAA;AAGIwC,IAAAA;AACA,MAAA;AACG,MAAA;AACH,MAAA;AAAC,QAAA;AAAO,QAAA;AHsET,MAAA;AGrEKC,MAAAA;AACH,MAAA;AACF,MAAA;AACKC,QAAAA;AACV,MAAA;AACJ,IAAA;AAGUF,IAAAA;AACA,MAAA;AACG,MAAA;AACH,MAAA;AAAC,QAAA;AAAO,QAAA;AAAO,QAAA;AAAM,QAAA;AAAcG,QAAAA;AH0EpC,MAAA;AGzEKF,MAAAA;AACH,MAAA;AACF,MAAA;AACDG,QAAAA;AACJ,MAAA;AACJ,IAAA;AAGWT,IAAAA;AAGC,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAChB,EAAA;AAEa,EAAA;AACJA,IAAAA;AACT,EAAA;AACJ;AHsEiB;AACA;AI5JA;AACVU;AAEKC;AAWCC;AAAAA,EAAAA;AJoJI,IAAA;AACA,EAAA;AIpJwB,kBAAA;AACH,kBAAA;AAEtBnC,EAAAA;AACAoC,IAAAA;AAEKH,IAAAA;AACDI,MAAAA;AACRC,MAAAA;AACI,MAAA;AACR,IAAA;AAGWnC,IAAAA;AACAc,MAAAA;AACI,MAAA;AACsBsB,QAAAA;AAAiB,UAAA;AAA6B,QAAA;AAC1C,QAAA;AACrC,MAAA;AACJ,IAAA;AAEKC,IAAAA;AAEOC,MAAAA;AAEEC,QAAAA;AACFD,QAAAA;AAEG1C,QAAAA;AACF4C,QAAAA;AACF,MAAA;AAECJ,QAAAA;AACI,QAAA;AACZ,MAAA;AACJ,IAAA;AAGYpC,IAAAA;AACAsC,MAAAA;AACEC,QAAAA;AACFD,QAAAA;AACCE,QAAAA;AACT,MAAA;AACJ,IAAA;AAEWC,IAAAA;AACFJ,MAAAA;AACMK,QAAAA;AACA9C,QAAAA;AAA2E;AAClF8B,QAAAA;AACJ,MAAA;AACJ,IAAA;AACJ,EAAA;AAEa,EAAA;AACAW,IAAAA;AACAA,MAAAA;AACAA,MAAAA;AACT,IAAA;AACSG,IAAAA;AACMG,MAAAA;AACNH,MAAAA;AACT,IAAA;AACJ,EAAA;AACJ;AJ4IiB;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Volumes/Projects/wexts/packages/dist/chunk-2LJVUMXW.js","sourcesContent":[null,"export * from './dev-server';\nexport * from './process-runner';\nexport * from './proxy';\n","import { spawn, ChildProcess } from 'child_process';\nimport { logger } from '../core/logger';\nimport * as pc from 'picocolors';\n\nexport interface ProcessConfig {\n name: string;\n command: string;\n args: string[];\n cwd: string;\n color: 'cyan' | 'green' | 'yellow' | 'magenta' | 'blue';\n env?: Record<string, string>;\n}\n\n/**\n * Run multiple processes concurrently with colored output\n */\nexport class ProcessRunner {\n private processes: Map<string, ChildProcess> = new Map();\n private colors = {\n cyan: pc.cyan,\n green: pc.green,\n yellow: pc.yellow,\n magenta: pc.magenta,\n blue: pc.blue,\n };\n\n async run(configs: ProcessConfig[]): Promise<void> {\n logger.info('š Starting development servers...\\n');\n\n for (const config of configs) {\n this.startProcess(config);\n }\n\n // Handle graceful shutdown\n process.on('SIGINT', () => this.stopAll());\n process.on('SIGTERM', () => this.stopAll());\n }\n\n private startProcess(config: ProcessConfig): void {\n const { name, command, args, cwd, color, env } = config;\n\n const colorFn = this.colors[color];\n const prefix = colorFn(`[${name}]`);\n\n logger.info(`${prefix} Starting...`);\n\n const proc = spawn(command, args, {\n cwd,\n stdio: 'pipe',\n shell: true,\n env: { ...process.env, ...env },\n });\n\n this.processes.set(name, proc);\n\n // Handle stdout\n proc.stdout?.on('data', (data) => {\n const lines = data.toString().split('\\n').filter((l: string) => l.trim());\n lines.forEach((line: string) => {\n console.log(`${prefix} ${line}`);\n });\n });\n\n // Handle stderr\n proc.stderr?.on('data', (data) => {\n const lines = data.toString().split('\\n').filter((l: string) => l.trim());\n lines.forEach((line: string) => {\n console.error(`${prefix} ${pc.red(line)}`);\n });\n });\n\n // Handle exit\n proc.on('exit', (code) => {\n if (code !== 0 && code !== null) {\n logger.error(`${prefix} Exited with code ${code}`);\n }\n this.processes.delete(name);\n });\n\n // Handle errors\n proc.on('error', (error) => {\n logger.error(`${prefix} Error:`, error.message);\n });\n }\n\n stopAll(): void {\n logger.info('\\nš Stopping all processes...');\n\n for (const [name, proc] of this.processes.entries()) {\n logger.info(`Stopping ${name}...`);\n proc.kill('SIGTERM');\n }\n\n setTimeout(() => {\n process.exit(0);\n }, 1000);\n }\n\n isRunning(name: string): boolean {\n return this.processes.has(name);\n }\n}\n","import { ProcessRunner, ProcessConfig } from './process-runner';\nimport { logger } from '../core/logger';\nimport * as path from 'path';\nimport * as fs from 'fs';\n\nexport interface DevServerConfig {\n apiPath: string;\n webPath: string;\n webPort?: number;\n apiPort?: number;\n useProxy?: boolean;\n}\n\n/**\n * Unified development server for Fusion projects\n */\nexport class FusionDevServer {\n private processRunner: ProcessRunner;\n\n constructor() {\n this.processRunner = new ProcessRunner();\n }\n\n async start(config: DevServerConfig): Promise<void> {\n const {\n apiPath,\n webPath,\n webPort = 3000,\n apiPort = 5050,\n useProxy = false,\n } = config;\n\n if (useProxy) {\n throw new Error('The legacy dev proxy is disabled because it conflicts with the Next.js port. Use the production runtime for single-port serving.');\n }\n\n // Validate paths\n if (!fs.existsSync(apiPath)) {\n throw new Error(`API path not found: ${apiPath}`);\n }\n if (!fs.existsSync(webPath)) {\n throw new Error(`Web path not found: ${webPath}`);\n }\n\n const processes: ProcessConfig[] = [];\n\n // Add API server\n processes.push({\n name: 'API',\n command: 'npm',\n args: ['run', 'start:dev'],\n cwd: path.resolve(apiPath),\n color: 'cyan',\n env: {\n PORT: apiPort.toString(),\n },\n });\n\n // Add Web server\n processes.push({\n name: 'Web',\n command: 'npm',\n args: ['run', 'dev', '--', '-p', webPort.toString()],\n cwd: path.resolve(webPath),\n color: 'green',\n env: {\n NEXT_PUBLIC_API_URL: `http://localhost:${apiPort}`,\n },\n });\n\n // Start processes\n await this.processRunner.run(processes);\n\n // Log info\n logger.info('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');\n logger.info('ā Fusion Development Server Ready ā');\n logger.info('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\\n');\n logger.info(`š Web: http://localhost:${webPort}`);\n logger.info(`š API: http://localhost:${apiPort}`);\n logger.info('\\n');\n }\n\n stop(): void {\n this.processRunner.stopAll();\n }\n}\n","import http from 'http';\nimport httpProxy from 'http-proxy';\nimport { logger } from '../core/logger';\nimport * as pc from 'picocolors';\n\nexport interface ProxyConfig {\n port: number;\n apiTarget: string;\n apiPrefix: string;\n}\n\n/**\n * Proxy server to forward API requests from Next.js to NestJS\n */\nexport class ProxyServer {\n private server: http.Server | null = null;\n private proxy: httpProxy | null = null;\n\n async start(config: ProxyConfig): Promise<void> {\n const { port, apiTarget, apiPrefix } = config;\n\n this.proxy = httpProxy.createProxyServer({\n target: apiTarget,\n changeOrigin: true,\n ws: true, // WebSocket support\n });\n\n // Handle proxy errors\n this.proxy.on('error', (err, req, res) => {\n logger.error('Proxy error:', err.message);\n if (res && 'headersSent' in res && !(res as any).headersSent) {\n (res as http.ServerResponse).writeHead(502, { 'Content-Type': 'text/plain' });\n (res as http.ServerResponse).end('Bad Gateway - API server unavailable');\n }\n });\n\n this.server = http.createServer((req, res) => {\n // Check if request is for API\n if (req.url?.startsWith(apiPrefix)) {\n // Remove prefix before forwarding\n const newUrl = req.url.substring(apiPrefix.length) || '/';\n req.url = newUrl;\n\n logger.info(pc.gray(`ā ${req.method} ${apiPrefix}${newUrl}`));\n this.proxy!.web(req, res);\n } else {\n // Not an API request - should not happen\n res.writeHead(404);\n res.end('Not Found');\n }\n });\n\n // Handle WebSocket upgrade\n this.server.on('upgrade', (req, socket, head) => {\n if (req.url?.startsWith(apiPrefix)) {\n const newUrl = req.url.substring(apiPrefix.length) || '/';\n req.url = newUrl;\n this.proxy!.ws(req, socket, head);\n }\n });\n\n return new Promise((resolve) => {\n this.server!.listen(port, () => {\n logger.success(`ā
Proxy server running on port ${port}`);\n logger.info(` Forwarding ${pc.cyan(apiPrefix + '/*')} ā ${pc.cyan(apiTarget)}\\n`);\n resolve();\n });\n });\n }\n\n stop(): void {\n if (this.server) {\n this.server.close();\n this.server = null;\n }\n if (this.proxy) {\n this.proxy.close();\n this.proxy = null;\n }\n }\n}\n"]}
|