@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.
Files changed (143) hide show
  1. package/README.md +19 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/index.d.ts +40 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +37 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/schemaBase/index.d.ts +10 -0
  8. package/dist/schemaBase/index.d.ts.map +1 -0
  9. package/dist/schemaBase/index.js +9 -0
  10. package/dist/schemaBase/index.js.map +1 -0
  11. package/dist/schemaBase/schemaBase.context.d.ts +17 -0
  12. package/dist/schemaBase/schemaBase.context.d.ts.map +1 -0
  13. package/dist/schemaBase/schemaBase.context.js +44 -0
  14. package/dist/schemaBase/schemaBase.context.js.map +1 -0
  15. package/dist/schemaBase/schemaBase.core.d.ts +52 -0
  16. package/dist/schemaBase/schemaBase.core.d.ts.map +1 -0
  17. package/dist/schemaBase/schemaBase.core.js +99 -0
  18. package/dist/schemaBase/schemaBase.core.js.map +1 -0
  19. package/dist/schemaBase/schemaBase.result.d.ts +17 -0
  20. package/dist/schemaBase/schemaBase.result.d.ts.map +1 -0
  21. package/dist/schemaBase/schemaBase.result.js +29 -0
  22. package/dist/schemaBase/schemaBase.result.js.map +1 -0
  23. package/dist/schemaBase/schemaBase.type.d.ts +57 -0
  24. package/dist/schemaBase/schemaBase.type.d.ts.map +1 -0
  25. package/dist/schemaBase/schemaBase.type.js +7 -0
  26. package/dist/schemaBase/schemaBase.type.js.map +1 -0
  27. package/dist/schemaCoerce/index.d.ts +7 -0
  28. package/dist/schemaCoerce/index.d.ts.map +1 -0
  29. package/dist/schemaCoerce/index.js +7 -0
  30. package/dist/schemaCoerce/index.js.map +1 -0
  31. package/dist/schemaCoerce/schemaCoerce.core.d.ts +48 -0
  32. package/dist/schemaCoerce/schemaCoerce.core.d.ts.map +1 -0
  33. package/dist/schemaCoerce/schemaCoerce.core.js +126 -0
  34. package/dist/schemaCoerce/schemaCoerce.core.js.map +1 -0
  35. package/dist/schemaComposition/index.d.ts +10 -0
  36. package/dist/schemaComposition/index.d.ts.map +1 -0
  37. package/dist/schemaComposition/index.js +10 -0
  38. package/dist/schemaComposition/index.js.map +1 -0
  39. package/dist/schemaComposition/schemaEnum.core.d.ts +21 -0
  40. package/dist/schemaComposition/schemaEnum.core.d.ts.map +1 -0
  41. package/dist/schemaComposition/schemaEnum.core.js +41 -0
  42. package/dist/schemaComposition/schemaEnum.core.js.map +1 -0
  43. package/dist/schemaComposition/schemaIntersection.core.d.ts +21 -0
  44. package/dist/schemaComposition/schemaIntersection.core.d.ts.map +1 -0
  45. package/dist/schemaComposition/schemaIntersection.core.js +54 -0
  46. package/dist/schemaComposition/schemaIntersection.core.js.map +1 -0
  47. package/dist/schemaComposition/schemaLazy.core.d.ts +22 -0
  48. package/dist/schemaComposition/schemaLazy.core.d.ts.map +1 -0
  49. package/dist/schemaComposition/schemaLazy.core.js +33 -0
  50. package/dist/schemaComposition/schemaLazy.core.js.map +1 -0
  51. package/dist/schemaComposition/schemaUnion.core.d.ts +32 -0
  52. package/dist/schemaComposition/schemaUnion.core.d.ts.map +1 -0
  53. package/dist/schemaComposition/schemaUnion.core.js +89 -0
  54. package/dist/schemaComposition/schemaUnion.core.js.map +1 -0
  55. package/dist/schemaInference/index.d.ts +7 -0
  56. package/dist/schemaInference/index.d.ts.map +1 -0
  57. package/dist/schemaInference/index.js +7 -0
  58. package/dist/schemaInference/index.js.map +1 -0
  59. package/dist/schemaInference/schemaInfer.type.d.ts +27 -0
  60. package/dist/schemaInference/schemaInfer.type.d.ts.map +1 -0
  61. package/dist/schemaInference/schemaInfer.type.js +7 -0
  62. package/dist/schemaInference/schemaInfer.type.js.map +1 -0
  63. package/dist/schemaModifiers/index.d.ts +10 -0
  64. package/dist/schemaModifiers/index.d.ts.map +1 -0
  65. package/dist/schemaModifiers/index.js +10 -0
  66. package/dist/schemaModifiers/index.js.map +1 -0
  67. package/dist/schemaModifiers/schemaDefault.core.d.ts +20 -0
  68. package/dist/schemaModifiers/schemaDefault.core.d.ts.map +1 -0
  69. package/dist/schemaModifiers/schemaDefault.core.js +33 -0
  70. package/dist/schemaModifiers/schemaDefault.core.js.map +1 -0
  71. package/dist/schemaModifiers/schemaOptionalNullable.core.d.ts +30 -0
  72. package/dist/schemaModifiers/schemaOptionalNullable.core.d.ts.map +1 -0
  73. package/dist/schemaModifiers/schemaOptionalNullable.core.js +47 -0
  74. package/dist/schemaModifiers/schemaOptionalNullable.core.js.map +1 -0
  75. package/dist/schemaModifiers/schemaRefine.core.d.ts +21 -0
  76. package/dist/schemaModifiers/schemaRefine.core.d.ts.map +1 -0
  77. package/dist/schemaModifiers/schemaRefine.core.js +40 -0
  78. package/dist/schemaModifiers/schemaRefine.core.js.map +1 -0
  79. package/dist/schemaModifiers/schemaTransform.core.d.ts +20 -0
  80. package/dist/schemaModifiers/schemaTransform.core.d.ts.map +1 -0
  81. package/dist/schemaModifiers/schemaTransform.core.js +40 -0
  82. package/dist/schemaModifiers/schemaTransform.core.js.map +1 -0
  83. package/dist/schemaPrimitives/index.d.ts +12 -0
  84. package/dist/schemaPrimitives/index.d.ts.map +1 -0
  85. package/dist/schemaPrimitives/index.js +12 -0
  86. package/dist/schemaPrimitives/index.js.map +1 -0
  87. package/dist/schemaPrimitives/schemaBoolean.core.d.ts +26 -0
  88. package/dist/schemaPrimitives/schemaBoolean.core.d.ts.map +1 -0
  89. package/dist/schemaPrimitives/schemaBoolean.core.js +47 -0
  90. package/dist/schemaPrimitives/schemaBoolean.core.js.map +1 -0
  91. package/dist/schemaPrimitives/schemaLiteral.core.d.ts +19 -0
  92. package/dist/schemaPrimitives/schemaLiteral.core.d.ts.map +1 -0
  93. package/dist/schemaPrimitives/schemaLiteral.core.js +37 -0
  94. package/dist/schemaPrimitives/schemaLiteral.core.js.map +1 -0
  95. package/dist/schemaPrimitives/schemaNumber.core.d.ts +62 -0
  96. package/dist/schemaPrimitives/schemaNumber.core.d.ts.map +1 -0
  97. package/dist/schemaPrimitives/schemaNumber.core.js +191 -0
  98. package/dist/schemaPrimitives/schemaNumber.core.js.map +1 -0
  99. package/dist/schemaPrimitives/schemaSentinel.core.d.ts +53 -0
  100. package/dist/schemaPrimitives/schemaSentinel.core.d.ts.map +1 -0
  101. package/dist/schemaPrimitives/schemaSentinel.core.js +101 -0
  102. package/dist/schemaPrimitives/schemaSentinel.core.js.map +1 -0
  103. package/dist/schemaPrimitives/schemaString.core.d.ts +74 -0
  104. package/dist/schemaPrimitives/schemaString.core.d.ts.map +1 -0
  105. package/dist/schemaPrimitives/schemaString.core.js +208 -0
  106. package/dist/schemaPrimitives/schemaString.core.js.map +1 -0
  107. package/dist/schemaPrimitives/schemaTransform.core.d.ts +13 -0
  108. package/dist/schemaPrimitives/schemaTransform.core.d.ts.map +1 -0
  109. package/dist/schemaPrimitives/schemaTransform.core.js +31 -0
  110. package/dist/schemaPrimitives/schemaTransform.core.js.map +1 -0
  111. package/dist/schemaRoot/index.d.ts +7 -0
  112. package/dist/schemaRoot/index.d.ts.map +1 -0
  113. package/dist/schemaRoot/index.js +7 -0
  114. package/dist/schemaRoot/index.js.map +1 -0
  115. package/dist/schemaRoot/schemaRoot.namespace.d.ts +72 -0
  116. package/dist/schemaRoot/schemaRoot.namespace.d.ts.map +1 -0
  117. package/dist/schemaRoot/schemaRoot.namespace.js +79 -0
  118. package/dist/schemaRoot/schemaRoot.namespace.js.map +1 -0
  119. package/dist/schemaStructures/index.d.ts +12 -0
  120. package/dist/schemaStructures/index.d.ts.map +1 -0
  121. package/dist/schemaStructures/index.js +11 -0
  122. package/dist/schemaStructures/index.js.map +1 -0
  123. package/dist/schemaStructures/schemaArray.core.d.ts +36 -0
  124. package/dist/schemaStructures/schemaArray.core.d.ts.map +1 -0
  125. package/dist/schemaStructures/schemaArray.core.js +105 -0
  126. package/dist/schemaStructures/schemaArray.core.js.map +1 -0
  127. package/dist/schemaStructures/schemaMapSet.core.d.ts +31 -0
  128. package/dist/schemaStructures/schemaMapSet.core.d.ts.map +1 -0
  129. package/dist/schemaStructures/schemaMapSet.core.js +77 -0
  130. package/dist/schemaStructures/schemaMapSet.core.js.map +1 -0
  131. package/dist/schemaStructures/schemaObject.core.d.ts +66 -0
  132. package/dist/schemaStructures/schemaObject.core.d.ts.map +1 -0
  133. package/dist/schemaStructures/schemaObject.core.js +184 -0
  134. package/dist/schemaStructures/schemaObject.core.js.map +1 -0
  135. package/dist/schemaStructures/schemaRecord.core.d.ts +20 -0
  136. package/dist/schemaStructures/schemaRecord.core.d.ts.map +1 -0
  137. package/dist/schemaStructures/schemaRecord.core.js +66 -0
  138. package/dist/schemaStructures/schemaRecord.core.js.map +1 -0
  139. package/dist/schemaStructures/schemaTuple.core.d.ts +24 -0
  140. package/dist/schemaStructures/schemaTuple.core.d.ts.map +1 -0
  141. package/dist/schemaStructures/schemaTuple.core.js +60 -0
  142. package/dist/schemaStructures/schemaTuple.core.js.map +1 -0
  143. 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,7 @@
1
+ /**
2
+ * @oyinlola141/lattice-schema/root
3
+ *
4
+ * The schema namespace entry point.
5
+ */
6
+ export { schema } from "./schemaRoot.namespace.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -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,7 @@
1
+ /**
2
+ * @latticejs/schema/root
3
+ *
4
+ * The schema namespace entry point.
5
+ */
6
+ export { schema } from "./schemaRoot.namespace.js";
7
+ //# sourceMappingURL=index.js.map
@@ -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"}