@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.
- package/AGENTS.md +86 -0
- package/README.md +323 -0
- package/dist/base.d.ts +111 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +93 -0
- package/dist/base.js.map +1 -0
- package/dist/coerce/boolean.d.ts +37 -0
- package/dist/coerce/boolean.d.ts.map +1 -0
- package/dist/coerce/boolean.js +49 -0
- package/dist/coerce/boolean.js.map +1 -0
- package/dist/coerce/date.d.ts +36 -0
- package/dist/coerce/date.d.ts.map +1 -0
- package/dist/coerce/date.js +60 -0
- package/dist/coerce/date.js.map +1 -0
- package/dist/coerce/number.d.ts +36 -0
- package/dist/coerce/number.d.ts.map +1 -0
- package/dist/coerce/number.js +59 -0
- package/dist/coerce/number.js.map +1 -0
- package/dist/coerce/string.d.ts +35 -0
- package/dist/coerce/string.d.ts.map +1 -0
- package/dist/coerce/string.js +47 -0
- package/dist/coerce/string.js.map +1 -0
- package/dist/complex/array.d.ts +56 -0
- package/dist/complex/array.d.ts.map +1 -0
- package/dist/complex/array.js +96 -0
- package/dist/complex/array.js.map +1 -0
- package/dist/complex/object.d.ts +76 -0
- package/dist/complex/object.d.ts.map +1 -0
- package/dist/complex/object.js +104 -0
- package/dist/complex/object.js.map +1 -0
- package/dist/complex/record.d.ts +53 -0
- package/dist/complex/record.d.ts.map +1 -0
- package/dist/complex/record.js +109 -0
- package/dist/complex/record.js.map +1 -0
- package/dist/index.d.ts +151 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +128 -0
- package/dist/index.js.map +1 -0
- package/dist/json-schema.d.ts +60 -0
- package/dist/json-schema.d.ts.map +1 -0
- package/dist/json-schema.js +280 -0
- package/dist/json-schema.js.map +1 -0
- package/dist/primitives/any.d.ts +44 -0
- package/dist/primitives/any.d.ts.map +1 -0
- package/dist/primitives/any.js +57 -0
- package/dist/primitives/any.js.map +1 -0
- package/dist/primitives/boolean.d.ts +39 -0
- package/dist/primitives/boolean.d.ts.map +1 -0
- package/dist/primitives/boolean.js +53 -0
- package/dist/primitives/boolean.js.map +1 -0
- package/dist/primitives/null.d.ts +26 -0
- package/dist/primitives/null.d.ts.map +1 -0
- package/dist/primitives/null.js +40 -0
- package/dist/primitives/null.js.map +1 -0
- package/dist/primitives/number.d.ts +87 -0
- package/dist/primitives/number.d.ts.map +1 -0
- package/dist/primitives/number.js +129 -0
- package/dist/primitives/number.js.map +1 -0
- package/dist/primitives/string.d.ts +64 -0
- package/dist/primitives/string.d.ts.map +1 -0
- package/dist/primitives/string.js +102 -0
- package/dist/primitives/string.js.map +1 -0
- package/dist/primitives/undefined.d.ts +26 -0
- package/dist/primitives/undefined.d.ts.map +1 -0
- package/dist/primitives/undefined.js +40 -0
- package/dist/primitives/undefined.js.map +1 -0
- package/dist/primitives/unknown.d.ts +47 -0
- package/dist/primitives/unknown.d.ts.map +1 -0
- package/dist/primitives/unknown.js +56 -0
- package/dist/primitives/unknown.js.map +1 -0
- package/dist/utils/literal.d.ts +47 -0
- package/dist/utils/literal.d.ts.map +1 -0
- package/dist/utils/literal.js +64 -0
- package/dist/utils/literal.js.map +1 -0
- package/dist/utils/nullable.d.ts +50 -0
- package/dist/utils/nullable.d.ts.map +1 -0
- package/dist/utils/nullable.js +69 -0
- package/dist/utils/nullable.js.map +1 -0
- package/dist/utils/optional.d.ts +50 -0
- package/dist/utils/optional.d.ts.map +1 -0
- package/dist/utils/optional.js +69 -0
- package/dist/utils/optional.js.map +1 -0
- package/dist/utils/union.d.ts +60 -0
- package/dist/utils/union.d.ts.map +1 -0
- package/dist/utils/union.js +87 -0
- package/dist/utils/union.js.map +1 -0
- package/package.json +39 -0
- package/src/__tests__/coerce.test.ts +88 -0
- package/src/__tests__/complex.test.ts +124 -0
- package/src/__tests__/errors.test.ts +129 -0
- package/src/__tests__/json-schema.test.ts +138 -0
- package/src/__tests__/primitives.test.ts +184 -0
- package/src/__tests__/type-inference.test.ts +68 -0
- package/src/__tests__/utils.test.ts +100 -0
- package/src/base.ts +185 -0
- package/src/coerce/boolean.ts +56 -0
- package/src/coerce/date.ts +68 -0
- package/src/coerce/number.ts +67 -0
- package/src/coerce/string.ts +54 -0
- package/src/complex/array.ts +108 -0
- package/src/complex/object.ts +141 -0
- package/src/complex/record.ts +129 -0
- package/src/index.ts +177 -0
- package/src/json-schema.ts +331 -0
- package/src/primitives/any.ts +64 -0
- package/src/primitives/boolean.ts +60 -0
- package/src/primitives/null.ts +47 -0
- package/src/primitives/number.ts +141 -0
- package/src/primitives/string.ts +113 -0
- package/src/primitives/undefined.ts +47 -0
- package/src/primitives/unknown.ts +63 -0
- package/src/utils/literal.ts +71 -0
- package/src/utils/nullable.ts +80 -0
- package/src/utils/optional.ts +80 -0
- 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
|