valleyed 4.2.2 → 4.2.3

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 CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [4.2.3](https://github.com/kevinand11/valleyed/compare/v4.2.2...v4.2.3) (2023-11-21)
6
+
7
+
8
+ ### Features
9
+
10
+ * discriminator ([3d3e535](https://github.com/kevinand11/valleyed/commit/3d3e53590f53d05cc7c6f882d43c93e70949b058))
11
+
5
12
  ### [4.2.2](https://github.com/kevinand11/valleyed/compare/v4.2.1...v4.2.2) (2023-09-09)
6
13
 
7
14
 
@@ -2,7 +2,7 @@ import { VArray } from './arrays';
2
2
  import { VBoolean } from './booleans';
3
3
  import { VCore } from './core';
4
4
  import { VFile } from './files';
5
- import { VAnd, VOr } from './junctions';
5
+ import { VAnd, VDiscriminator, VOr } from './junctions';
6
6
  import { VNumber } from './numbers';
7
7
  import { VObject } from './objects';
8
8
  import { VMap, VRecord } from './records';
@@ -16,6 +16,7 @@ export declare const v: {
16
16
  or: <T_2 extends VCore<any>[]>(options: T_2, err?: string | undefined) => VOr<T_2>;
17
17
  and: <I>(options: VCore<I>[], err?: string | undefined) => VAnd<I>;
18
18
  string: (err?: string | undefined) => VString;
19
+ discriminate: <D extends Record<string, VCore<any>>>(discriminator: (val: import("./base").ExtractI<D[keyof D]>) => string, schemas: D, err?: string | undefined) => VDiscriminator<D>;
19
20
  number: (err?: string | undefined) => VNumber;
20
21
  boolean: (err?: string | undefined) => VBoolean;
21
22
  time: <T_3 extends import("./times").Timeable = import("./times").Timeable>(err?: string | undefined) => VTime<T_3>;
package/lib/api/index.js CHANGED
@@ -22,6 +22,7 @@ exports.v = {
22
22
  or: base_1.VBase.createType(junctions_1.VOr),
23
23
  and: base_1.VBase.createType(junctions_1.VAnd),
24
24
  string: base_1.VBase.createType(strings_1.VString),
25
+ discriminate: base_1.VBase.createType(junctions_1.VDiscriminator),
25
26
  number: base_1.VBase.createType(numbers_1.VNumber),
26
27
  boolean: base_1.VBase.createType(booleans_1.VBoolean),
27
28
  time: base_1.VBase.createType(times_1.VTime),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;AAAA,oCAA4D;AAC5D,4CAAwC;AACxC,qCAAiC;AACjC,iCAA8B;AAC9B,yCAAqC;AACrC,iCAA8B;AAUrB,sFAVA,YAAK,OAUA;AATd,mCAA+B;AAC/B,2CAAuC;AACvC,uCAAmC;AACnC,uCAAmC;AACnC,uCAAyC;AACzC,uCAAmC;AACnC,mCAA+B;AAC/B,qCAAiC;AAIpB,QAAA,CAAC,GAAG;IAChB,EAAE,EAAE,CAAK,KAAQ,EAAE,EAAE,CAAC,IAAI,YAAK,EAAK,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9C,EAAE,EAAE,CAAK,MAAqB,EAAE,WAAW,eAAM,CAAC,KAA4C,EAAE,EAAE,CAAC,IAAI,YAAK,EAAK,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IACtI,EAAE,EAAE,YAAK,CAAC,UAAU,CAAC,eAAG,CAAC;IACzB,GAAG,EAAE,YAAK,CAAC,UAAU,CAAC,gBAAI,CAAC;IAC3B,MAAM,EAAE,YAAK,CAAC,UAAU,CAAC,iBAAO,CAAC;IACjC,MAAM,EAAE,YAAK,CAAC,UAAU,CAAC,iBAAO,CAAC;IACjC,OAAO,EAAE,YAAK,CAAC,UAAU,CAAC,mBAAQ,CAAC;IACnC,IAAI,EAAE,YAAK,CAAC,UAAU,CAAC,aAAK,CAAC;IAC7B,IAAI,EAAE,YAAK,CAAC,UAAU,CAAC,aAAK,CAAC;IAC7B,KAAK,EAAE,YAAK,CAAC,UAAU,CAAC,eAAM,CAAC;IAC/B,KAAK,EAAE,YAAK,CAAC,UAAU,CAAC,eAAM,CAAC;IAC/B,MAAM,EAAE,YAAK,CAAC,UAAU,CAAC,iBAAO,CAAC;IACjC,MAAM,EAAE,YAAK,CAAC,UAAU,CAAC,iBAAO,CAAC;IACjC,GAAG,EAAE,YAAK,CAAC,UAAU,CAAC,cAAI,CAAC;IAC3B,IAAI,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,YAAK,EAAQ,CAAC,OAAO,CAAC,IAAA,cAAM,EAAC,GAAG,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,YAAK,EAAa,CAAC,OAAO,CAAC,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;IAC7E,UAAU,EAAE,CAAK,QAAqB,EAAE,GAAY,EAAE,EAAE,CAAC,IAAI,YAAK,EAAK,CAAC,OAAO,CAAC,IAAA,oBAAY,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5G,GAAG,EAAE,GAAa,EAAE,CAAC,IAAI,YAAK,EAAK;IACnC,KAAK,EAAE;QACN,MAAM,EAAE,YAAK,CAAC,gBAAgB,CAAiD,iBAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzG,MAAM,EAAE,YAAK,CAAC,gBAAgB,CAAiD,iBAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzG,OAAO,EAAE,YAAK,CAAC,gBAAgB,CAAmD,mBAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9G,IAAI,EAAE,YAAK,CAAC,gBAAgB,CAAmD,aAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAQ,CAAC,CAAC;KAChH;CACD,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;AAAA,oCAA4D;AAC5D,4CAAwC;AACxC,qCAAiC;AACjC,iCAA8B;AAC9B,yCAAqC;AACrC,iCAA8B;AAUrB,sFAVA,YAAK,OAUA;AATd,mCAA+B;AAC/B,2CAAuD;AACvD,uCAAmC;AACnC,uCAAmC;AACnC,uCAAyC;AACzC,uCAAmC;AACnC,mCAA+B;AAC/B,qCAAiC;AAIpB,QAAA,CAAC,GAAG;IAChB,EAAE,EAAE,CAAK,KAAQ,EAAE,EAAE,CAAC,IAAI,YAAK,EAAK,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9C,EAAE,EAAE,CAAK,MAAqB,EAAE,WAAW,eAAM,CAAC,KAA4C,EAAE,EAAE,CAAC,IAAI,YAAK,EAAK,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;IACtI,EAAE,EAAE,YAAK,CAAC,UAAU,CAAC,eAAG,CAAC;IACzB,GAAG,EAAE,YAAK,CAAC,UAAU,CAAC,gBAAI,CAAC;IAC3B,MAAM,EAAE,YAAK,CAAC,UAAU,CAAC,iBAAO,CAAC;IACjC,YAAY,EAAE,YAAK,CAAC,UAAU,CAAC,0BAAc,CAAC;IAC9C,MAAM,EAAE,YAAK,CAAC,UAAU,CAAC,iBAAO,CAAC;IACjC,OAAO,EAAE,YAAK,CAAC,UAAU,CAAC,mBAAQ,CAAC;IACnC,IAAI,EAAE,YAAK,CAAC,UAAU,CAAC,aAAK,CAAC;IAC7B,IAAI,EAAE,YAAK,CAAC,UAAU,CAAC,aAAK,CAAC;IAC7B,KAAK,EAAE,YAAK,CAAC,UAAU,CAAC,eAAM,CAAC;IAC/B,KAAK,EAAE,YAAK,CAAC,UAAU,CAAC,eAAM,CAAC;IAC/B,MAAM,EAAE,YAAK,CAAC,UAAU,CAAC,iBAAO,CAAC;IACjC,MAAM,EAAE,YAAK,CAAC,UAAU,CAAC,iBAAO,CAAC;IACjC,GAAG,EAAE,YAAK,CAAC,UAAU,CAAC,cAAI,CAAC;IAC3B,IAAI,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,YAAK,EAAQ,CAAC,OAAO,CAAC,IAAA,cAAM,EAAC,GAAG,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,IAAI,YAAK,EAAa,CAAC,OAAO,CAAC,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;IAC7E,UAAU,EAAE,CAAK,QAAqB,EAAE,GAAY,EAAE,EAAE,CAAC,IAAI,YAAK,EAAK,CAAC,OAAO,CAAC,IAAA,oBAAY,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5G,GAAG,EAAE,GAAa,EAAE,CAAC,IAAI,YAAK,EAAK;IACnC,KAAK,EAAE;QACN,MAAM,EAAE,YAAK,CAAC,gBAAgB,CAAiD,iBAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzG,MAAM,EAAE,YAAK,CAAC,gBAAgB,CAAiD,iBAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzG,OAAO,EAAE,YAAK,CAAC,gBAAgB,CAAmD,mBAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9G,IAAI,EAAE,YAAK,CAAC,gBAAgB,CAAmD,aAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAQ,CAAC,CAAC;KAChH;CACD,CAAA"}
@@ -6,3 +6,6 @@ export declare class VOr<T extends VCore<any>[]> extends VCore<ExtractI<T[number
6
6
  export declare class VAnd<I> extends VCore<I> {
7
7
  constructor(options: VCore<I>[], err?: string);
8
8
  }
9
+ export declare class VDiscriminator<D extends Record<string, VCore<any>>> extends VCore<ExtractI<D[keyof D]>> {
10
+ constructor(discriminator: (val: ExtractI<D[keyof D]>) => string, schemas: D, err?: string);
11
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VAnd = exports.VOr = void 0;
3
+ exports.VDiscriminator = exports.VAnd = exports.VOr = void 0;
4
4
  const rules_1 = require("../utils/rules");
5
5
  const core_1 = require("./core");
6
6
  class VOr extends core_1.VCore {
@@ -39,4 +39,17 @@ class VAnd extends core_1.VCore {
39
39
  }
40
40
  }
41
41
  exports.VAnd = VAnd;
42
+ class VDiscriminator extends core_1.VCore {
43
+ constructor(discriminator, schemas, err = 'doesnt match any of the schema') {
44
+ super();
45
+ this.addTyping((0, rules_1.makeRule)((value) => {
46
+ const val = value;
47
+ const accessor = discriminator(val);
48
+ if (!schemas[accessor])
49
+ return (0, rules_1.isInvalid)([err], val);
50
+ return schemas[accessor].parse(val);
51
+ }));
52
+ }
53
+ }
54
+ exports.VDiscriminator = VDiscriminator;
42
55
  //# sourceMappingURL=junctions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"junctions.js","sourceRoot":"","sources":["../../src/api/junctions.ts"],"names":[],"mappings":";;;AAAA,0CAA6D;AAE7D,iCAA8B;AAE9B,MAAa,GAA4B,SAAQ,YAA0B;IAC1E,YAAa,OAAU,EAAE,GAAG,GAAG,gCAAgC;QAC9D,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAQ,EAAsB,CAAC,KAAK,EAAE,EAAE;YACtD,MAAM,GAAG,GAAG,KAA4B,CAAA;YACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAA,eAAO,EAAC,GAAG,CAAC,CAAA;YAC7C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC5B,IAAI,KAAK,CAAC,KAAK;oBAAE,OAAO,KAAK,CAAA;aAC7B;YACD,OAAO,IAAA,iBAAS,EAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAC,CAAA;IACJ,CAAC;CACD;AAbD,kBAaC;AAED,MAAa,IAAQ,SAAQ,YAAQ;IACpC,YAAa,OAAmB,EAAE,GAAY;QAC7C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAQ,EAAC,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,GAAG,KAAU,CAAA;YAClB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAA,eAAO,EAAC,CAAC,CAAC,CAAA;YAC3C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC1B,IAAI,KAAK,CAAC,KAAK;oBAAE,CAAC,GAAG,KAAK,CAAC,KAAY,CAAA;;oBAClC,OAAO,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;aACpD;YACD,OAAO,IAAA,eAAO,EAAC,CAAC,CAAC,CAAA;QAClB,CAAC,CAAC,CAAC,CAAA;IACJ,CAAC;CACD;AAdD,oBAcC"}
1
+ {"version":3,"file":"junctions.js","sourceRoot":"","sources":["../../src/api/junctions.ts"],"names":[],"mappings":";;;AAAA,0CAA6D;AAE7D,iCAA8B;AAE9B,MAAa,GAA4B,SAAQ,YAA0B;IAC1E,YAAa,OAAU,EAAE,GAAG,GAAG,gCAAgC;QAC9D,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAQ,EAAsB,CAAC,KAAK,EAAE,EAAE;YACtD,MAAM,GAAG,GAAG,KAA4B,CAAA;YACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAA,eAAO,EAAC,GAAG,CAAC,CAAA;YAC7C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC5B,IAAI,KAAK,CAAC,KAAK;oBAAE,OAAO,KAAK,CAAA;aAC7B;YACD,OAAO,IAAA,iBAAS,EAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAC,CAAA;IACJ,CAAC;CACD;AAbD,kBAaC;AAED,MAAa,IAAQ,SAAQ,YAAQ;IACpC,YAAa,OAAmB,EAAE,GAAY;QAC7C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAQ,EAAC,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,GAAG,KAAU,CAAA;YAClB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAA,eAAO,EAAC,CAAC,CAAC,CAAA;YAC3C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;gBAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC1B,IAAI,KAAK,CAAC,KAAK;oBAAE,CAAC,GAAG,KAAK,CAAC,KAAY,CAAA;;oBAClC,OAAO,IAAA,iBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;aACpD;YACD,OAAO,IAAA,eAAO,EAAC,CAAC,CAAC,CAAA;QAClB,CAAC,CAAC,CAAC,CAAA;IACJ,CAAC;CACD;AAdD,oBAcC;AAED,MAAa,cAAqD,SAAQ,YAA2B;IACpG,YAAa,aAAoD,EAAE,OAAU,EAAE,GAAG,GAAG,gCAAgC;QACpH,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,CAAC,IAAA,gBAAQ,EAAuB,CAAC,KAAK,EAAE,EAAE;YACvD,MAAM,GAAG,GAAG,KAA6B,CAAA;YACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAA,iBAAS,EAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;YACpD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpC,CAAC,CAAC,CAAC,CAAA;IACJ,CAAC;CACD;AAVD,wCAUC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valleyed",
3
- "version": "4.2.2",
3
+ "version": "4.2.3",
4
4
  "description": "A lightweight package with definitions for various validation rules, and helper services to consume said rules.",
5
5
  "main": "lib/index.js",
6
6
  "sideEffects": false,