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,25 @@
1
+ //#region src/lib/orm/dialect/postgres.ts
2
+ function escapeLike(s) {
3
+ return s.replaceAll("%", "\\%").replaceAll("_", "\\_");
4
+ }
5
+ const postgresDialectAdapter = {
6
+ dialect: "postgres",
7
+ likeKeyword: "ILIKE",
8
+ quoteIdentifier(identifier) {
9
+ return `"${identifier.replaceAll("\"", "\"\"")}"`;
10
+ },
11
+ serializeValue(_kind, value) {
12
+ if (value instanceof Date) return value.toISOString();
13
+ return value;
14
+ },
15
+ renderLikePattern(mode, value) {
16
+ const escaped = escapeLike(value);
17
+ if (mode === "startsWith") return `${escaped}%`;
18
+ if (mode === "endsWith") return `%${escaped}`;
19
+ return `%${escaped}%`;
20
+ }
21
+ };
22
+ //#endregion
23
+ export { postgresDialectAdapter };
24
+
25
+ //# sourceMappingURL=postgres.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.mjs","names":[],"sources":["../../../src/lib/orm/dialect/postgres.ts"],"sourcesContent":["import type { DialectAdapter } from \"../types.js\";\n\nfunction escapeLike(s: string) {\n return s.replaceAll(\"%\", \"\\\\%\").replaceAll(\"_\", \"\\\\_\");\n}\n\nexport const postgresDialectAdapter: DialectAdapter = {\n dialect: \"postgres\",\n likeKeyword: \"ILIKE\",\n\n quoteIdentifier(identifier: string) {\n return `\"${identifier.replaceAll('\"', '\"\"')}\"`;\n },\n\n serializeValue(_kind, value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n return value;\n },\n\n renderLikePattern(mode, value) {\n const escaped = escapeLike(value);\n\n if (mode === \"startsWith\") {\n return `${escaped}%`;\n }\n\n if (mode === \"endsWith\") {\n return `%${escaped}`;\n }\n\n return `%${escaped}%`;\n },\n};\n"],"mappings":";AAEA,SAAS,WAAW,GAAW;AAC7B,QAAO,EAAE,WAAW,KAAK,MAAM,CAAC,WAAW,KAAK,MAAM;;AAGxD,MAAa,yBAAyC;CACpD,SAAS;CACT,aAAa;CAEb,gBAAgB,YAAoB;AAClC,SAAO,IAAI,WAAW,WAAW,MAAK,OAAK,CAAC;;CAG9C,eAAe,OAAO,OAAO;AAC3B,MAAI,iBAAiB,KACnB,QAAO,MAAM,aAAa;AAG5B,SAAO;;CAGT,kBAAkB,MAAM,OAAO;EAC7B,MAAM,UAAU,WAAW,MAAM;AAEjC,MAAI,SAAS,aACX,QAAO,GAAG,QAAQ;AAGpB,MAAI,SAAS,WACX,QAAO,IAAI;AAGb,SAAO,IAAI,QAAQ;;CAEtB"}
@@ -0,0 +1,31 @@
1
+ //#region src/lib/orm/dialect/sqlite.ts
2
+ function escapeLike(s) {
3
+ return s.replaceAll("%", "\\%").replaceAll("_", "\\_");
4
+ }
5
+ const sqliteDialectAdapter = {
6
+ dialect: "sqlite",
7
+ likeKeyword: "LIKE",
8
+ quoteIdentifier(identifier) {
9
+ return `"${identifier.replaceAll("\"", "\"\"")}"`;
10
+ },
11
+ serializeValue(kind, value) {
12
+ if (kind === "date") {
13
+ if (value instanceof Date) return value.toISOString();
14
+ return value;
15
+ }
16
+ if (kind === "json" || kind === "jsonb") return JSON.stringify(value);
17
+ if (kind === "boolean") {
18
+ if (value === true) return 1;
19
+ if (value === false) return 0;
20
+ }
21
+ return value;
22
+ },
23
+ renderLikePattern(mode, value) {
24
+ const escaped = escapeLike(value);
25
+ if (mode === "startsWith") return `${escaped}%`;
26
+ if (mode === "endsWith") return `%${escaped}`;
27
+ return `%${escaped}%`;
28
+ }
29
+ };
30
+ //#endregion
31
+ exports.sqliteDialectAdapter = sqliteDialectAdapter;
@@ -0,0 +1,33 @@
1
+ //#region src/lib/orm/dialect/sqlite.ts
2
+ function escapeLike(s) {
3
+ return s.replaceAll("%", "\\%").replaceAll("_", "\\_");
4
+ }
5
+ const sqliteDialectAdapter = {
6
+ dialect: "sqlite",
7
+ likeKeyword: "LIKE",
8
+ quoteIdentifier(identifier) {
9
+ return `"${identifier.replaceAll("\"", "\"\"")}"`;
10
+ },
11
+ serializeValue(kind, value) {
12
+ if (kind === "date") {
13
+ if (value instanceof Date) return value.toISOString();
14
+ return value;
15
+ }
16
+ if (kind === "json" || kind === "jsonb") return JSON.stringify(value);
17
+ if (kind === "boolean") {
18
+ if (value === true) return 1;
19
+ if (value === false) return 0;
20
+ }
21
+ return value;
22
+ },
23
+ renderLikePattern(mode, value) {
24
+ const escaped = escapeLike(value);
25
+ if (mode === "startsWith") return `${escaped}%`;
26
+ if (mode === "endsWith") return `%${escaped}`;
27
+ return `%${escaped}%`;
28
+ }
29
+ };
30
+ //#endregion
31
+ export { sqliteDialectAdapter };
32
+
33
+ //# sourceMappingURL=sqlite.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.mjs","names":[],"sources":["../../../src/lib/orm/dialect/sqlite.ts"],"sourcesContent":["import type { DialectAdapter } from \"../types.js\";\n\nfunction escapeLike(s: string) {\n return s.replaceAll(\"%\", \"\\\\%\").replaceAll(\"_\", \"\\\\_\");\n}\n\nexport const sqliteDialectAdapter: DialectAdapter = {\n dialect: \"sqlite\",\n likeKeyword: \"LIKE\",\n\n quoteIdentifier(identifier: string) {\n return `\"${identifier.replaceAll('\"', '\"\"')}\"`;\n },\n\n serializeValue(kind, value) {\n if (kind === \"date\") {\n if (value instanceof Date) {\n return value.toISOString();\n }\n\n return value;\n }\n\n if (kind === \"json\" || kind === \"jsonb\") {\n return JSON.stringify(value);\n }\n\n if (kind === \"boolean\") {\n if (value === true) return 1;\n if (value === false) return 0;\n }\n\n return value;\n },\n\n renderLikePattern(mode, value) {\n const escaped = escapeLike(value);\n\n if (mode === \"startsWith\") {\n return `${escaped}%`;\n }\n\n if (mode === \"endsWith\") {\n return `%${escaped}`;\n }\n\n return `%${escaped}%`;\n },\n};\n"],"mappings":";AAEA,SAAS,WAAW,GAAW;AAC7B,QAAO,EAAE,WAAW,KAAK,MAAM,CAAC,WAAW,KAAK,MAAM;;AAGxD,MAAa,uBAAuC;CAClD,SAAS;CACT,aAAa;CAEb,gBAAgB,YAAoB;AAClC,SAAO,IAAI,WAAW,WAAW,MAAK,OAAK,CAAC;;CAG9C,eAAe,MAAM,OAAO;AAC1B,MAAI,SAAS,QAAQ;AACnB,OAAI,iBAAiB,KACnB,QAAO,MAAM,aAAa;AAG5B,UAAO;;AAGT,MAAI,SAAS,UAAU,SAAS,QAC9B,QAAO,KAAK,UAAU,MAAM;AAG9B,MAAI,SAAS,WAAW;AACtB,OAAI,UAAU,KAAM,QAAO;AAC3B,OAAI,UAAU,MAAO,QAAO;;AAG9B,SAAO;;CAGT,kBAAkB,MAAM,OAAO;EAC7B,MAAM,UAAU,WAAW,MAAM;AAEjC,MAAI,SAAS,aACX,QAAO,GAAG,QAAQ;AAGpB,MAAI,SAAS,WACX,QAAO,IAAI;AAGb,SAAO,IAAI,QAAQ;;CAEtB"}
@@ -0,0 +1,8 @@
1
+ //#region src/lib/orm/dialect/utils.ts
2
+ function inferDialectFromUrl(url) {
3
+ if (url.startsWith("postgres://") || url.startsWith("postgresql://")) return "postgres";
4
+ if (url.startsWith("mysql://") || url.startsWith("mysql2://")) return "mysql";
5
+ return "sqlite";
6
+ }
7
+ //#endregion
8
+ exports.inferDialectFromUrl = inferDialectFromUrl;
@@ -0,0 +1,10 @@
1
+ //#region src/lib/orm/dialect/utils.ts
2
+ function inferDialectFromUrl(url) {
3
+ if (url.startsWith("postgres://") || url.startsWith("postgresql://")) return "postgres";
4
+ if (url.startsWith("mysql://") || url.startsWith("mysql2://")) return "mysql";
5
+ return "sqlite";
6
+ }
7
+ //#endregion
8
+ export { inferDialectFromUrl };
9
+
10
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/lib/orm/dialect/utils.ts"],"sourcesContent":["import type { Dialect } from \"../types.js\";\n\nexport function inferDialectFromUrl(url: string): Dialect {\n if (url.startsWith(\"postgres://\") || url.startsWith(\"postgresql://\")) {\n return \"postgres\";\n }\n\n if (url.startsWith(\"mysql://\") || url.startsWith(\"mysql2://\")) {\n return \"mysql\";\n }\n\n return \"sqlite\";\n}\n\nexport function isDialect(value: Dialect) {\n return value === \"postgres\" || value === \"mysql\" || value === \"sqlite\";\n}\n"],"mappings":";AAEA,SAAgB,oBAAoB,KAAsB;AACxD,KAAI,IAAI,WAAW,cAAc,IAAI,IAAI,WAAW,gBAAgB,CAClE,QAAO;AAGT,KAAI,IAAI,WAAW,WAAW,IAAI,IAAI,WAAW,YAAY,CAC3D,QAAO;AAGT,QAAO"}
@@ -0,0 +1,31 @@
1
+ //#region src/lib/orm/internal/table-columns.ts
2
+ function buildSelectColumns(sql, table) {
3
+ return buildAliasedColumns(sql, table, true);
4
+ }
5
+ function buildReturningColumns(sql, table) {
6
+ return buildAliasedColumns(sql, table, false);
7
+ }
8
+ function buildAliasedColumns(sql, table, qualifyWithTableName) {
9
+ const fragments = [];
10
+ for (const jsKey in table.columns) {
11
+ const col = table.columns[jsKey];
12
+ if (!col) continue;
13
+ if (qualifyWithTableName) {
14
+ fragments.push(sql`${sql(table.tableName)}.${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);
15
+ continue;
16
+ }
17
+ fragments.push(sql`${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);
18
+ }
19
+ const first = fragments[0];
20
+ if (!first) return sql`*`;
21
+ let joined = first;
22
+ for (let index = 1; index < fragments.length; index++) {
23
+ const fragment = fragments[index];
24
+ if (!fragment) continue;
25
+ joined = sql`${joined}, ${fragment}`;
26
+ }
27
+ return joined;
28
+ }
29
+ //#endregion
30
+ exports.buildReturningColumns = buildReturningColumns;
31
+ exports.buildSelectColumns = buildSelectColumns;
@@ -0,0 +1,32 @@
1
+ //#region src/lib/orm/internal/table-columns.ts
2
+ function buildSelectColumns(sql, table) {
3
+ return buildAliasedColumns(sql, table, true);
4
+ }
5
+ function buildReturningColumns(sql, table) {
6
+ return buildAliasedColumns(sql, table, false);
7
+ }
8
+ function buildAliasedColumns(sql, table, qualifyWithTableName) {
9
+ const fragments = [];
10
+ for (const jsKey in table.columns) {
11
+ const col = table.columns[jsKey];
12
+ if (!col) continue;
13
+ if (qualifyWithTableName) {
14
+ fragments.push(sql`${sql(table.tableName)}.${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);
15
+ continue;
16
+ }
17
+ fragments.push(sql`${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);
18
+ }
19
+ const first = fragments[0];
20
+ if (!first) return sql`*`;
21
+ let joined = first;
22
+ for (let index = 1; index < fragments.length; index++) {
23
+ const fragment = fragments[index];
24
+ if (!fragment) continue;
25
+ joined = sql`${joined}, ${fragment}`;
26
+ }
27
+ return joined;
28
+ }
29
+ //#endregion
30
+ export { buildReturningColumns, buildSelectColumns };
31
+
32
+ //# sourceMappingURL=table-columns.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-columns.mjs","names":[],"sources":["../../../src/lib/orm/internal/table-columns.ts"],"sourcesContent":["import type { SQL, TransactionSQL } from \"bun\";\nimport type { Table } from \"../table.js\";\nimport type { ColDefs } from \"../types.js\";\n\nexport function buildSelectColumns(\n sql: SQL | TransactionSQL,\n table: Table<ColDefs>,\n) {\n return buildAliasedColumns(sql, table, true);\n}\n\nexport function buildReturningColumns(\n sql: SQL | TransactionSQL,\n table: Table<ColDefs>,\n) {\n return buildAliasedColumns(sql, table, false);\n}\n\nfunction buildAliasedColumns(\n sql: SQL | TransactionSQL,\n table: Table<ColDefs>,\n qualifyWithTableName: boolean,\n) {\n const fragments: SQL.Query<unknown>[] = [];\n\n for (const jsKey in table.columns) {\n const col = table.columns[jsKey];\n\n if (!col) {\n continue;\n }\n\n if (qualifyWithTableName) {\n fragments.push(\n sql`${sql(table.tableName)}.${sql(col.meta.sqlName)} AS ${sql(jsKey)}`,\n );\n continue;\n }\n\n fragments.push(sql`${sql(col.meta.sqlName)} AS ${sql(jsKey)}`);\n }\n\n const first = fragments[0];\n\n if (!first) {\n return sql`*`;\n }\n\n let joined = first;\n\n for (let index = 1; index < fragments.length; index++) {\n const fragment = fragments[index];\n\n if (!fragment) {\n continue;\n }\n\n joined = sql`${joined}, ${fragment}`;\n }\n\n return joined;\n}\n"],"mappings":";AAIA,SAAgB,mBACd,KACA,OACA;AACA,QAAO,oBAAoB,KAAK,OAAO,KAAK;;AAG9C,SAAgB,sBACd,KACA,OACA;AACA,QAAO,oBAAoB,KAAK,OAAO,MAAM;;AAG/C,SAAS,oBACP,KACA,OACA,sBACA;CACA,MAAM,YAAkC,EAAE;AAE1C,MAAK,MAAM,SAAS,MAAM,SAAS;EACjC,MAAM,MAAM,MAAM,QAAQ;AAE1B,MAAI,CAAC,IACH;AAGF,MAAI,sBAAsB;AACxB,aAAU,KACR,GAAG,GAAG,IAAI,MAAM,UAAU,CAAC,GAAG,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,GACrE;AACD;;AAGF,YAAU,KAAK,GAAG,GAAG,IAAI,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,GAAG;;CAGhE,MAAM,QAAQ,UAAU;AAExB,KAAI,CAAC,MACH,QAAO,GAAG;CAGZ,IAAI,SAAS;AAEb,MAAK,IAAI,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS;EACrD,MAAM,WAAW,UAAU;AAE3B,MAAI,CAAC,SACH;AAGF,WAAS,GAAG,GAAG,OAAO,IAAI;;AAG5B,QAAO"}
@@ -0,0 +1,35 @@
1
+ //#region src/lib/orm/internal/table-lookup.ts
2
+ function getPrimaryKeyColumn(table) {
3
+ for (const jsKey in table.columns) {
4
+ const col = table.columns[jsKey];
5
+ if (!col) continue;
6
+ if (col.meta.isPrimaryKey) return {
7
+ jsKey,
8
+ col
9
+ };
10
+ }
11
+ return null;
12
+ }
13
+ function findColumnBySqlName(table, sqlName) {
14
+ for (const jsKey in table.columns) {
15
+ const col = table.columns[jsKey];
16
+ if (!col) continue;
17
+ if (col.meta.sqlName === sqlName) return {
18
+ jsKey,
19
+ col
20
+ };
21
+ }
22
+ return null;
23
+ }
24
+ function findTableKeyByValue(tables, targetTable) {
25
+ for (const tableKey in tables) {
26
+ const table = tables[tableKey];
27
+ if (!table) continue;
28
+ if (table === targetTable) return tableKey;
29
+ }
30
+ return null;
31
+ }
32
+ //#endregion
33
+ exports.findColumnBySqlName = findColumnBySqlName;
34
+ exports.findTableKeyByValue = findTableKeyByValue;
35
+ exports.getPrimaryKeyColumn = getPrimaryKeyColumn;
@@ -0,0 +1,35 @@
1
+ //#region src/lib/orm/internal/table-lookup.ts
2
+ function getPrimaryKeyColumn(table) {
3
+ for (const jsKey in table.columns) {
4
+ const col = table.columns[jsKey];
5
+ if (!col) continue;
6
+ if (col.meta.isPrimaryKey) return {
7
+ jsKey,
8
+ col
9
+ };
10
+ }
11
+ return null;
12
+ }
13
+ function findColumnBySqlName(table, sqlName) {
14
+ for (const jsKey in table.columns) {
15
+ const col = table.columns[jsKey];
16
+ if (!col) continue;
17
+ if (col.meta.sqlName === sqlName) return {
18
+ jsKey,
19
+ col
20
+ };
21
+ }
22
+ return null;
23
+ }
24
+ function findTableKeyByValue(tables, targetTable) {
25
+ for (const tableKey in tables) {
26
+ const table = tables[tableKey];
27
+ if (!table) continue;
28
+ if (table === targetTable) return tableKey;
29
+ }
30
+ return null;
31
+ }
32
+ //#endregion
33
+ export { findColumnBySqlName, findTableKeyByValue, getPrimaryKeyColumn };
34
+
35
+ //# sourceMappingURL=table-lookup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-lookup.mjs","names":[],"sources":["../../../src/lib/orm/internal/table-lookup.ts"],"sourcesContent":["import type { ColumnDef } from \"../column.js\";\nimport type { Table } from \"../table.js\";\nimport type { ColDefs, ColumnKind, ColumnMetaBase } from \"../types.js\";\n\nexport type ResolvedColumn = {\n jsKey: string;\n col: ColumnDef<ColumnKind, ColumnMetaBase, unknown>;\n};\n\nexport function getPrimaryKeyColumn(table: Table<ColDefs>) {\n for (const jsKey in table.columns) {\n const col = table.columns[jsKey];\n\n if (!col) {\n continue;\n }\n\n if (col.meta.isPrimaryKey) {\n return {\n jsKey,\n col,\n } satisfies ResolvedColumn;\n }\n }\n\n return null;\n}\n\nexport function findColumnBySqlName(table: Table<ColDefs>, sqlName: string) {\n for (const jsKey in table.columns) {\n const col = table.columns[jsKey];\n\n if (!col) {\n continue;\n }\n\n if (col.meta.sqlName === sqlName) {\n return {\n jsKey,\n col,\n } satisfies ResolvedColumn;\n }\n }\n\n return null;\n}\n\nexport function findTableKeyByValue(\n tables: Record<string, Table<ColDefs>>,\n targetTable: Table<ColDefs>,\n) {\n for (const tableKey in tables) {\n const table = tables[tableKey];\n\n if (!table) {\n continue;\n }\n\n if (table === targetTable) {\n return tableKey;\n }\n }\n\n return null;\n}\n"],"mappings":";AASA,SAAgB,oBAAoB,OAAuB;AACzD,MAAK,MAAM,SAAS,MAAM,SAAS;EACjC,MAAM,MAAM,MAAM,QAAQ;AAE1B,MAAI,CAAC,IACH;AAGF,MAAI,IAAI,KAAK,aACX,QAAO;GACL;GACA;GACD;;AAIL,QAAO;;AAGT,SAAgB,oBAAoB,OAAuB,SAAiB;AAC1E,MAAK,MAAM,SAAS,MAAM,SAAS;EACjC,MAAM,MAAM,MAAM,QAAQ;AAE1B,MAAI,CAAC,IACH;AAGF,MAAI,IAAI,KAAK,YAAY,QACvB,QAAO;GACL;GACA;GACD;;AAIL,QAAO;;AAGT,SAAgB,oBACd,QACA,aACA;AACA,MAAK,MAAM,YAAY,QAAQ;EAC7B,MAAM,QAAQ,OAAO;AAErB,MAAI,CAAC,MACH;AAGF,MAAI,UAAU,YACZ,QAAO;;AAIX,QAAO"}
@@ -0,0 +1,28 @@
1
+ const require_table_lookup = require("./table-lookup.cjs");
2
+ //#region src/lib/orm/internal/table-relations.ts
3
+ function findManyForeignKeyByReference(sourceTable, sourcePk) {
4
+ for (const key in sourceTable.columns) {
5
+ const col = sourceTable.columns[key];
6
+ if (!col) continue;
7
+ if (!col.meta.references) continue;
8
+ if (col.meta.references() === sourcePk) return col.meta.sqlName;
9
+ }
10
+ return null;
11
+ }
12
+ function inferManyForeignKeyFromInverse(sourceTable, targetTable, allRelations, allTables) {
13
+ const targetTableKey = require_table_lookup.findTableKeyByValue(allTables, targetTable);
14
+ if (!targetTableKey) return null;
15
+ const targetRels = allRelations[targetTableKey];
16
+ if (!targetRels) return null;
17
+ for (const relKey in targetRels) {
18
+ const rel = targetRels[relKey];
19
+ if (!rel) continue;
20
+ if (rel.kind !== "one") continue;
21
+ if (rel.table() !== sourceTable) continue;
22
+ return rel.foreignKey;
23
+ }
24
+ return null;
25
+ }
26
+ //#endregion
27
+ exports.findManyForeignKeyByReference = findManyForeignKeyByReference;
28
+ exports.inferManyForeignKeyFromInverse = inferManyForeignKeyFromInverse;
@@ -0,0 +1,29 @@
1
+ import { findTableKeyByValue } from "./table-lookup.mjs";
2
+ //#region src/lib/orm/internal/table-relations.ts
3
+ function findManyForeignKeyByReference(sourceTable, sourcePk) {
4
+ for (const key in sourceTable.columns) {
5
+ const col = sourceTable.columns[key];
6
+ if (!col) continue;
7
+ if (!col.meta.references) continue;
8
+ if (col.meta.references() === sourcePk) return col.meta.sqlName;
9
+ }
10
+ return null;
11
+ }
12
+ function inferManyForeignKeyFromInverse(sourceTable, targetTable, allRelations, allTables) {
13
+ const targetTableKey = findTableKeyByValue(allTables, targetTable);
14
+ if (!targetTableKey) return null;
15
+ const targetRels = allRelations[targetTableKey];
16
+ if (!targetRels) return null;
17
+ for (const relKey in targetRels) {
18
+ const rel = targetRels[relKey];
19
+ if (!rel) continue;
20
+ if (rel.kind !== "one") continue;
21
+ if (rel.table() !== sourceTable) continue;
22
+ return rel.foreignKey;
23
+ }
24
+ return null;
25
+ }
26
+ //#endregion
27
+ export { findManyForeignKeyByReference, inferManyForeignKeyFromInverse };
28
+
29
+ //# sourceMappingURL=table-relations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-relations.mjs","names":[],"sources":["../../../src/lib/orm/internal/table-relations.ts"],"sourcesContent":["import type { ColumnDef } from \"../column.js\";\nimport type { Table } from \"../table.js\";\nimport type {\n ColDefs,\n ColumnKind,\n ColumnMetaBase,\n RelationDefs,\n} from \"../types.js\";\nimport { findTableKeyByValue } from \"./table-lookup.js\";\n\nexport function findManyForeignKeyByReference(\n sourceTable: Table<ColDefs>,\n sourcePk: ColumnDef<ColumnKind, ColumnMetaBase, unknown>,\n) {\n for (const key in sourceTable.columns) {\n const col = sourceTable.columns[key];\n\n if (!col) {\n continue;\n }\n\n if (!col.meta.references) {\n continue;\n }\n\n const referenced = col.meta.references();\n\n if (referenced === sourcePk) {\n return col.meta.sqlName;\n }\n }\n\n return null;\n}\n\nexport function inferManyForeignKeyFromInverse(\n sourceTable: Table<ColDefs>,\n targetTable: Table<ColDefs>,\n allRelations: Partial<Record<string, RelationDefs>>,\n allTables: Record<string, Table<ColDefs>>,\n) {\n const targetTableKey = findTableKeyByValue(allTables, targetTable);\n\n if (!targetTableKey) {\n return null;\n }\n\n const targetRels = allRelations[targetTableKey];\n\n if (!targetRels) {\n return null;\n }\n\n for (const relKey in targetRels) {\n const rel = targetRels[relKey];\n\n if (!rel) {\n continue;\n }\n\n if (rel.kind !== \"one\") {\n continue;\n }\n\n if (rel.table() !== sourceTable) {\n continue;\n }\n\n return rel.foreignKey;\n }\n\n return null;\n}\n"],"mappings":";;AAUA,SAAgB,8BACd,aACA,UACA;AACA,MAAK,MAAM,OAAO,YAAY,SAAS;EACrC,MAAM,MAAM,YAAY,QAAQ;AAEhC,MAAI,CAAC,IACH;AAGF,MAAI,CAAC,IAAI,KAAK,WACZ;AAKF,MAFmB,IAAI,KAAK,YAAY,KAErB,SACjB,QAAO,IAAI,KAAK;;AAIpB,QAAO;;AAGT,SAAgB,+BACd,aACA,aACA,cACA,WACA;CACA,MAAM,iBAAiB,oBAAoB,WAAW,YAAY;AAElE,KAAI,CAAC,eACH,QAAO;CAGT,MAAM,aAAa,aAAa;AAEhC,KAAI,CAAC,WACH,QAAO;AAGT,MAAK,MAAM,UAAU,YAAY;EAC/B,MAAM,MAAM,WAAW;AAEvB,MAAI,CAAC,IACH;AAGF,MAAI,IAAI,SAAS,MACf;AAGF,MAAI,IAAI,OAAO,KAAK,YAClB;AAGF,SAAO,IAAI;;AAGb,QAAO"}
@@ -0,0 +1,7 @@
1
+ require("node:path");
2
+ //#region src/lib/orm/migration/config.ts
3
+ function defineConfig(config) {
4
+ return config;
5
+ }
6
+ //#endregion
7
+ exports.defineConfig = defineConfig;
@@ -0,0 +1,7 @@
1
+ import { SemolaConfig } from "./types.cjs";
2
+
3
+ //#region src/lib/orm/migration/config.d.ts
4
+ declare function defineConfig(config: SemolaConfig): SemolaConfig;
5
+ //#endregion
6
+ export { defineConfig };
7
+ //# sourceMappingURL=config.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.cts","names":[],"sources":["../../../src/lib/orm/migration/config.ts"],"mappings":";;;iBAIgB,YAAA,CAAa,MAAA,EAAQ,YAAA,GAAY,YAAA"}
@@ -0,0 +1,7 @@
1
+ import { SemolaConfig } from "./types.mjs";
2
+
3
+ //#region src/lib/orm/migration/config.d.ts
4
+ declare function defineConfig(config: SemolaConfig): SemolaConfig;
5
+ //#endregion
6
+ export { defineConfig };
7
+ //# sourceMappingURL=config.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.mts","names":[],"sources":["../../../src/lib/orm/migration/config.ts"],"mappings":";;;iBAIgB,YAAA,CAAa,MAAA,EAAQ,YAAA,GAAY,YAAA"}
@@ -0,0 +1,8 @@
1
+ //#region src/lib/orm/migration/config.ts
2
+ function defineConfig(config) {
3
+ return config;
4
+ }
5
+ //#endregion
6
+ export { defineConfig };
7
+
8
+ //# sourceMappingURL=config.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.mjs","names":[],"sources":["../../../src/lib/orm/migration/config.ts"],"sourcesContent":["import { resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { ResolvedSemolaConfig, SemolaConfig } from \"./types.js\";\n\nexport function defineConfig(config: SemolaConfig) {\n return config;\n}\n\nconst defaultMigrationDir = \"migrations\";\nconst defaultIntrospectOutput = \"orm.generated.ts\";\n\nasync function findConfigPath(cwd: string) {\n const candidates = [\n \"semola.config.ts\",\n \"semola.config.js\",\n \"semola.config.mjs\",\n ];\n for (const candidate of candidates) {\n const configPath = resolve(cwd, candidate);\n const exists = await Bun.file(configPath).exists();\n if (exists) {\n return configPath;\n }\n }\n return null;\n}\n\nexport async function loadConfig(cwd = process.cwd()) {\n const configPath = await findConfigPath(cwd);\n\n if (!configPath) {\n throw new Error(\"Could not find semola.config.ts in current directory\");\n }\n\n const configUrl = pathToFileURL(configPath).href;\n const mod = await import(`${configUrl}?t=${Date.now()}`);\n\n const loadedConfig = Reflect.get(mod, \"default\");\n\n if (typeof loadedConfig !== \"object\") {\n throw new Error(\"semola.config.ts must export a default config object\");\n }\n\n if (loadedConfig === null) {\n throw new Error(\"semola.config.ts must export a default config object\");\n }\n\n const orm = Reflect.get(loadedConfig, \"orm\");\n\n if (typeof orm !== \"object\") {\n throw new Error(\"semola.config.ts must contain an orm section\");\n }\n\n if (orm === null) {\n throw new Error(\"semola.config.ts must contain an orm section\");\n }\n\n const schema = Reflect.get(orm, \"schema\");\n\n if (typeof schema !== \"string\") {\n throw new Error(\"semola.config.ts must define orm.schema\");\n }\n\n const migrations = Reflect.get(orm, \"migrations\");\n const introspect = Reflect.get(orm, \"introspect\");\n\n const migrationDirValue =\n typeof migrations === \"object\" && migrations !== null\n ? Reflect.get(migrations, \"dir\")\n : null;\n\n const migrationDir =\n typeof migrationDirValue === \"string\"\n ? migrationDirValue\n : defaultMigrationDir;\n\n const transactionalValue =\n typeof migrations === \"object\" && migrations !== null\n ? Reflect.get(migrations, \"transactional\")\n : null;\n\n const transactional =\n typeof transactionalValue === \"boolean\" ? transactionalValue : true;\n\n const introspectOutputValue =\n typeof introspect === \"object\" && introspect !== null\n ? Reflect.get(introspect, \"output\")\n : null;\n\n const introspectOutput =\n typeof introspectOutputValue === \"string\"\n ? introspectOutputValue\n : defaultIntrospectOutput;\n\n const introspectUrlValue =\n typeof introspect === \"object\" && introspect !== null\n ? Reflect.get(introspect, \"url\")\n : null;\n\n const introspectUrl =\n typeof introspectUrlValue === \"string\" ? introspectUrlValue : null;\n\n const introspectDialectValue =\n typeof introspect === \"object\" && introspect !== null\n ? Reflect.get(introspect, \"dialect\")\n : null;\n\n const introspectDialect =\n introspectDialectValue === \"postgres\" ||\n introspectDialectValue === \"mysql\" ||\n introspectDialectValue === \"sqlite\"\n ? introspectDialectValue\n : null;\n\n const resolved: ResolvedSemolaConfig = {\n cwd,\n configPath,\n orm: {\n schema: resolve(cwd, schema),\n migrations: {\n dir: resolve(cwd, migrationDir),\n transactional,\n },\n introspect: {\n output: resolve(cwd, introspectOutput),\n url: introspectUrl,\n dialect: introspectDialect,\n },\n },\n };\n\n return resolved;\n}\n"],"mappings":";AAIA,SAAgB,aAAa,QAAsB;AACjD,QAAO"}
@@ -0,0 +1,20 @@
1
+ import { Dialect } from "../types.cjs";
2
+
3
+ //#region src/lib/orm/migration/types.d.ts
4
+ type SemolaConfig = {
5
+ orm: {
6
+ schema: string;
7
+ migrations?: {
8
+ dir?: string;
9
+ transactional?: boolean;
10
+ };
11
+ introspect?: {
12
+ output?: string;
13
+ url?: string;
14
+ dialect?: Dialect;
15
+ };
16
+ };
17
+ };
18
+ //#endregion
19
+ export { SemolaConfig };
20
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/orm/migration/types.ts"],"mappings":";;;KAEY,YAAA;EACV,GAAA;IACE,MAAA;IACA,UAAA;MACE,GAAA;MACA,aAAA;IAAA;IAEF,UAAA;MACE,MAAA;MACA,GAAA;MACA,OAAA,GAAU,OAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,20 @@
1
+ import { Dialect } from "../types.mjs";
2
+
3
+ //#region src/lib/orm/migration/types.d.ts
4
+ type SemolaConfig = {
5
+ orm: {
6
+ schema: string;
7
+ migrations?: {
8
+ dir?: string;
9
+ transactional?: boolean;
10
+ };
11
+ introspect?: {
12
+ output?: string;
13
+ url?: string;
14
+ dialect?: Dialect;
15
+ };
16
+ };
17
+ };
18
+ //#endregion
19
+ export { SemolaConfig };
20
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/orm/migration/types.ts"],"mappings":";;;KAEY,YAAA;EACV,GAAA;IACE,MAAA;IACA,UAAA;MACE,GAAA;MACA,aAAA;IAAA;IAEF,UAAA;MACE,MAAA;MACA,GAAA;MACA,OAAA,GAAU,OAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,41 @@
1
+ const require_index = require("./dialect/index.cjs");
2
+ const require_utils = require("./dialect/utils.cjs");
3
+ const require_client = require("./runtime/client.cjs");
4
+ let bun = require("bun");
5
+ //#region src/lib/orm/orm.ts
6
+ function createOrm(options) {
7
+ const sql = new bun.SQL(options.url);
8
+ const dialect = options.dialect ?? require_utils.inferDialectFromUrl(options.url);
9
+ const dialectAdapter = require_index.getDialectAdapter(dialect);
10
+ const makeModels = (sqlOrTx) => {
11
+ const out = {};
12
+ for (const key of Object.keys(options.tables)) {
13
+ const table = options.tables[key];
14
+ if (!table) continue;
15
+ out[key] = require_client.createTableClient(sqlOrTx, table, options.relations?.[key] ?? {}, dialectAdapter, options.tables, options.relations ?? {});
16
+ }
17
+ return out;
18
+ };
19
+ const client = {
20
+ ...makeModels(sql),
21
+ $transaction(fn) {
22
+ return sql.begin((tx) => fn(makeModels(tx)));
23
+ },
24
+ $raw(strings, ...values) {
25
+ return sql(strings, ...values);
26
+ }
27
+ };
28
+ Object.defineProperty(client, "__semolaOrm", {
29
+ value: {
30
+ options: { url: options.url },
31
+ dialect,
32
+ tables: options.tables
33
+ },
34
+ enumerable: false,
35
+ writable: false,
36
+ configurable: false
37
+ });
38
+ return client;
39
+ }
40
+ //#endregion
41
+ exports.createOrm = createOrm;
@@ -0,0 +1,18 @@
1
+ import { Table } from "./table.cjs";
2
+ import { ColDefs, Dialect, RelationDefs, TinyTableClient } from "./types.cjs";
3
+
4
+ //#region src/lib/orm/orm.d.ts
5
+ type OrmOptions<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>> = {
6
+ url: string;
7
+ tables: TTables;
8
+ relations?: TRels;
9
+ dialect?: Dialect;
10
+ };
11
+ type OrmModels<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>> = { [K in keyof TTables]: TinyTableClient<TTables[K] extends Table<infer C> ? C : never, K extends keyof TRels ? NonNullable<TRels[K]> : Record<never, never>> };
12
+ declare function createOrm<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>>(options: OrmOptions<TTables, TRels>): OrmModels<TTables, TRels> & {
13
+ $transaction<T>(fn: (tx: ReturnType<(sqlOrTx: SQL | TransactionSQL) => OrmModels<TTables, TRels>>) => Promise<T>): Promise<SQL.ContextCallbackResult<T>>;
14
+ $raw(strings: TemplateStringsArray, ...values: unknown[]): SQL.Query<any>;
15
+ };
16
+ //#endregion
17
+ export { createOrm };
18
+ //# sourceMappingURL=orm.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm.d.cts","names":[],"sources":["../../src/lib/orm/orm.ts"],"mappings":";;;;KAaK,UAAA,iBACa,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA;EAE5C,GAAA;EACA,MAAA,EAAQ,OAAA;EACR,SAAA,GAAY,KAAA;EACZ,OAAA,GAAU,OAAA;AAAA;AAAA,KAGP,SAAA,iBACa,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA,oBAEhC,OAAA,GAAU,eAAA,CACpB,OAAA,CAAQ,CAAA,UAAW,KAAA,YAAiB,CAAA,UACpC,CAAA,eAAgB,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,CAAA,KAAM,MAAA;AAAA,iBA6BpC,SAAA,iBACE,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA,GAAA,CAC5C,OAAA,EAAS,UAAA,CAAW,OAAA,EAAS,KAAA,IAAM,SAAA,CAAA,OAAA,EAAA,KAAA;kBAqCnB,EAAA,GAAO,EAAA,EAAI,UAAA,EAAU,OAAA,EA/B1B,GAAA,GAAM,cAAA,KACd,SAAA,CAAU,OAAA,EAAS,KAAA,OA8BuC,OAAA,CAAQ,CAAA,IAAE,OAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;gBAIvD,oBAAA,KAAoB,MAAA,cAAsB,GAAA,CAAA,KAAA;AAAA"}
@@ -0,0 +1,18 @@
1
+ import { Table } from "./table.mjs";
2
+ import { ColDefs, Dialect, RelationDefs, TinyTableClient } from "./types.mjs";
3
+
4
+ //#region src/lib/orm/orm.d.ts
5
+ type OrmOptions<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>> = {
6
+ url: string;
7
+ tables: TTables;
8
+ relations?: TRels;
9
+ dialect?: Dialect;
10
+ };
11
+ type OrmModels<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>> = { [K in keyof TTables]: TinyTableClient<TTables[K] extends Table<infer C> ? C : never, K extends keyof TRels ? NonNullable<TRels[K]> : Record<never, never>> };
12
+ declare function createOrm<TTables extends Record<string, Table<ColDefs>>, TRels extends Partial<Record<keyof TTables, RelationDefs>>>(options: OrmOptions<TTables, TRels>): OrmModels<TTables, TRels> & {
13
+ $transaction<T>(fn: (tx: ReturnType<(sqlOrTx: SQL | TransactionSQL) => OrmModels<TTables, TRels>>) => Promise<T>): Promise<SQL.ContextCallbackResult<T>>;
14
+ $raw(strings: TemplateStringsArray, ...values: unknown[]): SQL.Query<any>;
15
+ };
16
+ //#endregion
17
+ export { createOrm };
18
+ //# sourceMappingURL=orm.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm.d.mts","names":[],"sources":["../../src/lib/orm/orm.ts"],"mappings":";;;;KAaK,UAAA,iBACa,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA;EAE5C,GAAA;EACA,MAAA,EAAQ,OAAA;EACR,SAAA,GAAY,KAAA;EACZ,OAAA,GAAU,OAAA;AAAA;AAAA,KAGP,SAAA,iBACa,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA,oBAEhC,OAAA,GAAU,eAAA,CACpB,OAAA,CAAQ,CAAA,UAAW,KAAA,YAAiB,CAAA,UACpC,CAAA,eAAgB,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,CAAA,KAAM,MAAA;AAAA,iBA6BpC,SAAA,iBACE,MAAA,SAAe,KAAA,CAAM,OAAA,kBACvB,OAAA,CAAQ,MAAA,OAAa,OAAA,EAAS,YAAA,GAAA,CAC5C,OAAA,EAAS,UAAA,CAAW,OAAA,EAAS,KAAA,IAAM,SAAA,CAAA,OAAA,EAAA,KAAA;kBAqCnB,EAAA,GAAO,EAAA,EAAI,UAAA,EAAU,OAAA,EA/B1B,GAAA,GAAM,cAAA,KACd,SAAA,CAAU,OAAA,EAAS,KAAA,OA8BuC,OAAA,CAAQ,CAAA,IAAE,OAAA,CAAA,GAAA,CAAA,qBAAA,CAAA,CAAA;gBAIvD,oBAAA,KAAoB,MAAA,cAAsB,GAAA,CAAA,KAAA;AAAA"}
@@ -0,0 +1,43 @@
1
+ import { getDialectAdapter } from "./dialect/index.mjs";
2
+ import { inferDialectFromUrl } from "./dialect/utils.mjs";
3
+ import { createTableClient } from "./runtime/client.mjs";
4
+ import { SQL } from "bun";
5
+ //#region src/lib/orm/orm.ts
6
+ function createOrm(options) {
7
+ const sql = new SQL(options.url);
8
+ const dialect = options.dialect ?? inferDialectFromUrl(options.url);
9
+ const dialectAdapter = getDialectAdapter(dialect);
10
+ const makeModels = (sqlOrTx) => {
11
+ const out = {};
12
+ for (const key of Object.keys(options.tables)) {
13
+ const table = options.tables[key];
14
+ if (!table) continue;
15
+ out[key] = createTableClient(sqlOrTx, table, options.relations?.[key] ?? {}, dialectAdapter, options.tables, options.relations ?? {});
16
+ }
17
+ return out;
18
+ };
19
+ const client = {
20
+ ...makeModels(sql),
21
+ $transaction(fn) {
22
+ return sql.begin((tx) => fn(makeModels(tx)));
23
+ },
24
+ $raw(strings, ...values) {
25
+ return sql(strings, ...values);
26
+ }
27
+ };
28
+ Object.defineProperty(client, "__semolaOrm", {
29
+ value: {
30
+ options: { url: options.url },
31
+ dialect,
32
+ tables: options.tables
33
+ },
34
+ enumerable: false,
35
+ writable: false,
36
+ configurable: false
37
+ });
38
+ return client;
39
+ }
40
+ //#endregion
41
+ export { createOrm };
42
+
43
+ //# sourceMappingURL=orm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orm.mjs","names":[],"sources":["../../src/lib/orm/orm.ts"],"sourcesContent":["import type { TransactionSQL } from \"bun\";\nimport { SQL } from \"bun\";\nimport { getDialectAdapter } from \"./dialect/index.js\";\nimport { createTableClient } from \"./runtime/client.js\";\nimport { inferDialectFromUrl } from \"./runtime/errors.js\";\nimport type { Table } from \"./table.js\";\nimport type {\n ColDefs,\n Dialect,\n RelationDefs,\n TinyTableClient,\n} from \"./types.js\";\n\ntype OrmOptions<\n TTables extends Record<string, Table<ColDefs>>,\n TRels extends Partial<Record<keyof TTables, RelationDefs>>,\n> = {\n url: string;\n tables: TTables;\n relations?: TRels;\n dialect?: Dialect;\n};\n\ntype OrmModels<\n TTables extends Record<string, Table<ColDefs>>,\n TRels extends Partial<Record<keyof TTables, RelationDefs>>,\n> = {\n [K in keyof TTables]: TinyTableClient<\n TTables[K] extends Table<infer C> ? C : never,\n K extends keyof TRels ? NonNullable<TRels[K]> : Record<never, never>\n >;\n};\n\nexport class Orm {\n public constructor(\n public readonly options: OrmOptions<\n Record<string, Table<ColDefs>>,\n Record<string, RelationDefs>\n >,\n ) {}\n\n public get dialect(): Dialect {\n if (this.options.dialect) {\n return this.options.dialect;\n }\n\n return inferDialectFromUrl(this.options.url);\n }\n\n public get tables() {\n return this.options.tables;\n }\n\n public get relations() {\n return this.options.relations;\n }\n}\n\nexport function createOrm<\n TTables extends Record<string, Table<ColDefs>>,\n TRels extends Partial<Record<keyof TTables, RelationDefs>>,\n>(options: OrmOptions<TTables, TRels>) {\n const sql = new SQL(options.url);\n const dialect = options.dialect ?? inferDialectFromUrl(options.url);\n const dialectAdapter = getDialectAdapter(dialect);\n\n const makeModels = (\n sqlOrTx: SQL | TransactionSQL,\n ): OrmModels<TTables, TRels> => {\n const out: Record<string, TinyTableClient<ColDefs, RelationDefs>> = {};\n\n for (const key of Object.keys(options.tables)) {\n const table = options.tables[key];\n\n if (!table) {\n continue;\n }\n\n const rels = options.relations?.[key as keyof TRels];\n const relationDefs: RelationDefs = rels ?? {};\n\n out[key] = createTableClient(\n sqlOrTx,\n table,\n relationDefs,\n dialectAdapter,\n options.tables as Record<string, Table<ColDefs>>,\n (options.relations ?? {}) as Partial<Record<string, RelationDefs>>,\n );\n }\n\n // TypeScript cannot verify the dynamic key-to-type mapping at compile time\n return out as unknown as OrmModels<TTables, TRels>;\n };\n\n const client = {\n ...makeModels(sql),\n\n $transaction<T>(fn: (tx: ReturnType<typeof makeModels>) => Promise<T>) {\n return sql.begin((tx) => fn(makeModels(tx)));\n },\n\n $raw(strings: TemplateStringsArray, ...values: unknown[]) {\n return sql(strings, ...values);\n },\n };\n\n Object.defineProperty(client, \"__semolaOrm\", {\n value: {\n options: { url: options.url },\n dialect,\n tables: options.tables,\n },\n enumerable: false,\n writable: false,\n configurable: false,\n });\n\n return client;\n}\n"],"mappings":";;;;;AA0DA,SAAgB,UAGd,SAAqC;CACrC,MAAM,MAAM,IAAI,IAAI,QAAQ,IAAI;CAChC,MAAM,UAAU,QAAQ,WAAW,oBAAoB,QAAQ,IAAI;CACnE,MAAM,iBAAiB,kBAAkB,QAAQ;CAEjD,MAAM,cACJ,YAC8B;EAC9B,MAAM,MAA8D,EAAE;AAEtE,OAAK,MAAM,OAAO,OAAO,KAAK,QAAQ,OAAO,EAAE;GAC7C,MAAM,QAAQ,QAAQ,OAAO;AAE7B,OAAI,CAAC,MACH;AAMF,OAAI,OAAO,kBACT,SACA,OALW,QAAQ,YAAY,QACU,EAAE,EAM3C,gBACA,QAAQ,QACP,QAAQ,aAAa,EAAE,CACzB;;AAIH,SAAO;;CAGT,MAAM,SAAS;EACb,GAAG,WAAW,IAAI;EAElB,aAAgB,IAAuD;AACrE,UAAO,IAAI,OAAO,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC;;EAG9C,KAAK,SAA+B,GAAG,QAAmB;AACxD,UAAO,IAAI,SAAS,GAAG,OAAO;;EAEjC;AAED,QAAO,eAAe,QAAQ,eAAe;EAC3C,OAAO;GACL,SAAS,EAAE,KAAK,QAAQ,KAAK;GAC7B;GACA,QAAQ,QAAQ;GACjB;EACD,YAAY;EACZ,UAAU;EACV,cAAc;EACf,CAAC;AAEF,QAAO"}
@@ -0,0 +1,18 @@
1
+ //#region src/lib/orm/relation.ts
2
+ function many(table, foreignKey) {
3
+ return {
4
+ kind: "many",
5
+ table,
6
+ foreignKey
7
+ };
8
+ }
9
+ function one(foreignKey, table) {
10
+ return {
11
+ kind: "one",
12
+ foreignKey,
13
+ table
14
+ };
15
+ }
16
+ //#endregion
17
+ exports.many = many;
18
+ exports.one = one;
@@ -0,0 +1,8 @@
1
+ import { ManyRelation, OneRelation } from "./types.cjs";
2
+
3
+ //#region src/lib/orm/relation.d.ts
4
+ declare function many<TTable>(table: () => TTable, foreignKey?: string): ManyRelation<TTable>;
5
+ declare function one<TTable>(foreignKey: string, table: () => TTable): OneRelation<TTable>;
6
+ //#endregion
7
+ export { many, one };
8
+ //# sourceMappingURL=relation.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation.d.cts","names":[],"sources":["../../src/lib/orm/relation.ts"],"mappings":";;;iBAEgB,IAAA,QAAA,CACd,KAAA,QAAa,MAAA,EACb,UAAA,YACC,YAAA,CAAa,MAAA;AAAA,iBAIA,GAAA,QAAA,CACd,UAAA,UACA,KAAA,QAAa,MAAA,GACZ,WAAA,CAAY,MAAA"}