@thisisagile/easy 8.40.3 → 8.41.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.
@@ -1,5 +1,6 @@
1
1
  import { Constructor } from './Constructor';
2
2
  export declare const isDefined: <T = unknown>(o?: T | undefined) => o is NonNullable<T>;
3
+ export declare const isUndefined: (v?: unknown) => v is never;
3
4
  export declare const isEmpty: (o?: unknown) => boolean;
4
5
  export declare const isNotEmpty: (o?: unknown) => boolean;
5
6
  export declare const isString: (o?: unknown) => o is string;
package/dist/types/Is.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isError = exports.isPrimitive = exports.isIntersecting = exports.isIn = exports.isInstance = exports.isArray = exports.isFunction = exports.isEmptyObject = exports.isObject = exports.isNumber = exports.isTrue = exports.isBoolean = exports.isIsoDateString = exports.isString = exports.isNotEmpty = exports.isEmpty = exports.isDefined = void 0;
3
+ exports.isError = exports.isPrimitive = exports.isIntersecting = exports.isIn = exports.isInstance = exports.isArray = exports.isFunction = exports.isEmptyObject = exports.isObject = exports.isNumber = exports.isTrue = exports.isBoolean = exports.isIsoDateString = exports.isString = exports.isNotEmpty = exports.isEmpty = exports.isUndefined = exports.isDefined = void 0;
4
4
  const isDefined = (o) => o !== undefined && o !== null;
5
5
  exports.isDefined = isDefined;
6
+ const isUndefined = (v) => v === undefined || v === null;
7
+ exports.isUndefined = isUndefined;
6
8
  const isEmpty = (o) => o === '' || o === null || o === undefined || ((0, exports.isArray)(o) && o.length === 0);
7
9
  exports.isEmpty = isEmpty;
8
10
  const isNotEmpty = (o) => o !== '' && o !== null && o !== undefined && (!(0, exports.isArray)(o) || o.length > 0);
