@nerd-bible/valio 0.1.12 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codecs.d.ts +1 -1
- package/dist/codecs.d.ts.map +1 -1
- package/dist/codecs.js +21 -4
- package/dist/codecs.js.map +1 -1
- package/dist/containers.d.ts +25 -8
- package/dist/containers.d.ts.map +1 -1
- package/dist/containers.js +132 -96
- package/dist/containers.js.map +1 -1
- package/dist/pipe.d.ts +15 -18
- package/dist/pipe.d.ts.map +1 -1
- package/dist/pipe.js +34 -45
- package/dist/pipe.js.map +1 -1
- package/dist/primitives.d.ts +114 -16
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +103 -33
- package/dist/primitives.js.map +1 -1
- package/package.json +1 -1
- package/src/codecs.test.ts +2 -4
- package/src/codecs.ts +23 -6
- package/src/containers.test.ts +9 -1
- package/src/containers.ts +146 -127
- package/src/pipe.ts +68 -68
- package/src/primitives.ts +127 -47
package/dist/codecs.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare function custom<I, O>(input: Pipe<I, any>, output: Pipe<any, O>,
|
|
|
4
4
|
encode?(input: O, ctx: Context): Result<I>;
|
|
5
5
|
decode?(output: I, ctx: Context): Result<O>;
|
|
6
6
|
}): Pipe<I, O>;
|
|
7
|
-
export declare function number(parser?: (string: string) => number): p.Comparable<
|
|
7
|
+
export declare function number(parser?: (string: string) => number): p.Comparable<any, number>;
|
|
8
8
|
export declare function boolean(opts: {
|
|
9
9
|
true?: RegExp;
|
|
10
10
|
false?: RegExp;
|
package/dist/codecs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../src/codecs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAC;AAErC,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAC1B,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EACnB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EACpB,KAAK,EAAE;IACN,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5C,GACC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"codecs.d.ts","sourceRoot":"","sources":["../src/codecs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAC;AAErC,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAC1B,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EACnB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EACpB,KAAK,EAAE;IACN,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5C,GACC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAuBZ;AAED,wBAAgB,MAAM,CACrB,MAAM,6BAAoB,GACxB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAc3B;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAerB"}
|
package/dist/codecs.js
CHANGED
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
import * as p from "./primitives.js";
|
|
2
2
|
export function custom(input, output, codec) {
|
|
3
3
|
const res = output.clone();
|
|
4
|
-
res
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Object.defineProperty(res, "inputName", {
|
|
5
|
+
get() {
|
|
6
|
+
return input.inputName;
|
|
7
|
+
},
|
|
8
|
+
});
|
|
9
|
+
Object.defineProperty(res, "inputTypeCheck", {
|
|
10
|
+
get() {
|
|
11
|
+
return input.inputTypeCheck.bind(input);
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(res, "inputTransform", {
|
|
15
|
+
get() {
|
|
16
|
+
return codec.decode;
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(res, "outputTransform", {
|
|
20
|
+
get() {
|
|
21
|
+
return codec.encode;
|
|
22
|
+
},
|
|
23
|
+
});
|
|
7
24
|
return res;
|
|
8
25
|
}
|
|
9
26
|
export function number(parser = Number.parseFloat) {
|
|
@@ -11,7 +28,7 @@ export function number(parser = Number.parseFloat) {
|
|
|
11
28
|
decode(input, ctx) {
|
|
12
29
|
if (typeof input === "number")
|
|
13
30
|
return { success: true, output: input };
|
|
14
|
-
if (
|
|
31
|
+
if (input == null || (typeof input === "string" && input.toLowerCase()) === "nan")
|
|
15
32
|
return { success: true, output: Number.NaN };
|
|
16
33
|
const output = parser(input);
|
|
17
34
|
if (!Number.isNaN(output))
|
package/dist/codecs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codecs.js","sourceRoot":"","sources":["../src/codecs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAC;AAErC,MAAM,UAAU,MAAM,CACrB,KAAmB,EACnB,MAAoB,EACpB,KAGC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAS,CAAC;IAClC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"codecs.js","sourceRoot":"","sources":["../src/codecs.ts"],"names":[],"mappings":"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"}
|
package/dist/containers.d.ts
CHANGED
|
@@ -1,22 +1,37 @@
|
|
|
1
1
|
import type { Input, Output, Result } from "./pipe.ts";
|
|
2
2
|
import { Context, Pipe } from "./pipe.ts";
|
|
3
3
|
import * as p from "./primitives.ts";
|
|
4
|
-
declare class ValioArray<T> extends p.Arrayish<any[], T[]> {
|
|
4
|
+
export declare class ValioArray<T> extends p.Arrayish<any[], T[]> {
|
|
5
5
|
element: Pipe<any, T>;
|
|
6
|
-
static typeCheck(v: any): v is any[];
|
|
7
6
|
constructor(element: Pipe<any, T>);
|
|
7
|
+
get inputName(): string;
|
|
8
|
+
static typeCheck(v: any): v is any[];
|
|
9
|
+
inputTypeCheck(v: any): v is any[];
|
|
10
|
+
inputTransform(input: any[], ctx: Context): Result<T[]>;
|
|
11
|
+
get outputName(): string;
|
|
12
|
+
outputTypeCheck(v: any): v is T[];
|
|
8
13
|
}
|
|
9
14
|
export declare function array<T>(element: Pipe<any, T>): ValioArray<T>;
|
|
10
|
-
declare class ValioRecord<K extends PropertyKey, V> extends Pipe<Record<any, any>, Record<K, V>> {
|
|
15
|
+
export declare class ValioRecord<K extends PropertyKey, V> extends Pipe<Record<any, any>, Record<K, V>> {
|
|
11
16
|
keyPipe: Pipe<any, K>;
|
|
12
17
|
valPipe: Pipe<any, V>;
|
|
13
|
-
static typeCheck(v: any): v is Record<any, any>;
|
|
14
18
|
constructor(keyPipe: Pipe<any, K>, valPipe: Pipe<any, V>);
|
|
19
|
+
get inputName(): string;
|
|
20
|
+
static typeCheck(v: any): v is Record<any, any>;
|
|
21
|
+
inputTypeCheck(v: any): v is Record<any, any>;
|
|
22
|
+
inputTransform(input: Record<any, any>, ctx: Context): Result<Record<K, V>>;
|
|
23
|
+
get outputName(): string;
|
|
24
|
+
outputTypeCheck(v: any): v is Record<K, V>;
|
|
15
25
|
}
|
|
16
26
|
export declare function record<K extends PropertyKey, V>(keyPipe: Pipe<any, K>, valPipe: Pipe<any, V>): ValioRecord<K, V>;
|
|
17
|
-
declare class Union<T extends Readonly<Pipe[]>> extends Pipe<Output<T[number]>, Output<T[number]>> {
|
|
27
|
+
export declare class Union<T extends Readonly<Pipe[]>> extends Pipe<Output<T[number]>, Output<T[number]>> {
|
|
18
28
|
options: T;
|
|
19
29
|
constructor(options: T);
|
|
30
|
+
get inputName(): string;
|
|
31
|
+
inputTypeCheck(v: any): v is Output<T[number]>;
|
|
32
|
+
inputTransform(data: Output<T[number]>, ctx: Context): Result<Output<T[number]>>;
|
|
33
|
+
get outputName(): string;
|
|
34
|
+
outputTypeCheck(v: any): v is Output<T[number]>;
|
|
20
35
|
}
|
|
21
36
|
export declare function union<T extends Readonly<Pipe[]>>(options: T): Union<T>;
|
|
22
37
|
type ObjectOutput<Shape extends Record<string, Pipe<any, any>>> = {
|
|
@@ -41,9 +56,11 @@ export declare class ValioObject<Shape extends Record<any, Pipe<any, any>>> exte
|
|
|
41
56
|
isLoose: boolean;
|
|
42
57
|
static typeCheck(v: any): v is Record<any, any>;
|
|
43
58
|
constructor(shape: Shape, isLoose: boolean);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
59
|
+
get inputName(): string;
|
|
60
|
+
get outputName(): string;
|
|
61
|
+
inputTypeCheck(v: any): v is Record<any, any>;
|
|
62
|
+
inputTransform(data: object, ctx: Context): Result<ObjectOutput<Shape>>;
|
|
63
|
+
outputTypeCheck(v: any): v is ObjectOutput<Shape>;
|
|
47
64
|
pick<M extends Mask<keyof Shape>>(mask: M): ValioObject<Flatten<Pick<Shape, Extract<keyof Shape, keyof M>>>>;
|
|
48
65
|
omit<M extends Mask<keyof Shape>>(mask: M): ValioObject<Flatten<Omit<Shape, Extract<keyof Shape, keyof M>>>>;
|
|
49
66
|
partial<M extends Mask<keyof Shape>>(mask?: M): ValioObject<{
|
package/dist/containers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"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"}
|
package/dist/containers.js
CHANGED
|
@@ -1,121 +1,151 @@
|
|
|
1
|
-
import { Context,
|
|
1
|
+
import { Context, Pipe } from "./pipe.js";
|
|
2
2
|
import * as p from "./primitives.js";
|
|
3
|
-
class ValioArray extends p.Arrayish {
|
|
3
|
+
export class ValioArray extends p.Arrayish {
|
|
4
4
|
element;
|
|
5
|
+
constructor(element) {
|
|
6
|
+
super();
|
|
7
|
+
this.element = element;
|
|
8
|
+
}
|
|
9
|
+
get inputName() {
|
|
10
|
+
return "array";
|
|
11
|
+
}
|
|
5
12
|
static typeCheck(v) {
|
|
6
13
|
return Array.isArray(v);
|
|
7
14
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
15
|
+
inputTypeCheck(v) {
|
|
16
|
+
return ValioArray.typeCheck(v);
|
|
17
|
+
}
|
|
18
|
+
inputTransform(input, ctx) {
|
|
19
|
+
const output = new Array(input.length);
|
|
20
|
+
let success = true;
|
|
21
|
+
const length = ctx.jsonPath.length;
|
|
22
|
+
for (let i = 0; i < input.length; i++) {
|
|
23
|
+
ctx.jsonPath[length] = i.toString();
|
|
24
|
+
const decoded = this.element.decode(input[i], ctx);
|
|
25
|
+
if (decoded.success)
|
|
26
|
+
output[i] = decoded.output;
|
|
27
|
+
else
|
|
28
|
+
success = false;
|
|
29
|
+
}
|
|
30
|
+
ctx.jsonPath.length = length;
|
|
31
|
+
if (!success)
|
|
32
|
+
return { success, errors: ctx.errors };
|
|
33
|
+
return { success, output };
|
|
34
|
+
}
|
|
35
|
+
get outputName() {
|
|
36
|
+
return `array<${this.element.outputName}>`;
|
|
37
|
+
}
|
|
38
|
+
outputTypeCheck(v) {
|
|
39
|
+
if (!ValioArray.typeCheck(v))
|
|
40
|
+
return false;
|
|
41
|
+
for (const e of v)
|
|
42
|
+
if (!this.element.outputTypeCheck(e))
|
|
27
43
|
return false;
|
|
28
|
-
|
|
29
|
-
if (!element.o.typeCheck(e))
|
|
30
|
-
return false;
|
|
31
|
-
return true;
|
|
32
|
-
}));
|
|
33
|
-
this.element = element;
|
|
44
|
+
return true;
|
|
34
45
|
}
|
|
35
46
|
}
|
|
36
47
|
export function array(element) {
|
|
37
48
|
return new ValioArray(element);
|
|
38
49
|
}
|
|
39
|
-
class ValioRecord extends Pipe {
|
|
50
|
+
export class ValioRecord extends Pipe {
|
|
40
51
|
keyPipe;
|
|
41
52
|
valPipe;
|
|
53
|
+
constructor(keyPipe, valPipe) {
|
|
54
|
+
super();
|
|
55
|
+
this.keyPipe = keyPipe;
|
|
56
|
+
this.valPipe = valPipe;
|
|
57
|
+
}
|
|
58
|
+
get inputName() {
|
|
59
|
+
return "object";
|
|
60
|
+
}
|
|
42
61
|
static typeCheck(v) {
|
|
43
|
-
return
|
|
62
|
+
return v && typeof v === "object";
|
|
44
63
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
success = false;
|
|
60
|
-
}
|
|
64
|
+
inputTypeCheck(v) {
|
|
65
|
+
return ValioRecord.typeCheck(v);
|
|
66
|
+
}
|
|
67
|
+
inputTransform(input, ctx) {
|
|
68
|
+
const output = {};
|
|
69
|
+
let success = true;
|
|
70
|
+
const length = ctx.jsonPath.length;
|
|
71
|
+
for (const key in input) {
|
|
72
|
+
ctx.jsonPath[length] = key;
|
|
73
|
+
const decodedKey = this.keyPipe.decode(key, ctx);
|
|
74
|
+
if (decodedKey.success) {
|
|
75
|
+
const decodedVal = this.valPipe.decode(input[key], ctx);
|
|
76
|
+
if (decodedVal.success) {
|
|
77
|
+
output[decodedKey.output] = decodedVal.output;
|
|
61
78
|
}
|
|
62
79
|
else {
|
|
63
80
|
success = false;
|
|
64
81
|
}
|
|
65
82
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return { success, errors: ctx.errors };
|
|
69
|
-
return { success, output };
|
|
70
|
-
}), new HalfPipe(`record<${keyPipe.o.name},${valPipe.o.name}>`, function recordCheckV(v) {
|
|
71
|
-
if (!ValioRecord.typeCheck(v))
|
|
72
|
-
return false;
|
|
73
|
-
for (const k in v) {
|
|
74
|
-
// Keys will always be strings.
|
|
75
|
-
// if (!keyPipe.o.typeCheck(k)) return false;
|
|
76
|
-
if (!valPipe.o.typeCheck(v[k]))
|
|
77
|
-
return false;
|
|
83
|
+
else {
|
|
84
|
+
success = false;
|
|
78
85
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
}
|
|
87
|
+
ctx.jsonPath.length = length;
|
|
88
|
+
if (!success)
|
|
89
|
+
return { success, errors: ctx.errors };
|
|
90
|
+
return { success, output };
|
|
91
|
+
}
|
|
92
|
+
get outputName() {
|
|
93
|
+
return `record<${this.keyPipe.inputName},${this.valPipe.outputName}>`;
|
|
94
|
+
}
|
|
95
|
+
outputTypeCheck(v) {
|
|
96
|
+
if (!ValioRecord.typeCheck(v))
|
|
97
|
+
return false;
|
|
98
|
+
for (const k in v) {
|
|
99
|
+
// Keys will always be strings.
|
|
100
|
+
// if (!keyPipe.o.typeCheck(k)) return false;
|
|
101
|
+
if (!this.valPipe.outputTypeCheck(v[k]))
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
83
105
|
}
|
|
84
106
|
}
|
|
85
107
|
export function record(keyPipe, valPipe) {
|
|
86
108
|
return new ValioRecord(keyPipe, valPipe);
|
|
87
109
|
}
|
|
88
|
-
class Union extends Pipe {
|
|
110
|
+
export class Union extends Pipe {
|
|
89
111
|
options;
|
|
90
112
|
constructor(options) {
|
|
91
|
-
|
|
92
|
-
super(new HalfPipe(name, function isUnionType(v) {
|
|
93
|
-
for (const f of options)
|
|
94
|
-
if (f.i.typeCheck(v))
|
|
95
|
-
return true;
|
|
96
|
-
return false;
|
|
97
|
-
}, (data, ctx) => {
|
|
98
|
-
// Throw away errors since we expect them.
|
|
99
|
-
const newCtx = new Context();
|
|
100
|
-
newCtx.pushErrorFmt = () => { };
|
|
101
|
-
newCtx.pushError = () => { };
|
|
102
|
-
for (const f of options) {
|
|
103
|
-
const decoded = f.decode(data, newCtx);
|
|
104
|
-
if (decoded.success)
|
|
105
|
-
return decoded;
|
|
106
|
-
}
|
|
107
|
-
// Sad path -- do again with real ctx to gather errors.
|
|
108
|
-
for (const f of options)
|
|
109
|
-
f.decode(data, ctx);
|
|
110
|
-
return { success: false, errors: ctx.errors };
|
|
111
|
-
}), new HalfPipe(name, function isUnionType2(v) {
|
|
112
|
-
for (const f of options)
|
|
113
|
-
if (f.o.typeCheck(v))
|
|
114
|
-
return true;
|
|
115
|
-
return false;
|
|
116
|
-
}));
|
|
113
|
+
super();
|
|
117
114
|
this.options = options;
|
|
118
115
|
}
|
|
116
|
+
get inputName() {
|
|
117
|
+
return this.options.map((o) => o.outputName).join("|");
|
|
118
|
+
}
|
|
119
|
+
inputTypeCheck(v) {
|
|
120
|
+
for (const f of this.options)
|
|
121
|
+
if (f.inputTypeCheck(v))
|
|
122
|
+
return true;
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
inputTransform(data, ctx) {
|
|
126
|
+
// Throw away errors since we expect them.
|
|
127
|
+
const newCtx = new Context();
|
|
128
|
+
newCtx.pushErrorFmt = () => { };
|
|
129
|
+
newCtx.pushError = () => { };
|
|
130
|
+
for (const f of this.options) {
|
|
131
|
+
const decoded = f.decode(data, newCtx);
|
|
132
|
+
if (decoded.success)
|
|
133
|
+
return decoded;
|
|
134
|
+
}
|
|
135
|
+
// Sad path -- do again with real ctx to gather errors.
|
|
136
|
+
for (const f of this.options)
|
|
137
|
+
f.decode(data, ctx);
|
|
138
|
+
return { success: false, errors: ctx.errors };
|
|
139
|
+
}
|
|
140
|
+
get outputName() {
|
|
141
|
+
return this.inputName;
|
|
142
|
+
}
|
|
143
|
+
outputTypeCheck(v) {
|
|
144
|
+
for (const f of this.options)
|
|
145
|
+
if (f.outputTypeCheck(v))
|
|
146
|
+
return true;
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
119
149
|
}
|
|
120
150
|
export function union(options) {
|
|
121
151
|
return new Union(options);
|
|
@@ -127,16 +157,22 @@ export class ValioObject extends Pipe {
|
|
|
127
157
|
return typeof v === "object";
|
|
128
158
|
}
|
|
129
159
|
constructor(shape, isLoose) {
|
|
130
|
-
super(
|
|
131
|
-
.map(([k, v]) => `${k}: ${v.o.name}`)
|
|
132
|
-
.join(",")}}`, (v) => this.typeCheckOutput(v)));
|
|
160
|
+
super();
|
|
133
161
|
this.shape = shape;
|
|
134
162
|
this.isLoose = isLoose;
|
|
135
163
|
}
|
|
136
|
-
|
|
137
|
-
return
|
|
164
|
+
get inputName() {
|
|
165
|
+
return "object";
|
|
166
|
+
}
|
|
167
|
+
get outputName() {
|
|
168
|
+
return `{${Object.entries(this.shape)
|
|
169
|
+
.map(([k, v]) => `${k}: ${v.outputName}`)
|
|
170
|
+
.join(",")}}`;
|
|
171
|
+
}
|
|
172
|
+
inputTypeCheck(v) {
|
|
173
|
+
return ValioObject.typeCheck(v);
|
|
138
174
|
}
|
|
139
|
-
|
|
175
|
+
inputTransform(data, ctx) {
|
|
140
176
|
const output = this.isLoose ? data : {};
|
|
141
177
|
let success = true;
|
|
142
178
|
const length = ctx.jsonPath.length;
|
|
@@ -156,11 +192,11 @@ export class ValioObject extends Pipe {
|
|
|
156
192
|
return { success, errors: ctx.errors };
|
|
157
193
|
return { success, output: output };
|
|
158
194
|
}
|
|
159
|
-
|
|
195
|
+
outputTypeCheck(v) {
|
|
160
196
|
if (!ValioObject.typeCheck(v))
|
|
161
197
|
return false;
|
|
162
198
|
for (const s in this.shape)
|
|
163
|
-
if (!this.shape[s].
|
|
199
|
+
if (!this.shape[s].outputTypeCheck(v[s]))
|
|
164
200
|
return false;
|
|
165
201
|
return true;
|
|
166
202
|
}
|
package/dist/containers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../src/containers.ts"],"names":[],"mappings":"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"}
|
package/dist/pipe.d.ts
CHANGED
|
@@ -12,20 +12,11 @@ export type Result<T> = {
|
|
|
12
12
|
success: false;
|
|
13
13
|
errors: any;
|
|
14
14
|
};
|
|
15
|
-
interface Check<T> {
|
|
15
|
+
export interface Check<T> {
|
|
16
16
|
valid(data: T, ctx: Context): boolean;
|
|
17
17
|
name: string;
|
|
18
18
|
props: Record<any, any>;
|
|
19
19
|
}
|
|
20
|
-
export declare class HalfPipe<I, O = never> {
|
|
21
|
-
name: string;
|
|
22
|
-
typeCheck: (v: any) => v is I;
|
|
23
|
-
transform?: (v: I, ctx: Context) => Result<O>;
|
|
24
|
-
/** Checks to run after type check */
|
|
25
|
-
checks: Check<I>[];
|
|
26
|
-
constructor(name: string, typeCheck: (v: any) => v is I, transform?: (v: I, ctx: Context) => Result<O>, checks?: Check<I>[]);
|
|
27
|
-
clone(): HalfPipe<I, O>;
|
|
28
|
-
}
|
|
29
20
|
/** During encoding, decoding, or validation. */
|
|
30
21
|
export declare class Context {
|
|
31
22
|
jsonPath: (string | number)[];
|
|
@@ -34,15 +25,22 @@ export declare class Context {
|
|
|
34
25
|
clone(): Context;
|
|
35
26
|
pushError(error: Error): void;
|
|
36
27
|
pushErrorFmt(name: string, input: any, props: Record<any, any>): void;
|
|
37
|
-
run<I
|
|
28
|
+
run<I>(input: any, name: () => string, typeCheck: (v: any) => v is I, checks?: Check<I>[]): Result<I>;
|
|
38
29
|
}
|
|
39
|
-
export declare
|
|
40
|
-
|
|
41
|
-
o: HalfPipe<O, I>;
|
|
42
|
-
constructor(i: HalfPipe<I, O>, o: HalfPipe<O, I>);
|
|
30
|
+
export declare function cloneObject(obj: any): any;
|
|
31
|
+
export declare abstract class Pipe<I = any, O = any> {
|
|
43
32
|
pipes: Pipe<any, any>[];
|
|
44
33
|
registry: Record<PropertyKey, any>;
|
|
45
|
-
|
|
34
|
+
abstract inputName: string;
|
|
35
|
+
abstract inputTypeCheck(v: any): v is I;
|
|
36
|
+
/** Checks to run after type check */
|
|
37
|
+
inputChecks?: Check<I>[];
|
|
38
|
+
inputTransform?(v: I, ctx: Context): Result<O>;
|
|
39
|
+
abstract outputName: string;
|
|
40
|
+
abstract outputTypeCheck(v: any): v is O;
|
|
41
|
+
/** Checks to run after type check */
|
|
42
|
+
outputChecks?: Check<O>[];
|
|
43
|
+
outputTransform?(v: O, ctx: Context): Result<I>;
|
|
46
44
|
clone(): this;
|
|
47
45
|
refine(valid: (data: O, ctx: Context) => boolean, name: string, props?: Record<any, any>): this;
|
|
48
46
|
pipe<I2 extends O, O2>(pipe: Pipe<I2, O2>): Pipe<I, O2>;
|
|
@@ -50,9 +48,8 @@ export declare class Pipe<I = any, O = any> {
|
|
|
50
48
|
decode(input: I, ctx?: Context): Result<O>;
|
|
51
49
|
encodeAny(output: any, ctx?: Context): Result<I>;
|
|
52
50
|
encode(output: O, ctx?: Context): Result<I>;
|
|
53
|
-
register(key: PropertyKey, value: any):
|
|
51
|
+
register(key: PropertyKey, value: any): Pipe<I, O>;
|
|
54
52
|
}
|
|
55
53
|
export type Input<T extends Pipe> = Parameters<T["decode"]>[0];
|
|
56
54
|
export type Output<T extends Pipe> = Parameters<T["encode"]>[0];
|
|
57
|
-
export {};
|
|
58
55
|
//# sourceMappingURL=pipe.d.ts.map
|
package/dist/pipe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,GAAG;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AACpD,MAAM,MAAM,MAAM,GAAG;IAAE,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,CAAA;CAAE,CAAC;AACtD,MAAM,MAAM,MAAM,CAAC,CAAC,IACjB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAC5B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
|