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.
package/dist/match.js ADDED
@@ -0,0 +1,616 @@
1
+ import { looksLikeStandardSchema } from './standard-schema/utils.js';
2
+ import { ASYNC_REQUIRED, NO_MATCH, matchSchemaAsync, matchSchemaSync, extractDiscriminator, isPlainObject } from './standard-schema/compiled.js';
3
+ import { isPromiseLike, validateSync } from './standard-schema/validation.js';
4
+ import { NonExhaustiveError } from './errors.js';
5
+ const unmatched = {
6
+ matched: false,
7
+ value: undefined,
8
+ };
9
+ const unset = Symbol('unset');
10
+ export const match = Object.assign(function match(value) {
11
+ return new MatchExpression(value, false, undefined);
12
+ }, {
13
+ input() {
14
+ return new ReusableMatcher(unmatched);
15
+ },
16
+ output() {
17
+ return new ReusableMatcher(unmatched);
18
+ },
19
+ 'case'(...args) {
20
+ return new ReusableMatcher(unmatched).case(...args);
21
+ },
22
+ });
23
+ export const matchAsync = Object.assign(function matchAsync(value) {
24
+ return new MatchExpressionAsync(value, Promise.resolve(unmatched));
25
+ }, {
26
+ input() {
27
+ return new ReusableMatcherAsync(Promise.resolve(unmatched));
28
+ },
29
+ output() {
30
+ return new ReusableMatcherAsync(Promise.resolve(unmatched));
31
+ },
32
+ 'case'(...args) {
33
+ return new ReusableMatcherAsync(Promise.resolve(unmatched)).case(...args);
34
+ },
35
+ });
36
+ // ─── MatchExpression (sync inline) ───────────────────────────────────────────
37
+ class MatchExpression {
38
+ constructor(input, matched, value) {
39
+ this.input = input;
40
+ this.matched = matched;
41
+ this.value = value;
42
+ this.schemas = [];
43
+ }
44
+ case(...args) {
45
+ if (this.matched)
46
+ return this;
47
+ const length = args.length;
48
+ const handler = args[length - 1];
49
+ if (length === 2) {
50
+ const schema = args[0];
51
+ this.schemas.push(schema);
52
+ const result = matchSchemaSync(schema, this.input);
53
+ if (result === ASYNC_REQUIRED) {
54
+ throw new Error('Schema validation returned a Promise. Use matchAsync instead.');
55
+ }
56
+ if (result !== NO_MATCH) {
57
+ this.matched = true;
58
+ this.value = handler(result, this.input);
59
+ }
60
+ return this;
61
+ }
62
+ const hasGuard = length === 3 && typeof args[1] === 'function' && !looksLikeStandardSchema(args[1]);
63
+ const predicate = hasGuard ? args[1] : undefined;
64
+ const schemaEnd = hasGuard ? 1 : length - 1;
65
+ for (let index = 0; index < schemaEnd; index += 1) {
66
+ const schema = args[index];
67
+ this.schemas.push(schema);
68
+ const result = matchSchemaSync(schema, this.input);
69
+ if (result === NO_MATCH)
70
+ continue;
71
+ if (result === ASYNC_REQUIRED) {
72
+ throw new Error('Schema validation returned a Promise. Use matchAsync instead.');
73
+ }
74
+ if (predicate) {
75
+ const guardResult = predicate(result, this.input);
76
+ if (isPromiseLike(guardResult)) {
77
+ throw new Error('Guard returned a Promise. Use matchAsync instead.');
78
+ }
79
+ if (!guardResult)
80
+ continue;
81
+ }
82
+ this.matched = true;
83
+ this.value = handler(result, this.input);
84
+ break;
85
+ }
86
+ return this;
87
+ }
88
+ when(predicate, handler) {
89
+ if (this.matched)
90
+ return this;
91
+ const result = predicate(this.input);
92
+ if (isPromiseLike(result)) {
93
+ throw new Error('Predicate returned a Promise. Use matchAsync instead.');
94
+ }
95
+ if (result) {
96
+ this.matched = true;
97
+ this.value = handler(this.input, this.input);
98
+ }
99
+ return this;
100
+ }
101
+ default(modeOrHandler) {
102
+ if (this.matched)
103
+ return this.value;
104
+ if (typeof modeOrHandler === 'function') {
105
+ return modeOrHandler(this.input);
106
+ }
107
+ if (modeOrHandler === 'reject') {
108
+ return new NonExhaustiveError(this.input, { schemas: this.schemas });
109
+ }
110
+ // 'assert' and 'never' both throw at runtime
111
+ throw new NonExhaustiveError(this.input, { schemas: this.schemas });
112
+ }
113
+ output() {
114
+ return this;
115
+ }
116
+ returnType() {
117
+ return this;
118
+ }
119
+ narrow() {
120
+ return this;
121
+ }
122
+ }
123
+ // ─── MatchExpressionAsync (async inline) ─────────────────────────────────────
124
+ class MatchExpressionAsync {
125
+ constructor(input, state, schemas = []) {
126
+ this.input = input;
127
+ this.state = state;
128
+ this.schemas = schemas;
129
+ }
130
+ case(...args) {
131
+ const length = args.length;
132
+ const handler = args[length - 1];
133
+ if (length === 2) {
134
+ const schema = args[0];
135
+ const nextSchemas = [...this.schemas, schema];
136
+ const nextState = this.state.then(async (state) => {
137
+ if (state.matched)
138
+ return state;
139
+ const result = await matchSchemaAsync(schema, this.input);
140
+ if (result === NO_MATCH)
141
+ return unmatched;
142
+ return {
143
+ matched: true,
144
+ value: await handler(result, this.input),
145
+ };
146
+ });
147
+ return new MatchExpressionAsync(this.input, nextState, nextSchemas);
148
+ }
149
+ const hasGuard = length === 3 && typeof args[1] === 'function' && !looksLikeStandardSchema(args[1]);
150
+ const predicate = hasGuard ? args[1] : undefined;
151
+ const schemaEnd = hasGuard ? 1 : length - 1;
152
+ const caseSchemas = args.slice(0, schemaEnd);
153
+ const nextSchemas = [...this.schemas, ...caseSchemas];
154
+ const nextState = this.state.then(async (state) => {
155
+ if (state.matched)
156
+ return state;
157
+ for (let index = 0; index < schemaEnd; index += 1) {
158
+ const result = await matchSchemaAsync(caseSchemas[index], this.input);
159
+ if (result === NO_MATCH)
160
+ continue;
161
+ if (predicate) {
162
+ const guardResult = await predicate(result, this.input);
163
+ if (!guardResult)
164
+ continue;
165
+ }
166
+ return {
167
+ matched: true,
168
+ value: await handler(result, this.input),
169
+ };
170
+ }
171
+ return unmatched;
172
+ });
173
+ return new MatchExpressionAsync(this.input, nextState, nextSchemas);
174
+ }
175
+ when(predicate, handler) {
176
+ const nextState = this.state.then(async (state) => {
177
+ if (state.matched)
178
+ return state;
179
+ const result = await predicate(this.input);
180
+ if (!result)
181
+ return unmatched;
182
+ return {
183
+ matched: true,
184
+ value: await handler(this.input, this.input),
185
+ };
186
+ });
187
+ return new MatchExpressionAsync(this.input, nextState);
188
+ }
189
+ default(modeOrHandler) {
190
+ const schemas = this.schemas;
191
+ return this.state.then(async (state) => {
192
+ if (state.matched)
193
+ return state.value;
194
+ if (typeof modeOrHandler === 'function') {
195
+ return await modeOrHandler(this.input);
196
+ }
197
+ if (modeOrHandler === 'reject') {
198
+ return new NonExhaustiveError(this.input, { schemas });
199
+ }
200
+ // 'assert' and 'never' both throw at runtime
201
+ throw new NonExhaustiveError(this.input, { schemas });
202
+ });
203
+ }
204
+ output() {
205
+ return this;
206
+ }
207
+ returnType() {
208
+ return this;
209
+ }
210
+ narrow() {
211
+ return this;
212
+ }
213
+ }
214
+ /**
215
+ * Inspects all clauses to find a common discriminator key across object schemas.
216
+ * If found, builds a dispatch table for O(1) branch selection.
217
+ */
218
+ function buildDispatchTable(clauses) {
219
+ if (clauses.length < 2)
220
+ return null;
221
+ const discriminators = [];
222
+ const fallbackIndices = [];
223
+ let commonKey = null;
224
+ let hasAnyDiscriminator = false;
225
+ for (let i = 0; i < clauses.length; i += 1) {
226
+ const clause = clauses[i];
227
+ // .when() clauses always go to fallback
228
+ if ('when' in clause) {
229
+ discriminators.push(null);
230
+ fallbackIndices.push(i);
231
+ continue;
232
+ }
233
+ // Try to extract discriminator from each schema in the clause
234
+ let found = null;
235
+ for (let j = 0; j < clause.schemas.length; j += 1) {
236
+ const info = extractDiscriminator(clause.schemas[j]);
237
+ if (info) {
238
+ found = info;
239
+ break;
240
+ }
241
+ }
242
+ if (found) {
243
+ hasAnyDiscriminator = true;
244
+ // Check that all discriminated clauses share the same key
245
+ if (commonKey === null) {
246
+ commonKey = found.key;
247
+ }
248
+ else if (commonKey !== found.key) {
249
+ // Different discriminator keys across clauses — can't build a dispatch table
250
+ return null;
251
+ }
252
+ discriminators.push({ clauseIndex: i, info: found });
253
+ }
254
+ else {
255
+ discriminators.push(null);
256
+ fallbackIndices.push(i);
257
+ }
258
+ }
259
+ if (!hasAnyDiscriminator || commonKey === null)
260
+ return null;
261
+ // Build the dispatch table
262
+ const table = new Map();
263
+ const expectedValues = [];
264
+ for (let i = 0; i < discriminators.length; i += 1) {
265
+ const entry = discriminators[i];
266
+ if (!entry)
267
+ continue;
268
+ const existing = table.get(entry.info.value);
269
+ if (existing) {
270
+ existing.push(entry.clauseIndex);
271
+ }
272
+ else {
273
+ table.set(entry.info.value, [entry.clauseIndex]);
274
+ expectedValues.push(entry.info.value);
275
+ }
276
+ }
277
+ return { key: commonKey, table, fallback: fallbackIndices, fallbackSet: new Set(fallbackIndices), expectedValues };
278
+ }
279
+ class ReusableMatcher {
280
+ constructor(terminal, clauses = []) {
281
+ this.terminal = terminal;
282
+ this.clauses = clauses;
283
+ this.dispatch = undefined; // undefined = not yet computed
284
+ // Build the ~standard property in the constructor so it closes over `this`
285
+ this['~standard'] = {
286
+ version: 1,
287
+ vendor: 'schematch',
288
+ validate: (value) => {
289
+ const state = this.exec(value);
290
+ if (state.matched) {
291
+ return { value: state.value };
292
+ }
293
+ return this.buildFailureResult(value);
294
+ },
295
+ };
296
+ }
297
+ getDispatch() {
298
+ if (this.dispatch === undefined) {
299
+ this.dispatch = buildDispatchTable(this.clauses);
300
+ }
301
+ return this.dispatch;
302
+ }
303
+ case(...args) {
304
+ const length = args.length;
305
+ const handler = args[length - 1];
306
+ const hasGuard = length === 3 && typeof args[1] === 'function' && !looksLikeStandardSchema(args[1]);
307
+ const predicate = hasGuard ? args[1] : undefined;
308
+ const schemaEnd = hasGuard ? 1 : length - 1;
309
+ const schemas = args.slice(0, schemaEnd);
310
+ return new ReusableMatcher(this.terminal, [...this.clauses, { schemas, predicate, handler }]);
311
+ }
312
+ when(predicate, handler) {
313
+ return new ReusableMatcher(this.terminal, [...this.clauses, { when: predicate, handler }]);
314
+ }
315
+ output() {
316
+ return this;
317
+ }
318
+ default(modeOrHandler) {
319
+ const allSchemas = this.clauses.flatMap(c => 'schemas' in c ? c.schemas : []);
320
+ if (typeof modeOrHandler === 'function') {
321
+ return (input) => {
322
+ const state = this.exec(input);
323
+ if (state.matched)
324
+ return state.value;
325
+ return modeOrHandler(input);
326
+ };
327
+ }
328
+ if (modeOrHandler === 'reject') {
329
+ return (input) => {
330
+ const state = this.exec(input);
331
+ if (state.matched)
332
+ return state.value;
333
+ return this.buildNonExhaustiveError(input, allSchemas);
334
+ };
335
+ }
336
+ // 'assert' and 'never' both throw at runtime
337
+ return (input) => {
338
+ const state = this.exec(input);
339
+ if (state.matched)
340
+ return state.value;
341
+ throw this.buildNonExhaustiveError(input, allSchemas);
342
+ };
343
+ }
344
+ buildNonExhaustiveError(input, allSchemas) {
345
+ const dispatch = this.getDispatch();
346
+ const errorOptions = { schemas: allSchemas };
347
+ if (dispatch) {
348
+ const discValue = isPlainObject(input)
349
+ ? input[dispatch.key]
350
+ : undefined;
351
+ const candidates = isPlainObject(input) ? dispatch.table.get(discValue) : null;
352
+ const matched = candidates !== null && candidates !== undefined;
353
+ errorOptions.discriminator = {
354
+ key: dispatch.key,
355
+ value: discValue,
356
+ expected: dispatch.expectedValues,
357
+ matched,
358
+ };
359
+ if (matched) {
360
+ // Discriminator matched but validation failed — narrow to just that branch's schemas
361
+ errorOptions.schemas = candidates.flatMap(i => {
362
+ const clause = this.clauses[i];
363
+ return 'schemas' in clause ? clause.schemas : [];
364
+ });
365
+ }
366
+ }
367
+ return new NonExhaustiveError(input, errorOptions);
368
+ }
369
+ /** Build a standard-schema FailureResult for use in `~standard.validate`. */
370
+ buildFailureResult(value) {
371
+ const allSchemas = this.clauses.flatMap(c => 'schemas' in c ? c.schemas : []);
372
+ const issues = [];
373
+ for (let i = 0; i < allSchemas.length; i += 1) {
374
+ try {
375
+ const result = validateSync(allSchemas[i], value);
376
+ if ('issues' in result && result.issues) {
377
+ for (const issue of result.issues) {
378
+ issues.push({
379
+ message: `Case ${i + 1}: ${issue.message}`,
380
+ path: issue.path,
381
+ });
382
+ }
383
+ }
384
+ }
385
+ catch {
386
+ // async schema or validation threw — skip
387
+ }
388
+ }
389
+ if (issues.length === 0) {
390
+ let displayedValue;
391
+ try {
392
+ displayedValue = JSON.stringify(value);
393
+ }
394
+ catch {
395
+ displayedValue = String(value);
396
+ }
397
+ issues.push({ message: `No schema matches value ${displayedValue}` });
398
+ }
399
+ return { issues };
400
+ }
401
+ execClause(clause, input) {
402
+ if ('when' in clause) {
403
+ const predicateResult = clause.when(input);
404
+ if (isPromiseLike(predicateResult)) {
405
+ throw new Error('Predicate returned a Promise. Use matchAsync.case(...) instead.');
406
+ }
407
+ if (!predicateResult)
408
+ return null;
409
+ return { matched: true, value: clause.handler(input, input) };
410
+ }
411
+ for (let j = 0; j < clause.schemas.length; j += 1) {
412
+ const result = matchSchemaSync(clause.schemas[j], input);
413
+ if (result === NO_MATCH)
414
+ continue;
415
+ if (result === ASYNC_REQUIRED) {
416
+ throw new Error('Schema validation returned a Promise. Use matchAsync.case(...) instead.');
417
+ }
418
+ if (clause.predicate) {
419
+ const guardResult = clause.predicate(result, input);
420
+ if (isPromiseLike(guardResult)) {
421
+ throw new Error('Guard returned a Promise. Use matchAsync.case(...) instead.');
422
+ }
423
+ if (!guardResult)
424
+ continue;
425
+ }
426
+ return { matched: true, value: clause.handler(result, input) };
427
+ }
428
+ return null;
429
+ }
430
+ exec(input) {
431
+ const dispatch = this.getDispatch();
432
+ if (dispatch && isPlainObject(input)) {
433
+ const discriminatorValue = input[dispatch.key];
434
+ const candidates = dispatch.table.get(discriminatorValue);
435
+ const candidateSet = candidates ? new Set(candidates) : null;
436
+ // Iterate in original clause order, but skip dispatched clauses whose
437
+ // discriminator value doesn't match. Fallback clauses and candidates
438
+ // are always tried, preserving first-match-wins semantics.
439
+ for (let i = 0; i < this.clauses.length; i += 1) {
440
+ if (!candidateSet?.has(i) && !dispatch.fallbackSet.has(i))
441
+ continue;
442
+ const result = this.execClause(this.clauses[i], input);
443
+ if (result)
444
+ return result;
445
+ }
446
+ return this.terminal;
447
+ }
448
+ // No dispatch table or non-object input: linear scan
449
+ for (let i = 0; i < this.clauses.length; i += 1) {
450
+ const result = this.execClause(this.clauses[i], input);
451
+ if (result)
452
+ return result;
453
+ }
454
+ return this.terminal;
455
+ }
456
+ }
457
+ class ReusableMatcherAsync {
458
+ constructor(terminal, clauses = []) {
459
+ this.terminal = terminal;
460
+ this.clauses = clauses;
461
+ this.dispatch = undefined;
462
+ this['~standard'] = {
463
+ version: 1,
464
+ vendor: 'schematch',
465
+ validate: async (value) => {
466
+ const state = await this.exec(value);
467
+ if (state.matched) {
468
+ return { value: state.value };
469
+ }
470
+ return this.buildFailureResult(value);
471
+ },
472
+ };
473
+ }
474
+ getDispatch() {
475
+ if (this.dispatch === undefined) {
476
+ this.dispatch = buildDispatchTable(this.clauses);
477
+ }
478
+ return this.dispatch;
479
+ }
480
+ case(...args) {
481
+ const length = args.length;
482
+ const handler = args[length - 1];
483
+ const hasGuard = length === 3 && typeof args[1] === 'function' && !looksLikeStandardSchema(args[1]);
484
+ const predicate = hasGuard ? args[1] : undefined;
485
+ const schemaEnd = hasGuard ? 1 : length - 1;
486
+ const schemas = args.slice(0, schemaEnd);
487
+ return new ReusableMatcherAsync(this.terminal, [...this.clauses, { schemas, predicate, handler }]);
488
+ }
489
+ when(predicate, handler) {
490
+ return new ReusableMatcherAsync(this.terminal, [...this.clauses, { when: predicate, handler }]);
491
+ }
492
+ output() {
493
+ return this;
494
+ }
495
+ default(modeOrHandler) {
496
+ const allSchemas = this.clauses.flatMap(c => 'schemas' in c ? c.schemas : []);
497
+ if (typeof modeOrHandler === 'function') {
498
+ return async (input) => {
499
+ const state = await this.exec(input);
500
+ if (state.matched)
501
+ return state.value;
502
+ return await modeOrHandler(input);
503
+ };
504
+ }
505
+ if (modeOrHandler === 'reject') {
506
+ return async (input) => {
507
+ const state = await this.exec(input);
508
+ if (state.matched)
509
+ return state.value;
510
+ return this.buildNonExhaustiveError(input, allSchemas);
511
+ };
512
+ }
513
+ // 'assert' and 'never' both throw at runtime
514
+ return async (input) => {
515
+ const state = await this.exec(input);
516
+ if (state.matched)
517
+ return state.value;
518
+ throw this.buildNonExhaustiveError(input, allSchemas);
519
+ };
520
+ }
521
+ buildNonExhaustiveError(input, allSchemas) {
522
+ const dispatch = this.getDispatch();
523
+ const errorOptions = { schemas: allSchemas };
524
+ if (dispatch) {
525
+ const discValue = isPlainObject(input)
526
+ ? input[dispatch.key]
527
+ : undefined;
528
+ const candidates = isPlainObject(input) ? dispatch.table.get(discValue) : null;
529
+ const matched = candidates !== null && candidates !== undefined;
530
+ errorOptions.discriminator = {
531
+ key: dispatch.key,
532
+ value: discValue,
533
+ expected: dispatch.expectedValues,
534
+ matched,
535
+ };
536
+ if (matched) {
537
+ errorOptions.schemas = candidates.flatMap(i => {
538
+ const clause = this.clauses[i];
539
+ return 'schemas' in clause ? clause.schemas : [];
540
+ });
541
+ }
542
+ }
543
+ return new NonExhaustiveError(input, errorOptions);
544
+ }
545
+ /** Build a standard-schema FailureResult for use in `~standard.validate`. */
546
+ buildFailureResult(value) {
547
+ const allSchemas = this.clauses.flatMap(c => 'schemas' in c ? c.schemas : []);
548
+ const issues = [];
549
+ for (let i = 0; i < allSchemas.length; i += 1) {
550
+ try {
551
+ const result = validateSync(allSchemas[i], value);
552
+ if ('issues' in result && result.issues) {
553
+ for (const issue of result.issues) {
554
+ issues.push({
555
+ message: `Case ${i + 1}: ${issue.message}`,
556
+ path: issue.path,
557
+ });
558
+ }
559
+ }
560
+ }
561
+ catch {
562
+ // async schema or validation threw — skip
563
+ }
564
+ }
565
+ if (issues.length === 0) {
566
+ let displayedValue;
567
+ try {
568
+ displayedValue = JSON.stringify(value);
569
+ }
570
+ catch {
571
+ displayedValue = String(value);
572
+ }
573
+ issues.push({ message: `No schema matches value ${displayedValue}` });
574
+ }
575
+ return { issues };
576
+ }
577
+ async execClause(clause, input) {
578
+ if ('when' in clause) {
579
+ if (!(await clause.when(input)))
580
+ return null;
581
+ return { matched: true, value: await clause.handler(input, input) };
582
+ }
583
+ for (let j = 0; j < clause.schemas.length; j += 1) {
584
+ const result = await matchSchemaAsync(clause.schemas[j], input);
585
+ if (result === NO_MATCH)
586
+ continue;
587
+ if (clause.predicate && !(await clause.predicate(result, input)))
588
+ continue;
589
+ return { matched: true, value: await clause.handler(result, input) };
590
+ }
591
+ return null;
592
+ }
593
+ async exec(input) {
594
+ const dispatch = this.getDispatch();
595
+ if (dispatch && isPlainObject(input)) {
596
+ const discriminatorValue = input[dispatch.key];
597
+ const candidates = dispatch.table.get(discriminatorValue);
598
+ const candidateSet = candidates ? new Set(candidates) : null;
599
+ for (let i = 0; i < this.clauses.length; i += 1) {
600
+ if (!candidateSet?.has(i) && !dispatch.fallbackSet.has(i))
601
+ continue;
602
+ const result = await this.execClause(this.clauses[i], input);
603
+ if (result)
604
+ return result;
605
+ }
606
+ return await this.terminal;
607
+ }
608
+ for (let i = 0; i < this.clauses.length; i += 1) {
609
+ const result = await this.execClause(this.clauses[i], input);
610
+ if (result)
611
+ return result;
612
+ }
613
+ return await this.terminal;
614
+ }
615
+ }
616
+ //# sourceMappingURL=match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../src/match.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { StandardSchemaV1 } from './contract.js';
2
+ export declare const NO_MATCH: unique symbol;
3
+ export declare const ASYNC_REQUIRED: unique symbol;
4
+ type NoMatch = typeof NO_MATCH;
5
+ type AsyncRequired = typeof ASYNC_REQUIRED;
6
+ type SyncMatchResult = unknown | NoMatch | AsyncRequired;
7
+ type AsyncMatchResult = Promise<unknown | NoMatch>;
8
+ export declare const matchSchemaSync: (schema: StandardSchemaV1, value: unknown) => SyncMatchResult;
9
+ export declare const matchSchemaAsync: (schema: StandardSchemaV1, value: unknown) => AsyncMatchResult;
10
+ export type DiscriminatorInfo = {
11
+ key: string;
12
+ value: unknown;
13
+ };
14
+ /**
15
+ * Attempts to extract a discriminator (a literal-typed property) from an object schema.
16
+ * Returns the key name and literal value if found, or null.
17
+ * Works across zod, valibot, and arktype by inspecting library-specific internals.
18
+ */
19
+ export declare const extractDiscriminator: (schema: StandardSchemaV1) => DiscriminatorInfo | null;
20
+ declare const isPlainObject: (value: unknown) => value is Record<string, unknown>;
21
+ export { isPlainObject };