@@ -1 +1 @@
1
- {"version":3,"file":"Is.js","sourceRoot":"","sources":["../../src/types/Is.ts"],"names":[],"mappings":";;;AAEO,MAAM,SAAS,GAAG,CAAc,CAAK,EAAuB,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;AAAvF,QAAA,SAAS,aAA8E;AAE7F,MAAM,OAAO,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAAhH,QAAA,OAAO,WAAyG;AAEtH,MAAM,UAAU,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAAlH,QAAA,UAAU,cAAwG;AAExH,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAe,EAAE,CAAC,CAAC,YAAY,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;AAAtF,QAAA,QAAQ,YAA8E;AAE5F,MAAM,eAAe,GAAG,CAAC,CAAW,EAAe,EAAE,CAC1D,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,4EAA4E,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AADzF,QAAA,eAAe,mBAC0E;AAE/F,MAAM,SAAS,GAAG,CAAC,CAAW,EAAgB,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,SAAS,CAAC;AAAlF,QAAA,SAAS,aAAyE;AAExF,MAAM,MAAM,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAA1F,QAAA,MAAM,UAAoF;AAEhG,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAe,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAnG,QAAA,QAAQ,YAA2F;AAEzG,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAgC,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,CAAC;AAAzI,QAAA,QAAQ,YAAiI;AAE/I,MAAM,aAAa,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAApG,QAAA,aAAa,iBAAuF;AAE1G,MAAM,UAAU,GAAG,CAAC,CAAW,EAA0C,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,UAAU,CAAC;AAA9G,QAAA,UAAU,cAAoG;AAEpH,MAAM,OAAO,GAAG,CAAU,CAAW,EAAiB,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC;AAAtF,QAAA,OAAO,WAA+E;AAE5F,MAAM,UAAU,GAAG,CAAI,IAAoB,EAAE,CAAW,EAAU,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC;AAArG,QAAA,UAAU,cAA2F;AAE3G,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,MAAiB,EAAW,EAAE,CAAC,IAAA,eAAO,EAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAAhG,QAAA,IAAI,QAA4F;AAEtG,MAAM,cAAc,GAAG,CAAC,CAAa,EAAE,MAAkB,EAAW,EAAE,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,IAAI,IAAA,eAAO,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,YAAI,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAAjI,QAAA,cAAc,kBAAmH;AAEvI,MAAM,WAAW,GAAG,CAAC,CAAW,EAAW,EAAE,CAAC,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,IAAI,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,CAAC;AAAtF,QAAA,WAAW,eAA2E;AAE5F,MAAM,OAAO,GAAG,CAAC,CAAU,EAAc,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC;AAAzE,QAAA,OAAO,WAAkE"}
1
+ {"version":3,"file":"Is.js","sourceRoot":"","sources":["../../src/types/Is.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,17 @@ export declare const isJson: (subject?: unknown) => subject is {
9
9
  export declare const json: {
10
10
  parse: (subject: unknown) => Json;
11
11
  merge: (...subjects: unknown[]) => Json;
12
+ delete: (subject: unknown, key: string) => Json;
13
+ set: (subject: unknown, key?: string, value?: unknown) => Json;
12
14
  omit: (subject: unknown, ...keys: string[]) => Json;
13
15
  };
14
16
  export declare const toJson: (...subjects: unknown[]) => Json;
15
17
  export declare const asJson: (j?: unknown, alt?: Get<Json>) => Json;
18
+ declare class Any {
19
+ readonly value: unknown;
20
+ constructor(value?: unknown);
21
+ delete: (key: string) => Any;
22
+ set: (key: string, value?: unknown) => Any;
23
+ }
24
+ export declare const any: (value: unknown) => Any;
25
+ export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.asJson = exports.toJson = exports.json = exports.isJson = void 0;
3
+ exports.any = exports.asJson = exports.toJson = exports.json = exports.isJson = void 0;
4
4
  const IsA_1 = require("./IsA");
5
5
  const Is_1 = require("./Is");
6
6
  const Get_1 = require("./Get");
@@ -9,12 +9,23 @@ exports.isJson = isJson;
9
9
  exports.json = {
10
10
  parse: (subject) => JSON.parse(JSON.stringify(subject ?? {})),
11
11
  merge: (...subjects) => exports.json.parse(subjects.map(s => (0, exports.asJson)(s, s => exports.json.parse(s))).reduce((js, j) => ({ ...js, ...j }), {})),
12
- omit: (subject, ...keys) => keys.reduce((js, k) => {
13
- delete js[k];
14
- return js;
15
- }, exports.json.parse(subject)),
12
+ delete: (subject, key) => {
13
+ delete subject[key];
14
+ return subject;
15
+ },
16
+ set: (subject, key = '', value) => (0, Is_1.isEmpty)(key) ? subject : ((0, Is_1.isDefined)(value) ? { ...subject, ...{ [key]: value } } : exports.json.delete(subject, key)),
17
+ omit: (subject, ...keys) => keys.reduce((js, k) => exports.json.delete(js, k), exports.json.parse(subject)),
16
18
  };
17
19
  exports.toJson = exports.json.merge;
18
20
  const asJson = (j, alt = {}) => ((0, exports.isJson)(j) ? j.toJSON() : (0, Is_1.isObject)(j) ? j : (0, Get_1.ofGet)(alt, j));
19
21
  exports.asJson = asJson;
22
+ class Any {
23
+ constructor(value = {}) {
24
+ this.value = value;
25
+ this.delete = (key) => new Any(exports.json.delete(this.value, key));
26
+ this.set = (key, value) => new Any(exports.json.set(this.value, key, value));
27
+ }
28
+ }
29
+ const any = (value) => new Any(value);
30
+ exports.any = any;
20
31
  //# sourceMappingURL=Json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Json.js","sourceRoot":"","sources":["../../src/types/Json.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,6BAAgC;AAChC,+BAAmC;AAK5B,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAqC,EAAE,CAAC,IAAA,SAAG,EAAyB,OAAO,EAAE,QAAQ,CAAC,CAAC;AAAlH,QAAA,MAAM,UAA4G;AAElH,QAAA,IAAI,GAAG;IAClB,KAAK,EAAE,CAAC,OAAgB,EAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5E,KAAK,EAAE,CAAC,GAAG,QAAmB,EAAQ,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9I,IAAI,EAAE,CAAC,OAAgB,EAAE,GAAG,IAAc,EAAQ,EAAE,CAClD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACpB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,YAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CAC1B,CAAC;AAEW,QAAA,MAAM,GAAG,YAAI,CAAC,KAAK,CAAC;AAE1B,MAAM,MAAM,GAAG,CAAC,CAAW,EAAE,MAAiB,EAAE,EAAQ,EAAE,CAAC,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAA,aAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAU,CAAC,CAAC,CAAC,IAAA,WAAK,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAA1H,QAAA,MAAM,UAAoH"}
1
+ {"version":3,"file":"Json.js","sourceRoot":"","sources":["../../src/types/Json.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,6BAAoD;AACpD,+BAAmC;AAK5B,MAAM,MAAM,GAAG,CAAC,OAAiB,EAAqC,EAAE,CAAC,IAAA,SAAG,EAAyB,OAAO,EAAE,QAAQ,CAAC,CAAC;AAAlH,QAAA,MAAM,UAA4G;AAElH,QAAA,IAAI,GAAG;IAClB,KAAK,EAAE,CAAC,OAAgB,EAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5E,KAAK,EAAE,CAAC,GAAG,QAAmB,EAAQ,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,YAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9I,MAAM,EAAE,CAAC,OAAgB,EAAE,GAAW,EAAQ,EAAE;QAC9C,OAAQ,OAAe,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,OAAe,CAAC;IACzB,CAAC;IACD,GAAG,EAAE,CAAC,OAAgB,EAAE,GAAG,GAAG,EAAE,EAAE,KAAe,EAAQ,EAAE,CAAC,IAAA,YAAO,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,cAAS,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAI,OAAe,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC,CAAC,YAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1L,IAAI,EAAE,CAAC,OAAgB,EAAE,GAAG,IAAc,EAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,YAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CACrH,CAAC;AAEW,QAAA,MAAM,GAAG,YAAI,CAAC,KAAK,CAAC;AAE1B,MAAM,MAAM,GAAG,CAAC,CAAW,EAAE,MAAiB,EAAE,EAAQ,EAAE,CAAC,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAA,aAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAU,CAAC,CAAC,CAAC,IAAA,WAAK,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAA1H,QAAA,MAAM,UAAoH;AAEvI,MAAM,GAAG;IACP,YAAqB,QAAiB,EAAE;QAAnB,UAAK,GAAL,KAAK,CAAc;QAGxC,WAAM,GAAG,CAAC,GAAW,EAAO,EAAE,CAAC,IAAI,GAAG,CAAC,YAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,QAAG,GAAG,CAAC,GAAW,EAAE,KAAe,EAAO,EAAE,CAAC,IAAI,GAAG,CAAC,YAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAHvF,CAAC;CAIF;AAEM,MAAM,GAAG,GAAG,CAAC,KAAc,EAAO,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AAA9C,QAAA,GAAG,OAA2C"}
@@ -1,33 +1,27 @@
1
+ import { Json } from '../types';
1
2
  declare type Func<T = unknown> = (a: any) => T;
2
3
  export declare type InOut = {
3
4
  in?: Func | View;
4
5
  col?: string;
5
6
  };
6
- export declare const isColOnly: (v: unknown) => v is InOut;
7
- export declare const isInOnly: (v: unknown) => v is InOut;
8
- export declare const isInOutWithFunction: (v: unknown) => v is {
9
- col: string;
10
- in: Func;
7
+ declare type Views = {
8
+ [key: string]: string | Func | InOut | undefined;
11
9
  };
12
- export declare const isInOutWithView: (v: unknown) => v is {
13
- col: string;
14
- in: View;
15
- };
16
- export declare type Views = {
17
- [key: string]: string | Func | InOut;
18
- };
19
- export declare type Viewer = {
20
- in?: {
10
+ declare type Viewer = {
11
+ in: {
21
12
  key: string;
22
- f?: Func;
13
+ f: Func;
23
14
  };
24
15
  };
25
- export declare const toViewers: (views: Views) => Viewer[];
26
16
  export declare class View {
17
+ private views;
27
18
  readonly startsFrom: 'scratch' | 'source';
28
19
  readonly viewers: Viewer[];
29
20
  constructor(views?: Views, startsFrom?: 'scratch' | 'source', viewers?: Viewer[]);
30
- from: (source: unknown) => unknown;
21
+ from: (source: unknown) => Json;
22
+ private reduce;
23
+ get fromSource(): View;
31
24
  }
32
- export declare const view: (views: Views, startsFrom?: "scratch" | "source" | undefined) => View;
25
+ export declare const skip: () => undefined;
26
+ export declare const view: (views: Views) => View;
33
27
  export {};
@@ -1,44 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.view = exports.View = exports.toViewers = exports.isInOutWithView = exports.isInOutWithFunction = exports.isInOnly = exports.isColOnly = void 0;
3
+ exports.view = exports.skip = exports.View = void 0;
4
4
  const types_1 = require("../types");
5
5
  const Traverse_1 = require("./Traverse");
6
6
  const Case_1 = require("./Case");
7
7
  const isColOnly = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && !(0, types_1.isDefined)(v.in);
8
- exports.isColOnly = isColOnly;
9
8
  const isInOnly = (v) => (0, types_1.isObject)(v) && !(0, types_1.isDefined)(v.col) && (0, types_1.isFunction)(v.in);
10
- exports.isInOnly = isInOnly;
11
- const isInOutWithFunction = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && (0, types_1.isFunction)(v.in);
12
- exports.isInOutWithFunction = isInOutWithFunction;
13
- const isInOutWithView = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && v.in instanceof View;
14
- exports.isInOutWithView = isInOutWithView;
15
- const toFunc = (a, col, f = a => a) => (0, types_1.tryTo)((0, Traverse_1.traverse)(a, col))
16
- .map(v => (0, types_1.isArray)(v) ? () => v.map(i => f(i)) : (a) => f((0, Traverse_1.traverse)(a, col)))
17
- .value;
18
- const toViewer = (key, value) => {
19
- const k = key;
20
- const v = value;
21
- return (0, Case_1.choose)(value)
22
- .type(types_1.isString, s => toViewer(key, (a) => toFunc(a, s)(a)))
23
- .type(exports.isColOnly, io => toViewer(key, io.col))
24
- .type(types_1.isFunction, f => toViewer(key, { in: { key, f } }))
25
- .type(exports.isInOnly, io => toViewer(key, { in: { key, f: io.in } }))
26
- .type(exports.isInOutWithFunction, io => toViewer(key, { in: { key, f: (a) => toFunc(a, io.col, io.in)(a) } }))
27
- .type(exports.isInOutWithView, io => toViewer(key, { in: { key, f: (a) => toFunc(a, io.col, io.in.from)(a) } }))
28
- .else(m => m);
29
- };
9
+ const isColAndFunction = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && (0, types_1.isFunction)(v.in);
10
+ const isColAndView = (v) => (0, types_1.isObject)(v) && (0, types_1.isDefined)(v.col) && v.in instanceof View;
11
+ const toFunc = (a, col, f = a => a) => (0, types_1.tryTo)((0, Traverse_1.traverse)(a, col)).map(v => (0, types_1.isArray)(v) ? () => v.map(i => f(i)) : (a) => f((0, Traverse_1.traverse)(a, col))).value;
12
+ const toViewer = (key, value) => (0, Case_1.choose)(value)
13
+ .type(types_1.isUndefined, () => toViewer(key, () => undefined))
14
+ .type(types_1.isString, s => toViewer(key, (a) => toFunc(a, s)(a)))
15
+ .type(isColOnly, io => toViewer(key, io.col))
16
+ .type(types_1.isFunction, f => toViewer(key, { in: { key, f } }))
17
+ .type(isInOnly, io => toViewer(key, { in: { key, f: io.in } }))
18
+ .type(isColAndFunction, io => toViewer(key, { in: { key, f: (a) => toFunc(a, io.col, io.in)(a) } }))
19
+ .type(isColAndView, io => toViewer(key, { in: { key, f: (a) => toFunc(a, io.col, io.in.from)(a) } }))
20
+ .else(v => v);
30
21
  const toViewers = (views) => (0, types_1.meta)(views)
31
22
  .entries()
32
23
  .map(([k, v]) => toViewer(k, v));
33
- exports.toViewers = toViewers;
34
24
  class View {
35
- constructor(views = {}, startsFrom = 'scratch', viewers = (0, exports.toViewers)(views)) {
25
+ constructor(views = {}, startsFrom = 'scratch', viewers = toViewers(views)) {
26
+ this.views = views;
36
27
  this.startsFrom = startsFrom;
37
28
  this.viewers = viewers;
38
- this.from = (source) => (0, types_1.tryTo)((0, types_1.asJson)(source)).map(s => this.viewers.reduce((a, m) => ({ ...a, ...{ [m.in?.key ?? '']: m.in?.f && m.in.f(s) } }), this.startsFrom === 'scratch' ? {} : s)).value;
29
+ this.from = (source) => (0, types_1.isArray)(source) ? source.map(s => this.reduce((0, types_1.asJson)(s))) : this.reduce((0, types_1.asJson)(source));
30
+ this.reduce = (i) => this.viewers.reduce((a, v) => types_1.json.set(a, v.in.key, v.in.f(i)), this.startsFrom === 'scratch' ? {} : i);
39
31
  }
32
+ get fromSource() { return new View(this.views, 'source', this.viewers); }
40
33
  }
41
34
  exports.View = View;
42
- const view = (views, startsFrom) => new View(views, startsFrom);
35
+ const skip = () => undefined;
36
+ exports.skip = skip;
37
+ const view = (views) => new View(views);
43
38
  exports.view = view;
44
39
  //# sourceMappingURL=View.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"View.js","sourceRoot":"","sources":["../../src/utils/View.ts"],"names":[],"mappings":"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"}
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.40.3",
3
+ "version": "8.41.3",
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.40.3",
34
+ "@thisisagile/easy-test": "8.41.3",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.8",
37
37
  "@types/validator": "^13.7.1"
package/src/types/Is.ts CHANGED
@@ -2,6 +2,8 @@ import { Constructor } from './Constructor';
2
2
 
3
3
  export const isDefined = <T = unknown>(o?: T): o is NonNullable<T> => o !== undefined && o !== null;
4
4
 
5
+ export const isUndefined = (v?: unknown): v is never => v === undefined || v === null;
6
+
5
7
  export const isEmpty = (o?: unknown): boolean => o === '' || o === null || o === undefined || (isArray(o) && o.length === 0);
6
8
 
7
9
  export const isNotEmpty = (o?: unknown): boolean => o !== '' && o !== null && o !== undefined && (!isArray(o) || o.length > 0);
package/src/types/Json.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { isA } from './IsA';
2
- import { isObject } from './Is';
2
+ import { isDefined, isEmpty, isObject } from './Is';
3
3
  import { Get, ofGet } from './Get';
4
4
 
5
5
  export type JsonValue = string | number | boolean | null | Json | JsonValue[];
@@ -10,13 +10,24 @@ export const isJson = (subject?: unknown): subject is { toJSON: () => Json } =>
10
10
  export const json = {
11
11
  parse: (subject: unknown): Json => JSON.parse(JSON.stringify(subject ?? {})),
12
12
  merge: (...subjects: unknown[]): Json => json.parse(subjects.map(s => asJson(s, s => json.parse(s))).reduce((js, j) => ({ ...js, ...j }), {})),
13
- omit: (subject: unknown, ...keys: string[]): Json =>
14
- keys.reduce((js, k) => {
15
- delete js[k];
16
- return js;
17
- }, json.parse(subject)),
13
+ delete: (subject: unknown, key: string): Json => {
14
+ delete (subject as any)[key];
15
+ return subject as Json;
16
+ },
17
+ set: (subject: unknown, key = '', value?: unknown): Json => isEmpty(key) ? subject : (isDefined(value) ? { ...(subject as any), ...{ [key]: value as Json } } : json.delete(subject, key)),
18
+ omit: (subject: unknown, ...keys: string[]): Json => keys.reduce((js, k) => json.delete(js, k), json.parse(subject)),
18
19
  };
19
20
 
20
21
  export const toJson = json.merge;
21
22
 
22
23
  export const asJson = (j?: unknown, alt: Get<Json> = {}): Json => (isJson(j) ? j.toJSON() : isObject(j) ? (j as Json) : ofGet(alt, j));
24
+
25
+ class Any {
26
+ constructor(readonly value: unknown = {}) {
27
+ }
28
+
29
+ delete = (key: string): Any => new Any(json.delete(this.value, key));
30
+ set = (key: string, value?: unknown): Any => new Any(json.set(this.value, key, value));
31
+ }
32
+
33
+ export const any = (value: unknown): Any => new Any(value);
package/src/utils/View.ts CHANGED
@@ -1,47 +1,60 @@
1
- import { asJson, isArray, isDefined, isFunction, isObject, isString, meta, tryTo } from '../types';
1
+ import {
2
+ asJson,
3
+ isArray,
4
+ isDefined,
5
+ isFunction,
6
+ isObject,
7
+ isString,
8
+ isUndefined,
9
+ Json,
10
+ json,
11
+ meta,
12
+ tryTo,
13
+ } from '../types';
2
14
  import { traverse } from './Traverse';
3
15
  import { choose } from './Case';
4
16
 
5
17
  type Func<T = unknown> = (a: any) => T;
6
18
 
7
19
  export type InOut = { in?: Func | View, col?: string };
8
- export const isColOnly = (v: unknown): v is InOut => isObject(v) && isDefined(v.col) && !isDefined(v.in);
9
- export const isInOnly = (v: unknown): v is InOut => isObject(v) && !isDefined(v.col) && isFunction(v.in);
10
- export const isInOutWithFunction = (v: unknown): v is { col: string, in: Func } => isObject(v) && isDefined(v.col) && isFunction(v.in);
11
- export const isInOutWithView = (v: unknown): v is { col: string, in: View } => isObject(v) && isDefined(v.col) && v.in instanceof View;
12
20
 
13
- export type Views = { [key: string]: string | Func | InOut };
14
- export type Viewer = { in?: { key: string, f?: Func } };
21
+ const isColOnly = (v: unknown): v is InOut => isObject(v) && isDefined(v.col) && !isDefined(v.in);
22
+ const isInOnly = (v: unknown): v is InOut => isObject(v) && !isDefined(v.col) && isFunction(v.in);
23
+ const isColAndFunction = (v: unknown): v is { col: string, in: Func } => isObject(v) && isDefined(v.col) && isFunction(v.in);
24
+ const isColAndView = (v: unknown): v is { col: string, in: View } => isObject(v) && isDefined(v.col) && v.in instanceof View;
25
+
26
+ type Views = { [key: string]: string | Func | InOut | undefined };
27
+ type Viewer = { in: { key: string, f: Func } };
15
28
 
16
29
  const toFunc = (a: any, col: string, f: Func = a => a): Func =>
17
- tryTo(traverse(a, col))
18
- .map(v => isArray(v) ? () => v.map(i => f(i)): (a: any) => f(traverse(a, col)))
19
- .value;
20
-
21
- const toViewer = (key: string, value: unknown): Viewer => {
22
- const k = key;
23
- const v = value;
24
- return choose<Viewer>(value)
30
+ tryTo(traverse(a, col)).map(v => isArray(v) ? () => v.map(i => f(i)) : (a: any) => f(traverse(a, col))).value;
31
+
32
+ const toViewer = (key: string, value: unknown): Viewer =>
33
+ choose<Viewer>(value)
34
+ .type(isUndefined, () => toViewer(key, () => undefined))
25
35
  .type(isString, s => toViewer(key, (a: any) => toFunc(a, s)(a)))
26
36
  .type(isColOnly, io => toViewer(key, io.col))
27
37
  .type(isFunction, f => toViewer(key, { in: { key, f } }))
28
38
  .type(isInOnly, io => toViewer(key, { in: { key, f: io.in } }))
29
- .type(isInOutWithFunction, io => toViewer(key, { in: { key, f: (a: any) => toFunc(a, io.col, io.in)(a) } }))
30
- .type(isInOutWithView, io => toViewer(key, { in: { key, f: (a: any) => toFunc(a, io.col, io.in.from)(a) } }))
31
- .else(m => m as Viewer);
32
- };
39
+ .type(isColAndFunction, io => toViewer(key, { in: { key, f: (a: any) => toFunc(a, io.col, io.in)(a) } }))
40
+ .type(isColAndView, io => toViewer(key, { in: { key, f: (a: any) => toFunc(a, io.col, io.in.from)(a) } }))
41
+ .else(v => v as Viewer);
33
42
 
34
- export const toViewers = (views: Views): Viewer[] =>
43
+ const toViewers = (views: Views): Viewer[] =>
35
44
  meta(views)
36
45
  .entries()
37
46
  .map(([k, v]) => toViewer(k, v));
38
47
 
39
48
  export class View {
40
- constructor(views: Views = {}, readonly startsFrom: 'scratch' | 'source' = 'scratch', readonly viewers: Viewer[] = toViewers(views)) {
49
+ constructor(private views: Views = {}, readonly startsFrom: 'scratch' | 'source' = 'scratch', readonly viewers: Viewer[] = toViewers(views)) {
41
50
  }
42
51
 
43
- from = (source: unknown): unknown => tryTo(asJson(source)).map(s => this.viewers.reduce((a: any, m) => ({ ...a, ...{ [m.in?.key ?? '']: m.in?.f && m.in.f(s) } }), this.startsFrom === 'scratch' ? {} : s)).value;
44
- }
52
+ from = (source: unknown): Json => isArray(source) ? source.map(s => this.reduce(asJson(s))) : this.reduce(asJson(source));
45
53
 
54
+ private reduce = (i: any): any => this.viewers.reduce((a: any, v) => json.set(a, v.in.key, v.in.f(i)), this.startsFrom === 'scratch' ? {} : i);
55
+
56
+ get fromSource(): View { return new View(this.views, 'source', this.viewers); }
57
+ }
46
58
 
47
- export const view = (views: Views, startsFrom?: 'scratch' | 'source'): View => new View(views, startsFrom);
59
+ export const skip = () => undefined;
60
+ export const view = (views: Views): View => new View(views);