@thisisagile/easy 17.15.4 → 17.15.6

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.
Files changed (54) hide show
  1. package/dist/{chunk-64S6C743.mjs → chunk-5GUH2TWD.mjs} +4 -4
  2. package/dist/{chunk-ZOT3U45L.mjs → chunk-5S26U4SJ.mjs} +4 -4
  3. package/dist/{chunk-IMREIDHQ.mjs → chunk-6BSO7J6Y.mjs} +2 -2
  4. package/dist/{chunk-UZHMXDAO.mjs → chunk-BYCWXUYD.mjs} +2 -2
  5. package/dist/{chunk-ECXNGUIP.mjs → chunk-FVP5TUK4.mjs} +3 -3
  6. package/dist/{chunk-W5WWSCMG.mjs → chunk-IKDPFRZM.mjs} +3 -3
  7. package/dist/{chunk-VCOKOQFW.mjs → chunk-KPEGHJSZ.mjs} +3 -1
  8. package/dist/{chunk-VCOKOQFW.mjs.map → chunk-KPEGHJSZ.mjs.map} +1 -1
  9. package/dist/{chunk-O75J6WWI.mjs → chunk-MFNNNHRP.mjs} +4 -4
  10. package/dist/{chunk-6RMQPTKX.mjs → chunk-RAXNEFRJ.mjs} +14 -6
  11. package/dist/chunk-RAXNEFRJ.mjs.map +1 -0
  12. package/dist/{chunk-ODV3IWXD.mjs → chunk-SWBW2VJ2.mjs} +2 -2
  13. package/dist/{chunk-GWZRZHFR.mjs → chunk-UHFA4Y47.mjs} +4 -4
  14. package/dist/{chunk-Z56QALMP.mjs → chunk-V3LDNX7F.mjs} +2 -2
  15. package/dist/{chunk-6I4QZH2B.mjs → chunk-X57327XS.mjs} +2 -2
  16. package/dist/data/Condition.mjs +2 -2
  17. package/dist/data/Field.mjs +2 -2
  18. package/dist/domain/Audit.mjs +3 -3
  19. package/dist/domain/Child.mjs +4 -4
  20. package/dist/domain/Entity.mjs +8 -8
  21. package/dist/domain/Repo.mjs +1 -1
  22. package/dist/domain/Struct.mjs +2 -2
  23. package/dist/http/RequestOptions.mjs +2 -2
  24. package/dist/http/RestResult.mjs +2 -2
  25. package/dist/http/toResponse.mjs +3 -3
  26. package/dist/index.js +12 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/services/Api.mjs +8 -8
  29. package/dist/services/ApiGateway.mjs +10 -10
  30. package/dist/services/AxiosProvider.mjs +7 -7
  31. package/dist/services/MappedRouteGateway.mjs +13 -13
  32. package/dist/services/RouteGateway.mjs +11 -11
  33. package/dist/services/ViewRouteGateway.mjs +13 -13
  34. package/dist/sql/Table.mjs +2 -2
  35. package/dist/types/Json.d.ts +1 -0
  36. package/dist/types/Json.mjs +3 -1
  37. package/dist/utils/Mapper.mjs +2 -2
  38. package/dist/utils/View.d.ts +1 -0
  39. package/dist/utils/View.mjs +2 -2
  40. package/package.json +1 -1
  41. package/src/types/Json.ts +2 -0
  42. package/src/utils/View.ts +8 -1
  43. package/dist/chunk-6RMQPTKX.mjs.map +0 -1
  44. /package/dist/{chunk-64S6C743.mjs.map → chunk-5GUH2TWD.mjs.map} +0 -0
  45. /package/dist/{chunk-ZOT3U45L.mjs.map → chunk-5S26U4SJ.mjs.map} +0 -0
  46. /package/dist/{chunk-IMREIDHQ.mjs.map → chunk-6BSO7J6Y.mjs.map} +0 -0
  47. /package/dist/{chunk-UZHMXDAO.mjs.map → chunk-BYCWXUYD.mjs.map} +0 -0
  48. /package/dist/{chunk-ECXNGUIP.mjs.map → chunk-FVP5TUK4.mjs.map} +0 -0
  49. /package/dist/{chunk-W5WWSCMG.mjs.map → chunk-IKDPFRZM.mjs.map} +0 -0
  50. /package/dist/{chunk-O75J6WWI.mjs.map → chunk-MFNNNHRP.mjs.map} +0 -0
  51. /package/dist/{chunk-ODV3IWXD.mjs.map → chunk-SWBW2VJ2.mjs.map} +0 -0
  52. /package/dist/{chunk-GWZRZHFR.mjs.map → chunk-UHFA4Y47.mjs.map} +0 -0
  53. /package/dist/{chunk-Z56QALMP.mjs.map → chunk-V3LDNX7F.mjs.map} +0 -0
  54. /package/dist/{chunk-6I4QZH2B.mjs.map → chunk-X57327XS.mjs.map} +0 -0
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  Api,
3
3
  api
