semola 0.5.1 → 0.5.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 (488) hide show
  1. package/README.md +144 -29
  2. package/dist/api/core/index.cjs +206 -0
  3. package/dist/api/core/index.d.cts +21 -0
  4. package/dist/api/core/index.d.cts.map +1 -0
  5. package/dist/api/core/index.d.mts +21 -0
  6. package/dist/api/core/index.d.mts.map +1 -0
  7. package/dist/api/core/index.mjs +208 -0
  8. package/dist/api/core/index.mjs.map +1 -0
  9. package/dist/api/core/types.d.cts +107 -0
  10. package/dist/api/core/types.d.cts.map +1 -0
  11. package/dist/api/core/types.d.mts +107 -0
  12. package/dist/api/core/types.d.mts.map +1 -0
  13. package/dist/api/middleware/index.cjs +8 -0
  14. package/dist/api/middleware/index.d.cts +11 -0
  15. package/dist/api/middleware/index.d.cts.map +1 -0
  16. package/dist/api/middleware/index.d.mts +11 -0
  17. package/dist/api/middleware/index.d.mts.map +1 -0
  18. package/dist/api/middleware/index.mjs +10 -0
  19. package/dist/api/middleware/index.mjs.map +1 -0
  20. package/dist/api/middleware/types.d.cts +16 -0
  21. package/dist/api/middleware/types.d.cts.map +1 -0
  22. package/dist/api/middleware/types.d.mts +16 -0
  23. package/dist/api/middleware/types.d.mts.map +1 -0
  24. package/dist/api/openapi/index.cjs +254 -0
  25. package/dist/api/openapi/index.mjs +256 -0
  26. package/dist/api/openapi/index.mjs.map +1 -0
  27. package/dist/api/openapi/types.d.cts +60 -0
  28. package/dist/api/openapi/types.d.cts.map +1 -0
  29. package/dist/api/openapi/types.d.mts +60 -0
  30. package/dist/api/openapi/types.d.mts.map +1 -0
  31. package/dist/api/validation/index.cjs +64 -0
  32. package/dist/api/validation/index.mjs +61 -0
  33. package/dist/api/validation/index.mjs.map +1 -0
  34. package/dist/cache/types.d.cts +17 -0
  35. package/dist/cache/types.d.cts.map +1 -0
  36. package/dist/cache/types.d.mts +17 -0
  37. package/dist/cache/types.d.mts.map +1 -0
  38. package/dist/cron/builder/index.cjs +166 -0
  39. package/dist/cron/builder/index.d.cts +28 -0
  40. package/dist/cron/builder/index.d.cts.map +1 -0
  41. package/dist/cron/builder/index.d.mts +28 -0
  42. package/dist/cron/builder/index.d.mts.map +1 -0
  43. package/dist/cron/builder/index.mjs +163 -0
  44. package/dist/cron/builder/index.mjs.map +1 -0
  45. package/dist/cron/builder/types.cjs +27 -0
  46. package/dist/cron/builder/types.d.cts +79 -0
  47. package/dist/cron/builder/types.d.cts.map +1 -0
  48. package/dist/cron/builder/types.d.mts +79 -0
  49. package/dist/cron/builder/types.d.mts.map +1 -0
  50. package/dist/cron/builder/types.mjs +28 -0
  51. package/dist/cron/builder/types.mjs.map +1 -0
  52. package/dist/cron/core/index.cjs +308 -0
  53. package/dist/cron/core/index.d.cts +39 -0
  54. package/dist/cron/core/index.d.cts.map +1 -0
  55. package/dist/cron/core/index.d.mts +39 -0
  56. package/dist/cron/core/index.d.mts.map +1 -0
  57. package/dist/cron/core/index.mjs +310 -0
  58. package/dist/cron/core/index.mjs.map +1 -0
  59. package/dist/cron/core/scanner.cjs +237 -0
  60. package/dist/cron/core/scanner.mjs +238 -0
  61. package/dist/cron/core/scanner.mjs.map +1 -0
  62. package/dist/cron/core/types.d.cts +11 -0
  63. package/dist/cron/core/types.d.cts.map +1 -0
  64. package/dist/cron/core/types.d.mts +11 -0
  65. package/dist/cron/core/types.d.mts.map +1 -0
  66. package/dist/errors/types.d.cts +5 -0
  67. package/dist/errors/types.d.cts.map +1 -0
  68. package/dist/errors/types.d.mts +5 -0
  69. package/dist/errors/types.d.mts.map +1 -0
  70. package/dist/i18n/types.d.cts +13 -0
  71. package/dist/i18n/types.d.cts.map +1 -0
  72. package/dist/i18n/types.d.mts +13 -0
  73. package/dist/i18n/types.d.mts.map +1 -0
  74. package/dist/lib/api/index.cjs +5 -0
  75. package/dist/lib/api/index.d.cts +5 -0
  76. package/dist/lib/api/index.d.mts +5 -0
  77. package/dist/lib/api/index.mjs +3 -0
  78. package/dist/lib/cache/index.cjs +74 -0
  79. package/dist/lib/cache/index.d.cts +36 -0
  80. package/dist/lib/cache/index.d.cts.map +1 -0
  81. package/dist/lib/cache/index.d.mts +36 -0
  82. package/dist/lib/cache/index.d.mts.map +1 -0
  83. package/dist/lib/cache/index.mjs +75 -0
  84. package/dist/lib/cache/index.mjs.map +1 -0
  85. package/dist/lib/cron/index.cjs +13 -0
  86. package/dist/lib/cron/index.d.cts +4 -0
  87. package/dist/lib/cron/index.d.mts +4 -0
  88. package/dist/lib/cron/index.mjs +4 -0
  89. package/dist/lib/errors/index.cjs +30 -0
  90. package/dist/lib/errors/index.d.cts +13 -0
  91. package/dist/lib/errors/index.d.cts.map +1 -0
  92. package/dist/lib/errors/index.d.mts +13 -0
  93. package/dist/lib/errors/index.d.mts.map +1 -0
  94. package/dist/lib/errors/index.mjs +28 -0
  95. package/dist/lib/errors/index.mjs.map +1 -0
  96. package/dist/lib/i18n/index.cjs +42 -0
  97. package/dist/lib/i18n/index.d.cts +20 -0
  98. package/dist/lib/i18n/index.d.cts.map +1 -0
  99. package/dist/lib/i18n/index.d.mts +20 -0
  100. package/dist/lib/i18n/index.d.mts.map +1 -0
  101. package/dist/lib/i18n/index.mjs +43 -0
  102. package/dist/lib/i18n/index.mjs.map +1 -0
  103. package/dist/lib/logging/index.cjs +18 -0
  104. package/dist/lib/logging/index.d.cts +7 -0
  105. package/dist/lib/logging/index.d.mts +7 -0
  106. package/dist/lib/logging/index.mjs +5 -0
  107. package/dist/lib/orm/index.cjs +20 -0
  108. package/dist/lib/orm/index.d.cts +7 -0
  109. package/dist/lib/orm/index.d.mts +7 -0
  110. package/dist/lib/orm/index.mjs +6 -0
  111. package/dist/lib/policy/index.cjs +99 -0
  112. package/dist/lib/policy/index.d.cts +21 -0
  113. package/dist/lib/policy/index.d.cts.map +1 -0
  114. package/dist/lib/policy/index.d.mts +21 -0
  115. package/dist/lib/policy/index.d.mts.map +1 -0
  116. package/dist/lib/policy/index.mjs +81 -0
  117. package/dist/lib/policy/index.mjs.map +1 -0
  118. package/dist/lib/prompts/index.cjs +409 -0
  119. package/dist/lib/prompts/index.d.cts +31 -0
  120. package/dist/lib/prompts/index.d.cts.map +1 -0
  121. package/dist/lib/prompts/index.d.mts +31 -0
  122. package/dist/lib/prompts/index.d.mts.map +1 -0
  123. package/dist/lib/prompts/index.mjs +405 -0
  124. package/dist/lib/prompts/index.mjs.map +1 -0
  125. package/dist/lib/pubsub/index.cjs +117 -0
  126. package/dist/lib/pubsub/index.d.cts +36 -0
  127. package/dist/lib/pubsub/index.d.cts.map +1 -0
  128. package/dist/lib/pubsub/index.d.mts +36 -0
  129. package/dist/lib/pubsub/index.d.mts.map +1 -0
  130. package/dist/lib/pubsub/index.mjs +118 -0
  131. package/dist/lib/pubsub/index.mjs.map +1 -0
  132. package/dist/lib/queue/index.cjs +182 -0
  133. package/dist/lib/queue/index.d.cts +32 -0
  134. package/dist/lib/queue/index.d.cts.map +1 -0
  135. package/dist/lib/queue/index.d.mts +32 -0
  136. package/dist/lib/queue/index.d.mts.map +1 -0
  137. package/dist/lib/queue/index.mjs +183 -0
  138. package/dist/lib/queue/index.mjs.map +1 -0
  139. package/dist/lib/workflow/index.cjs +534 -0
  140. package/dist/lib/workflow/index.d.cts +7 -0
  141. package/dist/lib/workflow/index.d.cts.map +1 -0
  142. package/dist/lib/workflow/index.d.mts +7 -0
  143. package/dist/lib/workflow/index.d.mts.map +1 -0
  144. package/dist/lib/workflow/index.mjs +535 -0
  145. package/dist/lib/workflow/index.mjs.map +1 -0
  146. package/dist/logging/core/index.cjs +99 -0
  147. package/dist/logging/core/index.d.cts +26 -0
  148. package/dist/logging/core/index.d.cts.map +1 -0
  149. package/dist/logging/core/index.d.mts +26 -0
  150. package/dist/logging/core/index.d.mts.map +1 -0
  151. package/dist/logging/core/index.mjs +99 -0
  152. package/dist/logging/core/index.mjs.map +1 -0
  153. package/dist/logging/core/types.cjs +10 -0
  154. package/dist/logging/core/types.d.cts +22 -0
  155. package/dist/logging/core/types.d.cts.map +1 -0
  156. package/dist/logging/core/types.d.mts +22 -0
  157. package/dist/logging/core/types.d.mts.map +1 -0
  158. package/dist/logging/core/types.mjs +12 -0
  159. package/dist/logging/core/types.mjs.map +1 -0
  160. package/dist/logging/formatter/index.cjs +119 -0
  161. package/dist/logging/formatter/index.d.cts +27 -0
  162. package/dist/logging/formatter/index.d.cts.map +1 -0
  163. package/dist/logging/formatter/index.d.mts +27 -0
  164. package/dist/logging/formatter/index.d.mts.map +1 -0
  165. package/dist/logging/formatter/index.mjs +115 -0
  166. package/dist/logging/formatter/index.mjs.map +1 -0
  167. package/dist/logging/formatter/types.d.cts +5 -0
  168. package/dist/logging/formatter/types.d.cts.map +1 -0
  169. package/dist/logging/formatter/types.d.mts +5 -0
  170. package/dist/logging/formatter/types.d.mts.map +1 -0
  171. package/dist/logging/provider/index.cjs +165 -0
  172. package/dist/logging/provider/index.d.cts +28 -0
  173. package/dist/logging/provider/index.d.cts.map +1 -0
  174. package/dist/logging/provider/index.d.mts +28 -0
  175. package/dist/logging/provider/index.d.mts.map +1 -0
  176. package/dist/logging/provider/index.mjs +165 -0
  177. package/dist/logging/provider/index.mjs.map +1 -0
  178. package/dist/logging/provider/types.d.cts +23 -0
  179. package/dist/logging/provider/types.d.cts.map +1 -0
  180. package/dist/logging/provider/types.d.mts +23 -0
  181. package/dist/logging/provider/types.d.mts.map +1 -0
  182. package/dist/node_modules/@standard-schema/spec/dist/index.d.cts +80 -0
  183. package/dist/node_modules/@standard-schema/spec/dist/index.d.cts.map +1 -0
  184. package/dist/node_modules/@standard-schema/spec/dist/index.d.mts +80 -0
  185. package/dist/node_modules/@standard-schema/spec/dist/index.d.mts.map +1 -0
  186. package/dist/orm/column.cjs +137 -0
  187. package/dist/orm/column.d.cts +121 -0
  188. package/dist/orm/column.d.cts.map +1 -0
  189. package/dist/orm/column.d.mts +121 -0
  190. package/dist/orm/column.d.mts.map +1 -0
  191. package/dist/orm/column.mjs +132 -0
  192. package/dist/orm/column.mjs.map +1 -0
  193. package/dist/orm/dialect/index.cjs +14 -0
  194. package/dist/orm/dialect/index.mjs +16 -0
  195. package/dist/orm/dialect/index.mjs.map +1 -0
  196. package/dist/orm/dialect/mysql.cjs +31 -0
  197. package/dist/orm/dialect/mysql.mjs +33 -0
  198. package/dist/orm/dialect/mysql.mjs.map +1 -0
  199. package/dist/orm/dialect/postgres.cjs +23 -0
  200. package/dist/orm/dialect/postgres.mjs +25 -0
  201. package/dist/orm/dialect/postgres.mjs.map +1 -0
  202. package/dist/orm/dialect/sqlite.cjs +31 -0
  203. package/dist/orm/dialect/sqlite.mjs +33 -0
  204. package/dist/orm/dialect/sqlite.mjs.map +1 -0
  205. package/dist/orm/dialect/utils.cjs +8 -0
  206. package/dist/orm/dialect/utils.mjs +10 -0
  207. package/dist/orm/dialect/utils.mjs.map +1 -0
  208. package/dist/orm/internal/table-columns.cjs +31 -0
  209. package/dist/orm/internal/table-columns.mjs +32 -0
  210. package/dist/orm/internal/table-columns.mjs.map +1 -0
  211. package/dist/orm/internal/table-lookup.cjs +35 -0
  212. package/dist/orm/internal/table-lookup.mjs +35 -0
  213. package/dist/orm/internal/table-lookup.mjs.map +1 -0
  214. package/dist/orm/internal/table-relations.cjs +28 -0
  215. package/dist/orm/internal/table-relations.mjs +29 -0
  216. package/dist/orm/internal/table-relations.mjs.map +1 -0
  217. package/dist/orm/migration/config.cjs +7 -0
  218. package/dist/orm/migration/config.d.cts +7 -0
  219. package/dist/orm/migration/config.d.cts.map +1 -0
  220. package/dist/orm/migration/config.d.mts +7 -0
  221. package/dist/orm/migration/config.d.mts.map +1 -0
  222. package/dist/orm/migration/config.mjs +8 -0
  223. package/dist/orm/migration/config.mjs.map +1 -0
  224. package/dist/orm/migration/types.d.cts +20 -0
  225. package/dist/orm/migration/types.d.cts.map +1 -0
  226. package/dist/orm/migration/types.d.mts +20 -0
  227. package/dist/orm/migration/types.d.mts.map +1 -0
  228. package/dist/orm/orm.cjs +41 -0
  229. package/dist/orm/orm.d.cts +18 -0
  230. package/dist/orm/orm.d.cts.map +1 -0
  231. package/dist/orm/orm.d.mts +18 -0
  232. package/dist/orm/orm.d.mts.map +1 -0
  233. package/dist/orm/orm.mjs +43 -0
  234. package/dist/orm/orm.mjs.map +1 -0
  235. package/dist/orm/relation.cjs +18 -0
  236. package/dist/orm/relation.d.cts +8 -0
  237. package/dist/orm/relation.d.cts.map +1 -0
  238. package/dist/orm/relation.d.mts +8 -0
  239. package/dist/orm/relation.d.mts.map +1 -0
  240. package/dist/orm/relation.mjs +19 -0
  241. package/dist/orm/relation.mjs.map +1 -0
  242. package/dist/orm/runtime/builders/mutations.cjs +29 -0
  243. package/dist/orm/runtime/builders/mutations.mjs +28 -0
  244. package/dist/orm/runtime/builders/mutations.mjs.map +1 -0
  245. package/dist/orm/runtime/builders/select.cjs +18 -0
  246. package/dist/orm/runtime/builders/select.mjs +19 -0
  247. package/dist/orm/runtime/builders/select.mjs.map +1 -0
  248. package/dist/orm/runtime/client.cjs +90 -0
  249. package/dist/orm/runtime/client.mjs +92 -0
  250. package/dist/orm/runtime/client.mjs.map +1 -0
  251. package/dist/orm/runtime/context.cjs +49 -0
  252. package/dist/orm/runtime/context.mjs +51 -0
  253. package/dist/orm/runtime/context.mjs.map +1 -0
  254. package/dist/orm/runtime/dialect/index.cjs +11 -0
  255. package/dist/orm/runtime/dialect/index.mjs +13 -0
  256. package/dist/orm/runtime/dialect/index.mjs.map +1 -0
  257. package/dist/orm/runtime/dialect/mysql.cjs +95 -0
  258. package/dist/orm/runtime/dialect/mysql.mjs +97 -0
  259. package/dist/orm/runtime/dialect/mysql.mjs.map +1 -0
  260. package/dist/orm/runtime/dialect/postgres.cjs +51 -0
  261. package/dist/orm/runtime/dialect/postgres.mjs +53 -0
  262. package/dist/orm/runtime/dialect/postgres.mjs.map +1 -0
  263. package/dist/orm/runtime/dialect/sqlite.cjs +4 -0
  264. package/dist/orm/runtime/dialect/sqlite.mjs +7 -0
  265. package/dist/orm/runtime/dialect/sqlite.mjs.map +1 -0
  266. package/dist/orm/runtime/errors.cjs +19 -0
  267. package/dist/orm/runtime/errors.mjs +21 -0
  268. package/dist/orm/runtime/errors.mjs.map +1 -0
  269. package/dist/orm/runtime/hydrate/many.cjs +46 -0
  270. package/dist/orm/runtime/hydrate/many.mjs +48 -0
  271. package/dist/orm/runtime/hydrate/many.mjs.map +1 -0
  272. package/dist/orm/runtime/hydrate/one.cjs +38 -0
  273. package/dist/orm/runtime/hydrate/one.mjs +40 -0
  274. package/dist/orm/runtime/hydrate/one.mjs.map +1 -0
  275. package/dist/orm/runtime/hydrate.cjs +49 -0
  276. package/dist/orm/runtime/hydrate.mjs +51 -0
  277. package/dist/orm/runtime/hydrate.mjs.map +1 -0
  278. package/dist/orm/runtime/rows.cjs +30 -0
  279. package/dist/orm/runtime/rows.mjs +31 -0
  280. package/dist/orm/runtime/rows.mjs.map +1 -0
  281. package/dist/orm/runtime/utils.cjs +27 -0
  282. package/dist/orm/runtime/utils.mjs +27 -0
  283. package/dist/orm/runtime/utils.mjs.map +1 -0
  284. package/dist/orm/sql/parse-array.cjs +64 -0
  285. package/dist/orm/sql/parse-array.mjs +66 -0
  286. package/dist/orm/sql/parse-array.mjs.map +1 -0
  287. package/dist/orm/sql/plan/select.cjs +36 -0
  288. package/dist/orm/sql/plan/select.mjs +38 -0
  289. package/dist/orm/sql/plan/select.mjs.map +1 -0
  290. package/dist/orm/sql/plan/where/operators.cjs +95 -0
  291. package/dist/orm/sql/plan/where/operators.mjs +97 -0
  292. package/dist/orm/sql/plan/where/operators.mjs.map +1 -0
  293. package/dist/orm/sql/plan/where.cjs +59 -0
  294. package/dist/orm/sql/plan/where.mjs +61 -0
  295. package/dist/orm/sql/plan/where.mjs.map +1 -0
  296. package/dist/orm/sql/serialize/clauses.cjs +36 -0
  297. package/dist/orm/sql/serialize/clauses.mjs +37 -0
  298. package/dist/orm/sql/serialize/clauses.mjs.map +1 -0
  299. package/dist/orm/sql/serialize/joins.cjs +31 -0
  300. package/dist/orm/sql/serialize/joins.mjs +33 -0
  301. package/dist/orm/sql/serialize/joins.mjs.map +1 -0
  302. package/dist/orm/sql/serialize/values.cjs +30 -0
  303. package/dist/orm/sql/serialize/values.mjs +32 -0
  304. package/dist/orm/sql/serialize/values.mjs.map +1 -0
  305. package/dist/orm/sql/serialize/where/predicate.cjs +73 -0
  306. package/dist/orm/sql/serialize/where/predicate.mjs +75 -0
  307. package/dist/orm/sql/serialize/where/predicate.mjs.map +1 -0
  308. package/dist/orm/sql/serialize/where/tree.cjs +26 -0
  309. package/dist/orm/sql/serialize/where/tree.mjs +28 -0
  310. package/dist/orm/sql/serialize/where/tree.mjs.map +1 -0
  311. package/dist/orm/sql/serialize/where.cjs +10 -0
  312. package/dist/orm/sql/serialize/where.mjs +12 -0
  313. package/dist/orm/sql/serialize/where.mjs.map +1 -0
  314. package/dist/orm/sql/serialize.cjs +24 -0
  315. package/dist/orm/sql/serialize.mjs +25 -0
  316. package/dist/orm/sql/serialize.mjs.map +1 -0
  317. package/dist/orm/table.cjs +12 -0
  318. package/dist/orm/table.d.cts +12 -0
  319. package/dist/orm/table.d.cts.map +1 -0
  320. package/dist/orm/table.d.mts +12 -0
  321. package/dist/orm/table.d.mts.map +1 -0
  322. package/dist/orm/table.mjs +14 -0
  323. package/dist/orm/table.mjs.map +1 -0
  324. package/dist/orm/types.d.cts +183 -0
  325. package/dist/orm/types.d.cts.map +1 -0
  326. package/dist/orm/types.d.mts +183 -0
  327. package/dist/orm/types.d.mts.map +1 -0
  328. package/dist/policy/helpers.cjs +206 -0
  329. package/dist/policy/helpers.d.cts +50 -0
  330. package/dist/policy/helpers.d.cts.map +1 -0
  331. package/dist/policy/helpers.d.mts +50 -0
  332. package/dist/policy/helpers.d.mts.map +1 -0
  333. package/dist/policy/helpers.mjs +190 -0
  334. package/dist/policy/helpers.mjs.map +1 -0
  335. package/dist/policy/types.d.cts +16 -0
  336. package/dist/policy/types.d.cts.map +1 -0
  337. package/dist/policy/types.d.mts +16 -0
  338. package/dist/policy/types.d.mts.map +1 -0
  339. package/dist/prompts/core/keys.cjs +165 -0
  340. package/dist/prompts/core/keys.mjs +167 -0
  341. package/dist/prompts/core/keys.mjs.map +1 -0
  342. package/dist/prompts/core/runtime.cjs +104 -0
  343. package/dist/prompts/core/runtime.mjs +106 -0
  344. package/dist/prompts/core/runtime.mjs.map +1 -0
  345. package/dist/prompts/core/session.cjs +98 -0
  346. package/dist/prompts/core/session.mjs +100 -0
  347. package/dist/prompts/core/session.mjs.map +1 -0
  348. package/dist/prompts/core/types.d.cts +21 -0
  349. package/dist/prompts/core/types.d.cts.map +1 -0
  350. package/dist/prompts/core/types.d.mts +21 -0
  351. package/dist/prompts/core/types.d.mts.map +1 -0
  352. package/dist/prompts/types.d.cts +52 -0
  353. package/dist/prompts/types.d.cts.map +1 -0
  354. package/dist/prompts/types.d.mts +52 -0
  355. package/dist/prompts/types.d.mts.map +1 -0
  356. package/dist/pubsub/types.d.cts +10 -0
  357. package/dist/pubsub/types.d.cts.map +1 -0
  358. package/dist/pubsub/types.d.mts +10 -0
  359. package/dist/pubsub/types.d.mts.map +1 -0
  360. package/dist/queue/types.d.cts +47 -0
  361. package/dist/queue/types.d.cts.map +1 -0
  362. package/dist/queue/types.d.mts +47 -0
  363. package/dist/queue/types.d.mts.map +1 -0
  364. package/dist/workflow/types.d.cts +83 -0
  365. package/dist/workflow/types.d.cts.map +1 -0
  366. package/dist/workflow/types.d.mts +83 -0
  367. package/dist/workflow/types.d.mts.map +1 -0
  368. package/package.json +112 -16
  369. package/dist/lib/api/core/index.d.ts +0 -15
  370. package/dist/lib/api/core/index.d.ts.map +0 -1
  371. package/dist/lib/api/core/index.js +0 -218
  372. package/dist/lib/api/core/index.js.map +0 -1
  373. package/dist/lib/api/core/index.test.d.ts +0 -2
  374. package/dist/lib/api/core/index.test.d.ts.map +0 -1
  375. package/dist/lib/api/core/index.test.js +0 -219
  376. package/dist/lib/api/core/index.test.js.map +0 -1
  377. package/dist/lib/api/core/types.d.ts +0 -109
  378. package/dist/lib/api/core/types.d.ts.map +0 -1
  379. package/dist/lib/api/core/types.js +0 -2
  380. package/dist/lib/api/core/types.js.map +0 -1
  381. package/dist/lib/api/index.d.ts +0 -5
  382. package/dist/lib/api/index.d.ts.map +0 -1
  383. package/dist/lib/api/index.js +0 -3
  384. package/dist/lib/api/index.js.map +0 -1
  385. package/dist/lib/api/middleware/index.d.ts +0 -7
  386. package/dist/lib/api/middleware/index.d.ts.map +0 -1
  387. package/dist/lib/api/middleware/index.js +0 -7
  388. package/dist/lib/api/middleware/index.js.map +0 -1
  389. package/dist/lib/api/middleware/index.test.d.ts +0 -2
  390. package/dist/lib/api/middleware/index.test.d.ts.map +0 -1
  391. package/dist/lib/api/middleware/index.test.js +0 -67
  392. package/dist/lib/api/middleware/index.test.js.map +0 -1
  393. package/dist/lib/api/middleware/types.d.ts +0 -12
  394. package/dist/lib/api/middleware/types.d.ts.map +0 -1
  395. package/dist/lib/api/middleware/types.js +0 -2
  396. package/dist/lib/api/middleware/types.js.map +0 -1
  397. package/dist/lib/api/openapi/index.d.ts +0 -31
  398. package/dist/lib/api/openapi/index.d.ts.map +0 -1
  399. package/dist/lib/api/openapi/index.js +0 -284
  400. package/dist/lib/api/openapi/index.js.map +0 -1
  401. package/dist/lib/api/openapi/index.test.d.ts +0 -2
  402. package/dist/lib/api/openapi/index.test.d.ts.map +0 -1
  403. package/dist/lib/api/openapi/index.test.js +0 -359
  404. package/dist/lib/api/openapi/index.test.js.map +0 -1
  405. package/dist/lib/api/openapi/types.d.ts +0 -57
  406. package/dist/lib/api/openapi/types.d.ts.map +0 -1
  407. package/dist/lib/api/openapi/types.js +0 -5
  408. package/dist/lib/api/openapi/types.js.map +0 -1
  409. package/dist/lib/api/validation/index.d.ts +0 -33
  410. package/dist/lib/api/validation/index.d.ts.map +0 -1
  411. package/dist/lib/api/validation/index.js +0 -92
  412. package/dist/lib/api/validation/index.js.map +0 -1
  413. package/dist/lib/api/validation/index.test.d.ts +0 -2
  414. package/dist/lib/api/validation/index.test.d.ts.map +0 -1
  415. package/dist/lib/api/validation/index.test.js +0 -135
  416. package/dist/lib/api/validation/index.test.js.map +0 -1
  417. package/dist/lib/cache/index.d.ts +0 -25
  418. package/dist/lib/cache/index.d.ts.map +0 -1
  419. package/dist/lib/cache/index.js +0 -62
  420. package/dist/lib/cache/index.js.map +0 -1
  421. package/dist/lib/cache/index.test.d.ts +0 -2
  422. package/dist/lib/cache/index.test.d.ts.map +0 -1
  423. package/dist/lib/cache/index.test.js +0 -314
  424. package/dist/lib/cache/index.test.js.map +0 -1
  425. package/dist/lib/cache/types.d.ts +0 -5
  426. package/dist/lib/cache/types.d.ts.map +0 -1
  427. package/dist/lib/cache/types.js +0 -2
  428. package/dist/lib/cache/types.js.map +0 -1
  429. package/dist/lib/errors/index.d.ts +0 -9
  430. package/dist/lib/errors/index.d.ts.map +0 -1
  431. package/dist/lib/errors/index.js +0 -25
  432. package/dist/lib/errors/index.js.map +0 -1
  433. package/dist/lib/errors/index.test.d.ts +0 -2
  434. package/dist/lib/errors/index.test.d.ts.map +0 -1
  435. package/dist/lib/errors/index.test.js +0 -197
  436. package/dist/lib/errors/index.test.js.map +0 -1
  437. package/dist/lib/errors/types.d.ts +0 -2
  438. package/dist/lib/errors/types.d.ts.map +0 -1
  439. package/dist/lib/errors/types.js +0 -2
  440. package/dist/lib/errors/types.js.map +0 -1
  441. package/dist/lib/i18n/index.d.ts +0 -18
  442. package/dist/lib/i18n/index.d.ts.map +0 -1
  443. package/dist/lib/i18n/index.js +0 -38
  444. package/dist/lib/i18n/index.js.map +0 -1
  445. package/dist/lib/i18n/index.test.d.ts +0 -2
  446. package/dist/lib/i18n/index.test.d.ts.map +0 -1
  447. package/dist/lib/i18n/index.test.js +0 -402
  448. package/dist/lib/i18n/index.test.js.map +0 -1
  449. package/dist/lib/i18n/types.d.ts +0 -15
  450. package/dist/lib/i18n/types.d.ts.map +0 -1
  451. package/dist/lib/i18n/types.js +0 -2
  452. package/dist/lib/i18n/types.js.map +0 -1
  453. package/dist/lib/policy/index.d.ts +0 -9
  454. package/dist/lib/policy/index.d.ts.map +0 -1
  455. package/dist/lib/policy/index.js +0 -51
  456. package/dist/lib/policy/index.js.map +0 -1
  457. package/dist/lib/policy/index.test.d.ts +0 -2
  458. package/dist/lib/policy/index.test.d.ts.map +0 -1
  459. package/dist/lib/policy/index.test.js +0 -328
  460. package/dist/lib/policy/index.test.js.map +0 -1
  461. package/dist/lib/policy/types.d.ts +0 -27
  462. package/dist/lib/policy/types.d.ts.map +0 -1
  463. package/dist/lib/policy/types.js +0 -2
  464. package/dist/lib/policy/types.js.map +0 -1
  465. package/dist/lib/pubsub/index.d.ts +0 -23
  466. package/dist/lib/pubsub/index.d.ts.map +0 -1
  467. package/dist/lib/pubsub/index.js +0 -55
  468. package/dist/lib/pubsub/index.js.map +0 -1
  469. package/dist/lib/pubsub/index.test.d.ts +0 -2
  470. package/dist/lib/pubsub/index.test.d.ts.map +0 -1
  471. package/dist/lib/pubsub/index.test.js +0 -550
  472. package/dist/lib/pubsub/index.test.js.map +0 -1
  473. package/dist/lib/pubsub/types.d.ts +0 -7
  474. package/dist/lib/pubsub/types.d.ts.map +0 -1
  475. package/dist/lib/pubsub/types.js +0 -2
  476. package/dist/lib/pubsub/types.js.map +0 -1
  477. package/dist/lib/queue/index.d.ts +0 -28
  478. package/dist/lib/queue/index.d.ts.map +0 -1
  479. package/dist/lib/queue/index.js +0 -211
  480. package/dist/lib/queue/index.js.map +0 -1
  481. package/dist/lib/queue/index.test.d.ts +0 -2
  482. package/dist/lib/queue/index.test.d.ts.map +0 -1
  483. package/dist/lib/queue/index.test.js +0 -740
  484. package/dist/lib/queue/index.test.js.map +0 -1
  485. package/dist/lib/queue/types.d.ts +0 -52
  486. package/dist/lib/queue/types.d.ts.map +0 -1
  487. package/dist/lib/queue/types.js +0 -2
  488. package/dist/lib/queue/types.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_index = require("../../cron/builder/index.cjs");
