bupkis 0.11.0 → 0.12.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 +72 -88
- package/dist/commonjs/assertion/assertion-async.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion-async.js +32 -9
- package/dist/commonjs/assertion/assertion-async.js.map +1 -1
- package/dist/commonjs/assertion/assertion-standard-schema-async.d.ts +64 -0
- package/dist/commonjs/assertion/assertion-standard-schema-async.d.ts.map +1 -0
- package/dist/commonjs/assertion/assertion-standard-schema-async.js +155 -0
- package/dist/commonjs/assertion/assertion-standard-schema-async.js.map +1 -0
- package/dist/commonjs/assertion/assertion-standard-schema-sync.d.ts +64 -0
- package/dist/commonjs/assertion/assertion-standard-schema-sync.d.ts.map +1 -0
- package/dist/commonjs/assertion/assertion-standard-schema-sync.js +164 -0
- package/dist/commonjs/assertion/assertion-standard-schema-sync.js.map +1 -0
- package/dist/commonjs/assertion/assertion-sync.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion-sync.js +38 -5
- package/dist/commonjs/assertion/assertion-sync.js.map +1 -1
- package/dist/commonjs/assertion/assertion-types.d.ts +82 -14
- package/dist/commonjs/assertion/assertion-types.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion.d.ts +11 -0
- package/dist/commonjs/assertion/assertion.d.ts.map +1 -1
- package/dist/commonjs/assertion/assertion.js +30 -0
- package/dist/commonjs/assertion/assertion.js.map +1 -1
- package/dist/commonjs/assertion/create.d.ts.map +1 -1
- package/dist/commonjs/assertion/create.js +10 -2
- package/dist/commonjs/assertion/create.js.map +1 -1
- package/dist/commonjs/assertion/impl/async-parametric.d.ts +11 -31
- package/dist/commonjs/assertion/impl/async-parametric.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/async-parametric.js +12 -37
- package/dist/commonjs/assertion/impl/async-parametric.js.map +1 -1
- package/dist/commonjs/assertion/impl/async.d.ts +34 -74
- package/dist/commonjs/assertion/impl/async.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-basic.d.ts +37 -37
- package/dist/commonjs/assertion/impl/sync-basic.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-basic.js +25 -25
- package/dist/commonjs/assertion/impl/sync-basic.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-collection.d.ts +7 -9
- package/dist/commonjs/assertion/impl/sync-collection.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-collection.js +18 -19
- package/dist/commonjs/assertion/impl/sync-collection.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-date.d.ts +14 -213
- package/dist/commonjs/assertion/impl/sync-date.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-date.js +5 -271
- package/dist/commonjs/assertion/impl/sync-date.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-esoteric.d.ts +3 -3
- package/dist/commonjs/assertion/impl/sync-esoteric.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-esoteric.js +2 -2
- package/dist/commonjs/assertion/impl/sync-esoteric.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync-parametric.d.ts +29 -49
- package/dist/commonjs/assertion/impl/sync-parametric.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync-parametric.js +77 -100
- package/dist/commonjs/assertion/impl/sync-parametric.js.map +1 -1
- package/dist/commonjs/assertion/impl/sync.d.ts +138 -320
- package/dist/commonjs/assertion/impl/sync.d.ts.map +1 -1
- package/dist/commonjs/assertion/impl/sync.js +0 -7
- package/dist/commonjs/assertion/impl/sync.js.map +1 -1
- package/dist/commonjs/assertion/slotify.js +106 -43
- package/dist/commonjs/assertion/slotify.js.map +1 -1
- package/dist/commonjs/bootstrap.d.ts +84 -195
- package/dist/commonjs/bootstrap.d.ts.map +1 -1
- package/dist/commonjs/diff.d.ts.map +1 -1
- package/dist/commonjs/diff.js +14 -21
- package/dist/commonjs/diff.js.map +1 -1
- package/dist/commonjs/guards.d.ts +16 -0
- package/dist/commonjs/guards.d.ts.map +1 -1
- package/dist/commonjs/guards.js +27 -1
- package/dist/commonjs/guards.js.map +1 -1
- package/dist/commonjs/index.d.ts +53 -157
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/internal-schema.d.ts.map +1 -1
- package/dist/commonjs/internal-schema.js +30 -12
- package/dist/commonjs/internal-schema.js.map +1 -1
- package/dist/commonjs/schema.d.ts +21 -0
- package/dist/commonjs/schema.d.ts.map +1 -1
- package/dist/commonjs/schema.js +132 -2
- package/dist/commonjs/schema.js.map +1 -1
- package/dist/commonjs/standard-schema.d.ts +192 -0
- package/dist/commonjs/standard-schema.d.ts.map +1 -0
- package/dist/commonjs/standard-schema.js +13 -0
- package/dist/commonjs/standard-schema.js.map +1 -0
- package/dist/commonjs/types.d.ts +165 -13
- package/dist/commonjs/types.d.ts.map +1 -1
- package/dist/esm/assertion/assertion-async.d.ts.map +1 -1
- package/dist/esm/assertion/assertion-async.js +33 -10
- package/dist/esm/assertion/assertion-async.js.map +1 -1
- package/dist/esm/assertion/assertion-standard-schema-async.d.ts +64 -0
- package/dist/esm/assertion/assertion-standard-schema-async.d.ts.map +1 -0
- package/dist/esm/assertion/assertion-standard-schema-async.js +151 -0
- package/dist/esm/assertion/assertion-standard-schema-async.js.map +1 -0
- package/dist/esm/assertion/assertion-standard-schema-sync.d.ts +64 -0
- package/dist/esm/assertion/assertion-standard-schema-sync.d.ts.map +1 -0
- package/dist/esm/assertion/assertion-standard-schema-sync.js +160 -0
- package/dist/esm/assertion/assertion-standard-schema-sync.js.map +1 -0
- package/dist/esm/assertion/assertion-sync.d.ts.map +1 -1
- package/dist/esm/assertion/assertion-sync.js +39 -6
- package/dist/esm/assertion/assertion-sync.js.map +1 -1
- package/dist/esm/assertion/assertion-types.d.ts +82 -14
- package/dist/esm/assertion/assertion-types.d.ts.map +1 -1
- package/dist/esm/assertion/assertion.d.ts +11 -0
- package/dist/esm/assertion/assertion.d.ts.map +1 -1
- package/dist/esm/assertion/assertion.js +30 -0
- package/dist/esm/assertion/assertion.js.map +1 -1
- package/dist/esm/assertion/create.d.ts.map +1 -1
- package/dist/esm/assertion/create.js +11 -3
- package/dist/esm/assertion/create.js.map +1 -1
- package/dist/esm/assertion/impl/async-parametric.d.ts +11 -31
- package/dist/esm/assertion/impl/async-parametric.d.ts.map +1 -1
- package/dist/esm/assertion/impl/async-parametric.js +13 -38
- package/dist/esm/assertion/impl/async-parametric.js.map +1 -1
- package/dist/esm/assertion/impl/async.d.ts +34 -74
- package/dist/esm/assertion/impl/async.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-basic.d.ts +37 -37
- package/dist/esm/assertion/impl/sync-basic.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-basic.js +26 -26
- package/dist/esm/assertion/impl/sync-basic.js.map +1 -1
- package/dist/esm/assertion/impl/sync-collection.d.ts +7 -9
- package/dist/esm/assertion/impl/sync-collection.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-collection.js +19 -20
- package/dist/esm/assertion/impl/sync-collection.js.map +1 -1
- package/dist/esm/assertion/impl/sync-date.d.ts +14 -213
- package/dist/esm/assertion/impl/sync-date.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-date.js +4 -270
- package/dist/esm/assertion/impl/sync-date.js.map +1 -1
- package/dist/esm/assertion/impl/sync-esoteric.d.ts +3 -3
- package/dist/esm/assertion/impl/sync-esoteric.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-esoteric.js +3 -3
- package/dist/esm/assertion/impl/sync-esoteric.js.map +1 -1
- package/dist/esm/assertion/impl/sync-parametric.d.ts +29 -49
- package/dist/esm/assertion/impl/sync-parametric.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync-parametric.js +78 -101
- package/dist/esm/assertion/impl/sync-parametric.js.map +1 -1
- package/dist/esm/assertion/impl/sync.d.ts +138 -320
- package/dist/esm/assertion/impl/sync.d.ts.map +1 -1
- package/dist/esm/assertion/impl/sync.js +1 -8
- package/dist/esm/assertion/impl/sync.js.map +1 -1
- package/dist/esm/assertion/slotify.js +107 -44
- package/dist/esm/assertion/slotify.js.map +1 -1
- package/dist/esm/bootstrap.d.ts +84 -195
- package/dist/esm/bootstrap.d.ts.map +1 -1
- package/dist/esm/diff.d.ts.map +1 -1
- package/dist/esm/diff.js +14 -21
- package/dist/esm/diff.js.map +1 -1
- package/dist/esm/guards.d.ts +16 -0
- package/dist/esm/guards.d.ts.map +1 -1
- package/dist/esm/guards.js +25 -0
- package/dist/esm/guards.js.map +1 -1
- package/dist/esm/index.d.ts +53 -157
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal-schema.d.ts.map +1 -1
- package/dist/esm/internal-schema.js +31 -13
- package/dist/esm/internal-schema.js.map +1 -1
- package/dist/esm/schema.d.ts +21 -0
- package/dist/esm/schema.d.ts.map +1 -1
- package/dist/esm/schema.js +129 -1
- package/dist/esm/schema.js.map +1 -1
- package/dist/esm/standard-schema.d.ts +192 -0
- package/dist/esm/standard-schema.d.ts.map +1 -0
- package/dist/esm/standard-schema.js +12 -0
- package/dist/esm/standard-schema.js.map +1 -0
- package/dist/esm/types.d.ts +165 -13
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +38 -20
- package/src/assertion/assertion-async.ts +54 -14
- package/src/assertion/assertion-standard-schema-async.ts +202 -0
- package/src/assertion/assertion-standard-schema-sync.ts +214 -0
- package/src/assertion/assertion-sync.ts +65 -10
- package/src/assertion/assertion-types.ts +113 -13
- package/src/assertion/assertion.ts +40 -0
- package/src/assertion/create.ts +11 -5
- package/src/assertion/impl/async-parametric.ts +16 -37
- package/src/assertion/impl/sync-basic.ts +48 -32
- package/src/assertion/impl/sync-collection.ts +25 -23
- package/src/assertion/impl/sync-date.ts +4 -311
- package/src/assertion/impl/sync-esoteric.ts +7 -3
- package/src/assertion/impl/sync-parametric.ts +104 -102
- package/src/assertion/impl/sync.ts +0 -14
- package/src/assertion/slotify.ts +90 -13
- package/src/diff.ts +14 -29
- package/src/guards.ts +29 -0
- package/src/index.ts +16 -6
- package/src/internal-schema.ts +36 -16
- package/src/schema.ts +152 -1
- package/src/standard-schema.ts +214 -0
- package/src/types.ts +176 -14
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Asynchronous Standard Schema assertion implementation.
|
|
4
|
+
*
|
|
5
|
+
* This module provides the `BupkisAssertionStandardSchemaAsync` class for
|
|
6
|
+
* assertions implemented using Standard Schema v1 compliant validators that may
|
|
7
|
+
* perform asynchronous validation.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BupkisAssertionStandardSchemaAsync = void 0;
|
|
13
|
+
const constant_js_1 = require("../constant.js");
|
|
14
|
+
const metadata_js_1 = require("../metadata.js");
|
|
15
|
+
const assertion_js_1 = require("./assertion.js");
|
|
16
|
+
/**
|
|
17
|
+
* An asynchronous assertion implemented using a Standard Schema v1 validator.
|
|
18
|
+
*
|
|
19
|
+
* This class handles async schema-based assertions where the implementation is
|
|
20
|
+
* any Standard Schema compliant validator that may perform asynchronous
|
|
21
|
+
* validation. It optimizes validation by caching the subject validation result
|
|
22
|
+
* during `parseValuesAsync()` to avoid double parsing.
|
|
23
|
+
*
|
|
24
|
+
* @template Parts - The assertion parts tuple defining structure
|
|
25
|
+
* @template Impl - The Standard Schema implementation
|
|
26
|
+
* @template Slots - The derived validation slots
|
|
27
|
+
*/
|
|
28
|
+
class BupkisAssertionStandardSchemaAsync extends assertion_js_1.BupkisAssertion {
|
|
29
|
+
/**
|
|
30
|
+
* Executes the assertion asynchronously against validated values.
|
|
31
|
+
*
|
|
32
|
+
* If validation was already performed during `parseValuesAsync()` and cached,
|
|
33
|
+
* reuses that result. Otherwise, performs validation using the Standard
|
|
34
|
+
* Schema's validate() method (which may return a Promise).
|
|
35
|
+
*
|
|
36
|
+
* @param parsedValues - The parsed and validated values
|
|
37
|
+
* @param _args - Original raw arguments (unused)
|
|
38
|
+
* @param stackStartFn - Function to use as stack trace start point
|
|
39
|
+
* @param parseResult - Optional cached parse result from `parseValuesAsync()`
|
|
40
|
+
* @throws {AssertionError} If validation fails
|
|
41
|
+
*/
|
|
42
|
+
async executeAsync(parsedValues, _args, stackStartFn, parseResult) {
|
|
43
|
+
const cachedValidation = parseResult?.success
|
|
44
|
+
? parseResult.subjectValidationResult
|
|
45
|
+
: undefined;
|
|
46
|
+
if (cachedValidation && !cachedValidation.success) {
|
|
47
|
+
if ('issues' in cachedValidation) {
|
|
48
|
+
throw this.fromStandardSchemaIssues(cachedValidation.issues, stackStartFn, parsedValues);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const [subject] = parsedValues;
|
|
52
|
+
const result = this.impl['~standard'].validate(subject);
|
|
53
|
+
const validationResult = result instanceof Promise ? await result : result;
|
|
54
|
+
if (validationResult.issues) {
|
|
55
|
+
throw this.fromStandardSchemaIssues(validationResult.issues, stackStartFn, parsedValues);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Parses raw arguments asynchronously against slots with optimized caching.
|
|
60
|
+
*
|
|
61
|
+
* For simple schema assertions (subject + phrase literals only), this method
|
|
62
|
+
* validates the subject during parsing and caches the result to avoid double
|
|
63
|
+
* validation in `executeAsync()`.
|
|
64
|
+
*
|
|
65
|
+
* @param args - Raw arguments provided to `expectAsync()`
|
|
66
|
+
* @returns Promise resolving to parse result with cached validation
|
|
67
|
+
*/
|
|
68
|
+
async parseValuesAsync(args) {
|
|
69
|
+
const { slots } = this;
|
|
70
|
+
const parsedValues = [];
|
|
71
|
+
const mismatch = this.maybeParseValuesArgMismatch(args);
|
|
72
|
+
if (mismatch) {
|
|
73
|
+
return mismatch;
|
|
74
|
+
}
|
|
75
|
+
let exactMatch = true;
|
|
76
|
+
let subjectValidationResult;
|
|
77
|
+
for (let i = 0; i < slots.length; i++) {
|
|
78
|
+
const slot = slots[i];
|
|
79
|
+
const arg = args[i];
|
|
80
|
+
const parsedLiteralResult = this.parseSlotForLiteral(slot, i, arg);
|
|
81
|
+
if (parsedLiteralResult === true) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
else if (parsedLiteralResult !== false) {
|
|
85
|
+
return parsedLiteralResult;
|
|
86
|
+
}
|
|
87
|
+
if (i === 0 &&
|
|
88
|
+
(slot.def.type === 'unknown' || slot.def.type === 'any') &&
|
|
89
|
+
this.isSimpleSchemaAssertion()) {
|
|
90
|
+
const result = this.impl['~standard'].validate(arg);
|
|
91
|
+
const validationResult = result instanceof Promise ? await result : result;
|
|
92
|
+
if (validationResult.issues) {
|
|
93
|
+
subjectValidationResult = {
|
|
94
|
+
issues: validationResult.issues,
|
|
95
|
+
success: false,
|
|
96
|
+
};
|
|
97
|
+
parsedValues.push(arg);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
subjectValidationResult = {
|
|
101
|
+
data: validationResult.value,
|
|
102
|
+
success: true,
|
|
103
|
+
};
|
|
104
|
+
parsedValues.push(validationResult.value);
|
|
105
|
+
}
|
|
106
|
+
exactMatch = false;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (slot.def.type === 'unknown' || slot.def.type === 'any') {
|
|
110
|
+
parsedValues.push(arg);
|
|
111
|
+
exactMatch = false;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const result = await slot.safeParseAsync(arg);
|
|
115
|
+
if (!result.success) {
|
|
116
|
+
return {
|
|
117
|
+
success: false,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
parsedValues.push(result.data);
|
|
121
|
+
}
|
|
122
|
+
const result = {
|
|
123
|
+
exactMatch,
|
|
124
|
+
parsedValues: parsedValues,
|
|
125
|
+
success: true,
|
|
126
|
+
};
|
|
127
|
+
if (subjectValidationResult) {
|
|
128
|
+
result.subjectValidationResult = subjectValidationResult;
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Determines if this is a simple schema assertion eligible for optimization.
|
|
134
|
+
*
|
|
135
|
+
* Returns true when the assertion has:
|
|
136
|
+
*
|
|
137
|
+
* - Exactly one subject slot (unknown/any type)
|
|
138
|
+
* - Only phrase literal slots after the subject
|
|
139
|
+
* - No complex argument processing
|
|
140
|
+
*
|
|
141
|
+
* @returns True if optimization can be applied
|
|
142
|
+
*/
|
|
143
|
+
isSimpleSchemaAssertion() {
|
|
144
|
+
const hasSubjectSlot = this.slots.length > 0 &&
|
|
145
|
+
(this.slots[0]?.def.type === 'unknown' ||
|
|
146
|
+
this.slots[0]?.def.type === 'any');
|
|
147
|
+
const allOtherSlotsAreLiterals = this.slots.slice(1).every((slot) => {
|
|
148
|
+
const meta = metadata_js_1.BupkisRegistry.get(slot) ?? {};
|
|
149
|
+
return constant_js_1.kStringLiteral in meta;
|
|
150
|
+
});
|
|
151
|
+
return hasSubjectSlot && allOtherSlotsAreLiterals;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.BupkisAssertionStandardSchemaAsync = BupkisAssertionStandardSchemaAsync;
|
|
155
|
+
//# sourceMappingURL=assertion-standard-schema-async.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-standard-schema-async.js","sourceRoot":"","sources":["../../../src/assertion/assertion-standard-schema-async.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
* Determines if this is a simple schema assertion eligible for optimization.
|
|
53
|
+
*
|
|
54
|
+
* Returns true when the assertion has:
|
|
55
|
+
*
|
|
56
|
+
* - Exactly one subject slot (unknown/any type)
|
|
57
|
+
* - Only phrase literal slots after the subject
|
|
58
|
+
* - No complex argument processing
|
|
59
|
+
*
|
|
60
|
+
* @returns True if optimization can be applied
|
|
61
|
+
*/
|
|
62
|
+
private isSimpleSchemaAssertion;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=assertion-standard-schema-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,2BAA2B,EAC3B,YAAY,EAEZ,YAAY,EACb,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,qBAAa,iCAAiC,CAC1C,KAAK,SAAS,cAAc,EAC5B,IAAI,SAAS,gBAAgB,EAC7B,KAAK,SAAS,cAAc,CAAC,KAAK,CAAC,CAErC,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;IA4EtB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB;CAahC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
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 constant_js_1 = require("../constant.js");
|
|
14
|
+
const metadata_js_1 = require("../metadata.js");
|
|
15
|
+
const assertion_js_1 = require("./assertion.js");
|
|
16
|
+
/**
|
|
17
|
+
* A synchronous assertion implemented using a Standard Schema v1 validator.
|
|
18
|
+
*
|
|
19
|
+
* This class handles schema-based assertions where the implementation is any
|
|
20
|
+
* Standard Schema compliant validator (not just Zod). It optimizes validation
|
|
21
|
+
* by caching the subject validation result during `parseValues()` to avoid
|
|
22
|
+
* double parsing.
|
|
23
|
+
*
|
|
24
|
+
* @template Parts - The assertion parts tuple defining structure
|
|
25
|
+
* @template Impl - The Standard Schema implementation
|
|
26
|
+
* @template Slots - The derived validation slots
|
|
27
|
+
*/
|
|
28
|
+
class BupkisAssertionStandardSchemaSync extends assertion_js_1.BupkisAssertion {
|
|
29
|
+
/**
|
|
30
|
+
* Executes the assertion against validated values.
|
|
31
|
+
*
|
|
32
|
+
* If validation was already performed during `parseValues()` and cached,
|
|
33
|
+
* reuses that result. Otherwise, performs validation using the Standard
|
|
34
|
+
* Schema's validate() method.
|
|
35
|
+
*
|
|
36
|
+
* @param parsedValues - The parsed and validated values
|
|
37
|
+
* @param _args - Original raw arguments (unused)
|
|
38
|
+
* @param stackStartFn - Function to use as stack trace start point
|
|
39
|
+
* @param parseResult - Optional cached parse result from `parseValues()`
|
|
40
|
+
* @throws {AssertionError} If validation fails
|
|
41
|
+
*/
|
|
42
|
+
execute(parsedValues, _args, stackStartFn, parseResult) {
|
|
43
|
+
const cachedValidation = parseResult?.success
|
|
44
|
+
? parseResult.subjectValidationResult
|
|
45
|
+
: undefined;
|
|
46
|
+
if (cachedValidation) {
|
|
47
|
+
if (!cachedValidation.success) {
|
|
48
|
+
if ('issues' in cachedValidation) {
|
|
49
|
+
throw this.fromStandardSchemaIssues(cachedValidation.issues, stackStartFn, parsedValues);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const [subject] = parsedValues;
|
|
55
|
+
const result = this.impl['~standard'].validate(subject);
|
|
56
|
+
if (result instanceof Promise) {
|
|
57
|
+
result.catch(() => {
|
|
58
|
+
/* prevent unhandled rejection */
|
|
59
|
+
});
|
|
60
|
+
throw new Error(`Standard Schema returned a Promise in sync context; use expectAsync() instead`);
|
|
61
|
+
}
|
|
62
|
+
if (result.issues) {
|
|
63
|
+
throw this.fromStandardSchemaIssues(result.issues, stackStartFn, parsedValues);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parses raw arguments against slots with optimized validation caching.
|
|
68
|
+
*
|
|
69
|
+
* For simple schema assertions (subject + phrase literals only), this method
|
|
70
|
+
* validates the subject during parsing and caches the result to avoid double
|
|
71
|
+
* validation in `execute()`.
|
|
72
|
+
*
|
|
73
|
+
* @param args - Raw arguments provided to `expect()`
|
|
74
|
+
* @returns Parse result indicating success/failure and cached validation
|
|
75
|
+
*/
|
|
76
|
+
parseValues(args) {
|
|
77
|
+
const { slots } = this;
|
|
78
|
+
const parsedValues = [];
|
|
79
|
+
const mismatch = this.maybeParseValuesArgMismatch(args);
|
|
80
|
+
if (mismatch) {
|
|
81
|
+
return mismatch;
|
|
82
|
+
}
|
|
83
|
+
let exactMatch = true;
|
|
84
|
+
let subjectValidationResult;
|
|
85
|
+
for (let i = 0; i < slots.length; i++) {
|
|
86
|
+
const slot = slots[i];
|
|
87
|
+
const arg = args[i];
|
|
88
|
+
const parsedLiteralResult = this.parseSlotForLiteral(slot, i, arg);
|
|
89
|
+
if (parsedLiteralResult === true) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
else if (parsedLiteralResult !== false) {
|
|
93
|
+
return parsedLiteralResult;
|
|
94
|
+
}
|
|
95
|
+
if (i === 0 &&
|
|
96
|
+
(slot.def.type === 'unknown' || slot.def.type === 'any') &&
|
|
97
|
+
this.isSimpleSchemaAssertion()) {
|
|
98
|
+
const result = this.impl['~standard'].validate(arg);
|
|
99
|
+
if (result instanceof Promise) {
|
|
100
|
+
result.catch(() => {
|
|
101
|
+
/* prevent unhandled rejection */
|
|
102
|
+
});
|
|
103
|
+
return {
|
|
104
|
+
success: false,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (result.issues) {
|
|
108
|
+
subjectValidationResult = { issues: result.issues, success: false };
|
|
109
|
+
parsedValues.push(arg);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
subjectValidationResult = { data: result.value, success: true };
|
|
113
|
+
parsedValues.push(result.value);
|
|
114
|
+
}
|
|
115
|
+
exactMatch = false;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (slot.def.type === 'unknown' || slot.def.type === 'any') {
|
|
119
|
+
parsedValues.push(arg);
|
|
120
|
+
exactMatch = false;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const result = slot.safeParse(arg);
|
|
124
|
+
if (!result.success) {
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
parsedValues.push(arg);
|
|
130
|
+
}
|
|
131
|
+
const result = {
|
|
132
|
+
exactMatch,
|
|
133
|
+
parsedValues: parsedValues,
|
|
134
|
+
success: true,
|
|
135
|
+
};
|
|
136
|
+
if (subjectValidationResult) {
|
|
137
|
+
result.subjectValidationResult = subjectValidationResult;
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Determines if this is a simple schema assertion eligible for optimization.
|
|
143
|
+
*
|
|
144
|
+
* Returns true when the assertion has:
|
|
145
|
+
*
|
|
146
|
+
* - Exactly one subject slot (unknown/any type)
|
|
147
|
+
* - Only phrase literal slots after the subject
|
|
148
|
+
* - No complex argument processing
|
|
149
|
+
*
|
|
150
|
+
* @returns True if optimization can be applied
|
|
151
|
+
*/
|
|
152
|
+
isSimpleSchemaAssertion() {
|
|
153
|
+
const hasSubjectSlot = this.slots.length > 0 &&
|
|
154
|
+
(this.slots[0]?.def.type === 'unknown' ||
|
|
155
|
+
this.slots[0]?.def.type === 'any');
|
|
156
|
+
const allOtherSlotsAreLiterals = this.slots.slice(1).every((slot) => {
|
|
157
|
+
const meta = metadata_js_1.BupkisRegistry.get(slot) ?? {};
|
|
158
|
+
return constant_js_1.kStringLiteral in meta;
|
|
159
|
+
});
|
|
160
|
+
return hasSubjectSlot && allOtherSlotsAreLiterals;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.BupkisAssertionStandardSchemaSync = BupkisAssertionStandardSchemaSync;
|
|
164
|
+
//# sourceMappingURL=assertion-standard-schema-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-sync.d.ts","sourceRoot":"","sources":["../../../src/assertion/assertion-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"assertion-sync.d.ts","sourceRoot":"","sources":["../../../src/assertion/assertion-sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwBH,OAAO,EACL,KAAK,qBAAqB,EAE1B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIjD;;;;GAIG;AACH,8BAAsB,mBAAmB,CACrC,KAAK,SAAS,cAAc,EAC5B,IAAI,SAAS,iBAAiB,CAAC,KAAK,CAAC,EACrC,KAAK,SAAS,cAAc,CAAC,KAAK,CAAC,CAErC,SAAQ,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAC1C,YAAW,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IAE5C;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CACd,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,EACjC,IAAI,EAAE,OAAO,EAAE,EACf,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrC,WAAW,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAChC,IAAI;IAEP;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,IAAI,SAAS,SAAS,OAAO,EAAE,EACzC,IAAI,EAAE,IAAI,GACT,YAAY,CAAC,KAAK,CAAC;CA4CvB;AAED,qBAAa,2BAA2B,CACpC,KAAK,SAAS,cAAc,EAC5B,IAAI,SAAS,mBAAmB,CAAC,KAAK,CAAC,EACvC,KAAK,SAAS,cAAc,CAAC,KAAK,CAAC,CAErC,SAAQ,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAC9C,YAAW,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IAE3C,OAAO,CACd,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,EACjC,IAAI,EAAE,OAAO,EAAE,EACf,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrC,YAAY,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GACjC,IAAI;CAiHR;AAED;;;;;;;;;;;GAWG;AAEH,qBAAa,yBAAyB,CAClC,KAAK,SAAS,cAAc,EAC5B,IAAI,SAAS,uBAAuB,CAAC,KAAK,CAAC,EAC3C,KAAK,SAAS,cAAc,CAAC,KAAK,CAAC,CAErC,SAAQ,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAC9C,YAAW,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;IAEzC,OAAO,CACd,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;IAkCE,WAAW,CAAC,IAAI,SAAS,SAAS,OAAO,EAAE,EAClD,IAAI,EAAE,IAAI,GACT,YAAY,CAAC,KAAK,CAAC;IAqEtB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;CAehC"}
|
|
@@ -113,6 +113,18 @@ class BupkisAssertionFunctionSync extends BupkisAssertionSync {
|
|
|
113
113
|
throw this.fromZodError(zodResult.error, stackStartFn, parsedValues);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
+
else if ((0, guards_js_1.isStandardSchema)(result)) {
|
|
117
|
+
const validationResult = result['~standard'].validate(parsedValues[0]);
|
|
118
|
+
if (validationResult instanceof Promise) {
|
|
119
|
+
validationResult.catch(() => {
|
|
120
|
+
/* prevent unhandled rejection */
|
|
121
|
+
});
|
|
122
|
+
throw new error_js_1.UnexpectedAsyncError(`Standard Schema returned a Promise; use expectAsync() instead of expect()`);
|
|
123
|
+
}
|
|
124
|
+
if (validationResult.issues) {
|
|
125
|
+
throw this.fromStandardSchemaIssues(validationResult.issues, stackStartFn, parsedValues);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
116
128
|
else if ((0, guards_js_1.isBoolean)(result)) {
|
|
117
129
|
if (!result) {
|
|
118
130
|
throw new error_js_1.AssertionError({
|
|
@@ -129,9 +141,26 @@ class BupkisAssertionFunctionSync extends BupkisAssertionSync {
|
|
|
129
141
|
if (asyncSchema) {
|
|
130
142
|
throw new error_js_1.AssertionImplementationError(`Sync assertion ${this} returned an async schema in its AssertionParseRequest`);
|
|
131
143
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
144
|
+
if (!schema) {
|
|
145
|
+
throw new error_js_1.AssertionImplementationError(`Sync assertion ${this} returned AssertionParseRequest without schema`);
|
|
146
|
+
}
|
|
147
|
+
if ((0, guards_js_1.isZodType)(schema)) {
|
|
148
|
+
const zodResult = schema.safeParse(subject);
|
|
149
|
+
if (!zodResult.success) {
|
|
150
|
+
throw this.fromZodError(zodResult.error, stackStartFn, subject);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if ((0, guards_js_1.isStandardSchema)(schema)) {
|
|
154
|
+
const validationResult = schema['~standard'].validate(subject);
|
|
155
|
+
if (validationResult instanceof Promise) {
|
|
156
|
+
validationResult.catch(() => {
|
|
157
|
+
/* prevent unhandled rejection */
|
|
158
|
+
});
|
|
159
|
+
throw new error_js_1.AssertionImplementationError(`Sync assertion ${this} returned a schema with async validation in AssertionParseRequest`);
|
|
160
|
+
}
|
|
161
|
+
if (validationResult.issues) {
|
|
162
|
+
throw this.fromStandardSchemaIssues(validationResult.issues, stackStartFn, subject);
|
|
163
|
+
}
|
|
135
164
|
}
|
|
136
165
|
}
|
|
137
166
|
else if ((0, internal_schema_js_1.isAssertionFailure)(result)) {
|
|
@@ -169,8 +198,12 @@ class BupkisAssertionSchemaSync extends BupkisAssertionSync {
|
|
|
169
198
|
: undefined;
|
|
170
199
|
if (cachedValidation) {
|
|
171
200
|
if (!cachedValidation.success) {
|
|
172
|
-
|
|
173
|
-
|
|
201
|
+
if ('error' in cachedValidation) {
|
|
202
|
+
throw this.fromZodError(cachedValidation.error, stackStartFn, parsedValues);
|
|
203
|
+
}
|
|
204
|
+
else if ('issues' in cachedValidation) {
|
|
205
|
+
throw this.fromStandardSchemaIssues(cachedValidation.issues, stackStartFn, parsedValues);
|
|
206
|
+
}
|
|
174
207
|
}
|
|
175
208
|
// Subject validation passed, nothing more to do
|
|
176
209
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertion-sync.js","sourceRoot":"","sources":["../../../src/assertion/assertion-sync.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,kDAAgC;AAChC,+BAA+B;AAC/B,+BAA2B;AAE3B,gDAAgD;AAChD,0CAIqB;AACrB,
|
|
1
|
+
{"version":3,"file":"assertion-sync.js","sourceRoot":"","sources":["../../../src/assertion/assertion-sync.ts"],"names":[],"mappings":"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"}
|