@agentuity/schema 0.0.69

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 (115) hide show
  1. package/AGENTS.md +86 -0
  2. package/README.md +323 -0
  3. package/dist/base.d.ts +111 -0
  4. package/dist/base.d.ts.map +1 -0
  5. package/dist/base.js +93 -0
  6. package/dist/base.js.map +1 -0
  7. package/dist/coerce/boolean.d.ts +37 -0
  8. package/dist/coerce/boolean.d.ts.map +1 -0
  9. package/dist/coerce/boolean.js +49 -0
  10. package/dist/coerce/boolean.js.map +1 -0
  11. package/dist/coerce/date.d.ts +36 -0
  12. package/dist/coerce/date.d.ts.map +1 -0
  13. package/dist/coerce/date.js +60 -0
  14. package/dist/coerce/date.js.map +1 -0
  15. package/dist/coerce/number.d.ts +36 -0
  16. package/dist/coerce/number.d.ts.map +1 -0
  17. package/dist/coerce/number.js +59 -0
  18. package/dist/coerce/number.js.map +1 -0
  19. package/dist/coerce/string.d.ts +35 -0
  20. package/dist/coerce/string.d.ts.map +1 -0
  21. package/dist/coerce/string.js +47 -0
  22. package/dist/coerce/string.js.map +1 -0
  23. package/dist/complex/array.d.ts +56 -0
  24. package/dist/complex/array.d.ts.map +1 -0
  25. package/dist/complex/array.js +96 -0
  26. package/dist/complex/array.js.map +1 -0
  27. package/dist/complex/object.d.ts +76 -0
  28. package/dist/complex/object.d.ts.map +1 -0
  29. package/dist/complex/object.js +104 -0
  30. package/dist/complex/object.js.map +1 -0
  31. package/dist/complex/record.d.ts +53 -0
  32. package/dist/complex/record.d.ts.map +1 -0
  33. package/dist/complex/record.js +109 -0
  34. package/dist/complex/record.js.map +1 -0
  35. package/dist/index.d.ts +151 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +128 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/json-schema.d.ts +60 -0
  40. package/dist/json-schema.d.ts.map +1 -0
  41. package/dist/json-schema.js +280 -0
  42. package/dist/json-schema.js.map +1 -0
  43. package/dist/primitives/any.d.ts +44 -0
  44. package/dist/primitives/any.d.ts.map +1 -0
  45. package/dist/primitives/any.js +57 -0
  46. package/dist/primitives/any.js.map +1 -0
  47. package/dist/primitives/boolean.d.ts +39 -0
  48. package/dist/primitives/boolean.d.ts.map +1 -0
  49. package/dist/primitives/boolean.js +53 -0
  50. package/dist/primitives/boolean.js.map +1 -0
  51. package/dist/primitives/null.d.ts +26 -0
  52. package/dist/primitives/null.d.ts.map +1 -0
  53. package/dist/primitives/null.js +40 -0
  54. package/dist/primitives/null.js.map +1 -0
  55. package/dist/primitives/number.d.ts +87 -0
  56. package/dist/primitives/number.d.ts.map +1 -0
  57. package/dist/primitives/number.js +129 -0
  58. package/dist/primitives/number.js.map +1 -0
  59. package/dist/primitives/string.d.ts +64 -0
  60. package/dist/primitives/string.d.ts.map +1 -0
  61. package/dist/primitives/string.js +102 -0
  62. package/dist/primitives/string.js.map +1 -0
  63. package/dist/primitives/undefined.d.ts +26 -0
  64. package/dist/primitives/undefined.d.ts.map +1 -0
  65. package/dist/primitives/undefined.js +40 -0
  66. package/dist/primitives/undefined.js.map +1 -0
  67. package/dist/primitives/unknown.d.ts +47 -0
  68. package/dist/primitives/unknown.d.ts.map +1 -0
  69. package/dist/primitives/unknown.js +56 -0
  70. package/dist/primitives/unknown.js.map +1 -0
  71. package/dist/utils/literal.d.ts +47 -0
  72. package/dist/utils/literal.d.ts.map +1 -0
  73. package/dist/utils/literal.js +64 -0
  74. package/dist/utils/literal.js.map +1 -0
  75. package/dist/utils/nullable.d.ts +50 -0
  76. package/dist/utils/nullable.d.ts.map +1 -0
  77. package/dist/utils/nullable.js +69 -0
  78. package/dist/utils/nullable.js.map +1 -0
  79. package/dist/utils/optional.d.ts +50 -0
  80. package/dist/utils/optional.d.ts.map +1 -0
  81. package/dist/utils/optional.js +69 -0
  82. package/dist/utils/optional.js.map +1 -0
  83. package/dist/utils/union.d.ts +60 -0
  84. package/dist/utils/union.d.ts.map +1 -0
  85. package/dist/utils/union.js +87 -0
  86. package/dist/utils/union.js.map +1 -0
  87. package/package.json +39 -0
  88. package/src/__tests__/coerce.test.ts +88 -0
  89. package/src/__tests__/complex.test.ts +124 -0
  90. package/src/__tests__/errors.test.ts +129 -0
  91. package/src/__tests__/json-schema.test.ts +138 -0
  92. package/src/__tests__/primitives.test.ts +184 -0
  93. package/src/__tests__/type-inference.test.ts +68 -0
  94. package/src/__tests__/utils.test.ts +100 -0
  95. package/src/base.ts +185 -0
  96. package/src/coerce/boolean.ts +56 -0
  97. package/src/coerce/date.ts +68 -0
  98. package/src/coerce/number.ts +67 -0
  99. package/src/coerce/string.ts +54 -0
  100. package/src/complex/array.ts +108 -0
  101. package/src/complex/object.ts +141 -0
  102. package/src/complex/record.ts +129 -0
  103. package/src/index.ts +177 -0
  104. package/src/json-schema.ts +331 -0
  105. package/src/primitives/any.ts +64 -0
  106. package/src/primitives/boolean.ts +60 -0
  107. package/src/primitives/null.ts +47 -0
  108. package/src/primitives/number.ts +141 -0
  109. package/src/primitives/string.ts +113 -0
  110. package/src/primitives/undefined.ts +47 -0
  111. package/src/primitives/unknown.ts +63 -0
  112. package/src/utils/literal.ts +71 -0
  113. package/src/utils/nullable.ts +80 -0
  114. package/src/utils/optional.ts +80 -0
  115. package/src/utils/union.ts +103 -0
