@zipbul/baker 0.0.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.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.ko.md +448 -0
  3. package/README.md +448 -0
  4. package/dist/index-6pbm9cq6.js +15 -0
  5. package/dist/index-6pbm9cq6.js.map +17 -0
  6. package/dist/index-fww37qs9.js +5 -0
  7. package/dist/index-fww37qs9.js.map +20 -0
  8. package/dist/index-w36xamck.js +6 -0
  9. package/dist/index-w36xamck.js.map +10 -0
  10. package/dist/index.d.ts +9 -0
  11. package/dist/index.js +145 -0
  12. package/dist/index.js.map +18 -0
  13. package/dist/src/aot/array.d.ts +7 -0
  14. package/dist/src/aot/common.d.ts +15 -0
  15. package/dist/src/aot/date.d.ts +3 -0
  16. package/dist/src/aot/index.d.ts +9 -0
  17. package/dist/src/aot/index.js +5 -0
  18. package/dist/src/aot/index.js.map +18 -0
  19. package/dist/src/aot/locales.d.ts +5 -0
  20. package/dist/src/aot/number.d.ts +6 -0
  21. package/dist/src/aot/object.d.ts +6 -0
  22. package/dist/src/aot/string.d.ts +72 -0
  23. package/dist/src/aot/transform.d.ts +25 -0
  24. package/dist/src/aot/typechecker.d.ts +10 -0
  25. package/dist/src/collect.d.ts +12 -0
  26. package/dist/src/create-rule.d.ts +31 -0
  27. package/dist/src/decorators/array.d.ts +13 -0
  28. package/dist/src/decorators/common.d.ts +33 -0
  29. package/dist/src/decorators/date.d.ts +5 -0
  30. package/dist/src/decorators/index.d.ts +11 -0
  31. package/dist/src/decorators/index.js +5 -0
  32. package/dist/src/decorators/index.js.map +9 -0
  33. package/dist/src/decorators/locales.d.ts +9 -0
  34. package/dist/src/decorators/number.d.ts +11 -0
  35. package/dist/src/decorators/object.d.ts +9 -0
  36. package/dist/src/decorators/string.d.ts +72 -0
  37. package/dist/src/decorators/transform.d.ts +68 -0
  38. package/dist/src/decorators/typechecker.d.ts +18 -0
  39. package/dist/src/errors.d.ts +37 -0
  40. package/dist/src/functions/deserialize.d.ts +8 -0
  41. package/dist/src/functions/index.d.ts +2 -0
  42. package/dist/src/functions/serialize.d.ts +8 -0
  43. package/dist/src/interfaces.d.ts +47 -0
  44. package/dist/src/registry.d.ts +16 -0
  45. package/dist/src/rules/array.d.ts +7 -0
  46. package/dist/src/rules/common.d.ts +7 -0
  47. package/dist/src/rules/date.d.ts +3 -0
  48. package/dist/src/rules/index.d.ts +11 -0
  49. package/dist/src/rules/index.js +5 -0
  50. package/dist/src/rules/index.js.map +9 -0
  51. package/dist/src/rules/locales.d.ts +5 -0
  52. package/dist/src/rules/number.d.ts +6 -0
  53. package/dist/src/rules/object.d.ts +7 -0
  54. package/dist/src/rules/string.d.ts +145 -0
  55. package/dist/src/rules/typechecker.d.ts +14 -0
  56. package/dist/src/seal/circular-analyzer.d.ts +13 -0
  57. package/dist/src/seal/deserialize-builder.d.ts +5 -0
  58. package/dist/src/seal/expose-validator.d.ts +11 -0
  59. package/dist/src/seal/index.d.ts +5 -0
  60. package/dist/src/seal/seal.d.ts +27 -0
  61. package/dist/src/seal/serialize-builder.d.ts +7 -0
  62. package/dist/src/symbols.d.ts +8 -0
  63. package/dist/src/symbols.js +5 -0
  64. package/dist/src/symbols.js.map +9 -0
  65. package/dist/src/types.d.ts +119 -0
  66. package/package.json +83 -0
