uql-orm 0.9.5 → 0.10.1

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 (681) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +3 -2
  3. package/dist/browser/http/bus.d.ts +4 -0
  4. package/dist/browser/http/bus.d.ts.map +1 -0
  5. package/dist/browser/http/bus.js +14 -0
  6. package/dist/browser/http/bus.js.map +1 -0
  7. package/dist/browser/http/http.d.ts +22 -0
  8. package/dist/browser/http/http.d.ts.map +1 -0
  9. package/dist/browser/http/http.js +70 -0
  10. package/dist/browser/http/http.js.map +1 -0
  11. package/dist/browser/http/index.d.ts +3 -0
  12. package/dist/browser/http/index.d.ts.map +1 -0
  13. package/dist/browser/http/index.js +3 -0
  14. package/dist/browser/http/index.js.map +1 -0
  15. package/dist/browser/index.d.ts +5 -0
  16. package/dist/browser/index.d.ts.map +1 -0
  17. package/dist/browser/index.js +5 -0
  18. package/dist/browser/index.js.map +1 -0
  19. package/dist/browser/options.d.ts +5 -0
  20. package/dist/browser/options.d.ts.map +1 -0
  21. package/dist/browser/options.js +14 -0
  22. package/dist/browser/options.js.map +1 -0
  23. package/dist/browser/querier/httpQuerier.d.ts +38 -0
  24. package/dist/browser/querier/httpQuerier.d.ts.map +1 -0
  25. package/dist/browser/querier/httpQuerier.js +83 -0
  26. package/dist/browser/querier/httpQuerier.js.map +1 -0
  27. package/dist/browser/querier/index.d.ts +2 -0
  28. package/dist/browser/querier/index.d.ts.map +1 -0
  29. package/dist/browser/querier/index.js +2 -0
  30. package/dist/browser/querier/index.js.map +1 -0
  31. package/dist/browser/type/clientQuerier.d.ts +28 -0
  32. package/dist/browser/type/clientQuerier.d.ts.map +1 -0
  33. package/dist/browser/type/clientQuerier.js +2 -0
  34. package/dist/browser/type/clientQuerier.js.map +1 -0
  35. package/dist/browser/type/clientQuerierPool.d.ts +5 -0
  36. package/dist/browser/type/clientQuerierPool.d.ts.map +1 -0
  37. package/dist/browser/type/clientQuerierPool.js +2 -0
  38. package/dist/browser/type/clientQuerierPool.js.map +1 -0
  39. package/dist/browser/type/index.d.ts +4 -0
  40. package/dist/browser/type/index.d.ts.map +1 -0
  41. package/dist/browser/type/index.js +4 -0
  42. package/dist/browser/type/index.js.map +1 -0
  43. package/dist/browser/type/request.d.ts +28 -0
  44. package/dist/browser/type/request.d.ts.map +1 -0
  45. package/dist/browser/type/request.js +2 -0
  46. package/dist/browser/type/request.js.map +1 -0
  47. package/dist/browser/uql-browser.min.js +2 -7029
  48. package/dist/browser/uql-browser.min.js.map +17 -1
  49. package/dist/bunSql/bunSql.util.d.ts +30 -0
  50. package/dist/bunSql/bunSql.util.d.ts.map +1 -0
  51. package/dist/bunSql/bunSql.util.js +101 -0
  52. package/dist/bunSql/bunSql.util.js.map +1 -0
  53. package/dist/bunSql/bunSqlPostgresDialect.d.ts +12 -0
  54. package/dist/bunSql/bunSqlPostgresDialect.d.ts.map +1 -0
  55. package/dist/bunSql/bunSqlPostgresDialect.js +21 -0
  56. package/dist/bunSql/bunSqlPostgresDialect.js.map +1 -0
  57. package/dist/bunSql/bunSqlQuerier.d.ts +14 -0
  58. package/dist/bunSql/bunSqlQuerier.d.ts.map +1 -0
  59. package/dist/bunSql/bunSqlQuerier.js +37 -0
  60. package/dist/bunSql/bunSqlQuerier.js.map +1 -0
  61. package/dist/bunSql/bunSqlQuerierPool.d.ts +19 -0
  62. package/dist/bunSql/bunSqlQuerierPool.d.ts.map +1 -0
  63. package/dist/bunSql/bunSqlQuerierPool.js +58 -0
  64. package/dist/bunSql/bunSqlQuerierPool.js.map +1 -0
  65. package/dist/bunSql/bunSqliteDialect.d.ts +7 -0
  66. package/dist/bunSql/bunSqliteDialect.d.ts.map +1 -0
  67. package/dist/bunSql/bunSqliteDialect.js +7 -0
  68. package/dist/bunSql/bunSqliteDialect.js.map +1 -0
  69. package/dist/bunSql/index.d.ts +5 -0
  70. package/dist/bunSql/index.d.ts.map +1 -0
  71. package/dist/bunSql/index.js +5 -0
  72. package/dist/bunSql/index.js.map +1 -0
  73. package/dist/cockroachdb/cockroachDialect.d.ts +15 -0
  74. package/dist/cockroachdb/cockroachDialect.d.ts.map +1 -0
  75. package/dist/cockroachdb/cockroachDialect.js +14 -0
  76. package/dist/cockroachdb/cockroachDialect.js.map +1 -0
  77. package/dist/cockroachdb/crdbQuerier.d.ts +9 -0
  78. package/dist/cockroachdb/crdbQuerier.d.ts.map +1 -0
  79. package/dist/cockroachdb/crdbQuerier.js +7 -0
  80. package/dist/cockroachdb/crdbQuerier.js.map +1 -0
  81. package/dist/cockroachdb/crdbQuerierPool.d.ts +14 -0
  82. package/dist/cockroachdb/crdbQuerierPool.d.ts.map +1 -0
  83. package/dist/cockroachdb/crdbQuerierPool.js +18 -0
  84. package/dist/cockroachdb/crdbQuerierPool.js.map +1 -0
  85. package/dist/cockroachdb/index.d.ts +4 -0
  86. package/dist/cockroachdb/index.d.ts.map +1 -0
  87. package/dist/cockroachdb/index.js +4 -0
  88. package/dist/cockroachdb/index.js.map +1 -0
  89. package/dist/d1/d1Querier.d.ts +46 -0
  90. package/dist/d1/d1Querier.d.ts.map +1 -0
  91. package/dist/d1/d1Querier.js +30 -0
  92. package/dist/d1/d1Querier.js.map +1 -0
  93. package/dist/d1/d1QuerierPool.d.ts +11 -0
  94. package/dist/d1/d1QuerierPool.d.ts.map +1 -0
  95. package/dist/d1/d1QuerierPool.js +17 -0
  96. package/dist/d1/d1QuerierPool.js.map +1 -0
  97. package/dist/d1/d1SqliteDialect.d.ts +10 -0
  98. package/dist/d1/d1SqliteDialect.d.ts.map +1 -0
  99. package/dist/d1/d1SqliteDialect.js +10 -0
  100. package/dist/d1/d1SqliteDialect.js.map +1 -0
  101. package/dist/d1/index.d.ts +4 -0
  102. package/dist/d1/index.d.ts.map +1 -0
  103. package/dist/d1/index.js +4 -0
  104. package/dist/d1/index.js.map +1 -0
  105. package/dist/dialect/abstractDialect.d.ts +32 -0
  106. package/dist/dialect/abstractDialect.d.ts.map +1 -0
  107. package/dist/dialect/abstractDialect.js +39 -0
  108. package/dist/dialect/abstractDialect.js.map +1 -0
  109. package/dist/dialect/abstractSqlDialect.d.ts +233 -0
  110. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -0
  111. package/dist/dialect/abstractSqlDialect.js +1332 -0
  112. package/dist/dialect/abstractSqlDialect.js.map +1 -0
  113. package/dist/dialect/index.d.ts +9 -0
  114. package/dist/dialect/index.d.ts.map +1 -0
  115. package/dist/dialect/index.js +9 -0
  116. package/dist/dialect/index.js.map +1 -0
  117. package/dist/dialect/jsonArrayElemMatchUtils.d.ts +10 -0
  118. package/dist/dialect/jsonArrayElemMatchUtils.d.ts.map +1 -0
  119. package/dist/dialect/jsonArrayElemMatchUtils.js +24 -0
  120. package/dist/dialect/jsonArrayElemMatchUtils.js.map +1 -0
  121. package/dist/dialect/mysqlLikeSqlDialect.d.ts +36 -0
  122. package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -0
  123. package/dist/dialect/mysqlLikeSqlDialect.js +84 -0
  124. package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -0
  125. package/dist/dialect/queryContext.d.ts +49 -0
  126. package/dist/dialect/queryContext.d.ts.map +1 -0
  127. package/dist/dialect/queryContext.js +65 -0
  128. package/dist/dialect/queryContext.js.map +1 -0
  129. package/dist/entity/decorator/entity.d.ts +3 -0
  130. package/dist/entity/decorator/entity.d.ts.map +1 -0
  131. package/dist/entity/decorator/entity.js +7 -0
  132. package/dist/entity/decorator/entity.js.map +1 -0
  133. package/dist/entity/decorator/field.d.ts +3 -0
  134. package/dist/entity/decorator/field.d.ts.map +1 -0
  135. package/dist/entity/decorator/field.js +8 -0
  136. package/dist/entity/decorator/field.js.map +1 -0
  137. package/dist/entity/decorator/hook.d.ts +8 -0
  138. package/dist/entity/decorator/hook.d.ts.map +1 -0
  139. package/dist/entity/decorator/hook.js +15 -0
  140. package/dist/entity/decorator/hook.js.map +1 -0
  141. package/dist/entity/decorator/id.d.ts +3 -0
  142. package/dist/entity/decorator/id.d.ts.map +1 -0
  143. package/dist/entity/decorator/id.js +8 -0
  144. package/dist/entity/decorator/id.js.map +1 -0
  145. package/dist/entity/decorator/index-decorator.d.ts +37 -0
  146. package/dist/entity/decorator/index-decorator.d.ts.map +1 -0
  147. package/dist/entity/decorator/index-decorator.js +27 -0
  148. package/dist/entity/decorator/index-decorator.js.map +1 -0
  149. package/dist/entity/decorator/index.d.ts +8 -0
  150. package/dist/entity/decorator/index.d.ts.map +1 -0
  151. package/dist/entity/decorator/index.js +8 -0
  152. package/dist/entity/decorator/index.js.map +1 -0
  153. package/dist/entity/decorator/relation.d.ts +9 -0
  154. package/dist/entity/decorator/relation.d.ts.map +1 -0
  155. package/dist/entity/decorator/relation.js +20 -0
  156. package/dist/entity/decorator/relation.js.map +1 -0
  157. package/dist/entity/index.d.ts +2 -0
  158. package/dist/entity/index.d.ts.map +1 -0
  159. package/dist/entity/index.js +2 -0
  160. package/dist/entity/index.js.map +1 -0
  161. package/dist/entity/metadata/definition.d.ts +16 -0
  162. package/dist/entity/metadata/definition.d.ts.map +1 -0
  163. package/dist/entity/metadata/definition.js +309 -0
  164. package/dist/entity/metadata/definition.js.map +1 -0
  165. package/dist/entity/test-helpers.d.ts +4 -0
  166. package/dist/entity/test-helpers.d.ts.map +1 -0
  167. package/dist/entity/test-helpers.js +15 -0
  168. package/dist/entity/test-helpers.js.map +1 -0
  169. package/dist/express/index.d.ts +2 -0
  170. package/dist/express/index.d.ts.map +1 -0
  171. package/dist/express/index.js +2 -0
  172. package/dist/express/index.js.map +1 -0
  173. package/dist/express/querierMiddleware.d.ts +12 -0
  174. package/dist/express/querierMiddleware.d.ts.map +1 -0
  175. package/dist/express/querierMiddleware.js +40 -0
  176. package/dist/express/querierMiddleware.js.map +1 -0
  177. package/dist/http/contract.d.ts +99 -0
  178. package/dist/http/contract.d.ts.map +1 -0
  179. package/dist/http/contract.js +72 -0
  180. package/dist/http/contract.js.map +1 -0
  181. package/dist/http/fetchHandler.d.ts +14 -0
  182. package/dist/http/fetchHandler.d.ts.map +1 -0
  183. package/dist/http/fetchHandler.js +63 -0
  184. package/dist/http/fetchHandler.js.map +1 -0
  185. package/dist/http/handler.d.ts +77 -0
  186. package/dist/http/handler.d.ts.map +1 -0
  187. package/dist/http/handler.js +172 -0
  188. package/dist/http/handler.js.map +1 -0
  189. package/dist/http/index.d.ts +5 -0
  190. package/dist/http/index.d.ts.map +1 -0
  191. package/dist/http/index.js +5 -0
  192. package/dist/http/index.js.map +1 -0
  193. package/dist/http/query.d.ts +12 -0
  194. package/dist/http/query.d.ts.map +1 -0
  195. package/dist/http/query.js +49 -0
  196. package/dist/http/query.js.map +1 -0
  197. package/dist/index.d.ts +8 -0
  198. package/dist/index.d.ts.map +1 -0
  199. package/dist/index.js +8 -0
  200. package/dist/index.js.map +1 -0
  201. package/dist/libsql/index.d.ts +4 -0
  202. package/dist/libsql/index.d.ts.map +1 -0
  203. package/dist/libsql/index.js +4 -0
  204. package/dist/libsql/index.js.map +1 -0
  205. package/dist/libsql/libsqlDialect.d.ts +10 -0
  206. package/dist/libsql/libsqlDialect.d.ts.map +1 -0
  207. package/dist/libsql/libsqlDialect.js +10 -0
  208. package/dist/libsql/libsqlDialect.js.map +1 -0
  209. package/dist/libsql/libsqlQuerier.d.ts +24 -0
  210. package/dist/libsql/libsqlQuerier.d.ts.map +1 -0
  211. package/dist/libsql/libsqlQuerier.js +76 -0
  212. package/dist/libsql/libsqlQuerier.js.map +1 -0
  213. package/dist/libsql/libsqlQuerierPool.d.ts +20 -0
  214. package/dist/libsql/libsqlQuerierPool.d.ts.map +1 -0
  215. package/dist/libsql/libsqlQuerierPool.js +40 -0
  216. package/dist/libsql/libsqlQuerierPool.js.map +1 -0
  217. package/dist/maria/index.d.ts +4 -0
  218. package/dist/maria/index.d.ts.map +1 -0
  219. package/dist/maria/index.js +4 -0
  220. package/dist/maria/index.js.map +1 -0
  221. package/dist/maria/mariaDialect.d.ts +16 -0
  222. package/dist/maria/mariaDialect.d.ts.map +1 -0
  223. package/dist/maria/mariaDialect.js +56 -0
  224. package/dist/maria/mariaDialect.js.map +1 -0
  225. package/dist/maria/mariadbQuerier.d.ts +12 -0
  226. package/dist/maria/mariadbQuerier.d.ts.map +1 -0
  227. package/dist/maria/mariadbQuerier.js +31 -0
  228. package/dist/maria/mariadbQuerier.js.map +1 -0
  229. package/dist/maria/mariadbQuerierPool.d.ts +14 -0
  230. package/dist/maria/mariadbQuerierPool.d.ts.map +1 -0
  231. package/dist/maria/mariadbQuerierPool.js +18 -0
  232. package/dist/maria/mariadbQuerierPool.js.map +1 -0
  233. package/dist/migrate/acquireQuerierForMigrations.d.ts +9 -0
  234. package/dist/migrate/acquireQuerierForMigrations.d.ts.map +1 -0
  235. package/dist/migrate/acquireQuerierForMigrations.js +10 -0
  236. package/dist/migrate/acquireQuerierForMigrations.js.map +1 -0
  237. package/dist/migrate/assertCliConfig.d.ts +6 -0
  238. package/dist/migrate/assertCliConfig.d.ts.map +1 -0
  239. package/dist/migrate/assertCliConfig.js +31 -0
  240. package/dist/migrate/assertCliConfig.js.map +1 -0
  241. package/dist/migrate/bin.d.ts +3 -0
  242. package/dist/migrate/bin.d.ts.map +1 -0
  243. package/dist/migrate/bin.js +7 -0
  244. package/dist/migrate/bin.js.map +1 -0
  245. package/dist/migrate/builder/columnBuilder.d.ts +79 -0
  246. package/dist/migrate/builder/columnBuilder.d.ts.map +1 -0
  247. package/dist/migrate/builder/columnBuilder.js +159 -0
  248. package/dist/migrate/builder/columnBuilder.js.map +1 -0
  249. package/dist/migrate/builder/expressions.d.ts +87 -0
  250. package/dist/migrate/builder/expressions.d.ts.map +1 -0
  251. package/dist/migrate/builder/expressions.js +150 -0
  252. package/dist/migrate/builder/expressions.js.map +1 -0
  253. package/dist/migrate/builder/index.d.ts +6 -0
  254. package/dist/migrate/builder/index.d.ts.map +1 -0
  255. package/dist/migrate/builder/index.js +6 -0
  256. package/dist/migrate/builder/index.js.map +1 -0
  257. package/dist/migrate/builder/migrationBuilder.d.ts +110 -0
  258. package/dist/migrate/builder/migrationBuilder.d.ts.map +1 -0
  259. package/dist/migrate/builder/migrationBuilder.js +470 -0
  260. package/dist/migrate/builder/migrationBuilder.js.map +1 -0
  261. package/dist/migrate/builder/splitSqlStatements.d.ts +18 -0
  262. package/dist/migrate/builder/splitSqlStatements.d.ts.map +1 -0
  263. package/dist/migrate/builder/splitSqlStatements.js +44 -0
  264. package/dist/migrate/builder/splitSqlStatements.js.map +1 -0
  265. package/dist/migrate/builder/tableBuilder.d.ts +51 -0
  266. package/dist/migrate/builder/tableBuilder.d.ts.map +1 -0
  267. package/dist/migrate/builder/tableBuilder.js +291 -0
  268. package/dist/migrate/builder/tableBuilder.js.map +1 -0
  269. package/dist/migrate/builder/types.d.ts +466 -0
  270. package/dist/migrate/builder/types.d.ts.map +1 -0
  271. package/dist/migrate/builder/types.js +8 -0
  272. package/dist/migrate/builder/types.js.map +1 -0
  273. package/dist/migrate/cli-config.d.ts +3 -0
  274. package/dist/migrate/cli-config.d.ts.map +1 -0
  275. package/dist/migrate/cli-config.js +35 -0
  276. package/dist/migrate/cli-config.js.map +1 -0
  277. package/dist/migrate/cli.d.ts +20 -0
  278. package/dist/migrate/cli.d.ts.map +1 -0
  279. package/dist/migrate/cli.js +398 -0
  280. package/dist/migrate/cli.js.map +1 -0
  281. package/dist/migrate/codegen/entityCodeGenerator.d.ts +137 -0
  282. package/dist/migrate/codegen/entityCodeGenerator.d.ts.map +1 -0
  283. package/dist/migrate/codegen/entityCodeGenerator.js +405 -0
  284. package/dist/migrate/codegen/entityCodeGenerator.js.map +1 -0
  285. package/dist/migrate/codegen/entityMerger.d.ts +115 -0
  286. package/dist/migrate/codegen/entityMerger.d.ts.map +1 -0
  287. package/dist/migrate/codegen/entityMerger.js +294 -0
  288. package/dist/migrate/codegen/entityMerger.js.map +1 -0
  289. package/dist/migrate/codegen/index.d.ts +11 -0
  290. package/dist/migrate/codegen/index.d.ts.map +1 -0
  291. package/dist/migrate/codegen/index.js +15 -0
  292. package/dist/migrate/codegen/index.js.map +1 -0
  293. package/dist/migrate/codegen/migrationCodeGenerator.d.ts +62 -0
  294. package/dist/migrate/codegen/migrationCodeGenerator.d.ts.map +1 -0
  295. package/dist/migrate/codegen/migrationCodeGenerator.js +356 -0
  296. package/dist/migrate/codegen/migrationCodeGenerator.js.map +1 -0
  297. package/dist/migrate/codegen/migrationFile.d.ts +29 -0
  298. package/dist/migrate/codegen/migrationFile.d.ts.map +1 -0
  299. package/dist/migrate/codegen/migrationFile.js +48 -0
  300. package/dist/migrate/codegen/migrationFile.js.map +1 -0
  301. package/dist/migrate/codegen/smartRelationDetector.d.ts +48 -0
  302. package/dist/migrate/codegen/smartRelationDetector.d.ts.map +1 -0
  303. package/dist/migrate/codegen/smartRelationDetector.js +135 -0
  304. package/dist/migrate/codegen/smartRelationDetector.js.map +1 -0
  305. package/dist/migrate/drift/driftDetector.d.ts +80 -0
  306. package/dist/migrate/drift/driftDetector.d.ts.map +1 -0
  307. package/dist/migrate/drift/driftDetector.js +247 -0
  308. package/dist/migrate/drift/driftDetector.js.map +1 -0
  309. package/dist/migrate/drift/index.d.ts +7 -0
  310. package/dist/migrate/drift/index.d.ts.map +1 -0
  311. package/dist/migrate/drift/index.js +7 -0
  312. package/dist/migrate/drift/index.js.map +1 -0
  313. package/dist/migrate/generator/index.d.ts +3 -0
  314. package/dist/migrate/generator/index.d.ts.map +1 -0
  315. package/dist/migrate/generator/index.js +3 -0
  316. package/dist/migrate/generator/index.js.map +1 -0
  317. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +48 -0
  318. package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -0
  319. package/dist/migrate/generator/mongoSchemaGenerator.js +188 -0
  320. package/dist/migrate/generator/mongoSchemaGenerator.js.map +1 -0
  321. package/dist/migrate/index.d.ts +16 -0
  322. package/dist/migrate/index.d.ts.map +1 -0
  323. package/dist/migrate/index.js +23 -0
  324. package/dist/migrate/index.js.map +1 -0
  325. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts +77 -0
  326. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts.map +1 -0
  327. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js +156 -0
  328. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js.map +1 -0
  329. package/dist/migrate/introspection/baseSqlIntrospector.d.ts +26 -0
  330. package/dist/migrate/introspection/baseSqlIntrospector.d.ts.map +1 -0
  331. package/dist/migrate/introspection/baseSqlIntrospector.js +132 -0
  332. package/dist/migrate/introspection/baseSqlIntrospector.js.map +1 -0
  333. package/dist/migrate/introspection/index.d.ts +6 -0
  334. package/dist/migrate/introspection/index.d.ts.map +1 -0
  335. package/dist/migrate/introspection/index.js +6 -0
  336. package/dist/migrate/introspection/index.js.map +1 -0
  337. package/dist/migrate/introspection/mongoIntrospector.d.ts +15 -0
  338. package/dist/migrate/introspection/mongoIntrospector.d.ts.map +1 -0
  339. package/dist/migrate/introspection/mongoIntrospector.js +100 -0
  340. package/dist/migrate/introspection/mongoIntrospector.js.map +1 -0
  341. package/dist/migrate/introspection/mysqlIntrospector.d.ts +59 -0
  342. package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -0
  343. package/dist/migrate/introspection/mysqlIntrospector.js +175 -0
  344. package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -0
  345. package/dist/migrate/introspection/postgresIntrospector.d.ts +55 -0
  346. package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -0
  347. package/dist/migrate/introspection/postgresIntrospector.js +226 -0
  348. package/dist/migrate/introspection/postgresIntrospector.js.map +1 -0
  349. package/dist/migrate/introspection/sqliteIntrospector.d.ts +60 -0
  350. package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -0
  351. package/dist/migrate/introspection/sqliteIntrospector.js +188 -0
  352. package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -0
  353. package/dist/migrate/migrator.d.ts +168 -0
  354. package/dist/migrate/migrator.d.ts.map +1 -0
  355. package/dist/migrate/migrator.js +614 -0
  356. package/dist/migrate/migrator.js.map +1 -0
  357. package/dist/migrate/schemaGenerator.d.ts +142 -0
  358. package/dist/migrate/schemaGenerator.d.ts.map +1 -0
  359. package/dist/migrate/schemaGenerator.js +693 -0
  360. package/dist/migrate/schemaGenerator.js.map +1 -0
  361. package/dist/migrate/schemaGeneratorAsync.d.ts +9 -0
  362. package/dist/migrate/schemaGeneratorAsync.d.ts.map +1 -0
  363. package/dist/migrate/schemaGeneratorAsync.js +13 -0
  364. package/dist/migrate/schemaGeneratorAsync.js.map +1 -0
  365. package/dist/migrate/storage/databaseStorage.d.ts +25 -0
  366. package/dist/migrate/storage/databaseStorage.d.ts.map +1 -0
  367. package/dist/migrate/storage/databaseStorage.js +78 -0
  368. package/dist/migrate/storage/databaseStorage.js.map +1 -0
  369. package/dist/migrate/storage/index.d.ts +3 -0
  370. package/dist/migrate/storage/index.d.ts.map +1 -0
  371. package/dist/migrate/storage/index.js +3 -0
  372. package/dist/migrate/storage/index.js.map +1 -0
  373. package/dist/migrate/storage/jsonStorage.d.ts +16 -0
  374. package/dist/migrate/storage/jsonStorage.d.ts.map +1 -0
  375. package/dist/migrate/storage/jsonStorage.js +43 -0
  376. package/dist/migrate/storage/jsonStorage.js.map +1 -0
  377. package/dist/migrate/sync/index.d.ts +7 -0
  378. package/dist/migrate/sync/index.d.ts.map +1 -0
  379. package/dist/migrate/sync/index.js +7 -0
  380. package/dist/migrate/sync/index.js.map +1 -0
  381. package/dist/migrate/sync/schemaSync.d.ts +132 -0
  382. package/dist/migrate/sync/schemaSync.d.ts.map +1 -0
  383. package/dist/migrate/sync/schemaSync.js +260 -0
  384. package/dist/migrate/sync/schemaSync.js.map +1 -0
  385. package/dist/mongo/index.d.ts +6 -0
  386. package/dist/mongo/index.d.ts.map +1 -0
  387. package/dist/mongo/index.js +6 -0
  388. package/dist/mongo/index.js.map +1 -0
  389. package/dist/mongo/mongoDialect.d.ts +83 -0
  390. package/dist/mongo/mongoDialect.d.ts.map +1 -0
  391. package/dist/mongo/mongoDialect.js +418 -0
  392. package/dist/mongo/mongoDialect.js.map +1 -0
  393. package/dist/mongo/mongodbNativeDialect.d.ts +10 -0
  394. package/dist/mongo/mongodbNativeDialect.d.ts.map +1 -0
  395. package/dist/mongo/mongodbNativeDialect.js +10 -0
  396. package/dist/mongo/mongodbNativeDialect.js.map +1 -0
  397. package/dist/mongo/mongodbQuerier.d.ts +46 -0
  398. package/dist/mongo/mongodbQuerier.d.ts.map +1 -0
  399. package/dist/mongo/mongodbQuerier.js +344 -0
  400. package/dist/mongo/mongodbQuerier.js.map +1 -0
  401. package/dist/mongo/mongodbQuerierPool.d.ts +12 -0
  402. package/dist/mongo/mongodbQuerierPool.d.ts.map +1 -0
  403. package/dist/mongo/mongodbQuerierPool.js +19 -0
  404. package/dist/mongo/mongodbQuerierPool.js.map +1 -0
  405. package/dist/mysql/index.d.ts +5 -0
  406. package/dist/mysql/index.d.ts.map +1 -0
  407. package/dist/mysql/index.js +5 -0
  408. package/dist/mysql/index.js.map +1 -0
  409. package/dist/mysql/mysql2Dialect.d.ts +10 -0
  410. package/dist/mysql/mysql2Dialect.d.ts.map +1 -0
  411. package/dist/mysql/mysql2Dialect.js +10 -0
  412. package/dist/mysql/mysql2Dialect.js.map +1 -0
  413. package/dist/mysql/mysql2Querier.d.ts +12 -0
  414. package/dist/mysql/mysql2Querier.d.ts.map +1 -0
  415. package/dist/mysql/mysql2Querier.js +34 -0
  416. package/dist/mysql/mysql2Querier.js.map +1 -0
  417. package/dist/mysql/mysql2QuerierPool.d.ts +12 -0
  418. package/dist/mysql/mysql2QuerierPool.d.ts.map +1 -0
  419. package/dist/mysql/mysql2QuerierPool.js +18 -0
  420. package/dist/mysql/mysql2QuerierPool.js.map +1 -0
  421. package/dist/mysql/mysqlDialect.d.ts +6 -0
  422. package/dist/mysql/mysqlDialect.d.ts.map +1 -0
  423. package/dist/mysql/mysqlDialect.js +6 -0
  424. package/dist/mysql/mysqlDialect.js.map +1 -0
  425. package/dist/namingStrategy/defaultNamingStrategy.d.ts +10 -0
  426. package/dist/namingStrategy/defaultNamingStrategy.d.ts.map +1 -0
  427. package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
  428. package/dist/namingStrategy/defaultNamingStrategy.js.map +1 -0
  429. package/dist/namingStrategy/index.d.ts +3 -0
  430. package/dist/namingStrategy/index.d.ts.map +1 -0
  431. package/dist/namingStrategy/index.js +3 -0
  432. package/dist/namingStrategy/index.js.map +1 -0
  433. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +9 -0
  434. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts.map +1 -0
  435. package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
  436. package/dist/namingStrategy/snakeCaseNamingStrategy.js.map +1 -0
  437. package/dist/neon/index.d.ts +4 -0
  438. package/dist/neon/index.d.ts.map +1 -0
  439. package/dist/neon/index.js +4 -0
  440. package/dist/neon/index.js.map +1 -0
  441. package/dist/neon/neonDialect.d.ts +11 -0
  442. package/dist/neon/neonDialect.d.ts.map +1 -0
  443. package/dist/neon/neonDialect.js +11 -0
  444. package/dist/neon/neonDialect.js.map +1 -0
  445. package/dist/neon/neonQuerier.d.ts +6 -0
  446. package/dist/neon/neonQuerier.d.ts.map +1 -0
  447. package/dist/neon/neonQuerier.js +4 -0
  448. package/dist/neon/neonQuerier.js.map +1 -0
  449. package/dist/neon/neonQuerierPool.d.ts +11 -0
  450. package/dist/neon/neonQuerierPool.d.ts.map +1 -0
  451. package/dist/neon/neonQuerierPool.js +15 -0
  452. package/dist/neon/neonQuerierPool.js.map +1 -0
  453. package/dist/nestjs/index.d.ts +2 -0
  454. package/dist/nestjs/index.d.ts.map +1 -0
  455. package/dist/nestjs/index.js +2 -0
  456. package/dist/nestjs/index.js.map +1 -0
  457. package/dist/nestjs/uqlModule.d.ts +29 -0
  458. package/dist/nestjs/uqlModule.d.ts.map +1 -0
  459. package/dist/nestjs/uqlModule.js +42 -0
  460. package/dist/nestjs/uqlModule.js.map +1 -0
  461. package/dist/options.d.ts +5 -0
  462. package/dist/options.d.ts.map +1 -0
  463. package/dist/options.js +14 -0
  464. package/dist/options.js.map +1 -0
  465. package/dist/postgres/abstractPgQuerier.d.ts +24 -0
  466. package/dist/postgres/abstractPgQuerier.d.ts.map +1 -0
  467. package/dist/postgres/abstractPgQuerier.js +33 -0
  468. package/dist/postgres/abstractPgQuerier.js.map +1 -0
  469. package/dist/postgres/abstractPgQuerierPool.d.ts +15 -0
  470. package/dist/postgres/abstractPgQuerierPool.d.ts.map +1 -0
  471. package/dist/postgres/abstractPgQuerierPool.js +10 -0
  472. package/dist/postgres/abstractPgQuerierPool.js.map +1 -0
  473. package/dist/postgres/index.d.ts +6 -0
  474. package/dist/postgres/index.d.ts.map +1 -0
  475. package/dist/postgres/index.js +6 -0
  476. package/dist/postgres/index.js.map +1 -0
  477. package/dist/postgres/pgDialect.d.ts +13 -0
  478. package/dist/postgres/pgDialect.d.ts.map +1 -0
  479. package/dist/postgres/pgDialect.js +14 -0
  480. package/dist/postgres/pgDialect.js.map +1 -0
  481. package/dist/postgres/pgQuerier.d.ts +6 -0
  482. package/dist/postgres/pgQuerier.d.ts.map +1 -0
  483. package/dist/postgres/pgQuerier.js +4 -0
  484. package/dist/postgres/pgQuerier.js.map +1 -0
  485. package/dist/postgres/pgQuerierPool.d.ts +11 -0
  486. package/dist/postgres/pgQuerierPool.d.ts.map +1 -0
  487. package/dist/postgres/pgQuerierPool.js +15 -0
  488. package/dist/postgres/pgQuerierPool.js.map +1 -0
  489. package/dist/postgres/postgresDialect.d.ts +48 -0
  490. package/dist/postgres/postgresDialect.d.ts.map +1 -0
  491. package/dist/postgres/postgresDialect.js +222 -0
  492. package/dist/postgres/postgresDialect.js.map +1 -0
  493. package/dist/postgres/postgresWireDriverCapabilities.d.ts +15 -0
  494. package/dist/postgres/postgresWireDriverCapabilities.d.ts.map +1 -0
  495. package/dist/postgres/postgresWireDriverCapabilities.js +15 -0
  496. package/dist/postgres/postgresWireDriverCapabilities.js.map +1 -0
  497. package/dist/querier/abstractPoolQuerier.d.ts +14 -0
  498. package/dist/querier/abstractPoolQuerier.d.ts.map +1 -0
  499. package/dist/querier/abstractPoolQuerier.js +31 -0
  500. package/dist/querier/abstractPoolQuerier.js.map +1 -0
  501. package/dist/querier/abstractQuerier.d.ts +138 -0
  502. package/dist/querier/abstractQuerier.d.ts.map +1 -0
  503. package/dist/querier/abstractQuerier.js +426 -0
  504. package/dist/querier/abstractQuerier.js.map +1 -0
  505. package/dist/querier/abstractQuerierPool.d.ts +27 -0
  506. package/dist/querier/abstractQuerierPool.d.ts.map +1 -0
  507. package/dist/querier/abstractQuerierPool.js +31 -0
  508. package/dist/querier/abstractQuerierPool.js.map +1 -0
  509. package/dist/querier/abstractSqlQuerier.d.ts +53 -0
  510. package/dist/querier/abstractSqlQuerier.d.ts.map +1 -0
  511. package/dist/querier/abstractSqlQuerier.js +256 -0
  512. package/dist/querier/abstractSqlQuerier.js.map +1 -0
  513. package/dist/querier/decorator/index.d.ts +5 -0
  514. package/dist/querier/decorator/index.d.ts.map +1 -0
  515. package/dist/querier/decorator/index.js +5 -0
  516. package/dist/querier/decorator/index.js.map +1 -0
  517. package/dist/querier/decorator/injectQuerier.d.ts +4 -0
  518. package/dist/querier/decorator/injectQuerier.d.ts.map +1 -0
  519. package/dist/querier/decorator/injectQuerier.js +34 -0
  520. package/dist/querier/decorator/injectQuerier.js.map +1 -0
  521. package/dist/querier/decorator/log.d.ts +7 -0
  522. package/dist/querier/decorator/log.d.ts.map +1 -0
  523. package/dist/querier/decorator/log.js +27 -0
  524. package/dist/querier/decorator/log.js.map +1 -0
  525. package/dist/querier/decorator/serialized.d.ts +7 -0
  526. package/dist/querier/decorator/serialized.d.ts.map +1 -0
  527. package/dist/querier/decorator/serialized.js +14 -0
  528. package/dist/querier/decorator/serialized.js.map +1 -0
  529. package/dist/querier/decorator/transactional.d.ts +7 -0
  530. package/dist/querier/decorator/transactional.d.ts.map +1 -0
  531. package/dist/querier/decorator/transactional.js +49 -0
  532. package/dist/querier/decorator/transactional.js.map +1 -0
  533. package/dist/querier/index.d.ts +5 -0
  534. package/dist/querier/index.d.ts.map +1 -0
  535. package/dist/querier/index.js +5 -0
  536. package/dist/querier/index.js.map +1 -0
  537. package/dist/schema/canonicalType.d.ts +54 -0
  538. package/dist/schema/canonicalType.d.ts.map +1 -0
  539. package/dist/schema/canonicalType.js +571 -0
  540. package/dist/schema/canonicalType.js.map +1 -0
  541. package/dist/schema/index.d.ts +26 -0
  542. package/dist/schema/index.d.ts.map +1 -0
  543. package/dist/schema/index.js +27 -0
  544. package/dist/schema/index.js.map +1 -0
  545. package/dist/schema/schemaAST.d.ts +155 -0
  546. package/dist/schema/schemaAST.d.ts.map +1 -0
  547. package/dist/schema/schemaAST.js +496 -0
  548. package/dist/schema/schemaAST.js.map +1 -0
  549. package/dist/schema/schemaASTBuilder.d.ts +58 -0
  550. package/dist/schema/schemaASTBuilder.d.ts.map +1 -0
  551. package/dist/schema/schemaASTBuilder.js +228 -0
  552. package/dist/schema/schemaASTBuilder.js.map +1 -0
  553. package/dist/schema/schemaASTDiffer.d.ts +84 -0
  554. package/dist/schema/schemaASTDiffer.d.ts.map +1 -0
  555. package/dist/schema/schemaASTDiffer.js +431 -0
  556. package/dist/schema/schemaASTDiffer.js.map +1 -0
  557. package/dist/schema/types.d.ts +348 -0
  558. package/dist/schema/types.d.ts.map +1 -0
  559. package/dist/schema/types.js +11 -0
  560. package/dist/schema/types.js.map +1 -0
  561. package/dist/sqlite/abstractSqliteQuerier.d.ts +4 -0
  562. package/dist/sqlite/abstractSqliteQuerier.d.ts.map +1 -0
  563. package/dist/sqlite/abstractSqliteQuerier.js +4 -0
  564. package/dist/sqlite/abstractSqliteQuerier.js.map +1 -0
  565. package/dist/sqlite/betterSqlite3Dialect.d.ts +10 -0
  566. package/dist/sqlite/betterSqlite3Dialect.d.ts.map +1 -0
  567. package/dist/sqlite/betterSqlite3Dialect.js +10 -0
  568. package/dist/sqlite/betterSqlite3Dialect.js.map +1 -0
  569. package/dist/sqlite/index.d.ts +6 -0
  570. package/dist/sqlite/index.d.ts.map +1 -0
  571. package/dist/sqlite/index.js +6 -0
  572. package/dist/sqlite/index.js.map +1 -0
  573. package/dist/sqlite/sqliteDialect.d.ts +36 -0
  574. package/dist/sqlite/sqliteDialect.d.ts.map +1 -0
  575. package/dist/sqlite/sqliteDialect.js +155 -0
  576. package/dist/sqlite/sqliteDialect.js.map +1 -0
  577. package/dist/sqlite/sqliteQuerier.d.ts +14 -0
  578. package/dist/sqlite/sqliteQuerier.d.ts.map +1 -0
  579. package/dist/sqlite/sqliteQuerier.js +30 -0
  580. package/dist/sqlite/sqliteQuerier.js.map +1 -0
  581. package/dist/sqlite/sqliteQuerierPool.d.ts +14 -0
  582. package/dist/sqlite/sqliteQuerierPool.d.ts.map +1 -0
  583. package/dist/sqlite/sqliteQuerierPool.js +36 -0
  584. package/dist/sqlite/sqliteQuerierPool.js.map +1 -0
  585. package/dist/type/config.d.ts +43 -0
  586. package/dist/type/config.d.ts.map +1 -0
  587. package/dist/type/config.js +2 -0
  588. package/dist/type/config.js.map +1 -0
  589. package/dist/type/entity.d.ts +332 -0
  590. package/dist/type/entity.d.ts.map +1 -0
  591. package/dist/type/entity.js +5 -0
  592. package/dist/type/entity.js.map +1 -0
  593. package/dist/type/index.d.ts +12 -0
  594. package/dist/type/index.d.ts.map +1 -0
  595. package/dist/type/index.js +12 -0
  596. package/dist/type/index.js.map +1 -0
  597. package/dist/type/logger.d.ts +61 -0
  598. package/dist/type/logger.d.ts.map +1 -0
  599. package/dist/type/logger.js +2 -0
  600. package/dist/type/logger.js.map +1 -0
  601. package/dist/type/migration.d.ts +267 -0
  602. package/dist/type/migration.d.ts.map +1 -0
  603. package/dist/type/migration.js +2 -0
  604. package/dist/type/migration.js.map +1 -0
  605. package/dist/type/migratorDialect.d.ts +10 -0
  606. package/dist/type/migratorDialect.d.ts.map +1 -0
  607. package/dist/type/migratorDialect.js +16 -0
  608. package/dist/type/migratorDialect.js.map +1 -0
  609. package/dist/type/namingStrategy.d.ts +18 -0
  610. package/dist/type/namingStrategy.d.ts.map +1 -0
  611. package/dist/type/namingStrategy.js +2 -0
  612. package/dist/type/namingStrategy.js.map +1 -0
  613. package/dist/type/querier.d.ts +162 -0
  614. package/dist/type/querier.d.ts.map +1 -0
  615. package/dist/type/querier.js +11 -0
  616. package/dist/type/querier.js.map +1 -0
  617. package/dist/type/querierPool.d.ts +62 -0
  618. package/dist/type/querierPool.d.ts.map +1 -0
  619. package/dist/type/querierPool.js +2 -0
  620. package/dist/type/querierPool.js.map +1 -0
  621. package/dist/type/query.d.ts +700 -0
  622. package/dist/type/query.d.ts.map +1 -0
  623. package/dist/type/query.js +11 -0
  624. package/dist/type/query.js.map +1 -0
  625. package/dist/type/universalQuerier.d.ts +136 -0
  626. package/dist/type/universalQuerier.d.ts.map +1 -0
  627. package/dist/type/universalQuerier.js +2 -0
  628. package/dist/type/universalQuerier.js.map +1 -0
  629. package/dist/type/utility.d.ts +37 -0
  630. package/dist/type/utility.d.ts.map +1 -0
  631. package/dist/type/utility.js +2 -0
  632. package/dist/type/utility.js.map +1 -0
  633. package/dist/util/ansiSqlLiteral.d.ts +21 -0
  634. package/dist/util/ansiSqlLiteral.d.ts.map +1 -0
  635. package/dist/util/ansiSqlLiteral.js +101 -0
  636. package/dist/util/ansiSqlLiteral.js.map +1 -0
  637. package/dist/util/dialect.util.d.ts +31 -0
  638. package/dist/util/dialect.util.d.ts.map +1 -0
  639. package/dist/util/dialect.util.js +113 -0
  640. package/dist/util/dialect.util.js.map +1 -0
  641. package/dist/util/field.util.d.ts +14 -0
  642. package/dist/util/field.util.d.ts.map +1 -0
  643. package/dist/util/field.util.js +57 -0
  644. package/dist/util/field.util.js.map +1 -0
  645. package/dist/util/hook.util.d.ts +15 -0
  646. package/dist/util/hook.util.d.ts.map +1 -0
  647. package/dist/util/hook.util.js +20 -0
  648. package/dist/util/hook.util.js.map +1 -0
  649. package/dist/util/index.d.ts +10 -0
  650. package/dist/util/index.d.ts.map +1 -0
  651. package/dist/util/index.js +10 -0
  652. package/dist/util/index.js.map +1 -0
  653. package/dist/util/logger.d.ts +34 -0
  654. package/dist/util/logger.d.ts.map +1 -0
  655. package/dist/util/logger.js +129 -0
  656. package/dist/util/logger.js.map +1 -0
  657. package/dist/util/object.util.d.ts +10 -0
  658. package/dist/util/object.util.d.ts.map +1 -0
  659. package/dist/util/object.util.js +29 -0
  660. package/dist/util/object.util.js.map +1 -0
  661. package/dist/util/raw.d.ts +18 -0
  662. package/dist/util/raw.d.ts.map +1 -0
  663. package/dist/util/raw.js +20 -0
  664. package/dist/util/raw.js.map +1 -0
  665. package/dist/util/relationQuery.util.d.ts +25 -0
  666. package/dist/util/relationQuery.util.d.ts.map +1 -0
  667. package/dist/util/relationQuery.util.js +101 -0
  668. package/dist/util/relationQuery.util.js.map +1 -0
  669. package/dist/util/sql.util.d.ts +50 -0
  670. package/dist/util/sql.util.d.ts.map +1 -0
  671. package/dist/util/sql.util.js +141 -0
  672. package/dist/util/sql.util.js.map +1 -0
  673. package/dist/util/string.util.d.ts +29 -0
  674. package/dist/util/string.util.d.ts.map +1 -0
  675. package/dist/util/string.util.js +93 -0
  676. package/dist/util/string.util.js.map +1 -0
  677. package/package.json +17 -10
  678. package/dist/browser/cc-BVTDOeZ_.js +0 -566
  679. package/dist/browser/cc-BVTDOeZ_.js.map +0 -1
  680. package/dist/browser/mongoSchemaGenerator-BT2_u1wI.js +0 -735
  681. package/dist/browser/mongoSchemaGenerator-BT2_u1wI.js.map +0 -1
