exisjs 0.7.6 → 0.7.8
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 +12 -0
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/clean.d.ts +5 -0
- package/dist/cli/commands/clean.d.ts.map +1 -0
- package/dist/cli/commands/clean.js +30 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +15 -1
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +6 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +57 -2
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/index.js +16 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/manifest.d.ts +1 -0
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +161 -23
- package/dist/cli/manifest.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +9 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +4 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/cron/expressions.d.ts +45 -0
- package/dist/cron/expressions.d.ts.map +1 -0
- package/dist/cron/expressions.js +87 -0
- package/dist/cron/expressions.js.map +1 -0
- package/dist/cron/index.d.ts +6 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron/index.js +22 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/cron/job.d.ts +50 -0
- package/dist/cron/job.d.ts.map +1 -0
- package/dist/cron/job.js +247 -0
- package/dist/cron/job.js.map +1 -0
- package/dist/cron/manager.d.ts +105 -0
- package/dist/cron/manager.d.ts.map +1 -0
- package/dist/cron/manager.js +245 -0
- package/dist/cron/manager.js.map +1 -0
- package/dist/cron/parser.d.ts +22 -0
- package/dist/cron/parser.d.ts.map +1 -0
- package/dist/cron/parser.js +269 -0
- package/dist/cron/parser.js.map +1 -0
- package/dist/cron/types.d.ts +76 -0
- package/dist/cron/types.d.ts.map +1 -0
- package/dist/cron/types.js +3 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/decorators/constants.d.ts +2 -0
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +3 -1
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/core.d.ts +29 -11
- package/dist/decorators/core.d.ts.map +1 -1
- package/dist/decorators/core.js +49 -11
- package/dist/decorators/core.js.map +1 -1
- package/dist/decorators/cron.d.ts +57 -0
- package/dist/decorators/cron.d.ts.map +1 -0
- package/dist/decorators/cron.js +143 -0
- package/dist/decorators/cron.js.map +1 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +2 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/params.d.ts +97 -2
- package/dist/decorators/params.d.ts.map +1 -1
- package/dist/decorators/params.js +94 -2
- package/dist/decorators/params.js.map +1 -1
- package/dist/decorators/routing.d.ts +81 -16
- package/dist/decorators/routing.d.ts.map +1 -1
- package/dist/decorators/routing.js +81 -16
- package/dist/decorators/routing.js.map +1 -1
- package/dist/docs/content/cron.mdx +196 -0
- package/dist/docs/content/errors.mdx +58 -9
- package/dist/docs/content/structure.mdx +1 -1
- package/dist/docs/content/swagger.mdx +289 -0
- package/dist/docs/reference/cron.mdx +300 -0
- package/dist/docs/reference/decorators.mdx +8 -0
- package/dist/docs/reference/error.mdx +44 -0
- package/dist/docs/reference/swagger.mdx +226 -0
- package/dist/docs/reference/validator.mdx +1 -1
- package/dist/router/boundary.d.ts +24 -2
- package/dist/router/boundary.d.ts.map +1 -1
- package/dist/router/boundary.js +24 -2
- package/dist/router/boundary.js.map +1 -1
- package/dist/router/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +52 -3
- package/dist/router/controller-registrar.js.map +1 -1
- package/dist/router/route-builder.d.ts +196 -33
- package/dist/router/route-builder.d.ts.map +1 -1
- package/dist/router/route-builder.js +171 -11
- package/dist/router/route-builder.js.map +1 -1
- package/dist/router/route-scanner.d.ts +6 -0
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +69 -812
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +27 -0
- package/dist/router/router.js.map +1 -1
- package/dist/router/scanner/boundary-loader.d.ts +18 -0
- package/dist/router/scanner/boundary-loader.d.ts.map +1 -0
- package/dist/router/scanner/boundary-loader.js +539 -0
- package/dist/router/scanner/boundary-loader.js.map +1 -0
- package/dist/router/scanner/cron-mounter.d.ts +15 -0
- package/dist/router/scanner/cron-mounter.d.ts.map +1 -0
- package/dist/router/scanner/cron-mounter.js +216 -0
- package/dist/router/scanner/cron-mounter.js.map +1 -0
- package/dist/router/scanner/error-mounter.d.ts +14 -0
- package/dist/router/scanner/error-mounter.d.ts.map +1 -0
- package/dist/router/scanner/error-mounter.js +200 -0
- package/dist/router/scanner/error-mounter.js.map +1 -0
- package/dist/router/scanner/fs-scanner.d.ts +25 -0
- package/dist/router/scanner/fs-scanner.d.ts.map +1 -0
- package/dist/router/scanner/fs-scanner.js +115 -0
- package/dist/router/scanner/fs-scanner.js.map +1 -0
- package/dist/router/scanner/functional-compiler.d.ts +9 -0
- package/dist/router/scanner/functional-compiler.d.ts.map +1 -0
- package/dist/router/scanner/functional-compiler.js +233 -0
- package/dist/router/scanner/functional-compiler.js.map +1 -0
- package/dist/router/scanner/index.d.ts +9 -0
- package/dist/router/scanner/index.d.ts.map +1 -0
- package/dist/router/scanner/index.js +19 -0
- package/dist/router/scanner/index.js.map +1 -0
- package/dist/router/types.d.ts +15 -0
- package/dist/router/types.d.ts.map +1 -1
- package/dist/server/app.d.ts +2 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +3 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/helpers/body-parser.d.ts +18 -0
- package/dist/server/helpers/body-parser.d.ts.map +1 -0
- package/dist/server/helpers/body-parser.js +246 -0
- package/dist/server/helpers/body-parser.js.map +1 -0
- package/dist/server/helpers/cookie.d.ts +4 -0
- package/dist/server/helpers/cookie.d.ts.map +1 -0
- package/dist/server/helpers/cookie.js +61 -0
- package/dist/server/helpers/cookie.js.map +1 -0
- package/dist/server/helpers/etag.d.ts +3 -0
- package/dist/server/helpers/etag.d.ts.map +1 -0
- package/dist/server/helpers/etag.js +25 -0
- package/dist/server/helpers/etag.js.map +1 -0
- package/dist/server/helpers/index.d.ts +6 -0
- package/dist/server/helpers/index.d.ts.map +1 -0
- package/dist/server/helpers/index.js +21 -0
- package/dist/server/helpers/index.js.map +1 -0
- package/dist/server/helpers/ip.d.ts +9 -0
- package/dist/server/helpers/ip.d.ts.map +1 -0
- package/dist/server/helpers/ip.js +62 -0
- package/dist/server/helpers/ip.js.map +1 -0
- package/dist/server/helpers/stream.d.ts +4 -0
- package/dist/server/helpers/stream.d.ts.map +1 -0
- package/dist/server/helpers/stream.js +193 -0
- package/dist/server/helpers/stream.js.map +1 -0
- package/dist/server/request.d.ts +1 -139
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +19 -433
- package/dist/server/request.js.map +1 -1
- package/dist/server/response.d.ts +105 -158
- package/dist/server/response.d.ts.map +1 -1
- package/dist/server/response.js +121 -423
- package/dist/server/response.js.map +1 -1
- package/dist/swagger/decorators.d.ts +81 -0
- package/dist/swagger/decorators.d.ts.map +1 -0
- package/dist/swagger/decorators.js +172 -0
- package/dist/swagger/decorators.js.map +1 -0
- package/dist/swagger/generator.d.ts +19 -0
- package/dist/swagger/generator.d.ts.map +1 -0
- package/dist/swagger/generator.js +344 -0
- package/dist/swagger/generator.js.map +1 -0
- package/dist/swagger/index.d.ts +31 -0
- package/dist/swagger/index.d.ts.map +1 -0
- package/dist/swagger/index.js +53 -0
- package/dist/swagger/index.js.map +1 -0
- package/dist/swagger/mounter.d.ts +7 -0
- package/dist/swagger/mounter.d.ts.map +1 -0
- package/dist/swagger/mounter.js +56 -0
- package/dist/swagger/mounter.js.map +1 -0
- package/dist/swagger/types.d.ts +190 -0
- package/dist/swagger/types.d.ts.map +1 -0
- package/dist/swagger/types.js +3 -0
- package/dist/swagger/types.js.map +1 -0
- package/dist/swagger/ui.d.ts +6 -0
- package/dist/swagger/ui.d.ts.map +1 -0
- package/dist/swagger/ui.js +118 -0
- package/dist/swagger/ui.js.map +1 -0
- package/dist/validator/builder.d.ts +223 -0
- package/dist/validator/builder.d.ts.map +1 -0
- package/dist/validator/builder.js +517 -0
- package/dist/validator/builder.js.map +1 -0
- package/dist/validator/engine.d.ts +19 -0
- package/dist/validator/engine.d.ts.map +1 -0
- package/dist/validator/engine.js +568 -0
- package/dist/validator/engine.js.map +1 -0
- package/dist/validator/error.d.ts +12 -0
- package/dist/validator/error.d.ts.map +1 -0
- package/dist/validator/error.js +63 -0
- package/dist/validator/error.js.map +1 -0
- package/dist/validator/pagination.d.ts +40 -0
- package/dist/validator/pagination.d.ts.map +1 -0
- package/dist/validator/pagination.js +60 -0
- package/dist/validator/pagination.js.map +1 -0
- package/dist/validator/tex.d.ts +6 -158
- package/dist/validator/tex.d.ts.map +1 -1
- package/dist/validator/tex.js +14 -971
- package/dist/validator/tex.js.map +1 -1
- package/dist/validator/types.d.ts +83 -0
- package/dist/validator/types.d.ts.map +1 -0
- package/dist/validator/types.js +3 -0
- package/dist/validator/types.js.map +1 -0
- package/package.json +9 -1
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TexBuilder = void 0;
|
|
4
|
+
const tex_types_1 = require("./tex-types");
|
|
5
|
+
const engine_1 = require("./engine");
|
|
6
|
+
/**
|
|
7
|
+
* Ultra-high performance declarative schema builder powered by the native Rust validator.
|
|
8
|
+
*/
|
|
9
|
+
class TexBuilder {
|
|
10
|
+
/**
|
|
11
|
+
* Defines a string schema with built-in sanitization and security protections.
|
|
12
|
+
*
|
|
13
|
+
* @param opts Validation rules and transformations (min, max, trim, toLowerCase, escapeHtml, etc.)
|
|
14
|
+
* @returns Strongly typed string schema descriptor
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const username = tex.string({ min: 3, max: 20, trim: true, toLowerCase: true })
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
string(opts) {
|
|
22
|
+
let base = 'string';
|
|
23
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
24
|
+
base += '?';
|
|
25
|
+
if (opts?.nullable)
|
|
26
|
+
base += ' | nullable';
|
|
27
|
+
if (opts?.nullish)
|
|
28
|
+
base += ' | nullish';
|
|
29
|
+
if (opts?.min !== undefined)
|
|
30
|
+
base += ` | min:${opts.min}`;
|
|
31
|
+
if (opts?.max !== undefined)
|
|
32
|
+
base += ` | max:${opts.max}`;
|
|
33
|
+
if (opts?.trim)
|
|
34
|
+
base += ' | trim';
|
|
35
|
+
if (opts?.collapseWhitespace)
|
|
36
|
+
base += ' | collapseWhitespace';
|
|
37
|
+
if (opts?.toLowerCase)
|
|
38
|
+
base += ' | lowercase';
|
|
39
|
+
if (opts?.toUpperCase)
|
|
40
|
+
base += ' | uppercase';
|
|
41
|
+
if (opts?.escapeHtml)
|
|
42
|
+
base += ' | escapeHtml';
|
|
43
|
+
if (opts?.stripHtml)
|
|
44
|
+
base += ' | stripHtml';
|
|
45
|
+
if (opts?.slugify)
|
|
46
|
+
base += ' | slugify';
|
|
47
|
+
if (opts?.mask)
|
|
48
|
+
base += ' | mask';
|
|
49
|
+
if (opts?.preventSql)
|
|
50
|
+
base += ' | preventSql';
|
|
51
|
+
if (opts?.preventTraversal)
|
|
52
|
+
base += ' | preventTraversal';
|
|
53
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Defines a number schema with bounds and optional auto-coercion from string query parameters.
|
|
57
|
+
*
|
|
58
|
+
* @param opts Validation rules (min, max, coerce, default)
|
|
59
|
+
* @returns Strongly typed number schema descriptor
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const age = tex.number({ min: 18, max: 120, coerce: true })
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
number(opts) {
|
|
67
|
+
let base = 'number';
|
|
68
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
69
|
+
base += '?';
|
|
70
|
+
if (opts?.nullable)
|
|
71
|
+
base += ' | nullable';
|
|
72
|
+
if (opts?.nullish)
|
|
73
|
+
base += ' | nullish';
|
|
74
|
+
if (opts?.coerce)
|
|
75
|
+
base += ' | coerce';
|
|
76
|
+
if (opts?.min !== undefined)
|
|
77
|
+
base += ` | min:${opts.min}`;
|
|
78
|
+
if (opts?.max !== undefined)
|
|
79
|
+
base += ` | max:${opts.max}`;
|
|
80
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Defines a boolean schema with optional string-to-boolean coercion (`"true"`, `"false"`).
|
|
84
|
+
*
|
|
85
|
+
* @param opts Validation rules (coerce, optional, default)
|
|
86
|
+
* @returns Strongly typed boolean schema descriptor
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const isActive = tex.boolean({ coerce: true, default: true })
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
boolean(opts) {
|
|
94
|
+
let base = 'boolean';
|
|
95
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
96
|
+
base += '?';
|
|
97
|
+
if (opts?.nullable)
|
|
98
|
+
base += ' | nullable';
|
|
99
|
+
if (opts?.nullish)
|
|
100
|
+
base += ' | nullish';
|
|
101
|
+
if (opts?.coerce)
|
|
102
|
+
base += ' | coerce';
|
|
103
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Defines an email schema verified natively against RFC standards.
|
|
107
|
+
*
|
|
108
|
+
* @param opts Validation and formatting rules
|
|
109
|
+
* @returns Strongly typed email string schema descriptor
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* const userEmail = tex.email({ trim: true, toLowerCase: true })
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
email(opts) {
|
|
117
|
+
let base = 'email';
|
|
118
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
119
|
+
base += '?';
|
|
120
|
+
if (opts?.nullable)
|
|
121
|
+
base += ' | nullable';
|
|
122
|
+
if (opts?.nullish)
|
|
123
|
+
base += ' | nullish';
|
|
124
|
+
if (opts?.trim)
|
|
125
|
+
base += ' | trim';
|
|
126
|
+
if (opts?.toLowerCase)
|
|
127
|
+
base += ' | lowercase';
|
|
128
|
+
if (opts?.mask)
|
|
129
|
+
base += ' | mask';
|
|
130
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Defines a UUID v1 or v4 schema.
|
|
134
|
+
*
|
|
135
|
+
* @param opts UUID options including optional version specification
|
|
136
|
+
* @returns Strongly typed UUID string schema descriptor
|
|
137
|
+
*/
|
|
138
|
+
uuid(opts) {
|
|
139
|
+
let base = 'uuid';
|
|
140
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
141
|
+
base += '?';
|
|
142
|
+
if (opts?.nullable)
|
|
143
|
+
base += ' | nullable';
|
|
144
|
+
if (opts?.nullish)
|
|
145
|
+
base += ' | nullish';
|
|
146
|
+
if (opts?.version)
|
|
147
|
+
base += ` | version:${opts.version}`;
|
|
148
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Defines a CUID (Collision-resistant Unique Identifier) schema.
|
|
152
|
+
*/
|
|
153
|
+
cuid(opts) {
|
|
154
|
+
let base = 'cuid';
|
|
155
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
156
|
+
base += '?';
|
|
157
|
+
if (opts?.nullable)
|
|
158
|
+
base += ' | nullable';
|
|
159
|
+
if (opts?.nullish)
|
|
160
|
+
base += ' | nullish';
|
|
161
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Defines a Credit Card schema validated via the Luhn checksum algorithm.
|
|
165
|
+
*/
|
|
166
|
+
creditCard(opts) {
|
|
167
|
+
let base = 'creditcard';
|
|
168
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
169
|
+
base += '?';
|
|
170
|
+
if (opts?.nullable)
|
|
171
|
+
base += ' | nullable';
|
|
172
|
+
if (opts?.nullish)
|
|
173
|
+
base += ' | nullish';
|
|
174
|
+
if (opts?.mask)
|
|
175
|
+
base += ' | mask';
|
|
176
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Defines a secure password schema with enforcement for length, numbers, symbols, and casing.
|
|
180
|
+
*
|
|
181
|
+
* @param opts Complexity constraints (min, requireNumbers, requireSymbols, requireUppercase, requireLowercase)
|
|
182
|
+
* @returns Strongly typed password schema descriptor
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```ts
|
|
186
|
+
* const password = tex.password({
|
|
187
|
+
* min: 8,
|
|
188
|
+
* requireNumbers: true,
|
|
189
|
+
* requireSymbols: true,
|
|
190
|
+
* requireUppercase: true
|
|
191
|
+
* })
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
password(opts) {
|
|
195
|
+
let base = 'password';
|
|
196
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
197
|
+
base += '?';
|
|
198
|
+
if (opts?.nullable)
|
|
199
|
+
base += ' | nullable';
|
|
200
|
+
if (opts?.nullish)
|
|
201
|
+
base += ' | nullish';
|
|
202
|
+
if (opts?.min !== undefined)
|
|
203
|
+
base += ` | min:${opts.min}`;
|
|
204
|
+
if (opts?.max !== undefined)
|
|
205
|
+
base += ` | max:${opts.max}`;
|
|
206
|
+
if (opts?.requireNumbers)
|
|
207
|
+
base += ' | requireNumbers';
|
|
208
|
+
if (opts?.requireSymbols)
|
|
209
|
+
base += ' | requireSymbols';
|
|
210
|
+
if (opts?.requireUppercase)
|
|
211
|
+
base += ' | requireUppercase';
|
|
212
|
+
if (opts?.requireLowercase)
|
|
213
|
+
base += ' | requireLowercase';
|
|
214
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Defines an array schema with item validation, bounds, and automatic coercion from comma-delimited strings.
|
|
218
|
+
*
|
|
219
|
+
* @param schema Schema descriptor for each item in the array
|
|
220
|
+
* @param opts Array rules (min, max, dedupe, coerce, default)
|
|
221
|
+
* @returns Strongly typed array schema descriptor
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```ts
|
|
225
|
+
* const tags = tex.array(tex.string({ trim: true }), { min: 1, max: 10, dedupe: true })
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
array(schema, opts) {
|
|
229
|
+
let resolvedItem = schema;
|
|
230
|
+
if (typeof schema === 'object' &&
|
|
231
|
+
schema !== null &&
|
|
232
|
+
!(schema instanceof tex_types_1.TexType) &&
|
|
233
|
+
!(schema instanceof engine_1.TexEngine)) {
|
|
234
|
+
resolvedItem = this.object(schema);
|
|
235
|
+
}
|
|
236
|
+
const itemSchema = resolvedItem instanceof engine_1.TexEngine
|
|
237
|
+
? `object<${JSON.stringify(resolvedItem.getCompiledSchema())}>`
|
|
238
|
+
: resolvedItem instanceof tex_types_1.TexType
|
|
239
|
+
? resolvedItem._raw
|
|
240
|
+
: resolvedItem;
|
|
241
|
+
let base = `array<${itemSchema}>`;
|
|
242
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
243
|
+
base += '?';
|
|
244
|
+
if (opts?.nullable)
|
|
245
|
+
base += ' | nullable';
|
|
246
|
+
if (opts?.nullish)
|
|
247
|
+
base += ' | nullish';
|
|
248
|
+
if (opts?.min !== undefined)
|
|
249
|
+
base += ` | min:${opts.min}`;
|
|
250
|
+
if (opts?.max !== undefined)
|
|
251
|
+
base += ` | max:${opts.max}`;
|
|
252
|
+
if (opts?.dedupe)
|
|
253
|
+
base += ' | dedupe';
|
|
254
|
+
if (opts?.coerce)
|
|
255
|
+
base += ' | coerce';
|
|
256
|
+
const res = new tex_types_1.TexType(base, opts?.default);
|
|
257
|
+
res._item = resolvedItem;
|
|
258
|
+
return res;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Defines an enum schema restricted to an exact list of allowed string literals.
|
|
262
|
+
*
|
|
263
|
+
* @param values Array of allowed string values
|
|
264
|
+
* @param opts Enum options (optional, default)
|
|
265
|
+
* @returns Strongly typed enum schema descriptor
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* ```ts
|
|
269
|
+
* const role = tex.enum(['admin', 'user', 'guest'], { default: 'user' })
|
|
270
|
+
* ```
|
|
271
|
+
*/
|
|
272
|
+
enum(values, opts) {
|
|
273
|
+
let base = `enum:${values.join(',')}`;
|
|
274
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
275
|
+
base += '?';
|
|
276
|
+
if (opts?.nullable)
|
|
277
|
+
base += ' | nullable';
|
|
278
|
+
if (opts?.nullish)
|
|
279
|
+
base += ' | nullish';
|
|
280
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Defines an exact literal value schema (e.g. `'v1'`, `42`, `true`).
|
|
284
|
+
*/
|
|
285
|
+
literal(value, opts) {
|
|
286
|
+
let base = `literal:${value}`;
|
|
287
|
+
if (opts?.optional)
|
|
288
|
+
base += '?';
|
|
289
|
+
if (opts?.nullable)
|
|
290
|
+
base += ' | nullable';
|
|
291
|
+
if (opts?.nullish)
|
|
292
|
+
base += ' | nullish';
|
|
293
|
+
return new tex_types_1.TexType(base);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Defines a union schema that succeeds if any of the provided candidate schemas match.
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```ts
|
|
300
|
+
* const idOrEmail = tex.union([tex.number({ coerce: true }), tex.email()])
|
|
301
|
+
* ```
|
|
302
|
+
*/
|
|
303
|
+
union(schemas, opts) {
|
|
304
|
+
const items = schemas.map((s) => (s instanceof tex_types_1.TexType ? s._raw : s));
|
|
305
|
+
let base = items.join(' || ');
|
|
306
|
+
if (opts?.optional)
|
|
307
|
+
base = `(${base})?`;
|
|
308
|
+
if (opts?.nullable)
|
|
309
|
+
base += ' | nullable';
|
|
310
|
+
if (opts?.nullish)
|
|
311
|
+
base += ' | nullish';
|
|
312
|
+
return new tex_types_1.TexType(base);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Defines a date schema with bounds checking and automatic coercion from ISO strings or timestamps.
|
|
316
|
+
*
|
|
317
|
+
* @param opts Date options (minDate, maxDate, coerce, default)
|
|
318
|
+
* @returns Strongly typed Date schema descriptor
|
|
319
|
+
*
|
|
320
|
+
* @example
|
|
321
|
+
* ```ts
|
|
322
|
+
* const createdAt = tex.date({ coerce: true, minDate: '2024-01-01' })
|
|
323
|
+
* ```
|
|
324
|
+
*/
|
|
325
|
+
date(opts) {
|
|
326
|
+
let base = 'date';
|
|
327
|
+
if (opts?.optional || opts?.default !== undefined)
|
|
328
|
+
base += '?';
|
|
329
|
+
if (opts?.nullable)
|
|
330
|
+
base += ' | nullable';
|
|
331
|
+
if (opts?.nullish)
|
|
332
|
+
base += ' | nullish';
|
|
333
|
+
if (opts?.coerce)
|
|
334
|
+
base += ' | coerce';
|
|
335
|
+
if (opts?.minDate)
|
|
336
|
+
base += ` | minDate:${opts.minDate}`;
|
|
337
|
+
if (opts?.maxDate)
|
|
338
|
+
base += ` | maxDate:${opts.maxDate}`;
|
|
339
|
+
return new tex_types_1.TexType(base, opts?.default);
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Defines a dynamic key-value record schema (e.g. `Record<string, T>`).
|
|
343
|
+
*/
|
|
344
|
+
record(schema, opts) {
|
|
345
|
+
const itemSchema = schema instanceof tex_types_1.TexType ? schema._raw : schema;
|
|
346
|
+
let base = `record<${itemSchema}>`;
|
|
347
|
+
if (opts?.optional)
|
|
348
|
+
base += '?';
|
|
349
|
+
if (opts?.nullable)
|
|
350
|
+
base += ' | nullable';
|
|
351
|
+
if (opts?.nullish)
|
|
352
|
+
base += ' | nullish';
|
|
353
|
+
return new tex_types_1.TexType(base);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Defines an unconstrained pass-through schema.
|
|
357
|
+
*/
|
|
358
|
+
any(opts) {
|
|
359
|
+
let base = 'any';
|
|
360
|
+
if (opts?.optional)
|
|
361
|
+
base += '?';
|
|
362
|
+
if (opts?.nullable)
|
|
363
|
+
base += ' | nullable';
|
|
364
|
+
if (opts?.nullish)
|
|
365
|
+
base += ' | nullish';
|
|
366
|
+
return new tex_types_1.TexType(base);
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Defines a file upload validation schema.
|
|
370
|
+
*/
|
|
371
|
+
file(opts) {
|
|
372
|
+
let base = 'file';
|
|
373
|
+
if (opts?.optional)
|
|
374
|
+
base += '?';
|
|
375
|
+
if (opts?.nullable)
|
|
376
|
+
base += ' | nullable';
|
|
377
|
+
if (opts?.nullish)
|
|
378
|
+
base += ' | nullish';
|
|
379
|
+
if (opts?.maxSize)
|
|
380
|
+
base += ` | maxSize:${opts.maxSize}`;
|
|
381
|
+
if (opts?.mimeTypes)
|
|
382
|
+
base += ` | mimeTypes:${opts.mimeTypes.join(',')}`;
|
|
383
|
+
return new tex_types_1.TexType(base);
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Compiles an object structure into a fast `TexEngine` validator instance.
|
|
387
|
+
*
|
|
388
|
+
* @param schema Object map containing field definitions
|
|
389
|
+
* @param opts Object options (e.g. `{ strict: true }` to reject unknown fields)
|
|
390
|
+
* @returns Compiled `TexEngine` validator
|
|
391
|
+
*
|
|
392
|
+
* @example
|
|
393
|
+
* ```ts
|
|
394
|
+
* const UserSchema = tex.object({
|
|
395
|
+
* id: tex.number({ coerce: true }),
|
|
396
|
+
* name: tex.string({ min: 2 }),
|
|
397
|
+
* email: tex.email()
|
|
398
|
+
* }, { strict: true })
|
|
399
|
+
*
|
|
400
|
+
* const user = UserSchema.parse(req.body)
|
|
401
|
+
* ```
|
|
402
|
+
*/
|
|
403
|
+
object(schema, opts) {
|
|
404
|
+
const compiledSchema = {};
|
|
405
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
406
|
+
if (value instanceof engine_1.TexEngine) {
|
|
407
|
+
compiledSchema[key] =
|
|
408
|
+
`object<${JSON.stringify(value.getCompiledSchema())}>`;
|
|
409
|
+
}
|
|
410
|
+
else if (value instanceof tex_types_1.TexType) {
|
|
411
|
+
compiledSchema[key] = value._raw;
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
compiledSchema[key] = value;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return new engine_1.TexEngine(compiledSchema, schema, opts?.strict);
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Dedicated Environment Schema parser (`tex.env`).
|
|
421
|
+
* Automatically coerces numbers, booleans, dates, and arrays from `process.env` string values,
|
|
422
|
+
* while preserving strict type validation and defaults.
|
|
423
|
+
*
|
|
424
|
+
* @param schema Environment variable schema definition
|
|
425
|
+
* @param opts Schema configuration
|
|
426
|
+
* @returns Compiled `TexEngine` tailored for environment variable parsing
|
|
427
|
+
*
|
|
428
|
+
* @example
|
|
429
|
+
* ```ts
|
|
430
|
+
* export const env = tex.env({
|
|
431
|
+
* PORT: tex.number({ default: 3000 }),
|
|
432
|
+
* NODE_ENV: tex.enum(['development', 'production', 'test'], { default: 'development' }),
|
|
433
|
+
* DATABASE_URL: tex.string(),
|
|
434
|
+
* ENABLE_METRICS: tex.boolean({ default: false })
|
|
435
|
+
* }).parse(process.env)
|
|
436
|
+
* ```
|
|
437
|
+
*/
|
|
438
|
+
env(schema, opts) {
|
|
439
|
+
const coercedSchema = {};
|
|
440
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
441
|
+
if (value instanceof tex_types_1.TexType) {
|
|
442
|
+
let raw = value._raw;
|
|
443
|
+
// Auto-inject coercion if not already present
|
|
444
|
+
if ((raw.startsWith('number') ||
|
|
445
|
+
raw.startsWith('boolean') ||
|
|
446
|
+
raw.startsWith('date') ||
|
|
447
|
+
raw.startsWith('array<')) &&
|
|
448
|
+
!raw.includes('coerce')) {
|
|
449
|
+
raw = `${raw} | coerce`;
|
|
450
|
+
}
|
|
451
|
+
const cloned = new tex_types_1.TexType(raw, value.defaultValue);
|
|
452
|
+
cloned.sanitizers = [...value.sanitizers];
|
|
453
|
+
cloned.refinements = [...value.refinements];
|
|
454
|
+
if (value._item) {
|
|
455
|
+
;
|
|
456
|
+
cloned._item = value._item;
|
|
457
|
+
}
|
|
458
|
+
coercedSchema[key] = cloned;
|
|
459
|
+
}
|
|
460
|
+
else if (value instanceof engine_1.TexEngine) {
|
|
461
|
+
coercedSchema[key] = value;
|
|
462
|
+
}
|
|
463
|
+
else if (typeof value === 'string') {
|
|
464
|
+
let raw = value;
|
|
465
|
+
if ((raw.startsWith('number') ||
|
|
466
|
+
raw.startsWith('boolean') ||
|
|
467
|
+
raw.startsWith('date') ||
|
|
468
|
+
raw.startsWith('array<')) &&
|
|
469
|
+
!raw.includes('coerce')) {
|
|
470
|
+
raw = `${raw} | coerce`;
|
|
471
|
+
}
|
|
472
|
+
coercedSchema[key] = new tex_types_1.TexType(raw);
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
coercedSchema[key] = value;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
return this.object(coercedSchema, opts);
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Helper that builds standard query pagination schema (`page`, `limit`, `sort`, `order`).
|
|
482
|
+
*
|
|
483
|
+
* @param options Configuration for default and maximum limit
|
|
484
|
+
* @returns Compiled pagination query validator
|
|
485
|
+
*
|
|
486
|
+
* @example
|
|
487
|
+
* ```ts
|
|
488
|
+
* export default controller({
|
|
489
|
+
* listUsers: route.get('/', {
|
|
490
|
+
* query: tex.pagination({ defaultLimit: 25, maxLimit: 100 }),
|
|
491
|
+
* async handle({ query }) {
|
|
492
|
+
* const { skip, limit } = getPaginationSkip(query)
|
|
493
|
+
* return UserService.find(skip, limit)
|
|
494
|
+
* }
|
|
495
|
+
* })
|
|
496
|
+
* })
|
|
497
|
+
* ```
|
|
498
|
+
*/
|
|
499
|
+
pagination(options) {
|
|
500
|
+
const defaultLimit = options?.defaultLimit ?? 10;
|
|
501
|
+
const maxLimit = options?.maxLimit ?? 100;
|
|
502
|
+
return this.object({
|
|
503
|
+
page: this.number({ optional: true, coerce: true, min: 1, default: 1 }),
|
|
504
|
+
limit: this.number({
|
|
505
|
+
optional: true,
|
|
506
|
+
coerce: true,
|
|
507
|
+
min: 1,
|
|
508
|
+
max: maxLimit,
|
|
509
|
+
default: defaultLimit,
|
|
510
|
+
}),
|
|
511
|
+
sort: this.string({ optional: true, trim: true }),
|
|
512
|
+
order: this.enum(['asc', 'desc'], { optional: true }),
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
exports.TexBuilder = TexBuilder;
|
|
517
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/validator/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare class TexEngine<T = any> {
|
|
2
|
+
private schema;
|
|
3
|
+
private rawSchema;
|
|
4
|
+
private validator;
|
|
5
|
+
private strict;
|
|
6
|
+
readonly _type: T;
|
|
7
|
+
_isOptional: boolean;
|
|
8
|
+
constructor(schema: Record<string, string>, rawSchema: Record<string, any>, strict?: boolean, isOptional?: boolean);
|
|
9
|
+
getCompiledSchema(): Record<string, string>;
|
|
10
|
+
optional(): TexEngine<T | undefined>;
|
|
11
|
+
partial(): TexEngine<Partial<T>>;
|
|
12
|
+
pick<K extends keyof T>(keys: K[]): TexEngine<Pick<T, K>>;
|
|
13
|
+
omit<K extends keyof T>(keys: K[]): TexEngine<Omit<T, K>>;
|
|
14
|
+
parse(data: any): T;
|
|
15
|
+
parseAsync(data: any): Promise<T>;
|
|
16
|
+
toMongoSchema(): Record<string, any>;
|
|
17
|
+
toOpenApi(): Record<string, any>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/validator/engine.ts"],"names":[],"mappings":"AAKA,qBAAa,SAAS,CAAC,CAAC,GAAG,GAAG;IAC5B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAS;IAEvB,SAAgB,KAAK,EAAG,CAAC,CAAA;IAClB,WAAW,UAAQ;gBAGxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,MAAM,UAAQ,EACd,UAAU,UAAQ;IASpB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI3C,QAAQ,IAAI,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;IAIpC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAmBhC,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAiBzD,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAiBzD,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;IAyZb,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IA0CvC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAgCpC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAwCjC"}
|