@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,10 +1,10 @@
1
+ import {
2
+ isResponse
3
+ } from "./chunk-UYDZZAEK.mjs";
1
4
  import {
2
5
  HttpStatus,
3
6
  isHttpStatus
4
7
  } from "./chunk-UGUAZFM4.mjs";
5
- import {
6
- isResponse
7
- } from "./chunk-UYDZZAEK.mjs";
8
8
  import {
9
9
  choose
10
10
  } from "./chunk-2KZ5UP6A.mjs";
@@ -52,4 +52,4 @@ export {
52
52
  rest,
53
53
  isRestResult
54
54
  };
55
- //# sourceMappingURL=chunk-64S6C743.mjs.map
55
+ //# sourceMappingURL=chunk-5GUH2TWD.mjs.map
@@ -2,12 +2,12 @@ import {
2
2
  required,
3
3
  valid
4
4
  } from "./chunk-RBQOVMPC.mjs";
5
+ import {
6
+ Struct
7
+ } from "./chunk-BYCWXUYD.mjs";
5
8
  import {
6
9
  DateTime
7
10
  } from "./chunk-UR544PJT.mjs";
8
- import {
9
- Struct
10
- } from "./chunk-UZHMXDAO.mjs";
11
11
  import {
12
12
  choose
13
13
  } from "./chunk-2KZ5UP6A.mjs";
@@ -47,4 +47,4 @@ __decorateClass([
47
47
  export {
48
48
  Audit
49
49
  };
50
- //# sourceMappingURL=chunk-ZOT3U45L.mjs.map
50
+ //# sourceMappingURL=chunk-5S26U4SJ.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  rest
3
- } from "./chunk-64S6C743.mjs";
3
+ } from "./chunk-5GUH2TWD.mjs";
4
4
  import {
5
5
  toHttpStatus
6
6
  } from "./chunk-UGUAZFM4.mjs";
@@ -17,4 +17,4 @@ function toResponse(status, body, headers) {
17
17
  export {
18
18
  toResponse
19
19
  };
20
- //# sourceMappingURL=chunk-IMREIDHQ.mjs.map
20
+ //# sourceMappingURL=chunk-6BSO7J6Y.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  json
3
- } from "./chunk-VCOKOQFW.mjs";
3
+ } from "./chunk-KPEGHJSZ.mjs";
4
4
  import {
5
5
  validate
6
6
  } from "./chunk-2KZ5UP6A.mjs";
@@ -37,4 +37,4 @@ export {
37
37
  Struct,
38
38
  isStruct
39
39
  };
40
- //# sourceMappingURL=chunk-UZHMXDAO.mjs.map
40
+ //# sourceMappingURL=chunk-BYCWXUYD.mjs.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  AxiosProvider
3
- } from "./chunk-GWZRZHFR.mjs";
3
+ } from "./chunk-UHFA4Y47.mjs";
4
4
  import {
5
5
  HttpVerb
6
6
  } from "./chunk-YMTOGXYB.mjs";
7
7
  import {
8
8
  RequestOptions,
9
9
  toPageOptions
10
- } from "./chunk-O75J6WWI.mjs";
10
+ } from "./chunk-MFNNNHRP.mjs";
11
11
 
12
12
  // src/services/Api.ts
13
13
  var Api = class {
@@ -76,4 +76,4 @@ export {
76
76
  Api,
77
77
  api
78
78
  };
79
- //# sourceMappingURL=chunk-ECXNGUIP.mjs.map
79
+ //# sourceMappingURL=chunk-FVP5TUK4.mjs.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ApiGateway
3
- } from "./chunk-Z56QALMP.mjs";
3
+ } from "./chunk-V3LDNX7F.mjs";
4
4
  import {
5
5
  Api
6
- } from "./chunk-ECXNGUIP.mjs";
6
+ } from "./chunk-FVP5TUK4.mjs";
7
7
  import {
8
8
  HttpStatus
9
9
  } from "./chunk-UGUAZFM4.mjs";
@@ -54,4 +54,4 @@ var RouteGateway = class extends ApiGateway {
54
54
  export {
55
55
  RouteGateway
56
56
  };
57
- //# sourceMappingURL=chunk-W5WWSCMG.mjs.map
57
+ //# sourceMappingURL=chunk-IKDPFRZM.mjs.map
@@ -44,6 +44,7 @@ var Any = class {
44
44
  return this.value;
45
45
  }
46
46
  };