@@ -0,0 +1,99 @@
1
+ import type { Type } from '../type/index.js';
2
+ /**
3
+ * Single source of truth for the CRUD-over-HTTP surface, shared by server adapters and the browser client.
4
+ * Keys are constrained to {@link UniversalQuerier} method names, so renaming a querier method
5
+ * (or routing a non-existent one) is a compile error.
6
+ */
7
+ export declare const CRUD_ROUTES: {
8
+ readonly findMany: {
9
+ readonly method: "GET";
10
+ readonly path: "";
11
+ };
12
+ readonly findOne: {
13
+ readonly method: "GET";
14
+ readonly path: "/one";
15
+ };
16
+ readonly count: {
17
+ readonly method: "GET";
18
+ readonly path: "/count";
19
+ };
20
+ readonly findOneById: {
21
+ readonly method: "GET";
22
+ readonly path: "/:id";
23
+ };
24
+ readonly insertOne: {
25
+ readonly method: "POST";
26
+ readonly path: "";
27
+ };
28
+ readonly insertMany: {
29
+ readonly method: "POST";
30
+ readonly path: "/many";
31
+ };
32
+ readonly saveOne: {
33
+ readonly method: "PUT";
34
+ readonly path: "";
35
+ };
36
+ readonly saveMany: {
37
+ readonly method: "PUT";
38
+ readonly path: "/many";
39
+ };
40
+ readonly updateMany: {
41
+ readonly method: "PATCH";
42
+ readonly path: "";
43
+ };
44
+ readonly updateOneById: {
45
+ readonly method: "PATCH";
46
+ readonly path: "/:id";
47
+ };
48
+ readonly deleteOneById: {
49
+ readonly method: "DELETE";
50
+ readonly path: "/:id";
51
+ };
52
+ readonly deleteMany: {
53
+ readonly method: "DELETE";
54
+ readonly path: "";
55
+ };
56
+ };
57
+ export type CrudOperation = keyof typeof CRUD_ROUTES;
58
+ export type CrudRoute = (typeof CRUD_ROUTES)[CrudOperation];
59
+ /**
60
+ * `QUERY` (RFC 10008) is an alternate transport for the read operations: same semantics as the
61
+ * GET routes, but the JSON query travels in the request body instead of the query string,
62
+ * avoiding URL-length limits for large queries.
63
+ */
64
+ export type HttpMethod = CrudRoute['method'] | 'QUERY';
65
+ /**
66
+ * URL segment for an entity, e.g. `entityPath(UserProfile) === 'user-profile'`.
67
+ */
68
+ export declare function entityPath<E>(entity: Type<E>): string;
69
+ export type RouteMatch = {
70
+ readonly op: CrudOperation;
71
+ /**
72
+ * the resolved transport method — differs from the op's canonical route method for QUERY.
73
+ */
74
+ readonly method: HttpMethod;
75
+ readonly id?: string;
76
+ };
77
+ /**
78
+ * Resolve a (method, sub-path) pair to a CRUD operation. Literal sub-paths win over `:id`.
79
+ */
80
+ export declare function matchRoute(method: string, subPath: string | undefined): RouteMatch | undefined;
81
+ export type RequestSuccessResponse<E> = {
82
+ data: E;
83
+ count?: number;
84
+ };
85
+ export type RequestErrorResponse = {
86
+ readonly error: {
87
+ readonly message: string;
88
+ readonly code: number;
89
+ };
90
+ };
91
+ /**
92
+ * Map a thrown error to the wire error envelope. Honors a numeric `status` on the error
93
+ * (e.g. hooks throwing 403), defaults to 500; `code` mirrors the HTTP status.
94
+ */
95
+ export declare function toErrorResponse(err: unknown): {
96
+ status: number;
97
+ body: RequestErrorResponse;
98
+ };
99
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/http/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAoB,MAAM,kBAAkB,CAAC;AAW/D;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAagD,CAAC;AAEzE,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC;AAErD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;AAYvD;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAErD;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAuB9F;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAI5F"}
@@ -0,0 +1,72 @@
1
+ // import from the specific util modules (not the barrel) to keep entity
2
+ // metadata and reflect-metadata out of the browser bundle
3
+ import { getKeys } from '../util/object.util.js';
4
+ import { kebabCase } from '../util/string.util.js';
5
+ /**
6
+ * Single source of truth for the CRUD-over-HTTP surface, shared by server adapters and the browser client.
7
+ * Keys are constrained to {@link UniversalQuerier} method names, so renaming a querier method
8
+ * (or routing a non-existent one) is a compile error.
9
+ */
10
+ export const CRUD_ROUTES = {
11
+ findMany: { method: 'GET', path: '' },
12
+ findOne: { method: 'GET', path: '/one' },
13
+ count: { method: 'GET', path: '/count' },
14
+ findOneById: { method: 'GET', path: '/:id' },
15
+ insertOne: { method: 'POST', path: '' },
16
+ insertMany: { method: 'POST', path: '/many' },
17
+ saveOne: { method: 'PUT', path: '' },
18
+ saveMany: { method: 'PUT', path: '/many' },
19
+ updateMany: { method: 'PATCH', path: '' },
20
+ updateOneById: { method: 'PATCH', path: '/:id' },
21
+ deleteOneById: { method: 'DELETE', path: '/:id' },
22
+ deleteMany: { method: 'DELETE', path: '' },
23
+ };
24
+ const CRUD_OPS = getKeys(CRUD_ROUTES);
25
+ // derived from CRUD_ROUTES (the literal-path GET routes) so the sub-paths live in exactly one place
26
+ const QUERY_READ_OPS = new Map(CRUD_OPS.filter((op) => CRUD_ROUTES[op].method === 'GET' && CRUD_ROUTES[op].path !== '/:id').map((op) => [
27
+ CRUD_ROUTES[op].path,
28
+ op,
29
+ ]));
30
+ /**
31
+ * URL segment for an entity, e.g. `entityPath(UserProfile) === 'user-profile'`.
32
+ */
33
+ export function entityPath(entity) {
34
+ return kebabCase(entity.name);
35
+ }
36
+ /**
37
+ * Resolve a (method, sub-path) pair to a CRUD operation. Literal sub-paths win over `:id`.
38
+ */
39
+ export function matchRoute(method, subPath) {
40
+ const raw = method.toUpperCase();
41
+ const literal = subPath === undefined ? '' : `/${subPath}`;
42
+ if (raw === 'QUERY') {
43
+ const op = QUERY_READ_OPS.get(literal);
44
+ return op ? { op, method: 'QUERY' } : undefined;
45
+ }
46
+ // HEAD reads like GET per HTTP semantics; the server runtime omits the response body
47
+ const verb = raw === 'HEAD' ? 'GET' : raw;
48
+ let idOp;
49
+ for (const op of CRUD_OPS) {
50
+ const route = CRUD_ROUTES[op];
51
+ if (route.method !== verb) {
52
+ continue;
53
+ }
54
+ if (route.path === literal) {
55
+ return { op, method: route.method };
56
+ }
57
+ if (route.path === '/:id') {
58
+ idOp = op;
59
+ }
60
+ }
61
+ return idOp && subPath !== undefined ? { op: idOp, method: CRUD_ROUTES[idOp].method, id: subPath } : undefined;
62
+ }
63
+ /**
64
+ * Map a thrown error to the wire error envelope. Honors a numeric `status` on the error
65
+ * (e.g. hooks throwing 403), defaults to 500; `code` mirrors the HTTP status.
66
+ */
67
+ export function toErrorResponse(err) {
68
+ const status = err instanceof Error && 'status' in err && typeof err.status === 'number' ? err.status : 500;
69
+ const message = err instanceof Error ? err.message : 'Internal Server Error';
70
+ return { status, body: { error: { message, code: status } } };
71
+ }
72
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/http/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type RequestHandlerOptions } from './handler.js';
2
+ export type FetchHandlerOptions = RequestHandlerOptions<Request> & {
3
+ /**
4
+ * URL prefix to strip before matching entity routes, e.g. '/api'. Defaults to ''.
5
+ */
6
+ readonly basePath?: string;
7
+ };
8
+ /**
9
+ * Web-standard adapter over {@link createRequestHandler}: mount the returned
10
+ * `(request: Request) => Promise<Response>` in any fetch-native runtime
11
+ * (Hono, Next.js route handlers, Bun.serve, Deno.serve, Cloudflare Workers, SvelteKit).
12
+ */
13
+ export declare function createFetchHandler(opts?: FetchHandlerOptions): (request: Request) => Promise<Response>;
14
+ //# sourceMappingURL=fetchHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchHandler.d.ts","sourceRoot":"","sources":["../../src/http/fetchHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEhF,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG;IACjE;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,mBAAwB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAmC1G"}
@@ -0,0 +1,63 @@
1
+ import { toErrorResponse } from './contract.js';
2
+ import { createRequestHandler } from './handler.js';
3
+ /**
4
+ * Web-standard adapter over {@link createRequestHandler}: mount the returned
5
+ * `(request: Request) => Promise<Response>` in any fetch-native runtime
6
+ * (Hono, Next.js route handlers, Bun.serve, Deno.serve, Cloudflare Workers, SvelteKit).
7
+ */
8
+ export function createFetchHandler(opts = {}) {
9
+ const { basePath = '', ...handlerOpts } = opts;
10
+ const handle = createRequestHandler(handlerOpts);
11
+ return async (request) => {
12
+ try {
13
+ const url = new URL(request.url);
14
+ let path = url.pathname;
15
+ if (basePath && (path === basePath || path.startsWith(`${basePath}/`))) {
16
+ path = path.slice(basePath.length);
17
+ }
18
+ const segments = path.split('/').filter((segment) => segment.length);
19
+ if (segments.length === 0 || segments.length > 2) {
20
+ return notFound();
21
+ }
22
+ const [entityPath, subPath] = segments;
23
+ const method = request.method.toUpperCase();
24
+ const pending = handle({
25
+ method,
26
+ entityPath,
27
+ subPath,
28
+ query: Object.fromEntries(url.searchParams),
29
+ body: await parseBody(request, method),
30
+ context: request,
31
+ });
32
+ if (!pending) {
33
+ return notFound();
34
+ }
35
+ const { status, body } = await pending;
36
+ return Response.json(body, { status });
37
+ }
38
+ catch (err) {
39
+ const { status, body } = toErrorResponse(err);
40
+ return Response.json(body, { status });
41
+ }
42
+ };
43
+ }
44
+ async function parseBody(request, method) {
45
+ if (method !== 'POST' && method !== 'PUT' && method !== 'PATCH' && method !== 'QUERY') {
46
+ return undefined;
47
+ }
48
+ const text = await request.text();
49
+ if (!text) {
50
+ return undefined;
51
+ }
52
+ try {
53
+ return JSON.parse(text);
54
+ }
55
+ catch {
56
+ throw Object.assign(new SyntaxError('invalid JSON body'), { status: 400 });
57
+ }
58
+ }
59
+ function notFound() {
60
+ const body = { error: { message: 'not found', code: 404 } };
61
+ return Response.json(body, { status: 404 });
62
+ }
63
+ //# sourceMappingURL=fetchHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchHandler.js","sourceRoot":"","sources":["../../src/http/fetchHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import type { EntityMeta, Query, Type } from '../type/index.js';
2
+ import { type CrudOperation, type HttpMethod, type RequestSuccessResponse } from './contract.js';
3
+ /**
4
+ * Framework-normalized request: adapters (express, fetch, ...) reduce their native
5
+ * request to this shape and get back a status + JSON body.
6
+ */
7
+ export type HandlerRequest<Ctx = unknown> = {
8
+ readonly method: string;
9
+ readonly entityPath: string;
10
+ readonly subPath?: string;
11
+ /**
12
+ * raw query-string entries; JSON values may still be stringified.
13
+ */
14
+ readonly query?: Record<string, unknown>;
15
+ /**
16
+ * parsed JSON body.
17
+ */
18
+ readonly body?: unknown;
19
+ /**
20
+ * adapter-supplied request context (express `req`, fetch `Request`, ...), passed through to hooks.
21
+ */
22
+ readonly context: Ctx;
23
+ };
24
+ export type HandlerResponse = {
25
+ readonly status: number;
26
+ readonly body: unknown;
27
+ };
28
+ export type HookContext<E extends object, Ctx = unknown> = {
29
+ readonly meta: EntityMeta<E>;
30
+ readonly op: CrudOperation;
31
+ readonly method: HttpMethod;
32
+ /**
33
+ * parsed query — mutate in place or reassign to enforce filters (tenant scoping, row-level rules).
34
+ */
35
+ query: Query<E>;
36
+ /**
37
+ * request payload — reassignable for sanitization or field injection.
38
+ */
39
+ body?: unknown;
40
+ /**
41
+ * adapter-supplied request context — the auth/tenant source (e.g. `req.user`).
42
+ */
43
+ readonly context: Ctx;
44
+ };
45
+ export type Hook<Ctx = unknown> = <E extends object>(ctx: HookContext<E, Ctx>) => void | Promise<void>;
46
+ export type ResponseHook<Ctx = unknown> = <E extends object>(ctx: HookContext<E, Ctx>, envelope: RequestSuccessResponse<unknown>) => void | Promise<void>;
47
+ export type RequestHandlerOptions<Ctx = unknown> = {
48
+ include?: Type<any>[];
49
+ exclude?: Type<any>[];
50
+ /**
51
+ * Allow augment any kind of request before it runs. Hooks may be async
52
+ * and abort the request by throwing (a numeric `status` on the error is honored).
53
+ */
54
+ pre?: Hook<Ctx>;
55
+ /**
56
+ * Allow augment a save request (POST | PUT | PATCH) before it runs.
57
+ */
58
+ preSave?: Hook<Ctx>;
59
+ /**
60
+ * Allow augment a filter request (GET | DELETE) before it runs.
61
+ */
62
+ preFilter?: Hook<Ctx>;
63
+ /**
64
+ * Shape the successful response before it is sent: strip sensitive fields,
65
+ * derive presentation fields, or coerce null data. Mutate `envelope.data` in place
66
+ * or reassign it. Runs after the operation (and after commit for writes).
67
+ */
68
+ post?: ResponseHook<Ctx>;
69
+ };
70
+ /**
71
+ * Returns `undefined` synchronously for an unknown entity or route so adapters can fall through
72
+ * (e.g. express `next()`); rejects with the original error on failure so adapters map it
73
+ * (e.g. `toErrorResponse`).
74
+ */
75
+ export type RequestHandler<Ctx = unknown> = (req: HandlerRequest<Ctx>) => Promise<HandlerResponse> | undefined;
76
+ export declare function createRequestHandler<Ctx = unknown>(opts?: RequestHandlerOptions<Ctx>): RequestHandler<Ctx>;
77
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/http/handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAoB,KAAK,EAAe,IAAI,EAAiB,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,UAAU,EAEf,KAAK,sBAAsB,EAE5B,MAAM,eAAe,CAAC;AAGvB;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,GAAG,GAAG,OAAO,IAAI;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAWF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI;IACzD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,IAAI,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvG,MAAM,MAAM,YAAY,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,SAAS,MAAM,EACzD,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,EACxB,QAAQ,EAAE,sBAAsB,CAAC,OAAO,CAAC,KACtC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,qBAAqB,CAAC,GAAG,GAAG,OAAO,IAAI;IAEjD,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAEtB,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtB;;;OAGG;IACH,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;AAE/G,wBAAgB,oBAAoB,CAAC,GAAG,GAAG,OAAO,EAAE,IAAI,GAAE,qBAAqB,CAAC,GAAG,CAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CA0I9G"}
@@ -0,0 +1,172 @@
1
+ import { getEntities, getMeta } from '../entity/index.js';
2
+ import { getQuerier } from '../options.js';
3
+ import { entityPath, matchRoute, } from './contract.js';
4
+ import { parseQueryParams } from './query.js';
5
+ export function createRequestHandler(opts = {}) {
6
+ const { include, exclude, pre, preSave, preFilter, post } = opts;
7
+ let entities = include ?? getEntities();
8
+ if (exclude) {
9
+ entities = entities.filter((entity) => !exclude.includes(entity));
10
+ }
11
+ if (!entities.length) {
12
+ throw new TypeError('no entities for the uql middleware');
13
+ }
14
+ // biome-ignore lint/suspicious/noExplicitAny: heterogeneous entity map
15
+ const entityByPath = new Map(entities.map((entity) => [entityPath(entity), entity]));
16
+ return (req) => {
17
+ const entity = entityByPath.get(req.entityPath);
18
+ if (!entity) {
19
+ return undefined;
20
+ }
21
+ const match = matchRoute(req.method, req.subPath);
22
+ if (!match) {
23
+ return undefined;
24
+ }
25
+ return run(entity, match, req);
26
+ };
27
+ async function run(entity, { op, method, id }, req) {
28
+ const meta = getMeta(entity);
29
+ // QUERY (RFC 10008) carries the JSON query in the body instead of the query string
30
+ const rawQuery = method === 'QUERY' ? req.body : req.query;
31
+ const hookCtx = {
32
+ meta,
33
+ op,
34
+ method,
35
+ query: parseQueryParams(rawQuery),
36
+ body: req.body,
37
+ context: req.context,
38
+ };
39
+ await pre?.(hookCtx);
40
+ if (method === 'POST' || method === 'PUT' || method === 'PATCH') {
41
+ await preSave?.(hookCtx);
42
+ }
43
+ else {
44
+ await preFilter?.(hookCtx);
45
+ }
46
+ const resp = await dispatch();
47
+ if (post) {
48
+ await post(hookCtx, resp.body);
49
+ }
50
+ return resp;
51
+ function dispatch() {
52
+ // read post-hooks so both in-place mutation and reassignment of hookCtx.query apply
53
+ const query = hookCtx.query;
54
+ const flags = query;
55
+ const softDelete = flags.softDelete === 'true' || flags.softDelete === true;
56
+ switch (op) {
57
+ case 'findOne':
58
+ return withQuerier(async (querier) => {
59
+ const data = await querier.findOne(entity, query);
60
+ return ok({ data, count: data ? 1 : 0 });
61
+ });
62
+ case 'count':
63
+ return withQuerier(async (querier) => {
64
+ const count = await querier.count(entity, query);
65
+ return ok({ data: count, count });
66
+ });
67
+ case 'findOneById':
68
+ return withQuerier(async (querier) => {
69
+ const data = await querier.findOne(entity, buildIdQuery(meta, id, query));
70
+ return ok({ data, count: data ? 1 : 0 });
71
+ });
72
+ case 'findMany':
73
+ return withQuerier(async (querier) => {
74
+ const findManyPromise = querier.findMany(entity, query);
75
+ const countPromise = flags.count ? querier.count(entity, query) : undefined;
76
+ const [data, count] = await Promise.all([findManyPromise, countPromise]);
77
+ return ok({ data, count });
78
+ });
79
+ case 'insertOne':
80
+ return withTransaction(async (querier) => {
81
+ const data = await querier.insertOne(entity, hookCtx.body);
82
+ return ok({ data, count: 1 });
83
+ });
84
+ case 'insertMany':
85
+ return withTransaction(async (querier) => {
86
+ const data = await querier.insertMany(entity, hookCtx.body);
87
+ return ok({ data, count: data.length });
88
+ });
89
+ case 'saveOne':
90
+ return withTransaction(async (querier) => {
91
+ const data = await querier.saveOne(entity, hookCtx.body);
92
+ return ok({ data, count: 1 });
93
+ });
94
+ case 'saveMany':
95
+ return withTransaction(async (querier) => {
96
+ const data = await querier.saveMany(entity, hookCtx.body);
97
+ return ok({ data, count: data.length });
98
+ });
99
+ case 'updateOneById':
100
+ return withTransaction(async (querier) => {
101
+ const count = await querier.updateMany(entity, buildIdQuery(meta, id, query), hookCtx.body);
102
+ return ok({ data: id, count });
103
+ });
104
+ case 'updateMany':
105
+ return withTransaction(async (querier) => {
106
+ const count = await querier.updateMany(entity, query, hookCtx.body);
107
+ return ok({ data: count, count });
108
+ });
109
+ case 'deleteOneById':
110
+ return withTransaction(async (querier) => {
111
+ const count = await querier.deleteMany(entity, buildIdQuery(meta, id, query), { softDelete });
112
+ return ok({ data: id, count });
113
+ });
114
+ case 'deleteMany':
115
+ return withTransaction(async (querier) => {
116
+ const founds = await querier.findMany(entity, query);
117
+ let ids = [];
118
+ let count = 0;
119
+ if (founds.length && meta.id) {
120
+ const idKey = meta.id;
121
+ ids = founds.map((found) => found[idKey]);
122
+ count = await querier.deleteMany(entity, { $where: ids }, { softDelete });
123
+ }
124
+ return ok({ data: ids, count });
125
+ });
126
+ }
127
+ }
128
+ }
129
+ }
130
+ function ok(body) {
131
+ return { status: 200, body };
132
+ }
133
+ async function withQuerier(fn) {
134
+ const querier = await getQuerier();
135
+ try {
136
+ return await fn(querier);
137
+ }
138
+ finally {
139
+ await querier.release();
140
+ }
141
+ }
142
+ async function withTransaction(fn) {
143
+ const querier = await getQuerier();
144
+ try {
145
+ await querier.beginTransaction();
146
+ const resp = await fn(querier);
147
+ await querier.commitTransaction();
148
+ return resp;
149
+ }
150
+ catch (err) {
151
+ await querier.rollbackTransaction().catch(() => { });
152
+ throw err;
153
+ }
154
+ finally {
155
+ await querier.release();
156
+ }
157
+ }
158
+ function buildIdQuery(meta, id, query) {
159
+ const idKey = meta.id;
160
+ const where = query.$where;
161
+ if (Array.isArray(where)) {
162
+ query.$where = { $and: [{ [idKey]: { $in: where } }, { [idKey]: id }] };
163
+ }
164
+ else if (typeof where === 'object' && where !== null) {
165
+ query.$where = { ...where, [idKey]: id };
166
+ }
167
+ else {
168
+ query.$where = { [idKey]: id };
169
+ }
170
+ return query;
171
+ }
172
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/http/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './contract.js';
2
+ export * from './fetchHandler.js';
3
+ export * from './handler.js';
4
+ export * from './query.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './contract.js';
2
+ export * from './fetchHandler.js';
3
+ export * from './handler.js';
4
+ export * from './query.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Query } from '../type/index.js';
2
+ /**
3
+ * Parse raw query-string entries (with JSON-stringified values) into a UQL query object.
4
+ * Symmetric counterpart of {@link stringifyQuery}.
5
+ */
6
+ export declare function parseQueryParams(params?: Record<string, unknown>): Query<unknown>;
7
+ /**
8
+ * Serialize a UQL query object into a percent-encoded query string where object values
9
+ * are JSON-stringified. Symmetric counterpart of {@link parseQueryParams}.
10
+ */
11
+ export declare function stringifyQuery(query?: Record<string, unknown>): string;
12
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/http/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAwBrF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CActE"}
@@ -0,0 +1,49 @@
1
+ // specific util module (not the barrel) to keep reflect-metadata out of the browser bundle
2
+ import { getKeys } from '../util/object.util.js';
3
+ const JSON_QUERY_KEYS = ['$select', '$populate', '$exclude', '$where', '$sort'];
4
+ /**
5
+ * Parse raw query-string entries (with JSON-stringified values) into a UQL query object.
6
+ * Symmetric counterpart of {@link stringifyQuery}.
7
+ */
8
+ export function parseQueryParams(params = {}) {
9
+ const query = { ...params };
10
+ for (const key of JSON_QUERY_KEYS) {
11
+ const value = query[key];
12
+ if (typeof value === 'string') {
13
+ try {
14
+ query[key] = JSON.parse(value);
15
+ }
16
+ catch {
17
+ throw Object.assign(new SyntaxError(`invalid JSON in '${key}'`), { status: 400 });
18
+ }
19
+ }
20
+ }
21
+ query['$where'] ??= {};
22
+ if (query['$skip']) {
23
+ query['$skip'] = Number(query['$skip']);
24
+ }
25
+ if (query['$limit']) {
26
+ query['$limit'] = Number(query['$limit']);
27
+ }
28
+ return query;
29
+ }
30
+ /**
31
+ * Serialize a UQL query object into a percent-encoded query string where object values
32
+ * are JSON-stringified. Symmetric counterpart of {@link parseQueryParams}.
33
+ */
34
+ export function stringifyQuery(query) {
35
+ if (!query) {
36
+ return '';
37
+ }
38
+ const params = new URLSearchParams();
39
+ for (const key of getKeys(query)) {
40
+ const value = query[key];
41
+ if (value === undefined) {
42
+ continue;
43
+ }
44
+ params.append(key, typeof value === 'object' && value !== null ? JSON.stringify(value) : String(value));
45
+ }
46
+ const qs = params.toString();
47
+ return qs ? `?${qs}` : '';
48
+ }
49
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/http/query.ts"],"names":[],"mappings":"AACA,2FAA2F;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAEzF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAkC,EAAE;IACnE,MAAM,KAAK,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IAErD,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,oBAAoB,GAAG,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEvB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,KAAuB,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAA+B;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from './dialect/index.js';
2
+ export * from './entity/index.js';
3
+ export * from './namingStrategy/index.js';
4
+ export * from './options.js';
5
+ export * from './querier/index.js';
6
+ export * from './type/index.js';
7
+ export * from './util/index.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}