4
- } from "../chunk-ECXNGUIP.mjs";
5
- import "../chunk-GWZRZHFR.mjs";
6
- import "../chunk-IMREIDHQ.mjs";
7
- import "../chunk-64S6C743.mjs";
4
+ } from "../chunk-FVP5TUK4.mjs";
5
+ import "../chunk-UHFA4Y47.mjs";
6
+ import "../chunk-6BSO7J6Y.mjs";
7
+ import "../chunk-5GUH2TWD.mjs";
8
+ import "../chunk-UYDZZAEK.mjs";
8
9
  import "../chunk-UGUAZFM4.mjs";
9
10
  import "../chunk-YMTOGXYB.mjs";
10
- import "../chunk-O75J6WWI.mjs";
11
- import "../chunk-SW2OCUH3.mjs";
12
- import "../chunk-UYDZZAEK.mjs";
11
+ import "../chunk-MFNNNHRP.mjs";
13
12
  import "../chunk-LXQQ5N6S.mjs";
13
+ import "../chunk-RDLH6MXX.mjs";
14
+ import "../chunk-SW2OCUH3.mjs";
14
15
  import "../chunk-XH6PFRYM.mjs";
15
16
  import "../chunk-B3AQ7EZQ.mjs";
16
- import "../chunk-RDLH6MXX.mjs";
17
17
  import "../chunk-2KZ5UP6A.mjs";
18
18
  import "../chunk-OFGI5FLG.mjs";
19
19
  import "../chunk-NCEWAKOZ.mjs";
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  ApiGateway
3
- } from "../chunk-Z56QALMP.mjs";
4
- import "../chunk-ECXNGUIP.mjs";
5
- import "../chunk-GWZRZHFR.mjs";
6
- import "../chunk-IMREIDHQ.mjs";
7
- import "../chunk-64S6C743.mjs";
3
+ } from "../chunk-V3LDNX7F.mjs";
4
+ import "../chunk-FVP5TUK4.mjs";
5
+ import "../chunk-UHFA4Y47.mjs";
6
+ import "../chunk-6BSO7J6Y.mjs";
7
+ import "../chunk-5GUH2TWD.mjs";
8
+ import "../chunk-UYDZZAEK.mjs";
8
9
  import "../chunk-UGUAZFM4.mjs";
9
10
  import "../chunk-YMTOGXYB.mjs";
10
- import "../chunk-O75J6WWI.mjs";
11
- import "../chunk-SW2OCUH3.mjs";
12
- import "../chunk-UYDZZAEK.mjs";
11
+ import "../chunk-MFNNNHRP.mjs";
13
12
  import "../chunk-LXQQ5N6S.mjs";
14
- import "../chunk-XH6PFRYM.mjs";
15
- import "../chunk-B3AQ7EZQ.mjs";
16
13
  import "../chunk-RDLH6MXX.mjs";
14
+ import "../chunk-SW2OCUH3.mjs";
17
15
  import "../chunk-CSKOVGAP.mjs";
