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,208 @@
1
+ import { mightThrow } from "../../lib/errors/index.mjs";
2
+ import { generateOpenApiSpec } from "../openapi/index.mjs";
3
+ import { validateBody, validateCookies, validateHeaders, validateParams, validateQuery, validateSchema } from "../validation/index.mjs";
4
+ //#region src/lib/api/core/index.ts
5
+ const defaultValidated = Object.freeze({
6
+ body: void 0,
7
+ query: void 0,
8
+ headers: void 0,
9
+ cookies: void 0,
10
+ params: void 0
11
+ });
12
+ const responseHelpers = {
13
+ json: (status, data) => Response.json(data, { status }),
14
+ text: (status, text) => new Response(text, { status }),
15
+ html: (status, html) => new Response(html, {
16
+ status,
17
+ headers: { "Content-Type": "text/html" }
18
+ }),
19
+ redirect: (status, url) => Response.redirect(url, status)
20
+ };
21
+ const noopGet = () => void 0;
22
+ const stripTrailingSlash = (path) => {
23
+ if (path !== "/" && path.endsWith("/")) return path.slice(0, -1);
24
+ return path;
25
+ };
26
+ const hasSchemas = (schema) => schema && (schema.body || schema.query || schema.headers || schema.cookies || schema.params);
27
+ const needsBodyCache = (schema) => schema?.body !== void 0;
28
+ const shouldCreateBodyCache = (hasMiddlewares, allMiddlewares, request) => {
29
+ if (needsBodyCache(request)) return true;
30
+ if (!hasMiddlewares) return false;
31
+ return allMiddlewares.some((mw) => needsBodyCache(mw.options.request));
32
+ };
33
+ const resolveValidation = (v) => {
34
+ if (v === void 0 || v === true) return {
35
+ input: true,
36
+ output: true
37
+ };
38
+ if (v === false) return {
39
+ input: false,
40
+ output: false
41
+ };
42
+ return {
43
+ input: v.input !== false,
44
+ output: v.output !== false
45
+ };
46
+ };
47
+ var Api = class {
48
+ options;
49
+ routes = [];
50
+ constructor(options = {}) {
51
+ this.options = options;
52
+ }
53
+ getFullPath(path) {
54
+ const normalizedPath = stripTrailingSlash(path) || "/";
55
+ if (!this.options.prefix) return normalizedPath;
56
+ const normalizedPrefix = stripTrailingSlash(this.options.prefix);
57
+ if (normalizedPrefix === "/") return normalizedPath;
58
+ if (normalizedPath === "/") return normalizedPrefix;
59
+ return normalizedPrefix + normalizedPath;
60
+ }
61
+ async validateRequestSchema(req, schema, bodyCache) {
62
+ if (!schema) return {
63
+ success: true,
64
+ data: {}
65
+ };
66
+ const v = {};
67
+ if (schema.body) {
68
+ const [err, val] = await validateBody(req, schema.body, bodyCache);
69
+ if (err) return {
70
+ success: false,
71
+ error: err
72
+ };
73
+ v.body = val;
74
+ }
75
+ if (schema.query) {
76
+ const [err, val] = await validateQuery(req, schema.query);
77
+ if (err) return {
78
+ success: false,
79
+ error: err
80
+ };
81
+ v.query = val;
82
+ }
83
+ if (schema.headers) {
84
+ const [err, val] = await validateHeaders(req, schema.headers);
85
+ if (err) return {
86
+ success: false,
87
+ error: err
88
+ };
89
+ v.headers = val;
90
+ }
91
+ if (schema.cookies) {
92
+ const [err, val] = await validateCookies(req, schema.cookies);
93
+ if (err) return {
94
+ success: false,
95
+ error: err
96
+ };
97
+ v.cookies = val;
98
+ }
99
+ if (schema.params) {
100
+ const [err, val] = await validateParams(req, schema.params);
101
+ if (err) return {
102
+ success: false,
103
+ error: err
104
+ };
105
+ v.params = val;
106
+ }
107
+ return {
108
+ success: true,
109
+ data: v
110
+ };
111
+ }
112
+ createContext(req, validated, extensions) {
113
+ return {
114
+ raw: req,
115
+ req: validated,
116
+ ...responseHelpers,
117
+ get: (key) => extensions[key]
118
+ };
119
+ }
120
+ async validateResponseBody(response, schema) {
121
+ if (!schema) return response;
122
+ const statusSchema = schema[response.status];
123
+ if (!statusSchema) return response;
124
+ if (!(response.headers.get("content-type") ?? "").includes("application/json")) return response;
125
+ const [parseError, body] = await mightThrow(response.clone().json());
126
+ if (parseError) return responseHelpers.json(400, { message: "Invalid response body" });
127
+ const [validationError] = await validateSchema(statusSchema, body);
128
+ if (validationError) return responseHelpers.json(400, { message: validationError.message });
129
+ return response;
130
+ }
131
+ buildBunRoutes() {
132
+ const bunRoutes = {};
133
+ const validationConfig = resolveValidation(this.options.validation);
134
+ for (const route of this.routes) {
135
+ const { path, method, handler, request, response, middlewares } = route;
136
+ const fullPath = this.getFullPath(path);
137
+ if (!bunRoutes[fullPath]) bunRoutes[fullPath] = {};
138
+ const allMiddlewares = [...this.options.middlewares ?? [], ...middlewares ?? []];
139
+ const hasMiddlewares = allMiddlewares.length > 0;
140
+ const hasRouteSchemas = hasSchemas(request);
141
+ const effectiveOutputValidation = validationConfig.output && !!response;
142
+ if (!hasMiddlewares && !(validationConfig.input && hasRouteSchemas) && !effectiveOutputValidation) bunRoutes[fullPath][method] = (req) => {
143
+ const context = Object.create(responseHelpers);
144
+ context.raw = req;
145
+ context.req = defaultValidated;
146
+ context.get = noopGet;
147
+ return handler(context);
148
+ };
149
+ else bunRoutes[fullPath][method] = async (req) => {
150
+ const extensions = {};
151
+ const bodyCache = validationConfig.input && shouldCreateBodyCache(hasMiddlewares, allMiddlewares, request) ? {
152
+ parsed: false,
153
+ value: void 0
154
+ } : void 0;
155
+ for (const mw of allMiddlewares) {
156
+ const { request: reqSchema, handler: mwHandler } = mw.options;
157
+ let validated = defaultValidated;
158
+ if (validationConfig.input && hasSchemas(reqSchema)) {
159
+ const result = await this.validateRequestSchema(req, reqSchema, bodyCache);
160
+ if (!result.success) return responseHelpers.json(400, { message: result.error?.message });
161
+ validated = result.data;
162
+ }
163
+ const mwResult = await mwHandler(this.createContext(req, validated, extensions));
164
+ if (mwResult instanceof Response) return mwResult;
165
+ if (mwResult) Object.assign(extensions, mwResult);
166
+ }
167
+ let routeValidated = defaultValidated;
168
+ if (validationConfig.input && hasRouteSchemas) {
169
+ const result = await this.validateRequestSchema(req, request, bodyCache);
170
+ if (!result.success) return responseHelpers.json(400, { message: result.error?.message });
171
+ routeValidated = result.data;
172
+ }
173
+ const handlerResponse = await handler(this.createContext(req, routeValidated, extensions));
174
+ if (effectiveOutputValidation) return this.validateResponseBody(handlerResponse, response);
175
+ return handlerResponse;
176
+ };
177
+ }
178
+ return bunRoutes;
179
+ }
180
+ defineRoute(config) {
181
+ this.routes.push(config);
182
+ }
183
+ getOpenApiSpec() {
184
+ return generateOpenApiSpec({
185
+ title: this.options.openapi?.title ?? "API",
186
+ description: this.options.openapi?.description,
187
+ version: this.options.openapi?.version ?? "1.0.0",
188
+ prefix: this.options.prefix,
189
+ servers: this.options.openapi?.servers,
190
+ securitySchemes: this.options.openapi?.securitySchemes,
191
+ routes: this.routes,
192
+ globalMiddlewares: this.options.middlewares
193
+ });
194
+ }
195
+ serve(port, callback) {
196
+ const bunRoutes = this.buildBunRoutes();
197
+ const server = Bun.serve({
198
+ port,
199
+ routes: bunRoutes,
200
+ fetch: () => new Response("Not found", { status: 404 })
201
+ });
202
+ if (callback) callback(server);
203
+ }
204
+ };
205
+ //#endregion
206
+ export { Api };
207
+
208
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/api/core/index.ts"],"sourcesContent":["import { mightThrow } from \"../../errors/index.js\";\nimport type { Middleware } from \"../middleware/index.js\";\nimport { generateOpenApiSpec } from \"../openapi/index.js\";\nimport {\n type BodyCache,\n validateBody,\n validateCookies,\n validateHeaders,\n validateParams,\n validateQuery,\n validateSchema,\n} from \"../validation/index.js\";\nimport type {\n ApiOptions,\n MethodRoutes,\n RequestSchema,\n ResponseSchema,\n RouteConfig,\n ValidatedRequest,\n ValidationOptions,\n} from \"./types.js\";\n\n// Shared defaults reused across requests to avoid per-request allocations\nconst defaultValidated: ValidatedRequest = Object.freeze({\n body: undefined,\n query: undefined,\n headers: undefined,\n cookies: undefined,\n params: undefined,\n});\n\nconst responseHelpers = {\n json: (status: number, data: unknown) => Response.json(data, { status }),\n text: (status: number, text: string) => new Response(text, { status }),\n html: (status: number, html: string) =>\n new Response(html, { status, headers: { \"Content-Type\": \"text/html\" } }),\n redirect: (status: number, url: string) => Response.redirect(url, status),\n} as const;\n\nconst noopGet = () => undefined;\n\nconst stripTrailingSlash = (path: string) => {\n if (path !== \"/\" && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n};\n\nconst hasSchemas = (schema?: RequestSchema) =>\n schema &&\n (schema.body ||\n schema.query ||\n schema.headers ||\n schema.cookies ||\n schema.params);\n\nconst needsBodyCache = (schema?: RequestSchema) => schema?.body !== undefined;\n\nconst shouldCreateBodyCache = (\n hasMiddlewares: boolean,\n allMiddlewares: Middleware[],\n request?: RequestSchema,\n) => {\n if (needsBodyCache(request)) return true;\n if (!hasMiddlewares) return false;\n\n return allMiddlewares.some((mw) => needsBodyCache(mw.options.request));\n};\n\nconst resolveValidation = (v?: ValidationOptions) => {\n if (v === undefined || v === true) return { input: true, output: true };\n if (v === false) return { input: false, output: false };\n return { input: v.input !== false, output: v.output !== false };\n};\n\nexport class Api<TMiddlewares extends readonly Middleware[] = readonly []> {\n private options: ApiOptions<TMiddlewares>;\n private routes: RouteConfig<\n RequestSchema,\n ResponseSchema,\n TMiddlewares,\n readonly Middleware[]\n >[] = [];\n\n public constructor(options: ApiOptions<TMiddlewares> = {}) {\n this.options = options;\n }\n\n private getFullPath(path: string) {\n const normalizedPath = stripTrailingSlash(path) || \"/\";\n\n if (!this.options.prefix) return normalizedPath;\n\n const normalizedPrefix = stripTrailingSlash(this.options.prefix);\n\n if (normalizedPrefix === \"/\") return normalizedPath;\n if (normalizedPath === \"/\") return normalizedPrefix;\n\n return normalizedPrefix + normalizedPath;\n }\n\n private async validateRequestSchema(\n req: Bun.BunRequest,\n schema: RequestSchema | undefined,\n bodyCache?: BodyCache,\n ) {\n if (!schema) {\n return { success: true, data: {} };\n }\n\n const v: Record<string, unknown> = {};\n\n if (schema.body) {\n const [err, val] = await validateBody(req, schema.body, bodyCache);\n\n if (err) {\n return {\n success: false,\n error: err,\n };\n }\n\n v.body = val;\n }\n\n if (schema.query) {\n const [err, val] = await validateQuery(req, schema.query);\n\n if (err) {\n return {\n success: false,\n error: err,\n };\n }\n\n v.query = val;\n }\n\n if (schema.headers) {\n const [err, val] = await validateHeaders(req, schema.headers);\n\n if (err) {\n return {\n success: false,\n error: err,\n };\n }\n\n v.headers = val;\n }\n\n if (schema.cookies) {\n const [err, val] = await validateCookies(req, schema.cookies);\n\n if (err) {\n return {\n success: false,\n error: err,\n };\n }\n\n v.cookies = val;\n }\n\n if (schema.params) {\n const [err, val] = await validateParams(req, schema.params);\n\n if (err) {\n return {\n success: false,\n error: err,\n };\n }\n\n v.params = val;\n }\n\n return { success: true, data: v };\n }\n\n private createContext(\n req: Bun.BunRequest,\n validated: ValidatedRequest,\n extensions: Record<string, unknown>,\n ) {\n return {\n raw: req,\n req: validated,\n ...responseHelpers,\n get: (key: string) => extensions[key],\n };\n }\n\n private async validateResponseBody(\n response: Response,\n schema: ResponseSchema | undefined,\n ) {\n if (!schema) return response;\n\n const statusSchema = schema[response.status];\n\n if (!statusSchema) return response;\n\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n\n if (!contentType.includes(\"application/json\")) return response;\n\n const [parseError, body] = await mightThrow(response.clone().json());\n\n if (parseError) {\n return responseHelpers.json(400, { message: \"Invalid response body\" });\n }\n\n const [validationError] = await validateSchema(statusSchema, body);\n\n if (validationError) {\n return responseHelpers.json(400, { message: validationError.message });\n }\n\n return response;\n }\n\n private buildBunRoutes() {\n const bunRoutes: MethodRoutes = {};\n const validationConfig = resolveValidation(this.options.validation);\n\n for (const route of this.routes) {\n const { path, method, handler, request, response, middlewares } = route;\n\n const fullPath = this.getFullPath(path);\n\n if (!bunRoutes[fullPath]) {\n bunRoutes[fullPath] = {};\n }\n\n const allMiddlewares = [\n ...(this.options.middlewares ?? []),\n ...(middlewares ?? []),\n ];\n\n const hasMiddlewares = allMiddlewares.length > 0;\n const hasRouteSchemas = hasSchemas(request);\n const effectiveOutputValidation = validationConfig.output && !!response;\n\n if (\n !hasMiddlewares &&\n !(validationConfig.input && hasRouteSchemas) &&\n !effectiveOutputValidation\n ) {\n // Zero-allocation path for simple routes using prototype chain\n // Avoids object spread overhead by inheriting response helpers via prototype\n bunRoutes[fullPath][method] = (req: Bun.BunRequest) => {\n // Create fresh per-request context to avoid cross-request contamination\n const context = Object.create(responseHelpers);\n context.raw = req;\n context.req = defaultValidated;\n context.get = noopGet;\n\n return handler(context as unknown as Parameters<typeof handler>[0]);\n };\n } else {\n bunRoutes[fullPath][method] = async (req: Bun.BunRequest) => {\n const extensions: Record<string, unknown> = {};\n\n // Only create bodyCache if input validation is enabled and any schema has body validation\n const bodyCache: BodyCache | undefined =\n validationConfig.input &&\n shouldCreateBodyCache(hasMiddlewares, allMiddlewares, request)\n ? { parsed: false, value: undefined }\n : undefined;\n\n for (const mw of allMiddlewares) {\n const { request: reqSchema, handler: mwHandler } = mw.options;\n\n let validated = defaultValidated;\n\n if (validationConfig.input && hasSchemas(reqSchema)) {\n const result = await this.validateRequestSchema(\n req,\n reqSchema,\n bodyCache,\n );\n\n if (!result.success) {\n return responseHelpers.json(400, {\n message: result.error?.message,\n });\n }\n\n validated = result.data as ValidatedRequest;\n }\n\n const context = this.createContext(req, validated, extensions);\n const mwResult = await mwHandler(\n context as Parameters<typeof mwHandler>[0],\n );\n\n if (mwResult instanceof Response) {\n return mwResult;\n }\n\n if (mwResult) {\n Object.assign(extensions, mwResult);\n }\n }\n\n let routeValidated = defaultValidated;\n\n if (validationConfig.input && hasRouteSchemas) {\n const result = await this.validateRequestSchema(\n req,\n request,\n bodyCache,\n );\n\n if (!result.success) {\n return responseHelpers.json(400, {\n message: result.error?.message,\n });\n }\n\n routeValidated = result.data as ValidatedRequest;\n }\n\n const context = this.createContext(req, routeValidated, extensions);\n const handlerResponse = await handler(\n context as Parameters<typeof handler>[0],\n );\n\n if (effectiveOutputValidation) {\n return this.validateResponseBody(handlerResponse, response);\n }\n\n return handlerResponse;\n };\n }\n }\n\n return bunRoutes;\n }\n\n public defineRoute<\n TReq extends RequestSchema = RequestSchema,\n TRes extends ResponseSchema = ResponseSchema,\n TRouteMiddlewares extends readonly Middleware[] = readonly [],\n >(config: RouteConfig<TReq, TRes, TMiddlewares, TRouteMiddlewares>) {\n this.routes.push(\n config as RouteConfig<\n RequestSchema,\n ResponseSchema,\n TMiddlewares,\n readonly Middleware[]\n >,\n );\n }\n\n public getOpenApiSpec() {\n return generateOpenApiSpec({\n title: this.options.openapi?.title ?? \"API\",\n description: this.options.openapi?.description,\n version: this.options.openapi?.version ?? \"1.0.0\",\n prefix: this.options.prefix,\n servers: this.options.openapi?.servers,\n securitySchemes: this.options.openapi?.securitySchemes,\n routes: this.routes,\n globalMiddlewares: this.options.middlewares,\n });\n }\n\n public serve(port: number, callback?: (server: Bun.Server<unknown>) => void) {\n const bunRoutes = this.buildBunRoutes();\n\n const server = Bun.serve({\n port,\n routes: bunRoutes,\n fetch: () => new Response(\"Not found\", { status: 404 }),\n });\n\n if (callback) {\n callback(server);\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { StandardSchemaV1 } from "../../node_modules/@standard-schema/spec/dist/index.cjs";
2
+ import { MergeMiddlewareExtensions } from "../middleware/types.cjs";
3
+ import { Middleware } from "../middleware/index.cjs";
4
+
5
+ //#region src/lib/api/core/types.d.ts
6
+ type ResponseSchema = {
7
+ [status: number]: StandardSchemaV1;
8
+ };
9
+ type RequestSchema = {
10
+ params?: StandardSchemaV1;
11
+ body?: StandardSchemaV1;
12
+ query?: StandardSchemaV1;
13
+ headers?: StandardSchemaV1;
14
+ cookies?: StandardSchemaV1;
15
+ };
16
+ type SafeTypeAccess<T, K extends "input" | "output"> = T extends StandardSchemaV1 ? T["~standard"] extends {
17
+ types?: infer U;
18
+ } ? U extends Record<K, infer V> ? V : never : never : undefined;
19
+ type InferOutput<T extends StandardSchemaV1 | undefined> = SafeTypeAccess<T, "output">;
20
+ type InferInput<T extends StandardSchemaV1 | undefined> = SafeTypeAccess<T, "input">;
21
+ type ExtractStatusCodes<T extends ResponseSchema> = keyof T & number;
22
+ type ExtractStatusCodesOrAny<T extends ResponseSchema | undefined> = T extends ResponseSchema ? ExtractStatusCodes<T> : number;
23
+ type ValidationOptions = boolean | {
24
+ input?: boolean;
25
+ output?: boolean;
26
+ };
27
+ type ApiOptions<TMiddlewares extends readonly Middleware[] = readonly []> = {
28
+ prefix?: string;
29
+ openapi?: OpenApiOptions;
30
+ middlewares?: TMiddlewares;
31
+ validation?: ValidationOptions;
32
+ };
33
+ type SecuritySchemeApiKey = {
34
+ type: "apiKey";
35
+ name: string;
36
+ in: "query" | "header" | "cookie";
37
+ description?: string;
38
+ };
39
+ type SecuritySchemeHttp = {
40
+ type: "http";
41
+ scheme: string;
42
+ bearerFormat?: string;
43
+ description?: string;
44
+ };
45
+ type SecuritySchemeOAuth2Flow = {
46
+ authorizationUrl?: string;
47
+ tokenUrl?: string;
48
+ refreshUrl?: string;
49
+ scopes: Record<string, string>;
50
+ };
51
+ type SecuritySchemeOAuth2 = {
52
+ type: "oauth2";
53
+ flows: {
54
+ implicit?: SecuritySchemeOAuth2Flow;
55
+ password?: SecuritySchemeOAuth2Flow;
56
+ clientCredentials?: SecuritySchemeOAuth2Flow;
57
+ authorizationCode?: SecuritySchemeOAuth2Flow;
58
+ };
59
+ description?: string;
60
+ };
61
+ type SecuritySchemeOpenIdConnect = {
62
+ type: "openIdConnect";
63
+ openIdConnectUrl: string;
64
+ description?: string;
65
+ };
66
+ type SecurityScheme = SecuritySchemeApiKey | SecuritySchemeHttp | SecuritySchemeOAuth2 | SecuritySchemeOpenIdConnect;
67
+ type OpenApiOptions = {
68
+ version: string;
69
+ title: string;
70
+ description?: string;
71
+ servers?: Array<{
72
+ url: string;
73
+ description?: string;
74
+ }>;
75
+ securitySchemes?: Record<string, SecurityScheme>;
76
+ };
77
+ type Context<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TExt extends Record<string, unknown> = Record<string, unknown>> = {
78
+ raw: Request;
79
+ req: {
80
+ body: InferOutput<TReq["body"]>;
81
+ query: InferOutput<TReq["query"]>;
82
+ headers: InferOutput<TReq["headers"]>;
83
+ cookies: InferOutput<TReq["cookies"]>;
84
+ params: InferOutput<TReq["params"]>;
85
+ };
86
+ json: <S extends ExtractStatusCodesOrAny<TRes>>(status: S, data: TRes extends ResponseSchema ? InferOutput<TRes[S]> : unknown) => Response;
87
+ text: (status: number, text: string) => Response;
88
+ html: (status: number, html: string) => Response;
89
+ redirect: (status: number, url: string) => Response;
90
+ get: <K extends keyof TExt>(key: K) => TExt[K];
91
+ };
92
+ type RouteHandler<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TExt extends Record<string, unknown> = Record<string, unknown>> = (c: Context<TReq, TRes, TExt>) => Response | Promise<Response>;
93
+ type RouteConfig<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TGlobalMiddlewares extends readonly Middleware[] = readonly [], TRouteMiddlewares extends readonly Middleware[] = readonly []> = {
94
+ path: string;
95
+ method: Bun.Serve.HTTPMethod;
96
+ request?: TReq;
97
+ response?: TRes;
98
+ middlewares?: TRouteMiddlewares;
99
+ handler: RouteHandler<TReq, TRes, MergeMiddlewareExtensions<TGlobalMiddlewares> & MergeMiddlewareExtensions<TRouteMiddlewares>>;
100
+ summary?: string;
101
+ description?: string;
102
+ operationId?: string;
103
+ tags?: string[];
104
+ };
105
+ //#endregion
106
+ export { ApiOptions, Context, ExtractStatusCodes, InferInput, InferOutput, OpenApiOptions, RequestSchema, ResponseSchema, RouteConfig, RouteHandler, SecurityScheme, SecuritySchemeApiKey, SecuritySchemeHttp, SecuritySchemeOAuth2, SecuritySchemeOAuth2Flow, SecuritySchemeOpenIdConnect };
107
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/api/core/types.ts"],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { StandardSchemaV1 } from "../../node_modules/@standard-schema/spec/dist/index.mjs";
2
+ import { MergeMiddlewareExtensions } from "../middleware/types.mjs";
3
+ import { Middleware } from "../middleware/index.mjs";
4
+
5
+ //#region src/lib/api/core/types.d.ts
6
+ type ResponseSchema = {
7
+ [status: number]: StandardSchemaV1;
8
+ };
9
+ type RequestSchema = {
10
+ params?: StandardSchemaV1;
11
+ body?: StandardSchemaV1;
12
+ query?: StandardSchemaV1;
13
+ headers?: StandardSchemaV1;
14
+ cookies?: StandardSchemaV1;
15
+ };
16
+ type SafeTypeAccess<T, K extends "input" | "output"> = T extends StandardSchemaV1 ? T["~standard"] extends {
17
+ types?: infer U;
18
+ } ? U extends Record<K, infer V> ? V : never : never : undefined;
19
+ type InferOutput<T extends StandardSchemaV1 | undefined> = SafeTypeAccess<T, "output">;
20
+ type InferInput<T extends StandardSchemaV1 | undefined> = SafeTypeAccess<T, "input">;
21
+ type ExtractStatusCodes<T extends ResponseSchema> = keyof T & number;
22
+ type ExtractStatusCodesOrAny<T extends ResponseSchema | undefined> = T extends ResponseSchema ? ExtractStatusCodes<T> : number;
23
+ type ValidationOptions = boolean | {
24
+ input?: boolean;
25
+ output?: boolean;
26
+ };
27
+ type ApiOptions<TMiddlewares extends readonly Middleware[] = readonly []> = {
28
+ prefix?: string;
29
+ openapi?: OpenApiOptions;
30
+ middlewares?: TMiddlewares;
31
+ validation?: ValidationOptions;
32
+ };
33
+ type SecuritySchemeApiKey = {
34
+ type: "apiKey";
35
+ name: string;
36
+ in: "query" | "header" | "cookie";
37
+ description?: string;
38
+ };
39
+ type SecuritySchemeHttp = {
40
+ type: "http";
41
+ scheme: string;
42
+ bearerFormat?: string;
43
+ description?: string;
44
+ };
45
+ type SecuritySchemeOAuth2Flow = {
46
+ authorizationUrl?: string;
47
+ tokenUrl?: string;
48
+ refreshUrl?: string;
49
+ scopes: Record<string, string>;
50
+ };
51
+ type SecuritySchemeOAuth2 = {
52
+ type: "oauth2";
53
+ flows: {
54
+ implicit?: SecuritySchemeOAuth2Flow;
55
+ password?: SecuritySchemeOAuth2Flow;
56
+ clientCredentials?: SecuritySchemeOAuth2Flow;
57
+ authorizationCode?: SecuritySchemeOAuth2Flow;
58
+ };
59
+ description?: string;
60
+ };
61
+ type SecuritySchemeOpenIdConnect = {
62
+ type: "openIdConnect";
63
+ openIdConnectUrl: string;
64
+ description?: string;
65
+ };
66
+ type SecurityScheme = SecuritySchemeApiKey | SecuritySchemeHttp | SecuritySchemeOAuth2 | SecuritySchemeOpenIdConnect;
67
+ type OpenApiOptions = {
68
+ version: string;
69
+ title: string;
70
+ description?: string;
71
+ servers?: Array<{
72
+ url: string;
73
+ description?: string;
74
+ }>;
75
+ securitySchemes?: Record<string, SecurityScheme>;
76
+ };
77
+ type Context<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TExt extends Record<string, unknown> = Record<string, unknown>> = {
78
+ raw: Request;
79
+ req: {
80
+ body: InferOutput<TReq["body"]>;
81
+ query: InferOutput<TReq["query"]>;
82
+ headers: InferOutput<TReq["headers"]>;
83
+ cookies: InferOutput<TReq["cookies"]>;
84
+ params: InferOutput<TReq["params"]>;
85
+ };
86
+ json: <S extends ExtractStatusCodesOrAny<TRes>>(status: S, data: TRes extends ResponseSchema ? InferOutput<TRes[S]> : unknown) => Response;
87
+ text: (status: number, text: string) => Response;
88
+ html: (status: number, html: string) => Response;
89
+ redirect: (status: number, url: string) => Response;
90
+ get: <K extends keyof TExt>(key: K) => TExt[K];
91
+ };
92
+ type RouteHandler<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TExt extends Record<string, unknown> = Record<string, unknown>> = (c: Context<TReq, TRes, TExt>) => Response | Promise<Response>;
93
+ type RouteConfig<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TGlobalMiddlewares extends readonly Middleware[] = readonly [], TRouteMiddlewares extends readonly Middleware[] = readonly []> = {
94
+ path: string;
95
+ method: Bun.Serve.HTTPMethod;
96
+ request?: TReq;
97
+ response?: TRes;
98
+ middlewares?: TRouteMiddlewares;
99
+ handler: RouteHandler<TReq, TRes, MergeMiddlewareExtensions<TGlobalMiddlewares> & MergeMiddlewareExtensions<TRouteMiddlewares>>;
100
+ summary?: string;
101
+ description?: string;
102
+ operationId?: string;
103
+ tags?: string[];
104
+ };
105
+ //#endregion
106
+ export { ApiOptions, Context, ExtractStatusCodes, InferInput, InferOutput, OpenApiOptions, RequestSchema, ResponseSchema, RouteConfig, RouteHandler, SecurityScheme, SecuritySchemeApiKey, SecuritySchemeHttp, SecuritySchemeOAuth2, SecuritySchemeOAuth2Flow, SecuritySchemeOpenIdConnect };
107
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/api/core/types.ts"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ //#region src/lib/api/middleware/index.ts
2
+ var Middleware = class {
3
+ constructor(options) {
4
+ this.options = options;
5
+ }
6
+ };
7
+ //#endregion
8
+ exports.Middleware = Middleware;
@@ -0,0 +1,11 @@
1
+ import { MiddlewareOptions } from "./types.cjs";
2
+ import { RequestSchema, ResponseSchema } from "../core/types.cjs";
3
+
4
+ //#region src/lib/api/middleware/index.d.ts
5
+ declare class Middleware<TRequest extends RequestSchema = RequestSchema, TResponse extends ResponseSchema = ResponseSchema, TExtension extends Record<string, unknown> = Record<string, unknown>> {
6
+ options: MiddlewareOptions<TRequest, TResponse, TExtension>;
7
+ constructor(options: MiddlewareOptions<TRequest, TResponse, TExtension>);
8
+ }
9
+ //#endregion
10
+ export { Middleware };
11
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/api/middleware/index.ts"],"mappings":";;;;cAGa,UAAA,kBACM,aAAA,GAAgB,aAAA,oBACf,cAAA,GAAiB,cAAA,qBAChB,MAAA,oBAA0B,MAAA;EAGpC,OAAA,EAAS,iBAAA,CAAkB,QAAA,EAAU,SAAA,EAAW,UAAA;cAAhD,OAAA,EAAS,iBAAA,CAAkB,QAAA,EAAU,SAAA,EAAW,UAAA;AAAA"}
@@ -0,0 +1,11 @@
1
+ import { MiddlewareOptions } from "./types.mjs";
2
+ import { RequestSchema, ResponseSchema } from "../core/types.mjs";
3
+
4
+ //#region src/lib/api/middleware/index.d.ts
5
+ declare class Middleware<TRequest extends RequestSchema = RequestSchema, TResponse extends ResponseSchema = ResponseSchema, TExtension extends Record<string, unknown> = Record<string, unknown>> {
6
+ options: MiddlewareOptions<TRequest, TResponse, TExtension>;
7
+ constructor(options: MiddlewareOptions<TRequest, TResponse, TExtension>);
8
+ }
9
+ //#endregion
10
+ export { Middleware };
11
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/api/middleware/index.ts"],"mappings":";;;;cAGa,UAAA,kBACM,aAAA,GAAgB,aAAA,oBACf,cAAA,GAAiB,cAAA,qBAChB,MAAA,oBAA0B,MAAA;EAGpC,OAAA,EAAS,iBAAA,CAAkB,QAAA,EAAU,SAAA,EAAW,UAAA;cAAhD,OAAA,EAAS,iBAAA,CAAkB,QAAA,EAAU,SAAA,EAAW,UAAA;AAAA"}
@@ -0,0 +1,10 @@
1
+ //#region src/lib/api/middleware/index.ts
2
+ var Middleware = class {
3
+ constructor(options) {
4
+ this.options = options;
5
+ }
6
+ };
7
+ //#endregion
8
+ export { Middleware };
9
+
10
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/api/middleware/index.ts"],"sourcesContent":["import type { RequestSchema, ResponseSchema } from \"../core/types.js\";\nimport type { MiddlewareOptions } from \"./types.js\";\n\nexport class Middleware<\n TRequest extends RequestSchema = RequestSchema,\n TResponse extends ResponseSchema = ResponseSchema,\n TExtension extends Record<string, unknown> = Record<string, unknown>,\n> {\n public constructor(\n public options: MiddlewareOptions<TRequest, TResponse, TExtension>,\n ) {}\n}\n"],"mappings":";AAGA,IAAa,aAAb,MAIE;CACA,YACE,SACA;AADO,OAAA,UAAA"}
@@ -0,0 +1,16 @@
1
+ import { Context, RequestSchema, ResponseSchema } from "../core/types.cjs";
2
+
3
+ //#region src/lib/api/middleware/types.d.ts
4
+ type MiddlewareHandler<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TExt extends Record<string, unknown> = Record<never, never>> = (c: Context<TReq, TRes>) => Response | TExt | undefined | Promise<Response | TExt | undefined> | Promise<void> | void;
5
+ type MiddlewareOptions<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TExt extends Record<string, unknown> = Record<string, unknown>> = {
6
+ request?: TReq;
7
+ response?: TRes;
8
+ handler: MiddlewareHandler<TReq, TRes, TExt>;
9
+ };
10
+ type InferMiddlewareExtension<T> = T extends {
11
+ options: MiddlewareOptions<infer _TReq, infer _TRes, infer E>;
12
+ } ? E : never;
13
+ type MergeMiddlewareExtensions<T extends readonly unknown[]> = T extends readonly [infer First, ...infer Rest] ? InferMiddlewareExtension<First> & MergeMiddlewareExtensions<Rest> : {};
14
+ //#endregion
15
+ export { InferMiddlewareExtension, MergeMiddlewareExtensions, MiddlewareHandler, MiddlewareOptions };
16
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/lib/api/middleware/types.ts"],"mappings":";;;KAEY,iBAAA,cACG,aAAA,GAAgB,aAAA,eAChB,cAAA,uCACA,MAAA,oBAA0B,MAAA,mBAEvC,CAAA,EAAG,OAAA,CAAQ,IAAA,EAAM,IAAA,MAEf,QAAA,GACA,IAAA,eAEA,OAAA,CAAQ,QAAA,GAAW,IAAA,gBACnB,OAAA;AAAA,KAGQ,iBAAA,cACG,aAAA,GAAgB,aAAA,eAChB,cAAA,uCACA,MAAA,oBAA0B,MAAA;EAEvC,OAAA,GAAU,IAAA;EACV,QAAA,GAAW,IAAA;EACX,OAAA,EAAS,iBAAA,CAAkB,IAAA,EAAM,IAAA,EAAM,IAAA;AAAA;AAAA,KAG7B,wBAAA,MAA8B,CAAA;EACxC,OAAA,EAAS,iBAAA;AAAA,IAEP,CAAA;AAAA,KAGQ,yBAAA,iCACV,CAAA,iDACI,wBAAA,CAAyB,KAAA,IAAS,yBAAA,CAA0B,IAAA"}
@@ -0,0 +1,16 @@
1
+ import { Context, RequestSchema, ResponseSchema } from "../core/types.mjs";
2
+
3
+ //#region src/lib/api/middleware/types.d.ts
4
+ type MiddlewareHandler<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TExt extends Record<string, unknown> = Record<never, never>> = (c: Context<TReq, TRes>) => Response | TExt | undefined | Promise<Response | TExt | undefined> | Promise<void> | void;
5
+ type MiddlewareOptions<TReq extends RequestSchema = RequestSchema, TRes extends ResponseSchema | undefined = undefined, TExt extends Record<string, unknown> = Record<string, unknown>> = {
6
+ request?: TReq;
7
+ response?: TRes;
8
+ handler: MiddlewareHandler<TReq, TRes, TExt>;
9
+ };
10
+ type InferMiddlewareExtension<T> = T extends {
11
+ options: MiddlewareOptions<infer _TReq, infer _TRes, infer E>;
12
+ } ? E : never;
13
+ type MergeMiddlewareExtensions<T extends readonly unknown[]> = T extends readonly [infer First, ...infer Rest] ? InferMiddlewareExtension<First> & MergeMiddlewareExtensions<Rest> : {};
14
+ //#endregion
15
+ export { InferMiddlewareExtension, MergeMiddlewareExtensions, MiddlewareHandler, MiddlewareOptions };
16
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/lib/api/middleware/types.ts"],"mappings":";;;KAEY,iBAAA,cACG,aAAA,GAAgB,aAAA,eAChB,cAAA,uCACA,MAAA,oBAA0B,MAAA,mBAEvC,CAAA,EAAG,OAAA,CAAQ,IAAA,EAAM,IAAA,MAEf,QAAA,GACA,IAAA,eAEA,OAAA,CAAQ,QAAA,GAAW,IAAA,gBACnB,OAAA;AAAA,KAGQ,iBAAA,cACG,aAAA,GAAgB,aAAA,eAChB,cAAA,uCACA,MAAA,oBAA0B,MAAA;EAEvC,OAAA,GAAU,IAAA;EACV,QAAA,GAAW,IAAA;EACX,OAAA,EAAS,iBAAA,CAAkB,IAAA,EAAM,IAAA,EAAM,IAAA;AAAA;AAAA,KAG7B,wBAAA,MAA8B,CAAA;EACxC,OAAA,EAAS,iBAAA;AAAA,IAEP,CAAA;AAAA,KAGQ,yBAAA,iCACV,CAAA,iDACI,wBAAA,CAAyB,KAAA,IAAS,yBAAA,CAA0B,IAAA"}