@thisisagile/easy 15.29.2 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/dist/{chunk-3MOFYE2N.mjs → chunk-2ZUDYGPP.mjs} +5 -5
  2. package/dist/chunk-2ZUDYGPP.mjs.map +1 -0
  3. package/dist/{chunk-A5MC57TL.mjs → chunk-3L4RAR24.mjs} +9 -7
  4. package/dist/chunk-3L4RAR24.mjs.map +1 -0
  5. package/dist/chunk-45GNHDKA.mjs +27 -0
  6. package/dist/chunk-45GNHDKA.mjs.map +1 -0
  7. package/dist/{chunk-BAXNN36F.mjs → chunk-4DJNTF2D.mjs} +5 -3
  8. package/dist/chunk-4DJNTF2D.mjs.map +1 -0
  9. package/dist/chunk-4G6AW6D6.mjs +35 -0
  10. package/dist/chunk-4G6AW6D6.mjs.map +1 -0
  11. package/dist/{chunk-I5MPU33B.mjs → chunk-5WSP2IYF.mjs} +4 -4
  12. package/dist/chunk-5WSP2IYF.mjs.map +1 -0
  13. package/dist/{chunk-GCPVSACZ.mjs → chunk-5YM5CLOG.mjs} +2 -2
  14. package/dist/{chunk-GUSPHVF2.mjs → chunk-6BQEFLOS.mjs} +5 -3
  15. package/dist/chunk-6BQEFLOS.mjs.map +1 -0
  16. package/dist/{chunk-MRIELSWP.mjs → chunk-6VLC4Z4H.mjs} +2 -2
  17. package/dist/chunk-6VLC4Z4H.mjs.map +1 -0
  18. package/dist/chunk-6YVMQB26.mjs +94 -0
  19. package/dist/chunk-6YVMQB26.mjs.map +1 -0
  20. package/dist/{chunk-YHL2CUBI.mjs → chunk-73UD7JJL.mjs} +2 -2
  21. package/dist/chunk-73UD7JJL.mjs.map +1 -0
  22. package/dist/{chunk-2L3GZ6NK.mjs → chunk-7K4QMDUN.mjs} +2 -2
  23. package/dist/chunk-7K4QMDUN.mjs.map +1 -0
  24. package/dist/{chunk-S5RHU67S.mjs → chunk-7TJ4VCBE.mjs} +15 -9
  25. package/dist/chunk-7TJ4VCBE.mjs.map +1 -0
  26. package/dist/{chunk-NKHZO3ME.mjs → chunk-A2JYVEBB.mjs} +4 -4
  27. package/dist/chunk-A2JYVEBB.mjs.map +1 -0
  28. package/dist/{chunk-57QV3J5N.mjs → chunk-A62OK7XE.mjs} +10 -6
  29. package/dist/{chunk-57QV3J5N.mjs.map → chunk-A62OK7XE.mjs.map} +1 -1
  30. package/dist/{chunk-TQUDYF6E.mjs → chunk-APYISY5K.mjs} +2 -2
  31. package/dist/chunk-APYISY5K.mjs.map +1 -0
  32. package/dist/{chunk-XLFC44Y3.mjs → chunk-ARTSACXM.mjs} +17 -22
  33. package/dist/chunk-ARTSACXM.mjs.map +1 -0
  34. package/dist/chunk-ARZEQQW5.mjs +315 -0
  35. package/dist/chunk-ARZEQQW5.mjs.map +1 -0
  36. package/dist/chunk-CAHTK3AT.mjs +30 -0
  37. package/dist/chunk-CAHTK3AT.mjs.map +1 -0
  38. package/dist/{chunk-ARN4MTMY.mjs → chunk-D4K4MC24.mjs} +3 -3
  39. package/dist/chunk-D4K4MC24.mjs.map +1 -0
  40. package/dist/{chunk-624IHTEI.mjs → chunk-D5FLGKVR.mjs} +18 -12
  41. package/dist/chunk-D5FLGKVR.mjs.map +1 -0
  42. package/dist/{chunk-UWNXWKBU.mjs → chunk-DEJ7A5PY.mjs} +1 -35
  43. package/dist/chunk-DEJ7A5PY.mjs.map +1 -0
  44. package/dist/chunk-DXQSIBC7.mjs +13 -0
  45. package/dist/chunk-DXQSIBC7.mjs.map +1 -0
  46. package/dist/{chunk-SG6BDC6T.mjs → chunk-EDVJUOFU.mjs} +18 -12
  47. package/dist/chunk-EDVJUOFU.mjs.map +1 -0
  48. package/dist/{chunk-IWLJEAQZ.mjs → chunk-EIJ3GSGG.mjs} +5 -3
  49. package/dist/chunk-EIJ3GSGG.mjs.map +1 -0
  50. package/dist/chunk-FHW5K2RR.mjs +150 -0
  51. package/dist/chunk-FHW5K2RR.mjs.map +1 -0
  52. package/dist/{chunk-WYT52YAX.mjs → chunk-GSZLYZSW.mjs} +23 -11
  53. package/dist/chunk-GSZLYZSW.mjs.map +1 -0
  54. package/dist/{chunk-I3DRDMCS.mjs → chunk-HBJMCX2I.mjs} +3 -3
  55. package/dist/chunk-HBJMCX2I.mjs.map +1 -0
  56. package/dist/{chunk-2KKIXOMB.mjs → chunk-HNVAFEZP.mjs} +3 -3
  57. package/dist/{chunk-QRN4Y2QC.mjs → chunk-HV4CI2QX.mjs} +18 -12
  58. package/dist/chunk-HV4CI2QX.mjs.map +1 -0
  59. package/dist/chunk-IAXKOENJ.mjs +55 -0
  60. package/dist/chunk-IAXKOENJ.mjs.map +1 -0
  61. package/dist/chunk-J6KN572O.mjs +20 -0
  62. package/dist/chunk-J6KN572O.mjs.map +1 -0
  63. package/dist/chunk-J7XKOXMW.mjs +203 -0
  64. package/dist/chunk-J7XKOXMW.mjs.map +1 -0
  65. package/dist/{chunk-RFG5LNDQ.mjs → chunk-JBJ2YERG.mjs} +6 -4
  66. package/dist/{chunk-RFG5LNDQ.mjs.map → chunk-JBJ2YERG.mjs.map} +1 -1
  67. package/dist/{chunk-J64VE55O.mjs → chunk-JFJLDIJB.mjs} +10 -10
  68. package/dist/chunk-JFJLDIJB.mjs.map +1 -0
  69. package/dist/{chunk-F4CWMZCV.mjs → chunk-JFU65NZU.mjs} +11 -9
  70. package/dist/chunk-JFU65NZU.mjs.map +1 -0
  71. package/dist/{chunk-PWCGCUT7.mjs → chunk-JSON7A4X.mjs} +6 -4
  72. package/dist/chunk-JSON7A4X.mjs.map +1 -0
  73. package/dist/chunk-JTGB3TSZ.mjs +24 -0
  74. package/dist/chunk-JTGB3TSZ.mjs.map +1 -0
  75. package/dist/{chunk-NOMZAVQC.mjs → chunk-KRLEHX37.mjs} +12 -6
  76. package/dist/chunk-KRLEHX37.mjs.map +1 -0
  77. package/dist/{chunk-H7NDGISC.mjs → chunk-LAR7AT6R.mjs} +2 -2
  78. package/dist/chunk-LAR7AT6R.mjs.map +1 -0
  79. package/dist/{chunk-OXVJLJIE.mjs → chunk-LXQQ5N6S.mjs} +2 -2
  80. package/dist/chunk-LYAPQ4QZ.mjs +40 -0
  81. package/dist/chunk-LYAPQ4QZ.mjs.map +1 -0
  82. package/dist/{chunk-QRLGQY7M.mjs → chunk-M47EOYDK.mjs} +6 -4
  83. package/dist/chunk-M47EOYDK.mjs.map +1 -0
  84. package/dist/{chunk-CJDDGEEK.mjs → chunk-NFWIUPZU.mjs} +8 -6
  85. package/dist/chunk-NFWIUPZU.mjs.map +1 -0
  86. package/dist/{chunk-7Z3YQCXR.mjs → chunk-NYYHRFBW.mjs} +6 -4
  87. package/dist/chunk-NYYHRFBW.mjs.map +1 -0
  88. package/dist/{chunk-4ROYPQPC.mjs → chunk-OFGI5FLG.mjs} +2 -2
  89. package/dist/chunk-PPWHEIZW.mjs +58 -0
  90. package/dist/chunk-PPWHEIZW.mjs.map +1 -0
  91. package/dist/chunk-Q5HABVOK.mjs +20 -0
  92. package/dist/chunk-Q5HABVOK.mjs.map +1 -0
  93. package/dist/{chunk-TG5IPJOG.mjs → chunk-QQRGOHU6.mjs} +2 -2
  94. package/dist/chunk-QQRGOHU6.mjs.map +1 -0
  95. package/dist/{chunk-5J3LAY32.mjs → chunk-QTPKH4PY.mjs} +5 -5
  96. package/dist/chunk-QTPKH4PY.mjs.map +1 -0
  97. package/dist/{chunk-65W3AYRE.mjs → chunk-RNROH3VJ.mjs} +6 -4
  98. package/dist/chunk-RNROH3VJ.mjs.map +1 -0
  99. package/dist/{chunk-GARRF3U7.mjs → chunk-TMZRZLA2.mjs} +3 -3
  100. package/dist/chunk-TMZRZLA2.mjs.map +1 -0
  101. package/dist/{chunk-L7JZMM3J.mjs → chunk-U53FLD4J.mjs} +4 -4
  102. package/dist/chunk-U53FLD4J.mjs.map +1 -0
  103. package/dist/{chunk-EB26LF5Z.mjs → chunk-UJEQAXZI.mjs} +4 -4
  104. package/dist/chunk-UJEQAXZI.mjs.map +1 -0
  105. package/dist/{chunk-ELFAMVTF.mjs → chunk-UKHDSTTZ.mjs} +5 -5
  106. package/dist/chunk-UKHDSTTZ.mjs.map +1 -0
  107. package/dist/chunk-UNHWYQ54.mjs +64 -0
  108. package/dist/chunk-UNHWYQ54.mjs.map +1 -0
  109. package/dist/chunk-USGZFNWP.mjs +34 -0
  110. package/dist/chunk-USGZFNWP.mjs.map +1 -0
  111. package/dist/{chunk-Y5WPU3ZU.mjs → chunk-UW6S2PNO.mjs} +12 -6
  112. package/dist/chunk-UW6S2PNO.mjs.map +1 -0
  113. package/dist/chunk-UYDZZAEK.mjs +11 -0
  114. package/dist/chunk-UYDZZAEK.mjs.map +1 -0
  115. package/dist/{chunk-GJFFYHHX.mjs → chunk-VV534JNS.mjs} +5 -3
  116. package/dist/chunk-VV534JNS.mjs.map +1 -0
  117. package/dist/{chunk-V7FP66LM.mjs → chunk-WJZFE5NE.mjs} +2 -2
  118. package/dist/chunk-WJZFE5NE.mjs.map +1 -0
  119. package/dist/{chunk-ZELLSP3E.mjs → chunk-X7FZPY3P.mjs} +6 -4
  120. package/dist/{chunk-ZELLSP3E.mjs.map → chunk-X7FZPY3P.mjs.map} +1 -1
  121. package/dist/{chunk-Q6RSBDMM.mjs → chunk-XBYDAQGZ.mjs} +2 -2
  122. package/dist/chunk-XBYDAQGZ.mjs.map +1 -0
  123. package/dist/{chunk-ZJKVMRGU.mjs → chunk-YSBACFUR.mjs} +5 -5
  124. package/dist/chunk-YSBACFUR.mjs.map +1 -0
  125. package/dist/chunk-ZHXKBOK2.mjs +22 -0
  126. package/dist/chunk-ZHXKBOK2.mjs.map +1 -0
  127. package/dist/chunk-ZPNFXK7Y.mjs +36 -0
  128. package/dist/chunk-ZPNFXK7Y.mjs.map +1 -0
  129. package/dist/data/Condition.d.ts +3 -2
  130. package/dist/data/Condition.mjs +12 -8
  131. package/dist/data/Database.d.ts +2 -1
  132. package/dist/data/Database.mjs +12 -7
  133. package/dist/data/Field.d.ts +1 -1
  134. package/dist/data/Field.mjs +15 -11
  135. package/dist/data/Field.mjs.map +1 -1
  136. package/dist/data/InMemoryGateway.d.ts +5 -1
  137. package/dist/data/InMemoryGateway.mjs +25 -10
  138. package/dist/data/InMemoryGateway.mjs.map +1 -1
  139. package/dist/data/Query.d.ts +1 -1
  140. package/dist/data/QueryProvider.d.ts +2 -1
  141. package/dist/domain/Audit.d.ts +3 -2
  142. package/dist/domain/Audit.mjs +25 -10
  143. package/dist/domain/Child.d.ts +2 -1
  144. package/dist/domain/Child.mjs +25 -10
  145. package/dist/domain/Child.mjs.map +1 -1
  146. package/dist/domain/{values/DateTime.d.ts → DateTime.d.ts} +3 -1
  147. package/dist/domain/DateTime.mjs +35 -0
  148. package/dist/domain/Entity.d.ts +2 -1
  149. package/dist/domain/Entity.mjs +27 -12
  150. package/dist/domain/Entity.mjs.map +1 -1
  151. package/dist/domain/Repo.d.ts +7 -1
  152. package/dist/domain/Repo.mjs +31 -12
  153. package/dist/domain/Repo.mjs.map +1 -1
  154. package/dist/domain/Struct.d.ts +2 -1
  155. package/dist/domain/Struct.mjs +22 -7
  156. package/dist/domain/Typo.d.ts +7 -2
  157. package/dist/domain/Typo.mjs +23 -8
  158. package/dist/domain/Typo.mjs.map +1 -1
  159. package/dist/health/HealthResource.d.ts +2 -2
  160. package/dist/health/HealthResource.mjs +30 -16
  161. package/dist/health/HealthResource.mjs.map +1 -1
  162. package/dist/health/HealthUri.d.ts +2 -2
  163. package/dist/health/HealthUri.mjs +22 -8
  164. package/dist/http/CacheControl.d.ts +1 -1
  165. package/dist/http/CacheControl.mjs +23 -9
  166. package/dist/http/ContentType.d.ts +2 -1
  167. package/dist/http/ContentType.mjs +12 -7
  168. package/dist/http/HttpStatus.d.ts +3 -1
  169. package/dist/http/HttpStatus.mjs +12 -7
  170. package/dist/http/HttpVerb.d.ts +1 -1
  171. package/dist/http/HttpVerb.mjs +12 -7
  172. package/dist/http/LocalRequestStore.d.ts +2 -1
  173. package/dist/http/LocalRequestStore.mjs +12 -6
  174. package/dist/http/LocalRequestStore.mjs.map +1 -1
  175. package/dist/http/OriginatedError.d.ts +1 -1
  176. package/dist/http/OriginatedError.mjs +1 -2
  177. package/dist/http/OriginatedError.mjs.map +1 -1
  178. package/dist/http/Request.d.ts +1 -1
  179. package/dist/http/RequestOptions.d.ts +6 -1
  180. package/dist/http/RequestOptions.mjs +16 -9
  181. package/dist/http/Response.d.ts +2 -5
  182. package/dist/http/Response.mjs +7 -13
  183. package/dist/http/RestResult.d.ts +3 -1
  184. package/dist/http/RestResult.mjs +23 -8
  185. package/dist/http/Verb.d.ts +4 -1
  186. package/dist/http/Verb.mjs +27 -13
  187. package/dist/http/toResponse.d.ts +6 -0
  188. package/dist/http/toResponse.mjs +33 -0
  189. package/dist/index.d.ts +118 -12
  190. package/dist/index.js +1645 -2904
  191. package/dist/index.js.map +1 -1
  192. package/dist/index.mjs +118 -12
  193. package/dist/index.mjs.map +1 -1
  194. package/dist/process/App.mjs +13 -7
  195. package/dist/process/App.mjs.map +1 -1
  196. package/dist/process/Manage.d.ts +3 -1
  197. package/dist/process/Manage.mjs +22 -8
  198. package/dist/process/Manage.mjs.map +1 -1
  199. package/dist/process/Scope.d.ts +4 -1
  200. package/dist/process/Scope.mjs +13 -7
  201. package/dist/process/Search.d.ts +7 -2
  202. package/dist/process/Search.mjs +22 -8
  203. package/dist/process/UseCase.d.ts +4 -1
  204. package/dist/process/UseCase.mjs +19 -10
  205. package/dist/process/UseCase.mjs.map +1 -1
  206. package/dist/resources/AppProvider.d.ts +1 -1
  207. package/dist/resources/Req.d.ts +6 -1
  208. package/dist/resources/Req.mjs +21 -7
  209. package/dist/resources/Req.mjs.map +1 -1
  210. package/dist/resources/Requires.d.ts +2 -1
  211. package/dist/resources/Requires.mjs +10 -6
  212. package/dist/resources/Requires.mjs.map +1 -1
  213. package/dist/resources/Route.d.ts +5 -3
  214. package/dist/resources/Route.mjs +21 -7
  215. package/dist/resources/Service.d.ts +3 -1
  216. package/dist/resources/Service.mjs +24 -8
  217. package/dist/resources/Service.mjs.map +1 -1
  218. package/dist/security/Jwt.d.ts +5 -1
  219. package/dist/security/Jwt.mjs +24 -8
  220. package/dist/security/Jwt.mjs.map +1 -1
  221. package/dist/services/Api.d.ts +8 -2
  222. package/dist/services/Api.mjs +32 -16
  223. package/dist/services/ApiGateway.d.ts +6 -2
  224. package/dist/services/ApiGateway.mjs +35 -19
  225. package/dist/services/AxiosProvider.d.ts +3 -1
  226. package/dist/services/AxiosProvider.mjs +30 -14
  227. package/dist/services/MappedRouteGateway.d.ts +7 -3
  228. package/dist/services/MappedRouteGateway.mjs +41 -24
  229. package/dist/services/MappedRouteGateway.mjs.map +1 -1
  230. package/dist/services/RouteGateway.d.ts +7 -1
  231. package/dist/services/RouteGateway.mjs +36 -20
  232. package/dist/services/ViewRouteGateway.d.ts +10 -6
  233. package/dist/services/ViewRouteGateway.mjs +39 -22
  234. package/dist/services/ViewRouteGateway.mjs.map +1 -1
  235. package/dist/sql/Clause.d.ts +3 -2
  236. package/dist/sql/Clause.mjs +7 -8
  237. package/dist/sql/Column.d.ts +3 -2
  238. package/dist/sql/Column.mjs +24 -10
  239. package/dist/sql/Count.mjs +11 -9
  240. package/dist/sql/Delete.mjs +10 -8
  241. package/dist/sql/Insert.d.ts +1 -1
  242. package/dist/sql/Insert.mjs +12 -10
  243. package/dist/sql/Select.d.ts +1 -1
  244. package/dist/sql/Select.mjs +10 -8
  245. package/dist/sql/SqlQuery.d.ts +5 -2
  246. package/dist/sql/SqlQuery.mjs +9 -7
  247. package/dist/sql/Table.d.ts +13 -12
  248. package/dist/sql/Table.mjs +37 -22
  249. package/dist/sql/Table.mjs.map +1 -1
  250. package/dist/sql/TableGateway.d.ts +6 -2
  251. package/dist/sql/TableGateway.mjs +23 -9
  252. package/dist/sql/TableGateway.mjs.map +1 -1
  253. package/dist/sql/Update.d.ts +1 -1
  254. package/dist/sql/Update.mjs +12 -10
  255. package/dist/types/Array.mjs +4 -2
  256. package/dist/types/Builder.mjs +2 -6
  257. package/dist/types/Builder.mjs.map +1 -1
  258. package/dist/types/Cache.mjs +10 -6
  259. package/dist/types/Cache.mjs.map +1 -1
  260. package/dist/types/CacheAge.mjs +22 -8
  261. package/dist/types/Case.d.ts +3 -1
  262. package/dist/types/Case.mjs +20 -6
  263. package/dist/types/Constructor.d.ts +1 -0
  264. package/dist/types/Constructor.mjs +5 -1
  265. package/dist/types/Context.mjs +12 -6
  266. package/dist/types/Enum.mjs +11 -6
  267. package/dist/{domain/enums → types}/Environment.d.ts +1 -1
  268. package/dist/types/Environment.mjs +28 -0
  269. package/dist/types/Environment.mjs.map +1 -0
  270. package/dist/types/ErrorOrigin.d.ts +1 -1
  271. package/dist/types/Exception.mjs +13 -6
  272. package/dist/types/Gateway.mjs +15 -7
  273. package/dist/types/Id.mjs +3 -4
  274. package/dist/types/Is.d.ts +0 -4
  275. package/dist/types/Is.mjs +1 -6
  276. package/dist/types/IsA.d.ts +2 -0
  277. package/dist/types/IsA.mjs +8 -4
  278. package/dist/types/IsEqual.mjs +21 -7
  279. package/dist/types/Json.mjs +10 -6
  280. package/dist/types/List.d.ts +3 -3
  281. package/dist/types/List.mjs +8 -6
  282. package/dist/types/Meta.d.ts +1 -2
  283. package/dist/types/Meta.mjs +10 -8
  284. package/dist/types/Number.mjs +21 -7
  285. package/dist/types/Object.d.ts +8 -0
  286. package/dist/types/Object.mjs +20 -0
  287. package/dist/types/PageList.mjs +21 -7
  288. package/dist/types/Parser.mjs +25 -10
  289. package/dist/types/Parser.mjs.map +1 -1
  290. package/dist/types/Primitive.mjs +2 -2
  291. package/dist/types/Repository.d.ts +5 -1
  292. package/dist/types/Repository.mjs +15 -7
  293. package/dist/types/Result.mjs +13 -6
  294. package/dist/types/Results.mjs +14 -6
  295. package/dist/types/Tag.mjs +10 -6
  296. package/dist/types/Tag.mjs.map +1 -1
  297. package/dist/types/Template.d.ts +41 -2
  298. package/dist/types/Template.mjs +19 -8
  299. package/dist/types/Text.d.ts +0 -38
  300. package/dist/types/Text.mjs +2 -10
  301. package/dist/types/Try.mjs +20 -6
  302. package/dist/types/Uri.mjs +21 -7
  303. package/dist/types/Uuid.mjs +2 -3
  304. package/dist/types/Validatable.mjs +5 -3
  305. package/dist/types/Value.d.ts +2 -1
  306. package/dist/types/Value.mjs +3 -6
  307. package/dist/utils/Base64.d.ts +1 -1
  308. package/dist/utils/Base64.mjs.map +1 -1
  309. package/dist/utils/Convert.mjs +3 -7
  310. package/dist/utils/If.d.ts +2 -1
  311. package/dist/utils/If.mjs +4 -2
  312. package/dist/utils/Loading.mjs +1 -2
  313. package/dist/utils/Loading.mjs.map +1 -1
  314. package/dist/utils/Log.d.ts +1 -1
  315. package/dist/utils/Log.mjs.map +1 -1
  316. package/dist/utils/Mapper.d.ts +6 -1
  317. package/dist/utils/Mapper.mjs +15 -10
  318. package/dist/utils/Promise.d.ts +2 -1
  319. package/dist/utils/Promise.mjs +9 -6
  320. package/dist/utils/Property.d.ts +2 -1
  321. package/dist/utils/Property.mjs +4 -8
  322. package/dist/utils/Sentence.d.ts +2 -1
  323. package/dist/utils/Sentence.mjs +11 -6
  324. package/dist/utils/Sentence.mjs.map +1 -1
  325. package/dist/utils/State.d.ts +1 -1
  326. package/dist/utils/State.mjs +4 -2
  327. package/dist/utils/View.d.ts +6 -1
  328. package/dist/utils/View.mjs +24 -9
  329. package/dist/validation/Contraints.d.ts +3 -1
  330. package/dist/validation/Contraints.mjs +21 -7
  331. package/dist/validation/Validate.d.ts +3 -1
  332. package/dist/validation/Validate.mjs +20 -6
  333. package/dist/validation/When.d.ts +4 -1
  334. package/dist/validation/When.mjs +20 -6
  335. package/package.json +2 -2
  336. package/src/data/Condition.ts +17 -5
  337. package/src/data/Database.ts +7 -2
  338. package/src/data/Field.ts +3 -2
  339. package/src/data/InMemoryGateway.ts +8 -2
  340. package/src/data/Query.ts +1 -1
  341. package/src/data/QueryProvider.ts +2 -1
  342. package/src/domain/Audit.ts +11 -7
  343. package/src/domain/Child.ts +3 -2
  344. package/src/domain/{values/DateTime.ts → DateTime.ts} +8 -2
  345. package/src/domain/Entity.ts +3 -2
  346. package/src/domain/Repo.ts +15 -4
  347. package/src/domain/Struct.ts +4 -2
  348. package/src/domain/Typo.ts +13 -4
  349. package/src/health/HealthResource.ts +5 -3
  350. package/src/health/HealthUri.ts +1 -1
  351. package/src/http/CacheControl.ts +9 -3
  352. package/src/http/ContentType.ts +8 -2
  353. package/src/http/HttpStatus.ts +4 -1
  354. package/src/http/HttpVerb.ts +1 -1
  355. package/src/http/LocalRequestStore.ts +3 -1
  356. package/src/http/OriginatedError.ts +6 -2
  357. package/src/http/Request.ts +1 -1
  358. package/src/http/RequestOptions.ts +16 -2
  359. package/src/http/Response.ts +4 -9
  360. package/src/http/RestResult.ts +7 -1
  361. package/src/http/Verb.ts +5 -2
  362. package/src/http/toResponse.ts +12 -0
  363. package/src/index.ts +129 -12
  364. package/src/process/Manage.ts +3 -1
  365. package/src/process/Scope.ts +12 -2
  366. package/src/process/Search.ts +9 -3
  367. package/src/process/UseCase.ts +12 -2
  368. package/src/resources/AppProvider.ts +1 -1
  369. package/src/resources/Req.ts +14 -3
  370. package/src/resources/Requires.ts +3 -2
  371. package/src/resources/Route.ts +8 -3
  372. package/src/resources/Service.ts +9 -2
  373. package/src/security/Jwt.ts +7 -1
  374. package/src/services/Api.ts +12 -3
  375. package/src/services/ApiGateway.ts +7 -2
  376. package/src/services/AxiosProvider.ts +14 -2
  377. package/src/services/MappedRouteGateway.ts +13 -4
  378. package/src/services/RouteGateway.ts +14 -3
  379. package/src/services/ViewRouteGateway.ts +7 -3
  380. package/src/sql/Clause.ts +10 -3
  381. package/src/sql/Column.ts +14 -4
  382. package/src/sql/Count.ts +1 -1
  383. package/src/sql/Delete.ts +1 -1
  384. package/src/sql/Insert.ts +5 -2
  385. package/src/sql/Select.ts +6 -2
  386. package/src/sql/SqlQuery.ts +9 -3
  387. package/src/sql/Table.ts +6 -3
  388. package/src/sql/TableGateway.ts +13 -5
  389. package/src/sql/Update.ts +6 -2
  390. package/src/types/CacheAge.ts +3 -1
  391. package/src/types/Case.ts +14 -4
  392. package/src/types/Constructor.ts +3 -1
  393. package/src/types/Context.ts +7 -8
  394. package/src/{domain/enums → types}/Environment.ts +1 -1
  395. package/src/types/ErrorOrigin.ts +1 -1
  396. package/src/types/Exception.ts +7 -2
  397. package/src/types/Gateway.ts +1 -1
  398. package/src/types/Is.ts +0 -7
  399. package/src/types/IsA.ts +4 -0
  400. package/src/types/Json.ts +2 -2
  401. package/src/types/List.ts +13 -12
  402. package/src/types/Meta.ts +12 -9
  403. package/src/types/Object.ts +16 -0
  404. package/src/types/Parser.ts +1 -1
  405. package/src/types/Repository.ts +7 -2
  406. package/src/types/Template.ts +149 -12
  407. package/src/types/Text.ts +3 -138
  408. package/src/types/Try.ts +1 -1
  409. package/src/types/Uri.ts +2 -1
  410. package/src/types/Value.ts +4 -1
  411. package/src/utils/Base64.ts +1 -1
  412. package/src/utils/Convert.ts +5 -2
  413. package/src/utils/If.ts +3 -1
  414. package/src/utils/Loading.ts +1 -1
  415. package/src/utils/Log.ts +1 -1
  416. package/src/utils/Mapper.ts +13 -2
  417. package/src/utils/Promise.ts +3 -1
  418. package/src/utils/Property.ts +6 -2
  419. package/src/utils/Sentence.ts +8 -2
  420. package/src/utils/State.ts +1 -1
  421. package/src/utils/View.ts +15 -22
  422. package/src/validation/Contraints.ts +9 -1
  423. package/src/validation/Validate.ts +26 -29
  424. package/src/validation/When.ts +13 -3
  425. package/dist/chunk-2L3GZ6NK.mjs.map +0 -1
  426. package/dist/chunk-3MOFYE2N.mjs.map +0 -1
  427. package/dist/chunk-5J3LAY32.mjs.map +0 -1
  428. package/dist/chunk-624IHTEI.mjs.map +0 -1
  429. package/dist/chunk-65W3AYRE.mjs.map +0 -1
  430. package/dist/chunk-7Z3YQCXR.mjs.map +0 -1
  431. package/dist/chunk-A5MC57TL.mjs.map +0 -1
  432. package/dist/chunk-ARN4MTMY.mjs.map +0 -1
  433. package/dist/chunk-BAXNN36F.mjs.map +0 -1
  434. package/dist/chunk-C7OPGGIF.mjs +0 -21
  435. package/dist/chunk-C7OPGGIF.mjs.map +0 -1
  436. package/dist/chunk-CJDDGEEK.mjs.map +0 -1
  437. package/dist/chunk-EB26LF5Z.mjs.map +0 -1
  438. package/dist/chunk-ELFAMVTF.mjs.map +0 -1
  439. package/dist/chunk-F4CWMZCV.mjs.map +0 -1
  440. package/dist/chunk-GARRF3U7.mjs.map +0 -1
  441. package/dist/chunk-GJFFYHHX.mjs.map +0 -1
  442. package/dist/chunk-GUSPHVF2.mjs.map +0 -1
  443. package/dist/chunk-H7NDGISC.mjs.map +0 -1
  444. package/dist/chunk-HBJUEFGA.mjs +0 -26
  445. package/dist/chunk-HBJUEFGA.mjs.map +0 -1
  446. package/dist/chunk-I2NKUYUM.mjs +0 -272
  447. package/dist/chunk-I2NKUYUM.mjs.map +0 -1
  448. package/dist/chunk-I3DRDMCS.mjs.map +0 -1
  449. package/dist/chunk-I5MPU33B.mjs.map +0 -1
  450. package/dist/chunk-IWLJEAQZ.mjs.map +0 -1
  451. package/dist/chunk-J64VE55O.mjs.map +0 -1
  452. package/dist/chunk-L7JZMM3J.mjs.map +0 -1
  453. package/dist/chunk-MRIELSWP.mjs.map +0 -1
  454. package/dist/chunk-NKHZO3ME.mjs.map +0 -1
  455. package/dist/chunk-NOMZAVQC.mjs.map +0 -1
  456. package/dist/chunk-PFAEQQXA.mjs +0 -900
  457. package/dist/chunk-PFAEQQXA.mjs.map +0 -1
  458. package/dist/chunk-PWCGCUT7.mjs.map +0 -1
  459. package/dist/chunk-Q5ATL34D.mjs +0 -13
  460. package/dist/chunk-Q5ATL34D.mjs.map +0 -1
  461. package/dist/chunk-Q6RSBDMM.mjs.map +0 -1
  462. package/dist/chunk-QRLGQY7M.mjs.map +0 -1
  463. package/dist/chunk-QRN4Y2QC.mjs.map +0 -1
  464. package/dist/chunk-S5RHU67S.mjs.map +0 -1
  465. package/dist/chunk-SG6BDC6T.mjs.map +0 -1
  466. package/dist/chunk-TG5IPJOG.mjs.map +0 -1
  467. package/dist/chunk-TQUDYF6E.mjs.map +0 -1
  468. package/dist/chunk-UWNXWKBU.mjs.map +0 -1
  469. package/dist/chunk-V7FP66LM.mjs.map +0 -1
  470. package/dist/chunk-WX6UP67J.mjs +0 -40
  471. package/dist/chunk-WX6UP67J.mjs.map +0 -1
  472. package/dist/chunk-WYT52YAX.mjs.map +0 -1
  473. package/dist/chunk-XLFC44Y3.mjs.map +0 -1
  474. package/dist/chunk-Y5WPU3ZU.mjs.map +0 -1
  475. package/dist/chunk-YHL2CUBI.mjs.map +0 -1
  476. package/dist/chunk-YUSOGMIJ.mjs +0 -183
  477. package/dist/chunk-YUSOGMIJ.mjs.map +0 -1
  478. package/dist/chunk-YXE66GAL.mjs +0 -19
  479. package/dist/chunk-YXE66GAL.mjs.map +0 -1
  480. package/dist/chunk-ZJKVMRGU.mjs.map +0 -1
  481. package/dist/data/index.d.ts +0 -7
  482. package/dist/data/index.mjs +0 -8
  483. package/dist/data/index.mjs.map +0 -1
  484. package/dist/domain/enums/Country.d.ts +0 -256
  485. package/dist/domain/enums/Country.mjs +0 -16
  486. package/dist/domain/enums/Currency.d.ts +0 -127
  487. package/dist/domain/enums/Currency.mjs +0 -19
  488. package/dist/domain/enums/Environment.mjs +0 -23
  489. package/dist/domain/enums/Environment.mjs.map +0 -1
  490. package/dist/domain/enums/Locale.d.ts +0 -571
  491. package/dist/domain/enums/Locale.mjs +0 -594
  492. package/dist/domain/enums/Locale.mjs.map +0 -1
  493. package/dist/domain/enums/UnitOfMeasurement.d.ts +0 -10
  494. package/dist/domain/enums/UnitOfMeasurement.mjs +0 -16
  495. package/dist/domain/enums/UnitOfMeasurement.mjs.map +0 -1
  496. package/dist/domain/enums/UnitOfWeight.d.ts +0 -8
  497. package/dist/domain/enums/UnitOfWeight.mjs +0 -16
  498. package/dist/domain/enums/UnitOfWeight.mjs.map +0 -1
  499. package/dist/domain/enums/index.d.ts +0 -6
  500. package/dist/domain/enums/index.mjs +0 -7
  501. package/dist/domain/enums/index.mjs.map +0 -1
  502. package/dist/domain/index.d.ts +0 -9
  503. package/dist/domain/index.mjs +0 -10
  504. package/dist/domain/index.mjs.map +0 -1
  505. package/dist/domain/structs/Address.d.ts +0 -12
  506. package/dist/domain/structs/Address.mjs +0 -65
  507. package/dist/domain/structs/Address.mjs.map +0 -1
  508. package/dist/domain/structs/Box.d.ts +0 -15
  509. package/dist/domain/structs/Box.mjs +0 -58
  510. package/dist/domain/structs/Box.mjs.map +0 -1
  511. package/dist/domain/structs/Dimension.d.ts +0 -10
  512. package/dist/domain/structs/Dimension.mjs +0 -20
  513. package/dist/domain/structs/Dimension.mjs.map +0 -1
  514. package/dist/domain/structs/Money.d.ts +0 -12
  515. package/dist/domain/structs/Money.mjs +0 -23
  516. package/dist/domain/structs/Money.mjs.map +0 -1
  517. package/dist/domain/structs/Name.d.ts +0 -9
  518. package/dist/domain/structs/Name.mjs +0 -42
  519. package/dist/domain/structs/Name.mjs.map +0 -1
  520. package/dist/domain/structs/Weight.d.ts +0 -13
  521. package/dist/domain/structs/Weight.mjs +0 -57
  522. package/dist/domain/structs/Weight.mjs.map +0 -1
  523. package/dist/domain/structs/index.d.ts +0 -6
  524. package/dist/domain/structs/index.mjs +0 -7
  525. package/dist/domain/structs/index.mjs.map +0 -1
  526. package/dist/domain/values/DateTime.mjs +0 -21
  527. package/dist/domain/values/EAN.d.ts +0 -5
  528. package/dist/domain/values/EAN.mjs +0 -30
  529. package/dist/domain/values/EAN.mjs.map +0 -1
  530. package/dist/domain/values/Email.d.ts +0 -8
  531. package/dist/domain/values/Email.mjs +0 -37
  532. package/dist/domain/values/Email.mjs.map +0 -1
  533. package/dist/domain/values/IBAN.d.ts +0 -5
  534. package/dist/domain/values/IBAN.mjs +0 -30
  535. package/dist/domain/values/IBAN.mjs.map +0 -1
  536. package/dist/domain/values/PostalCode.d.ts +0 -8
  537. package/dist/domain/values/PostalCode.mjs +0 -19
  538. package/dist/domain/values/PostalCode.mjs.map +0 -1
  539. package/dist/domain/values/Slug.d.ts +0 -6
  540. package/dist/domain/values/Slug.mjs +0 -31
  541. package/dist/domain/values/Slug.mjs.map +0 -1
  542. package/dist/domain/values/Url.d.ts +0 -22
  543. package/dist/domain/values/Url.mjs +0 -36
  544. package/dist/domain/values/Url.mjs.map +0 -1
  545. package/dist/domain/values/index.d.ts +0 -7
  546. package/dist/domain/values/index.mjs +0 -8
  547. package/dist/domain/values/index.mjs.map +0 -1
  548. package/dist/health/index.d.ts +0 -2
  549. package/dist/health/index.mjs +0 -3
  550. package/dist/health/index.mjs.map +0 -1
  551. package/dist/http/index.d.ts +0 -12
  552. package/dist/http/index.mjs +0 -13
  553. package/dist/http/index.mjs.map +0 -1
  554. package/dist/process/index.d.ts +0 -5
  555. package/dist/process/index.mjs +0 -6
  556. package/dist/process/index.mjs.map +0 -1
  557. package/dist/resources/index.d.ts +0 -7
  558. package/dist/resources/index.mjs +0 -8
  559. package/dist/resources/index.mjs.map +0 -1
  560. package/dist/security/index.d.ts +0 -1
  561. package/dist/security/index.mjs +0 -2
  562. package/dist/security/index.mjs.map +0 -1
  563. package/dist/services/index.d.ts +0 -6
  564. package/dist/services/index.mjs +0 -7
  565. package/dist/services/index.mjs.map +0 -1
  566. package/dist/sql/index.d.ts +0 -10
  567. package/dist/sql/index.mjs +0 -11
  568. package/dist/sql/index.mjs.map +0 -1
  569. package/dist/types/index.d.ts +0 -43
  570. package/dist/types/index.mjs +0 -44
  571. package/dist/types/index.mjs.map +0 -1
  572. package/dist/utils/index.d.ts +0 -13
  573. package/dist/utils/index.mjs +0 -14
  574. package/dist/utils/index.mjs.map +0 -1
  575. package/dist/validation/index.d.ts +0 -3
  576. package/dist/validation/index.mjs +0 -4
  577. package/dist/validation/index.mjs.map +0 -1
  578. package/src/data/index.ts +0 -7
  579. package/src/domain/enums/Country.ts +0 -265
  580. package/src/domain/enums/Currency.ts +0 -133
  581. package/src/domain/enums/Locale.ts +0 -579
  582. package/src/domain/enums/UnitOfMeasurement.ts +0 -13
  583. package/src/domain/enums/UnitOfWeight.ts +0 -11
  584. package/src/domain/enums/countries.json +0 -251
  585. package/src/domain/enums/currencies.json +0 -1073
  586. package/src/domain/enums/index.ts +0 -6
  587. package/src/domain/enums/locales.json +0 -565
  588. package/src/domain/index.ts +0 -9
  589. package/src/domain/structs/Address.ts +0 -22
  590. package/src/domain/structs/Box.ts +0 -29
  591. package/src/domain/structs/Dimension.ts +0 -25
  592. package/src/domain/structs/Money.ts +0 -31
  593. package/src/domain/structs/Name.ts +0 -15
  594. package/src/domain/structs/Weight.ts +0 -35
  595. package/src/domain/structs/index.ts +0 -6
  596. package/src/domain/values/EAN.ts +0 -12
  597. package/src/domain/values/Email.ts +0 -20
  598. package/src/domain/values/IBAN.ts +0 -12
  599. package/src/domain/values/PostalCode.ts +0 -17
  600. package/src/domain/values/Slug.ts +0 -14
  601. package/src/domain/values/Url.ts +0 -73
  602. package/src/domain/values/index.ts +0 -7
  603. package/src/health/index.ts +0 -2
  604. package/src/http/index.ts +0 -12
  605. package/src/process/index.ts +0 -5
  606. package/src/resources/index.ts +0 -7
  607. package/src/security/index.ts +0 -1
  608. package/src/services/index.ts +0 -6
  609. package/src/sql/index.ts +0 -10
  610. package/src/types/index.ts +0 -43
  611. package/src/utils/index.ts +0 -13
  612. package/src/validation/index.ts +0 -3
  613. /package/dist/{chunk-GCPVSACZ.mjs.map → chunk-5YM5CLOG.mjs.map} +0 -0
  614. /package/dist/{chunk-2KKIXOMB.mjs.map → chunk-HNVAFEZP.mjs.map} +0 -0
  615. /package/dist/{chunk-OXVJLJIE.mjs.map → chunk-LXQQ5N6S.mjs.map} +0 -0
  616. /package/dist/{chunk-4ROYPQPC.mjs.map → chunk-OFGI5FLG.mjs.map} +0 -0
  617. /package/dist/domain/{values/DateTime.mjs.map → DateTime.mjs.map} +0 -0
  618. /package/dist/{domain/enums/Country.mjs.map → http/toResponse.mjs.map} +0 -0
  619. /package/dist/{domain/enums/Currency.mjs.map → types/Object.mjs.map} +0 -0