18
16
  import "../chunk-CRSP7OQT.mjs";
17
+ import "../chunk-XH6PFRYM.mjs";
18
+ import "../chunk-B3AQ7EZQ.mjs";
19
19
  import "../chunk-2KZ5UP6A.mjs";
20
20
  import "../chunk-OFGI5FLG.mjs";
21
21
  import "../chunk-NCEWAKOZ.mjs";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  AxiosProvider
3
- } from "../chunk-GWZRZHFR.mjs";
4
- import "../chunk-IMREIDHQ.mjs";
5
- import "../chunk-64S6C743.mjs";
6
- import "../chunk-UGUAZFM4.mjs";
7
- import "../chunk-O75J6WWI.mjs";
8
- import "../chunk-SW2OCUH3.mjs";
3
+ } from "../chunk-UHFA4Y47.mjs";
4
+ import "../chunk-6BSO7J6Y.mjs";
5
+ import "../chunk-5GUH2TWD.mjs";
9
6
  import "../chunk-UYDZZAEK.mjs";
7
+ import "../chunk-UGUAZFM4.mjs";
8
+ import "../chunk-MFNNNHRP.mjs";
10
9
  import "../chunk-LXQQ5N6S.mjs";
10
+ import "../chunk-RDLH6MXX.mjs";
11
+ import "../chunk-SW2OCUH3.mjs";
11
12
  import "../chunk-XH6PFRYM.mjs";
12
13
  import "../chunk-B3AQ7EZQ.mjs";
13
- import "../chunk-RDLH6MXX.mjs";
14
14
  import "../chunk-2KZ5UP6A.mjs";
15
15
  import "../chunk-OFGI5FLG.mjs";
16
16
  import "../chunk-NCEWAKOZ.mjs";
@@ -1,31 +1,31 @@
1
1
  import {
2
2
  Mapper
3
- } from "../chunk-6I4QZH2B.mjs";
3
+ } from "../chunk-X57327XS.mjs";
4
4
  import "../chunk-WJZFE5NE.mjs";
5
5
  import {
6
6
  RouteGateway
7
- } from "../chunk-W5WWSCMG.mjs";
8
- import "../chunk-Z56QALMP.mjs";
7
+ } from "../chunk-IKDPFRZM.mjs";
8
+ import "../chunk-V3LDNX7F.mjs";
9
9
  import {
10
10
  Api
11
- } from "../chunk-ECXNGUIP.mjs";
12
- import "../chunk-GWZRZHFR.mjs";
13
- import "../chunk-IMREIDHQ.mjs";
14
- import "../chunk-64S6C743.mjs";
11
+ } from "../chunk-FVP5TUK4.mjs";
12
+ import "../chunk-UHFA4Y47.mjs";
13
+ import "../chunk-6BSO7J6Y.mjs";
14
+ import "../chunk-5GUH2TWD.mjs";
15
+ import "../chunk-UYDZZAEK.mjs";
15
16
  import "../chunk-UGUAZFM4.mjs";
16
17
  import "../chunk-YMTOGXYB.mjs";
17
- import "../chunk-O75J6WWI.mjs";
18
- import "../chunk-SW2OCUH3.mjs";
19
- import "../chunk-UYDZZAEK.mjs";
18
+ import "../chunk-MFNNNHRP.mjs";
20
19
  import "../chunk-LXQQ5N6S.mjs";
21
- import "../chunk-XH6PFRYM.mjs";
22
- import "../chunk-B3AQ7EZQ.mjs";
23
20
  import "../chunk-RDLH6MXX.mjs";
21
+ import "../chunk-SW2OCUH3.mjs";
24
22
  import "../chunk-GCY5A63A.mjs";
25
23
  import "../chunk-MDXL65W4.mjs";
24
+ import "../chunk-KPEGHJSZ.mjs";
26
25
  import "../chunk-CSKOVGAP.mjs";
