bupkis 0.18.0 → 0.18.2
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 +14 -0
- package/package.json +1 -4
- package/src/assertion/assertion-types.ts +4 -4
- package/src/assertion/impl/async-parametric.ts +4 -21
- package/src/assertion/impl/sync-parametric.ts +5 -17
- package/src/expect.ts +0 -4
- package/src/guards.ts +24 -24
- package/src/internal-schema.ts +16 -32
- package/src/value-to-schema.ts +1 -1
- package/dist/assertion/assertion-async.cjs +0 -268
- package/dist/assertion/assertion-async.cjs.map +0 -1
- package/dist/assertion/assertion-async.d.cts +0 -40
- package/dist/assertion/assertion-async.d.cts.map +0 -1
- package/dist/assertion/assertion-async.d.ts +0 -40
- package/dist/assertion/assertion-async.d.ts.map +0 -1
- package/dist/assertion/assertion-async.js +0 -259
- package/dist/assertion/assertion-async.js.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.cjs +0 -132
- package/dist/assertion/assertion-standard-schema-async.cjs.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.d.cts +0 -52
- package/dist/assertion/assertion-standard-schema-async.d.cts.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.d.ts +0 -52
- package/dist/assertion/assertion-standard-schema-async.d.ts.map +0 -1
- package/dist/assertion/assertion-standard-schema-async.js +0 -128
- package/dist/assertion/assertion-standard-schema-async.js.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.cjs +0 -141
- package/dist/assertion/assertion-standard-schema-sync.cjs.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.d.cts +0 -52
- package/dist/assertion/assertion-standard-schema-sync.d.cts.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.d.ts +0 -52
- package/dist/assertion/assertion-standard-schema-sync.d.ts.map +0 -1
- package/dist/assertion/assertion-standard-schema-sync.js +0 -137
- package/dist/assertion/assertion-standard-schema-sync.js.map +0 -1
- package/dist/assertion/assertion-sync.cjs +0 -284
- package/dist/assertion/assertion-sync.cjs.map +0 -1
- package/dist/assertion/assertion-sync.d.cts +0 -60
- package/dist/assertion/assertion-sync.d.cts.map +0 -1
- package/dist/assertion/assertion-sync.d.ts +0 -60
- package/dist/assertion/assertion-sync.d.ts.map +0 -1
- package/dist/assertion/assertion-sync.js +0 -275
- package/dist/assertion/assertion-sync.js.map +0 -1
- package/dist/assertion/assertion-types.cjs +0 -20
- package/dist/assertion/assertion-types.cjs.map +0 -1
- package/dist/assertion/assertion-types.d.cts +0 -1086
- package/dist/assertion/assertion-types.d.cts.map +0 -1
- package/dist/assertion/assertion-types.d.ts +0 -1086
- package/dist/assertion/assertion-types.d.ts.map +0 -1
- package/dist/assertion/assertion-types.js +0 -19
- package/dist/assertion/assertion-types.js.map +0 -1
- package/dist/assertion/assertion.cjs +0 -382
- package/dist/assertion/assertion.cjs.map +0 -1
- package/dist/assertion/assertion.d.cts +0 -109
- package/dist/assertion/assertion.d.cts.map +0 -1
- package/dist/assertion/assertion.d.ts +0 -109
- package/dist/assertion/assertion.d.ts.map +0 -1
- package/dist/assertion/assertion.js +0 -375
- package/dist/assertion/assertion.js.map +0 -1
- package/dist/assertion/create.cjs +0 -148
- package/dist/assertion/create.cjs.map +0 -1
- package/dist/assertion/create.d.cts +0 -85
- package/dist/assertion/create.d.cts.map +0 -1
- package/dist/assertion/create.d.ts +0 -85
- package/dist/assertion/create.d.ts.map +0 -1
- package/dist/assertion/create.js +0 -143
- package/dist/assertion/create.js.map +0 -1
- package/dist/assertion/format-assertion-failure.cjs +0 -63
- package/dist/assertion/format-assertion-failure.cjs.map +0 -1
- package/dist/assertion/format-assertion-failure.d.cts +0 -21
- package/dist/assertion/format-assertion-failure.d.cts.map +0 -1
- package/dist/assertion/format-assertion-failure.d.ts +0 -21
- package/dist/assertion/format-assertion-failure.d.ts.map +0 -1
- package/dist/assertion/format-assertion-failure.js +0 -59
- package/dist/assertion/format-assertion-failure.js.map +0 -1
- package/dist/assertion/impl/assertion-util.cjs +0 -68
- package/dist/assertion/impl/assertion-util.cjs.map +0 -1
- package/dist/assertion/impl/assertion-util.d.cts +0 -36
- package/dist/assertion/impl/assertion-util.d.cts.map +0 -1
- package/dist/assertion/impl/assertion-util.d.ts +0 -36
- package/dist/assertion/impl/assertion-util.d.ts.map +0 -1
- package/dist/assertion/impl/assertion-util.js +0 -62
- package/dist/assertion/impl/assertion-util.js.map +0 -1
- package/dist/assertion/impl/async-iterable.cjs +0 -627
- package/dist/assertion/impl/async-iterable.cjs.map +0 -1
- package/dist/assertion/impl/async-iterable.d.cts +0 -406
- package/dist/assertion/impl/async-iterable.d.cts.map +0 -1
- package/dist/assertion/impl/async-iterable.d.ts +0 -406
- package/dist/assertion/impl/async-iterable.d.ts.map +0 -1
- package/dist/assertion/impl/async-iterable.js +0 -624
- package/dist/assertion/impl/async-iterable.js.map +0 -1
- package/dist/assertion/impl/async-parametric.cjs +0 -423
- package/dist/assertion/impl/async-parametric.cjs.map +0 -1
- package/dist/assertion/impl/async-parametric.d.cts +0 -278
- package/dist/assertion/impl/async-parametric.d.cts.map +0 -1
- package/dist/assertion/impl/async-parametric.d.ts +0 -278
- package/dist/assertion/impl/async-parametric.d.ts.map +0 -1
- package/dist/assertion/impl/async-parametric.js +0 -420
- package/dist/assertion/impl/async-parametric.js.map +0 -1
- package/dist/assertion/impl/async.cjs +0 -56
- package/dist/assertion/impl/async.cjs.map +0 -1
- package/dist/assertion/impl/async.d.cts +0 -179
- package/dist/assertion/impl/async.d.cts.map +0 -1
- package/dist/assertion/impl/async.d.ts +0 -179
- package/dist/assertion/impl/async.d.ts.map +0 -1
- package/dist/assertion/impl/async.js +0 -39
- package/dist/assertion/impl/async.js.map +0 -1
- package/dist/assertion/impl/index.cjs +0 -37
- package/dist/assertion/impl/index.cjs.map +0 -1
- package/dist/assertion/impl/index.d.cts +0 -21
- package/dist/assertion/impl/index.d.cts.map +0 -1
- package/dist/assertion/impl/index.d.ts +0 -21
- package/dist/assertion/impl/index.d.ts.map +0 -1
- package/dist/assertion/impl/index.js +0 -21
- package/dist/assertion/impl/index.js.map +0 -1
- package/dist/assertion/impl/iteration-util.cjs +0 -297
- package/dist/assertion/impl/iteration-util.cjs.map +0 -1
- package/dist/assertion/impl/iteration-util.d.cts +0 -12
- package/dist/assertion/impl/iteration-util.d.cts.map +0 -1
- package/dist/assertion/impl/iteration-util.d.ts +0 -12
- package/dist/assertion/impl/iteration-util.d.ts.map +0 -1
- package/dist/assertion/impl/iteration-util.js +0 -282
- package/dist/assertion/impl/iteration-util.js.map +0 -1
- package/dist/assertion/impl/snapshot.cjs +0 -276
- package/dist/assertion/impl/snapshot.cjs.map +0 -1
- package/dist/assertion/impl/snapshot.d.cts +0 -278
- package/dist/assertion/impl/snapshot.d.cts.map +0 -1
- package/dist/assertion/impl/snapshot.d.ts +0 -278
- package/dist/assertion/impl/snapshot.d.ts.map +0 -1
- package/dist/assertion/impl/snapshot.js +0 -273
- package/dist/assertion/impl/snapshot.js.map +0 -1
- package/dist/assertion/impl/sync-basic.cjs +0 -553
- package/dist/assertion/impl/sync-basic.cjs.map +0 -1
- package/dist/assertion/impl/sync-basic.d.cts +0 -528
- package/dist/assertion/impl/sync-basic.d.cts.map +0 -1
- package/dist/assertion/impl/sync-basic.d.ts +0 -528
- package/dist/assertion/impl/sync-basic.d.ts.map +0 -1
- package/dist/assertion/impl/sync-basic.js +0 -550
- package/dist/assertion/impl/sync-basic.js.map +0 -1
- package/dist/assertion/impl/sync-collection.cjs +0 -856
- package/dist/assertion/impl/sync-collection.cjs.map +0 -1
- package/dist/assertion/impl/sync-collection.d.cts +0 -607
- package/dist/assertion/impl/sync-collection.d.cts.map +0 -1
- package/dist/assertion/impl/sync-collection.d.ts +0 -607
- package/dist/assertion/impl/sync-collection.d.ts.map +0 -1
- package/dist/assertion/impl/sync-collection.js +0 -850
- package/dist/assertion/impl/sync-collection.js.map +0 -1
- package/dist/assertion/impl/sync-date.cjs +0 -341
- package/dist/assertion/impl/sync-date.cjs.map +0 -1
- package/dist/assertion/impl/sync-date.d.cts +0 -209
- package/dist/assertion/impl/sync-date.d.cts.map +0 -1
- package/dist/assertion/impl/sync-date.d.ts +0 -209
- package/dist/assertion/impl/sync-date.d.ts.map +0 -1
- package/dist/assertion/impl/sync-date.js +0 -338
- package/dist/assertion/impl/sync-date.js.map +0 -1
- package/dist/assertion/impl/sync-esoteric.cjs +0 -214
- package/dist/assertion/impl/sync-esoteric.cjs.map +0 -1
- package/dist/assertion/impl/sync-esoteric.d.cts +0 -191
- package/dist/assertion/impl/sync-esoteric.d.cts.map +0 -1
- package/dist/assertion/impl/sync-esoteric.d.ts +0 -191
- package/dist/assertion/impl/sync-esoteric.d.ts.map +0 -1
- package/dist/assertion/impl/sync-esoteric.js +0 -211
- package/dist/assertion/impl/sync-esoteric.js.map +0 -1
- package/dist/assertion/impl/sync-iterable.cjs +0 -512
- package/dist/assertion/impl/sync-iterable.cjs.map +0 -1
- package/dist/assertion/impl/sync-iterable.d.cts +0 -334
- package/dist/assertion/impl/sync-iterable.d.cts.map +0 -1
- package/dist/assertion/impl/sync-iterable.d.ts +0 -334
- package/dist/assertion/impl/sync-iterable.d.ts.map +0 -1
- package/dist/assertion/impl/sync-iterable.js +0 -509
- package/dist/assertion/impl/sync-iterable.js.map +0 -1
- package/dist/assertion/impl/sync-parametric.cjs +0 -812
- package/dist/assertion/impl/sync-parametric.cjs.map +0 -1
- package/dist/assertion/impl/sync-parametric.d.cts +0 -560
- package/dist/assertion/impl/sync-parametric.d.cts.map +0 -1
- package/dist/assertion/impl/sync-parametric.d.ts +0 -560
- package/dist/assertion/impl/sync-parametric.d.ts.map +0 -1
- package/dist/assertion/impl/sync-parametric.js +0 -809
- package/dist/assertion/impl/sync-parametric.js.map +0 -1
- package/dist/assertion/impl/sync.cjs +0 -214
- package/dist/assertion/impl/sync.cjs.map +0 -1
- package/dist/assertion/impl/sync.d.cts +0 -512
- package/dist/assertion/impl/sync.d.cts.map +0 -1
- package/dist/assertion/impl/sync.d.ts +0 -512
- package/dist/assertion/impl/sync.d.ts.map +0 -1
- package/dist/assertion/impl/sync.js +0 -197
- package/dist/assertion/impl/sync.js.map +0 -1
- package/dist/assertion/index.cjs +0 -38
- package/dist/assertion/index.cjs.map +0 -1
- package/dist/assertion/index.d.cts +0 -18
- package/dist/assertion/index.d.cts.map +0 -1
- package/dist/assertion/index.d.ts +0 -18
- package/dist/assertion/index.d.ts.map +0 -1
- package/dist/assertion/index.js +0 -17
- package/dist/assertion/index.js.map +0 -1
- package/dist/assertion/slotify.cjs +0 -165
- package/dist/assertion/slotify.cjs.map +0 -1
- package/dist/assertion/slotify.d.cts +0 -11
- package/dist/assertion/slotify.d.cts.map +0 -1
- package/dist/assertion/slotify.d.ts +0 -11
- package/dist/assertion/slotify.d.ts.map +0 -1
- package/dist/assertion/slotify.js +0 -161
- package/dist/assertion/slotify.js.map +0 -1
- package/dist/bootstrap.cjs +0 -43
- package/dist/bootstrap.cjs.map +0 -1
- package/dist/bootstrap.d.cts +0 -27
- package/dist/bootstrap.d.cts.map +0 -1
- package/dist/bootstrap.d.ts +0 -27
- package/dist/bootstrap.d.ts.map +0 -1
- package/dist/bootstrap.js +0 -40
- package/dist/bootstrap.js.map +0 -1
- package/dist/constant.cjs +0 -82
- package/dist/constant.cjs.map +0 -1
- package/dist/constant.d.cts +0 -69
- package/dist/constant.d.cts.map +0 -1
- package/dist/constant.d.ts +0 -69
- package/dist/constant.d.ts.map +0 -1
- package/dist/constant.js +0 -79
- package/dist/constant.js.map +0 -1
- package/dist/diff.cjs +0 -340
- package/dist/diff.cjs.map +0 -1
- package/dist/diff.d.cts +0 -51
- package/dist/diff.d.cts.map +0 -1
- package/dist/diff.d.ts +0 -51
- package/dist/diff.d.ts.map +0 -1
- package/dist/diff.js +0 -334
- package/dist/diff.js.map +0 -1
- package/dist/error.cjs +0 -204
- package/dist/error.cjs.map +0 -1
- package/dist/error.d.cts +0 -212
- package/dist/error.d.cts.map +0 -1
- package/dist/error.d.ts +0 -212
- package/dist/error.d.ts.map +0 -1
- package/dist/error.js +0 -191
- package/dist/error.js.map +0 -1
- package/dist/expect.cjs +0 -590
- package/dist/expect.cjs.map +0 -1
- package/dist/expect.d.cts +0 -138
- package/dist/expect.d.cts.map +0 -1
- package/dist/expect.d.ts +0 -138
- package/dist/expect.d.ts.map +0 -1
- package/dist/expect.js +0 -582
- package/dist/expect.js.map +0 -1
- package/dist/guards.cjs +0 -297
- package/dist/guards.cjs.map +0 -1
- package/dist/guards.d.cts +0 -231
- package/dist/guards.d.cts.map +0 -1
- package/dist/guards.d.ts +0 -231
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -277
- package/dist/guards.js.map +0 -1
- package/dist/index.cjs +0 -111
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -448
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.ts +0 -448
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -71
- package/dist/index.js.map +0 -1
- package/dist/internal-schema.cjs +0 -253
- package/dist/internal-schema.cjs.map +0 -1
- package/dist/internal-schema.d.cts +0 -8
- package/dist/internal-schema.d.cts.map +0 -1
- package/dist/internal-schema.d.ts +0 -8
- package/dist/internal-schema.d.ts.map +0 -1
- package/dist/internal-schema.js +0 -248
- package/dist/internal-schema.js.map +0 -1
- package/dist/metadata.cjs +0 -57
- package/dist/metadata.cjs.map +0 -1
- package/dist/metadata.d.cts +0 -27
- package/dist/metadata.d.cts.map +0 -1
- package/dist/metadata.d.ts +0 -27
- package/dist/metadata.d.ts.map +0 -1
- package/dist/metadata.js +0 -54
- package/dist/metadata.js.map +0 -1
- package/dist/schema.cjs +0 -1522
- package/dist/schema.cjs.map +0 -1
- package/dist/schema.d.cts +0 -1196
- package/dist/schema.d.cts.map +0 -1
- package/dist/schema.d.ts +0 -1196
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js +0 -1516
- package/dist/schema.js.map +0 -1
- package/dist/snapshot/adapter.cjs +0 -31
- package/dist/snapshot/adapter.cjs.map +0 -1
- package/dist/snapshot/adapter.d.cts +0 -258
- package/dist/snapshot/adapter.d.cts.map +0 -1
- package/dist/snapshot/adapter.d.ts +0 -258
- package/dist/snapshot/adapter.d.ts.map +0 -1
- package/dist/snapshot/adapter.js +0 -27
- package/dist/snapshot/adapter.js.map +0 -1
- package/dist/snapshot/adapters/fallback.cjs +0 -453
- package/dist/snapshot/adapters/fallback.cjs.map +0 -1
- package/dist/snapshot/adapters/fallback.d.cts +0 -185
- package/dist/snapshot/adapters/fallback.d.cts.map +0 -1
- package/dist/snapshot/adapters/fallback.d.ts +0 -185
- package/dist/snapshot/adapters/fallback.d.ts.map +0 -1
- package/dist/snapshot/adapters/fallback.js +0 -446
- package/dist/snapshot/adapters/fallback.js.map +0 -1
- package/dist/snapshot/adapters/node-test.cjs +0 -301
- package/dist/snapshot/adapters/node-test.cjs.map +0 -1
- package/dist/snapshot/adapters/node-test.d.cts +0 -131
- package/dist/snapshot/adapters/node-test.d.cts.map +0 -1
- package/dist/snapshot/adapters/node-test.d.ts +0 -131
- package/dist/snapshot/adapters/node-test.d.ts.map +0 -1
- package/dist/snapshot/adapters/node-test.js +0 -297
- package/dist/snapshot/adapters/node-test.js.map +0 -1
- package/dist/snapshot/index.cjs +0 -61
- package/dist/snapshot/index.cjs.map +0 -1
- package/dist/snapshot/index.d.cts +0 -40
- package/dist/snapshot/index.d.cts.map +0 -1
- package/dist/snapshot/index.d.ts +0 -40
- package/dist/snapshot/index.d.ts.map +0 -1
- package/dist/snapshot/index.js +0 -44
- package/dist/snapshot/index.js.map +0 -1
- package/dist/snapshot/node-version.cjs +0 -49
- package/dist/snapshot/node-version.cjs.map +0 -1
- package/dist/snapshot/node-version.d.cts +0 -34
- package/dist/snapshot/node-version.d.cts.map +0 -1
- package/dist/snapshot/node-version.d.ts +0 -34
- package/dist/snapshot/node-version.d.ts.map +0 -1
- package/dist/snapshot/node-version.js +0 -44
- package/dist/snapshot/node-version.js.map +0 -1
- package/dist/snapshot/select-adapter.cjs +0 -170
- package/dist/snapshot/select-adapter.cjs.map +0 -1
- package/dist/snapshot/select-adapter.d.cts +0 -128
- package/dist/snapshot/select-adapter.d.cts.map +0 -1
- package/dist/snapshot/select-adapter.d.ts +0 -128
- package/dist/snapshot/select-adapter.d.ts.map +0 -1
- package/dist/snapshot/select-adapter.js +0 -164
- package/dist/snapshot/select-adapter.js.map +0 -1
- package/dist/snapshot/serializer.cjs +0 -246
- package/dist/snapshot/serializer.cjs.map +0 -1
- package/dist/snapshot/serializer.d.cts +0 -126
- package/dist/snapshot/serializer.d.cts.map +0 -1
- package/dist/snapshot/serializer.d.ts +0 -126
- package/dist/snapshot/serializer.d.ts.map +0 -1
- package/dist/snapshot/serializer.js +0 -238
- package/dist/snapshot/serializer.js.map +0 -1
- package/dist/standard-schema.cjs +0 -13
- package/dist/standard-schema.cjs.map +0 -1
- package/dist/standard-schema.d.cts +0 -192
- package/dist/standard-schema.d.cts.map +0 -1
- package/dist/standard-schema.d.ts +0 -192
- package/dist/standard-schema.d.ts.map +0 -1
- package/dist/standard-schema.js +0 -12
- package/dist/standard-schema.js.map +0 -1
- package/dist/types.cjs +0 -22
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.cts +0 -905
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.ts +0 -905
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -21
- package/dist/types.js.map +0 -1
- package/dist/use.cjs +0 -240
- package/dist/use.cjs.map +0 -1
- package/dist/use.d.cts +0 -8
- package/dist/use.d.cts.map +0 -1
- package/dist/use.d.ts +0 -8
- package/dist/use.d.ts.map +0 -1
- package/dist/use.js +0 -236
- package/dist/use.js.map +0 -1
- package/dist/util.cjs +0 -255
- package/dist/util.cjs.map +0 -1
- package/dist/util.d.cts +0 -141
- package/dist/util.d.cts.map +0 -1
- package/dist/util.d.ts +0 -141
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js +0 -234
- package/dist/util.js.map +0 -1
- package/dist/value-to-schema.cjs +0 -537
- package/dist/value-to-schema.cjs.map +0 -1
- package/dist/value-to-schema.d.cts +0 -144
- package/dist/value-to-schema.d.cts.map +0 -1
- package/dist/value-to-schema.d.ts +0 -144
- package/dist/value-to-schema.d.ts.map +0 -1
- package/dist/value-to-schema.js +0 -533
- package/dist/value-to-schema.js.map +0 -1
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Asynchronous Standard Schema assertion implementation.
|
|
3
|
-
*
|
|
4
|
-
* This module provides the `BupkisAssertionStandardSchemaAsync` class for
|
|
5
|
-
* assertions implemented using Standard Schema v1 compliant validators that may
|
|
6
|
-
* perform asynchronous validation.
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
import { BupkisAssertion } from "./assertion.js";
|
|
11
|
-
/**
|
|
12
|
-
* An asynchronous assertion implemented using a Standard Schema v1 validator.
|
|
13
|
-
*
|
|
14
|
-
* This class handles async schema-based assertions where the implementation is
|
|
15
|
-
* any Standard Schema compliant validator that may perform asynchronous
|
|
16
|
-
* validation. It optimizes validation by caching the subject validation result
|
|
17
|
-
* during `parseValuesAsync()` to avoid double parsing.
|
|
18
|
-
*
|
|
19
|
-
* @template Parts - The assertion parts tuple defining structure
|
|
20
|
-
* @template Impl - The Standard Schema implementation
|
|
21
|
-
* @template Slots - The derived validation slots
|
|
22
|
-
*/
|
|
23
|
-
export class BupkisAssertionStandardSchemaAsync extends BupkisAssertion {
|
|
24
|
-
/**
|
|
25
|
-
* Executes the assertion asynchronously against validated values.
|
|
26
|
-
*
|
|
27
|
-
* If validation was already performed during `parseValuesAsync()` and cached,
|
|
28
|
-
* reuses that result. Otherwise, performs validation using the Standard
|
|
29
|
-
* Schema's validate() method (which may return a Promise).
|
|
30
|
-
*
|
|
31
|
-
* @param parsedValues - The parsed and validated values
|
|
32
|
-
* @param _args - Original raw arguments (unused)
|
|
33
|
-
* @param stackStartFn - Function to use as stack trace start point
|
|
34
|
-
* @param parseResult - Optional cached parse result from `parseValuesAsync()`
|
|
35
|
-
* @throws {AssertionError} If validation fails
|
|
36
|
-
*/
|
|
37
|
-
async executeAsync(parsedValues, _args, stackStartFn, parseResult) {
|
|
38
|
-
const cachedValidation = parseResult?.success
|
|
39
|
-
? parseResult.subjectValidationResult
|
|
40
|
-
: undefined;
|
|
41
|
-
if (cachedValidation && !cachedValidation.success) {
|
|
42
|
-
if ('issues' in cachedValidation) {
|
|
43
|
-
throw this.fromStandardSchemaIssues(cachedValidation.issues, stackStartFn, parsedValues);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const [subject] = parsedValues;
|
|
47
|
-
const result = this.impl['~standard'].validate(subject);
|
|
48
|
-
const validationResult = result instanceof Promise ? await result : result;
|
|
49
|
-
if (validationResult.issues) {
|
|
50
|
-
throw this.fromStandardSchemaIssues(validationResult.issues, stackStartFn, parsedValues);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Parses raw arguments asynchronously against slots with optimized caching.
|
|
55
|
-
*
|
|
56
|
-
* For simple schema assertions (subject + phrase literals only), this method
|
|
57
|
-
* validates the subject during parsing and caches the result to avoid double
|
|
58
|
-
* validation in `executeAsync()`.
|
|
59
|
-
*
|
|
60
|
-
* @param args - Raw arguments provided to `expectAsync()`
|
|
61
|
-
* @returns Promise resolving to parse result with cached validation
|
|
62
|
-
*/
|
|
63
|
-
async parseValuesAsync(args) {
|
|
64
|
-
const { slots } = this;
|
|
65
|
-
const parsedValues = [];
|
|
66
|
-
const mismatch = this.maybeParseValuesArgMismatch(args);
|
|
67
|
-
if (mismatch) {
|
|
68
|
-
return mismatch;
|
|
69
|
-
}
|
|
70
|
-
let exactMatch = true;
|
|
71
|
-
let subjectValidationResult;
|
|
72
|
-
for (let i = 0; i < slots.length; i++) {
|
|
73
|
-
const slot = slots[i];
|
|
74
|
-
const arg = args[i];
|
|
75
|
-
const parsedLiteralResult = this.parseSlotForLiteral(slot, i, arg);
|
|
76
|
-
if (parsedLiteralResult === true) {
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
else if (parsedLiteralResult !== false) {
|
|
80
|
-
return parsedLiteralResult;
|
|
81
|
-
}
|
|
82
|
-
if (i === 0 &&
|
|
83
|
-
(slot.def.type === 'unknown' || slot.def.type === 'any') &&
|
|
84
|
-
this.isSimpleSchemaAssertion()) {
|
|
85
|
-
const result = this.impl['~standard'].validate(arg);
|
|
86
|
-
const validationResult = result instanceof Promise ? await result : result;
|
|
87
|
-
if (validationResult.issues) {
|
|
88
|
-
subjectValidationResult = {
|
|
89
|
-
issues: validationResult.issues,
|
|
90
|
-
success: false,
|
|
91
|
-
};
|
|
92
|
-
parsedValues.push(arg);
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
subjectValidationResult = {
|
|
96
|
-
data: validationResult.value,
|
|
97
|
-
success: true,
|
|
98
|
-
};
|
|
99
|
-
parsedValues.push(validationResult.value);
|
|
100
|
-
}
|
|
101
|
-
exactMatch = false;
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
|
-
if (slot.def.type === 'unknown' || slot.def.type === 'any') {
|
|
105
|
-
parsedValues.push(arg);
|
|
106
|
-
exactMatch = false;
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
const result = await slot.safeParseAsync(arg);
|
|
110
|
-
if (!result.success) {
|
|
111
|
-
return {
|
|
112
|
-
success: false,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
parsedValues.push(result.data);
|
|
116
|
-
}
|
|
117
|
-
const result = {
|
|
118
|
-
exactMatch,
|
|
119
|
-
parsedValues: parsedValues,
|
|
120
|
-
success: true,
|
|
121
|
-
};
|
|
122
|
-
if (subjectValidationResult) {
|
|
123
|
-
result.subjectValidationResult = subjectValidationResult;
|
|
124
|
-
}
|
|
125
|
-
return result;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
//# sourceMappingURL=assertion-standard-schema-async.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-standard-schema-async.js","sourceRoot":"","sources":["../../src/assertion/assertion-standard-schema-async.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Synchronous Standard Schema assertion implementation.
|
|
4
|
-
*
|
|
5
|
-
* This module provides the `BupkisAssertionStandardSchemaSync` class for
|
|
6
|
-
* assertions implemented using Standard Schema v1 compliant validators from any
|
|
7
|
-
* library (Valibot, ArkType, etc.).
|
|
8
|
-
*
|
|
9
|
-
* @packageDocumentation
|
|
10
|
-
*/
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.BupkisAssertionStandardSchemaSync = void 0;
|
|
13
|
-
const assertion_js_1 = require("./assertion.cjs");
|
|
14
|
-
/**
|
|
15
|
-
* A synchronous assertion implemented using a Standard Schema v1 validator.
|
|
16
|
-
*
|
|
17
|
-
* This class handles schema-based assertions where the implementation is any
|
|
18
|
-
* Standard Schema compliant validator (not just Zod). It optimizes validation
|
|
19
|
-
* by caching the subject validation result during `parseValues()` to avoid
|
|
20
|
-
* double parsing.
|
|
21
|
-
*
|
|
22
|
-
* @template Parts - The assertion parts tuple defining structure
|
|
23
|
-
* @template Impl - The Standard Schema implementation
|
|
24
|
-
* @template Slots - The derived validation slots
|
|
25
|
-
*/
|
|
26
|
-
class BupkisAssertionStandardSchemaSync extends assertion_js_1.BupkisAssertion {
|
|
27
|
-
/**
|
|
28
|
-
* Executes the assertion against validated values.
|
|
29
|
-
*
|
|
30
|
-
* If validation was already performed during `parseValues()` and cached,
|
|
31
|
-
* reuses that result. Otherwise, performs validation using the Standard
|
|
32
|
-
* Schema's validate() method.
|
|
33
|
-
*
|
|
34
|
-
* @param parsedValues - The parsed and validated values
|
|
35
|
-
* @param _args - Original raw arguments (unused)
|
|
36
|
-
* @param stackStartFn - Function to use as stack trace start point
|
|
37
|
-
* @param parseResult - Optional cached parse result from `parseValues()`
|
|
38
|
-
* @throws {AssertionError} If validation fails
|
|
39
|
-
*/
|
|
40
|
-
execute(parsedValues, _args, stackStartFn, parseResult) {
|
|
41
|
-
const cachedValidation = parseResult?.success
|
|
42
|
-
? parseResult.subjectValidationResult
|
|
43
|
-
: undefined;
|
|
44
|
-
if (cachedValidation) {
|
|
45
|
-
if (!cachedValidation.success) {
|
|
46
|
-
if ('issues' in cachedValidation) {
|
|
47
|
-
throw this.fromStandardSchemaIssues(cachedValidation.issues, stackStartFn, parsedValues);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const [subject] = parsedValues;
|
|
53
|
-
const result = this.impl['~standard'].validate(subject);
|
|
54
|
-
if (result instanceof Promise) {
|
|
55
|
-
result.catch(() => {
|
|
56
|
-
/* prevent unhandled rejection */
|
|
57
|
-
});
|
|
58
|
-
throw new Error(`Standard Schema returned a Promise in sync context; use expectAsync() instead`);
|
|
59
|
-
}
|
|
60
|
-
if (result.issues) {
|
|
61
|
-
throw this.fromStandardSchemaIssues(result.issues, stackStartFn, parsedValues);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Parses raw arguments against slots with optimized validation caching.
|
|
66
|
-
*
|
|
67
|
-
* For simple schema assertions (subject + phrase literals only), this method
|
|
68
|
-
* validates the subject during parsing and caches the result to avoid double
|
|
69
|
-
* validation in `execute()`.
|
|
70
|
-
*
|
|
71
|
-
* @param args - Raw arguments provided to `expect()`
|
|
72
|
-
* @returns Parse result indicating success/failure and cached validation
|
|
73
|
-
*/
|
|
74
|
-
parseValues(args) {
|
|
75
|
-
const { slots } = this;
|
|
76
|
-
const parsedValues = [];
|
|
77
|
-
const mismatch = this.maybeParseValuesArgMismatch(args);
|
|
78
|
-
if (mismatch) {
|
|
79
|
-
return mismatch;
|
|
80
|
-
}
|
|
81
|
-
let exactMatch = true;
|
|
82
|
-
let subjectValidationResult;
|
|
83
|
-
for (let i = 0; i < slots.length; i++) {
|
|
84
|
-
const slot = slots[i];
|
|
85
|
-
const arg = args[i];
|
|
86
|
-
const parsedLiteralResult = this.parseSlotForLiteral(slot, i, arg);
|
|
87
|
-
if (parsedLiteralResult === true) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
else if (parsedLiteralResult !== false) {
|
|
91
|
-
return parsedLiteralResult;
|
|
92
|
-
}
|
|
93
|
-
if (i === 0 &&
|
|
94
|
-
(slot.def.type === 'unknown' || slot.def.type === 'any') &&
|
|
95
|
-
this.isSimpleSchemaAssertion()) {
|
|
96
|
-
const result = this.impl['~standard'].validate(arg);
|
|
97
|
-
if (result instanceof Promise) {
|
|
98
|
-
result.catch(() => {
|
|
99
|
-
/* prevent unhandled rejection */
|
|
100
|
-
});
|
|
101
|
-
return {
|
|
102
|
-
success: false,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
if (result.issues) {
|
|
106
|
-
subjectValidationResult = { issues: result.issues, success: false };
|
|
107
|
-
parsedValues.push(arg);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
subjectValidationResult = { data: result.value, success: true };
|
|
111
|
-
parsedValues.push(result.value);
|
|
112
|
-
}
|
|
113
|
-
exactMatch = false;
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
if (slot.def.type === 'unknown' || slot.def.type === 'any') {
|
|
117
|
-
parsedValues.push(arg);
|
|
118
|
-
exactMatch = false;
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
const result = slot.safeParse(arg);
|
|
122
|
-
if (!result.success) {
|
|
123
|
-
return {
|
|
124
|
-
success: false,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
parsedValues.push(arg);
|
|
128
|
-
}
|
|
129
|
-
const result = {
|
|
130
|
-
exactMatch,
|
|
131
|
-
parsedValues: parsedValues,
|
|
132
|
-
success: true,
|
|
133
|
-
};
|
|
134
|
-
if (subjectValidationResult) {
|
|
135
|
-
result.subjectValidationResult = subjectValidationResult;
|
|
136
|
-
}
|
|
137
|
-
return result;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
exports.BupkisAssertionStandardSchemaSync = BupkisAssertionStandardSchemaSync;
|
|
141
|
-
//# sourceMappingURL=assertion-standard-schema-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-standard-schema-sync.js","sourceRoot":"","sources":["../../src/assertion/assertion-standard-schema-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Synchronous Standard Schema assertion implementation.
|
|
3
|
-
*
|
|
4
|
-
* This module provides the `BupkisAssertionStandardSchemaSync` class for
|
|
5
|
-
* assertions implemented using Standard Schema v1 compliant validators from any
|
|
6
|
-
* library (Valibot, ArkType, etc.).
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
import type { StandardSchemaV1 } from "../standard-schema.cjs";
|
|
11
|
-
import type { AssertionParts, AssertionSlots, AssertionStandardSchemaSync, ParsedResult, ParsedValues } from "./assertion-types.cjs";
|
|
12
|
-
import { BupkisAssertion } from "./assertion.cjs";
|
|
13
|
-
/**
|
|
14
|
-
* A synchronous assertion implemented using a Standard Schema v1 validator.
|
|
15
|
-
*
|
|
16
|
-
* This class handles schema-based assertions where the implementation is any
|
|
17
|
-
* Standard Schema compliant validator (not just Zod). It optimizes validation
|
|
18
|
-
* by caching the subject validation result during `parseValues()` to avoid
|
|
19
|
-
* double parsing.
|
|
20
|
-
*
|
|
21
|
-
* @template Parts - The assertion parts tuple defining structure
|
|
22
|
-
* @template Impl - The Standard Schema implementation
|
|
23
|
-
* @template Slots - The derived validation slots
|
|
24
|
-
*/
|
|
25
|
-
export declare class BupkisAssertionStandardSchemaSync<Parts extends AssertionParts, Impl extends StandardSchemaV1, Slots extends AssertionSlots<Parts>> extends BupkisAssertion<Parts, Impl, Slots> implements AssertionStandardSchemaSync<Parts, Impl, Slots> {
|
|
26
|
-
/**
|
|
27
|
-
* Executes the assertion against validated values.
|
|
28
|
-
*
|
|
29
|
-
* If validation was already performed during `parseValues()` and cached,
|
|
30
|
-
* reuses that result. Otherwise, performs validation using the Standard
|
|
31
|
-
* Schema's validate() method.
|
|
32
|
-
*
|
|
33
|
-
* @param parsedValues - The parsed and validated values
|
|
34
|
-
* @param _args - Original raw arguments (unused)
|
|
35
|
-
* @param stackStartFn - Function to use as stack trace start point
|
|
36
|
-
* @param parseResult - Optional cached parse result from `parseValues()`
|
|
37
|
-
* @throws {AssertionError} If validation fails
|
|
38
|
-
*/
|
|
39
|
-
execute(parsedValues: ParsedValues<Parts>, _args: unknown[], stackStartFn: (...args: any[]) => any, parseResult?: ParsedResult<Parts>): void;
|
|
40
|
-
/**
|
|
41
|
-
* Parses raw arguments against slots with optimized validation caching.
|
|
42
|
-
*
|
|
43
|
-
* For simple schema assertions (subject + phrase literals only), this method
|
|
44
|
-
* validates the subject during parsing and caches the result to avoid double
|
|
45
|
-
* validation in `execute()`.
|
|
46
|
-
*
|
|
47
|
-
* @param args - Raw arguments provided to `expect()`
|
|
48
|
-
* @returns Parse result indicating success/failure and cached validation
|
|
49
|
-
*/
|
|
50
|
-
parseValues<Args extends readonly unknown[]>(args: Args): ParsedResult<Parts>;
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=assertion-standard-schema-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-standard-schema-sync.d.ts","sourceRoot":"","sources":["../../src/assertion/assertion-standard-schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,+BAA8B;AAC9D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,2BAA2B,EAC3B,YAAY,EAEZ,YAAY,EACb,8BAA6B;AAE9B,OAAO,EAAE,eAAe,EAAE,wBAAuB;AAEjD;;;;;;;;;;;GAWG;AACH,qBAAa,iCAAiC,CAC5C,KAAK,SAAS,cAAc,EAC5B,IAAI,SAAS,gBAAgB,EAC7B,KAAK,SAAS,cAAc,CAAC,KAAK,CAAC,CAEnC,SAAQ,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAC1C,YAAW,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IAE1D;;;;;;;;;;;;OAYG;IACH,OAAO,CACL,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,EACjC,KAAK,EAAE,OAAO,EAAE,EAChB,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrC,WAAW,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAChC,IAAI;IAuCP;;;;;;;;;OASG;IACH,WAAW,CAAC,IAAI,SAAS,SAAS,OAAO,EAAE,EACzC,IAAI,EAAE,IAAI,GACT,YAAY,CAAC,KAAK,CAAC;CA2EvB"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Synchronous Standard Schema assertion implementation.
|
|
3
|
-
*
|
|
4
|
-
* This module provides the `BupkisAssertionStandardSchemaSync` class for
|
|
5
|
-
* assertions implemented using Standard Schema v1 compliant validators from any
|
|
6
|
-
* library (Valibot, ArkType, etc.).
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
import type { StandardSchemaV1 } from "../standard-schema.js";
|
|
11
|
-
import type { AssertionParts, AssertionSlots, AssertionStandardSchemaSync, ParsedResult, ParsedValues } from "./assertion-types.js";
|
|
12
|
-
import { BupkisAssertion } from "./assertion.js";
|
|
13
|
-
/**
|
|
14
|
-
* A synchronous assertion implemented using a Standard Schema v1 validator.
|
|
15
|
-
*
|
|
16
|
-
* This class handles schema-based assertions where the implementation is any
|
|
17
|
-
* Standard Schema compliant validator (not just Zod). It optimizes validation
|
|
18
|
-
* by caching the subject validation result during `parseValues()` to avoid
|
|
19
|
-
* double parsing.
|
|
20
|
-
*
|
|
21
|
-
* @template Parts - The assertion parts tuple defining structure
|
|
22
|
-
* @template Impl - The Standard Schema implementation
|
|
23
|
-
* @template Slots - The derived validation slots
|
|
24
|
-
*/
|
|
25
|
-
export declare class BupkisAssertionStandardSchemaSync<Parts extends AssertionParts, Impl extends StandardSchemaV1, Slots extends AssertionSlots<Parts>> extends BupkisAssertion<Parts, Impl, Slots> implements AssertionStandardSchemaSync<Parts, Impl, Slots> {
|
|
26
|
-
/**
|
|
27
|
-
* Executes the assertion against validated values.
|
|
28
|
-
*
|
|
29
|
-
* If validation was already performed during `parseValues()` and cached,
|
|
30
|
-
* reuses that result. Otherwise, performs validation using the Standard
|
|
31
|
-
* Schema's validate() method.
|
|
32
|
-
*
|
|
33
|
-
* @param parsedValues - The parsed and validated values
|
|
34
|
-
* @param _args - Original raw arguments (unused)
|
|
35
|
-
* @param stackStartFn - Function to use as stack trace start point
|
|
36
|
-
* @param parseResult - Optional cached parse result from `parseValues()`
|
|
37
|
-
* @throws {AssertionError} If validation fails
|
|
38
|
-
*/
|
|
39
|
-
execute(parsedValues: ParsedValues<Parts>, _args: unknown[], stackStartFn: (...args: any[]) => any, parseResult?: ParsedResult<Parts>): void;
|
|
40
|
-
/**
|
|
41
|
-
* Parses raw arguments against slots with optimized validation caching.
|
|
42
|
-
*
|
|
43
|
-
* For simple schema assertions (subject + phrase literals only), this method
|
|
44
|
-
* validates the subject during parsing and caches the result to avoid double
|
|
45
|
-
* validation in `execute()`.
|
|
46
|
-
*
|
|
47
|
-
* @param args - Raw arguments provided to `expect()`
|
|
48
|
-
* @returns Parse result indicating success/failure and cached validation
|
|
49
|
-
*/
|
|
50
|
-
parseValues<Args extends readonly unknown[]>(args: Args): ParsedResult<Parts>;
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=assertion-standard-schema-sync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-standard-schema-sync.d.ts","sourceRoot":"","sources":["../../src/assertion/assertion-standard-schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,8BAA8B;AAC9D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,2BAA2B,EAC3B,YAAY,EAEZ,YAAY,EACb,6BAA6B;AAE9B,OAAO,EAAE,eAAe,EAAE,uBAAuB;AAEjD;;;;;;;;;;;GAWG;AACH,qBAAa,iCAAiC,CAC5C,KAAK,SAAS,cAAc,EAC5B,IAAI,SAAS,gBAAgB,EAC7B,KAAK,SAAS,cAAc,CAAC,KAAK,CAAC,CAEnC,SAAQ,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAC1C,YAAW,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IAE1D;;;;;;;;;;;;OAYG;IACH,OAAO,CACL,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,EACjC,KAAK,EAAE,OAAO,EAAE,EAChB,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrC,WAAW,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAChC,IAAI;IAuCP;;;;;;;;;OASG;IACH,WAAW,CAAC,IAAI,SAAS,SAAS,OAAO,EAAE,EACzC,IAAI,EAAE,IAAI,GACT,YAAY,CAAC,KAAK,CAAC;CA2EvB"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Synchronous Standard Schema assertion implementation.
|
|
3
|
-
*
|
|
4
|
-
* This module provides the `BupkisAssertionStandardSchemaSync` class for
|
|
5
|
-
* assertions implemented using Standard Schema v1 compliant validators from any
|
|
6
|
-
* library (Valibot, ArkType, etc.).
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
import { BupkisAssertion } from "./assertion.js";
|
|
11
|
-
/**
|
|
12
|
-
* A synchronous assertion implemented using a Standard Schema v1 validator.
|
|
13
|
-
*
|
|
14
|
-
* This class handles schema-based assertions where the implementation is any
|
|
15
|
-
* Standard Schema compliant validator (not just Zod). It optimizes validation
|
|
16
|
-
* by caching the subject validation result during `parseValues()` to avoid
|
|
17
|
-
* double parsing.
|
|
18
|
-
*
|
|
19
|
-
* @template Parts - The assertion parts tuple defining structure
|
|
20
|
-
* @template Impl - The Standard Schema implementation
|
|
21
|
-
* @template Slots - The derived validation slots
|
|
22
|
-
*/
|
|
23
|
-
export class BupkisAssertionStandardSchemaSync extends BupkisAssertion {
|
|
24
|
-
/**
|
|
25
|
-
* Executes the assertion against validated values.
|
|
26
|
-
*
|
|
27
|
-
* If validation was already performed during `parseValues()` and cached,
|
|
28
|
-
* reuses that result. Otherwise, performs validation using the Standard
|
|
29
|
-
* Schema's validate() method.
|
|
30
|
-
*
|
|
31
|
-
* @param parsedValues - The parsed and validated values
|
|
32
|
-
* @param _args - Original raw arguments (unused)
|
|
33
|
-
* @param stackStartFn - Function to use as stack trace start point
|
|
34
|
-
* @param parseResult - Optional cached parse result from `parseValues()`
|
|
35
|
-
* @throws {AssertionError} If validation fails
|
|
36
|
-
*/
|
|
37
|
-
execute(parsedValues, _args, stackStartFn, parseResult) {
|
|
38
|
-
const cachedValidation = parseResult?.success
|
|
39
|
-
? parseResult.subjectValidationResult
|
|
40
|
-
: undefined;
|
|
41
|
-
if (cachedValidation) {
|
|
42
|
-
if (!cachedValidation.success) {
|
|
43
|
-
if ('issues' in cachedValidation) {
|
|
44
|
-
throw this.fromStandardSchemaIssues(cachedValidation.issues, stackStartFn, parsedValues);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const [subject] = parsedValues;
|
|
50
|
-
const result = this.impl['~standard'].validate(subject);
|
|
51
|
-
if (result instanceof Promise) {
|
|
52
|
-
result.catch(() => {
|
|
53
|
-
/* prevent unhandled rejection */
|
|
54
|
-
});
|
|
55
|
-
throw new Error(`Standard Schema returned a Promise in sync context; use expectAsync() instead`);
|
|
56
|
-
}
|
|
57
|
-
if (result.issues) {
|
|
58
|
-
throw this.fromStandardSchemaIssues(result.issues, stackStartFn, parsedValues);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Parses raw arguments against slots with optimized validation caching.
|
|
63
|
-
*
|
|
64
|
-
* For simple schema assertions (subject + phrase literals only), this method
|
|
65
|
-
* validates the subject during parsing and caches the result to avoid double
|
|
66
|
-
* validation in `execute()`.
|
|
67
|
-
*
|
|
68
|
-
* @param args - Raw arguments provided to `expect()`
|
|
69
|
-
* @returns Parse result indicating success/failure and cached validation
|
|
70
|
-
*/
|
|
71
|
-
parseValues(args) {
|
|
72
|
-
const { slots } = this;
|
|
73
|
-
const parsedValues = [];
|
|
74
|
-
const mismatch = this.maybeParseValuesArgMismatch(args);
|
|
75
|
-
if (mismatch) {
|
|
76
|
-
return mismatch;
|
|
77
|
-
}
|
|
78
|
-
let exactMatch = true;
|
|
79
|
-
let subjectValidationResult;
|
|
80
|
-
for (let i = 0; i < slots.length; i++) {
|
|
81
|
-
const slot = slots[i];
|
|
82
|
-
const arg = args[i];
|
|
83
|
-
const parsedLiteralResult = this.parseSlotForLiteral(slot, i, arg);
|
|
84
|
-
if (parsedLiteralResult === true) {
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
else if (parsedLiteralResult !== false) {
|
|
88
|
-
return parsedLiteralResult;
|
|
89
|
-
}
|
|
90
|
-
if (i === 0 &&
|
|
91
|
-
(slot.def.type === 'unknown' || slot.def.type === 'any') &&
|
|
92
|
-
this.isSimpleSchemaAssertion()) {
|
|
93
|
-
const result = this.impl['~standard'].validate(arg);
|
|
94
|
-
if (result instanceof Promise) {
|
|
95
|
-
result.catch(() => {
|
|
96
|
-
/* prevent unhandled rejection */
|
|
97
|
-
});
|
|
98
|
-
return {
|
|
99
|
-
success: false,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
if (result.issues) {
|
|
103
|
-
subjectValidationResult = { issues: result.issues, success: false };
|
|
104
|
-
parsedValues.push(arg);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
subjectValidationResult = { data: result.value, success: true };
|
|
108
|
-
parsedValues.push(result.value);
|
|
109
|
-
}
|
|
110
|
-
exactMatch = false;
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
if (slot.def.type === 'unknown' || slot.def.type === 'any') {
|
|
114
|
-
parsedValues.push(arg);
|
|
115
|
-
exactMatch = false;
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
const result = slot.safeParse(arg);
|
|
119
|
-
if (!result.success) {
|
|
120
|
-
return {
|
|
121
|
-
success: false,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
parsedValues.push(arg);
|
|
125
|
-
}
|
|
126
|
-
const result = {
|
|
127
|
-
exactMatch,
|
|
128
|
-
parsedValues: parsedValues,
|
|
129
|
-
success: true,
|
|
130
|
-
};
|
|
131
|
-
if (subjectValidationResult) {
|
|
132
|
-
result.subjectValidationResult = subjectValidationResult;
|
|
133
|
-
}
|
|
134
|
-
return result;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=assertion-standard-schema-sync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-standard-schema-sync.js","sourceRoot":"","sources":["../../src/assertion/assertion-standard-schema-sync.ts"],"names":[],"mappings":"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"}
|