@@ -1,8 +1,11 @@
1
1
  import { meta } from './Meta';
2
2
  import { List, toList } from './List';
3
- import { asString, text, Text, ToText } from './Text';
3
+ import { asString, replaceAll, Text } from './Text';
4
4
  import { toName } from './Constructor';
5
- import { tryTo } from './Try';
5
+ import { Optional } from './Types';
6
+ import { Get, ofGet } from './Get';
7
+ import { isEmpty, isNotEmpty } from './Is';
8
+ import { JsonValue } from './Json';
6
9
 
7
10
  export type TemplateOptions = { type?: Text; property?: Text; actual?: Text; subject?: Text };
8
11
 
@@ -20,12 +23,6 @@ export class Template implements Text {
20
23
  .replace(' ', ' ');
21
24
  };
22
25
 
23
- private readonly value = (subject: any, prop: string): string =>
24
- tryTo(() => prop.split('.'))
25
- .map(p => [p, p.splice(1)])
26
- .map(([p, ps]) => ps.reduce((t: ToText, s) => (t as any)[s], text(subject[p[0]])))
27
- .map(p => p.toString()).value;
28
-
29
26
  private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {
30
27
  const i1 = tmpl.indexOf(`{${key}`);
31
28
  if (i1 < 0) {
@@ -36,17 +33,157 @@ export class Template implements Text {
36
33
  };
37
34
 
38
35
  private readonly object = (): string => {
39
- return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.subject, p.replace('this.', ''))), this.template);
36
+ return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, textValue(this.subject, p.replace('this.', ''))), this.template);
40
37
  };