27
26
  import "../chunk-CRSP7OQT.mjs";
28
- import "../chunk-VCOKOQFW.mjs";
27
+ import "../chunk-XH6PFRYM.mjs";
28
+ import "../chunk-B3AQ7EZQ.mjs";
29
29
  import "../chunk-2KZ5UP6A.mjs";
30
30
  import "../chunk-OFGI5FLG.mjs";
31
31
  import "../chunk-NCEWAKOZ.mjs";
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  RouteGateway
3
- } from "../chunk-W5WWSCMG.mjs";
4
- import "../chunk-Z56QALMP.mjs";
5
- import "../chunk-ECXNGUIP.mjs";
6
- import "../chunk-GWZRZHFR.mjs";
7
- import "../chunk-IMREIDHQ.mjs";
8
- import "../chunk-64S6C743.mjs";
3
+ } from "../chunk-IKDPFRZM.mjs";
4
+ import "../chunk-V3LDNX7F.mjs";
5
+ import "../chunk-FVP5TUK4.mjs";
6
+ import "../chunk-UHFA4Y47.mjs";
7
+ import "../chunk-6BSO7J6Y.mjs";
8
+ import "../chunk-5GUH2TWD.mjs";
9
+ import "../chunk-UYDZZAEK.mjs";
9
10
  import "../chunk-UGUAZFM4.mjs";
10
11
  import "../chunk-YMTOGXYB.mjs";
11
- import "../chunk-O75J6WWI.mjs";
12
- import "../chunk-SW2OCUH3.mjs";
13
- import "../chunk-UYDZZAEK.mjs";
12
+ import "../chunk-MFNNNHRP.mjs";
14
13
  import "../chunk-LXQQ5N6S.mjs";
15
- import "../chunk-XH6PFRYM.mjs";
16
- import "../chunk-B3AQ7EZQ.mjs";
17
14
  import "../chunk-RDLH6MXX.mjs";
15
+ import "../chunk-SW2OCUH3.mjs";
18
16
  import "../chunk-CSKOVGAP.mjs";
19
17
  import "../chunk-CRSP7OQT.mjs";
18
+ import "../chunk-XH6PFRYM.mjs";
19
+ import "../chunk-B3AQ7EZQ.mjs";
20
20
  import "../chunk-2KZ5UP6A.mjs";
21
21
  import "../chunk-OFGI5FLG.mjs";
22
22
  import "../chunk-NCEWAKOZ.mjs";
@@ -1,30 +1,30 @@
1
1
  import {
2
2
  view
3
- } from "../chunk-6RMQPTKX.mjs";
3
+ } from "../chunk-RAXNEFRJ.mjs";
4
4
  import "../chunk-SSROJBD5.mjs";
5
5
  import "../chunk-WD4PRE6L.mjs";
6
6
  import {
7
7
  RouteGateway
8
- } from "../chunk-W5WWSCMG.mjs";
9
- import "../chunk-Z56QALMP.mjs";
8
+ } from "../chunk-IKDPFRZM.mjs";
9
+ import "../chunk-V3LDNX7F.mjs";
10
10
  import {
11
11
  Api
12
- } from "../chunk-ECXNGUIP.mjs";
13
- import "../chunk-GWZRZHFR.mjs";
14
- import "../chunk-IMREIDHQ.mjs";
15
- import "../chunk-64S6C743.mjs";
12
+ } from "../chunk-FVP5TUK4.mjs";
13
+ import "../chunk-UHFA4Y47.mjs";
14
+ import "../chunk-6BSO7J6Y.mjs";
15
+ import "../chunk-5GUH2TWD.mjs";
16
+ import "../chunk-UYDZZAEK.mjs";
16
17
  import "../chunk-UGUAZFM4.mjs";
17
18
  import "../chunk-YMTOGXYB.mjs";
18
- import "../chunk-O75J6WWI.mjs";
19
- import "../chunk-SW2OCUH3.mjs";
20
- import "../chunk-UYDZZAEK.mjs";
19
+ import "../chunk-MFNNNHRP.mjs";
21
20
  import "../chunk-LXQQ5N6S.mjs";