47
+ var takeFirstKey = (j, alt = "") => entries(asJson(j)).first()?.[0] ?? alt;
47
48
  var any = (value) => new Any(value);
48
49
 
49
50
  export {
@@ -51,6 +52,7 @@ export {
51
52
  json,
52
53
  toJson,
53
54
  asJson,
55
+ takeFirstKey,
54
56
  any
55
57
  };
56
- //# sourceMappingURL=chunk-VCOKOQFW.mjs.map
58
+ //# sourceMappingURL=chunk-KPEGHJSZ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/Json.ts"],"sourcesContent":["import { isA } from './IsA';\nimport { isEmpty, isObject } from './Is';\nimport { Get, ofGet } from './Get';\nimport { ifDefined } from '../utils/If';\nimport { TypeGuard } from './TypeGuard';\nimport { entries } from './Object';\n\nexport type JsonValue = string | number | boolean | null | Json | JsonValue[];\nexport type Json = { [key: string]: JsonValue };\n\nexport const isJson: TypeGuard<{ toJSON: () => Json }> = (subject?: unknown): subject is { toJSON: () => Json } =>\n isA<{ toJSON: () => Json }>(subject, 'toJSON');\n\nexport const json = {\n parse: <T extends Json = Json>(subject: unknown): T => JSON.parse(JSON.stringify(subject ?? {})),\n merge: (...subjects: unknown[]): Json => json.parse(subjects.map(s => asJson(s, s => json.parse(s))).reduce((js, j) => ({ ...js, ...j }), {})),\n delete: <T extends Json = Json>(subject: T, key: string): T => {\n ifDefined(subject, () => delete (subject as any)[key]);\n return subject;\n },\n set: <T extends Json = Json>(subject: T, key = '', value?: unknown): T =>\n isEmpty(key) ? subject : value !== undefined ? { ...(subject as any), ...{ [key]: value as JsonValue } } : json.delete(subject, key),\n omit: <T extends Json = Json>(subject: T, ...keys: string[]): T => keys.reduce((js, k) => json.delete(js, k), json.parse<T>(subject)),\n pick: <T extends Json = Json>(subject: T, ...keys: string[]): T => keys.reduce((js, k) => json.set(js, k, (subject as any)[k]), {} as T),\n defaults: <T extends Json = Json>(options: Partial<T> = {}, defaults: Partial<T> = {}): T => json.merge(defaults, options) as T,\n isSubset: (subject: Json, subset: Json): boolean => !entries(subset).some(([k, v]) => subject[k] !== v),\n};\n\nexport const toJson = json.merge;\n\nexport const asJson = (j?: unknown, alt: Get<Json> = {}): Json => (isJson(j) ? j.toJSON() : isObject(j) ? (j as Json) : ofGet(alt, j));\n\nclass Any<T extends Json> {\n constructor(readonly value: T) {}\n\n merge = (...subjects: T[]): Any<T> => any<T>(json.merge(this.value, ...subjects) as T);\n delete = (key: keyof T): Any<T> => any<T>(json.delete<T>(this.value, key as string));\n omit = (...keys: (keyof T)[]): Any<T> => any<T>(json.omit<T>(this.value, ...(keys as string[])));\n set = (key: keyof T, value?: unknown): Any<T> => any<T>(json.set(this.value, key as string, value));\n\n toJSON(): Json {\n return this.value;\n }\n}\n\nexport const any = <T extends Json = Json>(value: T): Any<T> => new Any<T>(value);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAUO,IAAM,SAA4C,CAAC,YACxD,IAA4B,SAAS,QAAQ;AAExC,IAAM,OAAO;AAAA,EAClB,OAAO,CAAwB,YAAwB,KAAK,MAAM,KAAK,UAAU,WAAW,CAAC,CAAC,CAAC;AAAA,EAC/F,OAAO,IAAI,aAA8B,KAAK,MAAM,SAAS,IAAI,OAAK,OAAO,GAAG,CAAAA,OAAK,KAAK,MAAMA,EAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAAA,EAC7I,QAAQ,CAAwB,SAAY,QAAmB;AAC7D,cAAU,SAAS,MAAM,OAAQ,QAAgB,GAAG,CAAC;AACrD,WAAO;AAAA,EACT;AAAA,EACA,KAAK,CAAwB,SAAY,MAAM,IAAI,UACjD,QAAQ,GAAG,IAAI,UAAU,UAAU,SAAY,EAAE,GAAI,SAAiB,GAAG,EAAE,CAAC,GAAG,GAAG,MAAmB,EAAE,IAAI,KAAK,OAAO,SAAS,GAAG;AAAA,EACrI,MAAM,CAAwB,YAAe,SAAsB,KAAK,OAAO,CAAC,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,MAAS,OAAO,CAAC;AAAA,EACpI,MAAM,CAAwB,YAAe,SAAsB,KAAK,OAAO,CAAC,IAAI,MAAM,KAAK,IAAI,IAAI,GAAI,QAAgB,CAAC,CAAC,GAAG,CAAC,CAAM;AAAA,EACvI,UAAU,CAAwB,UAAsB,CAAC,GAAG,WAAuB,CAAC,MAAS,KAAK,MAAM,UAAU,OAAO;AAAA,EACzH,UAAU,CAAC,SAAe,WAA0B,CAAC,QAAQ,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC;AACxG;AAEO,IAAM,SAAS,KAAK;AAEpB,IAAM,SAAS,CAAC,GAAa,MAAiB,CAAC,MAAa,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,SAAS,CAAC,IAAK,IAAa,MAAM,KAAK,CAAC;AAEpI,IAAM,MAAN,MAA0B;AAAA,EACxB,YAAqB,OAAU;AAAV;AAAA,EAAW;AAAA,EAEhC,QAAQ,IAAI,aAA0B,IAAO,KAAK,MAAM,KAAK,OAAO,GAAG,QAAQ,CAAM;AAAA,EACrF,SAAS,CAAC,QAAyB,IAAO,KAAK,OAAU,KAAK,OAAO,GAAa,CAAC;AAAA,EACnF,OAAO,IAAI,SAA8B,IAAO,KAAK,KAAQ,KAAK,OAAO,GAAI,IAAiB,CAAC;AAAA,EAC/F,MAAM,CAAC,KAAc,UAA4B,IAAO,KAAK,IAAI,KAAK,OAAO,KAAe,KAAK,CAAC;AAAA,EAElG,SAAe;AACb,WAAO,KAAK;AAAA,EACd;AACF;AAEO,IAAM,MAAM,CAAwB,UAAqB,IAAI,IAAO,KAAK;","names":["s"]}
1
+ {"version":3,"sources":["../src/types/Json.ts"],"sourcesContent":["import { isA } from './IsA';\nimport { isEmpty, isObject } from './Is';\nimport { Get, ofGet } from './Get';\nimport { ifDefined } from '../utils/If';\nimport { TypeGuard } from './TypeGuard';\nimport { entries } from './Object';\n\nexport type JsonValue = string | number | boolean | null | Json | JsonValue[];\nexport type Json = { [key: string]: JsonValue };\n\nexport const isJson: TypeGuard<{ toJSON: () => Json }> = (subject?: unknown): subject is { toJSON: () => Json } =>\n isA<{ toJSON: () => Json }>(subject, 'toJSON');\n\nexport const json = {\n parse: <T extends Json = Json>(subject: unknown): T => JSON.parse(JSON.stringify(subject ?? {})),\n merge: (...subjects: unknown[]): Json => json.parse(subjects.map(s => asJson(s, s => json.parse(s))).reduce((js, j) => ({ ...js, ...j }), {})),\n delete: <T extends Json = Json>(subject: T, key: string): T => {\n ifDefined(subject, () => delete (subject as any)[key]);\n return subject;\n },\n set: <T extends Json = Json>(subject: T, key = '', value?: unknown): T =>\n isEmpty(key) ? subject : value !== undefined ? { ...(subject as any), ...{ [key]: value as JsonValue } } : json.delete(subject, key),\n omit: <T extends Json = Json>(subject: T, ...keys: string[]): T => keys.reduce((js, k) => json.delete(js, k), json.parse<T>(subject)),\n pick: <T extends Json = Json>(subject: T, ...keys: string[]): T => keys.reduce((js, k) => json.set(js, k, (subject as any)[k]), {} as T),\n defaults: <T extends Json = Json>(options: Partial<T> = {}, defaults: Partial<T> = {}): T => json.merge(defaults, options) as T,\n isSubset: (subject: Json, subset: Json): boolean => !entries(subset).some(([k, v]) => subject[k] !== v),\n};\n\nexport const toJson = json.merge;\n\nexport const asJson = (j?: unknown, alt: Get<Json> = {}): Json => (isJson(j) ? j.toJSON() : isObject(j) ? (j as Json) : ofGet(alt, j));\n\nclass Any<T extends Json> {\n constructor(readonly value: T) {}\n\n merge = (...subjects: T[]): Any<T> => any<T>(json.merge(this.value, ...subjects) as T);\n delete = (key: keyof T): Any<T> => any<T>(json.delete<T>(this.value, key as string));\n omit = (...keys: (keyof T)[]): Any<T> => any<T>(json.omit<T>(this.value, ...(keys as string[])));\n set = (key: keyof T, value?: unknown): Any<T> => any<T>(json.set(this.value, key as string, value));\n\n toJSON(): Json {\n return this.value;\n }\n}\n\nexport const takeFirstKey = (j: unknown, alt: string = ''): string => entries(asJson(j)).first()?.[0] ?? alt;\n\nexport const any = <T extends Json = Json>(value: T): Any<T> => new Any<T>(value);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAUO,IAAM,SAA4C,CAAC,YACxD,IAA4B,SAAS,QAAQ;AAExC,IAAM,OAAO;AAAA,EAClB,OAAO,CAAwB,YAAwB,KAAK,MAAM,KAAK,UAAU,WAAW,CAAC,CAAC,CAAC;AAAA,EAC/F,OAAO,IAAI,aAA8B,KAAK,MAAM,SAAS,IAAI,OAAK,OAAO,GAAG,CAAAA,OAAK,KAAK,MAAMA,EAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAAA,EAC7I,QAAQ,CAAwB,SAAY,QAAmB;AAC7D,cAAU,SAAS,MAAM,OAAQ,QAAgB,GAAG,CAAC;AACrD,WAAO;AAAA,EACT;AAAA,EACA,KAAK,CAAwB,SAAY,MAAM,IAAI,UACjD,QAAQ,GAAG,IAAI,UAAU,UAAU,SAAY,EAAE,GAAI,SAAiB,GAAG,EAAE,CAAC,GAAG,GAAG,MAAmB,EAAE,IAAI,KAAK,OAAO,SAAS,GAAG;AAAA,EACrI,MAAM,CAAwB,YAAe,SAAsB,KAAK,OAAO,CAAC,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,MAAS,OAAO,CAAC;AAAA,EACpI,MAAM,CAAwB,YAAe,SAAsB,KAAK,OAAO,CAAC,IAAI,MAAM,KAAK,IAAI,IAAI,GAAI,QAAgB,CAAC,CAAC,GAAG,CAAC,CAAM;AAAA,EACvI,UAAU,CAAwB,UAAsB,CAAC,GAAG,WAAuB,CAAC,MAAS,KAAK,MAAM,UAAU,OAAO;AAAA,EACzH,UAAU,CAAC,SAAe,WAA0B,CAAC,QAAQ,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC;AACxG;AAEO,IAAM,SAAS,KAAK;AAEpB,IAAM,SAAS,CAAC,GAAa,MAAiB,CAAC,MAAa,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,SAAS,CAAC,IAAK,IAAa,MAAM,KAAK,CAAC;AAEpI,IAAM,MAAN,MAA0B;AAAA,EACxB,YAAqB,OAAU;AAAV;AAAA,EAAW;AAAA,EAEhC,QAAQ,IAAI,aAA0B,IAAO,KAAK,MAAM,KAAK,OAAO,GAAG,QAAQ,CAAM;AAAA,EACrF,SAAS,CAAC,QAAyB,IAAO,KAAK,OAAU,KAAK,OAAO,GAAa,CAAC;AAAA,EACnF,OAAO,IAAI,SAA8B,IAAO,KAAK,KAAQ,KAAK,OAAO,GAAI,IAAiB,CAAC;AAAA,EAC/F,MAAM,CAAC,KAAc,UAA4B,IAAO,KAAK,IAAI,KAAK,OAAO,KAAe,KAAK,CAAC;AAAA,EAElG,SAAe;AACb,WAAO,KAAK;AAAA,EACd;AACF;AAEO,IAAM,eAAe,CAAC,GAAY,MAAc,OAAe,QAAQ,OAAO,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK;AAElG,IAAM,MAAM,CAAwB,UAAqB,IAAI,IAAO,KAAK;","names":["s"]}
@@ -1,12 +1,12 @@
1
- import {
2
- HttpHeader
3
- } from "./chunk-SW2OCUH3.mjs";
4
1
  import {
5
2
  toUuid
6
3
  } from "./chunk-LXQQ5N6S.mjs";
7
4
  import {
8
5
  ContentType
9
6
  } from "./chunk-RDLH6MXX.mjs";
7
+ import {
8
+ HttpHeader
9
+ } from "./chunk-SW2OCUH3.mjs";
10
10
  import {
11
11
  ctx
12
12
  } from "./chunk-NDCIZJXB.mjs";
@@ -87,4 +87,4 @@ export {
87
87
  RequestOptions,
88
88
  isRequestOptions
89
89
  };
90
- //# sourceMappingURL=chunk-O75J6WWI.mjs.map
90
+ //# sourceMappingURL=chunk-MFNNNHRP.mjs.map
@@ -4,14 +4,14 @@ import {
4
4
  import {
5
5
  isEqual
6
6
  } from "./chunk-WD4PRE6L.mjs";
7
+ import {
8
+ asJson,
9
+ json
10
+ } from "./chunk-KPEGHJSZ.mjs";
7
11
  import {
8
12
  isPageList,
9
13
  toPageList
10
14
  } from "./chunk-CRSP7OQT.mjs";
11
- import {
12
- asJson,
13
- json
14
- } from "./chunk-VCOKOQFW.mjs";
15
15
  import {
16
16
  choose
17
17
  } from "./chunk-2KZ5UP6A.mjs";
@@ -35,6 +35,7 @@ import {
35
35
  // src/utils/View.ts
36
36
  var ignore = Symbol("view.ignore");
37
37
  var keep = Symbol("view.keep");
38
+ var spread = "view.spread";
38
39
  var toViewer = (key, value) => choose(value).is.not.defined((v) => v, { key, f: () => void 0 }).type(isBoolean, (b) => ({ key, f: () => b })).equals(ignore, { key, f: () => void 0 }).equals(keep, { key, f: (a) => traverse(a, key) }).type(isString, (s) => ({ key, f: (a) => traverse(a, s) })).type(isConstructor, (c) => ({
39
40
  key,
40
41
  f: (a, key2) => use(traverse(a, key2), (v) => isArray(v) ? v.map((i) => optional(c, i)) : optional(c, v))
@@ -65,13 +66,20 @@ var View = class _View {
65
66
  return this.reduce(source);
66
67
  }
67
68
  same = (one, another) => isEqual(this.from(one), this.from(another));
68
- reduce = (source) => use(asJson(source), (src) => this.viewers.reduce((acc, v) => json.set(acc, v.key, v.f(src, v.key)), this.startsFrom === "scratch" ? {} : src));
69
+ reduce = (source) => use(
70
+ asJson(source),
71
+ (src) => this.viewers.reduce(
72
+ (acc, v) => v.key === spread ? { ...acc, ...asJson(v.f(src, v.key)) } : json.set(acc, v.key, v.f(src, v.key)),
73
+ this.startsFrom === "scratch" ? {} : src
74
+ )
75
+ );
69
76
  };
70
77
  var isSimpleView = (a) => a instanceof View;
71
78
  var view = (views2) => new View(views2);
72
79
  var views = {
73
80
  ignore,
74
81
  keep,
82
+ spread,
75
83
  skip: ignore,
76
84
  value: (value) => () => value,
77
85
  or: {
@@ -88,4 +96,4 @@ export {
88
96
  view,
89
97
  views
90
98
  };
91
- //# sourceMappingURL=chunk-6RMQPTKX.mjs.map
99
+ //# sourceMappingURL=chunk-RAXNEFRJ.mjs.map
@@ -0,0 +1 @@
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');\nconst spread = 'view.spread';\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 =>\n this.viewers.reduce(\n (acc, v) => (v.key === spread ? { ...acc, ...asJson(v.f(src, v.key)) } : json.set(acc, v.key, v.f(src, v.key))),\n this.startsFrom === 'scratch' ? {} : src\n )\n );\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 spread,\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":"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","names":["key","views"]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-MDXL65W4.mjs";
4
4
  import {
5
5
  json
6
- } from "./chunk-VCOKOQFW.mjs";
6
+ } from "./chunk-KPEGHJSZ.mjs";
7
7
  import {
8
8
  isDefined
9
9
  } from "./chunk-DEJ7A5PY.mjs";
@@ -50,4 +50,4 @@ export {
50
50
  toCondition,
51
51
  isSortCondition
52
52
  };
53
- //# sourceMappingURL=chunk-ODV3IWXD.mjs.map
53
+ //# sourceMappingURL=chunk-SWBW2VJ2.mjs.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  toResponse
3
- } from "./chunk-IMREIDHQ.mjs";
3
+ } from "./chunk-6BSO7J6Y.mjs";
4
4
  import {
5
5
  isRestResult
6
- } from "./chunk-64S6C743.mjs";
6
+ } from "./chunk-5GUH2TWD.mjs";
7
7
  import {
8
8
  HttpStatus
9
9
  } from "./chunk-UGUAZFM4.mjs";
10
10
  import {
11
11
  RequestOptions
12
- } from "./chunk-O75J6WWI.mjs";
12
+ } from "./chunk-MFNNNHRP.mjs";
13
13
  import {
14
14
  cacheAge
15
15
  } from "./chunk-XH6PFRYM.mjs";
@@ -53,4 +53,4 @@ var AxiosProvider = class {
53
53
  export {
54
54
  AxiosProvider
55
55
  };
56
- //# sourceMappingURL=chunk-GWZRZHFR.mjs.map
56
+ //# sourceMappingURL=chunk-UHFA4Y47.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Api
3
- } from "./chunk-ECXNGUIP.mjs";
3
+ } from "./chunk-FVP5TUK4.mjs";
4
4
  import {
5
5
  Gateway
6
6
  } from "./chunk-CSKOVGAP.mjs";
@@ -43,4 +43,4 @@ var ApiGateway = class extends Gateway {
43
43
  export {
44
44
  ApiGateway
45
45
  };
46
- //# sourceMappingURL=chunk-Z56QALMP.mjs.map
46
+ //# sourceMappingURL=chunk-V3LDNX7F.mjs.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-GCY5A63A.mjs";
7
7
  import {
8
8
  json
9
- } from "./chunk-VCOKOQFW.mjs";
9
+ } from "./chunk-KPEGHJSZ.mjs";
10
10
  import {
11
11
  meta
12
12
  } from "./chunk-WTFW6DLP.mjs";
@@ -133,4 +133,4 @@ export {
133
133
  Mapper,
134
134
  mappings
135
135
  };
136
- //# sourceMappingURL=chunk-6I4QZH2B.mjs.map
136
+ //# sourceMappingURL=chunk-X57327XS.mjs.map
@@ -4,9 +4,9 @@ import {
4
4
  SortCondition,
5
5
  isSortCondition,
6
6
  toCondition
7
- } from "../chunk-ODV3IWXD.mjs";
7
+ } from "../chunk-SWBW2VJ2.mjs";
8
8
  import "../chunk-MDXL65W4.mjs";
9
- import "../chunk-VCOKOQFW.mjs";
9
+ import "../chunk-KPEGHJSZ.mjs";
10
10
  import "../chunk-H2762RTS.mjs";
11
11
  import "../chunk-A7C3XND3.mjs";
12
12
  import "../chunk-JSON7A4X.mjs";
@@ -4,9 +4,9 @@ import {
4
4
  import {
5
5
  SortCondition,
6
6
  toCondition
7
- } from "../chunk-ODV3IWXD.mjs";
7
+ } from "../chunk-SWBW2VJ2.mjs";
8
8
  import "../chunk-MDXL65W4.mjs";
9
- import "../chunk-VCOKOQFW.mjs";
9
+ import "../chunk-KPEGHJSZ.mjs";
10
10
  import "../chunk-H2762RTS.mjs";
11
11
  import "../chunk-A7C3XND3.mjs";
12
12
  import "../chunk-JSON7A4X.mjs";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Audit
3
- } from "../chunk-ZOT3U45L.mjs";
3
+ } from "../chunk-5S26U4SJ.mjs";
4
4
  import "../chunk-RBQOVMPC.mjs";