3
+ const require_types = require("../../cron/builder/types.cjs");
4
+ const require_index$1 = require("../../cron/core/index.cjs");
5
+ exports.Cron = require_index$1.Cron;
6
+ exports.Month = require_types.Month;
7
+ exports.WeekDay = require_types.WeekDay;
8
+ exports.any = require_index.any;
9
+ exports.cronJobBuilder = require_index.cronJobBuilder;
10
+ exports.list = require_index.list;
11
+ exports.number = require_index.number;
12
+ exports.range = require_index.range;
13
+ exports.step = require_index.step;
@@ -0,0 +1,4 @@
1
+ import { Month, WeekDay } from "../../cron/builder/types.cjs";
2
+ import { any, cronJobBuilder, list, number, range, step } from "../../cron/builder/index.cjs";
3
+ import { Cron } from "../../cron/core/index.cjs";
4
+ export { Cron, Month, WeekDay, any, cronJobBuilder, list, number, range, step };
@@ -0,0 +1,4 @@
1
+ import { Month, WeekDay } from "../../cron/builder/types.mjs";
2
+ import { any, cronJobBuilder, list, number, range, step } from "../../cron/builder/index.mjs";
3
+ import { Cron } from "../../cron/core/index.mjs";
4
+ export { Cron, Month, WeekDay, any, cronJobBuilder, list, number, range, step };
@@ -0,0 +1,4 @@
1
+ import { any, cronJobBuilder, list, number, range, step } from "../../cron/builder/index.mjs";
2
+ import { Month, WeekDay } from "../../cron/builder/types.mjs";
3
+ import { Cron } from "../../cron/core/index.mjs";
4
+ export { Cron, Month, WeekDay, any, cronJobBuilder, list, number, range, step };
@@ -0,0 +1,30 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/lib/errors/index.ts
3
+ const ok = (data) => {
4
+ return [null, data];
5
+ };
6
+ const err = (type, message) => {
7
+ return [{
8
+ type,
9
+ message
10
+ }, null];
11
+ };
12
+ const mightThrowSync = (fn) => {
13
+ try {
14
+ return [null, fn()];
15
+ } catch (error) {
16
+ return [error, null];
17
+ }
18
+ };
19
+ const mightThrow = async (promise) => {
20
+ try {
21
+ return [null, await promise];
22
+ } catch (error) {
23
+ return [error, null];
24
+ }
25
+ };
26
+ //#endregion
27
+ exports.err = err;
28
+ exports.mightThrow = mightThrow;
29
+ exports.mightThrowSync = mightThrowSync;
30
+ exports.ok = ok;
@@ -0,0 +1,13 @@
1
+ import { CommonError } from "../../errors/types.cjs";
2
+
3
+ //#region src/lib/errors/index.d.ts
4
+ declare const ok: <T>(data: T) => readonly [null, T];
5
+ declare const err: <T extends CommonError>(type: T, message: string) => readonly [{
6
+ readonly type: T;
7
+ readonly message: string;
8
+ }, null];
9
+ declare const mightThrowSync: <T, E = Error>(fn: () => T) => readonly [null, T] | readonly [E, null];
10
+ declare const mightThrow: <T, E = Error>(promise: Promise<T>) => Promise<readonly [null, T] | readonly [E, null]>;
11
+ //#endregion
12
+ export { err, mightThrow, mightThrowSync, ok };
13
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/errors/index.ts"],"mappings":";;;cAEa,EAAA,MAAS,IAAA,EAAM,CAAA,qBAAC,CAAA;AAAA,cAIhB,GAAA,aAAiB,WAAA,EAAa,IAAA,EAAM,CAAA,EAAG,OAAA;EAAA;;;cAIvC,cAAA,UAAyB,KAAA,EACpC,EAAA,QAAU,CAAA,qBACO,CAAA,cAAe,CAAA;AAAA,cASrB,UAAA,UAA2B,KAAA,EACtC,OAAA,EAAS,OAAA,CAAQ,CAAA,MAChB,OAAA,iBAAwB,CAAA,cAAe,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { CommonError } from "../../errors/types.mjs";
2
+
3
+ //#region src/lib/errors/index.d.ts
4
+ declare const ok: <T>(data: T) => readonly [null, T];
5
+ declare const err: <T extends CommonError>(type: T, message: string) => readonly [{
6
+ readonly type: T;
7
+ readonly message: string;
8
+ }, null];
9
+ declare const mightThrowSync: <T, E = Error>(fn: () => T) => readonly [null, T] | readonly [E, null];
10
+ declare const mightThrow: <T, E = Error>(promise: Promise<T>) => Promise<readonly [null, T] | readonly [E, null]>;
11
+ //#endregion
12
+ export { err, mightThrow, mightThrowSync, ok };
13
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/errors/index.ts"],"mappings":";;;cAEa,EAAA,MAAS,IAAA,EAAM,CAAA,qBAAC,CAAA;AAAA,cAIhB,GAAA,aAAiB,WAAA,EAAa,IAAA,EAAM,CAAA,EAAG,OAAA;EAAA;;;cAIvC,cAAA,UAAyB,KAAA,EACpC,EAAA,QAAU,CAAA,qBACO,CAAA,cAAe,CAAA;AAAA,cASrB,UAAA,UAA2B,KAAA,EACtC,OAAA,EAAS,OAAA,CAAQ,CAAA,MAChB,OAAA,iBAAwB,CAAA,cAAe,CAAA"}
@@ -0,0 +1,28 @@
1
+ //#region src/lib/errors/index.ts
2
+ const ok = (data) => {
3
+ return [null, data];
4
+ };
5
+ const err = (type, message) => {
6
+ return [{
7
+ type,
8
+ message
9
+ }, null];
10
+ };
11
+ const mightThrowSync = (fn) => {
12
+ try {
13
+ return [null, fn()];
14
+ } catch (error) {
15
+ return [error, null];
16
+ }
17
+ };
18
+ const mightThrow = async (promise) => {
19
+ try {
20
+ return [null, await promise];
21
+ } catch (error) {
22
+ return [error, null];
23
+ }
24
+ };
25
+ //#endregion
26
+ export { err, mightThrow, mightThrowSync, ok };
27
+
28
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/errors/index.ts"],"sourcesContent":["import type { CommonError } from \"./types.js\";\n\nexport const ok = <T>(data: T) => {\n return [null, data] as const;\n};\n\nexport const err = <T extends CommonError>(type: T, message: string) => {\n return [{ type, message }, null] as const;\n};\n\nexport const mightThrowSync = <T, E = Error>(\n fn: () => T,\n): readonly [null, T] | readonly [E, null] => {\n try {\n const result = fn();\n return [null, result] as const;\n } catch (error) {\n return [error as E, null] as const;\n }\n};\n\nexport const mightThrow = async <T, E = Error>(\n promise: Promise<T>,\n): Promise<readonly [null, T] | readonly [E, null]> => {\n try {\n const data = await promise;\n return [null, data] as const;\n } catch (error) {\n return [error as E, null] as const;\n }\n};\n"],"mappings":";AAEA,MAAa,MAAS,SAAY;AAChC,QAAO,CAAC,MAAM,KAAK;;AAGrB,MAAa,OAA8B,MAAS,YAAoB;AACtE,QAAO,CAAC;EAAE;EAAM;EAAS,EAAE,KAAK;;AAGlC,MAAa,kBACX,OAC4C;AAC5C,KAAI;AAEF,SAAO,CAAC,MADO,IAAI,CACE;UACd,OAAO;AACd,SAAO,CAAC,OAAY,KAAK;;;AAI7B,MAAa,aAAa,OACxB,YACqD;AACrD,KAAI;AAEF,SAAO,CAAC,MADK,MAAM,QACA;UACZ,OAAO;AACd,SAAO,CAAC,OAAY,KAAK"}
@@ -0,0 +1,42 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/lib/i18n/index.ts
3
+ var I18n = class {
4
+ locales;
5
+ currentLocale;
6
+ defaultLocale;
7
+ constructor(config) {
8
+ this.defaultLocale = config.defaultLocale;
9
+ this.currentLocale = config.defaultLocale;
10
+ this.locales = config.locales;
11
+ }
12
+ setLocale(locale) {
13
+ this.currentLocale = locale;
14
+ }
15
+ getLocale() {
16
+ return this.currentLocale;
17
+ }
18
+ translate(key, ...params) {
19
+ const currentTranslations = this.locales[this.currentLocale];
20
+ const defaultTranslations = this.locales[this.defaultLocale];
21
+ const translation = this.getNestedValue(currentTranslations, key) ?? this.getNestedValue(defaultTranslations, key);
22
+ if (typeof translation !== "string") return key;
23
+ if (!translation) return key;
24
+ const paramObj = params[0];
25
+ return this.substituteParams(translation, paramObj);
26
+ }
27
+ getNestedValue(obj, path) {
28
+ return path.split(".").reduce((current, key) => {
29
+ if (typeof current !== "object") return;
30
+ if (current === null) return;
31
+ return current[key];
32
+ }, obj);
33
+ }
34
+ substituteParams(template, params) {
35
+ if (!params) return template;
36
+ return template.replace(/\{(\w+):(\w+)\}/g, (_match, name) => {
37
+ return String(params[name]);
38
+ });
39
+ }
40
+ };
41
+ //#endregion
42
+ exports.I18n = I18n;
@@ -0,0 +1,20 @@
1
+ import { BuildParamObject, GetNestedValue, NestedKeyOf } from "../../i18n/types.cjs";
2
+
3
+ //#region src/lib/i18n/index.d.ts
4
+ declare class I18n<const TLocales extends Record<string, Record<string, unknown>>, TDefaultLocale extends keyof TLocales> {
5
+ private locales;
6
+ private currentLocale;
7
+ private defaultLocale;
8
+ constructor(config: {
9
+ defaultLocale: TDefaultLocale;
10
+ locales: TLocales;
11
+ });
12
+ setLocale(locale: keyof TLocales): void;
13
+ getLocale(): keyof TLocales;
14
+ translate<TKey extends NestedKeyOf<TLocales[TDefaultLocale]>>(key: TKey, ...params: BuildParamObject<GetNestedValue<TLocales[TDefaultLocale], TKey> extends string ? GetNestedValue<TLocales[TDefaultLocale], TKey> : never> extends Record<string, never> ? [] : [BuildParamObject<GetNestedValue<TLocales[TDefaultLocale], TKey> extends string ? GetNestedValue<TLocales[TDefaultLocale], TKey> : never>]): string;
15
+ private getNestedValue;
16
+ private substituteParams;
17
+ }
18
+ //#endregion
19
+ export { I18n };
20
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/i18n/index.ts"],"mappings":";;;cAEa,IAAA,wBACY,MAAA,SAAe,MAAA,iDACT,QAAA;EAAA,QAErB,OAAA;EAAA,QACA,aAAA;EAAA,QACA,aAAA;cAEW,MAAA;IACjB,aAAA,EAAe,cAAA;IACf,OAAA,EAAS,QAAA;EAAA;EAOJ,SAAA,CAAU,MAAA,QAAc,QAAA;EAIxB,SAAA,CAAA,SAAS,QAAA;EAIT,SAAA,cAAuB,WAAA,CAAY,QAAA,CAAS,cAAA,GAAA,CACjD,GAAA,EAAK,IAAA,KACF,MAAA,EAAQ,gBAAA,CACT,cAAA,CAAe,QAAA,CAAS,cAAA,GAAiB,IAAA,mBACrC,cAAA,CAAe,QAAA,CAAS,cAAA,GAAiB,IAAA,mBAErC,MAAA,wBAGJ,gBAAA,CACE,cAAA,CAAe,QAAA,CAAS,cAAA,GAAiB,IAAA,mBACrC,cAAA,CAAe,QAAA,CAAS,cAAA,GAAiB,IAAA;EAAA,QAwB/C,cAAA;EAAA,QAiBA,gBAAA;AAAA"}
@@ -0,0 +1,20 @@
1
+ import { BuildParamObject, GetNestedValue, NestedKeyOf } from "../../i18n/types.mjs";
2
+
3
+ //#region src/lib/i18n/index.d.ts
4
+ declare class I18n<const TLocales extends Record<string, Record<string, unknown>>, TDefaultLocale extends keyof TLocales> {
5
+ private locales;
6
+ private currentLocale;
7
+ private defaultLocale;
8
+ constructor(config: {
9
+ defaultLocale: TDefaultLocale;
10
+ locales: TLocales;
11
+ });
12
+ setLocale(locale: keyof TLocales): void;
13
+ getLocale(): keyof TLocales;
14
+ translate<TKey extends NestedKeyOf<TLocales[TDefaultLocale]>>(key: TKey, ...params: BuildParamObject<GetNestedValue<TLocales[TDefaultLocale], TKey> extends string ? GetNestedValue<TLocales[TDefaultLocale], TKey> : never> extends Record<string, never> ? [] : [BuildParamObject<GetNestedValue<TLocales[TDefaultLocale], TKey> extends string ? GetNestedValue<TLocales[TDefaultLocale], TKey> : never>]): string;
15
+ private getNestedValue;
16
+ private substituteParams;
17
+ }
18
+ //#endregion
19
+ export { I18n };
20
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/i18n/index.ts"],"mappings":";;;cAEa,IAAA,wBACY,MAAA,SAAe,MAAA,iDACT,QAAA;EAAA,QAErB,OAAA;EAAA,QACA,aAAA;EAAA,QACA,aAAA;cAEW,MAAA;IACjB,aAAA,EAAe,cAAA;IACf,OAAA,EAAS,QAAA;EAAA;EAOJ,SAAA,CAAU,MAAA,QAAc,QAAA;EAIxB,SAAA,CAAA,SAAS,QAAA;EAIT,SAAA,cAAuB,WAAA,CAAY,QAAA,CAAS,cAAA,GAAA,CACjD,GAAA,EAAK,IAAA,KACF,MAAA,EAAQ,gBAAA,CACT,cAAA,CAAe,QAAA,CAAS,cAAA,GAAiB,IAAA,mBACrC,cAAA,CAAe,QAAA,CAAS,cAAA,GAAiB,IAAA,mBAErC,MAAA,wBAGJ,gBAAA,CACE,cAAA,CAAe,QAAA,CAAS,cAAA,GAAiB,IAAA,mBACrC,cAAA,CAAe,QAAA,CAAS,cAAA,GAAiB,IAAA;EAAA,QAwB/C,cAAA;EAAA,QAiBA,gBAAA;AAAA"}
@@ -0,0 +1,43 @@
1
+ //#region src/lib/i18n/index.ts
2
+ var I18n = class {
3
+ locales;
4
+ currentLocale;
5
+ defaultLocale;
6
+ constructor(config) {
7
+ this.defaultLocale = config.defaultLocale;
8
+ this.currentLocale = config.defaultLocale;
9
+ this.locales = config.locales;
10
+ }
11
+ setLocale(locale) {
12
+ this.currentLocale = locale;
13
+ }
14
+ getLocale() {
15
+ return this.currentLocale;
16
+ }
17
+ translate(key, ...params) {
18
+ const currentTranslations = this.locales[this.currentLocale];
19
+ const defaultTranslations = this.locales[this.defaultLocale];
20
+ const translation = this.getNestedValue(currentTranslations, key) ?? this.getNestedValue(defaultTranslations, key);
21
+ if (typeof translation !== "string") return key;
22
+ if (!translation) return key;
23
+ const paramObj = params[0];
24
+ return this.substituteParams(translation, paramObj);
25
+ }
26
+ getNestedValue(obj, path) {
27
+ return path.split(".").reduce((current, key) => {
28
+ if (typeof current !== "object") return;
29
+ if (current === null) return;
30
+ return current[key];
31
+ }, obj);
32
+ }
33
+ substituteParams(template, params) {
34
+ if (!params) return template;
35
+ return template.replace(/\{(\w+):(\w+)\}/g, (_match, name) => {
36
+ return String(params[name]);
37
+ });
38
+ }
39
+ };
40
+ //#endregion
41
+ export { I18n };
42
+
43
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/i18n/index.ts"],"sourcesContent":["import type { BuildParamObject, GetNestedValue, NestedKeyOf } from \"./types.js\";\n\nexport class I18n<\n const TLocales extends Record<string, Record<string, unknown>>,\n TDefaultLocale extends keyof TLocales,\n> {\n private locales: TLocales;\n private currentLocale: keyof TLocales;\n private defaultLocale: TDefaultLocale;\n\n public constructor(config: {\n defaultLocale: TDefaultLocale;\n locales: TLocales;\n }) {\n this.defaultLocale = config.defaultLocale;\n this.currentLocale = config.defaultLocale;\n this.locales = config.locales;\n }\n\n public setLocale(locale: keyof TLocales) {\n this.currentLocale = locale;\n }\n\n public getLocale() {\n return this.currentLocale;\n }\n\n public translate<TKey extends NestedKeyOf<TLocales[TDefaultLocale]>>(\n key: TKey,\n ...params: BuildParamObject<\n GetNestedValue<TLocales[TDefaultLocale], TKey> extends string\n ? GetNestedValue<TLocales[TDefaultLocale], TKey>\n : never\n > extends Record<string, never>\n ? []\n : [\n BuildParamObject<\n GetNestedValue<TLocales[TDefaultLocale], TKey> extends string\n ? GetNestedValue<TLocales[TDefaultLocale], TKey>\n : never\n >,\n ]\n ) {\n const currentTranslations = this.locales[this.currentLocale];\n const defaultTranslations = this.locales[this.defaultLocale];\n\n const translation =\n this.getNestedValue(currentTranslations, key) ??\n this.getNestedValue(defaultTranslations, key);\n\n if (typeof translation !== \"string\") {\n return key;\n }\n\n if (!translation) {\n return key;\n }\n\n const paramObj = params[0] as Record<string, unknown> | undefined;\n return this.substituteParams(translation, paramObj);\n }\n\n private getNestedValue(\n obj: Record<string, unknown> | undefined,\n path: string,\n ) {\n return path.split(\".\").reduce((current: unknown, key: string) => {\n if (typeof current !== \"object\") {\n return undefined;\n }\n\n if (current === null) {\n return undefined;\n }\n\n return (current as Record<string, unknown>)[key];\n }, obj);\n }\n\n private substituteParams(template: string, params?: Record<string, unknown>) {\n if (!params) return template;\n\n return template.replace(/\\{(\\w+):(\\w+)\\}/g, (_match, name) => {\n return String(params[name]);\n });\n }\n}\n"],"mappings":";AAEA,IAAa,OAAb,MAGE;CACA;CACA;CACA;CAEA,YAAmB,QAGhB;AACD,OAAK,gBAAgB,OAAO;AAC5B,OAAK,gBAAgB,OAAO;AAC5B,OAAK,UAAU,OAAO;;CAGxB,UAAiB,QAAwB;AACvC,OAAK,gBAAgB;;CAGvB,YAAmB;AACjB,SAAO,KAAK;;CAGd,UACE,KACA,GAAG,QAaH;EACA,MAAM,sBAAsB,KAAK,QAAQ,KAAK;EAC9C,MAAM,sBAAsB,KAAK,QAAQ,KAAK;EAE9C,MAAM,cACJ,KAAK,eAAe,qBAAqB,IAAI,IAC7C,KAAK,eAAe,qBAAqB,IAAI;AAE/C,MAAI,OAAO,gBAAgB,SACzB,QAAO;AAGT,MAAI,CAAC,YACH,QAAO;EAGT,MAAM,WAAW,OAAO;AACxB,SAAO,KAAK,iBAAiB,aAAa,SAAS;;CAGrD,eACE,KACA,MACA;AACA,SAAO,KAAK,MAAM,IAAI,CAAC,QAAQ,SAAkB,QAAgB;AAC/D,OAAI,OAAO,YAAY,SACrB;AAGF,OAAI,YAAY,KACd;AAGF,UAAQ,QAAoC;KAC3C,IAAI;;CAGT,iBAAyB,UAAkB,QAAkC;AAC3E,MAAI,CAAC,OAAQ,QAAO;AAEpB,SAAO,SAAS,QAAQ,qBAAqB,QAAQ,SAAS;AAC5D,UAAO,OAAO,OAAO,MAAM;IAC3B"}
@@ -0,0 +1,18 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_index = require("../../logging/formatter/index.cjs");
3
+ const require_index$1 = require("../../logging/core/index.cjs");
4
+ const require_types = require("../../logging/core/types.cjs");
5
+ const require_index$2 = require("../../logging/provider/index.cjs");
6
+ exports.AbstractLogger = require_index$1.AbstractLogger;
7
+ exports.BaseFormatter = require_index.BaseFormatter;
8
+ exports.ConsoleProvider = require_index$2.ConsoleProvider;
9
+ exports.FileProvider = require_index$2.FileProvider;
10
+ exports.Formatter = require_index.Formatter;
11
+ exports.JSONFormatter = require_index.JSONFormatter;
12
+ exports.LogLevel = require_types.LogLevel;
13
+ exports.Logger = require_index$1.Logger;
14
+ exports.LoggerProvider = require_index$2.LoggerProvider;
15
+ exports.dmyFormat = require_index.dmyFormat;
16
+ exports.isoDateFormat = require_index.isoDateFormat;
17
+ exports.isoDateTimeFormat = require_index.isoDateTimeFormat;
18
+ exports.mdyFormat = require_index.mdyFormat;
@@ -0,0 +1,7 @@
1
+ import { LogDataType, LogLevel, LogLevelType, LogMessageType } from "../../logging/core/types.cjs";
2
+ import { DateFmtFnType } from "../../logging/formatter/types.cjs";
3
+ import { BaseFormatter, Formatter, JSONFormatter, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat } from "../../logging/formatter/index.cjs";
4
+ import { FileProviderOptions, ProviderOptions, SizeBasedPolicyType, TimeBasedPolicyType } from "../../logging/provider/types.cjs";
5
+ import { ConsoleProvider, FileProvider, LoggerProvider } from "../../logging/provider/index.cjs";
6
+ import { AbstractLogger, Logger } from "../../logging/core/index.cjs";
7
+ export { AbstractLogger, BaseFormatter, ConsoleProvider, type DateFmtFnType, FileProvider, type FileProviderOptions, Formatter, JSONFormatter, type LogDataType, LogLevel, type LogLevelType, type LogMessageType, Logger, LoggerProvider, type ProviderOptions, type SizeBasedPolicyType, type TimeBasedPolicyType, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat };
@@ -0,0 +1,7 @@
1
+ import { LogDataType, LogLevel, LogLevelType, LogMessageType } from "../../logging/core/types.mjs";
2
+ import { DateFmtFnType } from "../../logging/formatter/types.mjs";
3
+ import { BaseFormatter, Formatter, JSONFormatter, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat } from "../../logging/formatter/index.mjs";
4
+ import { FileProviderOptions, ProviderOptions, SizeBasedPolicyType, TimeBasedPolicyType } from "../../logging/provider/types.mjs";
5
+ import { ConsoleProvider, FileProvider, LoggerProvider } from "../../logging/provider/index.mjs";
6
+ import { AbstractLogger, Logger } from "../../logging/core/index.mjs";
7
+ export { AbstractLogger, BaseFormatter, ConsoleProvider, type DateFmtFnType, FileProvider, type FileProviderOptions, Formatter, JSONFormatter, type LogDataType, LogLevel, type LogLevelType, type LogMessageType, Logger, LoggerProvider, type ProviderOptions, type SizeBasedPolicyType, type TimeBasedPolicyType, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat };
@@ -0,0 +1,5 @@
1
+ import { BaseFormatter, Formatter, JSONFormatter, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat } from "../../logging/formatter/index.mjs";
2
+ import { AbstractLogger, Logger } from "../../logging/core/index.mjs";
3
+ import { LogLevel } from "../../logging/core/types.mjs";
4
+ import { ConsoleProvider, FileProvider, LoggerProvider } from "../../logging/provider/index.mjs";
5
+ export { AbstractLogger, BaseFormatter, ConsoleProvider, FileProvider, Formatter, JSONFormatter, LogLevel, Logger, LoggerProvider, dmyFormat, isoDateFormat, isoDateTimeFormat, mdyFormat };
@@ -0,0 +1,20 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_column = require("../../orm/column.cjs");
3
+ const require_config = require("../../orm/migration/config.cjs");
4
+ const require_orm = require("../../orm/orm.cjs");
5
+ const require_relation = require("../../orm/relation.cjs");
6
+ const require_table = require("../../orm/table.cjs");
7
+ exports.boolean = require_column.boolean;
8
+ exports.createOrm = require_orm.createOrm;
9
+ exports.createTable = require_table.createTable;
10
+ exports.date = require_column.date;
11
+ exports.defineConfig = require_config.defineConfig;
12
+ exports.enumColumn = require_column.enumeration;
13
+ exports.enumeration = require_column.enumeration;
14
+ exports.json = require_column.json;
15
+ exports.jsonb = require_column.jsonb;
16
+ exports.many = require_relation.many;
17
+ exports.number = require_column.number;
18
+ exports.one = require_relation.one;
19
+ exports.string = require_column.string;
20
+ exports.uuid = require_column.uuid;
@@ -0,0 +1,7 @@
1
+ import { createTable } from "../../orm/table.cjs";
2
+ import { CreateInput, CreateManyInput, DeleteBuilderInput, DeleteInput, DeleteManyInput, Dialect, DialectAdapter, FindFirstInput, FindManyInput, FindUniqueInput, InsertInput, JoinNode, OrderDirection, SelectInput, SelectPlan, TableRow, TinyTableClient, UpdateBuilderInput, UpdateInput, UpdateManyInput, WhereNode } from "../../orm/types.cjs";
3
+ import { boolean, date, enumeration, json, jsonb, number, string, uuid } from "../../orm/column.cjs";
4
+ import { defineConfig } from "../../orm/migration/config.cjs";
5
+ import { createOrm } from "../../orm/orm.cjs";
6
+ import { many, one } from "../../orm/relation.cjs";
7
+ export { type CreateInput, type CreateManyInput, type DeleteBuilderInput, type DeleteInput, type DeleteManyInput, type Dialect, type DialectAdapter, type FindFirstInput, type FindManyInput, type FindUniqueInput, type InsertInput, type JoinNode, type OrderDirection, type SelectInput, type SelectPlan, type TableRow, type TinyTableClient, type UpdateBuilderInput, type UpdateInput, type UpdateManyInput, type WhereNode, boolean, createOrm, createTable, date, defineConfig, enumeration as enumColumn, enumeration, json, jsonb, many, number, one, string, uuid };
@@ -0,0 +1,7 @@
1
+ import { createTable } from "../../orm/table.mjs";
2
+ import { CreateInput, CreateManyInput, DeleteBuilderInput, DeleteInput, DeleteManyInput, Dialect, DialectAdapter, FindFirstInput, FindManyInput, FindUniqueInput, InsertInput, JoinNode, OrderDirection, SelectInput, SelectPlan, TableRow, TinyTableClient, UpdateBuilderInput, UpdateInput, UpdateManyInput, WhereNode } from "../../orm/types.mjs";
3
+ import { boolean, date, enumeration, json, jsonb, number, string, uuid } from "../../orm/column.mjs";
4
+ import { defineConfig } from "../../orm/migration/config.mjs";
5
+ import { createOrm } from "../../orm/orm.mjs";
6
+ import { many, one } from "../../orm/relation.mjs";
7
+ export { type CreateInput, type CreateManyInput, type DeleteBuilderInput, type DeleteInput, type DeleteManyInput, type Dialect, type DialectAdapter, type FindFirstInput, type FindManyInput, type FindUniqueInput, type InsertInput, type JoinNode, type OrderDirection, type SelectInput, type SelectPlan, type TableRow, type TinyTableClient, type UpdateBuilderInput, type UpdateInput, type UpdateManyInput, type WhereNode, boolean, createOrm, createTable, date, defineConfig, enumeration as enumColumn, enumeration, json, jsonb, many, number, one, string, uuid };
@@ -0,0 +1,6 @@
1
+ import { boolean, date, enumeration, json, jsonb, number, string, uuid } from "../../orm/column.mjs";
2
+ import { defineConfig } from "../../orm/migration/config.mjs";
3
+ import { createOrm } from "../../orm/orm.mjs";
4
+ import { many, one } from "../../orm/relation.mjs";
5
+ import { createTable } from "../../orm/table.mjs";
6
+ export { boolean, createOrm, createTable, date, defineConfig, enumeration as enumColumn, enumeration, json, jsonb, many, number, one, string, uuid };
@@ -0,0 +1,99 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_helpers = require("../../policy/helpers.cjs");
3
+ //#region src/lib/policy/index.ts
4
+ var Policy = class {
5
+ rules = [];
6
+ allow(params) {
7
+ const actions = this.toActions(params.action);
8
+ for (const action of actions) this.rules.push({
9
+ action,
10
+ conditions: params.conditions,
11
+ inverted: false,
12
+ reason: params.reason
13
+ });
14
+ }
15
+ forbid(params) {
16
+ const actions = this.toActions(params.action);
17
+ for (const action of actions) this.rules.push({
18
+ action,
19
+ conditions: params.conditions,
20
+ inverted: true,
21
+ reason: params.reason
22
+ });
23
+ }
24
+ toActions(action) {
25
+ if (Array.isArray(action)) return action;
26
+ return [action];
27
+ }
28
+ can(action, object) {
29
+ const filteredRules = this.rules.filter((rule) => rule.action === action);
30
+ const forbidResult = this.checkForbids(filteredRules, object);
31
+ if (forbidResult) return forbidResult;
32
+ const allowResult = this.checkAllows(filteredRules, object);
33
+ if (allowResult) return allowResult;
34
+ return {
35
+ allowed: false,
36
+ reason: void 0
37
+ };
38
+ }
39
+ checkForbids(rules, object) {
40
+ for (const rule of rules) {
41
+ if (!rule.inverted) continue;
42
+ if (!rule.conditions || Object.entries(rule.conditions).length === 0) return {
43
+ allowed: false,
44
+ reason: rule.reason
45
+ };
46
+ if (object && this.deepMatch(object, rule.conditions)) return {
47
+ allowed: false,
48
+ reason: rule.reason
49
+ };
50
+ }
51
+ }
52
+ checkAllows(rules, object) {
53
+ for (const rule of rules) {
54
+ if (rule.inverted) continue;
55
+ if (!rule.conditions || Object.entries(rule.conditions).length === 0) return {
56
+ allowed: true,
57
+ reason: rule.reason
58
+ };
59
+ if (object && this.deepMatch(object, rule.conditions)) return {
60
+ allowed: true,
61
+ reason: rule.reason
62
+ };
63
+ }
64
+ }
65
+ deepMatch(objectValue, conditionValue) {
66
+ if (typeof objectValue !== "object" || objectValue === null) return false;
67
+ for (const [key, nestedCondition] of Object.entries(conditionValue)) {
68
+ const nestedValue = Reflect.get(objectValue, key);
69
+ if (!this.matchValue(nestedValue, nestedCondition)) return false;
70
+ }
71
+ return true;
72
+ }
73
+ matchValue(actual, condition) {
74
+ if (typeof condition !== "object" || condition === null) return false;
75
+ if ("fn" in condition && typeof condition.fn === "function") return condition.fn(actual);
76
+ return this.deepMatch(actual, condition);
77
+ }
78
+ };
79
+ //#endregion
80
+ exports.Policy = Policy;
81
+ exports.and = require_helpers.and;
82
+ exports.endsWith = require_helpers.endsWith;
83
+ exports.eq = require_helpers.eq;
84
+ exports.gt = require_helpers.gt;
85
+ exports.gte = require_helpers.gte;
86
+ exports.has = require_helpers.has;
87
+ exports.hasAny = require_helpers.hasAny;
88
+ exports.hasLength = require_helpers.hasLength;
89
+ exports.includes = require_helpers.includes;
90
+ exports.isDefined = require_helpers.isDefined;
91
+ exports.isEmpty = require_helpers.isEmpty;
92
+ exports.isNullish = require_helpers.isNullish;
93
+ exports.lt = require_helpers.lt;
94
+ exports.lte = require_helpers.lte;
95
+ exports.matches = require_helpers.matches;
96
+ exports.neq = require_helpers.neq;
97
+ exports.not = require_helpers.not;
98
+ exports.or = require_helpers.or;
99
+ exports.startsWith = require_helpers.startsWith;
@@ -0,0 +1,21 @@
1
+ import { ConditionHelper, and, endsWith, eq, gt, gte, has, hasAny, hasLength, includes, isDefined, isEmpty, isNullish, lt, lte, matches, neq, not, or, startsWith } from "../../policy/helpers.cjs";
2
+ import { Action, AllowParams, ForbidParams } from "../../policy/types.cjs";
3
+
4
+ //#region src/lib/policy/index.d.ts
5
+ declare class Policy<TEntity extends Record<string, unknown> = Record<string, unknown>> {
6
+ private rules;
7
+ allow(params: AllowParams<TEntity>): void;
8
+ forbid(params: ForbidParams<TEntity>): void;
9
+ private toActions;
10
+ can(action: Action, object?: TEntity): {
11
+ allowed: boolean;
12
+ reason: string | undefined;
13
+ };
14
+ private checkForbids;
15
+ private checkAllows;
16
+ private deepMatch;
17
+ private matchValue;
18
+ }
19
+ //#endregion
20
+ export { type ConditionHelper, Policy, and, endsWith, eq, gt, gte, has, hasAny, hasLength, includes, isDefined, isEmpty, isNullish, lt, lte, matches, neq, not, or, startsWith };
21
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/policy/index.ts"],"mappings":";;;;cAEa,MAAA,iBACK,MAAA,oBAA0B,MAAA;EAAA,QAElC,KAAA;EAED,KAAA,CAAM,MAAA,EAAQ,WAAA,CAAY,OAAA;EAa1B,MAAA,CAAO,MAAA,EAAQ,YAAA,CAAa,OAAA;EAAA,QAa3B,SAAA;EAQD,GAAA,CAAI,MAAA,EAAQ,MAAA,EAAQ,MAAA,GAAS,OAAA;;;;UAkB5B,YAAA;EAAA,QAgBA,WAAA;EAAA,QAgBA,SAAA;EAAA,QAgBA,UAAA;AAAA"}
@@ -0,0 +1,21 @@
1
+ import { ConditionHelper, and, endsWith, eq, gt, gte, has, hasAny, hasLength, includes, isDefined, isEmpty, isNullish, lt, lte, matches, neq, not, or, startsWith } from "../../policy/helpers.mjs";
2
+ import { Action, AllowParams, ForbidParams } from "../../policy/types.mjs";
3
+
4
+ //#region src/lib/policy/index.d.ts
5
+ declare class Policy<TEntity extends Record<string, unknown> = Record<string, unknown>> {
6
+ private rules;
7
+ allow(params: AllowParams<TEntity>): void;
8
+ forbid(params: ForbidParams<TEntity>): void;
9
+ private toActions;
10
+ can(action: Action, object?: TEntity): {
11
+ allowed: boolean;
12
+ reason: string | undefined;
13
+ };
14
+ private checkForbids;
15
+ private checkAllows;
16
+ private deepMatch;
17
+ private matchValue;
18
+ }
19
+ //#endregion
20
+ export { type ConditionHelper, Policy, and, endsWith, eq, gt, gte, has, hasAny, hasLength, includes, isDefined, isEmpty, isNullish, lt, lte, matches, neq, not, or, startsWith };
21
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/policy/index.ts"],"mappings":";;;;cAEa,MAAA,iBACK,MAAA,oBAA0B,MAAA;EAAA,QAElC,KAAA;EAED,KAAA,CAAM,MAAA,EAAQ,WAAA,CAAY,OAAA;EAa1B,MAAA,CAAO,MAAA,EAAQ,YAAA,CAAa,OAAA;EAAA,QAa3B,SAAA;EAQD,GAAA,CAAI,MAAA,EAAQ,MAAA,EAAQ,MAAA,GAAS,OAAA;;;;UAkB5B,YAAA;EAAA,QAgBA,WAAA;EAAA,QAgBA,SAAA;EAAA,QAgBA,UAAA;AAAA"}
@@ -0,0 +1,81 @@
1
+ import { and, endsWith, eq, gt, gte, has, hasAny, hasLength, includes, isDefined, isEmpty, isNullish, lt, lte, matches, neq, not, or, startsWith } from "../../policy/helpers.mjs";
2
+ //#region src/lib/policy/index.ts
3
+ var Policy = class {
4
+ rules = [];
5
+ allow(params) {
6
+ const actions = this.toActions(params.action);
7
+ for (const action of actions) this.rules.push({
8
+ action,
9
+ conditions: params.conditions,
10
+ inverted: false,
11
+ reason: params.reason
12
+ });
13
+ }
14
+ forbid(params) {
15
+ const actions = this.toActions(params.action);
16
+ for (const action of actions) this.rules.push({
17
+ action,
18
+ conditions: params.conditions,
19
+ inverted: true,
20
+ reason: params.reason
21
+ });
22
+ }
23
+ toActions(action) {
24
+ if (Array.isArray(action)) return action;
25
+ return [action];
26
+ }
27
+ can(action, object) {
28
+ const filteredRules = this.rules.filter((rule) => rule.action === action);
29
+ const forbidResult = this.checkForbids(filteredRules, object);
30
+ if (forbidResult) return forbidResult;
31
+ const allowResult = this.checkAllows(filteredRules, object);
32
+ if (allowResult) return allowResult;
33
+ return {
34
+ allowed: false,
35
+ reason: void 0
36
+ };
37
+ }
38
+ checkForbids(rules, object) {
39
+ for (const rule of rules) {
40
+ if (!rule.inverted) continue;
41
+ if (!rule.conditions || Object.entries(rule.conditions).length === 0) return {
42
+ allowed: false,
43
+ reason: rule.reason
44
+ };
45
+ if (object && this.deepMatch(object, rule.conditions)) return {
46
+ allowed: false,
47
+ reason: rule.reason
48
+ };
49
+ }
50
+ }
51
+ checkAllows(rules, object) {
52
+ for (const rule of rules) {
53
+ if (rule.inverted) continue;
54
+ if (!rule.conditions || Object.entries(rule.conditions).length === 0) return {
55
+ allowed: true,
56
+ reason: rule.reason
57
+ };
58
+ if (object && this.deepMatch(object, rule.conditions)) return {
59
+ allowed: true,
60
+ reason: rule.reason
61
+ };
62
+ }
63
+ }
64
+ deepMatch(objectValue, conditionValue) {
65
+ if (typeof objectValue !== "object" || objectValue === null) return false;
66
+ for (const [key, nestedCondition] of Object.entries(conditionValue)) {
67
+ const nestedValue = Reflect.get(objectValue, key);
68
+ if (!this.matchValue(nestedValue, nestedCondition)) return false;
69
+ }
70
+ return true;
71
+ }
72
+ matchValue(actual, condition) {
73
+ if (typeof condition !== "object" || condition === null) return false;
74
+ if ("fn" in condition && typeof condition.fn === "function") return condition.fn(actual);
75
+ return this.deepMatch(actual, condition);
76
+ }
77
+ };
78
+ //#endregion
79
+ export { Policy, and, endsWith, eq, gt, gte, has, hasAny, hasLength, includes, isDefined, isEmpty, isNullish, lt, lte, matches, neq, not, or, startsWith };
80
+
81
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/policy/index.ts"],"sourcesContent":["import type { Action, AllowParams, ForbidParams, Rule } from \"./types.js\";\n\nexport class Policy<\n TEntity extends Record<string, unknown> = Record<string, unknown>,\n> {\n private rules: Rule<TEntity>[] = [];\n\n public allow(params: AllowParams<TEntity>) {\n const actions = this.toActions(params.action);\n\n for (const action of actions) {\n this.rules.push({\n action,\n conditions: params.conditions,\n inverted: false,\n reason: params.reason,\n });\n }\n }\n\n public forbid(params: ForbidParams<TEntity>) {\n const actions = this.toActions(params.action);\n\n for (const action of actions) {\n this.rules.push({\n action,\n conditions: params.conditions,\n inverted: true,\n reason: params.reason,\n });\n }\n }\n\n private toActions(action: Action | Action[]) {\n if (Array.isArray(action)) {\n return action;\n }\n\n return [action];\n }\n\n public can(action: Action, object?: TEntity) {\n const filteredRules = this.rules.filter((rule) => rule.action === action);\n\n const forbidResult = this.checkForbids(filteredRules, object);\n\n if (forbidResult) {\n return forbidResult;\n }\n\n const allowResult = this.checkAllows(filteredRules, object);\n\n if (allowResult) {\n return allowResult;\n }\n\n return { allowed: false, reason: undefined };\n }\n\n private checkForbids(rules: Rule<TEntity>[], object?: TEntity) {\n for (const rule of rules) {\n if (!rule.inverted) {\n continue;\n }\n\n if (!rule.conditions || Object.entries(rule.conditions).length === 0) {\n return { allowed: false, reason: rule.reason };\n }\n\n if (object && this.deepMatch(object, rule.conditions)) {\n return { allowed: false, reason: rule.reason };\n }\n }\n }\n\n private checkAllows(rules: Rule<TEntity>[], object?: TEntity) {\n for (const rule of rules) {\n if (rule.inverted) {\n continue;\n }\n\n if (!rule.conditions || Object.entries(rule.conditions).length === 0) {\n return { allowed: true, reason: rule.reason };\n }\n\n if (object && this.deepMatch(object, rule.conditions)) {\n return { allowed: true, reason: rule.reason };\n }\n }\n }\n\n private deepMatch(objectValue: unknown, conditionValue: object) {\n if (typeof objectValue !== \"object\" || objectValue === null) {\n return false;\n }\n\n for (const [key, nestedCondition] of Object.entries(conditionValue)) {\n const nestedValue = Reflect.get(objectValue, key);\n\n if (!this.matchValue(nestedValue, nestedCondition)) {\n return false;\n }\n }\n\n return true;\n }\n\n private matchValue(actual: unknown, condition: unknown) {\n if (typeof condition !== \"object\" || condition === null) {\n return false;\n }\n\n if (\"fn\" in condition && typeof condition.fn === \"function\") {\n return condition.fn(actual);\n }\n\n return this.deepMatch(actual, condition);\n }\n}\n\nexport type { ConditionHelper } from \"./helpers.js\";\nexport {\n and,\n endsWith,\n eq,\n gt,\n gte,\n has,\n hasAny,\n hasLength,\n includes,\n isDefined,\n isEmpty,\n isNullish,\n lt,\n lte,\n matches,\n neq,\n not,\n or,\n startsWith,\n} from \"./helpers.js\";\n"],"mappings":";;AAEA,IAAa,SAAb,MAEE;CACA,QAAiC,EAAE;CAEnC,MAAa,QAA8B;EACzC,MAAM,UAAU,KAAK,UAAU,OAAO,OAAO;AAE7C,OAAK,MAAM,UAAU,QACnB,MAAK,MAAM,KAAK;GACd;GACA,YAAY,OAAO;GACnB,UAAU;GACV,QAAQ,OAAO;GAChB,CAAC;;CAIN,OAAc,QAA+B;EAC3C,MAAM,UAAU,KAAK,UAAU,OAAO,OAAO;AAE7C,OAAK,MAAM,UAAU,QACnB,MAAK,MAAM,KAAK;GACd;GACA,YAAY,OAAO;GACnB,UAAU;GACV,QAAQ,OAAO;GAChB,CAAC;;CAIN,UAAkB,QAA2B;AAC3C,MAAI,MAAM,QAAQ,OAAO,CACvB,QAAO;AAGT,SAAO,CAAC,OAAO;;CAGjB,IAAW,QAAgB,QAAkB;EAC3C,MAAM,gBAAgB,KAAK,MAAM,QAAQ,SAAS,KAAK,WAAW,OAAO;EAEzE,MAAM,eAAe,KAAK,aAAa,eAAe,OAAO;AAE7D,MAAI,aACF,QAAO;EAGT,MAAM,cAAc,KAAK,YAAY,eAAe,OAAO;AAE3D,MAAI,YACF,QAAO;AAGT,SAAO;GAAE,SAAS;GAAO,QAAQ,KAAA;GAAW;;CAG9C,aAAqB,OAAwB,QAAkB;AAC7D,OAAK,MAAM,QAAQ,OAAO;AACxB,OAAI,CAAC,KAAK,SACR;AAGF,OAAI,CAAC,KAAK,cAAc,OAAO,QAAQ,KAAK,WAAW,CAAC,WAAW,EACjE,QAAO;IAAE,SAAS;IAAO,QAAQ,KAAK;IAAQ;AAGhD,OAAI,UAAU,KAAK,UAAU,QAAQ,KAAK,WAAW,CACnD,QAAO;IAAE,SAAS;IAAO,QAAQ,KAAK;IAAQ;;;CAKpD,YAAoB,OAAwB,QAAkB;AAC5D,OAAK,MAAM,QAAQ,OAAO;AACxB,OAAI,KAAK,SACP;AAGF,OAAI,CAAC,KAAK,cAAc,OAAO,QAAQ,KAAK,WAAW,CAAC,WAAW,EACjE,QAAO;IAAE,SAAS;IAAM,QAAQ,KAAK;IAAQ;AAG/C,OAAI,UAAU,KAAK,UAAU,QAAQ,KAAK,WAAW,CACnD,QAAO;IAAE,SAAS;IAAM,QAAQ,KAAK;IAAQ;;;CAKnD,UAAkB,aAAsB,gBAAwB;AAC9D,MAAI,OAAO,gBAAgB,YAAY,gBAAgB,KACrD,QAAO;AAGT,OAAK,MAAM,CAAC,KAAK,oBAAoB,OAAO,QAAQ,eAAe,EAAE;GACnE,MAAM,cAAc,QAAQ,IAAI,aAAa,IAAI;AAEjD,OAAI,CAAC,KAAK,WAAW,aAAa,gBAAgB,CAChD,QAAO;;AAIX,SAAO;;CAGT,WAAmB,QAAiB,WAAoB;AACtD,MAAI,OAAO,cAAc,YAAY,cAAc,KACjD,QAAO;AAGT,MAAI,QAAQ,aAAa,OAAO,UAAU,OAAO,WAC/C,QAAO,UAAU,GAAG,OAAO;AAG7B,SAAO,KAAK,UAAU,QAAQ,UAAU"}