@thisisagile/easy 17.26.1 → 17.26.3

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 (377) hide show
  1. package/dist/chunk-27MBNT3X.mjs +25 -0
  2. package/dist/chunk-27MBNT3X.mjs.map +1 -0
  3. package/dist/chunk-35SXXNQO.mjs +20 -0
  4. package/dist/chunk-35SXXNQO.mjs.map +1 -0
  5. package/dist/chunk-3M6NLHSO.mjs +18 -0
  6. package/dist/chunk-3M6NLHSO.mjs.map +1 -0
  7. package/dist/chunk-4CRBLF44.mjs +56 -0
  8. package/dist/chunk-4CRBLF44.mjs.map +1 -0
  9. package/dist/chunk-4K4X43SV.mjs +164 -0
  10. package/dist/chunk-4K4X43SV.mjs.map +1 -0
  11. package/dist/chunk-4LVZOQ6O.mjs +58 -0
  12. package/dist/chunk-4LVZOQ6O.mjs.map +1 -0
  13. package/dist/chunk-4N72FQFX.mjs +16 -0
  14. package/dist/chunk-4N72FQFX.mjs.map +1 -0
  15. package/dist/chunk-5AV36UKS.mjs +20 -0
  16. package/dist/chunk-5AV36UKS.mjs.map +1 -0
  17. package/dist/chunk-5DJPREIN.mjs +142 -0
  18. package/dist/chunk-5DJPREIN.mjs.map +1 -0
  19. package/dist/chunk-5ZHEIMZ7.mjs +79 -0
  20. package/dist/chunk-5ZHEIMZ7.mjs.map +1 -0
  21. package/dist/chunk-6QFV73AS.mjs +55 -0
  22. package/dist/chunk-6QFV73AS.mjs.map +1 -0
  23. package/dist/chunk-6UDAYZAZ.mjs +53 -0
  24. package/dist/chunk-6UDAYZAZ.mjs.map +1 -0
  25. package/dist/chunk-7HTKPMTI.mjs +72 -0
  26. package/dist/chunk-7HTKPMTI.mjs.map +1 -0
  27. package/dist/chunk-ABGKS4KE.mjs +297 -0
  28. package/dist/chunk-ABGKS4KE.mjs.map +1 -0
  29. package/dist/chunk-ADJAEGCT.mjs +21 -0
  30. package/dist/chunk-ADJAEGCT.mjs.map +1 -0
  31. package/dist/chunk-AGTB4HMP.mjs +11 -0
  32. package/dist/chunk-AGTB4HMP.mjs.map +1 -0
  33. package/dist/chunk-AINW2476.mjs +90 -0
  34. package/dist/chunk-AINW2476.mjs.map +1 -0
  35. package/dist/chunk-BDA5LB4S.mjs +29 -0
  36. package/dist/chunk-BDA5LB4S.mjs.map +1 -0
  37. package/dist/chunk-BIEWRRM7.mjs +26 -0
  38. package/dist/chunk-BIEWRRM7.mjs.map +1 -0
  39. package/dist/chunk-BIHKQLEE.mjs +40 -0
  40. package/dist/chunk-BIHKQLEE.mjs.map +1 -0
  41. package/dist/chunk-CO2AFYVD.mjs +43 -0
  42. package/dist/chunk-CO2AFYVD.mjs.map +1 -0
  43. package/dist/chunk-CSAPGLC7.mjs +94 -0
  44. package/dist/chunk-CSAPGLC7.mjs.map +1 -0
  45. package/dist/chunk-CSHFNF34.mjs +35 -0
  46. package/dist/chunk-CSHFNF34.mjs.map +1 -0
  47. package/dist/chunk-CWWAGBYB.mjs +46 -0
  48. package/dist/chunk-CWWAGBYB.mjs.map +1 -0
  49. package/dist/chunk-DEJ7A5PY.mjs +43 -0
  50. package/dist/chunk-DEJ7A5PY.mjs.map +1 -0
  51. package/dist/chunk-DRABNNX2.mjs +107 -0
  52. package/dist/chunk-DRABNNX2.mjs.map +1 -0
  53. package/dist/chunk-DXQSIBC7.mjs +13 -0
  54. package/dist/chunk-DXQSIBC7.mjs.map +1 -0
  55. package/dist/chunk-F34HSIZ5.mjs +68 -0
  56. package/dist/chunk-F34HSIZ5.mjs.map +1 -0
  57. package/dist/chunk-GADZDWP3.mjs +20 -0
  58. package/dist/chunk-GADZDWP3.mjs.map +1 -0
  59. package/dist/chunk-GB2P3UEO.mjs +82 -0
  60. package/dist/chunk-GB2P3UEO.mjs.map +1 -0
  61. package/dist/chunk-GCY5A63A.mjs +25 -0
  62. package/dist/chunk-GCY5A63A.mjs.map +1 -0
  63. package/dist/chunk-HL2BC7Z2.mjs +76 -0
  64. package/dist/chunk-HL2BC7Z2.mjs.map +1 -0
  65. package/dist/chunk-HULI73W2.mjs +37 -0
  66. package/dist/chunk-HULI73W2.mjs.map +1 -0
  67. package/dist/chunk-J3DYDXXF.mjs +175 -0
  68. package/dist/chunk-J3DYDXXF.mjs.map +1 -0
  69. package/dist/chunk-JMIXHXWM.mjs +23 -0
  70. package/dist/chunk-JMIXHXWM.mjs.map +1 -0
  71. package/dist/chunk-KJVTSC6I.mjs +24 -0
  72. package/dist/chunk-KJVTSC6I.mjs.map +1 -0
  73. package/dist/chunk-L63NPT4K.mjs +39 -0
  74. package/dist/chunk-L63NPT4K.mjs.map +1 -0
  75. package/dist/chunk-LYRXR6GZ.mjs +54 -0
  76. package/dist/chunk-LYRXR6GZ.mjs.map +1 -0
  77. package/dist/chunk-MBRLKMEQ.mjs +54 -0
  78. package/dist/chunk-MBRLKMEQ.mjs.map +1 -0
  79. package/dist/chunk-MDXL65W4.mjs +49 -0
  80. package/dist/chunk-MDXL65W4.mjs.map +1 -0
  81. package/dist/chunk-OFGI5FLG.mjs +11 -0
  82. package/dist/chunk-OFGI5FLG.mjs.map +1 -0
  83. package/dist/chunk-OKPGJD64.mjs +41 -0
  84. package/dist/chunk-OKPGJD64.mjs.map +1 -0
  85. package/dist/chunk-OQNZEKWO.mjs +24 -0
  86. package/dist/chunk-OQNZEKWO.mjs.map +1 -0
  87. package/dist/chunk-PIQ5Z4RB.mjs +18 -0
  88. package/dist/chunk-PIQ5Z4RB.mjs.map +1 -0
  89. package/dist/chunk-PIRWVOO2.mjs +7 -0
  90. package/dist/chunk-PIRWVOO2.mjs.map +1 -0
  91. package/dist/chunk-QBHHLIZY.mjs +51 -0
  92. package/dist/chunk-QBHHLIZY.mjs.map +1 -0
  93. package/dist/chunk-RNLFG4YX.mjs +20 -0
  94. package/dist/chunk-RNLFG4YX.mjs.map +1 -0
  95. package/dist/chunk-S6WR4MXU.mjs +324 -0
  96. package/dist/chunk-S6WR4MXU.mjs.map +1 -0
  97. package/dist/chunk-SDO3B3BQ.mjs +45 -0
  98. package/dist/chunk-SDO3B3BQ.mjs.map +1 -0
  99. package/dist/chunk-SJ4YFZKO.mjs +21 -0
  100. package/dist/chunk-SJ4YFZKO.mjs.map +1 -0
  101. package/dist/chunk-SJGQU3OG.mjs +15 -0
  102. package/dist/chunk-SJGQU3OG.mjs.map +1 -0
  103. package/dist/chunk-SPMDDHVK.mjs +40 -0
  104. package/dist/chunk-SPMDDHVK.mjs.map +1 -0
  105. package/dist/chunk-SSROJBD5.mjs +30 -0
  106. package/dist/chunk-SSROJBD5.mjs.map +1 -0
  107. package/dist/chunk-SW2OCUH3.mjs +10 -0
  108. package/dist/chunk-SW2OCUH3.mjs.map +1 -0
  109. package/dist/chunk-TCQRHKGS.mjs +20 -0
  110. package/dist/chunk-TCQRHKGS.mjs.map +1 -0
  111. package/dist/chunk-TNHYFGFF.mjs +60 -0
  112. package/dist/chunk-TNHYFGFF.mjs.map +1 -0
  113. package/dist/chunk-TYODLVCG.mjs +23 -0
  114. package/dist/chunk-TYODLVCG.mjs.map +1 -0
  115. package/dist/chunk-U5VBBUQ2.mjs +48 -0
  116. package/dist/chunk-U5VBBUQ2.mjs.map +1 -0
  117. package/dist/chunk-UYDZZAEK.mjs +11 -0
  118. package/dist/chunk-UYDZZAEK.mjs.map +1 -0
  119. package/dist/chunk-WJZFE5NE.mjs +17 -0
  120. package/dist/chunk-WJZFE5NE.mjs.map +1 -0
  121. package/dist/chunk-WSBULPUZ.mjs +30 -0
  122. package/dist/chunk-WSBULPUZ.mjs.map +1 -0
  123. package/dist/chunk-WSG55HKA.mjs +94 -0
  124. package/dist/chunk-WSG55HKA.mjs.map +1 -0
  125. package/dist/chunk-XL5IRJ2H.mjs +134 -0
  126. package/dist/chunk-XL5IRJ2H.mjs.map +1 -0
  127. package/dist/chunk-XUBQQUTS.mjs +50 -0
  128. package/dist/chunk-XUBQQUTS.mjs.map +1 -0
  129. package/dist/chunk-YPVIK4SP.mjs +57 -0
  130. package/dist/chunk-YPVIK4SP.mjs.map +1 -0
  131. package/dist/chunk-ZHXKBOK2.mjs +22 -0
  132. package/dist/chunk-ZHXKBOK2.mjs.map +1 -0
  133. package/dist/chunk-ZPNFXK7Y.mjs +36 -0
  134. package/dist/chunk-ZPNFXK7Y.mjs.map +1 -0
  135. package/dist/chunk-ZSLYORET.mjs +31 -0
  136. package/dist/chunk-ZSLYORET.mjs.map +1 -0
  137. package/dist/data/Condition.mjs +29 -0
  138. package/dist/data/Condition.mjs.map +1 -0
  139. package/dist/data/DataProvider.mjs +1 -0
  140. package/dist/data/DataProvider.mjs.map +1 -0
  141. package/dist/data/Database.mjs +23 -0
  142. package/dist/data/Database.mjs.map +1 -0
  143. package/dist/data/Field.mjs +47 -0
  144. package/dist/data/Field.mjs.map +1 -0
  145. package/dist/data/InMemoryGateway.mjs +70 -0
  146. package/dist/data/InMemoryGateway.mjs.map +1 -0
  147. package/dist/data/Query.mjs +1 -0
  148. package/dist/data/Query.mjs.map +1 -0
  149. package/dist/data/QueryProvider.mjs +1 -0
  150. package/dist/data/QueryProvider.mjs.map +1 -0
  151. package/dist/domain/Audit.mjs +36 -0
  152. package/dist/domain/Audit.mjs.map +1 -0
  153. package/dist/domain/Child.mjs +54 -0
  154. package/dist/domain/Child.mjs.map +1 -0
  155. package/dist/domain/DateTime.mjs +36 -0
  156. package/dist/domain/DateTime.mjs.map +1 -0
  157. package/dist/domain/Entity.mjs +71 -0
  158. package/dist/domain/Entity.mjs.map +1 -0
  159. package/dist/domain/Repo.mjs +96 -0
  160. package/dist/domain/Repo.mjs.map +1 -0
  161. package/dist/domain/Struct.mjs +33 -0
  162. package/dist/domain/Struct.mjs.map +1 -0
  163. package/dist/domain/Typo.mjs +114 -0
  164. package/dist/domain/Typo.mjs.map +1 -0
  165. package/dist/http/CacheControl.mjs +66 -0
  166. package/dist/http/CacheControl.mjs.map +1 -0
  167. package/dist/http/ContentType.mjs +21 -0
  168. package/dist/http/ContentType.mjs.map +1 -0
  169. package/dist/http/HttpHeader.mjs +8 -0
  170. package/dist/http/HttpHeader.mjs.map +1 -0
  171. package/dist/http/HttpStatus.mjs +25 -0
  172. package/dist/http/HttpStatus.mjs.map +1 -0
  173. package/dist/http/HttpVerb.mjs +21 -0
  174. package/dist/http/HttpVerb.mjs.map +1 -0
  175. package/dist/http/LocalRequestStore.mjs +29 -0
  176. package/dist/http/LocalRequestStore.mjs.map +1 -0
  177. package/dist/http/Request.mjs +1 -0
  178. package/dist/http/Request.mjs.map +1 -0
  179. package/dist/http/RequestOptions.mjs +30 -0
  180. package/dist/http/RequestOptions.mjs.map +1 -0
  181. package/dist/http/RequestProvider.mjs +1 -0
  182. package/dist/http/RequestProvider.mjs.map +1 -0
  183. package/dist/http/Response.mjs +13 -0
  184. package/dist/http/Response.mjs.map +1 -0
  185. package/dist/http/RestResult.mjs +34 -0
  186. package/dist/http/RestResult.mjs.map +1 -0
  187. package/dist/http/toResponse.mjs +33 -0
  188. package/dist/http/toResponse.mjs.map +1 -0
  189. package/dist/index.js +3 -0
  190. package/dist/index.js.map +1 -1
  191. package/dist/index.mjs +115 -3476
  192. package/dist/index.mjs.map +1 -1
  193. package/dist/process/App.mjs +30 -0
  194. package/dist/process/App.mjs.map +1 -0
  195. package/dist/process/Manage.mjs +47 -0
  196. package/dist/process/Manage.mjs.map +1 -0
  197. package/dist/process/Scope.mjs +22 -0
  198. package/dist/process/Scope.mjs.map +1 -0
  199. package/dist/process/Search.mjs +31 -0
  200. package/dist/process/Search.mjs.map +1 -0
  201. package/dist/process/UseCase.mjs +53 -0
  202. package/dist/process/UseCase.mjs.map +1 -0
  203. package/dist/resources/Req.mjs +57 -0
  204. package/dist/resources/Req.mjs.map +1 -0
  205. package/dist/security/Jwt.mjs +77 -0
  206. package/dist/security/Jwt.mjs.map +1 -0
  207. package/dist/services/Api.mjs +44 -0
  208. package/dist/services/Api.mjs.map +1 -0
  209. package/dist/services/ApiGateway.mjs +45 -0
  210. package/dist/services/ApiGateway.mjs.map +1 -0
  211. package/dist/services/AxiosProvider.mjs +40 -0
  212. package/dist/services/AxiosProvider.mjs.map +1 -0
  213. package/dist/services/MappedRouteGateway.mjs +78 -0
  214. package/dist/services/MappedRouteGateway.mjs.map +1 -0
  215. package/dist/services/RouteGateway.mjs +46 -0
  216. package/dist/services/RouteGateway.mjs.map +1 -0
  217. package/dist/services/ViewRouteGateway.mjs +79 -0
  218. package/dist/services/ViewRouteGateway.mjs.map +1 -0
  219. package/dist/sql/Clause.mjs +24 -0
  220. package/dist/sql/Clause.mjs.map +1 -0
  221. package/dist/sql/Column.mjs +37 -0
  222. package/dist/sql/Column.mjs.map +1 -0
  223. package/dist/sql/Count.mjs +20 -0
  224. package/dist/sql/Count.mjs.map +1 -0
  225. package/dist/sql/Delete.mjs +19 -0
  226. package/dist/sql/Delete.mjs.map +1 -0
  227. package/dist/sql/Insert.mjs +21 -0
  228. package/dist/sql/Insert.mjs.map +1 -0
  229. package/dist/sql/Join.mjs +8 -0
  230. package/dist/sql/Join.mjs.map +1 -0
  231. package/dist/sql/Select.mjs +19 -0
  232. package/dist/sql/Select.mjs.map +1 -0
  233. package/dist/sql/SqlQuery.mjs +18 -0
  234. package/dist/sql/SqlQuery.mjs.map +1 -0
  235. package/dist/sql/Table.mjs +93 -0
  236. package/dist/sql/Table.mjs.map +1 -0
  237. package/dist/sql/TableGateway.mjs +72 -0
  238. package/dist/sql/TableGateway.mjs.map +1 -0
  239. package/dist/sql/Update.mjs +21 -0
  240. package/dist/sql/Update.mjs.map +1 -0
  241. package/dist/types/AnyKey.mjs +1 -0
  242. package/dist/types/AnyKey.mjs.map +1 -0
  243. package/dist/types/Array.mjs +16 -0
  244. package/dist/types/Array.mjs.map +1 -0
  245. package/dist/types/Builder.mjs +26 -0
  246. package/dist/types/Builder.mjs.map +1 -0
  247. package/dist/types/Cache.mjs +29 -0
  248. package/dist/types/Cache.mjs.map +1 -0
  249. package/dist/types/CacheAge.mjs +33 -0
  250. package/dist/types/CacheAge.mjs.map +1 -0
  251. package/dist/types/Case.mjs +29 -0
  252. package/dist/types/Case.mjs.map +1 -0
  253. package/dist/types/Constructor.mjs +23 -0
  254. package/dist/types/Constructor.mjs.map +1 -0
  255. package/dist/types/Context.mjs +28 -0
  256. package/dist/types/Context.mjs.map +1 -0
  257. package/dist/types/Currency.mjs +15 -0
  258. package/dist/types/Currency.mjs.map +1 -0
  259. package/dist/types/Enum.mjs +24 -0
  260. package/dist/types/Enum.mjs.map +1 -0
  261. package/dist/types/Environment.mjs +28 -0
  262. package/dist/types/Environment.mjs.map +1 -0
  263. package/dist/types/ErrorOrigin.mjs +1 -0
  264. package/dist/types/ErrorOrigin.mjs.map +1 -0
  265. package/dist/types/Exception.mjs +26 -0
  266. package/dist/types/Exception.mjs.map +1 -0
  267. package/dist/types/Falsy.mjs +10 -0
  268. package/dist/types/Falsy.mjs.map +1 -0
  269. package/dist/types/Func.mjs +8 -0
  270. package/dist/types/Func.mjs.map +1 -0
  271. package/dist/types/Gateway.mjs +24 -0
  272. package/dist/types/Gateway.mjs.map +1 -0
  273. package/dist/types/Get.mjs +13 -0
  274. package/dist/types/Get.mjs.map +1 -0
  275. package/dist/types/Id.mjs +13 -0
  276. package/dist/types/Id.mjs.map +1 -0
  277. package/dist/types/IdName.mjs +1 -0
  278. package/dist/types/IdName.mjs.map +1 -0
  279. package/dist/types/Identity.mjs +1 -0
  280. package/dist/types/Identity.mjs.map +1 -0
  281. package/dist/types/Indexed.mjs +15 -0
  282. package/dist/types/Indexed.mjs.map +1 -0
  283. package/dist/types/Is.mjs +42 -0
  284. package/dist/types/Is.mjs.map +1 -0
  285. package/dist/types/IsA.mjs +16 -0
  286. package/dist/types/IsA.mjs.map +1 -0
  287. package/dist/types/IsDate.mjs +14 -0
  288. package/dist/types/IsDate.mjs.map +1 -0
  289. package/dist/types/IsEqual.mjs +30 -0
  290. package/dist/types/IsEqual.mjs.map +1 -0
  291. package/dist/types/Json.d.ts +1 -0
  292. package/dist/types/Json.mjs +31 -0
  293. package/dist/types/Json.mjs.map +1 -0
  294. package/dist/types/List.mjs +27 -0
  295. package/dist/types/List.mjs.map +1 -0
  296. package/dist/types/Message.mjs +11 -0
  297. package/dist/types/Message.mjs.map +1 -0
  298. package/dist/types/Meta.mjs +19 -0
  299. package/dist/types/Meta.mjs.map +1 -0
  300. package/dist/types/Nullish.mjs +8 -0
  301. package/dist/types/Nullish.mjs.map +1 -0
  302. package/dist/types/Number.mjs +30 -0
  303. package/dist/types/Number.mjs.map +1 -0
  304. package/dist/types/Object.mjs +24 -0
  305. package/dist/types/Object.mjs.map +1 -0
  306. package/dist/types/PageList.mjs +40 -0
  307. package/dist/types/PageList.mjs.map +1 -0
  308. package/dist/types/Parser.mjs +80 -0
  309. package/dist/types/Parser.mjs.map +1 -0
  310. package/dist/types/Primitive.mjs +9 -0
  311. package/dist/types/Primitive.mjs.map +1 -0
  312. package/dist/types/Repository.mjs +24 -0
  313. package/dist/types/Repository.mjs.map +1 -0
  314. package/dist/types/Result.mjs +23 -0
  315. package/dist/types/Result.mjs.map +1 -0
  316. package/dist/types/Results.mjs +26 -0
  317. package/dist/types/Results.mjs.map +1 -0
  318. package/dist/types/Sort.mjs +10 -0
  319. package/dist/types/Sort.mjs.map +1 -0
  320. package/dist/types/Tag.mjs +26 -0
  321. package/dist/types/Tag.mjs.map +1 -0
  322. package/dist/types/Template.mjs +21 -0
  323. package/dist/types/Template.mjs.map +1 -0
  324. package/dist/types/Text.mjs +21 -0
  325. package/dist/types/Text.mjs.map +1 -0
  326. package/dist/types/ToText.mjs +23 -0
  327. package/dist/types/ToText.mjs.map +1 -0
  328. package/dist/types/Try.mjs +31 -0
  329. package/dist/types/Try.mjs.map +1 -0
  330. package/dist/types/TypeGuard.mjs +1 -0
  331. package/dist/types/TypeGuard.mjs.map +1 -0
  332. package/dist/types/Types.mjs +1 -0
  333. package/dist/types/Types.mjs.map +1 -0
  334. package/dist/types/Uri.mjs +119 -0
  335. package/dist/types/Uri.mjs.map +1 -0
  336. package/dist/types/Uuid.mjs +16 -0
  337. package/dist/types/Uuid.mjs.map +1 -0
  338. package/dist/types/Validatable.mjs +13 -0
  339. package/dist/types/Validatable.mjs.map +1 -0
  340. package/dist/types/Value.mjs +14 -0
  341. package/dist/types/Value.mjs.map +1 -0
  342. package/dist/utils/Base64.mjs +12 -0
  343. package/dist/utils/Base64.mjs.map +1 -0
  344. package/dist/utils/Convert.mjs +14 -0
  345. package/dist/utils/Convert.mjs.map +1 -0
  346. package/dist/utils/If.mjs +25 -0
  347. package/dist/utils/If.mjs.map +1 -0
  348. package/dist/utils/Loading.mjs +11 -0
  349. package/dist/utils/Loading.mjs.map +1 -0
  350. package/dist/utils/Log.mjs +21 -0
  351. package/dist/utils/Log.mjs.map +1 -0
  352. package/dist/utils/Mapper.mjs +28 -0
  353. package/dist/utils/Mapper.mjs.map +1 -0
  354. package/dist/utils/Promise.mjs +35 -0
  355. package/dist/utils/Promise.mjs.map +1 -0
  356. package/dist/utils/Property.mjs +13 -0
  357. package/dist/utils/Property.mjs.map +1 -0
  358. package/dist/utils/Seconds.mjs +18 -0
  359. package/dist/utils/Seconds.mjs.map +1 -0
  360. package/dist/utils/Sentence.mjs +71 -0
  361. package/dist/utils/Sentence.mjs.map +1 -0
  362. package/dist/utils/State.mjs +12 -0
  363. package/dist/utils/State.mjs.map +1 -0
  364. package/dist/utils/Traverse.mjs +12 -0
  365. package/dist/utils/Traverse.mjs.map +1 -0
  366. package/dist/utils/View.mjs +41 -0
  367. package/dist/utils/View.mjs.map +1 -0
  368. package/dist/utils/Wait.mjs +17 -0
  369. package/dist/utils/Wait.mjs.map +1 -0
  370. package/dist/validation/Contraints.mjs +65 -0
  371. package/dist/validation/Contraints.mjs.map +1 -0
  372. package/dist/validation/Validate.mjs +35 -0
  373. package/dist/validation/Validate.mjs.map +1 -0
  374. package/dist/validation/When.mjs +31 -0
  375. package/dist/validation/When.mjs.map +1 -0
  376. package/package.json +4 -13
  377. package/src/types/Json.ts +2 -0
