bupkis 0.1.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/README.md +16 -16
- package/dist/commonjs/assertion/assertion-async.d.ts +2 -1
- package/dist/commonjs/assertion/assertion-async.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion-async.js +84 -2
- package/dist/commonjs/assertion/assertion-async.js.map +1 -1
- package/dist/commonjs/assertion/assertion-sync.d.ts +1 -1
- package/dist/commonjs/assertion/assertion-sync.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion-sync.js +5 -1
- package/dist/commonjs/assertion/assertion-sync.js.map +1 -1
- package/dist/commonjs/assertion/assertion-types.d.ts +39 -84
- package/dist/commonjs/assertion/assertion-types.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion.d.ts +1 -1
- package/dist/commonjs/assertion/assertion.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion.js +1 -14
- package/dist/commonjs/assertion/assertion.js.map +1 -1
- package/dist/commonjs/assertion/create.d.ts +5 -33
- package/dist/commonjs/assertion/create.d.ts.map +1 -1
- package/dist/commonjs/assertion/create.js +17 -6
- package/dist/commonjs/assertion/create.js.map +1 -1
- package/dist/commonjs/assertion/impl/async.d.ts +122 -21
- package/dist/commonjs/assertion/impl/async.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/async.js +114 -90
- package/dist/commonjs/assertion/impl/async.js.map +1 -1
- package/dist/commonjs/assertion/impl/callback.d.ts +104 -0
- package/dist/commonjs/assertion/impl/callback.d.ts.map +1 -0
- package/dist/commonjs/assertion/impl/callback.js +694 -0
- package/dist/commonjs/assertion/impl/callback.js.map +1 -0
- package/dist/commonjs/assertion/impl/index.d.ts +1 -1
- package/dist/commonjs/assertion/impl/index.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/index.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-esoteric.js +1 -1
- package/dist/commonjs/assertion/impl/sync-esoteric.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-parametric.d.ts +37 -34
- package/dist/commonjs/assertion/impl/sync-parametric.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-parametric.js +32 -47
- package/dist/commonjs/assertion/impl/sync-parametric.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync.d.ts +105 -58
- package/dist/commonjs/assertion/impl/sync.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync.js +4 -1
- package/dist/commonjs/assertion/impl/sync.js.map +1 -1
- package/dist/commonjs/bootstrap.d.ts +199 -85
- package/dist/commonjs/bootstrap.d.ts.map +1 -1
- package/dist/commonjs/bootstrap.js +19 -10
- package/dist/commonjs/bootstrap.js.map +1 -1
- package/dist/commonjs/constant.js +7 -1
- package/dist/commonjs/constant.js.map +1 -1
- package/dist/commonjs/error.d.ts +32 -5
- package/dist/commonjs/error.d.ts.map +1 -1
- package/dist/commonjs/error.js +60 -5
- package/dist/commonjs/error.js.map +1 -1
- package/dist/commonjs/expect.d.ts +130 -3
- package/dist/commonjs/expect.d.ts.map +1 -1
- package/dist/commonjs/expect.js +116 -1
- package/dist/commonjs/expect.js.map +1 -1
- package/dist/commonjs/guards.d.ts +45 -20
- package/dist/commonjs/guards.d.ts.map +1 -1
- package/dist/commonjs/guards.js +56 -40
- package/dist/commonjs/guards.js.map +1 -1
- package/dist/commonjs/index.d.ts +241 -86
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +44 -42
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/metadata.d.ts +1 -27
- package/dist/commonjs/metadata.d.ts.map +1 -1
- package/dist/commonjs/metadata.js +16 -15
- package/dist/commonjs/metadata.js.map +1 -1
- package/dist/commonjs/schema.d.ts +76 -33
- package/dist/commonjs/schema.d.ts.map +1 -1
- package/dist/commonjs/schema.js +77 -34
- package/dist/commonjs/schema.js.map +1 -1
- package/dist/commonjs/types.d.ts +480 -39
- package/dist/commonjs/types.d.ts.map +1 -1
- package/dist/commonjs/types.js +12 -2
- package/dist/commonjs/types.js.map +1 -1
- package/dist/commonjs/util.d.ts +72 -49
- package/dist/commonjs/util.d.ts.map +1 -1
- package/dist/commonjs/util.js +175 -155
- package/dist/commonjs/util.js.map +1 -1
- package/dist/commonjs/value-to-schema.d.ts +122 -0
- package/dist/commonjs/value-to-schema.d.ts.map +1 -0
- package/dist/commonjs/value-to-schema.js +309 -0
- package/dist/commonjs/value-to-schema.js.map +1 -0
- package/dist/esm/assertion/assertion-async.d.ts +2 -1
- package/dist/esm/assertion/assertion-async.d.ts.map +1 -1
- package/dist/esm/assertion/assertion-async.js +85 -3
- package/dist/esm/assertion/assertion-async.js.map +1 -1
- package/dist/esm/assertion/assertion-sync.d.ts +1 -1
- package/dist/esm/assertion/assertion-sync.d.ts.map +1 -1
- package/dist/esm/assertion/assertion-sync.js +6 -2
- package/dist/esm/assertion/assertion-sync.js.map +1 -1
- package/dist/esm/assertion/assertion-types.d.ts +39 -84
- package/dist/esm/assertion/assertion-types.d.ts.map +1 -1
- package/dist/esm/assertion/assertion.d.ts +1 -1
- package/dist/esm/assertion/assertion.d.ts.map +1 -1
- package/dist/esm/assertion/assertion.js +1 -14
- package/dist/esm/assertion/assertion.js.map +1 -1
- package/dist/esm/assertion/create.d.ts +5 -33
- package/dist/esm/assertion/create.d.ts.map +1 -1
- package/dist/esm/assertion/create.js +14 -4
- package/dist/esm/assertion/create.js.map +1 -1
- package/dist/esm/assertion/impl/async.d.ts +122 -21
- package/dist/esm/assertion/impl/async.d.ts.map +1 -1
- package/dist/esm/assertion/impl/async.js +113 -89
- package/dist/esm/assertion/impl/async.js.map +1 -1
- package/dist/esm/assertion/impl/callback.d.ts +104 -0
- package/dist/esm/assertion/impl/callback.d.ts.map +1 -0
- package/dist/esm/assertion/impl/callback.js +691 -0
- package/dist/esm/assertion/impl/callback.js.map +1 -0
- package/dist/esm/assertion/impl/index.d.ts +1 -1
- package/dist/esm/assertion/impl/index.d.ts.map +1 -1
- package/dist/esm/assertion/impl/index.js +1 -1
- package/dist/esm/assertion/impl/index.js.map +1 -1
- package/dist/esm/assertion/impl/sync-esoteric.js +2 -2
- package/dist/esm/assertion/impl/sync-esoteric.js.map +1 -1
- package/dist/esm/assertion/impl/sync-parametric.d.ts +37 -34
- package/dist/esm/assertion/impl/sync-parametric.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-parametric.js +32 -47
- package/dist/esm/assertion/impl/sync-parametric.js.map +1 -1
- package/dist/esm/assertion/impl/sync.d.ts +105 -58
- package/dist/esm/assertion/impl/sync.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync.js +3 -1
- package/dist/esm/assertion/impl/sync.js.map +1 -1
- package/dist/esm/bootstrap.d.ts +199 -85
- package/dist/esm/bootstrap.d.ts.map +1 -1
- package/dist/esm/bootstrap.js +19 -10
- package/dist/esm/bootstrap.js.map +1 -1
- package/dist/esm/constant.js +6 -0
- package/dist/esm/constant.js.map +1 -1
- package/dist/esm/error.d.ts +32 -5
- package/dist/esm/error.d.ts.map +1 -1
- package/dist/esm/error.js +59 -5
- package/dist/esm/error.js.map +1 -1
- package/dist/esm/expect.d.ts +130 -3
- package/dist/esm/expect.d.ts.map +1 -1
- package/dist/esm/expect.js +117 -2
- package/dist/esm/expect.js.map +1 -1
- package/dist/esm/guards.d.ts +45 -20
- package/dist/esm/guards.d.ts.map +1 -1
- package/dist/esm/guards.js +48 -31
- package/dist/esm/guards.js.map +1 -1
- package/dist/esm/index.d.ts +241 -86
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +46 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/metadata.d.ts +1 -27
- package/dist/esm/metadata.d.ts.map +1 -1
- package/dist/esm/metadata.js +2 -1
- package/dist/esm/metadata.js.map +1 -1
- package/dist/esm/schema.d.ts +76 -33
- package/dist/esm/schema.d.ts.map +1 -1
- package/dist/esm/schema.js +77 -34
- package/dist/esm/schema.js.map +1 -1
- package/dist/esm/types.d.ts +480 -39
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +12 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/util.d.ts +72 -49
- package/dist/esm/util.d.ts.map +1 -1
- package/dist/esm/util.js +159 -153
- package/dist/esm/util.js.map +1 -1
- package/dist/esm/value-to-schema.d.ts +122 -0
- package/dist/esm/value-to-schema.d.ts.map +1 -0
- package/dist/esm/value-to-schema.js +305 -0
- package/dist/esm/value-to-schema.js.map +1 -0
- package/package.json +94 -17
- package/src/assertion/assertion-async.ts +113 -3
- package/src/assertion/assertion-sync.ts +5 -2
- package/src/assertion/assertion-types.ts +52 -45
- package/src/assertion/assertion.ts +2 -17
- package/src/assertion/create.ts +16 -65
- package/src/assertion/impl/async.ts +132 -92
- package/src/assertion/impl/callback.ts +882 -0
- package/src/assertion/impl/index.ts +1 -1
- package/src/assertion/impl/sync-esoteric.ts +2 -2
- package/src/assertion/impl/sync-parametric.ts +41 -49
- package/src/assertion/impl/sync.ts +3 -0
- package/src/bootstrap.ts +21 -11
- package/src/constant.ts +8 -0
- package/src/error.ts +75 -4
- package/src/expect.ts +275 -20
- package/src/guards.ts +74 -69
- package/src/index.ts +72 -11
- package/src/metadata.ts +3 -4
- package/src/schema.ts +80 -36
- package/src/types.ts +625 -72
- package/src/util.ts +174 -222
- package/src/value-to-schema.ts +464 -0
- package/dist/commonjs/api.d.ts +0 -93
- package/dist/commonjs/api.d.ts.map +0 -1
- package/dist/commonjs/api.js +0 -8
- package/dist/commonjs/api.js.map +0 -1
- package/dist/esm/api.d.ts +0 -93
- package/dist/esm/api.d.ts.map +0 -1
- package/dist/esm/api.js +0 -7
- package/dist/esm/api.js.map +0 -1
- package/src/api.ts +0 -149
- package/src/schema.md +0 -15
package/dist/esm/schema.js
CHANGED
|
@@ -1,31 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Zod
|
|
2
|
+
* Arguably-useful Zod schemas for common types and validation patterns.
|
|
3
3
|
*
|
|
4
4
|
* This module provides reusable Zod schemas for validating constructors,
|
|
5
5
|
* functions, property keys, promises, and other common JavaScript types used
|
|
6
|
-
* throughout the assertion system. These tend to work around
|
|
7
|
-
*
|
|
6
|
+
* throughout the assertion system. These tend to work around the impedance
|
|
7
|
+
* mismatch between **BUPKIS** and Zod.
|
|
8
8
|
*
|
|
9
9
|
* These are used internally, but consumers may also find them useful.
|
|
10
10
|
*
|
|
11
|
-
* @
|
|
11
|
+
* For example, we have {@link FunctionSchema} which accepts any
|
|
12
|
+
* function—regardless of its signature. We need this because Zod v4's
|
|
13
|
+
* `z.function()` no longer returns a `ZodType` (ref:
|
|
14
|
+
* {@link https://zod.dev/v4/changelog | Zod v4 Migration Guide}) and so behaves
|
|
15
|
+
* differently. `FunctionSchema` allows us to work with functions as _values_
|
|
16
|
+
* instead of something to be implemented.
|
|
17
|
+
*
|
|
18
|
+
* Similarly—but not a new development—`z.promise()` does not parse a
|
|
19
|
+
* {@link Promise} object; it parses the _fulfilled value_. This is not what we
|
|
20
|
+
* want for "is a Promise" assertions, but it _can_ be useful for making sense
|
|
21
|
+
* of the fulfilled value. To solve this, we have
|
|
22
|
+
* {@link WrappedPromiseLikeSchema} (which explicitly supports
|
|
23
|
+
* {@link PromiseLike}/"thenable" objects).
|
|
24
|
+
*
|
|
25
|
+
* @category API
|
|
26
|
+
* @example
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* import * as schema from 'bupkis/schema';
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
12
32
|
* @packageDocumentation
|
|
13
33
|
*/
|
|
14
34
|
import { z } from 'zod/v4';
|
|
15
|
-
import { isA,
|
|
35
|
+
import { isA, isConstructible, isFunction, isNonNullObject, isPromiseLike, } from './guards.js';
|
|
16
36
|
import { BupkisRegistry } from './metadata.js';
|
|
17
37
|
/**
|
|
18
38
|
* A Zod schema that validates JavaScript classes or constructor functions.
|
|
19
39
|
*
|
|
20
40
|
* This schema validates values that can be used as constructors, including ES6
|
|
21
41
|
* classes, traditional constructor functions, and built-in constructors. It
|
|
22
|
-
* uses the {@link
|
|
42
|
+
* uses the {@link isConstructible} guard function to determine if a value can be
|
|
23
43
|
* invoked with the `new` operator to create object instances.
|
|
24
44
|
*
|
|
25
|
-
* @
|
|
45
|
+
* @privateRemarks
|
|
26
46
|
* The schema is registered in the {@link BupkisRegistry} with the name
|
|
27
47
|
* `ClassSchema` for later reference and type checking purposes.
|
|
28
|
-
* @category Schema
|
|
29
48
|
* @example
|
|
30
49
|
*
|
|
31
50
|
* ```typescript
|
|
@@ -39,9 +58,11 @@ import { BupkisRegistry } from './metadata.js';
|
|
|
39
58
|
* ClassSchema.parse(() => {}); // ✗ Throws validation error
|
|
40
59
|
* ClassSchema.parse({}); // ✗ Throws validation error
|
|
41
60
|
* ```
|
|
61
|
+
*
|
|
62
|
+
* @group Schema
|
|
42
63
|
*/
|
|
43
64
|
export const ClassSchema = z
|
|
44
|
-
.custom(
|
|
65
|
+
.custom(isConstructible)
|
|
45
66
|
.register(BupkisRegistry, { name: 'ClassSchema' })
|
|
46
67
|
.describe('Class / Constructor');
|
|
47
68
|
/**
|
|
@@ -53,10 +74,9 @@ export const ClassSchema = z
|
|
|
53
74
|
* including regular functions, arrow functions, async functions, generator
|
|
54
75
|
* functions, and methods.
|
|
55
76
|
*
|
|
56
|
-
* @
|
|
77
|
+
* @privateRemarks
|
|
57
78
|
* The schema is registered in the {@link BupkisRegistry} with the name
|
|
58
79
|
* `FunctionSchema` for later reference and type checking purposes.
|
|
59
|
-
* @category Schema
|
|
60
80
|
* @example
|
|
61
81
|
*
|
|
62
82
|
* ```typescript
|
|
@@ -68,6 +88,8 @@ export const ClassSchema = z
|
|
|
68
88
|
* FunctionSchema.parse('not a function'); // ✗ Throws validation error
|
|
69
89
|
* FunctionSchema.parse({}); // ✗ Throws validation error
|
|
70
90
|
* ```
|
|
91
|
+
*
|
|
92
|
+
* @group Schema
|
|
71
93
|
*/
|
|
72
94
|
export const FunctionSchema = z
|
|
73
95
|
.custom(isFunction)
|
|
@@ -83,10 +105,9 @@ export const FunctionSchema = z
|
|
|
83
105
|
* types that JavaScript automatically converts to property keys when used in
|
|
84
106
|
* object access or assignment operations.
|
|
85
107
|
*
|
|
86
|
-
* @
|
|
108
|
+
* @privateRemarks
|
|
87
109
|
* The schema is registered in the `BupkisRegistry` with the name
|
|
88
110
|
* `PropertyKeySchema` for later reference and type checking purposes.
|
|
89
|
-
* @category Schema
|
|
90
111
|
* @example
|
|
91
112
|
*
|
|
92
113
|
* ```typescript
|
|
@@ -96,6 +117,8 @@ export const FunctionSchema = z
|
|
|
96
117
|
* PropertyKeySchema.parse({}); // ✗ Throws validation error
|
|
97
118
|
* PropertyKeySchema.parse(null); // ✗ Throws validation error
|
|
98
119
|
* ```
|
|
120
|
+
*
|
|
121
|
+
* @group Schema
|
|
99
122
|
*/
|
|
100
123
|
export const PropertyKeySchema = z
|
|
101
124
|
.union([z.string(), z.number(), z.symbol()])
|
|
@@ -110,12 +133,11 @@ export const PropertyKeySchema = z
|
|
|
110
133
|
* resolved value, meaning the result of parsing remains a Promise or thenable
|
|
111
134
|
* object.
|
|
112
135
|
*
|
|
113
|
-
* @
|
|
136
|
+
* @privateRemarks
|
|
114
137
|
* The schema is registered in the `BupkisRegistry` with the name
|
|
115
138
|
* `WrappedPromiseLikeSchema` for later reference and type checking purposes.
|
|
116
139
|
* This is useful when you need to validate that something is thenable without
|
|
117
140
|
* automatically resolving it.
|
|
118
|
-
* @category Schema
|
|
119
141
|
* @example
|
|
120
142
|
*
|
|
121
143
|
* ```typescript
|
|
@@ -124,6 +146,8 @@ export const PropertyKeySchema = z
|
|
|
124
146
|
* WrappedPromiseLikeSchema.parse(42); // ✗ Throws validation error
|
|
125
147
|
* WrappedPromiseLikeSchema.parse({}); // ✗ Throws validation error
|
|
126
148
|
* ```
|
|
149
|
+
*
|
|
150
|
+
* @group Schema
|
|
127
151
|
*/
|
|
128
152
|
export const WrappedPromiseLikeSchema = z
|
|
129
153
|
.custom((value) => isPromiseLike(value))
|
|
@@ -140,7 +164,6 @@ export const WrappedPromiseLikeSchema = z
|
|
|
140
164
|
* @remarks
|
|
141
165
|
* The schema is registered in the `BupkisRegistry` with the name
|
|
142
166
|
* `StrongMapSchema` for later reference and type checking purposes.
|
|
143
|
-
* @category Schema
|
|
144
167
|
* @example
|
|
145
168
|
*
|
|
146
169
|
* ```typescript
|
|
@@ -153,6 +176,8 @@ export const WrappedPromiseLikeSchema = z
|
|
|
153
176
|
* const weakMap = new WeakMap();
|
|
154
177
|
* StrongMapSchema.parse(weakMap); // ✗ Throws validation error
|
|
155
178
|
* ```
|
|
179
|
+
*
|
|
180
|
+
* @group Schema
|
|
156
181
|
*/
|
|
157
182
|
export const StrongMapSchema = z
|
|
158
183
|
.instanceof(Map)
|
|
@@ -170,7 +195,6 @@ export const StrongMapSchema = z
|
|
|
170
195
|
* @remarks
|
|
171
196
|
* The schema is registered in the `BupkisRegistry` with the name
|
|
172
197
|
* `StrongSetSchema` for later reference and type checking purposes.
|
|
173
|
-
* @category Schema
|
|
174
198
|
* @example
|
|
175
199
|
*
|
|
176
200
|
* ```typescript
|
|
@@ -180,6 +204,8 @@ export const StrongMapSchema = z
|
|
|
180
204
|
* const weakSet = new WeakSet();
|
|
181
205
|
* StrongSetSchema.parse(weakSet); // ✗ Throws validation error
|
|
182
206
|
* ```
|
|
207
|
+
*
|
|
208
|
+
* @group Schema
|
|
183
209
|
*/
|
|
184
210
|
export const StrongSetSchema = z
|
|
185
211
|
.instanceof(Set)
|
|
@@ -195,10 +221,12 @@ export const StrongSetSchema = z
|
|
|
195
221
|
* `Object.prototype`, making them useful as pure data containers or
|
|
196
222
|
* dictionaries.
|
|
197
223
|
*
|
|
198
|
-
* @
|
|
224
|
+
* @privateRemarks
|
|
199
225
|
* The schema is registered in the `BupkisRegistry` with the name
|
|
200
226
|
* `ObjectWithNullPrototype` for later reference and type checking purposes.
|
|
201
|
-
*
|
|
227
|
+
*
|
|
228
|
+
* Changing this to be a `ZodRecord` would be nice, but that would end up
|
|
229
|
+
* blasting away the original object's prototype.
|
|
202
230
|
* @example
|
|
203
231
|
*
|
|
204
232
|
* ```typescript
|
|
@@ -212,11 +240,20 @@ export const StrongSetSchema = z
|
|
|
212
240
|
* const emptyObj = {};
|
|
213
241
|
* NullProtoObjectSchema.parse(emptyObj); // ✗ Throws validation error
|
|
214
242
|
* ```
|
|
243
|
+
*
|
|
244
|
+
* @group Schema
|
|
245
|
+
* @see Aliases: {@link NullProtoObjectSchema}, {@link DictionarySchema}
|
|
215
246
|
*/
|
|
216
|
-
export const
|
|
247
|
+
export const DictionarySchema = z
|
|
217
248
|
.custom((value) => isNonNullObject(value) && Object.getPrototypeOf(value) === null)
|
|
218
249
|
.describe('Object with null prototype')
|
|
219
250
|
.register(BupkisRegistry, { name: 'ObjectWithNullPrototype' });
|
|
251
|
+
/**
|
|
252
|
+
* {@inheritDoc DictionarySchema}
|
|
253
|
+
*
|
|
254
|
+
* @group Schema
|
|
255
|
+
*/
|
|
256
|
+
export const NullProtoObjectSchema = DictionarySchema;
|
|
220
257
|
/**
|
|
221
258
|
* A Zod schema that validates functions declared with the `async` keyword.
|
|
222
259
|
*
|
|
@@ -225,13 +262,12 @@ export const NullProtoObjectSchema = z
|
|
|
225
262
|
* function's internal `[[ToString]]` representation to distinguish async
|
|
226
263
|
* functions from regular functions that might return Promises.
|
|
227
264
|
*
|
|
228
|
-
* @
|
|
265
|
+
* @privateRemarks
|
|
229
266
|
* The schema is registered in the `BupkisRegistry` with the name
|
|
230
267
|
* `AsyncFunctionSchema` for later reference and type checking purposes. This
|
|
231
268
|
* schema cannot reliably detect functions that return Promises but are not
|
|
232
269
|
* declared with `async`, as this determination requires static analysis that is
|
|
233
270
|
* not available at runtime.
|
|
234
|
-
* @category Schema
|
|
235
271
|
* @example
|
|
236
272
|
*
|
|
237
273
|
* ```typescript
|
|
@@ -251,6 +287,8 @@ export const NullProtoObjectSchema = z
|
|
|
251
287
|
* const regularFn = () => 42;
|
|
252
288
|
* AsyncFunctionSchema.parse(regularFn); // ✗ Throws validation error
|
|
253
289
|
* ```
|
|
290
|
+
*
|
|
291
|
+
* @group Schema
|
|
254
292
|
*/
|
|
255
293
|
export const AsyncFunctionSchema = FunctionSchema.refine((value) => Object.prototype.toString.call(value) === '[object AsyncFunction]')
|
|
256
294
|
.describe('Function declared with the `async` keyword')
|
|
@@ -263,10 +301,9 @@ export const AsyncFunctionSchema = FunctionSchema.refine((value) => Object.proto
|
|
|
263
301
|
* if it converts to `true` when evaluated in a boolean context - essentially
|
|
264
302
|
* any value that is not one of the eight falsy values.
|
|
265
303
|
*
|
|
266
|
-
* @
|
|
304
|
+
* @privateRemarks
|
|
267
305
|
* The schema is registered in the `BupkisRegistry` with the name `Truthy` and
|
|
268
306
|
* indicates that it accepts anything as valid input for evaluation.
|
|
269
|
-
* @category Schema
|
|
270
307
|
* @example
|
|
271
308
|
*
|
|
272
309
|
* ```typescript
|
|
@@ -280,6 +317,8 @@ export const AsyncFunctionSchema = FunctionSchema.refine((value) => Object.proto
|
|
|
280
317
|
* TruthySchema.parse(''); // ✗ Throws validation error
|
|
281
318
|
* TruthySchema.parse(null); // ✗ Throws validation error
|
|
282
319
|
* ```
|
|
320
|
+
*
|
|
321
|
+
* @group Schema
|
|
283
322
|
*/
|
|
284
323
|
export const TruthySchema = z
|
|
285
324
|
.any()
|
|
@@ -297,10 +336,9 @@ export const TruthySchema = z
|
|
|
297
336
|
* in JavaScript are: `false`, `0`, `-0`, `0n`, `""` (empty string), `null`,
|
|
298
337
|
* `undefined`, and `NaN`.
|
|
299
338
|
*
|
|
300
|
-
* @
|
|
339
|
+
* @privateRemarks
|
|
301
340
|
* The schema is registered in the `BupkisRegistry` with the name `Falsy` and
|
|
302
341
|
* indicates that it accepts anything as valid input for evaluation.
|
|
303
|
-
* @category Schema
|
|
304
342
|
* @example
|
|
305
343
|
*
|
|
306
344
|
* ```typescript
|
|
@@ -317,6 +355,8 @@ export const TruthySchema = z
|
|
|
317
355
|
* FalsySchema.parse('hello'); // ✗ Throws validation error
|
|
318
356
|
* FalsySchema.parse({}); // ✗ Throws validation error
|
|
319
357
|
* ```
|
|
358
|
+
*
|
|
359
|
+
* @group Schema
|
|
320
360
|
*/
|
|
321
361
|
export const FalsySchema = z
|
|
322
362
|
.any()
|
|
@@ -333,10 +373,9 @@ export const FalsySchema = z
|
|
|
333
373
|
* distinguishing them from objects and functions which are non-primitive
|
|
334
374
|
* reference types.
|
|
335
375
|
*
|
|
336
|
-
* @
|
|
376
|
+
* @privateRemarks
|
|
337
377
|
* The schema is registered in the `BupkisRegistry` with the name `Primitive`
|
|
338
378
|
* and indicates that it accepts primitive values as valid input.
|
|
339
|
-
* @category Schema
|
|
340
379
|
* @example
|
|
341
380
|
*
|
|
342
381
|
* ```typescript
|
|
@@ -351,6 +390,8 @@ export const FalsySchema = z
|
|
|
351
390
|
* PrimitiveSchema.parse([]); // ✗ Throws validation error (array)
|
|
352
391
|
* PrimitiveSchema.parse(() => {}); // ✗ Throws validation error (function)
|
|
353
392
|
* ```
|
|
393
|
+
*
|
|
394
|
+
* @group Schema
|
|
354
395
|
*/
|
|
355
396
|
export const PrimitiveSchema = z
|
|
356
397
|
.union([
|
|
@@ -374,12 +415,11 @@ export const PrimitiveSchema = z
|
|
|
374
415
|
* it useful for validating collections where the specific array mutability or
|
|
375
416
|
* tuple structure is not critical.
|
|
376
417
|
*
|
|
377
|
-
* @
|
|
418
|
+
* @privateRemarks
|
|
378
419
|
* The schema is registered in the {@link BupkisRegistry} with the name
|
|
379
420
|
* `ArrayLike` for later reference and type checking purposes. This schema is
|
|
380
421
|
* particularly useful when you need to accept various forms of array-like data
|
|
381
422
|
* without being restrictive about mutability or exact tuple structure.
|
|
382
|
-
* @category Schema
|
|
383
423
|
* @example
|
|
384
424
|
*
|
|
385
425
|
* ```typescript
|
|
@@ -391,11 +431,13 @@ export const PrimitiveSchema = z
|
|
|
391
431
|
* ArrayLikeSchema.parse({}); // ✗ Throws validation error
|
|
392
432
|
* ArrayLikeSchema.parse(null); // ✗ Throws validation error
|
|
393
433
|
* ```
|
|
434
|
+
*
|
|
435
|
+
* @group Schema
|
|
394
436
|
*/
|
|
395
437
|
export const ArrayLikeSchema = z
|
|
396
438
|
.union([
|
|
397
|
-
z.array(z.
|
|
398
|
-
z.tuple([z.
|
|
439
|
+
z.array(z.unknown()),
|
|
440
|
+
z.tuple([z.unknown()], z.unknown()),
|
|
399
441
|
z.looseObject({ length: z.number().nonnegative().int() }),
|
|
400
442
|
])
|
|
401
443
|
.describe('Array-like value')
|
|
@@ -411,10 +453,9 @@ export const ArrayLikeSchema = z
|
|
|
411
453
|
* It ensures the validated value is a proper regular expression object with all
|
|
412
454
|
* associated methods and properties.
|
|
413
455
|
*
|
|
414
|
-
* @
|
|
456
|
+
* @privateRemarks
|
|
415
457
|
* The schema is registered in the `BupkisRegistry` with the name `RegExp` for
|
|
416
458
|
* later reference and type checking purposes.
|
|
417
|
-
* @category Schema
|
|
418
459
|
* @example
|
|
419
460
|
*
|
|
420
461
|
* ```typescript
|
|
@@ -426,6 +467,8 @@ export const ArrayLikeSchema = z
|
|
|
426
467
|
* RegExpSchema.parse(/abc/.source); // ✗ Throws validation error (string pattern)
|
|
427
468
|
* RegExpSchema.parse({}); // ✗ Throws validation error (object)
|
|
428
469
|
* ```
|
|
470
|
+
*
|
|
471
|
+
* @group Schema
|
|
429
472
|
*/
|
|
430
473
|
export const RegExpSchema = z
|
|
431
474
|
.instanceof(RegExp)
|
package/dist/esm/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"}
|