22
- import "../chunk-XH6PFRYM.mjs";
23
- import "../chunk-B3AQ7EZQ.mjs";
24
21
  import "../chunk-RDLH6MXX.mjs";
22
+ import "../chunk-SW2OCUH3.mjs";
23
+ import "../chunk-KPEGHJSZ.mjs";
25
24
  import "../chunk-CSKOVGAP.mjs";
26
25
  import "../chunk-CRSP7OQT.mjs";
27
- import "../chunk-VCOKOQFW.mjs";
26
+ import "../chunk-XH6PFRYM.mjs";
27
+ import "../chunk-B3AQ7EZQ.mjs";
28
28
  import "../chunk-2KZ5UP6A.mjs";
29
29
  import "../chunk-OFGI5FLG.mjs";
30
30
  import "../chunk-NCEWAKOZ.mjs";
@@ -23,7 +23,7 @@ import "../chunk-55SDDPJZ.mjs";
23
23
  import {
24
24
  Mapper,
25
25
  mappings
26
- } from "../chunk-6I4QZH2B.mjs";
26
+ } from "../chunk-X57327XS.mjs";
27
27
  import "../chunk-WJZFE5NE.mjs";
28
28
  import "../chunk-OKPGJD64.mjs";
29
29
  import {
@@ -34,7 +34,7 @@ import {
34
34
  } from "../chunk-7KQ4QLP2.mjs";
35
35
  import "../chunk-GCY5A63A.mjs";
36
36
  import "../chunk-MDXL65W4.mjs";
37
- import "../chunk-VCOKOQFW.mjs";
37
+ import "../chunk-KPEGHJSZ.mjs";
38
38
  import "../chunk-2KZ5UP6A.mjs";
39
39
  import "../chunk-OFGI5FLG.mjs";
40
40
  import "../chunk-NCEWAKOZ.mjs";
@@ -28,5 +28,6 @@ declare class Any<T extends Json> {
28
28
  set: (key: keyof T, value?: unknown) => Any<T>;
29
29
  toJSON(): Json;
30
30
  }
31
+ export declare const takeFirstKey: (j: unknown, alt?: string) => string;
31
32
  export declare const any: <T extends Json = Json>(value: T) => Any<T>;
32
33
  export {};
@@ -3,8 +3,9 @@ import {
3
3
  asJson,
4
4
  isJson,
5
5
  json,
6
+ takeFirstKey,
6
7
  toJson
7
- } from "../chunk-VCOKOQFW.mjs";
8
+ } from "../chunk-KPEGHJSZ.mjs";
8
9
  import "../chunk-H2762RTS.mjs";
9
10
  import "../chunk-A7C3XND3.mjs";
10
11
  import "../chunk-JSON7A4X.mjs";
@@ -22,6 +23,7 @@ export {
22
23
  asJson,
23
24
  isJson,
24
25
  json,
26
+ takeFirstKey,
25
27
  toJson
26
28
  };
27
29
  //# sourceMappingURL=Json.mjs.map
@@ -2,11 +2,11 @@ import {
2
2
  Mapper,
3
3
  isMapping,
4
4
  mappings
5
- } from "../chunk-6I4QZH2B.mjs";
5
+ } from "../chunk-X57327XS.mjs";
6
6
  import "../chunk-WJZFE5NE.mjs";
7
7
  import "../chunk-GCY5A63A.mjs";
8
8
  import "../chunk-MDXL65W4.mjs";
9
- import "../chunk-VCOKOQFW.mjs";
9
+ import "../chunk-KPEGHJSZ.mjs";
10
10
  import "../chunk-WTFW6DLP.mjs";
11
11
  import "../chunk-H2762RTS.mjs";
12
12
  import "../chunk-A7C3XND3.mjs";
