@exisjs/cli 0.0.0-stage → 0.10.0-alpha.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/README.md +35 -2
- package/bin/exisjs.js +2 -0
- package/dist/commands/build.d.ts +17 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +378 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/clean.d.ts +5 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +30 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/dev.d.ts +28 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +884 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +228 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/exports.d.ts +2 -0
- package/dist/commands/exports.d.ts.map +1 -0
- package/dist/commands/exports.js +48 -0
- package/dist/commands/exports.js.map +1 -0
- package/dist/commands/generate.d.ts +33 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +469 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +37 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.d.ts +19 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +116 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/repl.d.ts +6 -0
- package/dist/commands/repl.d.ts.map +1 -0
- package/dist/commands/repl.js +75 -0
- package/dist/commands/repl.js.map +1 -0
- package/dist/commands/run.d.ts +7 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +101 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/start.d.ts +2 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +8 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/test.d.ts +8 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +166 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +276 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/inspect-routes.d.ts +2 -0
- package/dist/lib/inspect-routes.d.ts.map +1 -0
- package/dist/lib/inspect-routes.js +150 -0
- package/dist/lib/inspect-routes.js.map +1 -0
- package/dist/lib/start-repl.d.ts +2 -0
- package/dist/lib/start-repl.d.ts.map +1 -0
- package/dist/lib/start-repl.js +120 -0
- package/dist/lib/start-repl.js.map +1 -0
- package/dist/manifest.d.ts +4 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +489 -0
- package/dist/manifest.js.map +1 -0
- package/dist/routes.d.ts +17 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +316 -0
- package/dist/routes.js.map +1 -0
- package/dist/utils.d.ts +24 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +54 -0
- package/dist/utils.js.map +1 -0
- package/package.json +58 -4
package/README.md
CHANGED
|
@@ -1,3 +1,36 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @exisjs/cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The `exisjs` command for [ExisJS](https://github.com/v25group/exisjs) apps: the development server with hot reload, `build`, `test`, `run`, `start` and code generators.
|
|
4
|
+
|
|
5
|
+
It is a development tool. Install it next to the runtime:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install exisjs
|
|
9
|
+
npm install -D @exisjs/cli typescript
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```json filename="package.json"
|
|
13
|
+
{
|
|
14
|
+
"scripts": {
|
|
15
|
+
"dev": "exisjs dev",
|
|
16
|
+
"build": "exisjs build",
|
|
17
|
+
"test": "exisjs test",
|
|
18
|
+
"start": "exisjs start"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`exisjs start` comes with the `exisjs` runtime itself, so production needs only `exisjs` (`npm ci --omit=dev --omit=optional`): no TypeScript, esbuild or CLI in the image. Every other command needs `@exisjs/cli`.
|
|
24
|
+
|
|
25
|
+
`@exisjs/cli` is released together with `exisjs` and always has the same version.
|
|
26
|
+
|
|
27
|
+
## Upgrading from ExisJS 0.9
|
|
28
|
+
|
|
29
|
+
Before 0.10 the command was part of the `exisjs` package. Run this once in the project:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx exisjs migrate
|
|
33
|
+
npm install
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Documentation: [CLI commands](https://github.com/v25group/exisjs/blob/main/docs/content/cli/commands.mdx) · [Deploying with Docker](https://github.com/v25group/exisjs/blob/main/docs/content/deployment.mdx)
|
package/bin/exisjs.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface BuildOptions {
|
|
2
|
+
outDir?: string;
|
|
3
|
+
clean?: boolean;
|
|
4
|
+
skipEnvCheck?: boolean;
|
|
5
|
+
dryRun?: boolean;
|
|
6
|
+
mode?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function buildCommand(options?: BuildOptions): Promise<void>;
|
|
9
|
+
/** `@types/*` packages listed in devDependencies that are not installed. */
|
|
10
|
+
export declare function findMissingTypePackages(cwd: string): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Writes `<outDir>/main.js`, the production entry: `node .exis/server/main.js`
|
|
13
|
+
* runs the server in that one process, so it receives SIGTERM directly and
|
|
14
|
+
* production needs neither the CLI nor npm.
|
|
15
|
+
*/
|
|
16
|
+
export declare function writeMainEntry(cwd: string, outDir: string, esm: boolean): string | null;
|
|
17
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoV5E;AAID,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB7D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,OAAO,GACX,MAAM,GAAG,IAAI,CAkCf"}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.buildCommand = buildCommand;
|
|
40
|
+
exports.findMissingTypePackages = findMissingTypePackages;
|
|
41
|
+
exports.writeMainEntry = writeMainEntry;
|
|
42
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
43
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
44
|
+
const node_url_1 = require("node:url");
|
|
45
|
+
const utils_1 = require("../utils");
|
|
46
|
+
const manifest_js_1 = require("../manifest.js");
|
|
47
|
+
const internal_1 = require("exisjs/internal");
|
|
48
|
+
async function buildCommand(options = {}) {
|
|
49
|
+
process.env.__EXIS_BUILD = 'true';
|
|
50
|
+
if (options.skipEnvCheck ||
|
|
51
|
+
options.dryRun ||
|
|
52
|
+
process.env.EXIS_SKIP_ENV_CHECK === 'true') {
|
|
53
|
+
process.env.EXIS_SKIP_ENV_CHECK = 'true';
|
|
54
|
+
process.env.__EXIS_SKIP_ENV_CHECK = 'true';
|
|
55
|
+
}
|
|
56
|
+
process.on('SIGINT', () => {
|
|
57
|
+
const time = (0, internal_1.getFormattedTime)();
|
|
58
|
+
const primary = '\x1b[38;2;160;70;255m';
|
|
59
|
+
console.log(`\n${utils_1.c.dim}${time}${utils_1.c.reset} ${primary}[exis]${utils_1.c.reset} ${utils_1.c.dim}build cancelled.${utils_1.c.reset}`);
|
|
60
|
+
process.exit(0);
|
|
61
|
+
});
|
|
62
|
+
const cwd = process.cwd();
|
|
63
|
+
// Load .env files so process.env is populated during build-time route validation
|
|
64
|
+
const mode = options.mode || process.env.NODE_ENV || 'production';
|
|
65
|
+
(0, internal_1.loadEnv)(cwd, mode, true);
|
|
66
|
+
const outDir = options.outDir ?? '.exis/server';
|
|
67
|
+
const tsconfigPath = node_path_1.default.join(cwd, 'tsconfig.json');
|
|
68
|
+
let version = '0.0.0';
|
|
69
|
+
try {
|
|
70
|
+
const pkgPath = node_path_1.default.join(__dirname, '..', '..', 'package.json');
|
|
71
|
+
version = JSON.parse(node_fs_1.default.readFileSync(pkgPath, 'utf-8')).version;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
/* ignore */
|
|
75
|
+
}
|
|
76
|
+
// Validate tsconfig
|
|
77
|
+
if (!node_fs_1.default.existsSync(tsconfigPath)) {
|
|
78
|
+
console.log(`\n${utils_1.c.primary}EXIS v${version}${utils_1.c.reset} ${utils_1.c.green}building server environment for production...${utils_1.c.reset}`);
|
|
79
|
+
console.log(`${utils_1.c.yellow}No tsconfig.json found. Skipping build for native JS project.${utils_1.c.reset}`);
|
|
80
|
+
console.log(`\n Run ${utils_1.c.primary}exis start${utils_1.c.reset} to serve the app.\n`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
console.log(`\n${utils_1.c.primary}EXIS v${version}${utils_1.c.reset} ${utils_1.c.green}building server environment for production...${utils_1.c.reset}`);
|
|
84
|
+
// Clean .exis/server
|
|
85
|
+
if (options.clean !== false) {
|
|
86
|
+
const serverPath = node_path_1.default.join(cwd, outDir);
|
|
87
|
+
if (node_fs_1.default.existsSync(serverPath)) {
|
|
88
|
+
process.stdout.write(`${utils_1.c.dim}cleaning...${utils_1.c.reset}`);
|
|
89
|
+
node_fs_1.default.rmSync(serverPath, { recursive: true, force: true });
|
|
90
|
+
process.stdout.write(`\r${utils_1.c.green}✓${utils_1.c.reset} ${utils_1.c.dim}cleaned output directory.${utils_1.c.reset}\n`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
process.stdout.write(`${utils_1.c.dim}compiling...${utils_1.c.reset}`);
|
|
94
|
+
const start = Date.now();
|
|
95
|
+
// Ensure we generate the exis.d.ts file with optional fallback node types BEFORE tsc runs
|
|
96
|
+
await (0, manifest_js_1.generateExisEnv)(cwd);
|
|
97
|
+
let ts;
|
|
98
|
+
try {
|
|
99
|
+
const req = typeof require !== 'undefined' ? require : eval('require');
|
|
100
|
+
const tsPath = req.resolve('typescript', { paths: [cwd, __dirname] });
|
|
101
|
+
ts = req(tsPath);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
(0, utils_1.error)('TypeScript compiler not found in project.');
|
|
105
|
+
(0, utils_1.error)('Install it: npm install -D typescript');
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
// Normalize path for TS on Windows
|
|
109
|
+
const tsconfigPathForTs = tsconfigPath.replace(/\\/g, '/');
|
|
110
|
+
const configFile = ts.readConfigFile(tsconfigPathForTs, ts.sys.readFile);
|
|
111
|
+
if (configFile.error) {
|
|
112
|
+
(0, utils_1.error)('Error reading tsconfig.json');
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, node_path_1.default.dirname(tsconfigPathForTs));
|
|
116
|
+
const isServerSourceFile = (filePath) => {
|
|
117
|
+
const rel = node_path_1.default.relative(cwd, filePath).replace(/\\/g, '/');
|
|
118
|
+
if (rel.startsWith('..') || node_path_1.default.isAbsolute(rel))
|
|
119
|
+
return false;
|
|
120
|
+
// Ignore test files, scripts, docs
|
|
121
|
+
if (rel.startsWith('tests/') ||
|
|
122
|
+
rel.startsWith('test/') ||
|
|
123
|
+
rel.startsWith('__tests__/') ||
|
|
124
|
+
rel.startsWith('scripts/') ||
|
|
125
|
+
rel.startsWith('docs/') ||
|
|
126
|
+
/\.(test|spec)\.[jt]sx?$/.test(rel)) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
// Exclude root tool config files (e.g. drizzle.config.ts, vite.config.ts, tailwind.config.ts)
|
|
130
|
+
// Only exis.config.* belongs to the ExisJS server configuration
|
|
131
|
+
if (!rel.includes('/')) {
|
|
132
|
+
const base = node_path_1.default.basename(rel);
|
|
133
|
+
return (base === 'exis.config.ts' ||
|
|
134
|
+
base === 'exis.config.js' ||
|
|
135
|
+
base === 'exis.config.mjs');
|
|
136
|
+
}
|
|
137
|
+
// Server code is strictly in src/ or http/
|
|
138
|
+
return rel.startsWith('src/') || rel.startsWith('http/');
|
|
139
|
+
};
|
|
140
|
+
const allNonDeclFiles = parsedConfig.fileNames.filter((f) => !f.endsWith('.d.ts'));
|
|
141
|
+
const serverEntryPoints = allNonDeclFiles.filter(isServerSourceFile);
|
|
142
|
+
const entryPoints = serverEntryPoints.length > 0 ? serverEntryPoints : allNonDeclFiles;
|
|
143
|
+
let format = 'cjs';
|
|
144
|
+
try {
|
|
145
|
+
const pkg = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(cwd, 'package.json'), 'utf8'));
|
|
146
|
+
if (pkg.type === 'module')
|
|
147
|
+
format = 'esm';
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// default to cjs if package.json is missing or unparseable
|
|
151
|
+
}
|
|
152
|
+
// ─── TypeScript Type-Check ─────────────────────────────────────────────────
|
|
153
|
+
// Run the TS compiler in check-only mode (no emit) to catch type errors,
|
|
154
|
+
// broken imports, and syntax errors BEFORE esbuild runs.
|
|
155
|
+
// Hosts that install with NODE_ENV=production (Render, Heroku...) leave out
|
|
156
|
+
// devDependencies, so the @types packages are absent and every Node global
|
|
157
|
+
// would be reported as a type error. esbuild does not need types to compile.
|
|
158
|
+
const missingTypes = process.env.NODE_ENV === 'test' ? [] : findMissingTypePackages(cwd);
|
|
159
|
+
if (missingTypes.length > 0) {
|
|
160
|
+
process.stdout.write(`\r${utils_1.c.yellow}↷${utils_1.c.reset} ${utils_1.c.dim}type-check skipped: devDependencies are not installed (${missingTypes.join(', ')}).${utils_1.c.reset}\n` +
|
|
161
|
+
`${utils_1.c.dim} To type-check on this host, install with: npm install --include=dev${utils_1.c.reset}\n`);
|
|
162
|
+
}
|
|
163
|
+
else if (process.env.NODE_ENV !== 'test') {
|
|
164
|
+
process.stdout.write(`${utils_1.c.dim}type-checking...${utils_1.c.reset}`);
|
|
165
|
+
const filesToCheck = serverEntryPoints.length > 0 ? serverEntryPoints : parsedConfig.fileNames;
|
|
166
|
+
const program = ts.createProgram(filesToCheck, {
|
|
167
|
+
...parsedConfig.options,
|
|
168
|
+
skipLibCheck: true,
|
|
169
|
+
noEmit: true,
|
|
170
|
+
});
|
|
171
|
+
const allDiagnostics = [
|
|
172
|
+
...parsedConfig.errors,
|
|
173
|
+
...ts.getPreEmitDiagnostics(program),
|
|
174
|
+
];
|
|
175
|
+
// Only fail the build for errors that actually affect the server environment
|
|
176
|
+
const diagnostics = allDiagnostics.filter((diag) => {
|
|
177
|
+
if (!diag.file)
|
|
178
|
+
return true; // Global configuration error
|
|
179
|
+
return isServerSourceFile(diag.file.fileName);
|
|
180
|
+
});
|
|
181
|
+
if (diagnostics.length > 0) {
|
|
182
|
+
process.stdout.write('\n');
|
|
183
|
+
const formatted = ts.formatDiagnosticsWithColorAndContext(diagnostics, {
|
|
184
|
+
getCanonicalFileName: (f) => f,
|
|
185
|
+
getCurrentDirectory: ts.sys.getCurrentDirectory,
|
|
186
|
+
getNewLine: () => '\n',
|
|
187
|
+
});
|
|
188
|
+
process.stderr.write(formatted + '\n');
|
|
189
|
+
(0, utils_1.error)(`TYPE_CHECK_FAILED: ${diagnostics.length} error(s) found.`);
|
|
190
|
+
console.error(`\n${utils_1.c.yellow} Fix the errors above, then run ${utils_1.c.reset}${utils_1.c.primary}exis build${utils_1.c.reset}${utils_1.c.yellow} again.${utils_1.c.reset}\n`);
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (process.env.NODE_ENV === 'test') {
|
|
195
|
+
process.stdout.write(`\r${utils_1.c.yellow}↷${utils_1.c.reset} ${utils_1.c.dim}type-check skipped in test environment.${utils_1.c.reset}\n`);
|
|
196
|
+
}
|
|
197
|
+
else if (missingTypes.length === 0) {
|
|
198
|
+
process.stdout.write(`\r${utils_1.c.green}✓${utils_1.c.reset} ${utils_1.c.dim}type-check passed.${utils_1.c.reset}\n`);
|
|
199
|
+
}
|
|
200
|
+
// ─── esbuild Compilation ───────────────────────────────────────────────────
|
|
201
|
+
process.stdout.write(`${utils_1.c.dim}compiling...${utils_1.c.reset}`);
|
|
202
|
+
try {
|
|
203
|
+
const esbuild = await Promise.resolve().then(() => __importStar(require('esbuild')));
|
|
204
|
+
await esbuild.build({
|
|
205
|
+
entryPoints,
|
|
206
|
+
outdir: node_path_1.default.join(cwd, outDir),
|
|
207
|
+
// Keep the project layout (src/http/... -> outDir/src/http/...) even
|
|
208
|
+
// when every entry point sits in one sub-folder
|
|
209
|
+
outbase: cwd,
|
|
210
|
+
platform: 'node',
|
|
211
|
+
format: format,
|
|
212
|
+
bundle: false,
|
|
213
|
+
logLevel: 'error',
|
|
214
|
+
});
|
|
215
|
+
process.stdout.write(`\r${utils_1.c.green}✓${utils_1.c.reset} ${utils_1.c.dim}compiled via esbuild in ${Date.now() - start}ms.${utils_1.c.reset}\n`);
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
console.error('');
|
|
219
|
+
(0, utils_1.error)(`COMPILE_FAILED: ${err?.message ?? 'esbuild encountered an error'}`);
|
|
220
|
+
process.exit(1);
|
|
221
|
+
}
|
|
222
|
+
// resolve path aliases natively (no external deps)
|
|
223
|
+
await fixPathAliases(cwd, outDir);
|
|
224
|
+
// Generate the .exis/manifest.js route map
|
|
225
|
+
try {
|
|
226
|
+
await (0, manifest_js_1.generateManifest)(cwd, outDir);
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
console.error('');
|
|
230
|
+
(0, utils_1.error)(`ROUTE_SCAN_FAILED: ${err.message}`);
|
|
231
|
+
console.error(`\n${utils_1.c.yellow} Fix the routing errors above, then run ${utils_1.c.reset}${utils_1.c.primary}exis build${utils_1.c.reset}${utils_1.c.yellow} again.${utils_1.c.reset}\n`);
|
|
232
|
+
process.exit(1);
|
|
233
|
+
}
|
|
234
|
+
// Generate .exis/server/package.json to mirror host module type (ESM vs CJS)
|
|
235
|
+
try {
|
|
236
|
+
const serverPkgPath = node_path_1.default.join(cwd, outDir, 'package.json');
|
|
237
|
+
const serverPkgContent = JSON.stringify({
|
|
238
|
+
type: format === 'esm' ? 'module' : 'commonjs',
|
|
239
|
+
private: true,
|
|
240
|
+
}, null, 2);
|
|
241
|
+
node_fs_1.default.writeFileSync(serverPkgPath, serverPkgContent, 'utf8');
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
// ignore
|
|
245
|
+
}
|
|
246
|
+
writeMainEntry(cwd, outDir, format === 'esm');
|
|
247
|
+
// ─── Build-time Validation ──────────────────────────────────────────────────
|
|
248
|
+
// Eagerly import the generated manifest to catch route-level configuration
|
|
249
|
+
// errors (e.g. missing cache keyGenerator, invalid middleware options) NOW,
|
|
250
|
+
// at build time, rather than letting them crash the production server on first
|
|
251
|
+
// request or startup.
|
|
252
|
+
if (options.skipEnvCheck ||
|
|
253
|
+
options.dryRun ||
|
|
254
|
+
process.env.EXIS_SKIP_ENV_CHECK === 'true') {
|
|
255
|
+
process.stdout.write(`${utils_1.c.yellow}↷${utils_1.c.reset} ${utils_1.c.dim}route validation skipped (--skip-env-check).${utils_1.c.reset}\n`);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
process.stdout.write(`${utils_1.c.dim}validating routes...${utils_1.c.reset}`);
|
|
259
|
+
try {
|
|
260
|
+
const manifestPath = node_path_1.default.join(cwd, '.exis', 'routes-manifest.js');
|
|
261
|
+
if (node_fs_1.default.existsSync(manifestPath)) {
|
|
262
|
+
try {
|
|
263
|
+
const { registerPathAliasLoader } = await Promise.resolve().then(() => __importStar(require('exisjs/internal')));
|
|
264
|
+
registerPathAliasLoader(cwd);
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// ignore
|
|
268
|
+
}
|
|
269
|
+
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
270
|
+
const built = await dynamicImport((0, node_url_1.pathToFileURL)(manifestPath).href);
|
|
271
|
+
// One controller style per project: fail the build, not the deploy
|
|
272
|
+
const { routeParadigm, mixedParadigmMessage } = await Promise.resolve().then(() => __importStar(require('exisjs/internal')));
|
|
273
|
+
const oopFiles = [];
|
|
274
|
+
const functionalFiles = [];
|
|
275
|
+
for (const entry of built.manifest ?? []) {
|
|
276
|
+
const paradigm = routeParadigm(entry.module);
|
|
277
|
+
if (paradigm === 'oop')
|
|
278
|
+
oopFiles.push(entry.filePath);
|
|
279
|
+
else if (paradigm === 'functional')
|
|
280
|
+
functionalFiles.push(entry.filePath);
|
|
281
|
+
}
|
|
282
|
+
if (oopFiles.length > 0 && functionalFiles.length > 0) {
|
|
283
|
+
console.error('');
|
|
284
|
+
(0, utils_1.error)(mixedParadigmMessage(oopFiles, functionalFiles));
|
|
285
|
+
process.exit(1);
|
|
286
|
+
}
|
|
287
|
+
process.stdout.write(`\r${utils_1.c.green}✓${utils_1.c.reset} ${utils_1.c.dim}all routes validated.${utils_1.c.reset}\n`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
const isEnvError = err.message?.includes('Validation Error') ||
|
|
292
|
+
err.message?.includes('Expected value, received undefined') ||
|
|
293
|
+
err.message?.includes('env') ||
|
|
294
|
+
err.code === 'VALIDATION_ERROR';
|
|
295
|
+
console.error('');
|
|
296
|
+
(0, utils_1.error)(`BUILD_VALIDATION_FAILED: ${err.message}`);
|
|
297
|
+
if (isEnvError) {
|
|
298
|
+
console.error(`\n${utils_1.c.yellow} Tip: If this environment variable is injected at runtime, run:${utils_1.c.reset}` +
|
|
299
|
+
`\n${utils_1.c.primary} exis build --skip-env-check${utils_1.c.reset}\n`);
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
console.error(`\n${utils_1.c.yellow} Fix the error above, then run ${utils_1.c.reset}${utils_1.c.primary}exis build${utils_1.c.reset}${utils_1.c.yellow} again.${utils_1.c.reset}\n`);
|
|
303
|
+
}
|
|
304
|
+
process.exit(1);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
const ms = Date.now() - start;
|
|
308
|
+
console.log(`\n${utils_1.c.green}✓ built in ${ms}ms${utils_1.c.reset}\n`);
|
|
309
|
+
process.exit(0);
|
|
310
|
+
}
|
|
311
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
312
|
+
/** `@types/*` packages listed in devDependencies that are not installed. */
|
|
313
|
+
function findMissingTypePackages(cwd) {
|
|
314
|
+
let devDeps;
|
|
315
|
+
try {
|
|
316
|
+
devDeps =
|
|
317
|
+
JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(cwd, 'package.json'), 'utf8'))
|
|
318
|
+
.devDependencies ?? {};
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
return [];
|
|
322
|
+
}
|
|
323
|
+
const req = typeof require !== 'undefined' ? require : eval('require');
|
|
324
|
+
return Object.keys(devDeps).filter((name) => {
|
|
325
|
+
if (!name.startsWith('@types/'))
|
|
326
|
+
return false;
|
|
327
|
+
try {
|
|
328
|
+
req.resolve(`${name}/package.json`, { paths: [cwd] });
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
return true;
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Writes `<outDir>/main.js`, the production entry: `node .exis/server/main.js`
|
|
338
|
+
* runs the server in that one process, so it receives SIGTERM directly and
|
|
339
|
+
* production needs neither the CLI nor npm.
|
|
340
|
+
*/
|
|
341
|
+
function writeMainEntry(cwd, outDir, esm) {
|
|
342
|
+
const serverDir = node_path_1.default.join(cwd, outDir);
|
|
343
|
+
const entry = ['src/http/server.js', 'http/server.js'].find((p) => node_fs_1.default.existsSync(node_path_1.default.join(serverDir, p)));
|
|
344
|
+
if (!entry) {
|
|
345
|
+
console.warn(`${utils_1.c.yellow}⚠${utils_1.c.reset} ${utils_1.c.dim}No src/http/server.ts found: ${outDir}/main.js was not written.${utils_1.c.reset}`);
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
const root = node_path_1.default.relative(serverDir, cwd).split(node_path_1.default.sep).join('/') || '.';
|
|
349
|
+
const header = '// Generated by `exisjs build`. Starts the server in this process:\n' +
|
|
350
|
+
`// node ${outDir.split(node_path_1.default.sep).join('/')}/main.js\n`;
|
|
351
|
+
const body = (dir) => `process.chdir(path.resolve(${dir}, ${JSON.stringify(root)}))\n` +
|
|
352
|
+
// An empty NODE_ENV, which some platforms set, counts as unset
|
|
353
|
+
`if (!process.env.NODE_ENV) process.env.NODE_ENV = 'production'\n` +
|
|
354
|
+
`process.env.EXIS_ENTRY_FILE = path.join(${dir}, ${JSON.stringify(entry)})\n`;
|
|
355
|
+
const source = esm
|
|
356
|
+
? header +
|
|
357
|
+
`import path from 'node:path'\n` +
|
|
358
|
+
`import { fileURLToPath } from 'node:url'\n\n` +
|
|
359
|
+
`const here = path.dirname(fileURLToPath(import.meta.url))\n` +
|
|
360
|
+
body('here') +
|
|
361
|
+
`await import('exisjs/start')\n`
|
|
362
|
+
: header +
|
|
363
|
+
`const path = require('node:path')\n\n` +
|
|
364
|
+
body('__dirname') +
|
|
365
|
+
`require('exisjs/start')\n`;
|
|
366
|
+
const file = node_path_1.default.join(serverDir, 'main.js');
|
|
367
|
+
node_fs_1.default.writeFileSync(file, source, 'utf8');
|
|
368
|
+
return file;
|
|
369
|
+
}
|
|
370
|
+
async function fixPathAliases(cwd, outDir) {
|
|
371
|
+
try {
|
|
372
|
+
await (0, internal_1.resolvePathAliases)(cwd, outDir);
|
|
373
|
+
}
|
|
374
|
+
catch (err) {
|
|
375
|
+
process.stdout.write(`\n${utils_1.c.yellow}⚠${utils_1.c.reset} ${utils_1.c.dim}alias resolution failed: ${err.message}${utils_1.c.reset}\n`);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.cleanCommand = cleanCommand;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
+
const utils_1 = require("../utils");
|
|
10
|
+
async function cleanCommand(options = {}) {
|
|
11
|
+
const cwd = process.cwd();
|
|
12
|
+
const exisDir = node_path_1.default.join(cwd, '.exis');
|
|
13
|
+
const distDir = node_path_1.default.join(cwd, 'dist');
|
|
14
|
+
let cleaned = 0;
|
|
15
|
+
if (node_fs_1.default.existsSync(exisDir)) {
|
|
16
|
+
node_fs_1.default.rmSync(exisDir, { recursive: true, force: true });
|
|
17
|
+
cleaned++;
|
|
18
|
+
}
|
|
19
|
+
if (options.all && node_fs_1.default.existsSync(distDir)) {
|
|
20
|
+
node_fs_1.default.rmSync(distDir, { recursive: true, force: true });
|
|
21
|
+
cleaned++;
|
|
22
|
+
}
|
|
23
|
+
if (cleaned > 0) {
|
|
24
|
+
(0, utils_1.success)('Cleaned .exis build artifacts and cached types.');
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.log(`${utils_1.c.dim}No build artifacts found to clean.${utils_1.c.reset}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=clean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":";;;;;AAQA,oCAsBC;AA9BD,0DAA4B;AAC5B,sDAAwB;AACxB,oCAAqC;AAM9B,KAAK,UAAU,YAAY,CAAC,UAAwB,EAAE;IAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAEtC,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,IAAI,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,iBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,IAAI,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,iBAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,IAAA,eAAO,EAAC,iDAAiD,CAAC,CAAA;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,SAAC,CAAC,GAAG,qCAAqC,SAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare function isClosedChannelError(err: NodeJS.ErrnoException | null | undefined): boolean;
|
|
2
|
+
export declare const DEFAULT_WATCH_IGNORED: (string | RegExp)[];
|
|
3
|
+
export declare const RELOADABLE_EXTENSIONS: Set<string>;
|
|
4
|
+
export declare const RELOADABLE_CONFIG_FILES: Set<string>;
|
|
5
|
+
/**
|
|
6
|
+
* chokidar's `ignored` test. Patterns apply to the path inside the project:
|
|
7
|
+
* a project under a folder such as `D:\data` or `/srv/build` must still
|
|
8
|
+
* reload, which matching the absolute path prevented.
|
|
9
|
+
*/
|
|
10
|
+
export declare function watchIgnore(cwd: string, userIgnored?: (string | RegExp)[]): (file: string) => boolean;
|
|
11
|
+
export declare function shouldReloadOnFile(file: string, userIgnored?: (string | RegExp)[], customExtensions?: string[]): boolean;
|
|
12
|
+
interface DevOptions {
|
|
13
|
+
port?: string;
|
|
14
|
+
host?: string;
|
|
15
|
+
entry?: string;
|
|
16
|
+
/** Start even if another dev server appears to use the same port */
|
|
17
|
+
force?: boolean;
|
|
18
|
+
_disableWatch?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Another `exisjs dev` holds this lock when its PID is alive AND it still
|
|
22
|
+
* serves the port it recorded. A PID alone is not enough: after a crash the
|
|
23
|
+
* OS may hand the same number to an unrelated process.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isDevLockHeld(lockFile: string): Promise<boolean>;
|
|
26
|
+
export declare function devCommand(options?: DevOptions): Promise<void>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AA2BA,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,GAAG,SAAS,GAC5C,OAAO,CAET;AASD,eAAO,MAAM,qBAAqB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EA4BpD,CAAA;AAED,eAAO,MAAM,qBAAqB,aAOhC,CAAA;AAEF,eAAO,MAAM,uBAAuB,aAOlC,CAAA;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAO,GACpC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAqB3B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAO,EACrC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAC1B,OAAO,CAkDT;AAED,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAmBD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CActE;AAED,wBAAsB,UAAU,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAusBxE"}
|