@thisisagile/easy 8.39.6 → 8.40.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.
@@ -15,4 +15,10 @@ export declare class LogicalCondition {
15
15
  constructor(operator: string, conditions: Condition[]);
16
16
  toJSON(): Json;
17
17
  }
18
+ export declare class SortCondition extends Condition {
19
+ readonly key: string;
20
+ readonly value: number;
21
+ constructor(key: string, value: number);
22
+ toJSON(): Json;
23
+ }
18
24
  export declare const toCondition: (field: string, operator: string, value: unknown, conv?: Convert) => Condition;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toCondition = exports.LogicalCondition = exports.Condition = void 0;
3
+ exports.toCondition = exports.SortCondition = exports.LogicalCondition = exports.Condition = void 0;
4
4
  const types_1 = require("../types");
5
5
  const utils_1 = require("../utils");
6
6
  class Condition {
@@ -26,6 +26,17 @@ class LogicalCondition {
26
26
  }
27
27
  }
28
28
  exports.LogicalCondition = LogicalCondition;
29
+ class SortCondition extends Condition {
30
+ constructor(key, value) {
31
+ super(key, '', value);
32
+ this.key = key;
33
+ this.value = value;
34
+ }
35
+ toJSON() {
36
+ return { [this.key]: this.value };
37
+ }
38
+ }
39
+ exports.SortCondition = SortCondition;
29
40
  const toCondition = (field, operator, value, conv = utils_1.convert.default) => new Condition(field, operator, conv.from(value));
30
41
  exports.toCondition = toCondition;
31
42
  //# sourceMappingURL=Condition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Condition.js","sourceRoot":"","sources":["../../src/data/Condition.ts"],"names":[],"mappings":";;;AAAA,oCAAiD;AACjD,oCAA4C;AAE5C,MAAa,SAAS;IACpB,YAAqB,GAAW,EAAW,QAAgB,EAAW,KAAc;QAA/D,QAAG,GAAH,GAAG,CAAQ;QAAW,aAAQ,GAAR,QAAQ,CAAQ;QAAW,UAAK,GAAL,KAAK,CAAS;QAEpF,QAAG,GAAG,CAAC,GAAG,MAAmB,EAAoB,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QACnG,OAAE,GAAG,CAAC,GAAG,MAAmB,EAAoB,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAHV,CAAC;IAKxF,MAAM;QACJ,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC3E,CAAC;CACF;AATD,8BASC;AAED,MAAa,gBAAgB;IAC3B,YAAqB,QAAgB,EAAW,UAAuB;QAAlD,aAAQ,GAAR,QAAQ,CAAQ;QAAW,eAAU,GAAV,UAAU,CAAa;IAAG,CAAC;IAE3E,MAAM;QACJ,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC;CACF;AAND,4CAMC;AAEM,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAc,EAAE,OAAgB,eAAO,CAAC,OAAO,EAAa,EAAE,CACzH,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAc,CAAC,CAAC;AADnD,QAAA,WAAW,eACwC"}
1
+ {"version":3,"file":"Condition.js","sourceRoot":"","sources":["../../src/data/Condition.ts"],"names":[],"mappings":";;;AAAA,oCAAiD;AACjD,oCAA4C;AAE5C,MAAa,SAAS;IACpB,YAAqB,GAAW,EAAW,QAAgB,EAAW,KAAc;QAA/D,QAAG,GAAH,GAAG,CAAQ;QAAW,aAAQ,GAAR,QAAQ,CAAQ;QAAW,UAAK,GAAL,KAAK,CAAS;QAEpF,QAAG,GAAG,CAAC,GAAG,MAAmB,EAAoB,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QACnG,OAAE,GAAG,CAAC,GAAG,MAAmB,EAAoB,EAAE,CAAC,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAHV,CAAC;IAKxF,MAAM;QACJ,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC3E,CAAC;CACF;AATD,8BASC;AAED,MAAa,gBAAgB;IAC3B,YAAqB,QAAgB,EAAW,UAAuB;QAAlD,aAAQ,GAAR,QAAQ,CAAQ;QAAW,eAAU,GAAV,UAAU,CAAa;IAAG,CAAC;IAE3E,MAAM;QACJ,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC;CACF;AAND,4CAMC;AAED,MAAa,aAAc,SAAQ,SAAS;IAC1C,YAAqB,GAAW,EAAW,KAAa;QACtD,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QADH,QAAG,GAAH,GAAG,CAAQ;QAAW,UAAK,GAAL,KAAK,CAAQ;IAExD,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;CACF;AARD,sCAQC;AAEM,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAc,EAAE,OAAgB,eAAO,CAAC,OAAO,EAAa,EAAE,CACzH,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAc,CAAC,CAAC;AADnD,QAAA,WAAW,eACwC"}
@@ -1,5 +1,5 @@
1
1
  import { Property } from '../utils';
