@thisisagile/easy 17.23.1 → 17.24.1

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 (224) hide show
  1. package/dist/{chunk-VKBEWDLL.mjs → chunk-2BOK6R6N.mjs} +4 -4
  2. package/dist/chunk-2BOK6R6N.mjs.map +1 -0
  3. package/dist/{chunk-HAEVUETQ.mjs → chunk-2C5WHSM5.mjs} +2 -2
  4. package/dist/{chunk-UWA2JPXC.mjs → chunk-4WLPMNMB.mjs} +9 -9
  5. package/dist/{chunk-DUMDOMES.mjs → chunk-6ATDEGSU.mjs} +3 -3
  6. package/dist/{chunk-P4MEAARF.mjs → chunk-6ENYJKOF.mjs} +42 -35
  7. package/dist/chunk-6ENYJKOF.mjs.map +1 -0
  8. package/dist/{chunk-MBY7DP5K.mjs → chunk-6RSOVRW4.mjs} +4 -4
  9. package/dist/{chunk-MBFLUJ5X.mjs → chunk-73VXBPTL.mjs} +11 -11
  10. package/dist/{chunk-CHV6RMJL.mjs → chunk-7OEH5Q3V.mjs} +2 -2
  11. package/dist/{chunk-SHTZ4ZZ2.mjs → chunk-AWT4XDU7.mjs} +4 -4
  12. package/dist/{chunk-QL3DRPMM.mjs → chunk-BDKRR6H2.mjs} +2 -2
  13. package/dist/{chunk-VI57VONC.mjs → chunk-CHLVZFAR.mjs} +2 -2
  14. package/dist/{chunk-RTVVXROA.mjs → chunk-CMMMDBTK.mjs} +3 -3
  15. package/dist/{chunk-WUHEP5NJ.mjs → chunk-D4EFIKFU.mjs} +4 -4
  16. package/dist/chunk-D4EFIKFU.mjs.map +1 -0
  17. package/dist/{chunk-3ZX4YFOK.mjs → chunk-EOIG654K.mjs} +4 -4
  18. package/dist/{chunk-LMVFKEDS.mjs → chunk-F2SLQDR2.mjs} +2 -2
  19. package/dist/{chunk-5UUY67VD.mjs → chunk-F7MQZLCR.mjs} +3 -3
  20. package/dist/{chunk-3LWQJAEJ.mjs → chunk-FLJXHLSM.mjs} +3 -3
  21. package/dist/{chunk-7WCAHERW.mjs → chunk-GA7BBYC2.mjs} +3 -3
  22. package/dist/{chunk-UGTCVMQQ.mjs → chunk-GSAKK3JN.mjs} +3 -3
  23. package/dist/{chunk-A42HFDBS.mjs → chunk-HFBHENMJ.mjs} +3 -3
  24. package/dist/{chunk-A42HFDBS.mjs.map → chunk-HFBHENMJ.mjs.map} +1 -1
  25. package/dist/{chunk-Q7FJUYZT.mjs → chunk-HO3IEF5S.mjs} +14 -3
  26. package/dist/chunk-HO3IEF5S.mjs.map +1 -0
  27. package/dist/{chunk-J7FACY7Y.mjs → chunk-I4HFLLRR.mjs} +3 -3
  28. package/dist/{chunk-YAB5YLHI.mjs → chunk-J5AZL5T6.mjs} +2 -2
  29. package/dist/{chunk-F4JCURDN.mjs → chunk-JABPZGOG.mjs} +2 -2
  30. package/dist/{chunk-4BH22HLY.mjs → chunk-JJQAGAQN.mjs} +3 -3
  31. package/dist/{chunk-5UXTE3WM.mjs → chunk-KBB2WGTO.mjs} +2 -2
  32. package/dist/{chunk-MTDHDEDS.mjs → chunk-LCG5GI24.mjs} +6 -6
  33. package/dist/{chunk-QH2LF3L3.mjs → chunk-LIDMZELG.mjs} +3 -3
  34. package/dist/{chunk-KBR62ITL.mjs → chunk-N5B6HSHV.mjs} +4 -4
  35. package/dist/{chunk-XWRQODZZ.mjs → chunk-NUA7EUWX.mjs} +6 -6
  36. package/dist/{chunk-DAG7KGVL.mjs → chunk-O4CJ7NSN.mjs} +2 -2
  37. package/dist/{chunk-TG7T4QPS.mjs → chunk-ONWMWJ43.mjs} +2 -2
  38. package/dist/chunk-ONWMWJ43.mjs.map +1 -0
  39. package/dist/{chunk-HL7ITJJT.mjs → chunk-OVORFG3O.mjs} +2 -2
  40. package/dist/{chunk-4WIL3EXY.mjs → chunk-PB6SCADS.mjs} +4 -4
  41. package/dist/{chunk-RGO5KVRQ.mjs → chunk-QNE24TSJ.mjs} +2 -2
  42. package/dist/{chunk-BI3DP4QA.mjs → chunk-S2VNBE5K.mjs} +3 -3
  43. package/dist/{chunk-7W67IZE4.mjs → chunk-ST3P6VWM.mjs} +2 -2
  44. package/dist/{chunk-AMIP3FS5.mjs → chunk-TLYJ2G3X.mjs} +9 -3
  45. package/dist/chunk-TLYJ2G3X.mjs.map +1 -0
  46. package/dist/{chunk-SDGUXNY3.mjs → chunk-TMAB63X5.mjs} +2 -2
  47. package/dist/{chunk-BE474ULY.mjs → chunk-UCNB24EO.mjs} +2 -2
  48. package/dist/{chunk-YODYDO2U.mjs → chunk-W53U3D4O.mjs} +2 -2
  49. package/dist/{chunk-UHP56ITH.mjs → chunk-WBL4BT3I.mjs} +2 -2
  50. package/dist/{chunk-4K6SPD7T.mjs → chunk-WDC45I5H.mjs} +4 -4
  51. package/dist/{chunk-KWE3VWIW.mjs → chunk-Y5NBOPDI.mjs} +5 -5
  52. package/dist/chunk-Y5NBOPDI.mjs.map +1 -0
  53. package/dist/{chunk-OWZ5I5IV.mjs → chunk-YYIIQGLL.mjs} +13 -10
  54. package/dist/chunk-YYIIQGLL.mjs.map +1 -0
  55. package/dist/{chunk-I32HDHLS.mjs → chunk-ZNUHRHPU.mjs} +2 -2
  56. package/dist/data/Condition.mjs +5 -4
  57. package/dist/data/Database.mjs +6 -5
  58. package/dist/data/Field.mjs +5 -4
  59. package/dist/data/Field.mjs.map +1 -1
  60. package/dist/data/InMemoryGateway.mjs +14 -13
  61. package/dist/data/InMemoryGateway.mjs.map +1 -1
  62. package/dist/domain/Audit.mjs +18 -17
  63. package/dist/domain/Child.mjs +15 -14
  64. package/dist/domain/Child.mjs.map +1 -1
  65. package/dist/domain/DateTime.d.ts +1 -2
  66. package/dist/domain/DateTime.mjs +14 -13
  67. package/dist/domain/Entity.mjs +18 -17
  68. package/dist/domain/Entity.mjs.map +1 -1
  69. package/dist/domain/Repo.mjs +14 -13
  70. package/dist/domain/Repo.mjs.map +1 -1
  71. package/dist/domain/Struct.mjs +14 -13
  72. package/dist/domain/Typo.mjs +14 -13
  73. package/dist/domain/Typo.mjs.map +1 -1
  74. package/dist/http/CacheControl.mjs +14 -13
  75. package/dist/http/CacheControl.mjs.map +1 -1
  76. package/dist/http/ContentType.mjs +6 -5
  77. package/dist/http/HttpStatus.mjs +6 -5
  78. package/dist/http/HttpVerb.mjs +6 -5
  79. package/dist/http/LocalRequestStore.mjs +5 -4
  80. package/dist/http/LocalRequestStore.mjs.map +1 -1
  81. package/dist/http/RequestOptions.mjs +9 -8
  82. package/dist/http/RestResult.mjs +14 -13
  83. package/dist/http/toResponse.mjs +15 -14
  84. package/dist/index.d.ts +1 -0
  85. package/dist/index.js +48 -31
  86. package/dist/index.js.map +1 -1
  87. package/dist/index.mjs +1 -0
  88. package/dist/index.mjs.map +1 -1
  89. package/dist/process/App.mjs +7 -6
  90. package/dist/process/App.mjs.map +1 -1
  91. package/dist/process/Manage.mjs +14 -13
  92. package/dist/process/Manage.mjs.map +1 -1
  93. package/dist/process/Scope.mjs +7 -6
  94. package/dist/process/Search.mjs +14 -13
  95. package/dist/process/UseCase.d.ts +1 -1
  96. package/dist/process/UseCase.mjs +9 -8
  97. package/dist/process/UseCase.mjs.map +1 -1
  98. package/dist/resources/Req.mjs +13 -12
  99. package/dist/resources/Req.mjs.map +1 -1
  100. package/dist/services/Api.mjs +22 -21
  101. package/dist/services/ApiGateway.mjs +25 -24
  102. package/dist/services/AxiosProvider.mjs +20 -19
  103. package/dist/services/MappedRouteGateway.mjs +28 -27
  104. package/dist/services/MappedRouteGateway.mjs.map +1 -1
  105. package/dist/services/RouteGateway.mjs +26 -25
  106. package/dist/services/ViewRouteGateway.mjs +29 -29
  107. package/dist/sql/Column.mjs +13 -12
  108. package/dist/sql/Count.mjs +5 -4
  109. package/dist/sql/Delete.mjs +4 -3
  110. package/dist/sql/Insert.mjs +4 -3
  111. package/dist/sql/Select.mjs +4 -3
  112. package/dist/sql/SqlQuery.mjs +3 -2
  113. package/dist/sql/Table.mjs +22 -21
  114. package/dist/sql/Table.mjs.map +1 -1
  115. package/dist/sql/TableGateway.mjs +14 -13
  116. package/dist/sql/TableGateway.mjs.map +1 -1
  117. package/dist/sql/Update.mjs +4 -3
  118. package/dist/types/AnyKey.d.ts +2 -2
  119. package/dist/types/Cache.mjs +4 -3
  120. package/dist/types/Cache.mjs.map +1 -1
  121. package/dist/types/CacheAge.mjs +14 -13
  122. package/dist/types/Case.mjs +12 -11
  123. package/dist/types/Context.d.ts +1 -1
  124. package/dist/types/Context.mjs +5 -4
  125. package/dist/types/Enum.mjs +5 -4
  126. package/dist/types/Environment.mjs +5 -4
  127. package/dist/types/Environment.mjs.map +1 -1
  128. package/dist/types/Exception.mjs +7 -6
  129. package/dist/types/Gateway.mjs +9 -8
  130. package/dist/types/IsEqual.mjs +13 -12
  131. package/dist/types/Json.mjs +4 -3
  132. package/dist/types/List.d.ts +12 -9
  133. package/dist/types/List.mjs +2 -1
  134. package/dist/types/Meta.mjs +4 -3
  135. package/dist/types/Number.mjs +13 -12
  136. package/dist/types/Object.mjs +3 -2
  137. package/dist/types/PageList.mjs +13 -12
  138. package/dist/types/Parser.mjs +12 -11
  139. package/dist/types/Parser.mjs.map +1 -1
  140. package/dist/types/Repository.mjs +9 -8
  141. package/dist/types/Result.mjs +6 -5
  142. package/dist/types/Results.mjs +7 -6
  143. package/dist/types/Tag.mjs +4 -3
  144. package/dist/types/Tag.mjs.map +1 -1
  145. package/dist/types/Template.d.ts +0 -43
  146. package/dist/types/Template.mjs +6 -11
  147. package/dist/types/ToText.d.ts +45 -0
  148. package/dist/types/ToText.mjs +23 -0
  149. package/dist/types/ToText.mjs.map +1 -0
  150. package/dist/types/Try.mjs +12 -11
  151. package/dist/types/Uri.mjs +12 -11
  152. package/dist/types/Uri.mjs.map +1 -1
  153. package/dist/utils/If.mjs +2 -1
  154. package/dist/utils/Mapper.mjs +6 -5
  155. package/dist/utils/Promise.d.ts +2 -0
  156. package/dist/utils/Promise.mjs +8 -4
  157. package/dist/utils/Seconds.mjs +3 -2
  158. package/dist/utils/Sentence.mjs +4 -3
  159. package/dist/utils/Sentence.mjs.map +1 -1
  160. package/dist/utils/View.mjs +16 -16
  161. package/dist/validation/Contraints.mjs +13 -12
  162. package/dist/validation/Validate.mjs +12 -11
  163. package/dist/validation/When.mjs +12 -11
  164. package/package.json +1 -1
  165. package/src/domain/DateTime.ts +1 -1
  166. package/src/index.ts +1 -1
  167. package/src/process/Scope.ts +1 -1
  168. package/src/process/UseCase.ts +5 -5
  169. package/src/types/AnyKey.ts +10 -2
  170. package/src/types/Context.ts +6 -2
  171. package/src/types/Exception.ts +2 -1
  172. package/src/types/List.ts +17 -11
  173. package/src/types/Template.ts +2 -152
  174. package/src/types/ToText.ts +167 -0
  175. package/src/types/Uri.ts +1 -1
  176. package/src/utils/Promise.ts +5 -0
  177. package/src/utils/Sentence.ts +1 -1
  178. package/src/validation/Contraints.ts +1 -1
  179. package/src/validation/Validate.ts +10 -3
  180. package/dist/chunk-AMIP3FS5.mjs.map +0 -1
  181. package/dist/chunk-KWE3VWIW.mjs.map +0 -1
  182. package/dist/chunk-OWZ5I5IV.mjs.map +0 -1
  183. package/dist/chunk-P4MEAARF.mjs.map +0 -1
  184. package/dist/chunk-Q7FJUYZT.mjs.map +0 -1
  185. package/dist/chunk-TG7T4QPS.mjs.map +0 -1
  186. package/dist/chunk-VKBEWDLL.mjs.map +0 -1
  187. package/dist/chunk-WUHEP5NJ.mjs.map +0 -1
  188. /package/dist/{chunk-HAEVUETQ.mjs.map → chunk-2C5WHSM5.mjs.map} +0 -0
  189. /package/dist/{chunk-UWA2JPXC.mjs.map → chunk-4WLPMNMB.mjs.map} +0 -0
  190. /package/dist/{chunk-DUMDOMES.mjs.map → chunk-6ATDEGSU.mjs.map} +0 -0
  191. /package/dist/{chunk-MBY7DP5K.mjs.map → chunk-6RSOVRW4.mjs.map} +0 -0
  192. /package/dist/{chunk-MBFLUJ5X.mjs.map → chunk-73VXBPTL.mjs.map} +0 -0
  193. /package/dist/{chunk-CHV6RMJL.mjs.map → chunk-7OEH5Q3V.mjs.map} +0 -0
  194. /package/dist/{chunk-SHTZ4ZZ2.mjs.map → chunk-AWT4XDU7.mjs.map} +0 -0
  195. /package/dist/{chunk-QL3DRPMM.mjs.map → chunk-BDKRR6H2.mjs.map} +0 -0
  196. /package/dist/{chunk-VI57VONC.mjs.map → chunk-CHLVZFAR.mjs.map} +0 -0
  197. /package/dist/{chunk-RTVVXROA.mjs.map → chunk-CMMMDBTK.mjs.map} +0 -0
  198. /package/dist/{chunk-3ZX4YFOK.mjs.map → chunk-EOIG654K.mjs.map} +0 -0
  199. /package/dist/{chunk-LMVFKEDS.mjs.map → chunk-F2SLQDR2.mjs.map} +0 -0
  200. /package/dist/{chunk-5UUY67VD.mjs.map → chunk-F7MQZLCR.mjs.map} +0 -0
  201. /package/dist/{chunk-3LWQJAEJ.mjs.map → chunk-FLJXHLSM.mjs.map} +0 -0
  202. /package/dist/{chunk-7WCAHERW.mjs.map → chunk-GA7BBYC2.mjs.map} +0 -0
  203. /package/dist/{chunk-UGTCVMQQ.mjs.map → chunk-GSAKK3JN.mjs.map} +0 -0
  204. /package/dist/{chunk-J7FACY7Y.mjs.map → chunk-I4HFLLRR.mjs.map} +0 -0
  205. /package/dist/{chunk-YAB5YLHI.mjs.map → chunk-J5AZL5T6.mjs.map} +0 -0
  206. /package/dist/{chunk-F4JCURDN.mjs.map → chunk-JABPZGOG.mjs.map} +0 -0
  207. /package/dist/{chunk-4BH22HLY.mjs.map → chunk-JJQAGAQN.mjs.map} +0 -0
  208. /package/dist/{chunk-5UXTE3WM.mjs.map → chunk-KBB2WGTO.mjs.map} +0 -0
  209. /package/dist/{chunk-MTDHDEDS.mjs.map → chunk-LCG5GI24.mjs.map} +0 -0
  210. /package/dist/{chunk-QH2LF3L3.mjs.map → chunk-LIDMZELG.mjs.map} +0 -0
  211. /package/dist/{chunk-KBR62ITL.mjs.map → chunk-N5B6HSHV.mjs.map} +0 -0
  212. /package/dist/{chunk-XWRQODZZ.mjs.map → chunk-NUA7EUWX.mjs.map} +0 -0
  213. /package/dist/{chunk-DAG7KGVL.mjs.map → chunk-O4CJ7NSN.mjs.map} +0 -0
  214. /package/dist/{chunk-HL7ITJJT.mjs.map → chunk-OVORFG3O.mjs.map} +0 -0
  215. /package/dist/{chunk-4WIL3EXY.mjs.map → chunk-PB6SCADS.mjs.map} +0 -0
  216. /package/dist/{chunk-RGO5KVRQ.mjs.map → chunk-QNE24TSJ.mjs.map} +0 -0
  217. /package/dist/{chunk-BI3DP4QA.mjs.map → chunk-S2VNBE5K.mjs.map} +0 -0
  218. /package/dist/{chunk-7W67IZE4.mjs.map → chunk-ST3P6VWM.mjs.map} +0 -0
  219. /package/dist/{chunk-SDGUXNY3.mjs.map → chunk-TMAB63X5.mjs.map} +0 -0
  220. /package/dist/{chunk-BE474ULY.mjs.map → chunk-UCNB24EO.mjs.map} +0 -0
  221. /package/dist/{chunk-YODYDO2U.mjs.map → chunk-W53U3D4O.mjs.map} +0 -0
  222. /package/dist/{chunk-UHP56ITH.mjs.map → chunk-WBL4BT3I.mjs.map} +0 -0
  223. /package/dist/{chunk-4K6SPD7T.mjs.map → chunk-WDC45I5H.mjs.map} +0 -0
  224. /package/dist/{chunk-I32HDHLS.mjs.map → chunk-ZNUHRHPU.mjs.map} +0 -0
