exisjs 0.7.4 → 0.7.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/dist/cli/commands/build.d.ts +4 -2
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +80 -22
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +121 -27
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +5 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +1 -0
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +25 -0
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +17 -5
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.js +10 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +12 -4
- package/dist/cli/manifest.js.map +1 -1
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +8 -0
- package/dist/config/env.js.map +1 -1
- package/dist/decorators/constants.d.ts +2 -0
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/docs/content/boundaries.mdx +33 -3
- package/dist/docs/content/config.mdx +26 -0
- package/dist/docs/content/errors.mdx +38 -2
- package/dist/docs/content/requests.mdx +38 -5
- package/dist/docs/content/responses.mdx +43 -5
- package/dist/docs/content/security.mdx +17 -4
- package/dist/docs/content/structure.mdx +91 -12
- package/dist/docs/content/validation.mdx +40 -4
- package/dist/lib/start-server.js +16 -0
- package/dist/lib/start-server.js.map +1 -1
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +9 -0
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/router/boundary.d.ts +12 -0
- package/dist/router/boundary.d.ts.map +1 -1
- package/dist/router/boundary.js.map +1 -1
- package/dist/router/route-scanner.d.ts +1 -0
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +193 -8
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/router/types.d.ts +3 -1
- package/dist/router/types.d.ts.map +1 -1
- package/dist/sanitize/index.d.ts +6 -6
- package/dist/sanitize/index.d.ts.map +1 -1
- package/dist/sanitize/index.js +8 -8
- package/dist/sanitize/index.js.map +1 -1
- package/dist/server/app.d.ts +1 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +4 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/engines/node-engine.d.ts.map +1 -1
- package/dist/server/engines/node-engine.js +1 -0
- package/dist/server/engines/node-engine.js.map +1 -1
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server/request-handler.js +15 -1
- package/dist/server/request-handler.js.map +1 -1
- package/dist/server/request.d.ts +6 -0
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +94 -33
- package/dist/server/request.js.map +1 -1
- package/dist/server/response.d.ts +3 -1
- package/dist/server/response.d.ts.map +1 -1
- package/dist/server/response.js +98 -10
- package/dist/server/response.js.map +1 -1
- package/dist/validator/tex.d.ts +7 -7
- package/dist/validator/tex.d.ts.map +1 -1
- package/dist/validator/tex.js +217 -5
- package/dist/validator/tex.js.map +1 -1
- package/package.json +8 -8
|
@@ -9,6 +9,7 @@ exports.generateModel = generateModel;
|
|
|
9
9
|
exports.generateService = generateService;
|
|
10
10
|
exports.generateSchema = generateSchema;
|
|
11
11
|
exports.generateBoundary = generateBoundary;
|
|
12
|
+
exports.generateErrorHandler = generateErrorHandler;
|
|
12
13
|
exports.generateResource = generateResource;
|
|
13
14
|
exports.generatePlugin = generatePlugin;
|
|
14
15
|
exports.generateMiddleware = generateMiddleware;
|
|
@@ -195,6 +196,30 @@ async function generateBoundary(name, cwd = process.cwd(), options = {}) {
|
|
|
195
196
|
await promises_1.default.writeFile(filePath, code);
|
|
196
197
|
(0, utils_1.success)(`Generated boundary in src/http/${name}/${filename}`);
|
|
197
198
|
}
|
|
199
|
+
async function generateErrorHandler(cwd = process.cwd()) {
|
|
200
|
+
const targetDir = node_path_1.default.join(cwd, 'src', 'http');
|
|
201
|
+
await ensureDir(targetDir);
|
|
202
|
+
const filePath = node_path_1.default.join(targetDir, 'error.ts');
|
|
203
|
+
const code = `import type { Request, Response } from 'exisjs'
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Global Exception Handler for ExisJS
|
|
207
|
+
* Auto-mounted by the framework to catch unhandled errors and format error responses.
|
|
208
|
+
*/
|
|
209
|
+
export function onError(err: any, req: Request, res: Response) {
|
|
210
|
+
const status = err.statusCode || err.status || 500
|
|
211
|
+
res.status(status).json({
|
|
212
|
+
success: false,
|
|
213
|
+
error: {
|
|
214
|
+
message: err.message || 'Internal Server Error',
|
|
215
|
+
code: err.code || 'INTERNAL_ERROR',
|
|
216
|
+
},
|
|
217
|
+
})
|
|
218
|
+
}
|
|
219
|
+
`;
|
|
220
|
+
await promises_1.default.writeFile(filePath, code);
|
|
221
|
+
(0, utils_1.success)('Generated global exception handler in src/http/error.ts');
|
|
222
|
+
}
|
|
198
223
|
async function generateResource(name, cwd = process.cwd(), options = {}) {
|
|
199
224
|
const targetDir = node_path_1.default.join(cwd, 'src', 'http', name);
|
|
200
225
|
await ensureDir(targetDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":";;;;;;AAqBA,gDA4BC;AAED,sCAwBC;AAED,0CAmFC;AAED,wCAuCC;AAED,4CAiBC;AAED,4CAmIC;AAID,wCA6BC;AAED,gDA0BC;AAED,oCA8BC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF5E"}
|
|
@@ -30,7 +30,7 @@ async function startCommand(options = {}) {
|
|
|
30
30
|
const child = (0, node_child_process_1.spawn)(process.execPath, [startServerPath], {
|
|
31
31
|
cwd,
|
|
32
32
|
env: process.env,
|
|
33
|
-
stdio: 'inherit',
|
|
33
|
+
stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
|
|
34
34
|
shell: false,
|
|
35
35
|
});
|
|
36
36
|
child.on('error', (err) => {
|
|
@@ -38,7 +38,7 @@ async function startCommand(options = {}) {
|
|
|
38
38
|
process.exit(1);
|
|
39
39
|
});
|
|
40
40
|
let isShuttingDown = false;
|
|
41
|
-
|
|
41
|
+
const handleExit = (code, signal) => {
|
|
42
42
|
if (isShuttingDown) {
|
|
43
43
|
process.exit(0);
|
|
44
44
|
}
|
|
@@ -49,14 +49,24 @@ async function startCommand(options = {}) {
|
|
|
49
49
|
else {
|
|
50
50
|
process.exit(0);
|
|
51
51
|
}
|
|
52
|
-
}
|
|
53
|
-
|
|
52
|
+
};
|
|
53
|
+
child.on('close', (code, signal) => handleExit(code, signal));
|
|
54
|
+
child.on('exit', (code, signal) => handleExit(code, signal));
|
|
55
|
+
const shutdown = () => {
|
|
54
56
|
if (isShuttingDown)
|
|
55
57
|
return;
|
|
56
58
|
isShuttingDown = true;
|
|
57
59
|
const time = (0, time_1.getFormattedTime)();
|
|
58
60
|
const primary = '\x1b[38;2;160;70;255m';
|
|
59
61
|
console.log(`\n${utils_1.c.dim}${time}${utils_1.c.reset} ${primary}[exis]${utils_1.c.reset} ${utils_1.c.dim}gracefully shutting down server...${utils_1.c.reset}`);
|
|
62
|
+
try {
|
|
63
|
+
if (child.connected) {
|
|
64
|
+
child.send({ type: 'exis:shutdown' });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
/* ignore */
|
|
69
|
+
}
|
|
60
70
|
try {
|
|
61
71
|
if (process.platform !== 'win32') {
|
|
62
72
|
child.kill('SIGTERM');
|
|
@@ -65,7 +75,9 @@ async function startCommand(options = {}) {
|
|
|
65
75
|
catch {
|
|
66
76
|
/* ignore */
|
|
67
77
|
}
|
|
68
|
-
}
|
|
78
|
+
};
|
|
79
|
+
process.on('SIGINT', shutdown);
|
|
80
|
+
process.on('SIGTERM', shutdown);
|
|
69
81
|
}
|
|
70
82
|
function resolveDistEntry(cwd, custom) {
|
|
71
83
|
if (custom) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":";;;;;AAYA,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -62,6 +62,9 @@ program
|
|
|
62
62
|
.description('Compile TypeScript to production JavaScript')
|
|
63
63
|
.option('-o, --out-dir <dir>', 'Output directory (default: dist)')
|
|
64
64
|
.option('--no-clean', 'Skip cleaning the output directory')
|
|
65
|
+
.option('--skip-env-check', 'Skip build-time route and environment validation')
|
|
66
|
+
.option('--dry-run', 'Compile and bundle without failing on missing environment variables')
|
|
67
|
+
.option('-m, --mode <mode>', 'Environment mode to load (e.g. production, staging, development)')
|
|
65
68
|
.action(async (options) => {
|
|
66
69
|
await (0, build_1.buildCommand)(options);
|
|
67
70
|
});
|
|
@@ -171,11 +174,15 @@ program
|
|
|
171
174
|
.option('--oop', 'Generate using Class-Based (OOP) paradigm instead of Functional')
|
|
172
175
|
.option('-n, --named', 'Prefix filenames with the feature name (e.g. user.route.ts, user.schema.ts)')
|
|
173
176
|
.action(async (type, name, options) => {
|
|
174
|
-
const { generateCrud, generateModel, generateController, generateService, generateSchema, generateBoundary, generatePlugin, generateMiddleware, generateTest, } = await Promise.resolve().then(() => __importStar(require('./commands/generate')));
|
|
175
|
-
if (!name)
|
|
177
|
+
const { generateCrud, generateModel, generateController, generateService, generateSchema, generateBoundary, generateErrorHandler, generatePlugin, generateMiddleware, generateTest, } = await Promise.resolve().then(() => __importStar(require('./commands/generate')));
|
|
178
|
+
if (!name && type !== 'error' && type !== 'err')
|
|
176
179
|
return console.error('Name is required');
|
|
177
180
|
const cwd = process.cwd();
|
|
178
181
|
switch (type) {
|
|
182
|
+
case 'error':
|
|
183
|
+
case 'err':
|
|
184
|
+
await generateErrorHandler(cwd);
|
|
185
|
+
break;
|
|
179
186
|
case 'resource':
|
|
180
187
|
case 'crud':
|
|
181
188
|
await generateCrud(name, cwd, options);
|
|
@@ -214,7 +221,7 @@ program
|
|
|
214
221
|
await generateTest(name);
|
|
215
222
|
break;
|
|
216
223
|
default:
|
|
217
|
-
console.error('Unknown type. Supported: resource, crud, route, controller, service, schema, model, boundary, plugin, middleware, test');
|
|
224
|
+
console.error('Unknown type. Supported: resource, crud, route, controller, service, schema, model, boundary, error, plugin, middleware, test');
|
|
218
225
|
}
|
|
219
226
|
});
|
|
220
227
|
program.parse(process.argv);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":"AAIA,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAiIf;AAqCD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":"AAIA,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAiIf;AAqCD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEhE"}
|
package/dist/cli/manifest.js
CHANGED
|
@@ -176,10 +176,18 @@ async function generateExisEnv(cwd) {
|
|
|
176
176
|
.catch(() => false);
|
|
177
177
|
if (!isTsProject)
|
|
178
178
|
return;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
.
|
|
179
|
+
let hasNodeTypes;
|
|
180
|
+
try {
|
|
181
|
+
const req = typeof require !== 'undefined' ? require : eval('require');
|
|
182
|
+
req.resolve('@types/node/package.json', { paths: [cwd, __dirname] });
|
|
183
|
+
hasNodeTypes = true;
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
hasNodeTypes = await fs
|
|
187
|
+
.access(path.join(cwd, 'node_modules', '@types', 'node'))
|
|
188
|
+
.then(() => true)
|
|
189
|
+
.catch(() => false);
|
|
190
|
+
}
|
|
183
191
|
let envContent = `/// <reference types="exisjs" />
|
|
184
192
|
|
|
185
193
|
// NOTE: This file should not be edited
|
package/dist/cli/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4CAqIC;AAqCD,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/config/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AACpD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,EAAE,CAAA;AAEH,eAAO,IAAI,UAAU,EAAE,GAAG,GAAG,SAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AACpD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;CACT,EAAE,CAAA;AAEH,eAAO,IAAI,UAAU,EAAE,GAAG,GAAG,SAAqB,CAAA;AAsBlD,wBAAgB,UAAU,CACxB,cAAc,EAAE,cAAc,EAC9B,GAAG,CAAC,EAAE,MAAM,EACZ,WAAW,UAAQ,SA4CpB;AACD,wBAAgB,QAAQ,SAIvB;AACD;;;;GAIG;AAEH,wBAAgB,OAAO,CACrB,GAAG,GAAE,MAAsB,EAC3B,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,UAAQ,GAClB;IACD,WAAW,EAAE,GAAG,CAAA;IAChB,SAAS,EAAE,GAAG,GAAG,SAAS,CAAA;IAC1B,cAAc,EAAE,cAAc,CAAA;CAC/B,CAgDA;AACD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE5D"}
|
package/dist/config/env.js
CHANGED
|
@@ -50,6 +50,9 @@ let cachedLoadedEnvFiles = [];
|
|
|
50
50
|
let _previousLoadedEnvFiles = [];
|
|
51
51
|
function replaceProcessEnv(sourceEnv) {
|
|
52
52
|
Object.keys(process.env).forEach((key) => {
|
|
53
|
+
if (key.startsWith('__EXIS_') || key.startsWith('EXIS_')) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
53
56
|
if (sourceEnv[key] === undefined || sourceEnv[key] === '') {
|
|
54
57
|
delete process.env[key];
|
|
55
58
|
}
|
|
@@ -61,6 +64,9 @@ function replaceProcessEnv(sourceEnv) {
|
|
|
61
64
|
});
|
|
62
65
|
}
|
|
63
66
|
function processEnv(loadedEnvFiles, dir, forceReload = false) {
|
|
67
|
+
if (forceReload) {
|
|
68
|
+
delete process.env.__EXIS_PROCESSED_ENV;
|
|
69
|
+
}
|
|
64
70
|
if (!exports.initialEnv) {
|
|
65
71
|
exports.initialEnv = Object.assign({}, process.env);
|
|
66
72
|
}
|
|
@@ -117,6 +123,8 @@ function loadEnv(dir = process.cwd(), mode, forceReload = false) {
|
|
|
117
123
|
currentMode !== 'test' && `.env.local`,
|
|
118
124
|
`.env.${currentMode}`,
|
|
119
125
|
'.env',
|
|
126
|
+
currentMode === 'production' && '.env.development.local',
|
|
127
|
+
currentMode === 'production' && '.env.development',
|
|
120
128
|
].filter(Boolean);
|
|
121
129
|
for (const envFile of dotenvFiles) {
|
|
122
130
|
const dotEnvPath = path.join(dir, envFile);
|
package/dist/config/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/decorators/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGvD,eAAO,MAAM,cAAc,eAA8B,CAAA;AACzD,eAAO,MAAM,iBAAiB,eAAyC,CAAA;AACvE,eAAO,MAAM,eAAe,eAAuC,CAAA;AACnE,eAAO,MAAM,mBAAmB,eAAmC,CAAA;AACnE,eAAO,MAAM,cAAc,eAAsC,CAAA;AACjE,eAAO,MAAM,kBAAkB,eAA0C,CAAA;AACzE,eAAO,MAAM,cAAc,eAAsC,CAAA;AACjE,eAAO,MAAM,aAAa,eAAqC,CAAA;AAC/D,eAAO,MAAM,eAAe,eAAuC,CAAA;AACnE,eAAO,MAAM,eAAe,eAAuC,CAAA;AAEnE,eAAO,MAAM,UAAU,eAAkC,CAAA;AACzD,eAAO,MAAM,kBAAkB,eAA0C,CAAA;AACzE,eAAO,MAAM,mBAAmB,eAA2C,CAAA;AAC3E,eAAO,MAAM,uBAAuB,eAEnC,CAAA;AACD,eAAO,MAAM,mBAAmB,eAA2C,CAAA;AAE3E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACxC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACZ,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,GAAG,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,CAAA;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,GAAG,EAAE,CAAA;IACnB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;CAChB"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/decorators/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGvD,eAAO,MAAM,cAAc,eAA8B,CAAA;AACzD,eAAO,MAAM,iBAAiB,eAAyC,CAAA;AACvE,eAAO,MAAM,eAAe,eAAuC,CAAA;AACnE,eAAO,MAAM,mBAAmB,eAAmC,CAAA;AACnE,eAAO,MAAM,cAAc,eAAsC,CAAA;AACjE,eAAO,MAAM,kBAAkB,eAA0C,CAAA;AACzE,eAAO,MAAM,cAAc,eAAsC,CAAA;AACjE,eAAO,MAAM,aAAa,eAAqC,CAAA;AAC/D,eAAO,MAAM,eAAe,eAAuC,CAAA;AACnE,eAAO,MAAM,eAAe,eAAuC,CAAA;AAEnE,eAAO,MAAM,UAAU,eAAkC,CAAA;AACzD,eAAO,MAAM,kBAAkB,eAA0C,CAAA;AACzE,eAAO,MAAM,mBAAmB,eAA2C,CAAA;AAC3E,eAAO,MAAM,uBAAuB,eAEnC,CAAA;AACD,eAAO,MAAM,mBAAmB,eAA2C,CAAA;AAE3E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACxC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACZ,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,GAAG,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,YAAY,CAAC,EAAE,GAAG,EAAE,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,CAAA;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;IACjB,YAAY,CAAC,EAAE,GAAG,CAAA;IAClB,WAAW,CAAC,EAAE,GAAG,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,GAAG,EAAE,CAAA;IACnB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;CAChB"}
|
|
@@ -21,20 +21,22 @@ A `boundary.ts` has two distinct, independent parts:
|
|
|
21
21
|
| Signature | Detected as | Execution timing |
|
|
22
22
|
|---|---|---|
|
|
23
23
|
| `(req, res, next)` | Chain Step | Runs in file/declaration order, before the route |
|
|
24
|
+
| `beforeHandle(req, res)` | Boundary Guard Hook | Immediately before the route handler. Short-circuits on `false` or when sending headers |
|
|
25
|
+
| `afterHandle(req, res, data)` | Response Hook | Immediately after the route handler. Mutates returned payload or logs audit data |
|
|
24
26
|
| `(ctx, next)` — default export (functional) or class method `handle(ctx, next)` (OOP) | Request Wrapper | Wraps around all chain steps and the nested route/boundary |
|
|
25
27
|
|
|
26
28
|
---
|
|
27
29
|
|
|
28
30
|
## 1. Functional Paradigm
|
|
29
31
|
|
|
30
|
-
In functional style, export `config = defineBoundary(...)`, export named middleware functions `(req, res, next)` for chain steps, and optionally provide a `default export` function `(ctx, next)` as an onion-style wrapper.
|
|
32
|
+
In functional style, export `config = defineBoundary(...)`, export named middleware functions `(req, res, next)` for chain steps, and optionally provide a `default export` function `(ctx, next)` as an onion-style wrapper. You can also configure `beforeHandle` and `afterHandle` hooks directly inside `defineBoundary({ ... })`.
|
|
31
33
|
|
|
32
34
|
```typescript filename="src/http/admin/boundary.ts"
|
|
33
35
|
import { defineBoundary } from 'exisjs/router'
|
|
34
36
|
import type { Request, Response, Next, BoundaryContext } from 'exisjs/router'
|
|
35
37
|
import { UnauthorizedError } from 'exisjs/error'
|
|
36
38
|
|
|
37
|
-
// 1. Configuration (CORS, Headers, Exclusions, DI Providers)
|
|
39
|
+
// 1. Configuration (CORS, Headers, Exclusions, Hooks, DI Providers)
|
|
38
40
|
export const config = defineBoundary({
|
|
39
41
|
cors: {
|
|
40
42
|
origin: ['https://admin.yourdomain.com'],
|
|
@@ -47,6 +49,20 @@ export const config = defineBoundary({
|
|
|
47
49
|
'/admin/health',
|
|
48
50
|
{ path: '/admin/public/*', method: 'GET' }
|
|
49
51
|
],
|
|
52
|
+
|
|
53
|
+
// Pre-handler hook: Return false to reject with 403, or send custom response
|
|
54
|
+
beforeHandle(req, res) {
|
|
55
|
+
if (!req.headers['x-admin-token']) {
|
|
56
|
+
res.status(401).json({ error: 'Missing admin access token' })
|
|
57
|
+
return false
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
// Post-handler hook: Transform outgoing response payload or perform async audit
|
|
62
|
+
afterHandle(req, res, data) {
|
|
63
|
+
res.setHeader('X-Audited', 'true')
|
|
64
|
+
return { ...data, auditedAt: Date.now() }
|
|
65
|
+
},
|
|
50
66
|
})
|
|
51
67
|
|
|
52
68
|
// 2. Chain Step (auto-detected by (req, res, next) signature)
|
|
@@ -78,7 +94,7 @@ export default async function (ctx: BoundaryContext, next: Next) {
|
|
|
78
94
|
|
|
79
95
|
## 2. Class-Based (OOP) Paradigm
|
|
80
96
|
|
|
81
|
-
In OOP style, decorate a class with `@Boundary(...)`. Named methods taking `(req, res, next)` are auto-detected as chain steps, and a method named `handle(ctx, next)` serves as the request wrapper.
|
|
97
|
+
In OOP style, decorate a class with `@Boundary(...)`. Named methods taking `(req, res, next)` are auto-detected as chain steps, `beforeHandle(req, res)` and `afterHandle(req, res, data)` act as lifecycle hooks, and a method named `handle(ctx, next)` serves as the request wrapper.
|
|
82
98
|
|
|
83
99
|
```typescript filename="src/http/admin/boundary.ts"
|
|
84
100
|
import { Boundary } from 'exisjs/decorators'
|
|
@@ -96,6 +112,20 @@ import { UnauthorizedError } from 'exisjs/error'
|
|
|
96
112
|
exclude: ['/admin/health'],
|
|
97
113
|
})
|
|
98
114
|
export default class AdminBoundary {
|
|
115
|
+
// Pre-handler hook
|
|
116
|
+
beforeHandle(req: Request, res: Response) {
|
|
117
|
+
if (!req.headers['x-admin-token']) {
|
|
118
|
+
res.status(401).json({ error: 'Missing admin access token' })
|
|
119
|
+
return false
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Post-handler hook
|
|
124
|
+
afterHandle(req: Request, res: Response, data: any) {
|
|
125
|
+
res.setHeader('X-Audited', 'true')
|
|
126
|
+
return { ...data, auditedAt: Date.now() }
|
|
127
|
+
}
|
|
128
|
+
|
|
99
129
|
// Chain step
|
|
100
130
|
requireAuth(req: Request, res: Response, next: Next) {
|
|
101
131
|
if (!req.headers['x-api-key']) {
|
|
@@ -219,3 +219,29 @@ If you are building a multi-tenant B2B application, do not boot multiple ExisJS
|
|
|
219
219
|
1. **Row-Level Tenancy (Recommended)**: Run a single `App` connected to a single database. Use request context or middleware to inject the `tenantId` and scope all queries via Prisma/SQL.
|
|
220
220
|
2. **Factory-Based Clients**: If you need true database-per-tenant isolation, do not use the zero-config singleton exports (like `import { db } from 'exisjs/prisma'`). Instead, manually construct the client factories inside a tenant-resolution middleware and attach them to the request context (`req.tenantDb`).
|
|
221
221
|
3. **Containerized Deployments**: Run separate Node.js processes (Docker containers) for each tenant, passing tenant-specific `DATABASE_URL`s to each container.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 9. Graceful Shutdown & Zero-Downtime Deployments
|
|
226
|
+
|
|
227
|
+
When deploying in Kubernetes, Docker Swarm, AWS ECS, or PM2, containers receive `SIGTERM` signals when being replaced. ExisJS handles graceful shutdown out of the box:
|
|
228
|
+
|
|
229
|
+
1. **Stops Accepting New Connections**: Immediately closes the server listener so load balancers stop routing new traffic to the terminating instance.
|
|
230
|
+
2. **Closes Idle Keep-Alive Connections**: Closes lingering idle HTTP keep-alive sockets instantly via `server.closeIdleConnections()`, preventing the process from hanging.
|
|
231
|
+
3. **Drains In-Flight Requests**: Grants in-flight requests time to finish before terminating.
|
|
232
|
+
4. **Lifecycle Teardown**: Automatically invokes your application's `onStop(app)` hook so you can cleanly disconnect databases, Redis pools, or message brokers.
|
|
233
|
+
|
|
234
|
+
```typescript filename="src/http/server.ts"
|
|
235
|
+
import { exis } from 'exisjs'
|
|
236
|
+
import { db } from './db'
|
|
237
|
+
|
|
238
|
+
export default exis({
|
|
239
|
+
async onStart(app) {
|
|
240
|
+
await db.connect()
|
|
241
|
+
},
|
|
242
|
+
async onStop(app) {
|
|
243
|
+
// Cleanly close database pools when SIGTERM or SIGINT is received
|
|
244
|
+
await db.disconnect()
|
|
245
|
+
}
|
|
246
|
+
})
|
|
247
|
+
```
|
|
@@ -159,9 +159,45 @@ To keep your codebase clean and consistent, use this decision tree when deciding
|
|
|
159
159
|
|
|
160
160
|
## Extended Error Handling
|
|
161
161
|
|
|
162
|
-
ExisJS provides mechanisms for granular error handling.
|
|
162
|
+
ExisJS provides mechanisms for granular and centralized error handling.
|
|
163
163
|
|
|
164
|
-
### 1. Exception
|
|
164
|
+
### 1. Framework-Level Exception Handler (`src/http/error.ts`)
|
|
165
|
+
|
|
166
|
+
Instead of writing manual `try/catch` blocks in every route or calling `app.onError` inside `server.ts`, ExisJS natively discovers and auto-mounts `src/http/error.ts` (or `error.js`).
|
|
167
|
+
|
|
168
|
+
Export an `onError(err, req, res)` function to centrally format, log, and respond to all unhandled exceptions and validation errors:
|
|
169
|
+
|
|
170
|
+
```typescript filename="src/http/error.ts"
|
|
171
|
+
import type { Request, Response } from 'exisjs'
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Global Exception Handler for ExisJS
|
|
175
|
+
* Auto-mounted at startup to intercept all unhandled exceptions.
|
|
176
|
+
*/
|
|
177
|
+
export function onError(err: any, req: Request, res: Response) {
|
|
178
|
+
const status = err.statusCode || err.status || 500
|
|
179
|
+
|
|
180
|
+
// Centralized structured error response
|
|
181
|
+
res.status(status).json({
|
|
182
|
+
success: false,
|
|
183
|
+
error: {
|
|
184
|
+
code: err.code || 'INTERNAL_ERROR',
|
|
185
|
+
message: err.message || 'Internal Server Error',
|
|
186
|
+
path: req.path,
|
|
187
|
+
},
|
|
188
|
+
})
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
> [!TIP]
|
|
193
|
+
> You can also scaffold this file instantly via the CLI:
|
|
194
|
+
> ```bash
|
|
195
|
+
> exis generate error
|
|
196
|
+
> # or shorthand:
|
|
197
|
+
> exis g error
|
|
198
|
+
> ```
|
|
199
|
+
|
|
200
|
+
### 2. Exception Filters (`catchError`)
|
|
165
201
|
|
|
166
202
|
ExisJS allows you to create **Exception Filters** to globally intercept specific types of errors.
|
|
167
203
|
|
|
@@ -303,19 +303,52 @@ const language = req.acceptsLanguages('en', 'es', 'fr')
|
|
|
303
303
|
|
|
304
304
|
---
|
|
305
305
|
|
|
306
|
-
##
|
|
306
|
+
## 7. Network Information & IPv6 Normalization
|
|
307
307
|
|
|
308
|
-
ExisJS handles trust-proxies. If you are behind Cloudflare, Nginx, or an AWS Load Balancer, simply set `trustProxy: true` in your `exis()` config, and these properties will automatically resolve the true client IP from `X-Forwarded-For`.
|
|
308
|
+
ExisJS handles trust-proxies and dual-stack IP networks automatically. If you are behind Cloudflare, Nginx, or an AWS Load Balancer, simply set `trustProxy: true` in your `exis()` config, and these properties will automatically resolve the true client IP from `X-Forwarded-For`.
|
|
309
309
|
|
|
310
|
-
- **`req.ip`**: The client's IP address.
|
|
311
|
-
- **`req.ips`**: An array of IPs if multiple proxies were traversed.
|
|
310
|
+
- **`req.ip`**: The client's IP address. Automatically normalizes IPv6-mapped IPv4 dual-stack addresses (e.g., `::ffff:192.168.1.50` $\to$ `192.168.1.50`) and converts IPv6 loopback `::1` $\to$ `127.0.0.1` for consistent rate limiting and geo-IP lookups.
|
|
311
|
+
- **`req.ips`**: An array of IPs if multiple proxies were traversed, each normalized cleanly.
|
|
312
312
|
- **`req.hostname`**: The resolved hostname (from `Host` or `X-Forwarded-Host`).
|
|
313
313
|
- **`req.protocol`**: Returns `'http'` or `'https'`.
|
|
314
314
|
- **`req.secure`**: A boolean (true if `req.protocol === 'https'`).
|
|
315
315
|
|
|
316
316
|
---
|
|
317
317
|
|
|
318
|
-
##
|
|
318
|
+
## 8. Request Cancellation & Abort Signals (`req.signal`)
|
|
319
|
+
|
|
320
|
+
ExisJS provides a first-class standard Web API `req.signal: AbortSignal` tied directly to the underlying HTTP connection lifecycle.
|
|
321
|
+
|
|
322
|
+
When a client closes their browser tab, cancels a download, or aborts an HTTP request, `req.signal` immediately triggers an `abort` event. You can pass `req.signal` directly to ORMs, database drivers, and HTTP clients to cancel expensive in-flight operations and eliminate wasted server resources.
|
|
323
|
+
|
|
324
|
+
#### Example: Passing to Database Queries & Upstream Fetches
|
|
325
|
+
|
|
326
|
+
```typescript filename="src/http/reports/route.ts"
|
|
327
|
+
import { controller, route } from 'exisjs/router'
|
|
328
|
+
|
|
329
|
+
export default controller({
|
|
330
|
+
heavyReport: route.get('/', {
|
|
331
|
+
async handle({ req }) {
|
|
332
|
+
// 1. Pass req.signal to fetch() — if the client leaves, fetch aborts immediately
|
|
333
|
+
const upstream = await fetch('https://api.external.com/data', {
|
|
334
|
+
signal: req.signal
|
|
335
|
+
})
|
|
336
|
+
const payload = await upstream.json()
|
|
337
|
+
|
|
338
|
+
// 2. Pass req.signal to your database queries (Prisma, Drizzle, pg, etc.)
|
|
339
|
+
const results = await db.query(sql`SELECT * FROM heavy_analytics`, {
|
|
340
|
+
signal: req.signal
|
|
341
|
+
})
|
|
342
|
+
|
|
343
|
+
return { payload, results }
|
|
344
|
+
}
|
|
345
|
+
})
|
|
346
|
+
})
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## 9. Context & Metadata
|
|
319
352
|
|
|
320
353
|
As your request moves through ExisJS Middlewares, various properties are attached to `req` for your convenience:
|
|
321
354
|
|