exisjs 0.9.2 → 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.
Files changed (135) hide show
  1. package/README.md +3 -0
  2. package/bin/exis.js +76 -1
  3. package/dist/config/types.d.ts +11 -2
  4. package/dist/config/types.d.ts.map +1 -1
  5. package/dist/docs/content/README.md +1 -0
  6. package/dist/docs/content/cli/commands.mdx +23 -1
  7. package/dist/docs/content/cli/usage.mdx +2 -1
  8. package/dist/docs/content/config.mdx +47 -3
  9. package/dist/docs/content/deployment.mdx +163 -0
  10. package/dist/docs/content/installation.mdx +1 -1
  11. package/dist/docs/content/introduction.mdx +3 -0
  12. package/dist/docs/content/validation.mdx +1 -1
  13. package/dist/docs/reference/config.mdx +2 -1
  14. package/dist/docs/reference/validator.mdx +4 -0
  15. package/dist/internal.d.ts +16 -0
  16. package/dist/internal.d.ts.map +1 -0
  17. package/dist/internal.js +45 -0
  18. package/dist/internal.js.map +1 -0
  19. package/dist/{cli → lib}/resolve-aliases.d.ts.map +1 -1
  20. package/dist/{cli → lib}/resolve-aliases.js.map +1 -1
  21. package/dist/lib/start-command.d.ts +11 -0
  22. package/dist/lib/start-command.d.ts.map +1 -0
  23. package/dist/lib/start-command.js +79 -0
  24. package/dist/lib/start-command.js.map +1 -0
  25. package/dist/lib/start-server.js +4 -2
  26. package/dist/lib/start-server.js.map +1 -1
  27. package/dist/middleware/backpressure.d.ts +5 -0
  28. package/dist/middleware/backpressure.d.ts.map +1 -1
  29. package/dist/middleware/backpressure.js +66 -36
  30. package/dist/middleware/backpressure.js.map +1 -1
  31. package/dist/router/route-scanner.d.ts.map +1 -1
  32. package/dist/router/route-scanner.js +19 -20
  33. package/dist/router/route-scanner.js.map +1 -1
  34. package/dist/server/app.d.ts.map +1 -1
  35. package/dist/server/app.js +24 -1
  36. package/dist/server/app.js.map +1 -1
  37. package/dist/server/bootstrapper.d.ts.map +1 -1
  38. package/dist/server/bootstrapper.js +3 -1
  39. package/dist/server/bootstrapper.js.map +1 -1
  40. package/dist/server/cluster.d.ts.map +1 -1
  41. package/dist/server/cluster.js +3 -0
  42. package/dist/server/cluster.js.map +1 -1
  43. package/dist/server/metrics.d.ts +43 -0
  44. package/dist/server/metrics.d.ts.map +1 -0
  45. package/dist/server/metrics.js +254 -0
  46. package/dist/server/metrics.js.map +1 -0
  47. package/dist/utils/logger.d.ts.map +1 -1
  48. package/dist/utils/logger.js +31 -3
  49. package/dist/utils/logger.js.map +1 -1
  50. package/dist/validator/builder.d.ts +20 -16
  51. package/dist/validator/builder.d.ts.map +1 -1
  52. package/dist/validator/builder.js +21 -1
  53. package/dist/validator/builder.js.map +1 -1
  54. package/dist/validator/engine.d.ts.map +1 -1
  55. package/dist/validator/engine.js +8 -1
  56. package/dist/validator/engine.js.map +1 -1
  57. package/dist/validator/index.d.ts +4 -1
  58. package/dist/validator/index.d.ts.map +1 -1
  59. package/dist/validator/index.js +5 -1
  60. package/dist/validator/index.js.map +1 -1
  61. package/dist/validator/tex.d.ts +1 -1
  62. package/dist/validator/tex.d.ts.map +1 -1
  63. package/dist/validator/types.d.ts +7 -0
  64. package/dist/validator/types.d.ts.map +1 -1
  65. package/package.json +81 -9
  66. package/dist/cli/commands/build.d.ts +0 -11
  67. package/dist/cli/commands/build.d.ts.map +0 -1
  68. package/dist/cli/commands/build.js +0 -344
  69. package/dist/cli/commands/build.js.map +0 -1
  70. package/dist/cli/commands/clean.d.ts +0 -5
  71. package/dist/cli/commands/clean.d.ts.map +0 -1
  72. package/dist/cli/commands/clean.js +0 -30
  73. package/dist/cli/commands/clean.js.map +0 -1
  74. package/dist/cli/commands/dev.d.ts +0 -21
  75. package/dist/cli/commands/dev.d.ts.map +0 -1
  76. package/dist/cli/commands/dev.js +0 -842
  77. package/dist/cli/commands/dev.js.map +0 -1
  78. package/dist/cli/commands/doctor.d.ts +0 -2
  79. package/dist/cli/commands/doctor.d.ts.map +0 -1
  80. package/dist/cli/commands/doctor.js +0 -228
  81. package/dist/cli/commands/doctor.js.map +0 -1
  82. package/dist/cli/commands/exports.d.ts +0 -2
  83. package/dist/cli/commands/exports.d.ts.map +0 -1
  84. package/dist/cli/commands/exports.js +0 -48
  85. package/dist/cli/commands/exports.js.map +0 -1
  86. package/dist/cli/commands/generate.d.ts +0 -33
  87. package/dist/cli/commands/generate.d.ts.map +0 -1
  88. package/dist/cli/commands/generate.js +0 -469
  89. package/dist/cli/commands/generate.js.map +0 -1
  90. package/dist/cli/commands/init.d.ts +0 -2
  91. package/dist/cli/commands/init.d.ts.map +0 -1
  92. package/dist/cli/commands/init.js +0 -37
  93. package/dist/cli/commands/init.js.map +0 -1
  94. package/dist/cli/commands/repl.d.ts +0 -6
  95. package/dist/cli/commands/repl.d.ts.map +0 -1
  96. package/dist/cli/commands/repl.js +0 -75
  97. package/dist/cli/commands/repl.js.map +0 -1
  98. package/dist/cli/commands/run.d.ts +0 -7
  99. package/dist/cli/commands/run.d.ts.map +0 -1
  100. package/dist/cli/commands/run.js +0 -101
  101. package/dist/cli/commands/run.js.map +0 -1
  102. package/dist/cli/commands/start.d.ts +0 -8
  103. package/dist/cli/commands/start.d.ts.map +0 -1
  104. package/dist/cli/commands/start.js +0 -155
  105. package/dist/cli/commands/start.js.map +0 -1
  106. package/dist/cli/commands/test.d.ts +0 -8
  107. package/dist/cli/commands/test.d.ts.map +0 -1
  108. package/dist/cli/commands/test.js +0 -165
  109. package/dist/cli/commands/test.js.map +0 -1
  110. package/dist/cli/index.d.ts +0 -3
  111. package/dist/cli/index.d.ts.map +0 -1
  112. package/dist/cli/index.js +0 -268
  113. package/dist/cli/index.js.map +0 -1
  114. package/dist/cli/manifest.d.ts +0 -4
  115. package/dist/cli/manifest.d.ts.map +0 -1
  116. package/dist/cli/manifest.js +0 -489
  117. package/dist/cli/manifest.js.map +0 -1
  118. package/dist/cli/routes.d.ts +0 -17
  119. package/dist/cli/routes.d.ts.map +0 -1
  120. package/dist/cli/routes.js +0 -317
  121. package/dist/cli/routes.js.map +0 -1
  122. package/dist/cli/utils.d.ts +0 -24
  123. package/dist/cli/utils.d.ts.map +0 -1
  124. package/dist/cli/utils.js +0 -54
  125. package/dist/cli/utils.js.map +0 -1
  126. package/dist/lib/inspect-routes.d.ts +0 -2
  127. package/dist/lib/inspect-routes.d.ts.map +0 -1
  128. package/dist/lib/inspect-routes.js +0 -150
  129. package/dist/lib/inspect-routes.js.map +0 -1
  130. package/dist/lib/start-repl.d.ts +0 -2
  131. package/dist/lib/start-repl.d.ts.map +0 -1
  132. package/dist/lib/start-repl.js +0 -120
  133. package/dist/lib/start-repl.js.map +0 -1
  134. /package/dist/{cli → lib}/resolve-aliases.d.ts +0 -0
  135. /package/dist/{cli → lib}/resolve-aliases.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exisjs",
