@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
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/types/Func.ts","../src/types/Primitive.ts","../src/types/Constructor.ts","../src/types/Is.ts","../src/types/Array.ts","../src/types/Meta.ts","../src/types/IsA.ts","../src/types/Get.ts","../src/utils/Base64.ts","../src/utils/Convert.ts","../src/utils/If.ts","../src/utils/Loading.ts","../src/utils/Log.ts","../src/utils/Property.ts","../src/utils/State.ts","../src/utils/Mapper.ts","../src/utils/Promise.ts","../src/utils/Sentence.ts","../src/utils/Traverse.ts","../src/utils/View.ts","../src/utils/Wait.ts","../src/types/Json.ts","../src/validation/When.ts","../src/validation/Validate.ts","../src/validation/Contraints.ts","../src/types/Try.ts","../src/types/List.ts","../src/types/Template.ts","../src/types/Text.ts","../src/types/Builder.ts","../src/types/Cache.ts","../src/types/CacheAge.ts","../src/types/Case.ts","../src/types/Context.ts","../src/types/Enum.ts","../src/types/Exception.ts","../src/types/Falsy.ts","../src/types/Gateway.ts","../src/types/Uuid.ts","../src/types/Id.ts","../src/types/IsDate.ts","../src/types/IsEqual.ts","../src/types/Message.ts","../src/types/Nullish.ts","../src/types/Number.ts","../src/types/PageList.ts","../src/types/Parser.ts","../src/types/Repository.ts","../src/types/Result.ts","../src/types/Results.ts","../src/types/Sort.ts","../src/types/Tag.ts","../src/types/Uri.ts","../src/types/Validatable.ts","../src/types/Value.ts","../src/data/Condition.ts","../src/data/InMemoryGateway.ts","../src/data/Database.ts","../src/data/Field.ts","../src/domain/enums/Country.ts","../src/domain/Struct.ts","../src/domain/values/DateTime.ts","../src/domain/values/EAN.ts","../src/domain/values/Email.ts","../src/domain/values/IBAN.ts","../src/domain/values/PostalCode.ts","../src/domain/values/Slug.ts","../src/domain/values/Url.ts","../src/domain/structs/Address.ts","../src/domain/structs/Dimension.ts","../src/domain/structs/Box.ts","../src/domain/structs/Money.ts","../src/domain/structs/Name.ts","../src/domain/structs/Weight.ts","../src/domain/enums/Currency.ts","../src/domain/enums/Environment.ts","../src/domain/enums/Locale.ts","../src/domain/enums/UnitOfMeasurement.ts","../src/domain/enums/UnitOfWeight.ts","../src/domain/Audit.ts","../src/domain/Child.ts","../src/domain/Entity.ts","../src/domain/Repo.ts","../src/domain/Typo.ts","../src/http/CacheControl.ts","../src/http/ContentType.ts","../src/http/HttpHeader.ts","../src/http/HttpStatus.ts","../src/http/HttpVerb.ts","../src/http/OriginatedError.ts","../src/http/RequestOptions.ts","../src/http/RestResult.ts","../src/http/Response.ts","../src/http/Verb.ts","../src/health/HealthUri.ts","../src/resources/Req.ts","../src/resources/Requires.ts","../src/resources/Route.ts","../src/resources/Service.ts","../src/health/HealthResource.ts","../src/process/Scope.ts","../src/process/App.ts","../src/process/Search.ts","../src/process/Manage.ts","../src/process/UseCase.ts","../src/services/AxiosProvider.ts","../src/services/Api.ts","../src/services/ApiGateway.ts","../src/services/RouteGateway.ts","../src/services/MappedRouteGateway.ts","../src/services/ViewRouteGateway.ts","../src/security/Jwt.ts","../src/sql/Clause.ts","../src/sql/Column.ts","../src/sql/SqlQuery.ts","../src/sql/Delete.ts","../src/sql/Insert.ts","../src/sql/Join.ts","../src/sql/Select.ts","../src/sql/Update.ts","../src/sql/Count.ts","../src/sql/Table.ts","../src/sql/TableGateway.ts"],"sourcesContent":["export * from './data';\nexport * from './domain';\nexport * from './http';\nexport * from './health';\nexport * from './process';\nexport * from './resources';\nexport * from './services';\nexport * from './security';\nexport * from './sql';\nexport * from './types';\nexport * from './utils';\nexport * from './validation';\n","export type Func<T, Args = unknown> = (...args: Args[]) => T;\n\nexport const isFunc = <T, Args>(o?: unknown): o is (...params: Args[]) => T => !!o && typeof o === 'function';\n","import { isIn } from './Is';\n\nexport type Primitive = string | number | bigint | boolean | symbol | null | undefined;\n\nexport const isPrimitive = (v?: unknown): v is Primitive => {\n return v === null || v === undefined || isIn(typeof v, ['string', 'number', 'bigint', 'boolean', 'symbol']);\n};\n","import { Get } from './Get';\nimport { isFunc } from './Func';\nimport { isDefined } from './Is';\nimport { isPrimitive } from './Primitive';\nimport { Optional } from './Types';\n\nexport type Constructor<T = unknown> = { new (...args: any[]): T };\n\nexport type Construct<Out, In = any> = Get<Out, In> | Constructor<Out>;\n\nexport const isConstructor = <T>(c?: unknown): c is Constructor<T> => (isDefined(c) && isFunc<T, unknown>(c) && c.prototype && c.prototype.constructor) === c;\n\nexport const ofConstruct = <T>(c: Construct<T>, ...args: unknown[]): T => (isConstructor<T>(c) ? new c(...args) : isFunc<T, unknown>(c) ? c(...args) : c);\n\nexport const toName = (subject?: unknown, postfix = ''): string => (subject as any)?.constructor?.name?.replace(postfix, '').toLowerCase() ?? '';\n\nconst isPromise = <T>(value: unknown): value is Promise<T> => {\n return value instanceof Promise;\n};\n\nexport const on = <T, R>(t: T, f: (t: T) => R): R extends Promise<unknown> ? Promise<T> : T => {\n const result = f(t);\n return (isPromise(result) ? result.then(() => t) : t) as R extends Promise<unknown> ? Promise<T> : T;\n};\n\nexport const use = <T, Out>(t: T, f: (t: T) => Out): Out => f(t);\n\nexport const ifA = <T>(c: Constructor<T>, t?: unknown, alt?: unknown): Optional<T> => (!isPrimitive(t) && t instanceof c ? t : alt ? ifA(c, alt) : undefined);\n\nexport type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;\n }[Keys];\n","import { Constructor, use } from './Constructor';\nimport { Identity } from './Identity';\n\nexport const isDefined = <T = unknown>(o?: T): o is NonNullable<T> => o !== undefined && o !== null;\n\nexport const isUndefined = (v?: unknown): v is never => v === undefined || v === null;\n\nexport const isEmpty = (o?: unknown): boolean => o === '' || o === null || o === undefined || (isArray(o) && o.length === 0);\n\nexport const isNotEmpty = <T = unknown>(o?: unknown): o is NonNullable<T> => o !== '' && o !== null && o !== undefined && (!isArray(o) || o.length > 0);\n\nexport const isString = (o?: unknown): o is string => o instanceof String || typeof o === 'string';\n\nexport const isIsoDateString = (o?: unknown): o is string =>\n isString(o) && /^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)$/.test(o);\n\nexport const isBoolean = (o?: unknown): o is boolean => isDefined(o) && typeof o === 'boolean';\n\nexport const isTrue = (o?: unknown): o is true => (isFunction(o) ? isTrue(o()) : isBoolean(o) ? o : !!o);\n\nexport const isNumber = (o?: unknown): o is number => isDefined(o) && typeof o === 'number' && !Number.isNaN(o);\n\nexport const isObject = (o?: unknown): o is Record<string, unknown> => o != null && typeof o === 'object' && !isArray(o);\n\nexport const isEmptyObject = (o?: unknown): boolean => isObject(o) && Object.getOwnPropertyNames(o).length === 0;\n\nexport const isFunction = (o?: unknown): o is (...params: unknown[]) => unknown => isDefined(o) && typeof o === 'function';\n\nexport const isArray = <T = any>(o?: unknown): o is Array<T> => isDefined(o) && o instanceof Array;\n\nexport const isInstance = <T>(ctor: Constructor<T>, o?: unknown): o is T => isFunction(ctor) && o instanceof ctor;\n\nexport const isIn = (o: unknown, values: unknown[]): boolean => isArray(values) && values.some(v => v === o);\n\nexport const isIntersecting = (o?: unknown[], values?: unknown[]): boolean => isArray(o) && isArray(values) && o.some(ov => isIn(ov, values));\n\nexport const isError = (e: unknown): e is Error => isDefined(e) && e instanceof Error;\n\nexport const isIdentity = (by: unknown): by is Identity => use(by as Identity, b => isObject(b) && isDefined(b.id));\n\nexport const isNotPresent = (...os: unknown[]): boolean =>\n os.some(\n o =>\n o === null ||\n o === undefined ||\n o === '' ||\n (o instanceof Array && o.length === 0) ||\n (typeof o === 'object' && Object.getOwnPropertyNames(o).length === 0)\n );\n\nexport const isPresent = (...os: unknown[]): boolean => !isNotPresent(...os);\n","import { isArray, isDefined } from './Is';\nimport { on, use } from './Constructor';\n\nexport type OneOrMore<T> = T | Array<T>;\nexport type ArrayLike<T> = OneOrMore<T>[];\n\nexport const toArray = <T>(...items: ArrayLike<T>): T[] =>\n items.length > 1 ? (items as T[]) : isArray(items[0]) ? items[0] : isDefined(items[0]) ? [items[0]] : [];\n\nexport const toObject = <T>(key: keyof T, ...items: ArrayLike<T>): Record<string | number | symbol, T> =>\n toArray(...items).reduce((o: any, i) => {\n o[i[key]] = i;\n return o;\n }, {});\n\nexport const array = {\n merge: (first: any[] = [], second: any[] = [], firstKey = 'id', secondKey = 'id'): any[] =>\n first.map(f => ({\n ...f,\n ...second.find(s => isDefined(s[secondKey]) && isDefined(f[firstKey]) && s[secondKey] === f[firstKey]),\n })),\n switch: <T>(items: T[] = [], item: T): T[] =>\n use([...items], res => {\n on(res.indexOf(item), i => (i !== -1 ? res.splice(i, 1) : res.push(item)));\n return res;\n }),\n splitIn: <T>(items: T[] = [], length = 2): T[][] => {\n const res: T[][] = Array.from({ length }, () => []);\n items.forEach((i, index) => res[index % length].push(i));\n return res;\n },\n};\n","import 'reflect-metadata';\nimport { List, toList } from './List';\nimport { isDefined } from './Is';\nimport { on, use } from './Constructor';\nimport { Optional } from './Types';\n\ntype MetaParseOptions = { initial?: any; skipUndefined?: boolean };\n\ntype Entry<T = unknown> = [key: string, value: T];\n\nclass ClassMeta {\n constructor(readonly subject: any, private readonly data: any = (subject.prototype ?? subject).constructor) {}\n\n get = <T>(key: string): T => Reflect.getMetadata(key, this.data) as T;\n\n set = <T>(key: string, value: T): T => {\n Reflect.defineMetadata(key, value, this.data);\n return value;\n };\n\n entries = <T = unknown>(): List<Entry<T>> =>\n toList([...Object.entries(this.subject), ...Object.entries(Object.getPrototypeOf(this.subject))]) as List<Entry<T>>;\n\n parse = <Out, Value>(f: (v: Value) => Out, options: MetaParseOptions = {}): Record<string, Out> => {\n const { initial = {}, skipUndefined = false } = options;\n return this.entries<Value>().reduce((a, [k, val]) => use(f(val), v => (isDefined(v) || !skipUndefined ? on(a, a => (a[k] = v)) : a)), initial);\n };\n\n properties = (key?: string): List<PropertyMeta> =>\n toList([...Object.getOwnPropertyNames(this.subject), ...Object.getOwnPropertyNames(Object.getPrototypeOf(this.subject))])\n .map(p => this.property(p))\n .filter(p => (key ? p.get(key) : p));\n\n keys = <T = any>(key: string): List<T> =>\n this.properties()\n .map(p => p.get<T>(key))\n .reduce((list, u) => (u ? list.add(u) : list), toList<T>());\n\n values = <T = unknown>(): List<T> => toList([...Object.values<T>(this.subject), ...Object.values<T>(Object.getPrototypeOf(this.subject))]);\n\n property = (property: string | symbol): PropertyMeta => new PropertyMeta(this.subject, property);\n}\n\nclass PropertyMeta {\n constructor(readonly subject: any, readonly property: string | symbol, private readonly data = Reflect.getMetadata(property, subject)) {}\n\n get value(): any {\n return this.subject[this.property];\n }\n\n get = <T>(key: string): Optional<T> => (isDefined(this.data) && isDefined(this.data[key]) ? (this.data[key] as T) : undefined);\n\n set = <T>(key: string, value: T): T => {\n Reflect.defineMetadata(this.property, { ...this.data, [key]: value }, this.subject);\n return value;\n };\n}\n\nexport const meta = (subject: unknown): ClassMeta => new ClassMeta(subject ?? {});\n\nexport const entries = <T = unknown>(subject: Record<string, T>): List<Entry<T>> => meta(subject).entries<T>();\n","import { isPrimitive } from './Primitive';\n\nexport const isA = <T>(t?: unknown, ...properties: (keyof T)[]): t is T => !isPrimitive(t) && properties.every(p => p.toString() in (t as any));\nexport const isAn = isA;\n","import { Func, isFunc } from './Func';\n\nexport type Get<T = any, Args = any> = Func<T, Args> | T;\nexport type Predicate<Args = unknown> = Get<boolean, Args>;\nexport const ofGet = <T, Args = any>(g: Get<T, Args>, ...args: Args[]): T => (isFunc<T, Args>(g) ? g(...args) : g);\nexport const ifGet = <T>(pred: Get, valid: Get<T>, invalid: Get<T>): T => (ofGet(pred) ? ofGet(valid) : ofGet(invalid));\nexport type GetProperty<T, Prop> = keyof T | Func<Prop, T>;\nexport const ofProperty = <T, Prop>(t: T, p: GetProperty<T, Prop>): Prop => (isFunc<Prop, T>(p) ? p(t) : ((t as any)[p] as Prop));\n","import { Json } from '../types';\n\nexport const base64 = {\n decode: (data: string): string => Buffer.from(data, 'base64').toString('utf-8'),\n encode: (data: string): string => Buffer.from(data, 'utf-8').toString('base64'),\n toJson: (data: string): Json => JSON.parse(base64.decode(data)),\n};\n","import { asString } from '../types';\n\nexport class Convert<From = unknown, To = unknown> {\n constructor(public readonly from: (f: From) => To, public readonly to: (t: To) => From) {}\n}\n\nexport const convert = {\n default: new Convert<any, any>(\n a => a,\n a => a\n ),\n ignore: new Convert<any, any>(\n () => undefined,\n () => undefined\n ),\n toBool: {\n fromNumber: new Convert<boolean, number>(\n b => (b ? 1 : 0),\n n => n !== 0\n ),\n fromString: new Convert<boolean, string>(\n b => (b ? 'true' : 'false'),\n s => s === 'true'\n ),\n },\n toDate: {\n fromString: new Convert<string, string>(\n s => new Date(s).toISOString(),\n s => s\n ),\n },\n toNumber: {\n fromString: new Convert<number, string>(\n n => asString(n),\n s => parseInt(s)\n ),\n },\n};\n","import { Construct, isDefined, isNotEmpty, isTrue, ofConstruct, Optional } from '../types';\n\nexport function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;\nexport function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out> {\n return isTrue(o) ? ofConstruct(f, o) : ofConstruct(alt, o);\n}\n\nexport function ifFalse<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;\nexport function ifFalse<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifFalse<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out> {\n return !isTrue(o) ? ofConstruct(f, o) : ofConstruct(alt, o);\n}\n\nexport function ifDefined<Out, In = unknown>(o: Optional<In>, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;\nexport function ifDefined<Out, In = unknown>(o: Optional<In>, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifDefined<Out, In = unknown>(o: Optional<In>, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out> {\n return isDefined(o) ? ofConstruct(f, o) : ofConstruct(alt);\n}\n\nexport function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;\nexport function ifNotEmpty<Out, In = unknown>(o: In, f?: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullable<In>> = o => o as Out, alt?: Construct<Out>): Optional<Out> {\n return isNotEmpty(o) ? ofConstruct(f, o) : ofConstruct(alt, o);\n}\n","import { isNotPresent } from '../types';\n\nexport const isLoading = (...targets: unknown[]): boolean => isNotPresent(...targets);\n","import { Optional } from '../types';\n\nexport function log<T>(t: T): T;\nexport function log<T>(label: string, t: T): T;\nexport function log<T>(labelOrT: string | T, t?: T): T {\n if (t) {\n console.log(labelOrT as string, t);\n return t;\n } else {\n console.log(labelOrT);\n return labelOrT as T;\n }\n}\nexport function dir<T>(t?: T): Optional<T> {\n console.dir(t, { depth: 200 });\n return t;\n}\n","import { convert, Convert } from './Convert';\nimport { Get, Json, JsonValue, ofGet } from '../types';\nimport { Mapping } from './Mapper';\n\nexport type PropertyOptions<T = unknown> = {\n convert?: Convert<any, any>;\n dflt?: Get<T>;\n format?: string;\n};\n\nexport class Property<T = unknown> implements Mapping {\n constructor(readonly property: string, readonly options?: PropertyOptions) {\n this.options = { ...options, convert: options?.convert ?? convert.default };\n }\n\n in = (source: Json = {}): JsonValue => this.options?.convert?.to(source[this.property] ?? ofGet(this.options?.dflt));\n out = (source: Json = {}, key = ''): JsonValue => this.options?.convert?.from(source[key]);\n\n toString() {\n return this.property;\n }\n}\n","import { Construct, ofConstruct } from '../types';\n\nexport class State {\n constructor(protected readonly state: any = {}) {}\n\n protected get = <T>(key: string, alt?: Construct<T>): T => this.state[key] ?? (this.state[key] = ofConstruct(alt));\n protected set = <T>(key: string, value: Construct<T>): T => this.get(key, value);\n}\n","import { Construct, Get, isA, isEmpty, json, Json, JsonValue, List, meta, ofConstruct, ofGet, Optional, toList, TypeGuard } from '../types';\nimport { Property, PropertyOptions } from './Property';\nimport { State } from './State';\nimport { ifNotEmpty } from './If';\n\nexport type Mapping = {\n property: string;\n in: (source?: Json, key?: string) => Optional<JsonValue>;\n out: (source?: Json, key?: string) => Optional<JsonValue>;\n};\nexport const isMapping: TypeGuard<Mapping> = (m?: unknown): m is Mapping => isA<Mapping>(m, 'in', 'out');\n\nexport type MapStartFrom = 'scratch' | 'source';\nexport type MapOptions = { startFrom: MapStartFrom };\n\nexport class Mapper extends State implements Mapping {\n protected readonly map = mappings;\n\n constructor(readonly options: MapOptions = { startFrom: 'scratch' }, readonly property = '') {\n super();\n }\n\n // All properties that are a mapping\n get properties(): List<[string, Mapping]> {\n return this.get('props', () =>\n meta(this)\n .entries<Mapping>()\n .filter(([, v]) => isMapping(v))\n );\n }\n\n // All names of properties (in target) that have a Mapping\n get keys(): List<string> {\n return this.get('keys', () => this.properties.map(([k]) => k));\n }\n\n // All names of properties (in source) that are named in a Mapping\n get columns(): List<string> {\n return this.get('columns', () => this.properties.mapDefined(([, p]) => ifNotEmpty(p.property, p.property))).distinct();\n }\n\n // All names of properties (in source) that are NOT properties in target\n private get droppedIn(): List<string> {\n return this.get('droppedIn', () => this.columns.filter(c => !this.keys.some(k => k === c)));\n }\n\n // All names op properties (in target) that are NOT properties in source\n private get droppedOut(): List<string> {\n return this.get('droppedOut', () => this.properties.filter(([, p]) => !this.keys.some(k => k === p.property ?? '')).map(([k]) => k));\n }\n\n public in(from: Json = {}): Json {\n return json.omit(\n this.properties.reduce((a, [k, p]) => json.merge(a, { [k]: p.in({ ...a, ...from }) }), this.options.startFrom === 'source' ? from : {}),\n ...this.droppedIn\n );\n }\n\n public out(to: Json = {}): Json {\n return json.omit(\n this.properties.reduce(\n (a, [k, p]) => json.merge(a, isEmpty(p.property) ? p.out(to, k) : { [p.property ?? '']: p.out({ ...a, ...to }, k) }),\n this.options.startFrom === 'source' ? to : {}\n ),\n ...this.droppedOut\n );\n }\n\n toString(): string {\n return this.constructor.name;\n }\n}\n\nexport const mappings = {\n item: (property: string, options?: PropertyOptions): Property => new Property(property, options),\n ignore: (property = ''): Mapping => ({\n property,\n in: (): Optional<JsonValue> => undefined,\n out: (): Optional<JsonValue> => undefined,\n }),\n skipIn: (property: string): Mapping => ({\n property,\n in: (): Optional<JsonValue> => undefined,\n out: (source: Json = {}): JsonValue => source[property],\n }),\n skipOut: (property: string): Mapping => ({\n property,\n in: (source: Json = {}): JsonValue => source[property],\n out: (): Optional<JsonValue> => undefined,\n }),\n func: (property: string, funcIn: Get<Optional<JsonValue>, Json>, funcOut: Get<Optional<JsonValue>, Json>): Mapping => ({\n property,\n in: (source: Json = {}): Optional<JsonValue> => ofGet(funcIn, source),\n out: (source: Json = {}): Optional<JsonValue> => ofGet(funcOut, source),\n }),\n add: (funcIn: Get<JsonValue, Json>): Mapping => ({\n property: '',\n in: (source: Json = {}): JsonValue => ofGet(funcIn, source),\n out: (): Optional<JsonValue> => undefined,\n }),\n map: (mapper: Construct<Mapper>, property = ''): Mapping => ({\n property,\n in: (source: Json = {}): JsonValue => ofConstruct(mapper).in(isEmpty(property) ? source : (source[property] as Json)),\n out: (source: Json = {}, key = ''): JsonValue => ofConstruct(mapper).out(isEmpty(key) ? source : (source[key] as Json)),\n }),\n propsToList: (...maps: Mapping[]): Mapping => ({\n property: '',\n in: (source: Json = {}): JsonValue => toList(maps.map(m => ofConstruct(m).in(source))).toJSON(),\n out: (source: Json = {}, key = ''): JsonValue =>\n maps.reduce((a: Json, m, i) => {\n const res = toList(source[key])[i];\n const out = m.out(res as Json);\n return { ...a, [m.property]: out ?? {} };\n }, {}),\n }),\n list: (mapper: Mapping, property: string): Mapping => ({\n property: property,\n in: (source: Json = {}): JsonValue =>\n toList(source[property])\n .map((v: any) => mapper.in(v))\n .toJSON(),\n out: (source: Json = {}, key = ''): JsonValue =>\n toList(isEmpty(key) ? source : (source[key] as Json))\n .map((v: any) => mapper.out(v))\n .toJSON(),\n }),\n};\n","import { ErrorOrigin, List, toArray, toList } from '../types';\n\ntype Pro<A> = A | PromiseLike<A>;\ntype Aw<A> = Awaited<A>;\n\nexport const resolve = <S = unknown>(subject: S | PromiseLike<S>): Promise<S> => Promise.resolve(subject);\nexport const reject = <S = never>(e: ErrorOrigin): Promise<S> => Promise.reject(e);\n\nexport const tuple = {\n 2: <F, S>(first: Pro<F>, second: Pro<S>): Promise<[Aw<F>, Aw<S>]> => Promise.all([first, second]),\n 3: <F, S, T>(first: Pro<F>, second: Pro<S>, third: Pro<T>): Promise<[Aw<F>, Aw<S>, Aw<T>]> => Promise.all([first, second, third]),\n 4: <F, S, T, Fo>(first: Pro<F>, second: Pro<S>, third: Pro<T>, forth: Pro<Fo>): Promise<[Aw<F>, Aw<S>, Aw<T>, Aw<Fo>]> =>\n Promise.all([first, second, third, forth]),\n 5: <F, S, T, Fo, Fi>(first: Pro<F>, second: Pro<S>, third: Pro<T>, forth: Pro<Fo>, fifth: Pro<Fi>): Promise<[Aw<F>, Aw<S>, Aw<T>, Aw<Fo>, Aw<Fi>]> =>\n Promise.all([first, second, third, forth, fifth]),\n all: <F, S>(first: Pro<F>, second: Pro<S>[]): Promise<[Aw<F>, Aw<S[]>]> => Promise.all([first, Promise.all(second)]),\n spread: <F, S>(first: Pro<F>, ...second: Pro<S>[]): Promise<[Aw<F>, Aw<S[]>]> => Promise.all([first, Promise.all(toArray(second))]),\n list: <T>(list: Pro<T>[]): Promise<List<Aw<T>>> => Promise.all([...list]).then(toList),\n};\n\nexport const tuple2 = tuple[2];\nexport const tuple3 = tuple[3];\nexport const tuple4 = tuple[4];\nexport const tuple5 = tuple[5];\n","import { Id, text, Text } from '../types';\n\nexport class Sentence implements Text {\n constructor(word: Text, pre?: Sentence, private sentence: Text[] = (pre?.sentence ?? []).concat(word)) {}\n\n toString(): string {\n return text(this.sentence.join(' ')).sentence.toString();\n }\n}\n\nclass Topic extends Sentence {\n it = new Sentence('it', this);\n anything = new Sentence('anything', this);\n id = (id: Id) => new Sentence(`id '${id}'`, this);\n your = (subject?: Text) => new Sentence(`your ${subject ?? 'item'}`, this);\n a = (subject?: Text) => new Sentence(subject ? `a ${subject}` : 'an item', this);\n an = (subject?: Text) => new Sentence(`an ${subject ?? 'item'}`, this);\n any = (subjects?: Text) => new Sentence(`any ${subjects ?? 'items'}`, this);\n}\n\nclass Verb extends Sentence {\n add = new Topic('add', this);\n check = new Topic('check', this);\n fetch = new Topic('fetch', this);\n find = new Topic('find', this);\n like = new Topic('like', this);\n process = new Topic('process', this);\n remove = new Topic('remove', this);\n translate = new Topic('translate', this);\n update = new Topic('update', this);\n validate = new Topic('validate', this);\n}\n\nclass Not extends Verb {}\n\nclass SupportVerb extends Verb {\n not = new Not('not', this);\n}\n\nclass We extends Sentence {\n could = new SupportVerb('could', this);\n did = new SupportVerb('did', this);\n\n added = new Topic('added', this);\n checked = new Topic('checked', this);\n fetched = new Topic('fetched', this);\n found = new Topic('found', this);\n liked = new Topic('liked', this);\n processed = new Topic('processed', this);\n removed = new Topic('removed', this);\n translated = new Topic('translated', this);\n updated = new Topic('updated', this);\n validated = new Topic('validated', this);\n}\n\nexport const we = new We('we');\n","export const traverse = (subject: unknown = {}, property = ''): unknown => {\n const props = property.split('.');\n const p = props.shift() as string;\n return props.length === 0 ? (subject as any)[p] : traverse((subject as any)[p], props.join('.'));\n};\n","import {\n asJson,\n choose,\n Constructor,\n DontInfer,\n isArray,\n isBoolean,\n isConstructor,\n isEqual,\n isFunction,\n isPageList,\n isString,\n json,\n Json,\n List,\n meta,\n PageList,\n Primitive,\n toPageList,\n use,\n} from '../types';\nimport { traverse } from './Traverse';\nimport { ifDefined } from './If';\n\ntype Func<T = unknown> = (a: any, key?: string) => T;\ntype Viewer = { key: string; f: Func };\n\ntype ViewType = Primitive | Constructor | Func | View | undefined;\ntype ViewRecord<V = Json> = Partial<Record<keyof V, ViewType>>;\n\nconst ignore = Symbol('view.ignore');\nconst keep = Symbol('view.keep');\n\nexport const toViewer = (key: string, value: ViewType): Viewer =>\n choose(value)\n .is.not.defined(v => v, { key, f: () => undefined } as Viewer)\n .type(isBoolean, b => ({ key, f: () => b }))\n .equals(ignore, { key, f: () => undefined })\n .equals(keep, { key, f: (a: any) => traverse(a, key) })\n .type(isString, s => ({ key, f: (a: any) => traverse(a, s) }))\n .type(isConstructor, c => ({\n key,\n f: (a, key) => use(traverse(a, key), v => (isArray(v) ? v.map(i => optional(c, i)) : optional(c, v))),\n }))\n .type(isSimpleView, f => ({ key, f: (a: any) => f.from(traverse(a, key)) }))\n .type(isFunction, f => ({ key, f }))\n .else(v => ({ key, f: () => v }));\n\nconst optional = (c: Constructor, v: any) =>\n ifDefined(\n v,\n i => new c(i),\n () => v\n );\n\nconst toViewers = (views: ViewRecord): Viewer[] =>\n meta(views)\n .entries<ViewType>()\n .map(([k, v]) => toViewer(k, v));\n\nexport class View<V = Json> {\n constructor(private views = {} as ViewRecord<V>, readonly startsFrom: 'scratch' | 'source' = 'scratch', readonly viewers: Viewer[] = toViewers(views)) {}\n\n get fromSource(): View<V> {\n return new View(this.views, 'source', this.viewers);\n }\n\n from<T = unknown>(source: PageList<T>): PageList<V>;\n from<T = unknown>(source: List<T>): List<V>;\n from<T = unknown>(source: T[]): V[];\n from<T = unknown>(source: T): V;\n from<T = unknown>(source: PageList<T> | List<T> | T[] | T): PageList<V> | List<V> | V[] | V {\n if (isPageList(source))\n return toPageList(\n source.map(s => this.reduce(s)),\n source\n );\n if (isArray(source)) return source.map(s => this.reduce(s));\n return this.reduce(source);\n }\n\n same = (one?: unknown, another?: unknown): boolean => isEqual(this.from(one), this.from(another));\n\n private reduce = (source: any): any =>\n use(asJson(source), src => this.viewers.reduce((acc, v) => json.set(acc, v.key, v.f(src, v.key)), this.startsFrom === 'scratch' ? {} : src));\n}\n\nexport const isSimpleView = (a: unknown): a is View => a instanceof View;\n\nexport const view = <V = Json>(views: ViewRecord<DontInfer<V>>): View<V> => new View<V>(views);\n\nexport const views = {\n ignore,\n keep,\n skip: ignore,\n value: (value: unknown) => () => value,\n or: {\n key: (altKey: string) => (a: unknown, key?: string) => traverse(a, key) ?? traverse(a, altKey),\n value: (altValue: unknown) => (a: unknown, key?: string) => traverse(a, key) ?? altValue,\n func: (altFunc: Func) => (a: unknown, key?: string) => traverse(a, key) ?? altFunc(a, key),\n },\n};\n\n// spread: (a: any, key: string) => ({...a, ...(use(traverse(a, key), v => isObject(v) ? v : ({[key]: v})))}),\n","export class Wait {\n static wait(ms = 0): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n static seconds(s = 0) {\n return this.wait(s * 1000);\n }\n}\n\nexport const wait = (millis: number) => Wait.wait(millis);\n","import { isA } from './IsA';\nimport { isEmpty, isObject } from './Is';\nimport { Get, ofGet } from './Get';\nimport { ifDefined } from '../utils';\nimport { TypeGuard } from './TypeGuard';\nimport { entries } from './Meta';\n\nexport type JsonValue = string | number | boolean | null | Json | JsonValue[];\nexport type Json = { [key: string]: JsonValue };\n\nexport const isJson: TypeGuard<{ toJSON: () => Json }> = (subject?: unknown): subject is { toJSON: () => Json } =>\n isA<{ toJSON: () => Json }>(subject, 'toJSON');\n\nexport const json = {\n parse: <T extends Json = Json>(subject: unknown): T => JSON.parse(JSON.stringify(subject ?? {})),\n merge: (...subjects: unknown[]): Json => json.parse(subjects.map(s => asJson(s, s => json.parse(s))).reduce((js, j) => ({ ...js, ...j }), {})),\n delete: <T extends Json = Json>(subject: T, key: string): T => {\n ifDefined(subject, () => delete (subject as any)[key]);\n return subject;\n },\n set: <T extends Json = Json>(subject: T, key = '', value?: unknown): T =>\n isEmpty(key) ? subject : value !== undefined ? { ...(subject as any), ...{ [key]: value as JsonValue } } : json.delete(subject, key),\n omit: <T extends Json = Json>(subject: T, ...keys: string[]): T => keys.reduce((js, k) => json.delete(js, k), json.parse<T>(subject)),\n defaults: <T extends Json = Json>(options: Partial<T> = {}, defaults: Partial<T> = {}): T => json.merge(defaults, options) as T,\n isSubset: (subject: Json, subset: Json): boolean => !entries(subset).some(([k, v]) => subject[k] !== v),\n};\n\nexport const toJson = json.merge;\n\nexport const asJson = (j?: unknown, alt: Get<Json> = {}): Json => (isJson(j) ? j.toJSON() : isObject(j) ? (j as Json) : ofGet(alt, j));\n\nclass Any<T extends Json> {\n constructor(readonly value: T) {}\n\n merge = (...subjects: T[]): Any<T> => any<T>(json.merge(this.value, ...subjects) as T);\n delete = (key: keyof T): Any<T> => any<T>(json.delete<T>(this.value, key as string));\n omit = (...keys: (keyof T)[]): Any<T> => any<T>(json.omit<T>(this.value, ...(keys as string[])));\n set = (key: keyof T, value?: unknown): Any<T> => any<T>(json.set(this.value, key as string, value));\n\n toJSON(): Json {\n return this.value;\n }\n}\n\nexport const any = <T extends Json = Json>(value: T): Any<T> => new Any<T>(value);\n","import { Constructor, ErrorOrigin, Exception, Get, isDefined, isEmpty, isIn, ofGet, Predicate, Results, toArray } from '../types';\nimport { validate } from './Validate';\nimport { reject, resolve } from '../utils';\n\nexport class When<W> {\n constructor(readonly subject: W, readonly valid = true, private results?: Results) {}\n\n get not(): When<W> {\n return this.clone(!this.valid);\n }\n\n get and(): When<W> {\n return this.clone(this.valid);\n }\n\n get isDefined(): When<W> {\n return this.clone(this.valid === isDefined(this.subject));\n }\n\n get isEmpty(): When<W> {\n return this.clone(this.valid === isEmpty(this.subject));\n }\n\n get isTrue(): When<W> {\n return this.clone(this.valid === !!this.subject);\n }\n\n get isValid(): When<W> {\n this.results = validate(this.subject);\n return this.clone(this.valid === this.results.isValid);\n }\n\n isInstance = <U>(c: Constructor<U>): When<W> => this.clone(this.valid === this.subject instanceof c);\n\n with = (pred: Predicate<W>): When<W> => this.clone(this.valid === ofGet(pred, this.subject));\n\n contains = (property: (w: W) => unknown): When<W> => this.clone(this.valid === isDefined(ofGet(property, this.subject)));\n\n in = (...items: W[]): When<W> => this.clone(this.valid === isIn(this.subject, toArray(...items)));\n\n is = (item: W): When<W> => this.clone(this.valid === (this.subject === item));\n\n reject = (error?: Get<ErrorOrigin, W>): Promise<NonNullable<W>> =>\n !this.valid ? resolve(this.subject as NonNullable<W>) : reject(ofGet(error, this.subject) ?? this.results ?? Exception.Unknown);\n\n recover = (f: (item: W) => W | Promise<W>): Promise<W> => resolve(!this.valid ? this.subject : f(this.subject));\n\n protected clone = (result = true): When<W> => new When(this.subject, result, this.results);\n}\n\nexport const when = <T>(subject: T): When<T> => new When<T>(subject);\n","import {\n asString,\n choose,\n isArray,\n isEnum,\n isFunction,\n isResults,\n isValidatable,\n isValue,\n List,\n meta,\n Results,\n TemplateOptions,\n text,\n Text,\n toList,\n toName,\n toResult,\n toResults,\n tryTo,\n} from '../types';\nimport { Constraint } from './Contraints';\nimport { when } from './When';\n\nexport type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };\n\nexport const asResults = (subject: unknown, template: Text, options: TemplateOptions = {}): Results =>\n toResults(toResult(text(template).parse(subject, options), toName(subject)));\n\nconst validators = (subject: unknown): List<Validator> =>\n meta(subject)\n .keys<List<Validator>>('constraint')\n .reduce((list, vs) => list.add(vs), toList<Validator>());\n\nconst runValidator = (v: Validator, subject?: unknown): Results =>\n tryTo(() => (isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property]))\n .map(actual => [actual, v.constraint(actual)])\n .map(([actual, res]) => (isResults(res) ? res : !res ? asResults(subject, v.text, { ...v, actual }) : toResults()))\n .recover(e => asResults(subject, asString(e))).value;\n\nconst constraints = (subject?: unknown): Results =>\n tryTo(() => validators(subject))\n .map(vs => vs.mapDefined(v => runValidator(v, subject)))\n .map(res => res.reduce((rs, r) => rs.add(...r.results), toResults())).value;\n\nexport const validate = (subject?: unknown): Results =>\n choose(subject)\n .is.not.defined(\n s => s,\n () => toResults('Subject is not defined.')\n )\n .type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))\n .type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))\n .type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))\n .type(isValidatable, v => constraints(v))\n .else(toResults());\n\nexport const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();\n\nexport const isValid = <T>(t: T): boolean => validate(t).isValid;\n","import { Func, inFuture, inPast, isBoolean, isDefined, isFunction, isIn, isNotEmpty, isString, List, meta, Results, text, Text, toList, tryTo } from '../types';\nimport { validate, Validator } from './Validate';\n\nexport type Constraint = Func<boolean | Results, any>;\n\nexport const constraint =\n <T>(c: Constraint, message: Text): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n const cs = meta(subject).property(property).get<List<Validator>>('constraint') ?? toList<Validator>();\n meta(subject)\n .property(property)\n .set('constraint', cs.add({ property, constraint: c, text: message }));\n };\n\nexport const defined = (message?: Text): PropertyDecorator => constraint(v => isDefined(v), message ?? 'Property {property} must be defined.');\n\nexport const required = (message?: Text): PropertyDecorator =>\n constraint(v => isNotEmpty(v), message ?? 'Property {property} is required, and may not be empty.');\n\nexport const notEmpty = (message?: Text): PropertyDecorator => constraint(v => isNotEmpty(v), message ?? 'Property {property} may not be empty.');\n\nexport const valid = (): PropertyDecorator => constraint(v => validate(v), '');\n\nexport const optional = (): PropertyDecorator => constraint(v => !isDefined(v) || validate(v), '');\n\nexport const includes = (sub: string, message?: string): PropertyDecorator =>\n constraint(s => isDefined(s) && isString(s) && s.includes(sub), message ?? `Value {actual} must include '${sub}'.`);\n\nexport const inList = (values: unknown[], message?: Text): PropertyDecorator =>\n constraint(v => isDefined(v) && isIn(v, values), message ?? 'Value {actual} must appear in list.');\n\nexport const inOptionalList = (values: unknown[], message?: Text): PropertyDecorator =>\n constraint(v => !isDefined(v) || isIn(v, values), message ?? 'Value {actual} must appear in list.');\n\nexport const gt = (limit: number, message?: Text): PropertyDecorator => constraint(v => v > limit, message ?? `Value {actual} must be larger than '${limit}'.`);\n\nexport const gte = (limit: number, message?: Text): PropertyDecorator =>\n constraint(v => v >= limit, message ?? `Value {actual} must be larger than or equal to ${limit}.`);\n\nexport const lt = (limit: number, message?: Text): PropertyDecorator => constraint(v => v < limit, message ?? `Value {actual} must be smaller than ${limit}.`);\n\nexport const lte = (limit: number, message?: Text): PropertyDecorator =>\n constraint(v => v <= limit, message ?? `Value {actual} must be smaller than or equal to ${limit}.`);\n\nexport const past = (message?: Text): PropertyDecorator => constraint(v => inPast(v), message ?? 'Value {actual} must lay in the past.');\n\nexport const future = (message?: Text): PropertyDecorator => constraint(v => inFuture(v), message ?? 'Value {actual} must lay in the future.');\n\nexport const minLength = (length: number, message?: Text): PropertyDecorator =>\n constraint(\n v =>\n tryTo(() => v)\n .is.defined()\n .map(v => text(v).toString().length >= length)\n .orElse(true) as boolean,\n message ?? `Value {actual} must be at least '${length}' characters long.`\n );\n\nexport const maxLength = (length: number, message?: Text): PropertyDecorator =>\n constraint(\n v =>\n tryTo(() => v)\n .is.defined()\n .map(v => text(v).toString().length <= length)\n .orElse(true) as boolean,\n message ?? `Value {actual} cannot be longer than '${length}' characters.`\n );\n\nexport const rule = (message?: Text): PropertyDecorator =>\n constraint(v => (isFunction(v) ? (v() as boolean | Results) : isBoolean(v) ? v : false), message ?? `Value {actual} must be true`);\n","import { isDefined, isEmpty, isTrue } from './Is';\nimport { validate } from '../validation';\nimport { Construct, Constructor, ofConstruct } from './Constructor';\nimport { Validatable } from './Validatable';\nimport { Get, ofGet } from './Get';\nimport { Func } from './Func';\nimport { Optional } from './Types';\n\nexport abstract class Try<T = unknown> implements Validatable {\n is = {\n defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isDefined(prop ? prop(v) : v)),\n empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isEmpty(prop ? prop(v) : v)),\n valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => validate(prop ? prop(v) : v).isValid),\n true: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isTrue(prop ? prop(v) : v)),\n false: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isTrue(prop ? prop(v) : v)),\n not: {\n defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isDefined(prop ? prop(v) : v)),\n empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isEmpty(prop ? prop(v) : v)),\n valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !validate(prop ? prop(v) : v).isValid),\n },\n };\n\n if = this.is;\n\n abstract get value(): T;\n\n abstract get error(): Error;\n\n abstract get isValid(): boolean;\n\n static of = <T>(c: Get<T | Try<T>>, ...args: unknown[]): Try<T> => {\n try {\n const out = ofGet(c, ...args);\n return new Success(out instanceof Try ? out.value : out);\n } catch (e) {\n return new Failure(e as Error);\n }\n };\n\n abstract map<U>(f: Func<U | Try<U>, T>): Try<U>;\n\n abstract recover(f: Func<T | Try<T>, Error>): Try<T>;\n\n abstract recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T>;\n\n abstract accept(f: Func<void, T>): Try<T>;\n\n abstract filter(predicate: Func<boolean, T>): Try<T>;\n\n abstract or(value: Get<T>): T;\n\n abstract orElse(value?: Get<T>): Optional<T>;\n\n abstract orThrow(error: Construct<Error>): T;\n}\n\nclass Success<T> extends Try<T> {\n constructor(readonly value: T) {\n super();\n }\n\n get error(): Error {\n throw new Error('No error found');\n }\n\n get isValid(): boolean {\n return true;\n }\n\n map<U>(f: Func<U | Try<U>, T>): Try<U> {\n return tryTo<U>(f, this.value);\n }\n\n recover(f: Func<T | Try<T>, Error>): Try<T> {\n return this;\n }\n\n recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {\n return this;\n }\n\n accept(f: Func<void, T>): Try<T> {\n return tryTo(() => {\n f(this.value);\n return this;\n });\n }\n\n filter(predicate: Func<boolean, T>): Try<T> {\n return tryTo(() => {\n if (predicate(this.value)) return this;\n throw new Error(`Applying filter(${predicate.toString()}) failed.`);\n });\n }\n\n or(value: Get<T>): T {\n return this.value;\n }\n\n orElse(value?: Get<T>): Optional<T> {\n return this.value;\n }\n\n orThrow(_error: Construct<Error>): T {\n return this.value;\n }\n}\n\nclass Failure<T> extends Try<T> {\n constructor(readonly error: Error) {\n super();\n }\n\n get value(): T {\n throw this.error;\n }\n\n get isValid(): boolean {\n return false;\n }\n\n map<U>(f: Func<U | Try<U>, T>): Try<U> {\n return new Failure<U>(this.error);\n }\n\n recover<U>(f: Func<U | Try<U>, Error>): Try<U> {\n return tryTo<U>(f, this.error);\n }\n\n recoverFrom<U>(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {\n return tryTo(() => (this.error instanceof type ? this.recover(f) : this));\n }\n\n accept(f: Func<void, T>): Try<T> {\n return this;\n }\n\n filter(predicate: Func<boolean, T>): Try<T> {\n return this;\n }\n\n or(value: Get<T>): T {\n return ofGet(value);\n }\n\n orElse(value?: Get<T>): Optional<T> {\n return ofGet(value);\n }\n\n orThrow(error: Construct<Error>): T {\n throw ofConstruct(error);\n }\n}\n\nexport const tryTo = <T>(c: Get<T | Try<T>>, ...args: unknown[]) => Try.of<T>(c, ...args);\n","import { ArrayLike, toArray } from './Array';\nimport { Constructor, on } from './Constructor';\nimport { json, Json } from './Json';\nimport { isArray, isDefined, isEmpty } from './Is';\nimport { isA } from './IsA';\nimport { Get, GetProperty, ofGet, ofProperty } from './Get';\nimport { Id } from './Id';\nimport { asString } from './Text';\nimport { tryTo } from './Try';\nimport { meta } from './Meta';\nimport { Optional } from './Types';\n\nexport class List<T = unknown> extends Array<T> {\n asc(p: GetProperty<T, any>): List<T> {\n return this.sort((e1, e2) => (ofProperty(e1, p) > ofProperty(e2, p) ? 1 : -1));\n }\n\n desc(p: GetProperty<T, any>): List<T> {\n return this.sort((e1, e2) => (ofProperty(e1, p) < ofProperty(e2, p) ? 1 : -1));\n }\n\n first(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {\n return (p ? this.find(p, params) : this[0]) as T;\n }\n\n firstValue<V>(f: (t: T) => V, alt?: Get<V, T>): Optional<V> {\n return tryTo(() => this.first(t => !!f(t))).map(i => (i ? f(i) : ofGet(alt, i))).value;\n }\n\n isFirst(value: T): boolean {\n return value === this.first();\n }\n\n next(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {\n return p ? this[this.findIndex(p, params) + 1] : this[0];\n }\n\n prev(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {\n return p ? this[this.findIndex(p, params) - 1] : this[0];\n }\n\n last(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {\n return p ? this.filter(p, params).last() : this[this.length - 1];\n }\n\n isLast(value: T): boolean {\n return value === this.last();\n }\n\n overlaps(...items: ArrayLike<T>): boolean {\n return toList<T>(...items).some(i => this.some(t => i === t));\n }\n\n diff(others: ArrayLike<T>): List<T> {\n return this.filter(i => !others.includes(i));\n }\n\n diffByKey(others: ArrayLike<T>, key: keyof T): List<T> {\n return this.filter((i: any) => !others.some((o: any) => o[key] === i[key]));\n }\n\n symmetricDiff(others: ArrayLike<T>): List<T> {\n return this.diff(others).concat(toList<T>(...others).diff(this));\n }\n symmetricDiffByKey(others: ArrayLike<T>, key: keyof T): List<T> {\n return this.diffByKey(others, key).concat(toList<T>(...others).diffByKey(this, key));\n }\n\n intersect(others: ArrayLike<T>): List<T> {\n return this.filter(i => others.includes(i));\n }\n\n intersectByKey(others: ArrayLike<T>, key: keyof T): List<T> {\n return this.filter((i: any) => others.some((o: any) => o[key] === i[key]));\n }\n\n toJSON(): Json[] {\n return this.reduce((a, i) => {\n a.push(json.parse(i));\n return a;\n }, new Array<Json>());\n }\n\n map<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): List<U> {\n return toList<U>(super.map(f, params));\n }\n\n flatMap<U, This = unknown>(f: (this: This, value: T, index: number, array: T[]) => ReadonlyArray<U> | U, params?: This): List<U> {\n return toList<U>(super.flatMap(f, params));\n }\n\n mapDefined<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): List<NonNullable<U>> {\n return this.map(f, params).defined();\n }\n\n mapAsync(f: (i: T) => Promise<T>): Promise<List<T>> {\n return Promise.all(super.map(e => f(e))).then(a => toList<T>(a));\n }\n\n distinct(): List<T> {\n return this.filter((i, index) => this.indexOf(i) === index);\n }\n\n distinctByKey(key: keyof T): List<T> {\n return meta(this.toObject(key)).values();\n }\n\n filter(p: (value: T, index: number, array: T[]) => unknown, params?: unknown): List<T> {\n return toList<T>(super.filter(p, params));\n }\n\n sum(p: (t: T) => number): number {\n return this.reduce((sum: number, i) => sum + p(i), 0);\n }\n\n max(key: keyof T): T {\n return this.desc(key).first();\n }\n\n min(key: keyof T): T {\n return this.asc(key).first();\n }\n\n byId(id: Id): T {\n return this.first(i => asString((i as any).id) === asString(id));\n }\n\n add(...items: ArrayLike<T>): this {\n super.push(...toArray(...items));\n return this;\n }\n\n concat(...items: ConcatArray<T>[]): List<T>;\n concat(...items: (T | ConcatArray<T>)[]): List<T>;\n concat(...items: (T | ConcatArray<T>)[]): List<T> {\n return toList<T>(super.concat(...items));\n }\n\n reverse(): List<T> {\n return toList<T>(super.reverse());\n }\n\n splice(start: number, deleteCount?: number): List<T>;\n splice(start: number, deleteCount: number, ...items: T[]): List<T>;\n splice(start: number, deleteCount: number, ...items: T[]): List<T> {\n return toList<T>(super.splice(start, deleteCount, ...items));\n }\n\n remove(item: T): List<T> {\n const index = this.indexOf(item);\n if (index > -1) {\n this.splice(index, 1);\n }\n return this;\n }\n\n replace(key: keyof T, item: T): List<T> {\n tryTo(() => item[key])\n .map(k => this.findIndex(i => i[key] === k))\n .filter(i => i > -1)\n .map(i => (this[i] = item));\n return this;\n }\n\n switch(item: T): List<T> {\n return this.includes(item) ? this.remove(item) : this.add(item);\n }\n\n defined(): List<NonNullable<T>> {\n return this.reduce((l, v) => (isDefined(v) ? l.add(v) : l), toList<NonNullable<T>>());\n }\n\n toObject(key: keyof T, options: { deleteKey?: boolean } = {}): Record<string | number | symbol, T> {\n return this.reduce((o: any, i) => {\n o[i[key]] = i;\n if (options.deleteKey) delete o[i[key]][key];\n return o;\n }, {});\n }\n\n toObjectList(key: keyof T): Record<string | number | symbol, List<T>> {\n return this.reduce(\n (a, t) => {\n const k = t[key] as unknown as string | number | symbol;\n a[k] = a[k] ?? toList();\n a[k].push(t);\n return a;\n },\n {} as Record<string | number | symbol, List<T>>\n );\n }\n\n orElse(...alt: ArrayLike<T>): Optional<List<T>> {\n return !isEmpty(this) ? this : !isEmpty(...alt) ? toList<T>(...alt) : undefined;\n }\n\n weave(insertFrom: T[], interval: number): this {\n for (let i = interval, n = 0; i <= this.length && n < insertFrom.length; i += interval + 1) {\n this.splice(i, 0, insertFrom[n++]);\n }\n return this;\n }\n\n slice(start?: number, end?: number): List<T> {\n return toList(super.slice(start, end));\n }\n\n none(p: (t: T) => boolean): boolean {\n return !this.some(p);\n }\n\n chunk(chunkSize: number): List<List<T>> {\n return this.reduce((acc, _, index) => (index % chunkSize === 0 ? on(acc, a => a.push(this.slice(index, index + chunkSize))) : acc), toList<List<T>>());\n }\n}\n\nexport const toList = <T = unknown>(...items: ArrayLike<T>): List<T> => new List<T>().add(...items);\n\nexport const isList = <T>(l?: unknown): l is List<T> => isDefined(l) && isArray(l) && isA<List<T>>(l, 'first', 'last', 'asc', 'desc');\n\nexport const asList = <T>(c: Constructor<T>, items: unknown | unknown[] = []): List<T> => toList<T>(toArray(items).map(i => new c(i)));\n\nexport const maxValue = <T>(l: List<T>, key: keyof T): T[keyof T] | undefined => l.desc(key).first()?.[key];\n\nexport const minValue = <T>(l: List<T>, key: keyof T): T[keyof T] | undefined => l.asc(key).first()?.[key];\n","import { meta } from './Meta';\nimport { List, toList } from './List';\nimport { asString, text, Text, ToText } from './Text';\nimport { toName } from './Constructor';\nimport { tryTo } from './Try';\n\nexport type TemplateOptions = { type?: Text; property?: Text; actual?: Text; subject?: Text };\n\nexport class Template implements Text {\n constructor(\n private readonly template: string,\n private readonly subject: unknown = {},\n private readonly options = {}\n ) {}\n\n toString = (): string => {\n return meta(this.options)\n .entries()\n .reduce((t, [k]) => this.option(t, k), this.object())\n .replace(' ', ' ');\n };\n\n private readonly value = (subject: any, prop: string): string =>\n tryTo(() => prop.split('.'))\n .map(p => [p, p.splice(1)])\n .map(([p, ps]) => ps.reduce((t: ToText, s) => (t as any)[s], text(subject[p[0]])))\n .map(p => p.toString()).value;\n\n private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {\n const i1 = tmpl.indexOf(`{${key}`);\n if (i1 < 0) {\n return result;\n }\n const i2 = tmpl.indexOf('}', i1);\n return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));\n };\n\n private readonly object = (): string => {\n return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.subject, p.replace('this.', ''))), this.template);\n };\n\n private readonly option = (tmpl: string, prop: string): string => {\n return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, this.value(this.options, p)), tmpl);\n };\n}\n\nexport const template = (tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text =>\n new Template(asString(tmpl), subject, {\n type: toName(subject),\n subject: text(JSON.stringify(subject)),\n ...options,\n });\n","import { isDefined, isEmpty, isNotEmpty } from './Is';\nimport { toName } from './Constructor';\nimport { template } from './Template';\nimport { isFunc } from './Func';\nimport { Get, ofGet } from './Get';\nimport { toList } from './List';\nimport { JsonValue } from './Json';\nimport { Optional } from './Types';\n\nexport type Text = { toString(): string };\n\nexport const isText = (t?: unknown): t is Text => isDefined(t) && isFunc<string, any>((t as any).toString);\n\nexport const asString = (t?: unknown, alt: Get<Text> = ''): string => (isText(t) ? t : ofGet(alt)).toString();\n\nexport const replaceAll = (origin: Text, search: Text, replace: Text = ''): string => asString(origin).split(asString(search)).join(asString(replace));\n\nexport const toWords = (input: unknown): string[] => {\n return asString(input)\n .replace(/(\\p{Lower})(\\p{Upper})/gu, '$1 $2')\n .replace(/(\\p{Upper})(\\p{Upper}\\p{Lower})/gu, '$1 $2')\n .split(/[_\\W]+/g).filter(Boolean);\n};\n\nexport const kebab = (s = ''): string => toWords(s).join('-').toLowerCase();\n\nexport class ToText implements Text {\n constructor(readonly subject: string) {}\n\n get cap(): ToText {\n return this.map(s => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase());\n }\n\n get title(): ToText {\n return this.map(s =>\n s\n .split(' ')\n .map(w => text(w).cap)\n .join(' ')\n );\n }\n\n get pascal(): ToText {\n return this.title.replace(' ', '');\n }\n\n get lower(): ToText {\n return this.map(s => s.toLowerCase());\n }\n\n get upper(): ToText {\n return this.map(s => s.toUpperCase());\n }\n\n get camel(): ToText {\n return this.title.trim.map(s => `${s.charAt(0).toLowerCase()}${s.slice(1)}`);\n }\n\n get kebab(): ToText {\n return this.lower.replace(' ', '-');\n }\n\n get strictKebab(): ToText {\n return this.map(s => s.replace(/[^a-z\\d]+/gi, ' ').trim()).kebab;\n }\n\n get slug(): ToText {\n return this.map(s =>\n s\n .replace(/ß/g, 'ss')\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036F]/g, '')\n .toLowerCase()\n .replace(/[^a-z\\d]+/g, '-')\n .replace(/(^-)|(-$)/g, '')\n );\n }\n\n get snake(): ToText {\n return this.upper.replace(' ', '_');\n }\n\n get plural(): ToText {\n return this.ifLike('') ?? this.add('s');\n }\n\n get space(): ToText {\n return this.map(s => s.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/[_-]/g, ' '));\n }\n\n get sentence(): ToText {\n return this.isEmpty ? this : this.map(s => `${s.charAt(0).toUpperCase()}${s.slice(1)}.`);\n }\n\n get initials(): ToText {\n return this.map(s =>\n s\n .split(' ')\n .map(w => w[0])\n .join('')\n );\n }\n\n get trim(): ToText {\n return this.map(s => s.replace(/[- ,_#]/g, ''));\n }\n\n get isEmpty(): boolean {\n return isEmpty(this.toString());\n }\n\n parse = (subject: unknown, options = {}): ToText => text(template(this.subject, subject, { type: toName(subject), ...options }));\n\n is = (...others: unknown[]): boolean => others.some(o => this.toString() === text(o).toString());\n\n equals = this.is;\n\n isLike = (...others: unknown[]): boolean => others.some(o => this.trim.lower.is(text(o).trim.lower));\n\n ifLike = (...others: unknown[]): Optional<this> => (this.isLike(...others) ? this : undefined);\n\n endsWith = (end?: unknown): boolean => this.subject.endsWith(asString(end));\n\n startsWith = (end?: unknown): boolean => this.subject.startsWith(asString(end));\n\n first = (n: number): ToText => this.map(s => s.substring(0, n));\n\n last = (n: number): ToText => this.map(s => s.substring(s.length - n));\n\n map = (func: Get<string, string>): ToText => text(ofGet(func, this.subject));\n\n replace = (search: Text, replace: Text): ToText => this.map(s => replaceAll(s, search, replace));\n\n add = (add?: unknown, separator = ''): ToText => this.map(s => (isNotEmpty(add) ? `${s}${separator}${text(add)}` : s));\n\n with = (separator: string, ...other: unknown[]): ToText =>\n this.map(s =>\n toList(s)\n .add(...other.map(u => text(u).toString()))\n .filter(s => isNotEmpty(s))\n .join(separator)\n );\n\n toString(): string {\n return this.subject;\n }\n\n toJSON(): JsonValue {\n return this.subject;\n }\n}\n\nexport const text = (subject?: unknown, alt = ''): ToText => {\n const sub = subject ? asString(subject) : alt;\n return new ToText(sub !== '[object Object]' ? sub : '');\n};\n","import { Constructor } from './Constructor';\nimport { asString } from './Text';\n\nclass builder {\n private static state: any = {};\n static singleton = <T>(ctr: Constructor<T>, ...args: any[]): T => builder.state[asString(ctr)] ?? (builder.state[asString(ctr)] = new ctr(...args));\n static reset = (): void => {\n builder.state = {};\n };\n}\n\nexport const build = {\n singleton: <T>(ctr: Constructor<T>, ...args: any[]): T => builder.singleton(ctr, ...args),\n reset: (): void => builder.reset(),\n};\n\nexport const singleton = <T>(ctr: Constructor<T>, ...args: any[]): T => build.singleton(ctr, ...args);\n","import { Func } from './Func';\nimport { CacheAge } from './CacheAge';\nimport { Construct } from './Constructor';\nimport { meta } from './Meta';\n\nexport interface Store<To = any, From = any> {\n execute: (fetch: From, f: Func<Promise<To>, From>) => Promise<To>;\n}\n\nexport type CacheOptions = {\n expiresIn?: CacheAge;\n store?: Construct<Store>;\n};\n\nexport const toCacheOptions = (co: Partial<CacheOptions>): CacheOptions => ({\n expiresIn: co.expiresIn ?? '5m',\n store: co.store,\n});\n\nexport const cache =\n (options: Partial<CacheOptions>): ClassDecorator =>\n (subject: unknown): void => {\n meta(subject).set('cache', toCacheOptions(options));\n };\n","import { asNumber, asString, choose } from './index';\n\nexport type CacheAge = `${number}${'ms' | 's' | 'm' | 'h' | 'd'}` | number;\n\nconst ageNumber = (s: string): number => asNumber(s.replace(/[a-z]/g, ''));\n\nexport const cacheAge = {\n toMilliseconds: (ca: CacheAge): number =>\n choose(asString(ca))\n .case(\n c => c.endsWith('ms'),\n c => ageNumber(c)\n )\n .case(\n c => c.endsWith('s'),\n c => ageNumber(c) * 1000\n )\n .case(\n c => c.endsWith('m'),\n c => ageNumber(c) * 60 * 1000\n )\n .case(\n c => c.endsWith('h'),\n c => ageNumber(c) * 3600 * 1000\n )\n .case(\n c => c.endsWith('d'),\n c => ageNumber(c) * 24 * 3600 * 1000\n )\n .else(ca as number),\n\n toSeconds: (ca: CacheAge): number =>\n choose(asString(ca))\n .case(\n c => c.endsWith('ms'),\n c => ageNumber(c) / 1000\n )\n .case(\n c => c.endsWith('s'),\n c => ageNumber(c)\n )\n .case(\n c => c.endsWith('m'),\n c => ageNumber(c) * 60\n )\n .case(\n c => c.endsWith('h'),\n c => ageNumber(c) * 3600\n )\n .case(\n c => c.endsWith('d'),\n c => ageNumber(c) * 24 * 3600\n )\n .else(ca as number),\n};\n","import { Func, Get, isDefined, isEmpty, ofGet, Predicate, tryTo, TypeGuard } from './index';\nimport { validate } from '../validation';\n\nclass CaseBuilder<V> {\n constructor(readonly v: V) {}\n\n case<T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {\n return new Case<T, V>(this.v).case(pred, out);\n }\n\n type<T, U = unknown>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return new Case<T, V>(this.v).type<U>(guard, out);\n }\n\n equals<T>(value: V, out: Get<T, V>): Case<T, V> {\n return new Case<T, V>(this.v).equals(value, out);\n }\n\n is = {\n defined: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(isDefined(prop(this.v)), out),\n empty: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(isEmpty(prop(this.v)), out),\n valid: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(validate(prop(this.v)).isValid, out),\n not: {\n defined: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!isDefined(prop(this.v)), out),\n empty: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!isEmpty(prop(this.v)), out),\n valid: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!validate(prop(this.v)).isValid, out),\n },\n };\n\n if = this.is;\n}\n\nclass Case<T, V = unknown> {\n constructor(protected value: V, protected outcome?: T) {}\n\n case(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {\n return tryTo(pred, this.value)\n .is.true()\n .map(() => ofGet(out, this.value))\n .map(res => new Found(this.value, res) as Case<T, V>)\n .or(this);\n }\n\n type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return tryTo(guard, this.value)\n .is.true()\n .map(() => out(this.value as unknown as U))\n .map(res => new Found(this.value, res) as Case<T, V>)\n .or(this);\n }\n\n equals(value: V, out: Get<T, V>): Case<T, V> {\n return this.case(this.value === value, out);\n }\n\n is = {\n defined: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(isDefined(prop(this.value)), out),\n empty: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(isEmpty(prop(this.value)), out),\n valid: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(validate(prop(this.value)).isValid, out),\n not: {\n defined: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!isDefined(prop(this.value)), out),\n empty: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!isEmpty(prop(this.value)), out),\n valid: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!validate(prop(this.value)).isValid, out),\n },\n };\n\n if = this.is;\n\n else(alt: Get<T, V>): T {\n return ofGet<T, V>(alt, this.value);\n }\n}\n\nclass Found<T, V> extends Case<T, V> {\n constructor(protected value: V, protected outcome: T) {\n super(value, outcome);\n }\n\n case(pred: Predicate<V>, out: Get<T, V>): this {\n return this;\n }\n\n type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return this;\n }\n\n equals(value: V, out: Get<T, V>): Case<T, V> {\n return this;\n }\n\n is = {\n defined: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n empty: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n valid: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n not: {\n defined: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n empty: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n valid: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n },\n };\n\n if = this.is;\n\n else(alt: Get<T, V>): T {\n return this.outcome;\n }\n}\n\nexport const choose = <V>(value: V) => new CaseBuilder<V>(value);\n","import { Uuid } from './Uuid';\nimport { text } from './Text';\nimport { Identity } from './Identity';\nimport { tryTo } from './Try';\nimport { Optional } from './Types';\n\nexport interface EnvContext {\n readonly domain: string;\n readonly name: string;\n readonly host: string;\n readonly port: number;\n readonly app: string;\n\n get(key: string, alt?: string): Optional<string>;\n}\n\nexport class DotEnvContext implements EnvContext {\n readonly domain = process.env.DOMAIN ?? 'easy';\n readonly name = process.env.ENVIRONMENT_NAME ?? '';\n readonly host = process.env.HOST ?? '';\n readonly port = Number.parseInt(process.env.PORT ?? '8080');\n readonly app = process.env.APP ?? '';\n\n readonly get = (key: string, alt?: string): Optional<string> =>\n tryTo(() =>\n text(key)\n .map(k => k.replace(/([a-z])([A-Z])/g, '$1 $2'))\n .snake.toString()\n ).map(k => process.env[k] ?? alt).value;\n}\n\nexport interface RequestContext {\n token?: any;\n identity?: Identity;\n jwt: string;\n correlationId?: Uuid;\n lastError?: string;\n lastErrorStack?: string;\n get<T>(key: string): T;\n set<T>(key: string, value: T): T;\n create: (f: () => void) => void;\n wrap<T>(f: () => Promise<T>): Promise<T>;\n}\n\nexport class BaseRequestContext implements RequestContext {\n private state: any = {};\n\n get token(): any {\n return this.get('token');\n }\n\n set token(token: any) {\n this.set('token', token);\n }\n\n get identity(): Identity {\n return this.token as Identity;\n }\n\n get jwt(): string {\n return this.get('jwt');\n }\n\n set jwt(jwt: string) {\n this.set('jwt', jwt);\n }\n\n get correlationId(): Uuid {\n return this.get('correlationId');\n }\n\n set correlationId(id: Uuid) {\n this.set('correlationId', id);\n }\n\n get lastError(): Optional<string> {\n return this.get('lastError');\n }\n\n set lastError(error: Optional<string>) {\n this.set('lastError', error);\n }\n\n public get<T>(key: string): T {\n return this.state[key] as T;\n }\n\n public set<T>(key: string, value: T): T {\n return (this.state[key] = value);\n }\n\n public readonly create = (f: () => void): void => f();\n\n public readonly wrap = <T>(f: () => Promise<T>): Promise<T> => f();\n}\n\n/**\n * @deprecated Renamed to BaseRequestContext\n */\nexport class BaseContext extends BaseRequestContext {}\n\nexport interface Contexts {\n env?: EnvContext;\n request?: RequestContext;\n other?: any;\n}\n\nexport class Context {\n constructor(protected state: Contexts = {}) {\n this.state = {\n ...{\n env: new DotEnvContext(),\n request: new BaseRequestContext(),\n other: {},\n },\n ...this.state,\n };\n }\n\n get env(): EnvContext {\n return this.state.env as EnvContext;\n }\n\n set env(env: EnvContext) {\n this.state.env = env;\n }\n\n get request(): RequestContext {\n return this.state.request as RequestContext;\n }\n\n set request(request: RequestContext) {\n this.state.request = request;\n }\n\n get other(): any {\n return this.state.other;\n }\n}\n\nexport const ctx = new Context();\n","import { Id } from './Id';\nimport { List, toList } from './List';\nimport { isAn } from './IsA';\nimport { meta } from './Meta';\nimport { isDefined } from './Is';\nimport { Validatable } from './Validatable';\nimport { JsonValue } from './Json';\nimport { Get, ofGet } from './Get';\nimport { TypeGuard } from './TypeGuard';\n\nexport abstract class Enum implements Validatable {\n protected constructor(readonly name: string, readonly id: Id = name.toLowerCase(), readonly code: string = id.toString()) {}\n\n get isValid(): boolean {\n return isDefined(this.id);\n }\n\n static all<E extends Enum>(): List<E> {\n return meta(this.allTuple<E>()).values<E>();\n }\n\n protected static allTuple<E extends Enum>(): Record<Id, E> {\n return meta(this).get(`all-${this.name}`) ?? meta(this).set(`all-${this.name}`, meta(this).values<E>().filter(isEnum).toObject('id'));\n }\n\n static filter<E extends Enum>(p: (value: E, index: number, array: E[]) => unknown, params?: unknown): List<E> {\n return this.all<E>().filter(p, params);\n }\n\n static first<E extends Enum>(p?: (value: E, index: number, array: E[]) => unknown, params?: unknown): E {\n return this.all<E>().first(p, params);\n }\n\n static byIds<E extends Enum>(ids: Id[] = []): List<E> {\n return toList(ids)\n .mapDefined(id => this.byId<E>(id))\n .distinct();\n }\n\n static byId<E extends Enum>(id: Id, alt?: Get<E, unknown>): E {\n return this.allTuple<E>()[id] ?? ofGet(alt);\n }\n\n equals<E extends Enum>(other: E | Id): other is E {\n return this.id === (isEnum(other) ? other.id : other);\n }\n\n isIn<E extends Enum>(...items: E[] | Id[]): boolean {\n return items.some(i => this.equals(i));\n }\n\n toJSON(): JsonValue {\n return this.id;\n }\n\n toString(): string {\n return this.id.toString();\n }\n}\n\nexport const isEnum: TypeGuard<Enum> = (e?: unknown): e is Enum => isDefined(e) && e instanceof Enum && isAn<Enum>(e, 'name', 'id', 'code');\n","import { asString, Text, text } from './Text';\nimport { Enum } from './Enum';\nimport { isDefined } from './Is';\nimport { Id } from './Id';\n\nexport class Exception extends Enum {\n static readonly AlreadyExists = new Exception('Subject already exists');\n static readonly DoesNotExist = new Exception('Does not exist');\n static readonly IsMissingId = new Exception('Subject is missing an id');\n static readonly IsNotImplemented = new Exception('Is not implemented');\n static readonly IsNotValid = new Exception('Is not valid');\n static readonly Unknown = new Exception('Unknown error');\n\n constructor(readonly message: string, id?: Id, readonly reason?: Text) {\n super(message, id ?? text(message).pascal.toString());\n }\n\n static readonly CouldNotExecute = (target: Text): Exception => new Exception(`Could not execute ${target}.`, 'CouldNotExecute');\n\n static readonly CouldNotValidate = (target: Text): Exception => new Exception(`Could not validate ${target}.`, 'CouldNotValidate');\n\n static readonly EnvironmentVariableNotFound = (variable: Text): Exception =>\n new Exception(`Environment variable ${text(variable).upper} could not be found.`, 'EnvironmentVariableNotFound');\n\n because = (reason: Text): Exception => new Exception(this.message, this.id, reason);\n}\n\nexport const isException = (e?: unknown, t?: Text): e is Exception => e instanceof Exception && (isDefined(t) ? e.equals(asString(t)) : true);\nexport const isDoesNotExist = (e?: unknown): e is Exception => e instanceof Exception && Exception.DoesNotExist.equals(e);\n","type Falsy = false | 0 | 0n | '' | null | undefined;\ntype Truthy<T = unknown> = Exclude<T, Falsy>;\n\nexport const isFalsy = (v?: unknown): v is Falsy => !v;\nexport const isTruthy = (v?: unknown): v is Truthy => !isFalsy(v);\n","import { Json, JsonValue } from './Json';\nimport { Id } from './Id';\nimport { Exception } from './Exception';\nimport { reject } from '../utils';\nimport { PageList, PageOptions } from './PageList';\nimport { List } from './List';\nimport { Optional } from './Types';\n\nexport type FetchOptions = PageOptions;\n\nexport abstract class Gateway<Options = FetchOptions> {\n all(options?: Options): Promise<PageList<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byId(id: Id, options?: Options): Promise<Optional<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n by(_key: string, _value: JsonValue, _options?: Options): Promise<PageList<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byIds(..._ids: Id[]): Promise<List<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n filter(options?: Options): Promise<PageList<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n exists(id: Id, options?: Options): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n add(item: Json, options?: Options): Promise<Json> {\n return reject(Exception.IsNotImplemented);\n }\n\n update(item: Json, options?: Options): Promise<Json> {\n return reject(Exception.IsNotImplemented);\n }\n\n remove(id: Id, options?: Options): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n}\n","import { v4 as uuid } from 'uuid';\nimport { isString } from './Is';\n\nconst isValidUuid = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i);\n\nexport type Uuid = string;\n\nexport const isUuid = (id?: unknown): id is Uuid => isString(id) && isValidUuid.test(id);\n\nexport const toUuid = (): Uuid => uuid();\n","import { toUuid } from './Uuid';\n\nexport type Id = string | number;\nexport type Key = Id;\nexport type Code = Id;\nexport type HasId = { id: Id };\n\nexport const toId = (): Id => toUuid();\n","export const isDate = (o?: unknown): o is Date => o instanceof Date && !isNaN(o.getTime());\n\nexport const days = {\n add: (date: Date, days: number): Date => {\n date.setDate(date.getDate() + days);\n return date;\n },\n today: (): Date => new Date(),\n yesterday: (): Date => days.add(days.today(), -1),\n tomorrow: (): Date => days.add(days.today(), 1),\n};\n\nexport const inPast = (o?: unknown): boolean => isDate(o) && o <= days.today();\n\nexport const inFuture = (o?: unknown): boolean => isDate(o) && o > days.today();\n","import { isArray, isObject } from './Is';\nimport { choose } from './Case';\n\nconst isEqualArray = (one: unknown[], another: unknown[]): boolean =>\n choose([one, another])\n .case(([o, a]) => !isArray(o) || !isArray(a), false)\n .case(([o, a]) => o?.length !== a?.length, false)\n .else(([o, a]) => !o.some((v, i) => !isEqual(v, a[i])));\n\nconst isEqualObject = (one: any, another: any): boolean =>\n choose([Object.keys(one), Object.keys(another)])\n .case(([keysO, keysA]) => keysO.length !== keysA.length, false)\n .case(([keysO, keysA]) => keysO.some(k => !keysA.includes(k)), false)\n .case(([keysO]) => keysO.some(k => !isEqual(one[k], another[k])), false)\n .else(true);\n\nexport const isEqual = (one?: unknown, another?: unknown): boolean =>\n choose([one, another])\n .case(([o, a]) => o === a, true)\n .case(\n ([o, a]) => isArray(o) || isArray(a),\n ([o, a]) => isEqualArray(o as [], a as [])\n )\n .case(\n ([o, a]) => o == null || a == null || (!isObject(o) && !isObject(a)),\n ([o, a]) => o !== o && a !== a\n )\n .else(([o, a]) => isEqualObject(o, a));\n","import { Func, isFunc } from './Func';\n\nexport type Message<Args> = string | Func<string, Args>;\n\nexport const ofMessage = <Args>(g: Message<Args>, ...params: Args[]): string => (isFunc<string, Args>(g) ? g(...params) : g);\n","export type Nullish = null | undefined;\n\nexport const isNullish = (v?: unknown): v is Nullish => v == null;\n","import { Get, ofGet } from './Get';\nimport { tryTo } from './Try';\nimport { isNumber } from './Is';\nimport { asString } from './Text';\n\nexport const asNumber = (n: unknown, alt?: Get<number>): number =>\n tryTo(() => asString(n))\n .map(s => parseInt(s))\n .filter(n => isNumber(n))\n .or(ofGet(alt) ?? NaN);\n","import { isList, List } from './List';\nimport { Construct, ofConstruct } from './Constructor';\nimport { isA } from './IsA';\nimport { PlainSort, Sort } from './Sort';\nimport { GetProperty } from './Get';\nimport { ArrayLike } from './Array';\nimport { Optional } from './Types';\nimport { isNumber } from './Is';\nimport { choose } from './Case';\n\nexport type FilterValue = { label?: string; value: any };\nexport type Filter = { label?: string; field: string; shortField?: string; values: FilterValue[] };\n\nexport const toFilter = (field: string, value: any): Filter => toShortFilter(field, field, value);\nexport const toShortFilter = (field: string, shortField: string, value: any): Filter => ({\n field,\n shortField,\n values: [{ value }],\n});\n\nexport type PageOptions = { take?: number; skip?: number; sort?: Sort[]; sorts?: PlainSort; filters?: Filter[] };\nexport type PageListOptions = Exclude<PageOptions, 'sort'> & { total?: number };\n\nexport class PageList<T> extends List<T> {\n private _options?: PageListOptions;\n\n private setPageOptions(options?: PageListOptions): this {\n this._options = options;\n return this;\n }\n get take(): number {\n return this._options?.take ?? 250;\n }\n\n get skip(): number {\n return this._options?.skip ?? 0;\n }\n\n get total(): Optional<number> {\n return this._options?.total;\n }\n\n get sorts(): Optional<PlainSort> {\n return this._options?.sorts;\n }\n\n get filters(): Optional<Filter[]> {\n return this._options?.filters;\n }\n\n get meta(): PageListOptions {\n return {\n take: this.take,\n skip: this.skip,\n total: this.total,\n sorts: this.sorts,\n filters: this.filters,\n };\n }\n\n get options(): Optional<PageListOptions> {\n return this._options;\n }\n\n asc(p: GetProperty<T, any>): PageList<T> {\n return toPageList(super.asc(p), this);\n }\n\n desc(p: GetProperty<T, any>): PageList<T> {\n return toPageList(super.desc(p), this);\n }\n\n diff(others: ArrayLike<T>): PageList<T> {\n return toPageList(super.diff(others), this);\n }\n\n diffByKey(others: ArrayLike<T>, key: keyof T): PageList<T> {\n return toPageList(super.diffByKey(others, key), this);\n }\n\n intersect(others: ArrayLike<T>): PageList<T> {\n return toPageList(super.intersect(others), this);\n }\n\n intersectByKey(others: ArrayLike<T>, key: keyof T): PageList<T> {\n return toPageList(super.intersectByKey(others, key), this);\n }\n\n map<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): PageList<U> {\n const items = super.map(f, params);\n return toPageList(items, this);\n }\n\n flatMap<U, This = unknown>(f: (this: This, value: T, index: number, array: T[]) => ReadonlyArray<U> | U, params?: This): PageList<U> {\n return toPageList(super.flatMap(f, params), this);\n }\n\n mapDefined<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): PageList<NonNullable<U>> {\n return toPageList(super.mapDefined(f, params), this);\n }\n\n mapAsync(f: (i: T) => Promise<T>): Promise<PageList<T>> {\n return super.mapAsync(f).then(r => toPageList(r, this));\n }\n\n distinct(): PageList<T> {\n return toPageList(super.distinct(), this);\n }\n\n distinctByKey(key: keyof T): PageList<T> {\n return toPageList(super.distinctByKey(key), this);\n }\n\n filter(p: (value: T, index: number, array: T[]) => unknown, params?: unknown): PageList<T> {\n return toPageList(super.filter(p, params), this);\n }\n\n concat(...items: ConcatArray<T>[]): PageList<T>;\n concat(...items: (T | ConcatArray<T>)[]): PageList<T>;\n concat(...items: (T | ConcatArray<T>)[]): PageList<T> {\n return toPageList(super.concat(...items), this);\n }\n\n reverse(): PageList<T> {\n return toPageList(super.reverse(), this);\n }\n\n splice(start: number, deleteCount?: number): PageList<T>;\n splice(start: number, deleteCount: number, ...items: T[]): PageList<T>;\n splice(start: number, deleteCount: number, ...items: T[]): PageList<T> {\n return toPageList(super.splice(start, deleteCount, ...items), this);\n }\n\n remove(item: T): PageList<T> {\n return toPageList(super.remove(item), this);\n }\n\n replace(key: keyof T, item: T): PageList<T> {\n return toPageList(super.replace(key, item), this);\n }\n\n switch(item: T): PageList<T> {\n return toPageList(super.switch(item), this);\n }\n\n defined(): PageList<NonNullable<T>> {\n return toPageList(super.defined(), this);\n }\n\n orElse(...alt: ArrayLike<T>): Optional<PageList<T>> {\n return toPageList(super.orElse(...alt), this);\n }\n\n slice(start?: number, end?: number): PageList<T> {\n return toPageList(super.slice(start, end), this);\n }\n}\n\nexport const isPageList = <T>(l?: unknown): l is PageList<T> => isList<T>(l) && isA(l, 'total');\n\nexport const toPageList = <T>(items: T[] = [], options?: Omit<PageOptions, 'sort'> & { total?: number }): PageList<T> =>\n (\n choose(items)\n .case(\n i => i.length === 1 && isNumber(i[0]),\n i => new PageList<T>().add(...i)\n )\n .else(i => new PageList<T>(...i)) as any\n ).setPageOptions(options);\n\n/* @deprecated No longer needed as the PageList is now a class that extends from List, use the map function */\nexport const asPageList = <T, U>(c: Construct<T>, items = toPageList<U>()): PageList<T> => items.map(i => ofConstruct(c, i));\n","import { Get, ofGet, Predicate } from './Get';\nimport { isDefined, isEmpty, isIn, isObject, isString, isTrue } from './Is';\nimport { isValid } from '../validation';\nimport { Constructor, on } from './Constructor';\nimport { toArray } from './Array';\n\nexport class Parser<T, V> {\n if = {\n equals: (pred?: Predicate<T>): this => this.evaluate(isTrue, pred),\n empty: <U>(pred?: Get<U, T>): this => this.evaluate(isEmpty, pred),\n defined: <U>(pred?: Get<U, T>): this => this.evaluate(isDefined, pred),\n valid: <U>(pred?: Get<U, T>): this => this.evaluate(isValid, pred),\n in: (...items: T[]): this => this.evaluate(() => isIn(this.value, toArray(...items))),\n is: {\n object: <U>(pred?: Get<U, T>): this => this.evaluate(isObject, pred),\n string: <U>(pred?: Get<U, T>): this => this.evaluate(isString, pred),\n instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => this.value instanceof c, pred),\n },\n not: {\n empty: <U>(pred?: Get<U, T>): this => this.evaluateNot(isEmpty, pred),\n defined: <U>(pred?: Get<U, T>): this => this.evaluateNot(isDefined, pred),\n valid: <U>(pred?: Get<U, T>): this => this.evaluateNot(isValid, pred),\n isObject: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),\n in: (...items: T[]): this => this.evaluate(() => !isIn(this.value, toArray(...items))),\n is: {\n object: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),\n string: <U>(pred?: Get<U, T>): this => this.evaluateNot(isString, pred),\n instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => !(this.value instanceof c), pred),\n },\n },\n };\n\n constructor(\n protected value: T,\n protected valid = true\n ) {}\n\n protected evaluate<U>(meta: Get<boolean>, pred?: Get<U, T>): this {\n return on(this, t => (t.valid = ofGet(meta, pred ? ofGet(pred, this.value) : this.value)));\n }\n\n protected evaluateNot<U>(meta: Get<boolean>, pred?: Get<U, T>): this {\n return on(this, t => (t.valid = !ofGet(meta, pred ? ofGet(pred, this.value) : this.value)));\n }\n}\n","import { Exception, FetchOptions, Id, Json, JsonValue, Key, List, PageList } from './index';\nimport { reject } from '../utils';\n\nexport class Repository<T, Options = FetchOptions> {\n all(options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byId(id: Id): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n exists(id: Id): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n add(t: T | Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n update(id: Id, json: Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n remove(id: Id): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n upsert(id: Id, item: Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n}\n","import { isA } from './IsA';\nimport { Text } from './Text';\nimport { ctx } from './Context';\nimport { TypeGuard } from './TypeGuard';\n\nexport type Result = { message: string; location?: string; domain?: string };\n\nexport const toResult = (message: Text, location?: Text, domain: Text = ctx.env.domain): Result => ({\n message: message.toString(),\n location: location?.toString(),\n domain: domain?.toString(),\n});\n\nexport const isResult: TypeGuard<Result> = (r?: unknown): r is Result => isA<Result>(r, 'message');\n","import { Text } from './Text';\nimport { isResult, Result, toResult } from './Result';\nimport { Validatable } from './Validatable';\nimport { isDefined } from './Is';\nimport { toArray } from './Array';\n\nconst parse = (...rs: (Text | Result)[]): Result[] => toArray(...rs).map(r => (isResult(r) ? r : toResult(r)));\n\nexport class Results implements Validatable {\n public readonly results: Result[];\n\n constructor(...rs: (Text | Result)[]) {\n this.results = parse(...rs);\n }\n\n get length(): number {\n return this.results.length;\n }\n\n get isValid(): boolean {\n return this.results.length === 0;\n }\n\n add = (...rs: (Text | Result)[]): Results => toResults(...this.results, ...parse(...rs));\n}\n\nexport const toResults = (...r: (Text | Result)[]): Results => new Results(...r);\n\nexport const isResults = (r?: unknown): r is Results => isDefined(r) && r instanceof Results;\n","export const asc = 1;\nexport const desc = -1;\nexport type SortDirection = typeof asc | typeof desc;\nexport type Sort = { key: string; value: SortDirection };\nexport type PlainSort = Record<string, SortDirection> | string[];\n","import { meta } from './Meta';\n\nexport const tag =\n (name: string): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set(name, property);\n };\n\nexport const searchable = (): PropertyDecorator => tag(searchable.name);\n","import { isBoolean, isNotEmpty, isTrue } from './Is';\nimport { asString, Text } from './Text';\nimport { toName } from './Constructor';\nimport { ctx } from './Context';\nimport { List, toList } from './List';\nimport { entries, meta } from './Meta';\nimport { tryTo } from './Try';\nimport { Optional } from './Types';\nimport { OneOrMore, toArray } from './Array';\n\nexport type Segment = Text & { key?: string; segment?: string; query?: (value: unknown) => string };\n\nexport const toSegment = (\n key?: Text,\n {\n segment,\n query,\n }: {\n segment?: string;\n query?: (value: unknown) => string;\n } = {}\n): Segment => ({\n key: key as string,\n segment,\n query,\n toString: () => asString(key),\n});\n\nexport const uri = {\n host: (key?: string): Segment => toSegment(key, { segment: key ?? ctx.env.host ?? '$host' }),\n resource: (resource: Uri): Segment => toSegment(toName(resource, 'Uri'), { segment: toName(resource, 'Uri') }),\n segment: (key?: Text): Segment => toSegment(key, { segment: key as string }),\n path: (key: Text): Segment => toSegment(key, { segment: `:${key}` }),\n query: (key: Text): Segment =>\n toSegment(key, {\n query: (value: unknown): string =>\n tryTo(value)\n .is.defined()\n .map(v => encodeURIComponent(asString(v)))\n .map(v => `${key}=${v}`)\n .orElse('') ?? '',\n }),\n boolean: (key: Text): Segment => toSegment(key, { query: (value: unknown): string => (isTrue(value) ? `${key}` : '') }),\n};\n\ntype Prop = { segment: Segment; value: any };\n\nconst toRoute = (...segments: Segment[]): string =>\n toList(segments)\n .mapDefined(s => s.segment)\n .join('/');\n\nexport type Uri = {\n id: (id?: unknown) => Uri;\n ids: (ids: OneOrMore<unknown>) => Uri;\n query: (q?: unknown) => Uri;\n sort: (q?: any) => Uri;\n skip: (n?: number) => Uri;\n take: (n?: number) => Uri;\n path: string;\n route: (resource: string) => string;\n isInternal: boolean;\n toString: () => string;\n};\n\nexport type UriExpandProps = { q: string; s: string };\n\nexport class EasyUri<Props = UriExpandProps> implements Uri {\n static readonly id = uri.path('id');\n static readonly ids = uri.query('ids');\n static readonly query = uri.query('q');\n static readonly sort = uri.query('s');\n static readonly skip = uri.query('skip');\n static readonly take = uri.query('take');\n\n readonly host = uri.host();\n protected resource = uri.resource(this);\n\n protected state: any = {};\n\n constructor(readonly segments: Segment[] = []) {}\n\n get path(): string {\n return toRoute(uri.segment(''), this.resource, ...this.segments);\n }\n\n get complete(): string {\n return toRoute(this.host, this.resource, ...this.segments);\n }\n\n get isInternal(): boolean {\n return toRoute(this.host) === (ctx.env.host ?? '$host');\n }\n\n protected get props(): List<Prop> {\n return meta(this.state).values<Prop>();\n }\n\n route = (resource: Optional<string> = this.resource.key): string => toRoute(uri.segment(''), uri.segment(resource?.toLowerCase()), ...this.segments);\n\n set = (segment: Segment, value?: unknown): this => {\n tryTo(value)\n .is.defined()\n .accept(value => (this.state[segment.key ?? ''] = { segment, value }));\n return this;\n };\n\n toString(): string {\n return tryTo(() => this.props)\n .map(ps => ps.filter(p => p.segment?.segment))\n .map(ps => ps.reduce((r: string, p: Prop) => r.replace(asString(p.segment.segment), asString(p.value)), this.complete))\n .map(route => ({\n route,\n query: this.props.mapDefined(p => (p.segment?.query ? p.segment?.query(p.value) : undefined))?.join('&'),\n }))\n .map(({ route, query }) => (isNotEmpty(query) ? `${route}?${query}` : route)).value;\n }\n\n id = (id?: unknown): this => this.set(EasyUri.id, id);\n ids = (ids: OneOrMore<unknown>): this => this.set(EasyUri.ids, toArray(ids).join(','));\n query = (q?: unknown): this => this.set(EasyUri.query, q);\n sort = (s?: any): this => this.set(EasyUri.sort, asString(s));\n\n skip = (index?: number): this => this.set(EasyUri.skip, index);\n take = (items?: number): this => this.set(EasyUri.take, items);\n\n expand(props: Partial<Props>): this {\n return entries(props)\n .filter(([_, v]) => isNotEmpty(v))\n .reduce((u, [k, v]) => (isBoolean(v) ? u.set(uri.boolean(k), v) : u.set(uri.query(k), toArray(v).join(','))), this);\n }\n}\n","import { isA } from './IsA';\nimport { TypeGuard } from './TypeGuard';\n\nexport interface Validatable {\n isValid: boolean;\n}\n\nexport const isValidatable: TypeGuard<Validatable> = (v?: unknown): v is Validatable => isA<Validatable>(v, 'isValid');\n","import { asString, isDefined, JsonValue, Validatable } from './index';\n\nexport class Value<V = string> implements Validatable {\n constructor(readonly value: V) {\n this.value = value;\n }\n\n get isValid(): boolean {\n return isDefined(this.value);\n }\n\n toJSON(): JsonValue {\n return this.value as unknown as JsonValue;\n }\n\n toString(): string {\n return asString(this.value);\n }\n}\n\nexport const isValue = (v?: unknown): v is Value => v instanceof Value;\n","import { isDefined, json, Json, JsonValue, Sort } from '../types';\nimport { convert, Convert } from '../utils';\n\nexport class Condition {\n constructor(readonly key: string, readonly operator: string, readonly value: unknown) {}\n\n and = (...others: Condition[]): LogicalCondition => new LogicalCondition('and', [this, ...others]);\n or = (...others: Condition[]): LogicalCondition => new LogicalCondition('or', [this, ...others]);\n\n toJSON(): Json {\n return { [this.key]: { [`$${this.operator}`]: json.parse(this.value) } };\n }\n}\n\nexport class LogicalCondition {\n constructor(readonly operator: string, readonly conditions: Condition[]) {}\n\n toJSON(): Json {\n return { [`$${this.operator}`]: this.conditions.map(c => c.toJSON()) };\n }\n}\n\nexport class SortCondition extends Condition implements Sort {\n constructor(readonly key: string, readonly value: -1 | 1) {\n super(key, '', value);\n }\n\n toJSON(): Json {\n return { [this.key]: this.value };\n }\n}\n\nexport const toCondition = (field: string, operator: string, value: unknown, conv: Convert = convert.default): Condition =>\n new Condition(field, operator, conv.from(value) as JsonValue);\n\nexport const isSortCondition = (s?: unknown): s is SortCondition => isDefined(s) && s instanceof SortCondition;\n","import { Exception, FetchOptions, Gateway, Id, isDefined, Json, JsonValue, Optional, PageList, toPageList } from '../types';\nimport { when } from '../validation';\n\nexport class InMemoryGateway extends Gateway {\n constructor(private readonly data: Promise<PageList<Json>>) {\n super();\n }\n\n all(options?: FetchOptions): Promise<PageList<Json>> {\n return this.data.then(d => toPageList(d, d));\n }\n\n byId(id: Id): Promise<Optional<Json>> {\n return this.data.then(d => d.byId(id)).then(d => (d ? { ...d } : undefined));\n }\n\n by = (key: string, value: JsonValue): Promise<PageList<Json>> => {\n return this.data.then(d => d.filter(i => i[key] === value));\n };\n\n exists(id: Id): Promise<boolean> {\n return this.byId(id).then(d => isDefined(d));\n }\n\n add(item: Json): Promise<Json> {\n return when(item)\n .not.contains(i => i.id)\n .reject(Exception.IsMissingId)\n .then(i => this.exists(i.id as Id))\n .then(ex => when(ex).isTrue.reject(Exception.AlreadyExists))\n .then(() => this.data.then(d => d.add(item)))\n .then(() => ({ ...item }));\n }\n\n remove(id: Id): Promise<true> {\n return this.data\n .then(d =>\n when(d.findIndex(i => i.id === id))\n .with(i => i < 0)\n .reject(Exception.DoesNotExist)\n .then(i => d.splice(i, 1))\n )\n .then(() => true);\n }\n\n update(item: Json): Promise<Json> {\n return when(item)\n .not.contains(i => i.id)\n .reject(Exception.IsMissingId)\n .then(i => this.remove(i.id as Id).then(() => this.add(i)));\n }\n}\n","import { Constructor, Enum, ofConstruct } from '../types';\nimport { DataProvider } from './DataProvider';\n\nexport type DatabaseOptions = {\n user?: string;\n password?: string;\n host?: string;\n port?: number;\n cluster?: string;\n connectionString?: string;\n maxPoolSize?: number;\n minPoolSize?: number;\n maxIdleTimeMS?: number;\n};\n\nexport class DefaultProvider implements DataProvider {}\n\nexport class Database extends Enum {\n static readonly Default = new Database('Default', DefaultProvider);\n\n constructor(name: string, readonly provider: Constructor<DataProvider> | DataProvider, readonly options?: DatabaseOptions) {\n super(name);\n }\n\n provide = <P>(): P => ofConstruct(this.provider, this);\n}\n","import { Property } from '../utils';\nimport { Condition, SortCondition, toCondition } from './Condition';\nimport { isDefined, toArray } from '../types';\n\nexport class Field extends Property {\n is = (value: unknown): Condition => this.condition('eq', value);\n\n isNot = (value: unknown): Condition => this.condition('ne', value);\n\n isIn = (...value: unknown[]): Condition => this.condition('in', toArray(value));\n\n notIn = (...value: unknown[]): Condition => this.condition('nin', toArray(value));\n\n exists = (does: boolean): Condition => this.condition('exists', does);\n\n greater = (value: unknown): Condition => this.condition('gt', value);\n\n greaterEqual = (value: unknown): Condition => this.condition('gte', value);\n\n less = (value: unknown): Condition => this.condition('lt', value);\n\n lessEqual = (value: unknown): Condition => this.condition('lte', value);\n\n asc = (): SortCondition => new SortCondition(this.property, 1);\n\n desc = (): SortCondition => new SortCondition(this.property, -1);\n\n protected condition = (operator: string, value: unknown): Condition => toCondition(this.property, operator, value, this.options?.convert);\n}\n\nexport const isField = (f?: unknown): f is Field => isDefined(f) && f instanceof Field;\n","import { Enum, Id, Optional, text } from '../../types';\n\nexport class Country extends Enum {\n static readonly AF = new Country('Afghanistan', 'AF');\n static readonly AX = new Country('Åland Islands', 'AX');\n static readonly AL = new Country('Albania', 'AL');\n static readonly DZ = new Country('Algeria', 'DZ');\n static readonly AS = new Country('American Samoa', 'AS');\n static readonly AD = new Country('Andorra', 'AD');\n static readonly AO = new Country('Angola', 'AO');\n static readonly AI = new Country('Anguilla', 'AI');\n static readonly AQ = new Country('Antarctica', 'AQ');\n static readonly AG = new Country('Antigua & Barbuda', 'AG');\n static readonly AR = new Country('Argentina', 'AR');\n static readonly AM = new Country('Armenia', 'AM');\n static readonly AW = new Country('Aruba', 'AW');\n static readonly AU = new Country('Australia', 'AU');\n static readonly AT = new Country('Austria', 'AT');\n static readonly AZ = new Country('Azerbaijan', 'AZ');\n static readonly BS = new Country('Bahamas', 'BS');\n static readonly BH = new Country('Bahrain', 'BH');\n static readonly BD = new Country('Bangladesh', 'BD');\n static readonly BB = new Country('Barbados', 'BB');\n static readonly BY = new Country('Belarus', 'BY');\n static readonly BE = new Country('Belgium', 'BE');\n static readonly BZ = new Country('Belize', 'BZ');\n static readonly BJ = new Country('Benin', 'BJ');\n static readonly BM = new Country('Bermuda', 'BM');\n static readonly BT = new Country('Bhutan', 'BT');\n static readonly BO = new Country('Bolivia', 'BO');\n static readonly BA = new Country('Bosnia & Herzegovina', 'BA');\n static readonly BW = new Country('Botswana', 'BW');\n static readonly BV = new Country('Bouvet Island', 'BV');\n static readonly BR = new Country('Brazil', 'BR');\n static readonly IO = new Country('British Indian Ocean Territory', 'IO');\n static readonly VG = new Country('British Virgin Islands', 'VG');\n static readonly BN = new Country('Brunei', 'BN');\n static readonly BG = new Country('Bulgaria', 'BG');\n static readonly BF = new Country('Burkina Faso', 'BF');\n static readonly BI = new Country('Burundi', 'BI');\n static readonly KH = new Country('Cambodia', 'KH');\n static readonly CM = new Country('Cameroon', 'CM');\n static readonly CA = new Country('Canada', 'CA');\n static readonly CV = new Country('Cape Verde', 'CV');\n static readonly BQ = new Country('Caribbean Netherlands', 'BQ');\n static readonly KY = new Country('Cayman Islands', 'KY');\n static readonly CF = new Country('Central African Republic', 'CF');\n static readonly TD = new Country('Chad', 'TD');\n static readonly CL = new Country('Chile', 'CL');\n static readonly CN = new Country('China', 'CN');\n static readonly CX = new Country('Christmas Island', 'CX');\n static readonly CC = new Country('Cocos (Keeling) Islands', 'CC');\n static readonly CO = new Country('Colombia', 'CO');\n static readonly KM = new Country('Comoros', 'KM');\n static readonly CG = new Country('Congo - Brazzaville', 'CG');\n static readonly CD = new Country('Congo - Kinshasa', 'CD');\n static readonly CK = new Country('Cook Islands', 'CK');\n static readonly CR = new Country('Costa Rica', 'CR');\n static readonly CI = new Country('Côte d’Ivoire', 'CI');\n static readonly HR = new Country('Croatia', 'HR');\n static readonly CU = new Country('Cuba', 'CU');\n static readonly CW = new Country('Curaçao', 'CW');\n static readonly CY = new Country('Cyprus', 'CY');\n static readonly CZ = new Country('Czechia', 'CZ');\n static readonly DK = new Country('Denmark', 'DK');\n static readonly DJ = new Country('Djibouti', 'DJ');\n static readonly DM = new Country('Dominica', 'DM');\n static readonly DO = new Country('Dominican Republic', 'DO');\n static readonly EC = new Country('Ecuador', 'EC');\n static readonly EG = new Country('Egypt', 'EG');\n static readonly SV = new Country('El Salvador', 'SV');\n static readonly GQ = new Country('Equatorial Guinea', 'GQ');\n static readonly ER = new Country('Eritrea', 'ER');\n static readonly EE = new Country('Estonia', 'EE');\n static readonly SZ = new Country('Eswatini', 'SZ');\n static readonly ET = new Country('Ethiopia', 'ET');\n static readonly FK = new Country('Falkland Islands', 'FK');\n static readonly FO = new Country('Faroe Islands', 'FO');\n static readonly FJ = new Country('Fiji', 'FJ');\n static readonly FI = new Country('Finland', 'FI');\n static readonly FR = new Country('France', 'FR');\n static readonly GF = new Country('French Guiana', 'GF');\n static readonly PF = new Country('French Polynesia', 'PF');\n static readonly TF = new Country('French Southern Territories', 'TF');\n static readonly GA = new Country('Gabon', 'GA');\n static readonly GM = new Country('Gambia', 'GM');\n static readonly GE = new Country('Georgia', 'GE');\n static readonly DE = new Country('Germany', 'DE');\n static readonly GH = new Country('Ghana', 'GH');\n static readonly GI = new Country('Gibraltar', 'GI');\n static readonly GR = new Country('Greece', 'GR');\n static readonly GL = new Country('Greenland', 'GL');\n static readonly GD = new Country('Grenada', 'GD');\n static readonly GP = new Country('Guadeloupe', 'GP');\n static readonly GU = new Country('Guam', 'GU');\n static readonly GT = new Country('Guatemala', 'GT');\n static readonly GG = new Country('Guernsey', 'GG');\n static readonly GN = new Country('Guinea', 'GN');\n static readonly GW = new Country('Guinea-Bissau', 'GW');\n static readonly GY = new Country('Guyana', 'GY');\n static readonly HT = new Country('Haiti', 'HT');\n static readonly HM = new Country('Heard & McDonald Islands', 'HM');\n static readonly HN = new Country('Honduras', 'HN');\n static readonly HK = new Country('Hong Kong SAR China', 'HK');\n static readonly HU = new Country('Hungary', 'HU');\n static readonly IS = new Country('Iceland', 'IS');\n static readonly IN = new Country('India', 'IN');\n static readonly ID = new Country('Indonesia', 'ID');\n static readonly IR = new Country('Iran', 'IR');\n static readonly IQ = new Country('Iraq', 'IQ');\n static readonly IE = new Country('Ireland', 'IE');\n static readonly IM = new Country('Isle of Man', 'IM');\n static readonly IL = new Country('Israel', 'IL');\n static readonly IT = new Country('Italy', 'IT');\n static readonly JM = new Country('Jamaica', 'JM');\n static readonly JP = new Country('Japan', 'JP');\n static readonly JE = new Country('Jersey', 'JE');\n static readonly JO = new Country('Jordan', 'JO');\n static readonly KZ = new Country('Kazakhstan', 'KZ');\n static readonly KE = new Country('Kenya', 'KE');\n static readonly KI = new Country('Kiribati', 'KI');\n static readonly KW = new Country('Kuwait', 'KW');\n static readonly KG = new Country('Kyrgyzstan', 'KG');\n static readonly LA = new Country('Laos', 'LA');\n static readonly LV = new Country('Latvia', 'LV');\n static readonly LB = new Country('Lebanon', 'LB');\n static readonly LS = new Country('Lesotho', 'LS');\n static readonly LR = new Country('Liberia', 'LR');\n static readonly LY = new Country('Libya', 'LY');\n static readonly LI = new Country('Liechtenstein', 'LI');\n static readonly LT = new Country('Lithuania', 'LT');\n static readonly LU = new Country('Luxembourg', 'LU');\n static readonly MO = new Country('Macao SAR China', 'MO');\n static readonly MG = new Country('Madagascar', 'MG');\n static readonly MW = new Country('Malawi', 'MW');\n static readonly MY = new Country('Malaysia', 'MY');\n static readonly MV = new Country('Maldives', 'MV');\n static readonly ML = new Country('Mali', 'ML');\n static readonly MT = new Country('Malta', 'MT');\n static readonly MH = new Country('Marshall Islands', 'MH');\n static readonly MQ = new Country('Martinique', 'MQ');\n static readonly MR = new Country('Mauritania', 'MR');\n static readonly MU = new Country('Mauritius', 'MU');\n static readonly YT = new Country('Mayotte', 'YT');\n static readonly MX = new Country('Mexico', 'MX');\n static readonly FM = new Country('Micronesia', 'FM');\n static readonly MD = new Country('Moldova', 'MD');\n static readonly MC = new Country('Monaco', 'MC');\n static readonly MN = new Country('Mongolia', 'MN');\n static readonly ME = new Country('Montenegro', 'ME');\n static readonly MS = new Country('Montserrat', 'MS');\n static readonly MA = new Country('Morocco', 'MA');\n static readonly MZ = new Country('Mozambique', 'MZ');\n static readonly MM = new Country('Myanmar (Burma)', 'MM');\n static readonly NA = new Country('Namibia', 'NA');\n static readonly NR = new Country('Nauru', 'NR');\n static readonly NP = new Country('Nepal', 'NP');\n static readonly NL = new Country('Netherlands', 'NL');\n static readonly NC = new Country('New Caledonia', 'NC');\n static readonly NZ = new Country('New Zealand', 'NZ');\n static readonly NI = new Country('Nicaragua', 'NI');\n static readonly NE = new Country('Niger', 'NE');\n static readonly NG = new Country('Nigeria', 'NG');\n static readonly NU = new Country('Niue', 'NU');\n static readonly NF = new Country('Norfolk Island', 'NF');\n static readonly KP = new Country('North Korea', 'KP');\n static readonly MK = new Country('North Macedonia', 'MK');\n static readonly MP = new Country('Northern Mariana Islands', 'MP');\n static readonly NO = new Country('Norway', 'NO');\n static readonly OM = new Country('Oman', 'OM');\n static readonly PK = new Country('Pakistan', 'PK');\n static readonly PW = new Country('Palau', 'PW');\n static readonly PS = new Country('Palestinian Territories', 'PS');\n static readonly PA = new Country('Panama', 'PA');\n static readonly PG = new Country('Papua New Guinea', 'PG');\n static readonly PY = new Country('Paraguay', 'PY');\n static readonly PE = new Country('Peru', 'PE');\n static readonly PH = new Country('Philippines', 'PH');\n static readonly PN = new Country('Pitcairn Islands', 'PN');\n static readonly PL = new Country('Poland', 'PL');\n static readonly PT = new Country('Portugal', 'PT');\n static readonly PR = new Country('Puerto Rico', 'PR');\n static readonly QA = new Country('Qatar', 'QA');\n static readonly RE = new Country('Réunion', 'RE');\n static readonly RO = new Country('Romania', 'RO');\n static readonly RU = new Country('Russia', 'RU');\n static readonly RW = new Country('Rwanda', 'RW');\n static readonly WS = new Country('Samoa', 'WS');\n static readonly SM = new Country('San Marino', 'SM');\n static readonly ST = new Country('São Tomé & Príncipe', 'ST');\n static readonly SA = new Country('Saudi Arabia', 'SA');\n static readonly SN = new Country('Senegal', 'SN');\n static readonly RS = new Country('Serbia', 'RS');\n static readonly SC = new Country('Seychelles', 'SC');\n static readonly SL = new Country('Sierra Leone', 'SL');\n static readonly SG = new Country('Singapore', 'SG');\n static readonly SX = new Country('Sint Maarten', 'SX');\n static readonly SK = new Country('Slovakia', 'SK');\n static readonly SI = new Country('Slovenia', 'SI');\n static readonly SB = new Country('Solomon Islands', 'SB');\n static readonly SO = new Country('Somalia', 'SO');\n static readonly ZA = new Country('South Africa', 'ZA');\n static readonly GS = new Country('South Georgia & South Sandwich Islands', 'GS');\n static readonly KR = new Country('South Korea', 'KR');\n static readonly SS = new Country('South Sudan', 'SS');\n static readonly ES = new Country('Spain', 'ES');\n static readonly LK = new Country('Sri Lanka', 'LK');\n static readonly BL = new Country('St. Barthélemy', 'BL');\n static readonly SH = new Country('St. Helena', 'SH');\n static readonly KN = new Country('St. Kitts & Nevis', 'KN');\n static readonly LC = new Country('St. Lucia', 'LC');\n static readonly MF = new Country('St. Martin', 'MF');\n static readonly PM = new Country('St. Pierre & Miquelon', 'PM');\n static readonly VC = new Country('St. Vincent & Grenadines', 'VC');\n static readonly SD = new Country('Sudan', 'SD');\n static readonly SR = new Country('Suriname', 'SR');\n static readonly SJ = new Country('Svalbard & Jan Mayen', 'SJ');\n static readonly SE = new Country('Sweden', 'SE');\n static readonly CH = new Country('Switzerland', 'CH');\n static readonly SY = new Country('Syria', 'SY');\n static readonly TW = new Country('Taiwan', 'TW');\n static readonly TJ = new Country('Tajikistan', 'TJ');\n static readonly TZ = new Country('Tanzania', 'TZ');\n static readonly TH = new Country('Thailand', 'TH');\n static readonly TL = new Country('Timor-Leste', 'TL');\n static readonly TG = new Country('Togo', 'TG');\n static readonly TK = new Country('Tokelau', 'TK');\n static readonly TO = new Country('Tonga', 'TO');\n static readonly TT = new Country('Trinidad & Tobago', 'TT');\n static readonly TN = new Country('Tunisia', 'TN');\n static readonly TR = new Country('Turkey', 'TR');\n static readonly TM = new Country('Turkmenistan', 'TM');\n static readonly TC = new Country('Turks & Caicos Islands', 'TC');\n static readonly TV = new Country('Tuvalu', 'TV');\n static readonly UM = new Country('U.S. Outlying Islands', 'UM');\n static readonly VI = new Country('U.S. Virgin Islands', 'VI');\n static readonly UG = new Country('Uganda', 'UG');\n static readonly UA = new Country('Ukraine', 'UA');\n static readonly AE = new Country('United Arab Emirates', 'AE');\n static readonly GB = new Country('United Kingdom', 'GB');\n static readonly US = new Country('United States', 'US');\n static readonly UY = new Country('Uruguay', 'UY');\n static readonly UZ = new Country('Uzbekistan', 'UZ');\n static readonly VU = new Country('Vanuatu', 'VU');\n static readonly VA = new Country('Vatican City', 'VA');\n static readonly VE = new Country('Venezuela', 'VE');\n static readonly VN = new Country('Vietnam', 'VN');\n static readonly WF = new Country('Wallis & Futuna', 'WF');\n static readonly EH = new Country('Western Sahara', 'EH');\n static readonly YE = new Country('Yemen', 'YE');\n static readonly ZM = new Country('Zambia', 'ZM');\n static readonly ZW = new Country('Zimbabwe', 'ZW');\n\n constructor(name: string, id: string, private readonly lower = text(id).lower.trim.toString()) {\n super(name, id);\n }\n\n static lookup(other: string): Optional<Country> {\n return this.all<Country>().first(l => l.equals(other));\n }\n\n equals<E extends Enum>(other: E | Id): other is E {\n return text(other).lower.trim.equals(this.lower);\n }\n}\n","import { isDefined, json, Json, Validatable } from '../types';\nimport { validate } from '../validation';\n\nexport abstract class Struct implements Validatable {\n constructor(protected readonly state: any = {}) {}\n\n get isValid(): boolean {\n return validate(this).isValid;\n }\n\n toJSON(): Json {\n return json.delete(json.parse({ ...this }), 'state');\n }\n\n toString(): string {\n return this.constructor.name;\n }\n\n update(_add: Json): Struct {\n return this;\n }\n\n protected merge(a: unknown): Json {\n return json.merge(this, a);\n }\n}\n\nexport function isStruct(s?: unknown): s is Struct {\n return isDefined(s) && s instanceof Struct;\n}\n","import { choose, isA, isDate, isDefined, isNumber, isString, JsonValue, Optional, Value } from '../../types';\nimport { DateTime as LuxonDateTime, DateTimeUnit as LuxonDateTimeUnit, DurationUnit as LuxonDurationUnit, Settings } from 'luxon';\nimport { ifDefined } from '../../utils';\n\nSettings.defaultZone = 'utc';\n\nexport type DateTimeUnit = LuxonDateTimeUnit;\nexport type DurationUnit = LuxonDurationUnit;\nexport type Duration = Partial<Record<DurationUnit, number>>;\n\nexport type DiffOptions = {\n rounding: 'floor' | 'ceil' | 'round';\n};\n\nexport class DateTime extends Value<Optional<string>> {\n constructor(value?: string | number | Date | DateTime | null, format?: string) {\n super(\n choose(value)\n .type(isString, v => (format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true })))\n .type(isNumber, v => LuxonDateTime.fromMillis(v))\n .type(isDate, v => LuxonDateTime.fromJSDate(v))\n .type(isDateTime, v => LuxonDateTime.fromISO(v.toString()))\n .else(undefined as unknown as LuxonDateTime)\n ?.toISO() as unknown as string\n );\n }\n\n static get now(): DateTime {\n return new DateTime(LuxonDateTime.utc().toISO());\n }\n\n get isValid(): boolean {\n return isDefined(this.value) && this.utc.isValid;\n }\n\n /**\n * @deprecated Deprecated in favor for DateTime.from as that also accepts locales and another DateTime\n */\n get fromNow(): string {\n return this.from();\n }\n\n protected get utc(): LuxonDateTime {\n return this.luxon.setZone('utc');\n }\n\n protected get luxon(): LuxonDateTime {\n return LuxonDateTime.fromISO(this.value as string, { setZone: true });\n }\n\n from(date?: DateTime): string;\n\n from(locale?: string): string;\n\n from(date?: DateTime, locale?: string): string;\n\n from(param?: string | DateTime, other?: string): string {\n const date: Optional<DateTime> = isA<DateTime>(param) ? param : undefined;\n const locale: string = (isString(param) ? param : undefined) ?? other ?? 'en';\n return ifDefined(\n date,\n d => this.utc.setLocale(locale).toRelative({ base: d.utc }),\n () => this.utc.setLocale(locale).toRelative()\n ) as string;\n }\n\n isAfter(dt: DateTime): boolean {\n return this.utc > dt.utc;\n }\n\n isBefore(dt: DateTime): boolean {\n return this.utc < dt.utc;\n }\n\n equals(dt: DateTime): boolean {\n return this.utc.hasSame(dt.utc, 'millisecond');\n }\n\n add(n: number): DateTime;\n add(n: number, unit: DurationUnit): DateTime;\n add(duration: Duration): DateTime;\n add(n: number | Duration, unit?: DurationUnit): DateTime {\n return new DateTime(this.luxon.plus(isNumber(n) ? { [unit ?? ('day' as string)]: n } : n).toISO());\n }\n\n subtract(n: number): DateTime;\n subtract(n: number, unit: DurationUnit): DateTime;\n subtract(duration: Duration): DateTime;\n subtract(n: number | Duration, unit?: DurationUnit): DateTime {\n return new DateTime(this.luxon.minus(isNumber(n) ? { [unit ?? ('day' as string)]: n } : n).toISO());\n }\n\n diff(other: DateTime, unit: DateTimeUnit = 'day', opts?: DiffOptions): number {\n return Math[opts?.rounding ?? 'floor'](this.utc.diff(other.utc).as(unit));\n }\n\n startOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.startOf(unit).toISO());\n }\n\n endOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.endOf(unit).toISO());\n }\n\n isWeekend(): boolean {\n return this.luxon.isWeekend;\n }\n\n withZone(zone: string): DateTime {\n return new DateTime(this.utc.setZone(zone).toISO());\n }\n\n toString(): string {\n return this.value ?? '';\n }\n\n toJSON(): JsonValue {\n return this.utc.toISO() as unknown as JsonValue;\n }\n\n toFormat(format: string): string {\n return this.luxon.toFormat(format);\n }\n\n toLocale(locale = 'nl-NL', format = 'D'): string {\n return this.luxon.setLocale(locale).toFormat(format);\n }\n\n toFull(locale?: string): string {\n return this.toLocale(locale, 'DDD');\n }\n\n toDate(): Optional<Date> {\n return this.isValid ? this.utc.toJSDate() : undefined;\n }\n}\n\nexport const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;\n\nexport const dt = (dt?: unknown): DateTime => (isString(dt) || isNumber(dt) || dt instanceof Date ? new DateTime(dt) : new DateTime());\n","import { asString, isEmpty, Value } from '../../types';\nimport { isEAN as validateEAN } from 'validator';\n\nexport class EAN extends Value {\n get isValid(): boolean {\n return isEAN(this.value);\n }\n}\n\nexport const isEAN = (ean?: unknown): boolean => {\n return !isEmpty(ean) && validateEAN(asString(ean));\n};\n","import { asString, isEmpty, text, Value } from '../../types';\nimport { isEmail as validateEmail } from 'validator';\n\nexport class Email extends Value {\n constructor(email?: unknown) {\n super(asString(email).trim().toLowerCase());\n }\n\n get isValid(): boolean {\n return isEmail(this.value);\n }\n\n get name(): string {\n return text(this.value.split('@')[0]).replace('.', ' ').title.toString();\n }\n}\n\nexport const email = (email?: unknown): Email => new Email(email);\n\nexport const isEmail = (e?: unknown): boolean => !isEmpty(e) && validateEmail(asString(e));\n","import { asString, isEmpty, Value } from '../../types';\nimport { isIBAN as validateIBAN } from 'validator';\n\nexport class IBAN extends Value {\n get isValid(): boolean {\n return isIBAN(this.value);\n }\n}\n\nexport const isIBAN = (iban?: unknown): boolean => {\n return !isEmpty(iban) && validateIBAN(asString(iban));\n};\n","import { Id, text, Value } from '../../types';\nimport { Country } from '../enums';\nimport { isPostalCode, PostalCodeLocale } from 'validator';\n\nexport class PostalCode extends Value {\n constructor(\n postalCode?: unknown,\n readonly country: Country | Id = Country.NL\n ) {\n super(text(postalCode).replace(' ', '').toString());\n }\n get isValid(): boolean {\n return isPostalCode(this.value, (this.country instanceof Country ? this.country.id : text(this.country).upper) as PostalCodeLocale);\n }\n}\n\nexport const postalCode = (postalCode?: unknown, country: Country | Id = Country.NL) => new PostalCode(postalCode, country);\n","import { isNotEmpty, text, Value } from '../../types';\nimport { isSlug } from 'validator';\n\nexport class Slug extends Value {\n constructor(slug?: unknown) {\n super(text(slug).slug.toString());\n }\n\n get isValid(): boolean {\n return isNotEmpty(this.value) && isSlug(this.value);\n }\n}\n\nexport const toSlug = (slug?: unknown): Slug => new Slug(slug);","import { asString, isEmpty, Value } from '../../types';\nimport { isURL as validateUrl } from 'validator';\n\nexport interface UrlOptions {\n /**\n * @default ['http','https','ftp']\n */\n protocols?: string[];\n /**\n * @default true\n */\n require_tld?: boolean;\n /**\n * @default false\n */\n require_protocol?: boolean;\n /**\n * @default true\n */\n require_host?: boolean;\n /**\n * if set as true isURL will check if port is present in the URL\n * @default false\n */\n require_port?: boolean;\n /**\n * @default true\n */\n require_valid_protocol?: boolean;\n /**\n * @default false\n */\n allow_underscores?: boolean;\n /**\n * @default false\n */\n host_whitelist?: Array<string | RegExp>;\n /**\n * @default false\n */\n host_blacklist?: Array<string | RegExp>;\n /**\n * @default false\n */\n allow_trailing_dot?: boolean;\n /**\n * @default false\n */\n allow_protocol_relative_urls?: boolean;\n /**\n * @default false\n */\n disallow_auth?: boolean;\n}\n\nexport class Url extends Value {\n constructor(\n value: unknown,\n readonly options?: UrlOptions\n ) {\n super(asString(value));\n }\n\n get isValid(): boolean {\n return isUrl(this.value, this.options);\n }\n}\n\nexport const url = (url: unknown, options?: UrlOptions): Url => new Url(url, options);\n\nexport const isUrl = (url?: unknown, options?: UrlOptions): boolean => {\n return !isEmpty(url) && validateUrl(asString(url), options);\n};\n","import { isEmpty, text } from '../../types';\nimport { Struct } from '../Struct';\nimport { required, valid } from '../../validation';\nimport { Country } from '../enums';\nimport { postalCode } from '../values';\n\nexport class Address extends Struct {\n @required() readonly street = this.state.street as string;\n @required() readonly houseNumber = this.state.houseNumber as string;\n readonly extension = this.state.extension as string;\n @valid() readonly postalCode = postalCode(this.state.postalCode, this.state.country);\n @required() readonly city = this.state.city as string;\n @required() readonly country = Country.byId<Country>(this.state.country);\n\n toString(): string {\n return text(this.street).with(' ', this.houseNumber, this.extension).with(', ', text(this.postalCode).with(' ', this.city, this.country?.name)).toString();\n }\n}\n\nexport const isAddress = (a?: unknown): a is Address => {\n return !isEmpty(a) && a instanceof Address;\n};\n","import { Struct } from '../Struct';\nimport { required } from '../../validation';\nimport { UnitOfMeasurement } from '../enums';\n\nexport class Dimension extends Struct {\n @required() readonly value = this.state.value as number;\n readonly uom = UnitOfMeasurement.byId<UnitOfMeasurement>(this.state.uom, UnitOfMeasurement.MM);\n\n static with = (value: number, uom: UnitOfMeasurement = UnitOfMeasurement.MM) => new Dimension({ value, uom });\n\n /**\n @deprecated use inMilliMeters getter instead\n */\n sizeInMM(): number {\n return this.inMilliMeters;\n }\n\n get inMilliMeters(): number {\n return this.value * this.uom.mmMultiplier;\n }\n\n gte(dim: Dimension): boolean {\n return this.inMilliMeters >= dim.inMilliMeters;\n }\n}\n","import { Struct } from '../Struct';\nimport { required } from '../../validation';\nimport { Dimension } from './Dimension';\n\nexport class Box extends Struct {\n @required() readonly l: Dimension = new Dimension(this.state.l);\n @required() readonly w: Dimension = new Dimension(this.state.w);\n @required() readonly h: Dimension = new Dimension(this.state.h);\n\n private readonly sorted: Dimension[] = [this.l, this.w, this.h].sort((n1, n2) => n1.inMilliMeters - n2.inMilliMeters);\n lowestDim: Dimension = this.sorted[0];\n medianDim: Dimension = this.sorted[1];\n maxDim: Dimension = this.sorted[2];\n\n get isValid(): boolean {\n return super.isValid && this.l.isValid && this.w.isValid && this.h.isValid;\n }\n\n static with = (l: Dimension, w: Dimension, h: Dimension) => new Box({ l, w, h });\n\n stack(qty: number): Box {\n return Box.with(this.maxDim, this.medianDim, Dimension.with(this.lowestDim.value * qty, this.lowestDim.uom));\n }\n\n fits(contents: Box, qty = 1): boolean {\n const stackedContent = contents.stack(qty);\n return this.lowestDim.gte(stackedContent.lowestDim) && this.medianDim.gte(stackedContent.medianDim) && this.maxDim.gte(stackedContent.maxDim);\n }\n}\n","import { Struct } from '../Struct';\nimport { required } from '../../validation';\nimport { Currency } from '../enums';\nimport { isEmpty, text } from '../../types';\n\nexport class Money extends Struct {\n @required() readonly currency = Currency.byId<Currency>(this.state.currency);\n @required() readonly value = this.state.value as number;\n\n add(amount: number): Money {\n return money(this.currency, this.value + amount);\n }\n subtract(amount: number): Money {\n return money(this.currency, this.value - amount);\n }\n times(n: number): Money {\n return money(this.currency, this.value * n);\n }\n\n toString(): string {\n return text(this.currency?.code)\n .with(' ', this.value?.toFixed(this.currency?.digits ?? 2))\n .toString();\n }\n}\n\nexport const money = (currency: Currency, value: number): Money => new Money({ currency: currency.id, value });\n\nexport const isMoney = (m?: unknown): m is Money => {\n return !isEmpty(m) && m instanceof Money;\n};\n","import { Struct } from '../Struct';\nimport { required } from '../../validation';\nimport { Json, text } from '../../types';\n\nexport class Name extends Struct {\n @required() readonly first: string = this.state.first;\n readonly middle: string = this.state.middle;\n @required() readonly last: string = this.state.last;\n\n toString(): string {\n return text(this.first, '').add(this.middle, ' ').add(this.last, ' ').toString();\n }\n}\n\nexport const name = (n?: Json): Name => new Name(n);\n","import { UnitOfWeight } from '../enums';\nimport { required } from '../../validation';\nimport { Struct } from '../Struct';\n\nexport class Weight extends Struct {\n @required() readonly value = this.state.value as number;\n readonly uow = UnitOfWeight.byId<UnitOfWeight>(this.state.uow, UnitOfWeight.G);\n\n /**\n @deprecated use inGrams getter instead\n */\n sizeInG(): number {\n return this.inGrams;\n }\n\n get inGrams(): number {\n return this.value * this.uow.gMultiplier;\n }\n\n gte(w: Weight): boolean {\n return this.inGrams >= w.inGrams;\n }\n lte(w: Weight): boolean {\n return this.inGrams <= w.inGrams;\n }\n\n between(lower: Weight, upper = weight(Number.MAX_VALUE, this.uow)) {\n return this.gte(lower) && this.lte(upper);\n }\n sum(add: Weight): Weight {\n return weight((this.inGrams + add.inGrams) / this.uow.gMultiplier, this.uow);\n }\n}\n\nexport const weight = (value: number, uow?: UnitOfWeight): Weight => new Weight({ value, uow });\n","import { Enum } from '../../types';\nimport { money, Money } from '../structs';\n\nexport class Currency extends Enum {\n constructor(id: string, name: string, readonly digits: number, code: string) {\n super(name, id, code);\n }\n static readonly EUR = new Currency('EUR', 'Euro', 2, '€');\n static readonly USD = new Currency('USD', 'US Dollar', 2, '$');\n static readonly AED = new Currency('AED', 'United Arab Emirates Dirham', 2, 'AED');\n static readonly AFN = new Currency('AFN', 'Afghan Afghani', 0, 'Af');\n static readonly ALL = new Currency('ALL', 'Albanian Lek', 0, 'ALL');\n static readonly AMD = new Currency('AMD', 'Armenian Dram', 0, 'AMD');\n static readonly ARS = new Currency('ARS', 'Argentine Peso', 2, 'AR$');\n static readonly AUD = new Currency('AUD', 'Australian Dollar', 2, 'AU$');\n static readonly AZN = new Currency('AZN', 'Azerbaijani Manat', 2, 'man.');\n static readonly BAM = new Currency('BAM', 'Bosnia-Herzegovina Convertible Mark', 2, 'KM');\n static readonly BDT = new Currency('BDT', 'Bangladeshi Taka', 2, 'Tk');\n static readonly BGN = new Currency('BGN', 'Bulgarian Lev', 2, 'BGN');\n static readonly BHD = new Currency('BHD', 'Bahraini Dinar', 3, 'BD');\n static readonly BIF = new Currency('BIF', 'Burundian Franc', 0, 'FBu');\n static readonly BND = new Currency('BND', 'Brunei Dollar', 2, 'BN$');\n static readonly BOB = new Currency('BOB', 'Bolivian Boliviano', 2, 'Bs');\n static readonly BRL = new Currency('BRL', 'Brazilian Real', 2, 'R$');\n static readonly BWP = new Currency('BWP', 'Botswanan Pula', 2, 'BWP');\n static readonly BYN = new Currency('BYN', 'Belarusian Ruble', 2, 'Br');\n static readonly BZD = new Currency('BZD', 'Belize Dollar', 2, 'BZ$');\n static readonly CAD = new Currency('CAD', 'Canadian Dollar', 2, 'CA$');\n static readonly CDF = new Currency('CDF', 'Congolese Franc', 2, 'CDF');\n static readonly CHF = new Currency('CHF', 'Swiss Franc', 2, 'CHF');\n static readonly CLP = new Currency('CLP', 'Chilean Peso', 0, 'CL$');\n static readonly CNY = new Currency('CNY', 'Chinese Yuan', 2, 'CN¥');\n static readonly COP = new Currency('COP', 'Colombian Peso', 0, 'CO$');\n static readonly CRC = new Currency('CRC', 'Costa Rican Colón', 0, '₡');\n static readonly CVE = new Currency('CVE', 'Cape Verdean Escudo', 2, 'CV$');\n static readonly CZK = new Currency('CZK', 'Czech Republic Koruna', 2, 'Kč');\n static readonly DJF = new Currency('DJF', 'Djiboutian Franc', 0, 'Fdj');\n static readonly DKK = new Currency('DKK', 'Danish Krone', 2, 'Dkr');\n static readonly DOP = new Currency('DOP', 'Dominican Peso', 2, 'RD$');\n static readonly DZD = new Currency('DZD', 'Algerian Dinar', 2, 'DA');\n static readonly EEK = new Currency('EEK', 'Estonian Kroon', 2, 'Ekr');\n static readonly EGP = new Currency('EGP', 'Egyptian Pound', 2, 'EGP');\n static readonly ERN = new Currency('ERN', 'Eritrean Nakfa', 2, 'Nfk');\n static readonly ETB = new Currency('ETB', 'Ethiopian Birr', 2, 'Br');\n static readonly GBP = new Currency('GBP', 'British Pound Sterling', 2, '£');\n static readonly GEL = new Currency('GEL', 'Georgian Lari', 2, 'GEL');\n static readonly GHS = new Currency('GHS', 'Ghanaian Cedi', 2, 'GH₵');\n static readonly GNF = new Currency('GNF', 'Guinean Franc', 0, 'FG');\n static readonly GTQ = new Currency('GTQ', 'Guatemalan Quetzal', 2, 'GTQ');\n static readonly HKD = new Currency('HKD', 'Hong Kong Dollar', 2, 'HK$');\n static readonly HNL = new Currency('HNL', 'Honduran Lempira', 2, 'HNL');\n static readonly HRK = new Currency('HRK', 'Croatian Kuna', 2, 'kn');\n static readonly HUF = new Currency('HUF', 'Hungarian Forint', 0, 'Ft');\n static readonly IDR = new Currency('IDR', 'Indonesian Rupiah', 0, 'Rp');\n static readonly ILS = new Currency('ILS', 'Israeli New Sheqel', 2, '₪');\n static readonly INR = new Currency('INR', 'Indian Rupee', 2, 'Rs');\n static readonly IQD = new Currency('IQD', 'Iraqi Dinar', 0, 'IQD');\n static readonly IRR = new Currency('IRR', 'Iranian Rial', 0, 'IRR');\n static readonly ISK = new Currency('ISK', 'Icelandic Króna', 0, 'Ikr');\n static readonly JMD = new Currency('JMD', 'Jamaican Dollar', 2, 'J$');\n static readonly JOD = new Currency('JOD', 'Jordanian Dinar', 3, 'JD');\n static readonly JPY = new Currency('JPY', 'Japanese Yen', 0, '¥');\n static readonly KES = new Currency('KES', 'Kenyan Shilling', 2, 'Ksh');\n static readonly KHR = new Currency('KHR', 'Cambodian Riel', 2, 'KHR');\n static readonly KMF = new Currency('KMF', 'Comorian Franc', 0, 'CF');\n static readonly KRW = new Currency('KRW', 'South Korean Won', 0, '₩');\n static readonly KWD = new Currency('KWD', 'Kuwaiti Dinar', 3, 'KD');\n static readonly KZT = new Currency('KZT', 'Kazakhstani Tenge', 2, 'KZT');\n static readonly LBP = new Currency('LBP', 'Lebanese Pound', 0, 'L.L.');\n static readonly LKR = new Currency('LKR', 'Sri Lankan Rupee', 2, 'SLRs');\n static readonly LTL = new Currency('LTL', 'Lithuanian Litas', 2, 'Lt');\n static readonly LVL = new Currency('LVL', 'Latvian Lats', 2, 'Ls');\n static readonly LYD = new Currency('LYD', 'Libyan Dinar', 3, 'LD');\n static readonly MAD = new Currency('MAD', 'Moroccan Dirham', 2, 'MAD');\n static readonly MDL = new Currency('MDL', 'Moldovan Leu', 2, 'MDL');\n static readonly MGA = new Currency('MGA', 'Malagasy Ariary', 0, 'MGA');\n static readonly MKD = new Currency('MKD', 'Macedonian Denar', 2, 'MKD');\n static readonly MMK = new Currency('MMK', 'Myanma Kyat', 0, 'MMK');\n static readonly MOP = new Currency('MOP', 'Macanese Pataca', 2, 'MOP$');\n static readonly MUR = new Currency('MUR', 'Mauritian Rupee', 0, 'MURs');\n static readonly MXN = new Currency('MXN', 'Mexican Peso', 2, 'MX$');\n static readonly MYR = new Currency('MYR', 'Malaysian Ringgit', 2, 'RM');\n static readonly MZN = new Currency('MZN', 'Mozambican Metical', 2, 'MTn');\n static readonly NAD = new Currency('NAD', 'Namibian Dollar', 2, 'N$');\n static readonly NGN = new Currency('NGN', 'Nigerian Naira', 2, '₦');\n static readonly NIO = new Currency('NIO', 'Nicaraguan Córdoba', 2, 'C$');\n static readonly NOK = new Currency('NOK', 'Norwegian Krone', 2, 'Nkr');\n static readonly NPR = new Currency('NPR', 'Nepalese Rupee', 2, 'NPRs');\n static readonly NZD = new Currency('NZD', 'New Zealand Dollar', 2, 'NZ$');\n static readonly OMR = new Currency('OMR', 'Omani Rial', 3, 'OMR');\n static readonly PAB = new Currency('PAB', 'Panamanian Balboa', 2, 'B/.');\n static readonly PEN = new Currency('PEN', 'Peruvian Nuevo Sol', 2, 'S/.');\n static readonly PHP = new Currency('PHP', 'Philippine Peso', 2, '₱');\n static readonly PKR = new Currency('PKR', 'Pakistani Rupee', 0, 'PKRs');\n static readonly PLN = new Currency('PLN', 'Polish Zloty', 2, 'zł');\n static readonly PYG = new Currency('PYG', 'Paraguayan Guarani', 0, '₲');\n static readonly QAR = new Currency('QAR', 'Qatari Rial', 2, 'QR');\n static readonly RON = new Currency('RON', 'Romanian Leu', 2, 'RON');\n static readonly RSD = new Currency('RSD', 'Serbian Dinar', 0, 'din.');\n static readonly RUB = new Currency('RUB', 'Russian Ruble', 2, 'RUB');\n static readonly RWF = new Currency('RWF', 'Rwandan Franc', 0, 'RWF');\n static readonly SAR = new Currency('SAR', 'Saudi Riyal', 2, 'SR');\n static readonly SDG = new Currency('SDG', 'Sudanese Pound', 2, 'SDG');\n static readonly SEK = new Currency('SEK', 'Swedish Krona', 2, 'Skr');\n static readonly SGD = new Currency('SGD', 'Singapore Dollar', 2, 'S$');\n static readonly SOS = new Currency('SOS', 'Somali Shilling', 0, 'Ssh');\n static readonly SYP = new Currency('SYP', 'Syrian Pound', 0, 'SY£');\n static readonly THB = new Currency('THB', 'Thai Baht', 2, '฿');\n static readonly TND = new Currency('TND', 'Tunisian Dinar', 3, 'DT');\n static readonly TOP = new Currency('TOP', 'Tongan Paʻanga', 2, 'T$');\n static readonly TRY = new Currency('TRY', 'Turkish Lira', 2, 'TL');\n static readonly TTD = new Currency('TTD', 'Trinidad and Tobago Dollar', 2, 'TT$');\n static readonly TWD = new Currency('TWD', 'New Taiwan Dollar', 2, 'NT$');\n static readonly TZS = new Currency('TZS', 'Tanzanian Shilling', 0, 'TSh');\n static readonly UAH = new Currency('UAH', 'Ukrainian Hryvnia', 2, '₴');\n static readonly UGX = new Currency('UGX', 'Ugandan Shilling', 0, 'USh');\n static readonly UYU = new Currency('UYU', 'Uruguayan Peso', 2, '$U');\n static readonly UZS = new Currency('UZS', 'Uzbekistan Som', 0, 'UZS');\n static readonly VEF = new Currency('VEF', 'Venezuelan Bolívar', 2, 'Bs.F.');\n static readonly VND = new Currency('VND', 'Vietnamese Dong', 0, '₫');\n static readonly XAF = new Currency('XAF', 'CFA Franc BEAC', 0, 'FCFA');\n static readonly XOF = new Currency('XOF', 'CFA Franc BCEAO', 0, 'CFA');\n static readonly YER = new Currency('YER', 'Yemeni Rial', 0, 'YR');\n static readonly ZAR = new Currency('ZAR', 'South African Rand', 2, 'R');\n static readonly ZMK = new Currency('ZMK', 'Zambian Kwacha', 0, 'ZK');\n static readonly ZWL = new Currency('ZWL', 'Zimbabwean Dollar', 0, 'ZWL$');\n\n amount = (amount = 0): Money => money(this, amount);\n\n get zero(): Money {\n return this.amount();\n }\n}\n","import { Enum } from '../../types';\n\nexport class Environment extends Enum {\n static readonly Dev = new Environment('Development', 'dev');\n static readonly Tst = new Environment('Test', 'tst');\n static readonly Acc = new Environment('Acceptance', 'acc');\n static readonly Prd = new Environment('Production', 'prd');\n}\n","import { Enum, Id, Optional, text } from '../../types';\n\nexport class Locale extends Enum {\n static readonly AF = new Locale('af', 'Afrikaans');\n static readonly AF_NA = new Locale('af_NA', 'Afrikaans (Namibia)');\n static readonly AF_ZA = new Locale('af_ZA', 'Afrikaans (South Africa)');\n static readonly AK = new Locale('ak', 'Akan');\n static readonly AK_GH = new Locale('ak_GH', 'Akan (Ghana)');\n static readonly SQ = new Locale('sq', 'Albanian');\n static readonly SQ_AL = new Locale('sq_AL', 'Albanian (Albania)');\n static readonly SQ_XK = new Locale('sq_XK', 'Albanian (Kosovo)');\n static readonly SQ_MK = new Locale('sq_MK', 'Albanian (Macedonia)');\n static readonly AM = new Locale('am', 'Amharic');\n static readonly AM_ET = new Locale('am_ET', 'Amharic (Ethiopia)');\n static readonly AR = new Locale('ar', 'Arabic');\n static readonly AR_DZ = new Locale('ar_DZ', 'Arabic (Algeria)');\n static readonly AR_BH = new Locale('ar_BH', 'Arabic (Bahrain)');\n static readonly AR_TD = new Locale('ar_TD', 'Arabic (Chad)');\n static readonly AR_KM = new Locale('ar_KM', 'Arabic (Comoros)');\n static readonly AR_DJ = new Locale('ar_DJ', 'Arabic (Djibouti)');\n static readonly AR_EG = new Locale('ar_EG', 'Arabic (Egypt)');\n static readonly AR_ER = new Locale('ar_ER', 'Arabic (Eritrea)');\n static readonly AR_IQ = new Locale('ar_IQ', 'Arabic (Iraq)');\n static readonly AR_IL = new Locale('ar_IL', 'Arabic (Israel)');\n static readonly AR_JO = new Locale('ar_JO', 'Arabic (Jordan)');\n static readonly AR_KW = new Locale('ar_KW', 'Arabic (Kuwait)');\n static readonly AR_LB = new Locale('ar_LB', 'Arabic (Lebanon)');\n static readonly AR_LY = new Locale('ar_LY', 'Arabic (Libya)');\n static readonly AR_MR = new Locale('ar_MR', 'Arabic (Mauritania)');\n static readonly AR_MA = new Locale('ar_MA', 'Arabic (Morocco)');\n static readonly AR_OM = new Locale('ar_OM', 'Arabic (Oman)');\n static readonly AR_PS = new Locale('ar_PS', 'Arabic (Palestinian Territories)');\n static readonly AR_QA = new Locale('ar_QA', 'Arabic (Qatar)');\n static readonly AR_SA = new Locale('ar_SA', 'Arabic (Saudi Arabia)');\n static readonly AR_SO = new Locale('ar_SO', 'Arabic (Somalia)');\n static readonly AR_SS = new Locale('ar_SS', 'Arabic (South Sudan)');\n static readonly AR_SD = new Locale('ar_SD', 'Arabic (Sudan)');\n static readonly AR_SY = new Locale('ar_SY', 'Arabic (Syria)');\n static readonly AR_TN = new Locale('ar_TN', 'Arabic (Tunisia)');\n static readonly AR_AE = new Locale('ar_AE', 'Arabic (United Arab Emirates)');\n static readonly AR_EH = new Locale('ar_EH', 'Arabic (Western Sahara)');\n static readonly AR_YE = new Locale('ar_YE', 'Arabic (Yemen)');\n static readonly HY = new Locale('hy', 'Armenian');\n static readonly HY_AM = new Locale('hy_AM', 'Armenian (Armenia)');\n static readonly AS = new Locale('as', 'Assamese');\n static readonly AS_IN = new Locale('as_IN', 'Assamese (India)');\n static readonly AZ = new Locale('az', 'Azerbaijani');\n static readonly AZ_AZ = new Locale('az_AZ', 'Azerbaijani (Azerbaijan)');\n static readonly AZ_CYRL_AZ = new Locale('az_Cyrl_AZ', 'Azerbaijani (Cyrillic, Azerbaijan)');\n static readonly AZ_CYRL = new Locale('az_Cyrl', 'Azerbaijani (Cyrillic)', 'az');\n static readonly AZ_LATN_AZ = new Locale('az_Latn_AZ', 'Azerbaijani (Latin, Azerbaijan)');\n static readonly AZ_LATN = new Locale('az_Latn', 'Azerbaijani (Latin)', 'az');\n static readonly BM = new Locale('bm', 'Bambara');\n static readonly BM_LATN_ML = new Locale('bm_Latn_ML', 'Bambara (Latin, Mali)');\n static readonly BM_LATN = new Locale('bm_Latn', 'Bambara (Latin)', 'bm');\n static readonly EU = new Locale('eu', 'Basque');\n static readonly EU_ES = new Locale('eu_ES', 'Basque (Spain)');\n static readonly BE = new Locale('be', 'Belarusian');\n static readonly BE_BY = new Locale('be_BY', 'Belarusian (Belarus)');\n static readonly BN = new Locale('bn', 'Bengali');\n static readonly BN_BD = new Locale('bn_BD', 'Bengali (Bangladesh)');\n static readonly BN_IN = new Locale('bn_IN', 'Bengali (India)');\n static readonly BS = new Locale('bs', 'Bosnian');\n static readonly BS_BA = new Locale('bs_BA', 'Bosnian (Bosnia & Herzegovina)');\n static readonly BS_CYRL_BA = new Locale('bs_Cyrl_BA', 'Bosnian (Cyrillic, Bosnia & Herzegovina)');\n static readonly BS_CYRL = new Locale('bs_Cyrl', 'Bosnian (Cyrillic)', 'bs');\n static readonly BS_LATN_BA = new Locale('bs_Latn_BA', 'Bosnian (Latin, Bosnia & Herzegovina)');\n static readonly BS_LATN = new Locale('bs_Latn', 'Bosnian (Latin)', 'bs');\n static readonly BR = new Locale('br', 'Breton');\n static readonly BR_FR = new Locale('br_FR', 'Breton (France)');\n static readonly BG = new Locale('bg', 'Bulgarian');\n static readonly BG_BG = new Locale('bg_BG', 'Bulgarian (Bulgaria)');\n static readonly MY = new Locale('my', 'Burmese');\n static readonly MY_MM = new Locale('my_MM', 'Burmese (Myanmar (Burma))');\n static readonly CA = new Locale('ca', 'Catalan');\n static readonly CA_AD = new Locale('ca_AD', 'Catalan (Andorra)');\n static readonly CA_FR = new Locale('ca_FR', 'Catalan (France)');\n static readonly CA_IT = new Locale('ca_IT', 'Catalan (Italy)');\n static readonly CA_ES = new Locale('ca_ES', 'Catalan (Spain)');\n static readonly ZH = new Locale('zh', 'Chinese');\n static readonly ZH_CN = new Locale('zh_CN', 'Chinese (China)');\n static readonly ZH_HK = new Locale('zh_HK', 'Chinese (Hong Kong SAR China)');\n static readonly ZH_MO = new Locale('zh_MO', 'Chinese (Macau SAR China)');\n static readonly ZH_HANS_CN = new Locale('zh_Hans_CN', 'Chinese (Simplified, China)');\n static readonly ZH_HANS_HK = new Locale('zh_Hans_HK', 'Chinese (Simplified, Hong Kong SAR China)');\n static readonly ZH_HANS_MO = new Locale('zh_Hans_MO', 'Chinese (Simplified, Macau SAR China)');\n static readonly ZH_HANS_SG = new Locale('zh_Hans_SG', 'Chinese (Simplified, Singapore)');\n static readonly ZH_HANS = new Locale('zh_Hans', 'Chinese (Simplified)');\n static readonly ZH_SG = new Locale('zh_SG', 'Chinese (Singapore)');\n static readonly ZH_TW = new Locale('zh_TW', 'Chinese (Taiwan)');\n static readonly ZH_HANT_HK = new Locale('zh_Hant_HK', 'Chinese (Traditional, Hong Kong SAR China)');\n static readonly ZH_HANT_MO = new Locale('zh_Hant_MO', 'Chinese (Traditional, Macau SAR China)');\n static readonly ZH_HANT_TW = new Locale('zh_Hant_TW', 'Chinese (Traditional, Taiwan)');\n static readonly ZH_HANT = new Locale('zh_Hant', 'Chinese (Traditional)');\n static readonly KW = new Locale('kw', 'Cornish');\n static readonly KW_GB = new Locale('kw_GB', 'Cornish (United Kingdom)');\n static readonly HR = new Locale('hr', 'Croatian');\n static readonly HR_BA = new Locale('hr_BA', 'Croatian (Bosnia & Herzegovina)');\n static readonly HR_HR = new Locale('hr_HR', 'Croatian (Croatia)');\n static readonly CS = new Locale('cs', 'Czech');\n static readonly CS_CZ = new Locale('cs_CZ', 'Czech (Czech Republic)');\n static readonly DA = new Locale('da', 'Danish');\n static readonly DA_DK = new Locale('da_DK', 'Danish (Denmark)');\n static readonly DA_GL = new Locale('da_GL', 'Danish (Greenland)');\n static readonly NL = new Locale('nl', 'Dutch');\n static readonly NL_AW = new Locale('nl_AW', 'Dutch (Aruba)');\n static readonly NL_BE = new Locale('nl_BE', 'Dutch (Belgium)');\n static readonly NL_BQ = new Locale('nl_BQ', 'Dutch (Caribbean Netherlands)');\n static readonly NL_CW = new Locale('nl_CW', 'Dutch (Curaçao)');\n static readonly NL_NL = new Locale('nl_NL', 'Dutch (Netherlands)');\n static readonly NL_SX = new Locale('nl_SX', 'Dutch (Sint Maarten)');\n static readonly NL_SR = new Locale('nl_SR', 'Dutch (Suriname)');\n static readonly DZ = new Locale('dz', 'Dzongkha');\n static readonly DZ_BT = new Locale('dz_BT', 'Dzongkha (Bhutan)');\n static readonly EN = new Locale('en', 'English', 'gb');\n static readonly EN_AS = new Locale('en_AS', 'English (American Samoa)');\n static readonly EN_AI = new Locale('en_AI', 'English (Anguilla)');\n static readonly EN_AG = new Locale('en_AG', 'English (Antigua & Barbuda)');\n static readonly EN_AU = new Locale('en_AU', 'English (Australia)');\n static readonly EN_BS = new Locale('en_BS', 'English (Bahamas)');\n static readonly EN_BB = new Locale('en_BB', 'English (Barbados)');\n static readonly EN_BE = new Locale('en_BE', 'English (Belgium)');\n static readonly EN_BZ = new Locale('en_BZ', 'English (Belize)');\n static readonly EN_BM = new Locale('en_BM', 'English (Bermuda)');\n static readonly EN_BW = new Locale('en_BW', 'English (Botswana)');\n static readonly EN_IO = new Locale('en_IO', 'English (British Indian Ocean Territory)');\n static readonly EN_VG = new Locale('en_VG', 'English (British Virgin Islands)');\n static readonly EN_CM = new Locale('en_CM', 'English (Cameroon)');\n static readonly EN_CA = new Locale('en_CA', 'English (Canada)');\n static readonly EN_KY = new Locale('en_KY', 'English (Cayman Islands)');\n static readonly EN_CX = new Locale('en_CX', 'English (Christmas Island)');\n static readonly EN_CC = new Locale('en_CC', 'English (Cocos (Keeling) Islands)');\n static readonly EN_CK = new Locale('en_CK', 'English (Cook Islands)');\n static readonly EN_DG = new Locale('en_DG', 'English (Diego Garcia)');\n static readonly EN_DM = new Locale('en_DM', 'English (Dominica)');\n static readonly EN_ER = new Locale('en_ER', 'English (Eritrea)');\n static readonly EN_FK = new Locale('en_FK', 'English (Falkland Islands)');\n static readonly EN_FJ = new Locale('en_FJ', 'English (Fiji)');\n static readonly EN_GM = new Locale('en_GM', 'English (Gambia)');\n static readonly EN_GH = new Locale('en_GH', 'English (Ghana)');\n static readonly EN_GI = new Locale('en_GI', 'English (Gibraltar)');\n static readonly EN_GD = new Locale('en_GD', 'English (Grenada)');\n static readonly EN_GU = new Locale('en_GU', 'English (Guam)');\n static readonly EN_GG = new Locale('en_GG', 'English (Guernsey)');\n static readonly EN_GY = new Locale('en_GY', 'English (Guyana)');\n static readonly EN_HK = new Locale('en_HK', 'English (Hong Kong SAR China)');\n static readonly EN_IN = new Locale('en_IN', 'English (India)');\n static readonly EN_IE = new Locale('en_IE', 'English (Ireland)');\n static readonly EN_IM = new Locale('en_IM', 'English (Isle of Man)');\n static readonly EN_JM = new Locale('en_JM', 'English (Jamaica)');\n static readonly EN_JE = new Locale('en_JE', 'English (Jersey)');\n static readonly EN_KE = new Locale('en_KE', 'English (Kenya)');\n static readonly EN_KI = new Locale('en_KI', 'English (Kiribati)');\n static readonly EN_LS = new Locale('en_LS', 'English (Lesotho)');\n static readonly EN_LR = new Locale('en_LR', 'English (Liberia)');\n static readonly EN_MO = new Locale('en_MO', 'English (Macau SAR China)');\n static readonly EN_MG = new Locale('en_MG', 'English (Madagascar)');\n static readonly EN_MW = new Locale('en_MW', 'English (Malawi)');\n static readonly EN_MY = new Locale('en_MY', 'English (Malaysia)');\n static readonly EN_MT = new Locale('en_MT', 'English (Malta)');\n static readonly EN_MH = new Locale('en_MH', 'English (Marshall Islands)');\n static readonly EN_MU = new Locale('en_MU', 'English (Mauritius)');\n static readonly EN_FM = new Locale('en_FM', 'English (Micronesia)');\n static readonly EN_MS = new Locale('en_MS', 'English (Montserrat)');\n static readonly EN_NA = new Locale('en_NA', 'English (Namibia)');\n static readonly EN_NR = new Locale('en_NR', 'English (Nauru)');\n static readonly EN_NZ = new Locale('en_NZ', 'English (New Zealand)');\n static readonly EN_NG = new Locale('en_NG', 'English (Nigeria)');\n static readonly EN_NU = new Locale('en_NU', 'English (Niue)');\n static readonly EN_NF = new Locale('en_NF', 'English (Norfolk Island)');\n static readonly EN_MP = new Locale('en_MP', 'English (Northern Mariana Islands)');\n static readonly EN_PK = new Locale('en_PK', 'English (Pakistan)');\n static readonly EN_PW = new Locale('en_PW', 'English (Palau)');\n static readonly EN_PG = new Locale('en_PG', 'English (Papua New Guinea)');\n static readonly EN_PH = new Locale('en_PH', 'English (Philippines)');\n static readonly EN_PN = new Locale('en_PN', 'English (Pitcairn Islands)');\n static readonly EN_PR = new Locale('en_PR', 'English (Puerto Rico)');\n static readonly EN_RW = new Locale('en_RW', 'English (Rwanda)');\n static readonly EN_WS = new Locale('en_WS', 'English (Samoa)');\n static readonly EN_SC = new Locale('en_SC', 'English (Seychelles)');\n static readonly EN_SL = new Locale('en_SL', 'English (Sierra Leone)');\n static readonly EN_SG = new Locale('en_SG', 'English (Singapore)');\n static readonly EN_SX = new Locale('en_SX', 'English (Sint Maarten)');\n static readonly EN_SB = new Locale('en_SB', 'English (Solomon Islands)');\n static readonly EN_ZA = new Locale('en_ZA', 'English (South Africa)');\n static readonly EN_SS = new Locale('en_SS', 'English (South Sudan)');\n static readonly EN_SH = new Locale('en_SH', 'English (St. Helena)');\n static readonly EN_KN = new Locale('en_KN', 'English (St. Kitts & Nevis)');\n static readonly EN_LC = new Locale('en_LC', 'English (St. Lucia)');\n static readonly EN_VC = new Locale('en_VC', 'English (St. Vincent & Grenadines)');\n static readonly EN_SD = new Locale('en_SD', 'English (Sudan)');\n static readonly EN_SZ = new Locale('en_SZ', 'English (Swaziland)');\n static readonly EN_TZ = new Locale('en_TZ', 'English (Tanzania)');\n static readonly EN_TK = new Locale('en_TK', 'English (Tokelau)');\n static readonly EN_TO = new Locale('en_TO', 'English (Tonga)');\n static readonly EN_TT = new Locale('en_TT', 'English (Trinidad & Tobago)');\n static readonly EN_TC = new Locale('en_TC', 'English (Turks & Caicos Islands)');\n static readonly EN_TV = new Locale('en_TV', 'English (Tuvalu)');\n static readonly EN_UM = new Locale('en_UM', 'English (U.S. Outlying Islands)');\n static readonly EN_VI = new Locale('en_VI', 'English (U.S. Virgin Islands)');\n static readonly EN_UG = new Locale('en_UG', 'English (Uganda)');\n static readonly EN_GB = new Locale('en_GB', 'English (United Kingdom)');\n static readonly EN_US = new Locale('en_US', 'English (United States)');\n static readonly EN_VU = new Locale('en_VU', 'English (Vanuatu)');\n static readonly EN_ZM = new Locale('en_ZM', 'English (Zambia)');\n static readonly EN_ZW = new Locale('en_ZW', 'English (Zimbabwe)');\n static readonly EO = new Locale('eo', 'Esperanto');\n static readonly ET = new Locale('et', 'Estonian');\n static readonly ET_EE = new Locale('et_EE', 'Estonian (Estonia)');\n static readonly EE = new Locale('ee', 'Ewe');\n static readonly EE_GH = new Locale('ee_GH', 'Ewe (Ghana)');\n static readonly EE_TG = new Locale('ee_TG', 'Ewe (Togo)');\n static readonly FO = new Locale('fo', 'Faroese');\n static readonly FO_FO = new Locale('fo_FO', 'Faroese (Faroe Islands)');\n static readonly FI = new Locale('fi', 'Finnish');\n static readonly FI_FI = new Locale('fi_FI', 'Finnish (Finland)');\n static readonly FR = new Locale('fr', 'French');\n static readonly FR_DZ = new Locale('fr_DZ', 'French (Algeria)');\n static readonly FR_BE = new Locale('fr_BE', 'French (Belgium)');\n static readonly FR_BJ = new Locale('fr_BJ', 'French (Benin)');\n static readonly FR_BF = new Locale('fr_BF', 'French (Burkina Faso)');\n static readonly FR_BI = new Locale('fr_BI', 'French (Burundi)');\n static readonly FR_CM = new Locale('fr_CM', 'French (Cameroon)');\n static readonly FR_CA = new Locale('fr_CA', 'French (Canada)');\n static readonly FR_CF = new Locale('fr_CF', 'French (Central African Republic)');\n static readonly FR_TD = new Locale('fr_TD', 'French (Chad)');\n static readonly FR_KM = new Locale('fr_KM', 'French (Comoros)');\n static readonly FR_CG = new Locale('fr_CG', 'French (Congo - Brazzaville)');\n static readonly FR_CD = new Locale('fr_CD', 'French (Congo - Kinshasa)');\n static readonly FR_CI = new Locale('fr_CI', 'French (Côte d’Ivoire)');\n static readonly FR_DJ = new Locale('fr_DJ', 'French (Djibouti)');\n static readonly FR_GQ = new Locale('fr_GQ', 'French (Equatorial Guinea)');\n static readonly FR_FR = new Locale('fr_FR', 'French (France)');\n static readonly FR_GF = new Locale('fr_GF', 'French (French Guiana)');\n static readonly FR_PF = new Locale('fr_PF', 'French (French Polynesia)');\n static readonly FR_GA = new Locale('fr_GA', 'French (Gabon)');\n static readonly FR_GP = new Locale('fr_GP', 'French (Guadeloupe)');\n static readonly FR_GN = new Locale('fr_GN', 'French (Guinea)');\n static readonly FR_HT = new Locale('fr_HT', 'French (Haiti)');\n static readonly FR_LU = new Locale('fr_LU', 'French (Luxembourg)');\n static readonly FR_MG = new Locale('fr_MG', 'French (Madagascar)');\n static readonly FR_ML = new Locale('fr_ML', 'French (Mali)');\n static readonly FR_MQ = new Locale('fr_MQ', 'French (Martinique)');\n static readonly FR_MR = new Locale('fr_MR', 'French (Mauritania)');\n static readonly FR_MU = new Locale('fr_MU', 'French (Mauritius)');\n static readonly FR_YT = new Locale('fr_YT', 'French (Mayotte)');\n static readonly FR_MC = new Locale('fr_MC', 'French (Monaco)');\n static readonly FR_MA = new Locale('fr_MA', 'French (Morocco)');\n static readonly FR_NC = new Locale('fr_NC', 'French (New Caledonia)');\n static readonly FR_NE = new Locale('fr_NE', 'French (Niger)');\n static readonly FR_RE = new Locale('fr_RE', 'French (Réunion)');\n static readonly FR_RW = new Locale('fr_RW', 'French (Rwanda)');\n static readonly FR_SN = new Locale('fr_SN', 'French (Senegal)');\n static readonly FR_SC = new Locale('fr_SC', 'French (Seychelles)');\n static readonly FR_BL = new Locale('fr_BL', 'French (St. Barthélemy)');\n static readonly FR_MF = new Locale('fr_MF', 'French (St. Martin)');\n static readonly FR_PM = new Locale('fr_PM', 'French (St. Pierre & Miquelon)');\n static readonly FR_CH = new Locale('fr_CH', 'French (Switzerland)');\n static readonly FR_SY = new Locale('fr_SY', 'French (Syria)');\n static readonly FR_TG = new Locale('fr_TG', 'French (Togo)');\n static readonly FR_TN = new Locale('fr_TN', 'French (Tunisia)');\n static readonly FR_VU = new Locale('fr_VU', 'French (Vanuatu)');\n static readonly FR_WF = new Locale('fr_WF', 'French (Wallis & Futuna)');\n static readonly FF = new Locale('ff', 'Fulah');\n static readonly FF_CM = new Locale('ff_CM', 'Fulah (Cameroon)');\n static readonly FF_GN = new Locale('ff_GN', 'Fulah (Guinea)');\n static readonly FF_MR = new Locale('ff_MR', 'Fulah (Mauritania)');\n static readonly FF_SN = new Locale('ff_SN', 'Fulah (Senegal)');\n static readonly GL = new Locale('gl', 'Galician');\n static readonly GL_ES = new Locale('gl_ES', 'Galician (Spain)');\n static readonly LG = new Locale('lg', 'Ganda');\n static readonly LG_UG = new Locale('lg_UG', 'Ganda (Uganda)');\n static readonly KA = new Locale('ka', 'Georgian');\n static readonly KA_GE = new Locale('ka_GE', 'Georgian (Georgia)');\n static readonly DE = new Locale('de', 'German');\n static readonly DE_AT = new Locale('de_AT', 'German (Austria)');\n static readonly DE_BE = new Locale('de_BE', 'German (Belgium)');\n static readonly DE_DE = new Locale('de_DE', 'German (Germany)');\n static readonly DE_LI = new Locale('de_LI', 'German (Liechtenstein)');\n static readonly DE_LU = new Locale('de_LU', 'German (Luxembourg)');\n static readonly DE_CH = new Locale('de_CH', 'German (Switzerland)');\n static readonly EL = new Locale('el', 'Greek');\n static readonly EL_CY = new Locale('el_CY', 'Greek (Cyprus)');\n static readonly EL_GR = new Locale('el_GR', 'Greek (Greece)');\n static readonly GU = new Locale('gu', 'Gujarati');\n static readonly GU_IN = new Locale('gu_IN', 'Gujarati (India)');\n static readonly HA = new Locale('ha', 'Hausa');\n static readonly HA_GH = new Locale('ha_GH', 'Hausa (Ghana)');\n static readonly HA_LATN_GH = new Locale('ha_Latn_GH', 'Hausa (Latin, Ghana)');\n static readonly HA_LATN_NE = new Locale('ha_Latn_NE', 'Hausa (Latin, Niger)');\n static readonly HA_LATN_NG = new Locale('ha_Latn_NG', 'Hausa (Latin, Nigeria)');\n static readonly HA_LATN = new Locale('ha_Latn', 'Hausa (Latin)');\n static readonly HA_NE = new Locale('ha_NE', 'Hausa (Niger)');\n static readonly HA_NG = new Locale('ha_NG', 'Hausa (Nigeria)');\n static readonly HE = new Locale('he', 'Hebrew');\n static readonly HE_IL = new Locale('he_IL', 'Hebrew (Israel)');\n static readonly HI = new Locale('hi', 'Hindi');\n static readonly HI_IN = new Locale('hi_IN', 'Hindi (India)');\n static readonly HU = new Locale('hu', 'Hungarian');\n static readonly HU_HU = new Locale('hu_HU', 'Hungarian (Hungary)');\n static readonly IS = new Locale('is', 'Icelandic');\n static readonly IS_IS = new Locale('is_IS', 'Icelandic (Iceland)');\n static readonly IG = new Locale('ig', 'Igbo');\n static readonly IG_NG = new Locale('ig_NG', 'Igbo (Nigeria)');\n static readonly ID = new Locale('id', 'Indonesian');\n static readonly ID_ID = new Locale('id_ID', 'Indonesian (Indonesia)');\n static readonly GA = new Locale('ga', 'Irish');\n static readonly GA_IE = new Locale('ga_IE', 'Irish (Ireland)');\n static readonly IT = new Locale('it', 'Italian');\n static readonly IT_IT = new Locale('it_IT', 'Italian (Italy)');\n static readonly IT_SM = new Locale('it_SM', 'Italian (San Marino)');\n static readonly IT_CH = new Locale('it_CH', 'Italian (Switzerland)');\n static readonly JA = new Locale('ja', 'Japanese');\n static readonly JA_JP = new Locale('ja_JP', 'Japanese (Japan)');\n static readonly KL = new Locale('kl', 'Kalaallisut');\n static readonly KL_GL = new Locale('kl_GL', 'Kalaallisut (Greenland)');\n static readonly KN = new Locale('kn', 'Kannada');\n static readonly KN_IN = new Locale('kn_IN', 'Kannada (India)');\n static readonly KS = new Locale('ks', 'Kashmiri');\n static readonly KS_ARAB_IN = new Locale('ks_Arab_IN', 'Kashmiri (Arabic, India)');\n static readonly KS_ARAB = new Locale('ks_Arab', 'Kashmiri (Arabic)', 'ks');\n static readonly KS_IN = new Locale('ks_IN', 'Kashmiri (India)');\n static readonly KK = new Locale('kk', 'Kazakh');\n static readonly KK_CYRL_KZ = new Locale('kk_Cyrl_KZ', 'Kazakh (Cyrillic, Kazakhstan)');\n static readonly KK_CYRL = new Locale('kk_Cyrl', 'Kazakh (Cyrillic)', 'kk');\n static readonly KK_KZ = new Locale('kk_KZ', 'Kazakh (Kazakhstan)');\n static readonly KM = new Locale('km', 'Khmer');\n static readonly KM_KH = new Locale('km_KH', 'Khmer (Cambodia)');\n static readonly KI = new Locale('ki', 'Kikuyu');\n static readonly KI_KE = new Locale('ki_KE', 'Kikuyu (Kenya)');\n static readonly RW = new Locale('rw', 'Kinyarwanda');\n static readonly RW_RW = new Locale('rw_RW', 'Kinyarwanda (Rwanda)');\n static readonly KO = new Locale('ko', 'Korean');\n static readonly KO_KP = new Locale('ko_KP', 'Korean (North Korea)');\n static readonly KO_KR = new Locale('ko_KR', 'Korean (South Korea)');\n static readonly KY = new Locale('ky', 'Kyrgyz');\n static readonly KY_CYRL_KG = new Locale('ky_Cyrl_KG', 'Kyrgyz (Cyrillic, Kyrgyzstan)');\n static readonly KY_CYRL = new Locale('ky_Cyrl', 'Kyrgyz (Cyrillic)', 'ky');\n static readonly KY_KG = new Locale('ky_KG', 'Kyrgyz (Kyrgyzstan)');\n static readonly LO = new Locale('lo', 'Lao');\n static readonly LO_LA = new Locale('lo_LA', 'Lao (Laos)');\n static readonly LV = new Locale('lv', 'Latvian');\n static readonly LV_LV = new Locale('lv_LV', 'Latvian (Latvia)');\n static readonly LN = new Locale('ln', 'Lingala');\n static readonly LN_AO = new Locale('ln_AO', 'Lingala (Angola)');\n static readonly LN_CF = new Locale('ln_CF', 'Lingala (Central African Republic)');\n static readonly LN_CG = new Locale('ln_CG', 'Lingala (Congo - Brazzaville)');\n static readonly LN_CD = new Locale('ln_CD', 'Lingala (Congo - Kinshasa)');\n static readonly LT = new Locale('lt', 'Lithuanian');\n static readonly LT_LT = new Locale('lt_LT', 'Lithuanian (Lithuania)');\n static readonly LU = new Locale('lu', 'Luba-Katanga');\n static readonly LU_CD = new Locale('lu_CD', 'Luba-Katanga (Congo - Kinshasa)');\n static readonly LB = new Locale('lb', 'Luxembourgish');\n static readonly LB_LU = new Locale('lb_LU', 'Luxembourgish (Luxembourg)');\n static readonly MK = new Locale('mk', 'Macedonian');\n static readonly MK_MK = new Locale('mk_MK', 'Macedonian (Macedonia)');\n static readonly MG = new Locale('mg', 'Malagasy');\n static readonly MG_MG = new Locale('mg_MG', 'Malagasy (Madagascar)');\n static readonly MS = new Locale('ms', 'Malay');\n static readonly MS_BN = new Locale('ms_BN', 'Malay (Brunei)');\n static readonly MS_LATN_BN = new Locale('ms_Latn_BN', 'Malay (Latin, Brunei)');\n static readonly MS_LATN_MY = new Locale('ms_Latn_MY', 'Malay (Latin, Malaysia)');\n static readonly MS_LATN_SG = new Locale('ms_Latn_SG', 'Malay (Latin, Singapore)');\n static readonly MS_LATN = new Locale('ms_Latn', 'Malay (Latin)', 'ms');\n static readonly MS_MY = new Locale('ms_MY', 'Malay (Malaysia)');\n static readonly MS_SG = new Locale('ms_SG', 'Malay (Singapore)');\n static readonly ML = new Locale('ml', 'Malayalam');\n static readonly ML_IN = new Locale('ml_IN', 'Malayalam (India)');\n static readonly MT = new Locale('mt', 'Maltese');\n static readonly MT_MT = new Locale('mt_MT', 'Maltese (Malta)');\n static readonly GV = new Locale('gv', 'Manx');\n static readonly GV_IM = new Locale('gv_IM', 'Manx (Isle of Man)');\n static readonly MR = new Locale('mr', 'Marathi');\n static readonly MR_IN = new Locale('mr_IN', 'Marathi (India)');\n static readonly MN = new Locale('mn', 'Mongolian');\n static readonly MN_CYRL_MN = new Locale('mn_Cyrl_MN', 'Mongolian (Cyrillic, Mongolia)');\n static readonly MN_CYRL = new Locale('mn_Cyrl', 'Mongolian (Cyrillic)', 'mn');\n static readonly MN_MN = new Locale('mn_MN', 'Mongolian (Mongolia)');\n static readonly NE = new Locale('ne', 'Nepali');\n static readonly NE_IN = new Locale('ne_IN', 'Nepali (India)');\n static readonly NE_NP = new Locale('ne_NP', 'Nepali (Nepal)');\n static readonly ND = new Locale('nd', 'North Ndebele');\n static readonly ND_ZW = new Locale('nd_ZW', 'North Ndebele (Zimbabwe)');\n static readonly SE = new Locale('se', 'Northern Sami');\n static readonly SE_FI = new Locale('se_FI', 'Northern Sami (Finland)');\n static readonly SE_NO = new Locale('se_NO', 'Northern Sami (Norway)');\n static readonly SE_SE = new Locale('se_SE', 'Northern Sami (Sweden)');\n static readonly NO = new Locale('no', 'Norwegian');\n static readonly NO_NO = new Locale('no_NO', 'Norwegian (Norway)');\n static readonly NB = new Locale('nb', 'Norwegian Bokmål');\n static readonly NB_NO = new Locale('nb_NO', 'Norwegian Bokmål (Norway)');\n static readonly NB_SJ = new Locale('nb_SJ', 'Norwegian Bokmål (Svalbard & Jan Mayen)');\n static readonly NN = new Locale('nn', 'Norwegian Nynorsk');\n static readonly NN_NO = new Locale('nn_NO', 'Norwegian Nynorsk (Norway)');\n static readonly OR = new Locale('or', 'Oriya');\n static readonly OR_IN = new Locale('or_IN', 'Oriya (India)');\n static readonly OM = new Locale('om', 'Oromo');\n static readonly OM_ET = new Locale('om_ET', 'Oromo (Ethiopia)');\n static readonly OM_KE = new Locale('om_KE', 'Oromo (Kenya)');\n static readonly OS = new Locale('os', 'Ossetic');\n static readonly OS_GE = new Locale('os_GE', 'Ossetic (Georgia)');\n static readonly OS_RU = new Locale('os_RU', 'Ossetic (Russia)');\n static readonly PS = new Locale('ps', 'Pashto');\n static readonly PS_AF = new Locale('ps_AF', 'Pashto (Afghanistan)');\n static readonly FA = new Locale('fa', 'Persian');\n static readonly FA_AF = new Locale('fa_AF', 'Persian (Afghanistan)');\n static readonly FA_IR = new Locale('fa_IR', 'Persian (Iran)');\n static readonly PL = new Locale('pl', 'Polish');\n static readonly PL_PL = new Locale('pl_PL', 'Polish (Poland)');\n static readonly PT = new Locale('pt', 'Portuguese');\n static readonly PT_AO = new Locale('pt_AO', 'Portuguese (Angola)');\n static readonly PT_BR = new Locale('pt_BR', 'Portuguese (Brazil)');\n static readonly PT_CV = new Locale('pt_CV', 'Portuguese (Cape Verde)');\n static readonly PT_GW = new Locale('pt_GW', 'Portuguese (Guinea-Bissau)');\n static readonly PT_MO = new Locale('pt_MO', 'Portuguese (Macau SAR China)');\n static readonly PT_MZ = new Locale('pt_MZ', 'Portuguese (Mozambique)');\n static readonly PT_PT = new Locale('pt_PT', 'Portuguese (Portugal)');\n static readonly PT_ST = new Locale('pt_ST', 'Portuguese (São Tomé & Príncipe)');\n static readonly PT_TL = new Locale('pt_TL', 'Portuguese (Timor-Leste)');\n static readonly PA = new Locale('pa', 'Punjabi');\n static readonly PA_ARAB_PK = new Locale('pa_Arab_PK', 'Punjabi (Arabic, Pakistan)');\n static readonly PA_ARAB = new Locale('pa_Arab', 'Punjabi (Arabic)', 'pa');\n static readonly PA_GURU_IN = new Locale('pa_Guru_IN', 'Punjabi (Gurmukhi, India)');\n static readonly PA_GURU = new Locale('pa_Guru', 'Punjabi (Gurmukhi)', 'pa');\n static readonly PA_IN = new Locale('pa_IN', 'Punjabi (India)');\n static readonly PA_PK = new Locale('pa_PK', 'Punjabi (Pakistan)');\n static readonly QU = new Locale('qu', 'Quechua');\n static readonly QU_BO = new Locale('qu_BO', 'Quechua (Bolivia)');\n static readonly QU_EC = new Locale('qu_EC', 'Quechua (Ecuador)');\n static readonly QU_PE = new Locale('qu_PE', 'Quechua (Peru)');\n static readonly RO = new Locale('ro', 'Romanian');\n static readonly RO_MD = new Locale('ro_MD', 'Romanian (Moldova)');\n static readonly RO_RO = new Locale('ro_RO', 'Romanian (Romania)');\n static readonly RM = new Locale('rm', 'Romansh');\n static readonly RM_CH = new Locale('rm_CH', 'Romansh (Switzerland)');\n static readonly RN = new Locale('rn', 'Rundi');\n static readonly RN_BI = new Locale('rn_BI', 'Rundi (Burundi)');\n static readonly RU = new Locale('ru', 'Russian');\n static readonly RU_BY = new Locale('ru_BY', 'Russian (Belarus)');\n static readonly RU_KZ = new Locale('ru_KZ', 'Russian (Kazakhstan)');\n static readonly RU_KG = new Locale('ru_KG', 'Russian (Kyrgyzstan)');\n static readonly RU_MD = new Locale('ru_MD', 'Russian (Moldova)');\n static readonly RU_RU = new Locale('ru_RU', 'Russian (Russia)');\n static readonly RU_UA = new Locale('ru_UA', 'Russian (Ukraine)');\n static readonly SG = new Locale('sg', 'Sango');\n static readonly SG_CF = new Locale('sg_CF', 'Sango (Central African Republic)');\n static readonly GD = new Locale('gd', 'Scottish Gaelic');\n static readonly GD_GB = new Locale('gd_GB', 'Scottish Gaelic (United Kingdom)');\n static readonly SR = new Locale('sr', 'Serbian');\n static readonly SR_BA = new Locale('sr_BA', 'Serbian (Bosnia & Herzegovina)');\n static readonly SR_CYRL_BA = new Locale('sr_Cyrl_BA', 'Serbian (Cyrillic, Bosnia & Herzegovina)');\n static readonly SR_CYRL_XK = new Locale('sr_Cyrl_XK', 'Serbian (Cyrillic, Kosovo)');\n static readonly SR_CYRL_ME = new Locale('sr_Cyrl_ME', 'Serbian (Cyrillic, Montenegro)');\n static readonly SR_CYRL_RS = new Locale('sr_Cyrl_RS', 'Serbian (Cyrillic, Serbia)');\n static readonly SR_CYRL = new Locale('sr_Cyrl', 'Serbian (Cyrillic)', 'sr');\n static readonly SR_XK = new Locale('sr_XK', 'Serbian (Kosovo)');\n static readonly SR_LATN_BA = new Locale('sr_Latn_BA', 'Serbian (Latin, Bosnia & Herzegovina)');\n static readonly SR_LATN_XK = new Locale('sr_Latn_XK', 'Serbian (Latin, Kosovo)');\n static readonly SR_LATN_ME = new Locale('sr_Latn_ME', 'Serbian (Latin, Montenegro)');\n static readonly SR_LATN_RS = new Locale('sr_Latn_RS', 'Serbian (Latin, Serbia)');\n static readonly SR_LATN = new Locale('sr_Latn', 'Serbian (Latin)', 'sr');\n static readonly SR_ME = new Locale('sr_ME', 'Serbian (Montenegro)');\n static readonly SR_RS = new Locale('sr_RS', 'Serbian (Serbia)');\n static readonly SH = new Locale('sh', 'Serbo-Croatian');\n static readonly SH_BA = new Locale('sh_BA', 'Serbo-Croatian (Bosnia & Herzegovina)');\n static readonly SN = new Locale('sn', 'Shona');\n static readonly SN_ZW = new Locale('sn_ZW', 'Shona (Zimbabwe)');\n static readonly II = new Locale('ii', 'Sichuan Yi');\n static readonly II_CN = new Locale('ii_CN', 'Sichuan Yi (China)');\n static readonly SI = new Locale('si', 'Sinhala');\n static readonly SI_LK = new Locale('si_LK', 'Sinhala (Sri Lanka)');\n static readonly SK = new Locale('sk', 'Slovak');\n static readonly SK_SK = new Locale('sk_SK', 'Slovak (Slovakia)');\n static readonly SL = new Locale('sl', 'Slovenian');\n static readonly SL_SI = new Locale('sl_SI', 'Slovenian (Slovenia)');\n static readonly SO = new Locale('so', 'Somali');\n static readonly SO_DJ = new Locale('so_DJ', 'Somali (Djibouti)');\n static readonly SO_ET = new Locale('so_ET', 'Somali (Ethiopia)');\n static readonly SO_KE = new Locale('so_KE', 'Somali (Kenya)');\n static readonly SO_SO = new Locale('so_SO', 'Somali (Somalia)');\n static readonly ES = new Locale('es', 'Spanish');\n static readonly ES_AR = new Locale('es_AR', 'Spanish (Argentina)');\n static readonly ES_BO = new Locale('es_BO', 'Spanish (Bolivia)');\n static readonly ES_IC = new Locale('es_IC', 'Spanish (Canary Islands)');\n static readonly ES_EA = new Locale('es_EA', 'Spanish (Ceuta & Melilla)');\n static readonly ES_CL = new Locale('es_CL', 'Spanish (Chile)');\n static readonly ES_CO = new Locale('es_CO', 'Spanish (Colombia)');\n static readonly ES_CR = new Locale('es_CR', 'Spanish (Costa Rica)');\n static readonly ES_CU = new Locale('es_CU', 'Spanish (Cuba)');\n static readonly ES_DO = new Locale('es_DO', 'Spanish (Dominican Republic)');\n static readonly ES_EC = new Locale('es_EC', 'Spanish (Ecuador)');\n static readonly ES_SV = new Locale('es_SV', 'Spanish (El Salvador)');\n static readonly ES_GQ = new Locale('es_GQ', 'Spanish (Equatorial Guinea)');\n static readonly ES_GT = new Locale('es_GT', 'Spanish (Guatemala)');\n static readonly ES_HN = new Locale('es_HN', 'Spanish (Honduras)');\n static readonly ES_MX = new Locale('es_MX', 'Spanish (Mexico)');\n static readonly ES_NI = new Locale('es_NI', 'Spanish (Nicaragua)');\n static readonly ES_PA = new Locale('es_PA', 'Spanish (Panama)');\n static readonly ES_PY = new Locale('es_PY', 'Spanish (Paraguay)');\n static readonly ES_PE = new Locale('es_PE', 'Spanish (Peru)');\n static readonly ES_PH = new Locale('es_PH', 'Spanish (Philippines)');\n static readonly ES_PR = new Locale('es_PR', 'Spanish (Puerto Rico)');\n static readonly ES_ES = new Locale('es_ES', 'Spanish (Spain)');\n static readonly ES_US = new Locale('es_US', 'Spanish (United States)');\n static readonly ES_UY = new Locale('es_UY', 'Spanish (Uruguay)');\n static readonly ES_VE = new Locale('es_VE', 'Spanish (Venezuela)');\n static readonly SW = new Locale('sw', 'Swahili');\n static readonly SW_KE = new Locale('sw_KE', 'Swahili (Kenya)');\n static readonly SW_TZ = new Locale('sw_TZ', 'Swahili (Tanzania)');\n static readonly SW_UG = new Locale('sw_UG', 'Swahili (Uganda)');\n static readonly SV = new Locale('sv', 'Swedish');\n static readonly SV_AX = new Locale('sv_AX', 'Swedish (Åland Islands)');\n static readonly SV_FI = new Locale('sv_FI', 'Swedish (Finland)');\n static readonly SV_SE = new Locale('sv_SE', 'Swedish (Sweden)');\n static readonly TL = new Locale('tl', 'Tagalog');\n static readonly TL_PH = new Locale('tl_PH', 'Tagalog (Philippines)');\n static readonly TA = new Locale('ta', 'Tamil');\n static readonly TA_IN = new Locale('ta_IN', 'Tamil (India)');\n static readonly TA_MY = new Locale('ta_MY', 'Tamil (Malaysia)');\n static readonly TA_SG = new Locale('ta_SG', 'Tamil (Singapore)');\n static readonly TA_LK = new Locale('ta_LK', 'Tamil (Sri Lanka)');\n static readonly TE = new Locale('te', 'Telugu');\n static readonly TE_IN = new Locale('te_IN', 'Telugu (India)');\n static readonly TH = new Locale('th', 'Thai');\n static readonly TH_TH = new Locale('th_TH', 'Thai (Thailand)');\n static readonly BO = new Locale('bo', 'Tibetan');\n static readonly BO_CN = new Locale('bo_CN', 'Tibetan (China)');\n static readonly BO_IN = new Locale('bo_IN', 'Tibetan (India)');\n static readonly TI = new Locale('ti', 'Tigrinya');\n static readonly TI_ER = new Locale('ti_ER', 'Tigrinya (Eritrea)');\n static readonly TI_ET = new Locale('ti_ET', 'Tigrinya (Ethiopia)');\n static readonly TO = new Locale('to', 'Tongan');\n static readonly TO_TO = new Locale('to_TO', 'Tongan (Tonga)');\n static readonly TR = new Locale('tr', 'Turkish');\n static readonly TR_CY = new Locale('tr_CY', 'Turkish (Cyprus)');\n static readonly TR_TR = new Locale('tr_TR', 'Turkish (Turkey)');\n static readonly UK = new Locale('uk', 'Ukrainian');\n static readonly UK_UA = new Locale('uk_UA', 'Ukrainian (Ukraine)');\n static readonly UR = new Locale('ur', 'Urdu');\n static readonly UR_IN = new Locale('ur_IN', 'Urdu (India)');\n static readonly UR_PK = new Locale('ur_PK', 'Urdu (Pakistan)');\n static readonly UG = new Locale('ug', 'Uyghur');\n static readonly UG_ARAB_CN = new Locale('ug_Arab_CN', 'Uyghur (Arabic, China)');\n static readonly UG_ARAB = new Locale('ug_Arab', 'Uyghur (Arabic)');\n static readonly UG_CN = new Locale('ug_CN', 'Uyghur (China)');\n static readonly UZ = new Locale('uz', 'Uzbek');\n static readonly UZ_AF = new Locale('uz_AF', 'Uzbek (Afghanistan)');\n static readonly UZ_ARAB_AF = new Locale('uz_Arab_AF', 'Uzbek (Arabic, Afghanistan)');\n static readonly UZ_ARAB = new Locale('uz_Arab', 'Uzbek (Arabic)', 'uz');\n static readonly UZ_CYRL_UZ = new Locale('uz_Cyrl_UZ', 'Uzbek (Cyrillic, Uzbekistan)');\n static readonly UZ_CYRL = new Locale('uz_Cyrl', 'Uzbek (Cyrillic)', 'uz');\n static readonly UZ_LATN_UZ = new Locale('uz_Latn_UZ', 'Uzbek (Latin, Uzbekistan)');\n static readonly UZ_LATN = new Locale('uz_Latn', 'Uzbek (Latin)', 'uz');\n static readonly UZ_UZ = new Locale('uz_UZ', 'Uzbek (Uzbekistan)');\n static readonly VI = new Locale('vi', 'Vietnamese');\n static readonly VI_VN = new Locale('vi_VN', 'Vietnamese (Vietnam)');\n static readonly CY = new Locale('cy', 'Welsh');\n static readonly CY_GB = new Locale('cy_GB', 'Welsh (United Kingdom)');\n static readonly FY = new Locale('fy', 'Western Frisian');\n static readonly FY_NL = new Locale('fy_NL', 'Western Frisian (Netherlands)');\n static readonly YI = new Locale('yi', 'Yiddish');\n static readonly YO = new Locale('yo', 'Yoruba');\n static readonly YO_BJ = new Locale('yo_BJ', 'Yoruba (Benin)');\n static readonly YO_NG = new Locale('yo_NG', 'Yoruba (Nigeria)');\n static readonly ZU = new Locale('zu', 'Zulu');\n static readonly ZU_ZA = new Locale('zu_ZA', 'Zulu (South Africa)');\n\n constructor(id: Id, name: string, readonly country = text(id).lower.last(2).toString(), private readonly lower = text(id).lower.trim.toString()) {\n super(name, id);\n }\n\n static lookup(other: string): Optional<Locale> {\n return this.all<Locale>().first(l => l.equals(other));\n }\n\n equals<E extends Enum>(other: E | Id): other is E {\n return text(other).lower.trim.equals(this.lower);\n }\n}\n","import { Enum } from '../../types';\n\nexport class UnitOfMeasurement extends Enum {\n static readonly MM = new UnitOfMeasurement('Millimeter', 'mm', 1);\n static readonly CM = new UnitOfMeasurement('Centimeter', 'cm', 10);\n static readonly DM = new UnitOfMeasurement('Decimeter', 'dm', 100);\n static readonly M = new UnitOfMeasurement('Meter', 'm', 1000);\n static readonly KM = new UnitOfMeasurement('Kilometer', 'km', 1000000);\n\n constructor(name: string, id: string, readonly mmMultiplier: number) {\n super(name, id);\n }\n}\n","import { Enum } from '../../types';\n\nexport class UnitOfWeight extends Enum {\n static readonly MG = new UnitOfWeight('MilliGram', 'mg', 0.001);\n static readonly G = new UnitOfWeight('Gram', 'g', 1);\n static readonly KG = new UnitOfWeight('Kilogram', 'kg', 1000);\n\n constructor(name: string, id: string, readonly gMultiplier: number) {\n super(name, id);\n }\n}\n","import { Struct } from './Struct';\nimport { choose, ctx, Identity, isIdentity, Json } from '../types';\nimport { required, valid } from '../validation';\nimport { DateTime } from './values';\n\nexport class Audit extends Struct {\n @required() readonly by: Identity = { id: this.state.by?.id, user: this.state.by?.user };\n @valid() readonly when: DateTime = new DateTime(this.state.when);\n\n constructor(json?: Json) {\n super(\n choose(json)\n .is.defined(\n j => j,\n j => j,\n )\n .else({\n by: isIdentity(ctx.request?.identity) ? ctx.request?.identity : { id: 0, user: 'easy' },\n when: DateTime.now.toJSON(),\n }),\n );\n }\n}\n","import { Struct } from './Struct';\nimport { Id, json, Json, toId } from '../types';\nimport { required } from '../validation';\n\nexport abstract class Child extends Struct {\n @required() readonly id: Id = this.state.id ?? toId();\n\n protected merge(a: unknown): Json {\n return json.merge(this, a, { id: this.id });\n }\n}\n","import { Struct } from './Struct';\nimport { Id, json, Json, toId } from '../types';\nimport { required } from '../validation';\nimport { Audit } from './Audit';\n\nexport abstract class Entity extends Struct {\n @required() readonly id: Id = this.state.id ?? toId();\n @required() readonly created: Audit = new Audit(this.state.created);\n @required() readonly lastModified: Audit = new Audit(this.state.lastModified);\n\n protected merge(a: unknown): Json {\n return json.merge(this, a, {\n id: this.id,\n created: this.created,\n lastModified: new Audit(),\n });\n }\n}\n","import { asList, Constructor, Exception, FetchOptions, Gateway, Id, isValidatable, Json, JsonValue, Key, List, PageList, Repository, toJson } from '../types';\nimport { when } from '../validation';\nimport { reject, resolve } from '../utils';\nimport { Struct } from './Struct';\n\nexport type RepoAction = 'add' | 'update' | 'remove';\n\nexport class Repo<T extends Struct, Options = FetchOptions> extends Repository<T, Options> {\n constructor(protected ctor: Constructor<T>, private readonly gateway: Gateway<Options>) {\n super();\n }\n\n create = (item: T | Json): T => (isValidatable(item) ? item : new this.ctor(item));\n\n all(options?: Options): Promise<PageList<T>> {\n return this.gateway.all(options).then(js => js.map(i => new this.ctor(i)));\n }\n\n byId(id: Id): Promise<T> {\n return this.gateway\n .byId(id)\n .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n .then(j => new this.ctor(j));\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.gateway.byIds(...ids).then(j => asList(this.ctor, j));\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.gateway.by('key', key, options).then(js => js.map(i => new this.ctor(i)));\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.by(key.toString(), value, options).then(js => js.map(i => new this.ctor(i)));\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.search(q, options).then(js => js.map(i => new this.ctor(i)));\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.gateway.filter(options).then(js => js.map(i => new this.ctor(i)));\n }\n\n exists(id: Id): Promise<boolean> {\n return this.gateway.exists(id);\n }\n\n add(t: T | Json): Promise<T> {\n return this.extend(this.create(t), 'add')\n .then(i => when(i).not.isValid.reject())\n .then(i => this.validate(i, 'add'))\n .then(i => this.gateway.add(toJson(i)))\n .then(j => new this.ctor(j));\n }\n\n update(id: Id, json: Json): Promise<T> {\n return this.gateway\n .byId(id)\n .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n .then(j => new this.ctor(j).update(json) as T)\n .then(i => this.extend(i, 'update'))\n .then(i => when(i).not.isValid.reject())\n .then(i => this.validate(i, 'update'))\n .then(i => this.gateway.update(toJson(i)))\n .then(j => new this.ctor(j));\n }\n\n remove(id: Id): Promise<boolean> {\n return this.gateway.remove(id);\n }\n\n extend(item: T, _action?: RepoAction): Promise<T> {\n return resolve(item);\n }\n\n validate(item: T, _action?: RepoAction): Promise<T> {\n return resolve(item);\n }\n\n upsert(id: Id, item: Json): Promise<T> {\n return this.update(id, item).catch(e => (Exception.DoesNotExist.equals(e) ? this.add(item) : reject(e)));\n }\n}\n","import { Exception, FetchOptions, Gateway, Id, Json, JsonValue, Key, List, PageList, Repository } from '../types';\nimport { when } from '../validation';\nimport { View } from '../utils';\n\nexport class Typo<T, Options = FetchOptions> extends Repository<T, Options> {\n constructor(protected view: View<T>, private readonly gateway: Gateway<Options>) {\n super();\n }\n\n create = (j: Json): T => this.view.from(j);\n\n all(options?: Options): Promise<PageList<T>> {\n return this.gateway.all(options).then(js => js.map(this.create));\n }\n\n byId(id: Id): Promise<T> {\n return this.gateway\n .byId(id)\n .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n .then(j => this.create(j));\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.gateway.byIds(...ids).then(js => js.map(this.create));\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.gateway.by('key', key, options).then(js => js.map(this.create));\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.by(key.toString(), value, options).then(js => js.map(this.create));\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.search(q, options).then(js => js.map(this.create));\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.gateway.filter(options).then(js => js.map(j => this.create(j)));\n }\n\n exists(id: Id): Promise<boolean> {\n return this.gateway.exists(id);\n }\n}\n","import { cacheAge, CacheAge, entries, isNumber, on } from '../types';\nimport { ifDefined } from '../utils';\n\nexport class CacheControl {\n name = 'Cache-Control';\n\n protected constructor(readonly enabled = true, private directives: Record<string, boolean | CacheAge | undefined> = {}) {}\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, isNumber(v) ? `${k}=${cacheAge.toSeconds(v)}` : k))\n .join(',');\n }\n}\n","import { asString, Enum, Get, ofGet } from '../types';\nimport formUrlEncoded from 'form-urlencoded';\n\nexport class ContentType extends Enum {\n static Form = new ContentType('form', 'application/x-www-form-urlencoded', b => formUrlEncoded(b));\n static Json = new ContentType('json', 'application/json', b => b);\n static Stream = new ContentType('stream', 'application/octet-stream');\n static Text = new ContentType('text', 'text/plain');\n static Xml = new ContentType('xml', 'application/xml');\n\n private constructor(name: string, readonly type: string, protected readonly encoder: Get<string> = b => asString(b)) {\n super(name, type);\n }\n\n encode = (body?: unknown): string => ofGet(this.encoder, body);\n}\n","export const HttpHeader = {\n ContentType: 'Content-Type',\n Correlation: 'X-Correlation-Id',\n};\n","import { Code, Enum, isAn, TypeGuard } from '../types';\n\nexport class HttpStatus extends Enum {\n static Continue = new HttpStatus('Continue', 100);\n static SwitchingProtocols = new HttpStatus('Switching protocols', 101);\n static Processing = new HttpStatus('Processing', 102);\n static EarlyHints = new HttpStatus('Early hints', 103);\n static Ok = new HttpStatus('Ok', 200);\n static Created = new HttpStatus('Created', 201);\n static Accepted = new HttpStatus('Accepted', 202);\n static NonAuthoritativeInformation = new HttpStatus('Non-authoritative information', 203);\n static NoContent = new HttpStatus('No content', 204);\n static ResetContent = new HttpStatus('Reset content', 205);\n static PartialContent = new HttpStatus('Partial content', 206);\n static MultiStatus = new HttpStatus('Multi-status', 207);\n static AlreadyReported = new HttpStatus('Already reported', 208);\n static ImUsed = new HttpStatus('IM used', 226);\n static MultipleChoices = new HttpStatus('Multiple Choices', 300);\n static MovedPermanently = new HttpStatus('Moved Permanently', 301);\n static Found = new HttpStatus('Found', 302);\n static SeeOther = new HttpStatus('See other', 303);\n static NotModified = new HttpStatus('Not modified', 304);\n static UseProxy = new HttpStatus('Use proxy', 305);\n static SwitchProxy = new HttpStatus('Switch proxy', 306);\n static TemporaryRedirect = new HttpStatus('Temporary redirect', 307);\n static PermanentRedirect = new HttpStatus('Permanent redirect', 308);\n static BadRequest = new HttpStatus('Bad request', 400);\n static NotAuthorized = new HttpStatus('Not authorized', 401);\n static PaymentRequired = new HttpStatus('Payment required', 402);\n static Forbidden = new HttpStatus('Forbidden', 403);\n static NotFound = new HttpStatus('Not found', 404);\n static MethodNotAllowed = new HttpStatus('Method not allowed', 405);\n static NotAcceptable = new HttpStatus('Not acceptable', 406);\n static ProxyAuthenticationRequired = new HttpStatus('Proxy authentication required', 407);\n static RequestTimeout = new HttpStatus('Request timeout', 408);\n static Conflict = new HttpStatus('Conflict', 409);\n static Gone = new HttpStatus('Gone', 410);\n static LengthRequired = new HttpStatus('Length required', 411);\n static PreconditionFailed = new HttpStatus('Precondition failed', 412);\n static PayloadTooLarge = new HttpStatus('Payload too large', 413);\n static UriTooLong = new HttpStatus('URI too long', 414);\n static UnsupportedMediaType = new HttpStatus('Unsupported media type', 415);\n static RangeNotSatisfiable = new HttpStatus('Range not satisfiable', 416);\n static ExpectationFailed = new HttpStatus('Expectation failed', 417);\n static ImATeapot = new HttpStatus(\"I'm a teapot\", 418);\n static MisdirectedRequest = new HttpStatus('Misdirected request', 421);\n static UnprocessableEntity = new HttpStatus('Unprocessable entity', 422);\n static Locked = new HttpStatus('Locked', 423);\n static FailedDependency = new HttpStatus('Failed dependency', 424);\n static TooEarly = new HttpStatus('Too early', 425);\n static UpgradeRequired = new HttpStatus('Upgrade required', 426);\n static PreconditionRequired = new HttpStatus('Precondition required', 428);\n static TooManyRequests = new HttpStatus('Too many requests', 429);\n static RequestHeaderFieldsTooLarge = new HttpStatus('Request header fields too large', 431);\n static UnavailableForLegalReasons = new HttpStatus('Unavailable for legal reasons', 451);\n static InternalServerError = new HttpStatus('Internal server error', 500);\n static NotImplemented = new HttpStatus('Not implemented', 501);\n static BadGateway = new HttpStatus('Bad gateway', 502);\n static ServiceUnavailable = new HttpStatus('Service unavailable', 503);\n static GatewayTimeout = new HttpStatus('Gateway timeout', 504);\n static HTTPVersionNotSupported = new HttpStatus('Http version not supported', 505);\n static VariantAlsoNegotiates = new HttpStatus('Variant also negotiates', 506);\n static InsufficientStorage = new HttpStatus('Insufficient storage', 507);\n static LoopDetected = new HttpStatus('Loop detected', 508);\n static NotExtended = new HttpStatus('Not extended', 510);\n static NetworkAuthenticationRequired = new HttpStatus('Network authentication required', 511);\n\n get isError(): boolean {\n return this.isClientError || this.isServerError;\n }\n\n get isClientError(): boolean {\n return (this.id as number) >= 400 && (this.id as number) < 500;\n }\n\n get isServerError(): boolean {\n return (this.id as number) >= 500 && (this.id as number) < 600;\n }\n\n get status(): number {\n return this.id as number;\n }\n}\n\nexport const isHttpStatus: TypeGuard<HttpStatus> = (s?: unknown): s is HttpStatus => isAn<HttpStatus>(s, 'id', 'status');\n\nexport const toHttpStatus = (s: HttpStatus | Code): HttpStatus => (isHttpStatus(s) ? s : HttpStatus.byId(s));\n","import { Enum } from '../types';\n\nexport class HttpVerb extends Enum {\n static Get = new HttpVerb('Get');\n static Put = new HttpVerb('Put');\n static Patch = new HttpVerb('Patch');\n static Post = new HttpVerb('Post');\n static Delete = new HttpVerb('Delete');\n\n constructor(name: string) {\n super(name, name.toLowerCase(), name.toUpperCase());\n }\n}\n","import { ErrorOrigin, isError } from '../types';\nimport { VerbOptions } from './Verb';\n\nexport class OriginatedError extends Error {\n constructor(readonly origin: ErrorOrigin, readonly options?: VerbOptions) {\n super();\n if (isError(origin)) this.stack = origin.stack;\n }\n}\n\nexport const isOriginatedError = (e?: unknown): e is OriginatedError => isError(e) && e instanceof OriginatedError;\n\nexport const toOriginatedError = (e: unknown, options?: VerbOptions): OriginatedError =>\n isOriginatedError(e) ? e : new OriginatedError(e as ErrorOrigin, options);\n","import { asString, CacheAge, ctx, Enum, Id, isDefined, isNotEmpty, on, Optional, PageOptions, Text, toUuid } from '../types';\nimport { HttpHeader } from './HttpHeader';\nimport { ContentType } from './ContentType';\n\nexport const toPageOptions = (options?: RequestOptions | PageOptions): Optional<PageOptions> =>\n options instanceof RequestOptions ? options.pageOptions : options;\n\nexport class RequestOptions extends Enum {\n public requestOptions: { maxRedirects?: number; validateStatus?: (status: number) => boolean; timeout?: CacheAge } = {};\n\n constructor(readonly type: ContentType = ContentType.Json, readonly headers: { [key: string]: any } = {}, public pageOptions?: PageOptions) {\n super(type.name);\n this.headers['Content-Type'] = type.id;\n this.headers[HttpHeader.Correlation] = ctx.request.correlationId ?? toUuid();\n }\n\n static get Form(): RequestOptions {\n return new RequestOptions(ContentType.Form);\n }\n\n static get Json(): RequestOptions {\n return new RequestOptions(ContentType.Json);\n }\n\n static get Stream(): RequestOptions {\n return new RequestOptions(ContentType.Stream);\n }\n\n static get Text(): RequestOptions {\n return new RequestOptions(ContentType.Text);\n }\n\n static get Xml(): RequestOptions {\n return new RequestOptions(ContentType.Xml);\n }\n\n page = (options: PageOptions): this => {\n this.pageOptions = options;\n return this;\n };\n\n authorization = (auth: string): this => this.setHeader('Authorization', auth);\n\n apiKey = (apiKey: string): this => this.setHeader('apiKey', apiKey);\n\n setHeader = (key: Text, value: Id | boolean): this => on(this, t => (t.headers[asString(key)] = value));\n\n setHeaderUnlessPresent = (key: string, value?: Id | boolean): this => (value ? this.setHeader(key, this.headers[key] ?? value) : this);\n\n accept = (type: ContentType): this => this.setHeader('Accept', type.id);\n\n bearer = (jwt: Text): this => {\n return isNotEmpty(jwt) ? this.authorization(`Bearer ${jwt}`) : this;\n };\n\n basic = (username: Text, password: Text): this => {\n const basicAuth = Buffer.from(`${username}:${password}`, 'utf8').toString('base64');\n return this.authorization(`Basic ${basicAuth}`);\n };\n\n maxRedirects = (max?: number): this => {\n this.requestOptions.maxRedirects = max;\n return this;\n };\n\n validateStatus = (validate?: (status: number) => boolean): this => {\n this.requestOptions.validateStatus = validate;\n return this;\n };\n\n timeout = (t?: CacheAge): this => {\n this.requestOptions.timeout = t;\n return this;\n };\n}\n\nexport const isRequestOptions = (o?: unknown): o is RequestOptions => isDefined(o) && o instanceof RequestOptions;\n","import { choose, Id, isDefined, isError, isResult, isResults, Json, List, Result, toList, toResult } from '../types';\nimport { HttpStatus, isHttpStatus } from './HttpStatus';\nimport { isResponse } from './Response';\n\nexport type RestResult = {\n data?: { code: number; items: List<Json>; itemCount: number; totalItems?: number; meta?: Json };\n error?: { code: number; message: string; errorCount: number; errors: List<Result> };\n};\n\nconst hasErrors = (a: any): a is { error: { code: number; errors: List<Result> } } => isDefined(a?.error?.errors);\nconst hasItems = (a: any): a is { data: { code: number; items: List<Json>; totalItems?: number; meta?: Json } } => isDefined(a?.data.items);\n\nexport const rest = {\n toData: (status: HttpStatus, items: Json[] = [], totalItems?: number, meta?: Json): RestResult => ({\n data: {\n code: status.status,\n items: toList(items),\n itemCount: items.length,\n totalItems,\n meta,\n },\n }),\n toError: (status: HttpStatus, errors: Result[] = [toResult(status.name)]): RestResult => ({\n error: {\n code: status.status,\n message: status.name ?? errors[0].message ?? 'Unknown',\n errors: toList(errors),\n errorCount: errors.length,\n },\n }),\n to: (payload?: any | any[], status?: HttpStatus): RestResult =>\n choose(payload)\n .is.not.defined(p => p, undefined as unknown as RestResult)\n .type(isHttpStatus, h => rest.toError(h ?? status ?? HttpStatus.InternalServerError, [toResult(h.name)]))\n .type(isResult, r => rest.toError(status ?? HttpStatus.BadRequest, [r]))\n .type(isError, e => rest.toError(status ?? HttpStatus.BadRequest, [e]))\n .type(isResults, r => rest.toError(status ?? HttpStatus.BadRequest, r.results))\n .type(isResponse, r => rest.toError(status ?? HttpStatus.byId(r.body.error?.code as Id), r.body.error?.errors))\n .type(hasErrors, e => rest.toError(status ?? HttpStatus.byId(e.error.code, HttpStatus.BadRequest), e.error.errors))\n .type(hasItems, d => rest.toData(status ?? HttpStatus.byId(d.data.code, HttpStatus.Ok), d.data.items, d.data.totalItems, d.data.meta))\n .else(p => rest.toData(status ?? HttpStatus.Ok, toList(p))),\n};\n\nexport const isRestResult = (r: unknown): r is RestResult => isDefined(r) && (isDefined((r as RestResult).data) || isDefined((r as RestResult).error));\n","import { HttpStatus, toHttpStatus } from './HttpStatus';\nimport { rest, RestResult } from './RestResult';\nimport { Code, isA, TypeGuard } from '../types';\n\nexport type Response = {\n status: HttpStatus;\n headers?: { [key: string]: any };\n body: RestResult;\n};\n\nexport const isResponse: TypeGuard<Response> = (r?: unknown): r is Response => isA<Response>(r, 'status', 'body');\n\nexport const toResponse = (status: HttpStatus | Code, body?: unknown, headers?: { [key: string]: any }): Response => ({\n status: toHttpStatus(status),\n headers,\n body: rest.to(body),\n});\n","import { meta } from '../types';\nimport { CacheControl, ContentType, HttpStatus, HttpVerb } from './index';\n\nexport type VerbOptions = { onOk?: HttpStatus; onNotFound?: HttpStatus; onError?: HttpStatus; type?: ContentType; cache?: CacheControl };\nexport type Verb = { verb: HttpVerb; options: VerbOptions };\n\nexport const toVerbOptions = (options?: VerbOptions): Required<VerbOptions> => ({\n onOk: options?.onOk ?? HttpStatus.Ok,\n onNotFound: options?.onNotFound ?? HttpStatus.NotFound,\n onError: options?.onError ?? HttpStatus.BadRequest,\n type: options?.type ?? ContentType.Json,\n cache: options?.cache ?? CacheControl.disabled(),\n});\n\nconst toVerb =\n <T>(verb: HttpVerb, options?: VerbOptions): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('verb', { verb, options });\n };\n\nexport const get = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Get, options);\n\nexport const search = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Get, { onNotFound: HttpStatus.Ok, ...options });\n\nexport const put = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Put, options);\n\nexport const patch = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Patch, options);\n\nexport const post = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Post, { onOk: HttpStatus.Created, ...options });\n\nexport const del = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Delete, { onOk: HttpStatus.NoContent, ...options });\n\nexport const stream = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Get, { type: ContentType.Stream, ...options });\n","import { EasyUri, uri } from '../types';\n\nexport class HealthUri extends EasyUri {\n static readonly health = uri.segment('health');\n static readonly Health = new HealthUri([HealthUri.health]);\n}\n","import { asNumber, Id, Json, JsonValue, OneOrMore, Optional, PageOptions, Text } from '../types';\nimport { ifDefined } from '../utils';\n\nexport class Req<T = unknown> implements Omit<PageOptions, 'sort'> {\n readonly skip: Optional<number>;\n readonly take: Optional<number>;\n constructor(readonly path: Json = {}, readonly query: Json = {}, readonly body: T, readonly headers: Record<string, OneOrMore<string>>) {\n this.skip = ifDefined(query.skip, s => asNumber(s));\n this.take = ifDefined(query.take, t => asNumber(t));\n }\n\n get id(): Id {\n return this.get('id');\n }\n\n get q(): JsonValue {\n return this.get('q');\n }\n\n get = (key: Text): any => this.path[key.toString()] ?? this.query[key.toString()];\n}\n\nexport function toReq<T = unknown>(req: { params?: { id?: unknown }; query?: { q?: unknown }; body?: T; headers?: unknown }): Req {\n return new Req(req.params as Json, req.query as Json, req.body as Json, req.headers as Record<string, OneOrMore<string>>);\n}\n","import { meta } from '../types';\nimport { Scope, UseCase } from '../process';\n\nexport class Requires {\n readonly labCoat =\n (): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('labCoat', true);\n };\n\n readonly token =\n (): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('token', true);\n };\n\n readonly scope =\n (scope: Scope): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('token', true);\n meta(subject).property(property).set('scope', scope);\n };\n\n readonly useCase =\n (uc: UseCase): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('token', true);\n meta(subject).property(property).set('uc', uc);\n };\n}\n\nexport const requires = new Requires();\n","import { List, meta, Optional, tryTo, Uri } from '../types';\nimport { Verb } from '../http';\nimport { Req } from './Req';\nimport { Resource } from './Resource';\nimport { Scope, UseCase } from '../process';\nimport { RequestHandler } from 'express';\n\nexport const route =\n (uri: Uri): ClassDecorator =>\n (subject: unknown): void => {\n meta(subject).set('route', uri);\n };\n\nexport type Endpoint<T = unknown> = (re: Req) => Promise<T | List<T>>;\nexport type RouteRequires = { token: boolean; labCoat: boolean; scope?: Scope; uc?: UseCase };\nexport type Route = { verb: Verb; endpoint: Endpoint; requires: RouteRequires; middleware: RequestHandler[] };\nexport type Routes = { route: Uri; middleware: RequestHandler[]; endpoints: List<Route> };\n\nconst toRoute = (endpoint: Endpoint, requires: RouteRequires, verb?: Verb, middleware?: RequestHandler[]): Optional<Route> =>\n tryTo(verb)\n .is.defined()\n .map(verb => ({ verb, endpoint, requires, middleware: middleware ?? [] }) as Route)\n .orElse();\n\nclass Router implements Routes {\n constructor(readonly resource: Resource) {}\n\n get route(): Uri {\n return meta(this.resource).get('route');\n }\n\n get middleware(): RequestHandler[] {\n return meta(this.resource).get<RequestHandler[]>('middleware') ?? [];\n }\n\n get endpoints(): List<Route> {\n return meta(this.resource)\n .properties('verb')\n .mapDefined(v =>\n toRoute(\n this.resource[v.property],\n {\n labCoat: v.get<boolean>('labCoat') ?? false,\n token: v.get<boolean>('token') ?? false,\n scope: v.get<Scope>('scope'),\n uc: v.get<UseCase>('uc'),\n },\n v.get<Verb>('verb'),\n v.get<RequestHandler[]>('middleware')\n )\n );\n }\n}\n\nexport const routes = (resource: Resource): Routes => new Router(resource);\n","import { AppProvider, Handler } from './AppProvider';\nimport { Constructor, Enum, List, toList, tryTo } from '../types';\nimport { Resource } from './Resource';\n\nexport class Service extends Enum {\n protected port = 8080;\n\n constructor(readonly name: string, protected app: AppProvider, protected resources: List<Resource> = toList()) {\n super(name);\n }\n\n pre = (): Handler[] => [];\n post = (): Handler[] => [];\n\n with(...resources: Constructor<Resource>[]): this {\n return tryTo(this).accept(t => t.resources.add(resources.map(r => new r()))).value;\n }\n\n atPort(port: number): this {\n return tryTo(this).accept(t => (t.port = port)).value;\n }\n\n start(message = `Service ${this.name} listening on port ${this.port} with ${this.resources.length} resources.`): void {\n tryTo(this)\n .accept(t => t.pre().forEach(h => this.app.use(h)))\n .accept(t => t.resources.forEach(r => this.app.route(this, r)))\n .accept(t => t.post().forEach(h => this.app.use(h)))\n .accept(t => t.app.listen(this.port, message));\n }\n}\n","import { resolve } from '../utils';\nimport { HealthUri } from './HealthUri';\nimport { Json } from '../types';\nimport { get, Resource, route } from '../resources';\n\n@route(HealthUri.Health)\nexport class HealthResource implements Resource {\n @get()\n ok = (): Promise<Json> => resolve({ state: 'Service is healthy.' });\n}\n","import { Enum, IdName, isString, kebab, List, Text, text, toList } from '../types';\n\nexport class Scope extends Enum {\n protected constructor(readonly name: string, id: Text = text(name).kebab, readonly subs: List<Scope> = toList()) {\n super(name, id.toString());\n }\n\n for(item: string | IdName): Scope {\n return new Scope(`${this.name} ${isString(item) ? text(item).title : item.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`));\n }\n\n combines(...scopes: Scope[]): this {\n this.subs.add(scopes);\n return this;\n }\n\n expand(): List<Scope> {\n return this.subs\n .flatMap(s => s.expand())\n .add(this)\n .distinct();\n }\n}\n","import { Scope } from './Scope';\n\nexport class App extends Scope {\n constructor(name: string) {\n super(name);\n }\n\n static readonly Main = new App('Main');\n}\n","import { choose, FetchOptions, Id, JsonValue, Key, List, PageList, Repository, toPageList } from '../types';\nimport { resolve } from '../utils';\nimport { Req } from '../resources';\n\nexport class Search<T, Options = FetchOptions> {\n constructor(protected repo: Repository<T, Options>) {}\n\n all(options?: Options): Promise<PageList<T>> {\n return this.repo.all(options);\n }\n\n byId(id: Id): Promise<T> {\n return this.repo.byId(id);\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.repo.byIds(...ids);\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.repo.byKey(key, options);\n }\n\n query({ query, skip, take }: Req): Promise<PageList<T>> {\n return this.search(query, { skip, take } as Options);\n }\n\n search(query: JsonValue, options?: Options): Promise<PageList<T>> {\n return choose(query)\n .is.not.empty(\n q => q,\n q => this.repo.search(q, options)\n )\n .else(() => resolve(toPageList<T>()));\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.repo.filter(options);\n }\n\n exists(id: Id): Promise<boolean> {\n return this.repo.exists(id);\n }\n}\n","import { Search } from './Search';\nimport { FetchOptions, Id, Json } from '../types';\n\nexport class Manage<T, Options = FetchOptions> extends Search<T, Options> {\n add(json: Json): Promise<T> {\n return this.repo.add(json);\n }\n\n update(id: Id, json: Json): Promise<T> {\n return this.repo.update(id, json);\n }\n\n upsert(id: Id, json: Json): Promise<T> {\n return this.repo.upsert(id, json);\n }\n\n remove(id: Id): Promise<boolean> {\n return this.repo.remove(id);\n }\n}\n","import { Enum, IdName, isIn, isString, kebab, List, Text, text, toList } from '../types';\nimport { Scope } from './Scope';\nimport { App } from './App';\n\nexport class UseCase extends Enum {\n constructor(readonly app: App, name: string, id: Text = text(name).kebab, readonly scopes: List<Scope> = toList<Scope>()) {\n super(name, id.toString());\n }\n\n with(...s: Scope[]): this {\n this.scopes.add(\n ...toList(s)\n .flatMap(s => s.expand())\n .distinct()\n );\n return this;\n }\n\n for(item: string | IdName): UseCase {\n return new UseCase(this.app, `${this.name} ${isString(item) ? item : item?.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`)).with(\n ...this.scopes.map(s => s?.for(item))\n );\n }\n\n static byScopes<U extends UseCase>(...s: Scope[]): List<U> {\n return this.filter(u => u.scopes.some(us => isIn(us, s)));\n }\n}\n","import axios, { AxiosError, AxiosInstance, AxiosResponse, Method } from 'axios';\nimport { HttpStatus, HttpVerb, isRestResult, Request, RequestOptions, RequestProvider, Response, toResponse } from '../http';\nimport { cacheAge, choose, ctx, isDefined, isEmpty, toResult, Uri } from '../types';\n\nconst isResponse = (a: unknown): a is { response: AxiosResponse } => isDefined((a as any)?.response);\nconst isRequest = (a: unknown): a is { request: any } => isDefined((a as any)?.request);\n\nconst asResponse = (uri: Uri, verb: HttpVerb, error: AxiosError): Response =>\n choose(error)\n .type(isResponse, r =>\n toResponse(r.response.status, isRestResult(r.response.data) ? r.response.data : toResult(r.response.statusText, uri.path, uri), r.response.headers)\n )\n .type(isRequest, r => toResponse(r.request.status, toResult(r.request.message, uri.path, uri)))\n .else(e => toResponse(HttpStatus.InternalServerError, toResult(e.message, uri.path, uri)));\n\nexport class AxiosProvider implements RequestProvider {\n constructor(readonly ai: AxiosInstance = axios) {}\n\n execute = ({ uri, verb, body, transform = (r: any) => r, transformError = (r: any) => r, options = RequestOptions.Json }: Request): Promise<Response> =>\n this.ai\n .request({\n url: uri.toString(),\n method: verb.toString() as Method,\n headers: uri.isInternal && isEmpty(options.headers.Authorization) ? options.bearer(ctx.request.jwt).headers : options.headers,\n data: options.type.encode(body),\n maxRedirects: options.requestOptions.maxRedirects,\n ...(options.requestOptions.timeout && { timeout: cacheAge.toMilliseconds(options?.requestOptions.timeout) }),\n ...(options.requestOptions.validateStatus && { validateStatus: options.requestOptions.validateStatus }),\n })\n .then(r => toResponse(r.status, transform(r.data), r.headers))\n .catch(e => Promise.reject(asResponse(uri, verb, transformError(e))));\n}\n","import { FetchOptions, Store, Uri } from '../types';\nimport { HttpVerb, Request, RequestOptions, RequestProvider, Response, toPageOptions } from '../http';\nimport { AxiosProvider } from './AxiosProvider';\n\nexport type RouteOptions = RequestOptions | FetchOptions;\n\nexport class Api {\n constructor(readonly provider: RequestProvider = new AxiosProvider(), protected store?: Store<Response, Request>) {}\n\n get(uri: Uri, options?: RouteOptions, transform?: (r: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri: uri.skip(toPageOptions(options)?.skip).take(toPageOptions(options)?.take),\n verb: HttpVerb.Get,\n transform,\n transformError,\n options: this.options(HttpVerb.Get, options),\n });\n }\n\n post(uri: Uri, body?: unknown, options: RouteOptions = RequestOptions.Json, transform?: (r: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri,\n verb: HttpVerb.Post,\n body,\n transform,\n transformError,\n options: this.options(HttpVerb.Post, options),\n });\n }\n\n put(uri: Uri, body?: unknown, options: RouteOptions = RequestOptions.Json, transform?: (r: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri,\n verb: HttpVerb.Put,\n body,\n transform,\n transformError,\n options: this.options(HttpVerb.Put, options),\n });\n }\n\n patch(uri: Uri, body?: unknown, options: RouteOptions = RequestOptions.Json, transform?: (r: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri,\n verb: HttpVerb.Patch,\n body,\n transform,\n transformError,\n options: this.options(HttpVerb.Patch, options),\n });\n }\n\n delete(uri: Uri, options: RouteOptions = RequestOptions.Json, transform?: (b: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri,\n verb: HttpVerb.Delete,\n transform,\n transformError,\n options: this.options(HttpVerb.Delete, options),\n });\n }\n\n options(verb: HttpVerb, options?: RouteOptions): RequestOptions {\n return options instanceof RequestOptions ? options : RequestOptions.Json;\n }\n\n execute(req: Request): Promise<Response> {\n return this.store ? this.store.execute(req, () => this.provider.execute(req)) : this.provider.execute(req);\n }\n}\n\nexport const api: Api = new Api();\n","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","import { Api, RouteOptions } from './Api';\nimport { Func, Id, Json, JsonValue, List, Optional, PageList, toArray, Uri } from '../types';\nimport { HttpStatus } from '../http';\nimport { ApiGateway } from './ApiGateway';\n\nexport class RouteGateway extends ApiGateway {\n constructor(readonly route: Func<Uri>, readonly routeId: Func<Uri>, readonly api: Api = new Api()) {\n super(api);\n }\n\n all(options?: RouteOptions): Promise<PageList<Json>> {\n return this.get(this.route(), options);\n }\n\n byId(id: Id, options?: RouteOptions): Promise<Optional<Json>> {\n return this.getOne(this.routeId().id(id));\n }\n\n byIds(...ids: Id[]): Promise<List<Json>> {\n return this.get(this.route().ids(toArray(...ids)));\n }\n\n search(q: JsonValue, options?: RouteOptions): Promise<PageList<Json>> {\n return this.get(this.route().query(q), options);\n }\n\n exists(id: Id, options?: RouteOptions): Promise<boolean> {\n return this.get(this.routeId().id(id))\n .then(r => r.length === 1)\n .catch(r => (HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r)));\n }\n\n add(item: Json, options?: RouteOptions): Promise<Json> {\n return this.post(this.route(), item, options);\n }\n\n filter(options?: RouteOptions): Promise<PageList<Json>> {\n return this.postSearch(this.route(), options);\n }\n\n update(item: Json, options?: RouteOptions): Promise<Json> {\n return this.patch(this.routeId().id(item.id), item, options);\n }\n\n upsert(item: Json, options?: RouteOptions): Promise<Json> {\n return this.put(this.routeId().id(item.id), item, options);\n }\n\n remove(id: Id, options?: RouteOptions): Promise<boolean> {\n return this.delete(this.routeId().id(id), options);\n }\n}\n","import { Api } from './Api';\nimport { Func, Json, Optional, PageList, Uri } from '../types';\nimport { Mapper } from '../utils';\nimport { RouteGateway } from './RouteGateway';\nimport { RequestOptions } from '../http';\n\nexport class MappedRouteGateway extends RouteGateway {\n constructor(readonly route: Func<Uri>, readonly routeId: Func<Uri>, readonly map = new Mapper(), readonly api: Api = new Api()) {\n super(route, routeId, api);\n }\n\n get(uri: Uri, options?: RequestOptions): Promise<PageList<Json>> {\n return super.get(uri, options).then(is => is.map(i => this.map.in(i)));\n }\n\n getOne(uri: Uri, options?: RequestOptions): Promise<Optional<Json>> {\n return super\n .get(uri, options)\n .then(is => is.first())\n .then(i => this.map.in(i));\n }\n\n add(item: Json): Promise<Json> {\n return super.add(this.map.out(item));\n }\n\n update(item: Json): Promise<Json> {\n return super.update(this.map.out(item));\n }\n}\n","import { Api } from './Api';\nimport { Func, Json, Optional, PageList, Uri } from '../types';\nimport { view } from '../utils';\nimport { RouteGateway } from './RouteGateway';\nimport { RequestOptions } from '../http';\n\nexport class ViewRouteGateway extends RouteGateway {\n constructor(\n readonly route: Func<Uri>,\n readonly routeId: Func<Uri>,\n readonly views = {\n in: view({}).fromSource,\n out: view({}).fromSource,\n },\n readonly api: Api = new Api()\n ) {\n super(route, routeId, api);\n }\n\n get(uri: Uri, options?: RequestOptions): Promise<PageList<Json>> {\n return super.get(uri, options).then(is => is.map(i => this.views.in.from(i)));\n }\n\n getOne(uri: Uri, options?: RequestOptions): Promise<Optional<Json>> {\n return super\n .get(uri, options)\n .then(is => is.first())\n .then(i => this.views.in.from(i));\n }\n\n add(item: Json): Promise<Json> {\n return super.add(this.views.out.from(item));\n }\n\n update(item: Json): Promise<Json> {\n return super.update(this.views.out.from(item));\n }\n}\n","import { Algorithm, decode, sign, verify } from 'jsonwebtoken';\nimport { ctx, Json, OneOrMore, Optional, tryTo, Validatable, Value } from '../types';\n\ninterface SignOptions {\n audience?: Optional<OneOrMore<string>>;\n issuer?: Optional<string>;\n}\nexport class Jwt extends Value implements Validatable {\n get isValid(): boolean {\n return (\n tryTo(() => ctx.env.get('tokenPublicKey') ?? '')\n .map(key => verify(this.value, key))\n .map(() => true)\n .orElse() ?? false\n );\n }\n\n static sign = (token: Json, options?: SignOptions): Jwt =>\n tryTo(() => ctx.env.get('tokenPrivateKey') ?? '')\n .is.not.empty()\n .map(key =>\n sign(token, key, {\n ...options,\n expiresIn: ctx.env.get('tokenExpiresIn') ?? '1h',\n keyid: ctx.env.get('tokenKeyid') ?? 'easy',\n algorithm: ctx.env.get('tokenAlgorithm', 'RS256') as Algorithm,\n })\n )\n .map(s => new Jwt(s)).value;\n\n static of = (a: { jwt: string }): Jwt => new Jwt(a.jwt);\n\n decode = (): Json => decode(this.value) as Json;\n\n toJSON(): Json {\n return { jwt: this.value };\n }\n}\n","import { isA, isBoolean, isNumber, Text, TypeGuard } from '../types';\nimport { convert, Convert } from '../utils';\n\nexport const quote = (a: unknown): string => (isNumber(a) || isBoolean(a) || isClause(a) ? a.toString() : `'${a as string}'`);\n\nexport class Clause implements Text {\n constructor(readonly first: unknown, readonly operator: string, readonly second: unknown) {}\n\n and = (other: Clause): Clause => new ParathesizedClause(this, 'AND', other);\n or = (other: Clause): Clause => new ParathesizedClause(this, 'OR', other);\n\n toString(): string {\n return `${this.first} ${this.operator} ${quote(this.second)}`;\n }\n}\n\nexport class ParathesizedClause extends Clause {\n toString(): string {\n return `(${this.first} ${this.operator} ${quote(this.second)})`;\n }\n}\n\nexport const toClause = (first: unknown, operator: string, second: unknown, conv: Convert = convert.default): Clause =>\n new Clause(first, operator, conv.from(second));\n\nexport const isClause: TypeGuard<Clause> = (c?: unknown): c is Clause => isA<Clause>(c, 'and', 'or');\n","import { Property, PropertyOptions } from '../utils';\nimport { Clause, toClause } from './Clause';\nimport { Json, JsonValue, ofGet, Text, tryTo } from '../types';\nimport { Table } from './Table';\n\nexport class Column extends Property implements Text {\n constructor(readonly owner: Table, property: string, options?: PropertyOptions) {\n super(property, options);\n }\n\n get count(): Column {\n return this.function('COUNT');\n }\n\n get max(): Column {\n return this.function('MAX');\n }\n\n get min(): Column {\n return this.function('MIN');\n }\n\n get sum(): Column {\n return this.function('SUM');\n }\n\n get average(): Column {\n return this.function('AVG');\n }\n\n get length(): Column {\n return this.function('LEN');\n }\n\n get asc(): OrderColumn {\n return this.format('$col ASC') as OrderColumn;\n }\n\n get desc(): OrderColumn {\n return this.format('$col DESC') as OrderColumn;\n }\n\n in = (source: Json = {}): JsonValue =>\n tryTo(source)\n .map(s => s[this.property] ?? ofGet(this.options?.dflt))\n .map(v => this.options?.convert?.to(v))\n .orElse();\n\n out = (source: Json = {}, key = ''): JsonValue =>\n tryTo(source)\n .map(s => this.options?.convert?.from(s[key]))\n .orElse();\n\n function = (func: string): Column => this.format(`${func}($name)`);\n\n format = (pattern: string): Column => new PatternColumn(this, pattern);\n\n is = (value: unknown): Clause => this.clause('=', value);\n\n not = (value: unknown): Clause => this.clause('<>', value);\n\n like = (value: unknown): Clause => this.clause('LIKE', `%${value}%`);\n\n startsLike = (value: unknown): Clause => this.clause('LIKE', `${value}%`);\n\n endsLike = (value: unknown): Clause => this.clause('LIKE', `%${value}`);\n\n unlike = (value: unknown): Clause => this.clause('NOT LIKE', `%${value}%`);\n\n less = (value: unknown): Clause => this.clause('<', value);\n\n lessEqual = (value: unknown): Clause => this.clause('<=', value);\n\n greater = (value: unknown): Clause => this.clause('>', value);\n\n greaterEqual = (value: unknown): Clause => this.clause('>=', value);\n\n as = (as: string): Column => this.format(`$col AS ${as}`);\n\n toString(): string {\n return `${this.owner}.${this.property}`;\n }\n\n protected clause = (operator: string, value: unknown): Clause => toClause(this, operator, value, this?.options?.convert);\n}\n\nexport class PatternColumn extends Column {\n constructor(protected col: Column, protected pattern: string) {\n super(col.owner, col.property);\n }\n\n toString(): string {\n return this.pattern.replace('$col', this.col.toString()).replace('$table', this.col.owner.toString).replace('$name', this.col.property);\n }\n}\n\nexport class OrderColumn extends PatternColumn {}\n","import { Clause, Join, List, Table, toList } from '../index';\nimport { Query } from '../data';\n\nexport class SqlQuery implements Query {\n constructor(protected table: Table | Join, readonly clauses: List<Clause> = toList()) {}\n\n where = (...clauses: Clause[]): this => {\n this.clauses.add(clauses);\n return this;\n };\n}\n","import { SqlQuery } from './SqlQuery';\nimport { ifGet } from '../types';\n\nexport class Delete extends SqlQuery {\n toString(): string {\n return `DELETE FROM ${this.table}` + ifGet(this.clauses.length, ` WHERE ${this.clauses.join(' AND ')};`, ';');\n }\n}\n","import { SqlQuery } from './SqlQuery';\nimport { Json } from '../types';\nimport { quote } from './Clause';\nimport { Table } from './Table';\n\nexport class Insert extends SqlQuery {\n constructor(protected table: Table, protected fields: Json) {\n super(table);\n }\n\n toString(): string {\n return (\n `INSERT INTO ${this.table} ` +\n `(${Object.keys(this.fields).join(', ')}) OUTPUT INSERTED.* ` +\n `VALUES (${Object.values(this.fields)\n .map(v => quote(v))\n .join(', ')});`\n );\n }\n}\n","import { Column } from './Column';\nimport { Table } from './Table';\n\nexport class Join {\n readonly db;\n constructor(private first: Table, private second: Table, private c?: Column, private c2?: Column) {\n this.db = this.first.db;\n }\n\n on(c: Column, c2: Column): this {\n this.c = c;\n this.c2 = c2;\n return this;\n }\n\n toString(): string {\n return `${this.first} JOIN ${this.second} ON ${this.c} = ${this.c2}`;\n }\n}\n","import { ifGet, List, toList } from '../types';\nimport { Column, OrderColumn } from './Column';\nimport { Join } from './Join';\nimport { SqlQuery } from './SqlQuery';\nimport { Table } from './Table';\n\nexport class Select extends SqlQuery {\n protected ordered: List<OrderColumn> = toList();\n protected grouped: List<Column> = toList();\n protected _top = 0;\n protected _limit = 0;\n protected _offset = 0;\n\n constructor(table: Table | Join, readonly columns: List<Column> = toList()) {\n super(table);\n }\n\n from(t?: Table | Join): this {\n this.table = t ?? this.table;\n return this;\n }\n\n orderBy = (...ordered: OrderColumn[]): this => {\n this.ordered.add(ordered);\n return this;\n };\n\n groupBy(...grouped: Column[]): this {\n this.grouped.add(grouped);\n return this;\n }\n\n top(t: number): this {\n this._top = t;\n return this;\n }\n\n limit(l: number): this {\n this._limit = l;\n return this;\n }\n\n offset(o: number): this {\n this._offset = o;\n return this;\n }\n\n toString(): string {\n return (\n `SELECT ` +\n ifGet(this._top, `TOP ${this._top} `, '') +\n ifGet(this.columns.length, this.columns.join(', '), '*') +\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 ifGet(this.ordered.length, ` ORDERED BY ${this.ordered.join(', ')}`, '') +\n ifGet(this._limit, ` LIMIT ${this._limit}`, '') +\n ifGet(this._offset, ` OFFSET ${this._offset};`, ';')\n );\n }\n}\n","import { SqlQuery } from './SqlQuery';\nimport { ifGet, Json } from '../types';\nimport { toClause } from './Clause';\nimport { Table } from './Table';\n\nexport class Update extends SqlQuery {\n constructor(protected table: Table, protected fields: Json) {\n super(table);\n }\n\n toString(): string {\n return (\n `UPDATE ${this.table} ` +\n `SET ${Object.entries(this.fields)\n .map(([k, v]) => toClause(k, '=', v))\n .join(', ')} ` +\n 'OUTPUT INSERTED.*' +\n ifGet(this.clauses.length, ` WHERE ${this.clauses.join(' AND ')};`, ';')\n );\n }\n}\n","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","import { Column } from './Column';\nimport { MapOptions, Mapper, mappings, PropertyOptions } from '../utils';\nimport { Database } from '../data';\nimport { Json, toList, toUuid } from '../types';\nimport { Select } from './Select';\nimport { Insert } from './Insert';\nimport { Update } from './Update';\nimport { Delete } from './Delete';\nimport { Join } from './Join';\nimport { Count } from './Count';\n\nexport class Table extends Mapper {\n protected readonly map = {\n ...mappings,\n column: <T = unknown>(name: string, options?: PropertyOptions<T>): Column => new Column(this, name, options),\n };\n\n readonly id = this.map.column('', { dflt: toUuid });\n\n constructor(options: MapOptions = { startFrom: 'source' }) {\n super(options);\n }\n\n get db(): Database {\n return Database.Default;\n }\n\n get count(): Count {\n return new Count(this);\n }\n\n /**\n * @deprecated Deprecated since version 6.2. Please use map.column instead.\n */\n prop = <T = unknown>(name: string, options?: PropertyOptions<T>): Column => this.map.column(name, options);\n\n select = (...columns: Column[]): Select => new Select(this, toList(columns));\n\n insert = (fields: Json): Insert => new Insert(this, this.out(fields));\n update = (fields: Json): Update => new Update(this, this.out(fields));\n delete = (): Delete => new Delete(this, toList());\n\n readonly join = (t: Table): Join => new Join(this, t);\n}\n","import { Gateway, Id, isDefined, Json, Optional, PageList, PageOptions, toPageList } from '../types';\nimport { QueryProvider } from '../data';\nimport { when } from '../validation';\nimport { ifDefined } from '../utils';\nimport { Table } from './Table';\n\nexport type TableOptions = PageOptions & { provider?: QueryProvider };\n\nexport class TableGateway<T extends Table> extends Gateway<PageOptions> {\n constructor(readonly table: T, readonly provider = table.db.provide<QueryProvider>()) {\n super();\n }\n\n protected provide = ({ provider }: TableOptions = {}): QueryProvider => provider ?? this.provider;\n\n all(options?: TableOptions): Promise<PageList<Json>> {\n return this.provide(options)\n .query(this.table.select())\n .then(js =>\n toPageList(\n js.map(j => this.table.in(j)),\n options\n )\n );\n }\n\n byId(id: Id, options?: TableOptions): Promise<Optional<Json>> {\n return this.provide(options)\n .query(this.table.select().where(this.table.id.is(id)))\n .then(js => js.first())\n .then(j => ifDefined(j, this.table.in(j)));\n }\n\n exists(id: Id, options?: TableOptions): Promise<boolean> {\n return this.byId(id).then(j => isDefined(j));\n }\n\n add(item: Json, options?: TableOptions): Promise<Json> {\n return this.provide(options)\n .query(this.table.insert(item))\n .then(js => when(js.first()).not.isDefined.reject(`Could not add items with id ${item.id}`))\n .then(j => this.table.in(j));\n }\n\n remove(id: Id, options?: TableOptions): Promise<boolean> {\n return this.provide(options)\n .command(this.table.delete().where(this.table.id.is(id)))\n .then(() => true);\n }\n\n update(item: Json, options?: TableOptions): Promise<Json> {\n return this.provide(options)\n .query(this.table.update(item).where(this.table.id.is(item.id)))\n .then(js => when(js.first()).not.isDefined.reject(`Could not update item with id ${item.id}`))\n .then(j => this.table.in(j));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAA;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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","names":["Join","List","PageList","Results","Table","ToText","optional","valid","o","key","views","resolve","s","valid","template","optional","v","List","a","template","search","ToText","s","name","uuid","days","n","PageList","List","valid","meta","json","Results","name","value","route","name","name","LuxonDateTime","dt","validateEAN","import_validator","email","validateEmail","import_validator","validateIBAN","import_validator","postalCode","import_validator","import_validator","url","validateUrl","name","name","name","name","json","json","view","name","formUrlEncoded","name","validate","meta","uri","toRoute","requires","verb","name","name","name","json","name","s","isResponse","uri","axios","uri","api","uri","route","api","route","api","uri","route","views","api","uri","Join","Table","name","Join"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/types/Is.ts","../src/types/Primitive.ts","../src/types/Func.ts","../src/types/Constructor.ts","../src/types/IsA.ts","../src/types/Get.ts","../src/utils/If.ts","../src/types/Array.ts","../src/types/Text.ts","../src/types/List.ts","../src/types/Object.ts","../src/types/Json.ts","../src/utils/Convert.ts","../src/data/Condition.ts","../src/types/Meta.ts","../src/types/Enum.ts","../src/types/Template.ts","../src/types/Exception.ts","../src/utils/Promise.ts","../src/types/Gateway.ts","../src/validation/When.ts","../src/types/Context.ts","../src/types/Result.ts","../src/types/Results.ts","../src/types/Value.ts","../src/types/Validatable.ts","../src/validation/Validate.ts","../src/types/Try.ts","../src/types/Case.ts","../src/types/PageList.ts","../src/data/InMemoryGateway.ts","../src/data/Database.ts","../src/utils/Property.ts","../src/data/Field.ts","../src/domain/Struct.ts","../src/domain/DateTime.ts","../src/types/IsDate.ts","../src/validation/Contraints.ts","../src/domain/Audit.ts","../src/types/Uuid.ts","../src/types/Id.ts","../src/domain/Child.ts","../src/domain/Entity.ts","../src/types/Repository.ts","../src/domain/Repo.ts","../src/domain/Typo.ts","../src/types/Uri.ts","../src/health/HealthUri.ts","../src/resources/Route.ts","../src/http/HttpStatus.ts","../src/http/ContentType.ts","../src/types/Number.ts","../src/types/CacheAge.ts","../src/http/CacheControl.ts","../src/http/HttpVerb.ts","../src/http/Verb.ts","../src/health/HealthResource.ts","../src/http/HttpHeader.ts","../src/http/OriginatedError.ts","../src/http/RequestOptions.ts","../src/http/Response.ts","../src/http/RestResult.ts","../src/http/toResponse.ts","../src/process/Scope.ts","../src/process/App.ts","../src/process/Search.ts","../src/process/Manage.ts","../src/process/UseCase.ts","../src/resources/Req.ts","../src/resources/Requires.ts","../src/resources/Service.ts","../src/security/Jwt.ts","../src/services/AxiosProvider.ts","../src/services/Api.ts","../src/services/ApiGateway.ts","../src/services/RouteGateway.ts","../src/utils/State.ts","../src/utils/Mapper.ts","../src/services/MappedRouteGateway.ts","../src/utils/Traverse.ts","../src/types/IsEqual.ts","../src/utils/View.ts","../src/services/ViewRouteGateway.ts","../src/sql/Clause.ts","../src/sql/Column.ts","../src/sql/SqlQuery.ts","../src/sql/Delete.ts","../src/sql/Insert.ts","../src/sql/Join.ts","../src/sql/Select.ts","../src/sql/Update.ts","../src/sql/Count.ts","../src/sql/Table.ts","../src/sql/TableGateway.ts","../src/types/Builder.ts","../src/types/Cache.ts","../src/types/Environment.ts","../src/types/Falsy.ts","../src/types/Message.ts","../src/types/Nullish.ts","../src/types/Parser.ts","../src/types/Sort.ts","../src/types/Tag.ts","../src/utils/Base64.ts","../src/utils/Loading.ts","../src/utils/Log.ts","../src/utils/Sentence.ts","../src/utils/Wait.ts"],"sourcesContent":["export * from './data/Condition';\nexport * from './data/InMemoryGateway';\nexport * from './data/Database';\nexport * from './data/DataProvider';\nexport * from './data/Field';\nexport * from './data/Query';\nexport * from './data/QueryProvider';\n\nexport * from './domain/Audit';\nexport * from './domain/Child';\nexport * from './domain/DateTime';\nexport * from './domain/Entity';\nexport * from './domain/Struct';\nexport * from './domain/Repo';\nexport * from './domain/Typo';\n\nexport * from './health/HealthResource';\nexport * from './health/HealthUri';\n\nexport * from './http/CacheControl';\nexport * from './http/ContentType';\nexport * from './http/HttpHeader';\nexport * from './http/HttpStatus';\nexport * from './http/HttpVerb';\nexport * from './http/OriginatedError';\nexport * from './http/Request';\nexport * from './http/RequestOptions';\nexport * from './http/RequestProvider';\nexport * from './http/Response';\nexport * from './http/RestResult';\nexport * from './http/toResponse';\nexport * from './http/Verb';\n\nexport * from './process/App';\nexport * from './process/Manage';\nexport * from './process/Scope';\nexport * from './process/Search';\nexport * from './process/UseCase';\n\nexport * from './resources/AppProvider';\nexport * from './resources/Req';\nexport * from './resources/Requires';\nexport * from './resources/Resource';\nexport * from './resources/Route';\nexport * from './resources/Service';\n\nexport * from './security/Jwt';\n\nexport * from './services/Api';\nexport * from './services/ApiGateway';\nexport * from './services/AxiosProvider';\nexport * from './services/MappedRouteGateway';\nexport * from './services/RouteGateway';\nexport * from './services/ViewRouteGateway';\n\nexport * from './sql/Clause';\nexport * from './sql/Column';\nexport * from './sql/Delete';\nexport * from './sql/Insert';\nexport * from './sql/Join';\nexport * from './sql/SqlQuery';\nexport * from './sql/Select';\nexport * from './sql/Table';\nexport * from './sql/TableGateway';\nexport * from './sql/Update';\n\nexport * from './types/Array';\nexport * from './types/Builder';\nexport * from './types/Cache';\nexport * from './types/CacheAge';\nexport * from './types/Case';\nexport * from './types/Constructor';\nexport * from './types/Context';\nexport * from './types/Enum';\nexport * from './types/Environment';\nexport * from './types/ErrorOrigin';\nexport * from './types/Exception';\nexport * from './types/Falsy';\nexport * from './types/Func';\nexport * from './types/Gateway';\nexport * from './types/Get';\nexport * from './types/Id';\nexport * from './types/Identity';\nexport * from './types/Is';\nexport * from './types/IsA';\nexport * from './types/IsDate';\nexport * from './types/IsEqual';\nexport * from './types/Json';\nexport * from './types/List';\nexport * from './types/Message';\nexport * from './types/Meta';\nexport * from './types/Nullish';\nexport * from './types/Number';\nexport * from './types/Object';\nexport * from './types/PageList';\nexport * from './types/Parser';\nexport * from './types/Primitive';\nexport * from './types/Repository';\nexport * from './types/Result';\nexport * from './types/Results';\nexport * from './types/Sort';\nexport * from './types/Tag';\nexport * from './types/Template';\nexport * from './types/Text';\nexport * from './types/Try';\nexport * from './types/TypeGuard';\nexport * from './types/Types';\nexport * from './types/Uri';\nexport * from './types/Uuid';\nexport * from './types/Validatable';\nexport * from './types/Value';\n\nexport * from './utils/Base64';\nexport * from './utils/Convert';\nexport * from './utils/If';\nexport * from './utils/Loading';\nexport * from './utils/Log';\nexport * from './utils/Mapper';\nexport * from './utils/Promise';\nexport * from './utils/Property';\nexport * from './utils/State';\nexport * from './utils/Sentence';\nexport * from './utils/Traverse';\nexport * from './utils/View';\nexport * from './utils/Wait';\n\nexport * from './validation/Contraints';\nexport * from './validation/Validate';\nexport * from './validation/When';\n","export const isDefined = <T = unknown>(o?: T): o is NonNullable<T> => o !== undefined && o !== null;\n\nexport const isUndefined = (v?: unknown): v is never => v === undefined || v === null;\n\nexport const isEmpty = (o?: unknown): boolean => o === '' || o === null || o === undefined || (isArray(o) && o.length === 0);\n\nexport const isNotEmpty = <T = unknown>(o?: unknown): o is NonNullable<T> => o !== '' && o !== null && o !== undefined && (!isArray(o) || o.length > 0);\n\nexport const isString = (o?: unknown): o is string => o instanceof String || typeof o === 'string';\n\nexport const isIsoDateString = (o?: unknown): o is string =>\n isString(o) && /^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)$/.test(o);\n\nexport const isBoolean = (o?: unknown): o is boolean => isDefined(o) && typeof o === 'boolean';\n\nexport const isTrue = (o?: unknown): o is true => (isFunction(o) ? isTrue(o()) : isBoolean(o) ? o : !!o);\n\nexport const isNumber = (o?: unknown): o is number => isDefined(o) && typeof o === 'number' && !Number.isNaN(o);\n\nexport const isObject = (o?: unknown): o is Record<string, unknown> => o != null && typeof o === 'object' && !isArray(o);\n\nexport const isEmptyObject = (o?: unknown): boolean => isObject(o) && Object.getOwnPropertyNames(o).length === 0;\n\nexport const isFunction = (o?: unknown): o is (...params: unknown[]) => unknown => isDefined(o) && typeof o === 'function';\n\nexport const isArray = <T = any>(o?: unknown): o is Array<T> => isDefined(o) && o instanceof Array;\n\nexport const isIn = (o: unknown, values: unknown[]): boolean => isArray(values) && values.some(v => v === o);\n\nexport const isIntersecting = (o?: unknown[], values?: unknown[]): boolean => isArray(o) && isArray(values) && o.some(ov => isIn(ov, values));\n\nexport const isError = (e: unknown): e is Error => isDefined(e) && e instanceof Error;\n\nexport const isNotPresent = (...os: unknown[]): boolean =>\n os.some(\n o =>\n o === null ||\n o === undefined ||\n o === '' ||\n (o instanceof Array && o.length === 0) ||\n (typeof o === 'object' && Object.getOwnPropertyNames(o).length === 0)\n );\n\nexport const isPresent = (...os: unknown[]): boolean => !isNotPresent(...os);\n","import { isIn } from './Is';\n\nexport type Primitive = string | number | bigint | boolean | symbol | null | undefined;\n\nexport const isPrimitive = (v?: unknown): v is Primitive => {\n return v === null || v === undefined || isIn(typeof v, ['string', 'number', 'bigint', 'boolean', 'symbol']);\n};\n","export type Func<T, Args = unknown> = (...args: Args[]) => T;\n\nexport const isFunc = <T, Args>(o?: unknown): o is (...params: Args[]) => T => !!o && typeof o === 'function';\n","import { Get } from './Get';\nimport { isFunc } from './Func';\nimport { isDefined, isFunction } from './Is';\nimport { isPrimitive } from './Primitive';\nimport { Optional } from './Types';\n\nexport type Constructor<T = unknown> = { new (...args: any[]): T };\n\nexport type Construct<Out, In = any> = Get<Out, In> | Constructor<Out>;\n\nexport const isConstructor = <T>(c?: unknown): c is Constructor<T> => (isDefined(c) && isFunc<T, unknown>(c) && c.prototype && c.prototype.constructor) === c;\n\nexport const isInstance = <T>(ctor: Constructor<T>, o?: unknown): o is T => isFunction(ctor) && o instanceof ctor;\n\nexport const ofConstruct = <T>(c: Construct<T>, ...args: unknown[]): T => (isConstructor<T>(c) ? new c(...args) : isFunc<T, unknown>(c) ? c(...args) : c);\n\nexport const toName = (subject?: unknown, postfix = ''): string => (subject as any)?.constructor?.name?.replace(postfix, '').toLowerCase() ?? '';\n\nconst isPromise = <T>(value: unknown): value is Promise<T> => {\n return value instanceof Promise;\n};\n\nexport const on = <T, R>(t: T, f: (t: T) => R): R extends Promise<unknown> ? Promise<T> : T => {\n const result = f(t);\n return (isPromise(result) ? result.then(() => t) : t) as R extends Promise<unknown> ? Promise<T> : T;\n};\n\nexport const use = <T, Out>(t: T, f: (t: T) => Out): Out => f(t);\n\nexport const ifA = <T>(c: Constructor<T>, t?: unknown, alt?: unknown): Optional<T> => (!isPrimitive(t) && t instanceof c ? t : alt ? ifA(c, alt) : undefined);\n\nexport type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;\n }[Keys];\n","import { isPrimitive } from './Primitive';\nimport { Identity } from './Identity';\nimport { use } from './Constructor';\nimport { isDefined, isObject } from './Is';\n\nexport const isA = <T>(t?: unknown, ...properties: (keyof T)[]): t is T => !isPrimitive(t) && properties.every(p => p.toString() in (t as any));\nexport const isAn = isA;\nexport const isIdentity = (by: unknown): by is Identity => use(by as Identity, b => isObject(b) && isDefined(b.id));\n","import { Func, isFunc } from './Func';\n\nexport type Get<T = any, Args = any> = Func<T, Args> | T;\nexport type Predicate<Args = unknown> = Get<boolean, Args>;\nexport const ofGet = <T, Args = any>(g: Get<T, Args>, ...args: Args[]): T => (isFunc<T, Args>(g) ? g(...args) : g);\nexport const ifGet = <T>(pred: Get, valid: Get<T>, invalid: Get<T>): T => (ofGet(pred) ? ofGet(valid) : ofGet(invalid));\nexport type GetProperty<T, Prop> = keyof T | Func<Prop, T>;\nexport const ofProperty = <T, Prop>(t: T, p: GetProperty<T, Prop>): Prop => (isFunc<Prop, T>(p) ? p(t) : ((t as any)[p] as Prop));\n","import { isDefined, isNotEmpty, isTrue } from '../types/Is';\nimport { Optional } from '../types/Types';\nimport { Construct, ofConstruct } from '../types/Constructor';\n\nexport function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;\nexport function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifTrue<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out> {\n return isTrue(o) ? ofConstruct(f, o) : ofConstruct(alt, o);\n}\n\nexport function ifFalse<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;\nexport function ifFalse<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifFalse<Out, In = unknown>(o: unknown, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out> {\n return !isTrue(o) ? ofConstruct(f, o) : ofConstruct(alt, o);\n}\n\nexport function ifDefined<Out, In = unknown>(o: Optional<In>, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;\nexport function ifDefined<Out, In = unknown>(o: Optional<In>, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifDefined<Out, In = unknown>(o: Optional<In>, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out> {\n return isDefined(o) ? ofConstruct(f, o) : ofConstruct(alt);\n}\n\nexport function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullable<In>>, alt: Construct<Out>): Out;\nexport function ifNotEmpty<Out, In = unknown>(o: In, f?: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullable<In>>, alt?: Construct<Out>): Optional<Out>;\nexport function ifNotEmpty<Out, In = unknown>(o: In, f: Construct<Out, NonNullable<In>> = o => o as Out, alt?: Construct<Out>): Optional<Out> {\n return isNotEmpty(o) ? ofConstruct(f, o) : ofConstruct(alt, o);\n}\n","import { isArray, isDefined } from './Is';\nimport { on, use } from './Constructor';\n\nexport type OneOrMore<T> = T | Array<T>;\nexport type ArrayLike<T> = OneOrMore<T>[];\n\nexport const toArray = <T>(...items: ArrayLike<T>): T[] =>\n items.length > 1 ? (items as T[]) : isArray(items[0]) ? items[0] : isDefined(items[0]) ? [items[0]] : [];\n\nexport const toObject = <T>(key: keyof T, ...items: ArrayLike<T>): Record<string | number | symbol, T> =>\n toArray(...items).reduce((o: any, i) => {\n o[i[key]] = i;\n return o;\n }, {});\n\nexport const array = {\n merge: (first: any[] = [], second: any[] = [], firstKey = 'id', secondKey = 'id'): any[] =>\n first.map(f => ({\n ...f,\n ...second.find(s => isDefined(s[secondKey]) && isDefined(f[firstKey]) && s[secondKey] === f[firstKey]),\n })),\n switch: <T>(items: T[] = [], item: T): T[] =>\n use([...items], res => {\n on(res.indexOf(item), i => (i !== -1 ? res.splice(i, 1) : res.push(item)));\n return res;\n }),\n splitIn: <T>(items: T[] = [], length = 2): T[][] => {\n const res: T[][] = Array.from({ length }, () => []);\n items.forEach((i, index) => res[index % length].push(i));\n return res;\n },\n};\n","import { isDefined } from './Is';\nimport { isFunc } from './Func';\nimport { Get, ofGet } from './Get';\n\nexport type Text = { toString(): string };\n\nexport const isText = (t?: unknown): t is Text => isDefined(t) && isFunc<string, any>((t as any).toString);\n\nexport const asString = (t?: unknown, alt: Get<Text> = ''): string => (isText(t) ? t : ofGet(alt)).toString();\n\nexport const replaceAll = (origin: Text, search: Text, replace: Text = ''): string => asString(origin).split(asString(search)).join(asString(replace));\n\nexport const toWords = (input: unknown): string[] => {\n return asString(input)\n .replace(/(\\p{Lower})(\\p{Upper})/gu, '$1 $2')\n .replace(/(\\p{Upper})(\\p{Upper}\\p{Lower})/gu, '$1 $2')\n .split(/[_\\W]+/g)\n .filter(Boolean);\n};\n\nexport const kebab = (s = ''): string => toWords(s).join('-').toLowerCase();\n","import { ArrayLike, toArray } from './Array';\nimport { Constructor, on } from './Constructor';\nimport type { Json } from './Json';\nimport { isArray, isDefined, isEmpty } from './Is';\nimport { isA } from './IsA';\nimport { Get, GetProperty, ofGet, ofProperty } from './Get';\nimport type { Id } from './Id';\nimport { asString } from './Text';\nimport { Optional } from './Types';\nimport { ifDefined, ifTrue } from '../utils/If';\n\nexport class List<T = unknown> extends Array<T> {\n asc(p: GetProperty<T, any>): List<T> {\n return this.sort((e1, e2) => (ofProperty(e1, p) > ofProperty(e2, p) ? 1 : -1));\n }\n\n desc(p: GetProperty<T, any>): List<T> {\n return this.sort((e1, e2) => (ofProperty(e1, p) < ofProperty(e2, p) ? 1 : -1));\n }\n\n first(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {\n return (p ? this.find(p, params) : this[0]) as T;\n }\n\n firstValue<V>(f: (t: T) => V, alt?: Get<V, T>): Optional<V> {\n return ifDefined(\n this.first(t => !!f(t)),\n f,\n v => ofGet(alt, v)\n );\n }\n\n isFirst(value: T): boolean {\n return value === this.first();\n }\n\n next(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {\n return p ? this[this.findIndex(p, params) + 1] : this[0];\n }\n\n prev(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {\n return p ? this[this.findIndex(p, params) - 1] : this[0];\n }\n\n last(p?: (value: T, index: number, array: T[]) => unknown, params?: unknown): T {\n return p ? this.filter(p, params).last() : this[this.length - 1];\n }\n\n isLast(value: T): boolean {\n return value === this.last();\n }\n\n overlaps(...items: ArrayLike<T>): boolean {\n return toList<T>(...items).some(i => this.some(t => i === t));\n }\n\n diff(others: ArrayLike<T>): List<T> {\n return this.filter(i => !others.includes(i));\n }\n\n diffByKey(others: ArrayLike<T>, key: keyof T): List<T> {\n return this.filter((i: any) => !others.some((o: any) => o[key] === i[key]));\n }\n\n symmetricDiff(others: ArrayLike<T>): List<T> {\n return this.diff(others).concat(toList<T>(...others).diff(this));\n }\n symmetricDiffByKey(others: ArrayLike<T>, key: keyof T): List<T> {\n return this.diffByKey(others, key).concat(toList<T>(...others).diffByKey(this, key));\n }\n\n intersect(others: ArrayLike<T>): List<T> {\n return this.filter(i => others.includes(i));\n }\n\n intersectByKey(others: ArrayLike<T>, key: keyof T): List<T> {\n return this.filter((i: any) => others.some((o: any) => o[key] === i[key]));\n }\n\n toJSON(): Json[] {\n return this.reduce((a, i) => {\n a.push(JSON.parse(JSON.stringify(i ?? {})));\n return a;\n }, new Array<Json>());\n }\n\n map<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): List<U> {\n return toList<U>(super.map(f, params));\n }\n\n flatMap<U, This = unknown>(f: (this: This, value: T, index: number, array: T[]) => ReadonlyArray<U> | U, params?: This): List<U> {\n return toList<U>(super.flatMap(f, params));\n }\n\n mapDefined<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): List<NonNullable<U>> {\n return this.map(f, params).defined();\n }\n\n mapAsync(f: (i: T) => Promise<T>): Promise<List<T>> {\n return Promise.all(super.map(e => f(e))).then(a => toList<T>(a));\n }\n\n distinct(): List<T> {\n return this.filter((i, index) => this.indexOf(i) === index);\n }\n\n distinctByKey(key: keyof T): List<T> {\n return toList([...Object.values<T>(this.toObject(key)), ...Object.values<T>(Object.getPrototypeOf(this.toObject(key)))]);\n }\n\n filter(p: (value: T, index: number, array: T[]) => unknown, params?: unknown): List<T> {\n return toList<T>(super.filter(p, params));\n }\n\n sum(p: (t: T) => number): number {\n return this.reduce((sum: number, i) => sum + p(i), 0);\n }\n\n max(key: keyof T): T {\n return this.desc(key).first();\n }\n\n min(key: keyof T): T {\n return this.asc(key).first();\n }\n\n byId(id: Id): T {\n return this.first(i => asString((i as any).id) === asString(id));\n }\n\n add(...items: ArrayLike<T>): this {\n super.push(...toArray(...items));\n return this;\n }\n\n concat(...items: ConcatArray<T>[]): List<T>;\n concat(...items: (T | ConcatArray<T>)[]): List<T>;\n concat(...items: (T | ConcatArray<T>)[]): List<T> {\n return toList<T>(super.concat(...items));\n }\n\n reverse(): List<T> {\n return toList<T>(super.reverse());\n }\n\n splice(start: number, deleteCount?: number): List<T>;\n splice(start: number, deleteCount: number, ...items: T[]): List<T>;\n splice(start: number, deleteCount: number, ...items: T[]): List<T> {\n return toList<T>(super.splice(start, deleteCount, ...items));\n }\n\n remove(item: T): List<T> {\n const index = this.indexOf(item);\n if (index > -1) {\n this.splice(index, 1);\n }\n return this;\n }\n\n replace(key: keyof T, item: T): List<T> {\n const index = this.findIndex(i => i[key] === item?.[key]);\n ifTrue(index != -1, () => this.splice(index, 1, item));\n return this;\n }\n\n switch(item: T): List<T> {\n return this.includes(item) ? this.remove(item) : this.add(item);\n }\n\n defined(): List<NonNullable<T>> {\n return this.reduce((l, v) => (isDefined(v) ? l.add(v) : l), toList<NonNullable<T>>());\n }\n\n toObject(key: keyof T, options: { deleteKey?: boolean } = {}): Record<string | number | symbol, T> {\n return this.reduce((o: any, i) => {\n o[i[key]] = i;\n if (options.deleteKey) delete o[i[key]][key];\n return o;\n }, {});\n }\n\n toObjectList(key: keyof T): Record<string | number | symbol, List<T>> {\n return this.reduce(\n (a, t) => {\n const k = t[key] as unknown as string | number | symbol;\n a[k] = a[k] ?? toList();\n a[k].push(t);\n return a;\n },\n {} as Record<string | number | symbol, List<T>>\n );\n }\n\n orElse(...alt: ArrayLike<T>): Optional<List<T>> {\n return !isEmpty(this) ? this : !isEmpty(...alt) ? toList<T>(...alt) : undefined;\n }\n\n weave(insertFrom: T[], interval: number): this {\n for (let i = interval, n = 0; i <= this.length && n < insertFrom.length; i += interval + 1) {\n this.splice(i, 0, insertFrom[n++]);\n }\n return this;\n }\n\n slice(start?: number, end?: number): List<T> {\n return toList(super.slice(start, end));\n }\n\n none(p: (t: T) => boolean): boolean {\n return !this.some(p);\n }\n\n chunk(chunkSize: number): List<List<T>> {\n return this.reduce((acc, _, index) => (index % chunkSize === 0 ? on(acc, a => a.push(this.slice(index, index + chunkSize))) : acc), toList<List<T>>());\n }\n}\n\nexport const toList = <T = unknown>(...items: ArrayLike<T>): List<T> => new List<T>().add(...items);\n\nexport const isList = <T>(l?: unknown): l is List<T> => isDefined(l) && isArray(l) && isA<List<T>>(l, 'first', 'last', 'asc', 'desc');\n\nexport const asList = <T>(c: Constructor<T>, items: unknown = []): List<T> => toList<T>(toArray(items).map(i => new c(i)));\n\nexport const maxValue = <T>(l: List<T>, key: keyof T): T[keyof T] | undefined => l.desc(key).first()?.[key];\n\nexport const minValue = <T>(l: List<T>, key: keyof T): T[keyof T] | undefined => l.asc(key).first()?.[key];\n","import { List, toList } from './List';\nimport { ifDefined } from '../utils/If';\n\nexport type Entry<T = unknown> = [key: string, value: T];\n\nexport function entries<T = unknown>(subject: { [p: string]: T } | ArrayLike<T>): List<Entry<T>> {\n return ifDefined(\n subject,\n () => toList<Entry<T>>([...Object.entries(subject), ...Object.entries(Object.getPrototypeOf(subject))] as Entry<T>[]),\n () => toList<Entry<T>>()\n );\n}\n\nexport function values<T = unknown>(subject: { [p: string]: T } | ArrayLike<T>): List<T> {\n return toList([...Object.values<T>(subject), ...Object.values<T>(Object.getPrototypeOf(subject))]);\n}\n","import { isA } from './IsA';\nimport { isEmpty, isObject } from './Is';\nimport { Get, ofGet } from './Get';\nimport { ifDefined } from '../utils/If';\nimport { TypeGuard } from './TypeGuard';\nimport { entries } from './Object';\n\nexport type JsonValue = string | number | boolean | null | Json | JsonValue[];\nexport type Json = { [key: string]: JsonValue };\n\nexport const isJson: TypeGuard<{ toJSON: () => Json }> = (subject?: unknown): subject is { toJSON: () => Json } =>\n isA<{ toJSON: () => Json }>(subject, 'toJSON');\n\nexport const json = {\n parse: <T extends Json = Json>(subject: unknown): T => JSON.parse(JSON.stringify(subject ?? {})),\n merge: (...subjects: unknown[]): Json => json.parse(subjects.map(s => asJson(s, s => json.parse(s))).reduce((js, j) => ({ ...js, ...j }), {})),\n delete: <T extends Json = Json>(subject: T, key: string): T => {\n ifDefined(subject, () => delete (subject as any)[key]);\n return subject;\n },\n set: <T extends Json = Json>(subject: T, key = '', value?: unknown): T =>\n isEmpty(key) ? subject : value !== undefined ? { ...(subject as any), ...{ [key]: value as JsonValue } } : json.delete(subject, key),\n omit: <T extends Json = Json>(subject: T, ...keys: string[]): T => keys.reduce((js, k) => json.delete(js, k), json.parse<T>(subject)),\n defaults: <T extends Json = Json>(options: Partial<T> = {}, defaults: Partial<T> = {}): T => json.merge(defaults, options) as T,\n isSubset: (subject: Json, subset: Json): boolean => !entries(subset).some(([k, v]) => subject[k] !== v),\n};\n\nexport const toJson = json.merge;\n\nexport const asJson = (j?: unknown, alt: Get<Json> = {}): Json => (isJson(j) ? j.toJSON() : isObject(j) ? (j as Json) : ofGet(alt, j));\n\nclass Any<T extends Json> {\n constructor(readonly value: T) {}\n\n merge = (...subjects: T[]): Any<T> => any<T>(json.merge(this.value, ...subjects) as T);\n delete = (key: keyof T): Any<T> => any<T>(json.delete<T>(this.value, key as string));\n omit = (...keys: (keyof T)[]): Any<T> => any<T>(json.omit<T>(this.value, ...(keys as string[])));\n set = (key: keyof T, value?: unknown): Any<T> => any<T>(json.set(this.value, key as string, value));\n\n toJSON(): Json {\n return this.value;\n }\n}\n\nexport const any = <T extends Json = Json>(value: T): Any<T> => new Any<T>(value);\n","import { asString } from '../types/Text';\n\nexport class Convert<From = unknown, To = unknown> {\n constructor(\n public readonly from: (f: From) => To,\n public readonly to: (t: To) => From\n ) {}\n}\n\nexport const convert = {\n default: new Convert<any, any>(\n a => a,\n a => a\n ),\n ignore: new Convert<any, any>(\n () => undefined,\n () => undefined\n ),\n toBool: {\n fromNumber: new Convert<boolean, number>(\n b => (b ? 1 : 0),\n n => n !== 0\n ),\n fromString: new Convert<boolean, string>(\n b => (b ? 'true' : 'false'),\n s => s === 'true'\n ),\n },\n toDate: {\n fromString: new Convert<string, string>(\n s => new Date(s).toISOString(),\n s => s\n ),\n },\n toNumber: {\n fromString: new Convert<number, string>(\n n => asString(n),\n s => parseInt(s)\n ),\n },\n};\n","import { json, Json, JsonValue } from '../types/Json';\nimport { Sort } from '../types/Sort';\nimport { convert, Convert } from '../utils/Convert';\nimport { isDefined } from '../types/Is';\n\nexport class Condition {\n constructor(\n readonly key: string,\n readonly operator: string,\n readonly value: unknown\n ) {}\n\n and = (...others: Condition[]): LogicalCondition => new LogicalCondition('and', [this, ...others]);\n or = (...others: Condition[]): LogicalCondition => new LogicalCondition('or', [this, ...others]);\n\n toJSON(): Json {\n return { [this.key]: { [`$${this.operator}`]: json.parse(this.value) } };\n }\n}\n\nexport class LogicalCondition {\n constructor(\n readonly operator: string,\n readonly conditions: Condition[]\n ) {}\n\n toJSON(): Json {\n return { [`$${this.operator}`]: this.conditions.map(c => c.toJSON()) };\n }\n}\n\nexport class SortCondition extends Condition implements Sort {\n constructor(\n readonly key: string,\n readonly value: -1 | 1\n ) {\n super(key, '', value);\n }\n\n toJSON(): Json {\n return { [this.key]: this.value };\n }\n}\n\nexport const toCondition = (field: string, operator: string, value: unknown, conv: Convert = convert.default): Condition =>\n new Condition(field, operator, conv.from(value) as JsonValue);\n\nexport const isSortCondition = (s?: unknown): s is SortCondition => isDefined(s) && s instanceof SortCondition;\n","import 'reflect-metadata';\nimport { List, toList } from './List';\nimport { isDefined } from './Is';\nimport { on, use } from './Constructor';\nimport { Optional } from './Types';\nimport { Entry, entries, values } from './Object';\n\ntype MetaParseOptions = { initial?: any; skipUndefined?: boolean };\n\nclass ClassMeta {\n constructor(\n readonly subject: any,\n private readonly data: any = (subject.prototype ?? subject).constructor\n ) {}\n\n get = <T>(key: string): T => Reflect.getMetadata(key, this.data) as T;\n\n set = <T>(key: string, value: T): T => {\n Reflect.defineMetadata(key, value, this.data);\n return value;\n };\n\n entries = <T = unknown>(): List<Entry<T>> => entries<T>(this.subject);\n\n parse = <Out, Value>(f: (v: Value) => Out, options: MetaParseOptions = {}): Record<string, Out> => {\n const { initial = {}, skipUndefined = false } = options;\n return this.entries<Value>().reduce((a, [k, val]) => use(f(val), v => (isDefined(v) || !skipUndefined ? on(a, a => (a[k] = v)) : a)), initial);\n };\n\n properties = (key?: string): List<PropertyMeta> =>\n toList([...Object.getOwnPropertyNames(this.subject), ...Object.getOwnPropertyNames(Object.getPrototypeOf(this.subject))])\n .map(p => this.property(p))\n .filter(p => (key ? p.get(key) : p));\n\n keys = <T = any>(key: string): List<T> =>\n this.properties()\n .map(p => p.get<T>(key))\n .reduce((list, u) => (u ? list.add(u) : list), toList<T>());\n\n values = <T = unknown>(): List<T> => values<T>(this.subject);\n\n property = (property: string | symbol): PropertyMeta => new PropertyMeta(this.subject, property);\n}\n\nclass PropertyMeta {\n constructor(\n readonly subject: any,\n readonly property: string | symbol,\n private readonly data = Reflect.getMetadata(property, subject)\n ) {}\n\n get value(): any {\n return this.subject[this.property];\n }\n\n get = <T>(key: string): Optional<T> => (isDefined(this.data) && isDefined(this.data[key]) ? (this.data[key] as T) : undefined);\n\n set = <T>(key: string, value: T): T => {\n Reflect.defineMetadata(this.property, { ...this.data, [key]: value }, this.subject);\n return value;\n };\n}\n\nexport const meta = (subject: unknown): ClassMeta => new ClassMeta(subject ?? {});\n","import { Id } from './Id';\nimport { List, toList } from './List';\nimport { isAn } from './IsA';\nimport { meta } from './Meta';\nimport { isDefined } from './Is';\nimport { Validatable } from './Validatable';\nimport { JsonValue } from './Json';\nimport { Get, ofGet } from './Get';\nimport { TypeGuard } from './TypeGuard';\n\nexport abstract class Enum implements Validatable {\n protected constructor(readonly name: string, readonly id: Id = name.toLowerCase(), readonly code: string = id.toString()) {}\n\n get isValid(): boolean {\n return isDefined(this.id);\n }\n\n static all<E extends Enum>(): List<E> {\n return meta(this.allTuple<E>()).values<E>();\n }\n\n protected static allTuple<E extends Enum>(): Record<Id, E> {\n return meta(this).get(`all-${this.name}`) ?? meta(this).set(`all-${this.name}`, meta(this).values<E>().filter(isEnum).toObject('id'));\n }\n\n static filter<E extends Enum>(p: (value: E, index: number, array: E[]) => unknown, params?: unknown): List<E> {\n return this.all<E>().filter(p, params);\n }\n\n static first<E extends Enum>(p?: (value: E, index: number, array: E[]) => unknown, params?: unknown): E {\n return this.all<E>().first(p, params);\n }\n\n static byIds<E extends Enum>(ids: Id[] = []): List<E> {\n return toList(ids)\n .mapDefined(id => this.byId<E>(id))\n .distinct();\n }\n\n static byId<E extends Enum>(id: Id, alt?: Get<E, unknown>): E {\n return this.allTuple<E>()[id] ?? ofGet(alt);\n }\n\n equals<E extends Enum>(other: E | Id): other is E {\n return this.id === (isEnum(other) ? other.id : other);\n }\n\n isIn<E extends Enum>(...items: E[] | Id[]): boolean {\n return items.some(i => this.equals(i));\n }\n\n toJSON(): JsonValue {\n return this.id;\n }\n\n toString(): string {\n return this.id.toString();\n }\n}\n\nexport const isEnum: TypeGuard<Enum> = (e?: unknown): e is Enum => isDefined(e) && e instanceof Enum && isAn<Enum>(e, 'name', 'id', 'code');\n","import { meta } from './Meta';\nimport { List, toList } from './List';\nimport { asString, replaceAll, Text } from './Text';\nimport { toName } from './Constructor';\nimport { Optional } from './Types';\nimport { Get, ofGet } from './Get';\nimport { isEmpty, isNotEmpty } from './Is';\nimport { JsonValue } from './Json';\n\nexport type TemplateOptions = { type?: Text; property?: Text; actual?: Text; subject?: Text };\n\nexport class Template implements Text {\n constructor(\n private readonly template: string,\n private readonly subject: unknown = {},\n private readonly options = {}\n ) {}\n\n toString = (): string => {\n return meta(this.options)\n .entries()\n .reduce((t, [k]) => this.option(t, k), this.object())\n .replace(' ', ' ');\n };\n\n private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {\n const i1 = tmpl.indexOf(`{${key}`);\n if (i1 < 0) {\n return result;\n }\n const i2 = tmpl.indexOf('}', i1);\n return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));\n };\n\n private readonly object = (): string => {\n return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, textValue(this.subject, p.replace('this.', ''))), this.template);\n };\n\n private readonly option = (tmpl: string, prop: string): string => {\n return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, textValue(this.options, p)), tmpl);\n };\n}\n\nexport function template(tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text {\n return new Template(asString(tmpl), subject, {\n type: toName(subject),\n subject: text(JSON.stringify(subject)),\n ...options,\n });\n}\n\nexport class ToText implements Text {\n constructor(readonly subject: string) {}\n\n get cap(): ToText {\n return this.map(s => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase());\n }\n\n get title(): ToText {\n return this.map(s =>\n s\n .split(' ')\n .map(w => text(w).cap)\n .join(' ')\n );\n }\n\n get pascal(): ToText {\n return this.title.replace(' ', '');\n }\n\n get lower(): ToText {\n return this.map(s => s.toLowerCase());\n }\n\n get upper(): ToText {\n return this.map(s => s.toUpperCase());\n }\n\n get camel(): ToText {\n return this.title.trim.map(s => `${s.charAt(0).toLowerCase()}${s.slice(1)}`);\n }\n\n get kebab(): ToText {\n return this.lower.replace(' ', '-');\n }\n\n get strictKebab(): ToText {\n return this.map(s => s.replace(/[^a-z\\d]+/gi, ' ').trim()).kebab;\n }\n\n get slug(): ToText {\n return this.map(s =>\n s\n .replace(/ß/g, 'ss')\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036F]/g, '')\n .toLowerCase()\n .replace(/[^a-z\\d]+/g, '-')\n .replace(/(^-)|(-$)/g, '')\n );\n }\n\n get snake(): ToText {\n return this.upper.replace(' ', '_');\n }\n\n get plural(): ToText {\n return this.ifLike('') ?? this.add('s');\n }\n\n get space(): ToText {\n return this.map(s => s.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/[_-]/g, ' '));\n }\n\n get sentence(): ToText {\n return this.isEmpty ? this : this.map(s => `${s.charAt(0).toUpperCase()}${s.slice(1)}.`);\n }\n\n get initials(): ToText {\n return this.map(s =>\n s\n .split(' ')\n .map(w => w[0])\n .join('')\n );\n }\n\n get trim(): ToText {\n return this.map(s => s.replace(/[- ,_#]/g, ''));\n }\n\n get isEmpty(): boolean {\n return isEmpty(this.toString());\n }\n\n parse = (subject: unknown, options = {}): ToText => text(template(this.subject, subject, { type: toName(subject), ...options }));\n\n is = (...others: unknown[]): boolean => others.some(o => this.toString() === text(o).toString());\n\n equals = this.is;\n\n isLike = (...others: unknown[]): boolean => others.some(o => this.trim.lower.is(text(o).trim.lower));\n\n ifLike = (...others: unknown[]): Optional<this> => (this.isLike(...others) ? this : undefined);\n\n endsWith = (end?: unknown): boolean => this.subject.endsWith(asString(end));\n\n startsWith = (end?: unknown): boolean => this.subject.startsWith(asString(end));\n\n first = (n: number): ToText => this.map(s => s.substring(0, n));\n\n last = (n: number): ToText => this.map(s => s.substring(s.length - n));\n\n map = (func: Get<string, string>): ToText => text(ofGet(func, this.subject));\n\n replace = (search: Text, replace: Text): ToText => this.map(s => replaceAll(s, search, replace));\n\n add = (add?: unknown, separator = ''): ToText => this.map(s => (isNotEmpty(add) ? `${s}${separator}${text(add)}` : s));\n\n with = (separator: string, ...other: unknown[]): ToText =>\n this.map(s =>\n toList(s)\n .add(...other.map(u => text(u).toString()))\n .filter(s => isNotEmpty(s))\n .join(separator)\n );\n\n toString(): string {\n return this.subject;\n }\n\n toJSON(): JsonValue {\n return this.subject;\n }\n}\n\nexport function text(subject?: unknown, alt = ''): ToText {\n const sub = subject ? asString(subject) : alt;\n return new ToText(sub !== '[object Object]' ? sub : '');\n}\n\nexport function textValue(subject: any, prop: string): string {\n const p = prop.split('.');\n return p\n .splice(1)\n .reduce((t: ToText, s) => (t as any)[s], text(subject?.[p[0]]))\n .toString();\n}\n","import { asString, Text } from './Text';\nimport { Enum } from './Enum';\nimport { isDefined } from './Is';\nimport { Id } from './Id';\nimport { text } from './Template';\n\nexport class Exception extends Enum {\n static readonly AlreadyExists = new Exception('Subject already exists');\n static readonly DoesNotExist = new Exception('Does not exist');\n static readonly IsMissingId = new Exception('Subject is missing an id');\n static readonly IsNotImplemented = new Exception('Is not implemented');\n static readonly IsNotValid = new Exception('Is not valid');\n static readonly Unknown = new Exception('Unknown error');\n\n constructor(\n readonly message: string,\n id?: Id,\n readonly reason?: Text\n ) {\n super(message, id ?? text(message).pascal.toString());\n }\n\n static readonly CouldNotExecute = (target: Text): Exception => new Exception(`Could not execute ${target}.`, 'CouldNotExecute');\n\n static readonly CouldNotValidate = (target: Text): Exception => new Exception(`Could not validate ${target}.`, 'CouldNotValidate');\n\n static readonly EnvironmentVariableNotFound = (variable: Text): Exception =>\n new Exception(`Environment variable ${text(variable).upper} could not be found.`, 'EnvironmentVariableNotFound');\n\n because = (reason: Text): Exception => new Exception(this.message, this.id, reason);\n}\n\nexport const isException = (e?: unknown, t?: Text): e is Exception => e instanceof Exception && (isDefined(t) ? e.equals(asString(t)) : true);\nexport const isDoesNotExist = (e?: unknown): e is Exception => e instanceof Exception && Exception.DoesNotExist.equals(e);\n","import { toArray } from '../types/Array';\nimport { ErrorOrigin } from '../types/ErrorOrigin';\nimport { List, toList } from '../types/List';\n\ntype Pro<A> = A | PromiseLike<A>;\ntype Aw<A> = Awaited<A>;\n\nexport const resolve = <S = unknown>(subject: S | PromiseLike<S>): Promise<S> => Promise.resolve(subject);\nexport const reject = <S = never>(e: ErrorOrigin): Promise<S> => Promise.reject(e);\n\nexport const tuple = {\n 2: <F, S>(first: Pro<F>, second: Pro<S>): Promise<[Aw<F>, Aw<S>]> => Promise.all([first, second]),\n 3: <F, S, T>(first: Pro<F>, second: Pro<S>, third: Pro<T>): Promise<[Aw<F>, Aw<S>, Aw<T>]> => Promise.all([first, second, third]),\n 4: <F, S, T, Fo>(first: Pro<F>, second: Pro<S>, third: Pro<T>, forth: Pro<Fo>): Promise<[Aw<F>, Aw<S>, Aw<T>, Aw<Fo>]> =>\n Promise.all([first, second, third, forth]),\n 5: <F, S, T, Fo, Fi>(first: Pro<F>, second: Pro<S>, third: Pro<T>, forth: Pro<Fo>, fifth: Pro<Fi>): Promise<[Aw<F>, Aw<S>, Aw<T>, Aw<Fo>, Aw<Fi>]> =>\n Promise.all([first, second, third, forth, fifth]),\n all: <F, S>(first: Pro<F>, second: Pro<S>[]): Promise<[Aw<F>, Aw<S[]>]> => Promise.all([first, Promise.all(second)]),\n spread: <F, S>(first: Pro<F>, ...second: Pro<S>[]): Promise<[Aw<F>, Aw<S[]>]> => Promise.all([first, Promise.all(toArray(second))]),\n list: <T>(list: Pro<T>[]): Promise<List<Aw<T>>> => Promise.all([...list]).then(toList),\n};\n\nexport const tuple2 = tuple[2];\nexport const tuple3 = tuple[3];\nexport const tuple4 = tuple[4];\nexport const tuple5 = tuple[5];\n","import { Json, JsonValue } from './Json';\nimport { Id } from './Id';\nimport { Exception } from './Exception';\nimport { PageList, PageOptions } from './PageList';\nimport { List } from './List';\nimport { Optional } from './Types';\nimport { reject } from '../utils/Promise';\n\nexport type FetchOptions = PageOptions;\n\nexport abstract class Gateway<Options = FetchOptions> {\n all(options?: Options): Promise<PageList<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byId(id: Id, options?: Options): Promise<Optional<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n by(_key: string, _value: JsonValue, _options?: Options): Promise<PageList<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byIds(..._ids: Id[]): Promise<List<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n filter(options?: Options): Promise<PageList<Json>> {\n return reject(Exception.IsNotImplemented);\n }\n\n exists(id: Id, options?: Options): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n add(item: Json, options?: Options): Promise<Json> {\n return reject(Exception.IsNotImplemented);\n }\n\n update(item: Json, options?: Options): Promise<Json> {\n return reject(Exception.IsNotImplemented);\n }\n\n remove(id: Id, options?: Options): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n}\n","import { validate } from './Validate';\nimport { Results } from '../types/Results';\nimport { Constructor } from '../types/Constructor';\nimport { Get, ofGet, Predicate } from '../types/Get';\nimport { isDefined, isEmpty, isIn } from '../types/Is';\nimport { toArray } from '../types/Array';\nimport { ErrorOrigin } from '../types/ErrorOrigin';\nimport { reject, resolve } from '../utils/Promise';\nimport { Exception } from '../types/Exception';\n\nexport class When<W> {\n constructor(\n readonly subject: W,\n readonly valid = true,\n private results?: Results\n ) {}\n\n get not(): When<W> {\n return this.clone(!this.valid);\n }\n\n get and(): When<W> {\n return this.clone(this.valid);\n }\n\n get isDefined(): When<W> {\n return this.clone(this.valid === isDefined(this.subject));\n }\n\n get isEmpty(): When<W> {\n return this.clone(this.valid === isEmpty(this.subject));\n }\n\n get isTrue(): When<W> {\n return this.clone(this.valid === !!this.subject);\n }\n\n get isValid(): When<W> {\n this.results = validate(this.subject);\n return this.clone(this.valid === this.results.isValid);\n }\n\n isInstance = <U>(c: Constructor<U>): When<W> => this.clone(this.valid === this.subject instanceof c);\n\n with = (pred: Predicate<W>): When<W> => this.clone(this.valid === ofGet(pred, this.subject));\n\n contains = (property: (w: W) => unknown): When<W> => this.clone(this.valid === isDefined(ofGet(property, this.subject)));\n\n in = (...items: W[]): When<W> => this.clone(this.valid === isIn(this.subject, toArray(...items)));\n\n is = (item: W): When<W> => this.clone(this.valid === (this.subject === item));\n\n reject = (error?: Get<ErrorOrigin, W>): Promise<NonNullable<W>> =>\n !this.valid ? resolve(this.subject as NonNullable<W>) : reject(ofGet(error, this.subject) ?? this.results ?? Exception.Unknown);\n\n recover = (f: (item: W) => W | Promise<W>): Promise<W> => resolve(!this.valid ? this.subject : f(this.subject));\n\n protected clone = (result = true): When<W> => new When(this.subject, result, this.results);\n}\n\nexport const when = <T>(subject: T): When<T> => new When<T>(subject);\n","import { Uuid } from './Uuid';\nimport { Identity } from './Identity';\nimport { Optional } from './Types';\nimport { text } from './Template';\n\nexport interface EnvContext {\n readonly domain: string;\n readonly name: string;\n readonly host: string;\n readonly port: number;\n readonly app: string;\n\n get(key: string, alt?: string): Optional<string>;\n}\n\nexport class DotEnvContext implements EnvContext {\n readonly domain = process.env.DOMAIN ?? 'easy';\n readonly name = process.env.ENVIRONMENT_NAME ?? '';\n readonly host = process.env.HOST ?? '';\n readonly port = Number.parseInt(process.env.PORT ?? '8080');\n readonly app = process.env.APP ?? '';\n\n readonly get = (key: string, alt?: string): Optional<string> => {\n const k = text(key)\n .map(k => k.replace(/([a-z])([A-Z])/g, '$1 $2'))\n .snake.toString();\n return process.env[k] ?? alt;\n };\n}\n\nexport interface RequestContext {\n token?: any;\n identity?: Identity;\n jwt: string;\n correlationId?: Uuid;\n lastError?: string;\n lastErrorStack?: string;\n get<T>(key: string): T;\n set<T>(key: string, value: T): T;\n create: (f: () => void) => void;\n wrap<T>(f: () => Promise<T>): Promise<T>;\n}\n\nexport class BaseRequestContext implements RequestContext {\n private state: any = {};\n\n get token(): any {\n return this.get('token');\n }\n\n set token(token: any) {\n this.set('token', token);\n }\n\n get identity(): Identity {\n return this.token as Identity;\n }\n\n get jwt(): string {\n return this.get('jwt');\n }\n\n set jwt(jwt: string) {\n this.set('jwt', jwt);\n }\n\n get correlationId(): Uuid {\n return this.get('correlationId');\n }\n\n set correlationId(id: Uuid) {\n this.set('correlationId', id);\n }\n\n get lastError(): Optional<string> {\n return this.get('lastError');\n }\n\n set lastError(error: Optional<string>) {\n this.set('lastError', error);\n }\n\n public get<T>(key: string): T {\n return this.state[key] as T;\n }\n\n public set<T>(key: string, value: T): T {\n return (this.state[key] = value);\n }\n\n public readonly create = (f: () => void): void => f();\n\n public readonly wrap = <T>(f: () => Promise<T>): Promise<T> => f();\n}\n\n/**\n * @deprecated Renamed to BaseRequestContext\n */\nexport class BaseContext extends BaseRequestContext {}\n\nexport interface Contexts {\n env?: EnvContext;\n request?: RequestContext;\n other?: any;\n}\n\nexport class Context {\n constructor(protected state: Contexts = {}) {\n this.state = {\n ...{\n env: new DotEnvContext(),\n request: new BaseRequestContext(),\n other: {},\n },\n ...this.state,\n };\n }\n\n get env(): EnvContext {\n return this.state.env as EnvContext;\n }\n\n set env(env: EnvContext) {\n this.state.env = env;\n }\n\n get request(): RequestContext {\n return this.state.request as RequestContext;\n }\n\n set request(request: RequestContext) {\n this.state.request = request;\n }\n\n get other(): any {\n return this.state.other;\n }\n}\n\nexport const ctx = new Context();\n","import { isA } from './IsA';\nimport { Text } from './Text';\nimport { ctx } from './Context';\nimport { TypeGuard } from './TypeGuard';\n\nexport type Result = { message: string; location?: string; domain?: string };\n\nexport const toResult = (message: Text, location?: Text, domain: Text = ctx.env.domain): Result => ({\n message: message.toString(),\n location: location?.toString(),\n domain: domain?.toString(),\n});\n\nexport const isResult: TypeGuard<Result> = (r?: unknown): r is Result => isA<Result>(r, 'message');\n","import { Text } from './Text';\nimport { isResult, Result, toResult } from './Result';\nimport { Validatable } from './Validatable';\nimport { isDefined } from './Is';\nimport { toArray } from './Array';\n\nconst parse = (...rs: (Text | Result)[]): Result[] => toArray(...rs).map(r => (isResult(r) ? r : toResult(r)));\n\nexport class Results implements Validatable {\n public readonly results: Result[];\n\n constructor(...rs: (Text | Result)[]) {\n this.results = parse(...rs);\n }\n\n get length(): number {\n return this.results.length;\n }\n\n get isValid(): boolean {\n return this.results.length === 0;\n }\n\n add = (...rs: (Text | Result)[]): Results => toResults(...this.results, ...parse(...rs));\n}\n\nexport const toResults = (...r: (Text | Result)[]): Results => new Results(...r);\n\nexport const isResults = (r?: unknown): r is Results => isDefined(r) && r instanceof Results;\n","import { Validatable } from './Validatable';\nimport { isDefined } from './Is';\nimport { JsonValue } from './Json';\nimport { asString } from './Text';\n\nexport class Value<V = string> implements Validatable {\n constructor(readonly value: V) {\n this.value = value;\n }\n\n get isValid(): boolean {\n return isDefined(this.value);\n }\n\n toJSON(): JsonValue {\n return this.value as unknown as JsonValue;\n }\n\n toString(): string {\n return asString(this.value);\n }\n}\n\nexport const isValue = (v?: unknown): v is Value => v instanceof Value;\n","import { isA } from './IsA';\nimport { TypeGuard } from './TypeGuard';\n\nexport interface Validatable {\n isValid: boolean;\n}\n\nexport const isValidatable: TypeGuard<Validatable> = (v?: unknown): v is Validatable => isA<Validatable>(v, 'isValid');\n","import { Constraint } from './Contraints';\nimport { when } from './When';\nimport { text } from '../types/Template';\nimport type { TemplateOptions } from '../types/Template';\nimport { isResults, Results, toResults } from '../types/Results';\nimport { toName } from '../types/Constructor';\nimport { toResult } from '../types/Result';\nimport { List, toList } from '../types/List';\nimport { meta } from '../types/Meta';\nimport { isArray, isFunction } from '../types/Is';\nimport { asString } from '../types/Text';\nimport { choose } from '../types/Case';\nimport { isEnum } from '../types/Enum';\nimport { isValue } from '../types/Value';\nimport { isValidatable } from '../types/Validatable';\nimport type { Text } from '../types/Text';\n\nexport type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };\n\nexport const asResults = (subject: unknown, template: Text, options: TemplateOptions = {}): Results =>\n toResults(toResult(text(template).parse(subject, options), toName(subject)));\n\nconst validators = (subject: unknown): List<Validator> =>\n meta(subject)\n .keys<List<Validator>>('constraint')\n .reduce((list, vs) => list.add(vs), toList<Validator>());\n\nconst runValidator = (v: Validator, subject?: unknown): Results => {\n try {\n const actual = isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property];\n const constraint = v.constraint(actual);\n return isResults(constraint) ? constraint : !constraint ? asResults(subject, v.text, { ...v, actual }) : toResults();\n } catch (e) {\n return asResults(subject, asString(e));\n }\n};\n\nconst constraints = (subject?: unknown): Results =>\n validators(subject)\n .map(vs => runValidator(vs, subject))\n .reduce((rs, r) => rs.add(...r.results), toResults());\n\nexport const validate = (subject?: unknown): Results =>\n choose(subject)\n .is.not.defined(\n s => s,\n () => toResults('Subject is not defined.')\n )\n .type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))\n .type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))\n .type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))\n .type(isValidatable, v => constraints(v))\n .else(toResults());\n\nexport const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();\n\nexport const isValid = <T>(t: T): boolean => validate(t).isValid;\n","import { isDefined, isEmpty, isTrue } from './Is';\nimport { validate } from '../validation/Validate';\nimport { Construct, Constructor, ofConstruct } from './Constructor';\nimport { Validatable } from './Validatable';\nimport { Get, ofGet } from './Get';\nimport { Func } from './Func';\nimport { Optional } from './Types';\n\nexport abstract class Try<T = unknown> implements Validatable {\n is = {\n defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isDefined(prop ? prop(v) : v)),\n empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isEmpty(prop ? prop(v) : v)),\n valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => validate(prop ? prop(v) : v).isValid),\n true: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isTrue(prop ? prop(v) : v)),\n false: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isTrue(prop ? prop(v) : v)),\n not: {\n defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isDefined(prop ? prop(v) : v)),\n empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isEmpty(prop ? prop(v) : v)),\n valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !validate(prop ? prop(v) : v).isValid),\n },\n };\n\n if = this.is;\n\n abstract get value(): T;\n\n abstract get error(): Error;\n\n abstract get isValid(): boolean;\n\n static of = <T>(c: Get<T | Try<T>>, ...args: unknown[]): Try<T> => {\n try {\n const out = ofGet(c, ...args);\n return new Success(out instanceof Try ? out.value : out);\n } catch (e) {\n return new Failure(e as Error);\n }\n };\n\n abstract map<U>(f: Func<U | Try<U>, T>): Try<U>;\n\n abstract recover(f: Func<T | Try<T>, Error>): Try<T>;\n\n abstract recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T>;\n\n abstract accept(f: Func<void, T>): Try<T>;\n\n abstract filter(predicate: Func<boolean, T>): Try<T>;\n\n abstract or(value: Get<T>): T;\n\n abstract orElse(value?: Get<T>): Optional<T>;\n\n abstract orThrow(error: Construct<Error>): T;\n}\n\nclass Success<T> extends Try<T> {\n constructor(readonly value: T) {\n super();\n }\n\n get error(): Error {\n throw new Error('No error found');\n }\n\n get isValid(): boolean {\n return true;\n }\n\n map<U>(f: Func<U | Try<U>, T>): Try<U> {\n return tryTo<U>(f, this.value);\n }\n\n recover(f: Func<T | Try<T>, Error>): Try<T> {\n return this;\n }\n\n recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {\n return this;\n }\n\n accept(f: Func<void, T>): Try<T> {\n return tryTo(() => {\n f(this.value);\n return this;\n });\n }\n\n filter(predicate: Func<boolean, T>): Try<T> {\n return tryTo(() => {\n if (predicate(this.value)) return this;\n throw new Error(`Applying filter(${predicate.toString()}) failed.`);\n });\n }\n\n or(value: Get<T>): T {\n return this.value;\n }\n\n orElse(value?: Get<T>): Optional<T> {\n return this.value;\n }\n\n orThrow(_error: Construct<Error>): T {\n return this.value;\n }\n}\n\nclass Failure<T> extends Try<T> {\n constructor(readonly error: Error) {\n super();\n }\n\n get value(): T {\n throw this.error;\n }\n\n get isValid(): boolean {\n return false;\n }\n\n map<U>(f: Func<U | Try<U>, T>): Try<U> {\n return new Failure<U>(this.error);\n }\n\n recover<U>(f: Func<U | Try<U>, Error>): Try<U> {\n return tryTo<U>(f, this.error);\n }\n\n recoverFrom<U>(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {\n return tryTo(() => (this.error instanceof type ? this.recover(f) : this));\n }\n\n accept(f: Func<void, T>): Try<T> {\n return this;\n }\n\n filter(predicate: Func<boolean, T>): Try<T> {\n return this;\n }\n\n or(value: Get<T>): T {\n return ofGet(value);\n }\n\n orElse(value?: Get<T>): Optional<T> {\n return ofGet(value);\n }\n\n orThrow(error: Construct<Error>): T {\n throw ofConstruct(error);\n }\n}\n\nexport const tryTo = <T>(c: Get<T | Try<T>>, ...args: unknown[]) => Try.of<T>(c, ...args);\n","import { Get, ofGet, Predicate } from './Get';\nimport { TypeGuard } from './TypeGuard';\nimport { Func } from './Func';\nimport { isDefined, isEmpty } from './Is';\nimport { validate } from '../validation/Validate';\nimport { tryTo } from './Try';\n\nclass CaseBuilder<V> {\n constructor(readonly v: V) {}\n\n case<T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {\n return new Case<T, V>(this.v).case(pred, out);\n }\n\n type<T, U = unknown>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return new Case<T, V>(this.v).type<U>(guard, out);\n }\n\n equals<T>(value: V, out: Get<T, V>): Case<T, V> {\n return new Case<T, V>(this.v).equals(value, out);\n }\n\n is = {\n defined: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(isDefined(prop(this.v)), out),\n empty: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(isEmpty(prop(this.v)), out),\n valid: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(validate(prop(this.v)).isValid, out),\n not: {\n defined: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!isDefined(prop(this.v)), out),\n empty: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!isEmpty(prop(this.v)), out),\n valid: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!validate(prop(this.v)).isValid, out),\n },\n };\n\n if = this.is;\n}\n\nclass Case<T, V = unknown> {\n constructor(\n protected value: V,\n protected outcome?: T\n ) {}\n\n case(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {\n return tryTo(pred, this.value)\n .is.true()\n .map(() => ofGet(out, this.value))\n .map(res => new Found(this.value, res) as Case<T, V>)\n .or(this);\n }\n\n type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return tryTo(guard, this.value)\n .is.true()\n .map(() => out(this.value as unknown as U))\n .map(res => new Found(this.value, res) as Case<T, V>)\n .or(this);\n }\n\n equals(value: V, out: Get<T, V>): Case<T, V> {\n return this.case(this.value === value, out);\n }\n\n is = {\n defined: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(isDefined(prop(this.value)), out),\n empty: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(isEmpty(prop(this.value)), out),\n valid: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(validate(prop(this.value)).isValid, out),\n not: {\n defined: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!isDefined(prop(this.value)), out),\n empty: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!isEmpty(prop(this.value)), out),\n valid: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!validate(prop(this.value)).isValid, out),\n },\n };\n\n if = this.is;\n\n else(alt: Get<T, V>): T {\n return ofGet<T, V>(alt, this.value);\n }\n}\n\nclass Found<T, V> extends Case<T, V> {\n constructor(\n protected value: V,\n protected outcome: T\n ) {\n super(value, outcome);\n }\n\n case(pred: Predicate<V>, out: Get<T, V>): this {\n return this;\n }\n\n type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n return this;\n }\n\n equals(value: V, out: Get<T, V>): Case<T, V> {\n return this;\n }\n\n is = {\n defined: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n empty: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n valid: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n not: {\n defined: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n empty: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n valid: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n },\n };\n\n if = this.is;\n\n else(alt: Get<T, V>): T {\n return this.outcome;\n }\n}\n\nexport const choose = <V>(value: V) => new CaseBuilder<V>(value);\n","import { isList, List } from './List';\nimport { Construct, ofConstruct } from './Constructor';\nimport { isA } from './IsA';\nimport { PlainSort, Sort } from './Sort';\nimport { GetProperty } from './Get';\nimport { ArrayLike } from './Array';\nimport { Optional } from './Types';\nimport { isNumber } from './Is';\nimport { choose } from './Case';\n\nexport type FilterValue = { label?: string; value: any };\nexport type Filter = { label?: string; field: string; shortField?: string; values: FilterValue[] };\n\nexport const toFilter = (field: string, value: any): Filter => toShortFilter(field, field, value);\nexport const toShortFilter = (field: string, shortField: string, value: any): Filter => ({\n field,\n shortField,\n values: [{ value }],\n});\n\nexport type PageOptions = { take?: number; skip?: number; sort?: Sort[]; sorts?: PlainSort; filters?: Filter[] };\nexport type PageListOptions = Exclude<PageOptions, 'sort'> & { total?: number };\n\nexport class PageList<T> extends List<T> {\n private _options?: PageListOptions;\n\n private setPageOptions(options?: PageListOptions): this {\n this._options = options;\n return this;\n }\n get take(): number {\n return this._options?.take ?? 250;\n }\n\n get skip(): number {\n return this._options?.skip ?? 0;\n }\n\n get total(): Optional<number> {\n return this._options?.total;\n }\n\n get sorts(): Optional<PlainSort> {\n return this._options?.sorts;\n }\n\n get filters(): Optional<Filter[]> {\n return this._options?.filters;\n }\n\n get meta(): PageListOptions {\n return {\n take: this.take,\n skip: this.skip,\n total: this.total,\n sorts: this.sorts,\n filters: this.filters,\n };\n }\n\n get options(): Optional<PageListOptions> {\n return this._options;\n }\n\n asc(p: GetProperty<T, any>): PageList<T> {\n return toPageList(super.asc(p), this);\n }\n\n desc(p: GetProperty<T, any>): PageList<T> {\n return toPageList(super.desc(p), this);\n }\n\n diff(others: ArrayLike<T>): PageList<T> {\n return toPageList(super.diff(others), this);\n }\n\n diffByKey(others: ArrayLike<T>, key: keyof T): PageList<T> {\n return toPageList(super.diffByKey(others, key), this);\n }\n\n intersect(others: ArrayLike<T>): PageList<T> {\n return toPageList(super.intersect(others), this);\n }\n\n intersectByKey(others: ArrayLike<T>, key: keyof T): PageList<T> {\n return toPageList(super.intersectByKey(others, key), this);\n }\n\n map<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): PageList<U> {\n const items = super.map(f, params);\n return toPageList(items, this);\n }\n\n flatMap<U, This = unknown>(f: (this: This, value: T, index: number, array: T[]) => ReadonlyArray<U> | U, params?: This): PageList<U> {\n return toPageList(super.flatMap(f, params), this);\n }\n\n mapDefined<U>(f: (value: T, index: number, array: T[]) => U, params?: unknown): PageList<NonNullable<U>> {\n return toPageList(super.mapDefined(f, params), this);\n }\n\n mapAsync(f: (i: T) => Promise<T>): Promise<PageList<T>> {\n return super.mapAsync(f).then(r => toPageList(r, this));\n }\n\n distinct(): PageList<T> {\n return toPageList(super.distinct(), this);\n }\n\n distinctByKey(key: keyof T): PageList<T> {\n return toPageList(super.distinctByKey(key), this);\n }\n\n filter(p: (value: T, index: number, array: T[]) => unknown, params?: unknown): PageList<T> {\n return toPageList(super.filter(p, params), this);\n }\n\n concat(...items: ConcatArray<T>[]): PageList<T>;\n concat(...items: (T | ConcatArray<T>)[]): PageList<T>;\n concat(...items: (T | ConcatArray<T>)[]): PageList<T> {\n return toPageList(super.concat(...items), this);\n }\n\n reverse(): PageList<T> {\n return toPageList(super.reverse(), this);\n }\n\n splice(start: number, deleteCount?: number): PageList<T>;\n splice(start: number, deleteCount: number, ...items: T[]): PageList<T>;\n splice(start: number, deleteCount: number, ...items: T[]): PageList<T> {\n return toPageList(super.splice(start, deleteCount, ...items), this);\n }\n\n remove(item: T): PageList<T> {\n return toPageList(super.remove(item), this);\n }\n\n replace(key: keyof T, item: T): PageList<T> {\n return toPageList(super.replace(key, item), this);\n }\n\n switch(item: T): PageList<T> {\n return toPageList(super.switch(item), this);\n }\n\n defined(): PageList<NonNullable<T>> {\n return toPageList(super.defined(), this);\n }\n\n orElse(...alt: ArrayLike<T>): Optional<PageList<T>> {\n return toPageList(super.orElse(...alt), this);\n }\n\n slice(start?: number, end?: number): PageList<T> {\n return toPageList(super.slice(start, end), this);\n }\n}\n\nexport const isPageList = <T>(l?: unknown): l is PageList<T> => isList<T>(l) && isA(l, 'total');\n\nexport const toPageList = <T>(items: T[] = [], options?: Omit<PageOptions, 'sort'> & { total?: number }): PageList<T> =>\n (\n choose(items)\n .case(\n i => i.length === 1 && isNumber(i[0]),\n i => new PageList<T>().add(...i)\n )\n .else(i => new PageList<T>(...i)) as any\n ).setPageOptions(options);\n\n/* @deprecated No longer needed as the PageList is now a class that extends from List, use the map function */\nexport const asPageList = <T, U>(c: Construct<T>, items = toPageList<U>()): PageList<T> => items.map(i => ofConstruct(c, i));\n","import { FetchOptions, Gateway } from '../types/Gateway';\nimport { PageList, toPageList } from '../types/PageList';\nimport { Json, JsonValue } from '../types/Json';\nimport { Id } from '../types/Id';\nimport { Optional } from '../types/Types';\nimport { isDefined } from '../types/Is';\nimport { when } from '../validation/When';\nimport { Exception } from '../types/Exception';\n\nexport class InMemoryGateway extends Gateway {\n constructor(private readonly data: Promise<PageList<Json>>) {\n super();\n }\n\n all(options?: FetchOptions): Promise<PageList<Json>> {\n return this.data.then(d => toPageList(d, d));\n }\n\n byId(id: Id): Promise<Optional<Json>> {\n return this.data.then(d => d.byId(id)).then(d => (d ? { ...d } : undefined));\n }\n\n by = (key: string, value: JsonValue): Promise<PageList<Json>> => {\n return this.data.then(d => d.filter(i => i[key] === value));\n };\n\n exists(id: Id): Promise<boolean> {\n return this.byId(id).then(d => isDefined(d));\n }\n\n add(item: Json): Promise<Json> {\n return when(item)\n .not.contains(i => i.id)\n .reject(Exception.IsMissingId)\n .then(i => this.exists(i.id as Id))\n .then(ex => when(ex).isTrue.reject(Exception.AlreadyExists))\n .then(() => this.data.then(d => d.add(item)))\n .then(() => ({ ...item }));\n }\n\n remove(id: Id): Promise<true> {\n return this.data\n .then(d =>\n when(d.findIndex(i => i.id === id))\n .with(i => i < 0)\n .reject(Exception.DoesNotExist)\n .then(i => d.splice(i, 1))\n )\n .then(() => true);\n }\n\n update(item: Json): Promise<Json> {\n return when(item)\n .not.contains(i => i.id)\n .reject(Exception.IsMissingId)\n .then(i => this.remove(i.id as Id).then(() => this.add(i)));\n }\n}\n","import { DataProvider } from './DataProvider';\nimport { Enum } from '../types/Enum';\nimport { Constructor, ofConstruct } from '../types/Constructor';\n\nexport type DatabaseOptions = {\n user?: string;\n password?: string;\n host?: string;\n port?: number;\n cluster?: string;\n connectionString?: string;\n maxPoolSize?: number;\n minPoolSize?: number;\n maxIdleTimeMS?: number;\n};\n\nexport class DefaultProvider implements DataProvider {}\n\nexport class Database extends Enum {\n static readonly Default = new Database('Default', DefaultProvider);\n\n constructor(\n name: string,\n readonly provider: Constructor<DataProvider> | DataProvider,\n readonly options?: DatabaseOptions\n ) {\n super(name);\n }\n\n provide = <P>(): P => ofConstruct(this.provider, this);\n}\n","import { convert, Convert } from './Convert';\nimport { Mapping } from './Mapper';\nimport { Get, ofGet } from '../types/Get';\nimport { Json, JsonValue } from '../types/Json';\n\nexport type PropertyOptions<T = unknown> = {\n convert?: Convert<any, any>;\n dflt?: Get<T>;\n format?: string;\n};\n\nexport class Property<T = unknown> implements Mapping {\n constructor(\n readonly property: string,\n readonly options?: PropertyOptions\n ) {\n this.options = { ...options, convert: options?.convert ?? convert.default };\n }\n\n in = (source: Json = {}): JsonValue => this.options?.convert?.to(source[this.property] ?? ofGet(this.options?.dflt));\n out = (source: Json = {}, key = ''): JsonValue => this.options?.convert?.from(source[key]);\n\n toString() {\n return this.property;\n }\n}\n","import { Condition, SortCondition, toCondition } from './Condition';\nimport { Property } from '../utils/Property';\nimport { toArray } from '../types/Array';\nimport { isDefined } from '../types/Is';\n\nexport class Field extends Property {\n is = (value: unknown): Condition => this.condition('eq', value);\n\n isNot = (value: unknown): Condition => this.condition('ne', value);\n\n isIn = (...value: unknown[]): Condition => this.condition('in', toArray(value));\n\n notIn = (...value: unknown[]): Condition => this.condition('nin', toArray(value));\n\n exists = (does: boolean): Condition => this.condition('exists', does);\n\n greater = (value: unknown): Condition => this.condition('gt', value);\n\n greaterEqual = (value: unknown): Condition => this.condition('gte', value);\n\n less = (value: unknown): Condition => this.condition('lt', value);\n\n lessEqual = (value: unknown): Condition => this.condition('lte', value);\n\n asc = (): SortCondition => new SortCondition(this.property, 1);\n\n desc = (): SortCondition => new SortCondition(this.property, -1);\n\n protected condition = (operator: string, value: unknown): Condition => toCondition(this.property, operator, value, this.options?.convert);\n}\n\nexport const isField = (f?: unknown): f is Field => isDefined(f) && f instanceof Field;\n","import { Validatable } from '../types/Validatable';\nimport { validate } from '../validation/Validate';\nimport { json, Json } from '../types/Json';\nimport { isDefined } from '../types/Is';\n\nexport abstract class Struct implements Validatable {\n constructor(protected readonly state: any = {}) {}\n\n get isValid(): boolean {\n return validate(this).isValid;\n }\n\n toJSON(): Json {\n return json.delete(json.parse({ ...this }), 'state');\n }\n\n toString(): string {\n return this.constructor.name;\n }\n\n update(_add: Json): Struct {\n return this;\n }\n\n protected merge(a: unknown): Json {\n return json.merge(this, a);\n }\n}\n\nexport function isStruct(s?: unknown): s is Struct {\n return isDefined(s) && s instanceof Struct;\n}\n","import { DateTime as LuxonDateTime, DateTimeUnit as LuxonDateTimeUnit, DurationUnit as LuxonDurationUnit, Settings } from 'luxon';\nimport { Value } from '../types/Value';\nimport { Optional } from '../types/Types';\nimport { choose } from '../types/Case';\nimport { isDefined, isNumber, isString } from '../types/Is';\nimport { isDate } from '../types/IsDate';\nimport { isA } from '../types/IsA';\nimport { ifDefined } from '../utils/If';\nimport { JsonValue } from '../types/Json';\n\nSettings.defaultZone = 'utc';\n\nexport type DateTimeUnit = LuxonDateTimeUnit;\nexport type DurationUnit = LuxonDurationUnit;\nexport type Duration = Partial<Record<DurationUnit, number>>;\n\nexport type DiffOptions = {\n rounding: 'floor' | 'ceil' | 'round';\n};\n\nexport class DateTime extends Value<Optional<string>> {\n constructor(value?: string | number | Date | DateTime | null, format?: string) {\n super(\n choose(value)\n .type(isString, v => (format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true })))\n .type(isNumber, v => LuxonDateTime.fromMillis(v))\n .type(isDate, v => LuxonDateTime.fromJSDate(v))\n .type(isDateTime, v => LuxonDateTime.fromISO(v.toString()))\n .else(undefined as unknown as LuxonDateTime)\n ?.toISO() as unknown as string\n );\n }\n\n static get now(): DateTime {\n return new DateTime(LuxonDateTime.utc().toISO());\n }\n\n get isValid(): boolean {\n return isDefined(this.value) && this.utc.isValid;\n }\n\n /**\n * @deprecated Deprecated in favor for DateTime.from as that also accepts locales and another DateTime\n */\n get fromNow(): string {\n return this.from();\n }\n\n protected get utc(): LuxonDateTime {\n return this.luxon.setZone('utc');\n }\n\n protected get luxon(): LuxonDateTime {\n return LuxonDateTime.fromISO(this.value as string, { setZone: true });\n }\n\n from(date?: DateTime): string;\n\n from(locale?: string): string;\n\n from(date?: DateTime, locale?: string): string;\n\n from(param?: string | DateTime, other?: string): string {\n const date: Optional<DateTime> = isA<DateTime>(param) ? param : undefined;\n const locale: string = (isString(param) ? param : undefined) ?? other ?? 'en';\n return ifDefined(\n date,\n d => this.utc.setLocale(locale).toRelative({ base: d.utc }),\n () => this.utc.setLocale(locale).toRelative()\n ) as string;\n }\n\n isAfter(dt: DateTime): boolean {\n return this.utc > dt.utc;\n }\n\n isBefore(dt: DateTime): boolean {\n return this.utc < dt.utc;\n }\n\n equals(dt: DateTime): boolean {\n return this.utc.hasSame(dt.utc, 'millisecond');\n }\n\n add(n: number): DateTime;\n add(n: number, unit: DurationUnit): DateTime;\n add(duration: Duration): DateTime;\n add(n: number | Duration, unit?: DurationUnit): DateTime {\n return new DateTime(this.luxon.plus(isNumber(n) ? { [unit ?? ('day' as string)]: n } : n).toISO());\n }\n\n subtract(n: number): DateTime;\n subtract(n: number, unit: DurationUnit): DateTime;\n subtract(duration: Duration): DateTime;\n subtract(n: number | Duration, unit?: DurationUnit): DateTime {\n return new DateTime(this.luxon.minus(isNumber(n) ? { [unit ?? ('day' as string)]: n } : n).toISO());\n }\n\n diff(other: DateTime, unit: DateTimeUnit = 'day', opts?: DiffOptions): number {\n return Math[opts?.rounding ?? 'floor'](this.utc.diff(other.utc).as(unit));\n }\n\n startOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.startOf(unit).toISO());\n }\n\n endOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.endOf(unit).toISO());\n }\n\n isWeekend(): boolean {\n return this.luxon.isWeekend;\n }\n\n withZone(zone: string): DateTime {\n return new DateTime(this.utc.setZone(zone).toISO());\n }\n\n toString(): string {\n return this.value ?? '';\n }\n\n toJSON(): JsonValue {\n return this.utc.toISO() as unknown as JsonValue;\n }\n\n toFormat(format: string): string {\n return this.luxon.toFormat(format);\n }\n\n toLocale(locale = 'nl-NL', format = 'D'): string {\n return this.luxon.setLocale(locale).toFormat(format);\n }\n\n toFull(locale?: string): string {\n return this.toLocale(locale, 'DDD');\n }\n\n toDate(): Optional<Date> {\n return this.isValid ? this.utc.toJSDate() : undefined;\n }\n}\n\nexport const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;\n\nexport const dt = (dt?: unknown): DateTime => (isString(dt) || isNumber(dt) || dt instanceof Date ? new DateTime(dt) : new DateTime());\n","export const isDate = (o?: unknown): o is Date => o instanceof Date && !isNaN(o.getTime());\n\nexport const days = {\n add: (date: Date, days: number): Date => {\n date.setDate(date.getDate() + days);\n return date;\n },\n today: (): Date => new Date(),\n yesterday: (): Date => days.add(days.today(), -1),\n tomorrow: (): Date => days.add(days.today(), 1),\n};\n\nexport const inPast = (o?: unknown): boolean => isDate(o) && o <= days.today();\n\nexport const inFuture = (o?: unknown): boolean => isDate(o) && o > days.today();\n","import { validate, Validator } from './Validate';\nimport { Func } from '../types/Func';\nimport { Results } from '../types/Results';\nimport { meta } from '../types/Meta';\nimport { List, toList } from '../types/List';\nimport { isBoolean, isDefined, isFunction, isIn, isNotEmpty, isString } from '../types/Is';\nimport { tryTo } from '../types/Try';\nimport { text } from '../types/Template';\nimport { inFuture, inPast } from '../types/IsDate';\nimport type { Text } from '../types/Text';\n\nexport type Constraint = Func<boolean | Results, any>;\n\nexport const constraint =\n <T>(c: Constraint, message: Text): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n const cs = meta(subject).property(property).get<List<Validator>>('constraint') ?? toList<Validator>();\n meta(subject)\n .property(property)\n .set('constraint', cs.add({ property, constraint: c, text: message }));\n };\n\nexport const defined = (message?: Text): PropertyDecorator => constraint(v => isDefined(v), message ?? 'Property {property} must be defined.');\n\nexport const required = (message?: Text): PropertyDecorator =>\n constraint(v => isNotEmpty(v), message ?? 'Property {property} is required, and may not be empty.');\n\nexport const notEmpty = (message?: Text): PropertyDecorator => constraint(v => isNotEmpty(v), message ?? 'Property {property} may not be empty.');\n\nexport const valid = (): PropertyDecorator => constraint(v => validate(v), '');\n\nexport const optional = (): PropertyDecorator => constraint(v => !isDefined(v) || validate(v), '');\n\nexport const includes = (sub: string, message?: string): PropertyDecorator =>\n constraint(s => isDefined(s) && isString(s) && s.includes(sub), message ?? `Value {actual} must include '${sub}'.`);\n\nexport const inList = (values: unknown[], message?: Text): PropertyDecorator =>\n constraint(v => isDefined(v) && isIn(v, values), message ?? 'Value {actual} must appear in list.');\n\nexport const inOptionalList = (values: unknown[], message?: Text): PropertyDecorator =>\n constraint(v => !isDefined(v) || isIn(v, values), message ?? 'Value {actual} must appear in list.');\n\nexport const gt = (limit: number, message?: Text): PropertyDecorator => constraint(v => v > limit, message ?? `Value {actual} must be larger than '${limit}'.`);\n\nexport const gte = (limit: number, message?: Text): PropertyDecorator =>\n constraint(v => v >= limit, message ?? `Value {actual} must be larger than or equal to ${limit}.`);\n\nexport const lt = (limit: number, message?: Text): PropertyDecorator => constraint(v => v < limit, message ?? `Value {actual} must be smaller than ${limit}.`);\n\nexport const lte = (limit: number, message?: Text): PropertyDecorator =>\n constraint(v => v <= limit, message ?? `Value {actual} must be smaller than or equal to ${limit}.`);\n\nexport const past = (message?: Text): PropertyDecorator => constraint(v => inPast(v), message ?? 'Value {actual} must lay in the past.');\n\nexport const future = (message?: Text): PropertyDecorator => constraint(v => inFuture(v), message ?? 'Value {actual} must lay in the future.');\n\nexport const minLength = (length: number, message?: Text): PropertyDecorator =>\n constraint(\n v =>\n tryTo(() => v)\n .is.defined()\n .map(v => text(v).toString().length >= length)\n .orElse(true) as boolean,\n message ?? `Value {actual} must be at least '${length}' characters long.`\n );\n\nexport const maxLength = (length: number, message?: Text): PropertyDecorator =>\n constraint(\n v =>\n tryTo(() => v)\n .is.defined()\n .map(v => text(v).toString().length <= length)\n .orElse(true) as boolean,\n message ?? `Value {actual} cannot be longer than '${length}' characters.`\n );\n\nexport const rule = (message?: Text): PropertyDecorator =>\n constraint(v => (isFunction(v) ? (v() as boolean | Results) : isBoolean(v) ? v : false), message ?? `Value {actual} must be true`);\n","import { Struct } from './Struct';\nimport { DateTime } from './DateTime';\nimport { required, valid } from '../validation/Contraints';\nimport { Identity } from '../types/Identity';\nimport { Json } from '../types/Json';\nimport { choose } from '../types/Case';\nimport { isIdentity } from '../types/IsA';\nimport { ctx } from '../types/Context';\n\nexport class Audit extends Struct {\n @required() readonly by: Identity = { id: this.state.by?.id, user: this.state.by?.user };\n @valid() readonly when: DateTime = new DateTime(this.state.when);\n\n constructor(json?: Json) {\n super(\n choose(json)\n .is.defined(\n j => j,\n j => j\n )\n .else({\n by: isIdentity(ctx.request?.identity) ? ctx.request?.identity : { id: 0, user: 'easy' },\n when: DateTime.now.toJSON(),\n })\n );\n }\n}\n","import { v4 as uuid } from 'uuid';\nimport { isString } from './Is';\n\nconst isValidUuid = new RegExp(/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i);\n\nexport type Uuid = string;\n\nexport const isUuid = (id?: unknown): id is Uuid => isString(id) && isValidUuid.test(id);\n\nexport const toUuid = (): Uuid => uuid();\n","import { toUuid } from './Uuid';\n\nexport type Id = string | number;\nexport type Key = Id;\nexport type Code = Id;\nexport type HasId = { id: Id };\n\nexport const toId = (): Id => toUuid();\n","import { Struct } from './Struct';\nimport { required } from '../validation/Contraints';\nimport { Id, toId } from '../types/Id';\nimport { json, Json } from '../types/Json';\n\nexport abstract class Child extends Struct {\n @required() readonly id: Id = this.state.id ?? toId();\n\n protected merge(a: unknown): Json {\n return json.merge(this, a, { id: this.id });\n }\n}\n","import { Struct } from './Struct';\nimport { Audit } from './Audit';\nimport { required } from '../validation/Contraints';\nimport { Id, toId } from '../types/Id';\nimport { json, Json } from '../types/Json';\n\nexport abstract class Entity extends Struct {\n @required() readonly id: Id = this.state.id ?? toId();\n @required() readonly created: Audit = new Audit(this.state.created);\n @required() readonly lastModified: Audit = new Audit(this.state.lastModified);\n\n protected merge(a: unknown): Json {\n return json.merge(this, a, {\n id: this.id,\n created: this.created,\n lastModified: new Audit(),\n });\n }\n}\n","import { FetchOptions } from './Gateway';\nimport { PageList } from './PageList';\nimport { Exception } from './Exception';\nimport { reject } from '../utils/Promise';\nimport { Id, Key } from './Id';\nimport { List } from './List';\nimport { Json, JsonValue } from './Json';\n\nexport class Repository<T, Options = FetchOptions> {\n all(options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byId(id: Id): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return reject(Exception.IsNotImplemented);\n }\n\n exists(id: Id): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n add(t: T | Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n update(id: Id, json: Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n\n remove(id: Id): Promise<boolean> {\n return reject(Exception.IsNotImplemented);\n }\n\n upsert(id: Id, item: Json): Promise<T> {\n return reject(Exception.IsNotImplemented);\n }\n}\n","import { Struct } from './Struct';\nimport { FetchOptions, Gateway } from '../types/Gateway';\nimport { Repository } from '../types/Repository';\nimport { Constructor } from '../types/Constructor';\nimport { Json, JsonValue, toJson } from '../types/Json';\nimport { isValidatable } from '../types/Validatable';\nimport { PageList } from '../types/PageList';\nimport { Id, Key } from '../types/Id';\nimport { when } from '../validation/When';\nimport { Exception } from '../types/Exception';\nimport { asList, List } from '../types/List';\nimport { reject, resolve } from '../utils/Promise';\n\nexport type RepoAction = 'add' | 'update' | 'remove';\n\nexport class Repo<T extends Struct, Options = FetchOptions> extends Repository<T, Options> {\n constructor(\n protected ctor: Constructor<T>,\n private readonly gateway: Gateway<Options>\n ) {\n super();\n }\n\n create = (item: T | Json): T => (isValidatable(item) ? item : new this.ctor(item));\n\n all(options?: Options): Promise<PageList<T>> {\n return this.gateway.all(options).then(js => js.map(i => new this.ctor(i)));\n }\n\n byId(id: Id): Promise<T> {\n return this.gateway\n .byId(id)\n .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n .then(j => new this.ctor(j));\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.gateway.byIds(...ids).then(j => asList(this.ctor, j));\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.gateway.by('key', key, options).then(js => js.map(i => new this.ctor(i)));\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.by(key.toString(), value, options).then(js => js.map(i => new this.ctor(i)));\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.search(q, options).then(js => js.map(i => new this.ctor(i)));\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.gateway.filter(options).then(js => js.map(i => new this.ctor(i)));\n }\n\n exists(id: Id): Promise<boolean> {\n return this.gateway.exists(id);\n }\n\n add(t: T | Json): Promise<T> {\n return this.extend(this.create(t), 'add')\n .then(i => when(i).not.isValid.reject())\n .then(i => this.validate(i, 'add'))\n .then(i => this.gateway.add(toJson(i)))\n .then(j => new this.ctor(j));\n }\n\n update(id: Id, json: Json): Promise<T> {\n return this.gateway\n .byId(id)\n .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n .then(j => new this.ctor(j).update(json) as T)\n .then(i => this.extend(i, 'update'))\n .then(i => when(i).not.isValid.reject())\n .then(i => this.validate(i, 'update'))\n .then(i => this.gateway.update(toJson(i)))\n .then(j => new this.ctor(j));\n }\n\n remove(id: Id): Promise<boolean> {\n return this.gateway.remove(id);\n }\n\n extend(item: T, _action?: RepoAction): Promise<T> {\n return resolve(item);\n }\n\n validate(item: T, _action?: RepoAction): Promise<T> {\n return resolve(item);\n }\n\n upsert(id: Id, item: Json): Promise<T> {\n return this.update(id, item).catch(e => (Exception.DoesNotExist.equals(e) ? this.add(item) : reject(e)));\n }\n}\n","import { View } from '../utils/View';\nimport { FetchOptions, Gateway } from '../types/Gateway';\nimport { Repository } from '../types/Repository';\nimport { Json, JsonValue } from '../types/Json';\nimport { PageList } from '../types/PageList';\nimport { Id, Key } from '../types/Id';\nimport { when } from '../validation/When';\nimport { Exception } from '../types/Exception';\nimport { List } from '../types/List';\n\nexport class Typo<T, Options = FetchOptions> extends Repository<T, Options> {\n constructor(\n protected view: View<T>,\n private readonly gateway: Gateway<Options>\n ) {\n super();\n }\n\n create = (j: Json): T => this.view.from(j);\n\n all(options?: Options): Promise<PageList<T>> {\n return this.gateway.all(options).then(js => js.map(this.create));\n }\n\n byId(id: Id): Promise<T> {\n return this.gateway\n .byId(id)\n .then(j => when(j).not.isDefined.reject(Exception.DoesNotExist))\n .then(j => this.create(j));\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.gateway.byIds(...ids).then(js => js.map(this.create));\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.gateway.by('key', key, options).then(js => js.map(this.create));\n }\n\n by(key: keyof T, value: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.by(key.toString(), value, options).then(js => js.map(this.create));\n }\n\n search(q: JsonValue, options?: Options): Promise<PageList<T>> {\n return this.gateway.search(q, options).then(js => js.map(this.create));\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.gateway.filter(options).then(js => js.map(j => this.create(j)));\n }\n\n exists(id: Id): Promise<boolean> {\n return this.gateway.exists(id);\n }\n}\n","import { isBoolean, isNotEmpty, isTrue } from './Is';\nimport { asString, Text } from './Text';\nimport { toName } from './Constructor';\nimport { ctx } from './Context';\nimport { List, toList } from './List';\nimport { meta } from './Meta';\nimport { tryTo } from './Try';\nimport { Optional } from './Types';\nimport { OneOrMore, toArray } from './Array';\nimport { entries } from './Object';\n\nexport type Segment = Text & { key?: string; segment?: string; query?: (value: unknown) => string };\n\nexport const toSegment = (\n key?: Text,\n {\n segment,\n query,\n }: {\n segment?: string;\n query?: (value: unknown) => string;\n } = {}\n): Segment => ({\n key: key as string,\n segment,\n query,\n toString: () => asString(key),\n});\n\nexport const uri = {\n host: (key?: string): Segment => toSegment(key, { segment: key ?? ctx.env.host ?? '$host' }),\n resource: (resource: Uri): Segment => toSegment(toName(resource, 'Uri'), { segment: toName(resource, 'Uri') }),\n segment: (key?: Text): Segment => toSegment(key, { segment: key as string }),\n path: (key: Text): Segment => toSegment(key, { segment: `:${key}` }),\n query: (key: Text): Segment =>\n toSegment(key, {\n query: (value: unknown): string =>\n tryTo(value)\n .is.defined()\n .map(v => encodeURIComponent(asString(v)))\n .map(v => `${key}=${v}`)\n .orElse('') ?? '',\n }),\n boolean: (key: Text): Segment => toSegment(key, { query: (value: unknown): string => (isTrue(value) ? `${key}` : '') }),\n};\n\ntype Prop = { segment: Segment; value: any };\n\nconst toRoute = (...segments: Segment[]): string =>\n toList(segments)\n .mapDefined(s => s.segment)\n .join('/');\n\nexport type Uri = {\n id: (id?: unknown) => Uri;\n ids: (ids: OneOrMore<unknown>) => Uri;\n query: (q?: unknown) => Uri;\n sort: (q?: any) => Uri;\n skip: (n?: number) => Uri;\n take: (n?: number) => Uri;\n path: string;\n route: (resource: string) => string;\n isInternal: boolean;\n toString: () => string;\n};\n\nexport type UriExpandProps = { q: string; s: string };\n\nexport class EasyUri<Props = UriExpandProps> implements Uri {\n static readonly id = uri.path('id');\n static readonly ids = uri.query('ids');\n static readonly query = uri.query('q');\n static readonly sort = uri.query('s');\n static readonly skip = uri.query('skip');\n static readonly take = uri.query('take');\n\n readonly host = uri.host();\n protected resource = uri.resource(this);\n\n protected state: any = {};\n\n constructor(readonly segments: Segment[] = []) {}\n\n get path(): string {\n return toRoute(uri.segment(''), this.resource, ...this.segments);\n }\n\n get complete(): string {\n return toRoute(this.host, this.resource, ...this.segments);\n }\n\n get isInternal(): boolean {\n return toRoute(this.host) === (ctx.env.host ?? '$host');\n }\n\n protected get props(): List<Prop> {\n return meta(this.state).values<Prop>();\n }\n\n route = (resource: Optional<string> = this.resource.key): string => toRoute(uri.segment(''), uri.segment(resource?.toLowerCase()), ...this.segments);\n\n set = (segment: Segment, value?: unknown): this => {\n tryTo(value)\n .is.defined()\n .accept(value => (this.state[segment.key ?? ''] = { segment, value }));\n return this;\n };\n\n toString(): string {\n return tryTo(() => this.props)\n .map(ps => ps.filter(p => p.segment?.segment))\n .map(ps => ps.reduce((r: string, p: Prop) => r.replace(asString(p.segment.segment), asString(p.value)), this.complete))\n .map(route => ({\n route,\n query: this.props.mapDefined(p => (p.segment?.query ? p.segment?.query(p.value) : undefined))?.join('&'),\n }))\n .map(({ route, query }) => (isNotEmpty(query) ? `${route}?${query}` : route)).value;\n }\n\n id = (id?: unknown): this => this.set(EasyUri.id, id);\n ids = (ids: OneOrMore<unknown>): this => this.set(EasyUri.ids, toArray(ids).join(','));\n query = (q?: unknown): this => this.set(EasyUri.query, q);\n sort = (s?: any): this => this.set(EasyUri.sort, asString(s));\n\n skip = (index?: number): this => this.set(EasyUri.skip, index);\n take = (items?: number): this => this.set(EasyUri.take, items);\n\n expand(props: Partial<Props>): this {\n return entries(props)\n .filter(([_, v]) => isNotEmpty(v))\n .reduce((u, [k, v]) => (isBoolean(v) ? u.set(uri.boolean(k), v) : u.set(uri.query(k), toArray(v).join(','))), this);\n }\n}\n","import { EasyUri, uri } from '../types/Uri';\n\nexport class HealthUri extends EasyUri {\n static readonly health = uri.segment('health');\n static readonly Health = new HealthUri([HealthUri.health]);\n}\n","import { Req } from './Req';\nimport { Resource } from './Resource';\nimport { RequestHandler } from 'express';\nimport { Uri } from '../types/Uri';\nimport { meta } from '../types/Meta';\nimport { List } from '../types/List';\nimport { Scope } from '../process/Scope';\nimport { UseCase } from '../process/UseCase';\nimport { Verb } from '../http/Verb';\nimport { Optional } from '../types/Types';\nimport { tryTo } from '../types/Try';\n\nexport const route =\n (uri: Uri): ClassDecorator =>\n (subject: unknown): void => {\n meta(subject).set('route', uri);\n };\n\nexport type Endpoint<T = unknown> = (re: Req) => Promise<T | List<T>>;\nexport type RouteRequires = { token: boolean; labCoat: boolean; scope?: Scope; uc?: UseCase };\nexport type Route = { verb: Verb; endpoint: Endpoint; requires: RouteRequires; middleware: RequestHandler[] };\nexport type Routes = { route: Uri; middleware: RequestHandler[]; endpoints: List<Route> };\n\nconst toRoute = (endpoint: Endpoint, requires: RouteRequires, verb?: Verb, middleware?: RequestHandler[]): Optional<Route> =>\n tryTo(verb)\n .is.defined()\n .map(verb => ({ verb, endpoint, requires, middleware: middleware ?? [] }) as Route)\n .orElse();\n\nclass Router implements Routes {\n constructor(readonly resource: Resource) {}\n\n get route(): Uri {\n return meta(this.resource).get('route');\n }\n\n get middleware(): RequestHandler[] {\n return meta(this.resource).get<RequestHandler[]>('middleware') ?? [];\n }\n\n get endpoints(): List<Route> {\n return meta(this.resource)\n .properties('verb')\n .mapDefined(v =>\n toRoute(\n this.resource[v.property],\n {\n labCoat: v.get<boolean>('labCoat') ?? false,\n token: v.get<boolean>('token') ?? false,\n scope: v.get<Scope>('scope'),\n uc: v.get<UseCase>('uc'),\n },\n v.get<Verb>('verb'),\n v.get<RequestHandler[]>('middleware')\n )\n );\n }\n}\n\nexport const routes = (resource: Resource): Routes => new Router(resource);\n","import { Enum } from '../types/Enum';\nimport { TypeGuard } from '../types/TypeGuard';\nimport { isAn } from '../types/IsA';\nimport { Code } from '../types/Id';\n\nexport class HttpStatus extends Enum {\n static Continue = new HttpStatus('Continue', 100);\n static SwitchingProtocols = new HttpStatus('Switching protocols', 101);\n static Processing = new HttpStatus('Processing', 102);\n static EarlyHints = new HttpStatus('Early hints', 103);\n static Ok = new HttpStatus('Ok', 200);\n static Created = new HttpStatus('Created', 201);\n static Accepted = new HttpStatus('Accepted', 202);\n static NonAuthoritativeInformation = new HttpStatus('Non-authoritative information', 203);\n static NoContent = new HttpStatus('No content', 204);\n static ResetContent = new HttpStatus('Reset content', 205);\n static PartialContent = new HttpStatus('Partial content', 206);\n static MultiStatus = new HttpStatus('Multi-status', 207);\n static AlreadyReported = new HttpStatus('Already reported', 208);\n static ImUsed = new HttpStatus('IM used', 226);\n static MultipleChoices = new HttpStatus('Multiple Choices', 300);\n static MovedPermanently = new HttpStatus('Moved Permanently', 301);\n static Found = new HttpStatus('Found', 302);\n static SeeOther = new HttpStatus('See other', 303);\n static NotModified = new HttpStatus('Not modified', 304);\n static UseProxy = new HttpStatus('Use proxy', 305);\n static SwitchProxy = new HttpStatus('Switch proxy', 306);\n static TemporaryRedirect = new HttpStatus('Temporary redirect', 307);\n static PermanentRedirect = new HttpStatus('Permanent redirect', 308);\n static BadRequest = new HttpStatus('Bad request', 400);\n static NotAuthorized = new HttpStatus('Not authorized', 401);\n static PaymentRequired = new HttpStatus('Payment required', 402);\n static Forbidden = new HttpStatus('Forbidden', 403);\n static NotFound = new HttpStatus('Not found', 404);\n static MethodNotAllowed = new HttpStatus('Method not allowed', 405);\n static NotAcceptable = new HttpStatus('Not acceptable', 406);\n static ProxyAuthenticationRequired = new HttpStatus('Proxy authentication required', 407);\n static RequestTimeout = new HttpStatus('Request timeout', 408);\n static Conflict = new HttpStatus('Conflict', 409);\n static Gone = new HttpStatus('Gone', 410);\n static LengthRequired = new HttpStatus('Length required', 411);\n static PreconditionFailed = new HttpStatus('Precondition failed', 412);\n static PayloadTooLarge = new HttpStatus('Payload too large', 413);\n static UriTooLong = new HttpStatus('URI too long', 414);\n static UnsupportedMediaType = new HttpStatus('Unsupported media type', 415);\n static RangeNotSatisfiable = new HttpStatus('Range not satisfiable', 416);\n static ExpectationFailed = new HttpStatus('Expectation failed', 417);\n static ImATeapot = new HttpStatus(\"I'm a teapot\", 418);\n static MisdirectedRequest = new HttpStatus('Misdirected request', 421);\n static UnprocessableEntity = new HttpStatus('Unprocessable entity', 422);\n static Locked = new HttpStatus('Locked', 423);\n static FailedDependency = new HttpStatus('Failed dependency', 424);\n static TooEarly = new HttpStatus('Too early', 425);\n static UpgradeRequired = new HttpStatus('Upgrade required', 426);\n static PreconditionRequired = new HttpStatus('Precondition required', 428);\n static TooManyRequests = new HttpStatus('Too many requests', 429);\n static RequestHeaderFieldsTooLarge = new HttpStatus('Request header fields too large', 431);\n static UnavailableForLegalReasons = new HttpStatus('Unavailable for legal reasons', 451);\n static InternalServerError = new HttpStatus('Internal server error', 500);\n static NotImplemented = new HttpStatus('Not implemented', 501);\n static BadGateway = new HttpStatus('Bad gateway', 502);\n static ServiceUnavailable = new HttpStatus('Service unavailable', 503);\n static GatewayTimeout = new HttpStatus('Gateway timeout', 504);\n static HTTPVersionNotSupported = new HttpStatus('Http version not supported', 505);\n static VariantAlsoNegotiates = new HttpStatus('Variant also negotiates', 506);\n static InsufficientStorage = new HttpStatus('Insufficient storage', 507);\n static LoopDetected = new HttpStatus('Loop detected', 508);\n static NotExtended = new HttpStatus('Not extended', 510);\n static NetworkAuthenticationRequired = new HttpStatus('Network authentication required', 511);\n\n get isError(): boolean {\n return this.isClientError || this.isServerError;\n }\n\n get isClientError(): boolean {\n return (this.id as number) >= 400 && (this.id as number) < 500;\n }\n\n get isServerError(): boolean {\n return (this.id as number) >= 500 && (this.id as number) < 600;\n }\n\n get status(): number {\n return this.id as number;\n }\n}\n\nexport const isHttpStatus: TypeGuard<HttpStatus> = (s?: unknown): s is HttpStatus => isAn<HttpStatus>(s, 'id', 'status');\n\nexport const toHttpStatus = (s: HttpStatus | Code): HttpStatus => (isHttpStatus(s) ? s : HttpStatus.byId(s));\n","import formUrlEncoded from 'form-urlencoded';\nimport { Enum } from '../types/Enum';\nimport { Get, ofGet } from '../types/Get';\nimport { asString } from '../types/Text';\n\nexport class ContentType extends Enum {\n static Form = new ContentType('form', 'application/x-www-form-urlencoded', b => formUrlEncoded(b));\n static Json = new ContentType('json', 'application/json', b => b);\n static Stream = new ContentType('stream', 'application/octet-stream');\n static Text = new ContentType('text', 'text/plain');\n static Xml = new ContentType('xml', 'application/xml');\n\n private constructor(\n name: string,\n readonly type: string,\n protected readonly encoder: Get<string> = b => asString(b)\n ) {\n super(name, type);\n }\n\n encode = (body?: unknown): string => ofGet(this.encoder, body);\n}\n","import { Get, ofGet } from './Get';\nimport { tryTo } from './Try';\nimport { isNumber } from './Is';\nimport { asString } from './Text';\n\nexport const asNumber = (n: unknown, alt?: Get<number>): number =>\n tryTo(() => asString(n))\n .map(s => parseInt(s))\n .filter(n => isNumber(n))\n .or(ofGet(alt) ?? NaN);\n","import { asNumber } from './Number';\nimport { choose } from './Case';\nimport { asString } from './Text';\n\nexport type CacheAge = `${number}${'ms' | 's' | 'm' | 'h' | 'd'}` | number;\n\nconst ageNumber = (s: string): number => asNumber(s.replace(/[a-z]/g, ''));\n\nexport const cacheAge = {\n toMilliseconds: (ca: CacheAge): number =>\n choose(asString(ca))\n .case(\n c => c.endsWith('ms'),\n c => ageNumber(c)\n )\n .case(\n c => c.endsWith('s'),\n c => ageNumber(c) * 1000\n )\n .case(\n c => c.endsWith('m'),\n c => ageNumber(c) * 60 * 1000\n )\n .case(\n c => c.endsWith('h'),\n c => ageNumber(c) * 3600 * 1000\n )\n .case(\n c => c.endsWith('d'),\n c => ageNumber(c) * 24 * 3600 * 1000\n )\n .else(ca as number),\n\n toSeconds: (ca: CacheAge): number =>\n choose(asString(ca))\n .case(\n c => c.endsWith('ms'),\n c => ageNumber(c) / 1000\n )\n .case(\n c => c.endsWith('s'),\n c => ageNumber(c)\n )\n .case(\n c => c.endsWith('m'),\n c => ageNumber(c) * 60\n )\n .case(\n c => c.endsWith('h'),\n c => ageNumber(c) * 3600\n )\n .case(\n c => c.endsWith('d'),\n c => ageNumber(c) * 24 * 3600\n )\n .else(ca as number),\n};\n","import { cacheAge, CacheAge } from '../types/CacheAge';\nimport { on } from '../types/Constructor';\nimport { entries } from '../types/Object';\nimport { ifDefined } from '../utils/If';\nimport { isNumber } from '../types/Is';\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, isNumber(v) ? `${k}=${cacheAge.toSeconds(v)}` : k))\n .join(',');\n }\n}\n","import { Enum } from '../types/Enum';\n\nexport class HttpVerb extends Enum {\n static Get = new HttpVerb('Get');\n static Put = new HttpVerb('Put');\n static Patch = new HttpVerb('Patch');\n static Post = new HttpVerb('Post');\n static Delete = new HttpVerb('Delete');\n\n constructor(name: string) {\n super(name, name.toLowerCase(), name.toUpperCase());\n }\n}\n","import { meta } from '../types/Meta';\nimport { HttpStatus } from './HttpStatus';\nimport { ContentType } from './ContentType';\nimport { CacheControl } from './CacheControl';\nimport { HttpVerb } from './HttpVerb';\n\nexport type VerbOptions = { onOk?: HttpStatus; onNotFound?: HttpStatus; onError?: HttpStatus; type?: ContentType; cache?: CacheControl };\nexport type Verb = { verb: HttpVerb; options: VerbOptions };\n\nexport const toVerbOptions = (options?: VerbOptions): Required<VerbOptions> => ({\n onOk: options?.onOk ?? HttpStatus.Ok,\n onNotFound: options?.onNotFound ?? HttpStatus.NotFound,\n onError: options?.onError ?? HttpStatus.BadRequest,\n type: options?.type ?? ContentType.Json,\n cache: options?.cache ?? CacheControl.disabled(),\n});\n\nconst toVerb =\n <T>(verb: HttpVerb, options?: VerbOptions): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('verb', { verb, options });\n };\n\nexport const get = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Get, options);\n\nexport const search = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Get, { onNotFound: HttpStatus.Ok, ...options });\n\nexport const put = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Put, options);\n\nexport const patch = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Patch, options);\n\nexport const post = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Post, { onOk: HttpStatus.Created, ...options });\n\nexport const del = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Delete, { onOk: HttpStatus.NoContent, ...options });\n\nexport const stream = (options?: VerbOptions): PropertyDecorator => toVerb(HttpVerb.Get, { type: ContentType.Stream, ...options });\n","import { HealthUri } from './HealthUri';\nimport { route } from '../resources/Route';\nimport { Resource } from '../resources/Resource';\nimport { get } from '../http/Verb';\nimport { Json } from '../types/Json';\nimport { resolve } from '../utils/Promise';\n\n@route(HealthUri.Health)\nexport class HealthResource implements Resource {\n @get()\n ok = (): Promise<Json> => resolve({ state: 'Service is healthy.' });\n}\n","export const HttpHeader = {\n ContentType: 'Content-Type',\n Correlation: 'X-Correlation-Id',\n};\n","import { VerbOptions } from './Verb';\nimport { ErrorOrigin } from '../types/ErrorOrigin';\nimport { isError } from '../types/Is';\n\nexport class OriginatedError extends Error {\n constructor(\n readonly origin: ErrorOrigin,\n readonly options?: VerbOptions\n ) {\n super();\n if (isError(origin)) this.stack = origin.stack;\n }\n}\n\nexport const isOriginatedError = (e?: unknown): e is OriginatedError => isError(e) && e instanceof OriginatedError;\n\nexport const toOriginatedError = (e: unknown, options?: VerbOptions): OriginatedError =>\n isOriginatedError(e) ? e : new OriginatedError(e as ErrorOrigin, options);\n","import { HttpHeader } from './HttpHeader';\nimport { ContentType } from './ContentType';\nimport { PageOptions } from '../types/PageList';\nimport { Optional } from '../types/Types';\nimport { Text } from '../types/Text';\nimport { Enum } from '../types/Enum';\nimport { CacheAge } from '../types/CacheAge';\nimport { ctx } from '../types/Context';\nimport { toUuid } from '../types/Uuid';\nimport { Id } from '../types/Id';\nimport { on } from '../types/Constructor';\nimport { asString } from '../types/Text';\nimport { isDefined, isNotEmpty } from '../types/Is';\n\nexport const toPageOptions = (options?: RequestOptions | PageOptions): Optional<PageOptions> =>\n options instanceof RequestOptions ? options.pageOptions : options;\n\nexport class RequestOptions extends Enum {\n public requestOptions: { maxRedirects?: number; validateStatus?: (status: number) => boolean; timeout?: CacheAge } = {};\n\n constructor(\n readonly type: ContentType = ContentType.Json,\n readonly headers: { [key: string]: any } = {},\n public pageOptions?: PageOptions\n ) {\n super(type.name);\n this.headers['Content-Type'] = type.id;\n this.headers[HttpHeader.Correlation] = ctx.request.correlationId ?? toUuid();\n }\n\n static get Form(): RequestOptions {\n return new RequestOptions(ContentType.Form);\n }\n\n static get Json(): RequestOptions {\n return new RequestOptions(ContentType.Json);\n }\n\n static get Stream(): RequestOptions {\n return new RequestOptions(ContentType.Stream);\n }\n\n static get Text(): RequestOptions {\n return new RequestOptions(ContentType.Text);\n }\n\n static get Xml(): RequestOptions {\n return new RequestOptions(ContentType.Xml);\n }\n\n page = (options: PageOptions): this => {\n this.pageOptions = options;\n return this;\n };\n\n authorization = (auth: string): this => this.setHeader('Authorization', auth);\n\n apiKey = (apiKey: string): this => this.setHeader('apiKey', apiKey);\n\n setHeader = (key: Text, value: Id | boolean): this => on(this, t => (t.headers[asString(key)] = value));\n\n setHeaderUnlessPresent = (key: string, value?: Id | boolean): this => (value ? this.setHeader(key, this.headers[key] ?? value) : this);\n\n accept = (type: ContentType): this => this.setHeader('Accept', type.id);\n\n bearer = (jwt: Text): this => {\n return isNotEmpty(jwt) ? this.authorization(`Bearer ${jwt}`) : this;\n };\n\n basic = (username: Text, password: Text): this => {\n const basicAuth = Buffer.from(`${username}:${password}`, 'utf8').toString('base64');\n return this.authorization(`Basic ${basicAuth}`);\n };\n\n maxRedirects = (max?: number): this => {\n this.requestOptions.maxRedirects = max;\n return this;\n };\n\n validateStatus = (validate?: (status: number) => boolean): this => {\n this.requestOptions.validateStatus = validate;\n return this;\n };\n\n timeout = (t?: CacheAge): this => {\n this.requestOptions.timeout = t;\n return this;\n };\n}\n\nexport const isRequestOptions = (o?: unknown): o is RequestOptions => isDefined(o) && o instanceof RequestOptions;\n","import { HttpStatus } from './HttpStatus';\nimport type { RestResult } from './RestResult';\nimport { isA } from '../types/IsA';\nimport { TypeGuard } from '../types/TypeGuard';\n\nexport type Response = {\n status: HttpStatus;\n headers?: { [key: string]: any };\n body: RestResult;\n};\n\nexport const isResponse: TypeGuard<Response> = (r?: unknown): r is Response => isA<Response>(r, 'status', 'body');\n","import { HttpStatus, isHttpStatus } from './HttpStatus';\nimport { isResponse } from './Response';\nimport { List, toList } from '../types/List';\nimport { Json } from '../types/Json';\nimport { isResult, Result, toResult } from '../types/Result';\nimport { isDefined, isError } from '../types/Is';\nimport { choose } from '../types/Case';\nimport { isResults } from '../types/Results';\nimport { Id } from '../types/Id';\n\nexport type RestResult = {\n data?: { code: number; items: List<Json>; itemCount: number; totalItems?: number; meta?: Json };\n error?: { code: number; message: string; errorCount: number; errors: List<Result> };\n};\n\nconst hasErrors = (a: any): a is { error: { code: number; errors: List<Result> } } => isDefined(a?.error?.errors);\nconst hasItems = (a: any): a is { data: { code: number; items: List<Json>; totalItems?: number; meta?: Json } } => isDefined(a?.data.items);\n\nexport const rest = {\n toData: (status: HttpStatus, items: Json[] = [], totalItems?: number, meta?: Json): RestResult => ({\n data: {\n code: status.status,\n items: toList(items),\n itemCount: items.length,\n totalItems,\n meta,\n },\n }),\n toError: (status: HttpStatus, errors: Result[] = [toResult(status.name)]): RestResult => ({\n error: {\n code: status.status,\n message: status.name ?? errors[0].message ?? 'Unknown',\n errors: toList(errors),\n errorCount: errors.length,\n },\n }),\n to: (payload?: any | any[], status?: HttpStatus): RestResult =>\n choose(payload)\n .is.not.defined(p => p, undefined as unknown as RestResult)\n .type(isHttpStatus, h => rest.toError(h ?? status ?? HttpStatus.InternalServerError, [toResult(h.name)]))\n .type(isResult, r => rest.toError(status ?? HttpStatus.BadRequest, [r]))\n .type(isError, e => rest.toError(status ?? HttpStatus.BadRequest, [e]))\n .type(isResults, r => rest.toError(status ?? HttpStatus.BadRequest, r.results))\n .type(isResponse, r => rest.toError(status ?? HttpStatus.byId(r.body.error?.code as Id), r.body.error?.errors))\n .type(hasErrors, e => rest.toError(status ?? HttpStatus.byId(e.error.code, HttpStatus.BadRequest), e.error.errors))\n .type(hasItems, d => rest.toData(status ?? HttpStatus.byId(d.data.code, HttpStatus.Ok), d.data.items, d.data.totalItems, d.data.meta))\n .else(p => rest.toData(status ?? HttpStatus.Ok, toList(p))),\n};\n\nexport const isRestResult = (r: unknown): r is RestResult => isDefined(r) && (isDefined((r as RestResult).data) || isDefined((r as RestResult).error));\n","import { HttpStatus, toHttpStatus } from './HttpStatus';\nimport { rest } from './RestResult';\nimport { Response } from './Response';\nimport { Code } from '../types/Id';\n\nexport function toResponse(status: HttpStatus | Code, body?: unknown, headers?: { [key: string]: any }): Response {\n return {\n status: toHttpStatus(status),\n headers,\n body: rest.to(body),\n };\n}\n","import { Enum } from '../types/Enum';\nimport { text } from '../types/Template';\nimport type { Text } from '../types/Text';\nimport { List, toList } from '../types/List';\nimport { IdName } from '../types/Identity';\nimport { isString } from '../types/Is';\nimport { kebab } from '../types/Text';\n\nexport class Scope extends Enum {\n protected constructor(\n readonly name: string,\n id: Text = text(name).kebab,\n readonly subs: List<Scope> = toList()\n ) {\n super(name, id.toString());\n }\n\n for(item: string | IdName): Scope {\n return new Scope(`${this.name} ${isString(item) ? text(item).title : item.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`));\n }\n\n combines(...scopes: Scope[]): this {\n this.subs.add(scopes);\n return this;\n }\n\n expand(): List<Scope> {\n return this.subs\n .flatMap(s => s.expand())\n .add(this)\n .distinct();\n }\n}\n","import { Scope } from './Scope';\n\nexport class App extends Scope {\n constructor(name: string) {\n super(name);\n }\n\n static readonly Main = new App('Main');\n}\n","import { FetchOptions } from '../types/Gateway';\nimport { Repository } from '../types/Repository';\nimport { PageList, toPageList } from '../types/PageList';\nimport { Id, Key } from '../types/Id';\nimport { List } from '../types/List';\nimport { Req } from '../resources/Req';\nimport { JsonValue } from '../types/Json';\nimport { choose } from '../types/Case';\nimport { resolve } from '../utils/Promise';\n\nexport class Search<T, Options = FetchOptions> {\n constructor(protected repo: Repository<T, Options>) {}\n\n all(options?: Options): Promise<PageList<T>> {\n return this.repo.all(options);\n }\n\n byId(id: Id): Promise<T> {\n return this.repo.byId(id);\n }\n\n byIds(...ids: Id[]): Promise<List<T>> {\n return this.repo.byIds(...ids);\n }\n\n byKey(key: Key, options?: Options): Promise<PageList<T>> {\n return this.repo.byKey(key, options);\n }\n\n query({ query, skip, take }: Req): Promise<PageList<T>> {\n return this.search(query, { skip, take } as Options);\n }\n\n search(query: JsonValue, options?: Options): Promise<PageList<T>> {\n return choose(query)\n .is.not.empty(\n q => q,\n q => this.repo.search(q, options)\n )\n .else(() => resolve(toPageList<T>()));\n }\n\n filter(options?: Options): Promise<PageList<T>> {\n return this.repo.filter(options);\n }\n\n exists(id: Id): Promise<boolean> {\n return this.repo.exists(id);\n }\n}\n","import { Search } from './Search';\nimport { FetchOptions } from '../types/Gateway';\nimport { Json } from '../types/Json';\nimport { Id } from '../types/Id';\n\nexport class Manage<T, Options = FetchOptions> extends Search<T, Options> {\n add(json: Json): Promise<T> {\n return this.repo.add(json);\n }\n\n update(id: Id, json: Json): Promise<T> {\n return this.repo.update(id, json);\n }\n\n upsert(id: Id, json: Json): Promise<T> {\n return this.repo.upsert(id, json);\n }\n\n remove(id: Id): Promise<boolean> {\n return this.repo.remove(id);\n }\n}\n","import { Scope } from './Scope';\nimport { App } from './App';\nimport { Enum } from '../types/Enum';\nimport { text } from '../types/Template';\nimport { kebab, Text } from '../types/Text';\nimport { List, toList } from '../types/List';\nimport { IdName } from '../types/Identity';\nimport { isIn, isString } from '../types/Is';\n\nexport class UseCase extends Enum {\n constructor(\n readonly app: App,\n name: string,\n id: Text = text(name).kebab,\n readonly scopes: List<Scope> = toList<Scope>()\n ) {\n super(name, id.toString());\n }\n\n with(...s: Scope[]): this {\n this.scopes.add(\n ...toList(s)\n .flatMap(s => s.expand())\n .distinct()\n );\n return this;\n }\n\n for(item: string | IdName): UseCase {\n return new UseCase(this.app, `${this.name} ${isString(item) ? item : item?.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`)).with(\n ...this.scopes.map(s => s?.for(item))\n );\n }\n\n static byScopes<U extends UseCase>(...s: Scope[]): List<U> {\n return this.filter(u => u.scopes.some(us => isIn(us, s)));\n }\n}\n","import { PageOptions } from '../types/PageList';\nimport { Optional } from '../types/Types';\nimport { Json, JsonValue } from '../types/Json';\nimport { OneOrMore } from '../types/Array';\nimport { ifDefined } from '../utils/If';\nimport { asNumber } from '../types/Number';\nimport { Id } from '../types/Id';\nimport type { Text } from '../types/Text';\n\nexport class Req<T = unknown> implements Omit<PageOptions, 'sort'> {\n readonly skip: Optional<number>;\n readonly take: Optional<number>;\n constructor(\n readonly path: Json = {},\n readonly query: Json = {},\n readonly body: T,\n readonly headers: Record<string, OneOrMore<string>>\n ) {\n this.skip = ifDefined(query.skip, s => asNumber(s));\n this.take = ifDefined(query.take, t => asNumber(t));\n }\n\n get id(): Id {\n return this.get('id');\n }\n\n get q(): JsonValue {\n return this.get('q');\n }\n\n get = (key: Text): any => this.path[key.toString()] ?? this.query[key.toString()];\n}\n\nexport function toReq<T = unknown>(req: { params?: { id?: unknown }; query?: { q?: unknown }; body?: T; headers?: unknown }): Req {\n return new Req(req.params as Json, req.query as Json, req.body as Json, req.headers as Record<string, OneOrMore<string>>);\n}\n","import { meta } from '../types/Meta';\nimport { Scope } from '../process/Scope';\nimport { UseCase } from '../process/UseCase';\n\nexport class Requires {\n readonly labCoat =\n (): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('labCoat', true);\n };\n\n readonly token =\n (): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('token', true);\n };\n\n readonly scope =\n (scope: Scope): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('token', true);\n meta(subject).property(property).set('scope', scope);\n };\n\n readonly useCase =\n (uc: UseCase): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set('token', true);\n meta(subject).property(property).set('uc', uc);\n };\n}\n\nexport const requires = new Requires();\n","import { AppProvider, Handler } from './AppProvider';\nimport { Resource } from './Resource';\nimport { Enum } from '../types/Enum';\nimport { List, toList } from '../types/List';\nimport { Constructor } from '../types/Constructor';\nimport { tryTo } from '../types/Try';\n\nexport class Service extends Enum {\n protected port = 8080;\n\n constructor(\n readonly name: string,\n protected app: AppProvider,\n protected resources: List<Resource> = toList()\n ) {\n super(name);\n }\n\n pre = (): Handler[] => [];\n post = (): Handler[] => [];\n\n with(...resources: Constructor<Resource>[]): this {\n return tryTo(this).accept(t => t.resources.add(resources.map(r => new r()))).value;\n }\n\n atPort(port: number): this {\n return tryTo(this).accept(t => (t.port = port)).value;\n }\n\n start(message = `Service ${this.name} listening on port ${this.port} with ${this.resources.length} resources.`): void {\n tryTo(this)\n .accept(t => t.pre().forEach(h => this.app.use(h)))\n .accept(t => t.resources.forEach(r => this.app.route(this, r)))\n .accept(t => t.post().forEach(h => this.app.use(h)))\n .accept(t => t.app.listen(this.port, message));\n }\n}\n","import { Algorithm, decode, sign, verify } from 'jsonwebtoken';\nimport { Optional } from '../types/Types';\nimport { OneOrMore } from '../types/Array';\nimport { Value } from '../types/Value';\nimport { Validatable } from '../types/Validatable';\nimport { tryTo } from '../types/Try';\nimport { ctx } from '../types/Context';\nimport { Json } from '../types/Json';\n\ninterface SignOptions {\n audience?: Optional<OneOrMore<string>>;\n issuer?: Optional<string>;\n}\nexport class Jwt extends Value implements Validatable {\n get isValid(): boolean {\n return (\n tryTo(() => ctx.env.get('tokenPublicKey') ?? '')\n .map(key => verify(this.value, key))\n .map(() => true)\n .orElse() ?? false\n );\n }\n\n static sign = (token: Json, options?: SignOptions): Jwt =>\n tryTo(() => ctx.env.get('tokenPrivateKey') ?? '')\n .is.not.empty()\n .map(key =>\n sign(token, key, {\n ...options,\n expiresIn: ctx.env.get('tokenExpiresIn') ?? '1h',\n keyid: ctx.env.get('tokenKeyid') ?? 'easy',\n algorithm: ctx.env.get('tokenAlgorithm', 'RS256') as Algorithm,\n })\n )\n .map(s => new Jwt(s)).value;\n\n static of = (a: { jwt: string }): Jwt => new Jwt(a.jwt);\n\n decode = (): Json => decode(this.value) as Json;\n\n toJSON(): Json {\n return { jwt: this.value };\n }\n}\n","import axios, { AxiosError, AxiosInstance, AxiosResponse, Method } from 'axios';\nimport { toResponse } from '../http/toResponse';\nimport { isDefined, isEmpty } from '../types/Is';\nimport { Uri } from '../types/Uri';\nimport { HttpVerb } from '../http/HttpVerb';\nimport { choose } from '../types/Case';\nimport { isRestResult } from '../http/RestResult';\nimport { toResult } from '../types/Result';\nimport { HttpStatus } from '../http/HttpStatus';\nimport { RequestProvider } from '../http/RequestProvider';\nimport { RequestOptions } from '../http/RequestOptions';\nimport { ctx } from '../types/Context';\nimport { cacheAge } from '../types/CacheAge';\nimport { Response } from '../http/Response';\nimport { Request } from '../http/Request';\n\nconst isResponse = (a: unknown): a is { response: AxiosResponse } => isDefined((a as any)?.response);\nconst isRequest = (a: unknown): a is { request: any } => isDefined((a as any)?.request);\n\nconst asResponse = (uri: Uri, verb: HttpVerb, error: AxiosError): Response =>\n choose(error)\n .type(isResponse, r =>\n toResponse(r.response.status, isRestResult(r.response.data) ? r.response.data : toResult(r.response.statusText, uri.path, uri), r.response.headers)\n )\n .type(isRequest, r => toResponse(r.request.status, toResult(r.request.message, uri.path, uri)))\n .else(e => toResponse(HttpStatus.InternalServerError, toResult(e.message, uri.path, uri)));\n\nexport class AxiosProvider implements RequestProvider {\n constructor(readonly ai: AxiosInstance = axios) {}\n\n execute = ({ uri, verb, body, transform = (r: any) => r, transformError = (r: any) => r, options = RequestOptions.Json }: Request): Promise<Response> =>\n this.ai\n .request({\n url: uri.toString(),\n method: verb.toString() as Method,\n headers: uri.isInternal && isEmpty(options.headers.Authorization) ? options.bearer(ctx.request.jwt).headers : options.headers,\n data: options.type.encode(body),\n maxRedirects: options.requestOptions.maxRedirects,\n ...(options.requestOptions.timeout && { timeout: cacheAge.toMilliseconds(options?.requestOptions.timeout) }),\n ...(options.requestOptions.validateStatus && { validateStatus: options.requestOptions.validateStatus }),\n })\n .then(r => toResponse(r.status, transform(r.data), r.headers))\n .catch(e => Promise.reject(asResponse(uri, verb, transformError(e))));\n}\n","import { AxiosProvider } from './AxiosProvider';\nimport { RequestOptions, toPageOptions } from '../http/RequestOptions';\nimport { FetchOptions } from '../types/Gateway';\nimport { RequestProvider } from '../http/RequestProvider';\nimport { Store } from '../types/Cache';\nimport { Uri } from '../types/Uri';\nimport { HttpVerb } from '../http/HttpVerb';\nimport { Request } from '../http/Request';\nimport { Response } from '../http/Response';\n\nexport type RouteOptions = RequestOptions | FetchOptions;\n\nexport class Api {\n constructor(\n readonly provider: RequestProvider = new AxiosProvider(),\n protected store?: Store<Response, Request>\n ) {}\n\n get(uri: Uri, options?: RouteOptions, transform?: (r: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri: uri.skip(toPageOptions(options)?.skip).take(toPageOptions(options)?.take),\n verb: HttpVerb.Get,\n transform,\n transformError,\n options: this.options(HttpVerb.Get, options),\n });\n }\n\n post(uri: Uri, body?: unknown, options: RouteOptions = RequestOptions.Json, transform?: (r: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri,\n verb: HttpVerb.Post,\n body,\n transform,\n transformError,\n options: this.options(HttpVerb.Post, options),\n });\n }\n\n put(uri: Uri, body?: unknown, options: RouteOptions = RequestOptions.Json, transform?: (r: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri,\n verb: HttpVerb.Put,\n body,\n transform,\n transformError,\n options: this.options(HttpVerb.Put, options),\n });\n }\n\n patch(uri: Uri, body?: unknown, options: RouteOptions = RequestOptions.Json, transform?: (r: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri,\n verb: HttpVerb.Patch,\n body,\n transform,\n transformError,\n options: this.options(HttpVerb.Patch, options),\n });\n }\n\n delete(uri: Uri, options: RouteOptions = RequestOptions.Json, transform?: (b: any) => any, transformError = (r: any) => r): Promise<Response> {\n return this.execute({\n uri,\n verb: HttpVerb.Delete,\n transform,\n transformError,\n options: this.options(HttpVerb.Delete, options),\n });\n }\n\n options(verb: HttpVerb, options?: RouteOptions): RequestOptions {\n return options instanceof RequestOptions ? options : RequestOptions.Json;\n }\n\n execute(req: Request): Promise<Response> {\n return this.store ? this.store.execute(req, () => this.provider.execute(req)) : this.provider.execute(req);\n }\n}\n\nexport const api: Api = new Api();\n","import { Api, RouteOptions } from './Api';\nimport { FetchOptions, Gateway } from '../types/Gateway';\nimport { Uri } from '../types/Uri';\nimport { PageList, toPageList } from '../types/PageList';\nimport { Json } from '../types/Json';\nimport { use } from '../types/Constructor';\nimport { Optional } from '../types/Types';\nimport { RequestOptions } from '../http/RequestOptions';\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","import { Api, RouteOptions } from './Api';\nimport { ApiGateway } from './ApiGateway';\nimport { Func } from '../types/Func';\nimport { Uri } from '../types/Uri';\nimport { PageList } from '../types/PageList';\nimport { Json, JsonValue } from '../types/Json';\nimport { Id } from '../types/Id';\nimport { Optional } from '../types/Types';\nimport { List } from '../types/List';\nimport { toArray } from '../types/Array';\nimport { HttpStatus } from '../http/HttpStatus';\n\nexport class RouteGateway extends ApiGateway {\n constructor(\n readonly route: Func<Uri>,\n readonly routeId: Func<Uri>,\n readonly api: Api = new Api()\n ) {\n super(api);\n }\n\n all(options?: RouteOptions): Promise<PageList<Json>> {\n return this.get(this.route(), options);\n }\n\n byId(id: Id, options?: RouteOptions): Promise<Optional<Json>> {\n return this.getOne(this.routeId().id(id));\n }\n\n byIds(...ids: Id[]): Promise<List<Json>> {\n return this.get(this.route().ids(toArray(...ids)));\n }\n\n search(q: JsonValue, options?: RouteOptions): Promise<PageList<Json>> {\n return this.get(this.route().query(q), options);\n }\n\n exists(id: Id, options?: RouteOptions): Promise<boolean> {\n return this.get(this.routeId().id(id))\n .then(r => r.length === 1)\n .catch(r => (HttpStatus.NotFound.equals(r.status) ? false : Promise.reject(r)));\n }\n\n add(item: Json, options?: RouteOptions): Promise<Json> {\n return this.post(this.route(), item, options);\n }\n\n filter(options?: RouteOptions): Promise<PageList<Json>> {\n return this.postSearch(this.route(), options);\n }\n\n update(item: Json, options?: RouteOptions): Promise<Json> {\n return this.patch(this.routeId().id(item.id), item, options);\n }\n\n upsert(item: Json, options?: RouteOptions): Promise<Json> {\n return this.put(this.routeId().id(item.id), item, options);\n }\n\n remove(id: Id, options?: RouteOptions): Promise<boolean> {\n return this.delete(this.routeId().id(id), options);\n }\n}\n","import { Construct, ofConstruct } from '../types/Constructor';\n\nexport class State {\n constructor(protected readonly state: any = {}) {}\n\n protected get = <T>(key: string, alt?: Construct<T>): T => this.state[key] ?? (this.state[key] = ofConstruct(alt));\n protected set = <T>(key: string, value: Construct<T>): T => this.get(key, value);\n}\n","import { Property, PropertyOptions } from './Property';\nimport { State } from './State';\nimport { ifNotEmpty } from './If';\nimport { json, Json, JsonValue } from '../types/Json';\nimport { Optional } from '../types/Types';\nimport { TypeGuard } from '../types/TypeGuard';\nimport { isA } from '../types/IsA';\nimport { List, toList } from '../types/List';\nimport { meta } from '../types/Meta';\nimport { isEmpty } from '../types/Is';\nimport { Get, ofGet } from '../types/Get';\nimport { Construct, ofConstruct } from '../types/Constructor';\n\nexport type Mapping = {\n property: string;\n in: (source?: Json, key?: string) => Optional<JsonValue>;\n out: (source?: Json, key?: string) => Optional<JsonValue>;\n};\nexport const isMapping: TypeGuard<Mapping> = (m?: unknown): m is Mapping => isA<Mapping>(m, 'in', 'out');\n\nexport type MapStartFrom = 'scratch' | 'source';\nexport type MapOptions = { startFrom: MapStartFrom };\n\nexport class Mapper extends State implements Mapping {\n protected readonly map = mappings;\n\n constructor(\n readonly options: MapOptions = { startFrom: 'scratch' },\n readonly property = ''\n ) {\n super();\n }\n\n // All properties that are a mapping\n get properties(): List<[string, Mapping]> {\n return this.get('props', () =>\n meta(this)\n .entries<Mapping>()\n .filter(([, v]) => isMapping(v))\n );\n }\n\n // All names of properties (in target) that have a Mapping\n get keys(): List<string> {\n return this.get('keys', () => this.properties.map(([k]) => k));\n }\n\n // All names of properties (in source) that are named in a Mapping\n get columns(): List<string> {\n return this.get('columns', () => this.properties.mapDefined(([, p]) => ifNotEmpty(p.property, p.property))).distinct();\n }\n\n // All names of properties (in source) that are NOT properties in target\n private get droppedIn(): List<string> {\n return this.get('droppedIn', () => this.columns.filter(c => !this.keys.some(k => k === c)));\n }\n\n // All names op properties (in target) that are NOT properties in source\n private get droppedOut(): List<string> {\n return this.get('droppedOut', () => this.properties.filter(([, p]) => !this.keys.some(k => k === p.property ?? '')).map(([k]) => k));\n }\n\n public in(from: Json = {}): Json {\n return json.omit(\n this.properties.reduce((a, [k, p]) => json.merge(a, { [k]: p.in({ ...a, ...from }) }), this.options.startFrom === 'source' ? from : {}),\n ...this.droppedIn\n );\n }\n\n public out(to: Json = {}): Json {\n return json.omit(\n this.properties.reduce(\n (a, [k, p]) => json.merge(a, isEmpty(p.property) ? p.out(to, k) : { [p.property ?? '']: p.out({ ...a, ...to }, k) }),\n this.options.startFrom === 'source' ? to : {}\n ),\n ...this.droppedOut\n );\n }\n\n toString(): string {\n return this.constructor.name;\n }\n}\n\nexport const mappings = {\n item: (property: string, options?: PropertyOptions): Property => new Property(property, options),\n ignore: (property = ''): Mapping => ({\n property,\n in: (): Optional<JsonValue> => undefined,\n out: (): Optional<JsonValue> => undefined,\n }),\n skipIn: (property: string): Mapping => ({\n property,\n in: (): Optional<JsonValue> => undefined,\n out: (source: Json = {}): JsonValue => source[property],\n }),\n skipOut: (property: string): Mapping => ({\n property,\n in: (source: Json = {}): JsonValue => source[property],\n out: (): Optional<JsonValue> => undefined,\n }),\n func: (property: string, funcIn: Get<Optional<JsonValue>, Json>, funcOut: Get<Optional<JsonValue>, Json>): Mapping => ({\n property,\n in: (source: Json = {}): Optional<JsonValue> => ofGet(funcIn, source),\n out: (source: Json = {}): Optional<JsonValue> => ofGet(funcOut, source),\n }),\n add: (funcIn: Get<JsonValue, Json>): Mapping => ({\n property: '',\n in: (source: Json = {}): JsonValue => ofGet(funcIn, source),\n out: (): Optional<JsonValue> => undefined,\n }),\n map: (mapper: Construct<Mapper>, property = ''): Mapping => ({\n property,\n in: (source: Json = {}): JsonValue => ofConstruct(mapper).in(isEmpty(property) ? source : (source[property] as Json)),\n out: (source: Json = {}, key = ''): JsonValue => ofConstruct(mapper).out(isEmpty(key) ? source : (source[key] as Json)),\n }),\n propsToList: (...maps: Mapping[]): Mapping => ({\n property: '',\n in: (source: Json = {}): JsonValue => toList(maps.map(m => ofConstruct(m).in(source))).toJSON(),\n out: (source: Json = {}, key = ''): JsonValue =>\n maps.reduce((a: Json, m, i) => {\n const res = toList(source[key])[i];\n const out = m.out(res as Json);\n return { ...a, [m.property]: out ?? {} };\n }, {}),\n }),\n list: (mapper: Mapping, property: string): Mapping => ({\n property: property,\n in: (source: Json = {}): JsonValue =>\n toList(source[property])\n .map((v: any) => mapper.in(v))\n .toJSON(),\n out: (source: Json = {}, key = ''): JsonValue =>\n toList(isEmpty(key) ? source : (source[key] as Json))\n .map((v: any) => mapper.out(v))\n .toJSON(),\n }),\n};\n","import { Api } from './Api';\nimport { RouteGateway } from './RouteGateway';\nimport { Func } from '../types/Func';\nimport { Uri } from '../types/Uri';\nimport { Mapper } from '../utils/Mapper';\nimport { RequestOptions } from '../http/RequestOptions';\nimport { PageList } from '../types/PageList';\nimport { Json } from '../types/Json';\nimport { Optional } from '../types/Types';\n\nexport class MappedRouteGateway extends RouteGateway {\n constructor(\n readonly route: Func<Uri>,\n readonly routeId: Func<Uri>,\n readonly map = new Mapper(),\n readonly api: Api = new Api()\n ) {\n super(route, routeId, api);\n }\n\n get(uri: Uri, options?: RequestOptions): Promise<PageList<Json>> {\n return super.get(uri, options).then(is => is.map(i => this.map.in(i)));\n }\n\n getOne(uri: Uri, options?: RequestOptions): Promise<Optional<Json>> {\n return super\n .get(uri, options)\n .then(is => is.first())\n .then(i => this.map.in(i));\n }\n\n add(item: Json): Promise<Json> {\n return super.add(this.map.out(item));\n }\n\n update(item: Json): Promise<Json> {\n return super.update(this.map.out(item));\n }\n}\n","export const traverse = (subject: unknown = {}, property = ''): unknown => {\n const props = property.split('.');\n const p = props.shift() as string;\n return props.length === 0 ? (subject as any)[p] : traverse((subject as any)[p], props.join('.'));\n};\n","import { isArray, isObject } from './Is';\nimport { choose } from './Case';\n\nconst isEqualArray = (one: unknown[], another: unknown[]): boolean =>\n choose([one, another])\n .case(([o, a]) => !isArray(o) || !isArray(a), false)\n .case(([o, a]) => o?.length !== a?.length, false)\n .else(([o, a]) => !o.some((v, i) => !isEqual(v, a[i])));\n\nconst isEqualObject = (one: any, another: any): boolean =>\n choose([Object.keys(one), Object.keys(another)])\n .case(([keysO, keysA]) => keysO.length !== keysA.length, false)\n .case(([keysO, keysA]) => keysO.some(k => !keysA.includes(k)), false)\n .case(([keysO]) => keysO.some(k => !isEqual(one[k], another[k])), false)\n .else(true);\n\nexport const isEqual = (one?: unknown, another?: unknown): boolean =>\n choose([one, another])\n .case(([o, a]) => o === a, true)\n .case(\n ([o, a]) => isArray(o) || isArray(a),\n ([o, a]) => isEqualArray(o as [], a as [])\n )\n .case(\n ([o, a]) => o == null || a == null || (!isObject(o) && !isObject(a)),\n ([o, a]) => o !== o && a !== a\n )\n .else(([o, a]) => isEqualObject(o, a));\n","import { traverse } from './Traverse';\nimport { ifDefined } from './If';\nimport { Primitive } from '../types/Primitive';\nimport { Constructor, isConstructor, use } from '../types/Constructor';\nimport { asJson, json, Json } from '../types/Json';\nimport { choose } from '../types/Case';\nimport { isArray, isBoolean, isFunction, isString } from '../types/Is';\nimport { meta } from '../types/Meta';\nimport { isPageList, PageList, toPageList } from '../types/PageList';\nimport { List } from '../types/List';\nimport { isEqual } from '../types/IsEqual';\nimport { DontInfer } from '../types/Types';\n\ntype Func<T = unknown> = (a: any, key?: string) => T;\ntype Viewer = { key: string; f: Func };\n\ntype ViewType = Primitive | Constructor | Func | View | undefined;\ntype ViewRecord<V = Json> = Partial<Record<keyof V, ViewType>>;\n\nconst ignore = Symbol('view.ignore');\nconst keep = Symbol('view.keep');\n\nexport const toViewer = (key: string, value: ViewType): Viewer =>\n choose(value)\n .is.not.defined(v => v, { key, f: () => undefined } as Viewer)\n .type(isBoolean, b => ({ key, f: () => b }))\n .equals(ignore, { key, f: () => undefined })\n .equals(keep, { key, f: (a: any) => traverse(a, key) })\n .type(isString, s => ({ key, f: (a: any) => traverse(a, s) }))\n .type(isConstructor, c => ({\n key,\n f: (a, key) => use(traverse(a, key), v => (isArray(v) ? v.map(i => optional(c, i)) : optional(c, v))),\n }))\n .type(isSimpleView, f => ({ key, f: (a: any) => f.from(traverse(a, key)) }))\n .type(isFunction, f => ({ key, f }))\n .else(v => ({ key, f: () => v }));\n\nconst optional = (c: Constructor, v: any) =>\n ifDefined(\n v,\n i => new c(i),\n () => v\n );\n\nconst toViewers = (views: ViewRecord): Viewer[] =>\n meta(views)\n .entries<ViewType>()\n .map(([k, v]) => toViewer(k, v));\n\nexport class View<V = Json> {\n constructor(\n private views = {} as ViewRecord<V>,\n readonly startsFrom: 'scratch' | 'source' = 'scratch',\n readonly viewers: Viewer[] = toViewers(views)\n ) {}\n\n get fromSource(): View<V> {\n return new View(this.views, 'source', this.viewers);\n }\n\n from<T = unknown>(source: PageList<T>): PageList<V>;\n from<T = unknown>(source: List<T>): List<V>;\n from<T = unknown>(source: T[]): V[];\n from<T = unknown>(source: T): V;\n from<T = unknown>(source: PageList<T> | List<T> | T[] | T): PageList<V> | List<V> | V[] | V {\n if (isPageList(source))\n return toPageList(\n source.map(s => this.reduce(s)),\n source\n );\n if (isArray(source)) return source.map(s => this.reduce(s));\n return this.reduce(source);\n }\n\n same = (one?: unknown, another?: unknown): boolean => isEqual(this.from(one), this.from(another));\n\n private reduce = (source: any): any =>\n use(asJson(source), src => this.viewers.reduce((acc, v) => json.set(acc, v.key, v.f(src, v.key)), this.startsFrom === 'scratch' ? {} : src));\n}\n\nexport const isSimpleView = (a: unknown): a is View => a instanceof View;\n\nexport const view = <V = Json>(views: ViewRecord<DontInfer<V>>): View<V> => new View<V>(views);\n\nexport const views = {\n ignore,\n keep,\n skip: ignore,\n value: (value: unknown) => () => value,\n or: {\n key: (altKey: string) => (a: unknown, key?: string) => traverse(a, key) ?? traverse(a, altKey),\n value: (altValue: unknown) => (a: unknown, key?: string) => traverse(a, key) ?? altValue,\n func: (altFunc: Func) => (a: unknown, key?: string) => traverse(a, key) ?? altFunc(a, key),\n },\n};\n\n// spread: (a: any, key: string) => ({...a, ...(use(traverse(a, key), v => isObject(v) ? v : ({[key]: v})))}),\n","import { Api } from './Api';\nimport { RouteGateway } from './RouteGateway';\nimport { Func } from '../types/Func';\nimport { Uri } from '../types/Uri';\nimport { view } from '../utils/View';\nimport { RequestOptions } from '../http/RequestOptions';\nimport { PageList } from '../types/PageList';\nimport { Json } from '../types/Json';\nimport { Optional } from '../types/Types';\n\nexport class ViewRouteGateway extends RouteGateway {\n constructor(\n readonly route: Func<Uri>,\n readonly routeId: Func<Uri>,\n readonly views = {\n in: view({}).fromSource,\n out: view({}).fromSource,\n },\n readonly api: Api = new Api()\n ) {\n super(route, routeId, api);\n }\n\n get(uri: Uri, options?: RequestOptions): Promise<PageList<Json>> {\n return super.get(uri, options).then(is => is.map(i => this.views.in.from(i)));\n }\n\n getOne(uri: Uri, options?: RequestOptions): Promise<Optional<Json>> {\n return super\n .get(uri, options)\n .then(is => is.first())\n .then(i => this.views.in.from(i));\n }\n\n add(item: Json): Promise<Json> {\n return super.add(this.views.out.from(item));\n }\n\n update(item: Json): Promise<Json> {\n return super.update(this.views.out.from(item));\n }\n}\n","import { isBoolean, isNumber } from '../types/Is';\nimport { convert, Convert } from '../utils/Convert';\nimport { TypeGuard } from '../types/TypeGuard';\nimport { isA } from '../types/IsA';\nimport type { Text } from '../types/Text';\n\nexport const quote = (a: unknown): string => (isNumber(a) || isBoolean(a) || isClause(a) ? a.toString() : `'${a as string}'`);\n\nexport class Clause implements Text {\n constructor(\n readonly first: unknown,\n readonly operator: string,\n readonly second: unknown\n ) {}\n\n and = (other: Clause): Clause => new ParathesizedClause(this, 'AND', other);\n or = (other: Clause): Clause => new ParathesizedClause(this, 'OR', other);\n\n toString(): string {\n return `${this.first} ${this.operator} ${quote(this.second)}`;\n }\n}\n\nexport class ParathesizedClause extends Clause {\n toString(): string {\n return `(${this.first} ${this.operator} ${quote(this.second)})`;\n }\n}\n\nexport const toClause = (first: unknown, operator: string, second: unknown, conv: Convert = convert.default): Clause =>\n new Clause(first, operator, conv.from(second));\n\nexport const isClause: TypeGuard<Clause> = (c?: unknown): c is Clause => isA<Clause>(c, 'and', 'or');\n","import { Clause, toClause } from './Clause';\nimport { Table } from './Table';\nimport { Property, PropertyOptions } from '../utils/Property';\nimport { Json, JsonValue } from '../types/Json';\nimport { tryTo } from '../types/Try';\nimport { ofGet } from '../types/Get';\nimport type { Text } from '../types/Text';\n\nexport class Column extends Property implements Text {\n constructor(\n readonly owner: Table,\n property: string,\n options?: PropertyOptions\n ) {\n super(property, options);\n }\n\n get count(): Column {\n return this.function('COUNT');\n }\n\n get max(): Column {\n return this.function('MAX');\n }\n\n get min(): Column {\n return this.function('MIN');\n }\n\n get sum(): Column {\n return this.function('SUM');\n }\n\n get average(): Column {\n return this.function('AVG');\n }\n\n get length(): Column {\n return this.function('LEN');\n }\n\n get asc(): OrderColumn {\n return this.format('$col ASC') as OrderColumn;\n }\n\n get desc(): OrderColumn {\n return this.format('$col DESC') as OrderColumn;\n }\n\n in = (source: Json = {}): JsonValue =>\n tryTo(source)\n .map(s => s[this.property] ?? ofGet(this.options?.dflt))\n .map(v => this.options?.convert?.to(v))\n .orElse();\n\n out = (source: Json = {}, key = ''): JsonValue =>\n tryTo(source)\n .map(s => this.options?.convert?.from(s[key]))\n .orElse();\n\n function = (func: string): Column => this.format(`${func}($name)`);\n\n format = (pattern: string): Column => new PatternColumn(this, pattern);\n\n is = (value: unknown): Clause => this.clause('=', value);\n\n not = (value: unknown): Clause => this.clause('<>', value);\n\n like = (value: unknown): Clause => this.clause('LIKE', `%${value}%`);\n\n startsLike = (value: unknown): Clause => this.clause('LIKE', `${value}%`);\n\n endsLike = (value: unknown): Clause => this.clause('LIKE', `%${value}`);\n\n unlike = (value: unknown): Clause => this.clause('NOT LIKE', `%${value}%`);\n\n less = (value: unknown): Clause => this.clause('<', value);\n\n lessEqual = (value: unknown): Clause => this.clause('<=', value);\n\n greater = (value: unknown): Clause => this.clause('>', value);\n\n greaterEqual = (value: unknown): Clause => this.clause('>=', value);\n\n as = (as: string): Column => this.format(`$col AS ${as}`);\n\n toString(): string {\n return `${this.owner}.${this.property}`;\n }\n\n protected clause = (operator: string, value: unknown): Clause => toClause(this, operator, value, this?.options?.convert);\n}\n\nexport class PatternColumn extends Column {\n constructor(\n protected col: Column,\n protected pattern: string\n ) {\n super(col.owner, col.property);\n }\n\n toString(): string {\n return this.pattern.replace('$col', this.col.toString()).replace('$table', this.col.owner.toString).replace('$name', this.col.property);\n }\n}\n\nexport class OrderColumn extends PatternColumn {}\n","import { Query } from '../data/Query';\nimport { Table } from './Table';\nimport { Join } from './Join';\nimport { List, toList } from '../types/List';\nimport { Clause } from './Clause';\n\nexport class SqlQuery implements Query {\n constructor(\n protected table: Table | Join,\n readonly clauses: List<Clause> = toList()\n ) {}\n\n where = (...clauses: Clause[]): this => {\n this.clauses.add(clauses);\n return this;\n };\n}\n","import { SqlQuery } from './SqlQuery';\nimport { ifGet } from '../types/Get';\n\nexport class Delete extends SqlQuery {\n toString(): string {\n return `DELETE FROM ${this.table}` + ifGet(this.clauses.length, ` WHERE ${this.clauses.join(' AND ')};`, ';');\n }\n}\n","import { SqlQuery } from './SqlQuery';\nimport { quote } from './Clause';\nimport { Table } from './Table';\nimport { Json } from '../types/Json';\n\nexport class Insert extends SqlQuery {\n constructor(\n protected table: Table,\n protected fields: Json\n ) {\n super(table);\n }\n\n toString(): string {\n return (\n `INSERT INTO ${this.table} ` +\n `(${Object.keys(this.fields).join(', ')}) OUTPUT INSERTED.* ` +\n `VALUES (${Object.values(this.fields)\n .map(v => quote(v))\n .join(', ')});`\n );\n }\n}\n","import { Column } from './Column';\nimport { Table } from './Table';\n\nexport class Join {\n readonly db;\n constructor(private first: Table, private second: Table, private c?: Column, private c2?: Column) {\n this.db = this.first.db;\n }\n\n on(c: Column, c2: Column): this {\n this.c = c;\n this.c2 = c2;\n return this;\n }\n\n toString(): string {\n return `${this.first} JOIN ${this.second} ON ${this.c} = ${this.c2}`;\n }\n}\n","import { Column, OrderColumn } from './Column';\nimport { Join } from './Join';\nimport { SqlQuery } from './SqlQuery';\nimport { Table } from './Table';\nimport { List, toList } from '../types/List';\nimport { ifGet } from '../types/Get';\n\nexport class Select extends SqlQuery {\n protected ordered: List<OrderColumn> = toList();\n protected grouped: List<Column> = toList();\n protected _top = 0;\n protected _limit = 0;\n protected _offset = 0;\n\n constructor(\n table: Table | Join,\n readonly columns: List<Column> = toList()\n ) {\n super(table);\n }\n\n from(t?: Table | Join): this {\n this.table = t ?? this.table;\n return this;\n }\n\n orderBy = (...ordered: OrderColumn[]): this => {\n this.ordered.add(ordered);\n return this;\n };\n\n groupBy(...grouped: Column[]): this {\n this.grouped.add(grouped);\n return this;\n }\n\n top(t: number): this {\n this._top = t;\n return this;\n }\n\n limit(l: number): this {\n this._limit = l;\n return this;\n }\n\n offset(o: number): this {\n this._offset = o;\n return this;\n }\n\n toString(): string {\n return (\n `SELECT ` +\n ifGet(this._top, `TOP ${this._top} `, '') +\n ifGet(this.columns.length, this.columns.join(', '), '*') +\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 ifGet(this.ordered.length, ` ORDERED BY ${this.ordered.join(', ')}`, '') +\n ifGet(this._limit, ` LIMIT ${this._limit}`, '') +\n ifGet(this._offset, ` OFFSET ${this._offset};`, ';')\n );\n }\n}\n","import { SqlQuery } from './SqlQuery';\nimport { toClause } from './Clause';\nimport { Table } from './Table';\nimport { Json } from '../types/Json';\nimport { ifGet } from '../types/Get';\n\nexport class Update extends SqlQuery {\n constructor(\n protected table: Table,\n protected fields: Json\n ) {\n super(table);\n }\n\n toString(): string {\n return (\n `UPDATE ${this.table} ` +\n `SET ${Object.entries(this.fields)\n .map(([k, v]) => toClause(k, '=', v))\n .join(', ')} ` +\n 'OUTPUT INSERTED.*' +\n ifGet(this.clauses.length, ` WHERE ${this.clauses.join(' AND ')};`, ';')\n );\n }\n}\n","import { Select } from './Select';\nimport { ifGet } from '../types/Get';\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","import { Column } from './Column';\nimport { Select } from './Select';\nimport { Insert } from './Insert';\nimport { Update } from './Update';\nimport { Delete } from './Delete';\nimport { Join } from './Join';\nimport { Count } from './Count';\nimport { MapOptions, Mapper, mappings } from '../utils/Mapper';\nimport { PropertyOptions } from '../utils/Property';\nimport { toUuid } from '../types/Uuid';\nimport { Database } from '../data/Database';\nimport { toList } from '../types/List';\nimport { Json } from '../types/Json';\n\nexport class Table extends Mapper {\n protected readonly map = {\n ...mappings,\n column: <T = unknown>(name: string, options?: PropertyOptions<T>): Column => new Column(this, name, options),\n };\n\n readonly id = this.map.column('', { dflt: toUuid });\n\n constructor(options: MapOptions = { startFrom: 'source' }) {\n super(options);\n }\n\n get db(): Database {\n return Database.Default;\n }\n\n get count(): Count {\n return new Count(this);\n }\n\n /**\n * @deprecated Deprecated since version 6.2. Please use map.column instead.\n */\n prop = <T = unknown>(name: string, options?: PropertyOptions<T>): Column => this.map.column(name, options);\n\n select = (...columns: Column[]): Select => new Select(this, toList(columns));\n\n insert = (fields: Json): Insert => new Insert(this, this.out(fields));\n update = (fields: Json): Update => new Update(this, this.out(fields));\n delete = (): Delete => new Delete(this, toList());\n\n readonly join = (t: Table): Join => new Join(this, t);\n}\n","import { Table } from './Table';\nimport { PageList, PageOptions, toPageList } from '../types/PageList';\nimport { QueryProvider } from '../data/QueryProvider';\nimport { Gateway } from '../types/Gateway';\nimport { Json } from '../types/Json';\nimport { Id } from '../types/Id';\nimport { Optional } from '../types/Types';\nimport { ifDefined } from '../utils/If';\nimport { isDefined } from '../types/Is';\nimport { when } from '../validation/When';\n\nexport type TableOptions = PageOptions & { provider?: QueryProvider };\n\nexport class TableGateway<T extends Table> extends Gateway<PageOptions> {\n constructor(\n readonly table: T,\n readonly provider = table.db.provide<QueryProvider>()\n ) {\n super();\n }\n\n protected provide = ({ provider }: TableOptions = {}): QueryProvider => provider ?? this.provider;\n\n all(options?: TableOptions): Promise<PageList<Json>> {\n return this.provide(options)\n .query(this.table.select())\n .then(js =>\n toPageList(\n js.map(j => this.table.in(j)),\n options\n )\n );\n }\n\n byId(id: Id, options?: TableOptions): Promise<Optional<Json>> {\n return this.provide(options)\n .query(this.table.select().where(this.table.id.is(id)))\n .then(js => js.first())\n .then(j => ifDefined(j, this.table.in(j)));\n }\n\n exists(id: Id, options?: TableOptions): Promise<boolean> {\n return this.byId(id).then(j => isDefined(j));\n }\n\n add(item: Json, options?: TableOptions): Promise<Json> {\n return this.provide(options)\n .query(this.table.insert(item))\n .then(js => when(js.first()).not.isDefined.reject(`Could not add items with id ${item.id}`))\n .then(j => this.table.in(j));\n }\n\n remove(id: Id, options?: TableOptions): Promise<boolean> {\n return this.provide(options)\n .command(this.table.delete().where(this.table.id.is(id)))\n .then(() => true);\n }\n\n update(item: Json, options?: TableOptions): Promise<Json> {\n return this.provide(options)\n .query(this.table.update(item).where(this.table.id.is(item.id)))\n .then(js => when(js.first()).not.isDefined.reject(`Could not update item with id ${item.id}`))\n .then(j => this.table.in(j));\n }\n}\n","import { Constructor } from './Constructor';\nimport { asString } from './Text';\n\nclass builder {\n private static state: any = {};\n static singleton = <T>(ctr: Constructor<T>, ...args: any[]): T => builder.state[asString(ctr)] ?? (builder.state[asString(ctr)] = new ctr(...args));\n static reset = (): void => {\n builder.state = {};\n };\n}\n\nexport const build = {\n singleton: <T>(ctr: Constructor<T>, ...args: any[]): T => builder.singleton(ctr, ...args),\n reset: (): void => builder.reset(),\n};\n\nexport const singleton = <T>(ctr: Constructor<T>, ...args: any[]): T => build.singleton(ctr, ...args);\n","import { Func } from './Func';\nimport { CacheAge } from './CacheAge';\nimport { Construct } from './Constructor';\nimport { meta } from './Meta';\n\nexport interface Store<To = any, From = any> {\n execute: (fetch: From, f: Func<Promise<To>, From>) => Promise<To>;\n}\n\nexport type CacheOptions = {\n expiresIn?: CacheAge;\n store?: Construct<Store>;\n};\n\nexport const toCacheOptions = (co: Partial<CacheOptions>): CacheOptions => ({\n expiresIn: co.expiresIn ?? '5m',\n store: co.store,\n});\n\nexport const cache =\n (options: Partial<CacheOptions>): ClassDecorator =>\n (subject: unknown): void => {\n meta(subject).set('cache', toCacheOptions(options));\n };\n","import { Enum } from './Enum';\n\nexport class Environment extends Enum {\n static readonly Dev = new Environment('Development', 'dev');\n static readonly Tst = new Environment('Test', 'tst');\n static readonly Acc = new Environment('Acceptance', 'acc');\n static readonly Prd = new Environment('Production', 'prd');\n}\n","type Falsy = false | 0 | 0n | '' | null | undefined;\ntype Truthy<T = unknown> = Exclude<T, Falsy>;\n\nexport const isFalsy = (v?: unknown): v is Falsy => !v;\nexport const isTruthy = (v?: unknown): v is Truthy => !isFalsy(v);\n","import { Func, isFunc } from './Func';\n\nexport type Message<Args> = string | Func<string, Args>;\n\nexport const ofMessage = <Args>(g: Message<Args>, ...params: Args[]): string => (isFunc<string, Args>(g) ? g(...params) : g);\n","export type Nullish = null | undefined;\n\nexport const isNullish = (v?: unknown): v is Nullish => v == null;\n","import { Get, ofGet, Predicate } from './Get';\nimport { isDefined, isEmpty, isIn, isObject, isString, isTrue } from './Is';\nimport { isValid } from '../validation/Validate';\nimport { Constructor, on } from './Constructor';\nimport { toArray } from './Array';\n\nexport class Parser<T, V> {\n if = {\n equals: (pred?: Predicate<T>): this => this.evaluate(isTrue, pred),\n empty: <U>(pred?: Get<U, T>): this => this.evaluate(isEmpty, pred),\n defined: <U>(pred?: Get<U, T>): this => this.evaluate(isDefined, pred),\n valid: <U>(pred?: Get<U, T>): this => this.evaluate(isValid, pred),\n in: (...items: T[]): this => this.evaluate(() => isIn(this.value, toArray(...items))),\n is: {\n object: <U>(pred?: Get<U, T>): this => this.evaluate(isObject, pred),\n string: <U>(pred?: Get<U, T>): this => this.evaluate(isString, pred),\n instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => this.value instanceof c, pred),\n },\n not: {\n empty: <U>(pred?: Get<U, T>): this => this.evaluateNot(isEmpty, pred),\n defined: <U>(pred?: Get<U, T>): this => this.evaluateNot(isDefined, pred),\n valid: <U>(pred?: Get<U, T>): this => this.evaluateNot(isValid, pred),\n isObject: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),\n in: (...items: T[]): this => this.evaluate(() => !isIn(this.value, toArray(...items))),\n is: {\n object: <U>(pred?: Get<U, T>): this => this.evaluateNot(isObject, pred),\n string: <U>(pred?: Get<U, T>): this => this.evaluateNot(isString, pred),\n instance: <U>(c: Constructor<U>, pred?: Get<U, T>): this => this.evaluate(() => !(this.value instanceof c), pred),\n },\n },\n };\n\n constructor(\n protected value: T,\n protected valid = true\n ) {}\n\n protected evaluate<U>(meta: Get<boolean>, pred?: Get<U, T>): this {\n return on(this, t => (t.valid = ofGet(meta, pred ? ofGet(pred, this.value) : this.value)));\n }\n\n protected evaluateNot<U>(meta: Get<boolean>, pred?: Get<U, T>): this {\n return on(this, t => (t.valid = !ofGet(meta, pred ? ofGet(pred, this.value) : this.value)));\n }\n}\n","export const asc = 1;\nexport const desc = -1;\nexport type SortDirection = typeof asc | typeof desc;\nexport type Sort = { key: string; value: SortDirection };\nexport type PlainSort = Record<string, SortDirection> | string[];\n","import { meta } from './Meta';\n\nexport const tag =\n (name: string): PropertyDecorator =>\n (subject: unknown, property: string | symbol): void => {\n meta(subject).property(property).set(name, property);\n };\n\nexport const searchable = (): PropertyDecorator => tag(searchable.name);\n","import type { Json } from '../types/Json';\n\nexport const base64 = {\n decode: (data: string): string => Buffer.from(data, 'base64').toString('utf-8'),\n encode: (data: string): string => Buffer.from(data, 'utf-8').toString('base64'),\n toJson: (data: string): Json => JSON.parse(base64.decode(data)),\n};\n","import { isNotPresent } from '../types/Is';\n\nexport const isLoading = (...targets: unknown[]): boolean => isNotPresent(...targets);\n","import { Optional } from '../types/Types';\n\nexport function log<T>(t: T): T;\nexport function log<T>(label: string, t: T): T;\nexport function log<T>(labelOrT: string | T, t?: T): T {\n if (t) {\n console.log(labelOrT as string, t);\n return t;\n } else {\n console.log(labelOrT);\n return labelOrT as T;\n }\n}\nexport function dir<T>(t?: T): Optional<T> {\n console.dir(t, { depth: 200 });\n return t;\n}\n","import type { Text } from '../types/Text';\nimport { text } from '../types/Template';\nimport { Id } from '../types/Id';\n\nexport class Sentence implements Text {\n constructor(\n word: Text,\n pre?: Sentence,\n private sentence: Text[] = (pre?.sentence ?? []).concat(word)\n ) {}\n\n toString(): string {\n return text(this.sentence.join(' ')).sentence.toString();\n }\n}\n\nclass Topic extends Sentence {\n it = new Sentence('it', this);\n anything = new Sentence('anything', this);\n id = (id: Id) => new Sentence(`id '${id}'`, this);\n your = (subject?: Text) => new Sentence(`your ${subject ?? 'item'}`, this);\n a = (subject?: Text) => new Sentence(subject ? `a ${subject}` : 'an item', this);\n an = (subject?: Text) => new Sentence(`an ${subject ?? 'item'}`, this);\n any = (subjects?: Text) => new Sentence(`any ${subjects ?? 'items'}`, this);\n}\n\nclass Verb extends Sentence {\n add = new Topic('add', this);\n check = new Topic('check', this);\n fetch = new Topic('fetch', this);\n find = new Topic('find', this);\n like = new Topic('like', this);\n process = new Topic('process', this);\n remove = new Topic('remove', this);\n translate = new Topic('translate', this);\n update = new Topic('update', this);\n validate = new Topic('validate', this);\n}\n\nclass Not extends Verb {}\n\nclass SupportVerb extends Verb {\n not = new Not('not', this);\n}\n\nclass We extends Sentence {\n could = new SupportVerb('could', this);\n did = new SupportVerb('did', this);\n\n added = new Topic('added', this);\n checked = new Topic('checked', this);\n fetched = new Topic('fetched', this);\n found = new Topic('found', this);\n liked = new Topic('liked', this);\n processed = new Topic('processed', this);\n removed = new Topic('removed', this);\n translated = new Topic('translated', this);\n updated = new Topic('updated', this);\n validated = new Topic('validated', this);\n}\n\nexport const we = new We('we');\n","export class Wait {\n static wait(ms = 0): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n static seconds(s = 0) {\n return this.wait(s * 1000);\n }\n}\n\nexport const wait = (millis: number) => Wait.wait(millis);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":["values","valid","o","search","s","a","template","search","s","valid","k","template","constraint","days","LuxonDateTime","dt","values","v","json","uuid","json","json","view","value","route","uri","toRoute","requires","verb","formUrlEncoded","n","validate","meta","json","s","isResponse","uri","axios","uri","api","uri","route","api","route","api","uri","key","optional","views","route","views","api","uri","valid","meta","resolve"]}