@@ -1,25 +1,26 @@
1
1
  import {
2
2
  cacheAge,
3
3
  isCacheAge
4
- } from "../chunk-5UUY67VD.mjs";
5
- import "../chunk-YODYDO2U.mjs";
6
- import "../chunk-OWZ5I5IV.mjs";
4
+ } from "../chunk-F7MQZLCR.mjs";
5
+ import "../chunk-W53U3D4O.mjs";
6
+ import "../chunk-YYIIQGLL.mjs";
7
7
  import "../chunk-OFGI5FLG.mjs";
8
- import "../chunk-7W67IZE4.mjs";
9
- import "../chunk-HL7ITJJT.mjs";
10
- import "../chunk-Q7FJUYZT.mjs";
11
- import "../chunk-A42HFDBS.mjs";
8
+ import "../chunk-ST3P6VWM.mjs";
9
+ import "../chunk-OVORFG3O.mjs";
10
+ import "../chunk-HO3IEF5S.mjs";
11
+ import "../chunk-HFBHENMJ.mjs";
12
12
  import "../chunk-WSBULPUZ.mjs";
13
- import "../chunk-TG7T4QPS.mjs";
14
- import "../chunk-P4MEAARF.mjs";
15
- import "../chunk-3LWQJAEJ.mjs";
16
- import "../chunk-QH2LF3L3.mjs";
13
+ import "../chunk-ONWMWJ43.mjs";
14
+ import "../chunk-6ENYJKOF.mjs";
15
+ import "../chunk-FLJXHLSM.mjs";
16
+ import "../chunk-LIDMZELG.mjs";
17
17
  import {
18
18
  entries
19
- } from "../chunk-5UXTE3WM.mjs";
19
+ } from "../chunk-KBB2WGTO.mjs";
20
20
  import {
21
21
  ifDefined
22
- } from "../chunk-AMIP3FS5.mjs";
22
+ } from "../chunk-TLYJ2G3X.mjs";
23
+ import "../chunk-SSROJBD5.mjs";
23
24
  import "../chunk-CO2AFYVD.mjs";