2
- import { Condition } from './Condition';
2
+ import { Condition, SortCondition } from "./Condition";
3
3
  export declare class Field extends Property {
4
4
  is: (value: unknown) => Condition;
5
5
  isNot: (value: unknown) => Condition;
@@ -10,5 +10,7 @@ export declare class Field extends Property {
10
10
  greaterEqual: (value: unknown) => Condition;
11
11
  less: (value: unknown) => Condition;
12
12
  lessEqual: (value: unknown) => Condition;
13
+ asc: () => SortCondition;
14
+ desc: () => SortCondition;
13
15
  protected condition: (operator: string, value: unknown) => Condition;
14
16
  }
@@ -16,6 +16,8 @@ class Field extends utils_1.Property {
16
16
  this.greaterEqual = (value) => this.condition('gte', value);
17
17
  this.less = (value) => this.condition('lt', value);
18
18
  this.lessEqual = (value) => this.condition('lte', value);
19
+ this.asc = () => new Condition_1.SortCondition(this.property, -1);
20
+ this.desc = () => new Condition_1.SortCondition(this.property, 1);
19
21
  this.condition = (operator, value) => (0, Condition_1.toCondition)(this.property, operator, value, this.options?.convert);
20
22
  }
21
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/data/Field.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,2CAAqD;AACrD,oCAAmC;AAEnC,MAAa,KAAM,SAAQ,gBAAQ;IAAnC;;QACE,OAAE,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEhE,UAAK,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEnE,SAAI,GAAG,CAAC,GAAG,KAAgB,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC,CAAC;QAEhF,UAAK,GAAG,CAAC,GAAG,KAAgB,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC,CAAC;QAElF,WAAM,GAAG,CAAC,IAAa,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEtE,YAAO,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAErE,iBAAY,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE3E,SAAI,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAElE,cAAS,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9D,cAAS,GAAG,CAAC,QAAgB,EAAE,KAAc,EAAa,EAAE,CAAC,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5I,CAAC;CAAA;AApBD,sBAoBC"}
1
+ {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/data/Field.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,2CAAoE;AACpE,oCAAmC;AAEnC,MAAa,KAAM,SAAQ,gBAAQ;IAAnC;;QACE,OAAE,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEhE,UAAK,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEnE,SAAI,GAAG,CAAC,GAAG,KAAgB,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC,CAAC;QAEhF,UAAK,GAAG,CAAC,GAAG,KAAgB,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC,CAAC;QAElF,WAAM,GAAG,CAAC,IAAa,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEtE,YAAO,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAErE,iBAAY,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE3E,SAAI,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAElE,cAAS,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAExE,QAAG,GAAG,GAAkB,EAAE,CAAC,IAAI,yBAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;QAE/D,SAAI,GAAG,GAAkB,EAAE,CAAC,IAAI,yBAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAErD,cAAS,GAAG,CAAC,QAAgB,EAAE,KAAc,EAAa,EAAE,CAAC,IAAA,uBAAW,EAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5I,CAAC;CAAA;AAxBD,sBAwBC"}
@@ -4,6 +4,8 @@ export declare type InOut = {
4
4
  col?: string;
5
5
  };
6
6
  export declare const isInOut: (v: unknown) => v is InOut;
7
+ export declare const isColOnly: (v: unknown) => v is InOut;
8
+ export declare const isInOnly: (v: unknown) => v is InOut;
7
9
  export declare type Views = {
8
10
  [key: string]: string | Func | InOut;
9
11
  };
@@ -1,14 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.view = exports.View = exports.toViewers = exports.isInOut = void 0;
3
+ exports.view = exports.View = exports.toViewers = exports.isInOnly = exports.isColOnly = exports.isInOut = void 0;
4
4
  const types_1 = require("../types");
5
5
  const Traverse_1 = require("./Traverse");
6
6
  const Case_1 = require("./Case");
7
- const isInOut = (v) => (0, types_1.isObject)(v) && ((0, types_1.isFunction)(v.in) || v.in instanceof View);
7
+ const isInOut = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && ((0, types_1.isFunction)(v.in) || v.in instanceof View);
8
8
  exports.isInOut = isInOut;
9
+ const isColOnly = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && !(0, types_1.isDefined)(v.in);
10
+ exports.isColOnly = isColOnly;
11
+ const isInOnly = (v) => (0, types_1.isObject)(v) && !(0, types_1.isDefined)(v.col) && (0, types_1.isFunction)(v.in);
12
+ exports.isInOnly = isInOnly;
13
+ const toFunc = (a, key, io) => (0, Case_1.choose)(io)
14
+ .case(i => (0, types_1.isDefined)(i.col) && !(0, types_1.isDefined)(i.in), (i) => (a) => (0, Traverse_1.traverse)(a, i.col))
15
+ .else(() => undefined);
9
16
  const toViewer = (key, value) => (0, Case_1.choose)(value)
10
17
  .type(types_1.isString, s => toViewer(key, (a) => (0, Traverse_1.traverse)(a, s)))
18
+ .type(exports.isColOnly, io => toViewer(key, io.col))
11
19
  .type(types_1.isFunction, f => toViewer(key, { in: { key, f } }))
20
+ .type(exports.isInOnly, io => toViewer(key, { in: { key, f: io.in } }))
21
+ .type(exports.isInOut, io => toViewer(key, (a) => io?.in && (io.in instanceof View ? io.in.from((0, Traverse_1.traverse)(a, io.col)) : io.in((0, Traverse_1.traverse)(a, io.col)))))
12
22
  .else(m => m);
13
23
  const toViewers = (views) => (0, types_1.meta)(views)
14
24
  .entries()
@@ -1 +1 @@
1
- {"version":3,"file":"View.js","sourceRoot":"","sources":["../../src/utils/View.ts"],"names":[],"mappings":";;;AAAA,oCAA+E;AAC/E,yCAAsC;AACtC,iCAAgC;AAKzB,MAAM,OAAO,GAAG,CAAC,CAAU,EAAc,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC;AAAhG,QAAA,OAAO,WAAyF;AAK7G,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAc,EAAU,EAAE,CACvD,IAAA,aAAM,EAAS,KAAK,CAAC;KAClB,IAAI,CAAC,gBAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,mBAAQ,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC9D,IAAI,CAAC,kBAAU,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;KACxD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAW,CAAC,CAAC;AAErB,MAAM,SAAS,GAAG,CAAC,KAAY,EAAY,EAAE,CAClD,IAAA,YAAI,EAAC,KAAK,CAAC;KACR,OAAO,EAAE;KACT,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAHxB,QAAA,SAAS,aAGe;AAErC,MAAa,IAAI;IACf,YAAY,QAAe,EAAE,EAAW,aAAmC,SAAS,EAAW,UAAoB,IAAA,iBAAS,EAAC,KAAK,CAAC;QAA3F,eAAU,GAAV,UAAU,CAAkC;QAAW,YAAO,GAAP,OAAO,CAA6B;QAGnI,SAAI,GAAG,CAAC,MAAe,EAAW,EAAE,CAAC,IAAA,aAAK,EAAC,IAAA,cAAM,EAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAFlN,CAAC;CAGF;AALD,oBAKC;AAGM,MAAM,IAAI,GAAG,CAAC,KAAY,EAAE,UAAiC,EAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAA9F,QAAA,IAAI,QAA0F"}
1
+ {"version":3,"file":"View.js","sourceRoot":"","sources":["../../src/utils/View.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "8.39.6",
3
+ "version": "8.40.0",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "devDependencies": {
34
- "@thisisagile/easy-test": "8.39.6",
34
+ "@thisisagile/easy-test": "8.40.0",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.8",
37
37
  "@types/validator": "^13.7.1"
@@ -20,5 +20,15 @@ export class LogicalCondition {
20
20
  }
21
21
  }
22
22
 
23
+ export class SortCondition extends Condition {
24
+ constructor(readonly key: string, readonly value: number) {
25
+ super(key, '', value);
26
+ }
27
+
28
+ toJSON(): Json {
29
+ return { [this.key]: this.value };
30
+ }
31
+ }
32
+
23
33
  export const toCondition = (field: string, operator: string, value: unknown, conv: Convert = convert.default): Condition =>
24
34
  new Condition(field, operator, conv.from(value) as JsonValue);
package/src/data/Field.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Property } from '../utils';
2
- import { Condition, toCondition } from './Condition';
2
+ import { Condition, SortCondition, toCondition } from "./Condition";
3
3
  import { toArray } from '../types';
4
4
 
5
5
  export class Field extends Property {
@@ -21,5 +21,9 @@ export class Field extends Property {
21
21
 
22
22
  lessEqual = (value: unknown): Condition => this.condition('lte', value);
23
23
 
24
+ asc = (): SortCondition => new SortCondition(this.property, -1)
25
+
26
+ desc = (): SortCondition => new SortCondition(this.property, 1)
27
+
24
28
  protected condition = (operator: string, value: unknown): Condition => toCondition(this.property, operator, value, this.options?.convert);
25
29
  }
package/src/utils/View.ts CHANGED
@@ -1,19 +1,29 @@
1
- import { asJson, isFunction, isObject, isString, meta, tryTo } from '../types';
1
+ import { asJson, isDefined, isFunction, isObject, isString, meta, tryTo } from '../types';
2
2
  import { traverse } from './Traverse';
3
3
  import { choose } from './Case';
4
4
 
5
5
  type Func<T = unknown> = (a: any) => T;
6
6
 
7
7
  export type InOut = { in?: Func | View, col?: string };
8
- export const isInOut = (v: unknown): v is InOut => isObject(v) && (isFunction(v.in) || v.in instanceof View);
8
+ export const isInOut = (v: unknown): v is InOut => isObject(v) && isDefined(v.col) && (isFunction(v.in) || v.in instanceof View);
9
+ export const isColOnly = (v: unknown): v is InOut => isObject(v) && isDefined(v.col) && !isDefined(v.in);
10
+ export const isInOnly = (v: unknown): v is InOut => isObject(v) && !isDefined(v.col) && isFunction(v.in);
9
11
 
10
12
  export type Views = { [key: string]: string | Func | InOut };
11
- export type Viewer = { in?: { key: string, f?: Func }};
13
+ export type Viewer = { in?: { key: string, f?: Func } };
14
+
15
+ const toFunc = (a: unknown, key: string, io: InOut): Func =>
16
+ choose<Func, InOut>(io)
17
+ .case(i => isDefined(i.col) && !isDefined(i.in), (i: InOut) => (a: any) => traverse(a, i.col))
18
+ .else(() => undefined);
12
19
 
13
20
  const toViewer = (key: string, value: unknown): Viewer =>
14
21
  choose<Viewer>(value)
15
22
  .type(isString, s => toViewer(key, (a: any) => traverse(a, s)))
23
+ .type(isColOnly, io => toViewer(key, io.col))
16
24
  .type(isFunction, f => toViewer(key, { in: { key, f } }))
25
+ .type(isInOnly, io => toViewer(key, { in: { key, f: io.in } }))
26
+ .type(isInOut, io => toViewer(key, (a: any) => io?.in && (io.in instanceof View ? io.in.from(traverse(a, io.col)) : io.in(traverse(a, io.col)))))
17
27
  .else(m => m as Viewer);
18
28
 
19
29
  export const toViewers = (views: Views): Viewer[] =>