@@ -29,6 +29,7 @@ export declare const view: <V = any>(views: ViewRecord<DontInfer<V>>) => View<V>
29
29
  export declare const views: {
30
30
  ignore: symbol;
31
31
  keep: symbol;
32
+ spread: string;
32
33
  skip: symbol;
33
34
  value: (value: unknown) => () => unknown;
34
35
  or: {
@@ -4,11 +4,11 @@ import {
4
4
  toViewer,
5
5
  view,
6
6
  views
7
- } from "../chunk-6RMQPTKX.mjs";
7
+ } from "../chunk-RAXNEFRJ.mjs";
8
8
  import "../chunk-SSROJBD5.mjs";
9
9
  import "../chunk-WD4PRE6L.mjs";
10
+ import "../chunk-KPEGHJSZ.mjs";
10
11
  import "../chunk-CRSP7OQT.mjs";
11
- import "../chunk-VCOKOQFW.mjs";
12
12
  import "../chunk-2KZ5UP6A.mjs";
13
13
  import "../chunk-OFGI5FLG.mjs";
14
14
  import "../chunk-NCEWAKOZ.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "17.15.4",
3
+ "version": "17.15.6",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
package/src/types/Json.ts CHANGED
@@ -43,4 +43,6 @@ class Any<T extends Json> {
43
43
  }
44
44
  }
45
45
 
46
+ export const takeFirstKey = (j: unknown, alt: string = ''): string => entries(asJson(j)).first()?.[0] ?? alt;
47
+
46
48
  export const any = <T extends Json = Json>(value: T): Any<T> => new Any<T>(value);
package/src/utils/View.ts CHANGED
@@ -19,6 +19,7 @@ type ViewRecord<V = any> = Partial<Record<keyof V, ViewType>>;
19
19
 
20
20
  const ignore = Symbol('view.ignore');
21
21
  const keep = Symbol('view.keep');
22
+ const spread = 'view.spread';
22
23
 
23
24
  export const toViewer = (key: string, value: ViewType): Viewer =>
24
25
  choose(value)
@@ -75,7 +76,12 @@ export class View<V = any> {
75
76
  same = (one?: unknown, another?: unknown): boolean => isEqual(this.from(one), this.from(another));
76
77
 
77
78
  private reduce = (source: any): any =>
78
- use(asJson(source), src => this.viewers.reduce((acc, v) => json.set(acc, v.key, v.f(src, v.key)), this.startsFrom === 'scratch' ? {} : src));
79
+ use(asJson(source), src =>
80
+ this.viewers.reduce(
81
+ (acc, v) => (v.key === spread ? { ...acc, ...asJson(v.f(src, v.key)) } : json.set(acc, v.key, v.f(src, v.key))),
82
+ this.startsFrom === 'scratch' ? {} : src
83
+ )
84
+ );
79
85
  }
80
86
 
81
87
  export const isSimpleView = (a: unknown): a is View => a instanceof View;