5
+ import "../chunk-BYCWXUYD.mjs";
5
6
  import "../chunk-UR544PJT.mjs";
6
7
  import "../chunk-JQQGQCYH.mjs";
7
8
  import "../chunk-ADJAEGCT.mjs";
8
- import "../chunk-UZHMXDAO.mjs";
9
- import "../chunk-VCOKOQFW.mjs";
9
+ import "../chunk-KPEGHJSZ.mjs";
10
10
  import "../chunk-2KZ5UP6A.mjs";
11
11
  import "../chunk-OFGI5FLG.mjs";
12
12
  import "../chunk-NCEWAKOZ.mjs";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  toId
3
3
  } from "../chunk-5YM5CLOG.mjs";
4
- import "../chunk-LXQQ5N6S.mjs";
5
4
  import {
6
5
  required
7
6
  } from "../chunk-RBQOVMPC.mjs";
8
- import "../chunk-ADJAEGCT.mjs";
9
7
  import {
10
8
  Struct
11
- } from "../chunk-UZHMXDAO.mjs";
9
+ } from "../chunk-BYCWXUYD.mjs";
10
+ import "../chunk-ADJAEGCT.mjs";
11
+ import "../chunk-LXQQ5N6S.mjs";
12
12
  import {
13
13
  json
14
- } from "../chunk-VCOKOQFW.mjs";
14
+ } from "../chunk-KPEGHJSZ.mjs";
15
15
  import "../chunk-2KZ5UP6A.mjs";
