@nerd-bible/valio 0.1.13 → 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/pipe.js CHANGED
@@ -1,23 +1,4 @@
1
1
  import enFormat from "./locales/en.js";
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
- /** Checks to run after type check */
10
- checks = [];
11
- constructor(name, typeCheck, transform, checks = []) {
12
- this.name = name;
13
- this.typeCheck = typeCheck;
14
- this.transform = transform;
15
- this.checks = checks;
16
- }
17
- clone() {
18
- return new HalfPipe(this.name, this.typeCheck, this.transform, this.checks.slice());
19
- }
20
- }
21
2
  /** During encoding, decoding, or validation. */
22
3
  export class Context {
23
4
  jsonPath = [];
@@ -40,13 +21,13 @@ export class Context {
40
21
  const message = this.errorFmt(name, props);
41
22
  this.pushError({ input, message });
42
23
  }
43
- run(input, halfPipe) {
44
- if (!halfPipe.typeCheck(input)) {
45
- this.pushErrorFmt("type", input, { expected: halfPipe.name });
24
+ run(input, name, typeCheck, checks) {
25
+ if (!typeCheck(input)) {
26
+ this.pushErrorFmt("type", input, { expected: name() });
46
27
  return { success: false, errors: this.errors };
47
28
  }
48
29
  let success = true;
49
- for (const c of halfPipe.checks ?? []) {
30
+ for (const c of checks ?? []) {
50
31
  if (!c.valid(input, this)) {
51
32
  this.pushErrorFmt(c.name, input, c.props);
52
33
  success = false;
@@ -57,27 +38,35 @@ export class Context {
57
38
  return { success, output: input };
58
39
  }
59
40
  }
41
+ export function cloneObject(obj) {
42
+ const res = Object.getPrototypeOf(obj) == Object.prototype ? {} : Object.create(obj);
43
+ for (const p in obj) {
44
+ const v = obj[p];
45
+ if (Array.isArray(v))
46
+ res[p] = v.slice();
47
+ else if (v && v.clone)
48
+ res[p] = v.clone();
49
+ else if (v && typeof v === "object")
50
+ res[p] = cloneObject(v);
51
+ else
52
+ res[p] = v;
53
+ }
54
+ return res;
55
+ }
60
56
  export class Pipe {
61
- i;
62
- o;
63
- constructor(i, o) {
64
- this.i = i;
65
- this.o = o;
66
- }
67
57
  pipes = [];
68
58
  registry = {};
69
- debug = false;
59
+ /** Checks to run after type check */
60
+ inputChecks;
61
+ /** Checks to run after type check */
62
+ outputChecks;
70
63
  clone() {
71
- const res = clone(this);
72
- res.i = res.i.clone();
73
- res.o = res.o.clone();
74
- res.pipes = res.pipes.slice();
75
- res.registry = { ...res.registry };
76
- return res;
64
+ return cloneObject(this);
77
65
  }
78
66
  refine(valid, name, props = {}) {
79
67
  const res = this.clone();
80
- res.o.checks.push({ valid, name, props });
68
+ res.outputChecks ??= [];
69
+ res.outputChecks.push({ valid, name, props });
81
70
  return res;
82
71
  }
83
72
  pipe(pipe) {
@@ -87,17 +76,17 @@ export class Pipe {
87
76
  }
88
77
  decodeAny(input, ctx = new Context()) {
89
78
  // 1. Verify input
90
- let res = ctx.run(input, this.i);
79
+ let res = ctx.run(input, () => this.inputName, this.inputTypeCheck.bind(this), this.inputChecks);
91
80
  if (!res.success)
92
81
  return res;
93
82
  // 2. Transform input to output
94
- if (this.i.transform) {
95
- res = this.i.transform(res.output, ctx);
83
+ if (this.inputTransform) {
84
+ res = this.inputTransform(res.output, ctx);
96
85
  if (!res.success)
97
86
  return res;
98
87
  }
99
88
  // 3. Verify output
100
- res = ctx.run(res.output, this.o);
89
+ res = ctx.run(res.output, () => this.outputName, this.outputTypeCheck.bind(this), this.outputChecks);
101
90
  if (!res.success)
102
91
  return res;
103
92
  // 4. Next
@@ -120,17 +109,17 @@ export class Pipe {
120
109
  return res;
121
110
  }
122
111
  // 2. Verify output
123
- res = ctx.run(res.output, this.o);
112
+ res = ctx.run(res.output, () => this.outputName, this.outputTypeCheck.bind(this), this.outputChecks);
124
113
  if (!res.success)
125
114
  return res;
126
115
  // 3. Transform output to input
127
- if (this.o.transform) {
128
- res = this.o.transform(res.output, ctx);
116
+ if (this.outputTransform) {
117
+ res = this.outputTransform(res.output, ctx);
129
118
  if (!res.success)
130
119
  return res;
131
120
  }
132
121
  // 4. Verify input
133
- return ctx.run(res.output, this.i);
122
+ return ctx.run(res.output, () => this.inputName, this.inputTypeCheck.bind(this), this.inputChecks);
134
123
  }
135
124
  encode(output, ctx = new Context()) {
136
125
  return this.encodeAny(output, ctx);
package/dist/pipe.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipe.js","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,87 @@
1
1
  import { Pipe } from "./pipe.ts";
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>;
2
+ export declare function boolean(): {
3
+ get inputName(): string;
4
+ inputTypeCheck(v: any): v is boolean;
5
+ get outputName(): string;
6
+ outputTypeCheck(v: any): v is boolean;
7
+ pipes: Pipe<any, any>[];
8
+ registry: Record<PropertyKey, any>;
9
+ inputChecks?: import("./pipe.ts").Check<boolean>[] | undefined;
10
+ inputTransform?(v: boolean, ctx: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
11
+ outputChecks?: import("./pipe.ts").Check<boolean>[] | undefined;
12
+ outputTransform?(v: boolean, ctx: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
13
+ clone(): /*elided*/ any;
14
+ refine(valid: (data: boolean, ctx: import("./pipe.ts").Context) => boolean, name: string, props?: Record<any, any>): /*elided*/ any;
15
+ pipe<I2 extends boolean, O2>(pipe: Pipe<I2, O2>): Pipe<boolean, O2>;
16
+ decodeAny(input: any, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
17
+ decode(input: boolean, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
18
+ encodeAny(output: any, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
19
+ encode(output: boolean, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
20
+ register(key: PropertyKey, value: any): Pipe<boolean, boolean>;
21
+ };
22
+ declare function undefined_(): {
23
+ get inputName(): string;
24
+ inputTypeCheck(v: any): v is undefined;
25
+ get outputName(): string;
26
+ outputTypeCheck(v: any): v is undefined;
27
+ pipes: Pipe<any, any>[];
28
+ registry: Record<PropertyKey, any>;
29
+ inputChecks?: import("./pipe.ts").Check<undefined>[] | undefined;
30
+ inputTransform?(v: undefined, ctx: import("./pipe.ts").Context): import("./pipe.ts").Result<undefined>;
31
+ outputChecks?: import("./pipe.ts").Check<undefined>[] | undefined;
32
+ outputTransform?(v: undefined, ctx: import("./pipe.ts").Context): import("./pipe.ts").Result<undefined>;
33
+ clone(): /*elided*/ any;
34
+ refine(valid: (data: undefined, ctx: import("./pipe.ts").Context) => boolean, name: string, props?: Record<any, any>): /*elided*/ any;
35
+ pipe<I2 extends undefined, O2>(pipe: Pipe<I2, O2>): Pipe<undefined, O2>;
36
+ decodeAny(input: any, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<undefined>;
37
+ decode(input: undefined, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<undefined>;
38
+ encodeAny(output: any, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<undefined>;
39
+ encode(output: undefined, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<undefined>;
40
+ register(key: PropertyKey, value: any): Pipe<undefined, undefined>;
41
+ };
42
+ export { undefined_ as undefined };
43
+ export declare function any(): {
44
+ get inputName(): string;
45
+ inputTypeCheck(v: any): v is boolean;
46
+ get outputName(): string;
47
+ outputTypeCheck(v: any): v is boolean;
48
+ pipes: Pipe<any, any>[];
49
+ registry: Record<PropertyKey, any>;
50
+ inputChecks?: import("./pipe.ts").Check<boolean>[] | undefined;
51
+ inputTransform?(v: boolean, ctx: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
52
+ outputChecks?: import("./pipe.ts").Check<boolean>[] | undefined;
53
+ outputTransform?(v: boolean, ctx: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
54
+ clone(): /*elided*/ any;
55
+ refine(valid: (data: boolean, ctx: import("./pipe.ts").Context) => boolean, name: string, props?: Record<any, any>): /*elided*/ any;
56
+ pipe<I2 extends boolean, O2>(pipe: Pipe<I2, O2>): Pipe<boolean, O2>;
57
+ decodeAny(input: any, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
58
+ decode(input: boolean, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
59
+ encodeAny(output: any, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
60
+ encode(output: boolean, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<boolean>;
61
+ register(key: PropertyKey, value: any): Pipe<boolean, boolean>;
62
+ };
63
+ declare function null_(): {
64
+ get inputName(): string;
65
+ inputTypeCheck(v: any): v is null;
66
+ get outputName(): string;
67
+ outputTypeCheck(v: any): v is null;
68
+ pipes: Pipe<any, any>[];
69
+ registry: Record<PropertyKey, any>;
70
+ inputChecks?: import("./pipe.ts").Check<null>[] | undefined;
71
+ inputTransform?(v: null, ctx: import("./pipe.ts").Context): import("./pipe.ts").Result<null>;
72
+ outputChecks?: import("./pipe.ts").Check<null>[] | undefined;
73
+ outputTransform?(v: null, ctx: import("./pipe.ts").Context): import("./pipe.ts").Result<null>;
74
+ clone(): /*elided*/ any;
75
+ refine(valid: (data: null, ctx: import("./pipe.ts").Context) => boolean, name: string, props?: Record<any, any>): /*elided*/ any;
76
+ pipe<I2 extends null, O2>(pipe: Pipe<I2, O2>): Pipe<null, O2>;
77
+ decodeAny(input: any, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<null>;
78
+ decode(input: null, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<null>;
79
+ encodeAny(output: any, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<null>;
80
+ encode(output: null, ctx?: import("./pipe.ts").Context): import("./pipe.ts").Result<null>;
81
+ register(key: PropertyKey, value: any): Pipe<null, null>;
82
+ };
6
83
  export { null_ as null };
7
- export declare class Comparable<I, O> extends Pipe<I, O> {
84
+ export declare abstract class Comparable<I, O = I> extends Pipe<I, O> {
8
85
  gt(n: O): this;
9
86
  gte(n: O): this;
10
87
  lt(n: O): this;
@@ -12,11 +89,23 @@ export declare class Comparable<I, O> extends Pipe<I, O> {
12
89
  eq(n: O): this;
13
90
  neq(n: O): this;
14
91
  }
15
- export declare class ValioNumber extends Comparable<number, number> {
16
- constructor();
92
+ export declare class ValioNumber extends Comparable<number> {
93
+ static typeCheck(v: any): v is number;
94
+ get inputName(): string;
95
+ inputTypeCheck(v: any): v is number;
96
+ get outputName(): string;
97
+ outputTypeCheck(v: any): v is number;
17
98
  }
18
99
  export declare function number(): ValioNumber;
19
- export declare class Arrayish<I, O extends {
100
+ export declare class ValioDate extends Comparable<Date> {
101
+ static typeCheck(v: any): v is Date;
102
+ get inputName(): string;
103
+ inputTypeCheck(v: any): v is Date;
104
+ get outputName(): string;
105
+ outputTypeCheck(v: any): v is Date;
106
+ }
107
+ export declare function date(): ValioDate;
108
+ export declare abstract class Arrayish<I, O extends {
20
109
  length: number;
21
110
  }> extends Pipe<I, O> {
22
111
  minLength(n: number): this;
@@ -24,7 +113,11 @@ export declare class Arrayish<I, O extends {
24
113
  length(n: number): this;
25
114
  }
26
115
  export declare class ValioString extends Arrayish<string, string> {
27
- constructor();
116
+ inputName: string;
117
+ outputName: string;
118
+ static typeCheck(v: any): v is string;
119
+ inputTypeCheck(v: any): v is string;
120
+ outputTypeCheck(v: any): v is string;
28
121
  regex(re: RegExp): this;
29
122
  }
30
123
  export declare function string(): ValioString;
@@ -32,16 +125,21 @@ export type Lit = string | number | bigint | boolean | null | undefined;
32
125
  export declare class ValioLiteral<T extends Lit> extends Pipe<T, T> {
33
126
  literal: T;
34
127
  constructor(literal: T);
128
+ typeCheck(v: any): v is T;
129
+ get inputName(): string;
130
+ inputTypeCheck(v: any): v is T;
131
+ get outputName(): string;
132
+ outputTypeCheck(v: any): v is T;
35
133
  }
36
134
  export declare function literal<T extends Lit>(literal: T): ValioLiteral<T>;
37
135
  export declare class ValioEnum<T extends Lit> extends Pipe<T, T> {
38
136
  literals: readonly T[];
39
137
  constructor(literals: readonly T[]);
138
+ get inputName(): string;
139
+ inputTypeCheck(v: any): v is T;
140
+ get outputName(): string;
141
+ outputTypeCheck(v: any): v is T;
40
142
  }
41
143
  declare function enum_<T extends Lit>(literals: readonly T[]): ValioEnum<T>;
42
144
  export { enum_ as enum };
43
- export declare class ValioDate extends Comparable<Date, Date> {
44
- constructor();
45
- }
46
- export declare function date(): ValioDate;
47
145
  //# sourceMappingURL=primitives.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,WAAW,CAAC;AAO3C,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;IAGP,GAAG,CAAC,CAAC,EAAE,CAAC;CAGR;AAED,qBAAa,WAAY,SAAQ,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;;CAK1D;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;IAGnB,MAAM,CAAC,CAAC,EAAE,MAAM;CAGhB;AAED,qBAAa,WAAY,SAAQ,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;;IAMxD,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,qBAAa,YAAY,CAAC,CAAC,SAAS,GAAG,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,CAAC,CAAC;gBAEC,OAAO,EAAE,CAAC;CAKtB;AACD,wBAAgB,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC,mBAEhD;AAED,qBAAa,SAAS,CAAC,CAAC,SAAS,GAAG,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACvD,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;gBAEX,QAAQ,EAAE,SAAS,CAAC,EAAE;CAOlC;AACD,iBAAS,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAElE;AACD,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;AAEzB,qBAAa,SAAU,SAAQ,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;;CAKpD;AACD,wBAAgB,IAAI,IAAI,SAAS,CAEhC"}
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,36 @@
1
- import { HalfPipe, Pipe } from "./pipe.js";
1
+ import { Pipe } from "./pipe.js";
2
2
  function primitive(name, typeCheck) {
3
- const half = new HalfPipe(name, typeCheck);
4
- return new Pipe(half, half);
5
- }
3
+ return class extends Pipe {
4
+ get inputName() {
5
+ return name;
6
+ }
7
+ inputTypeCheck(v) {
8
+ return typeCheck(v);
9
+ }
10
+ get outputName() {
11
+ return name;
12
+ }
13
+ outputTypeCheck(v) {
14
+ return typeCheck(v);
15
+ }
16
+ };
17
+ }
18
+ const Boolean = primitive("boolean", (v) => typeof v === "boolean");
6
19
  export function boolean() {
7
- return primitive("boolean", (v) => typeof v === "boolean");
20
+ return new Boolean();
8
21
  }
9
- // biome-ignore lint/suspicious/noShadowRestrictedNames: point of lib
10
- export function undefined() {
11
- return primitive("undefined", (v) => typeof v === "undefined");
22
+ const Undefined = primitive("undefined", (v) => typeof v === "undefined");
23
+ function undefined_() {
24
+ return new Undefined();
12
25
  }
26
+ export { undefined_ as undefined };
27
+ const Any = primitive("any", (_v) => true);
13
28
  export function any() {
14
- return primitive("any", (_v) => true);
29
+ return new Any();
15
30
  }
31
+ const Null = primitive("null", (v) => v === null);
16
32
  function null_() {
17
- return primitive("null", (v) => v === null);
33
+ return new Null();
18
34
  }
19
35
  export { null_ as null };
20
36
  export class Comparable extends Pipe {
@@ -38,14 +54,45 @@ export class Comparable extends Pipe {
38
54
  }
39
55
  }
40
56
  export class ValioNumber extends Comparable {
41
- constructor() {
42
- const half = new HalfPipe("number", (v) => typeof v === "number");
43
- super(half, half);
57
+ static typeCheck(v) {
58
+ return typeof v === "number";
59
+ }
60
+ get inputName() {
61
+ return "number";
62
+ }
63
+ inputTypeCheck(v) {
64
+ return ValioNumber.typeCheck(v);
65
+ }
66
+ get outputName() {
67
+ return this.inputName;
68
+ }
69
+ outputTypeCheck(v) {
70
+ return ValioNumber.typeCheck(v);
44
71
  }
45
72
  }
46
73
  export function number() {
47
74
  return new ValioNumber();
48
75
  }
76
+ export class ValioDate extends Comparable {
77
+ static typeCheck(v) {
78
+ return v instanceof Date;
79
+ }
80
+ get inputName() {
81
+ return "date";
82
+ }
83
+ inputTypeCheck(v) {
84
+ return ValioDate.typeCheck(v);
85
+ }
86
+ get outputName() {
87
+ return this.inputName;
88
+ }
89
+ outputTypeCheck(v) {
90
+ return ValioDate.typeCheck(v);
91
+ }
92
+ }
93
+ export function date() {
94
+ return new ValioDate();
95
+ }
49
96
  export class Arrayish extends Pipe {
50
97
  minLength(n) {
51
98
  return this.refine((v) => v.length >= n, "minLength", { n });
@@ -58,9 +105,16 @@ export class Arrayish extends Pipe {
58
105
  }
59
106
  }
60
107
  export class ValioString extends Arrayish {
61
- constructor() {
62
- const half = new HalfPipe("string", (v) => typeof v === "string");
63
- super(half, half);
108
+ inputName = "string";
109
+ outputName = this.inputName;
110
+ static typeCheck(v) {
111
+ return typeof v === "string";
112
+ }
113
+ inputTypeCheck(v) {
114
+ return ValioString.typeCheck(v);
115
+ }
116
+ outputTypeCheck(v) {
117
+ return ValioString.typeCheck(v);
64
118
  }
65
119
  regex(re) {
66
120
  return this.refine((v) => !!v.match(re), "regex", { regex: re.source });
@@ -72,10 +126,24 @@ export function string() {
72
126
  export class ValioLiteral extends Pipe {
73
127
  literal;
74
128
  constructor(literal) {
75
- const half = new HalfPipe(`${literal}`, (v) => v === literal);
76
- super(half, half);
129
+ super();
77
130
  this.literal = literal;
78
131
  }
132
+ typeCheck(v) {
133
+ return v === this.literal;
134
+ }
135
+ get inputName() {
136
+ return `${this.literal}`;
137
+ }
138
+ inputTypeCheck(v) {
139
+ return this.typeCheck(v);
140
+ }
141
+ get outputName() {
142
+ return this.inputName;
143
+ }
144
+ outputTypeCheck(v) {
145
+ return this.typeCheck(v);
146
+ }
79
147
  }
80
148
  export function literal(literal) {
81
149
  return new ValioLiteral(literal);
@@ -83,22 +151,24 @@ export function literal(literal) {
83
151
  export class ValioEnum extends Pipe {
84
152
  literals;
85
153
  constructor(literals) {
86
- const half = new HalfPipe(`${literals.join(",")}`, (v) => literals.includes(v));
87
- super(half, half);
154
+ super();
88
155
  this.literals = literals;
89
156
  }
157
+ get inputName() {
158
+ return `${this.literals.join(",")}`;
159
+ }
160
+ inputTypeCheck(v) {
161
+ return this.literals.includes(v);
162
+ }
163
+ get outputName() {
164
+ return this.inputName;
165
+ }
166
+ outputTypeCheck(v) {
167
+ return this.inputTypeCheck(v);
168
+ }
90
169
  }
91
170
  function enum_(literals) {
92
171
  return new ValioEnum(literals);
93
172
  }
94
173
  export { enum_ as enum };
95
- export class ValioDate extends Comparable {
96
- constructor() {
97
- const half = new HalfPipe("date", (v) => v instanceof Date);
98
- super(half, half);
99
- }
100
- }
101
- export function date() {
102
- return new ValioDate();
103
- }
104
174
  //# sourceMappingURL=primitives.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "README.md",
31
31
  "LICENSE.md"
32
32
  ],
33
- "version": "0.1.13",
33
+ "version": "0.1.15",
34
34
  "repository": {
35
35
  "url": "https://github.com/nerd-bible/valio"
36
36
  }
@@ -2,7 +2,7 @@ import { test } from "node:test";
2
2
  import expect from "expect";
3
3
  import * as v from "./index.ts";
4
4
 
5
- test("number codec", () => {
5
+ test("plain number codec", () => {
6
6
  const schema = v.codecs.number();
7
7
 
8
8
  expect(schema.decode("13")).toEqual({ success: true, output: 13 });
@@ -34,9 +34,7 @@ test("2 pipes", () => {
34
34
 
35
35
  expect(next.decode("3")).toEqual({
36
36
  success: false,
37
- errors: {
38
- ".": [{ input: 3, message: "must be > 5" }],
39
- },
37
+ errors: { ".": [{ input: 3, message: "must be > 5" }] },
40
38
  });
41
39
  expect(schema.decode(undefined)).toEqual({
42
40
  success: true,
package/src/codecs.ts CHANGED
@@ -10,19 +10,36 @@ export function custom<I, O>(
10
10
  },
11
11
  ): Pipe<I, O> {
12
12
  const res = output.clone() as any;
13
- res.i = input.i.clone();
14
- res.i.transform = codec.decode;
15
- res.o.transform = codec.encode;
13
+ Object.defineProperty(res, "inputName", {
14
+ get() {
15
+ return input.inputName;
16
+ },
17
+ });
18
+ Object.defineProperty(res, "inputTypeCheck", {
19
+ get() {
20
+ return input.inputTypeCheck.bind(input);
21
+ },
22
+ });
23
+ Object.defineProperty(res, "inputTransform", {
24
+ get() {
25
+ return codec.decode;
26
+ },
27
+ });
28
+ Object.defineProperty(res, "outputTransform", {
29
+ get() {
30
+ return codec.encode;
31
+ },
32
+ });
16
33
  return res;
17
34
  }
18
35
 
19
36
  export function number(
20
37
  parser = Number.parseFloat,
21
- ): p.Comparable<string | number | null | undefined, number> {
22
- return custom(p.any(), p.number(), {
38
+ ): p.Comparable<any, number> {
39
+ return custom<any, number>(p.any(), p.number(), {
23
40
  decode(input, ctx) {
24
41
  if (typeof input === "number") return { success: true, output: input };
25
- if (!input || input.toLowerCase() === "nan")
42
+ if (input == null || (typeof input === "string" && input.toLowerCase()) === "nan")
26
43
  return { success: true, output: Number.NaN };
27
44
 
28
45
  const output = parser(input);
@@ -28,7 +28,7 @@ test("array failed element", () => {
28
28
  });
29
29
  });
30
30
 
31
- test("object", () => {
31
+ test("plain object", () => {
32
32
  const o = v.object({ foo: v.number().gt(4) });
33
33
  type O = v.Output<typeof o>;
34
34
 
@@ -53,6 +53,14 @@ test("object", () => {
53
53
  });
54
54
  });
55
55
 
56
+ test("registry", () => {
57
+ const o1 = v.object({ foo: v.number().gt(4) }).register("foo", 1);
58
+ const o2 = o1.register("bar", 2);
59
+
60
+ expect(o1.registry).toStrictEqual({ foo: 1 });
61
+ expect(o2.registry).toStrictEqual({ foo: 1, bar: 2 });
62
+ });
63
+
56
64
  test("loose object", () => {
57
65
  const o = v.object({ foo: v.number().gt(4) }).loose<number>();
58
66
  type O = v.Output<typeof o>;