exisjs 0.7.0 → 0.7.2
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 +9 -3
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +7 -0
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/resolve-aliases.d.ts +12 -0
- package/dist/cli/resolve-aliases.d.ts.map +1 -1
- package/dist/cli/resolve-aliases.js +82 -14
- package/dist/cli/resolve-aliases.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +4 -3
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +3 -2
- package/dist/config/env.js.map +1 -1
- package/dist/decorators/constants.d.ts +7 -0
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +2 -1
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/core/metadata.d.ts +31 -0
- package/dist/decorators/core/metadata.d.ts.map +1 -1
- package/dist/decorators/core/metadata.js +110 -1
- package/dist/decorators/core/metadata.js.map +1 -1
- package/dist/decorators/core.d.ts +16 -2
- package/dist/decorators/core.d.ts.map +1 -1
- package/dist/decorators/core.js +22 -0
- package/dist/decorators/core.js.map +1 -1
- package/dist/decorators/middleware.d.ts +17 -7
- package/dist/decorators/middleware.d.ts.map +1 -1
- package/dist/decorators/middleware.js +111 -183
- package/dist/decorators/middleware.js.map +1 -1
- package/dist/decorators/params.d.ts +54 -12
- package/dist/decorators/params.d.ts.map +1 -1
- package/dist/decorators/params.js +40 -20
- package/dist/decorators/params.js.map +1 -1
- package/dist/decorators/routing.d.ts.map +1 -1
- package/dist/decorators/routing.js +2 -1
- package/dist/decorators/routing.js.map +1 -1
- package/dist/di/container.d.ts +5 -1
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +56 -8
- package/dist/di/container.js.map +1 -1
- package/dist/di/decorators.d.ts +30 -0
- package/dist/di/decorators.d.ts.map +1 -0
- package/dist/di/decorators.js +59 -0
- package/dist/di/decorators.js.map +1 -0
- package/dist/di/index.d.ts +1 -0
- package/dist/di/index.d.ts.map +1 -1
- package/dist/di/index.js +4 -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.map +1 -1
- package/dist/docs/content/decorators.mdx +44 -10
- package/dist/docs/content/modules.mdx +22 -1
- package/dist/docs/content/providers.mdx +33 -1
- package/dist/docs/reference/decorators.mdx +14 -3
- package/dist/docs/reference/di.mdx +35 -11
- package/dist/docs/reference/logger.mdx +100 -0
- package/dist/docs/reference/router.mdx +9 -9
- package/dist/error/errors.d.ts.map +1 -1
- package/dist/error/errors.js +3 -5
- package/dist/error/errors.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/start-server.js +8 -0
- package/dist/lib/start-server.js.map +1 -1
- package/dist/middleware/rate-limit.d.ts +0 -2
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +2 -14
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/module/index.d.ts +2 -0
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +3 -1
- package/dist/module/index.js.map +1 -1
- package/dist/plugin/manager.d.ts +1 -1
- package/dist/plugin/manager.d.ts.map +1 -1
- package/dist/plugin/manager.js +47 -0
- package/dist/plugin/manager.js.map +1 -1
- package/dist/router/boundary.d.ts +5 -1
- package/dist/router/boundary.d.ts.map +1 -1
- package/dist/router/boundary.js.map +1 -1
- package/dist/router/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +33 -6
- package/dist/router/controller-registrar.js.map +1 -1
- package/dist/router/route-builder.d.ts +25 -19
- package/dist/router/route-builder.d.ts.map +1 -1
- package/dist/router/route-builder.js +2 -1
- package/dist/router/route-builder.js.map +1 -1
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +42 -23
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/server/app.d.ts +1 -1
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +1 -1
- package/dist/server/app.js.map +1 -1
- package/dist/server/response.d.ts.map +1 -1
- package/dist/server/response.js +2 -1
- package/dist/server/response.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -1
- package/dist/utils/logger.js.map +1 -1
- package/package.json +1 -1
|
@@ -132,18 +132,25 @@ export default class UsersController {
|
|
|
132
132
|
### Available Parameter Decorators
|
|
133
133
|
- `@Body(nameOrPipe?)` — Extracts `req.body` or runs through a validation schema/pipe.
|
|
134
134
|
- `@Param(nameOrPipe?)` — Extracts a route path param (e.g. `:id`).
|
|
135
|
+
- `@QueryParam(nameOrPipe?)` / `@Query(nameOrPipe?)` — Extracts a query parameter from the URL query string.
|
|
135
136
|
- `@Headers(nameOrPipe?)` — Extracts a request header by name.
|
|
136
137
|
- `@HostParam(nameOrPipe?)` — Extracts a host subdomain parameter.
|
|
137
138
|
- `@Req()` — Injects the raw request object.
|
|
138
139
|
- `@Res(options?)` — Injects the response object (e.g. `{ passthrough: true }`).
|
|
139
140
|
- `@Ip()` — Injects the client IP address.
|
|
140
141
|
- `@Next()` — Injects the `next` function.
|
|
142
|
+
- `createParamDecorator(factory)` — Creates custom reusable route parameter decorators:
|
|
143
|
+
```typescript
|
|
144
|
+
export const CurrentUser = createParamDecorator((data: string | undefined, ctx) => {
|
|
145
|
+
return data ? ctx.req.user?.[data] : ctx.req.user
|
|
146
|
+
})
|
|
147
|
+
```
|
|
141
148
|
|
|
142
149
|
---
|
|
143
150
|
|
|
144
151
|
## 4. Middleware & Pipeline Decorators
|
|
145
152
|
|
|
146
|
-
You can bind
|
|
153
|
+
You can bind middlewares, guards, interceptors, and exception filters to controllers or route methods using the unified `@Use()` decorator:
|
|
147
154
|
|
|
148
155
|
```typescript filename="src/http/checkout/route.ts"
|
|
149
156
|
import { Controller, Post, Use, Idempotent } from 'exisjs/decorators'
|
|
@@ -161,23 +168,25 @@ export default class CheckoutController {
|
|
|
161
168
|
```
|
|
162
169
|
|
|
163
170
|
### Available Lifecycle & Middleware Decorators
|
|
164
|
-
- `@Use(...
|
|
171
|
+
- `@Use(...items)` — Unified decorator that attaches middlewares, guards (`canActivate`), interceptors (`intercept`), or exception filters (`catch`) to a class or method.
|
|
165
172
|
- `@Idempotent(options?)` — Caches responses based on the `Idempotency-Key` header using off-heap native memory.
|
|
166
173
|
|
|
167
174
|
---
|
|
168
175
|
|
|
169
|
-
## 5. Response Modifiers
|
|
176
|
+
## 5. Response & Metadata Modifiers
|
|
170
177
|
|
|
171
178
|
Modify HTTP response status codes, redirect clients, or set headers declaratively:
|
|
172
179
|
|
|
173
180
|
```typescript filename="src/http/api/route.ts"
|
|
174
|
-
import { Controller, Post, Get, HttpCode, Header, Redirect } from 'exisjs/decorators'
|
|
181
|
+
import { Controller, Post, Get, HttpCode, Header, Redirect, SetMetadata, Reflector } from 'exisjs/decorators'
|
|
175
182
|
|
|
176
183
|
@Controller('/api')
|
|
184
|
+
@SetMetadata('roles', ['admin'])
|
|
177
185
|
export default class ApiController {
|
|
178
186
|
@Post('/create')
|
|
179
187
|
@HttpCode(201) // Forces 201 Created
|
|
180
188
|
@Header('X-Custom-Version', '2.0')
|
|
189
|
+
@SetMetadata('permissions', ['write:api'])
|
|
181
190
|
async create() {
|
|
182
191
|
return { success: true }
|
|
183
192
|
}
|
|
@@ -195,17 +204,19 @@ export default class ApiController {
|
|
|
195
204
|
- `@Redirect(url: string, statusCode?: number)` — Redirects the client.
|
|
196
205
|
- `@Permissions(...permissions: string[])` — Attaches route permissions metadata.
|
|
197
206
|
- `@Hosts(...hosts: string[])` — Restricts route/controller to specific Host headers.
|
|
207
|
+
- `@SetMetadata(key, value)` — Attaches custom metadata to a class or method.
|
|
208
|
+
- `Reflector` — Static utility to inspect metadata attached via `@SetMetadata` across classes and methods (`Reflector.get`, `Reflector.getAllAndOverride`, `Reflector.getAllAndMerge`).
|
|
198
209
|
|
|
199
210
|
---
|
|
200
211
|
|
|
201
|
-
## 6. Dependency Injection
|
|
212
|
+
## 6. Dependency Injection & Modules
|
|
202
213
|
|
|
203
|
-
To mark a service class as an injectable provider for the IoC container, use the `@Injectable()` decorator:
|
|
214
|
+
To mark a service class as an injectable provider for the IoC container, use the `@Injectable()` decorator. ExisJS supports `singleton` (default), `request`, and `transient` scopes:
|
|
204
215
|
|
|
205
216
|
```typescript filename="src/http/users/service.ts"
|
|
206
217
|
import { Injectable } from 'exisjs/decorators'
|
|
207
218
|
|
|
208
|
-
@Injectable({ scope: '
|
|
219
|
+
@Injectable({ scope: 'transient' })
|
|
209
220
|
export class UserService {
|
|
210
221
|
async fetchUser(id: string) {
|
|
211
222
|
return { id, name: 'Alice' }
|
|
@@ -213,15 +224,21 @@ export class UserService {
|
|
|
213
224
|
}
|
|
214
225
|
```
|
|
215
226
|
|
|
216
|
-
|
|
227
|
+
### Constructor Parameter Injection (`@Inject` & `@Optional`)
|
|
228
|
+
|
|
229
|
+
You can inject dependencies using tokens or classes, and mark optional dependencies with `@Optional()`:
|
|
217
230
|
|
|
218
231
|
```typescript filename="src/http/users/route.ts"
|
|
219
|
-
import { Controller, Get, Param } from 'exisjs/decorators'
|
|
232
|
+
import { Controller, Get, Param, Inject, Optional } from 'exisjs/decorators'
|
|
220
233
|
import { UserService } from './service'
|
|
221
234
|
|
|
222
235
|
@Controller('/users')
|
|
223
236
|
export default class UsersController {
|
|
224
|
-
constructor(
|
|
237
|
+
constructor(
|
|
238
|
+
private userService: UserService,
|
|
239
|
+
@Inject('DATABASE_URL') private dbUrl: string,
|
|
240
|
+
@Optional() @Inject('ANALYTICS_SERVICE') private analytics?: any
|
|
241
|
+
) {}
|
|
225
242
|
|
|
226
243
|
@Get('/:id')
|
|
227
244
|
async getUser(@Param('id') id: string) {
|
|
@@ -229,3 +246,20 @@ export default class UsersController {
|
|
|
229
246
|
}
|
|
230
247
|
}
|
|
231
248
|
```
|
|
249
|
+
|
|
250
|
+
### Application Modules (`@Module`)
|
|
251
|
+
|
|
252
|
+
You can group controllers, providers, and imports into high-level OOP modules using `@Module`:
|
|
253
|
+
|
|
254
|
+
```typescript filename="src/http/users/users.module.ts"
|
|
255
|
+
import { Module } from 'exisjs/module' // or 'exisjs/decorators'
|
|
256
|
+
import UsersController from './route'
|
|
257
|
+
import { UserService } from './service'
|
|
258
|
+
|
|
259
|
+
@Module({
|
|
260
|
+
controllers: [UsersController],
|
|
261
|
+
providers: [UserService],
|
|
262
|
+
exports: [UserService]
|
|
263
|
+
})
|
|
264
|
+
export class UsersModule {}
|
|
265
|
+
```
|
|
@@ -74,7 +74,28 @@ export default exis({
|
|
|
74
74
|
})
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
#### Class-Based (OOP) Paradigm (`@Module`)
|
|
80
|
+
|
|
81
|
+
For applications following the OOP paradigm, you can define modules using the `@Module` class decorator:
|
|
82
|
+
|
|
83
|
+
```typescript filename="src/modules/auth.module.ts"
|
|
84
|
+
import { Module } from 'exisjs/module'
|
|
85
|
+
import { AuthService } from './auth.service'
|
|
86
|
+
import { AuthController } from './auth.controller'
|
|
87
|
+
import { DatabaseModule } from './database.module'
|
|
88
|
+
|
|
89
|
+
@Module({
|
|
90
|
+
imports: [DatabaseModule],
|
|
91
|
+
controllers: [AuthController],
|
|
92
|
+
providers: [AuthService],
|
|
93
|
+
exports: [AuthService]
|
|
94
|
+
})
|
|
95
|
+
export class AuthModule {}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
You can then register it into your server:
|
|
78
99
|
|
|
79
100
|
```typescript filename="src/http/server.ts"
|
|
80
101
|
import { Server } from 'exisjs/decorators'
|
|
@@ -134,14 +134,46 @@ import { UsersService } from './users/service'
|
|
|
134
134
|
export default class RootServer {}
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
### Constructor Injection (`@Inject` and `@Optional`)
|
|
138
|
+
|
|
139
|
+
In addition to property-level `inject()`, ExisJS provides full OOP constructor parameter injection with `@Inject(token)` and `@Optional()`:
|
|
140
|
+
|
|
141
|
+
```typescript filename="src/http/users/route.ts"
|
|
142
|
+
import { Controller, Get, Param, Inject, Optional } from 'exisjs/decorators'
|
|
143
|
+
import { UsersService } from './service'
|
|
144
|
+
|
|
145
|
+
@Controller('/users')
|
|
146
|
+
export default class UsersController {
|
|
147
|
+
constructor(
|
|
148
|
+
private usersService: UsersService,
|
|
149
|
+
@Inject('DATABASE_URL') private dbUrl: string,
|
|
150
|
+
@Optional() @Inject('METRICS') private metrics?: any
|
|
151
|
+
) {}
|
|
152
|
+
|
|
153
|
+
@Get('/:id')
|
|
154
|
+
async getUser(@Param('id') id: string) {
|
|
155
|
+
return this.usersService.findAll()
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
137
160
|
## Injection Scopes
|
|
138
161
|
|
|
139
162
|
For people coming from different programming language backgrounds, it might be unexpected to learn that in ExisJS, almost everything is shared across incoming requests. We have a connection pool to the database, singleton services with global state, etc. This is because Node.js doesn't follow the request/response Multi-Threaded Stateless Model.
|
|
140
163
|
|
|
141
|
-
However, there are
|
|
164
|
+
However, there are use-cases when request-based or transient lifetime is desired. ExisJS supports three provider scopes in the `@Injectable()` decorator and `app.provide()`:
|
|
142
165
|
|
|
143
166
|
- **Singleton (Default)**: A single instance of the provider is shared across the entire application.
|
|
144
167
|
- **Request**: A new instance of the provider is created exclusively for each incoming request, and garbage collected afterward.
|
|
168
|
+
- **Transient**: A brand-new instance is created every single time the dependency is requested/injected.
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
@Injectable({ scope: 'transient' })
|
|
172
|
+
export class OperationContext {
|
|
173
|
+
public readonly id = crypto.randomUUID()
|
|
174
|
+
}
|
|
175
|
+
```
|
|
145
176
|
|
|
146
177
|
> [!WARNING]
|
|
147
178
|
> **Request Scope Constraints**: A provider marked as `scope: 'request'` **must** be resolved within the lifecycle of an active HTTP request. If you try to `inject()` or resolve a request-scoped provider during application startup, inside a background queue worker, or from a cron job, the container will throw a runtime error.
|
|
179
|
+
|
|
@@ -67,17 +67,19 @@ Parameter decorators automatically extract data from the incoming request and in
|
|
|
67
67
|
- `@Body(nameOrPipe?)`: Parses and injects the JSON request body (or passes it through a validator/pipe).
|
|
68
68
|
- `@Param(nameOrPipe?)`: Injects a URL path parameter (e.g., `id` from `/:id`).
|
|
69
69
|
- `@Headers(nameOrPipe?)`: Injects an HTTP header by name.
|
|
70
|
+
- `@QueryParam(nameOrPipe?)` / `@Query(nameOrPipe?)`: Injects a URL query parameter (e.g., `?search=term`).
|
|
70
71
|
- `@HostParam(nameOrPipe?)`: Injects a subdomain parameter.
|
|
71
72
|
- `@Req()`: Injects the raw ExisJS Request object.
|
|
72
73
|
- `@Res(options?)`: Injects the raw ExisJS Response object (`{ passthrough: true }`).
|
|
73
74
|
- `@Ip()`: Injects the client's IP address.
|
|
74
75
|
- `@Next()`: Injects the Next function.
|
|
76
|
+
- `createParamDecorator(factory)`: Exports a factory to create custom parameter decorators (e.g. `@CurrentUser()`).
|
|
75
77
|
|
|
76
78
|
---
|
|
77
79
|
|
|
78
80
|
## 3. Middleware & Pipeline Decorators
|
|
79
81
|
|
|
80
|
-
- `@Use(...
|
|
82
|
+
- `@Use(...middlewaresOrGuardsOrInterceptorsOrFilters)`: Unified decorator that binds middlewares, guards (`canActivate`), interceptors (`intercept`), or exception filters (`catch`) to a controller class or method.
|
|
81
83
|
- `@Idempotent(options?)`: Caches responses based on the `Idempotency-Key` header using native in-memory off-heap storage.
|
|
82
84
|
|
|
83
85
|
---
|
|
@@ -90,11 +92,20 @@ Parameter decorators automatically extract data from the incoming request and in
|
|
|
90
92
|
- `@Redirect(url: string, statusCode?: number)`: Redirects request to target URL.
|
|
91
93
|
- `@Permissions(...permissions: string[])`: Sets required permissions on the route.
|
|
92
94
|
- `@Hosts(...hosts: string[])`: Restricts routes to specific Host headers.
|
|
95
|
+
- `@SetMetadata(key, value)`: Attaches arbitrary custom metadata to a class or handler method, retrievable via `Reflector`.
|
|
96
|
+
- `Reflector`: Utility class to inspect metadata attached by `@SetMetadata`:
|
|
97
|
+
- `Reflector.get(key, target)`: Retrieves metadata for a specific target.
|
|
98
|
+
- `Reflector.getAllAndOverride(key, targets)`: Retrieves metadata, overriding higher-level targets with lower-level targets.
|
|
99
|
+
- `Reflector.getAllAndMerge(key, targets)`: Merges array/object metadata across multiple targets.
|
|
93
100
|
|
|
94
101
|
---
|
|
95
102
|
|
|
96
|
-
## 5. Dependency Injection
|
|
103
|
+
## 5. Dependency Injection & Modules
|
|
97
104
|
|
|
98
|
-
- `@
|
|
105
|
+
- `@Module({ imports?, controllers?, providers?, exports? })`: OOP class decorator equivalent to `defineModule()` for structuring application modules.
|
|
106
|
+
- `@Injectable(options?)`: Marks a service class as an IoC provider managed by the container. Supports `{ scope: 'singleton' | 'request' | 'transient' }`.
|
|
107
|
+
- `@Inject(token)`: Constructor parameter decorator for injecting dependencies by class, string, or symbol token.
|
|
108
|
+
- `@Optional()`: Constructor parameter decorator resolving missing dependencies to `undefined` without throwing.
|
|
99
109
|
- `@Boundary(config)`: Marks a class as a folder-scoped Boundary configuring CORS, headers, exclusions, and pipeline steps.
|
|
100
110
|
- `@Server(config)`: Marks a class as a root server definition.
|
|
111
|
+
|
|
@@ -51,17 +51,26 @@ app.provide(AuthService, AuthService)
|
|
|
51
51
|
|
|
52
52
|
---
|
|
53
53
|
|
|
54
|
-
## Scopes (`singleton
|
|
54
|
+
## Scopes (`singleton`, `request`, `transient`)
|
|
55
55
|
|
|
56
56
|
By default, all providers in ExisJS are **Singletons**. They are instantiated once and cached for the lifetime of the application.
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
ExisJS supports three provider scopes in the `@Injectable()` decorator and `app.provide()`:
|
|
59
|
+
|
|
60
|
+
- **`singleton` (Default)**: Instantiated once and cached for the lifetime of the application.
|
|
61
|
+
- **`request`**: A new instance is created exclusively for each incoming HTTP request, and garbage collected afterward.
|
|
62
|
+
- **`transient`**: A new instance is created every single time the dependency is injected or resolved.
|
|
59
63
|
|
|
60
64
|
```typescript
|
|
61
65
|
app.provide('TraceLogger', {
|
|
62
66
|
useClass: RequestScopedLogger,
|
|
63
67
|
scope: 'request'
|
|
64
68
|
})
|
|
69
|
+
|
|
70
|
+
app.provide('OperationContext', {
|
|
71
|
+
useClass: OperationContext,
|
|
72
|
+
scope: 'transient'
|
|
73
|
+
})
|
|
65
74
|
```
|
|
66
75
|
|
|
67
76
|
> [!WARNING]
|
|
@@ -78,7 +87,7 @@ The true superpower of ExisJS is the `inject()` hook.
|
|
|
78
87
|
Powered by Node.js `AsyncLocalStorage`, `inject()` can be called from **anywhere** within a request lifecycle (Controllers, Middlewares, nested utility functions) without needing to explicitly pass the `app` or `req` objects down the call chain!
|
|
79
88
|
|
|
80
89
|
```typescript filename="src/http/users/route.ts"
|
|
81
|
-
import { route } from 'exisjs/router'
|
|
90
|
+
import { route, controller } from 'exisjs/router'
|
|
82
91
|
import { inject } from 'exisjs/di'
|
|
83
92
|
import { Database } from '../db' // The class definition
|
|
84
93
|
|
|
@@ -100,24 +109,39 @@ export default controller({
|
|
|
100
109
|
> [!NOTE]
|
|
101
110
|
> `inject()` relies on the active execution context. If you call `inject()` outside of an active HTTP request or application lifecycle hook (e.g., in a background `setInterval` without context), it will throw an error.
|
|
102
111
|
|
|
103
|
-
### 2.
|
|
104
|
-
|
|
105
|
-
Unlike other frameworks like NestJS, ExisJS does **not** rely on slow, metadata-heavy Constructor Injection.
|
|
112
|
+
### 2. Constructor Injection in Classes (OOP)
|
|
106
113
|
|
|
107
|
-
|
|
114
|
+
ExisJS supports full OOP constructor parameter injection. You can inject services directly via type annotation or specify tokens with `@Inject()`, and designate optional dependencies with `@Optional()`:
|
|
108
115
|
|
|
109
116
|
```typescript filename="src/http/users/route.ts"
|
|
110
|
-
import { Controller, Get } from 'exisjs/decorators'
|
|
111
|
-
import {
|
|
112
|
-
|
|
117
|
+
import { Controller, Get, Param, Inject, Optional } from 'exisjs/decorators'
|
|
118
|
+
import { UserService } from './service'
|
|
119
|
+
|
|
120
|
+
@Controller('/users')
|
|
121
|
+
export default class UserController {
|
|
122
|
+
constructor(
|
|
123
|
+
private userService: UserService,
|
|
124
|
+
@Inject('DATABASE_URL') private dbUrl: string,
|
|
125
|
+
@Optional() @Inject('ANALYTICS') private analytics?: any
|
|
126
|
+
) {}
|
|
127
|
+
|
|
128
|
+
@Get('/:id')
|
|
129
|
+
async getUser(@Param('id') id: string) {
|
|
130
|
+
return this.userService.findById(id)
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
```
|
|
113
134
|
|
|
135
|
+
You can also use property-level `inject()` inside your Controller methods:
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
114
138
|
@Controller('/users')
|
|
115
139
|
export default class UserController {
|
|
116
140
|
@Get('/')
|
|
117
141
|
async getUsers() {
|
|
118
|
-
// Inject dependencies perfectly cleanly right where you need them!
|
|
119
142
|
const db = inject(Database)
|
|
120
143
|
return db.query('SELECT * FROM users')
|
|
121
144
|
}
|
|
122
145
|
}
|
|
123
146
|
```
|
|
147
|
+
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Logger"
|
|
3
|
+
description: "API Reference for the ExisJS structured logger (exisjs/logger)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Logger (`exisjs/logger`)
|
|
7
|
+
|
|
8
|
+
ExisJS includes a built-in, high-performance structured logger powered by Pino. It provides colored, pretty-printed logs in development and fast, structured JSON in production.
|
|
9
|
+
|
|
10
|
+
All logger APIs are imported directly from the dedicated subpath `exisjs/logger`.
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { logger, configureLogger, setLogger } from 'exisjs/logger'
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Global Logger Singleton (`logger`)
|
|
19
|
+
|
|
20
|
+
The `logger` singleton can be imported and called anywhere in your application:
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { logger } from 'exisjs/logger'
|
|
24
|
+
|
|
25
|
+
logger.info('Server boot sequence initiated')
|
|
26
|
+
logger.warn({ origin: req.headers.origin }, 'Untrusted origin detected')
|
|
27
|
+
logger.error({ err }, 'Failed to persist record to database')
|
|
28
|
+
logger.debug({ payload }, 'Parsing incoming request payload')
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Methods
|
|
32
|
+
- `logger.info([obj], msg, ...args)`
|
|
33
|
+
- `logger.warn([obj], msg, ...args)`
|
|
34
|
+
- `logger.error([obj], msg, ...args)`
|
|
35
|
+
- `logger.debug([obj], msg, ...args)`
|
|
36
|
+
- `logger.trace([obj], msg, ...args)`
|
|
37
|
+
- `logger.fatal([obj], msg, ...args)`
|
|
38
|
+
- `logger.child(bindings)`: Creates a child logger with bound metadata (e.g. `{ requestId: '123' }`).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 2. Configuration (`configureLogger`)
|
|
43
|
+
|
|
44
|
+
Use `configureLogger()` to adjust log levels, toggle pretty printing, and customize sensitive field redactions across the entire application:
|
|
45
|
+
|
|
46
|
+
```typescript filename="src/http/server.ts"
|
|
47
|
+
import { configureLogger } from 'exisjs/logger'
|
|
48
|
+
|
|
49
|
+
configureLogger({
|
|
50
|
+
level: process.env.NODE_ENV === 'production' ? 'info' : 'debug',
|
|
51
|
+
pretty: process.env.NODE_ENV !== 'production',
|
|
52
|
+
redact: ['*.password', '*.token', '*.secret', 'req.headers.cookie'],
|
|
53
|
+
})
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Options
|
|
57
|
+
- `level` (`'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal' | 'silent'`): Minimum level to output (default: `'info'`).
|
|
58
|
+
- `pretty` (`boolean`): Whether to format log lines with bracketed timestamp and colorized labels (`[HH:MM:ss] LEVEL: message`). Default is `true` in development and `false` in production.
|
|
59
|
+
- `redact` (`string[]`): Property paths to censor automatically from log payloads.
|
|
60
|
+
- `replaceRedact` (`boolean`): When `true`, replaces default redact paths instead of merging with them.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 3. Custom Logger Instance (`setLogger`)
|
|
65
|
+
|
|
66
|
+
If you want to plug in your own custom Pino instance or transport (e.g., streaming logs directly to Loki, Datadog, or Elasticsearch), pass it to `setLogger()`:
|
|
67
|
+
|
|
68
|
+
```typescript filename="src/http/server.ts"
|
|
69
|
+
import { setLogger } from 'exisjs/logger'
|
|
70
|
+
import pino from 'pino'
|
|
71
|
+
|
|
72
|
+
const customPino = pino({
|
|
73
|
+
level: 'info',
|
|
74
|
+
transport: {
|
|
75
|
+
target: 'pino-loki',
|
|
76
|
+
options: { host: 'http://localhost:3100' }
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
setLogger(customPino)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 4. Request-Scoped Logger (`req.log`)
|
|
86
|
+
|
|
87
|
+
Every incoming HTTP request in ExisJS automatically receives a child logger bound to `req.log`. It automatically includes request context such as `req.requestId`:
|
|
88
|
+
|
|
89
|
+
```typescript filename="src/http/users/route.ts"
|
|
90
|
+
import { route, controller } from 'exisjs/router'
|
|
91
|
+
|
|
92
|
+
export default controller({
|
|
93
|
+
profile: route.get('/profile', {
|
|
94
|
+
async handle({ req }) {
|
|
95
|
+
req.log.info('Fetching user profile')
|
|
96
|
+
return { ok: true }
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
})
|
|
100
|
+
```
|
|
@@ -218,31 +218,31 @@ Use parameter decorators to automatically extract data from the incoming request
|
|
|
218
218
|
|
|
219
219
|
- `@Body()`: Injects the parsed JSON request body.
|
|
220
220
|
- `@Param('id')`: Injects a specific URL path parameter.
|
|
221
|
-
- `@Query('search')`: Injects a specific query string parameter.
|
|
221
|
+
- `@QueryParam('search')` / `@Query('search')`: Injects a specific query string parameter.
|
|
222
222
|
- `@Headers('authorization')`: Injects a specific HTTP header.
|
|
223
223
|
- `@Req()`: Injects the raw ExisJS Request object.
|
|
224
224
|
- `@Res()`: Injects the raw ExisJS Response object.
|
|
225
225
|
- `@Next()`: Injects the next function.
|
|
226
226
|
- `@Socket()`: Injects the active WebSocket instance (for `@Ws` routes).
|
|
227
227
|
- `@Stream()`: Injects the active SSE instance (for `@Sse` routes).
|
|
228
|
+
- `createParamDecorator(factory)`: Factory to construct custom parameter decorators.
|
|
228
229
|
|
|
229
230
|
### Extended Decorators
|
|
230
231
|
|
|
231
232
|
ExisJS provides a rich ecosystem of decorators to apply middleware, configure responses, and enforce security on both individual routes and entire controllers:
|
|
232
233
|
|
|
233
|
-
#### Configuration &
|
|
234
|
-
- `@Use(...
|
|
234
|
+
#### Configuration & Pipeline
|
|
235
|
+
- `@Use(...items)`: Unified decorator that applies middlewares, Guards (`canActivate`), Interceptors (`intercept`), and Exception Filters (`catch`) to a route or entire controller.
|
|
235
236
|
- `@Hosts('api.example.com')`: Restricts the route or controller to specific domains.
|
|
236
237
|
|
|
237
|
-
#### Security &
|
|
238
|
+
#### Security & Metadata
|
|
238
239
|
- `@Permissions('admin')`: Requires specific permission flags.
|
|
239
|
-
- `@
|
|
240
|
-
-
|
|
241
|
-
- `@UseFilters(...filters)`: Attaches Exception Filters to handle specific errors.
|
|
240
|
+
- `@SetMetadata(key, value)`: Attaches arbitrary metadata to classes and handler methods (retrieved via `Reflector`).
|
|
241
|
+
- `Reflector`: Reads and merges metadata attached with `@SetMetadata`.
|
|
242
242
|
|
|
243
|
-
#### Responses &
|
|
243
|
+
#### Responses & Reliability
|
|
244
244
|
- `@HttpCode(201)`: Forces a specific HTTP status code for successful responses.
|
|
245
245
|
- `@Header('X-Custom', 'Value')`: Automatically injects a specific response header.
|
|
246
246
|
- `@Returns(schema)`: Explicitly defines the response schema for OpenAPI generation.
|
|
247
|
-
- `@Cache({ ttlMs: 60000 })`: Automatically caches GET responses.
|
|
248
247
|
- `@Idempotent()`: Enforces idempotency keys for mutations (e.g., checkout/payments).
|
|
248
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/error/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/error/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAKrD,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAgB,UAAU,EAAE,MAAM,CAAA;IAClC,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,SAAgB,aAAa,EAAE,OAAO,CAAA;IACtC,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAA;gBAG/B,OAAO,EAAE,MAAM,EACf,UAAU,SAAM,EAChB,IAAI,SAAmB,EACvB,OAAO,CAAC,EAAE,OAAO;IAenB,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS;IAIhE,MAAM,CAAC,YAAY,CAAC,OAAO,SAAiB,GAAG,SAAS;IAIxD,MAAM,CAAC,SAAS,CAAC,OAAO,SAAc,GAAG,SAAS;IAIlD,MAAM,CAAC,QAAQ,CAAC,QAAQ,SAAa,GAAG,SAAS;IAIjD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAI3C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS;IAInE,MAAM,CAAC,eAAe,CAAC,OAAO,SAAsB,GAAG,SAAS;IAIhE,MAAM,CAAC,QAAQ,CAAC,OAAO,SAA0B,GAAG,SAAS;IAI7D,MAAM,CAAC,kBAAkB,CAAC,OAAO,SAAwB,GAAG,SAAS;IAIrE,MAAM,CAAC,cAAc,CAAC,OAAO,SAAoB,GAAG,SAAS;IAI7D,MAAM,IAAI,MAAM;CAUjB;AAED,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,OAAO,SAAgB,EAAE,OAAO,CAAC,EAAE,OAAO;CAIvD;AAED,qBAAa,iBAAkB,SAAQ,SAAS;gBAClC,OAAO,SAAiB;CAIrC;AAED,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,OAAO,SAAc;CAIlC;AAED,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,QAAQ,SAAa;CAIlC;AAED,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,OAAO,SAAa;CAIjC;AAED,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,OAAO,SAAyB,EAAE,OAAO,CAAC,EAAE,OAAO;CAIhE;AAED,qBAAa,cAAe,SAAQ,SAAS;gBAC/B,OAAO,SAAsB;CAI1C;AAED,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,OAAO,SAA0B;CAI9C;AAED,qBAAa,uBAAwB,SAAQ,SAAS;gBACxC,OAAO,SAAwB;CAI5C;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,OAAO,SAAoB;CAIxC;AAGD,eAAO,MAAM,aAAa,kBAAY,CAAA;AACtC,eAAO,MAAM,mBAAmB,wBAAkB,CAAA;AAClD,eAAO,MAAM,qBAAqB,0BAAoB,CAAA;AACtD,eAAO,MAAM,kBAAkB,uBAAiB,CAAA;AAChD,eAAO,MAAM,iBAAiB,sBAAgB,CAAA;AAC9C,eAAO,MAAM,iBAAiB,sBAAgB,CAAA;AAC9C,eAAO,MAAM,sBAAsB,2BAAqB,CAAA;AACxD,eAAO,MAAM,kBAAkB,uBAAiB,CAAA;AAChD,eAAO,MAAM,iBAAiB,sBAAgB,CAAA;AAC9C,eAAO,MAAM,2BAA2B,gCAA0B,CAAA;AAClE,eAAO,MAAM,uBAAuB,4BAAsB,CAAA;AA6G1D,wBAAgB,kBAAkB,CAAC,KAAK,UAAQ,GAAG,YAAY,CAoH9D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAIjD"}
|
package/dist/error/errors.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.GatewayTimeoutException = exports.ServiceUnavailableException = exports.
|
|
|
7
7
|
exports.createErrorHandler = createErrorHandler;
|
|
8
8
|
exports.asyncHandler = asyncHandler;
|
|
9
9
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
|
+
const logger_1 = require("../logger");
|
|
10
11
|
// ─── HttpError ─────────────────────────────────────────────────────────────────
|
|
11
12
|
class HttpError extends Error {
|
|
12
13
|
constructor(message, statusCode = 500, code = 'INTERNAL_ERROR', details) {
|
|
@@ -319,11 +320,8 @@ function createErrorHandler(isDev = false) {
|
|
|
319
320
|
if (req.log) {
|
|
320
321
|
req.log.error({ err }, 'unhandled server error');
|
|
321
322
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
}
|
|
325
|
-
else if (!req.log) {
|
|
326
|
-
console.error('[Exis Error]', err);
|
|
323
|
+
else {
|
|
324
|
+
logger_1.logger.error({ err }, 'unhandled server error');
|
|
327
325
|
}
|
|
328
326
|
if (isDev && req.headers.accept?.includes('text/html')) {
|
|
329
327
|
res
|
package/dist/error/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/error/errors.ts"],"names":[],"mappings":";;;;;;AAgRA,gDAuHC;AAQD,oCAIC;AAnZD,sDAAwB;AAGxB,kFAAkF;AAElF,MAAa,SAAU,SAAQ,KAAK;IAMlC,YACE,OAAe,EACf,UAAU,GAAG,GAAG,EAChB,IAAI,GAAG,gBAAgB,EACvB,OAAiB;QAEjB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,+BAA+B;QAC/B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC;IAED,gFAAgF;IAEhF,MAAM,CAAC,UAAU,CAAC,OAAe,EAAE,OAAiB;QAClD,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAO,GAAG,cAAc;QAC1C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;QACpC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,UAAU;QACnC,OAAO,IAAI,SAAS,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAe;QAC7B,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,OAAiB;QACrD,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAA;IACrE,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,OAAO,GAAG,mBAAmB;QAClD,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,uBAAuB;QAC/C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAA;IACtD,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,OAAO,GAAG,qBAAqB;QACvD,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,OAAO,GAAG,iBAAiB;QAC/C,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAA;IACvD,CAAC;IAED,MAAM;QACJ,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;aAC7D;SACF,CAAA;IACH,CAAC;CACF;AA3ED,8BA2EC;AAED,MAAa,eAAgB,SAAQ,SAAS;IAC5C,YAAY,OAAO,GAAG,aAAa,EAAE,OAAiB;QACpD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AALD,0CAKC;AAED,MAAa,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,OAAO,GAAG,cAAc;QAClC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AALD,8CAKC;AAED,MAAa,cAAe,SAAQ,SAAS;IAC3C,YAAY,OAAO,GAAG,WAAW;QAC/B,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,aAAc,SAAQ,SAAS;IAC1C,YAAY,QAAQ,GAAG,UAAU;QAC/B,KAAK,CAAC,GAAG,QAAQ,YAAY,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF;AALD,sCAKC;AAED,MAAa,aAAc,SAAQ,SAAS;IAC1C,YAAY,OAAO,GAAG,UAAU;QAC9B,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;QAC/B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF;AALD,sCAKC;AAED,MAAa,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,OAAO,GAAG,sBAAsB,EAAE,OAAiB;QAC7D,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAA;QACpD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,cAAe,SAAQ,SAAS;IAC3C,YAAY,OAAO,GAAG,mBAAmB;QACvC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,CAAA;QACnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,aAAc,SAAQ,SAAS;IAC1C,YAAY,OAAO,GAAG,uBAAuB;QAC3C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF;AALD,sCAKC;AAED,MAAa,uBAAwB,SAAQ,SAAS;IACpD,YAAY,OAAO,GAAG,qBAAqB;QACzC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;IACvC,CAAC;CACF;AALD,0DAKC;AAED,MAAa,mBAAoB,SAAQ,SAAS;IAChD,YAAY,OAAO,GAAG,iBAAiB;QACrC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF;AALD,kDAKC;AAED,iFAAiF;AACpE,QAAA,aAAa,GAAG,SAAS,CAAA;AACzB,QAAA,mBAAmB,GAAG,eAAe,CAAA;AACrC,QAAA,qBAAqB,GAAG,iBAAiB,CAAA;AACzC,QAAA,kBAAkB,GAAG,cAAc,CAAA;AACnC,QAAA,iBAAiB,GAAG,aAAa,CAAA;AACjC,QAAA,iBAAiB,GAAG,aAAa,CAAA;AACjC,QAAA,sBAAsB,GAAG,kBAAkB,CAAA;AAC3C,QAAA,kBAAkB,GAAG,cAAc,CAAA;AACnC,QAAA,iBAAiB,GAAG,aAAa,CAAA;AACjC,QAAA,2BAA2B,GAAG,uBAAuB,CAAA;AACrD,QAAA,uBAAuB,GAAG,mBAAmB,CAAA;AAE1D,iFAAiF;AAEjF,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;IAC/C,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAU;IACpC,IAAI,CAAC,GAAG,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACzB,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,IAAI,GAAG,EAAE,EACX,IAAI,GAAG,CAAC,CAAA;IAEV,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,KAAK,GACT,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;YAChC,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC;YACjC,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;QACrC,IACE,KAAK;YACL,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;YAClC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC3B,CAAC;YACD,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACf,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC7B,MAAK;QACP,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IAE7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAA;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAA;QAE5C,IAAI,IAAI,GAAG,gGAAgG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAA;QAC3I,IAAI,IAAI,4OAA4O,CAAA;QAEpP,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAA;YAC/C,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,IAAI,2MAA2M,OAAO,4CAA4C,WAAW,eAAe,CAAA;YAClS,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,2JAA2J,OAAO,4CAA4C,WAAW,eAAe,CAAA;YAClP,CAAC;QACH,CAAC;QACD,IAAI,IAAI,QAAQ,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAU,EAAE,GAA+B;IAClE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK;QACrB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;aAClB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aACvB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;QACrC,CAAC,CAAC,2BAA2B,CAAA;IAE/B,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IAEzC,OAAO;;;;;;;;;;;;;;;;;;;;;2BAqBkB,UAAU,CAAC,GAAG,CAAC,OAAO,IAAI,eAAe,CAAC;;MAE/D,SAAS,CAAC,CAAC,CAAC,6BAA6B,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE;;+BAEtC,KAAK;;;0DAGsB,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;GAK5G,CAAC,IAAI,EAAE,CAAA;AACV,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAK,GAAG,KAAK;IAC9C,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC9B,IAAI,GAAG,CAAC,WAAW;YAAE,OAAM;QAE3B,0BAA0B;QAC1B,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;YAC7B,IACE,KAAK;gBACL,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC;gBACzC,GAAG,CAAC,UAAU,IAAI,GAAG,EACrB,CAAC;gBACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;gBAC1D,OAAM;YACR,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;YAC7C,OAAM;QACR,CAAC;QAED,IACE,GAAG,CAAC,IAAI,KAAK,UAAU;YACvB,GAAG,CAAC,IAAI,KAAK,iBAAiB;YAC9B,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAC7B,CAAC;YACD,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;YAEzB,qBAAqB;YACrB,IACE,GAAG,CAAC,IAAI,KAAK,UAAU;gBACvB,QAAQ,IAAI,GAAG;gBACf,KAAK,CAAC,OAAO,CAAE,GAAW,CAAC,MAAM,CAAC,EAClC,CAAC;gBACD,MAAM,SAAS,GAAI,GAAW,CAAC,MAAM,CAAA;gBACrC,OAAO;oBACL,oBAAoB;wBACpB,SAAS;6BACN,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;6BACpD,IAAI,CAAC,IAAI,CAAC,CAAA;YACjB,CAAC;YACD,gCAAgC;iBAC3B,IACH,GAAG,CAAC,IAAI,KAAK,iBAAiB;gBAC9B,OAAO,IAAI,GAAG;gBACd,KAAK,CAAC,OAAO,CAAE,GAAW,CAAC,KAAK,CAAC;gBAChC,GAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAC7B,CAAC;gBACD,MAAM,SAAS,GAAI,GAAW,CAAC,KAAK,CAAA;gBACpC,OAAO;oBACL,oBAAoB;wBACpB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnE,CAAC;YACD,+BAA+B;iBAC1B,IACH,GAAG,CAAC,IAAI,KAAK,gBAAgB;gBAC7B,QAAQ,IAAI,GAAG;gBACf,KAAK,CAAC,OAAO,CAAE,GAAW,CAAC,MAAM,CAAC,EAClC,CAAC;gBACD,MAAM,SAAS,GAAI,GAAW,CAAC,MAAM,CAAA;gBACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,UAAU,EAAE,GAAG;oBACf,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,kBAAkB;oBAC3B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAM,EAAE,EAAE;wBAC5C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAA;wBACvB,OAAO,GAAG,CAAA;oBACZ,CAAC,EAAE,EAAE,CAAC;iBACP,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,UAAU,EAAE,GAAG;gBACf,KAAK,EAAE,aAAa;gBACpB,OAAO;aACR,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,uBAAuB;QACvB,IAAI,GAAG,YAAY,WAAW,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAChD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,8BAA8B;iBACxC;aACF,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,qDAAqD;QACrD,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wBAAwB,CAAC,CAAA;QAClD,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;QACrE,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,GAAG;iBACA,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CACH,eAAe,CACb,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EACnD,GAAG,CACJ,CACF,CAAA;YACH,OAAM;QACR,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B;gBAC7D,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;aACnC;SACF,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,EAAW;IACtC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjD,CAAC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/error/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ import './config/env';
|
|
|
2
2
|
export { defineApp as exis } from './server/define';
|
|
3
3
|
export { type App, getActiveApp } from './server/app';
|
|
4
4
|
export { defineConfig } from './config/config';
|
|
5
|
-
export { logger, configureLogger, setLogger, createLogger } from './logger';
|
|
6
5
|
export { parseEnv, loadEnv } from './config/env';
|
|
7
6
|
export { CircuitBreaker, CircuitBreakerError, CircuitState, } from './utils/circuit-breaker';
|
|
8
7
|
export type { ExisConfig, ExisPlugin, ExisPluginInstance, Logger, CorsConfig, LoggerConfig, HookRequest, } from './types';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAGrB,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAGrB,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,KAAK,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAIhD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,YAAY,GACb,MAAM,yBAAyB,CAAA;AAGhC,YAAY,EACV,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA;AAGhB,MAAM,WAAW,QAAQ;CAAG"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CircuitState = exports.CircuitBreakerError = exports.CircuitBreaker = exports.loadEnv = exports.parseEnv = exports.
|
|
3
|
+
exports.CircuitState = exports.CircuitBreakerError = exports.CircuitBreaker = exports.loadEnv = exports.parseEnv = exports.defineConfig = exports.getActiveApp = exports.exis = void 0;
|
|
4
4
|
require("./config/env");
|
|
5
5
|
// ─── Core ─────────────────────────────────────────────────────────────────────
|
|
6
6
|
var define_1 = require("./server/define");
|
|
@@ -9,12 +9,6 @@ var app_1 = require("./server/app");
|
|
|
9
9
|
Object.defineProperty(exports, "getActiveApp", { enumerable: true, get: function () { return app_1.getActiveApp; } });
|
|
10
10
|
var config_1 = require("./config/config");
|
|
11
11
|
Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return config_1.defineConfig; } });
|
|
12
|
-
// ─── Logger ───────────────────────────────────────────────────────────────────
|
|
13
|
-
var logger_1 = require("./logger");
|
|
14
|
-
Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
|
|
15
|
-
Object.defineProperty(exports, "configureLogger", { enumerable: true, get: function () { return logger_1.configureLogger; } });
|
|
16
|
-
Object.defineProperty(exports, "setLogger", { enumerable: true, get: function () { return logger_1.setLogger; } });
|
|
17
|
-
Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
|
|
18
12
|
var env_1 = require("./config/env");
|
|
19
13
|
Object.defineProperty(exports, "parseEnv", { enumerable: true, get: function () { return env_1.parseEnv; } });
|
|
20
14
|
Object.defineProperty(exports, "loadEnv", { enumerable: true, get: function () { return env_1.loadEnv; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wBAAqB;AAErB,iFAAiF;AACjF,0CAAmD;AAA1C,8FAAA,SAAS,OAAQ;AAC1B,oCAAqD;AAAlC,mGAAA,YAAY,OAAA;AAC/B,0CAA8C;AAArC,sGAAA,YAAY,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wBAAqB;AAErB,iFAAiF;AACjF,0CAAmD;AAA1C,8FAAA,SAAS,OAAQ;AAC1B,oCAAqD;AAAlC,mGAAA,YAAY,OAAA;AAC/B,0CAA8C;AAArC,sGAAA,YAAY,OAAA;AACrB,oCAAgD;AAAvC,+FAAA,QAAQ,OAAA;AAAE,8FAAA,OAAO,OAAA;AAE1B,8EAA8E;AAE9E,2DAIgC;AAH9B,iHAAA,cAAc,OAAA;AACd,sHAAA,mBAAmB,OAAA;AACnB,+GAAA,YAAY,OAAA"}
|
package/dist/lib/start-server.js
CHANGED
|
@@ -61,6 +61,14 @@ async function start() {
|
|
|
61
61
|
// 1. Load .env files so process.env is populated
|
|
62
62
|
const { loadEnv } = await Promise.resolve().then(() => __importStar(require('../config/env.js')));
|
|
63
63
|
loadEnv(cwd);
|
|
64
|
+
// Register path aliases loader
|
|
65
|
+
try {
|
|
66
|
+
const { registerPathAliasLoader } = await Promise.resolve().then(() => __importStar(require('../cli/resolve-aliases.js')));
|
|
67
|
+
registerPathAliasLoader(cwd);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// ignore
|
|
71
|
+
}
|
|
64
72
|
// 2. Auto-load Environment variables validation file if it exists
|
|
65
73
|
const envFiles = [
|
|
66
74
|
path.join(cwd, 'src', 'config', 'env.ts'),
|