16
16
  import "../chunk-OFGI5FLG.mjs";
17
17
  import "../chunk-NCEWAKOZ.mjs";
@@ -1,22 +1,22 @@
1
+ import {
2
+ Audit
3
+ } from "../chunk-5S26U4SJ.mjs";
1
4
  import {
2
5
  toId
3
6
  } from "../chunk-5YM5CLOG.mjs";
4
- import "../chunk-LXQQ5N6S.mjs";
5
- import {
6
- Audit
7
- } from "../chunk-ZOT3U45L.mjs";
8
7
  import {
9
8
  required
10
9
  } from "../chunk-RBQOVMPC.mjs";
10
+ import {
11
+ Struct
12
+ } from "../chunk-BYCWXUYD.mjs";
11
13
  import "../chunk-UR544PJT.mjs";
12
14
  import "../chunk-JQQGQCYH.mjs";
13
15
  import "../chunk-ADJAEGCT.mjs";
14
- import {
15
- Struct
16
- } from "../chunk-UZHMXDAO.mjs";
16
+ import "../chunk-LXQQ5N6S.mjs";
17
17
  import {
18
18
  json
19
- } from "../chunk-VCOKOQFW.mjs";
19
+ } from "../chunk-KPEGHJSZ.mjs";
20
20
  import "../chunk-2KZ5UP6A.mjs";
