exisjs 0.7.12 → 0.7.13
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 +195 -39
- package/dist/config/types.d.ts +2 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/decorators/params.d.ts +21 -0
- package/dist/decorators/params.d.ts.map +1 -1
- package/dist/decorators/params.js +21 -1
- package/dist/decorators/params.js.map +1 -1
- package/dist/di/container.d.ts +15 -6
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +26 -3
- package/dist/di/container.js.map +1 -1
- package/dist/di/index.d.ts +1 -1
- package/dist/di/index.d.ts.map +1 -1
- package/dist/di/index.js.map +1 -1
- package/dist/di/inject.d.ts +2 -1
- package/dist/di/inject.d.ts.map +1 -1
- package/dist/di/inject.js +2 -1
- package/dist/di/inject.js.map +1 -1
- package/dist/docs/BENCHMARKS.md +4 -4
- package/dist/docs/content/README.md +43 -44
- package/dist/docs/content/boundaries.mdx +138 -61
- package/dist/docs/content/cli/commands.mdx +151 -128
- package/dist/docs/content/cli/overview.mdx +61 -47
- package/dist/docs/content/cli/usage.mdx +107 -30
- package/dist/docs/content/config.mdx +145 -158
- package/dist/docs/content/controllers.mdx +193 -464
- package/dist/docs/content/cron.mdx +183 -69
- package/dist/docs/content/decorators.mdx +449 -154
- package/dist/docs/content/errors.mdx +202 -305
- package/dist/docs/content/exisjs-mcp.mdx +59 -49
- package/dist/docs/content/installation.mdx +243 -157
- package/dist/docs/content/introduction.mdx +220 -48
- package/dist/docs/content/middleware.mdx +171 -497
- package/dist/docs/content/modules.mdx +141 -83
- package/dist/docs/content/providers.mdx +216 -180
- package/dist/docs/content/requests.mdx +168 -488
- package/dist/docs/content/responses.mdx +200 -533
- package/dist/docs/content/routing.mdx +235 -598
- package/dist/docs/content/security.mdx +233 -57
- package/dist/docs/content/structure.mdx +151 -240
- package/dist/docs/content/swagger.mdx +192 -91
- package/dist/docs/content/testing.mdx +205 -74
- package/dist/docs/content/validation.mdx +479 -341
- package/dist/docs/reference/README.md +34 -2
- package/dist/docs/reference/config.mdx +277 -75
- package/dist/docs/reference/context.mdx +197 -106
- package/dist/docs/reference/cron.mdx +266 -152
- package/dist/docs/reference/database.mdx +135 -53
- package/dist/docs/reference/decorators.mdx +234 -116
- package/dist/docs/reference/di.mdx +146 -112
- package/dist/docs/reference/error.mdx +155 -178
- package/dist/docs/reference/exis.mdx +141 -70
- package/dist/docs/reference/logger.mdx +110 -126
- package/dist/docs/reference/middleware.mdx +235 -158
- package/dist/docs/reference/plugin.mdx +136 -64
- package/dist/docs/reference/router.mdx +275 -293
- package/dist/docs/reference/sanitize.mdx +91 -87
- package/dist/docs/reference/swagger.mdx +280 -100
- package/dist/docs/reference/testing.mdx +223 -89
- package/dist/docs/reference/validator.mdx +194 -206
- package/dist/lib/start-server.js +3 -8
- package/dist/lib/start-server.js.map +1 -1
- package/dist/module/module.d.ts +6 -3
- package/dist/module/module.d.ts.map +1 -1
- package/dist/module/module.js +17 -3
- package/dist/module/module.js.map +1 -1
- package/dist/router/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +26 -4
- package/dist/router/controller-registrar.js.map +1 -1
- package/dist/server/app.d.ts +3 -1
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +24 -8
- package/dist/server/app.js.map +1 -1
- package/dist/server/request.d.ts +2 -0
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +11 -0
- package/dist/server/request.js.map +1 -1
- package/dist/swagger/generator.d.ts.map +1 -1
- package/dist/swagger/generator.js +130 -10
- package/dist/swagger/generator.js.map +1 -1
- package/dist/telemetry/index.d.ts +12 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +121 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/testing/client.d.ts +1 -0
- package/dist/testing/client.d.ts.map +1 -1
- package/dist/testing/client.js +4 -1
- package/dist/testing/client.js.map +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +11 -4
- package/dist/testing/index.js.map +1 -1
- package/dist/validator/builder.d.ts +26 -1
- package/dist/validator/builder.d.ts.map +1 -1
- package/dist/validator/builder.js +31 -0
- package/dist/validator/builder.js.map +1 -1
- package/dist/validator/engine.d.ts +23 -0
- package/dist/validator/engine.d.ts.map +1 -1
- package/dist/validator/engine.js +228 -31
- package/dist/validator/engine.js.map +1 -1
- package/dist/validator/index.d.ts +8 -4
- package/dist/validator/index.d.ts.map +1 -1
- package/dist/validator/index.js +4 -1
- package/dist/validator/index.js.map +1 -1
- package/dist/validator/tex-types.d.ts +15 -0
- package/dist/validator/tex-types.d.ts.map +1 -1
- package/dist/validator/tex-types.js +102 -0
- package/dist/validator/tex-types.js.map +1 -1
- package/dist/validator/tex.d.ts +1 -1
- package/dist/validator/tex.d.ts.map +1 -1
- package/dist/validator/tex.js +3 -1
- package/dist/validator/tex.js.map +1 -1
- package/dist/validator/types.d.ts +1 -0
- package/dist/validator/types.d.ts.map +1 -1
- package/package.json +46 -14
- package/dist/docs/content/dataloader.mdx +0 -170
- package/dist/docs/reference/dataloader.mdx +0 -91
|
@@ -1,3 +1,35 @@
|
|
|
1
|
-
# Reference
|
|
1
|
+
# ExisJS API Reference Catalog
|
|
2
2
|
|
|
3
|
-
This
|
|
3
|
+
This directory contains complete, information-dense API references, TypeScript interfaces, and method signatures for all public packages and subpath exports in the ExisJS framework.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Reference Index
|
|
8
|
+
|
|
9
|
+
| Module / Entrypoint | Document | Description |
|
|
10
|
+
| :------------------ | :------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| `exisjs` | [`exis.mdx`](file:///z:/projects/framework/exisjs/docs/reference/exis.mdx) | Root application builder (`exis` / `defineApp`), `App` instance methods, and process resolvers. |
|
|
12
|
+
| `exisjs/config` | [`config.mdx`](file:///z:/projects/framework/exisjs/docs/reference/config.mdx) | Configuration schema (`ExisConfig`, `WatchConfig`, `DevConfig`), environment parsing, and phases. |
|
|
13
|
+
| `exisjs/router` | [`router.mdx`](file:///z:/projects/framework/exisjs/docs/reference/router.mdx) | Functional route builder (`route.*`, `controller`), `Router` engine, and request/response types. |
|
|
14
|
+
| `exisjs/decorators` | [`decorators.mdx`](file:///z:/projects/framework/exisjs/docs/reference/decorators.mdx) | Class, method, and parameter decorators for OOP architecture (`@Controller`, `@Get`, `@Body`). |
|
|
15
|
+
| `exisjs/validator` | [`validator.mdx`](file:///z:/projects/framework/exisjs/docs/reference/validator.mdx) | `TexEngine` validator suite (`tex.*`), schema modifiers (`.optional()`, `.default()`), and pipes. |
|
|
16
|
+
| `exisjs/database` | [`database.mdx`](file:///z:/projects/framework/exisjs/docs/reference/database.mdx) | Database lifecycle coordinator (`registerDatabase`, `DatabaseManager`), and transactions. |
|
|
17
|
+
| `exisjs/logger` | [`logger.mdx`](file:///z:/projects/framework/exisjs/docs/reference/logger.mdx) | Structured Pino logger interface, log levels, sensitive credential redaction, and formatters. |
|
|
18
|
+
| `exisjs/di` | [`di.mdx`](file:///z:/projects/framework/exisjs/docs/reference/di.mdx) | Inversion of Control `Container`, dependency injection tokens, `inject()`, and `forwardRef()`. |
|
|
19
|
+
| `exisjs/error` | [`error.mdx`](file:///z:/projects/framework/exisjs/docs/reference/error.mdx) | HTTP exception hierarchy (`HttpError`, `BadRequestException`), error codes, and JSON envelopes. |
|
|
20
|
+
| `exisjs/middleware` | [`middleware.mdx`](file:///z:/projects/framework/exisjs/docs/reference/middleware.mdx) | Built-in middleware suite: Helmet, CORS, CSRF, rate limiting, IP filtering, and multipart uploads. |
|
|
21
|
+
| `exisjs/context` | [`context.mdx`](file:///z:/projects/framework/exisjs/docs/reference/context.mdx) | `AsyncLocalStorage` request context API (`getRequest`, `getResponse`, `getContext`, `after`). |
|
|
22
|
+
| `exisjs/cron` | [`cron.mdx`](file:///z:/projects/framework/exisjs/docs/reference/cron.mdx) | Task scheduler (`cron()`, `@Cron()`), interval timers, presets, and `CronManager` runtime controls. |
|
|
23
|
+
| `exisjs/sanitize` | [`sanitize.mdx`](file:///z:/projects/framework/exisjs/docs/reference/sanitize.mdx) | Rust-accelerated security cleaners (`escapeHtml`, `preventSql`) and data transform utilities. |
|
|
24
|
+
| `exisjs/swagger` | [`swagger.mdx`](file:///z:/projects/framework/exisjs/docs/reference/swagger.mdx) | OpenAPI 3.1 specification generation, Swagger UI / Scalar interactive rendering, and decorators. |
|
|
25
|
+
| `exisjs/testing` | [`testing.mdx`](file:///z:/projects/framework/exisjs/docs/reference/testing.mdx) | Test runner (`node:test`), synthetic HTTP client (`createTestApp`), `expect` matchers, and `ex` mocks. |
|
|
26
|
+
| `exisjs/plugin` | [`plugin.mdx`](file:///z:/projects/framework/exisjs/docs/reference/plugin.mdx) | Modular plugin development (`definePlugin`), lifecycle hooks, and dependency encapsulation. |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Diátaxis Alignment
|
|
31
|
+
|
|
32
|
+
The reference documents in this directory are structured strictly for **lookup and precision** according to the Diátaxis framework:
|
|
33
|
+
|
|
34
|
+
- **Information-Dense**: Method signatures, return types, and default option tables.
|
|
35
|
+
- **Accurate & Tested**: 100% verified against monorepo source files under `packages/exisjs/src/*`.
|
|
@@ -1,131 +1,333 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description:
|
|
2
|
+
title: "exisjs/config"
|
|
3
|
+
description: "API Reference for ExisJS global configuration (exis.config.ts), defineConfig helper, configuration phases, and environment loader utilities."
|
|
4
|
+
nextUrl: "/docs/reference/router"
|
|
5
|
+
nextTitle: "Router Reference"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
#
|
|
8
|
+
# `exisjs/config`
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
The `exisjs/config` module exposes configuration types, Phase constants, the `defineConfig()` helper, and environment-loading utilities used by `exis.config.ts` and runtime server initializers.
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Module Exports
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import {
|
|
18
|
+
defineConfig,
|
|
19
|
+
mergeConfig,
|
|
20
|
+
loadConfig,
|
|
21
|
+
defaultConfig,
|
|
22
|
+
loadEnv,
|
|
23
|
+
processEnv,
|
|
24
|
+
resetEnv,
|
|
25
|
+
parseEnv,
|
|
26
|
+
PHASE_DEVELOPMENT_SERVER,
|
|
27
|
+
PHASE_PRODUCTION_BUILD,
|
|
28
|
+
PHASE_PRODUCTION_SERVER,
|
|
29
|
+
PHASE_TEST,
|
|
30
|
+
} from 'exisjs/config'
|
|
31
|
+
|
|
32
|
+
import type {
|
|
33
|
+
ExisConfig,
|
|
34
|
+
ResolvedConfig,
|
|
35
|
+
CorsConfig,
|
|
36
|
+
LoggerConfig,
|
|
37
|
+
HelmetConfig,
|
|
38
|
+
KeepAliveConfig,
|
|
39
|
+
TelemetryConfig,
|
|
40
|
+
MetricsConfig,
|
|
41
|
+
HealthCheckConfig,
|
|
42
|
+
SwaggerConfig,
|
|
43
|
+
WatchConfig,
|
|
44
|
+
DevConfig,
|
|
45
|
+
} from 'exisjs/config'
|
|
46
|
+
```
|
|
11
47
|
|
|
12
48
|
---
|
|
13
49
|
|
|
14
|
-
##
|
|
50
|
+
## `defineConfig(config)`
|
|
15
51
|
|
|
16
|
-
|
|
52
|
+
A type-helper function that returns the passed `ExisConfig` object without modifications, providing TypeScript autocompletion and validation in IDEs.
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
function defineConfig(config: ExisConfig): ExisConfig
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Static Configuration Example
|
|
17
59
|
|
|
18
60
|
```typescript filename="exis.config.ts"
|
|
19
|
-
import
|
|
61
|
+
import { defineConfig } from 'exisjs/config'
|
|
20
62
|
|
|
21
|
-
|
|
22
|
-
port:
|
|
63
|
+
export default defineConfig({
|
|
64
|
+
port: 4000,
|
|
23
65
|
host: '0.0.0.0',
|
|
24
|
-
|
|
25
66
|
cors: {
|
|
26
|
-
origin:
|
|
67
|
+
origin: ['https://example.com', 'https://admin.example.com'],
|
|
27
68
|
credentials: true,
|
|
69
|
+
methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],
|
|
70
|
+
},
|
|
71
|
+
helmet: {
|
|
72
|
+
enabled: true,
|
|
73
|
+
contentSecurityPolicy: true,
|
|
74
|
+
xFrameOptions: 'SAMEORIGIN',
|
|
28
75
|
},
|
|
29
|
-
|
|
30
76
|
logger: {
|
|
31
|
-
level: '
|
|
32
|
-
pretty:
|
|
77
|
+
level: 'info',
|
|
78
|
+
pretty: false,
|
|
79
|
+
redact: ['req.headers.authorization', 'req.headers.cookie'],
|
|
33
80
|
},
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
driver: 'memory',
|
|
81
|
+
cluster: {
|
|
82
|
+
workers: 'safe',
|
|
37
83
|
},
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
test: {
|
|
43
|
-
include: ['tests/**/*.test.ts'],
|
|
84
|
+
telemetry: {
|
|
85
|
+
enabled: true,
|
|
86
|
+
serviceName: 'order-service',
|
|
87
|
+
exporter: 'otlp',
|
|
44
88
|
},
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
89
|
+
healthcheck: {
|
|
90
|
+
enabled: true,
|
|
91
|
+
path: '/healthz',
|
|
92
|
+
},
|
|
93
|
+
docs: {
|
|
94
|
+
enabled: true,
|
|
95
|
+
path: '/api/docs',
|
|
96
|
+
title: 'Order Service API',
|
|
97
|
+
version: '1.0.0',
|
|
98
|
+
},
|
|
99
|
+
})
|
|
48
100
|
```
|
|
49
101
|
|
|
50
102
|
---
|
|
51
103
|
|
|
52
|
-
##
|
|
104
|
+
## Dynamic Phase-Based Configuration
|
|
53
105
|
|
|
54
|
-
|
|
106
|
+
You can export an asynchronous function from `exis.config.ts`. ExisJS passes the active phase string as the first argument, allowing you to alter settings depending on whether the application is running in development, building for production, running in production, or executing tests.
|
|
55
107
|
|
|
56
108
|
```typescript filename="exis.config.ts"
|
|
57
|
-
import {
|
|
58
|
-
|
|
59
|
-
|
|
109
|
+
import {
|
|
110
|
+
defineConfig,
|
|
111
|
+
PHASE_DEVELOPMENT_SERVER,
|
|
112
|
+
PHASE_PRODUCTION_BUILD,
|
|
113
|
+
PHASE_PRODUCTION_SERVER,
|
|
114
|
+
PHASE_TEST,
|
|
115
|
+
} from 'exisjs/config'
|
|
116
|
+
|
|
117
|
+
export default async function (phase: string, { defaultConfig }: { defaultConfig: any }) {
|
|
60
118
|
const isDev = phase === PHASE_DEVELOPMENT_SERVER
|
|
119
|
+
const isTest = phase === PHASE_TEST
|
|
61
120
|
|
|
62
121
|
return defineConfig({
|
|
63
|
-
port: Number(process.env.PORT) || 4000,
|
|
122
|
+
port: isTest ? 0 : Number(process.env.PORT) || 4000,
|
|
123
|
+
host: '0.0.0.0',
|
|
64
124
|
|
|
65
|
-
//
|
|
66
|
-
|
|
125
|
+
// Spawn 1 worker in dev, safe CPU count in production
|
|
126
|
+
cluster: {
|
|
127
|
+
workers: isDev || isTest ? 1 : 'safe',
|
|
128
|
+
},
|
|
67
129
|
|
|
68
|
-
//
|
|
130
|
+
// Permissive CORS in local development, strict origins in production
|
|
69
131
|
cors: {
|
|
70
|
-
origin: isDev ? '*' : 'https://
|
|
132
|
+
origin: isDev ? '*' : ['https://app.example.com'],
|
|
71
133
|
credentials: true,
|
|
72
134
|
},
|
|
73
|
-
helmet: { enabled: true },
|
|
74
|
-
logger: isDev ? { level: 'debug', pretty: true } : false,
|
|
75
135
|
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
136
|
+
// Human-readable logs in development, JSON structured logs in production
|
|
137
|
+
logger: isDev
|
|
138
|
+
? { level: 'debug', pretty: true }
|
|
139
|
+
: isTest
|
|
140
|
+
? false
|
|
141
|
+
: { level: 'info', pretty: false },
|
|
142
|
+
|
|
143
|
+
// Enable API documentation in development only
|
|
144
|
+
docs: {
|
|
145
|
+
enabled: isDev,
|
|
146
|
+
path: '/docs',
|
|
147
|
+
},
|
|
80
148
|
})
|
|
81
149
|
}
|
|
82
150
|
```
|
|
83
151
|
|
|
152
|
+
### Phase Constants
|
|
153
|
+
|
|
154
|
+
| Constant | Value | Triggered When |
|
|
155
|
+
| :--- | :--- | :--- |
|
|
156
|
+
| `PHASE_DEVELOPMENT_SERVER` | `'phase-development-server'` | Executing `npx exisjs dev` |
|
|
157
|
+
| `PHASE_PRODUCTION_BUILD` | `'phase-production-build'` | Executing `npx exisjs build` |
|
|
158
|
+
| `PHASE_PRODUCTION_SERVER` | `'phase-production-server'` | Executing `npx exisjs start` |
|
|
159
|
+
| `PHASE_TEST` | `'phase-test'` | Executing `npx exisjs test` |
|
|
160
|
+
|
|
84
161
|
---
|
|
85
162
|
|
|
86
|
-
##
|
|
163
|
+
## `ExisConfig` Interface Reference
|
|
164
|
+
|
|
165
|
+
The root configuration schema accepted by `exis.config.ts`:
|
|
166
|
+
|
|
167
|
+
### Network & Core Server Options
|
|
168
|
+
|
|
169
|
+
| Property | Type | Default | Description |
|
|
170
|
+
| :--- | :--- | :--- | :--- |
|
|
171
|
+
| `port` | `number` | `4000` | Port for the HTTP server to listen on. Can be overridden via CLI `-p`. |
|
|
172
|
+
| `host` | `string` | `'0.0.0.0'` | Network interface binding. |
|
|
173
|
+
| `server` | `'auto' \| 'node' \| 'bun' \| 'uws'` | `'auto'` | HTTP server backend. Automatically selects Bun or Node when detected. |
|
|
174
|
+
| `cluster` | `{ workers?: number \| 'auto' \| 'safe' \| 'max' }` | `{ workers: 1 }` | Multi-process worker clustering. `'safe'` uses available CPU cores minus 1; `'max'` uses all available cores. |
|
|
175
|
+
| `trustProxy` | `boolean \| number` | `false` | Enables reverse-proxy IP headers (`X-Forwarded-For`, `CF-Connecting-IP`, `True-Client-IP`). |
|
|
176
|
+
| `bodyLimit` | `number` | `10485760` (10MB) | Maximum payload size in bytes for JSON and URL-encoded request bodies. |
|
|
177
|
+
| `compression` | `boolean` | `false` | Enables gzip and Brotli response compression. |
|
|
178
|
+
| `etag` | `boolean` | `false` | Enables ETag computation for dynamic responses. |
|
|
179
|
+
| `debugRouting` | `boolean` | `false` | Logs the matched file-system route file and applied boundaries for every request. |
|
|
180
|
+
| `asyncContext` | `boolean` | `false` | Enables `AsyncLocalStorage` context tracking (`getContext()`). |
|
|
181
|
+
| `transformResponse` | `boolean \| ((data: any, req: any, res: any) => any)` | `false` | Global transformation function to wrap route responses in a standardized envelope. |
|
|
182
|
+
|
|
183
|
+
### Security & Middlewares
|
|
184
|
+
|
|
185
|
+
| Property | Type | Default | Description |
|
|
186
|
+
| :--- | :--- | :--- | :--- |
|
|
187
|
+
| `cors` | `boolean \| CorsConfig` | `{ origin: '*', methods: ['GET', 'POST', ...] }` | Cross-Origin Resource Sharing settings. Set to `false` to disable. |
|
|
188
|
+
| `helmet` | `boolean \| HelmetConfig` | `{ enabled: true }` | Strict security response headers (CSP, X-Frame-Options, X-Content-Type-Options). |
|
|
189
|
+
| `logger` | `boolean \| LoggerConfig` | `false` | Pino structured logger configuration with automatic credential redaction. |
|
|
190
|
+
| `blockSuspiciousProbes` | `boolean \| BlockProbesOptions` | `false` | Automatically drops requests targeting known exploit paths (`.env`, `.git`, `wp-admin`). |
|
|
191
|
+
| `keepAlive` | `boolean \| KeepAliveConfig` | `false` | HTTP keep-alive timeout and connection socket limits. |
|
|
192
|
+
|
|
193
|
+
### Observability & Diagnostics
|
|
194
|
+
|
|
195
|
+
| Property | Type | Default | Description |
|
|
196
|
+
| :--- | :--- | :--- | :--- |
|
|
197
|
+
| `telemetry` | `boolean \| TelemetryConfig` | `{ enabled: false, exporter: 'console' }` | OpenTelemetry tracing and span reporting (`'otlp'` or `'console'`). |
|
|
198
|
+
| `metrics` | `boolean \| MetricsConfig` | `{ enabled: false, path: '/metrics' }` | Prometheus-compatible metrics endpoint. |
|
|
199
|
+
| `healthcheck` | `boolean \| HealthCheckConfig` | `{ enabled: false, path: '/_health' }` | Liveness and readiness health probe route. |
|
|
200
|
+
| `docs` | `boolean \| SwaggerConfig` | `{ enabled: false, path: '/docs' }` | Interactive OpenAPI / Swagger UI documentation generation. |
|
|
87
201
|
|
|
88
|
-
|
|
202
|
+
### Development & File Watching
|
|
89
203
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
204
|
+
| Property | Type | Default | Description |
|
|
205
|
+
| :--- | :--- | :--- | :--- |
|
|
206
|
+
| `watch` | `WatchConfig` | `{ debounceMs: 250 }` | File watching paths, patterns, and debounce timings. |
|
|
207
|
+
| `dev` | `DevConfig` | `{ usePolling: true }` | Development server settings, including chokidar polling interval for Windows environments. |
|
|
208
|
+
| `plugins` | `ExisPlugin[]` | `[]` | Array of framework plugins to initialize during application bootstrap. |
|
|
209
|
+
| `test` | `TestConfig` | `{ include: ['tests/**/*.test.ts'] }` | Test file matching patterns and setup file scripts. |
|
|
94
210
|
|
|
95
211
|
---
|
|
96
212
|
|
|
97
|
-
## Configuration
|
|
213
|
+
## Sub-Configuration Interfaces
|
|
98
214
|
|
|
99
|
-
|
|
215
|
+
### `CorsConfig`
|
|
100
216
|
|
|
101
|
-
|
|
217
|
+
```typescript
|
|
218
|
+
export interface CorsConfig {
|
|
219
|
+
origin?: boolean | string | RegExp | (string | RegExp)[] | CorsOriginFn
|
|
220
|
+
methods?: string[]
|
|
221
|
+
allowedHeaders?: string[]
|
|
222
|
+
exposedHeaders?: string[]
|
|
223
|
+
credentials?: boolean
|
|
224
|
+
maxAge?: number
|
|
225
|
+
preflightContinue?: boolean
|
|
226
|
+
}
|
|
227
|
+
```
|
|
102
228
|
|
|
103
|
-
|
|
104
|
-
- **`host`** _(string)_: The host interface to bind to (default: `'0.0.0.0'`).
|
|
105
|
-
- **`server`** _(`'node' | 'uws' | 'auto'`)_: ExisJS supports running on standard Node `http`, or incredibly fast C++ `uWebSockets.js` (`uws`). Default is `'auto'` (uses `uws` if installed, falls back to `node`).
|
|
106
|
-
- **`workers`** _(number | `'safe'` | `'max'`)_: Number of Node.js Cluster workers to spawn. `'max'` uses all CPU cores. `'safe'` uses all cores minus 1 (to leave room for the OS).
|
|
107
|
-
- **`trustProxy`** _(boolean | number)_: Enable if running behind reverse proxies or CDNs (Cloudflare, AWS ALB, NGINX, Render) to evaluate `CF-Connecting-IP`, `True-Client-IP`, `X-Real-IP`, and `X-Forwarded-For`. (Can also be enabled via `TRUST_PROXY=true`).
|
|
229
|
+
### `LoggerConfig`
|
|
108
230
|
|
|
109
|
-
|
|
231
|
+
```typescript
|
|
232
|
+
export interface LoggerConfig {
|
|
233
|
+
level?: 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent'
|
|
234
|
+
pretty?: boolean
|
|
235
|
+
redact?: string[]
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### `HelmetConfig`
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
export interface HelmetConfig {
|
|
243
|
+
enabled?: boolean
|
|
244
|
+
contentSecurityPolicy?: boolean
|
|
245
|
+
xFrameOptions?: 'DENY' | 'SAMEORIGIN'
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### `TelemetryConfig`
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
export interface TelemetryConfig {
|
|
253
|
+
enabled: boolean
|
|
254
|
+
serviceName?: string
|
|
255
|
+
exporter?: 'otlp' | 'console'
|
|
256
|
+
endpoint?: string
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### `HealthCheckConfig`
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
export interface HealthCheckConfig {
|
|
264
|
+
enabled: boolean
|
|
265
|
+
path?: string
|
|
266
|
+
checks?: (() => Promise<boolean>)[]
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### `SwaggerConfig`
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
export interface SwaggerConfig {
|
|
274
|
+
enabled?: boolean
|
|
275
|
+
path?: string
|
|
276
|
+
specPath?: string
|
|
277
|
+
title?: string
|
|
278
|
+
version?: string
|
|
279
|
+
description?: string
|
|
280
|
+
scalar?: boolean
|
|
281
|
+
}
|
|
282
|
+
```
|
|
110
283
|
|
|
111
|
-
|
|
112
|
-
- **`helmet`** _(boolean | object)_: Enable strict security headers. Enabled by default.
|
|
113
|
-
- **`logger`** _(boolean | object)_: Configure the efficient Pino request logger.
|
|
114
|
-
- **`compression`** _(boolean | object)_: Enable gzip/brotli response compression.
|
|
115
|
-
- **`etag`** _(boolean)_: Automatic ETag generation for HTTP conditional requests (default: `false` for dynamic API routes).
|
|
116
|
-
- **`bodyLimit`** _(number)_: Maximum JSON/URL-encoded payload size in bytes (default: `10MB`).
|
|
284
|
+
### `WatchConfig` & `DevConfig`
|
|
117
285
|
|
|
118
|
-
|
|
286
|
+
```typescript
|
|
287
|
+
export interface WatchConfig {
|
|
288
|
+
paths?: string[]
|
|
289
|
+
ignore?: (string | RegExp)[]
|
|
290
|
+
extensions?: string[]
|
|
291
|
+
debounceMs?: number
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export interface DevConfig {
|
|
295
|
+
watch?: string[]
|
|
296
|
+
ignored?: (string | RegExp)[]
|
|
297
|
+
usePolling?: boolean
|
|
298
|
+
interval?: number
|
|
299
|
+
binaryInterval?: number
|
|
300
|
+
extensions?: string[]
|
|
301
|
+
debounceMs?: number
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Environment Utility Functions
|
|
308
|
+
|
|
309
|
+
The `exisjs/config` module also exports low-level environment-loading helpers used internally by the CLI:
|
|
119
310
|
|
|
120
|
-
|
|
121
|
-
- **`watch.ignore`** / **`dev.ignored`** _((string | RegExp)[])_: Additional files, extensions, or regex patterns to ignore during hot reload.
|
|
122
|
-
- **`watch.extensions`** / **`dev.extensions`** _(string[])_: Explicit file extensions that trigger reloads (defaults to `['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']`).
|
|
123
|
-
- **`watch.debounceMs`** / **`dev.debounceMs`** _(number)_: Debounce interval in ms before restarting the server (default: `250ms`).
|
|
124
|
-
- **`dev.usePolling`** _(boolean)_: Enables chokidar polling fallback (default: `true` on Windows).
|
|
125
|
-
- **`dev.interval`** _(number)_: Polling file system interval in milliseconds (default: `100`).
|
|
311
|
+
### `loadEnv(cwd?, mode?, override?)`
|
|
126
312
|
|
|
127
|
-
|
|
313
|
+
Loads cascading `.env` files from `cwd` based on the specified execution mode (`development`, `production`, `test`).
|
|
314
|
+
|
|
315
|
+
```typescript
|
|
316
|
+
import { loadEnv } from 'exisjs/config'
|
|
317
|
+
|
|
318
|
+
const envMap = loadEnv(process.cwd(), 'production')
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### `parseEnv(source)`
|
|
322
|
+
|
|
323
|
+
Parses raw `.env` string contents into a key-value record without mutating `process.env`.
|
|
324
|
+
|
|
325
|
+
```typescript
|
|
326
|
+
import { parseEnv } from 'exisjs/config'
|
|
327
|
+
|
|
328
|
+
const parsed = parseEnv(`
|
|
329
|
+
PORT=5000
|
|
330
|
+
DATABASE_URL=postgres://user:pass@localhost:5432/db
|
|
331
|
+
`)
|
|
332
|
+
```
|
|
128
333
|
|
|
129
|
-
- **`queue`**: Define your background queue driver (`memory` or `redis`) and configure `maxConcurrent` processing limits.
|
|
130
|
-
- **`plugins`**: An array of `ExisPlugin` instances to register natively into the framework.
|
|
131
|
-
- **`test`**: Configure testing environments (`include`, `exclude`, `setupFiles`, `coverage`).
|