@@ -0,0 +1,129 @@
1
+ import { createIssue, failure, success, createParseMethods } from '../base';
2
+ import { optional } from '../utils/optional';
3
+ import { nullable } from '../utils/nullable';
4
+ const parseMethods = createParseMethods();
5
+ /**
6
+ * Schema for validating number values.
7
+ * Rejects NaN values.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const schema = s.number();
12
+ * const age = schema.parse(30); // 30
13
+ * schema.parse('30'); // throws ValidationError
14
+ * schema.parse(NaN); // throws ValidationError
15
+ * ```
16
+ */
17
+ export class NumberSchema {
18
+ description;
19
+ _finite = false;
20
+ _min;
21
+ _max;
22
+ '~standard' = {
23
+ version: 1,
24
+ vendor: 'agentuity',
25
+ validate: (value) => {
26
+ if (typeof value !== 'number' || Number.isNaN(value)) {
27
+ return failure([createIssue(`Expected number, got ${typeof value}`)]);
28
+ }
29
+ if (this._finite && !Number.isFinite(value)) {
30
+ return failure([createIssue('Expected finite number (not Infinity or -Infinity)')]);
31
+ }
32
+ if (this._min !== undefined && value < this._min) {
33
+ return failure([createIssue(`Expected number >= ${this._min}, got ${value}`)]);
34
+ }
35
+ if (this._max !== undefined && value > this._max) {
36
+ return failure([createIssue(`Expected number <= ${this._max}, got ${value}`)]);
37
+ }
38
+ return success(value);
39
+ },
40
+ types: undefined,
41
+ };
42
+ describe(description) {
43
+ this.description = description;
44
+ return this;
45
+ }
46
+ /**
47
+ * Require the number to be finite (not Infinity, -Infinity, or NaN).
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * const schema = s.number().finite();
52
+ * schema.parse(123); // 123
53
+ * schema.parse(Infinity); // throws ValidationError
54
+ * schema.parse(-Infinity); // throws ValidationError
55
+ * ```
56
+ */
57
+ finite() {
58
+ const clone = this._clone();
59
+ clone._finite = true;
60
+ return clone;
61
+ }
62
+ /**
63
+ * Set minimum value (inclusive).
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * const schema = s.number().min(0);
68
+ * schema.parse(5); // 5
69
+ * schema.parse(-1); // throws ValidationError
70
+ * ```
71
+ */
72
+ min(value) {
73
+ const clone = this._clone();
74
+ clone._min = value;
75
+ return clone;
76
+ }
77
+ /**
78
+ * Set maximum value (inclusive).
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * const schema = s.number().max(100);
83
+ * schema.parse(50); // 50
84
+ * schema.parse(101); // throws ValidationError
85
+ * ```
86
+ */
87
+ max(value) {
88
+ const clone = this._clone();
89
+ clone._max = value;
90
+ return clone;
91
+ }
92
+ optional() {
93
+ return optional(this);
94
+ }
95
+ nullable() {
96
+ return nullable(this);
97
+ }
98
+ _clone() {
99
+ const clone = new NumberSchema();
100
+ clone.description = this.description;
101
+ clone._finite = this._finite;
102
+ clone._min = this._min;
103
+ clone._max = this._max;
104
+ return clone;
105
+ }
106
+ parse = parseMethods.parse;
107
+ safeParse = parseMethods.safeParse;
108
+ }
109
+ /**
110
+ * Create a number schema.
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * const ageSchema = s.number().describe('User age');
115
+ * const age = ageSchema.parse(30);
116
+ *
117
+ * const finiteSchema = s.number().finite();
118
+ * finiteSchema.parse(123); // OK
119
+ * finiteSchema.parse(Infinity); // throws
120
+ *
121
+ * const rangeSchema = s.number().min(0).max(100);
122
+ * rangeSchema.parse(50); // OK
123
+ * rangeSchema.parse(101); // throws
124
+ * ```
125
+ */
126
+ export function number() {
127
+ return new NumberSchema();
128
+ }
129
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/primitives/number.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { Schema } from '../base';
2
+ /**
3
+ * Schema for validating string values.
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * const schema = s.string();
8
+ * const name = schema.parse('John'); // "John"
9
+ * schema.parse(123); // throws ValidationError
10
+ * ```
11
+ */
12
+ export declare class StringSchema implements Schema<string, string> {
13
+ description?: string;
14
+ private _min?;
15
+ private _max?;
16
+ readonly '~standard': {
17
+ version: 1;
18
+ vendor: string;
19
+ validate: (value: unknown) => import("@agentuity/core").StandardSchemaV1.FailureResult | import("@agentuity/core").StandardSchemaV1.SuccessResult<string>;
20
+ types: {
21
+ input: string;
22
+ output: string;
23
+ };
24
+ };
25
+ describe(description: string): this;
26
+ /**
27
+ * Set minimum length.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const schema = s.string().min(3);
32
+ * schema.parse('hello'); // "hello"
33
+ * schema.parse('hi'); // throws ValidationError
34
+ * ```
35
+ */
36
+ min(length: number): StringSchema;
37
+ /**
38
+ * Set maximum length.
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const schema = s.string().max(10);
43
+ * schema.parse('hello'); // "hello"
44
+ * schema.parse('hello world'); // throws ValidationError
45
+ * ```
46
+ */
47
+ max(length: number): StringSchema;
48
+ optional(): import("..").OptionalSchema<this>;
49
+ nullable(): import("..").NullableSchema<this>;
50
+ private _clone;
51
+ parse: (this: Schema<any, string>, value: unknown) => string;
52
+ safeParse: (this: Schema<any, string>, value: unknown) => import("..").SafeParseResult<string>;
53
+ }
54
+ /**
55
+ * Create a string schema.
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const nameSchema = s.string().describe('User name');
60
+ * const name = nameSchema.parse('John');
61
+ * ```
62
+ */
63
+ export declare function string(): StringSchema;
64
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/primitives/string.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAOtC;;;;;;;;;GASG;AACH,qBAAa,YAAa,YAAW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAS;IACtB,OAAO,CAAC,IAAI,CAAC,CAAS;IAEtB,QAAQ,CAAC,WAAW;;;0BAGD,OAAO;eAgBM;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE;MAC/D;IAEF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKnC;;;;;;;;;OASG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAMjC;;;;;;;;;OASG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAMjC,QAAQ;IAIR,QAAQ;IAIR,OAAO,CAAC,MAAM;IAQd,KAAK,wDAAsB;IAC3B,SAAS,sFAA0B;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,IAAI,YAAY,CAErC"}
@@ -0,0 +1,102 @@
1
+ import { createIssue, failure, success, createParseMethods } from '../base';
2
+ import { optional } from '../utils/optional';
3
+ import { nullable } from '../utils/nullable';
4
+ const parseMethods = createParseMethods();
5
+ /**
6
+ * Schema for validating string values.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const schema = s.string();
11
+ * const name = schema.parse('John'); // "John"
12
+ * schema.parse(123); // throws ValidationError
13
+ * ```
14
+ */
15
+ export class StringSchema {
16
+ description;
17
+ _min;
18
+ _max;
19
+ '~standard' = {
20
+ version: 1,
21
+ vendor: 'agentuity',
22
+ validate: (value) => {
23
+ if (typeof value !== 'string') {
24
+ return failure([createIssue(`Expected string, got ${typeof value}`)]);
25
+ }
26
+ if (this._min !== undefined && value.length < this._min) {
27
+ return failure([
28
+ createIssue(`String must be at least ${this._min} characters, got ${value.length}`),
29
+ ]);
30
+ }
31
+ if (this._max !== undefined && value.length > this._max) {
32
+ return failure([
33
+ createIssue(`String must be at most ${this._max} characters, got ${value.length}`),
34
+ ]);
35
+ }
36
+ return success(value);
37
+ },
38
+ types: undefined,
39
+ };
40
+ describe(description) {
41
+ this.description = description;
42
+ return this;
43
+ }
44
+ /**
45
+ * Set minimum length.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const schema = s.string().min(3);
50
+ * schema.parse('hello'); // "hello"
51
+ * schema.parse('hi'); // throws ValidationError
52
+ * ```
53
+ */
54
+ min(length) {
55
+ const clone = this._clone();
56
+ clone._min = length;
57
+ return clone;
58
+ }
59
+ /**
60
+ * Set maximum length.
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const schema = s.string().max(10);
65
+ * schema.parse('hello'); // "hello"
66
+ * schema.parse('hello world'); // throws ValidationError
67
+ * ```
68
+ */
69
+ max(length) {
70
+ const clone = this._clone();
71
+ clone._max = length;
72
+ return clone;
73
+ }
74
+ optional() {
75
+ return optional(this);
76
+ }
77
+ nullable() {
78
+ return nullable(this);
79
+ }
80
+ _clone() {
81
+ const clone = new StringSchema();
82
+ clone.description = this.description;
83
+ clone._min = this._min;
84
+ clone._max = this._max;
85
+ return clone;
86
+ }
87
+ parse = parseMethods.parse;
88
+ safeParse = parseMethods.safeParse;
89
+ }
90
+ /**
91
+ * Create a string schema.
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const nameSchema = s.string().describe('User name');
96
+ * const name = nameSchema.parse('John');
97
+ * ```
98
+ */
99
+ export function string() {
100
+ return new StringSchema();
101
+ }
102
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/primitives/string.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,YAAY,GAAG,kBAAkB,EAAU,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAY;IACxB,WAAW,CAAU;IACb,IAAI,CAAU;IACd,IAAI,CAAU;IAEb,WAAW,GAAG;QACtB,OAAO,EAAE,CAAU;QACnB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE;YAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,OAAO,CAAC,CAAC,WAAW,CAAC,wBAAwB,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzD,OAAO,OAAO,CAAC;oBACd,WAAW,CAAC,2BAA2B,IAAI,CAAC,IAAI,oBAAoB,KAAK,CAAC,MAAM,EAAE,CAAC;iBACnF,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzD,OAAO,OAAO,CAAC;oBACd,WAAW,CAAC,0BAA0B,IAAI,CAAC,IAAI,oBAAoB,KAAK,CAAC,MAAM,EAAE,CAAC;iBAClF,CAAC,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,KAAK,EAAE,SAAyD;KAChE,CAAC;IAEF,QAAQ,CAAC,WAAmB;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;;;OASG;IACH,GAAG,CAAC,MAAc;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,GAAG,CAAC,MAAc;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,QAAQ;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,QAAQ;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEO,MAAM;QACb,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3B,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM;IACrB,OAAO,IAAI,YAAY,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Schema } from '../base';
2
+ /**
3
+ * Schema for validating undefined values.
4
+ */
5
+ export declare class UndefinedSchema implements Schema<undefined, undefined> {
6
+ description?: string;
7
+ readonly '~standard': {
8
+ version: 1;
9
+ vendor: string;
10
+ validate: (value: unknown) => import("@agentuity/core").StandardSchemaV1.FailureResult | import("@agentuity/core").StandardSchemaV1.SuccessResult<undefined>;
11
+ types: {
12
+ input: undefined;
13
+ output: undefined;
14
+ };
15
+ };
16
+ describe(description: string): this;
17
+ optional(): import("..").OptionalSchema<this>;
18
+ nullable(): import("..").NullableSchema<this>;
19
+ parse: (this: Schema<any, undefined>, value: unknown) => undefined;
20
+ safeParse: (this: Schema<any, undefined>, value: unknown) => import("..").SafeParseResult<undefined>;
21
+ }
22
+ /**
23
+ * Create an undefined schema.
24
+ */
25
+ export declare function undefined_(): UndefinedSchema;
26
+ //# sourceMappingURL=undefined.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undefined.d.ts","sourceRoot":"","sources":["../../src/primitives/undefined.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAOtC;;GAEG;AACH,qBAAa,eAAgB,YAAW,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,WAAW;;;0BAGD,OAAO;eAMM;YAAE,KAAK,EAAE,SAAS,CAAC;YAAC,MAAM,EAAE,SAAS,CAAA;SAAE;MACrE;IAEF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKnC,QAAQ;IAIR,QAAQ;IAGR,KAAK,8DAAsB;IAC3B,SAAS,4FAA0B;CACnC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAE5C"}
@@ -0,0 +1,40 @@
1
+ import { createIssue, failure, success, createParseMethods } from '../base';
2
+ import { optional } from '../utils/optional';
3
+ import { nullable } from '../utils/nullable';
4
+ const parseMethods = createParseMethods();
5
+ /**
6
+ * Schema for validating undefined values.
7
+ */
8
+ export class UndefinedSchema {
9
+ description;
10
+ '~standard' = {
11
+ version: 1,
12
+ vendor: 'agentuity',
13
+ validate: (value) => {
14
+ if (value !== undefined) {
15
+ return failure([createIssue(`Expected undefined, got ${typeof value}`)]);
16
+ }
17
+ return success(value);
18
+ },
19
+ types: undefined,
20
+ };
21
+ describe(description) {
22
+ this.description = description;
23
+ return this;
24
+ }
25
+ optional() {
26
+ return optional(this);
27
+ }
28
+ nullable() {
29
+ return nullable(this);
30
+ }
31
+ parse = parseMethods.parse;
32
+ safeParse = parseMethods.safeParse;
33
+ }
34
+ /**
35
+ * Create an undefined schema.
36
+ */
37
+ export function undefined_() {
38
+ return new UndefinedSchema();
39
+ }
40
+ //# sourceMappingURL=undefined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undefined.js","sourceRoot":"","sources":["../../src/primitives/undefined.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,YAAY,GAAG,kBAAkB,EAAa,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,eAAe;IAC3B,WAAW,CAAU;IAEZ,WAAW,GAAG;QACtB,OAAO,EAAE,CAAU;QACnB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE;YAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,KAAK,EAAE,SAA+D;KACtE,CAAC;IAEF,QAAQ,CAAC,WAAmB;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,QAAQ;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,QAAQ;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3B,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACzB,OAAO,IAAI,eAAe,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { Schema } from '../base';
2
+ /**
3
+ * Schema that accepts any value with type-safe unknown.
4
+ * Returns the value as-is without validation.
5
+ * Use this when you want to accept any value but force type checking at usage site.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const schema = s.unknown();
10
+ * const value = schema.parse(123); // unknown
11
+ * const value2 = schema.parse('hello'); // unknown
12
+ * const value3 = schema.parse(null); // unknown
13
+ *
14
+ * // Forces type narrowing
15
+ * if (typeof value === 'string') {
16
+ * console.log(value.toUpperCase());
17
+ * }
18
+ * ```
19
+ */
20
+ export declare class UnknownSchema implements Schema<unknown, unknown> {
21
+ description?: string;
22
+ readonly '~standard': {
23
+ version: 1;
24
+ vendor: string;
25
+ validate: (value: unknown) => import("@agentuity/core").StandardSchemaV1.SuccessResult<unknown>;
26
+ types: {
27
+ input: unknown;
28
+ output: unknown;
29
+ };
30
+ };
31
+ describe(description: string): this;
32
+ optional(): import("..").OptionalSchema<this>;
33
+ nullable(): import("..").NullableSchema<this>;
34
+ parse: (this: Schema<any, unknown>, value: unknown) => unknown;
35
+ safeParse: (this: Schema<any, unknown>, value: unknown) => import("..").SafeParseResult<unknown>;
36
+ }
37
+ /**
38
+ * Create an unknown schema that accepts any value.
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const schema = s.unknown();
43
+ * const value = schema.parse(anything); // Type is unknown
44
+ * ```
45
+ */
46
+ export declare function unknown(): UnknownSchema;
47
+ //# sourceMappingURL=unknown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unknown.d.ts","sourceRoot":"","sources":["../../src/primitives/unknown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAOtC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAc,YAAW,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,WAAW;;;0BAGD,OAAO;eACM;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,OAAO,CAAA;SAAE;MACjE;IAEF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKnC,QAAQ;IAIR,QAAQ;IAGR,KAAK,0DAAsB;IAC3B,SAAS,wFAA0B;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,IAAI,aAAa,CAEvC"}
@@ -0,0 +1,56 @@
1
+ import { success, createParseMethods } from '../base';
2
+ import { optional } from '../utils/optional';
3
+ import { nullable } from '../utils/nullable';
4
+ const parseMethods = createParseMethods();
5
+ /**
6
+ * Schema that accepts any value with type-safe unknown.
7
+ * Returns the value as-is without validation.
8
+ * Use this when you want to accept any value but force type checking at usage site.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const schema = s.unknown();
13
+ * const value = schema.parse(123); // unknown
14
+ * const value2 = schema.parse('hello'); // unknown
15
+ * const value3 = schema.parse(null); // unknown
16
+ *
17
+ * // Forces type narrowing
18
+ * if (typeof value === 'string') {
19
+ * console.log(value.toUpperCase());
20
+ * }
21
+ * ```
22
+ */
23
+ export class UnknownSchema {
24
+ description;
25
+ '~standard' = {
26
+ version: 1,
27
+ vendor: 'agentuity',
28
+ validate: (value) => success(value),
29
+ types: undefined,
30
+ };
31
+ describe(description) {
32
+ this.description = description;
33
+ return this;
34
+ }
35
+ optional() {
36
+ return optional(this);
37
+ }
38
+ nullable() {
39
+ return nullable(this);
40
+ }
41
+ parse = parseMethods.parse;
42
+ safeParse = parseMethods.safeParse;
43
+ }
44
+ /**
45
+ * Create an unknown schema that accepts any value.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const schema = s.unknown();
50
+ * const value = schema.parse(anything); // Type is unknown
51
+ * ```
52
+ */
53
+ export function unknown() {
54
+ return new UnknownSchema();
55
+ }
56
+ //# sourceMappingURL=unknown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unknown.js","sourceRoot":"","sources":["../../src/primitives/unknown.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,YAAY,GAAG,kBAAkB,EAAW,CAAC;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,aAAa;IACzB,WAAW,CAAU;IAEZ,WAAW,GAAG;QACtB,OAAO,EAAE,CAAU;QACnB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5C,KAAK,EAAE,SAA2D;KAClE,CAAC;IAEF,QAAQ,CAAC,WAAmB;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,QAAQ;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,QAAQ;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3B,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO,IAAI,aAAa,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { Schema } from '../base';
2
+ /**
3
+ * Schema for validating exact literal values.
4
+ *
5
+ * @template T - The exact value type
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const adminSchema = s.literal('admin');
10
+ * adminSchema.parse('admin'); // 'admin'
11
+ * adminSchema.parse('user'); // throws ValidationError
12
+ * ```
13
+ */
14
+ export declare class LiteralSchema<T extends string | number | boolean> implements Schema<T, T> {
15
+ private value;
16
+ description?: string;
17
+ private parseMethods;
18
+ constructor(value: T);
19
+ readonly '~standard': {
20
+ version: 1;
21
+ vendor: string;
22
+ validate: (input: unknown) => import("@agentuity/core").StandardSchemaV1.FailureResult | import("@agentuity/core").StandardSchemaV1.SuccessResult<T>;
23
+ types: {
24
+ input: T;
25
+ output: T;
26
+ };
27
+ };
28
+ describe(description: string): this;
29
+ optional(): import("..").OptionalSchema<this>;
30
+ nullable(): import("..").NullableSchema<this>;
31
+ parse: (this: Schema<any, T>, value: unknown) => T;
32
+ safeParse: (this: Schema<any, T>, value: unknown) => import("..").SafeParseResult<T>;
33
+ }
34
+ /**
35
+ * Create a schema for an exact literal value.
36
+ *
37
+ * @param value - The exact value to match
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const adminRole = s.literal('admin');
42
+ * const maxValue = s.literal(100);
43
+ * const enabled = s.literal(true);
44
+ * ```
45
+ */
46
+ export declare function literal<T extends string | number | boolean>(value: T): LiteralSchema<T>;
47
+ //# sourceMappingURL=literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../src/utils/literal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKtC;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,CAAE,YAAW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAI1E,OAAO,CAAC,KAAK;IAHzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,YAAY,CAA2B;gBAE3B,KAAK,EAAE,CAAC;IAE5B,QAAQ,CAAC,WAAW;;;0BAGD,OAAO;eAUM;YAAE,KAAK,EAAE,CAAC,CAAC;YAAC,MAAM,EAAE,CAAC,CAAA;SAAE;MACrD;IAEF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKnC,QAAQ;IAIR,QAAQ;IAIR,KAAK,8CAA2B;IAChC,SAAS,4EAA+B;CACxC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAEvF"}
@@ -0,0 +1,64 @@
1
+ import { createIssue, failure, success, createParseMethods } from '../base';
2
+ import { optional } from '../utils/optional';
3
+ import { nullable } from '../utils/nullable';
4
+ /**
5
+ * Schema for validating exact literal values.
6
+ *
7
+ * @template T - The exact value type
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const adminSchema = s.literal('admin');
12
+ * adminSchema.parse('admin'); // 'admin'
13
+ * adminSchema.parse('user'); // throws ValidationError
14
+ * ```
15
+ */
16
+ export class LiteralSchema {
17
+ value;
18
+ description;
19
+ parseMethods = createParseMethods();
20
+ constructor(value) {
21
+ this.value = value;
22
+ }
23
+ '~standard' = {
24
+ version: 1,
25
+ vendor: 'agentuity',
26
+ validate: (input) => {
27
+ if (input !== this.value) {
28
+ return failure([
29
+ createIssue(`Expected literal value ${JSON.stringify(this.value)}, got ${JSON.stringify(input)}`),
30
+ ]);
31
+ }
32
+ return success(this.value);
33
+ },
34
+ types: undefined,
35
+ };
36
+ describe(description) {
37
+ this.description = description;
38
+ return this;
39
+ }
40
+ optional() {
41
+ return optional(this);
42
+ }
43
+ nullable() {
44
+ return nullable(this);
45
+ }
46
+ parse = this.parseMethods.parse;
47
+ safeParse = this.parseMethods.safeParse;
48
+ }
49
+ /**
50
+ * Create a schema for an exact literal value.
51
+ *
52
+ * @param value - The exact value to match
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const adminRole = s.literal('admin');
57
+ * const maxValue = s.literal(100);
58
+ * const enabled = s.literal(true);
59
+ * ```
60
+ */
61
+ export function literal(value) {
62
+ return new LiteralSchema(value);
63
+ }
64
+ //# sourceMappingURL=literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/utils/literal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAa;IAIL;IAHpB,WAAW,CAAU;IACb,YAAY,GAAG,kBAAkB,EAAK,CAAC;IAE/C,YAAoB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEvB,WAAW,GAAG;QACtB,OAAO,EAAE,CAAU;QACnB,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,CAAC,KAAc,EAAE,EAAE;YAC5B,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC;oBACd,WAAW,CACV,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CACpF;iBACD,CAAC,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,EAAE,SAA+C;KACtD,CAAC;IAEF,QAAQ,CAAC,WAAmB;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,QAAQ;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,QAAQ;QACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAChC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;CACxC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAsC,KAAQ;IACpE,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { Schema, Infer } from '../base';
2
+ /**
3
+ * Schema for nullable values (T | null).
4
+ * Accepts null or the wrapped schema's type.
5
+ *
6
+ * @template T - The wrapped schema type
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * const schema = s.nullable(s.string());
11
+ * schema.parse('hello'); // 'hello'
12
+ * schema.parse(null); // null
13
+ * schema.parse(123); // throws ValidationError
14
+ * ```
15
+ */
16
+ export declare class NullableSchema<T extends Schema<any, any>> implements Schema<Infer<T> | null, Infer<T> | null> {
17
+ readonly schema: T;
18
+ description?: string;
19
+ readonly '~standard': {
20
+ version: 1;
21
+ vendor: string;
22
+ validate: (value: unknown) => import("@agentuity/core").StandardSchemaV1.Result<any> | Promise<import("@agentuity/core").StandardSchemaV1.Result<any>>;
23
+ types: {
24
+ input: Infer<T> | null;
25
+ output: Infer<T> | null;
26
+ };
27
+ };
28
+ private parseMethods;
29
+ constructor(schema: T);
30
+ describe(description: string): this;
31
+ optional(): Schema<Infer<T> | null | undefined, Infer<T> | null | undefined>;
32
+ nullable(): this;
33
+ parse: (this: Schema<any, Infer<T> | null>, value: unknown) => Infer<T> | null;
34
+ safeParse: (this: Schema<any, Infer<T> | null>, value: unknown) => import("..").SafeParseResult<Infer<T> | null>;
35
+ }
36
+ /**
37
+ * Make a schema nullable (T | null).
38
+ *
39
+ * @param schema - The schema to make nullable
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const userSchema = s.object({
44
+ * name: s.string(),
45
+ * bio: s.nullable(s.string())
46
+ * });
47
+ * ```
48
+ */
49
+ export declare function nullable<T extends Schema<any, any>>(schema: T): NullableSchema<T>;
50
+ //# sourceMappingURL=nullable.d.ts.map