3
- "version": "0.9.2",
3
+ "version": "0.10.0-alpha.0",
4
4
  "description": "Fast, lightweight TypeScript backend framework for Node.js with file-system routing, built-in validation, dependency injection and OpenAPI docs",
5
5
  "keywords": [
6
6
  "exisjs",
@@ -34,6 +34,7 @@
34
34
  "author": "V25 Group <support@v25group.com>",
35
35
  "main": "dist/index.js",
36
36
  "types": "dist/index.d.ts",
37
+ "type": "commonjs",
37
38
  "exports": {
38
39
  ".": {
39
40
  "types": "./dist/index.d.ts",
@@ -111,8 +112,80 @@
111
112
  "types": "./dist/telemetry/index.d.ts",
112
113
  "default": "./dist/telemetry/index.js"
113
114
  },
115
+ "./start": {
116
+ "types": "./dist/lib/start-server.d.ts",
117
+ "default": "./dist/lib/start-server.js"
118
+ },
119
+ "./internal": {
120
+ "types": "./dist/internal.d.ts",
121
+ "default": "./dist/internal.js"
122
+ },
114
123
  "./package.json": "./package.json"
115
124
  },
125
+ "typesVersions": {
126
+ "*": {
127
+ "router": [
128
+ "dist/router/index.d.ts"
129
+ ],
130
+ "app": [
131
+ "dist/app/index.d.ts"
132
+ ],
133
+ "module": [
134
+ "dist/module/index.d.ts"
135
+ ],
136
+ "di": [
137
+ "dist/di/index.d.ts"
138
+ ],
139
+ "decorators": [
140
+ "dist/decorators/index.d.ts"
141
+ ],
142
+ "database": [
143
+ "dist/database/index.d.ts"
144
+ ],
145
+ "middleware": [
146
+ "dist/middleware/middleware.d.ts"
147
+ ],
148
+ "testing": [
149
+ "dist/testing/index.d.ts"
150
+ ],
151
+ "config": [
152
+ "dist/config/index.d.ts"
153
+ ],
154
+ "error": [
155
+ "dist/error/index.d.ts"
156
+ ],
157
+ "cron": [
158
+ "dist/cron/index.d.ts"
159
+ ],
160
+ "plugin": [
161
+ "dist/plugin/index.d.ts"
162
+ ],
163
+ "response": [
164
+ "dist/response/index.d.ts"
165
+ ],
166
+ "validator": [
167
+ "dist/validator/index.d.ts"
168
+ ],
169
+ "sanitize": [
170
+ "dist/sanitize/index.d.ts"
171
+ ],
172
+ "logger": [
173
+ "dist/logger/index.d.ts"
174
+ ],
175
+ "swagger": [
176
+ "dist/swagger/index.d.ts"
177
+ ],
178
+ "telemetry": [
179
+ "dist/telemetry/index.d.ts"
180
+ ],
181
+ "internal": [
182
+ "dist/internal.d.ts"
183
+ ],
184
+ "start": [
185
+ "dist/lib/start-server.d.ts"
186
+ ]
187
+ }
188
+ },
116
189
  "bin": {
117
190
  "exis": "bin/exis.js",
118
191
  "exisjs": "bin/exis.js"
@@ -135,18 +208,12 @@
135
208
  "dependencies": {
136
209
  "accepts": "^1.3.8",
137
210
  "busboy": "^1.6.0",
138
- "chokidar": "^5.0.0",
139
- "commander": "^15.0.0",
140
211
  "content-disposition": "^2.0.1",
141
212
  "dotenv": "^17.4.2",
142
213
  "dotenv-expand": "^13.0.0",
143
- "esbuild": "^0.28.2",
144
214
  "fast-querystring": "^1.1.2",
145
215
  "mime-types": "^3.0.2",
146
- "pino": "^10.4.0",
147
- "pino-pretty": "^13.2.0",
148
- "tsx": "^4.23.15",
149
- "typescript": "^5.9.3"
216
+ "pino": "^10.4.0"
150
217
  },
151
218
  "peerDependencies": {
152
219
  "@opentelemetry/api": "^1.9.0",
@@ -155,7 +222,8 @@
155
222
  "@opentelemetry/resources": "^2.11.0",
156
223
  "@opentelemetry/sdk-node": "^0.222.0",
157
224
  "@opentelemetry/sdk-trace-node": "^2.11.0",
158
- "@opentelemetry/semantic-conventions": "^1.43.0"
225
+ "@opentelemetry/semantic-conventions": "^1.43.0",
226
+ "pino-pretty": ">=11"
159
227
  },
160
228
  "peerDependenciesMeta": {
161
229
  "@opentelemetry/api": {
@@ -178,9 +246,13 @@
178
246
  },
179
247
  "@opentelemetry/semantic-conventions": {
180
248
  "optional": true
249
+ },
250
+ "pino-pretty": {
251
+ "optional": true
181
252
  }
182
253
  },
183
254
  "optionalDependencies": {
255
+ "@exisjs/cli": "0.10.0-alpha.0",
184
256
  "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.71.0"
185
257
  },
186
258
  "devDependencies": {
@@ -1,11 +0,0 @@
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
- //# sourceMappingURL=build.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AASA,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,CAmV5E;AAID,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB7D"}
@@ -1,344 +0,0 @@
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
- const node_path_1 = __importDefault(require("node:path"));
42
- const node_fs_1 = __importDefault(require("node:fs"));
43
- const node_url_1 = require("node:url");
44
- const utils_1 = require("../utils");
45
- const time_1 = require("../../utils/time");
46
- const manifest_js_1 = require("../manifest.js");
47
- const resolve_aliases_js_1 = require("../resolve-aliases.js");
48
- const env_js_1 = require("../../config/env.js");
49
- async function buildCommand(options = {}) {
50
- process.env.__EXIS_BUILD = 'true';
51
- if (options.skipEnvCheck ||
52
- options.dryRun ||
53
- process.env.EXIS_SKIP_ENV_CHECK === 'true') {
54
- process.env.EXIS_SKIP_ENV_CHECK = 'true';
55
- process.env.__EXIS_SKIP_ENV_CHECK = 'true';
56
- }
57
- process.on('SIGINT', () => {
58
- const time = (0, time_1.getFormattedTime)();
59
- const primary = '\x1b[38;2;160;70;255m';
60
- 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}`);
61
- process.exit(0);
62
- });
63
- const cwd = process.cwd();
64
- // Load .env files so process.env is populated during build-time route validation
65
- const mode = options.mode || process.env.NODE_ENV || 'production';
66
- (0, env_js_1.loadEnv)(cwd, mode, true);
67
- const outDir = options.outDir ?? '.exis/server';
68
- const tsconfigPath = node_path_1.default.join(cwd, 'tsconfig.json');
69
- let version = '0.0.0';
70
- try {
71
- const pkgPath = node_path_1.default.join(__dirname, '..', '..', '..', 'package.json');
72
- version = JSON.parse(node_fs_1.default.readFileSync(pkgPath, 'utf-8')).version;
73
- }
74
- catch {
75
- /* ignore */
76
- }
77
- // Validate tsconfig
78
- if (!node_fs_1.default.existsSync(tsconfigPath)) {
79
- 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}`);
80
- console.log(`${utils_1.c.yellow}No tsconfig.json found. Skipping build for native JS project.${utils_1.c.reset}`);
81
- console.log(`\n Run ${utils_1.c.primary}exis start${utils_1.c.reset} to serve the app.\n`);
82
- return;
83
- }
84
- 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}`);
85
- // Clean .exis/server
86
- if (options.clean !== false) {
87
- const serverPath = node_path_1.default.join(cwd, outDir);
88
- if (node_fs_1.default.existsSync(serverPath)) {
89
- process.stdout.write(`${utils_1.c.dim}cleaning...${utils_1.c.reset}`);
90
- node_fs_1.default.rmSync(serverPath, { recursive: true, force: true });
91
- process.stdout.write(`\r${utils_1.c.green}✓${utils_1.c.reset} ${utils_1.c.dim}cleaned output directory.${utils_1.c.reset}\n`);
92
- }
93
- }
94
- process.stdout.write(`${utils_1.c.dim}compiling...${utils_1.c.reset}`);
95
- const start = Date.now();
96
- // Ensure we generate the exis.d.ts file with optional fallback node types BEFORE tsc runs
97
- await (0, manifest_js_1.generateExisEnv)(cwd);
98
- let ts;
99
- try {
100
- const req = typeof require !== 'undefined' ? require : eval('require');
101
- const tsPath = req.resolve('typescript', { paths: [cwd, __dirname] });
102
- ts = req(tsPath);
103
- }
104
- catch {
105
- (0, utils_1.error)('TypeScript compiler not found in project.');
106
- (0, utils_1.error)('Install it: npm install -D typescript');
107
- process.exit(1);
108
- }
109
- // Normalize path for TS on Windows
110
- const tsconfigPathForTs = tsconfigPath.replace(/\\/g, '/');
111
- const configFile = ts.readConfigFile(tsconfigPathForTs, ts.sys.readFile);
112
- if (configFile.error) {
113
- (0, utils_1.error)('Error reading tsconfig.json');
114
- process.exit(1);
115
- }
116
- const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, node_path_1.default.dirname(tsconfigPathForTs));
117
- const isServerSourceFile = (filePath) => {
118
- const rel = node_path_1.default.relative(cwd, filePath).replace(/\\/g, '/');
119
- if (rel.startsWith('..') || node_path_1.default.isAbsolute(rel))
120
- return false;
121
- // Ignore test files, scripts, docs
122
- if (rel.startsWith('tests/') ||
123
- rel.startsWith('test/') ||
124
- rel.startsWith('__tests__/') ||
125
- rel.startsWith('scripts/') ||
126
- rel.startsWith('docs/') ||
127
- /\.(test|spec)\.[jt]sx?$/.test(rel)) {
128
- return false;
129
- }
130
- // Exclude root tool config files (e.g. drizzle.config.ts, vite.config.ts, tailwind.config.ts)
131
- // Only exis.config.* belongs to the ExisJS server configuration
132
- if (!rel.includes('/')) {
133
- const base = node_path_1.default.basename(rel);
134
- return (base === 'exis.config.ts' ||
135
- base === 'exis.config.js' ||
136
- base === 'exis.config.mjs');
137
- }
138
- // Server code is strictly in src/ or http/
139
- return rel.startsWith('src/') || rel.startsWith('http/');
140
- };
141
- const allNonDeclFiles = parsedConfig.fileNames.filter((f) => !f.endsWith('.d.ts'));
142
- const serverEntryPoints = allNonDeclFiles.filter(isServerSourceFile);
143
- const entryPoints = serverEntryPoints.length > 0 ? serverEntryPoints : allNonDeclFiles;
144
- let format = 'cjs';
145
- try {
146
- const pkg = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(cwd, 'package.json'), 'utf8'));
147
- if (pkg.type === 'module')
148
- format = 'esm';
149
- }
150
- catch {
151
- // default to cjs if package.json is missing or unparseable
152
- }
153
- // ─── TypeScript Type-Check ─────────────────────────────────────────────────
154
- // Run the TS compiler in check-only mode (no emit) to catch type errors,
155
- // broken imports, and syntax errors BEFORE esbuild runs.
156
- // Hosts that install with NODE_ENV=production (Render, Heroku...) leave out
157
- // devDependencies, so the @types packages are absent and every Node global
158
- // would be reported as a type error. esbuild does not need types to compile.
159
- const missingTypes = process.env.NODE_ENV === 'test' ? [] : findMissingTypePackages(cwd);
160
- if (missingTypes.length > 0) {
161
- 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` +
162
- `${utils_1.c.dim} To type-check on this host, install with: npm install --include=dev${utils_1.c.reset}\n`);
163
- }
164
- else if (process.env.NODE_ENV !== 'test') {
165
- process.stdout.write(`${utils_1.c.dim}type-checking...${utils_1.c.reset}`);
166
- const filesToCheck = serverEntryPoints.length > 0 ? serverEntryPoints : parsedConfig.fileNames;
167
- const program = ts.createProgram(filesToCheck, {
168
- ...parsedConfig.options,
169
- skipLibCheck: true,
170
- noEmit: true,
171
- });
172
- const allDiagnostics = [
173
- ...parsedConfig.errors,
174
- ...ts.getPreEmitDiagnostics(program),
175
- ];
176
- // Only fail the build for errors that actually affect the server environment
177
- const diagnostics = allDiagnostics.filter((diag) => {
178
- if (!diag.file)
179
- return true; // Global configuration error
180
- return isServerSourceFile(diag.file.fileName);
181
- });
182
- if (diagnostics.length > 0) {
183
- process.stdout.write('\n');
184
- const formatted = ts.formatDiagnosticsWithColorAndContext(diagnostics, {
185
- getCanonicalFileName: (f) => f,
186
- getCurrentDirectory: ts.sys.getCurrentDirectory,
187
- getNewLine: () => '\n',
188
- });
189
- process.stderr.write(formatted + '\n');
190
- (0, utils_1.error)(`TYPE_CHECK_FAILED: ${diagnostics.length} error(s) found.`);
191
- 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`);
192
- process.exit(1);
193
- }
194
- }
195
- if (process.env.NODE_ENV === 'test') {
196
- 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`);
197
- }
198
- else if (missingTypes.length === 0) {
199
- process.stdout.write(`\r${utils_1.c.green}✓${utils_1.c.reset} ${utils_1.c.dim}type-check passed.${utils_1.c.reset}\n`);
200
- }
201
- // ─── esbuild Compilation ───────────────────────────────────────────────────
202
- process.stdout.write(`${utils_1.c.dim}compiling...${utils_1.c.reset}`);
203
- try {
204
- const esbuild = await Promise.resolve().then(() => __importStar(require('esbuild')));
205
- await esbuild.build({
206
- entryPoints,
207
- outdir: node_path_1.default.join(cwd, outDir),
208
- // Keep the project layout (src/http/... -> outDir/src/http/...) even
209
- // when every entry point sits in one sub-folder
210
- outbase: cwd,
211
- platform: 'node',
212
- format: format,
213
- bundle: false,
214
- logLevel: 'error',
215
- });
216
- 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`);
217
- }
218
- catch (err) {
219
- console.error('');
220
- (0, utils_1.error)(`COMPILE_FAILED: ${err?.message ?? 'esbuild encountered an error'}`);
221
- process.exit(1);
222
- }
223
- // resolve path aliases natively (no external deps)
224
- await fixPathAliases(cwd, outDir);
225
- // Generate the .exis/manifest.js route map
226
- try {
227
- await (0, manifest_js_1.generateManifest)(cwd, outDir);
228
- }
229
- catch (err) {
230
- console.error('');
231
- (0, utils_1.error)(`ROUTE_SCAN_FAILED: ${err.message}`);
232
- 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`);
233
- process.exit(1);
234
- }
235
- // Generate .exis/server/package.json to mirror host module type (ESM vs CJS)
236
- try {
237
- const serverPkgPath = node_path_1.default.join(cwd, outDir, 'package.json');
238
- const serverPkgContent = JSON.stringify({
239
- type: format === 'esm' ? 'module' : 'commonjs',
240
- private: true,
241
- }, null, 2);
242
- node_fs_1.default.writeFileSync(serverPkgPath, serverPkgContent, 'utf8');
243
- }
244
- catch {
245
- // ignore
246
- }
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('../resolve-aliases.js')));
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('../../router/route-scanner.js')));
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
- async function fixPathAliases(cwd, outDir) {
337
- try {
338
- await (0, resolve_aliases_js_1.resolvePathAliases)(cwd, outDir);
339
- }
340
- catch (err) {
341
- 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`);
342
- }
343
- }
344
- //# sourceMappingURL=build.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export interface CleanOptions {
2
- all?: boolean;
3
- }
4
- export declare function cleanCommand(options?: CleanOptions): Promise<void>;
5
- //# sourceMappingURL=clean.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/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"}
@@ -1,30 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/cli/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"}
@@ -1,21 +0,0 @@
1
- export declare const DEFAULT_WATCH_IGNORED: (string | RegExp)[];
2
- export declare const RELOADABLE_EXTENSIONS: Set<string>;
3
- export declare const RELOADABLE_CONFIG_FILES: Set<string>;
4
- export declare function shouldReloadOnFile(file: string, userIgnored?: (string | RegExp)[], customExtensions?: string[]): boolean;
5
- interface DevOptions {
6
- port?: string;
7
- host?: string;
8
- entry?: string;
9
- /** Start even if another dev server appears to use the same port */
10
- force?: boolean;
11
- _disableWatch?: boolean;
12
- }
13
- /**
14
- * Another `exisjs dev` holds this lock when its PID is alive AND it still
15
- * serves the port it recorded. A PID alone is not enough: after a crash the
16
- * OS may hand the same number to an unrelated process.
17
- */
18
- export declare function isDevLockHeld(lockFile: string): Promise<boolean>;
19
- export declare function devCommand(options?: DevOptions): Promise<void>;
20
- export {};
21
- //# sourceMappingURL=dev.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,qBAAqB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EA4BpD,CAAA;AAED,eAAO,MAAM,qBAAqB,aAOhC,CAAA;AAEF,eAAO,MAAM,uBAAuB,aAOlC,CAAA;AAEF,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,CAksBxE"}