exisjs 0.9.1 → 0.9.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/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +2 -1
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +5 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/docs/content/config.mdx +3 -1
- package/dist/docs/content/validation.mdx +33 -11
- package/dist/docs/reference/config.mdx +1 -0
- package/dist/docs/reference/sanitize.mdx +129 -134
- package/dist/docs/reference/validator.mdx +8 -3
- package/dist/router/route-scanner.d.ts +12 -4
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +46 -31
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/sanitize/index.d.ts +29 -3
- package/dist/sanitize/index.d.ts.map +1 -1
- package/dist/sanitize/index.js +91 -32
- package/dist/sanitize/index.js.map +1 -1
- package/dist/server/adapters/bun-adapter.d.ts +1 -1
- package/dist/server/adapters/bun-adapter.d.ts.map +1 -1
- package/dist/server/adapters/bun-adapter.js.map +1 -1
- package/dist/server/bootstrapper.d.ts.map +1 -1
- package/dist/server/bootstrapper.js +1 -1
- package/dist/server/bootstrapper.js.map +1 -1
- package/dist/validator/builder.d.ts +12 -1
- package/dist/validator/builder.d.ts.map +1 -1
- package/dist/validator/builder.js +63 -24
- package/dist/validator/builder.js.map +1 -1
- package/dist/validator/compile.d.ts +7 -2
- package/dist/validator/compile.d.ts.map +1 -1
- package/dist/validator/compile.js +85 -54
- package/dist/validator/compile.js.map +1 -1
- package/dist/validator/engine.d.ts +58 -7
- package/dist/validator/engine.d.ts.map +1 -1
- package/dist/validator/engine.js +432 -525
- package/dist/validator/engine.js.map +1 -1
- package/dist/validator/error.d.ts.map +1 -1
- package/dist/validator/error.js +7 -0
- package/dist/validator/error.js.map +1 -1
- package/dist/validator/rules.d.ts +66 -7
- package/dist/validator/rules.d.ts.map +1 -1
- package/dist/validator/rules.js +435 -109
- package/dist/validator/rules.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 +127 -64
- package/dist/validator/tex-types.js.map +1 -1
- package/dist/validator/text.d.ts +2 -0
- package/dist/validator/text.d.ts.map +1 -1
- package/dist/validator/text.js +31 -13
- package/dist/validator/text.js.map +1 -1
- package/dist/validator/types.d.ts +15 -0
- package/dist/validator/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/sanitize/sanitize.d.ts +0 -33
- package/dist/sanitize/sanitize.d.ts.map +0 -1
- package/dist/sanitize/sanitize.js +0 -104
- package/dist/sanitize/sanitize.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAO1C,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAID,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,QAAQ,CAAC,UAAU,CAAC,EAClB,KAAK,GACL,OAAO,GACP,OAAO,GACP,KAAK,GACL,mBAAmB,GACnB,aAAa,GACb,uBAAuB,GACvB,eAAe,GACf,QAAQ,CACX,GAAG;IACF,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACvB,iBAAiB,CAAC,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAA;IACnD,WAAW,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;IACvC,qBAAqB,CAAC,EAAE,UAAU,CAAC,uBAAuB,CAAC,CAAA;IAC3D,aAAa,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;IAC3C,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAO1C,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAID,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,QAAQ,CAAC,UAAU,CAAC,EAClB,KAAK,GACL,OAAO,GACP,OAAO,GACP,KAAK,GACL,mBAAmB,GACnB,aAAa,GACb,uBAAuB,GACvB,eAAe,GACf,QAAQ,CACX,GAAG;IACF,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAC3B,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IACvB,iBAAiB,CAAC,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAA;IACnD,WAAW,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;IACvC,qBAAqB,CAAC,EAAE,UAAU,CAAC,uBAAuB,CAAC,CAAA;IAC3D,aAAa,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;IAC3C,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,cAmD3B,CAAA;AAID,wBAAgB,WAAW,CACzB,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,UAAU,GACnB,cAAc,CAyChB;AAWD,wBAAsB,UAAU,CAC9B,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,cAAc,CAAC,CA0FzB"}
|
package/dist/config/config.js
CHANGED
|
@@ -50,7 +50,8 @@ exports.defaultConfig = {
|
|
|
50
50
|
helmet: { enabled: true },
|
|
51
51
|
trustProxy: false,
|
|
52
52
|
bodyLimit: 10 * 1024 * 1024,
|
|
53
|
-
|
|
53
|
+
// Only an explicit NODE_ENV=development exposes error details; `exisjs dev` sets it
|
|
54
|
+
env: process.env.NODE_ENV ?? 'production',
|
|
54
55
|
compression: false,
|
|
55
56
|
keepAlive: false,
|
|
56
57
|
server: 'auto', // Auto-detect backend
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";;;;;;AAOA,oCAEC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -97,6 +97,11 @@ export interface DevConfig {
|
|
|
97
97
|
extensions?: string[];
|
|
98
98
|
/** Debounce interval in milliseconds before reloading the server */
|
|
99
99
|
debounceMs?: number;
|
|
100
|
+
/**
|
|
101
|
+
* Load each route file on its first request (default `true`). Set to `false`
|
|
102
|
+
* to load every route at startup, as `exisjs start` does.
|
|
103
|
+
*/
|
|
104
|
+
lazyRoutes?: boolean;
|
|
100
105
|
}
|
|
101
106
|
export interface ExisConfig {
|
|
102
107
|
port?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -152,6 +152,7 @@ export default defineConfig({
|
|
|
152
152
|
| `errors` | `{ legacyFields?: boolean }` | `{}` | `legacyFields: true` adds the pre-0.9 duplicate fields to error bodies. Deprecated. |
|
|
153
153
|
| `compression` | `boolean` | `false` | Gzip/Brotli HTTP response compression. |
|
|
154
154
|
| `bodyLimit` | `number` | `10485760` (10MB) | Maximum request payload body size in bytes. |
|
|
155
|
+
| `env` | `'development' \| 'production' \| 'test'` | `NODE_ENV`, else `'production'` | Only `development` sends error messages and stack traces to clients and loads routes lazily. `exisjs dev` sets it; a server started with plain `node` or `tsx` and no `NODE_ENV` runs as production. |
|
|
155
156
|
| `blockSuspiciousProbes` | `boolean \| BlockProbesOptions` | `false` | Blocks known vulnerability scanners and malicious probes (`.php`, `wp-admin`). |
|
|
156
157
|
| `etag` | `boolean` | `false` | Weak ETags on successful GET/HEAD responses, with `304 Not Modified` for a matching `If-None-Match`. See [Caching & Conditional Requests](/docs/responses#caching--conditional-requests-etag-304-412). |
|
|
157
158
|
| `transformResponse` | `boolean \| Function` | `false` | Standardizes handler response payload envelopes. |
|
|
@@ -200,7 +201,8 @@ export default defineConfig({
|
|
|
200
201
|
|
|
201
202
|
dev: {
|
|
202
203
|
usePolling: false, // Set to true for network mounts or WSL
|
|
203
|
-
interval: 100
|
|
204
|
+
interval: 100,
|
|
205
|
+
lazyRoutes: true // false loads every route at startup, as in production
|
|
204
206
|
}
|
|
205
207
|
})
|
|
206
208
|
```
|
|
@@ -45,15 +45,16 @@ ExisJS provides type-safe primitives that accept modifier options and configurat
|
|
|
45
45
|
|
|
46
46
|
| Primitive | Signature | Description |
|
|
47
47
|
| :--- | :--- | :--- |
|
|
48
|
-
| `tex.string()` | `tex.string(options?)` | Validates strings. Supports `{ min, max, trim, toLowerCase, toUpperCase, collapseWhitespace, escapeHtml, stripHtml, slugify, mask, preventSql, preventTraversal, coerce, default }`. |
|
|
49
|
-
| `tex.number()` | `tex.number(options?)` | Validates numbers. Supports `{ min, max, coerce, default }
|
|
50
|
-
| `tex.boolean()` | `tex.boolean(options?)` | Validates booleans. Supports `{ coerce, default }`. Coerces `"true"`, `"false"`, `"1"`, `"0"`. |
|
|
48
|
+
| `tex.string()` | `tex.string(options?)` | Validates strings. Supports `{ min, max, length, pattern, trim, toLowerCase, toUpperCase, collapseWhitespace, escapeHtml, stripHtml, slugify, mask, preventSql, preventTraversal, coerce, default }`. `pattern` is a `RegExp` checked after trimming and case changes. |
|
|
49
|
+
| `tex.number()` | `tex.number(options?)` | Validates finite numbers. Supports `{ int, min, max, coerce, default }`; `int: true` accepts whole numbers only. |
|
|
50
|
+
| `tex.boolean()` | `tex.boolean(options?)` | Validates booleans. Supports `{ coerce, default }`. Coerces `"true"`, `"false"`, `"1"`, `"0"` (any case, surrounding spaces ignored) and `1` / `0`. |
|
|
51
51
|
| `tex.email()` | `tex.email(options?)` | Validates RFC-compliant email formatting. Supports `{ trim, toLowerCase, mask, default }`. |
|
|
52
|
+
| `tex.url()` | `tex.url(options?)` | Validates absolute URLs. Only `http` and `https` unless `{ protocols: ['https'] }` says otherwise, so `javascript:` links are rejected. Supports `{ trim, min, max, pattern, default }`. |
|
|
52
53
|
| `tex.uuid()` | `tex.uuid(options?)` | Validates UUID strings. Supports `{ version: 1 \| 4, default }`. |
|
|
53
54
|
| `tex.cuid()` | `tex.cuid(options?)` | Validates CUID identifiers. Supports `{ default }`. |
|
|
54
55
|
| `tex.password()` | `tex.password(options?)` | Validates password complexity. Supports `{ min, max, requireNumbers, requireSymbols, requireUppercase, requireLowercase }`. |
|
|
55
56
|
| `tex.creditCard()` | `tex.creditCard(options?)` | Validates credit card numbers using the Luhn algorithm. Supports `{ mask: true }`. |
|
|
56
|
-
| `tex.date()` | `tex.date(options?)` | Validates
|
|
57
|
+
| `tex.date()` | `tex.date(options?)` | Validates a `Date`, a date string or a timestamp, with `{ coerce, minDate, maxDate, default }`. An unparsable value is rejected, and the parsed value is always a `Date` (`coerce` is accepted but no longer needed). |
|
|
57
58
|
| `tex.array()` | `tex.array(schema, options?)` | Validates arrays of items. Accepts primitive schemas, `tex.object(...)`, or shorthand `{ ... }`. Supports `{ min, max, dedupe, coerce, default }`. |
|
|
58
59
|
| `tex.enum()` | `tex.enum(values, options?)` | Validates against an allowed list of string literals. Supports `{ default }`. |
|
|
59
60
|
| `tex.literal()` | `tex.literal(value, options?)` | Validates against an exact primitive value (`string \| number \| boolean`). |
|
|
@@ -78,7 +79,7 @@ All primitive builders accept modifier options directly in their configuration a
|
|
|
78
79
|
| **Optional** | `{ optional: true }` | `.optional()` | Allows `undefined`. |
|
|
79
80
|
| **Nullable** | `{ nullable: true }` | `.nullable()` | Allows `null`. |
|
|
80
81
|
| **Nullish** | `{ nullish: true }` | `.nullish()` | Allows both `null` and `undefined`. |
|
|
81
|
-
| **Default** | `{ default: value \| () => value }` |
|
|
82
|
+
| **Default** | `{ default: value \| () => value }` | `.default(value)` | Used when the field is missing (or blank, for a form field). A client may omit the field, and after parsing it always has a value. Object and array defaults are copied, so parses never share them. |
|
|
82
83
|
|
|
83
84
|
```typescript filename="example.ts"
|
|
84
85
|
import { tex } from 'exisjs/validator'
|
|
@@ -92,6 +93,8 @@ const Schema = tex.object({
|
|
|
92
93
|
})
|
|
93
94
|
```
|
|
94
95
|
|
|
96
|
+
Every method returns a new schema, so a field schema can be shared between objects: `Name.optional()` in one object does not make `Name` optional anywhere else. `parse()` never modifies the object it is given; it returns a new one.
|
|
97
|
+
|
|
95
98
|
Nested object schemas take the same modifiers as methods: `.optional()`, `.nullable()` and `.nullish()`. A plain object literal is also a nested object:
|
|
96
99
|
|
|
97
100
|
```typescript filename="src/http/leads/schema.ts"
|
|
@@ -314,20 +317,27 @@ export function sanitizeTitle(input: string): string {
|
|
|
314
317
|
| Category | Function | Description |
|
|
315
318
|
| :--- | :--- | :--- |
|
|
316
319
|
| **Security** | `sanitize.escapeHtml(val)` | Escapes HTML entities (`&`, `<`, `>`, `"`, `'`). |
|
|
317
|
-
| **Security** | `sanitize.stripHtml(val)` | Removes
|
|
318
|
-
| **Security** | `sanitize.
|
|
319
|
-
| **Security** | `sanitize.
|
|
320
|
-
| **
|
|
320
|
+
| **Security** | `sanitize.stripHtml(val)` | Removes tags, comments, and `<script>` / `<style>` elements with their content. |
|
|
321
|
+
| **Security** | `sanitize.stripControlChars(val)` | Removes invisible control characters and bidirectional overrides. |
|
|
322
|
+
| **Security** | `sanitize.preventSql(val)` | Rejects common SQL injection probes (the field fails validation). |
|
|
323
|
+
| **Security** | `sanitize.preventTraversal(val)` | Rejects `..` path segments, also percent-encoded, and NUL bytes. |
|
|
324
|
+
| **Masking** | `sanitize.maskEmail(val)` | Masks email local-parts (e.g. `us***@example.com`). |
|
|
321
325
|
| **Masking** | `sanitize.maskString(val)` | Masks characters leaving only boundary characters visible. |
|
|
322
326
|
| **Formatting** | `sanitize.trim(val)` | Trims leading and trailing whitespace. |
|
|
323
327
|
| **Formatting** | `sanitize.toLowerCase(val)` | Converts string to lowercase. |
|
|
324
328
|
| **Formatting** | `sanitize.toUpperCase(val)` | Converts string to uppercase. |
|
|
325
329
|
| **Formatting** | `sanitize.collapseWhitespace(val)` | Replaces consecutive whitespace with a single space. |
|
|
326
330
|
| **Formatting** | `sanitize.slugify(val)` | Converts string into URL-friendly slug format. |
|
|
327
|
-
| **Formatting** | `sanitize.
|
|
331
|
+
| **Formatting** | `sanitize.normalizeEmail(val)` | Trims and lowercases an email address. |
|
|
332
|
+
| **Formatting** | `sanitize.truncate(length)(val)` | Truncates to `length` characters without splitting an emoji. |
|
|
333
|
+
| **Numbers** | `sanitize.round(decimals)(val)`, `sanitize.clamp(min, max)(val)` | Rounds; limits to a range. |
|
|
328
334
|
| **Arrays & Objects** | `sanitize.dedupe(array)` | Removes duplicate elements using a `Set`. |
|
|
329
335
|
| **Arrays & Objects** | `sanitize.compact(array)` | Removes `null`, `undefined`, and empty string values. |
|
|
330
|
-
| **Arrays & Objects** | `sanitize.
|
|
336
|
+
| **Arrays & Objects** | `sanitize.trimElements(array)`, `sanitize.limitLength(n)(array)` | Trims string items; keeps the first `n` items. |
|
|
337
|
+
| **Arrays & Objects** | `sanitize.pick(keys)(obj)`, `sanitize.omit(keys)(obj)` | Keeps or removes keys (`pick` ignores inherited keys). |
|
|
338
|
+
| **Arrays & Objects** | `sanitize.deepTrim(value)` | Trims every string in a nested object or array. |
|
|
339
|
+
|
|
340
|
+
Sanitizers run before the field's type check. One that throws, such as `preventSql`, fails that field with a `400` (code `SANITIZATION_FAILED`) instead of crashing the request.
|
|
331
341
|
|
|
332
342
|
---
|
|
333
343
|
|
|
@@ -353,6 +363,16 @@ export const RegisterSchema = tex.object({
|
|
|
353
363
|
})
|
|
354
364
|
```
|
|
355
365
|
|
|
366
|
+
A field's `.refine()` and `.sanitize()` run wherever the field is: in nested objects, array items and record values too. An object's `.refine(fn, { message, path })` runs once all its fields are valid and reports the error on `path`. `parseAsync()` (used for route validation) also runs `.refineAsync()` rules at every depth.
|
|
367
|
+
|
|
368
|
+
To handle failures without `try` / `catch`, use `safeParse()`:
|
|
369
|
+
|
|
370
|
+
```typescript
|
|
371
|
+
const result = RegisterSchema.safeParse(input)
|
|
372
|
+
if (!result.success) return { errors: result.errors } // [{ path, message, code, ... }]
|
|
373
|
+
const user = result.data
|
|
374
|
+
```
|
|
375
|
+
|
|
356
376
|
---
|
|
357
377
|
|
|
358
378
|
## Discriminated Unions (`tex.discriminatedUnion`)
|
|
@@ -646,6 +666,8 @@ When incoming requests fail validation, ExisJS returns an HTTP `400 Bad Request`
|
|
|
646
666
|
}
|
|
647
667
|
```
|
|
648
668
|
|
|
669
|
+
Every failing value is listed: each bad item of an array, each bad field of a nested object, up to 100 entries. Common `code` values: `MISSING_REQUIRED_FIELD`, `INVALID_TYPE`, `VALUE_TOO_SMALL`, `VALUE_TOO_LARGE`, `INVALID_LENGTH`, `INVALID_FORMAT` (pattern), `INVALID_EMAIL`, `INVALID_URL`, `INVALID_ENUM_VALUE`, `INVALID_DATE`, `DATE_TOO_EARLY`, `DATE_TOO_LATE`, `ARRAY_TOO_SHORT`, `ARRAY_TOO_LONG`, `UNRECOGNIZED_KEYS` (strict mode), `CUSTOM_VALIDATION` (`refine`), `SANITIZATION_FAILED`.
|
|
670
|
+
|
|
649
671
|
In development mode (`NODE_ENV=development`), ExisJS also outputs a tabular summary of the failed validation constraints to the terminal.
|
|
650
672
|
|
|
651
673
|
---
|
|
@@ -1,134 +1,129 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "exisjs/sanitize"
|
|
3
|
-
description: "API Reference for ExisJS data sanitization engine: string cleaners, safeSanitize, and object transformers."
|
|
4
|
-
nextUrl: "/docs/reference/swagger"
|
|
5
|
-
nextTitle: "Swagger Reference"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# `exisjs/sanitize`
|
|
9
|
-
|
|
10
|
-
The `exisjs/sanitize` module provides pure data sanitization functions for cleaning and normalizing input strings, numbers, dates, arrays, and complex objects before business logic execution. It includes security transforms for XSS escaping, HTML stripping, and basic SQL injection and path traversal probe detection.
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Module Exports
|
|
15
|
-
|
|
16
|
-
```typescript
|
|
17
|
-
import { sanitize } from 'exisjs/sanitize'
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## 1. Security Sanitizers
|
|
23
|
-
|
|
24
|
-
The SQL and path traversal checks reject common probe strings; they complement, and never replace, parameterized queries and resolved-path checks.
|
|
25
|
-
|
|
26
|
-
| Function | Signature | Description |
|
|
27
|
-
| :--- | :--- | :--- |
|
|
28
|
-
| `sanitize.escapeHtml` | `(val: string) => string` | Escapes `&`, `<`, `>`, `"`, and `'` into HTML
|
|
29
|
-
| `sanitize.stripHtml` | `(val: string) => string` |
|
|
30
|
-
| `sanitize.
|
|
31
|
-
| `sanitize.
|
|
32
|
-
| `sanitize.
|
|
33
|
-
| `sanitize.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
| `sanitize.
|
|
43
|
-
| `sanitize.
|
|
44
|
-
| `sanitize.
|
|
45
|
-
| `sanitize.
|
|
46
|
-
| `sanitize.
|
|
47
|
-
| `sanitize.
|
|
48
|
-
| `sanitize.
|
|
49
|
-
| `sanitize.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
| `sanitize.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
| `sanitize.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
.
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const step2 = sanitize.collapseWhitespace(step1)
|
|
131
|
-
const clean = sanitize.trim(step2)
|
|
132
|
-
return clean
|
|
133
|
-
}
|
|
134
|
-
```
|
|
1
|
+
---
|
|
2
|
+
title: "exisjs/sanitize"
|
|
3
|
+
description: "API Reference for ExisJS data sanitization engine: string cleaners, safeSanitize, and object transformers."
|
|
4
|
+
nextUrl: "/docs/reference/swagger"
|
|
5
|
+
nextTitle: "Swagger Reference"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# `exisjs/sanitize`
|
|
9
|
+
|
|
10
|
+
The `exisjs/sanitize` module provides pure data sanitization functions for cleaning and normalizing input strings, numbers, dates, arrays, and complex objects before business logic execution. It includes security transforms for XSS escaping, HTML stripping, and basic SQL injection and path traversal probe detection.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Module Exports
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { sanitize } from 'exisjs/sanitize'
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. Security Sanitizers
|
|
23
|
+
|
|
24
|
+
The SQL and path traversal checks reject common probe strings; they complement, and never replace, parameterized queries and resolved-path checks. A sanitizer that throws inside `.sanitize()` becomes a `400` validation error for that field (code `SANITIZATION_FAILED`).
|
|
25
|
+
|
|
26
|
+
| Function | Signature | Description |
|
|
27
|
+
| :--- | :--- | :--- |
|
|
28
|
+
| `sanitize.escapeHtml` | `(val: string) => string` | Escapes `&`, `<`, `>`, `"`, and `'` into HTML entities. Use it for text shown in HTML. |
|
|
29
|
+
| `sanitize.stripHtml` | `(val: string) => string` | Removes tags, comments, and `<script>` / `<style>` elements with their content. A `<` that does not start a tag (`a < b`) is kept. |
|
|
30
|
+
| `sanitize.stripControlChars` | `(val: string) => string` | Removes invisible control characters (keeps tab and line breaks) and the bidirectional overrides used to disguise text. |
|
|
31
|
+
| `sanitize.preventSql` | `(val: string) => string` | Throws on common SQL injection probes (`' or 1=1`, `union select`, ...). |
|
|
32
|
+
| `sanitize.preventTraversal` | `(val: string) => string` | Throws on a `..` path segment (also `\` separators and percent-encoded forms such as `%2e%2e%2f`) and on NUL bytes. `report..final.pdf` is allowed. |
|
|
33
|
+
| `sanitize.maskEmail` | `(val: string) => string` | Obfuscates email addresses (e.g., `al***@example.com`). |
|
|
34
|
+
| `sanitize.maskString` | `(val: string) => string` | Keeps the first and last two characters (`ab****yz`). |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Text & String Sanitizers
|
|
39
|
+
|
|
40
|
+
| Function | Signature | Description |
|
|
41
|
+
| :--- | :--- | :--- |
|
|
42
|
+
| `sanitize.trim` | `(val: string) => string` | Strips leading and trailing whitespace. |
|
|
43
|
+
| `sanitize.toLowerCase` | `(val: string) => string` | Converts all characters to lowercase. |
|
|
44
|
+
| `sanitize.toUpperCase` | `(val: string) => string` | Converts all characters to uppercase. |
|
|
45
|
+
| `sanitize.collapseWhitespace`| `(val: string) => string` | Collapses consecutive whitespace, tabs, and newlines into a single space. |
|
|
46
|
+
| `sanitize.normalizeUnicode` | `(val: string) => string` | Normalizes to Unicode NFC, so visually equal strings compare equal. |
|
|
47
|
+
| `sanitize.normalizeEmail` | `(val: string) => string` | Trims and lowercases an email address. |
|
|
48
|
+
| `sanitize.slugify` | `(val: string) => string` | URL-friendly slug; accented letters keep their base letter (`"Café Crème"` $ o$ `"cafe-creme"`). |
|
|
49
|
+
| `sanitize.truncate(length)` | `(length: number) => (val: string) => string` | Shortens to `length` characters without splitting an emoji in two. |
|
|
50
|
+
| `sanitize.removeNonAlphanumeric` | `(val: string) => string` | Strips all characters except ASCII letters and digits. |
|
|
51
|
+
| `sanitize.normalizeLineEndings` | `(val: string) => string` | Converts `
|
|
52
|
+
` and lone `
|
|
53
|
+
`. |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 3. Numbers
|
|
58
|
+
|
|
59
|
+
| Function | Signature | Description |
|
|
60
|
+
| :--- | :--- | :--- |
|
|
61
|
+
| `sanitize.round(decimals?)` | `(decimals = 0) => (val: number) => number` | Rounds to `decimals` places. |
|
|
62
|
+
| `sanitize.clamp(min, max)` | `(min: number, max: number) => (val: number) => number` | Constrains a number to `[min, max]`. |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 4. Arrays & Objects
|
|
67
|
+
|
|
68
|
+
### Array Transforms
|
|
69
|
+
|
|
70
|
+
| Function | Signature | Description |
|
|
71
|
+
| :--- | :--- | :--- |
|
|
72
|
+
| `sanitize.dedupe` | `<T>(val: T[]) => T[]` | Removes duplicate values preserving first-seen ordering. |
|
|
73
|
+
| `sanitize.compact` | `<T>(val: T[]) => T[]` | Removes `null`, `undefined`, and empty strings (`""`). |
|
|
74
|
+
| `sanitize.trimElements` | `(val: string[]) => string[]` | Trims every string item. |
|
|
75
|
+
| `sanitize.limitLength(n)` | `(length: number) => <T>(val: T[]) => T[]` | Keeps the first `length` items. |
|
|
76
|
+
|
|
77
|
+
### Object Transforms
|
|
78
|
+
|
|
79
|
+
| Function | Signature | Description |
|
|
80
|
+
| :--- | :--- | :--- |
|
|
81
|
+
| `sanitize.pick(keys)` | `<T, K extends keyof T>(keys: K[]) => (val: T) => Pick<T, K>` | Keeps only the listed keys the object itself has (never inherited ones such as `constructor`). |
|
|
82
|
+
| `sanitize.omit(keys)` | `<T, K extends keyof T>(keys: K[]) => (val: T) => Omit<T, K>` | Removes the listed keys. |
|
|
83
|
+
| `sanitize.deepTrim` | `<T>(val: T) => T` | Trims every string in a nested object or array. |
|
|
84
|
+
|
|
85
|
+
Every sanitizer passes values of another type through unchanged (a string sanitizer returns a number as is, an array sanitizer returns a non-array as is), so they are safe on optional and nullable fields.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 5. Integration with TexEngine Validation
|
|
90
|
+
|
|
91
|
+
Sanitizers integrate with `tex` validator chains using the `.sanitize()` modifier. Sanitization occurs **before** rule validation checks:
|
|
92
|
+
|
|
93
|
+
```typescript filename="src/http/articles/schema.ts"
|
|
94
|
+
import { tex } from 'exisjs/validator'
|
|
95
|
+
import { sanitize } from 'exisjs/sanitize'
|
|
96
|
+
|
|
97
|
+
export const CreateArticleSchema = tex.object({
|
|
98
|
+
title: tex
|
|
99
|
+
.string({ min: 5, max: 120 })
|
|
100
|
+
.sanitize(sanitize.trim, sanitize.collapseWhitespace),
|
|
101
|
+
|
|
102
|
+
slug: tex
|
|
103
|
+
.string()
|
|
104
|
+
.sanitize(sanitize.slugify),
|
|
105
|
+
|
|
106
|
+
content: tex
|
|
107
|
+
.string()
|
|
108
|
+
.sanitize(sanitize.stripHtml),
|
|
109
|
+
|
|
110
|
+
tags: tex
|
|
111
|
+
.array(tex.string())
|
|
112
|
+
.sanitize(sanitize.dedupe, sanitize.compact),
|
|
113
|
+
})
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 6. Standalone Usage Example
|
|
119
|
+
|
|
120
|
+
```typescript filename="src/services/import.service.ts"
|
|
121
|
+
import { sanitize } from 'exisjs/sanitize'
|
|
122
|
+
|
|
123
|
+
export function processUserInput(rawContent: string): string {
|
|
124
|
+
const step1 = sanitize.stripHtml(rawContent)
|
|
125
|
+
const step2 = sanitize.collapseWhitespace(step1)
|
|
126
|
+
const clean = sanitize.trim(step2)
|
|
127
|
+
return clean
|
|
128
|
+
}
|
|
129
|
+
```
|
|
@@ -55,8 +55,9 @@ The `tex` instance exposes factory functions for all standard primitives, comple
|
|
|
55
55
|
|
|
56
56
|
| Method | Return Type | Options Interface | Description |
|
|
57
57
|
| :--- | :--- | :--- | :--- |
|
|
58
|
-
| `tex.string(options?)` | `TexType<string>` | `TexStringOptions` | String validation with trimming, HTML escaping, min/max
|
|
59
|
-
| `tex.number(options?)` | `TexType<number>` | `TexNumberOptions` | Number validation with optional string coercion (`coerce: true`) and min/max limits. |
|
|
58
|
+
| `tex.string(options?)` | `TexType<string>` | `TexStringOptions` | String validation with trimming, HTML escaping, min/max/exact `length`, `pattern` (RegExp), masking, coercion, and injection checks. |
|
|
59
|
+
| `tex.number(options?)` | `TexType<number>` | `TexNumberOptions` | Number validation with optional string coercion (`coerce: true`), whole numbers (`int: true`) and min/max limits. |
|
|
60
|
+
| `tex.url(options?)` | `TexType<string>` | `TexUrlOptions` | Absolute URL; `http` / `https` only unless `protocols` lists others. |
|
|
60
61
|
| `tex.boolean(options?)` | `TexType<boolean>` | `TexBooleanOptions` | Boolean validation with string/numeric coercion (`"true"`, `"1"` -> `true`). |
|
|
61
62
|
| `tex.email(options?)` | `TexType<string>` | `TexStringOptions` | Standard RFC 5322 email format validation. |
|
|
62
63
|
| `tex.uuid(options?)` | `TexType<string>` | `{ version?: 1 \| 4 }` | Validates UUID strings (v1 or v4). |
|
|
@@ -160,6 +161,8 @@ All `TexType` instances provide fluent modifier and documentation methods:
|
|
|
160
161
|
| `.transform(fn)` | `<Out>(fn: (val: T) => Out) => TexTransformed<Out>` | Applies a synchronous transformation to validated field data. |
|
|
161
162
|
| `.toOpenApi()` | `() => Record<string, any>` | Converts the type definition into an OpenAPI 3.1 schema object. |
|
|
162
163
|
|
|
164
|
+
Every method returns a new schema and leaves the original unchanged, so one field schema can be reused in several objects.
|
|
165
|
+
|
|
163
166
|
---
|
|
164
167
|
|
|
165
168
|
## `TexEngine` Schema Object Methods
|
|
@@ -176,10 +179,12 @@ All `TexType` instances provide fluent modifier and documentation methods:
|
|
|
176
179
|
| `omit(keys)` | `<K extends keyof T>(keys: K[]) => TexEngine<Omit<T, K>>` | Creates a new schema omitting the specified keys. |
|
|
177
180
|
| `extend(shape)` | `<E>(extension: E) => TexEngine<T & ResolveSchema<E>>` | Merges additional or overridden fields into the existing schema. |
|
|
178
181
|
| `merge(other)` | `<U>(other: TexEngine<U>) => TexEngine<T & U>` | Deeply merges two `TexEngine` schemas into a combined validator. |
|
|
182
|
+
| `refine(fn, opts?)` | `(fn: (data: T) => boolean, opts?: string \| { message?, path? }) => TexEngine<T>` | A check across fields, run once every field is valid; the error is reported on `path`. |
|
|
179
183
|
| `transform(fn)` | `<Out>(fn: (data: T) => Out) => TexTransformedEngine<T, Out>` | Applies post-validation data reshaping to the entire schema output. |
|
|
180
184
|
| `parse(data)` | `(data: unknown) => T` | Synchronously parses and validates data, throwing `ValidatorError` on failure. |
|
|
181
185
|
| `parseAsync(data)` | `(data: unknown) => Promise<T>` | Asynchronously parses and validates data, evaluating async refinements. |
|
|
182
|
-
| `safeParse(data)` | `(data: unknown) => { success: true, data: T } \| { success: false, error: ValidatorError }` | Validates data without throwing
|
|
186
|
+
| `safeParse(data)` | `(data: unknown) => { success: true, data: T } \| { success: false, errors, error: ValidatorError }` | Validates data without throwing; `errors` is the list of `{ path, message, code, ... }`. |
|
|
187
|
+
| `safeParseAsync(data)` | `(data: unknown) => Promise<SafeParseResult<T>>` | `safeParse` that also runs async refinements. |
|
|
183
188
|
| `toOpenApi()` | `() => Record<string, any>` | Translates the schema into an OpenAPI 3.1 JSON schema representation. |
|
|
184
189
|
|
|
185
190
|
---
|
|
@@ -3,12 +3,17 @@ import { Router } from '../router/router';
|
|
|
3
3
|
/** Which controller style a route module exports, if any. */
|
|
4
4
|
export declare function routeParadigm(mod: any): 'oop' | 'functional' | null;
|
|
5
5
|
export declare function mixedParadigmMessage(oopFiles: string[], functionalFiles: string[]): string;
|
|
6
|
+
interface LazyRoute {
|
|
7
|
+
filePath: string;
|
|
8
|
+
loaded: boolean;
|
|
9
|
+
/** Shared by every request that arrives while the file is being mounted */
|
|
10
|
+
loading?: Promise<void>;
|
|
11
|
+
/** Module already imported by the startup paradigm check, used for the first mount */
|
|
12
|
+
preloaded?: any;
|
|
13
|
+
}
|
|
6
14
|
export declare class RouteScanner {
|
|
7
15
|
app: App;
|
|
8
|
-
lazyRoutes: Map<string,
|
|
9
|
-
filePath: string;
|
|
10
|
-
loaded: boolean;
|
|
11
|
-
}>;
|
|
16
|
+
lazyRoutes: Map<string, LazyRoute>;
|
|
12
17
|
routeMap: Map<string, string>;
|
|
13
18
|
apiDir: string | null;
|
|
14
19
|
_allApiDirs?: string[];
|
|
@@ -16,6 +21,8 @@ export declare class RouteScanner {
|
|
|
16
21
|
globalParadigm: 'oop' | 'functional' | null;
|
|
17
22
|
constructor(app: App);
|
|
18
23
|
loadAllRoutes(): Promise<void>;
|
|
24
|
+
/** Mounts a lazily registered route file once; concurrent callers share the same load. */
|
|
25
|
+
private loadLazyRoute;
|
|
19
26
|
autoMountRoutes(root: string): Promise<void>;
|
|
20
27
|
private mountDocs;
|
|
21
28
|
mountRouteFile(filePath: string, routePath: string, preloaded?: any): Promise<void>;
|
|
@@ -30,4 +37,5 @@ export declare class RouteScanner {
|
|
|
30
37
|
module: any;
|
|
31
38
|
}[]): void;
|
|
32
39
|
}
|
|
40
|
+
export {};
|
|
33
41
|
//# sourceMappingURL=route-scanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-scanner.d.ts","sourceRoot":"","sources":["../../src/router/route-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAkBzC,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,YAAY,GAAG,IAAI,CAgBnE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,CAYR;AAED,qBAAa,YAAY;IAQJ,GAAG,EAAE,GAAG;IAPpB,UAAU
|
|
1
|
+
{"version":3,"file":"route-scanner.d.ts","sourceRoot":"","sources":["../../src/router/route-scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAkBzC,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,YAAY,GAAG,IAAI,CAgBnE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAAE,EAClB,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,CAYR;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACvB,sFAAsF;IACtF,SAAS,CAAC,EAAE,GAAG,CAAA;CAChB;AAED,qBAAa,YAAY;IAQJ,GAAG,EAAE,GAAG;IAPpB,UAAU,yBAA+B;IACzC,QAAQ,sBAA4B;IACpC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAO;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,aAAa,UAAQ;IACrB,cAAc,EAAE,KAAK,GAAG,YAAY,GAAG,IAAI,CAAO;gBAEtC,GAAG,EAAE,GAAG;IAErB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAepC,0FAA0F;IAC1F,OAAO,CAAC,aAAa;IAuBR,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAuP3C,SAAS;IAkBjB,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,IAAI,CAAC;IAuOT,2BAA2B,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM;IAIhD,oBAAoB,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,iBAAiB,GAAE,GAAG,EAAO,GAC5B,IAAI;IAsBA,2BAA2B,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,SAAa,GAAG,IAAI;YAI5D,iBAAiB;YAIjB,aAAa;IAOd,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,wBAAwB,CAC7B,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,EAAE,GAC3C,IAAI;CAGR"}
|