@@ -85,6 +91,7 @@ export const view = <V = any>(views: ViewRecord<DontInfer<V>>): View<V> => new V
85
91
  export const views = {
86
92
  ignore,
87
93
  keep,
94
+ spread,
88
95
  skip: ignore,
89
96
  value: (value: unknown) => () => value,
90
97
  or: {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/View.ts"],"sourcesContent":["import { traverse } from './Traverse';\nimport { ifDefined } from './If';\nimport { Primitive } from '../types/Primitive';\nimport { Constructor, isConstructor, use } from '../types/Constructor';\nimport { asJson, json } from '../types/Json';\nimport { choose } from '../types/Case';\nimport { isArray, isBoolean, isFunction, isString } from '../types/Is';\nimport { meta } from '../types/Meta';\nimport { isPageList, PageList, toPageList } from '../types/PageList';\nimport { List } from '../types/List';\nimport { isEqual } from '../types/IsEqual';\nimport { DontInfer } from '../types/Types';\n\ntype Func<T = unknown> = (a: any, key?: string) => T;\ntype Viewer = { key: string; f: Func };\n\ntype ViewType<V = any> = Primitive | Constructor | Func | View<V> | undefined;\ntype ViewRecord<V = any> = Partial<Record<keyof V, ViewType>>;\n\nconst ignore = Symbol('view.ignore');\nconst keep = Symbol('view.keep');\n\nexport const toViewer = (key: string, value: ViewType): Viewer =>\n choose(value)\n .is.not.defined(v => v, { key, f: () => undefined } as Viewer)\n .type(isBoolean, b => ({ key, f: () => b }))\n .equals(ignore, { key, f: () => undefined })\n .equals(keep, { key, f: (a: any) => traverse(a, key) })\n .type(isString, s => ({ key, f: (a: any) => traverse(a, s) }))\n .type(isConstructor, c => ({\n key,\n f: (a, key) => use(traverse(a, key), v => (isArray(v) ? v.map(i => optional(c, i)) : optional(c, v))),\n }))\n .type(isSimpleView, f => ({ key, f: (a: any) => f.from(traverse(a, key)) }))\n .type(isFunction, f => ({ key, f }))\n .else(v => ({ key, f: () => v }));\n\nconst optional = (c: Constructor, v: any) =>\n ifDefined(\n v,\n i => new c(i),\n () => v\n );\n\nconst toViewers = (views: ViewRecord): Viewer[] =>\n meta(views)\n .entries<ViewType>()\n .map(([k, v]) => toViewer(k, v));\n\nexport class View<V = any> {\n constructor(\n private views = {} as ViewRecord<V>,\n readonly startsFrom: 'scratch' | 'source' = 'scratch',\n readonly viewers: Viewer[] = toViewers(views)\n ) {}\n\n get fromSource(): View<V> {\n return new View(this.views, 'source', this.viewers);\n }\n\n from<T = unknown>(source: PageList<T>): PageList<V>;\n from<T = unknown>(source: List<T>): List<V>;\n from<T = unknown>(source: T[]): V[];\n from<T = unknown>(source: T): V;\n from<T = unknown>(source: PageList<T> | List<T> | T[] | T): PageList<V> | List<V> | V[] | V {\n if (isPageList(source))\n return toPageList(\n source.map(s => this.reduce(s)),\n source.options\n );\n if (isArray(source)) return source.map(s => this.reduce(s));\n return this.reduce(source);\n }\n\n same = (one?: unknown, another?: unknown): boolean => isEqual(this.from(one), this.from(another));\n\n private reduce = (source: any): any =>\n use(asJson(source), src => this.viewers.reduce((acc, v) => json.set(acc, v.key, v.f(src, v.key)), this.startsFrom === 'scratch' ? {} : src));\n}\n\nexport const isSimpleView = (a: unknown): a is View => a instanceof View;\n\nexport const view = <V = any>(views: ViewRecord<DontInfer<V>>): View<V> => new View<V>(views);\n\nexport const views = {\n ignore,\n keep,\n skip: ignore,\n value: (value: unknown) => () => value,\n or: {\n key: (altKey: string) => (a: unknown, key?: string) => traverse(a, key) ?? traverse(a, altKey),\n value: (altValue: unknown) => (a: unknown, key?: string) => traverse(a, key) ?? altValue,\n func: (altFunc: Func) => (a: unknown, key?: string) => traverse(a, key) ?? altFunc(a, key),\n },\n};\n\n// spread: (a: any, key: string) => ({...a, ...(use(traverse(a, key), v => isObject(v) ? v : ({[key]: v})))}),\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,IAAM,SAAS,OAAO,aAAa;AACnC,IAAM,OAAO,OAAO,WAAW;AAExB,IAAM,WAAW,CAAC,KAAa,UACpC,OAAO,KAAK,EACT,GAAG,IAAI,QAAQ,OAAK,GAAG,EAAE,KAAK,GAAG,MAAM,OAAU,CAAW,EAC5D,KAAK,WAAW,QAAM,EAAE,KAAK,GAAG,MAAM,EAAE,EAAE,EAC1C,OAAO,QAAQ,EAAE,KAAK,GAAG,MAAM,OAAU,CAAC,EAC1C,OAAO,MAAM,EAAE,KAAK,GAAG,CAAC,MAAW,SAAS,GAAG,GAAG,EAAE,CAAC,EACrD,KAAK,UAAU,QAAM,EAAE,KAAK,GAAG,CAAC,MAAW,SAAS,GAAG,CAAC,EAAE,EAAE,EAC5D,KAAK,eAAe,QAAM;AAAA,EACzB;AAAA,EACA,GAAG,CAAC,GAAGA,SAAQ,IAAI,SAAS,GAAGA,IAAG,GAAG,OAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,OAAK,SAAS,GAAG,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,CAAE;AACtG,EAAE,EACD,KAAK,cAAc,QAAM,EAAE,KAAK,GAAG,CAAC,MAAW,EAAE,KAAK,SAAS,GAAG,GAAG,CAAC,EAAE,EAAE,EAC1E,KAAK,YAAY,QAAM,EAAE,KAAK,EAAE,EAAE,EAClC,KAAK,QAAM,EAAE,KAAK,GAAG,MAAM,EAAE,EAAE;AAEpC,IAAM,WAAW,CAAC,GAAgB,MAChC;AAAA,EACE;AAAA,EACA,OAAK,IAAI,EAAE,CAAC;AAAA,EACZ,MAAM;AACR;AAEF,IAAM,YAAY,CAACC,WACjB,KAAKA,MAAK,EACP,QAAkB,EAClB,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAE5B,IAAM,OAAN,MAAM,MAAc;AAAA,EACzB,YACUA,SAAQ,CAAC,GACR,aAAmC,WACnC,UAAoB,UAAUA,MAAK,GAC5C;AAHQ,iBAAAA;AACC;AACA;AAAA,EACR;AAAA,EAEH,IAAI,aAAsB;AACxB,WAAO,IAAI,MAAK,KAAK,OAAO,UAAU,KAAK,OAAO;AAAA,EACpD;AAAA,EAMA,KAAkB,QAA0E;AAC1F,QAAI,WAAW,MAAM;AACnB,aAAO;AAAA,QACL,OAAO,IAAI,OAAK,KAAK,OAAO,CAAC,CAAC;AAAA,QAC9B,OAAO;AAAA,MACT;AACF,QAAI,QAAQ,MAAM;AAAG,aAAO,OAAO,IAAI,OAAK,KAAK,OAAO,CAAC,CAAC;AAC1D,WAAO,KAAK,OAAO,MAAM;AAAA,EAC3B;AAAA,EAEA,OAAO,CAAC,KAAe,YAA+B,QAAQ,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,OAAO,CAAC;AAAA,EAExF,SAAS,CAAC,WAChB,IAAI,OAAO,MAAM,GAAG,SAAO,KAAK,QAAQ,OAAO,CAAC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,eAAe,YAAY,CAAC,IAAI,GAAG,CAAC;AAC/I;AAEO,IAAM,eAAe,CAAC,MAA0B,aAAa;AAE7D,IAAM,OAAO,CAAUA,WAA6C,IAAI,KAAQA,MAAK;AAErF,IAAM,QAAQ;AAAA,EACnB;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,OAAO,CAAC,UAAmB,MAAM;AAAA,EACjC,IAAI;AAAA,IACF,KAAK,CAAC,WAAmB,CAAC,GAAY,QAAiB,SAAS,GAAG,GAAG,KAAK,SAAS,GAAG,MAAM;AAAA,IAC7F,OAAO,CAAC,aAAsB,CAAC,GAAY,QAAiB,SAAS,GAAG,GAAG,KAAK;AAAA,IAChF,MAAM,CAAC,YAAkB,CAAC,GAAY,QAAiB,SAAS,GAAG,GAAG,KAAK,QAAQ,GAAG,GAAG;AAAA,EAC3F;AACF;","names":["key","views"]}