@nerd-bible/valio 0.0.11 → 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.
@@ -1,193 +0,0 @@
1
- import { HalfPipe, Pipe } from "./pipe";
2
- import * as p from "./primitives";
3
- class ValioArray extends p.Arrayish {
4
- element;
5
- constructor(element) {
6
- super(new HalfPipe("array", (v) => Array.isArray(v), (input, ctx) => {
7
- const output = new Array(input.length);
8
- let success = true;
9
- const length = ctx.jsonPath.length;
10
- for (let i = 0; i < input.length; i++) {
11
- ctx.jsonPath[length] = i.toString();
12
- const decoded = element.decode(input[i], ctx);
13
- if (decoded.success)
14
- output[i] = decoded.output;
15
- else
16
- success = false;
17
- }
18
- ctx.jsonPath.length = length;
19
- if (!success)
20
- return { success, errors: ctx.errors };
21
- return { success, output };
22
- }), new HalfPipe(`array<${element.o.name}>`, (v) => {
23
- if (!Array.isArray(v))
24
- return false;
25
- for (const e of v)
26
- if (!element.o.typeCheck(e))
27
- return false;
28
- return true;
29
- }));
30
- this.element = element;
31
- }
32
- }
33
- export function array(element) {
34
- return new ValioArray(element);
35
- }
36
- class ValioRecord extends Pipe {
37
- keyPipe;
38
- valPipe;
39
- constructor(keyPipe, valPipe) {
40
- super(new HalfPipe("object", (v) => Object.prototype.toString.call(v) == "[object Object]", (input, ctx) => {
41
- const output = {};
42
- let success = true;
43
- const length = ctx.jsonPath.length;
44
- for (const key in input) {
45
- ctx.jsonPath[length] = key;
46
- const decodedKey = keyPipe.decode(key, ctx);
47
- if (decodedKey.success) {
48
- const decodedVal = valPipe.decode(input[key], ctx);
49
- if (decodedVal.success) {
50
- output[decodedKey.output] = decodedVal.output;
51
- }
52
- else {
53
- success = false;
54
- }
55
- }
56
- else {
57
- success = false;
58
- }
59
- }
60
- ctx.jsonPath.length = length;
61
- if (!success)
62
- return { success, errors: ctx.errors };
63
- return { success, output };
64
- }), new HalfPipe(`record<${keyPipe.o.name},${valPipe.o.name}>`, (v) => {
65
- if (Object.prototype.toString.call(v) != "[object Object]")
66
- return false;
67
- for (const k in v) {
68
- // Keys will always be strings.
69
- // if (!keyPipe.o.typeCheck(k)) return false;
70
- if (!valPipe.o.typeCheck(v[k]))
71
- return false;
72
- }
73
- return true;
74
- }));
75
- this.keyPipe = keyPipe;
76
- this.valPipe = valPipe;
77
- }
78
- }
79
- export function record(keyPipe, valPipe) {
80
- return new ValioRecord(keyPipe, valPipe);
81
- }
82
- class Union extends Pipe {
83
- options;
84
- constructor(options) {
85
- const name = options.map((o) => o.o.name).join("|");
86
- super(new HalfPipe(name, (v) => {
87
- for (const f of options)
88
- if (f.i.typeCheck(v))
89
- return true;
90
- return false;
91
- }, (data, ctx) => {
92
- const newCtx = ctx.clone();
93
- for (const s in options) {
94
- const decoded = options[s].decode(data, newCtx);
95
- if (decoded.success)
96
- return decoded;
97
- }
98
- Object.assign(ctx.errors, newCtx.errors);
99
- return { success: false, errors: ctx.errors };
100
- }), new HalfPipe(name, (v) => {
101
- for (const f of options)
102
- if (f.o.typeCheck(v))
103
- return true;
104
- return false;
105
- }));
106
- this.options = options;
107
- }
108
- }
109
- export function union(options) {
110
- return new Union(options);
111
- }
112
- class ValioObject extends Pipe {
113
- shape;
114
- isLoose;
115
- constructor(shape, isLoose) {
116
- super(new HalfPipe("object", (v) => Object.prototype.toString.call(v) == "[object Object]", (data, ctx) => this.transformInput(data, ctx)), new HalfPipe(`{${Object.entries(shape)
117
- .map(([k, v]) => `${k}: ${v.o.name}`)
118
- .join(",")}}`, (v) => this.typeCheckOutput(v)));
119
- this.shape = shape;
120
- this.isLoose = isLoose;
121
- }
122
- clone() {
123
- return new ValioObject(this.shape, this.isLoose);
124
- }
125
- transformInput(data, ctx) {
126
- const output = this.isLoose ? data : {};
127
- let success = true;
128
- const length = ctx.jsonPath.length;
129
- // Always expect the shape since that's what typescript does.
130
- for (const p in this.shape) {
131
- ctx.jsonPath[length] = p;
132
- const decoded = this.shape[p].decode(data[p], ctx);
133
- if (decoded.success)
134
- output[p] = decoded.output;
135
- else {
136
- success = false;
137
- delete output[p];
138
- }
139
- }
140
- ctx.jsonPath.length = length;
141
- if (!success)
142
- return { success, errors: ctx.errors };
143
- return { success, output: output };
144
- }
145
- typeCheckOutput(v) {
146
- if (Object.prototype.toString.call(v) != "[object Object]")
147
- return false;
148
- for (const s in this.shape)
149
- if (!this.shape[s].o.typeCheck(v[s]))
150
- return false;
151
- return true;
152
- }
153
- pick(mask) {
154
- const next = this.clone();
155
- for (const k in next.shape) {
156
- if (!mask[k])
157
- delete next.shape[k];
158
- }
159
- return next;
160
- }
161
- omit(mask) {
162
- const next = this.clone();
163
- for (const k in next.shape) {
164
- if (mask[k])
165
- delete next.shape[k];
166
- }
167
- return next;
168
- }
169
- partial(mask) {
170
- const next = this.clone();
171
- for (const k in next.shape) {
172
- if (mask[k]) {
173
- // @ts-expect-error
174
- next.shape[k] = union([next.shape[k], p.undefined()]);
175
- }
176
- }
177
- return next;
178
- }
179
- extend(shape) {
180
- const next = this.clone();
181
- Object.assign(next.shape, shape);
182
- return next;
183
- }
184
- loose(isLoose = true) {
185
- const next = this.clone();
186
- next.isLoose = isLoose;
187
- return next;
188
- }
189
- }
190
- export function object(shape, loose = false) {
191
- return new ValioObject(shape, loose);
192
- }
193
- //# sourceMappingURL=containers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"containers.js","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export * as codecs from "./codecs";
2
- export * from "./containers";
3
- export * from "./pipe";
4
- export * from "./primitives";
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
package/dist/index.js DELETED
@@ -1,5 +0,0 @@
1
- export * as codecs from "./codecs";
2
- export * from "./containers";
3
- export * from "./pipe";
4
- export * from "./primitives";
5
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
@@ -1,2 +0,0 @@
1
- export default function format(name: string, props: Record<any, any>): string;
2
- //# sourceMappingURL=en.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAG5E"}
@@ -1,22 +0,0 @@
1
- const templates = {
2
- gt: "must be > {$n}",
3
- lt: "must be < {$n}",
4
- gte: "must be >= {$n}",
5
- lte: "must be <= {$n}",
6
- eq: "must be {$n}",
7
- minLength: "must have length <= {$n}",
8
- maxLength: "must have length >= {$n}",
9
- regex: "must match {$regex}",
10
- type: "not type {$expected}",
11
- coerce: "could not coerce to {$expected}",
12
- };
13
- function fmt(template, props) {
14
- // You could use something like
15
- // [MessageFormat](https://messageformat.unicode.org/) here.
16
- return template.replace(/{\$(.*?)}/g, (_, g) => props[g]);
17
- }
18
- export default function format(name, props) {
19
- const template = templates[name];
20
- return template ? fmt(template, props) : `TODO: add template for ${name}`;
21
- }
22
- //# sourceMappingURL=en.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAA2B;IACzC,EAAE,EAAE,gBAAgB;IACpB,EAAE,EAAE,gBAAgB;IACpB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,iBAAiB;IACtB,EAAE,EAAE,cAAc;IAClB,SAAS,EAAE,0BAA0B;IACrC,SAAS,EAAE,0BAA0B;IACrC,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,sBAAsB;IAC5B,MAAM,EAAE,iCAAiC;CACzC,CAAC;AAEF,SAAS,GAAG,CAAC,QAAgB,EAAE,KAAuB;IACrD,+BAA+B;IAC/B,4DAA4D;IAC5D,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAY,EAAE,KAAuB;IACnE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,0BAA0B,IAAI,EAAE,CAAC;AAC3E,CAAC"}
package/dist/pipe.d.ts DELETED
@@ -1,66 +0,0 @@
1
- export type Error = {
2
- input: any;
3
- message: string;
4
- };
5
- export type Errors = {
6
- [inputPath: string]: Error[];
7
- };
8
- export type Result<T> = {
9
- success: true;
10
- output: T;
11
- } | {
12
- success: false;
13
- errors: any;
14
- };
15
- interface Check<T> {
16
- valid(data: T, ctx: Context): boolean;
17
- name: string;
18
- props: Record<any, any>;
19
- }
20
- export declare class HalfPipe<I, O = never> {
21
- /** The type name */
22
- name: string;
23
- /** The first check to run */
24
- typeCheck: (v: any) => v is I;
25
- /** Optional transform for pipe to run at end. Useful for containers */
26
- transform?: ((v: I, ctx: Context) => Result<O>) | undefined;
27
- constructor(
28
- /** The type name */
29
- name: string,
30
- /** The first check to run */
31
- typeCheck: (v: any) => v is I,
32
- /** Optional transform for pipe to run at end. Useful for containers */
33
- transform?: ((v: I, ctx: Context) => Result<O>) | undefined);
34
- /** The second checks to run */
35
- checks: Check<I>[];
36
- clone(): this;
37
- }
38
- /** During encoding, decoding, or validation. */
39
- export declare class Context {
40
- jsonPath: (string | number)[];
41
- errors: Errors;
42
- errorFmt(name: string, props: Record<any, any>): any;
43
- clone(): Context;
44
- pushError(error: Error): void;
45
- pushErrorFmt(name: string, input: any, props: Record<any, any>): void;
46
- run<I, O>(input: any, halfPipe: HalfPipe<I, O>): Result<I>;
47
- }
48
- export declare class Pipe<I = any, O = any> {
49
- i: HalfPipe<I, O>;
50
- o: HalfPipe<O, I>;
51
- constructor(i: HalfPipe<I, O>, o: HalfPipe<O, I>);
52
- pipes: Pipe<any, any>[];
53
- registry: Record<PropertyKey, any>;
54
- clone(): this;
55
- refine(valid: (data: O, ctx: Context) => boolean, name: string, props: Record<any, any>): this;
56
- pipe<I2 extends O, O2>(pipe: Pipe<I2, O2>): Pipe<I, O2>;
57
- decodeAny(input: any, ctx?: Context): Result<O>;
58
- decode(input: I, ctx?: Context): Result<O>;
59
- encodeAny(output: any, ctx?: Context): Result<I>;
60
- encode(output: O, ctx?: Context): Result<I>;
61
- register(key: PropertyKey, value: any): this;
62
- }
63
- export type Input<T extends Pipe> = Parameters<T["decode"]>[0];
64
- export type Output<T extends Pipe> = Parameters<T["encode"]>[0];
65
- export {};
66
- //# sourceMappingURL=pipe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
package/dist/pipe.js DELETED
@@ -1,150 +0,0 @@
1
- import enFormat from "./locales/en";
2
- function clone(obj) {
3
- return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));
4
- }
5
- export class HalfPipe {
6
- name;
7
- typeCheck;
8
- transform;
9
- constructor(
10
- /** The type name */
11
- name,
12
- /** The first check to run */
13
- typeCheck,
14
- /** Optional transform for pipe to run at end. Useful for containers */
15
- transform) {
16
- this.name = name;
17
- this.typeCheck = typeCheck;
18
- this.transform = transform;
19
- }
20
- /** The second checks to run */
21
- checks = [];
22
- clone() {
23
- const res = clone(this);
24
- res.checks = res.checks.slice();
25
- return res;
26
- }
27
- }
28
- /** During encoding, decoding, or validation. */
29
- export class Context {
30
- jsonPath = [];
31
- errors = {};
32
- errorFmt(name, props) {
33
- return enFormat(name, props);
34
- }
35
- clone() {
36
- const res = clone(this);
37
- res.jsonPath = res.jsonPath.slice();
38
- res.errors = { ...res.errors };
39
- return res;
40
- }
41
- pushError(error) {
42
- const key = `.${this.jsonPath.join(".")}`;
43
- this.errors[key] ??= [];
44
- this.errors[key].push(error);
45
- }
46
- pushErrorFmt(name, input, props) {
47
- const message = this.errorFmt(name, props);
48
- this.pushError({ input, message });
49
- }
50
- run(input, halfPipe) {
51
- if (!halfPipe.typeCheck(input)) {
52
- this.pushErrorFmt("type", input, { expected: halfPipe.name });
53
- return { success: false, errors: this.errors };
54
- }
55
- let success = true;
56
- for (const c of halfPipe.checks ?? []) {
57
- if (!c.valid(input, this)) {
58
- this.pushErrorFmt(c.name, input, c.props);
59
- success = false;
60
- }
61
- }
62
- if (!success)
63
- return { success, errors: this.errors };
64
- return { success, output: input };
65
- }
66
- }
67
- export class Pipe {
68
- i;
69
- o;
70
- constructor(i, o) {
71
- this.i = i;
72
- this.o = o;
73
- }
74
- pipes = [];
75
- registry = {};
76
- clone() {
77
- const res = clone(this);
78
- res.i = res.i.clone();
79
- res.o = res.o.clone();
80
- res.pipes = res.pipes.slice();
81
- res.registry = { ...res.registry };
82
- return res;
83
- }
84
- refine(valid, name, props) {
85
- const res = this.clone();
86
- res.o.checks.push({ valid, name, props });
87
- return res;
88
- }
89
- pipe(pipe) {
90
- const res = this.clone();
91
- res.pipes.push(pipe);
92
- return res;
93
- }
94
- decodeAny(input, ctx = new Context()) {
95
- // 1. Verify input
96
- let res = ctx.run(input, this.i);
97
- if (!res.success)
98
- return res;
99
- // 2. Transform input to output
100
- if (this.i.transform) {
101
- res = this.i.transform(res.output, ctx);
102
- if (!res.success)
103
- return res;
104
- }
105
- // 3. Verify output
106
- res = ctx.run(res.output, this.o);
107
- if (!res.success)
108
- return res;
109
- // 4. Next
110
- for (const p of this.pipes) {
111
- res = p.decode(res.output, ctx);
112
- if (!res.success)
113
- return res;
114
- }
115
- return res;
116
- }
117
- decode(input, ctx = new Context()) {
118
- return this.decodeAny(input, ctx);
119
- }
120
- encodeAny(output, ctx = new Context()) {
121
- // 1. Next
122
- let res = { success: true, output };
123
- for (let i = this.pipes.length - 1; i >= 0; i--) {
124
- res = this.pipes[i].encodeAny(res.output, ctx);
125
- if (!res.success)
126
- return res;
127
- }
128
- // 2. Verify output
129
- res = ctx.run(res.output, this.o);
130
- if (!res.success)
131
- return res;
132
- // 3. Transform output to input
133
- if (this.o.transform) {
134
- res = this.o.transform(res.output, ctx);
135
- if (!res.success)
136
- return res;
137
- }
138
- // 4. Verify input
139
- return ctx.run(res.output, this.i);
140
- }
141
- encode(output, ctx = new Context()) {
142
- return this.encodeAny(output, ctx);
143
- }
144
- register(key, value) {
145
- const res = this.clone();
146
- res.registry[key] = value;
147
- return res;
148
- }
149
- }
150
- //# sourceMappingURL=pipe.js.map
package/dist/pipe.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import { Pipe } from "./pipe";
2
- export declare function boolean(): Pipe<boolean, boolean>;
3
- export declare function undefined(): Pipe<undefined, undefined>;
4
- export declare function any(): Pipe<any, any>;
5
- declare function null_(): Pipe<null, null>;
6
- export { null_ as null };
7
- export declare class Comparable<I, O> extends Pipe<I, O> {
8
- gt(n: O): this;
9
- gte(n: O): this;
10
- lt(n: O): this;
11
- lte(n: O): this;
12
- eq(n: O): this;
13
- }
14
- declare class ValioNumber extends Comparable<number, number> {
15
- constructor();
16
- }
17
- export declare function number(): ValioNumber;
18
- export declare class Arrayish<I, O extends {
19
- length: number;
20
- }> extends Pipe<I, O> {
21
- minLength(n: number): this;
22
- maxLength(n: number): this;
23
- }
24
- declare class ValioString extends Pipe<string, string> {
25
- constructor();
26
- regex(re: RegExp): this;
27
- }
28
- export declare function string(): ValioString;
29
- export type Lit = string | number | bigint | boolean | null | undefined;
30
- declare class ValioLiteral<T extends Lit> extends Pipe<T, T> {
31
- literal: T;
32
- constructor(literal: T);
33
- }
34
- export declare function literal<T extends Lit>(literal: T): ValioLiteral<T>;
35
- declare class ValioEnum<T extends Lit> extends Pipe<T, T> {
36
- literals: T[];
37
- constructor(literals: T[]);
38
- }
39
- declare function enum_<T extends Lit>(literals: T[]): ValioEnum<T>;
40
- export { enum_ as enum };
41
- //# sourceMappingURL=primitives.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,QAAQ,CAAC;AAOxC,wBAAgB,OAAO,2BAKtB;AAGD,wBAAgB,SAAS,+BAKxB;AAED,wBAAgB,GAAG,mBAElB;AAED,iBAAS,KAAK,qBAEb;AACD,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;AAEzB,qBAAa,UAAU,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,CAAC,EAAE,CAAC;IAGP,GAAG,CAAC,CAAC,EAAE,CAAC;IAGR,EAAE,CAAC,CAAC,EAAE,CAAC;IAGP,GAAG,CAAC,CAAC,EAAE,CAAC;IAGR,EAAE,CAAC,CAAC,EAAE,CAAC;CAGP;AAED,cAAM,WAAY,SAAQ,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;;CAKnD;AACD,wBAAgB,MAAM,gBAErB;AAED,qBAAa,QAAQ,CACpB,CAAC,EACD,CAAC,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;CACf,CACA,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACnB,SAAS,CAAC,CAAC,EAAE,MAAM;IAGnB,SAAS,CAAC,CAAC,EAAE,MAAM;CAGnB;AAED,cAAM,WAAY,SAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;;IAM7C,KAAK,CAAC,EAAE,EAAE,MAAM;CAGhB;AACD,wBAAgB,MAAM,IAAI,WAAW,CAEpC;AAED,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAExE,cAAM,YAAY,CAAC,CAAC,SAAS,GAAG,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC;gBAAV,OAAO,EAAE,CAAC;CAI7B;AACD,wBAAgB,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC,mBAEhD;AAED,cAAM,SAAS,CAAC,CAAC,SAAS,GAAG,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC,EAAE;gBAAb,QAAQ,EAAE,CAAC,EAAE;CAMhC;AACD,iBAAS,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAEzD;AACD,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC"}
@@ -1,89 +0,0 @@
1
- import { HalfPipe, Pipe } from "./pipe";
2
- function primitive(name, typeCheck) {
3
- const half = new HalfPipe(name, typeCheck);
4
- return new Pipe(half, half);
5
- }
6
- export function boolean() {
7
- return primitive("boolean", (v) => typeof v == "boolean");
8
- }
9
- // biome-ignore lint/suspicious/noShadowRestrictedNames: point of lib
10
- export function undefined() {
11
- return primitive("undefined", (v) => typeof v == "undefined");
12
- }
13
- export function any() {
14
- return primitive("any", (v) => true);
15
- }
16
- function null_() {
17
- return primitive("null", (v) => v === null);
18
- }
19
- export { null_ as null };
20
- export class Comparable extends Pipe {
21
- gt(n) {
22
- return this.refine((v) => v > n, "gt", { n });
23
- }
24
- gte(n) {
25
- return this.refine((v) => v >= n, "gte", { n });
26
- }
27
- lt(n) {
28
- return this.refine((v) => v < n, "lt", { n });
29
- }
30
- lte(n) {
31
- return this.refine((v) => v <= n, "lte", { n });
32
- }
33
- eq(n) {
34
- return this.refine((v) => v == n, "eq", { n });
35
- }
36
- }
37
- class ValioNumber extends Comparable {
38
- constructor() {
39
- const half = new HalfPipe("number", (v) => typeof v == "number");
40
- super(half, half);
41
- }
42
- }
43
- export function number() {
44
- return new ValioNumber();
45
- }
46
- export class Arrayish extends Pipe {
47
- minLength(n) {
48
- return this.refine((v) => v.length >= n, "minLength", { n });
49
- }
50
- maxLength(n) {
51
- return this.refine((v) => v.length <= n, "maxLength", { n });
52
- }
53
- }
54
- class ValioString extends Pipe {
55
- constructor() {
56
- const half = new HalfPipe("string", (v) => typeof v == "string");
57
- super(half, half);
58
- }
59
- regex(re) {
60
- return this.refine((v) => !!v.match(re), "regex", { regex: re.source });
61
- }
62
- }
63
- export function string() {
64
- return new ValioString();
65
- }
66
- class ValioLiteral extends Pipe {
67
- literal;
68
- constructor(literal) {
69
- const half = new HalfPipe(`${literal}`, (v) => v == literal);
70
- super(half, half);
71
- this.literal = literal;
72
- }
73
- }
74
- export function literal(literal) {
75
- return new ValioLiteral(literal);
76
- }
77
- class ValioEnum extends Pipe {
78
- literals;
79
- constructor(literals) {
80
- const half = new HalfPipe(`${literals.join(",")}`, (v) => literals.includes(v));
81
- super(half, half);
82
- this.literals = literals;
83
- }
84
- }
85
- function enum_(literals) {
86
- return new ValioEnum(literals);
87
- }
88
- export { enum_ as enum };
89
- //# sourceMappingURL=primitives.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}