21
21
  import "../chunk-OFGI5FLG.mjs";
22
22
  import "../chunk-NCEWAKOZ.mjs";
@@ -3,7 +3,7 @@ import {
3
3
  } from "../chunk-ROTFIQND.mjs";
4
4
  import {
5
5
  toJson
6
- } from "../chunk-VCOKOQFW.mjs";
6
+ } from "../chunk-KPEGHJSZ.mjs";
7
7
  import {
8
8
  when
9
9
  } from "../chunk-2KZ5UP6A.mjs";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Struct,
3
3
  isStruct
4
- } from "../chunk-UZHMXDAO.mjs";
5
- import "../chunk-VCOKOQFW.mjs";
4
+ } from "../chunk-BYCWXUYD.mjs";
5
+ import "../chunk-KPEGHJSZ.mjs";
6
6
  import "../chunk-2KZ5UP6A.mjs";
7
7
  import "../chunk-OFGI5FLG.mjs";
8
8
  import "../chunk-NCEWAKOZ.mjs";
@@ -2,10 +2,10 @@ import {
2
2
  RequestOptions,
3
3
  isRequestOptions,
4
4
  toPageOptions
5
- } from "../chunk-O75J6WWI.mjs";
6
- import "../chunk-SW2OCUH3.mjs";
5
+ } from "../chunk-MFNNNHRP.mjs";
7
6
  import "../chunk-LXQQ5N6S.mjs";
