valrs 0.1.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.
@@ -0,0 +1,315 @@
1
+ /**
2
+ * Primitive schema definitions.
3
+ *
4
+ * These schemas validate JavaScript primitives using the WASM bindings.
5
+ * Each schema implements both validation and JSON Schema generation.
6
+ */
7
+ import { getWasm } from './wasm';
8
+ import { createSchemaWithJsonSchema, success, fail } from './factory';
9
+ /**
10
+ * Converts a WASM validation result to the Standard Schema format.
11
+ */
12
+ function convertWasmResult(result) {
13
+ if (result.issues !== undefined && result.issues.length > 0) {
14
+ const issues = result.issues.map((issue) => {
15
+ const baseIssue = { message: issue.message };
16
+ if (issue.path !== undefined) {
17
+ return { ...baseIssue, path: issue.path };
18
+ }
19
+ return baseIssue;
20
+ });
21
+ return { issues };
22
+ }
23
+ return { value: result.value };
24
+ }
25
+ /**
26
+ * Schema for validating string values.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * import { init, StringSchema } from 'valrs';
31
+ *
32
+ * await init();
33
+ *
34
+ * const result = StringSchema['~standard'].validate('hello');
35
+ * // { value: 'hello' }
36
+ *
37
+ * const invalid = StringSchema['~standard'].validate(123);
38
+ * // { issues: [{ message: 'Expected string' }] }
39
+ * ```
40
+ */
41
+ export const StringSchema = createSchemaWithJsonSchema((value) => {
42
+ try {
43
+ const wasm = getWasm();
44
+ const result = wasm.validateString(value);
45
+ return convertWasmResult(result);
46
+ }
47
+ catch {
48
+ // Fallback if WASM is not available - pure JS validation
49
+ if (typeof value !== 'string') {
50
+ return fail('Expected string');
51
+ }
52
+ return success(value);
53
+ }
54
+ }, (target) => {
55
+ try {
56
+ const wasm = getWasm();
57
+ return wasm.stringJsonSchema(target);
58
+ }
59
+ catch {
60
+ // Fallback JSON Schema
61
+ return { type: 'string' };
62
+ }
63
+ });
64
+ /**
65
+ * Schema for validating number values (JavaScript number, IEEE 754 double).
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const result = NumberSchema['~standard'].validate(3.14);
70
+ * // { value: 3.14 }
71
+ * ```
72
+ */
73
+ export const NumberSchema = createSchemaWithJsonSchema((value) => {
74
+ try {
75
+ const wasm = getWasm();
76
+ const result = wasm.validateNumber(value);
77
+ return convertWasmResult(result);
78
+ }
79
+ catch {
80
+ if (typeof value !== 'number' || Number.isNaN(value)) {
81
+ return fail('Expected number');
82
+ }
83
+ return success(value);
84
+ }
85
+ }, (target) => {
86
+ try {
87
+ const wasm = getWasm();
88
+ return wasm.numberJsonSchema(target);
89
+ }
90
+ catch {
91
+ return { type: 'number' };
92
+ }
93
+ });
94
+ /**
95
+ * Schema for validating boolean values.
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const result = BooleanSchema['~standard'].validate(true);
100
+ * // { value: true }
101
+ * ```
102
+ */
103
+ export const BooleanSchema = createSchemaWithJsonSchema((value) => {
104
+ try {
105
+ const wasm = getWasm();
106
+ const result = wasm.validateBoolean(value);
107
+ return convertWasmResult(result);
108
+ }
109
+ catch {
110
+ if (typeof value !== 'boolean') {
111
+ return fail('Expected boolean');
112
+ }
113
+ return success(value);
114
+ }
115
+ }, (target) => {
116
+ try {
117
+ const wasm = getWasm();
118
+ return wasm.booleanJsonSchema(target);
119
+ }
120
+ catch {
121
+ return { type: 'boolean' };
122
+ }
123
+ });
124
+ /**
125
+ * Schema for validating 32-bit signed integers.
126
+ *
127
+ * Range: -2,147,483,648 to 2,147,483,647
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const result = Int32Schema['~standard'].validate(42);
132
+ * // { value: 42 }
133
+ *
134
+ * const invalid = Int32Schema['~standard'].validate(3.14);
135
+ * // { issues: [{ message: 'Expected i32' }] }
136
+ * ```
137
+ */
138
+ export const Int32Schema = createSchemaWithJsonSchema((value) => {
139
+ try {
140
+ const wasm = getWasm();
141
+ const result = wasm.validateI32(value);
142
+ return convertWasmResult(result);
143
+ }
144
+ catch {
145
+ if (typeof value !== 'number' || !Number.isInteger(value)) {
146
+ return fail('Expected i32');
147
+ }
148
+ const MIN_I32 = -2147483648;
149
+ const MAX_I32 = 2147483647;
150
+ if (value < MIN_I32 || value > MAX_I32) {
151
+ return fail('Value out of i32 range');
152
+ }
153
+ return success(value);
154
+ }
155
+ }, (target) => {
156
+ try {
157
+ const wasm = getWasm();
158
+ return wasm.i32JsonSchema(target);
159
+ }
160
+ catch {
161
+ return {
162
+ type: 'integer',
163
+ minimum: -2147483648,
164
+ maximum: 2147483647,
165
+ };
166
+ }
167
+ });
168
+ /**
169
+ * Schema for validating 64-bit signed integers.
170
+ *
171
+ * Note: JavaScript numbers can only safely represent integers up to 2^53 - 1.
172
+ * For full i64 range, consider using BigInt.
173
+ *
174
+ * Range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
175
+ */
176
+ export const Int64Schema = createSchemaWithJsonSchema((value) => {
177
+ try {
178
+ const wasm = getWasm();
179
+ const result = wasm.validateI64(value);
180
+ return convertWasmResult(result);
181
+ }
182
+ catch {
183
+ if (typeof value !== 'number' || !Number.isInteger(value)) {
184
+ return fail('Expected i64');
185
+ }
186
+ return success(value);
187
+ }
188
+ }, (target) => {
189
+ try {
190
+ const wasm = getWasm();
191
+ return wasm.i64JsonSchema(target);
192
+ }
193
+ catch {
194
+ return { type: 'integer' };
195
+ }
196
+ });
197
+ /**
198
+ * Schema for validating 32-bit unsigned integers.
199
+ *
200
+ * Range: 0 to 4,294,967,295
201
+ */
202
+ export const Uint32Schema = createSchemaWithJsonSchema((value) => {
203
+ try {
204
+ const wasm = getWasm();
205
+ const result = wasm.validateU32(value);
206
+ return convertWasmResult(result);
207
+ }
208
+ catch {
209
+ if (typeof value !== 'number' || !Number.isInteger(value)) {
210
+ return fail('Expected u32');
211
+ }
212
+ const MAX_U32 = 4294967295;
213
+ if (value < 0 || value > MAX_U32) {
214
+ return fail('Value out of u32 range');
215
+ }
216
+ return success(value);
217
+ }
218
+ }, (target) => {
219
+ try {
220
+ const wasm = getWasm();
221
+ return wasm.u32JsonSchema(target);
222
+ }
223
+ catch {
224
+ return {
225
+ type: 'integer',
226
+ minimum: 0,
227
+ maximum: 4294967295,
228
+ };
229
+ }
230
+ });
231
+ /**
232
+ * Schema for validating 64-bit unsigned integers.
233
+ *
234
+ * Note: JavaScript numbers can only safely represent integers up to 2^53 - 1.
235
+ *
236
+ * Range: 0 to 18,446,744,073,709,551,615
237
+ */
238
+ export const Uint64Schema = createSchemaWithJsonSchema((value) => {
239
+ try {
240
+ const wasm = getWasm();
241
+ const result = wasm.validateU64(value);
242
+ return convertWasmResult(result);
243
+ }
244
+ catch {
245
+ if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {
246
+ return fail('Expected u64');
247
+ }
248
+ return success(value);
249
+ }
250
+ }, (target) => {
251
+ try {
252
+ const wasm = getWasm();
253
+ return wasm.u64JsonSchema(target);
254
+ }
255
+ catch {
256
+ return { type: 'integer', minimum: 0 };
257
+ }
258
+ });
259
+ /**
260
+ * Schema for validating 32-bit floating point numbers.
261
+ */
262
+ export const Float32Schema = createSchemaWithJsonSchema((value) => {
263
+ try {
264
+ const wasm = getWasm();
265
+ const result = wasm.validateF32(value);
266
+ return convertWasmResult(result);
267
+ }
268
+ catch {
269
+ if (typeof value !== 'number') {
270
+ return fail('Expected f32');
271
+ }
272
+ return success(value);
273
+ }
274
+ }, (target) => {
275
+ try {
276
+ const wasm = getWasm();
277
+ return wasm.f32JsonSchema(target);
278
+ }
279
+ catch {
280
+ return { type: 'number' };
281
+ }
282
+ });
283
+ /**
284
+ * Schema for validating 64-bit floating point numbers.
285
+ */
286
+ export const Float64Schema = createSchemaWithJsonSchema((value) => {
287
+ try {
288
+ const wasm = getWasm();
289
+ const result = wasm.validateF64(value);
290
+ return convertWasmResult(result);
291
+ }
292
+ catch {
293
+ if (typeof value !== 'number') {
294
+ return fail('Expected f64');
295
+ }
296
+ return success(value);
297
+ }
298
+ }, (target) => {
299
+ try {
300
+ const wasm = getWasm();
301
+ return wasm.f64JsonSchema(target);
302
+ }
303
+ catch {
304
+ return { type: 'number' };
305
+ }
306
+ });
307
+ /**
308
+ * Alias for Float64Schema - the default JavaScript number type.
309
+ */
310
+ export { Float64Schema as DoubleSchema };
311
+ /**
312
+ * Alias for Int32Schema - commonly used integer type.
313
+ */
314
+ export { Int32Schema as IntegerSchema };
315
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}