exisjs 0.8.1 → 0.9.1
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.map +1 -1
- package/dist/cli/commands/build.js +20 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/dev.d.ts +8 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +96 -36
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +2 -1
- package/dist/cli/manifest.js.map +1 -1
- package/dist/cli/routes.d.ts +2 -0
- package/dist/cli/routes.d.ts.map +1 -1
- package/dist/cli/routes.js +14 -5
- package/dist/cli/routes.js.map +1 -1
- package/dist/config/config.d.ts +3 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +11 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/cron/job.d.ts +2 -0
- package/dist/cron/job.d.ts.map +1 -1
- package/dist/cron/job.js +33 -1
- package/dist/cron/job.js.map +1 -1
- package/dist/cron/manager.d.ts +12 -1
- package/dist/cron/manager.d.ts.map +1 -1
- package/dist/cron/manager.js +7 -1
- package/dist/cron/manager.js.map +1 -1
- package/dist/cron/types.d.ts +24 -0
- package/dist/cron/types.d.ts.map +1 -1
- package/dist/database/lifecycle.d.ts +19 -2
- package/dist/database/lifecycle.d.ts.map +1 -1
- package/dist/database/lifecycle.js +92 -53
- package/dist/database/lifecycle.js.map +1 -1
- package/dist/decorators/index.d.ts +1 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +5 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/pipes.d.ts +2 -0
- package/dist/decorators/pipes.d.ts.map +1 -1
- package/dist/decorators/pipes.js +39 -18
- package/dist/decorators/pipes.js.map +1 -1
- package/dist/decorators/transaction.d.ts +0 -21
- package/dist/decorators/transaction.d.ts.map +1 -1
- package/dist/decorators/transaction.js +52 -32
- package/dist/decorators/transaction.js.map +1 -1
- package/dist/di/container.d.ts +6 -0
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +73 -57
- package/dist/di/container.js.map +1 -1
- package/dist/docs/content/boundaries.mdx +2 -0
- package/dist/docs/content/cli/commands.mdx +2 -1
- package/dist/docs/content/config.mdx +6 -4
- package/dist/docs/content/cron.mdx +25 -1
- package/dist/docs/content/decorators.mdx +5 -5
- package/dist/docs/content/errors.mdx +37 -36
- package/dist/docs/content/installation.mdx +3 -4
- package/dist/docs/content/introduction.mdx +1 -1
- package/dist/docs/content/middleware.mdx +4 -2
- package/dist/docs/content/providers.mdx +2 -0
- package/dist/docs/content/requests.mdx +4 -2
- package/dist/docs/content/responses.mdx +72 -0
- package/dist/docs/content/security.mdx +93 -4
- package/dist/docs/content/testing.mdx +38 -0
- package/dist/docs/content/validation.mdx +34 -1
- package/dist/docs/reference/README.md +16 -16
- package/dist/docs/reference/config.mdx +1 -1
- package/dist/docs/reference/database.mdx +3 -2
- package/dist/docs/reference/decorators.mdx +2 -4
- package/dist/docs/reference/middleware.mdx +1 -1
- package/dist/docs/reference/router.mdx +5 -7
- package/dist/docs/reference/validator.mdx +3 -0
- package/dist/error/errors.d.ts +9 -1
- package/dist/error/errors.d.ts.map +1 -1
- package/dist/error/errors.js +24 -15
- package/dist/error/errors.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/inspect-routes.js +2 -0
- package/dist/lib/inspect-routes.js.map +1 -1
- package/dist/middleware/compression.d.ts.map +1 -1
- package/dist/middleware/compression.js +6 -5
- package/dist/middleware/compression.js.map +1 -1
- package/dist/middleware/idempotency.d.ts +25 -23
- package/dist/middleware/idempotency.d.ts.map +1 -1
- package/dist/middleware/idempotency.js +70 -35
- package/dist/middleware/idempotency.js.map +1 -1
- package/dist/middleware/middleware.d.ts.map +1 -1
- package/dist/middleware/middleware.js +48 -34
- package/dist/middleware/middleware.js.map +1 -1
- package/dist/middleware/rate-limit.d.ts +36 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +33 -19
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/middleware/security.d.ts.map +1 -1
- package/dist/middleware/security.js +12 -5
- package/dist/middleware/security.js.map +1 -1
- package/dist/router/authorize.d.ts +43 -0
- package/dist/router/authorize.d.ts.map +1 -0
- package/dist/router/authorize.js +66 -0
- package/dist/router/authorize.js.map +1 -0
- package/dist/router/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +121 -156
- package/dist/router/controller-registrar.js.map +1 -1
- package/dist/router/route-scanner.d.ts +3 -0
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +32 -21
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/router/router.d.ts +5 -0
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +83 -75
- package/dist/router/router.js.map +1 -1
- package/dist/router/scanner/boundary-loader.d.ts.map +1 -1
- package/dist/router/scanner/boundary-loader.js +37 -38
- package/dist/router/scanner/boundary-loader.js.map +1 -1
- package/dist/router/scanner/cron-mounter.d.ts.map +1 -1
- package/dist/router/scanner/cron-mounter.js +32 -18
- package/dist/router/scanner/cron-mounter.js.map +1 -1
- package/dist/router/scanner/functional-compiler.d.ts.map +1 -1
- package/dist/router/scanner/functional-compiler.js +55 -156
- package/dist/router/scanner/functional-compiler.js.map +1 -1
- package/dist/router/send-result.d.ts +24 -0
- package/dist/router/send-result.d.ts.map +1 -0
- package/dist/router/send-result.js +81 -0
- package/dist/router/send-result.js.map +1 -0
- package/dist/server/app.d.ts +5 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +48 -6
- 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 +6 -1
- package/dist/server/engines/node-engine.js.map +1 -1
- package/dist/server/helpers/body-parser.d.ts +1 -1
- package/dist/server/helpers/body-parser.d.ts.map +1 -1
- package/dist/server/helpers/body-parser.js +9 -7
- package/dist/server/helpers/body-parser.js.map +1 -1
- package/dist/server/helpers/conditional.d.ts +60 -0
- package/dist/server/helpers/conditional.d.ts.map +1 -0
- package/dist/server/helpers/conditional.js +189 -0
- package/dist/server/helpers/conditional.js.map +1 -0
- package/dist/server/helpers/etag.d.ts +0 -1
- package/dist/server/helpers/etag.d.ts.map +1 -1
- package/dist/server/helpers/etag.js +0 -10
- package/dist/server/helpers/etag.js.map +1 -1
- package/dist/server/helpers/index.d.ts +2 -1
- package/dist/server/helpers/index.d.ts.map +1 -1
- package/dist/server/helpers/index.js +16 -2
- package/dist/server/helpers/index.js.map +1 -1
- package/dist/server/request-handler.d.ts +2 -0
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server/request-handler.js +23 -4
- package/dist/server/request-handler.js.map +1 -1
- package/dist/server/request.d.ts +19 -4
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +60 -84
- package/dist/server/request.js.map +1 -1
- package/dist/server/response.d.ts +45 -2
- package/dist/server/response.d.ts.map +1 -1
- package/dist/server/response.js +157 -70
- package/dist/server/response.js.map +1 -1
- package/dist/swagger/mounter.d.ts.map +1 -1
- package/dist/swagger/mounter.js +2 -0
- package/dist/swagger/mounter.js.map +1 -1
- package/dist/testing/client.d.ts +32 -0
- package/dist/testing/client.d.ts.map +1 -1
- package/dist/testing/client.js +69 -0
- package/dist/testing/client.js.map +1 -1
- package/dist/testing/index.d.ts +10 -2
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +7 -2
- package/dist/testing/index.js.map +1 -1
- package/dist/validator/builder.d.ts +33 -16
- package/dist/validator/builder.d.ts.map +1 -1
- package/dist/validator/builder.js +11 -17
- package/dist/validator/builder.js.map +1 -1
- package/dist/validator/engine.d.ts +28 -1
- package/dist/validator/engine.d.ts.map +1 -1
- package/dist/validator/engine.js +212 -124
- package/dist/validator/engine.js.map +1 -1
- package/dist/validator/error.d.ts +4 -0
- package/dist/validator/error.d.ts.map +1 -1
- package/dist/validator/error.js +20 -4
- package/dist/validator/error.js.map +1 -1
- package/dist/validator/index.d.ts +12 -1
- package/dist/validator/index.d.ts.map +1 -1
- package/dist/validator/index.js.map +1 -1
- package/dist/validator/tex-types.d.ts +29 -2
- package/dist/validator/tex-types.d.ts.map +1 -1
- package/package.json +3 -5
|
@@ -32,6 +32,8 @@ The following security middlewares are exported from `exisjs/middleware` and can
|
|
|
32
32
|
|
|
33
33
|
## 1. Security Headers (`helmet`)
|
|
34
34
|
|
|
35
|
+
Helmet is on by default (`helmet: { enabled: true }` in `exis.config.ts`), including a same-origin `Content-Security-Policy`; see [Security Baseline](#11-security-baseline). Use the middleware directly to apply different settings to part of the app.
|
|
36
|
+
|
|
35
37
|
The `helmet` middleware sets secure response headers to harden the application against cross-site scripting (XSS), clickjacking, and content sniffing:
|
|
36
38
|
|
|
37
39
|
```typescript filename="src/http/server.ts"
|
|
@@ -69,7 +71,7 @@ export default exis({
|
|
|
69
71
|
async onStart(app) {
|
|
70
72
|
app.use(
|
|
71
73
|
csrf({
|
|
72
|
-
secret: process.env.
|
|
74
|
+
secret: process.env.CSRF_SECRET!, // Must be at least 32 characters
|
|
73
75
|
cookieName: 'csrf-token',
|
|
74
76
|
headerName: 'x-csrf-token',
|
|
75
77
|
cookieOptions: {
|
|
@@ -104,6 +106,30 @@ export const config = defineBoundary({
|
|
|
104
106
|
})
|
|
105
107
|
```
|
|
106
108
|
|
|
109
|
+
The default store counts per process: with two instances each allows `max`, and on serverless the count resets constantly. Pass a shared `store` to enforce one limit everywhere:
|
|
110
|
+
|
|
111
|
+
```typescript filename="src/http/auth/boundary.ts"
|
|
112
|
+
import { rateLimit, type RateLimitStore } from 'exisjs/middleware'
|
|
113
|
+
import { redis } from '../../lib/redis'
|
|
114
|
+
|
|
115
|
+
const redisStore: RateLimitStore = {
|
|
116
|
+
async increment(key, windowMs) {
|
|
117
|
+
const k = `rl:${key}`
|
|
118
|
+
const [[, count], [, ttl]] = (await redis
|
|
119
|
+
.multi()
|
|
120
|
+
.incr(k)
|
|
121
|
+
.pexpire(k, windowMs, 'NX')
|
|
122
|
+
.pttl(k)
|
|
123
|
+
.exec()) as [unknown, number][]
|
|
124
|
+
return { count, resetTime: Date.now() + Math.max(ttl, 0) }
|
|
125
|
+
},
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export const loginLimiter = rateLimit({ max: 10, windowMs: 15 * 60_000, store: redisStore })
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
If the store fails, requests are let through and a warning is logged, so a cache outage does not take the API down.
|
|
132
|
+
|
|
107
133
|
### Rate Limit Response Headers
|
|
108
134
|
|
|
109
135
|
`rateLimit` attaches standard IETF and legacy rate-limiting headers to every response:
|
|
@@ -149,6 +175,11 @@ export const config = defineBoundary({
|
|
|
149
175
|
|
|
150
176
|
Prevent duplicate mutations (e.g. double-charging a credit card or duplicate database inserts) by caching responses associated with an `Idempotency-Key` header:
|
|
151
177
|
|
|
178
|
+
- A repeat with the same key, user, method, path and body gets the first response again (header `Idempotent-Replayed: true`); the handler does not run twice.
|
|
179
|
+
- Keys belong to `req.user.id` (or `sub`), so one client can never receive another client's response. Change this with `scope: (req) => req.tenantId`.
|
|
180
|
+
- The same key with a **different body** is refused with `422 IDEMPOTENCY_KEY_REUSED`; a repeat that arrives while the first is still running gets `409 IDEMPOTENCY_IN_PROGRESS`.
|
|
181
|
+
- Only `2xx`/`3xx` responses are stored, so a failed request can be retried. Pass `store` to share responses between instances.
|
|
182
|
+
|
|
152
183
|
```typescript filename="src/http/checkout/route.ts"
|
|
153
184
|
import { controller, route } from 'exisjs/router'
|
|
154
185
|
import { idempotent } from 'exisjs/middleware'
|
|
@@ -273,9 +304,9 @@ export function apiKeyGuard(req: any) {
|
|
|
273
304
|
|
|
274
305
|
---
|
|
275
306
|
|
|
276
|
-
## 10.
|
|
307
|
+
## 10. Route Authorization (`@Roles`, `@Permissions`, `@Public`)
|
|
277
308
|
|
|
278
|
-
ExisJS
|
|
309
|
+
Declare who may call a route; ExisJS checks it against `req.user` before guards, pipes and the handler run. Your authentication middleware (in a boundary or `@Use`) verifies the token and sets `req.user`.
|
|
279
310
|
|
|
280
311
|
```typescript filename="src/http/users/controller.ts"
|
|
281
312
|
import { Controller, Get, Post, Roles, Permissions, Public } from 'exisjs/decorators'
|
|
@@ -290,9 +321,67 @@ export class UsersController {
|
|
|
290
321
|
}
|
|
291
322
|
|
|
292
323
|
@Post('/login')
|
|
293
|
-
@Public()
|
|
324
|
+
@Public()
|
|
294
325
|
async login() {
|
|
295
326
|
return { token: 'jwt' }
|
|
296
327
|
}
|
|
297
328
|
}
|
|
298
329
|
```
|
|
330
|
+
|
|
331
|
+
Functional routes declare the same with `roles`, `permissions` and `public` on the route (or on the whole `controller({...})`):
|
|
332
|
+
|
|
333
|
+
```typescript filename="src/http/reports/route.ts"
|
|
334
|
+
export default controller({
|
|
335
|
+
export: route.get('/export', {
|
|
336
|
+
permissions: ['report:read', 'report:export'],
|
|
337
|
+
handle: () => buildReport(),
|
|
338
|
+
}),
|
|
339
|
+
})
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
| Rule | Behaviour |
|
|
343
|
+
| :--- | :--- |
|
|
344
|
+
| No `req.user` | `401 UNAUTHORIZED` |
|
|
345
|
+
| `@Roles('a', 'b')` | The user needs **one** of the roles, from `user.roles` (array) or `user.role` |
|
|
346
|
+
| `@Permissions('x', 'y')` | The user needs **all** listed permissions in `user.permissions`. A role name never counts as a permission |
|
|
347
|
+
| Rule not met | `403 FORBIDDEN`, standard error envelope |
|
|
348
|
+
| `@Public()` | Wins over `@Roles` / `@Permissions` on the same route; a warning is logged at startup |
|
|
349
|
+
|
|
350
|
+
There is no built-in "super admin" field. To let some users through every rule, say so explicitly:
|
|
351
|
+
|
|
352
|
+
```typescript filename="exis.config.ts"
|
|
353
|
+
export default {
|
|
354
|
+
authorization: { superUser: (user) => user.role === 'owner' },
|
|
355
|
+
}
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### Deny by Default
|
|
359
|
+
|
|
360
|
+
By default a controller route without `@Roles`, `@Permissions` or `@Public` is open, so a forgotten decorator exposes the route. Turn that around and require a signed-in user everywhere except routes marked `@Public()`:
|
|
361
|
+
|
|
362
|
+
```typescript filename="exis.config.ts"
|
|
363
|
+
export default {
|
|
364
|
+
authorization: { defaultPolicy: 'authenticated' },
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
It applies to class and functional controllers; plain `app.get()` routes such as health checks are not affected.
|
|
369
|
+
|
|
370
|
+
`exisjs routes` prints the rule of every route in its ACCESS column, which is the quickest way to review what is public.
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## 11. Security Baseline
|
|
375
|
+
|
|
376
|
+
What a new app sends and hides without extra code:
|
|
377
|
+
|
|
378
|
+
| Area | Default |
|
|
379
|
+
| :--- | :--- |
|
|
380
|
+
| Headers (`helmet: { enabled: true }`) | `Content-Security-Policy: default-src 'self'; base-uri 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'`, `Strict-Transport-Security`, `X-Content-Type-Options: nosniff`, `X-Frame-Options: DENY`, `Referrer-Policy: strict-origin-when-cross-origin`, `X-XSS-Protection: 0`; no `X-Powered-By`. Set `contentSecurityPolicy` to a string to change the policy or to `false` to send none. A policy set earlier by your own middleware is kept |
|
|
381
|
+
| `/docs` | Sends its own policy allowing the Swagger UI assets from jsDelivr. The project template enables `/docs` outside production only |
|
|
382
|
+
| Errors | Unexpected errors answer `INTERNAL_ERROR` without message or stack outside development |
|
|
383
|
+
| Logs and validation errors | Credentials and connection strings are redacted (see [Errors](/docs/errors)) |
|
|
384
|
+
| Request bodies | Malformed JSON is `400 INVALID_JSON`; `__proto__` / `constructor` keys are stripped |
|
|
385
|
+
|
|
386
|
+
`tex.string({ preventSql: true, escapeHtml: true })` is input hygiene, not an injection defence: always use parameterised queries, and encode output for the context it is written to (HTML, SQL, shell).
|
|
387
|
+
|
|
@@ -117,6 +117,11 @@ const res = await api
|
|
|
117
117
|
.execute()
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
+
Two more builder methods:
|
|
121
|
+
|
|
122
|
+
- `.query({ page: 2, tags: ['a', 'b'] })` appends a query string.
|
|
123
|
+
- `.timeout(ms)` fails the request after `ms` milliseconds (default 5000, or `EXIS_TEST_TIMEOUT`; `0` waits forever). A handler that never answers fails its own test with the route in the message instead of hanging the whole run.
|
|
124
|
+
|
|
120
125
|
### Response Object Properties
|
|
121
126
|
|
|
122
127
|
The returned `TestResponse` contains:
|
|
@@ -132,6 +137,39 @@ export interface TestResponse {
|
|
|
132
137
|
|
|
133
138
|
---
|
|
134
139
|
|
|
140
|
+
## Testing Over Real Sockets (`startTestServer`)
|
|
141
|
+
|
|
142
|
+
In-memory requests cover most tests. For what only a real connection shows (CORS and security headers as a browser sees them, keep-alive, malformed HTTP), start the app on a free port:
|
|
143
|
+
|
|
144
|
+
```typescript filename="tests/headers.test.ts"
|
|
145
|
+
import { describe, it, expect, startTestServer } from 'exisjs/testing'
|
|
146
|
+
import app from '../src/http/server'
|
|
147
|
+
|
|
148
|
+
describe('headers', () => {
|
|
149
|
+
it('sends a Content-Security-Policy', async () => {
|
|
150
|
+
const server = await startTestServer(app)
|
|
151
|
+
try {
|
|
152
|
+
const res = await server.request('/health')
|
|
153
|
+
expect(res.headers.get('content-security-policy')).toBeDefined()
|
|
154
|
+
} finally {
|
|
155
|
+
await server.close()
|
|
156
|
+
}
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`exisjs test` runs your source files. To test the production build itself, run `exisjs build`, then start it with `exisjs start` (which always sets `NODE_ENV=production`) and send requests to it.
|
|
162
|
+
|
|
163
|
+
## Cron Jobs in Tests
|
|
164
|
+
|
|
165
|
+
Under `NODE_ENV=test` (what `exisjs test` sets) cron jobs and timeout tasks are registered but **never started**, so a test run cannot fire a real job. Run one on demand, or opt in for a test file:
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
await app.cron.trigger('daily-cleanup') // runs it once, now
|
|
169
|
+
|
|
170
|
+
const api = createTestContext(app, { cron: true }) // schedules jobs as in production
|
|
171
|
+
```
|
|
172
|
+
|
|
135
173
|
## Unit Testing Controllers & Middlewares
|
|
136
174
|
|
|
137
175
|
For fast unit tests that do not require booting a full HTTP server pipeline, use `createMockRequest` and `createMockResponse`:
|
|
@@ -78,7 +78,7 @@ All primitive builders accept modifier options directly in their configuration a
|
|
|
78
78
|
| **Optional** | `{ optional: true }` | `.optional()` | Allows `undefined`. |
|
|
79
79
|
| **Nullable** | `{ nullable: true }` | `.nullable()` | Allows `null`. |
|
|
80
80
|
| **Nullish** | `{ nullish: true }` | `.nullish()` | Allows both `null` and `undefined`. |
|
|
81
|
-
| **Default** | `{ default: value \| () => value }` | N/A |
|
|
81
|
+
| **Default** | `{ default: value \| () => value }` | N/A | Used when the field is missing. A client may omit the field, and after parsing it always has a value. |
|
|
82
82
|
|
|
83
83
|
```typescript filename="example.ts"
|
|
84
84
|
import { tex } from 'exisjs/validator'
|
|
@@ -92,6 +92,39 @@ const Schema = tex.object({
|
|
|
92
92
|
})
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
+
Nested object schemas take the same modifiers as methods: `.optional()`, `.nullable()` and `.nullish()`. A plain object literal is also a nested object:
|
|
96
|
+
|
|
97
|
+
```typescript filename="src/http/leads/schema.ts"
|
|
98
|
+
const Address = tex.object({ city: tex.string(), pin: tex.string({ optional: true }) })
|
|
99
|
+
|
|
100
|
+
export const UpdateLead = tex.object({
|
|
101
|
+
status: tex.enum(['new', 'won', 'lost']),
|
|
102
|
+
address: Address.optional(), // may be left out
|
|
103
|
+
billing: Address.nullish(), // may be left out or sent as null to clear it
|
|
104
|
+
meta: { source: tex.string() }, // same as tex.object({ source: tex.string() })
|
|
105
|
+
})
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Input and Output Types
|
|
109
|
+
|
|
110
|
+
A field with a `default` may be left out of a request but is always present after parsing, so the two sides have different types:
|
|
111
|
+
|
|
112
|
+
```typescript filename="src/http/reports/schema.ts"
|
|
113
|
+
import { tex, type ResolveInput, type ResolveOutput } from 'exisjs/validator'
|
|
114
|
+
|
|
115
|
+
export const MODULES = ['ALL', 'EV', 'PV'] as const // readonly arrays work in tex.enum
|
|
116
|
+
|
|
117
|
+
export const ReportQuery = tex.object({
|
|
118
|
+
module: tex.enum(MODULES, { default: 'ALL' }),
|
|
119
|
+
search: tex.string({ optional: true }),
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
type Query = ResolveOutput<typeof ReportQuery> // what the handler gets: module is 'ALL' | 'EV' | 'PV'
|
|
123
|
+
type QueryInput = ResolveInput<typeof ReportQuery> // what a client sends: module may be omitted
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`ResolveSchema` is the same as `ResolveOutput`. Validation reports every failing field, not only the first.
|
|
127
|
+
|
|
95
128
|
> [!NOTE]
|
|
96
129
|
> **Empty String Normalization**: When query parameters or form submissions supply empty strings `""` for fields marked `.optional()`, `.nullable()`, or `.nullish()`, ExisJS converts them to `undefined` or `null` before validation to avoid type conversion errors.
|
|
97
130
|
|
|
@@ -8,22 +8,22 @@ This directory contains complete, information-dense API references, TypeScript i
|
|
|
8
8
|
|
|
9
9
|
| Module / Entrypoint | Document | Description |
|
|
10
10
|
| :------------------ | :------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- |
|
|
11
|
-
| `exisjs` | [`exis.mdx`](
|
|
12
|
-
| `exisjs/config` | [`config.mdx`](
|
|
13
|
-
| `exisjs/router` | [`router.mdx`](
|
|
14
|
-
| `exisjs/decorators` | [`decorators.mdx`](
|
|
15
|
-
| `exisjs/validator` | [`validator.mdx`](
|
|
16
|
-
| `exisjs/database` | [`database.mdx`](
|
|
17
|
-
| `exisjs/logger` | [`logger.mdx`](
|
|
18
|
-
| `exisjs/di` | [`di.mdx`](
|
|
19
|
-
| `exisjs/error` | [`error.mdx`](
|
|
20
|
-
| `exisjs/middleware` | [`middleware.mdx`](
|
|
21
|
-
| `exisjs/context` | [`context.mdx`](
|
|
22
|
-
| `exisjs/cron` | [`cron.mdx`](
|
|
23
|
-
| `exisjs/sanitize` | [`sanitize.mdx`](
|
|
24
|
-
| `exisjs/swagger` | [`swagger.mdx`](
|
|
25
|
-
| `exisjs/testing` | [`testing.mdx`](
|
|
26
|
-
| `exisjs/plugin` | [`plugin.mdx`](
|
|
11
|
+
| `exisjs` | [`exis.mdx`](./exis.mdx) | Root application builder (`exis` / `defineApp`), `App` instance methods, and process resolvers. |
|
|
12
|
+
| `exisjs/config` | [`config.mdx`](./config.mdx) | Configuration schema (`ExisConfig`, `WatchConfig`, `DevConfig`), environment parsing, and phases. |
|
|
13
|
+
| `exisjs/router` | [`router.mdx`](./router.mdx) | Functional route builder (`route.*`, `controller`), `Router` engine, and request/response types. |
|
|
14
|
+
| `exisjs/decorators` | [`decorators.mdx`](./decorators.mdx) | Class, method, and parameter decorators for OOP architecture (`@Controller`, `@Get`, `@Body`). |
|
|
15
|
+
| `exisjs/validator` | [`validator.mdx`](./validator.mdx) | `TexEngine` validator suite (`tex.*`), schema modifiers (`.optional()`, `.default()`), and pipes. |
|
|
16
|
+
| `exisjs/database` | [`database.mdx`](./database.mdx) | Database lifecycle coordinator (`registerDatabase`, `DatabaseManager`), and transactions. |
|
|
17
|
+
| `exisjs/logger` | [`logger.mdx`](./logger.mdx) | Structured Pino logger interface, log levels, sensitive credential redaction, and formatters. |
|
|
18
|
+
| `exisjs/di` | [`di.mdx`](./di.mdx) | Inversion of Control `Container`, dependency injection tokens, `inject()`, and `forwardRef()`. |
|
|
19
|
+
| `exisjs/error` | [`error.mdx`](./error.mdx) | HTTP exception hierarchy (`HttpError`, `BadRequestException`), error codes, and JSON envelopes. |
|
|
20
|
+
| `exisjs/middleware` | [`middleware.mdx`](./middleware.mdx) | Built-in middleware suite: Helmet, CORS, CSRF, rate limiting, IP filtering, and multipart uploads. |
|
|
21
|
+
| `exisjs/context` | [`context.mdx`](./context.mdx) | `AsyncLocalStorage` request context API (`getRequest`, `getResponse`, `getContext`, `after`). |
|
|
22
|
+
| `exisjs/cron` | [`cron.mdx`](./cron.mdx) | Task scheduler (`cron()`, `@Cron()`), interval timers, presets, and `CronManager` runtime controls. |
|
|
23
|
+
| `exisjs/sanitize` | [`sanitize.mdx`](./sanitize.mdx) | Security cleaners (`escapeHtml`, `preventSql`) and data transform utilities. |
|
|
24
|
+
| `exisjs/swagger` | [`swagger.mdx`](./swagger.mdx) | OpenAPI 3.1 specification generation, Swagger UI / Scalar interactive rendering, and decorators. |
|
|
25
|
+
| `exisjs/testing` | [`testing.mdx`](./testing.mdx) | Test runner (`node:test`), synthetic HTTP client (`createTestApp`), `expect` matchers, and `ex` mocks. |
|
|
26
|
+
| `exisjs/plugin` | [`plugin.mdx`](./plugin.mdx) | Modular plugin development (`definePlugin`), lifecycle hooks, and dependency encapsulation. |
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
@@ -175,7 +175,7 @@ The root configuration schema accepted by `exis.config.ts`:
|
|
|
175
175
|
| `trustProxy` | `boolean \| number` | `false` | `true`: trust all proxy headers (`X-Forwarded-For`, `CF-Connecting-IP`, `True-Client-IP`, `X-Real-IP`). `N`: trust only the N closest hops in `X-Forwarded-For`, counting the socket peer; CDN headers are ignored. |
|
|
176
176
|
| `bodyLimit` | `number` | `10485760` (10MB) | Maximum payload size in bytes for JSON and URL-encoded request bodies. |
|
|
177
177
|
| `compression` | `boolean` | `false` | Enables gzip and Brotli response compression. |
|
|
178
|
-
| `etag` | `boolean` | `false` |
|
|
178
|
+
| `etag` | `boolean` | `false` | Weak ETags on successful GET/HEAD responses, and `304` for a matching `If-None-Match`. |
|
|
179
179
|
| `debugRouting` | `boolean` | `false` | Logs the matched file-system route file and applied boundaries for every request. |
|
|
180
180
|
| `asyncContext` | `boolean` | `false` | Enables `AsyncLocalStorage` context tracking (`getContext()`). |
|
|
181
181
|
| `transformResponse` | `boolean \| ((data: any, req: any, res: any) => any)` | `false` | Global transformation function to wrap route responses in a standardized envelope. |
|
|
@@ -59,6 +59,7 @@ function registerDatabase(
|
|
|
59
59
|
| `connect` | `() => Promise<void> \| void` | Asynchronous callback establishing client connection pools. |
|
|
60
60
|
| `disconnect` | `() => Promise<void> \| void` | Asynchronous callback to safely terminate open sockets and pools. |
|
|
61
61
|
| `healthCheck` / `isHealthy` | `() => Promise<boolean \| DatabaseHealthInfo> \| boolean \| DatabaseHealthInfo` | Optional callback returning health status boolean or detailed metrics. |
|
|
62
|
+
| `healthTimeoutMs` | `number` | How long the health check may take before it is reported as `status: 'error'`, so an unresponsive database fails `/_ready` instead of hanging it. Default `5000`. |
|
|
62
63
|
|
|
63
64
|
#### Example: Prisma Lifecycle Registration
|
|
64
65
|
|
|
@@ -97,9 +98,9 @@ Static singleton registry coordinating all registered database adapters.
|
|
|
97
98
|
| Method | Signature | Description |
|
|
98
99
|
| :--- | :--- | :--- |
|
|
99
100
|
| `register(db)` | `(db: DatabaseRegistration) => void` | Adds a database adapter to the manager. |
|
|
100
|
-
| `connectAll()` | `() => Promise<void>` | Connects all registered database
|
|
101
|
+
| `connectAll()` | `() => Promise<void>` | Connects all registered databases in parallel, so boot waits for the slowest one rather than the sum. If any fail, the error names each failed database (`error.failures` lists them); the others stay connected and a later call retries only the failed ones. |
|
|
101
102
|
| `disconnectAll()` | `() => Promise<void>` | Closes all database connections gracefully using `Promise.allSettled`. |
|
|
102
|
-
| `checkHealth()` | `() => Promise<{ healthy: boolean; databases: Record<string, DatabaseHealthInfo> }>` |
|
|
103
|
+
| `checkHealth()` | `() => Promise<{ healthy: boolean; databases: Record<string, DatabaseHealthInfo> }>` | Runs every database's health check in parallel, each limited by its `healthTimeoutMs`. Calls made while a check is running share its result, so frequent probes from several load balancers cost one round of pings. |
|
|
103
104
|
| `clear()` | `() => void` | Clears all registered database adapters (useful for test tear-downs). |
|
|
104
105
|
|
|
105
106
|
#### Health Output Structures
|
|
@@ -25,8 +25,6 @@ import {
|
|
|
25
25
|
Options,
|
|
26
26
|
Head,
|
|
27
27
|
All,
|
|
28
|
-
Ws,
|
|
29
|
-
Sse,
|
|
30
28
|
|
|
31
29
|
// Parameter Injection
|
|
32
30
|
Body,
|
|
@@ -152,8 +150,8 @@ Method decorators register class methods as HTTP route handlers and attach valid
|
|
|
152
150
|
| `@Options(path?, schema?)` | `OPTIONS` | `(path?: string, schema?: MethodSchemaInput) => MethodDecorator` |
|
|
153
151
|
| `@Head(path?, schema?)` | `HEAD` | `(path?: string, schema?: MethodSchemaInput) => MethodDecorator` |
|
|
154
152
|
| `@All(path?, schema?)` | Any Method | `(path?: string, schema?: MethodSchemaInput) => MethodDecorator` |
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
|
|
154
|
+
> Server-Sent Events use a normal `@Get` route that calls `res.sse()`; see [Responses](/docs/responses). WebSocket routes are not part of the class decorators.
|
|
157
155
|
|
|
158
156
|
---
|
|
159
157
|
|
|
@@ -317,6 +317,6 @@ app.use(fromExpress(morgan('combined')))
|
|
|
317
317
|
| `requestId()` | `() => Handler` | Injects a unique `X-Request-Id` into request and response headers. |
|
|
318
318
|
| `requestLogger(options?)` | `(options?: LoggerConfig) => Handler` | Formats and logs request completion timings and status codes. |
|
|
319
319
|
| `serveStatic(root, options?)` | `(root: string, options?: StaticOptions) => Handler` | Serves static assets from disk with caching headers and streaming backpressure. |
|
|
320
|
-
| `conditionalGet()` | `() => Handler` |
|
|
320
|
+
| `conditionalGet()` | `() => Handler` | Turns on automatic ETags and `304 Not Modified` for the routes it is applied to (as `etag: true` does app-wide). |
|
|
321
321
|
| `validate(schema)` | `(schema: ValidateSchema) => Handler` | Validates request parameters against a `TexEngine` schema. |
|
|
322
322
|
|
|
@@ -232,8 +232,6 @@ import {
|
|
|
232
232
|
Options,
|
|
233
233
|
Head,
|
|
234
234
|
All,
|
|
235
|
-
Ws,
|
|
236
|
-
Sse,
|
|
237
235
|
Body,
|
|
238
236
|
Param,
|
|
239
237
|
Query,
|
|
@@ -311,8 +309,8 @@ Method decorators attach HTTP handler logic and validation schemas to controller
|
|
|
311
309
|
- `@Options(path?, schema?)`
|
|
312
310
|
- `@Head(path?, schema?)`
|
|
313
311
|
- `@All(path?, schema?)`
|
|
314
|
-
|
|
315
|
-
- `@
|
|
312
|
+
|
|
313
|
+
> Server-Sent Events use a normal `@Get` route that calls `res.sse()`; see [Responses](/docs/responses). WebSocket routes are not part of the class decorators.
|
|
316
314
|
|
|
317
315
|
---
|
|
318
316
|
|
|
@@ -361,9 +359,9 @@ getProfile(@CurrentUser() user: any, @CurrentUser('id') userId: string) {
|
|
|
361
359
|
| Decorator | Target | Description |
|
|
362
360
|
| :--- | :--- | :--- |
|
|
363
361
|
| `@Use(...middlewares)` | Class / Method | Applies middleware functions to the controller or route. |
|
|
364
|
-
| `@
|
|
365
|
-
| `@
|
|
366
|
-
| `@
|
|
362
|
+
| `@UseGuards(...guards)` | Class / Method | Attaches authorization guards. |
|
|
363
|
+
| `@UseFilters(...filters)` | Class / Method | Attaches exception filters. |
|
|
364
|
+
| `@UseInterceptors(...interceptors)` | Class / Method | Wraps the handler: each interceptor receives `next.handle()` and its return value becomes the response. |
|
|
367
365
|
| `@HttpCode(status)` | Method | Sets the default HTTP status code for successful responses. |
|
|
368
366
|
| `@Header(name, value)` | Method | Sets static HTTP response headers. |
|
|
369
367
|
| `@Redirect(url, status?)` | Method | Redirects responses to the target URL. |
|
|
@@ -168,6 +168,9 @@ All `TexType` instances provide fluent modifier and documentation methods:
|
|
|
168
168
|
|
|
169
169
|
| Method | Signature | Description |
|
|
170
170
|
| :--- | :--- | :--- |
|
|
171
|
+
| `optional()` | `() => TexEngine<T \| undefined>` | Used as a field of another object: the field may be left out. |
|
|
172
|
+
| `nullable()` | `() => TexEngine<T \| null>` | Used as a field of another object: the field may be `null`. |
|
|
173
|
+
| `nullish()` | `() => TexEngine<T \| null \| undefined>` | Used as a field of another object: the field may be left out or `null`. |
|
|
171
174
|
| `partial()` | `() => TexEngine<Partial<T>>` | Returns a copy of the schema with all fields marked optional. |
|
|
172
175
|
| `pick(keys)` | `<K extends keyof T>(keys: K[]) => TexEngine<Pick<T, K>>` | Creates a new schema containing only the specified keys. |
|
|
173
176
|
| `omit(keys)` | `<K extends keyof T>(keys: K[]) => TexEngine<Omit<T, K>>` | Creates a new schema omitting the specified keys. |
|
package/dist/error/errors.d.ts
CHANGED
|
@@ -80,7 +80,15 @@ export declare function renderValidationTable(rows: {
|
|
|
80
80
|
received: string;
|
|
81
81
|
expected: string;
|
|
82
82
|
}[]): string;
|
|
83
|
-
export
|
|
83
|
+
export interface ErrorHandlerOptions {
|
|
84
|
+
/**
|
|
85
|
+
* Also send the pre-0.9 duplicate fields (`message`, `validationErrors`,
|
|
86
|
+
* `errors`, `details`, `timestamp`) next to `error`. Deprecated; for
|
|
87
|
+
* clients that have not moved to `error.code` / `error.message` / `error.details` yet.
|
|
88
|
+
*/
|
|
89
|
+
legacyFields?: boolean;
|
|
90
|
+
}
|
|
91
|
+
export declare function createErrorHandler(isDev?: boolean, options?: ErrorHandlerOptions): ErrorHandler;
|
|
84
92
|
/**
|
|
85
93
|
* Async handler wrapper — catches promise rejections.
|
|
86
94
|
* Note: Exis automatically handles async promise rejections internally.
|
|
@@ -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;AAerD,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,CACpB,OAAO,SAAsB,EAC7B,OAAO,CAAC,EAAE,OAAO,GAChB,SAAS;IAIZ,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;IAM7D,MAAM,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/error/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/error/errors.js
CHANGED
|
@@ -75,7 +75,6 @@ class HttpError extends Error {
|
|
|
75
75
|
message: this.message,
|
|
76
76
|
...(this.details !== undefined && { details: this.details }),
|
|
77
77
|
},
|
|
78
|
-
...(this.details && typeof this.details === 'object' ? this.details : {}),
|
|
79
78
|
};
|
|
80
79
|
}
|
|
81
80
|
}
|
|
@@ -195,6 +194,8 @@ class GatewayTimeoutException extends GatewayTimeoutError {
|
|
|
195
194
|
}
|
|
196
195
|
exports.GatewayTimeoutException = GatewayTimeoutException;
|
|
197
196
|
// ─── Global Error Handler ─────────────────────────────────────────────────────
|
|
197
|
+
// The development error page is self-contained with inline styles
|
|
198
|
+
const DEV_PAGE_CSP = "default-src 'none'; style-src 'unsafe-inline'; frame-ancestors 'none'";
|
|
198
199
|
function escapeHtml(str) {
|
|
199
200
|
if (typeof str !== 'string')
|
|
200
201
|
return String(str);
|
|
@@ -307,7 +308,8 @@ function renderValidationTable(rows) {
|
|
|
307
308
|
const bot = `└─${'─'.repeat(fieldWidth)}─┴─${'─'.repeat(receivedWidth)}─┴─${'─'.repeat(expectedWidth)}─┘`;
|
|
308
309
|
return [top, headerRow, sep, ...dataRows, bot].join('\n');
|
|
309
310
|
}
|
|
310
|
-
function createErrorHandler(isDev = false) {
|
|
311
|
+
function createErrorHandler(isDev = false, options = {}) {
|
|
312
|
+
const legacy = options.legacyFields === true;
|
|
311
313
|
return (err, req, res, _next) => {
|
|
312
314
|
if (res.headersSent)
|
|
313
315
|
return;
|
|
@@ -316,6 +318,7 @@ function createErrorHandler(isDev = false) {
|
|
|
316
318
|
if (isDev &&
|
|
317
319
|
req.headers.accept?.includes('text/html') &&
|
|
318
320
|
err.statusCode >= 500) {
|
|
321
|
+
res.setHeader('Content-Security-Policy', DEV_PAGE_CSP);
|
|
319
322
|
res.status(err.statusCode).html(renderErrorHtml(err, req));
|
|
320
323
|
return;
|
|
321
324
|
}
|
|
@@ -480,7 +483,7 @@ function createErrorHandler(isDev = false) {
|
|
|
480
483
|
tableRows.push({
|
|
481
484
|
field,
|
|
482
485
|
// Never echo credentials into logs or error responses
|
|
483
|
-
received: (0, error_1.
|
|
486
|
+
received: (0, error_1.redactReceived)(field, formattedReceived),
|
|
484
487
|
expected: itemDetail?.expected || expectedMsg,
|
|
485
488
|
code: itemDetail?.code,
|
|
486
489
|
});
|
|
@@ -527,12 +530,13 @@ function createErrorHandler(isDev = false) {
|
|
|
527
530
|
message: message || 'Validation Error',
|
|
528
531
|
details: responseDetails,
|
|
529
532
|
},
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
533
|
+
...(legacy && {
|
|
534
|
+
message: message || 'Validation Error',
|
|
535
|
+
validationErrors: errorsMap,
|
|
536
|
+
errors: errorsMap,
|
|
537
|
+
details: responseDetails,
|
|
538
|
+
timestamp: new Date().toISOString(),
|
|
539
|
+
}),
|
|
536
540
|
});
|
|
537
541
|
return;
|
|
538
542
|
}
|
|
@@ -545,9 +549,11 @@ function createErrorHandler(isDev = false) {
|
|
|
545
549
|
code: 'INVALID_JSON',
|
|
546
550
|
message: 'Invalid JSON in request body',
|
|
547
551
|
},
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
552
|
+
...(legacy && {
|
|
553
|
+
message: 'Invalid JSON in request body',
|
|
554
|
+
validationErrors: null,
|
|
555
|
+
timestamp: new Date().toISOString(),
|
|
556
|
+
}),
|
|
551
557
|
});
|
|
552
558
|
return;
|
|
553
559
|
}
|
|
@@ -561,6 +567,7 @@ function createErrorHandler(isDev = false) {
|
|
|
561
567
|
logger_1.logger.error({ err }, 'unhandled server error');
|
|
562
568
|
}
|
|
563
569
|
if (isDev && req.headers.accept?.includes('text/html')) {
|
|
570
|
+
res.setHeader('Content-Security-Policy', DEV_PAGE_CSP);
|
|
564
571
|
res
|
|
565
572
|
.status(500)
|
|
566
573
|
.html(renderErrorHtml(err instanceof Error ? err : new Error(String(err)), req));
|
|
@@ -575,9 +582,11 @@ function createErrorHandler(isDev = false) {
|
|
|
575
582
|
message: internalMessage,
|
|
576
583
|
...(isDev && { stack: err.stack }),
|
|
577
584
|
},
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
585
|
+
...(legacy && {
|
|
586
|
+
message: internalMessage,
|
|
587
|
+
validationErrors: null,
|
|
588
|
+
timestamp: new Date().toISOString(),
|
|
589
|
+
}),
|
|
581
590
|
});
|
|
582
591
|
};
|
|
583
592
|
}
|
package/dist/error/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/error/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/error/errors.ts"],"names":[],"mappings":"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"}
|