8
7
  import "../chunk-RDLH6MXX.mjs";
8
+ import "../chunk-SW2OCUH3.mjs";
9
9
  import "../chunk-NDCIZJXB.mjs";
10
10
  import "../chunk-MCCIBDEH.mjs";
11
11
  import "../chunk-JVDKV5HE.mjs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  isRestResult,
3
3
  rest
4
- } from "../chunk-64S6C743.mjs";
5
- import "../chunk-UGUAZFM4.mjs";
4
+ } from "../chunk-5GUH2TWD.mjs";
6
5
  import "../chunk-UYDZZAEK.mjs";
6
+ import "../chunk-UGUAZFM4.mjs";
7
7
  import "../chunk-2KZ5UP6A.mjs";
8
8
  import "../chunk-OFGI5FLG.mjs";
9
9
  import "../chunk-NCEWAKOZ.mjs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  toResponse
3
- } from "../chunk-IMREIDHQ.mjs";
4
- import "../chunk-64S6C743.mjs";
5
- import "../chunk-UGUAZFM4.mjs";
3
+ } from "../chunk-6BSO7J6Y.mjs";
4
+ import "../chunk-5GUH2TWD.mjs";
6
5
  import "../chunk-UYDZZAEK.mjs";
6
+ import "../chunk-UGUAZFM4.mjs";
7
7
  import "../chunk-2KZ5UP6A.mjs";
