@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,40 @@
1
+ /**
2
+ * @latticejs/schema/modifiers/transform
3
+ *
4
+ * Transform modifier — applies a transformation function to validated output.
5
+ */
6
+ import { Schema } from "../schemaBase/index.js";
7
+ import { addIssue } from "../schemaBase/index.js";
8
+ import { SchemaIssueCode } from "@latticejs/constants";
9
+ /**
10
+ * Schema that transforms the output of an inner schema.
11
+ */
12
+ export class TransformModifierSchema extends Schema {
13
+ _inner;
14
+ _fn;
15
+ _type = "transform";
16
+ constructor(_inner, _fn) {
17
+ super();
18
+ this._inner = _inner;
19
+ this._fn = _fn;
20
+ }
21
+ _parse(ctx, input) {
22
+ const value = this._inner._parse(ctx, input);
23
+ try {
24
+ return this._fn(value);
25
+ }
26
+ catch (error) {
27
+ addIssue(ctx, {
28
+ code: SchemaIssueCode.TRANSFORM_FAILED,
29
+ path: [...ctx.path],
30
+ message: `Transform failed: ${String(error)}`,
31
+ });
32
+ throw new Error("Validation failed");
33
+ }
34
+ }
35
+ }
36
+ /** Adds a transformation to a schema. */
37
+ export function transformSchema(schema, fn) {
38
+ return new TransformModifierSchema(schema, fn);
39
+ }
40
+ //# sourceMappingURL=schemaTransform.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaTransform.core.js","sourceRoot":"","sources":["../../src/schemaModifiers/schemaTransform.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,uBAAyC,SAAQ,MAAuB;IAIhE,MAAM;IACN,GAAG;IAJN,KAAK,GAAG,WAAW,CAAC;IAEpC,YACmB,MAAsB,EACtB,GAA+B;QAEhD,KAAK,EAAE,CAAC;sBAHS,MAAM;mBACN,GAAG;IAGtB,CAAC;IAEM,MAAM,CAAC,GAAuB,EAAE,KAAa;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7C,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;AAED,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,EAA8B;IAE9B,OAAO,IAAI,uBAAuB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @oyinlola141/lattice-schema/primitives
3
+ *
4
+ * Primitive schema types: string, number, boolean, null, undefined, literal, any, unknown, never.
5
+ */
6
+ export { StringSchema, stringSchema } from "./schemaString.core.js";
7
+ export { TransformSchema } from "./schemaTransform.core.js";
8
+ export { NumberSchema, numberSchema } from "./schemaNumber.core.js";
9
+ export { BooleanSchema, booleanSchema } from "./schemaBoolean.core.js";
10
+ export { LiteralSchema, literalSchema } from "./schemaLiteral.core.js";
11
+ export { NullSchema, UndefinedSchema, AnySchema, UnknownSchema, NeverSchema, nullSchema, undefinedSchema, anySchema, unknownSchema, neverSchema, } from "./schemaSentinel.core.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemaPrimitives/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,GACZ,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @latticejs/schema/primitives
3
+ *
4
+ * Primitive schema types: string, number, boolean, null, undefined, literal, any, unknown, never.
5
+ */
6
+ export { StringSchema, stringSchema } from "./schemaString.core.js";
7
+ export { TransformSchema } from "./schemaTransform.core.js";
8
+ export { NumberSchema, numberSchema } from "./schemaNumber.core.js";
9
+ export { BooleanSchema, booleanSchema } from "./schemaBoolean.core.js";
10
+ export { LiteralSchema, literalSchema } from "./schemaLiteral.core.js";
11
+ export { NullSchema, UndefinedSchema, AnySchema, UnknownSchema, NeverSchema, nullSchema, undefinedSchema, anySchema, unknownSchema, neverSchema, } from "./schemaSentinel.core.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemaPrimitives/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,WAAW,GACZ,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @oyinlola141/lattice-schema/primitives/boolean
3
+ *
4
+ * Boolean schema with optional coercion.
5
+ */
6
+ import { Schema } from "../schemaBase/index.js";
7
+ import type { SchemaParseContext } from "../schemaBase/index.js";
8
+ /** Configuration for boolean schema. */
9
+ interface BooleanSchemaConfig {
10
+ readonly coerce?: boolean;
11
+ }
12
+ /**
13
+ * Schema for boolean values.
14
+ */
15
+ export declare class BooleanSchema extends Schema<boolean> {
16
+ readonly _type = "boolean";
17
+ private readonly _config;
18
+ constructor(config?: BooleanSchemaConfig);
19
+ _parse(ctx: SchemaParseContext, input: unknown): boolean;
20
+ /** Enables coercion from string/number to boolean. */
21
+ coerce(): BooleanSchema;
22
+ }
23
+ /** Creates a boolean schema. */
24
+ export declare function booleanSchema(): BooleanSchema;
25
+ export {};
26
+ //# sourceMappingURL=schemaBoolean.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaBoolean.core.d.ts","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaBoolean.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,wCAAwC;AACxC,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,MAAM,CAAC,OAAO,CAAC;IAChD,SAAgB,KAAK,aAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C,YAAY,MAAM,GAAE,mBAAwB,EAG3C;IAEM,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAkB9D;IAED,sDAAsD;IAC/C,MAAM,IAAI,aAAa,CAE7B;CACF;AAED,gCAAgC;AAChC,wBAAgB,aAAa,IAAI,aAAa,CAE7C"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @latticejs/schema/primitives/boolean
3
+ *
4
+ * Boolean schema with optional coercion.
5
+ */
6
+ import { Schema } from "../schemaBase/index.js";
7
+ import { addIssue } from "../schemaBase/index.js";
8
+ import { SchemaIssueCode } from "@latticejs/constants";
9
+ /**
10
+ * Schema for boolean values.
11
+ */
12
+ export class BooleanSchema extends Schema {
13
+ _type = "boolean";
14
+ _config;
15
+ constructor(config = {}) {
16
+ super();
17
+ this._config = config;
18
+ }
19
+ _parse(ctx, input) {
20
+ if (typeof input === "boolean") {
21
+ return input;
22
+ }
23
+ if (this._config.coerce) {
24
+ if (input === "true" || input === 1)
25
+ return true;
26
+ if (input === "false" || input === 0)
27
+ return false;
28
+ }
29
+ addIssue(ctx, {
30
+ code: SchemaIssueCode.INVALID_TYPE,
31
+ path: [...ctx.path],
32
+ message: `Expected boolean, received ${typeof input}`,
33
+ expected: "boolean",
34
+ received: typeof input,
35
+ });
36
+ throw new Error("Validation failed");
37
+ }
38
+ /** Enables coercion from string/number to boolean. */
39
+ coerce() {
40
+ return new BooleanSchema({ coerce: true });
41
+ }
42
+ }
43
+ /** Creates a boolean schema. */
44
+ export function booleanSchema() {
45
+ return new BooleanSchema();
46
+ }
47
+ //# sourceMappingURL=schemaBoolean.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaBoolean.core.js","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaBoolean.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;AAOvD;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,MAAe;IAChC,KAAK,GAAG,SAAS,CAAC;IACjB,OAAO,CAAsB;IAE9C,YAAY,MAAM,GAAwB,EAAE;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEM,MAAM,CAAC,GAAuB,EAAE,KAAc;QACnD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACjD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;QACrD,CAAC;QAED,QAAQ,CAAC,GAAG,EAAE;YACZ,IAAI,EAAE,eAAe,CAAC,YAAY;YAClC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,8BAA8B,OAAO,KAAK,EAAE;YACrD,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,OAAO,KAAK;SACvB,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,sDAAsD;IAC/C,MAAM;QACX,OAAO,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,gCAAgC;AAChC,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @oyinlola141/lattice-schema/primitives/literal
3
+ *
4
+ * Literal schema for exact value matching.
5
+ */
6
+ import { Schema } from "../schemaBase/index.js";
7
+ import type { SchemaParseContext } from "../schemaBase/index.js";
8
+ /**
9
+ * Schema for a specific literal value.
10
+ */
11
+ export declare class LiteralSchema<T extends string | number | boolean | null> extends Schema<T> {
12
+ private readonly _expected;
13
+ readonly _type = "literal";
14
+ constructor(_expected: T);
15
+ _parse(_ctx: SchemaParseContext, input: unknown): T;
16
+ }
17
+ /** Creates a literal schema. */
18
+ export declare function literalSchema<T extends string | number | boolean | null>(value: T): LiteralSchema<T>;
19
+ //# sourceMappingURL=schemaLiteral.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaLiteral.core.d.ts","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaLiteral.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE;;GAEG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAG1E,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,SAAgB,KAAK,aAAa;IAElC,YAA6B,SAAS,EAAE,CAAC,EAExC;IAEM,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAYzD;CACF;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAEpG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @latticejs/schema/primitives/literal
3
+ *
4
+ * Literal schema for exact value matching.
5
+ */
6
+ import { Schema } from "../schemaBase/index.js";
7
+ import { addIssue } from "../schemaBase/index.js";
8
+ import { SchemaIssueCode } from "@latticejs/constants";
9
+ /**
10
+ * Schema for a specific literal value.
11
+ */
12
+ export class LiteralSchema extends Schema {
13
+ _expected;
14
+ _type = "literal";
15
+ constructor(_expected) {
16
+ super();
17
+ this._expected = _expected;
18
+ }
19
+ _parse(_ctx, input) {
20
+ if (input !== this._expected) {
21
+ addIssue(_ctx, {
22
+ code: SchemaIssueCode.INVALID_LITERAL,
23
+ path: [..._ctx.path],
24
+ message: `Expected ${JSON.stringify(this._expected)}, received ${JSON.stringify(input)}`,
25
+ expected: JSON.stringify(this._expected),
26
+ received: JSON.stringify(input),
27
+ });
28
+ throw new Error("Validation failed");
29
+ }
30
+ return this._expected;
31
+ }
32
+ }
33
+ /** Creates a literal schema. */
34
+ export function literalSchema(value) {
35
+ return new LiteralSchema(value);
36
+ }
37
+ //# sourceMappingURL=schemaLiteral.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaLiteral.core.js","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaLiteral.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,aAA0D,SAAQ,MAAS;IAGzD,SAAS;IAFtB,KAAK,GAAG,SAAS,CAAC;IAElC,YAA6B,SAAY;QACvC,KAAK,EAAE,CAAC;yBADmB,SAAS;IAEtC,CAAC;IAEM,MAAM,CAAC,IAAwB,EAAE,KAAc;QACpD,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,EAAE;gBACb,IAAI,EAAE,eAAe,CAAC,eAAe;gBACrC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACxF,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;gBACxC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAChC,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAED,gCAAgC;AAChC,MAAM,UAAU,aAAa,CAA6C,KAAQ;IAChF,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @oyinlola141/lattice-schema/primitives/number
3
+ *
4
+ * Number schema with constraints 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 number schema constraints. */
10
+ interface NumberSchemaConfig {
11
+ readonly min?: number;
12
+ readonly max?: number;
13
+ readonly int?: boolean;
14
+ readonly positive?: boolean;
15
+ readonly negative?: boolean;
16
+ readonly finite?: boolean;
17
+ readonly multipleOf?: number;
18
+ readonly gt?: number;
19
+ readonly lt?: number;
20
+ }
21
+ /**
22
+ * Schema for number values with optional constraints.
23
+ */
24
+ export declare class NumberSchema extends Schema<number> {
25
+ readonly _type = "number";
26
+ private readonly _config;
27
+ constructor(config?: NumberSchemaConfig);
28
+ _parse(ctx: SchemaParseContext, input: unknown): number;
29
+ private _validateConstraints;
30
+ /** Minimum value (inclusive). */
31
+ min(min: number): NumberSchema;
32
+ /** Maximum value (inclusive). */
33
+ max(max: number): NumberSchema;
34
+ /** Must be an integer. */
35
+ int(): NumberSchema;
36
+ /** Must be positive (> 0). */
37
+ positive(): NumberSchema;
38
+ /** Must be negative (< 0). */
39
+ negative(): NumberSchema;
40
+ /** Must be finite (not Infinity or -Infinity). */
41
+ finite(): NumberSchema;
42
+ /** Must be a multiple of the given value. */
43
+ multipleOf(n: number): NumberSchema;
44
+ /** Greater than (exclusive). */
45
+ gt(n: number): NumberSchema;
46
+ /** Less than (exclusive). */
47
+ lt(n: number): NumberSchema;
48
+ /** Makes this schema optional (accepts undefined). */
49
+ optional(): Schema<number | undefined>;
50
+ /** Makes this schema nullable (accepts null). */
51
+ nullable(): Schema<number | null>;
52
+ /** Adds a default value when input is undefined. */
53
+ default(defaultValue: number | (() => number)): Schema<number>;
54
+ /** Adds a custom refinement check. */
55
+ refine(check: (value: number) => boolean, message: string): Schema<number>;
56
+ /** Transforms the number value. */
57
+ transform<TOutput>(fn: (value: number) => TOutput): TransformSchema<number, TOutput>;
58
+ }
59
+ /** Creates a number schema. */
60
+ export declare function numberSchema(): NumberSchema;
61
+ export {};
62
+ //# sourceMappingURL=schemaNumber.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaNumber.core.d.ts","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaNumber.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAM5D,mDAAmD;AACnD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;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,CAc7D;IAED,OAAO,CAAC,oBAAoB;IA+F5B,iCAAiC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAEpC;IAED,iCAAiC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAEpC;IAED,0BAA0B;IACnB,GAAG,IAAI,YAAY,CAEzB;IAED,8BAA8B;IACvB,QAAQ,IAAI,YAAY,CAE9B;IAED,8BAA8B;IACvB,QAAQ,IAAI,YAAY,CAE9B;IAED,kDAAkD;IAC3C,MAAM,IAAI,YAAY,CAE5B;IAED,6CAA6C;IACtC,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAEzC;IAED,gCAAgC;IACzB,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAEjC;IAED,6BAA6B;IACtB,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,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,191 @@
1
+ /**
2
+ * @latticejs/schema/primitives/number
3
+ *
4
+ * Number schema with constraints and transformations.
5
+ */
6
+ import { Schema } from "../schemaBase/index.js";
7
+ import { addIssue } from "../schemaBase/index.js";
8
+ import { SchemaIssueCode } from "@latticejs/constants";
9
+ import { TransformSchema } from "./schemaTransform.core.js";
10
+ import { OptionalModifierSchema } from "../schemaModifiers/schemaOptionalNullable.core.js";
11
+ import { NullableModifierSchema } from "../schemaModifiers/schemaOptionalNullable.core.js";
12
+ import { DefaultSchema } from "../schemaModifiers/schemaDefault.core.js";
13
+ import { RefineSchema } from "../schemaModifiers/schemaRefine.core.js";
14
+ /**
15
+ * Schema for number values with optional constraints.
16
+ */
17
+ export class NumberSchema extends Schema {
18
+ _type = "number";
19
+ _config;
20
+ constructor(config = {}) {
21
+ super();
22
+ this._config = config;
23
+ }
24
+ _parse(ctx, input) {
25
+ if (typeof input !== "number" || Number.isNaN(input)) {
26
+ addIssue(ctx, {
27
+ code: SchemaIssueCode.INVALID_TYPE,
28
+ path: [...ctx.path],
29
+ message: `Expected number, received ${typeof input}`,
30
+ expected: "number",
31
+ received: typeof input,
32
+ });
33
+ throw new Error("Validation failed");
34
+ }
35
+ this._validateConstraints(ctx, input);
36
+ return input;
37
+ }
38
+ _validateConstraints(ctx, value) {
39
+ const c = this._config;
40
+ let failed = false;
41
+ if (c.int && !Number.isInteger(value)) {
42
+ addIssue(ctx, {
43
+ code: SchemaIssueCode.INVALID_NUMBER,
44
+ path: [...ctx.path],
45
+ message: `Expected integer, received ${value}`,
46
+ });
47
+ failed = true;
48
+ }
49
+ if (c.finite && !Number.isFinite(value)) {
50
+ addIssue(ctx, {
51
+ code: SchemaIssueCode.INVALID_NUMBER,
52
+ path: [...ctx.path],
53
+ message: `Expected finite number, received ${value}`,
54
+ });
55
+ failed = true;
56
+ }
57
+ if (c.positive && value <= 0) {
58
+ addIssue(ctx, {
59
+ code: SchemaIssueCode.TOO_SMALL,
60
+ path: [...ctx.path],
61
+ message: `Expected positive number, received ${value}`,
62
+ expected: "> 0",
63
+ received: String(value),
64
+ });
65
+ failed = true;
66
+ }
67
+ if (c.negative && value >= 0) {
68
+ addIssue(ctx, {
69
+ code: SchemaIssueCode.TOO_LARGE,
70
+ path: [...ctx.path],
71
+ message: `Expected negative number, received ${value}`,
72
+ expected: "< 0",
73
+ received: String(value),
74
+ });
75
+ failed = true;
76
+ }
77
+ if (c.min !== undefined && value < c.min) {
78
+ addIssue(ctx, {
79
+ code: SchemaIssueCode.TOO_SMALL,
80
+ path: [...ctx.path],
81
+ message: `Expected >= ${c.min}, received ${value}`,
82
+ expected: `>= ${c.min}`,
83
+ received: String(value),
84
+ });
85
+ failed = true;
86
+ }
87
+ if (c.max !== undefined && value > c.max) {
88
+ addIssue(ctx, {
89
+ code: SchemaIssueCode.TOO_LARGE,
90
+ path: [...ctx.path],
91
+ message: `Expected <= ${c.max}, received ${value}`,
92
+ expected: `<= ${c.max}`,
93
+ received: String(value),
94
+ });
95
+ failed = true;
96
+ }
97
+ if (c.gt !== undefined && value <= c.gt) {
98
+ addIssue(ctx, {
99
+ code: SchemaIssueCode.TOO_SMALL,
100
+ path: [...ctx.path],
101
+ message: `Expected > ${c.gt}, received ${value}`,
102
+ expected: `> ${c.gt}`,
103
+ received: String(value),
104
+ });
105
+ failed = true;
106
+ }
107
+ if (c.lt !== undefined && value >= c.lt) {
108
+ addIssue(ctx, {
109
+ code: SchemaIssueCode.TOO_LARGE,
110
+ path: [...ctx.path],
111
+ message: `Expected < ${c.lt}, received ${value}`,
112
+ expected: `< ${c.lt}`,
113
+ received: String(value),
114
+ });
115
+ failed = true;
116
+ }
117
+ if (c.multipleOf !== undefined && value % c.multipleOf !== 0) {
118
+ addIssue(ctx, {
119
+ code: SchemaIssueCode.INVALID_NUMBER,
120
+ path: [...ctx.path],
121
+ message: `Expected multiple of ${c.multipleOf}, received ${value}`,
122
+ expected: `multiple of ${c.multipleOf}`,
123
+ });
124
+ failed = true;
125
+ }
126
+ if (failed) {
127
+ throw new Error("Validation failed");
128
+ }
129
+ }
130
+ /** Minimum value (inclusive). */
131
+ min(min) {
132
+ return new NumberSchema({ ...this._config, min });
133
+ }
134
+ /** Maximum value (inclusive). */
135
+ max(max) {
136
+ return new NumberSchema({ ...this._config, max });
137
+ }
138
+ /** Must be an integer. */
139
+ int() {
140
+ return new NumberSchema({ ...this._config, int: true });
141
+ }
142
+ /** Must be positive (> 0). */
143
+ positive() {
144
+ return new NumberSchema({ ...this._config, positive: true });
145
+ }
146
+ /** Must be negative (< 0). */
147
+ negative() {
148
+ return new NumberSchema({ ...this._config, negative: true });
149
+ }
150
+ /** Must be finite (not Infinity or -Infinity). */
151
+ finite() {
152
+ return new NumberSchema({ ...this._config, finite: true });
153
+ }
154
+ /** Must be a multiple of the given value. */
155
+ multipleOf(n) {
156
+ return new NumberSchema({ ...this._config, multipleOf: n });
157
+ }
158
+ /** Greater than (exclusive). */
159
+ gt(n) {
160
+ return new NumberSchema({ ...this._config, gt: n });
161
+ }
162
+ /** Less than (exclusive). */
163
+ lt(n) {
164
+ return new NumberSchema({ ...this._config, lt: n });
165
+ }
166
+ /** Makes this schema optional (accepts undefined). */
167
+ optional() {
168
+ return new OptionalModifierSchema(this);
169
+ }
170
+ /** Makes this schema nullable (accepts null). */
171
+ nullable() {
172
+ return new NullableModifierSchema(this);
173
+ }
174
+ /** Adds a default value when input is undefined. */
175
+ default(defaultValue) {
176
+ return new DefaultSchema(this, defaultValue);
177
+ }
178
+ /** Adds a custom refinement check. */
179
+ refine(check, message) {
180
+ return new RefineSchema(this, check, message);
181
+ }
182
+ /** Transforms the number value. */
183
+ transform(fn) {
184
+ return new TransformSchema(this, fn);
185
+ }
186
+ }
187
+ /** Creates a number schema. */
188
+ export function numberSchema() {
189
+ return new NumberSchema();
190
+ }
191
+ //# sourceMappingURL=schemaNumber.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaNumber.core.js","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaNumber.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @oyinlola141/lattice-schema/primitives/sentinel
3
+ *
4
+ * Schemas for null, undefined, unknown, any, and never types.
5
+ */
6
+ import { Schema } from "../schemaBase/index.js";
7
+ import type { SchemaParseContext } from "../schemaBase/index.js";
8
+ /**
9
+ * Schema that only accepts null.
10
+ */
11
+ export declare class NullSchema extends Schema<null> {
12
+ readonly _type = "null";
13
+ _parse(ctx: SchemaParseContext, input: unknown): null;
14
+ }
15
+ /**
16
+ * Schema that only accepts undefined.
17
+ */
18
+ export declare class UndefinedSchema extends Schema<undefined> {
19
+ readonly _type = "undefined";
20
+ _parse(ctx: SchemaParseContext, input: unknown): undefined;
21
+ }
22
+ /**
23
+ * Schema that accepts any value without validation.
24
+ */
25
+ export declare class AnySchema extends Schema<unknown> {
26
+ readonly _type = "any";
27
+ _parse(_ctx: SchemaParseContext, input: unknown): unknown;
28
+ }
29
+ /**
30
+ * Schema that accepts any value without validation (alias).
31
+ */
32
+ export declare class UnknownSchema extends Schema<unknown> {
33
+ readonly _type = "unknown";
34
+ _parse(_ctx: SchemaParseContext, input: unknown): unknown;
35
+ }
36
+ /**
37
+ * Schema that never accepts any value.
38
+ */
39
+ export declare class NeverSchema extends Schema<never> {
40
+ readonly _type = "never";
41
+ _parse(ctx: SchemaParseContext, input: unknown): never;
42
+ }
43
+ /** Creates a null schema. */
44
+ export declare function nullSchema(): NullSchema;
45
+ /** Creates an undefined schema. */
46
+ export declare function undefinedSchema(): UndefinedSchema;
47
+ /** Creates an any schema. */
48
+ export declare function anySchema(): AnySchema;
49
+ /** Creates an unknown schema. */
50
+ export declare function unknownSchema(): UnknownSchema;
51
+ /** Creates a never schema. */
52
+ export declare function neverSchema(): NeverSchema;
53
+ //# sourceMappingURL=schemaSentinel.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaSentinel.core.d.ts","sourceRoot":"","sources":["../../src/schemaPrimitives/schemaSentinel.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAIjE;;GAEG;AACH,qBAAa,UAAW,SAAQ,MAAM,CAAC,IAAI,CAAC;IAC1C,SAAgB,KAAK,UAAU;IAExB,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAY3D;CACF;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,MAAM,CAAC,SAAS,CAAC;IACpD,SAAgB,KAAK,eAAe;IAE7B,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,CAYhE;CACF;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,MAAM,CAAC,OAAO,CAAC;IAC5C,SAAgB,KAAK,SAAS;IAEvB,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAE/D;CACF;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,MAAM,CAAC,OAAO,CAAC;IAChD,SAAgB,KAAK,aAAa;IAE3B,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAE/D;CACF;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAC;IAC5C,SAAgB,KAAK,WAAW;IAEzB,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,CAS5D;CACF;AAED,6BAA6B;AAC7B,wBAAgB,UAAU,IAAI,UAAU,CAEvC;AAED,mCAAmC;AACnC,wBAAgB,eAAe,IAAI,eAAe,CAEjD;AAED,6BAA6B;AAC7B,wBAAgB,SAAS,IAAI,SAAS,CAErC;AAED,iCAAiC;AACjC,wBAAgB,aAAa,IAAI,aAAa,CAE7C;AAED,8BAA8B;AAC9B,wBAAgB,WAAW,IAAI,WAAW,CAEzC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * @latticejs/schema/primitives/sentinel
3
+ *
4
+ * Schemas for null, undefined, unknown, any, and never types.
5
+ */
6
+ import { Schema } from "../schemaBase/index.js";
7
+ import { addIssue } from "../schemaBase/index.js";
8
+ import { SchemaIssueCode } from "@latticejs/constants";
9
+ /**
10
+ * Schema that only accepts null.
11
+ */
12
+ export class NullSchema extends Schema {
13
+ _type = "null";
14
+ _parse(ctx, input) {
15
+ if (input !== null) {
16
+ addIssue(ctx, {
17
+ code: SchemaIssueCode.INVALID_TYPE,
18
+ path: [...ctx.path],
19
+ message: `Expected null, received ${typeof input}`,
20
+ expected: "null",
21
+ received: typeof input,
22
+ });
23
+ throw new Error("Validation failed");
24
+ }
25
+ return null;
26
+ }
27
+ }
28
+ /**
29
+ * Schema that only accepts undefined.
30
+ */
31
+ export class UndefinedSchema extends Schema {
32
+ _type = "undefined";
33
+ _parse(ctx, input) {
34
+ if (input !== undefined) {
35
+ addIssue(ctx, {
36
+ code: SchemaIssueCode.INVALID_TYPE,
37
+ path: [...ctx.path],
38
+ message: `Expected undefined, received ${typeof input}`,
39
+ expected: "undefined",
40
+ received: typeof input,
41
+ });
42
+ throw new Error("Validation failed");
43
+ }
44
+ return undefined;
45
+ }
46
+ }
47
+ /**
48
+ * Schema that accepts any value without validation.
49
+ */
50
+ export class AnySchema extends Schema {
51
+ _type = "any";
52
+ _parse(_ctx, input) {
53
+ return input;
54
+ }
55
+ }
56
+ /**
57
+ * Schema that accepts any value without validation (alias).
58
+ */
59
+ export class UnknownSchema extends Schema {
60
+ _type = "unknown";
61
+ _parse(_ctx, input) {
62
+ return input;
63
+ }
64
+ }
65
+ /**
66
+ * Schema that never accepts any value.
67
+ */
68
+ export class NeverSchema extends Schema {
69
+ _type = "never";
70
+ _parse(ctx, input) {
71
+ addIssue(ctx, {
72
+ code: SchemaIssueCode.INVALID_TYPE,
73
+ path: [...ctx.path],
74
+ message: `Expected never, received ${typeof input}`,
75
+ expected: "never",
76
+ received: typeof input,
77
+ });
78
+ throw new Error("Validation failed");
79
+ }
80
+ }
81
+ /** Creates a null schema. */
82
+ export function nullSchema() {
83
+ return new NullSchema();
84
+ }
85
+ /** Creates an undefined schema. */
86
+ export function undefinedSchema() {
87
+ return new UndefinedSchema();
88
+ }
89
+ /** Creates an any schema. */
90
+ export function anySchema() {
91
+ return new AnySchema();
92
+ }
93
+ /** Creates an unknown schema. */
94
+ export function unknownSchema() {
95
+ return new UnknownSchema();
96
+ }
97
+ /** Creates a never schema. */
98
+ export function neverSchema() {
99
+ return new NeverSchema();
100
+ }
101
+ //# sourceMappingURL=schemaSentinel.core.js.map