41
38
 
42
39
  private readonly option = (tmpl: string, prop: string): string => {
43
- return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.options, p)), tmpl);
40
+ return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, textValue(this.options, p)), tmpl);
44
41
  };
45
42
  }
46
43
 
47
- export const template = (tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text =>
48
- new Template(asString(tmpl), subject, {
44
+ export function template(tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text {
45
+ return new Template(asString(tmpl), subject, {
49
46
  type: toName(subject),
50
47
  subject: text(JSON.stringify(subject)),
51
48
  ...options,
52
49
  });
50
+ }
51
+
52
+ export class ToText implements Text {
53
+ constructor(readonly subject: string) {}
54
+
55
+ get cap(): ToText {
56
+ return this.map(s => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase());
57
+ }
58
+
59
+ get title(): ToText {
60
+ return this.map(s =>
61
+ s
62
+ .split(' ')
63
+ .map(w => text(w).cap)
64
+ .join(' ')
65
+ );
66
+ }
67
+
68
+ get pascal(): ToText {
69
+ return this.title.replace(' ', '');
70
+ }
71
+
72
+ get lower(): ToText {
73
+ return this.map(s => s.toLowerCase());
74
+ }
75
+
76
+ get upper(): ToText {
77
+ return this.map(s => s.toUpperCase());
78
+ }
79
+
80
+ get camel(): ToText {
81
+ return this.title.trim.map(s => `${s.charAt(0).toLowerCase()}${s.slice(1)}`);
82
+ }
83
+
84
+ get kebab(): ToText {
85
+ return this.lower.replace(' ', '-');
86
+ }
87
+
88
+ get strictKebab(): ToText {
89
+ return this.map(s => s.replace(/[^a-z\d]+/gi, ' ').trim()).kebab;
90
+ }
91
+
92
+ get slug(): ToText {
93
+ return this.map(s =>
94
+ s
95
+ .replace(/ß/g, 'ss')
96
+ .normalize('NFKD')
97
+ .replace(/[\u0300-\u036F]/g, '')
98
+ .toLowerCase()
99
+ .replace(/[^a-z\d]+/g, '-')
100
+ .replace(/(^-)|(-$)/g, '')
101
+ );
102
+ }
103
+
104
+ get snake(): ToText {
105
+ return this.upper.replace(' ', '_');
106
+ }
107
+
108
+ get plural(): ToText {
109
+ return this.ifLike('') ?? this.add('s');
110
+ }
111
+
112
+ get space(): ToText {
113
+ return this.map(s => s.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/[_-]/g, ' '));
114
+ }
115
+
116
+ get sentence(): ToText {
117
+ return this.isEmpty ? this : this.map(s => `${s.charAt(0).toUpperCase()}${s.slice(1)}.`);
118
+ }
119
+
120
+ get initials(): ToText {
121
+ return this.map(s =>
122
+ s
123
+ .split(' ')
124
+ .map(w => w[0])
125
+ .join('')
126
+ );
127
+ }
128
+
129
+ get trim(): ToText {
130
+ return this.map(s => s.replace(/[- ,_#]/g, ''));
131
+ }
132
+
133
+ get isEmpty(): boolean {
134
+ return isEmpty(this.toString());
135
+ }
136
+
137
+ parse = (subject: unknown, options = {}): ToText => text(template(this.subject, subject, { type: toName(subject), ...options }));
138
+
139
+ is = (...others: unknown[]): boolean => others.some(o => this.toString() === text(o).toString());
140
+
141
+ equals = this.is;
142
+
143
+ isLike = (...others: unknown[]): boolean => others.some(o => this.trim.lower.is(text(o).trim.lower));
144
+
145
+ ifLike = (...others: unknown[]): Optional<this> => (this.isLike(...others) ? this : undefined);
146
+
147
+ endsWith = (end?: unknown): boolean => this.subject.endsWith(asString(end));
148
+
149
+ startsWith = (end?: unknown): boolean => this.subject.startsWith(asString(end));
150
+
151
+ first = (n: number): ToText => this.map(s => s.substring(0, n));
152
+
153
+ last = (n: number): ToText => this.map(s => s.substring(s.length - n));
154
+
155
+ map = (func: Get<string, string>): ToText => text(ofGet(func, this.subject));
156
+
157
+ replace = (search: Text, replace: Text): ToText => this.map(s => replaceAll(s, search, replace));
158
+
159
+ add = (add?: unknown, separator = ''): ToText => this.map(s => (isNotEmpty(add) ? `${s}${separator}${text(add)}` : s));
160
+
161
+ with = (separator: string, ...other: unknown[]): ToText =>
162
+ this.map(s =>
163
+ toList(s)
164
+ .add(...other.map(u => text(u).toString()))
165
+ .filter(s => isNotEmpty(s))
166
+ .join(separator)
167
+ );
168
+
169
+ toString(): string {
170
+ return this.subject;
171
+ }
172
+
173
+ toJSON(): JsonValue {
174
+ return this.subject;
175
+ }
176
+ }
177
+
178
+ export function text(subject?: unknown, alt = ''): ToText {
179
+ const sub = subject ? asString(subject) : alt;
180
+ return new ToText(sub !== '[object Object]' ? sub : '');
181
+ }
182
+
183
+ export function textValue(subject: any, prop: string): string {
184
+ const p = prop.split('.');
185
+ return p
186
+ .splice(1)
187
+ .reduce((t: ToText, s) => (t as any)[s], text(subject?.[p[0]]))
188
+ .toString();
189
+ }
package/src/types/Text.ts CHANGED
@@ -1,11 +1,6 @@
1
- import { isDefined, isEmpty, isNotEmpty } from './Is';
2
- import { toName } from './Constructor';
3
- import { template } from './Template';
1
+ import { isDefined } from './Is';
4
2
  import { isFunc } from './Func';
5
3
  import { Get, ofGet } from './Get';
6
- import { toList } from './List';
7
- import { JsonValue } from './Json';
8
- import { Optional } from './Types';
9
4
 
10
5
  export type Text = { toString(): string };
11
6
 
@@ -19,138 +14,8 @@ export const toWords = (input: unknown): string[] => {
19
14
  return asString(input)
20
15
  .replace(/(\p{Lower})(\p{Upper})/gu, '$1 $2')
21
16
  .replace(/(\p{Upper})(\p{Upper}\p{Lower})/gu, '$1 $2')
22
- .split(/[_\W]+/g).filter(Boolean);
17
+ .split(/[_\W]+/g)
18
+ .filter(Boolean);
23
19
  };
24
20
 
25
21
  export const kebab = (s = ''): string => toWords(s).join('-').toLowerCase();
26
-
27
- export class ToText implements Text {
28
- constructor(readonly subject: string) {}
29
-
30
- get cap(): ToText {
31
- return this.map(s => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase());
32
- }
33
-
34
- get title(): ToText {
35
- return this.map(s =>
36
- s
37
- .split(' ')
38
- .map(w => text(w).cap)
39
- .join(' ')
40
- );
41
- }
42
-
43
- get pascal(): ToText {
44
- return this.title.replace(' ', '');
45
- }
46
-
47
- get lower(): ToText {
48
- return this.map(s => s.toLowerCase());
49
- }
50
-
51
- get upper(): ToText {
52
- return this.map(s => s.toUpperCase());
53
- }
54
-
55
- get camel(): ToText {
56
- return this.title.trim.map(s => `${s.charAt(0).toLowerCase()}${s.slice(1)}`);
57
- }
58
-
59
- get kebab(): ToText {
60
- return this.lower.replace(' ', '-');
61
- }
62
-
63
- get strictKebab(): ToText {
64
- return this.map(s => s.replace(/[^a-z\d]+/gi, ' ').trim()).kebab;
65
- }
66
-
67
- get slug(): ToText {
68
- return this.map(s =>
69
- s
70
- .replace(/ß/g, 'ss')
71
- .normalize('NFKD')
72
- .replace(/[\u0300-\u036F]/g, '')
73
- .toLowerCase()
74
- .replace(/[^a-z\d]+/g, '-')
75
- .replace(/(^-)|(-$)/g, '')
76
- );
77
- }
78
-
79
- get snake(): ToText {
80
- return this.upper.replace(' ', '_');
81
- }
82
-
83
- get plural(): ToText {
84
- return this.ifLike('') ?? this.add('s');
85
- }
86
-
87
- get space(): ToText {
88
- return this.map(s => s.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/[_-]/g, ' '));
89
- }
90
-
91
- get sentence(): ToText {
92
- return this.isEmpty ? this : this.map(s => `${s.charAt(0).toUpperCase()}${s.slice(1)}.`);
93
- }
94
-
95
- get initials(): ToText {
96
- return this.map(s =>
97
- s
98
- .split(' ')
99
- .map(w => w[0])
100
- .join('')
101
- );
102
- }
103
-
104
- get trim(): ToText {
105
- return this.map(s => s.replace(/[- ,_#]/g, ''));
106
- }
107
-
108
- get isEmpty(): boolean {
109
- return isEmpty(this.toString());
110
- }
111
-
112
- parse = (subject: unknown, options = {}): ToText => text(template(this.subject, subject, { type: toName(subject), ...options }));
113
-
114
- is = (...others: unknown[]): boolean => others.some(o => this.toString() === text(o).toString());
115
-
116
- equals = this.is;
117
-
118
- isLike = (...others: unknown[]): boolean => others.some(o => this.trim.lower.is(text(o).trim.lower));
119
-
120
- ifLike = (...others: unknown[]): Optional<this> => (this.isLike(...others) ? this : undefined);
121
-
122
- endsWith = (end?: unknown): boolean => this.subject.endsWith(asString(end));
123
-
124
- startsWith = (end?: unknown): boolean => this.subject.startsWith(asString(end));
125
-
126
- first = (n: number): ToText => this.map(s => s.substring(0, n));
127
-
128
- last = (n: number): ToText => this.map(s => s.substring(s.length - n));
129
-
130
- map = (func: Get<string, string>): ToText => text(ofGet(func, this.subject));
131
-
132
- replace = (search: Text, replace: Text): ToText => this.map(s => replaceAll(s, search, replace));
133
-
134
- add = (add?: unknown, separator = ''): ToText => this.map(s => (isNotEmpty(add) ? `${s}${separator}${text(add)}` : s));
135
-
136
- with = (separator: string, ...other: unknown[]): ToText =>
137
- this.map(s =>
138
- toList(s)
139
- .add(...other.map(u => text(u).toString()))
140
- .filter(s => isNotEmpty(s))
141
- .join(separator)
142
- );
143
-
144
- toString(): string {
145
- return this.subject;
146
- }
147
-
148
- toJSON(): JsonValue {
149
- return this.subject;
150
- }
151
- }
152
-
153
- export const text = (subject?: unknown, alt = ''): ToText => {
154
- const sub = subject ? asString(subject) : alt;
155
- return new ToText(sub !== '[object Object]' ? sub : '');
156
- };
package/src/types/Try.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { isDefined, isEmpty, isTrue } from './Is';
2
- import { validate } from '../validation';
2
+ import { validate } from '../validation/Validate';
3
3
  import { Construct, Constructor, ofConstruct } from './Constructor';
4
4
  import { Validatable } from './Validatable';
5
5
  import { Get, ofGet } from './Get';
package/src/types/Uri.ts CHANGED
@@ -3,10 +3,11 @@ import { asString, Text } from './Text';
3
3
  import { toName } from './Constructor';
4
4
  import { ctx } from './Context';
5
5
  import { List, toList } from './List';
6
- import { entries, meta } from './Meta';
6
+ import { meta } from './Meta';
7
7
  import { tryTo } from './Try';
8
8
  import { Optional } from './Types';
9
9
  import { OneOrMore, toArray } from './Array';
10
+ import { entries } from './Object';
10
11
 
11
12
  export type Segment = Text & { key?: string; segment?: string; query?: (value: unknown) => string };
12
13
 
@@ -1,4 +1,7 @@
1
- import { asString, isDefined, JsonValue, Validatable } from './index';
1
+ import { Validatable } from './Validatable';
2
+ import { isDefined } from './Is';
3
+ import { JsonValue } from './Json';
4
+ import { asString } from './Text';
2
5
 
3
6
  export class Value<V = string> implements Validatable {
4
7
  constructor(readonly value: V) {
@@ -1,4 +1,4 @@
1
- import { Json } from '../types';
1
+ import type { Json } from '../types/Json';
2
2
 
3
3
  export const base64 = {
4
4
  decode: (data: string): string => Buffer.from(data, 'base64').toString('utf-8'),
@@ -1,7 +1,10 @@
1
- import { asString } from '../types';
1
+ import { asString } from '../types/Text';
2
2
 
3
3
  export class Convert<From = unknown, To = unknown> {
4
- constructor(public readonly from: (f: From) => To, public readonly to: (t: To) => From) {}
4
+ constructor(
5
+ public readonly from: (f: From) => To,
6
+ public readonly to: (t: To) => From
7
+ ) {}
5
8
  }
6
9
 
7
10
  export const convert = {
package/src/utils/If.ts CHANGED
@@ -1,4 +1,6 @@
1
- import { Construct, isDefined, isNotEmpty, isTrue, ofConstruct, Optional } from '../types';
1
+ import { isDefined, isNotEmpty, isTrue } from '../types/Is';
2
+ import { Optional } from '../types/Types';
3
+ import { Construct, ofConstruct } from '../types/Constructor';
2
4
 
3
5
  export function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;
4
6
  export function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;
@@ -1,3 +1,3 @@
1
- import { isNotPresent } from '../types';
1
+ import { isNotPresent } from '../types/Is';
2
2
 
3
3
  export const isLoading = (...targets: unknown[]): boolean => isNotPresent(...targets);
package/src/utils/Log.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Optional } from '../types';
1
+ import { Optional } from '../types/Types';
2
2
 
3
3
  export function log<T>(t: T): T;
4
4
  export function log<T>(label: string, t: T): T;
@@ -1,7 +1,15 @@
1
- import { Construct, Get, isA, isEmpty, json, Json, JsonValue, List, meta, ofConstruct, ofGet, Optional, toList, TypeGuard } from '../types';
2
1
  import { Property, PropertyOptions } from './Property';
3
2
  import { State } from './State';
4
3
  import { ifNotEmpty } from './If';
4
+ import { json, Json, JsonValue } from '../types/Json';
5
+ import { Optional } from '../types/Types';
6
+ import { TypeGuard } from '../types/TypeGuard';
7
+ import { isA } from '../types/IsA';
8
+ import { List, toList } from '../types/List';
9
+ import { meta } from '../types/Meta';
10
+ import { isEmpty } from '../types/Is';
11
+ import { Get, ofGet } from '../types/Get';
12
+ import { Construct, ofConstruct } from '../types/Constructor';
5
13
 
6
14
  export type Mapping = {
7
15
  property: string;
@@ -16,7 +24,10 @@ export type MapOptions = { startFrom: MapStartFrom };
16
24
  export class Mapper extends State implements Mapping {
17
25
  protected readonly map = mappings;
18
26
 
19
- constructor(readonly options: MapOptions = { startFrom: 'scratch' }, readonly property = '') {
27
+ constructor(
28
+ readonly options: MapOptions = { startFrom: 'scratch' },
29
+ readonly property = ''
30
+ ) {
20
31
  super();
21
32
  }
22
33
 
@@ -1,4 +1,6 @@
1
- import { ErrorOrigin, List, toArray, toList } from '../types';
1
+ import { toArray } from '../types/Array';
2
+ import { ErrorOrigin } from '../types/ErrorOrigin';
3
+ import { List, toList } from '../types/List';
2
4
 
3
5
  type Pro<A> = A | PromiseLike<A>;
4
6
  type Aw<A> = Awaited<A>;
@@ -1,6 +1,7 @@
1
1
  import { convert, Convert } from './Convert';
2
- import { Get, Json, JsonValue, ofGet } from '../types';
3
2
  import { Mapping } from './Mapper';
3
+ import { Get, ofGet } from '../types/Get';
4
+ import { Json, JsonValue } from '../types/Json';
4
5
 
5
6
  export type PropertyOptions<T = unknown> = {
6
7
  convert?: Convert<any, any>;
@@ -9,7 +10,10 @@ export type PropertyOptions<T = unknown> = {
9
10
  };
10
11
 
11
12
  export class Property<T = unknown> implements Mapping {
12
- constructor(readonly property: string, readonly options?: PropertyOptions) {
13
+ constructor(
14
+ readonly property: string,
15
+ readonly options?: PropertyOptions
16
+ ) {
13
17
  this.options = { ...options, convert: options?.convert ?? convert.default };
14
18
  }
15
19
 
@@ -1,7 +1,13 @@
1
- import { Id, text, Text } from '../types';
1
+ import type { Text } from '../types/Text';
2
+ import { text } from '../types/Template';
3
+ import { Id } from '../types/Id';
2
4
 
3
5
  export class Sentence implements Text {
4
- constructor(word: Text, pre?: Sentence, private sentence: Text[] = (pre?.sentence ?? []).concat(word)) {}
6
+ constructor(
7
+ word: Text,
8
+ pre?: Sentence,
9
+ private sentence: Text[] = (pre?.sentence ?? []).concat(word)
10
+ ) {}
5
11
 
6
12
  toString(): string {
7
13
  return text(this.sentence.join(' ')).sentence.toString();
@@ -1,4 +1,4 @@
1
- import { Construct, ofConstruct } from '../types';
1
+ import { Construct, ofConstruct } from '../types/Constructor';
2
2
 
3
3
  export class State {
4
4
  constructor(protected readonly state: any = {}) {}
package/src/utils/View.ts CHANGED
@@ -1,26 +1,15 @@
1
- import {
2
- asJson,
3
- choose,
4
- Constructor,
5
- DontInfer,
6
- isArray,
7
- isBoolean,
8
- isConstructor,
9
- isEqual,
10
- isFunction,
11
- isPageList,
12
- isString,
13
- json,
14
- Json,
15
- List,
16
- meta,
17
- PageList,
18
- Primitive,
19
- toPageList,
20
- use,
21
- } from '../types';
22
1
  import { traverse } from './Traverse';
23
2
  import { ifDefined } from './If';
3
+ import { Primitive } from '../types/Primitive';
4
+ import { Constructor, isConstructor, use } from '../types/Constructor';
5
+ import { asJson, json, Json } from '../types/Json';
6
+ import { choose } from '../types/Case';
7
+ import { isArray, isBoolean, isFunction, isString } from '../types/Is';
8
+ import { meta } from '../types/Meta';
9
+ import { isPageList, PageList, toPageList } from '../types/PageList';
10
+ import { List } from '../types/List';
11
+ import { isEqual } from '../types/IsEqual';
12
+ import { DontInfer } from '../types/Types';
24
13
 
25
14
  type Func<T = unknown> = (a: any, key?: string) => T;
26
15
  type Viewer = { key: string; f: Func };
@@ -59,7 +48,11 @@ const toViewers = (views: ViewRecord): Viewer[] =>
59
48
  .map(([k, v]) => toViewer(k, v));
60
49
 
61
50
  export class View<V = Json> {
62
- constructor(private views = {} as ViewRecord<V>, readonly startsFrom: 'scratch' | 'source' = 'scratch', readonly viewers: Viewer[] = toViewers(views)) {}
51
+ constructor(
52
+ private views = {} as ViewRecord<V>,
53
+ readonly startsFrom: 'scratch' | 'source' = 'scratch',
54
+ readonly viewers: Viewer[] = toViewers(views)
55
+ ) {}
63
56
 
64
57
  get fromSource(): View<V> {
65
58
  return new View(this.views, 'source', this.viewers);
@@ -1,5 +1,13 @@
1
- import { Func, inFuture, inPast, isBoolean, isDefined, isFunction, isIn, isNotEmpty, isString, List, meta, Results, text, Text, toList, tryTo } from '../types';
2
1
  import { validate, Validator } from './Validate';
2
+ import { Func } from '../types/Func';
3
+ import { Results } from '../types/Results';
4
+ import { meta } from '../types/Meta';
5
+ import { List, toList } from '../types/List';
6
+ import { isBoolean, isDefined, isFunction, isIn, isNotEmpty, isString } from '../types/Is';
7
+ import { tryTo } from '../types/Try';
8
+ import { text } from '../types/Template';
9
+ import { inFuture, inPast } from '../types/IsDate';
10
+ import type { Text } from '../types/Text';
3
11
 
4
12
  export type Constraint = Func<boolean | Results, any>;
5
13
 
@@ -1,26 +1,19 @@
1
- import {
2
- asString,
3
- choose,
4
- isArray,
5
- isEnum,
6
- isFunction,
7
- isResults,
8
- isValidatable,
9
- isValue,
10
- List,
11
- meta,
12
- Results,
13
- TemplateOptions,
14
- text,
15
- Text,
16
- toList,
17
- toName,
18
- toResult,
19
- toResults,
20
- tryTo,
21
- } from '../types';
22
1
  import { Constraint } from './Contraints';
23
2
  import { when } from './When';
3
+ import { text } from '../types/Template';
4
+ import type { TemplateOptions } from '../types/Template';
5
+ import { isResults, Results, toResults } from '../types/Results';
6
+ import { toName } from '../types/Constructor';
7
+ import { toResult } from '../types/Result';
8
+ import { List, toList } from '../types/List';
9
+ import { meta } from '../types/Meta';
10
+ import { isArray, isFunction } from '../types/Is';
11
+ import { asString } from '../types/Text';
12
+ import { choose } from '../types/Case';
13
+ import { isEnum } from '../types/Enum';
14
+ import { isValue } from '../types/Value';
15
+ import { isValidatable } from '../types/Validatable';
16
+ import type { Text } from '../types/Text';
24
17
 
25
18
  export type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };
26
19
 
@@ -32,16 +25,20 @@ const validators = (subject: unknown): List<Validator> =>
32
25
  .keys<List<Validator>>('constraint')
33
26
  .reduce((list, vs) => list.add(vs), toList<Validator>());
34
27
 
35
- const runValidator = (v: Validator, subject?: unknown): Results =>
36
- tryTo(() => (isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property]))
37
- .map(actual => [actual, v.constraint(actual)])
38
- .map(([actual, res]) => (isResults(res) ? res : !res ? asResults(subject, v.text, { ...v, actual }) : toResults()))
39
- .recover(e => asResults(subject, asString(e))).value;
28
+ const runValidator = (v: Validator, subject?: unknown): Results => {
29
+ try {
30
+ const actual = isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property];
31
+ const constraint = v.constraint(actual);
32
+ return isResults(constraint) ? constraint : !constraint ? asResults(subject, v.text, { ...v, actual }) : toResults();
33
+ } catch (e) {
34
+ return asResults(subject, asString(e));
35
+ }
36
+ };
40
37
 
41
38
  const constraints = (subject?: unknown): Results =>
42
- tryTo(() => validators(subject))
43
- .map(vs => vs.mapDefined(v => runValidator(v, subject)))
44
- .map(res => res.reduce((rs, r) => rs.add(...r.results), toResults())).value;
39
+ validators(subject)
40
+ .map(vs => runValidator(vs, subject))
41
+ .reduce((rs, r) => rs.add(...r.results), toResults());
45
42
 
46
43
  export const validate = (subject?: unknown): Results =>
47
44
  choose(subject)
@@ -1,9 +1,19 @@
1
- import { Constructor, ErrorOrigin, Exception, Get, isDefined, isEmpty, isIn, ofGet, Predicate, Results, toArray } from '../types';
2
1
  import { validate } from './Validate';
3
- import { reject, resolve } from '../utils';
2
+ import { Results } from '../types/Results';
3
+ import { Constructor } from '../types/Constructor';
4
+ import { Get, ofGet, Predicate } from '../types/Get';
5
+ import { isDefined, isEmpty, isIn } from '../types/Is';
6
+ import { toArray } from '../types/Array';
7
+ import { ErrorOrigin } from '../types/ErrorOrigin';
8
+ import { reject, resolve } from '../utils/Promise';
9
+ import { Exception } from '../types/Exception';
4
10
 
5
11
  export class When<W> {
6
- constructor(readonly subject: W, readonly valid = true, private results?: Results) {}
12
+ constructor(
13
+ readonly subject: W,
14
+ readonly valid = true,
15
+ private results?: Results
16
+ ) {}
7
17
 
8
18
  get not(): When<W> {
9
19
  return this.clone(!this.valid);
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sql/Count.ts"],"sourcesContent":["import { ifGet } from '../types';\nimport { Select } from './Select';\n\nexport class Count extends Select {\n toString(): string {\n return (\n `SELECT COUNT(*)` +\n ifGet(this._top, ` TOP ${this._top}`, '') +\n ` FROM ${this.table}` +\n ifGet(this.clauses.length, ` WHERE ${this.clauses.join(' AND ')}`, '') +\n ifGet(this.grouped.length, ` GROUP BY ${this.grouped.join(', ')}`, '') +\n ';'\n );\n }\n}\n"],"mappings":";;;;;;;;AAGO,IAAM,QAAN,cAAoB,OAAO;AAAA,EAChC,WAAmB;AACjB,WACE,oBACA,MAAM,KAAK,MAAM,QAAQ,KAAK,IAAI,IAAI,EAAE,IACxC,SAAS,KAAK,KAAK,KACnB,MAAM,KAAK,QAAQ,QAAQ,UAAU,KAAK,QAAQ,KAAK,OAAO,CAAC,IAAI,EAAE,IACrE,MAAM,KAAK,QAAQ,QAAQ,aAAa,KAAK,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,IACrE;AAAA,EAEJ;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/services/ApiGateway.ts"],"sourcesContent":["import { Api, RouteOptions } from './Api';\nimport { FetchOptions, Gateway, Json, Optional, PageList, toPageList, Uri, use } from '../types';\nimport { RequestOptions } from '../http';\n\nexport class ApiGateway extends Gateway<RouteOptions> {\n constructor(readonly api: Api = new Api()) {\n super();\n }\n\n get(uri: Uri, options?: RouteOptions): Promise<PageList<Json>> {\n return this.api.get(uri, options).then(r => use(r.body.data, d => toPageList(d?.items, { total: d?.totalItems, ...d?.meta })));\n }\n\n getOne(uri: Uri, options?: RouteOptions): Promise<Optional<Json>> {\n return this.get(uri, options).then(r => r.first());\n }\n\n post(uri: Uri, item?: Json, options?: RouteOptions): Promise<Json> {\n return this.api.post(uri, item, options).then(r => r.body.data?.items.first() ?? {});\n }\n\n postSearch(uri: Uri, options?: RequestOptions | FetchOptions): Promise<PageList<Json>> {\n return this.api.post(uri, options).then(r => use(r.body.data, d => toPageList(d?.items, { total: d?.totalItems, ...d?.meta })));\n }\n\n patch(uri: Uri, item?: Json, options?: RouteOptions): Promise<Json> {\n return this.api.patch(uri, item, options).then(r => r.body.data?.items.first() ?? {});\n }\n\n put(uri: Uri, item?: Json, options?: RouteOptions): Promise<Json> {\n return this.api.put(uri, item, options).then(r => r.body.data?.items.first() ?? {});\n }\n\n delete(uri: Uri, options?: RouteOptions): Promise<boolean> {\n return this.api.delete(uri, options).then(() => true);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAIO,IAAM,aAAN,cAAyB,QAAsB;AAAA,EACpD,YAAqB,MAAW,IAAI,IAAI,GAAG;AACzC,UAAM;AADa;AAAA,EAErB;AAAA,EAEA,IAAI,KAAU,SAAiD;AAC7D,WAAO,KAAK,IAAI,IAAI,KAAK,OAAO,EAAE,KAAK,OAAK,IAAI,EAAE,KAAK,MAAM,OAAK,WAAW,GAAG,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAAA,EAC/H;AAAA,EAEA,OAAO,KAAU,SAAiD;AAChE,WAAO,KAAK,IAAI,KAAK,OAAO,EAAE,KAAK,OAAK,EAAE,MAAM,CAAC;AAAA,EACnD;AAAA,EAEA,KAAK,KAAU,MAAa,SAAuC;AACjE,WAAO,KAAK,IAAI,KAAK,KAAK,MAAM,OAAO,EAAE,KAAK,OAAK,EAAE,KAAK,MAAM,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,EACrF;AAAA,EAEA,WAAW,KAAU,SAAkE;AACrF,WAAO,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,KAAK,OAAK,IAAI,EAAE,KAAK,MAAM,OAAK,WAAW,GAAG,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAAA,EAChI;AAAA,EAEA,MAAM,KAAU,MAAa,SAAuC;AAClE,WAAO,KAAK,IAAI,MAAM,KAAK,MAAM,OAAO,EAAE,KAAK,OAAK,EAAE,KAAK,MAAM,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,EACtF;AAAA,EAEA,IAAI,KAAU,MAAa,SAAuC;AAChE,WAAO,KAAK,IAAI,IAAI,KAAK,MAAM,OAAO,EAAE,KAAK,OAAK,EAAE,KAAK,MAAM,MAAM,MAAM,KAAK,CAAC,CAAC;AAAA,EACpF;AAAA,EAEA,OAAO,KAAU,SAA0C;AACzD,WAAO,KAAK,IAAI,OAAO,KAAK,OAAO,EAAE,KAAK,MAAM,IAAI;AAAA,EACtD;AACF;","names":[]}