schematch 0.0.1

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.
@@ -0,0 +1,578 @@
1
+ import { looksLikeStandardSchemaFailure } from './utils.js';
2
+ import { assertStandardSchema, isPromiseLike } from './validation.js';
3
+ export const NO_MATCH = Symbol('no-match');
4
+ export const ASYNC_REQUIRED = Symbol('async-required');
5
+ const compiledMatcherSymbol = Symbol.for('schematch.compiled-matcher');
6
+ const fastCheckSymbol = Symbol.for('schematch.fast-check');
7
+ const compiledMatcherCache = new WeakMap();
8
+ export const matchSchemaSync = (schema, value) => {
9
+ return getCompiledMatcher(schema).sync(value);
10
+ };
11
+ export const matchSchemaAsync = async (schema, value) => {
12
+ return await getCompiledMatcher(schema).async(value);
13
+ };
14
+ const getCompiledMatcher = (schema) => {
15
+ const schemaObject = schema;
16
+ const symbolCached = schemaObject[compiledMatcherSymbol];
17
+ if (symbolCached)
18
+ return symbolCached;
19
+ const cached = compiledMatcherCache.get(schemaObject);
20
+ if (cached)
21
+ return cached;
22
+ const compiled = compileMatcher(schema);
23
+ try {
24
+ schemaObject[compiledMatcherSymbol] = compiled;
25
+ }
26
+ catch {
27
+ compiledMatcherCache.set(schemaObject, compiled);
28
+ }
29
+ return compiled;
30
+ };
31
+ const compileMatcher = (schema) => {
32
+ assertStandardSchema(schema);
33
+ const literalMatcher = compileLiteralMatcher(schema);
34
+ if (literalMatcher)
35
+ return literalMatcher;
36
+ const fastCheckMatcher = compileFastCheckMatcher(schema);
37
+ if (fastCheckMatcher)
38
+ return fastCheckMatcher;
39
+ const zodMatcher = compileZodMatcher(schema);
40
+ if (zodMatcher)
41
+ return zodMatcher;
42
+ const valibotMatcher = compileValibotMatcher(schema);
43
+ if (valibotMatcher)
44
+ return valibotMatcher;
45
+ const arktypeMatcher = compileArktypeMatcher(schema);
46
+ if (arktypeMatcher)
47
+ return arktypeMatcher;
48
+ return compileGenericMatcher(schema);
49
+ };
50
+ const compileLiteralMatcher = (schema) => {
51
+ const maybeSchema = schema;
52
+ if (Object.prototype.hasOwnProperty.call(maybeSchema, 'unit') && maybeSchema.includesTransform !== true) {
53
+ const unit = maybeSchema.unit;
54
+ return {
55
+ sync: value => (Object.is(value, unit) ? unit : NO_MATCH),
56
+ async: async (value) => (Object.is(value, unit) ? unit : NO_MATCH),
57
+ };
58
+ }
59
+ if (maybeSchema?.type === 'literal' && Object.prototype.hasOwnProperty.call(maybeSchema, 'literal')) {
60
+ const literal = maybeSchema.literal;
61
+ return {
62
+ sync: value => (Object.is(value, literal) ? literal : NO_MATCH),
63
+ async: async (value) => (Object.is(value, literal) ? literal : NO_MATCH),
64
+ };
65
+ }
66
+ const zodDef = maybeSchema?._def ?? maybeSchema?.def;
67
+ if (zodDef?.type === 'literal' && Array.isArray(zodDef.values) && zodDef.values.length === 1) {
68
+ const literal = zodDef.values[0];
69
+ return {
70
+ sync: value => (Object.is(value, literal) ? literal : NO_MATCH),
71
+ async: async (value) => (Object.is(value, literal) ? literal : NO_MATCH),
72
+ };
73
+ }
74
+ return null;
75
+ };
76
+ const compileFastCheckMatcher = (schema) => {
77
+ const fastCheck = schema[fastCheckSymbol];
78
+ if (typeof fastCheck !== 'function')
79
+ return null;
80
+ return {
81
+ sync: value => {
82
+ const result = fastCheck(value);
83
+ if (isPromiseLike(result))
84
+ return ASYNC_REQUIRED;
85
+ return result ? value : NO_MATCH;
86
+ },
87
+ async: async (value) => {
88
+ const result = await fastCheck(value);
89
+ return result ? value : NO_MATCH;
90
+ },
91
+ };
92
+ };
93
+ const compileGenericMatcher = (schema) => {
94
+ const validate = schema['~standard'].validate;
95
+ return {
96
+ sync: value => {
97
+ const result = validate(value);
98
+ if (isPromiseLike(result))
99
+ return ASYNC_REQUIRED;
100
+ return isFailureResult(result) ? NO_MATCH : result.value;
101
+ },
102
+ async: async (value) => {
103
+ const result = await validate(value);
104
+ return isFailureResult(result) ? NO_MATCH : result.value;
105
+ },
106
+ };
107
+ };
108
+ const compileZodMatcher = (schema) => {
109
+ const zod = schema._zod;
110
+ const run = zod?.run;
111
+ if (!zod || typeof run !== 'function')
112
+ return null;
113
+ const precheckResult = compileZodLikePrecheck(schema);
114
+ const precheck = precheckResult?.check ?? null;
115
+ // When the precheck fully covers the schema (no transforms, pipes, refinements, or unhandled types),
116
+ // we can skip _zod.run() entirely and just return the input value. This is especially beneficial
117
+ // for zod-mini which lacks zod's JIT fast path.
118
+ if (precheckResult?.complete) {
119
+ return {
120
+ sync: value => (precheck(value) ? value : NO_MATCH),
121
+ async: async (value) => (precheck(value) ? value : NO_MATCH),
122
+ };
123
+ }
124
+ const syncPayload = { value: undefined, issues: [] };
125
+ const asyncPayload = { value: undefined, issues: [] };
126
+ const syncCtx = { async: false };
127
+ const asyncCtx = { async: true };
128
+ return {
129
+ sync: value => {
130
+ if (precheck && !precheck(value))
131
+ return NO_MATCH;
132
+ syncPayload.value = value;
133
+ syncPayload.issues.length = 0;
134
+ const result = run.call(schema, syncPayload, syncCtx);
135
+ if (isPromiseLike(result))
136
+ return ASYNC_REQUIRED;
137
+ return syncPayload.issues.length === 0 ? result.value : NO_MATCH;
138
+ },
139
+ async: async (value) => {
140
+ if (precheck && !precheck(value))
141
+ return NO_MATCH;
142
+ asyncPayload.value = value;
143
+ asyncPayload.issues.length = 0;
144
+ const result = await run.call(schema, asyncPayload, asyncCtx);
145
+ return asyncPayload.issues.length === 0 ? result.value : NO_MATCH;
146
+ },
147
+ };
148
+ };
149
+ const compileArktypeMatcher = (schema) => {
150
+ const maybeSchema = schema;
151
+ const allows = maybeSchema.allows;
152
+ if (typeof allows !== 'function')
153
+ return null;
154
+ const callable = typeof schema === 'function' ? schema : null;
155
+ const includesTransform = maybeSchema.includesTransform === true;
156
+ return {
157
+ sync: value => {
158
+ if (!allows(value))
159
+ return NO_MATCH;
160
+ if (!callable || !includesTransform)
161
+ return value;
162
+ const result = callable(value);
163
+ if (isPromiseLike(result))
164
+ return ASYNC_REQUIRED;
165
+ return isFailureResult(result) ? NO_MATCH : result;
166
+ },
167
+ async: async (value) => {
168
+ if (!allows(value))
169
+ return NO_MATCH;
170
+ if (!callable || !includesTransform)
171
+ return value;
172
+ const result = await callable(value);
173
+ return isFailureResult(result) ? NO_MATCH : result;
174
+ },
175
+ };
176
+ };
177
+ const compileZodLikePrecheck = (schema) => {
178
+ const def = schema?._def ?? schema?.def;
179
+ if (!def || typeof def !== 'object')
180
+ return null;
181
+ // Schemas with checks (e.g. z.string().min(5)) or coercion are not fully covered by our precheck
182
+ const hasChecks = Array.isArray(def.checks) && def.checks.length > 0;
183
+ const hasCoerce = !!def.coerce;
184
+ switch (def.type) {
185
+ case 'literal': {
186
+ const values = Array.isArray(def.values) ? def.values : [];
187
+ if (values.length !== 1)
188
+ return null;
189
+ const literal = values[0];
190
+ return { check: value => Object.is(value, literal), complete: !hasChecks && !hasCoerce };
191
+ }
192
+ case 'object': {
193
+ const shape = typeof def.shape === 'function' ? def.shape() : def.shape;
194
+ if (!shape || typeof shape !== 'object')
195
+ return { check: isPlainObject, complete: false };
196
+ const checks = [];
197
+ let allComplete = !hasChecks && !hasCoerce;
198
+ const shapeKeys = Object.keys(shape);
199
+ for (const key of shapeKeys) {
200
+ const result = compileZodLikePrecheck(shape[key]);
201
+ if (result) {
202
+ checks.push([key, result.check]);
203
+ if (!result.complete)
204
+ allComplete = false;
205
+ }
206
+ else {
207
+ allComplete = false;
208
+ }
209
+ }
210
+ if (checks.length === 0)
211
+ return { check: isPlainObject, complete: false };
212
+ return {
213
+ check: value => {
214
+ if (!isPlainObject(value))
215
+ return false;
216
+ const record = value;
217
+ for (let index = 0; index < checks.length; index += 1) {
218
+ const [key, check] = checks[index];
219
+ if (!check(record[key]))
220
+ return false;
221
+ }
222
+ return true;
223
+ },
224
+ // Complete only if we compiled checks for ALL shape keys
225
+ complete: allComplete && checks.length === shapeKeys.length,
226
+ };
227
+ }
228
+ case 'tuple': {
229
+ const items = Array.isArray(def.items) ? def.items : [];
230
+ const hasRest = !!def.rest;
231
+ if (items.length === 0 && !hasRest) {
232
+ return { check: value => Array.isArray(value) && value.length === 0, complete: !hasChecks && !hasCoerce };
233
+ }
234
+ const itemResults = items.map((item) => compileZodLikePrecheck(item));
235
+ const checks = itemResults.map((r) => r?.check ?? null);
236
+ const allComplete = !hasChecks && !hasCoerce && !hasRest && itemResults.every((r) => r?.complete);
237
+ return {
238
+ check: value => {
239
+ if (!Array.isArray(value))
240
+ return false;
241
+ if (value.length < items.length)
242
+ return false;
243
+ if (!hasRest && value.length > items.length)
244
+ return false;
245
+ for (let index = 0; index < checks.length; index += 1) {
246
+ const check = checks[index];
247
+ if (check && !check(value[index]))
248
+ return false;
249
+ }
250
+ return true;
251
+ },
252
+ complete: allComplete,
253
+ };
254
+ }
255
+ case 'union': {
256
+ const options = Array.isArray(def.options) ? def.options : [];
257
+ if (options.length === 0)
258
+ return null;
259
+ const results = options
260
+ .map((option) => compileZodLikePrecheck(option))
261
+ .filter((r) => r !== null);
262
+ if (results.length === 0)
263
+ return null;
264
+ const checks = results.map((r) => r.check);
265
+ return {
266
+ check: value => {
267
+ for (let index = 0; index < checks.length; index += 1) {
268
+ if (checks[index](value))
269
+ return true;
270
+ }
271
+ return false;
272
+ },
273
+ // Complete only if ALL options were compiled and all are complete
274
+ complete: !hasChecks && !hasCoerce && results.length === options.length && results.every((r) => r.complete),
275
+ };
276
+ }
277
+ case 'string':
278
+ case 'number':
279
+ case 'boolean':
280
+ case 'bigint':
281
+ case 'symbol': {
282
+ // Coerced schemas accept any input type, so a typeof check would be incorrect
283
+ if (hasCoerce)
284
+ return null;
285
+ const expected = def.type;
286
+ return { check: value => typeof value === expected, complete: !hasChecks };
287
+ }
288
+ case 'null':
289
+ return { check: value => value === null, complete: !hasChecks && !hasCoerce };
290
+ case 'undefined':
291
+ return { check: value => value === undefined, complete: !hasChecks && !hasCoerce };
292
+ case 'date':
293
+ // Coerced date schemas accept string/number inputs
294
+ if (hasCoerce)
295
+ return null;
296
+ return { check: value => value instanceof Date, complete: !hasChecks };
297
+ case 'custom': {
298
+ // Covers z.instanceof(SomeClass) — the `fn` is the custom validation function
299
+ const fn = def.fn;
300
+ if (typeof fn === 'function') {
301
+ return { check: value => fn(value), complete: !hasChecks && !hasCoerce };
302
+ }
303
+ return null;
304
+ }
305
+ default:
306
+ return null;
307
+ }
308
+ };
309
+ const compileValibotMatcher = (schema) => {
310
+ const maybeSchema = schema;
311
+ const run = maybeSchema?.['~run'];
312
+ if (typeof run !== 'function')
313
+ return null;
314
+ const isAsyncSchema = maybeSchema.async === true;
315
+ const precheckResult = compileValibotPrecheck(maybeSchema);
316
+ const precheck = precheckResult?.check ?? null;
317
+ const config = {};
318
+ // When the precheck fully covers the schema, skip ~run entirely
319
+ if (precheckResult?.complete && !isAsyncSchema) {
320
+ return {
321
+ sync: value => (precheck(value) ? value : NO_MATCH),
322
+ async: async (value) => (precheck(value) ? value : NO_MATCH),
323
+ };
324
+ }
325
+ return {
326
+ sync: value => {
327
+ if (isAsyncSchema)
328
+ return ASYNC_REQUIRED;
329
+ if (precheck && !precheck(value))
330
+ return NO_MATCH;
331
+ const result = run.call(schema, { value }, config);
332
+ if (isPromiseLike(result))
333
+ return ASYNC_REQUIRED;
334
+ return result.typed && !result.issues ? result.value : NO_MATCH;
335
+ },
336
+ async: async (value) => {
337
+ if (precheck && !precheck(value))
338
+ return NO_MATCH;
339
+ const result = await run.call(schema, { value }, config);
340
+ return result.typed && !result.issues ? result.value : NO_MATCH;
341
+ },
342
+ };
343
+ };
344
+ const compileValibotPrecheck = (schema) => {
345
+ if (!schema || typeof schema !== 'object')
346
+ return null;
347
+ // Schemas with pipe (transformations, refinements, etc.) are not fully covered
348
+ const hasPipe = Array.isArray(schema.pipe) && schema.pipe.length > 0;
349
+ switch (schema.type) {
350
+ case 'literal': {
351
+ if (!Object.prototype.hasOwnProperty.call(schema, 'literal'))
352
+ return null;
353
+ const literal = schema.literal;
354
+ return { check: value => Object.is(value, literal), complete: !hasPipe };
355
+ }
356
+ case 'object': {
357
+ const entries = schema.entries;
358
+ if (!entries || typeof entries !== 'object') {
359
+ return { check: isPlainObject, complete: false };
360
+ }
361
+ const checks = [];
362
+ let allComplete = !hasPipe;
363
+ const entryKeys = Object.keys(entries);
364
+ for (const key of entryKeys) {
365
+ const result = compileValibotPrecheck(entries[key]);
366
+ if (result) {
367
+ checks.push([key, result.check]);
368
+ if (!result.complete)
369
+ allComplete = false;
370
+ }
371
+ else {
372
+ allComplete = false;
373
+ }
374
+ }
375
+ if (checks.length === 0)
376
+ return { check: isPlainObject, complete: false };
377
+ return {
378
+ check: value => {
379
+ if (!isPlainObject(value))
380
+ return false;
381
+ const record = value;
382
+ for (let index = 0; index < checks.length; index += 1) {
383
+ const [key, check] = checks[index];
384
+ if (!check(record[key]))
385
+ return false;
386
+ }
387
+ return true;
388
+ },
389
+ complete: allComplete && checks.length === entryKeys.length,
390
+ };
391
+ }
392
+ case 'tuple': {
393
+ const items = Array.isArray(schema.items) ? schema.items : [];
394
+ const hasRest = !!schema.rest;
395
+ if (items.length === 0 && !hasRest) {
396
+ return { check: value => Array.isArray(value) && value.length === 0, complete: !hasPipe };
397
+ }
398
+ const itemResults = items.map((item) => compileValibotPrecheck(item));
399
+ const checks = itemResults.map((r) => r?.check ?? null);
400
+ const allComplete = !hasPipe && !hasRest && itemResults.every((r) => r?.complete);
401
+ return {
402
+ check: value => {
403
+ if (!Array.isArray(value))
404
+ return false;
405
+ if (value.length < items.length)
406
+ return false;
407
+ if (!hasRest && value.length > items.length)
408
+ return false;
409
+ for (let index = 0; index < checks.length; index += 1) {
410
+ const check = checks[index];
411
+ if (check && !check(value[index]))
412
+ return false;
413
+ }
414
+ return true;
415
+ },
416
+ complete: allComplete,
417
+ };
418
+ }
419
+ case 'variant': {
420
+ const key = schema.key;
421
+ const options = Array.isArray(schema.options) ? schema.options : [];
422
+ if (typeof key !== 'string' || options.length === 0)
423
+ return null;
424
+ const byDiscriminator = new Map();
425
+ let allComplete = !hasPipe;
426
+ for (let index = 0; index < options.length; index += 1) {
427
+ const option = options[index];
428
+ const literal = option?.entries?.[key]?.literal;
429
+ if (literal === undefined)
430
+ continue;
431
+ const result = compileValibotPrecheck(option);
432
+ byDiscriminator.set(literal, result?.check ?? (() => true));
433
+ if (!result?.complete)
434
+ allComplete = false;
435
+ }
436
+ if (byDiscriminator.size === 0)
437
+ return null;
438
+ return {
439
+ check: value => {
440
+ if (!isPlainObject(value))
441
+ return false;
442
+ const record = value;
443
+ const optionCheck = byDiscriminator.get(record[key]);
444
+ if (!optionCheck)
445
+ return false;
446
+ return optionCheck(value);
447
+ },
448
+ complete: allComplete && byDiscriminator.size === options.length,
449
+ };
450
+ }
451
+ case 'union': {
452
+ const options = Array.isArray(schema.options) ? schema.options : [];
453
+ if (options.length === 0)
454
+ return null;
455
+ const results = options
456
+ .map((option) => compileValibotPrecheck(option))
457
+ .filter((r) => r !== null);
458
+ if (results.length === 0)
459
+ return null;
460
+ const checks = results.map((r) => r.check);
461
+ return {
462
+ check: value => {
463
+ for (let index = 0; index < checks.length; index += 1) {
464
+ if (checks[index](value))
465
+ return true;
466
+ }
467
+ return false;
468
+ },
469
+ complete: !hasPipe && results.length === options.length && results.every((r) => r.complete),
470
+ };
471
+ }
472
+ case 'instance': {
473
+ // Covers v.instance(SomeClass) — schema.class is the constructor
474
+ const cls = schema.class;
475
+ if (typeof cls === 'function') {
476
+ return { check: value => value instanceof cls, complete: !hasPipe };
477
+ }
478
+ return null;
479
+ }
480
+ case 'string':
481
+ case 'number':
482
+ case 'boolean':
483
+ case 'bigint':
484
+ case 'symbol': {
485
+ const expected = schema.type;
486
+ return { check: value => typeof value === expected, complete: !hasPipe };
487
+ }
488
+ case 'null':
489
+ return { check: value => value === null, complete: !hasPipe };
490
+ case 'undefined':
491
+ return { check: value => value === undefined, complete: !hasPipe };
492
+ case 'date':
493
+ return { check: value => value instanceof Date, complete: !hasPipe };
494
+ default:
495
+ return null;
496
+ }
497
+ };
498
+ /**
499
+ * Attempts to extract a discriminator (a literal-typed property) from an object schema.
500
+ * Returns the key name and literal value if found, or null.
501
+ * Works across zod, valibot, and arktype by inspecting library-specific internals.
502
+ */
503
+ export const extractDiscriminator = (schema) => {
504
+ const s = schema;
505
+ // Zod / zod-mini: _def.type === 'object', shape has a literal key
506
+ const zodDef = s?._def ?? s?.def;
507
+ if (zodDef && typeof zodDef === 'object' && zodDef.type === 'object') {
508
+ const shape = typeof zodDef.shape === 'function' ? zodDef.shape() : zodDef.shape;
509
+ if (shape && typeof shape === 'object') {
510
+ return findLiteralKeyInZodShape(shape);
511
+ }
512
+ }
513
+ // Valibot: schema.type === 'object', entries has a literal key
514
+ if (s?.type === 'object' && s.entries && typeof s.entries === 'object') {
515
+ return findLiteralKeyInValibotEntries(s.entries);
516
+ }
517
+ // Arktype: uses .json for structural inspection
518
+ const json = s?.json;
519
+ if (json && json.domain === 'object' && Array.isArray(json.required)) {
520
+ return findLiteralKeyInArktypeJson(json.required);
521
+ }
522
+ return null;
523
+ };
524
+ // Common discriminator key names, preferred in this order
525
+ const preferredKeys = ['type', 'kind', 'status', '_tag', 'tag'];
526
+ const findLiteralKeyInZodShape = (shape) => {
527
+ let fallback = null;
528
+ for (const key of Object.keys(shape)) {
529
+ const fieldDef = shape[key]?._def ?? shape[key]?.def;
530
+ if (fieldDef?.type === 'literal' && Array.isArray(fieldDef.values) && fieldDef.values.length === 1) {
531
+ const info = { key, value: fieldDef.values[0] };
532
+ if (preferredKeys.includes(key))
533
+ return info;
534
+ if (!fallback)
535
+ fallback = info;
536
+ }
537
+ }
538
+ return fallback;
539
+ };
540
+ const findLiteralKeyInValibotEntries = (entries) => {
541
+ let fallback = null;
542
+ for (const key of Object.keys(entries)) {
543
+ if (entries[key]?.type === 'literal' && Object.prototype.hasOwnProperty.call(entries[key], 'literal')) {
544
+ const info = { key, value: entries[key].literal };
545
+ if (preferredKeys.includes(key))
546
+ return info;
547
+ if (!fallback)
548
+ fallback = info;
549
+ }
550
+ }
551
+ return fallback;
552
+ };
553
+ const findLiteralKeyInArktypeJson = (required) => {
554
+ let fallback = null;
555
+ for (let i = 0; i < required.length; i += 1) {
556
+ const entry = required[i];
557
+ if (entry.value && typeof entry.value === 'object' && Object.prototype.hasOwnProperty.call(entry.value, 'unit')) {
558
+ const info = { key: entry.key, value: entry.value.unit };
559
+ if (preferredKeys.includes(entry.key))
560
+ return info;
561
+ if (!fallback)
562
+ fallback = info;
563
+ }
564
+ }
565
+ return fallback;
566
+ };
567
+ const isPlainObject = (value) => {
568
+ return !!value && typeof value === 'object' && !Array.isArray(value);
569
+ };
570
+ export { isPlainObject };
571
+ const isFailureResult = (result) => {
572
+ if (!result || typeof result !== 'object')
573
+ return false;
574
+ if ('issues' in result)
575
+ return true;
576
+ return looksLikeStandardSchemaFailure(result);
577
+ };
578
+ //# sourceMappingURL=compiled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiled.js","sourceRoot":"","sources":["../../src/standard-schema/compiled.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /** The Standard Schema interface. */
2
+ export interface StandardSchemaV1<Input = unknown, Output = Input> {
3
+ /** The Standard Schema properties. */
4
+ readonly '~standard': StandardSchemaV1.Props<Input, Output>;
5
+ }
6
+ export declare namespace StandardSchemaV1 {
7
+ /** The Standard Schema properties interface. */
8
+ interface Props<Input = unknown, Output = Input> {
9
+ /** The version number of the standard. */
10
+ readonly version: 1;
11
+ /** The vendor name of the schema library. */
12
+ readonly vendor: string;
13
+ /** Validates unknown input values. */
14
+ readonly validate: (value: unknown) => Result<Output> | Promise<Result<Output>>;
15
+ /** Inferred types associated with the schema. */
16
+ readonly types?: Types<Input, Output> | undefined;
17
+ }
18
+ /** The result interface of the validate function. */
19
+ type Result<Output> = SuccessResult<Output> | FailureResult;
20
+ /** The result interface if validation succeeds. */
21
+ interface SuccessResult<Output> {
22
+ /** The typed output value. */
23
+ readonly value: Output;
24
+ /** The non-existent issues. */
25
+ readonly issues?: undefined;
26
+ }
27
+ /** The result interface if validation fails. */
28
+ interface FailureResult {
29
+ /** The issues of failed validation. */
30
+ readonly issues: ReadonlyArray<Issue>;
31
+ }
32
+ /** The issue interface of the failure output. */
33
+ interface Issue {
34
+ /** The error message of the issue. */
35
+ readonly message: string;
36
+ /** The path of the issue, if any. */
37
+ readonly path?: ReadonlyArray<PropertyKey | PathSegment> | undefined;
38
+ }
39
+ /** The path segment interface of the issue. */
40
+ interface PathSegment {
41
+ /** The key representing a path segment. */
42
+ readonly key: PropertyKey;
43
+ }
44
+ /** The Standard Schema types interface. */
45
+ interface Types<Input = unknown, Output = Input> {
46
+ /** The input type of the schema. */
47
+ readonly input: Input;
48
+ /** The output type of the schema. */
49
+ readonly output: Output;
50
+ }
51
+ /** Infers the input type of a Standard Schema. */
52
+ type InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['input'];
53
+ /** Infers the output type of a Standard Schema. */
54
+ type InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema['~standard']['types']>['output'];
55
+ }