package/README.md ADDED
@@ -0,0 +1,448 @@
1
+ <p align="center">
2
+ <h1 align="center">@zipbul/baker</h1>
3
+ <p align="center">
4
+ <strong>Decorator-based validate + transform with inline code generation</strong>
5
+ </p>
6
+ <p align="center">
7
+ class-validator DX · AOT-level performance · zero reflect-metadata
8
+ </p>
9
+ <p align="center">
10
+ <a href="https://github.com/zipbul/baker/actions"><img src="https://github.com/zipbul/baker/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
11
+ <a href="https://www.npmjs.com/package/@zipbul/baker"><img src="https://img.shields.io/npm/v/@zipbul/baker.svg" alt="npm version"></a>
12
+ <a href="https://www.npmjs.com/package/@zipbul/baker"><img src="https://img.shields.io/npm/dm/@zipbul/baker.svg" alt="npm downloads"></a>
13
+ <a href="https://github.com/zipbul/baker/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@zipbul/baker.svg" alt="license"></a>
14
+ </p>
15
+ </p>
16
+
17
+ <p align="center">
18
+ <a href="./README.ko.md">한국어</a>
19
+ </p>
20
+
21
+ ---
22
+
23
+ ## 🤔 Why Baker?
24
+
25
+ | | class-validator | Zod | TypeBox | **Baker** |
26
+ |---|---|---|---|---|
27
+ | Schema style | Decorators | Function chaining | JSON Schema builder | **Decorators** |
28
+ | Performance | Runtime interpreter | Runtime interpreter | JIT compile | **`new Function()` inline codegen** |
29
+ | Transform built-in | Separate package | `.transform()` | ✗ | **Unified** |
30
+ | reflect-metadata | Required | N/A | N/A | **Not needed** |
31
+ | class-validator migration | — | Full rewrite | Full rewrite | **Near drop-in** |
32
+
33
+ Baker gives you the **familiar decorator DX** of class-validator while generating optimized validation + transformation functions via `new Function()` at seal time — delivering **AOT-equivalent performance without a compiler plugin**.
34
+
35
+ ---
36
+
37
+ ## ✨ Features
38
+
39
+ - 🎯 **Decorator-first** — `@IsString()`, `@Min()`, `@IsEmail()` and 80+ built-in validators
40
+ - ⚡ **Inline code generation** — `seal()` compiles validators into optimized functions, no runtime interpretation
41
+ - 🔄 **Unified validate + transform** — `deserialize()` and `serialize()` in one async call
42
+ - 🪶 **Zero reflect-metadata** — no `reflect-metadata` import needed
43
+ - 🔁 **Circular reference detection** — automatic static analysis at seal time
44
+ - 🏷️ **Group-based validation** — apply different rules per request with `groups`
45
+ - 🧩 **Custom rules** — `createRule()` for user-defined validators with codegen support
46
+ - 🚀 **AOT mode** — zipbul CLI generates code at build time, eliminating runtime `seal()` cost
47
+
48
+ ---
49
+
50
+ ## 📦 Installation
51
+
52
+ ```bash
53
+ bun add @zipbul/baker
54
+ ```
55
+
56
+ > **Requirements:** Bun ≥ 1.0, `experimentalDecorators: true` in tsconfig.json
57
+
58
+ ```jsonc
59
+ // tsconfig.json
60
+ {
61
+ "compilerOptions": {
62
+ "experimentalDecorators": true
63
+ }
64
+ }
65
+ ```
66
+
67
+ ---
68
+
69
+ ## 🚀 Quick Start
70
+
71
+ ### 1. Define a DTO
72
+
73
+ ```typescript
74
+ import { IsString, IsInt, IsEmail, Min, Max } from '@zipbul/baker/decorators';
75
+
76
+ class CreateUserDto {
77
+ @IsString()
78
+ name!: string;
79
+
80
+ @IsInt()
81
+ @Min(0)
82
+ @Max(120)
83
+ age!: number;
84
+
85
+ @IsEmail()
86
+ email!: string;
87
+ }
88
+ ```
89
+
90
+ ### 2. Seal at startup
91
+
92
+ ```typescript
93
+ import { seal } from '@zipbul/baker';
94
+
95
+ // Compiles all registered DTOs into optimized validators
96
+ seal();
97
+ ```
98
+
99
+ ### 3. Deserialize per request
100
+
101
+ ```typescript
102
+ import { deserialize, BakerValidationError } from '@zipbul/baker';
103
+
104
+ try {
105
+ const user = await deserialize(CreateUserDto, requestBody);
106
+ // user is a validated CreateUserDto instance
107
+ } catch (e) {
108
+ if (e instanceof BakerValidationError) {
109
+ console.log(e.errors); // BakerError[]
110
+ }
111
+ }
112
+ ```
113
+
114
+ ### 4. Serialize
115
+
116
+ ```typescript
117
+ import { serialize } from '@zipbul/baker';
118
+
119
+ const plain = await serialize(userInstance);
120
+ // plain: Record<string, unknown>
121
+ ```
122
+
123
+ ---
124
+
125
+ ## 🏗️ Decorators
126
+
127
+ ### Type Checkers
128
+
129
+ | Decorator | Description |
130
+ |---|---|
131
+ | `@IsString()` | `typeof === 'string'` |
132
+ | `@IsNumber(opts?)` | `typeof === 'number'` with NaN/Infinity checks |
133
+ | `@IsInt()` | Integer check |
134
+ | `@IsBoolean()` | `typeof === 'boolean'` |
135
+ | `@IsDate()` | `instanceof Date && !isNaN` |
136
+ | `@IsEnum(enumObj)` | Enum value check |
137
+ | `@IsArray()` | `Array.isArray()` |
138
+ | `@IsObject()` | `typeof === 'object'`, excludes null/Array |
139
+
140
+ ### Common
141
+
142
+ | Decorator | Description |
143
+ |---|---|
144
+ | `@IsDefined()` | `!== undefined && !== null` |
145
+ | `@IsOptional()` | Skip subsequent rules if value is absent |
146
+ | `@IsNotEmpty()` | `!== undefined && !== null && !== ''` |
147
+ | `@IsEmpty()` | `=== undefined \|\| === null \|\| === ''` |
148
+ | `@Equals(val)` | `=== val` |
149
+ | `@NotEquals(val)` | `!== val` |
150
+ | `@IsIn(values)` | Value is in the given array |
151
+ | `@IsNotIn(values)` | Value is not in the given array |
152
+ | `@ValidateNested()` | Validate nested DTO |
153
+ | `@ValidateIf(fn)` | Conditional validation |
154
+
155
+ ### Number
156
+
157
+ | Decorator | Description |
158
+ |---|---|
159
+ | `@Min(n)` | `value >= n` |
160
+ | `@Max(n)` | `value <= n` |
161
+ | `@IsPositive()` | `value > 0` |
162
+ | `@IsNegative()` | `value < 0` |
163
+ | `@IsInRange(min, max)` | `min <= value <= max` |
164
+ | `@IsDivisibleBy(n)` | `value % n === 0` |
165
+
166
+ ### String
167
+
168
+ <details>
169
+ <summary>50+ string validators — click to expand</summary>
170
+
171
+ | Decorator | Description |
172
+ |---|---|
173
+ | `@MinLength(n)` | Minimum length |
174
+ | `@MaxLength(n)` | Maximum length |
175
+ | `@Length(min, max)` | Length range |
176
+ | `@Contains(seed)` | Contains substring |
177
+ | `@NotContains(seed)` | Does not contain substring |
178
+ | `@Matches(pattern)` | Regex match |
179
+ | `@IsAlpha()` | Alphabetic only |
180
+ | `@IsAlphanumeric()` | Alphanumeric only |
181
+ | `@IsNumeric()` | Numeric string |
182
+ | `@IsEmail(opts?)` | Email format |
183
+ | `@IsURL(opts?)` | URL format |
184
+ | `@IsUUID(version?)` | UUID v1–v5 |
185
+ | `@IsIP(version?)` | IPv4 / IPv6 |
186
+ | `@IsMACAddress()` | MAC address |
187
+ | `@IsISBN(version?)` | ISBN-10 / ISBN-13 |
188
+ | `@IsISIN()` | ISIN |
189
+ | `@IsIBAN()` | IBAN |
190
+ | `@IsJSON()` | Parseable JSON string |
191
+ | `@IsBase64()` | Base64 encoded |
192
+ | `@IsBase32()` | Base32 encoded |
193
+ | `@IsBase58()` | Base58 encoded |
194
+ | `@IsHexColor()` | Hex color code |
195
+ | `@IsHSL()` | HSL color |
196
+ | `@IsRgbColor()` | RGB color |
197
+ | `@IsHexadecimal()` | Hex string |
198
+ | `@IsBIC()` | BIC/SWIFT code |
199
+ | `@IsISRC()` | ISRC code |
200
+ | `@IsEAN()` | EAN barcode |
201
+ | `@IsMimeType()` | MIME type |
202
+ | `@IsMagnetURI()` | Magnet URI |
203
+ | `@IsCreditCard()` | Credit card number |
204
+ | `@IsHash(algorithm)` | Hash (`md5 \| sha1 \| sha256 \| sha512` etc.) |
205
+ | `@IsRFC3339()` | RFC 3339 date |
206
+ | `@IsMilitaryTime()` | 24h format (`HH:MM`) |
207
+ | `@IsLatitude()` | Latitude (-90 ~ 90) |
208
+ | `@IsLongitude()` | Longitude (-180 ~ 180) |
209
+ | `@IsEthereumAddress()` | Ethereum address |
210
+ | `@IsBtcAddress()` | Bitcoin address (P2PKH/P2SH/bech32) |
211
+ | `@IsISO4217CurrencyCode()` | ISO 4217 currency code |
212
+ | `@IsPhoneNumber()` | E.164 international phone number |
213
+ | `@IsStrongPassword(opts?)` | Strong password |
214
+ | `@IsSemVer()` | Semantic version |
215
+ | `@IsISO8601()` | ISO 8601 date string |
216
+ | `@IsMongoId()` | MongoDB ObjectId |
217
+ | `@IsTaxId(locale)` | Tax ID by locale |
218
+
219
+ </details>
220
+
221
+ ### Date
222
+
223
+ | Decorator | Description |
224
+ |---|---|
225
+ | `@MinDate(date)` | Minimum date |
226
+ | `@MaxDate(date)` | Maximum date |
227
+
228
+ ### Array
229
+
230
+ | Decorator | Description |
231
+ |---|---|
232
+ | `@ArrayContains(values)` | Contains all given elements |
233
+ | `@ArrayNotContains(values)` | Contains none of the given elements |
234
+ | `@ArrayMinSize(n)` | Minimum array length |
235
+ | `@ArrayMaxSize(n)` | Maximum array length |
236
+ | `@ArrayUnique()` | No duplicates |
237
+ | `@ArrayNotEmpty()` | Not empty |
238
+
239
+ ### Locale-specific
240
+
241
+ | Decorator | Description |
242
+ |---|---|
243
+ | `@IsMobilePhone(locale)` | Mobile phone by locale |
244
+ | `@IsPostalCode(locale)` | Postal code by locale |
245
+ | `@IsIdentityCard(locale)` | Identity card by locale |
246
+ | `@IsPassportNumber(locale)` | Passport number by locale |
247
+
248
+ ### Transform & Type
249
+
250
+ | Decorator | Description |
251
+ |---|---|
252
+ | `@Transform(fn, opts?)` | Custom transform function |
253
+ | `@Type(fn)` | Nested DTO type + implicit conversion |
254
+ | `@Expose(opts?)` | Control property exposure |
255
+ | `@Exclude(opts?)` | Exclude property from serialization |
256
+
257
+ ---
258
+
259
+ ## ⚙️ Validation Options
260
+
261
+ Every validation decorator accepts `ValidationOptions` as its last argument:
262
+
263
+ ```typescript
264
+ interface ValidationOptions {
265
+ each?: boolean; // Apply rule to each array element
266
+ groups?: string[]; // Groups this rule belongs to
267
+ message?: string | ((args: {
268
+ property: string;
269
+ value: unknown;
270
+ constraints: unknown[];
271
+ }) => string); // Custom error message
272
+ context?: unknown; // Arbitrary context attached to error
273
+ }
274
+ ```
275
+
276
+ **Example:**
277
+
278
+ ```typescript
279
+ class UserDto {
280
+ @IsString({ message: 'Name must be a string' })
281
+ name!: string;
282
+
283
+ @IsInt({
284
+ message: ({ property }) => `${property} must be an integer`,
285
+ context: { httpStatus: 400 },
286
+ })
287
+ age!: number;
288
+ }
289
+ ```
290
+
291
+ ---
292
+
293
+ ## 🚨 Error Handling
294
+
295
+ When validation fails, `deserialize()` throws a `BakerValidationError`:
296
+
297
+ ```typescript
298
+ class BakerValidationError extends Error {
299
+ readonly errors: BakerError[];
300
+ readonly className: string;
301
+ }
302
+ ```
303
+
304
+ Each error follows the `BakerError` interface:
305
+
306
+ ```typescript
307
+ interface BakerError {
308
+ readonly path: string; // Field path ('user.address.city')
309
+ readonly code: string; // Error code ('isString', 'min', 'isEmail')
310
+ readonly message?: string; // Custom message (when message option is set)
311
+ readonly context?: unknown; // Custom context (when context option is set)
312
+ }
313
+ ```
314
+
315
+ ---
316
+
317
+ ## 📋 Array Validation
318
+
319
+ Use `each: true` to apply rules to each element of an Array, Set, or Map:
320
+
321
+ ```typescript
322
+ class TagsDto {
323
+ @IsString({ each: true })
324
+ tags!: string[];
325
+ }
326
+ ```
327
+
328
+ ---
329
+
330
+ ## 🏷️ Group-based Validation
331
+
332
+ Apply different rules depending on the use case:
333
+
334
+ ```typescript
335
+ class UserDto {
336
+ @IsString({ groups: ['create'] })
337
+ name!: string;
338
+
339
+ @IsEmail({ groups: ['create', 'update'] })
340
+ email!: string;
341
+ }
342
+
343
+ // Only validate rules in the 'create' group
344
+ const user = await deserialize(UserDto, body, { groups: ['create'] });
345
+ ```
346
+
347
+ ---
348
+
349
+ ## 🪆 Nested Objects
350
+
351
+ ```typescript
352
+ import { ValidateNested, Type } from '@zipbul/baker/decorators';
353
+
354
+ class AddressDto {
355
+ @IsString()
356
+ city!: string;
357
+ }
358
+
359
+ class UserDto {
360
+ @ValidateNested()
361
+ @Type(() => AddressDto)
362
+ address!: AddressDto;
363
+ }
364
+ ```
365
+
366
+ ---
367
+
368
+ ## 🧩 Custom Rules
369
+
370
+ Create user-defined validation rules with codegen support:
371
+
372
+ ```typescript
373
+ import { createRule } from '@zipbul/baker';
374
+
375
+ const isPositiveInt = createRule({
376
+ name: 'isPositiveInt',
377
+ validate: (value) => Number.isInteger(value) && (value as number) > 0,
378
+ emit: (varName, ctx) =>
379
+ `if (!Number.isInteger(${varName}) || ${varName} <= 0) ${ctx.fail('isPositiveInt')};`,
380
+ });
381
+ ```
382
+
383
+ ---
384
+
385
+ ## ⚙️ Seal Options
386
+
387
+ ```typescript
388
+ seal({
389
+ enableImplicitConversion: false, // Auto-convert types based on decorators
390
+ enableCircularCheck: 'auto', // Detect circular references ('auto' | true | false)
391
+ exposeDefaultValues: false, // Use class defaults for missing keys
392
+ stopAtFirstError: false, // Stop at first error or collect all
393
+ debug: false, // Store generated source for inspection
394
+ });
395
+ ```
396
+
397
+ ---
398
+
399
+ ## 🔧 AOT Mode
400
+
401
+ With the **zipbul CLI**, you can generate validation code at build time — eliminating the runtime `seal()` cost entirely.
402
+
403
+ In AOT mode, use the `/aot` import (no-op stub decorators):
404
+
405
+ ```typescript
406
+ import { IsString } from '@zipbul/baker/aot';
407
+ ```
408
+
409
+ The CLI replaces these stubs with pre-generated validation code during the build step.
410
+
411
+ ---
412
+
413
+ ## 📂 Subpath Exports
414
+
415
+ | Import path | Purpose |
416
+ |---|---|
417
+ | `@zipbul/baker` | Main API: `seal`, `deserialize`, `serialize`, all decorators |
418
+ | `@zipbul/baker/decorators` | Decorators only |
419
+ | `@zipbul/baker/aot` | No-op stub decorators for AOT mode |
420
+ | `@zipbul/baker/rules` | Raw rule objects |
421
+ | `@zipbul/baker/symbols` | Internal symbols |
422
+
423
+ ---
424
+
425
+ ## 🔍 How It Works
426
+
427
+ ```
428
+ ┌─────────────┐ ┌──────────────┐ ┌─────────────────────┐
429
+ │ Decorators │ ──▶ │ seal() │ ──▶ │ new Function() code │
430
+ │ (metadata) │ │ at startup │ │ (inline codegen) │
431
+ └─────────────┘ └──────────────┘ └──────────┬──────────┘
432
+
433
+ ┌──────────▼──────────┐
434
+ │ deserialize() / │
435
+ │ serialize() │
436
+ │ (execute generated) │
437
+ └─────────────────────┘
438
+ ```
439
+
440
+ 1. **Decorators** attach validation metadata to class properties at definition time
441
+ 2. **`seal()`** reads all metadata, analyzes circular references, and generates inline JavaScript functions via `new Function()`
442
+ 3. **`deserialize()` / `serialize()`** execute the generated function — no interpretation loops, just straight-line optimized code
443
+
444
+ ---
445
+
446
+ ## 📄 License
447
+
448
+ [MIT](./LICENSE) © [Junhyung Park](https://github.com/parkrevil)
@@ -0,0 +1,15 @@
1
+ // @bun
2
+ function vz(z){let Q=(Z)=>Z===z;return Q.emit=(Z,$)=>{let K=$.addRef(z);return`if (${Z} !== _refs[${K}]) ${$.fail("equals")};`},Q.ruleName="equals",Q}function ez(z){let Q=(Z)=>Z!==z;return Q.emit=(Z,$)=>{let K=$.addRef(z);return`if (${Z} === _refs[${K}]) ${$.fail("notEquals")};`},Q.ruleName="notEquals",Q}var O=(z)=>z===void 0||z===null||z==="";O.emit=(z,Q)=>`if (${z} !== undefined && ${z} !== null && ${z} !== '') ${Q.fail("isEmpty")};`;O.ruleName="isEmpty";var az=O,g=(z)=>z!==void 0&&z!==null&&z!=="";g.emit=(z,Q)=>`if (${z} === undefined || ${z} === null || ${z} === '') ${Q.fail("isNotEmpty")};`;g.ruleName="isNotEmpty";var zQ=g;function QQ(z){let Q=(Z)=>z.indexOf(Z)!==-1;return Q.emit=(Z,$)=>{return`if (_refs[${$.addRef(z)}].indexOf(${Z}) === -1) ${$.fail("isIn")};`},Q.ruleName="isIn",Q}function ZQ(z){let Q=(Z)=>z.indexOf(Z)===-1;return Q.emit=(Z,$)=>{return`if (_refs[${$.addRef(z)}].indexOf(${Z}) !== -1) ${$.fail("isNotIn")};`},Q.ruleName="isNotIn",Q}var T=(z)=>typeof z==="string";T.emit=(z,Q)=>`if (typeof ${z} !== 'string') ${Q.fail("isString")};`;T.ruleName="isString";var KQ=T;function jQ(z){let Q=z?.allowNaN??!1,Z=z?.allowInfinity??!1,$=z?.maxDecimalPlaces,K=(j)=>{if(typeof j!=="number")return!1;if(isNaN(j))return Q;if(!isFinite(j))return Z;if($!==void 0){let J=j.toString(),W=J.indexOf(".");if(W!==-1&&J.length-W-1>$)return!1}return!0};return K.emit=(j,J)=>{let W=`if (typeof ${j} !== 'number') ${J.fail("isNumber")};`;if(!Q)W+=`
3
+ else if (isNaN(${j})) ${J.fail("isNumber")};`;if(!Z)W+=`
4
+ else if (${j} === Infinity || ${j} === -Infinity) ${J.fail("isNumber")};`;if($!==void 0)W+=`
5
+ else { var _s=${j}.toString(); var _d=_s.indexOf('.'); if(_d!==-1&&_s.length-_d-1>${$}) ${J.fail("isNumber")}; }`;return W},K.ruleName="isNumber",K}var L=(z)=>typeof z==="boolean";L.emit=(z,Q)=>`if (typeof ${z} !== 'boolean') ${Q.fail("isBoolean")};`;L.ruleName="isBoolean";var JQ=L,A=(z)=>z instanceof Date&&!isNaN(z.getTime());A.emit=(z,Q)=>`if (!(${z} instanceof Date) || isNaN(${z}.getTime())) ${Q.fail("isDate")};`;A.ruleName="isDate";var qQ=A;function wQ(z){let Q=Object.values(z),Z=($)=>Q.indexOf($)!==-1;return Z.emit=($,K)=>{return`if (_refs[${K.addRef(Q)}].indexOf(${$}) === -1) ${K.fail("isEnum")};`},Z.ruleName="isEnum",Z}var I=(z)=>typeof z==="number"&&Number.isInteger(z);I.emit=(z,Q)=>`if (typeof ${z} !== 'number' || !Number.isInteger(${z})) ${Q.fail("isInt")};`;I.ruleName="isInt";var WQ=I,d=(z)=>Array.isArray(z);d.emit=(z,Q)=>`if (!Array.isArray(${z})) ${Q.fail("isArray")};`;d.ruleName="isArray";var bQ=d,S=(z)=>typeof z==="object"&&z!==null&&!Array.isArray(z);S.emit=(z,Q)=>`if (typeof ${z} !== 'object' || ${z} === null || Array.isArray(${z})) ${Q.fail("isObject")};`;S.ruleName="isObject";var YQ=S;function GQ(z){let Q=(Z)=>Z>=z;return Q.emit=(Z,$)=>`if (${Z} < ${z}) ${$.fail("min")};`,Q.ruleName="min",Q.requiresType="number",Q}function FQ(z){let Q=(Z)=>Z<=z;return Q.emit=(Z,$)=>`if (${Z} > ${z}) ${$.fail("max")};`,Q.ruleName="max",Q.requiresType="number",Q}var Y=(z)=>z>0;Y.emit=(z,Q)=>`if (${z} <= 0) ${Q.fail("isPositive")};`;Y.ruleName="isPositive";Y.requiresType="number";var MQ=Y,V=(z)=>z<0;V.emit=(z,Q)=>`if (${z} >= 0) ${Q.fail("isNegative")};`;V.ruleName="isNegative";V.requiresType="number";var XQ=V;function UQ(z){let Q=(Z)=>Z%z===0;return Q.emit=(Z,$)=>`if (${Z} % ${z} !== 0) ${$.fail("isDivisibleBy")};`,Q.ruleName="isDivisibleBy",Q.requiresType="number",Q}function HQ(z){let Q=z.getTime(),Z=($)=>$ instanceof Date&&$.getTime()>=Q;return Z.emit=($,K)=>{let j=K.addRef(Q);return`if (!(${$} instanceof Date) || ${$}.getTime() < _refs[${j}]) ${K.fail("minDate")};`},Z.ruleName="minDate",Z}function BQ(z){let Q=z.getTime(),Z=($)=>$ instanceof Date&&$.getTime()<=Q;return Z.emit=($,K)=>{let j=K.addRef(Q);return`if (!(${$} instanceof Date) || ${$}.getTime() > _refs[${j}]) ${K.fail("maxDate")};`},Z.ruleName="maxDate",Z}function q(z,Q,Z,$="string"){let K=(j)=>{if(typeof j!=="string")return!1;return Q(j)};if(K.emit=Z,K.ruleName=z,$!==void 0)K.requiresType=$;return K}function PQ(z){let Q=(Z)=>typeof Z==="string"&&Z.length>=z;return Q.emit=(Z,$)=>`if (${Z}.length < ${z}) ${$.fail("minLength")};`,Q.ruleName="minLength",Q.requiresType="string",Q}function kQ(z){let Q=(Z)=>typeof Z==="string"&&Z.length<=z;return Q.emit=(Z,$)=>`if (${Z}.length > ${z}) ${$.fail("maxLength")};`,Q.ruleName="maxLength",Q.requiresType="string",Q}function yQ(z,Q){let Z=($)=>typeof $==="string"&&$.length>=z&&$.length<=Q;return Z.emit=($,K)=>`if (${$}.length < ${z} || ${$}.length > ${Q}) ${K.fail("length")};`,Z.ruleName="length",Z.requiresType="string",Z}function CQ(z){let Q=(Z)=>typeof Z==="string"&&Z.includes(z);return Q.emit=(Z,$)=>{let K=$.addRef(z);return`if (${Z}.indexOf(_refs[${K}]) === -1) ${$.fail("contains")};`},Q.ruleName="contains",Q.requiresType="string",Q}function OQ(z){let Q=(Z)=>typeof Z==="string"&&!Z.includes(z);return Q.emit=(Z,$)=>{let K=$.addRef(z);return`if (${Z}.indexOf(_refs[${K}]) !== -1) ${$.fail("notContains")};`},Q.ruleName="notContains",Q.requiresType="string",Q}function gQ(z,Q){let Z=z instanceof RegExp?z:new RegExp(z,Q),$=(K)=>typeof K==="string"&&Z.test(K);return $.emit=(K,j)=>{return`if (!_re[${j.addRegex(Z)}].test(${K})) ${j.fail("matches")};`},$.ruleName="matches",$.requiresType="string",$}var U=(z)=>typeof z==="string"&&z===z.toLowerCase();U.emit=(z,Q)=>`if (${z} !== ${z}.toLowerCase()) ${Q.fail("isLowercase")};`;U.ruleName="isLowercase";U.requiresType="string";var TQ=U,h=(z)=>typeof z==="string"&&z===z.toUpperCase();h.emit=(z,Q)=>`if (${z} !== ${z}.toUpperCase()) ${Q.fail("isUppercase")};`;h.ruleName="isUppercase";h.requiresType="string";var LQ=h,_=/^[\x00-\x7F]*$/,AQ=q("isAscii",(z)=>_.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(_)}].test(${z})) ${Q.fail("isAscii")};`}),Oz=/^[a-zA-Z]+$/;function dz(z){return typeof z==="string"&&z.length>0&&Oz.test(z)}var H=function z(Q){if(Q===void 0)return z;return dz(Q)};H.emit=(z,Q)=>{return`if (!_re[${Q.addRegex(Oz)}].test(${z})) ${Q.fail("isAlpha")};`};H.ruleName="isAlpha";H.requiresType="string";var IQ=H,gz=/^[a-zA-Z0-9]+$/;function Sz(z){return typeof z==="string"&&z.length>0&&gz.test(z)}var B=function z(Q){if(Q===void 0)return z;return Sz(Q)};B.emit=(z,Q)=>{return`if (!_re[${Q.addRegex(gz)}].test(${z})) ${Q.fail("isAlphanumeric")};`};B.ruleName="isAlphanumeric";B.requiresType="string";var dQ=B,D=(z)=>z==="true"||z==="false"||z==="1"||z==="0";D.emit=(z,Q)=>`if (${z} !== 'true' && ${z} !== 'false' && ${z} !== '1' && ${z} !== '0') ${Q.fail("isBooleanString")};`;D.ruleName="isBooleanString";D.requiresType="string";var SQ=D;function pQ(z){return q("isNumberString",(Q)=>{if(Q.length===0)return!1;let Z=Number(Q);return!isNaN(Z)&&isFinite(Z)},(Q,Z)=>{let $=(j)=>{if(j.length===0)return!1;let J=Number(j);return!isNaN(J)&&isFinite(J)};return`if (!_refs[${Z.addRef($)}](${Q})) ${Z.fail("isNumberString")};`})}function fQ(z){let Q=/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)$/;return q("isDecimal",(Z)=>Q.test(Z),(Z,$)=>{return`if (!_re[${$.addRegex(Q)}].test(${Z})) ${$.fail("isDecimal")};`})}var M=/[^\u0020-\u007E\uFF61-\uFF9F]/,oQ=q("isFullWidth",(z)=>z.length>0&&M.test(z),(z,Q)=>{let Z=Q.addRegex(M);return`if (${z}.length === 0 || !_re[${Z}].test(${z})) ${Q.fail("isFullWidth")};`}),X=/[\u0020-\u007E\uFF61-\uFF9F]/,RQ=q("isHalfWidth",(z)=>z.length>0&&X.test(z),(z,Q)=>{let Z=Q.addRegex(X);return`if (${z}.length === 0 || !_re[${Z}].test(${z})) ${Q.fail("isHalfWidth")};`}),EQ=q("isVariableWidth",(z)=>M.test(z)&&X.test(z),(z,Q)=>{let Z=Q.addRegex(M),$=Q.addRegex(X);return`if (!_re[${Z}].test(${z}) || !_re[${$}].test(${z})) ${Q.fail("isVariableWidth")};`}),s=/[^\x00-\xFF]/,_Q=q("isMultibyte",(z)=>z.length>0&&s.test(z),(z,Q)=>{let Z=Q.addRegex(s);return`if (${z}.length === 0 || !_re[${Z}].test(${z})) ${Q.fail("isMultibyte")};`}),N=/[\uD800-\uDBFF][\uDC00-\uDFFF]/,sQ=q("isSurrogatePair",(z)=>z.length>0&&N.test(z),(z,Q)=>{let Z=Q.addRegex(N);return`if (${z}.length === 0 || !_re[${Z}].test(${z})) ${Q.fail("isSurrogatePair")};`}),i=/^[0-9a-fA-F]+$/,NQ=q("isHexadecimal",(z)=>i.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(i)}].test(${z})) ${Q.fail("isHexadecimal")};`}),n=/^(0[oO])?[0-7]+$/,iQ=q("isOctal",(z)=>z.length>0&&n.test(z),(z,Q)=>{let Z=Q.addRegex(n);return`if (${z}.length === 0 || !_re[${Z}].test(${z})) ${Q.fail("isOctal")};`}),u=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$/;function nQ(z){return q("isEmail",(Q)=>u.test(Q),(Q,Z)=>{return`if (!_re[${Z.addRegex(u)}].test(${Q})) ${Z.fail("isEmail")};`})}var pz=["http","https","ftp"];function uQ(z){let Z=(z?.protocols??pz).map((j)=>j.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),$=new RegExp(`^(?:${Z}):\\/\\/(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)(?::\\d{1,5})?(?:\\/[^\\s]*)?$`),K=(j)=>{if(typeof j!=="string"||j.length===0)return!1;return $.test(j)};return K.emit=(j,J)=>{return`if (!_re[${J.addRegex($)}].test(${j})) ${J.fail("isURL")};`},K.ruleName="isURL",K.requiresType="string",K}var p={all:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,1:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-1[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/,2:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-2[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/,3:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-3[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/,4:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/,5:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-5[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/};function xQ(z){let Q=z!=null?p[z]??p.all:p.all;return q("isUUID",(Z)=>Q.test(Z),(Z,$)=>{return`if (!_re[${$.addRegex(Q)}].test(${Z})) ${$.fail("isUUID")};`})}var G=/^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/,F=/^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$|^::(?:[0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}$|^(?:[0-9a-fA-F]{1,4}:){1,7}:$|^(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}$|^(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}$|^(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}$|^(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}$|^(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}$|^[0-9a-fA-F]{1,4}:(?::[0-9a-fA-F]{1,4}){1,6}$|^::$|^::1$|^::(?:ffff(?::0{1,4})?:)?(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$|^(?:[0-9a-fA-F]{1,4}:){1,4}:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/;function mQ(z){let Q=(Z)=>{if(typeof Z!=="string")return!1;if(z===4)return G.test(Z);if(z===6)return F.test(Z);return G.test(Z)||F.test(Z)};return Q.emit=(Z,$)=>{if(z===4)return`if (!_re[${$.addRegex(G)}].test(${Z})) ${$.fail("isIP")};`;if(z===6)return`if (!_re[${$.addRegex(F)}].test(${Z})) ${$.fail("isIP")};`;let K=$.addRegex(G),j=$.addRegex(F);return`if (!_re[${K}].test(${Z}) && !_re[${j}].test(${Z})) ${$.fail("isIP")};`},Q.ruleName="isIP",Q.requiresType="string",Q}var x=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,lQ=q("isHexColor",(z)=>x.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(x)}].test(${z})) ${Q.fail("isHexColor")};`}),m=/^rgb\(\s*(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\s*,\s*(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\s*,\s*(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\s*\)$/,l=/^rgba\(\s*(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\s*,\s*(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\s*,\s*(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\s*,\s*(0|0?\.\d+|1(\.0+)?)\s*\)$/,c=/^rgba?\(\s*(\d{1,2}|100)%\s*,\s*(\d{1,2}|100)%\s*,\s*(\d{1,2}|100)%(?:\s*,\s*(0|0?\.\d+|1(?:\.0+)?))?\s*\)$/;function cQ(z=!1){let Q=(Z)=>{if(typeof Z!=="string")return!1;if(z)return c.test(Z);return m.test(Z)||l.test(Z)};return Q.emit=(Z,$)=>{if(z)return`if (!_re[${$.addRegex(c)}].test(${Z})) ${$.fail("isRgbColor")};`;let K=$.addRegex(m),j=$.addRegex(l);return`if (!_re[${K}].test(${Z}) && !_re[${j}].test(${Z})) ${$.fail("isRgbColor")};`},Q.ruleName="isRgbColor",Q.requiresType="string",Q}var r=/^hsla?\(\s*(360|3[0-5]\d|[12]\d{2}|[1-9]\d|\d)\s*,\s*(100|[1-9]\d|\d)%\s*,\s*(100|[1-9]\d|\d)%(?:\s*,\s*(0|0?\.\d+|1(?:\.0+)?))?\s*\)$/,rQ=q("isHSL",(z)=>r.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(r)}].test(${z})) ${Q.fail("isHSL")};`}),t=/^[0-9a-fA-F]{2}(?::[0-9a-fA-F]{2}){5}$/,v=/^[0-9a-fA-F]{2}(?:-[0-9a-fA-F]{2}){5}$/,e=/^[0-9a-fA-F]{12}$/;function tQ(z){let Q=(Z)=>{if(typeof Z!=="string")return!1;if(z?.no_separators)return e.test(Z);return t.test(Z)||v.test(Z)};return Q.emit=(Z,$)=>{if(z?.no_separators)return`if (!_re[${$.addRegex(e)}].test(${Z})) ${$.fail("isMACAddress")};`;let K=$.addRegex(t),j=$.addRegex(v);return`if (!_re[${K}].test(${Z}) && !_re[${j}].test(${Z})) ${$.fail("isMACAddress")};`},Q.ruleName="isMACAddress",Q.requiresType="string",Q}function a(z){let Q=z.replace(/[-\s]/g,"");if(!/^\d{9}[\dX]$/.test(Q))return!1;let Z=0;for(let K=0;K<9;K++)Z+=(10-K)*(Q.charCodeAt(K)-48);let $=Q[9]==="X"?10:Q.charCodeAt(9)-48;return Z+=$,Z%11===0}function zz(z){let Q=z.replace(/[-\s]/g,"");if(!/^\d{13}$/.test(Q))return!1;let Z=0;for(let K=0;K<12;K++)Z+=(Q.charCodeAt(K)-48)*(K%2===0?1:3);return(10-Z%10)%10===Q.charCodeAt(12)-48}function vQ(z){let Q=(Z)=>{if(typeof Z!=="string")return!1;if(z===10)return a(Z);if(z===13)return zz(Z);return a(Z)||zz(Z)};return Q.emit=(Z,$)=>{return`if (!_refs[${$.addRef(Q)}](${Z})) ${$.fail("isISBN")};`},Q.ruleName="isISBN",Q.requiresType="string",Q}var fz=/^[A-Z]{2}[A-Z0-9]{9}[0-9]$/;function Qz(z){if(!fz.test(z))return!1;let Q=z.split("").map((K)=>{let j=K.charCodeAt(0);return j>=65?String(j-55):K}).join(""),Z=0,$=!1;for(let K=Q.length-1;K>=0;K--){let j=parseInt(Q[K],10);if($){if(j*=2,j>9)j-=9}Z+=j,$=!$}return Z%10===0}var eQ=q("isISIN",Qz,(z,Q)=>{return`if (!_refs[${Q.addRef(Qz)}](${z})) ${Q.fail("isISIN")};`}),f=/^\d{4}(?:-\d{2}(?:-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)?)?)?$/;function oz(z){if(!f.test(z))return!1;let Q=z.match(/^(\d{4})-(\d{2})-(\d{2})/);if(!Q)return!0;let Z=Number(Q[2]),$=Number(Q[3]);if(Z<1||Z>12)return!1;let K=new Date(Number(Q[1]),Z,0).getDate();return $>=1&&$<=K}function aQ(z){if(z?.strict){let Q=(Z)=>{if(typeof Z!=="string")return!1;return oz(Z)};return Q.ruleName="isISO8601",Q.emit=(Z,$)=>{return`if (!_refs[${$.addRef(Q)}](${Z})) ${$.fail("isISO8601")};`},Q}return q("isISO8601",(Q)=>f.test(Q),(Q,Z)=>{return`if (!_re[${Z.addRegex(f)}].test(${Q})) ${Z.fail("isISO8601")};`})}var Zz=/^[A-Z]{2}-[A-Z0-9]{3}-\d{2}-\d{5}$|^[A-Z]{2}[A-Z0-9]{3}\d{7}$/,zZ=q("isISRC",(z)=>Zz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Zz)}].test(${z})) ${Q.fail("isISRC")};`});function Rz(z,Q){let Z=Q?.requireHyphen!==!1,$=Z?z:z.replace(/-/g,"");if(!(Z?/^\d{4}-\d{3}[\dX]$/:/^\d{7}[\dX]$/).test($))return!1;let j=$.replace(/-/g,""),J=0;for(let w=0;w<7;w++)J+=(8-w)*(j.charCodeAt(w)-48);let W=j[7]==="X"?10:j.charCodeAt(7)-48;return J+=W,J%11===0}function QZ(z){let Q=(Z)=>{if(typeof Z!=="string")return!1;return Rz(Z,z)};return Q.emit=(Z,$)=>{return`if (!_refs[${$.addRef(Q)}](${Z})) ${$.fail("isISSN")};`},Q.ruleName="isISSN",Q.requiresType="string",Q}var $z=/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/,ZZ=q("isJWT",(z)=>$z.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex($z)}].test(${z})) ${Q.fail("isJWT")};`}),Kz=/^[-+]?([1-8]?\d(?:\.\d+)?|90(?:\.0+)?),\s*[-+]?(180(?:\.0+)?|1[0-7]\d(?:\.\d+)?|\d{1,2}(?:\.\d+)?)$/;function $Z(z){return q("isLatLong",(Q)=>Kz.test(Q),(Q,Z)=>{return`if (!_re[${Z.addRegex(Kz)}].test(${Q})) ${Z.fail("isLatLong")};`})}var jz=/^[a-zA-Z]{2,3}(?:-[a-zA-Z]{4})?(?:-(?:[a-zA-Z]{2}|\d{3}))?(?:-[a-zA-Z\d]{5,8})*$/,KZ=q("isLocale",(z)=>jz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(jz)}].test(${z})) ${Q.fail("isLocale")};`}),Jz=/^data:([a-zA-Z0-9!#$&\-^_]+\/[a-zA-Z0-9!#$&\-^_]+)(?:;[a-zA-Z0-9\-]+=[a-zA-Z0-9\-]+)*(?:;base64)?,[\s\S]*$/,jZ=q("isDataURI",(z)=>Jz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Jz)}].test(${z})) ${Q.fail("isDataURI")};`});function JZ(z){let Q=z?.require_tld!==!1,Z=($)=>{if(typeof $!=="string")return!1;let K=$;if(z?.allow_trailing_dot&&K.endsWith("."))K=K.slice(0,-1);if(K.length===0)return!1;let j=K.split(".");if(Q&&j.length<2)return!1;if(Q){let J=j[j.length-1];if(!J||J.length<2||!/^[a-zA-Z]{2,}$/.test(J))return!1}return j.every((J)=>{if(J.length===0||J.length>63)return!1;if(z?.allow_underscores)return/^[a-zA-Z0-9_-]+$/.test(J);return/^[a-zA-Z0-9-]+$/.test(J)&&!J.startsWith("-")&&!J.endsWith("-")})};return Z.emit=($,K)=>{return`if (!_refs[${K.addRef(Z)}](${$})) ${K.fail("isFQDN")};`},Z.ruleName="isFQDN",Z.requiresType="string",Z}var qz=/^(?:6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{1,3}|\d)$/,qZ=q("isPort",(z)=>qz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(qz)}].test(${z})) ${Q.fail("isPort")};`});function wz(z){if(!/^\d{8}$/.test(z)&&!/^\d{13}$/.test(z))return!1;let Q=z.split("").map(Number),Z=Q.length,$=0;for(let j=0;j<Z-1;j++)$+=Q[j]*(Z===8?j%2===0?3:1:j%2===0?1:3);return(10-$%10)%10===Q[Z-1]}var wZ=q("isEAN",wz,(z,Q)=>{return`if (!_refs[${Q.addRef(wz)}](${z})) ${Q.fail("isEAN")};`}),Tz=new Set(["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]),P=(z)=>{if(typeof z!=="string")return!1;return Tz.has(z.toUpperCase())};P.emit=(z,Q)=>{return`if (!_refs[${Q.addRef(Tz)}].has(${z}.toUpperCase())) ${Q.fail("isISO31661Alpha2")};`};P.ruleName="isISO31661Alpha2";P.requiresType="string";var WZ=P,Lz=new Set(["ABW","AFG","AGO","AIA","ALA","ALB","AND","ANT","ARE","ARG","ARM","ASM","ATA","ATF","ATG","AUS","AUT","AZE","BDI","BEL","BEN","BES","BFA","BGD","BGR","BHR","BHS","BIH","BLM","BLR","BLZ","BMU","BOL","BRA","BRB","BRN","BTN","BVT","BWA","CAF","CAN","CCK","CHE","CHL","CHN","CIV","CMR","COD","COG","COK","COL","COM","CPV","CRI","CUB","CUW","CXR","CYM","CYP","CZE","DEU","DJI","DMA","DNK","DOM","DZA","ECU","EGY","ERI","ESH","ESP","EST","ETH","FIN","FJI","FLK","FRA","FRO","FSM","GAB","GBR","GEO","GGY","GHA","GIB","GIN","GLP","GMB","GNB","GNQ","GRC","GRD","GRL","GTM","GUF","GUM","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IMN","IND","IOT","IRL","IRN","IRQ","ISL","ISR","ITA","JAM","JEY","JOR","JPN","KAZ","KEN","KGZ","KHM","KIR","KNA","KOR","KWT","LAO","LBN","LBR","LBY","LCA","LIE","LKA","LSO","LTU","LUX","LVA","MAC","MAF","MAR","MCO","MDA","MDG","MDV","MEX","MHL","MKD","MLI","MLT","MMR","MNE","MNG","MNP","MOZ","MRT","MSR","MTQ","MUS","MWI","MYS","MYT","NAM","NCL","NER","NFK","NGA","NIC","NIU","NLD","NOR","NPL","NRU","NZL","OMN","PAK","PAN","PCN","PER","PHL","PLW","PNG","POL","PRI","PRK","PRT","PRY","PSE","PYF","QAT","REU","ROU","RUS","RWA","SAU","SDN","SEN","SGP","SGS","SHN","SJM","SLB","SLE","SLV","SMR","SOM","SPM","SRB","SSD","STP","SUR","SVK","SVN","SWE","SWZ","SXM","SYC","SYR","TCA","TCD","TGO","THA","TJK","TKL","TKM","TLS","TON","TTO","TUN","TUR","TUV","TWN","TZA","UGA","UKR","UMI","URY","USA","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WSM","YEM","ZAF","ZMB","ZWE"]),k=(z)=>{if(typeof z!=="string")return!1;return Lz.has(z.toUpperCase())};k.emit=(z,Q)=>{return`if (!_refs[${Q.addRef(Lz)}].has(${z}.toUpperCase())) ${Q.fail("isISO31661Alpha3")};`};k.ruleName="isISO31661Alpha3";k.requiresType="string";var bZ=k,Wz=/^[A-Z]{6}[A-Z0-9]{2}(?:[A-Z0-9]{3})?$/,YZ=q("isBIC",(z)=>Wz.test(z.toUpperCase()),(z,Q)=>{return`if (!_re[${Q.addRegex(Wz)}].test(${z}.toUpperCase())) ${Q.fail("isBIC")};`}),bz=/^[a-zA-Z0-9_-]{20}$/,VZ=q("isFirebasePushId",(z)=>bz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(bz)}].test(${z})) ${Q.fail("isFirebasePushId")};`}),Yz=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,GZ=q("isSemVer",(z)=>Yz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Yz)}].test(${z})) ${Q.fail("isSemVer")};`}),Vz=/^[0-9a-fA-F]{24}$/,FZ=q("isMongoId",(z)=>Vz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Vz)}].test(${z})) ${Q.fail("isMongoId")};`}),y=(z)=>{if(typeof z!=="string")return!1;try{return JSON.parse(z),!0}catch{return!1}};y.emit=(z,Q)=>{return`if (!_refs[${Q.addRef(($)=>{try{return JSON.parse($),!0}catch{return!1}})}](${z})) ${Q.fail("isJSON")};`};y.ruleName="isJSON";y.requiresType="string";var MZ=y,Ez=/^[A-Z2-7]+=*$/i;function XZ(z){let Q=Ez;return q("isBase32",(Z)=>{if(Z.length===0)return!1;if(Z.length%8!==0)return!1;return Q.test(Z)},(Z,$)=>{let K=$.addRegex(Q);return`if (${Z}.length === 0 || ${Z}.length % 8 !== 0 || !_re[${K}].test(${Z})) ${$.fail("isBase32")};`})}var Gz=/^[1-9A-HJ-NP-Za-km-z]+$/,UZ=q("isBase58",(z)=>Gz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Gz)}].test(${z})) ${Q.fail("isBase58")};`}),_z=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/,sz=/^[A-Za-z0-9_-]+={0,2}$/;function hZ(z){let Q=z?.urlSafe?sz:_z;return q("isBase64",(Z)=>{if(Z.length===0)return!1;return Q.test(Z)},(Z,$)=>{let K=$.addRegex(Q);return`if (${Z}.length === 0 || !_re[${K}].test(${Z})) ${$.fail("isBase64")};`})}var Fz=/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/;function HZ(z){return q("isDateString",(Q)=>Fz.test(Q),(Q,Z)=>{return`if (!_re[${Z.addRegex(Fz)}].test(${Q})) ${Z.fail("isDateString")};`})}var Mz=/^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9][a-zA-Z0-9!#$&\-^_.+]*(?:;.+)?$/,BZ=q("isMimeType",(z)=>Mz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Mz)}].test(${z})) ${Q.fail("isMimeType")};`}),Xz=/^[-+]?(?:[,.\d]+)(?:[.,]\d{2})?$|^\$?-?(?:\d+|\d{1,3}(?:,\d{3})*)(?:\.\d{1,2})?$/;function DZ(z){return q("isCurrency",(Q)=>{if(Q.length===0)return!1;return Xz.test(Q)},(Q,Z)=>{let $=Z.addRegex(Xz);return`if (${Q}.length === 0 || !_re[${$}].test(${Q})) ${Z.fail("isCurrency")};`})}var Uz=/^magnet:\?xt=urn:[a-z0-9]+:[a-z0-9]{32,40}/i,PZ=q("isMagnetURI",(z)=>Uz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Uz)}].test(${z})) ${Q.fail("isMagnetURI")};`});function Nz(z){let Q=z.replace(/[\s-]/g,"");if(Q.length===0||!/^\d+$/.test(Q))return!1;let Z=0,$=!1;for(let K=Q.length-1;K>=0;K--){let j=Q.charCodeAt(K)-48;if($){if(j*=2,j>9)j-=9}Z+=j,$=!$}return Z%10===0}var C=(z)=>{if(typeof z!=="string")return!1;return Nz(z)};C.emit=(z,Q)=>`{
6
+ var _cs=${z}.replace(/[\\s-]/g,'');
7
+ if(_cs.length===0||!/^\\d+$/.test(_cs)){${Q.fail("isCreditCard")}}
8
+ else{var _sum=0,_alt=false;
9
+ for(var _ci=_cs.length-1;_ci>=0;_ci--){var _cn=_cs.charCodeAt(_ci)-48;if(_alt){_cn*=2;if(_cn>9)_cn-=9;}_sum+=_cn;_alt=!_alt;}
10
+ if(_sum%10!==0)${Q.fail("isCreditCard")};}
11
+ }`;C.ruleName="isCreditCard";C.requiresType="string";var kZ=C,iz={AD:24,AE:23,AL:28,AT:20,AZ:28,BA:20,BE:16,BG:22,BH:22,BR:29,CH:21,CR:22,CY:28,CZ:24,DE:22,DK:18,DO:28,EE:20,ES:24,FI:18,FO:18,FR:27,GB:22,GE:22,GI:23,GL:18,GR:27,GT:28,HR:21,HU:28,IE:22,IL:23,IS:26,IT:27,JO:30,KW:30,KZ:20,LB:28,LC:32,LI:21,LT:20,LU:20,LV:21,MC:27,MD:24,ME:22,MK:19,MR:27,MT:31,MU:30,NL:18,NO:15,PK:24,PL:28,PS:29,PT:25,QA:29,RO:24,RS:22,SA:24,SC:31,SE:24,SI:19,SK:24,SM:27,ST:25,SV:28,TL:23,TN:24,TR:26,UA:29,VA:22,VG:24,XK:20};function nz(z,Q){let Z=Q?.allowSpaces?z.replace(/\s/g,""):z;if(Z=Z.toUpperCase(),!/^[A-Z]{2}\d{2}[A-Z0-9]+$/.test(Z))return!1;let $=Z.slice(0,2),K=iz[$];if(K!==void 0&&Z.length!==K)return!1;let J=(Z.slice(4)+Z.slice(0,4)).replace(/[A-Z]/g,(w)=>String(w.charCodeAt(0)-55)),W=0;for(let w=0;w<J.length;w+=7){let b=String(W)+J.slice(w,w+7);W=parseInt(b,10)%97}return W===1}function yZ(z){let Q=(Z)=>{if(typeof Z!=="string")return!1;return nz(Z,z)};return Q.emit=(Z,$)=>{return`if (!_refs[${$.addRef(Q)}](${Z})) ${$.fail("isIBAN")};`},Q.ruleName="isIBAN",Q.requiresType="string",Q}function CZ(z,Q){let Z=($)=>{if(typeof $!=="string")return!1;let K=Buffer.byteLength($,"utf8");if(K<z)return!1;if(Q!==void 0&&K>Q)return!1;return!0};return Z.emit=($,K)=>{let j=(W)=>{let w=Buffer.byteLength(W,"utf8");if(w<z)return!1;if(Q!==void 0&&w>Q)return!1;return!0};return`if (!_refs[${K.addRef(j)}](${$})) ${K.fail("isByteLength")};`},Z.ruleName="isByteLength",Z.requiresType="string",Z}var uz={md5:/^[a-f0-9]{32}$/i,md4:/^[a-f0-9]{32}$/i,md2:/^[a-f0-9]{32}$/i,sha1:/^[a-f0-9]{40}$/i,sha256:/^[a-f0-9]{64}$/i,sha384:/^[a-f0-9]{96}$/i,sha512:/^[a-f0-9]{128}$/i,ripemd128:/^[a-f0-9]{32}$/i,ripemd160:/^[a-f0-9]{40}$/i,"tiger128,3":/^[a-f0-9]{32}$/i,"tiger128,4":/^[a-f0-9]{32}$/i,"tiger160,3":/^[a-f0-9]{40}$/i,"tiger160,4":/^[a-f0-9]{40}$/i,"tiger192,3":/^[a-f0-9]{48}$/i,"tiger192,4":/^[a-f0-9]{48}$/i,crc32:/^[a-f0-9]{8}$/i,crc32b:/^[a-f0-9]{8}$/i};function OZ(z){let Q=uz[z],Z=($)=>{if(typeof $!=="string")return!1;if(!Q)return!1;return Q.test($)};return Z.emit=($,K)=>{if(!Q)return K.fail("isHash")+";";return`if (!_re[${K.addRegex(Q)}].test(${$})) ${K.fail("isHash")};`},Z.ruleName="isHash",Z.requiresType="string",Z}var hz=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/i,gZ=q("isRFC3339",(z)=>hz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(hz)}].test(${z})) ${Q.fail("isRFC3339")};`}),Hz=/^([01]\d|2[0-3]):[0-5]\d$/,TZ=q("isMilitaryTime",(z)=>Hz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Hz)}].test(${z})) ${Q.fail("isMilitaryTime")};`});function Az(z){if(typeof z==="number")return z>=-90&&z<=90;if(typeof z==="string"){let Q=parseFloat(z);if(isNaN(Q))return!1;if(String(Q)!==z&&z!==String(Q)){if(!/^-?\d+(\.\d+)?$/.test(z))return!1}return Q>=-90&&Q<=90}return!1}var o=(z)=>Az(z);o.emit=(z,Q)=>{return`if (!_refs[${Q.addRef(Az)}](${z})) ${Q.fail("isLatitude")};`};o.ruleName="isLatitude";var LZ=o;function Iz(z){if(typeof z==="number")return z>=-180&&z<=180;if(typeof z==="string"){let Q=parseFloat(z);if(isNaN(Q))return!1;if(!/^-?\d+(\.\d+)?$/.test(z))return!1;return Q>=-180&&Q<=180}return!1}var R=(z)=>Iz(z);R.emit=(z,Q)=>{return`if (!_refs[${Q.addRef(Iz)}](${z})) ${Q.fail("isLongitude")};`};R.ruleName="isLongitude";var AZ=R,Bz=/^0x[0-9a-fA-F]{40}$/,IZ=q("isEthereumAddress",(z)=>Bz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Bz)}].test(${z})) ${Q.fail("isEthereumAddress")};`}),Dz=/^1[a-km-zA-HJ-NP-Z1-9]{25,34}$/,Pz=/^3[a-km-zA-HJ-NP-Z1-9]{25,34}$/,kz=/^(bc1)[a-z0-9]{6,87}$/,dZ=q("isBtcAddress",(z)=>Dz.test(z)||Pz.test(z)||kz.test(z),(z,Q)=>{let Z=Q.addRegex(Dz),$=Q.addRegex(Pz),K=Q.addRegex(kz);return`if (!_re[${Z}].test(${z}) && !_re[${$}].test(${z}) && !_re[${K}].test(${z})) ${Q.fail("isBtcAddress")};`}),yz=new Set(["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VED","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","YER","ZAR","ZMW","ZWL"]),SZ=q("isISO4217CurrencyCode",(z)=>yz.has(z),(z,Q)=>{return`if (!_refs[${Q.addRef(yz)}].has(${z})) ${Q.fail("isISO4217CurrencyCode")};`}),Cz=/^\+[1-9]\d{6,14}$/,pZ=q("isPhoneNumber",(z)=>Cz.test(z),(z,Q)=>{return`if (!_re[${Q.addRegex(Cz)}].test(${z})) ${Q.fail("isPhoneNumber")};`});function fZ(z){let Q=z?.minLength??8,Z=z?.minLowercase??1,$=z?.minUppercase??1,K=z?.minNumbers??1,j=z?.minSymbols??1,J=(w)=>{if(w.length<Q)return!1;if(Z>0){if((w.match(/[a-z]/g)||[]).length<Z)return!1}if($>0){if((w.match(/[A-Z]/g)||[]).length<$)return!1}if(K>0){if((w.match(/[0-9]/g)||[]).length<K)return!1}if(j>0){if((w.match(/[^a-zA-Z0-9]/g)||[]).length<j)return!1}return!0},W=(w)=>{if(typeof w!=="string")return!1;return J(w)};return W.emit=(w,b)=>{return`if (!_refs[${b.addRef(J)}](${w})) ${b.fail("isStrongPassword")};`},W.ruleName="isStrongPassword",W.requiresType="string",W}var xz={US:/^\d{2}-\d{7}$/,KR:/^\d{3}-\d{2}-\d{5}$/,DE:/^\d{11}$/,FR:/^[0-9]{13}$/,GB:/^\d{10}$/,IT:/^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/i,ES:/^[0-9A-Z]\d{7}[0-9A-Z]$/i,AU:/^\d{11}$/,CA:/^\d{9}$/,IN:/^[A-Z]{5}\d{4}[A-Z]$/i};function oZ(z){let Q=xz[z],Z=($)=>{if(typeof $!=="string")return!1;if(!Q)return!1;return Q.test($)};return Z.emit=($,K)=>{if(!Q)return K.fail("isTaxId")+";";return`if (!_re[${K.addRegex(Q)}].test(${$})) ${K.fail("isTaxId")};`},Z.ruleName="isTaxId",Z.requiresType="string",Z}function EZ(z){let Q=(Z)=>{if(!Array.isArray(Z))return!1;return z.every(($)=>Z.includes($))};return Q.emit=(Z,$)=>{return`if (!_refs[${$.addRef(z)}].every(function(v){return ${Z}.indexOf(v)!==-1;})) ${$.fail("arrayContains")};`},Q.ruleName="arrayContains",Q}function _Z(z){let Q=(Z)=>{if(!Array.isArray(Z))return!1;return z.every(($)=>!Z.includes($))};return Q.emit=(Z,$)=>{return`if (_refs[${$.addRef(z)}].some(function(v){return ${Z}.indexOf(v)!==-1;})) ${$.fail("arrayNotContains")};`},Q.ruleName="arrayNotContains",Q}function sZ(z){let Q=(Z)=>Array.isArray(Z)&&Z.length>=z;return Q.emit=(Z,$)=>`if (${Z}.length < ${z}) ${$.fail("arrayMinSize")};`,Q.ruleName="arrayMinSize",Q}function NZ(z){let Q=(Z)=>Array.isArray(Z)&&Z.length<=z;return Q.emit=(Z,$)=>`if (${Z}.length > ${z}) ${$.fail("arrayMaxSize")};`,Q.ruleName="arrayMaxSize",Q}function iZ(z){let Q=(Z)=>{if(!Array.isArray(Z))return!1;if(z){let $=Z.map(z);return new Set($).size===$.length}return new Set(Z).size===Z.length};return Q.emit=(Z,$)=>{if(z){let K=$.addRef(z);return`{var _keys=${Z}.map(_refs[${K}]);if(new Set(_keys).size!==_keys.length)${$.fail("arrayUnique")};}`}return`if(new Set(${Z}).size!==${Z}.length)${$.fail("arrayUnique")};`},Q.ruleName="arrayUnique",Q}var E=(z)=>Array.isArray(z)&&z.length>0;E.emit=(z,Q)=>`if (${z}.length === 0) ${Q.fail("arrayNotEmpty")};`;E.ruleName="arrayNotEmpty";var nZ=E;function xZ(z){let Q=(Z)=>{if(Z===null||typeof Z!=="object"||Array.isArray(Z))return!1;let $=Object.keys(Z);if(z?.nullable)return $.some((K)=>Z[K]!=null);return $.length>0};return Q.emit=(Z,$)=>{if(z?.nullable)return`if (!_refs[${$.addRef(Q)}](${Z})) ${$.fail("isNotEmptyObject")};`;return`if (Object.keys(${Z}).length === 0) ${$.fail("isNotEmptyObject")};`},Q.ruleName="isNotEmptyObject",Q}function mZ(z){let Q=(Z)=>Z instanceof z;return Q.emit=(Z,$)=>{let K=$.addRef(z);return`if (!(${Z} instanceof _refs[${K}])) ${$.fail("isInstance")};`},Q.ruleName="isInstance",Q}var mz={"ko-KR":/^(\+?82|0)1[016789]\d{7,8}$/,"en-US":/^\+?1?[2-9]\d{2}[2-9]\d{6}$/,"zh-CN":/^(\+?86)?1[3-9]\d{9}$/,"zh-TW":/^(\+?886)?9\d{8}$/,"ja-JP":/^(\+?81)?0?[789]0[0-9]{8}$/,"de-DE":/^(\+?49)?1(5\d|6[0-9]|7[0-9])\d{8}$/,"fr-FR":/^(\+?33)?[67]\d{8}$/,"en-GB":/^(\+?44)?7[1-9]\d{8}$/,"ru-RU":/^(\+?7)?9\d{9}$/,"pt-BR":/^(\+?55)?[1-9]{2}9?\d{8}$/,"in-IN":/^(\+?91)?[6-9]\d{9}$/,"ar-SA":/^(\+?966)?5\d{8}$/,"ar-EG":/^(\+?20)?1[0125]\d{8}$/,"vi-VN":/^(\+?84)?[35789]\d{8}$/,"th-TH":/^(\+?66)?[689]\d{8}$/,"id-ID":/^(\+?62)?8\d{9,11}$/,"ms-MY":/^(\+?60)?1\d{8,9}$/,"nl-NL":/^(\+?31)?6\d{8}$/,"it-IT":/^(\+?39)?3\d{9}$/,"es-ES":/^(\+?34)?[67]\d{8}$/,"pl-PL":/^(\+?48)?[45789]\d{8}$/};function cZ(z){let Q=mz[z],Z=($)=>{if(typeof $!=="string")return!1;if(!Q)return!1;return Q.test($)};return Z.emit=($,K)=>{if(!Q)return K.fail("isMobilePhone")+";";return`if (!_re[${K.addRegex(Q)}].test(${$})) ${K.fail("isMobilePhone")};`},Z.ruleName="isMobilePhone",Z.requiresType="string",Z}var lz={AD:/^AD\d{3}$/,AT:/^\d{4}$/,AU:/^\d{4}$/,AZ:/^\d{4}$/,BE:/^\d{4}$/,BG:/^\d{4}$/,BR:/^\d{5}-?\d{3}$/,BY:/^\d{6}$/,CA:/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/i,CH:/^\d{4}$/,CN:/^\d{6}$/,CZ:/^\d{3} ?\d{2}$/,DE:/^\d{5}$/,DK:/^\d{4}$/,EE:/^\d{5}$/,ES:/^\d{5}$/,FI:/^\d{5}$/,FR:/^\d{2} ?\d{3}$/,GB:/^(GIR ?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]([0-9ABEHMNPRV-Y])?)|[0-9][A-HJKPSTUW]) ?[0-9][ABD-HJLNP-UW-Z]{2})$/i,GR:/^\d{3} ?\d{2}$/,HR:/^\d{5}$/,HU:/^\d{4}$/,ID:/^\d{5}$/,IL:/^\d{5}(\d{2})?$/,IN:/^\d{6}$/,IS:/^\d{3}$/,IT:/^\d{5}$/,JP:/^\d{3}-?\d{4}$/,KR:/^\d{5}$/,LI:/^(948[5-9]|949[0-7])$/,LT:/^LT-\d{5}$/,LU:/^\d{4}$/,LV:/^LV-\d{4}$/,MX:/^\d{5}$/,MT:/^[A-Z]{3} ?\d{4}$/i,MZ:/^\d{4}$/,NL:/^\d{4} ?[A-Z]{2}$/i,NO:/^\d{4}$/,NP:/^\d{5}$/,NZ:/^\d{4}$/,PH:/^\d{4}$/,PK:/^\d{5}$/,PL:/^\d{2}-\d{3}$/,PR:/^009\d{2}([ -]\d{4})?$/,PT:/^\d{4}-\d{3}$/,RO:/^\d{6}$/,RU:/^\d{6}$/,SE:/^\d{3} ?\d{2}$/,SG:/^\d{6}$/,SI:/^\d{4}$/,SK:/^\d{3} ?\d{2}$/,TH:/^\d{5}$/,TN:/^\d{4}$/,TW:/^\d{3}(\d{2})?$/,UA:/^\d{5}$/,US:/^\d{5}(-\d{4})?$/,ZA:/^\d{4}$/,ZM:/^\d{5}$/};function rZ(z){let Q=lz[z],Z=($)=>{if(typeof $!=="string")return!1;if(!Q)return!1;return Q.test($)};return Z.emit=($,K)=>{if(!Q)return K.fail("isPostalCode")+";";return`if (!_re[${K.addRegex(Q)}].test(${$})) ${K.fail("isPostalCode")};`},Z.ruleName="isPostalCode",Z.requiresType="string",Z}var cz={AF:/^\d{8}$/,AL:/^[A-Z]\d{8}[A-Z]$/i,AR:/^\d{7,8}$/,AZ:/^AZE\d{8}$/,BE:/^\d{11}$/,BG:/^\d{10}$/,BR:/^\d{9}$/,BY:/^[A-Z]{2}\d{7}$/i,CA:/^\d{9}$/,CH:/^756\d{10}$/,CN:/^\d{15}(\d{2}[0-9xX])?$/,CY:/^\d{7}[A-Z]$/i,CZ:/^\d{9,10}$/,DE:/^[LI TOUAEVBMNPRSZDFGHCK]{9}$/i,DK:/^\d{10}$/,EE:/^\d{11}$/,ES:/^[0-9X-Z]\d{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/i,FI:/^\d{6}[+-A]\d{3}[0-9A-FHJ-NPR-Y]$/,FR:/^\d{8,9}[0-9\u00C1-\u00FF]{1}$/i,GB:/^[A-Z]{2}\d{6}[A-Z]$/i,GR:/^[A-Z]{2}\d{6}$/i,HR:/^\d{11}$/,HU:/^\d{8}[A-Z]{2}$/i,ID:/^\d{16}$/,IE:/^\d{7}[A-W][A-W]?$/,IL:/^\d{9}$/,IN:/^\d{12}$/,IR:/^\d{10}$/,IS:/^\d{10}$/,IT:/^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/i,JP:/^\d{12}$/,KR:/^\d{6}-\d{7}$/,LT:/^\d{11}$/,LU:/^\d{13}$/,LV:/^\d{6}-\d{5}$/,MK:/^\d{13}$/,MX:/^[A-Z]{4}\d{6}[HM][A-Z]{2}[B-DF-HJ-NP-TV-Z]{3}[A-Z0-9]\d$/i,MT:/^\d{7}[A-Z]$/i,NL:/^\d{9}$/,NO:/^\d{11}$/,PL:/^\d{11}$/,PT:/^[1-9]\d{7}[0-9TV]$/i,RO:/^\d{13}$/,RS:/^\d{13}$/,RU:/^\d{10}$/,SE:/^\d{10,12}$/,SI:/^\d{13}$/,SK:/^\d{9,10}$/,TH:/^\d{13}$/,TR:/^\d{11}$/,TW:/^[A-Z]\d{9}$/i,UA:/^\d{9}$/,US:/^\d{3}-\d{2}-\d{4}$/,ZA:/^\d{13}$/};function tZ(z){let Q=cz[z],Z=($)=>{if(typeof $!=="string")return!1;if(!Q)return!1;return Q.test($)};return Z.emit=($,K)=>{if(!Q)return K.fail("isIdentityCard")+";";return`if (!_re[${K.addRegex(Q)}].test(${$})) ${K.fail("isIdentityCard")};`},Z.ruleName="isIdentityCard",Z.requiresType="string",Z}var rz={AM:/^[A-Z]{2}\d{7}$/i,AR:/^[A-Z]{3}\d{6}$/i,AT:/^[A-Z]\d{7}$/i,AU:/^[A-Z]\d{7}$/i,AZ:/^[Aa]\d{8}$/,BE:/^[A-Z]{2}\d{6}$/i,BG:/^\d{9}$/,BH:/^[A-Z]{2}\d{6}$/i,BR:/^[A-Z]{2}\d{6}$/i,BY:/^[A-Z]{2}\d{7}$/i,CA:/^[A-Z]{2}\d{6}$/i,CH:/^[A-Z]\d{7}$/i,CN:/^G\d{8}$/,CY:/^[A-Z](\d{6}|\d{8})$/i,CZ:/^\d{8}$/,DE:/^[CFGHJKLMNPRTVWXYZ0-9]{9}$/i,DK:/^\d{9}$/,EE:/^([A-Z]\d{7}|[A-Z]{2}\d{7})$/i,ES:/^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/i,FI:/^[A-Z]{2}\d{7}$/i,FR:/[A-Z0-9]{9}/i,GB:/^\d{9}$/,GR:/^[A-Z]{2}\d{7}$/i,HR:/^\d{9}$/,HU:/^[A-Z]{2}(\d{6}|\d{7})$/i,ID:/^[A-C]\d{7}$/i,IE:/^[A-Z0-9]{2}\d{7}$/i,IL:/^\d{9}$/,IN:/^[A-Z]\d{7}$/i,IR:/^[A-Z]\d{8}$/i,IS:/^(A)\d{7}$/i,IT:/^[A-Z0-9]{9}$/i,JO:/^[A-Z]{2}\d{7}$/i,JP:/^[A-Z]{2}\d{7}$/i,KR:/^[A-Z][A-Z0-9]\d{7}$/i,KW:/^\d{8}$/,KZ:/^[A-Z]\d{8}$/i,LI:/^[A-Z]\d{6}X$/i,LT:/^[A-Z0-9]{8}$/i,LU:/^[A-Z0-9]{8}$/i,LV:/^[A-Z0-9]{2}\d{7}$/i,LY:/^[A-Z]{2}\d{7}$/i,MA:/^[A-Z0-9]{2}\d{7}$/i,MD:/^[A-Z]{2}\d{7}$/i,ME:/^[A-Z]{2}\d{7}$/i,MK:/^[A-Z]\d{7}$/i,MT:/^\d{7}$/,MX:/^[A-Z]\d{8}$/i,MY:/^[AHK]\d{8}[A-Z]$/i,NL:/^[A-NP-Z]{2}[A-NP-Z0-9]{6}\d$/i,NO:/^\d{9}$/,NZ:/^[A-Z]{2}\d{6}$/i,PH:/^[A-Z]\d{7}[A-Z]$/i,PK:/^[A-Z]{2}\d{7}$/i,PL:/^[A-Z]{2}\d{7}$/i,PT:/^[A-Z]\d{6}$/i,RO:/^\d{8}$/,RS:/^\d{9}$/,RU:/^\d{9}$/,SA:/^[A-Z]\d{8}$/i,SE:/^\d{8}$/,SL:/^(P)[A-Z]\d{7}$/i,SK:/^[0-9A-Z]\d{7}$/i,TH:/^[A-Z]{1,2}\d{6,7}$/i,TN:/^\d{8}$/,TR:/^[A-Z]\d{8}$/i,TW:/^[A-Z]\d{9}$/i,UA:/^[A-Z]{2}\d{6}$/i,US:/^\d{9}$/,ZA:/^[A-Z]\d{8}$/i};function vZ(z){let Q=rz[z],Z=($)=>{if(typeof $!=="string")return!1;if(!Q)return!1;return Q.test($)};return Z.emit=($,K)=>{if(!Q)return K.fail("isPassportNumber")+";";return`if (!_re[${K.addRegex(Q)}].test(${$})) ${K.fail("isPassportNumber")};`},Z.ruleName="isPassportNumber",Z.requiresType="string",Z}
12
+ export{vz as eb,ez as fb,az as gb,zQ as hb,QQ as ib,ZQ as jb,KQ as kb,jQ as lb,JQ as mb,qQ as nb,wQ as ob,WQ as pb,bQ as qb,YQ as rb,GQ as sb,FQ as tb,MQ as ub,XQ as vb,UQ as wb,HQ as xb,BQ as yb,PQ as zb,kQ as Ab,yQ as Bb,CQ as Cb,OQ as Db,gQ as Eb,TQ as Fb,LQ as Gb,AQ as Hb,IQ as Ib,dQ as Jb,SQ as Kb,pQ as Lb,fQ as Mb,oQ as Nb,RQ as Ob,EQ as Pb,_Q as Qb,sQ as Rb,NQ as Sb,iQ as Tb,nQ as Ub,uQ as Vb,xQ as Wb,mQ as Xb,lQ as Yb,cQ as Zb,rQ as _b,tQ as $b,vQ as ac,eQ as bc,aQ as cc,zZ as dc,QZ as ec,ZZ as fc,$Z as gc,KZ as hc,jZ as ic,JZ as jc,qZ as kc,wZ as lc,WZ as mc,bZ as nc,YZ as oc,VZ as pc,GZ as qc,FZ as rc,MZ as sc,XZ as tc,UZ as uc,hZ as vc,HZ as wc,BZ as xc,DZ as yc,PZ as zc,kZ as Ac,yZ as Bc,CZ as Cc,OZ as Dc,gZ as Ec,TZ as Fc,LZ as Gc,AZ as Hc,IZ as Ic,dZ as Jc,SZ as Kc,pZ as Lc,fZ as Mc,oZ as Nc,EZ as Oc,_Z as Pc,sZ as Qc,NZ as Rc,iZ as Sc,nZ as Tc,xZ as Uc,mZ as Vc,cZ as Wc,rZ as Xc,tZ as Yc,vZ as Zc};
13
+
14
+ //# debugId=4B47A8B54E42A7B464756E2164756E21
15
+ //# sourceMappingURL=index-6pbm9cq6.js.map