24
25
  import "../chunk-BDA5LB4S.mjs";
25
26
  import "../chunk-SJGQU3OG.mjs";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/http/CacheControl.ts"],"sourcesContent":["import { cacheAge, CacheAge, isCacheAge } from '../types/CacheAge';\nimport { on } from '../types/Constructor';\nimport { entries } from '../types/Object';\nimport { ifDefined } from '../utils/If';\n\nexport class CacheControl {\n name = 'Cache-Control';\n\n protected constructor(\n readonly enabled = true,\n private directives: Record<string, boolean | CacheAge | undefined> = {}\n ) {}\n\n static disabled = () => new CacheControl(false);\n\n static OneSecond = () => new CacheControl().maxAge(1).staleWhileRevalidate(1);\n\n static fiveSeconds = () => new CacheControl().maxAge(5).staleWhileRevalidate(5);\n\n static tenSeconds = () => new CacheControl().maxAge(10).staleWhileRevalidate(10);\n\n static thirtySeconds = () => new CacheControl().maxAge(30).staleWhileRevalidate(30);\n\n static sixtySeconds = () => new CacheControl().maxAge(60).staleWhileRevalidate(60);\n\n static custom = (maxAge?: CacheAge, staleWhileRevalidate?: CacheAge) => new CacheControl().maxAge(maxAge).staleWhileRevalidate(staleWhileRevalidate);\n\n readonly maxAge = (ca?: CacheAge): this => on(this, t => (t.directives['max-age'] = ca));\n\n readonly sharedMaxAge = (ca?: CacheAge): this => on(this, t => (t.directives['s-maxage'] = ca));\n\n readonly noCache = (a?: boolean): this => on(this, t => (t.directives['no-cache'] = a));\n\n readonly mustRevalidate = (a?: boolean): this => on(this, t => (t.directives['must-revalidate'] = a));\n\n readonly private = (a?: boolean): this => on(this, t => (t.directives['private'] = a));\n\n readonly public = (a?: boolean): this => on(this, t => (t.directives['public'] = a));\n\n readonly immutable = (a?: boolean): this => on(this, t => (t.directives['immutable'] = a));\n\n readonly staleWhileRevalidate = (ca?: CacheAge): this => on(this, t => (t.directives['stale-while-revalidate'] = ca));\n\n value = (): string => this.toString();\n\n toString(): string {\n return entries(this.directives)\n .mapDefined(([k, v]) => ifDefined(v, isCacheAge(v) ? `${k}=${cacheAge.toSeconds(v)}` : k))\n .join(',');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAM,eAAN,MAAM,cAAa;AAAA,EAGd,YACC,UAAU,MACX,aAA6D,CAAC,GACtE;AAFS;AACD;AAAA,EACP;AAAA,EALH,OAAO;AAAA,EAOP,OAAO,WAAW,MAAM,IAAI,cAAa,KAAK;AAAA,EAE9C,OAAO,YAAY,MAAM,IAAI,cAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC;AAAA,EAE5E,OAAO,cAAc,MAAM,IAAI,cAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC;AAAA,EAE9E,OAAO,aAAa,MAAM,IAAI,cAAa,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE;AAAA,EAE/E,OAAO,gBAAgB,MAAM,IAAI,cAAa,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE;AAAA,EAElF,OAAO,eAAe,MAAM,IAAI,cAAa,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE;AAAA,EAEjF,OAAO,SAAS,CAAC,QAAmB,yBAAoC,IAAI,cAAa,EAAE,OAAO,MAAM,EAAE,qBAAqB,oBAAoB;AAAA,EAE1I,SAAS,CAAC,OAAwB,GAAG,MAAM,OAAM,EAAE,WAAW,SAAS,IAAI,EAAG;AAAA,EAE9E,eAAe,CAAC,OAAwB,GAAG,MAAM,OAAM,EAAE,WAAW,UAAU,IAAI,EAAG;AAAA,EAErF,UAAU,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,UAAU,IAAI,CAAE;AAAA,EAE7E,iBAAiB,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,iBAAiB,IAAI,CAAE;AAAA,EAE3F,UAAU,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,SAAS,IAAI,CAAE;AAAA,EAE5E,SAAS,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,QAAQ,IAAI,CAAE;AAAA,EAE1E,YAAY,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,WAAW,IAAI,CAAE;AAAA,EAEhF,uBAAuB,CAAC,OAAwB,GAAG,MAAM,OAAM,EAAE,WAAW,wBAAwB,IAAI,EAAG;AAAA,EAEpH,QAAQ,MAAc,KAAK,SAAS;AAAA,EAEpC,WAAmB;AACjB,WAAO,QAAQ,KAAK,UAAU,EAC3B,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,SAAS,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EACxF,KAAK,GAAG;AAAA,EACb;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/http/CacheControl.ts"],"sourcesContent":["import { cacheAge, CacheAge, isCacheAge } from '../types/CacheAge';\nimport { on } from '../types/Constructor';\nimport { entries } from '../types/Object';\nimport { ifDefined } from '../utils/If';\n\nexport class CacheControl {\n name = 'Cache-Control';\n\n protected constructor(\n readonly enabled = true,\n private directives: Record<string, boolean | CacheAge | undefined> = {}\n ) {}\n\n static disabled = () => new CacheControl(false);\n\n static OneSecond = () => new CacheControl().maxAge(1).staleWhileRevalidate(1);\n\n static fiveSeconds = () => new CacheControl().maxAge(5).staleWhileRevalidate(5);\n\n static tenSeconds = () => new CacheControl().maxAge(10).staleWhileRevalidate(10);\n\n static thirtySeconds = () => new CacheControl().maxAge(30).staleWhileRevalidate(30);\n\n static sixtySeconds = () => new CacheControl().maxAge(60).staleWhileRevalidate(60);\n\n static custom = (maxAge?: CacheAge, staleWhileRevalidate?: CacheAge) => new CacheControl().maxAge(maxAge).staleWhileRevalidate(staleWhileRevalidate);\n\n readonly maxAge = (ca?: CacheAge): this => on(this, t => (t.directives['max-age'] = ca));\n\n readonly sharedMaxAge = (ca?: CacheAge): this => on(this, t => (t.directives['s-maxage'] = ca));\n\n readonly noCache = (a?: boolean): this => on(this, t => (t.directives['no-cache'] = a));\n\n readonly mustRevalidate = (a?: boolean): this => on(this, t => (t.directives['must-revalidate'] = a));\n\n readonly private = (a?: boolean): this => on(this, t => (t.directives['private'] = a));\n\n readonly public = (a?: boolean): this => on(this, t => (t.directives['public'] = a));\n\n readonly immutable = (a?: boolean): this => on(this, t => (t.directives['immutable'] = a));\n\n readonly staleWhileRevalidate = (ca?: CacheAge): this => on(this, t => (t.directives['stale-while-revalidate'] = ca));\n\n value = (): string => this.toString();\n\n toString(): string {\n return entries(this.directives)\n .mapDefined(([k, v]) => ifDefined(v, isCacheAge(v) ? `${k}=${cacheAge.toSeconds(v)}` : k))\n .join(',');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAM,eAAN,MAAM,cAAa;AAAA,EAGd,YACC,UAAU,MACX,aAA6D,CAAC,GACtE;AAFS;AACD;AAAA,EACP;AAAA,EALH,OAAO;AAAA,EAOP,OAAO,WAAW,MAAM,IAAI,cAAa,KAAK;AAAA,EAE9C,OAAO,YAAY,MAAM,IAAI,cAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC;AAAA,EAE5E,OAAO,cAAc,MAAM,IAAI,cAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC;AAAA,EAE9E,OAAO,aAAa,MAAM,IAAI,cAAa,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE;AAAA,EAE/E,OAAO,gBAAgB,MAAM,IAAI,cAAa,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE;AAAA,EAElF,OAAO,eAAe,MAAM,IAAI,cAAa,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE;AAAA,EAEjF,OAAO,SAAS,CAAC,QAAmB,yBAAoC,IAAI,cAAa,EAAE,OAAO,MAAM,EAAE,qBAAqB,oBAAoB;AAAA,EAE1I,SAAS,CAAC,OAAwB,GAAG,MAAM,OAAM,EAAE,WAAW,SAAS,IAAI,EAAG;AAAA,EAE9E,eAAe,CAAC,OAAwB,GAAG,MAAM,OAAM,EAAE,WAAW,UAAU,IAAI,EAAG;AAAA,EAErF,UAAU,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,UAAU,IAAI,CAAE;AAAA,EAE7E,iBAAiB,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,iBAAiB,IAAI,CAAE;AAAA,EAE3F,UAAU,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,SAAS,IAAI,CAAE;AAAA,EAE5E,SAAS,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,QAAQ,IAAI,CAAE;AAAA,EAE1E,YAAY,CAAC,MAAsB,GAAG,MAAM,OAAM,EAAE,WAAW,WAAW,IAAI,CAAE;AAAA,EAEhF,uBAAuB,CAAC,OAAwB,GAAG,MAAM,OAAM,EAAE,WAAW,wBAAwB,IAAI,EAAG;AAAA,EAEpH,QAAQ,MAAc,KAAK,SAAS;AAAA,EAEpC,WAAmB;AACjB,WAAO,QAAQ,KAAK,UAAU,EAC3B,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,SAAS,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EACxF,KAAK,GAAG;AAAA,EACb;AACF;","names":[]}
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  ContentType
3
- } from "../chunk-RGO5KVRQ.mjs";
4
- import "../chunk-3LWQJAEJ.mjs";
5
- import "../chunk-QH2LF3L3.mjs";
6
- import "../chunk-5UXTE3WM.mjs";
7
- import "../chunk-AMIP3FS5.mjs";
3
+ } from "../chunk-QNE24TSJ.mjs";
4
+ import "../chunk-FLJXHLSM.mjs";
5
+ import "../chunk-LIDMZELG.mjs";
6
+ import "../chunk-KBB2WGTO.mjs";
7
+ import "../chunk-TLYJ2G3X.mjs";
8
+ import "../chunk-SSROJBD5.mjs";
8
9
  import "../chunk-CO2AFYVD.mjs";
9
10
  import "../chunk-BDA5LB4S.mjs";
10
11
  import "../chunk-SJGQU3OG.mjs";
@@ -2,11 +2,12 @@ import {
2
2
  HttpStatus,
3
3
  isHttpStatus,
4
4
  toHttpStatus
5
- } from "../chunk-CHV6RMJL.mjs";
6
- import "../chunk-3LWQJAEJ.mjs";
7
- import "../chunk-QH2LF3L3.mjs";
8
- import "../chunk-5UXTE3WM.mjs";
9
- import "../chunk-AMIP3FS5.mjs";
5
+ } from "../chunk-7OEH5Q3V.mjs";
6
+ import "../chunk-FLJXHLSM.mjs";
7
+ import "../chunk-LIDMZELG.mjs";
8
+ import "../chunk-KBB2WGTO.mjs";
9
+ import "../chunk-TLYJ2G3X.mjs";
10
+ import "../chunk-SSROJBD5.mjs";
10
11
  import "../chunk-CO2AFYVD.mjs";
11
12
  import "../chunk-BDA5LB4S.mjs";
12
13
  import "../chunk-SJGQU3OG.mjs";
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  HttpVerb
3
- } from "../chunk-LMVFKEDS.mjs";
4
- import "../chunk-3LWQJAEJ.mjs";
5
- import "../chunk-QH2LF3L3.mjs";
6
- import "../chunk-5UXTE3WM.mjs";
7
- import "../chunk-AMIP3FS5.mjs";
3
+ } from "../chunk-F2SLQDR2.mjs";
4
+ import "../chunk-FLJXHLSM.mjs";
5
+ import "../chunk-LIDMZELG.mjs";
6
+ import "../chunk-KBB2WGTO.mjs";
7
+ import "../chunk-TLYJ2G3X.mjs";
8
+ import "../chunk-SSROJBD5.mjs";
8
9
  import "../chunk-CO2AFYVD.mjs";