@@ -0,0 +1,25 @@
1
+ import {
2
+ Enum
3
+ } from "./chunk-F34HSIZ5.mjs";
4
+ import {
5
+ ofConstruct
6
+ } from "./chunk-ZPNFXK7Y.mjs";
7
+
8
+ // src/data/Database.ts
9
+ var DefaultProvider = class {
10
+ };
11
+ var Database = class _Database extends Enum {
12
+ constructor(name, provider, options) {
13
+ super(name);
14
+ this.provider = provider;
15
+ this.options = options;
16
+ }
17
+ static Default = new _Database("Default", DefaultProvider);
18
+ provide = () => ofConstruct(this.provider, this);
19
+ };
20
+
21
+ export {
22
+ DefaultProvider,
23
+ Database
24
+ };
25
+ //# sourceMappingURL=chunk-27MBNT3X.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/Database.ts"],"sourcesContent":["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 socketTimeoutMS?: number;\n // Query specific options\n queryTimeoutMS?: 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"],"mappings":";;;;;;;;AAmBO,IAAM,kBAAN,MAA8C;AAAC;AAE/C,IAAM,WAAN,MAAM,kBAAiB,KAAK;AAAA,EAGjC,YACE,MACS,UACA,SACT;AACA,UAAM,IAAI;AAHD;AACA;AAAA,EAGX;AAAA,EARA,OAAgB,UAAU,IAAI,UAAS,WAAW,eAAe;AAAA,EAUjE,UAAU,MAAY,YAAY,KAAK,UAAU,IAAI;AACvD;","names":[]}
@@ -0,0 +1,20 @@
1
+ import {
2
+ rest
3
+ } from "./chunk-6QFV73AS.mjs";
4
+ import {
5
+ toHttpStatus
6
+ } from "./chunk-WSG55HKA.mjs";
7
+
8
+ // src/http/toResponse.ts
9
+ function toResponse(status, body, headers) {
10
+ return {
11
+ status: toHttpStatus(status),
12
+ headers,
13
+ body: rest.to(body)
14
+ };
15
+ }
16
+
17
+ export {
18
+ toResponse
19
+ };
20
+ //# sourceMappingURL=chunk-35SXXNQO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/http/toResponse.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;AAKO,SAAS,WAAW,QAA2B,MAAgB,SAA4C;AAChH,SAAO;AAAA,IACL,QAAQ,aAAa,MAAM;AAAA,IAC3B;AAAA,IACA,MAAM,KAAK,GAAG,IAAI;AAAA,EACpB;AACF;","names":[]}
@@ -0,0 +1,18 @@
1
+ import {
2
+ SqlQuery
3
+ } from "./chunk-TCQRHKGS.mjs";
4
+ import {
5
+ ifGet
6
+ } from "./chunk-SJGQU3OG.mjs";
7
+
8
+ // src/sql/Delete.ts
9
+ var Delete = class extends SqlQuery {
10
+ toString() {
11
+ return `DELETE FROM ${this.table}` + ifGet(this.clauses.length, ` WHERE ${this.clauses.join(" AND ")};`, ";");
12
+ }
13
+ };
14
+
15
+ export {
16
+ Delete
17
+ };
18
+ //# sourceMappingURL=chunk-3M6NLHSO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sql/Delete.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;AAGO,IAAM,SAAN,cAAqB,SAAS;AAAA,EACnC,WAAmB;AACjB,WAAO,eAAe,KAAK,KAAK,KAAK,MAAM,KAAK,QAAQ,QAAQ,UAAU,KAAK,QAAQ,KAAK,OAAO,CAAC,KAAK,GAAG;AAAA,EAC9G;AACF;","names":[]}
@@ -0,0 +1,56 @@
1
+ import {
2
+ toResponse
3
+ } from "./chunk-35SXXNQO.mjs";
4
+ import {
5
+ isRestResult
6
+ } from "./chunk-6QFV73AS.mjs";
7
+ import {
8
+ HttpStatus
9
+ } from "./chunk-WSG55HKA.mjs";
10
+ import {
11
+ RequestOptions
12
+ } from "./chunk-AINW2476.mjs";
13
+ import {
14
+ cacheAge
15
+ } from "./chunk-YPVIK4SP.mjs";
16
+ import {
17
+ choose
18
+ } from "./chunk-S6WR4MXU.mjs";
19
+ import {
20
+ toResult
21
+ } from "./chunk-RNLFG4YX.mjs";
22
+ import {
23
+ ctx
24
+ } from "./chunk-CSAPGLC7.mjs";
25
+ import {
26
+ isDefined,
27
+ isEmpty
28
+ } from "./chunk-DEJ7A5PY.mjs";
29
+
30
+ // src/services/AxiosProvider.ts
31
+ import axios from "axios";
32
+ var isResponse = (a) => isDefined(a?.response);
33
+ var isRequest = (a) => isDefined(a?.request);
34
+ var asResponse = (uri, verb, error) => choose(error).type(
35
+ isResponse,
36
+ (r) => toResponse(r.response.status, isRestResult(r.response.data) ? r.response.data : toResult(r.response.statusText, uri.path, uri), r.response.headers)
37
+ ).type(isRequest, (r) => toResponse(r.request.status, toResult(r.request.message, uri.path, uri))).else((e) => toResponse(HttpStatus.InternalServerError, toResult(e.message, uri.path, uri)));
38
+ var AxiosProvider = class {
39
+ constructor(ai = axios) {
40
+ this.ai = ai;
41
+ }
42
+ execute = ({ uri, verb, body, transform = (r) => r, transformError = (r) => r, options = RequestOptions.Json }) => this.ai.request({
43
+ url: uri.toString(),
44
+ method: verb.toString(),
45
+ headers: uri.isInternal && isEmpty(options.headers.Authorization) ? options.bearer(ctx.request.jwt).headers : options.headers,
46
+ data: options.type.encode(body),
47
+ maxRedirects: options.requestOptions.maxRedirects,
48
+ ...options.requestOptions.timeout && { timeout: cacheAge.toMilliseconds(options?.requestOptions.timeout) },
49
+ ...options.requestOptions.validateStatus && { validateStatus: options.requestOptions.validateStatus }
50
+ }).then((r) => toResponse(r.status, transform(r.data), r.headers)).catch((e) => Promise.reject(asResponse(uri, verb, transformError(e))));
51
+ };
52
+
53
+ export {
54
+ AxiosProvider
55
+ };
56
+ //# sourceMappingURL=chunk-4CRBLF44.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/AxiosProvider.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAiE;AAgBxE,IAAM,aAAa,CAAC,MAAiD,UAAW,GAAW,QAAQ;AACnG,IAAM,YAAY,CAAC,MAAsC,UAAW,GAAW,OAAO;AAEtF,IAAM,aAAa,CAAC,KAAU,MAAgB,UAC5C,OAAO,KAAK,EACT;AAAA,EAAK;AAAA,EAAY,OAChB,WAAW,EAAE,SAAS,QAAQ,aAAa,EAAE,SAAS,IAAI,IAAI,EAAE,SAAS,OAAO,SAAS,EAAE,SAAS,YAAY,IAAI,MAAM,GAAG,GAAG,EAAE,SAAS,OAAO;AACpJ,EACC,KAAK,WAAW,OAAK,WAAW,EAAE,QAAQ,QAAQ,SAAS,EAAE,QAAQ,SAAS,IAAI,MAAM,GAAG,CAAC,CAAC,EAC7F,KAAK,OAAK,WAAW,WAAW,qBAAqB,SAAS,EAAE,SAAS,IAAI,MAAM,GAAG,CAAC,CAAC;AAEtF,IAAM,gBAAN,MAA+C;AAAA,EACpD,YAAqB,KAAoB,OAAO;AAA3B;AAAA,EAA4B;AAAA,EAEjD,UAAU,CAAC,EAAE,KAAK,MAAM,MAAM,YAAY,CAAC,MAAW,GAAG,iBAAiB,CAAC,MAAW,GAAG,UAAU,eAAe,KAAK,MACrH,KAAK,GACF,QAAQ;AAAA,IACP,KAAK,IAAI,SAAS;AAAA,IAClB,QAAQ,KAAK,SAAS;AAAA,IACtB,SAAS,IAAI,cAAc,QAAQ,QAAQ,QAAQ,aAAa,IAAI,QAAQ,OAAO,IAAI,QAAQ,GAAG,EAAE,UAAU,QAAQ;AAAA,IACtH,MAAM,QAAQ,KAAK,OAAO,IAAI;AAAA,IAC9B,cAAc,QAAQ,eAAe;AAAA,IACrC,GAAI,QAAQ,eAAe,WAAW,EAAE,SAAS,SAAS,eAAe,SAAS,eAAe,OAAO,EAAE;AAAA,IAC1G,GAAI,QAAQ,eAAe,kBAAkB,EAAE,gBAAgB,QAAQ,eAAe,eAAe;AAAA,EACvG,CAAC,EACA,KAAK,OAAK,WAAW,EAAE,QAAQ,UAAU,EAAE,IAAI,GAAG,EAAE,OAAO,CAAC,EAC5D,MAAM,OAAK,QAAQ,OAAO,WAAW,KAAK,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC;AAC1E;","names":[]}
@@ -0,0 +1,164 @@
1
+ import {
2
+ entries
3
+ } from "./chunk-HULI73W2.mjs";
4
+ import {
5
+ toList
6
+ } from "./chunk-ABGKS4KE.mjs";
7
+ import {
8
+ asString,
9
+ capitalize,
10
+ replaceAll
11
+ } from "./chunk-BDA5LB4S.mjs";
12
+ import {
13
+ ofGet
14
+ } from "./chunk-SJGQU3OG.mjs";
15
+ import {
16
+ toName
17
+ } from "./chunk-ZPNFXK7Y.mjs";
18
+ import {
19
+ isEmpty,
20
+ isNotEmpty
21
+ } from "./chunk-DEJ7A5PY.mjs";
22
+
23
+ // src/types/ToText.ts
24
+ var ToText = class {
25
+ constructor(subject) {
26
+ this.subject = subject;
27
+ }
28
+ get cap() {
29
+ return this.map((s) => capitalize(s?.toLowerCase()));
30
+ }
31
+ get capFirst() {
32
+ return this.map((s) => capitalize(s));
33
+ }
34
+ get title() {
35
+ return this.map(
36
+ (s) => s.split(" ").map((w) => text(w).cap).join(" ")
37
+ );
38
+ }
39
+ get pascal() {
40
+ return this.title.replace(" ", "");
41
+ }
42
+ get lower() {
43
+ return this.map((s) => s.toLowerCase());
44
+ }
45
+ get upper() {
46
+ return this.map((s) => s.toUpperCase());
47
+ }
48
+ get camel() {
49
+ return this.title.trim.map((s) => `${s.charAt(0).toLowerCase()}${s.slice(1)}`);
50
+ }
51
+ get kebab() {
52
+ return this.lower.replace(" ", "-");
53
+ }
54
+ get strictKebab() {
55
+ return this.map((s) => s.replace(/[^a-z\d]+/gi, " ").trim()).kebab;
56
+ }
57
+ get slug() {
58
+ return this.map(
59
+ (s) => s.replace(/ß/g, "ss").normalize("NFKD").replace(/[\u0300-\u036F]/g, "").toLowerCase().replace(/[^a-z\d]+/g, "-").replace(/(^-)|(-$)/g, "")
60
+ );
61
+ }
62
+ get snake() {
63
+ return this.upper.replace(" ", "_");
64
+ }
65
+ get plural() {
66
+ return this.ifLike("") ?? this.add("s");
67
+ }
68
+ get space() {
69
+ return this.map((s) => s.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/[_-]/g, " "));
70
+ }
71
+ get sentence() {
72
+ return this.isEmpty ? this : this.map((s) => `${s.charAt(0).toUpperCase()}${s.slice(1)}.`);
73
+ }
74
+ get initials() {
75
+ return this.map(
76
+ (s) => s.split(" ").map((w) => w[0]).join("")
77
+ );
78
+ }
79
+ get trim() {
80
+ return this.map((s) => s.replace(/[- ,_#]/g, ""));
81
+ }
82
+ get trimSentence() {
83
+ return this.map(
84
+ (s) => s.replace(/[\u200B-\u200D\uFEFF]/g, "").replace(/[\s\u00A0]+/g, " ").replace(/\s+([.,;:!?])/g, "$1").trim()
85
+ );
86
+ }
87
+ get isEmpty() {
88
+ return isEmpty(this.toString());
89
+ }
90
+ parse = (subject, options = {}) => text(template(this.subject, subject, { type: toName(subject), ...options }));
91
+ is = (...others) => others.some((o) => this.toString() === text(o).toString());
92
+ equals = this.is;
93
+ isLike = (...others) => others.some((o) => this.trim.lower.is(text(o).trim.lower));
94
+ ifLike = (...others) => this.isLike(...others) ? this : void 0;
95
+ endsWith = (end) => this.subject.endsWith(asString(end));
96
+ startsWith = (end) => this.subject.startsWith(asString(end));
97
+ first = (n) => this.map((s) => s.substring(0, n));
98
+ last = (n) => this.map((s) => s.substring(s.length - n));
99
+ map = (func) => text(ofGet(func, this.subject));
100
+ replace = (search, replace) => this.map((s) => replaceAll(s, search, replace));
101
+ add = (add, separator = "") => this.map((s) => isNotEmpty(add) ? `${s}${separator}${text(add)}` : s);
102
+ with = (separator, ...other) => this.map(
103
+ (s) => toList(s).add(...other.map((u) => text(u).toString())).filter((s2) => isNotEmpty(s2)).join(separator)
104
+ );
105
+ split = (separator = " ") => toList(this.subject.split(separator));
106
+ toString() {
107
+ return this.subject;
108
+ }
109
+ toJSON() {
110
+ return this.subject;
111
+ }
112
+ };
113
+ function text(subject, alt = "") {
114
+ const sub = subject ? asString(subject) : alt;
115
+ return new ToText(sub !== "[object Object]" ? sub : "");
116
+ }
117
+ function textValue(subject, prop) {
118
+ const p = prop.split(".");
119
+ const root = subject?.[p[0]];
120
+ const initial = typeof root === "object" && root !== null ? root : text(root);
121
+ return p.splice(1).reduce((t, s) => t?.[s], initial)?.toString() ?? "";
122
+ }
123
+
124
+ // src/types/Template.ts
125
+ var Template = class {
126
+ constructor(template2, subject = {}, options = {}) {
127
+ this.template = template2;
128
+ this.subject = subject;
129
+ this.options = options;
130
+ }
131
+ toString = () => {
132
+ return entries(this.options).reduce((t, [k]) => this.option(t, k), this.object()).replace(" ", " ");
133
+ };
134
+ props = (tmpl, key, result = toList()) => {
135
+ const i1 = tmpl.indexOf(`{${key}`);
136
+ if (i1 < 0) {
137
+ return result;
138
+ }
139
+ const i2 = tmpl.indexOf("}", i1);
140
+ return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));
141
+ };
142
+ object = () => {
143
+ return this.props(this.template, "this").reduce((t, p) => t.replace(`{${p}}`, textValue(this.subject, p.replace("this.", ""))), this.template);
144
+ };
145
+ option = (tmpl, prop) => {
146
+ return this.props(tmpl, prop).reduce((t, p) => t.replace(`{${p}}`, textValue(this.options, p)), tmpl);
147
+ };
148
+ };
149
+ function template(tmpl, subject, options = {}) {
150
+ return new Template(asString(tmpl), subject, {
151
+ type: toName(subject),
152
+ subject: text(JSON.stringify(subject)),
153
+ ...options
154
+ });
155
+ }
156
+
157
+ export {
158
+ Template,
159
+ template,
160
+ ToText,
161
+ text,
162
+ textValue
163
+ };
164
+ //# sourceMappingURL=chunk-4K4X43SV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/ToText.ts","../src/types/Template.ts"],"sourcesContent":["import { asString, capitalize, replaceAll, Text } from './Text';\nimport { toName } from './Constructor';\nimport { Optional } from './Types';\nimport { Get, ofGet } from './Get';\nimport { isEmpty, isNotEmpty } from './Is';\nimport { List, toList } from './List';\nimport { JsonValue } from './Json';\nimport { template } from './Template';\n\nexport class ToText implements Text {\n constructor(readonly subject: string) {}\n\n get cap(): ToText {\n return this.map(s => capitalize(s?.toLowerCase()));\n }\n\n get capFirst(): ToText {\n return this.map(s => capitalize(s));\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 trimSentence(): ToText {\n return this.map(s =>\n s\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\n .replace(/[\\s\\u00A0]+/g, ' ')\n .replace(/\\s+([.,;:!?])/g, '$1')\n .trim()\n );\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 split = (separator: string = ' '): List<string> => toList(this.subject.split(separator));\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 const root = subject?.[p[0]];\n const initial = typeof root === 'object' && root !== null ? root : text(root);\n return (\n p\n .splice(1)\n .reduce((t, s) => t?.[s], initial)\n ?.toString() ?? ''\n );\n}\n","import { List, toList } from './List';\nimport { asString, Text } from './Text';\nimport { toName } from './Constructor';\nimport { entries } from './Object';\nimport { text, textValue } from './ToText';\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: TemplateOptions = {}\n ) {}\n\n toString = (): string => {\n return entries(this.options)\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"],"mappings":"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","names":["s","template"]}
@@ -0,0 +1,58 @@
1
+ import {
2
+ entries,
3
+ values
4
+ } from "./chunk-HULI73W2.mjs";
5
+ import {
6
+ toList
7
+ } from "./chunk-ABGKS4KE.mjs";
8
+ import {
9
+ on,
10
+ use
11
+ } from "./chunk-ZPNFXK7Y.mjs";
12
+ import {
13
+ isDefined
14
+ } from "./chunk-DEJ7A5PY.mjs";
15
+
16
+ // src/types/Meta.ts
17
+ import "reflect-metadata";
18
+ var ClassMeta = class {
19
+ constructor(subject, data = (subject.prototype ?? subject).constructor) {
20
+ this.subject = subject;
21
+ this.data = data;
22
+ }
23
+ get = (key) => Reflect.getMetadata(key, this.data);
24
+ set = (key, value) => {
25
+ Reflect.defineMetadata(key, value, this.data);
26
+ return value;
27
+ };
28
+ entries = () => entries(this.subject);
29
+ parse = (f, options = {}) => {
30
+ const { initial = {}, skipUndefined = false } = options;
31
+ return this.entries().reduce((a, [k, val]) => use(f(val), (v) => isDefined(v) || !skipUndefined ? on(a, (a2) => a2[k] = v) : a), initial);
32
+ };
33
+ properties = (key) => toList([...Object.getOwnPropertyNames(this.subject), ...Object.getOwnPropertyNames(Object.getPrototypeOf(this.subject))]).map((p) => this.property(p)).filter((p) => key ? p.get(key) : p);
34
+ keys = (key) => this.properties().map((p) => p.get(key)).reduce((list, u) => u ? list.add(u) : list, toList());
35
+ values = () => values(this.subject);
36
+ property = (property) => new PropertyMeta(this.subject, property);
37
+ };
38
+ var PropertyMeta = class {
39
+ constructor(subject, property, data = Reflect.getMetadata(property, subject)) {
40
+ this.subject = subject;
41
+ this.property = property;
42
+ this.data = data;
43
+ }
44
+ get value() {
45
+ return this.subject[this.property];
46
+ }
47
+ get = (key) => isDefined(this.data) && isDefined(this.data[key]) ? this.data[key] : void 0;
48
+ set = (key, value) => {
49
+ Reflect.defineMetadata(this.property, { ...this.data, [key]: value }, this.subject);
50
+ return value;
51
+ };
52
+ };
53
+ var meta = (subject) => new ClassMeta(subject ?? {});
54
+
55
+ export {
56
+ meta
57
+ };
58
+ //# sourceMappingURL=chunk-4LVZOQ6O.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types/Meta.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO;AASP,IAAM,YAAN,MAAgB;AAAA,EACd,YACW,SACQ,QAAa,QAAQ,aAAa,SAAS,aAC5D;AAFS;AACQ;AAAA,EAChB;AAAA,EAEH,MAAM,CAAI,QAAmB,QAAQ,YAAY,KAAK,KAAK,IAAI;AAAA,EAE/D,MAAM,CAAI,KAAa,UAAgB;AACrC,YAAQ,eAAe,KAAK,OAAO,KAAK,IAAI;AAC5C,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,MAAmC,QAAW,KAAK,OAAO;AAAA,EAEpE,QAAQ,CAAa,GAAsB,UAA4B,CAAC,MAA2B;AACjG,UAAM,EAAE,UAAU,CAAC,GAAG,gBAAgB,MAAM,IAAI;AAChD,WAAO,KAAK,QAAe,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,IAAI,EAAE,GAAG,GAAG,OAAM,UAAU,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAAA,OAAMA,GAAE,CAAC,IAAI,CAAE,IAAI,CAAE,GAAG,OAAO;AAAA,EAC/I;AAAA,EAEA,aAAa,CAAC,QACZ,OAAO,CAAC,GAAG,OAAO,oBAAoB,KAAK,OAAO,GAAG,GAAG,OAAO,oBAAoB,OAAO,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EACrH,IAAI,OAAK,KAAK,SAAS,CAAC,CAAC,EACzB,OAAO,OAAM,MAAM,EAAE,IAAI,GAAG,IAAI,CAAE;AAAA,EAEvC,OAAO,CAAU,QACf,KAAK,WAAW,EACb,IAAI,OAAK,EAAE,IAAO,GAAG,CAAC,EACtB,OAAO,CAAC,MAAM,MAAO,IAAI,KAAK,IAAI,CAAC,IAAI,MAAO,OAAU,CAAC;AAAA,EAE9D,SAAS,MAA4B,OAAU,KAAK,OAAO;AAAA,EAE3D,WAAW,CAAC,aAA4C,IAAI,aAAa,KAAK,SAAS,QAAQ;AACjG;AAEA,IAAM,eAAN,MAAmB;AAAA,EACjB,YACW,SACA,UACQ,OAAO,QAAQ,YAAY,UAAU,OAAO,GAC7D;AAHS;AACA;AACQ;AAAA,EAChB;AAAA,EAEH,IAAI,QAAa;AACf,WAAO,KAAK,QAAQ,KAAK,QAAQ;AAAA,EACnC;AAAA,EAEA,MAAM,CAAI,QAA8B,UAAU,KAAK,IAAI,KAAK,UAAU,KAAK,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,GAAG,IAAU;AAAA,EAEpH,MAAM,CAAI,KAAa,UAAgB;AACrC,YAAQ,eAAe,KAAK,UAAU,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,KAAK,OAAO;AAClF,WAAO;AAAA,EACT;AACF;AAEO,IAAM,OAAO,CAAC,YAAgC,IAAI,UAAU,WAAW,CAAC,CAAC;","names":["a"]}
@@ -0,0 +1,16 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result)
9
+ __defProp(target, key, result);
10
+ return result;
11
+ };
12
+
13
+ export {
14
+ __decorateClass
15
+ };
16
+ //# sourceMappingURL=chunk-4N72FQFX.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,20 @@
1
+ import {
2
+ Enum
3
+ } from "./chunk-F34HSIZ5.mjs";
4
+
5
+ // src/http/HttpVerb.ts
6
+ var HttpVerb = class _HttpVerb extends Enum {
7
+ static Get = new _HttpVerb("Get");
8
+ static Put = new _HttpVerb("Put");
9
+ static Patch = new _HttpVerb("Patch");
10
+ static Post = new _HttpVerb("Post");
11
+ static Delete = new _HttpVerb("Delete");
12
+ constructor(name) {
13
+ super(name, name.toLowerCase(), name.toUpperCase());
14
+ }
15
+ };
16
+
17
+ export {
18
+ HttpVerb
19
+ };
20
+ //# sourceMappingURL=chunk-5AV36UKS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/http/HttpVerb.ts"],"sourcesContent":["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"],"mappings":";;;;;AAEO,IAAM,WAAN,MAAM,kBAAiB,KAAK;AAAA,EACjC,OAAO,MAAM,IAAI,UAAS,KAAK;AAAA,EAC/B,OAAO,MAAM,IAAI,UAAS,KAAK;AAAA,EAC/B,OAAO,QAAQ,IAAI,UAAS,OAAO;AAAA,EACnC,OAAO,OAAO,IAAI,UAAS,MAAM;AAAA,EACjC,OAAO,SAAS,IAAI,UAAS,QAAQ;AAAA,EAErC,YAAY,MAAc;AACxB,UAAM,MAAM,KAAK,YAAY,GAAG,KAAK,YAAY,CAAC;AAAA,EACpD;AACF;","names":[]}
@@ -0,0 +1,142 @@
1
+ import {
2
+ seconds
3
+ } from "./chunk-KJVTSC6I.mjs";
4
+ import {
5
+ isDate
6
+ } from "./chunk-ADJAEGCT.mjs";
7
+ import {
8
+ choose,
9
+ tryTo
10
+ } from "./chunk-S6WR4MXU.mjs";
11
+ import {
12
+ Value
13
+ } from "./chunk-WSBULPUZ.mjs";
14
+ import {
15
+ ifDefined
16
+ } from "./chunk-ABGKS4KE.mjs";
17
+ import {
18
+ isA
19
+ } from "./chunk-ZHXKBOK2.mjs";
20
+ import {
21
+ use
22
+ } from "./chunk-ZPNFXK7Y.mjs";
23
+ import {
24
+ isDefined,
25
+ isNumber,
26
+ isString
27
+ } from "./chunk-DEJ7A5PY.mjs";
28
+
29
+ // src/domain/DateTime.ts
30
+ import { DateTime as LuxonDateTime, Settings } from "luxon";
31
+ Settings.defaultZone = "utc";
32
+ var DateTime = class _DateTime extends Value {
33
+ luxon;
34
+ constructor(value, format) {
35
+ const luxon = choose(value).type(isString, (v) => format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true })).type(isNumber, (v) => LuxonDateTime.fromMillis(v)).type(isDate, (v) => LuxonDateTime.fromJSDate(v)).type(isDateTime, (v) => v.luxon).else(value instanceof LuxonDateTime ? value : LuxonDateTime.fromISO(void 0));
36
+ super(luxon.toISO() ?? void 0);
37
+ this.luxon = luxon;
38
+ }
39
+ static get now() {
40
+ return new _DateTime(LuxonDateTime.utc());
41
+ }
42
+ get isValid() {
43
+ return isDefined(this.value) && this.utc.isValid;
44
+ }
45
+ /**
46
+ * @deprecated Deprecated in favor for DateTime.from as that also accepts locales and another DateTime
47
+ */
48
+ get fromNow() {
49
+ return this.from();
50
+ }
51
+ get inAmsterdam() {
52
+ return this.withZone("Europe/Amsterdam");
53
+ }
54
+ get inNewYork() {
55
+ return this.withZone("America/New_York");
56
+ }
57
+ get inLondon() {
58
+ return this.withZone("Europe/London");
59
+ }
60
+ get inWarsaw() {
61
+ return this.withZone("Europe/Warsaw");
62
+ }
63
+ get utc() {
64
+ return this.luxon.setZone("utc");
65
+ }
66
+ from(dateOrLocale, maybeLocale) {
67
+ return use(
68
+ (isString(dateOrLocale) ? dateOrLocale : maybeLocale) ?? "en",
69
+ (locale) => ifDefined(
70
+ isA(dateOrLocale) ? dateOrLocale : void 0,
71
+ (d) => this.utc.setLocale(locale).toRelative({ base: d.utc }),
72
+ () => this.utc.setLocale(locale).toRelative()
73
+ )
74
+ ) ?? "";
75
+ }
76
+ isAfter(dt2) {
77
+ return this.utc > dt2.utc;
78
+ }
79
+ isBefore(dt2) {
80
+ return this.utc < dt2.utc;
81
+ }
82
+ equals(dt2) {
83
+ return this.utc.hasSame(dt2.utc, "millisecond");
84
+ }
85
+ add(n, unit = "day") {
86
+ return new _DateTime(this.luxon.plus(isNumber(n) ? { [unit]: n } : n));
87
+ }
88
+ subtract(n, unit = "day") {
89
+ return new _DateTime(this.luxon.minus(isNumber(n) ? { [unit]: n } : n));
90
+ }
91
+ diff(other, unit = "day", opts) {
92
+ return Math[opts?.rounding ?? "floor"](this.utc.diff(other.utc).as(unit));
93
+ }
94
+ startOf(unit = "day") {
95
+ return new _DateTime(this.luxon.startOf(unit));
96
+ }
97
+ endOf(unit = "day") {
98
+ return new _DateTime(this.luxon.endOf(unit));
99
+ }
100
+ isWeekend() {
101
+ return this.luxon.isWeekend;
102
+ }
103
+ withZone(zone) {
104
+ return new _DateTime(this.luxon.setZone(zone));
105
+ }
106
+ toString() {
107
+ return this.value ?? "";
108
+ }
109
+ toJSON() {
110
+ return this.utc.toISO();
111
+ }
112
+ toFormat(format) {
113
+ return this.luxon.toFormat(format);
114
+ }
115
+ toLocale(locale = "nl-NL", format = "D") {
116
+ return this.luxon.setLocale(locale).toFormat(format);
117
+ }
118
+ toFull(locale) {
119
+ return this.toLocale(locale, "DDD");
120
+ }
121
+ toDate() {
122
+ return this.isValid ? this.utc.toJSDate() : void 0;
123
+ }
124
+ toEpoch() {
125
+ return this.luxon.toMillis();
126
+ }
127
+ ago(end = _DateTime.now) {
128
+ return seconds.toText(end.diff(this, "second"));
129
+ }
130
+ withClock(clock) {
131
+ return tryTo(() => [this.toDate(), clock.toDate()]).map(([td, cd]) => new Date(td.getFullYear(), td.getMonth(), td.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds())).map((d) => new _DateTime(d)).value;
132
+ }
133
+ };
134
+ var isDateTime = (dt2) => isDefined(dt2) && dt2 instanceof DateTime;
135
+ var dt = (dt2) => new DateTime(dt2);
136
+
137
+ export {
138
+ DateTime,
139
+ isDateTime,
140
+ dt
141
+ };
142
+ //# sourceMappingURL=chunk-5DJPREIN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domain/DateTime.ts"],"sourcesContent":["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';\nimport { seconds } from '../utils/Seconds';\nimport { tryTo } from '../types/Try';\nimport { use } from '../types/Constructor';\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 type DatetimeInput = string | number | Date | DateTime | null;\n\nexport class DateTime extends Value<Optional<string>> {\n protected readonly luxon: LuxonDateTime;\n\n constructor(value?: DatetimeInput);\n constructor(value?: string, format?: string);\n constructor(value?: DatetimeInput, format?: string) {\n const luxon = 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 => v.luxon)\n // Allow constructing with LuxonDateTime without exposing types\n .else(value instanceof LuxonDateTime ? value : LuxonDateTime.fromISO(undefined as any));\n\n super(luxon.toISO() ?? undefined);\n this.luxon = luxon;\n }\n\n static get now(): DateTime {\n return new DateTime(LuxonDateTime.utc() as any);\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 get inAmsterdam(): DateTime {\n return this.withZone('Europe/Amsterdam');\n }\n\n get inNewYork(): DateTime {\n return this.withZone('America/New_York');\n }\n\n get inLondon(): DateTime {\n return this.withZone('Europe/London');\n }\n\n get inWarsaw(): DateTime {\n return this.withZone('Europe/Warsaw');\n }\n\n protected get utc(): LuxonDateTime {\n return this.luxon.setZone('utc');\n }\n\n from(locale?: string): string;\n\n from(date?: DateTime, locale?: string): string;\n\n from(dateOrLocale?: string | DateTime, maybeLocale?: string): string {\n return (\n use((isString(dateOrLocale) ? dateOrLocale : maybeLocale) ?? 'en', locale =>\n ifDefined(\n isA<DateTime>(dateOrLocale) ? dateOrLocale : undefined,\n d => this.utc.setLocale(locale).toRelative({ base: d.utc }),\n () => this.utc.setLocale(locale).toRelative()\n )\n ) ?? ''\n );\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, unit?: DurationUnit): DateTime;\n\n add(duration: Duration): DateTime;\n\n add(n: number | Duration, unit: DurationUnit = 'day'): DateTime {\n return new DateTime(this.luxon.plus(isNumber(n) ? { [unit]: n } : n) as any);\n }\n\n subtract(n: number, unit?: DurationUnit): DateTime;\n\n subtract(duration: Duration): DateTime;\n\n subtract(n: number | Duration, unit: DurationUnit = 'day'): DateTime {\n return new DateTime(this.luxon.minus(isNumber(n) ? { [unit]: n } : n) as any);\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) as any);\n }\n\n endOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.endOf(unit) as any);\n }\n\n isWeekend(): boolean {\n return this.luxon.isWeekend;\n }\n\n withZone(zone: string): DateTime {\n return new DateTime(this.luxon.setZone(zone) as any);\n }\n\n toString(): string {\n return this.value ?? '';\n }\n\n toJSON(): JsonValue {\n return this.utc.toISO();\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 toEpoch(): number {\n return this.luxon.toMillis();\n }\n\n ago(end: DateTime = DateTime.now): string {\n return seconds.toText(end.diff(this, 'second'));\n }\n\n withClock(clock: DateTime): DateTime {\n return tryTo(() => [this.toDate() as Date, clock.toDate() as Date])\n .map(([td, cd]) => new Date(td.getFullYear(), td.getMonth(), td.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds()))\n .map(d => new DateTime(d)).value;\n }\n}\n\nexport const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;\n\nexport const dt = (dt?: DatetimeInput): DateTime => new DateTime(dt);\n"],"mappings":"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","names":["dt"]}