@oyinlola141/lattice-schema 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/schemaBase/index.d.ts +10 -0
- package/dist/schemaBase/index.d.ts.map +1 -0
- package/dist/schemaBase/index.js +9 -0
- package/dist/schemaBase/index.js.map +1 -0
- package/dist/schemaBase/schemaBase.context.d.ts +17 -0
- package/dist/schemaBase/schemaBase.context.d.ts.map +1 -0
- package/dist/schemaBase/schemaBase.context.js +44 -0
- package/dist/schemaBase/schemaBase.context.js.map +1 -0
- package/dist/schemaBase/schemaBase.core.d.ts +52 -0
- package/dist/schemaBase/schemaBase.core.d.ts.map +1 -0
- package/dist/schemaBase/schemaBase.core.js +99 -0
- package/dist/schemaBase/schemaBase.core.js.map +1 -0
- package/dist/schemaBase/schemaBase.result.d.ts +17 -0
- package/dist/schemaBase/schemaBase.result.d.ts.map +1 -0
- package/dist/schemaBase/schemaBase.result.js +29 -0
- package/dist/schemaBase/schemaBase.result.js.map +1 -0
- package/dist/schemaBase/schemaBase.type.d.ts +57 -0
- package/dist/schemaBase/schemaBase.type.d.ts.map +1 -0
- package/dist/schemaBase/schemaBase.type.js +7 -0
- package/dist/schemaBase/schemaBase.type.js.map +1 -0
- package/dist/schemaCoerce/index.d.ts +7 -0
- package/dist/schemaCoerce/index.d.ts.map +1 -0
- package/dist/schemaCoerce/index.js +7 -0
- package/dist/schemaCoerce/index.js.map +1 -0
- package/dist/schemaCoerce/schemaCoerce.core.d.ts +48 -0
- package/dist/schemaCoerce/schemaCoerce.core.d.ts.map +1 -0
- package/dist/schemaCoerce/schemaCoerce.core.js +126 -0
- package/dist/schemaCoerce/schemaCoerce.core.js.map +1 -0
- package/dist/schemaComposition/index.d.ts +10 -0
- package/dist/schemaComposition/index.d.ts.map +1 -0
- package/dist/schemaComposition/index.js +10 -0
- package/dist/schemaComposition/index.js.map +1 -0
- package/dist/schemaComposition/schemaEnum.core.d.ts +21 -0
- package/dist/schemaComposition/schemaEnum.core.d.ts.map +1 -0
- package/dist/schemaComposition/schemaEnum.core.js +41 -0
- package/dist/schemaComposition/schemaEnum.core.js.map +1 -0
- package/dist/schemaComposition/schemaIntersection.core.d.ts +21 -0
- package/dist/schemaComposition/schemaIntersection.core.d.ts.map +1 -0
- package/dist/schemaComposition/schemaIntersection.core.js +54 -0
- package/dist/schemaComposition/schemaIntersection.core.js.map +1 -0
- package/dist/schemaComposition/schemaLazy.core.d.ts +22 -0
- package/dist/schemaComposition/schemaLazy.core.d.ts.map +1 -0
- package/dist/schemaComposition/schemaLazy.core.js +33 -0
- package/dist/schemaComposition/schemaLazy.core.js.map +1 -0
- package/dist/schemaComposition/schemaUnion.core.d.ts +32 -0
- package/dist/schemaComposition/schemaUnion.core.d.ts.map +1 -0
- package/dist/schemaComposition/schemaUnion.core.js +89 -0
- package/dist/schemaComposition/schemaUnion.core.js.map +1 -0
- package/dist/schemaInference/index.d.ts +7 -0
- package/dist/schemaInference/index.d.ts.map +1 -0
- package/dist/schemaInference/index.js +7 -0
- package/dist/schemaInference/index.js.map +1 -0
- package/dist/schemaInference/schemaInfer.type.d.ts +27 -0
- package/dist/schemaInference/schemaInfer.type.d.ts.map +1 -0
- package/dist/schemaInference/schemaInfer.type.js +7 -0
- package/dist/schemaInference/schemaInfer.type.js.map +1 -0
- package/dist/schemaModifiers/index.d.ts +10 -0
- package/dist/schemaModifiers/index.d.ts.map +1 -0
- package/dist/schemaModifiers/index.js +10 -0
- package/dist/schemaModifiers/index.js.map +1 -0
- package/dist/schemaModifiers/schemaDefault.core.d.ts +20 -0
- package/dist/schemaModifiers/schemaDefault.core.d.ts.map +1 -0
- package/dist/schemaModifiers/schemaDefault.core.js +33 -0
- package/dist/schemaModifiers/schemaDefault.core.js.map +1 -0
- package/dist/schemaModifiers/schemaOptionalNullable.core.d.ts +30 -0
- package/dist/schemaModifiers/schemaOptionalNullable.core.d.ts.map +1 -0
- package/dist/schemaModifiers/schemaOptionalNullable.core.js +47 -0
- package/dist/schemaModifiers/schemaOptionalNullable.core.js.map +1 -0
- package/dist/schemaModifiers/schemaRefine.core.d.ts +21 -0
- package/dist/schemaModifiers/schemaRefine.core.d.ts.map +1 -0
- package/dist/schemaModifiers/schemaRefine.core.js +40 -0
- package/dist/schemaModifiers/schemaRefine.core.js.map +1 -0
- package/dist/schemaModifiers/schemaTransform.core.d.ts +20 -0
- package/dist/schemaModifiers/schemaTransform.core.d.ts.map +1 -0
- package/dist/schemaModifiers/schemaTransform.core.js +40 -0
- package/dist/schemaModifiers/schemaTransform.core.js.map +1 -0
- package/dist/schemaPrimitives/index.d.ts +12 -0
- package/dist/schemaPrimitives/index.d.ts.map +1 -0
- package/dist/schemaPrimitives/index.js +12 -0
- package/dist/schemaPrimitives/index.js.map +1 -0
- package/dist/schemaPrimitives/schemaBoolean.core.d.ts +26 -0
- package/dist/schemaPrimitives/schemaBoolean.core.d.ts.map +1 -0
- package/dist/schemaPrimitives/schemaBoolean.core.js +47 -0
- package/dist/schemaPrimitives/schemaBoolean.core.js.map +1 -0
- package/dist/schemaPrimitives/schemaLiteral.core.d.ts +19 -0
- package/dist/schemaPrimitives/schemaLiteral.core.d.ts.map +1 -0
- package/dist/schemaPrimitives/schemaLiteral.core.js +37 -0
- package/dist/schemaPrimitives/schemaLiteral.core.js.map +1 -0
- package/dist/schemaPrimitives/schemaNumber.core.d.ts +62 -0
- package/dist/schemaPrimitives/schemaNumber.core.d.ts.map +1 -0
- package/dist/schemaPrimitives/schemaNumber.core.js +191 -0
- package/dist/schemaPrimitives/schemaNumber.core.js.map +1 -0
- package/dist/schemaPrimitives/schemaSentinel.core.d.ts +53 -0
- package/dist/schemaPrimitives/schemaSentinel.core.d.ts.map +1 -0
- package/dist/schemaPrimitives/schemaSentinel.core.js +101 -0
- package/dist/schemaPrimitives/schemaSentinel.core.js.map +1 -0
- package/dist/schemaPrimitives/schemaString.core.d.ts +74 -0
- package/dist/schemaPrimitives/schemaString.core.d.ts.map +1 -0
- package/dist/schemaPrimitives/schemaString.core.js +208 -0
- package/dist/schemaPrimitives/schemaString.core.js.map +1 -0
- package/dist/schemaPrimitives/schemaTransform.core.d.ts +13 -0
- package/dist/schemaPrimitives/schemaTransform.core.d.ts.map +1 -0
- package/dist/schemaPrimitives/schemaTransform.core.js +31 -0
- package/dist/schemaPrimitives/schemaTransform.core.js.map +1 -0
- package/dist/schemaRoot/index.d.ts +7 -0
- package/dist/schemaRoot/index.d.ts.map +1 -0
- package/dist/schemaRoot/index.js +7 -0
- package/dist/schemaRoot/index.js.map +1 -0
- package/dist/schemaRoot/schemaRoot.namespace.d.ts +72 -0
- package/dist/schemaRoot/schemaRoot.namespace.d.ts.map +1 -0
- package/dist/schemaRoot/schemaRoot.namespace.js +79 -0
- package/dist/schemaRoot/schemaRoot.namespace.js.map +1 -0
- package/dist/schemaStructures/index.d.ts +12 -0
- package/dist/schemaStructures/index.d.ts.map +1 -0
- package/dist/schemaStructures/index.js +11 -0
- package/dist/schemaStructures/index.js.map +1 -0
- package/dist/schemaStructures/schemaArray.core.d.ts +36 -0
- package/dist/schemaStructures/schemaArray.core.d.ts.map +1 -0
- package/dist/schemaStructures/schemaArray.core.js +105 -0
- package/dist/schemaStructures/schemaArray.core.js.map +1 -0
- package/dist/schemaStructures/schemaMapSet.core.d.ts +31 -0
- package/dist/schemaStructures/schemaMapSet.core.d.ts.map +1 -0
- package/dist/schemaStructures/schemaMapSet.core.js +77 -0
- package/dist/schemaStructures/schemaMapSet.core.js.map +1 -0
- package/dist/schemaStructures/schemaObject.core.d.ts +66 -0
- package/dist/schemaStructures/schemaObject.core.d.ts.map +1 -0
- package/dist/schemaStructures/schemaObject.core.js +184 -0
- package/dist/schemaStructures/schemaObject.core.js.map +1 -0
- package/dist/schemaStructures/schemaRecord.core.d.ts +20 -0
- package/dist/schemaStructures/schemaRecord.core.d.ts.map +1 -0
- package/dist/schemaStructures/schemaRecord.core.js +66 -0
- package/dist/schemaStructures/schemaRecord.core.js.map +1 -0
- package/dist/schemaStructures/schemaTuple.core.d.ts +24 -0
- package/dist/schemaStructures/schemaTuple.core.d.ts.map +1 -0
- package/dist/schemaStructures/schemaTuple.core.js +60 -0
- package/dist/schemaStructures/schemaTuple.core.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaSentinel.core.js","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaSentinel.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,MAAY;IAC1B,KAAK,GAAG,MAAM,CAAC;IAExB,MAAM,CAAC,GAAuB,EAAE,KAAc;QACnD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,QAAQ,CAAC,GAAG,EAAE;gBACZ,IAAI,EAAE,eAAe,CAAC,YAAY;gBAClC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,2BAA2B,OAAO,KAAK,EAAE;gBAClD,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,OAAO,KAAK;aACvB,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,MAAiB;IACpC,KAAK,GAAG,WAAW,CAAC;IAE7B,MAAM,CAAC,GAAuB,EAAE,KAAc;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,EAAE;gBACZ,IAAI,EAAE,eAAe,CAAC,YAAY;gBAClC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,gCAAgC,OAAO,KAAK,EAAE;gBACvD,QAAQ,EAAE,WAAW;gBACrB,QAAQ,EAAE,OAAO,KAAK;aACvB,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,MAAe;IAC5B,KAAK,GAAG,KAAK,CAAC;IAEvB,MAAM,CAAC,IAAwB,EAAE,KAAc;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,MAAe;IAChC,KAAK,GAAG,SAAS,CAAC;IAE3B,MAAM,CAAC,IAAwB,EAAE,KAAc;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,MAAa;IAC5B,KAAK,GAAG,OAAO,CAAC;IAEzB,MAAM,CAAC,GAAuB,EAAE,KAAc;QACnD,QAAQ,CAAC,GAAG,EAAE;YACZ,IAAI,EAAE,eAAe,CAAC,YAAY;YAClC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,4BAA4B,OAAO,KAAK,EAAE;YACnD,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,OAAO,KAAK;SACvB,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,UAAU,EAAE,CAAC;AAC1B,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,SAAS,EAAE,CAAC;AACzB,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,WAAW,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @oyinlola141/lattice-schema/primitives/string
|
|
3
|
+
*
|
|
4
|
+
* String schema with constraints, format validation, and transformations.
|
|
5
|
+
*/
|
|
6
|
+
import { Schema } from "../schemaBase/index.js";
|
|
7
|
+
import type { SchemaParseContext } from "../schemaBase/index.js";
|
|
8
|
+
import { TransformSchema } from "./schemaTransform.core.js";
|
|
9
|
+
/** Configuration for string schema constraints. */
|
|
10
|
+
interface StringSchemaConfig {
|
|
11
|
+
readonly min?: number;
|
|
12
|
+
readonly max?: number;
|
|
13
|
+
readonly length?: number;
|
|
14
|
+
readonly pattern?: RegExp;
|
|
15
|
+
readonly format?: string;
|
|
16
|
+
readonly trim?: boolean;
|
|
17
|
+
readonly toLowerCase?: boolean;
|
|
18
|
+
readonly toUpperCase?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Schema for string values with optional constraints.
|
|
22
|
+
*/
|
|
23
|
+
export declare class StringSchema extends Schema<string> {
|
|
24
|
+
readonly _type = "string";
|
|
25
|
+
private readonly _config;
|
|
26
|
+
constructor(config?: StringSchemaConfig);
|
|
27
|
+
_parse(ctx: SchemaParseContext, input: unknown): string;
|
|
28
|
+
private _validateConstraints;
|
|
29
|
+
private _validateFormat;
|
|
30
|
+
/** Minimum character length. */
|
|
31
|
+
min(min: number): StringSchema;
|
|
32
|
+
/** Maximum character length. */
|
|
33
|
+
max(max: number): StringSchema;
|
|
34
|
+
/** Exact character length. */
|
|
35
|
+
length(length: number): StringSchema;
|
|
36
|
+
/** Matches a regex pattern. */
|
|
37
|
+
regex(pattern: RegExp): StringSchema;
|
|
38
|
+
/** Validates email format. */
|
|
39
|
+
email(): StringSchema;
|
|
40
|
+
/** Validates URL format. */
|
|
41
|
+
url(): StringSchema;
|
|
42
|
+
/** Validates UUID format. */
|
|
43
|
+
uuid(): StringSchema;
|
|
44
|
+
/** Validates UUID v4 format. */
|
|
45
|
+
uuidv4(): StringSchema;
|
|
46
|
+
/** Validates ISO datetime format. */
|
|
47
|
+
datetime(): StringSchema;
|
|
48
|
+
/** Validates date-only format. */
|
|
49
|
+
date(): StringSchema;
|
|
50
|
+
/** Validates IPv4 format. */
|
|
51
|
+
ipv4(): StringSchema;
|
|
52
|
+
/** Validates hex color format. */
|
|
53
|
+
hexColor(): StringSchema;
|
|
54
|
+
/** Trims whitespace. */
|
|
55
|
+
trim(): StringSchema;
|
|
56
|
+
/** Converts to lowercase. */
|
|
57
|
+
toLowerCase(): StringSchema;
|
|
58
|
+
/** Converts to uppercase. */
|
|
59
|
+
toUpperCase(): StringSchema;
|
|
60
|
+
/** Makes this schema optional (accepts undefined). */
|
|
61
|
+
optional(): Schema<string | undefined>;
|
|
62
|
+
/** Makes this schema nullable (accepts null). */
|
|
63
|
+
nullable(): Schema<string | null>;
|
|
64
|
+
/** Adds a default value when input is undefined. */
|
|
65
|
+
default(defaultValue: string | (() => string)): Schema<string>;
|
|
66
|
+
/** Adds a custom refinement check. */
|
|
67
|
+
refine(check: (value: string) => boolean, message: string): Schema<string>;
|
|
68
|
+
/** Transforms the string value. */
|
|
69
|
+
transform<TOutput>(fn: (value: string) => TOutput): TransformSchema<string, TOutput>;
|
|
70
|
+
}
|
|
71
|
+
/** Creates a string schema. */
|
|
72
|
+
export declare function stringSchema(): StringSchema;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=schemaString.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaString.core.d.ts","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaString.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAOjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,mDAAmD;AACnD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,MAAM,CAAC,MAAM,CAAC;IAC9C,SAAgB,KAAK,YAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C,YAAY,MAAM,GAAE,kBAAuB,EAG1C;IAEM,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CA0B7D;IAED,OAAO,CAAC,oBAAoB;IAoD5B,OAAO,CAAC,eAAe;IAyBvB,gCAAgC;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAEpC;IAED,gCAAgC;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAEpC;IAED,8BAA8B;IACvB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAE1C;IAED,+BAA+B;IACxB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAE1C;IAED,8BAA8B;IACvB,KAAK,IAAI,YAAY,CAE3B;IAED,4BAA4B;IACrB,GAAG,IAAI,YAAY,CAEzB;IAED,6BAA6B;IACtB,IAAI,IAAI,YAAY,CAE1B;IAED,gCAAgC;IACzB,MAAM,IAAI,YAAY,CAE5B;IAED,qCAAqC;IAC9B,QAAQ,IAAI,YAAY,CAE9B;IAED,kCAAkC;IAC3B,IAAI,IAAI,YAAY,CAE1B;IAED,6BAA6B;IACtB,IAAI,IAAI,YAAY,CAE1B;IAED,kCAAkC;IAC3B,QAAQ,IAAI,YAAY,CAE9B;IAED,wBAAwB;IACjB,IAAI,IAAI,YAAY,CAE1B;IAED,6BAA6B;IACtB,WAAW,IAAI,YAAY,CAEjC;IAED,6BAA6B;IACtB,WAAW,IAAI,YAAY,CAEjC;IAED,sDAAsD;IAC/C,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAE5C;IAED,iDAAiD;IAC1C,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAEvC;IAED,oDAAoD;IAC7C,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAEpE;IAED,sCAAsC;IAC/B,MAAM,CACX,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,EACjC,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,CAAC,CAEhB;IAED,mCAAmC;IAC5B,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1F;CACF;AAED,+BAA+B;AAC/B,wBAAgB,YAAY,IAAI,YAAY,CAE3C"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @latticejs/schema/primitives/string
|
|
3
|
+
*
|
|
4
|
+
* String schema with constraints, format validation, and transformations.
|
|
5
|
+
*/
|
|
6
|
+
import { Schema } from "../schemaBase/index.js";
|
|
7
|
+
import { addIssue } from "../schemaBase/index.js";
|
|
8
|
+
import { SchemaIssueCode, SCHEMA_STRING_FORMATS } from "@latticejs/constants";
|
|
9
|
+
import { OptionalModifierSchema } from "../schemaModifiers/schemaOptionalNullable.core.js";
|
|
10
|
+
import { NullableModifierSchema } from "../schemaModifiers/schemaOptionalNullable.core.js";
|
|
11
|
+
import { DefaultSchema } from "../schemaModifiers/schemaDefault.core.js";
|
|
12
|
+
import { RefineSchema } from "../schemaModifiers/schemaRefine.core.js";
|
|
13
|
+
import { TransformSchema } from "./schemaTransform.core.js";
|
|
14
|
+
/**
|
|
15
|
+
* Schema for string values with optional constraints.
|
|
16
|
+
*/
|
|
17
|
+
export class StringSchema extends Schema {
|
|
18
|
+
_type = "string";
|
|
19
|
+
_config;
|
|
20
|
+
constructor(config = {}) {
|
|
21
|
+
super();
|
|
22
|
+
this._config = config;
|
|
23
|
+
}
|
|
24
|
+
_parse(ctx, input) {
|
|
25
|
+
if (typeof input !== "string") {
|
|
26
|
+
addIssue(ctx, {
|
|
27
|
+
code: SchemaIssueCode.INVALID_TYPE,
|
|
28
|
+
path: [...ctx.path],
|
|
29
|
+
message: `Expected string, received ${typeof input}`,
|
|
30
|
+
expected: "string",
|
|
31
|
+
received: typeof input,
|
|
32
|
+
});
|
|
33
|
+
throw new Error("Validation failed");
|
|
34
|
+
}
|
|
35
|
+
let value = input;
|
|
36
|
+
if (this._config.trim) {
|
|
37
|
+
value = value.trim();
|
|
38
|
+
}
|
|
39
|
+
if (this._config.toLowerCase) {
|
|
40
|
+
value = value.toLowerCase();
|
|
41
|
+
}
|
|
42
|
+
if (this._config.toUpperCase) {
|
|
43
|
+
value = value.toUpperCase();
|
|
44
|
+
}
|
|
45
|
+
this._validateConstraints(ctx, value);
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
_validateConstraints(ctx, value) {
|
|
49
|
+
const c = this._config;
|
|
50
|
+
let failed = false;
|
|
51
|
+
if (c.min !== undefined && value.length < c.min) {
|
|
52
|
+
addIssue(ctx, {
|
|
53
|
+
code: SchemaIssueCode.TOO_SMALL,
|
|
54
|
+
path: [...ctx.path],
|
|
55
|
+
message: `String must be at least ${c.min} characters`,
|
|
56
|
+
expected: `>= ${c.min}`,
|
|
57
|
+
received: String(value.length),
|
|
58
|
+
});
|
|
59
|
+
failed = true;
|
|
60
|
+
}
|
|
61
|
+
if (c.max !== undefined && value.length > c.max) {
|
|
62
|
+
addIssue(ctx, {
|
|
63
|
+
code: SchemaIssueCode.TOO_LARGE,
|
|
64
|
+
path: [...ctx.path],
|
|
65
|
+
message: `String must be at most ${c.max} characters`,
|
|
66
|
+
expected: `<= ${c.max}`,
|
|
67
|
+
received: String(value.length),
|
|
68
|
+
});
|
|
69
|
+
failed = true;
|
|
70
|
+
}
|
|
71
|
+
if (c.length !== undefined && value.length !== c.length) {
|
|
72
|
+
addIssue(ctx, {
|
|
73
|
+
code: SchemaIssueCode.INVALID_LENGTH,
|
|
74
|
+
path: [...ctx.path],
|
|
75
|
+
message: `String must be exactly ${c.length} characters`,
|
|
76
|
+
expected: String(c.length),
|
|
77
|
+
received: String(value.length),
|
|
78
|
+
});
|
|
79
|
+
failed = true;
|
|
80
|
+
}
|
|
81
|
+
if (c.pattern !== undefined && !c.pattern.test(value)) {
|
|
82
|
+
addIssue(ctx, {
|
|
83
|
+
code: SchemaIssueCode.INVALID_FORMAT,
|
|
84
|
+
path: [...ctx.path],
|
|
85
|
+
message: `String does not match pattern`,
|
|
86
|
+
expected: c.pattern.source,
|
|
87
|
+
});
|
|
88
|
+
failed = true;
|
|
89
|
+
}
|
|
90
|
+
if (c.format !== undefined) {
|
|
91
|
+
const fmtFailed = this._validateFormat(ctx, value, c.format);
|
|
92
|
+
if (fmtFailed)
|
|
93
|
+
failed = true;
|
|
94
|
+
}
|
|
95
|
+
if (failed) {
|
|
96
|
+
throw new Error("Validation failed");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
_validateFormat(ctx, value, format) {
|
|
100
|
+
const formats = {
|
|
101
|
+
email: SCHEMA_STRING_FORMATS.EMAIL,
|
|
102
|
+
url: SCHEMA_STRING_FORMATS.URL,
|
|
103
|
+
uuid: SCHEMA_STRING_FORMATS.UUID,
|
|
104
|
+
"uuid-v4": SCHEMA_STRING_FORMATS.UUID_V4,
|
|
105
|
+
datetime: SCHEMA_STRING_FORMATS.DATETIME,
|
|
106
|
+
date: SCHEMA_STRING_FORMATS.DATE,
|
|
107
|
+
time: SCHEMA_STRING_FORMATS.TIME,
|
|
108
|
+
ipv4: SCHEMA_STRING_FORMATS.IPV4,
|
|
109
|
+
hexColor: SCHEMA_STRING_FORMATS.HEX_COLOR,
|
|
110
|
+
};
|
|
111
|
+
const pattern = formats[format];
|
|
112
|
+
if (pattern && !pattern.test(value)) {
|
|
113
|
+
addIssue(ctx, {
|
|
114
|
+
code: SchemaIssueCode.INVALID_FORMAT,
|
|
115
|
+
path: [...ctx.path],
|
|
116
|
+
message: `Invalid ${format} format`,
|
|
117
|
+
expected: format,
|
|
118
|
+
});
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
/** Minimum character length. */
|
|
124
|
+
min(min) {
|
|
125
|
+
return new StringSchema({ ...this._config, min });
|
|
126
|
+
}
|
|
127
|
+
/** Maximum character length. */
|
|
128
|
+
max(max) {
|
|
129
|
+
return new StringSchema({ ...this._config, max });
|
|
130
|
+
}
|
|
131
|
+
/** Exact character length. */
|
|
132
|
+
length(length) {
|
|
133
|
+
return new StringSchema({ ...this._config, length });
|
|
134
|
+
}
|
|
135
|
+
/** Matches a regex pattern. */
|
|
136
|
+
regex(pattern) {
|
|
137
|
+
return new StringSchema({ ...this._config, pattern });
|
|
138
|
+
}
|
|
139
|
+
/** Validates email format. */
|
|
140
|
+
email() {
|
|
141
|
+
return new StringSchema({ ...this._config, format: "email" });
|
|
142
|
+
}
|
|
143
|
+
/** Validates URL format. */
|
|
144
|
+
url() {
|
|
145
|
+
return new StringSchema({ ...this._config, format: "url" });
|
|
146
|
+
}
|
|
147
|
+
/** Validates UUID format. */
|
|
148
|
+
uuid() {
|
|
149
|
+
return new StringSchema({ ...this._config, format: "uuid" });
|
|
150
|
+
}
|
|
151
|
+
/** Validates UUID v4 format. */
|
|
152
|
+
uuidv4() {
|
|
153
|
+
return new StringSchema({ ...this._config, format: "uuid-v4" });
|
|
154
|
+
}
|
|
155
|
+
/** Validates ISO datetime format. */
|
|
156
|
+
datetime() {
|
|
157
|
+
return new StringSchema({ ...this._config, format: "datetime" });
|
|
158
|
+
}
|
|
159
|
+
/** Validates date-only format. */
|
|
160
|
+
date() {
|
|
161
|
+
return new StringSchema({ ...this._config, format: "date" });
|
|
162
|
+
}
|
|
163
|
+
/** Validates IPv4 format. */
|
|
164
|
+
ipv4() {
|
|
165
|
+
return new StringSchema({ ...this._config, format: "ipv4" });
|
|
166
|
+
}
|
|
167
|
+
/** Validates hex color format. */
|
|
168
|
+
hexColor() {
|
|
169
|
+
return new StringSchema({ ...this._config, format: "hexColor" });
|
|
170
|
+
}
|
|
171
|
+
/** Trims whitespace. */
|
|
172
|
+
trim() {
|
|
173
|
+
return new StringSchema({ ...this._config, trim: true });
|
|
174
|
+
}
|
|
175
|
+
/** Converts to lowercase. */
|
|
176
|
+
toLowerCase() {
|
|
177
|
+
return new StringSchema({ ...this._config, toLowerCase: true });
|
|
178
|
+
}
|
|
179
|
+
/** Converts to uppercase. */
|
|
180
|
+
toUpperCase() {
|
|
181
|
+
return new StringSchema({ ...this._config, toUpperCase: true });
|
|
182
|
+
}
|
|
183
|
+
/** Makes this schema optional (accepts undefined). */
|
|
184
|
+
optional() {
|
|
185
|
+
return new OptionalModifierSchema(this);
|
|
186
|
+
}
|
|
187
|
+
/** Makes this schema nullable (accepts null). */
|
|
188
|
+
nullable() {
|
|
189
|
+
return new NullableModifierSchema(this);
|
|
190
|
+
}
|
|
191
|
+
/** Adds a default value when input is undefined. */
|
|
192
|
+
default(defaultValue) {
|
|
193
|
+
return new DefaultSchema(this, defaultValue);
|
|
194
|
+
}
|
|
195
|
+
/** Adds a custom refinement check. */
|
|
196
|
+
refine(check, message) {
|
|
197
|
+
return new RefineSchema(this, check, message);
|
|
198
|
+
}
|
|
199
|
+
/** Transforms the string value. */
|
|
200
|
+
transform(fn) {
|
|
201
|
+
return new TransformSchema(this, fn);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/** Creates a string schema. */
|
|
205
|
+
export function stringSchema() {
|
|
206
|
+
return new StringSchema();
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=schemaString.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaString.core.js","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaString.core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema that applies a transform function to the output of another schema.
|
|
3
|
+
*/
|
|
4
|
+
import { Schema } from "../schemaBase/index.js";
|
|
5
|
+
import type { SchemaParseContext } from "../schemaBase/index.js";
|
|
6
|
+
export declare class TransformSchema<TInput, TOutput> extends Schema<TOutput> {
|
|
7
|
+
private readonly _base;
|
|
8
|
+
private readonly _fn;
|
|
9
|
+
readonly _type = "transform";
|
|
10
|
+
constructor(_base: Schema<TInput>, _fn: (value: TInput) => TOutput);
|
|
11
|
+
_parse(ctx: SchemaParseContext, input: unknown): TOutput;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=schemaTransform.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaTransform.core.d.ts","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaTransform.core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,qBAAa,eAAe,CAAC,MAAM,EAAE,OAAO,CAAE,SAAQ,MAAM,CAAC,OAAO,CAAC;IAIjE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,SAAgB,KAAK,eAAe;IAEpC,YACmB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EACrB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,EAGjD;IAEM,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAY9D;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema that applies a transform function to the output of another schema.
|
|
3
|
+
*/
|
|
4
|
+
import { Schema } from "../schemaBase/index.js";
|
|
5
|
+
import { addIssue } from "../schemaBase/index.js";
|
|
6
|
+
import { SchemaIssueCode } from "@latticejs/constants";
|
|
7
|
+
export class TransformSchema extends Schema {
|
|
8
|
+
_base;
|
|
9
|
+
_fn;
|
|
10
|
+
_type = "transform";
|
|
11
|
+
constructor(_base, _fn) {
|
|
12
|
+
super();
|
|
13
|
+
this._base = _base;
|
|
14
|
+
this._fn = _fn;
|
|
15
|
+
}
|
|
16
|
+
_parse(ctx, input) {
|
|
17
|
+
const value = this._base._parse(ctx, input);
|
|
18
|
+
try {
|
|
19
|
+
return this._fn(value);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
addIssue(ctx, {
|
|
23
|
+
code: SchemaIssueCode.TRANSFORM_FAILED,
|
|
24
|
+
path: [...ctx.path],
|
|
25
|
+
message: `Transform failed: ${String(error)}`,
|
|
26
|
+
});
|
|
27
|
+
throw new Error("Validation failed");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=schemaTransform.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaTransform.core.js","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaTransform.core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,eAAiC,SAAQ,MAAe;IAIhD,KAAK;IACL,GAAG;IAJN,KAAK,GAAG,WAAW,CAAC;IAEpC,YACmB,KAAqB,EACrB,GAA+B;QAEhD,KAAK,EAAE,CAAC;qBAHS,KAAK;mBACL,GAAG;IAGtB,CAAC;IAEM,MAAM,CAAC,GAAuB,EAAE,KAAc;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,GAAG,EAAE;gBACZ,IAAI,EAAE,eAAe,CAAC,gBAAgB;gBACtC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,qBAAqB,MAAM,CAAC,KAAK,CAAC,EAAE;aAC9C,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemaRoot/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemaRoot/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @oyinlola141/lattice-schema/root
|
|
3
|
+
*
|
|
4
|
+
* The schema namespace — primary entry point for creating schemas.
|
|
5
|
+
*/
|
|
6
|
+
import { stringSchema } from "../schemaPrimitives/index.js";
|
|
7
|
+
import { numberSchema } from "../schemaPrimitives/index.js";
|
|
8
|
+
import { booleanSchema } from "../schemaPrimitives/index.js";
|
|
9
|
+
import { literalSchema } from "../schemaPrimitives/index.js";
|
|
10
|
+
import { nullSchema, undefinedSchema, anySchema, unknownSchema, neverSchema } from "../schemaPrimitives/index.js";
|
|
11
|
+
import { objectSchema } from "../schemaStructures/index.js";
|
|
12
|
+
import { arraySchema } from "../schemaStructures/index.js";
|
|
13
|
+
import { tupleSchema } from "../schemaStructures/index.js";
|
|
14
|
+
import { recordSchema } from "../schemaStructures/index.js";
|
|
15
|
+
import { mapSchema, setSchema } from "../schemaStructures/index.js";
|
|
16
|
+
import { unionSchema } from "../schemaComposition/index.js";
|
|
17
|
+
import { intersectionSchema } from "../schemaComposition/index.js";
|
|
18
|
+
import { lazySchema } from "../schemaComposition/index.js";
|
|
19
|
+
import { enumSchema } from "../schemaComposition/index.js";
|
|
20
|
+
import { optionalSchema, nullableSchema } from "../schemaModifiers/index.js";
|
|
21
|
+
import { defaultSchema } from "../schemaModifiers/index.js";
|
|
22
|
+
import { refineSchema } from "../schemaModifiers/index.js";
|
|
23
|
+
import { transformSchema } from "../schemaModifiers/index.js";
|
|
24
|
+
import { coerceNumberSchema, coerceBooleanSchema, coerceStringSchema, coerceBigIntSchema } from "../schemaCoerce/index.js";
|
|
25
|
+
/**
|
|
26
|
+
* The schema namespace — primary API for creating schemas.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* import { schema } from "@oyinlola141/lattice-schema";
|
|
30
|
+
*
|
|
31
|
+
* const UserSchema = schema.object({
|
|
32
|
+
* id: schema.string().uuid(),
|
|
33
|
+
* name: schema.string().min(2),
|
|
34
|
+
* email: schema.string().email(),
|
|
35
|
+
* age: schema.number().int().min(0).optional(),
|
|
36
|
+
* });
|
|
37
|
+
*/
|
|
38
|
+
export declare const schema: {
|
|
39
|
+
string: typeof stringSchema;
|
|
40
|
+
number: typeof numberSchema;
|
|
41
|
+
boolean: typeof booleanSchema;
|
|
42
|
+
bigint: () => never;
|
|
43
|
+
symbol: () => never;
|
|
44
|
+
null: typeof nullSchema;
|
|
45
|
+
undefined: typeof undefinedSchema;
|
|
46
|
+
any: typeof anySchema;
|
|
47
|
+
unknown: typeof unknownSchema;
|
|
48
|
+
never: typeof neverSchema;
|
|
49
|
+
literal: typeof literalSchema;
|
|
50
|
+
enum: typeof enumSchema;
|
|
51
|
+
object: typeof objectSchema;
|
|
52
|
+
array: typeof arraySchema;
|
|
53
|
+
tuple: typeof tupleSchema;
|
|
54
|
+
record: typeof recordSchema;
|
|
55
|
+
map: typeof mapSchema;
|
|
56
|
+
set: typeof setSchema;
|
|
57
|
+
union: typeof unionSchema;
|
|
58
|
+
intersection: typeof intersectionSchema;
|
|
59
|
+
lazy: typeof lazySchema;
|
|
60
|
+
optional: typeof optionalSchema;
|
|
61
|
+
nullable: typeof nullableSchema;
|
|
62
|
+
default: typeof defaultSchema;
|
|
63
|
+
refine: typeof refineSchema;
|
|
64
|
+
transform: typeof transformSchema;
|
|
65
|
+
coerce: {
|
|
66
|
+
string: typeof coerceStringSchema;
|
|
67
|
+
number: typeof coerceNumberSchema;
|
|
68
|
+
boolean: typeof coerceBooleanSchema;
|
|
69
|
+
bigint: typeof coerceBigIntSchema;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=schemaRoot.namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaRoot.namespace.d.ts","sourceRoot":"","sources":["../../src/schemaRoot/schemaRoot.namespace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM;IAEjB,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IAGN,IAAI;IACJ,SAAS;IACT,GAAG;IACH,OAAO;IACP,KAAK;IAGL,OAAO;IACP,IAAI;IAGJ,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,GAAG;IACH,GAAG;IAGH,KAAK;IACL,YAAY;IACZ,IAAI;IAGJ,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IAGT,MAAM;QACJ,MAAM;QACN,MAAM;QACN,OAAO;QACP,MAAM;;CAET,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @latticejs/schema/root
|
|
3
|
+
*
|
|
4
|
+
* The schema namespace — primary entry point for creating schemas.
|
|
5
|
+
*/
|
|
6
|
+
import { stringSchema } from "../schemaPrimitives/index.js";
|
|
7
|
+
import { numberSchema } from "../schemaPrimitives/index.js";
|
|
8
|
+
import { booleanSchema } from "../schemaPrimitives/index.js";
|
|
9
|
+
import { literalSchema } from "../schemaPrimitives/index.js";
|
|
10
|
+
import { nullSchema, undefinedSchema, anySchema, unknownSchema, neverSchema, } from "../schemaPrimitives/index.js";
|
|
11
|
+
import { objectSchema } from "../schemaStructures/index.js";
|
|
12
|
+
import { arraySchema } from "../schemaStructures/index.js";
|
|
13
|
+
import { tupleSchema } from "../schemaStructures/index.js";
|
|
14
|
+
import { recordSchema } from "../schemaStructures/index.js";
|
|
15
|
+
import { mapSchema, setSchema } from "../schemaStructures/index.js";
|
|
16
|
+
import { unionSchema } from "../schemaComposition/index.js";
|
|
17
|
+
import { intersectionSchema } from "../schemaComposition/index.js";
|
|
18
|
+
import { lazySchema } from "../schemaComposition/index.js";
|
|
19
|
+
import { enumSchema } from "../schemaComposition/index.js";
|
|
20
|
+
import { optionalSchema, nullableSchema, } from "../schemaModifiers/index.js";
|
|
21
|
+
import { defaultSchema } from "../schemaModifiers/index.js";
|
|
22
|
+
import { refineSchema } from "../schemaModifiers/index.js";
|
|
23
|
+
import { transformSchema } from "../schemaModifiers/index.js";
|
|
24
|
+
import { coerceNumberSchema, coerceBooleanSchema, coerceStringSchema, coerceBigIntSchema, } from "../schemaCoerce/index.js";
|
|
25
|
+
/**
|
|
26
|
+
* The schema namespace — primary API for creating schemas.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* import { schema } from "@latticejs/schema";
|
|
30
|
+
*
|
|
31
|
+
* const UserSchema = schema.object({
|
|
32
|
+
* id: schema.string().uuid(),
|
|
33
|
+
* name: schema.string().min(2),
|
|
34
|
+
* email: schema.string().email(),
|
|
35
|
+
* age: schema.number().int().min(0).optional(),
|
|
36
|
+
* });
|
|
37
|
+
*/
|
|
38
|
+
export const schema = {
|
|
39
|
+
// Primitives
|
|
40
|
+
string: stringSchema,
|
|
41
|
+
number: numberSchema,
|
|
42
|
+
boolean: booleanSchema,
|
|
43
|
+
bigint: () => { throw new Error("BigInt schema not yet implemented"); },
|
|
44
|
+
symbol: () => { throw new Error("Symbol schema not yet implemented"); },
|
|
45
|
+
// Sentinels
|
|
46
|
+
null: nullSchema,
|
|
47
|
+
undefined: undefinedSchema,
|
|
48
|
+
any: anySchema,
|
|
49
|
+
unknown: unknownSchema,
|
|
50
|
+
never: neverSchema,
|
|
51
|
+
// Literals and enums
|
|
52
|
+
literal: literalSchema,
|
|
53
|
+
enum: enumSchema,
|
|
54
|
+
// Structures
|
|
55
|
+
object: objectSchema,
|
|
56
|
+
array: arraySchema,
|
|
57
|
+
tuple: tupleSchema,
|
|
58
|
+
record: recordSchema,
|
|
59
|
+
map: mapSchema,
|
|
60
|
+
set: setSchema,
|
|
61
|
+
// Composition
|
|
62
|
+
union: unionSchema,
|
|
63
|
+
intersection: intersectionSchema,
|
|
64
|
+
lazy: lazySchema,
|
|
65
|
+
// Modifiers
|
|
66
|
+
optional: optionalSchema,
|
|
67
|
+
nullable: nullableSchema,
|
|
68
|
+
default: defaultSchema,
|
|
69
|
+
refine: refineSchema,
|
|
70
|
+
transform: transformSchema,
|
|
71
|
+
// Coercion
|
|
72
|
+
coerce: {
|
|
73
|
+
string: coerceStringSchema,
|
|
74
|
+
number: coerceNumberSchema,
|
|
75
|
+
boolean: coerceBooleanSchema,
|
|
76
|
+
bigint: coerceBigIntSchema,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=schemaRoot.namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaRoot.namespace.js","sourceRoot":"","sources":["../../src/schemaRoot/schemaRoot.namespace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,GACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,aAAa;IACb,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC;IAEvE,YAAY;IACZ,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,eAAe;IAC1B,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;IAElB,qBAAqB;IACrB,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,UAAU;IAEhB,aAAa;IACb,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IAEd,cAAc;IACd,KAAK,EAAE,WAAW;IAClB,YAAY,EAAE,kBAAkB;IAChC,IAAI,EAAE,UAAU;IAEhB,YAAY;IACZ,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,eAAe;IAE1B,WAAW;IACX,MAAM,EAAE;QACN,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,kBAAkB;KAC3B;CACF,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @oyinlola141/lattice-schema/structures
|
|
3
|
+
*
|
|
4
|
+
* Complex schema types: object, array, tuple, record, map, set.
|
|
5
|
+
*/
|
|
6
|
+
export { ObjectSchema, OptionalSchema, objectSchema } from "./schemaObject.core.js";
|
|
7
|
+
export type { SchemaShape } from "./schemaObject.core.js";
|
|
8
|
+
export { ArraySchema, arraySchema } from "./schemaArray.core.js";
|
|
9
|
+
export { TupleSchema, tupleSchema } from "./schemaTuple.core.js";
|
|
10
|
+
export { RecordSchema, recordSchema } from "./schemaRecord.core.js";
|
|
11
|
+
export { MapSchema, SetSchema, mapSchema, setSchema } from "./schemaMapSet.core.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemaStructures/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpF,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @latticejs/schema/structures
|
|
3
|
+
*
|
|
4
|
+
* Complex schema types: object, array, tuple, record, map, set.
|
|
5
|
+
*/
|
|
6
|
+
export { ObjectSchema, OptionalSchema, objectSchema } from "./schemaObject.core.js";
|
|
7
|
+
export { ArraySchema, arraySchema } from "./schemaArray.core.js";
|
|
8
|
+
export { TupleSchema, tupleSchema } from "./schemaTuple.core.js";
|
|
9
|
+
export { RecordSchema, recordSchema } from "./schemaRecord.core.js";
|
|
10
|
+
export { MapSchema, SetSchema, mapSchema, setSchema } from "./schemaMapSet.core.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemaStructures/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @oyinlola141/lattice-schema/structures/array
|
|
3
|
+
*
|
|
4
|
+
* Array schema with item validation and length constraints.
|
|
5
|
+
*/
|
|
6
|
+
import { Schema } from "../schemaBase/index.js";
|
|
7
|
+
import type { SchemaParseContext } from "../schemaBase/index.js";
|
|
8
|
+
/** Configuration for array schema. */
|
|
9
|
+
interface ArraySchemaConfig<T> {
|
|
10
|
+
readonly itemSchema: Schema<T>;
|
|
11
|
+
readonly min?: number;
|
|
12
|
+
readonly max?: number;
|
|
13
|
+
readonly length?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Schema for array values.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ArraySchema<TOutput> extends Schema<TOutput[]> {
|
|
19
|
+
readonly _type = "array";
|
|
20
|
+
private readonly _config;
|
|
21
|
+
constructor(config: ArraySchemaConfig<TOutput>);
|
|
22
|
+
_parse(ctx: SchemaParseContext, input: unknown): TOutput[];
|
|
23
|
+
private _validateLength;
|
|
24
|
+
/** Minimum number of items (inclusive). */
|
|
25
|
+
min(min: number): ArraySchema<TOutput>;
|
|
26
|
+
/** Maximum number of items (inclusive). */
|
|
27
|
+
max(max: number): ArraySchema<TOutput>;
|
|
28
|
+
/** Exact number of items. */
|
|
29
|
+
length(length: number): ArraySchema<TOutput>;
|
|
30
|
+
/** Array must have at least one item. */
|
|
31
|
+
nonempty(): ArraySchema<TOutput>;
|
|
32
|
+
}
|
|
33
|
+
/** Creates an array schema from an item schema. */
|
|
34
|
+
export declare function arraySchema<T>(itemSchema: Schema<T>): ArraySchema<T>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=schemaArray.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaArray.core.d.ts","sourceRoot":"","sources":["../../src/schemaStructures/schemaArray.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,sCAAsC;AACtC,UAAU,iBAAiB,CAAC,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,WAAW,CAAC,OAAO,CAAE,SAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;IACzD,SAAgB,KAAK,WAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD,YAAY,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAG7C;IAEM,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CA8BhE;IAED,OAAO,CAAC,eAAe;IAwCvB,2CAA2C;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAE5C;IAED,2CAA2C;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAE5C;IAED,6BAA6B;IACtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAElD;IAED,yCAAyC;IAClC,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,CAEtC;CACF;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEpE"}
|