8
8
  import "../chunk-OFGI5FLG.mjs";
9
9
  import "../chunk-NCEWAKOZ.mjs";
package/dist/index.js CHANGED
@@ -242,6 +242,7 @@ __export(src_exports, {
242
242
  settled: () => settled,
243
243
  singleton: () => singleton,
244
244
  tag: () => tag,
245
+ takeFirstKey: () => takeFirstKey,
245
246
  template: () => template,
246
247
  text: () => text,
247
248
  textValue: () => textValue,
@@ -674,6 +675,7 @@ var Any = class {
674
675
  return this.value;
675
676
  }
676
677
  };
678
+ var takeFirstKey = (j, alt = "") => entries(asJson(j)).first()?.[0] ?? alt;
677
679
  var any = (value) => new Any(value);
678
680
 
679
681
  // src/utils/Convert.ts
@@ -2802,6 +2804,7 @@ var isEqual = (one, another) => choose([one, another]).case(([o, a]) => o === a,
2802
2804
  // src/utils/View.ts
2803
2805
  var ignore = Symbol("view.ignore");
2804
2806
  var keep = Symbol("view.keep");
2807
+ var spread = "view.spread";
2805
2808
  var toViewer = (key, value) => choose(value).is.not.defined((v) => v, { key, f: () => void 0 }).type(isBoolean, (b) => ({ key, f: () => b })).equals(ignore, { key, f: () => void 0 }).equals(keep, { key, f: (a) => traverse(a, key) }).type(isString, (s) => ({ key, f: (a) => traverse(a, s) })).type(isConstructor, (c) => ({
2806
2809
  key,
2807
2810
  f: (a, key2) => use(traverse(a, key2), (v) => isArray(v) ? v.map((i) => optional2(c, i)) : optional2(c, v))
@@ -2832,13 +2835,20 @@ var View = class _View {
2832
2835
  return this.reduce(source);
2833
2836
  }
2834
2837
  same = (one, another) => isEqual(this.from(one), this.from(another));
2835
- reduce = (source) => use(asJson(source), (src) => this.viewers.reduce((acc, v) => json.set(acc, v.key, v.f(src, v.key)), this.startsFrom === "scratch" ? {} : src));
2838
+ reduce = (source) => use(
2839
+ asJson(source),
2840
+ (src) => this.viewers.reduce(
2841
+ (acc, v) => v.key === spread ? { ...acc, ...asJson(v.f(src, v.key)) } : json.set(acc, v.key, v.f(src, v.key)),
2842
+ this.startsFrom === "scratch" ? {} : src
2843
+ )
2844
+ );
2836
2845
  };
2837
2846
  var isSimpleView = (a) => a instanceof View;
2838
2847
  var view = (views2) => new View(views2);
2839
2848
  var views = {
2840
2849
  ignore,
2841
2850
  keep,
2851
+ spread,
2842
2852
  skip: ignore,
2843
2853
  value: (value) => () => value,
2844
2854
  or: {
@@ -3581,6 +3591,7 @@ var wait = (millis) => Wait.wait(millis);
3581
3591
  settled,
3582
3592
  singleton,
3583
3593
  tag,
3594
+ takeFirstKey,
3584
3595
  template,
3585
3596
  text,
3586
3597
  textValue,