9
10
  import "../chunk-BDA5LB4S.mjs";
10
11
  import "../chunk-SJGQU3OG.mjs";
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  ctx
3
- } from "../chunk-TG7T4QPS.mjs";
4
- import "../chunk-P4MEAARF.mjs";
5
- import "../chunk-5UXTE3WM.mjs";
6
- import "../chunk-AMIP3FS5.mjs";
3
+ } from "../chunk-ONWMWJ43.mjs";
4
+ import "../chunk-6ENYJKOF.mjs";
5
+ import "../chunk-KBB2WGTO.mjs";
6
+ import "../chunk-TLYJ2G3X.mjs";
7
+ import "../chunk-SSROJBD5.mjs";
7
8
  import "../chunk-CO2AFYVD.mjs";
8
9
  import "../chunk-BDA5LB4S.mjs";
9
10
  import "../chunk-SJGQU3OG.mjs";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/http/LocalRequestStore.ts"],"sourcesContent":["import { Response } from './Response';\nimport { Request } from './Request';\nimport { Store } from '../types/Cache';\nimport { Func } from '../types/Func';\nimport { ctx } from '../types/Context';\n\nexport class LocalRequestStore implements Store<Response, Request> {\n key = (_req: Request): string => '';\n\n execute(req: Request, f: Func<Promise<Response>, Request>): Promise<Response> {\n const key = this.key(req);\n return ctx.request.get(key) ?? ctx.request.set(key, f(req));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAMO,IAAM,oBAAN,MAA4D;AAAA,EACjE,MAAM,CAAC,SAA0B;AAAA,EAEjC,QAAQ,KAAc,GAAwD;AAC5E,UAAM,MAAM,KAAK,IAAI,GAAG;AACxB,WAAO,IAAI,QAAQ,IAAI,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,GAAG,CAAC;AAAA,EAC5D;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/http/LocalRequestStore.ts"],"sourcesContent":["import { Response } from './Response';\nimport { Request } from './Request';\nimport { Store } from '../types/Cache';\nimport { Func } from '../types/Func';\nimport { ctx } from '../types/Context';\n\nexport class LocalRequestStore implements Store<Response, Request> {\n key = (_req: Request): string => '';\n\n execute(req: Request, f: Func<Promise<Response>, Request>): Promise<Response> {\n const key = this.key(req);\n return ctx.request.get(key) ?? ctx.request.set(key, f(req));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAMO,IAAM,oBAAN,MAA4D;AAAA,EACjE,MAAM,CAAC,SAA0B;AAAA,EAEjC,QAAQ,KAAc,GAAwD;AAC5E,UAAM,MAAM,KAAK,IAAI,GAAG;AACxB,WAAO,IAAI,QAAQ,IAAI,GAAG,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,GAAG,CAAC;AAAA,EAC5D;AACF;","names":[]}
@@ -2,16 +2,17 @@ import {
2
2
  RequestOptions,
3
3
  isRequestOptions,
4
4
  toPageOptions
5
- } from "../chunk-KBR62ITL.mjs";
5
+ } from "../chunk-N5B6HSHV.mjs";
6
6
  import "../chunk-SW2OCUH3.mjs";
7
7
  import "../chunk-SJ4YFZKO.mjs";
8
- import "../chunk-RGO5KVRQ.mjs";
9
- import "../chunk-TG7T4QPS.mjs";
10
- import "../chunk-P4MEAARF.mjs";
11
- import "../chunk-3LWQJAEJ.mjs";
12
- import "../chunk-QH2LF3L3.mjs";
13
- import "../chunk-5UXTE3WM.mjs";
14
- import "../chunk-AMIP3FS5.mjs";
8
+ import "../chunk-QNE24TSJ.mjs";
9
+ import "../chunk-ONWMWJ43.mjs";
10
+ import "../chunk-6ENYJKOF.mjs";
11
+ import "../chunk-FLJXHLSM.mjs";
12
+ import "../chunk-LIDMZELG.mjs";
13
+ import "../chunk-KBB2WGTO.mjs";
14
+ import "../chunk-TLYJ2G3X.mjs";
15
+ import "../chunk-SSROJBD5.mjs";
15
16
  import "../chunk-CO2AFYVD.mjs";
16
17
  import "../chunk-BDA5LB4S.mjs";
17
18
  import "../chunk-SJGQU3OG.mjs";
@@ -1,22 +1,23 @@
1
1
  import {
2
2
  isRestResult,
3
3
  rest
4
- } from "../chunk-XWRQODZZ.mjs";
5
- import "../chunk-CHV6RMJL.mjs";
4
+ } from "../chunk-NUA7EUWX.mjs";
5
+ import "../chunk-7OEH5Q3V.mjs";
6
6
  import "../chunk-UYDZZAEK.mjs";
7
- import "../chunk-OWZ5I5IV.mjs";
7
+ import "../chunk-YYIIQGLL.mjs";
8
8
  import "../chunk-OFGI5FLG.mjs";
9
- import "../chunk-7W67IZE4.mjs";
10
- import "../chunk-HL7ITJJT.mjs";
11
- import "../chunk-Q7FJUYZT.mjs";
12
- import "../chunk-A42HFDBS.mjs";
9
+ import "../chunk-ST3P6VWM.mjs";
10
+ import "../chunk-OVORFG3O.mjs";
11
+ import "../chunk-HO3IEF5S.mjs";
12
+ import "../chunk-HFBHENMJ.mjs";
13
13
  import "../chunk-WSBULPUZ.mjs";
14
- import "../chunk-TG7T4QPS.mjs";
15
- import "../chunk-P4MEAARF.mjs";
16
- import "../chunk-3LWQJAEJ.mjs";
17
- import "../chunk-QH2LF3L3.mjs";
18
- import "../chunk-5UXTE3WM.mjs";
19
- import "../chunk-AMIP3FS5.mjs";
14
+ import "../chunk-ONWMWJ43.mjs";
15
+ import "../chunk-6ENYJKOF.mjs";
16
+ import "../chunk-FLJXHLSM.mjs";
17
+ import "../chunk-LIDMZELG.mjs";
18
+ import "../chunk-KBB2WGTO.mjs";
19
+ import "../chunk-TLYJ2G3X.mjs";
20
+ import "../chunk-SSROJBD5.mjs";
20
21
  import "../chunk-CO2AFYVD.mjs";
21
22
  import "../chunk-BDA5LB4S.mjs";
22
23
  import "../chunk-SJGQU3OG.mjs";
@@ -1,22 +1,23 @@
1
1
  import {
2
2
  toResponse
3
- } from "../chunk-UGTCVMQQ.mjs";
4
- import "../chunk-XWRQODZZ.mjs";
5
- import "../chunk-CHV6RMJL.mjs";
3
+ } from "../chunk-GSAKK3JN.mjs";
4
+ import "../chunk-NUA7EUWX.mjs";
5
+ import "../chunk-7OEH5Q3V.mjs";
6
6
  import "../chunk-UYDZZAEK.mjs";
7
- import "../chunk-OWZ5I5IV.mjs";
7
+ import "../chunk-YYIIQGLL.mjs";
8
8
  import "../chunk-OFGI5FLG.mjs";
9
- import "../chunk-7W67IZE4.mjs";
10
- import "../chunk-HL7ITJJT.mjs";
11
- import "../chunk-Q7FJUYZT.mjs";
12
- import "../chunk-A42HFDBS.mjs";
9
+ import "../chunk-ST3P6VWM.mjs";
10
+ import "../chunk-OVORFG3O.mjs";
11
+ import "../chunk-HO3IEF5S.mjs";
12
+ import "../chunk-HFBHENMJ.mjs";
13
13
  import "../chunk-WSBULPUZ.mjs";
14
- import "../chunk-TG7T4QPS.mjs";
15
- import "../chunk-P4MEAARF.mjs";
16
- import "../chunk-3LWQJAEJ.mjs";
17
- import "../chunk-QH2LF3L3.mjs";
18
- import "../chunk-5UXTE3WM.mjs";
19
- import "../chunk-AMIP3FS5.mjs";
14
+ import "../chunk-ONWMWJ43.mjs";
15
+ import "../chunk-6ENYJKOF.mjs";
16
+ import "../chunk-FLJXHLSM.mjs";
17
+ import "../chunk-LIDMZELG.mjs";
18
+ import "../chunk-KBB2WGTO.mjs";
19
+ import "../chunk-TLYJ2G3X.mjs";
20
+ import "../chunk-SSROJBD5.mjs";
20
21
  import "../chunk-CO2AFYVD.mjs";
21
22
  import "../chunk-BDA5LB4S.mjs";
22
23
  import "../chunk-SJGQU3OG.mjs";
package/dist/index.d.ts CHANGED
@@ -111,3 +111,4 @@ export * from './utils/Wait';
111
111
  export * from './validation/Contraints';
112
112
  export * from './validation/Validate';
113
113
  export * from './validation/When';
114
+ export * from './types/ToText';
package/dist/index.js CHANGED
@@ -280,6 +280,7 @@ __export(src_exports, {
280
280
  tuple3: () => tuple3,
281
281
  tuple4: () => tuple4,
282
282
  tuple5: () => tuple5,
283
+ tupleO: () => tupleO,
283
284
  uri: () => uri,
284
285
  use: () => use,
285
286
  valid: () => valid,
@@ -387,6 +388,30 @@ var toWords = (input) => {
387
388
  var kebab = (s = "") => toWords(s).join("-").toLowerCase();
388
389
  var capitalize = (s = "") => s.charAt(0).toUpperCase() + s.slice(1);
389
390
 
391
+ // src/utils/Traverse.ts
392
+ var traverse = (subject, property = "") => {
393
+ subject ??= {};
394
+ const props = property.split(".");
395
+ const p = props.shift();
396
+ return props.length === 0 ? subject[p] : traverse(subject[p], props.join("."));
397
+ };
398
+ var traverseSet = (subject, property, value) => {
399
+ const props = property.split(".");
400
+ const p = props.shift();
401
+ return {
402
+ ...subject,
403
+ [p]: props.length === 0 ? value : traverseSet(subject[p], props.join("."), value)
404
+ };
405
+ };
406
+ var accumulate = (items, ...keys2) => items.map((t, i, arr) => {
407
+ const acc = keys2.reduce(
408
+ (acc2, v) => traverseSet(acc2, v, i === 0 ? traverse(t, v) : traverse(arr[i - 1], v) + traverse(t, v)),
409
+ t
410
+ );
411
+ arr[i] = acc;
412
+ return acc;
413
+ });
414
+
390
415
  // src/types/List.ts
391
416
  var List = class extends Array {
392
417
  get ids() {
@@ -550,8 +575,11 @@ var List = class extends Array {
550
575
  switch(item) {
551
576
  return this.includes(item) ? this.remove(item) : this.add(item);
552
577
  }
553
- switchOn(on2, item) {
554
- return use(typeof on2 === "function" ? this.find(on2) : this.find((i) => i[on2] === item[on2]), (i) => i ? this.remove(i) : this.add(item));
578
+ switchOn(item, on2) {
579
+ return use(
580
+ typeof on2 === "function" ? this.find(on2) : use(traverse(item, on2), (v) => this.find((i) => traverse(i, on2) === v)),
581
+ (i) => i ? this.remove(i) : this.add(item)
582
+ );
555
583
  }
556
584
  defined() {
557
585
  return this.reduce((l, v) => isDefined(v) ? l.add(v) : l, toList());
@@ -893,6 +921,8 @@ function template(tmpl, subject, options = {}) {
893
921
  ...options
894
922
  });
895
923
  }
924
+
925
+ // src/types/ToText.ts
896
926
  var ToText = class {
897
927
  constructor(subject) {
898
928
  this.subject = subject;
@@ -951,6 +981,11 @@ var ToText = class {
951
981
  get trim() {
952
982
  return this.map((s) => s.replace(/[- ,_#]/g, ""));
953
983
  }
984
+ get trimSentence() {
985
+ return this.map(
986
+ (s) => s.replace(/[\u200B-\u200D\uFEFF]/g, "").replace(/[\s\u00A0]+/g, " ").replace(/\s+([.,;:!?])/g, "$1").trim()
987
+ );
988
+ }
954
989
  get isEmpty() {
955
990
  return isEmpty(this.toString());
956
991
  }
@@ -1023,12 +1058,14 @@ var tuple = {
1023
1058
  settled: (list) => Promise.allSettled([...list]).then((rs) => ({
1024
1059
  fulfilled: toList(...rs.filter((r) => r.status === "fulfilled").map((r) => r.value)),
1025
1060
  rejected: toList(...rs.filter((r) => r.status === "rejected").map((r) => asString(r.reason)))
1026
- }))
1061
+ })),
1062
+ object: (obj) => use(keys(obj), (ks) => tuple.list(values(obj)).then((vs) => vs.reduce((acc, v, i) => on(acc, (a) => a[ks[i]] = v), {})))
1027
1063
  };
1028
1064
  var tuple2 = tuple[2];
1029
1065
  var tuple3 = tuple[3];
1030
1066
  var tuple4 = tuple[4];
1031
1067
  var tuple5 = tuple[5];
1068
+ var tupleO = tuple.object;
1032
1069
  var settled = tuple.settled;
1033
1070
 
1034
1071
  // src/types/Gateway.ts
@@ -1238,7 +1275,10 @@ var runValidator = (v, subject) => {
1238
1275
  try {
1239
1276
  const actual = isFunction(subject[v.property]) ? subject[v.property]() : subject[v.property];
1240
1277
  const constraint2 = v.constraint(actual);
1241
- return isResults(constraint2) ? constraint2 : !constraint2 ? asResults(subject, v.text, { ...v, actual }) : toResults();
1278
+ return isResults(constraint2) ? constraint2 : !constraint2 ? asResults(subject, v.text, {
1279
+ ...v,
1280
+ actual
1281
+ }) : toResults();
1242
1282
  } catch (e) {
1243
1283
  return asResults(subject, asString(e));
1244
1284
  }
@@ -2463,6 +2503,9 @@ var UseCase = class _UseCase extends Enum {
2463
2503
  this.app = app;
2464
2504
  this.scopes = scopes;
2465
2505
  }
2506
+ static byScopes(...s) {
2507
+ return this.filter((u) => u.scopes.some((us) => isIn(us, s)));
2508
+ }
2466
2509
  with(...s) {
2467
2510
  this.scopes.add(
2468
2511
  ...toList(s).flatMap((s2) => s2.expand()).distinct()
@@ -2474,9 +2517,6 @@ var UseCase = class _UseCase extends Enum {
2474
2517
  ...this.scopes.map((s) => s?.for(item))
2475
2518
  );
2476
2519
  }
2477
- static byScopes(...s) {
2478
- return this.filter((u) => u.scopes.some((us) => isIn(us, s)));
2479
- }
2480
2520
  };
2481
2521
 
2482
2522
  // src/resources/Req.ts
@@ -2854,30 +2894,6 @@ var MappedRouteGateway = class extends RouteGateway {
2854
2894
  }
2855
2895
  };
2856
2896
 
2857
- // src/utils/Traverse.ts
2858
- var traverse = (subject, property = "") => {
2859
- subject ??= {};
2860
- const props = property.split(".");
2861
- const p = props.shift();
2862
- return props.length === 0 ? subject[p] : traverse(subject[p], props.join("."));
2863
- };
2864
- var traverseSet = (subject, property, value) => {
2865
- const props = property.split(".");
2866
- const p = props.shift();
2867
- return {
2868
- ...subject,
2869
- [p]: props.length === 0 ? value : traverseSet(subject[p], props.join("."), value)
2870
- };
2871
- };
2872
- var accumulate = (items, ...keys2) => items.map((t, i, arr) => {
2873
- const acc = keys2.reduce(
2874
- (acc2, v) => traverseSet(acc2, v, i === 0 ? traverse(t, v) : traverse(arr[i - 1], v) + traverse(t, v)),
2875
- t
2876
- );
2877
- arr[i] = acc;
2878
- return acc;
2879
- });
2880
-
2881
2897
  // src/types/IsEqual.ts
2882
2898
  var isEqualArray = (one, another) => choose([one, another]).case(([o, a]) => !isArray(o) || !isArray(a), false).case(([o, a]) => o?.length !== a?.length, false).else(([o, a]) => !o.some((v, i) => !isEqual(v, a[i])));
2883
2899
  var isEqualObject = (one, another) => choose([Object.keys(one), Object.keys(another)]).case(([keysO, keysA]) => keysO.length !== keysA.length, false).case(([keysO, keysA]) => keysO.some((k) => !keysA.includes(k)), false).case(([keysO]) => keysO.some((k) => !isEqual(one[k], another[k])), false).else(true);
@@ -3722,6 +3738,7 @@ var wait = (millis) => Wait.wait(millis);
3722
3738
  tuple3,
3723
3739
  tuple4,
3724
3740
  tuple5,
3741
+ tupleO,
3725
3742
  uri,
3726
3743
  use,
3727
3744
  valid,