@gaganref/confect-server 0.0.0-stage → 10.3.1-fork.2

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 (367) hide show
  1. package/CHANGELOG.md +2119 -0
  2. package/LICENSE +7 -0
  3. package/README.md +16 -2
  4. package/dist/ActionCtx.d.ts +10 -0
  5. package/dist/ActionCtx.d.ts.map +1 -0
  6. package/dist/ActionCtx.js +18 -0
  7. package/dist/ActionCtx.js.map +1 -0
  8. package/dist/ActionRunner.d.ts +16 -0
  9. package/dist/ActionRunner.d.ts.map +1 -0
  10. package/dist/ActionRunner.js +18 -0
  11. package/dist/ActionRunner.js.map +1 -0
  12. package/dist/AiGatewayDecisionClient.d.ts +20 -0
  13. package/dist/AiGatewayDecisionClient.d.ts.map +1 -0
  14. package/dist/AiGatewayDecisionClient.js +31 -0
  15. package/dist/AiGatewayDecisionClient.js.map +1 -0
  16. package/dist/AiGatewayDecisionModel.d.ts +24 -0
  17. package/dist/AiGatewayDecisionModel.d.ts.map +1 -0
  18. package/dist/AiGatewayDecisionModel.js +27 -0
  19. package/dist/AiGatewayDecisionModel.js.map +1 -0
  20. package/dist/AiGatewayLanguageClient.d.ts +21 -0
  21. package/dist/AiGatewayLanguageClient.d.ts.map +1 -0
  22. package/dist/AiGatewayLanguageClient.js +32 -0
  23. package/dist/AiGatewayLanguageClient.js.map +1 -0
  24. package/dist/AiGatewayLanguageModel.d.ts +95 -0
  25. package/dist/AiGatewayLanguageModel.d.ts.map +1 -0
  26. package/dist/AiGatewayLanguageModel.js +42 -0
  27. package/dist/AiGatewayLanguageModel.js.map +1 -0
  28. package/dist/Auth.d.ts +20 -0
  29. package/dist/Auth.d.ts.map +1 -0
  30. package/dist/Auth.js +31 -0
  31. package/dist/Auth.js.map +1 -0
  32. package/dist/BlobNotFoundError.d.ts +9 -0
  33. package/dist/BlobNotFoundError.d.ts.map +1 -0
  34. package/dist/BlobNotFoundError.js +13 -0
  35. package/dist/BlobNotFoundError.js.map +1 -0
  36. package/dist/Callback.d.ts +31 -0
  37. package/dist/Callback.d.ts.map +1 -0
  38. package/dist/Callback.js +182 -0
  39. package/dist/Callback.js.map +1 -0
  40. package/dist/ComponentCtx.d.ts +71 -0
  41. package/dist/ComponentCtx.d.ts.map +1 -0
  42. package/dist/ComponentCtx.js +0 -0
  43. package/dist/ConvexConfigProvider.d.ts +21 -0
  44. package/dist/ConvexConfigProvider.d.ts.map +1 -0
  45. package/dist/ConvexConfigProvider.js +36 -0
  46. package/dist/ConvexConfigProvider.js.map +1 -0
  47. package/dist/ConvexFunctionDefinitions.d.ts +25 -0
  48. package/dist/ConvexFunctionDefinitions.d.ts.map +1 -0
  49. package/dist/ConvexFunctionDefinitions.js +25 -0
  50. package/dist/ConvexFunctionDefinitions.js.map +1 -0
  51. package/dist/ConvexLogger.d.ts +17 -0
  52. package/dist/ConvexLogger.d.ts.map +1 -0
  53. package/dist/ConvexLogger.js +33 -0
  54. package/dist/ConvexLogger.js.map +1 -0
  55. package/dist/CronJob.d.ts +14 -0
  56. package/dist/CronJob.d.ts.map +1 -0
  57. package/dist/CronJob.js +22 -0
  58. package/dist/CronJob.js.map +1 -0
  59. package/dist/CronJobs.d.ts +22 -0
  60. package/dist/CronJobs.d.ts.map +1 -0
  61. package/dist/CronJobs.js +83 -0
  62. package/dist/CronJobs.js.map +1 -0
  63. package/dist/DataModel.d.ts +28 -0
  64. package/dist/DataModel.d.ts.map +1 -0
  65. package/dist/DataModel.js +7 -0
  66. package/dist/DataModel.js.map +1 -0
  67. package/dist/DatabaseReader.d.ts +26 -0
  68. package/dist/DatabaseReader.d.ts.map +1 -0
  69. package/dist/DatabaseReader.js +33 -0
  70. package/dist/DatabaseReader.js.map +1 -0
  71. package/dist/DatabaseSchema.d.ts +67 -0
  72. package/dist/DatabaseSchema.d.ts.map +1 -0
  73. package/dist/DatabaseSchema.js +61 -0
  74. package/dist/DatabaseSchema.js.map +1 -0
  75. package/dist/DatabaseWriter.d.ts +44 -0
  76. package/dist/DatabaseWriter.d.ts.map +1 -0
  77. package/dist/DatabaseWriter.js +47 -0
  78. package/dist/DatabaseWriter.js.map +1 -0
  79. package/dist/Document.d.ts +37 -0
  80. package/dist/Document.d.ts.map +1 -0
  81. package/dist/Document.js +54 -0
  82. package/dist/Document.js.map +1 -0
  83. package/dist/ExecutionMetadata.d.ts +13 -0
  84. package/dist/ExecutionMetadata.d.ts.map +1 -0
  85. package/dist/ExecutionMetadata.js +19 -0
  86. package/dist/ExecutionMetadata.js.map +1 -0
  87. package/dist/FunctionImpl.d.ts +39 -0
  88. package/dist/FunctionImpl.d.ts.map +1 -0
  89. package/dist/FunctionImpl.js +46 -0
  90. package/dist/FunctionImpl.js.map +1 -0
  91. package/dist/FunctionRegistryItem.d.ts +36 -0
  92. package/dist/FunctionRegistryItem.d.ts.map +1 -0
  93. package/dist/FunctionRegistryItem.js +34 -0
  94. package/dist/FunctionRegistryItem.js.map +1 -0
  95. package/dist/GroupImpl.d.ts +77 -0
  96. package/dist/GroupImpl.d.ts.map +1 -0
  97. package/dist/GroupImpl.js +81 -0
  98. package/dist/GroupImpl.js.map +1 -0
  99. package/dist/GroupRegistry.d.ts +8 -0
  100. package/dist/GroupRegistry.d.ts.map +1 -0
  101. package/dist/GroupRegistry.js +26 -0
  102. package/dist/GroupRegistry.js.map +1 -0
  103. package/dist/Handler.d.ts +47 -0
  104. package/dist/Handler.d.ts.map +1 -0
  105. package/dist/Handler.js +7 -0
  106. package/dist/Handler.js.map +1 -0
  107. package/dist/HttpRouter.d.ts +80 -0
  108. package/dist/HttpRouter.d.ts.map +1 -0
  109. package/dist/HttpRouter.js +195 -0
  110. package/dist/HttpRouter.js.map +1 -0
  111. package/dist/MiddlewareImpl.d.ts +79 -0
  112. package/dist/MiddlewareImpl.d.ts.map +1 -0
  113. package/dist/MiddlewareImpl.js +58 -0
  114. package/dist/MiddlewareImpl.js.map +1 -0
  115. package/dist/MiddlewareRegistryItem.d.ts +12 -0
  116. package/dist/MiddlewareRegistryItem.d.ts.map +1 -0
  117. package/dist/MiddlewareRegistryItem.js +15 -0
  118. package/dist/MiddlewareRegistryItem.js.map +1 -0
  119. package/dist/MutationCtx.d.ts +10 -0
  120. package/dist/MutationCtx.d.ts.map +1 -0
  121. package/dist/MutationCtx.js +18 -0
  122. package/dist/MutationCtx.js.map +1 -0
  123. package/dist/MutationRunner.d.ts +27 -0
  124. package/dist/MutationRunner.d.ts.map +1 -0
  125. package/dist/MutationRunner.js +28 -0
  126. package/dist/MutationRunner.js.map +1 -0
  127. package/dist/MutationTransactionContext.d.ts +17 -0
  128. package/dist/MutationTransactionContext.d.ts.map +1 -0
  129. package/dist/MutationTransactionContext.js +20 -0
  130. package/dist/MutationTransactionContext.js.map +1 -0
  131. package/dist/OrderedQuery.d.ts +32 -0
  132. package/dist/OrderedQuery.d.ts.map +1 -0
  133. package/dist/OrderedQuery.js +36 -0
  134. package/dist/OrderedQuery.js.map +1 -0
  135. package/dist/QueryCtx.d.ts +10 -0
  136. package/dist/QueryCtx.d.ts.map +1 -0
  137. package/dist/QueryCtx.js +18 -0
  138. package/dist/QueryCtx.js.map +1 -0
  139. package/dist/QueryInitializer.d.ts +75 -0
  140. package/dist/QueryInitializer.d.ts.map +1 -0
  141. package/dist/QueryInitializer.js +105 -0
  142. package/dist/QueryInitializer.js.map +1 -0
  143. package/dist/QueryRunner.d.ts +46 -0
  144. package/dist/QueryRunner.d.ts.map +1 -0
  145. package/dist/QueryRunner.js +30 -0
  146. package/dist/QueryRunner.js.map +1 -0
  147. package/dist/QueryStream.d.ts +678 -0
  148. package/dist/QueryStream.d.ts.map +1 -0
  149. package/dist/QueryStream.js +943 -0
  150. package/dist/QueryStream.js.map +1 -0
  151. package/dist/QueryStreamCursor.d.ts +39 -0
  152. package/dist/QueryStreamCursor.d.ts.map +1 -0
  153. package/dist/QueryStreamCursor.js +52 -0
  154. package/dist/QueryStreamCursor.js.map +1 -0
  155. package/dist/QueryStreamIndexPrefix.d.ts +48 -0
  156. package/dist/QueryStreamIndexPrefix.d.ts.map +1 -0
  157. package/dist/QueryStreamIndexPrefix.js +38 -0
  158. package/dist/QueryStreamIndexPrefix.js.map +1 -0
  159. package/dist/QueryStreamIndexRange.d.ts +193 -0
  160. package/dist/QueryStreamIndexRange.d.ts.map +1 -0
  161. package/dist/QueryStreamIndexRange.js +241 -0
  162. package/dist/QueryStreamIndexRange.js.map +1 -0
  163. package/dist/QueryStreamKey.d.ts +64 -0
  164. package/dist/QueryStreamKey.d.ts.map +1 -0
  165. package/dist/QueryStreamKey.js +69 -0
  166. package/dist/QueryStreamKey.js.map +1 -0
  167. package/dist/QueryStreamKeyBounds.d.ts +136 -0
  168. package/dist/QueryStreamKeyBounds.d.ts.map +1 -0
  169. package/dist/QueryStreamKeyBounds.js +208 -0
  170. package/dist/QueryStreamKeyBounds.js.map +1 -0
  171. package/dist/QueryStreamKeyLabels.d.ts +27 -0
  172. package/dist/QueryStreamKeyLabels.d.ts.map +1 -0
  173. package/dist/QueryStreamKeyLabels.js +22 -0
  174. package/dist/QueryStreamKeyLabels.js.map +1 -0
  175. package/dist/QueryStreamKeyLayout.d.ts +179 -0
  176. package/dist/QueryStreamKeyLayout.d.ts.map +1 -0
  177. package/dist/QueryStreamKeyLayout.js +167 -0
  178. package/dist/QueryStreamKeyLayout.js.map +1 -0
  179. package/dist/QueryStreamKeyValues.d.ts +40 -0
  180. package/dist/QueryStreamKeyValues.d.ts.map +1 -0
  181. package/dist/QueryStreamKeyValues.js +57 -0
  182. package/dist/QueryStreamKeyValues.js.map +1 -0
  183. package/dist/QueryStreamOrderDirection.d.ts +24 -0
  184. package/dist/QueryStreamOrderDirection.d.ts.map +1 -0
  185. package/dist/QueryStreamOrderDirection.js +11 -0
  186. package/dist/QueryStreamOrderDirection.js.map +1 -0
  187. package/dist/QueryStreamPagination.d.ts +264 -0
  188. package/dist/QueryStreamPagination.d.ts.map +1 -0
  189. package/dist/QueryStreamPagination.js +172 -0
  190. package/dist/QueryStreamPagination.js.map +1 -0
  191. package/dist/QueryStreamReadBudget.d.ts +63 -0
  192. package/dist/QueryStreamReadBudget.d.ts.map +1 -0
  193. package/dist/QueryStreamReadBudget.js +81 -0
  194. package/dist/QueryStreamReadBudget.js.map +1 -0
  195. package/dist/QueryTransactionContext.d.ts +16 -0
  196. package/dist/QueryTransactionContext.d.ts.map +1 -0
  197. package/dist/QueryTransactionContext.js +17 -0
  198. package/dist/QueryTransactionContext.js.map +1 -0
  199. package/dist/RegisteredConvexFunction.d.ts +359 -0
  200. package/dist/RegisteredConvexFunction.d.ts.map +1 -0
  201. package/dist/RegisteredConvexFunction.js +154 -0
  202. package/dist/RegisteredConvexFunction.js.map +1 -0
  203. package/dist/RegisteredFunction.d.ts +143 -0
  204. package/dist/RegisteredFunction.d.ts.map +1 -0
  205. package/dist/RegisteredFunction.js +125 -0
  206. package/dist/RegisteredFunction.js.map +1 -0
  207. package/dist/RegisteredFunctions.d.ts +57 -0
  208. package/dist/RegisteredFunctions.d.ts.map +1 -0
  209. package/dist/RegisteredFunctions.js +32 -0
  210. package/dist/RegisteredFunctions.js.map +1 -0
  211. package/dist/RegisteredNodeFunction.d.ts +11 -0
  212. package/dist/RegisteredNodeFunction.d.ts.map +1 -0
  213. package/dist/RegisteredNodeFunction.js +45 -0
  214. package/dist/RegisteredNodeFunction.js.map +1 -0
  215. package/dist/Registry.d.ts +12 -0
  216. package/dist/Registry.d.ts.map +1 -0
  217. package/dist/Registry.js +17 -0
  218. package/dist/Registry.js.map +1 -0
  219. package/dist/RegistryItems.d.ts +21 -0
  220. package/dist/RegistryItems.d.ts.map +1 -0
  221. package/dist/RegistryItems.js +27 -0
  222. package/dist/RegistryItems.js.map +1 -0
  223. package/dist/RequestMetadata.d.ts +12 -0
  224. package/dist/RequestMetadata.d.ts.map +1 -0
  225. package/dist/RequestMetadata.js +16 -0
  226. package/dist/RequestMetadata.js.map +1 -0
  227. package/dist/ResolvedMiddleware.d.ts +24 -0
  228. package/dist/ResolvedMiddleware.d.ts.map +1 -0
  229. package/dist/ResolvedMiddleware.js +34 -0
  230. package/dist/ResolvedMiddleware.js.map +1 -0
  231. package/dist/Scheduler.d.ts +31 -0
  232. package/dist/Scheduler.d.ts.map +1 -0
  233. package/dist/Scheduler.js +35 -0
  234. package/dist/Scheduler.js.map +1 -0
  235. package/dist/Storage.d.ts +22 -0
  236. package/dist/Storage.d.ts.map +1 -0
  237. package/dist/Storage.js +27 -0
  238. package/dist/Storage.js.map +1 -0
  239. package/dist/StorageActionWriter.d.ts +35 -0
  240. package/dist/StorageActionWriter.d.ts.map +1 -0
  241. package/dist/StorageActionWriter.js +24 -0
  242. package/dist/StorageActionWriter.js.map +1 -0
  243. package/dist/StorageReader.d.ts +26 -0
  244. package/dist/StorageReader.d.ts.map +1 -0
  245. package/dist/StorageReader.js +22 -0
  246. package/dist/StorageReader.js.map +1 -0
  247. package/dist/StorageWriter.d.ts +29 -0
  248. package/dist/StorageWriter.d.ts.map +1 -0
  249. package/dist/StorageWriter.js +24 -0
  250. package/dist/StorageWriter.js.map +1 -0
  251. package/dist/Table.d.ts +274 -0
  252. package/dist/Table.d.ts.map +1 -0
  253. package/dist/Table.js +70 -0
  254. package/dist/Table.js.map +1 -0
  255. package/dist/TableInfo.d.ts +44 -0
  256. package/dist/TableInfo.d.ts.map +1 -0
  257. package/dist/TableInfo.js +7 -0
  258. package/dist/TableInfo.js.map +1 -0
  259. package/dist/TransactionMetadata.d.ts +12 -0
  260. package/dist/TransactionMetadata.d.ts.map +1 -0
  261. package/dist/TransactionMetadata.js +16 -0
  262. package/dist/TransactionMetadata.js.map +1 -0
  263. package/dist/VectorSearch.d.ts +23 -0
  264. package/dist/VectorSearch.d.ts.map +1 -0
  265. package/dist/VectorSearch.js +17 -0
  266. package/dist/VectorSearch.js.map +1 -0
  267. package/dist/_virtual/_rolldown/runtime.js +13 -0
  268. package/dist/index.d.ts +88 -0
  269. package/dist/index.d.ts.map +1 -0
  270. package/dist/index.js +61 -0
  271. package/dist/internal/AiGatewayDecisionClient.d.ts +7 -0
  272. package/dist/internal/AiGatewayDecisionClient.d.ts.map +1 -0
  273. package/dist/internal/AiGatewayDecisionClient.js +19 -0
  274. package/dist/internal/AiGatewayDecisionClient.js.map +1 -0
  275. package/dist/internal/AiGatewayLanguageClient.d.ts +7 -0
  276. package/dist/internal/AiGatewayLanguageClient.d.ts.map +1 -0
  277. package/dist/internal/AiGatewayLanguageClient.js +19 -0
  278. package/dist/internal/AiGatewayLanguageClient.js.map +1 -0
  279. package/dist/internal/AiGatewayServiceToken.d.ts +46 -0
  280. package/dist/internal/AiGatewayServiceToken.d.ts.map +1 -0
  281. package/dist/internal/AiGatewayServiceToken.js +62 -0
  282. package/dist/internal/AiGatewayServiceToken.js.map +1 -0
  283. package/dist/internal/constants.d.ts +2 -0
  284. package/dist/internal/constants.d.ts.map +1 -0
  285. package/dist/internal/constants.js +6 -0
  286. package/dist/internal/constants.js.map +1 -0
  287. package/dist/internal/utils.d.ts +13 -0
  288. package/dist/internal/utils.d.ts.map +1 -0
  289. package/dist/internal/utils.js +50 -0
  290. package/dist/internal/utils.js.map +1 -0
  291. package/dist/node.d.ts +2 -0
  292. package/dist/node.d.ts.map +1 -0
  293. package/dist/node.js +1 -0
  294. package/package.json +68 -3
  295. package/src/ActionCtx.ts +45 -0
  296. package/src/ActionRunner.ts +36 -0
  297. package/src/AiGatewayDecisionClient.ts +40 -0
  298. package/src/AiGatewayDecisionModel.ts +46 -0
  299. package/src/AiGatewayLanguageClient.ts +41 -0
  300. package/src/AiGatewayLanguageModel.ts +61 -0
  301. package/src/Auth.ts +51 -0
  302. package/src/BlobNotFoundError.ts +12 -0
  303. package/src/Callback.ts +313 -0
  304. package/src/ComponentCtx.ts +192 -0
  305. package/src/ConvexConfigProvider.ts +39 -0
  306. package/src/ConvexFunctionDefinitions.ts +91 -0
  307. package/src/ConvexLogger.ts +43 -0
  308. package/src/CronJob.ts +42 -0
  309. package/src/CronJobs.ts +165 -0
  310. package/src/DataModel.ts +81 -0
  311. package/src/DatabaseReader.ts +118 -0
  312. package/src/DatabaseSchema.ts +139 -0
  313. package/src/DatabaseWriter.ts +232 -0
  314. package/src/Document.ts +146 -0
  315. package/src/ExecutionMetadata.ts +26 -0
  316. package/src/FunctionImpl.ts +96 -0
  317. package/src/FunctionRegistryItem.ts +85 -0
  318. package/src/GroupImpl.ts +167 -0
  319. package/src/GroupRegistry.ts +41 -0
  320. package/src/Handler.ts +191 -0
  321. package/src/HttpRouter.ts +388 -0
  322. package/src/MiddlewareImpl.ts +247 -0
  323. package/src/MiddlewareRegistryItem.ts +21 -0
  324. package/src/MutationCtx.ts +45 -0
  325. package/src/MutationRunner.ts +66 -0
  326. package/src/MutationTransactionContext.ts +48 -0
  327. package/src/OrderedQuery.ts +136 -0
  328. package/src/QueryCtx.ts +45 -0
  329. package/src/QueryInitializer.ts +537 -0
  330. package/src/QueryRunner.ts +91 -0
  331. package/src/QueryStream.ts +2476 -0
  332. package/src/QueryStreamCursor.ts +99 -0
  333. package/src/QueryStreamIndexPrefix.ts +79 -0
  334. package/src/QueryStreamIndexRange.ts +489 -0
  335. package/src/QueryStreamKey.ts +118 -0
  336. package/src/QueryStreamKeyBounds.ts +395 -0
  337. package/src/QueryStreamKeyLabels.ts +56 -0
  338. package/src/QueryStreamKeyLayout.ts +382 -0
  339. package/src/QueryStreamKeyValues.ts +112 -0
  340. package/src/QueryStreamOrderDirection.ts +29 -0
  341. package/src/QueryStreamPagination.ts +357 -0
  342. package/src/QueryStreamReadBudget.ts +167 -0
  343. package/src/QueryTransactionContext.ts +37 -0
  344. package/src/RegisteredConvexFunction.ts +415 -0
  345. package/src/RegisteredFunction.ts +391 -0
  346. package/src/RegisteredFunctions.ts +88 -0
  347. package/src/RegisteredNodeFunction.ts +120 -0
  348. package/src/Registry.ts +17 -0
  349. package/src/RegistryItems.ts +40 -0
  350. package/src/RequestMetadata.ts +20 -0
  351. package/src/ResolvedMiddleware.ts +70 -0
  352. package/src/Scheduler.ts +85 -0
  353. package/src/Storage.ts +37 -0
  354. package/src/StorageActionWriter.ts +59 -0
  355. package/src/StorageReader.ts +59 -0
  356. package/src/StorageWriter.ts +58 -0
  357. package/src/Table.ts +156 -0
  358. package/src/TableInfo.ts +106 -0
  359. package/src/TransactionMetadata.ts +20 -0
  360. package/src/VectorSearch.ts +75 -0
  361. package/src/index.ts +87 -0
  362. package/src/internal/AiGatewayDecisionClient.ts +16 -0
  363. package/src/internal/AiGatewayLanguageClient.ts +16 -0
  364. package/src/internal/AiGatewayServiceToken.ts +129 -0
  365. package/src/internal/constants.ts +1 -0
  366. package/src/internal/utils.ts +89 -0
  367. package/src/node.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MutationRunner.d.ts","sourceRoot":"","sources":["../src/MutationRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,0BAA0B,MAAM,8BAA8B,CAAC;AAE3E,MAAM,MAAM,OAAO,GAAG,0BAA0B,CAAC,eAAe,CAAC;AAmDjE,eAAO,MAAM,cAAc;;SA5CJ,QAAQ,SAAS,GAAG,CAAC,WAAW,YACzC,QAAQ,WACT,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,GAC5D,MAAM,CAAC,MAAM,CACd,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EACrB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CACzC;SACoB,QAAQ,SAAS,GAAG,CAAC,WAAW,YACzC,QAAQ,QACZ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WACf,OAAO,GAAG,SAAS,GAC3B,MAAM,CAAC,MAAM,CACd,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EACrB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,EACxC,0BAA0B,CAAC,0BAA0B,CACtD;;;;;;;EA+BF,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,UAAU,CAAC;AAE9D,eAAO,MAAM,KAAK,gBAAiB,gBAAgB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;;SAjDhD,QAAQ,SAAS,GAAG,CAAC,WAAW,YACzC,QAAQ,WACT,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,GAC5D,MAAM,CAAC,MAAM,CACd,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EACrB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CACzC;SACoB,QAAQ,SAAS,GAAG,CAAC,WAAW,YACzC,QAAQ,QACZ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WACf,OAAO,GAAG,SAAS,GAC3B,MAAM,CAAC,MAAM,CACd,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EACrB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,EACxC,0BAA0B,CAAC,0BAA0B,CACtD;;gBAmC+C,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { MutationTransactionContext } from "./MutationTransactionContext.js";
3
+ import * as Context from "effect/Context";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Ref from "@confect/core/Ref";
6
+ import * as Effect from "effect/Effect";
7
+ //#region src/MutationRunner.ts
8
+ var MutationRunner_exports = /* @__PURE__ */ __exportAll({
9
+ MutationRunner: () => MutationRunner,
10
+ layer: () => layer
11
+ });
12
+ const run = Effect.fn("MutationRunner.runMutation")((effect) => effect);
13
+ const make = (nativeRunMutation) => {
14
+ function runMutation(mutation, args, options) {
15
+ return run(Effect.gen(function* () {
16
+ const actualArgs = args ?? {};
17
+ if (options !== void 0) return yield* (yield* MutationTransactionContext).runMutation(mutation, actualArgs, options);
18
+ return yield* Ref.runWithCodec(mutation, actualArgs, (ref, encodedArgs) => nativeRunMutation(ref, encodedArgs));
19
+ }));
20
+ }
21
+ return { runMutation };
22
+ };
23
+ const MutationRunner = Context.Service("@confect/server/MutationRunner");
24
+ const layer = (runMutation) => Layer.succeed(MutationRunner, make(runMutation));
25
+ //#endregion
26
+ export { MutationRunner, MutationRunner_exports, layer };
27
+
28
+ //# sourceMappingURL=MutationRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MutationRunner.js","names":["MutationTransactionContext.MutationTransactionContext"],"sources":["../src/MutationRunner.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport type { GenericActionCtx } from \"convex/server\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport type * as Schema from \"effect/Schema\";\nimport * as MutationTransactionContext from \"./MutationTransactionContext\";\n\nexport type Options = MutationTransactionContext.MutationOptions;\n\nconst run = Effect.fn(\"MutationRunner.runMutation\")(\n <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => effect,\n);\n\nconst make = (nativeRunMutation: GenericActionCtx<any>[\"runMutation\"]) => {\n function runMutation<Mutation extends Ref.AnyMutation>(\n mutation: Mutation,\n ...args: [...Ref.OptionalArgs<Mutation>, options?: undefined]\n ): Effect.Effect<\n Ref.Returns<Mutation>,\n Ref.Error<Mutation> | Schema.SchemaError\n >;\n function runMutation<Mutation extends Ref.AnyMutation>(\n mutation: Mutation,\n args: Ref.Args<Mutation>,\n options: Options | undefined,\n ): Effect.Effect<\n Ref.Returns<Mutation>,\n Ref.Error<Mutation> | Schema.SchemaError,\n MutationTransactionContext.MutationTransactionContext\n >;\n function runMutation<Mutation extends Ref.AnyMutation>(\n mutation: Mutation,\n args?: Ref.Args<Mutation>,\n options?: Options,\n ): Effect.Effect<\n Ref.Returns<Mutation>,\n Ref.Error<Mutation> | Schema.SchemaError,\n MutationTransactionContext.MutationTransactionContext\n > {\n return run(\n Effect.gen(function* () {\n const actualArgs = (args ?? {}) as Ref.Args<Mutation>;\n if (options !== undefined) {\n const controls =\n yield* MutationTransactionContext.MutationTransactionContext;\n return yield* controls.runMutation(mutation, actualArgs, options);\n }\n return yield* Ref.runWithCodec(\n mutation,\n actualArgs,\n (ref, encodedArgs) => nativeRunMutation(ref, encodedArgs),\n );\n }),\n );\n }\n return { runMutation };\n};\n\nexport const MutationRunner = Context.Service<ReturnType<typeof make>>(\n \"@confect/server/MutationRunner\",\n);\nexport type MutationRunner = typeof MutationRunner.Identifier;\n\nexport const layer = (runMutation: GenericActionCtx<any>[\"runMutation\"]) =>\n Layer.succeed(MutationRunner, make(runMutation));\n"],"mappings":";;;;;;;;;;;AAUA,MAAM,MAAM,OAAO,GAAG,4BAA4B,CAAC,EACvC,WAA2D,MACvE;AAEA,MAAM,QAAQ,sBAA4D;CAiBxE,SAAS,YACP,UACA,MACA,SAKA;EACA,OAAO,IACL,OAAO,IAAI,aAAa;GACtB,MAAM,aAAc,QAAQ,CAAC;GAC7B,IAAI,YAAY,KAAA,GAGd,OAAO,QAAO,OADLA,2BAAAA,CACc,YAAY,UAAU,YAAY,OAAO;GAElE,OAAO,OAAO,IAAI,aAChB,UACA,aACC,KAAK,gBAAgB,kBAAkB,KAAK,WAAW,CAC1D;EACF,CAAC,CACH;CACF;CACA,OAAO,EAAE,YAAY;AACvB;AAEA,MAAa,iBAAiB,QAAQ,QACpC,gCACF;AAGA,MAAa,SAAS,gBACpB,MAAM,QAAQ,gBAAgB,KAAK,WAAW,CAAC"}
@@ -0,0 +1,17 @@
1
+ import * as Ref from "@confect/core/Ref";
2
+ import type { AdvancedRunQueryOptions, GenericDataModel, GenericMutationCtx } from "convex/server";
3
+ import * as Context from "effect/Context";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import type { Options as MutationOptions } from "./QueryTransactionContext";
7
+ export type { TransactionLimits } from "convex/server";
8
+ export type { Options as MutationOptions } from "./QueryTransactionContext";
9
+ export type QueryOptions = AdvancedRunQueryOptions;
10
+ declare const MutationTransactionContext_base: Context.ServiceClass<MutationTransactionContext, "@confect/server/MutationTransactionContext", {
11
+ runQuery: <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: AdvancedRunQueryOptions) => Effect.Effect<Ref.Returns<Query>, import("effect/Schema").SchemaError | Ref.Error<Query>, never>;
12
+ runMutation: <Mutation extends Ref.AnyMutation>(mutation: Mutation, args: Ref.Args<Mutation>, options: MutationOptions) => Effect.Effect<Ref.Returns<Mutation>, import("effect/Schema").SchemaError | Ref.Error<Mutation>, never>;
13
+ }>;
14
+ export declare class MutationTransactionContext extends MutationTransactionContext_base {
15
+ }
16
+ export declare const layer: (ctx: Pick<GenericMutationCtx<GenericDataModel>, "runQuery" | "runMutation">) => Layer.Layer<MutationTransactionContext, never, never>;
17
+ //# sourceMappingURL=MutationTransactionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MutationTransactionContext.d.ts","sourceRoot":"","sources":["../src/MutationTransactionContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AACzC,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5E,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,uBAAuB,CAAC;;eAM9C,KAAK,SAAS,GAAG,CAAC,QAAQ;kBAU1B,QAAQ,SAAS,GAAG,CAAC,WAAW;;AAWrC,qBAAa,0BAA2B,SAAQ,+BAGC;CAAG;AAEpD,eAAO,MAAM,KAAK,QACX,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC,0DACpB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import * as Context from "effect/Context";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Ref from "@confect/core/Ref";
5
+ import * as Effect from "effect/Effect";
6
+ //#region src/MutationTransactionContext.ts
7
+ var MutationTransactionContext_exports = /* @__PURE__ */ __exportAll({
8
+ MutationTransactionContext: () => MutationTransactionContext,
9
+ layer: () => layer
10
+ });
11
+ const make = (ctx) => ({
12
+ runQuery: Effect.fn("MutationTransactionContext.runQuery")((query, args, options) => Ref.runWithCodec(query, args, (ref, encodedArgs) => ctx.runQuery(ref, encodedArgs, options))),
13
+ runMutation: Effect.fn("MutationTransactionContext.runMutation")((mutation, args, options) => Ref.runWithCodec(mutation, args, (ref, encodedArgs) => ctx.runMutation(ref, encodedArgs, options)))
14
+ });
15
+ var MutationTransactionContext = class extends Context.Service()("@confect/server/MutationTransactionContext") {};
16
+ const layer = (ctx) => Layer.succeed(MutationTransactionContext, make(ctx));
17
+ //#endregion
18
+ export { MutationTransactionContext, MutationTransactionContext_exports, layer };
19
+
20
+ //# sourceMappingURL=MutationTransactionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MutationTransactionContext.js","names":[],"sources":["../src/MutationTransactionContext.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport type {\n AdvancedRunQueryOptions,\n GenericDataModel,\n GenericMutationCtx,\n} from \"convex/server\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport type { Options as MutationOptions } from \"./QueryTransactionContext\";\n\nexport type { TransactionLimits } from \"convex/server\";\nexport type { Options as MutationOptions } from \"./QueryTransactionContext\";\nexport type QueryOptions = AdvancedRunQueryOptions;\n\nconst make = (\n ctx: Pick<GenericMutationCtx<GenericDataModel>, \"runQuery\" | \"runMutation\">,\n) => ({\n runQuery: Effect.fn(\"MutationTransactionContext.runQuery\")(\n <Query extends Ref.AnyQuery>(\n query: Query,\n args: Ref.Args<Query>,\n options: QueryOptions,\n ) =>\n Ref.runWithCodec(query, args, (ref, encodedArgs) =>\n ctx.runQuery(ref, encodedArgs, options),\n ),\n ),\n runMutation: Effect.fn(\"MutationTransactionContext.runMutation\")(\n <Mutation extends Ref.AnyMutation>(\n mutation: Mutation,\n args: Ref.Args<Mutation>,\n options: MutationOptions,\n ) =>\n Ref.runWithCodec(mutation, args, (ref, encodedArgs) =>\n ctx.runMutation(ref, encodedArgs, options),\n ),\n ),\n});\n\nexport class MutationTransactionContext extends Context.Service<\n MutationTransactionContext,\n ReturnType<typeof make>\n>()(\"@confect/server/MutationTransactionContext\") {}\n\nexport const layer = (\n ctx: Pick<GenericMutationCtx<GenericDataModel>, \"runQuery\" | \"runMutation\">,\n) => Layer.succeed(MutationTransactionContext, make(ctx));\n"],"mappings":";;;;;;;;;;AAeA,MAAM,QACJ,SACI;CACJ,UAAU,OAAO,GAAG,qCAAqC,CAAC,EAEtD,OACA,MACA,YAEA,IAAI,aAAa,OAAO,OAAO,KAAK,gBAClC,IAAI,SAAS,KAAK,aAAa,OAAO,CACxC,CACJ;CACA,aAAa,OAAO,GAAG,wCAAwC,CAAC,EAE5D,UACA,MACA,YAEA,IAAI,aAAa,UAAU,OAAO,KAAK,gBACrC,IAAI,YAAY,KAAK,aAAa,OAAO,CAC3C,CACJ;AACF;AAEA,IAAa,6BAAb,cAAgD,QAAQ,QAGtD,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC;AAEnD,MAAa,SACX,QACG,MAAM,QAAQ,4BAA4B,KAAK,GAAG,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type * as IdScope from "@confect/core/IdScope";
2
+ import type { ExpressionOrValue, FilterBuilder, OrderedQuery as ConvexOrderedQuery, PaginationOptions, PaginationResult } from "convex/server";
3
+ import type { Option } from "effect";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Stream from "effect/Stream";
6
+ import type * as DatabaseSchema from "./DatabaseSchema";
7
+ import * as Document from "./Document";
8
+ import type * as TableInfo from "./TableInfo";
9
+ import type * as Table from "./Table";
10
+ type NativePaginate<TableInfo_ extends TableInfo.AnyWithProps, Doc> = (options: PaginationOptions, filter?: (q: FilterBuilder<TableInfo.ConvexTableInfo<TableInfo_>>) => ExpressionOrValue<boolean>) => Effect.Effect<PaginationResult<Doc>, Document.DocumentDecodeError>;
11
+ export type OrderedQuery<TableInfo_ extends TableInfo.AnyWithProps, Doc = TableInfo_["document"], TargetKind extends DatabaseSchema.Target["kind"] = "app"> = {
12
+ readonly first: () => Effect.Effect<Option.Option<Doc>, Document.DocumentDecodeError>;
13
+ readonly take: (n: number) => Effect.Effect<ReadonlyArray<Doc>, Document.DocumentDecodeError>;
14
+ readonly collect: () => Effect.Effect<ReadonlyArray<Doc>, Document.DocumentDecodeError>;
15
+ readonly stream: () => Stream.Stream<Doc, Document.DocumentDecodeError>;
16
+ /**
17
+ * Native pagination is application-only. Use `QueryStream.paginate` for
18
+ * component index queries.
19
+ */
20
+ readonly paginate: {
21
+ readonly app: NativePaginate<TableInfo_, Doc>;
22
+ readonly component: {
23
+ readonly "Native pagination is unavailable in components. Use QueryStream.paginate for index queries.": never;
24
+ };
25
+ }[TargetKind];
26
+ };
27
+ export declare function make<Table_ extends Table.AnyWithProps>(query: ConvexOrderedQuery<TableInfo.ConvexTableInfo<TableInfo.TableInfo<Table_>>>, table: Table_ & {
28
+ readonly scope: IdScope.App;
29
+ }): OrderedQuery<TableInfo.TableInfo<Table_>>;
30
+ export declare function make<Table_ extends Table.AnyWithProps>(query: ConvexOrderedQuery<TableInfo.ConvexTableInfo<TableInfo.TableInfo<Table_>>>, table: Table_): OrderedQuery<TableInfo.TableInfo<Table_>, TableInfo.TableInfo<Table_>["document"], Table.Scope<Table_> extends IdScope.App ? "app" : "component">;
31
+ export {};
32
+ //# sourceMappingURL=OrderedQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderedQuery.d.ts","sourceRoot":"","sources":["../src/OrderedQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { decode } from "./Document.js";
3
+ import * as Effect from "effect/Effect";
4
+ import { identity, pipe } from "effect/Function";
5
+ import * as Stream from "effect/Stream";
6
+ //#region src/OrderedQuery.ts
7
+ var OrderedQuery_exports = /* @__PURE__ */ __exportAll({ make: () => make });
8
+ function make(query, table) {
9
+ const streamEncoded = Stream.fromAsyncIterable(query, identity).pipe(Stream.orDie);
10
+ const stream = () => pipe(streamEncoded, Stream.mapEffect(decode(table)));
11
+ const first = () => pipe(stream(), Stream.take(1), Stream.runHead);
12
+ const take = (n) => pipe(stream(), Stream.take(n), Stream.runCollect);
13
+ const collect = () => pipe(stream(), Stream.runCollect);
14
+ return {
15
+ first,
16
+ take,
17
+ collect,
18
+ paginate: Effect.fn("OrderedQuery.paginate")(function* (options, filter) {
19
+ const filteredQuery = filter !== void 0 ? query.filter(filter) : query;
20
+ const paginationResult = yield* Effect.promise(() => filteredQuery.paginate(options));
21
+ return {
22
+ page: yield* Effect.forEach(paginationResult.page, decode(table)),
23
+ isDone: paginationResult.isDone,
24
+ continueCursor: paginationResult.continueCursor,
25
+ /* v8 ignore start */
26
+ ...paginationResult.splitCursor ? { splitCursor: paginationResult.splitCursor } : {},
27
+ ...paginationResult.pageStatus ? { pageStatus: paginationResult.pageStatus } : {}
28
+ };
29
+ }),
30
+ stream
31
+ };
32
+ }
33
+ //#endregion
34
+ export { OrderedQuery_exports, make };
35
+
36
+ //# sourceMappingURL=OrderedQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderedQuery.js","names":["Document.decode"],"sources":["../src/OrderedQuery.ts"],"sourcesContent":["import type * as IdScope from \"@confect/core/IdScope\";\nimport type {\n ExpressionOrValue,\n FilterBuilder,\n OrderedQuery as ConvexOrderedQuery,\n PaginationOptions,\n PaginationResult,\n} from \"convex/server\";\nimport { identity, pipe } from \"effect/Function\";\nimport type { Option } from \"effect\";\nimport * as Effect from \"effect/Effect\";\nimport * as Stream from \"effect/Stream\";\nimport type * as DatabaseSchema from \"./DatabaseSchema\";\nimport * as Document from \"./Document\";\nimport type * as TableInfo from \"./TableInfo\";\nimport type * as Table from \"./Table\";\n\ntype NativePaginate<TableInfo_ extends TableInfo.AnyWithProps, Doc> = (\n options: PaginationOptions,\n filter?: (\n q: FilterBuilder<TableInfo.ConvexTableInfo<TableInfo_>>,\n ) => ExpressionOrValue<boolean>,\n) => Effect.Effect<PaginationResult<Doc>, Document.DocumentDecodeError>;\n\nexport type OrderedQuery<\n TableInfo_ extends TableInfo.AnyWithProps,\n Doc = TableInfo_[\"document\"],\n TargetKind extends DatabaseSchema.Target[\"kind\"] = \"app\",\n> = {\n readonly first: () => Effect.Effect<\n Option.Option<Doc>,\n Document.DocumentDecodeError\n >;\n readonly take: (\n n: number,\n ) => Effect.Effect<ReadonlyArray<Doc>, Document.DocumentDecodeError>;\n readonly collect: () => Effect.Effect<\n ReadonlyArray<Doc>,\n Document.DocumentDecodeError\n >;\n readonly stream: () => Stream.Stream<Doc, Document.DocumentDecodeError>;\n /**\n * Native pagination is application-only. Use `QueryStream.paginate` for\n * component index queries.\n */\n readonly paginate: {\n readonly app: NativePaginate<TableInfo_, Doc>;\n readonly component: {\n readonly \"Native pagination is unavailable in components. Use QueryStream.paginate for index queries.\": never;\n };\n }[TargetKind];\n};\n\nexport function make<Table_ extends Table.AnyWithProps>(\n query: ConvexOrderedQuery<\n TableInfo.ConvexTableInfo<TableInfo.TableInfo<Table_>>\n >,\n table: Table_ & { readonly scope: IdScope.App },\n): OrderedQuery<TableInfo.TableInfo<Table_>>;\nexport function make<Table_ extends Table.AnyWithProps>(\n query: ConvexOrderedQuery<\n TableInfo.ConvexTableInfo<TableInfo.TableInfo<Table_>>\n >,\n table: Table_,\n): OrderedQuery<\n TableInfo.TableInfo<Table_>,\n TableInfo.TableInfo<Table_>[\"document\"],\n Table.Scope<Table_> extends IdScope.App ? \"app\" : \"component\"\n>;\nexport function make<Table_ extends Table.AnyWithProps>(\n query: ConvexOrderedQuery<\n TableInfo.ConvexTableInfo<TableInfo.TableInfo<Table_>>\n >,\n table: Table_,\n): OrderedQuery<\n TableInfo.TableInfo<Table_>,\n TableInfo.TableInfo<Table_>[\"document\"],\n DatabaseSchema.Target[\"kind\"]\n> {\n type TableInfo_ = TableInfo.TableInfo<Table_>;\n type OrderedQueryFunction<\n FunctionName extends keyof OrderedQuery<TableInfo_>,\n > = OrderedQuery<TableInfo_>[FunctionName];\n\n const streamEncoded = Stream.fromAsyncIterable(query, identity).pipe(\n Stream.orDie,\n );\n\n const stream: OrderedQueryFunction<\"stream\"> = () =>\n pipe(streamEncoded, Stream.mapEffect(Document.decode(table)));\n\n const first: OrderedQueryFunction<\"first\"> = () =>\n pipe(stream(), Stream.take(1), Stream.runHead);\n\n const take: OrderedQueryFunction<\"take\"> = (n: number) =>\n pipe(stream(), Stream.take(n), Stream.runCollect);\n\n const collect: OrderedQueryFunction<\"collect\"> = () =>\n pipe(stream(), Stream.runCollect);\n\n const paginate: NativePaginate<TableInfo_, TableInfo_[\"document\"]> =\n Effect.fn(\"OrderedQuery.paginate\")(function* (options, filter) {\n const filteredQuery = filter !== undefined ? query.filter(filter) : query;\n\n const paginationResult = yield* Effect.promise(() =>\n filteredQuery.paginate(options),\n );\n\n const parsedPage = yield* Effect.forEach(\n paginationResult.page,\n Document.decode(table),\n );\n\n return {\n page: parsedPage,\n isDone: paginationResult.isDone,\n continueCursor: paginationResult.continueCursor,\n /* v8 ignore start */\n ...(paginationResult.splitCursor\n ? { splitCursor: paginationResult.splitCursor }\n : {}),\n ...(paginationResult.pageStatus\n ? { pageStatus: paginationResult.pageStatus }\n : {}),\n /* v8 ignore stop */\n };\n });\n\n return {\n first,\n take,\n collect,\n paginate,\n stream,\n };\n}\n"],"mappings":";;;;;;;AAqEA,SAAgB,KACd,OAGA,OAKA;CAMA,MAAM,gBAAgB,OAAO,kBAAkB,OAAO,QAAQ,CAAC,CAAC,KAC9D,OAAO,KACT;CAEA,MAAM,eACJ,KAAK,eAAe,OAAO,UAAUA,OAAgB,KAAK,CAAC,CAAC;CAE9D,MAAM,cACJ,KAAK,OAAO,GAAG,OAAO,KAAK,CAAC,GAAG,OAAO,OAAO;CAE/C,MAAM,QAAsC,MAC1C,KAAK,OAAO,GAAG,OAAO,KAAK,CAAC,GAAG,OAAO,UAAU;CAElD,MAAM,gBACJ,KAAK,OAAO,GAAG,OAAO,UAAU;CA8BlC,OAAO;EACL;EACA;EACA;EACA,UA/BA,OAAO,GAAG,uBAAuB,CAAC,CAAC,WAAW,SAAS,QAAQ;GAC7D,MAAM,gBAAgB,WAAW,KAAA,IAAY,MAAM,OAAO,MAAM,IAAI;GAEpE,MAAM,mBAAmB,OAAO,OAAO,cACrC,cAAc,SAAS,OAAO,CAChC;GAOA,OAAO;IACL,MAAM,OANkB,OAAO,QAC/B,iBAAiB,MACjBA,OAAgB,KAAK,CACvB;IAIE,QAAQ,iBAAiB;IACzB,gBAAgB,iBAAiB;;IAEjC,GAAI,iBAAiB,cACjB,EAAE,aAAa,iBAAiB,YAAY,IAC5C,CAAC;IACL,GAAI,iBAAiB,aACjB,EAAE,YAAY,iBAAiB,WAAW,IAC1C,CAAC;GAEP;EACF,CAMO;EACP;CACF;AACF"}
@@ -0,0 +1,10 @@
1
+ import type * as IdScope from "@confect/core/IdScope";
2
+ import type { GenericDataModel, GenericQueryCtx } from "convex/server";
3
+ import * as Context from "effect/Context";
4
+ import type * as ComponentCtx from "./ComponentCtx";
5
+ import * as Layer from "effect/Layer";
6
+ export type QueryCtxTag<DataModel extends GenericDataModel, Scope extends IdScope.IdScope = IdScope.App> = Context.Service<QueryCtx<DataModel, Scope>, Scope extends IdScope.App ? GenericQueryCtx<DataModel> : ComponentCtx.Query<DataModel, Scope>>;
7
+ export declare const QueryCtx: <DataModel extends GenericDataModel, Scope extends IdScope.IdScope = IdScope.App>() => QueryCtxTag<DataModel, Scope>;
8
+ export type QueryCtx<DataModel extends GenericDataModel, Scope extends IdScope.IdScope = IdScope.App> = Scope extends IdScope.App ? GenericQueryCtx<DataModel> : ComponentCtx.Identifier<"query", DataModel, Scope>;
9
+ export declare const layer: <DataModel extends GenericDataModel, Scope extends IdScope.IdScope>(ctx: GenericQueryCtx<DataModel>, scope: Scope) => Layer.Layer<QueryCtx<DataModel, Scope>, never, never>;
10
+ //# sourceMappingURL=QueryCtx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryCtx.d.ts","sourceRoot":"","sources":["../src/QueryCtx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,KAAK,YAAY,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,WAAW,CACrB,SAAS,SAAS,gBAAgB,EAClC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IACzC,OAAO,CAAC,OAAO,CACjB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,EAC1B,KAAK,SAAS,OAAO,CAAC,GAAG,GACrB,eAAe,CAAC,SAAS,CAAC,GAC1B,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CACzC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,SAAS,SAAS,gBAAgB,EAClC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,OACxC,WAAW,CAAC,SAAS,EAAE,KAAK,CACY,CAAC;AAE9C,MAAM,MAAM,QAAQ,CAClB,SAAS,SAAS,gBAAgB,EAClC,KAAK,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,IACzC,KAAK,SAAS,OAAO,CAAC,GAAG,GACzB,eAAe,CAAC,SAAS,CAAC,GAC1B,YAAY,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAEvD,eAAO,MAAM,KAAK,GAChB,SAAS,SAAS,gBAAgB,EAClC,KAAK,SAAS,OAAO,CAAC,OAAO,OAExB,eAAe,CAAC,SAAS,CAAC,SACxB,KAAK,0DAUb,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import * as Context from "effect/Context";
3
+ import * as Layer from "effect/Layer";
4
+ //#region src/QueryCtx.ts
5
+ var QueryCtx_exports = /* @__PURE__ */ __exportAll({
6
+ QueryCtx: () => QueryCtx,
7
+ layer: () => layer
8
+ });
9
+ const QueryCtx = () => Context.Service("@confect/server/QueryCtx");
10
+ const layer = (ctx, scope) => {
11
+ const tag = QueryCtx();
12
+ const { auth: _auth, ...componentCtx } = ctx;
13
+ return Layer.succeed(tag, scope === "" ? ctx : componentCtx);
14
+ };
15
+ //#endregion
16
+ export { QueryCtx, QueryCtx_exports, layer };
17
+
18
+ //# sourceMappingURL=QueryCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryCtx.js","names":[],"sources":["../src/QueryCtx.ts"],"sourcesContent":["import type * as IdScope from \"@confect/core/IdScope\";\nimport type { GenericDataModel, GenericQueryCtx } from \"convex/server\";\nimport * as Context from \"effect/Context\";\nimport type * as ComponentCtx from \"./ComponentCtx\";\nimport * as Layer from \"effect/Layer\";\n\nexport type QueryCtxTag<\n DataModel extends GenericDataModel,\n Scope extends IdScope.IdScope = IdScope.App,\n> = Context.Service<\n QueryCtx<DataModel, Scope>,\n Scope extends IdScope.App\n ? GenericQueryCtx<DataModel>\n : ComponentCtx.Query<DataModel, Scope>\n>;\n\nexport const QueryCtx = <\n DataModel extends GenericDataModel,\n Scope extends IdScope.IdScope = IdScope.App,\n>(): QueryCtxTag<DataModel, Scope> =>\n Context.Service(\"@confect/server/QueryCtx\");\n\nexport type QueryCtx<\n DataModel extends GenericDataModel,\n Scope extends IdScope.IdScope = IdScope.App,\n> = Scope extends IdScope.App\n ? GenericQueryCtx<DataModel>\n : ComponentCtx.Identifier<\"query\", DataModel, Scope>;\n\nexport const layer = <\n DataModel extends GenericDataModel,\n Scope extends IdScope.IdScope,\n>(\n ctx: GenericQueryCtx<DataModel>,\n scope: Scope,\n) => {\n const tag = QueryCtx<DataModel, Scope>();\n const { auth: _auth, ...componentCtx } = ctx;\n return Layer.succeed(\n tag,\n (scope === \"\" ? ctx : componentCtx) as unknown as Context.Service.Shape<\n typeof tag\n >,\n );\n};\n"],"mappings":";;;;;;;;AAgBA,MAAa,iBAIX,QAAQ,QAAQ,0BAA0B;AAS5C,MAAa,SAIX,KACA,UACG;CACH,MAAM,MAAM,SAA2B;CACvC,MAAM,EAAE,MAAM,OAAO,GAAG,iBAAiB;CACzC,OAAO,MAAM,QACX,KACC,UAAU,KAAK,MAAM,YAGxB;AACF"}
@@ -0,0 +1,75 @@
1
+ import type * as IdScope from "@confect/core/IdScope";
2
+ import type { DocumentByInfo, Indexes, IndexRange, IndexRangeBuilder, NamedIndex, NamedSearchIndex, SearchFilter, SearchFilterBuilder, SearchIndexes } from "convex/server";
3
+ import type { GenericId } from "convex/values";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Schema from "effect/Schema";
6
+ import type { BaseDatabaseReader, IndexFieldTypesForEq } from "@confect/core/Types";
7
+ import type * as DataModel from "./DataModel";
8
+ import type * as DatabaseSchema from "./DatabaseSchema";
9
+ import * as Document from "./Document";
10
+ import * as OrderedQuery from "./OrderedQuery";
11
+ import * as QueryStream from "./QueryStream";
12
+ import type * as QueryStreamKeyLabels from "./QueryStreamKeyLabels";
13
+ import * as QueryStreamIndexRange from "./QueryStreamIndexRange";
14
+ import type { QueryStreamOrderDirection as OrderDirection } from "./QueryStreamOrderDirection";
15
+ import type * as Table from "./Table";
16
+ type ConvexTableInfoFor<DataModel_ extends DataModel.AnyWithProps, TableName extends DataModel.TableNames<DataModel_>> = DataModel.TableInfoWithName<DataModel_, TableName>;
17
+ type TableInfoFor<DataModel_ extends DataModel.AnyWithProps, TableName extends DataModel.TableNames<DataModel_>> = DataModel.TableInfoWithName_<DataModel_, TableName>;
18
+ export interface QueryInitializer<DataModel_ extends DataModel.AnyWithProps, TableName extends DataModel.TableNames<DataModel_>, Doc = DataModel.DocumentWithName<DataModel_, TableName>, TargetKind extends DatabaseSchema.Target["kind"] = "app"> {
19
+ readonly get: {
20
+ (id: DataModel.Id<DataModel_, TableName>): Effect.Effect<Doc, Document.DocumentDecodeError | GetByIdFailure>;
21
+ <IndexName extends keyof Indexes<ConvexTableInfoFor<DataModel_, TableName>>>(indexName: IndexName, ...indexFieldValues: IndexFieldTypesForEq<DataModel.ToConvex<DataModel_>, TableName, Indexes<ConvexTableInfoFor<DataModel_, TableName>>[IndexName]>): Effect.Effect<Doc, Document.DocumentDecodeError | GetByIndexFailure>;
22
+ };
23
+ readonly index: {
24
+ <IndexName extends keyof Indexes<ConvexTableInfoFor<DataModel_, TableName>>>(indexName: IndexName, indexRange?: (q: IndexRangeBuilder<TableInfoFor<DataModel_, TableName>["convexDocument"], NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>>) => IndexRange, order?: OrderDirection): OrderedQuery.OrderedQuery<TableInfoFor<DataModel_, TableName>, Doc, TargetKind>;
25
+ <IndexName extends keyof Indexes<ConvexTableInfoFor<DataModel_, TableName>>>(indexName: IndexName, order?: OrderDirection): OrderedQuery.OrderedQuery<TableInfoFor<DataModel_, TableName>, Doc, TargetKind>;
26
+ };
27
+ readonly search: <IndexName extends keyof SearchIndexes<ConvexTableInfoFor<DataModel_, TableName>>>(indexName: IndexName, searchFilter: (q: SearchFilterBuilder<DocumentByInfo<ConvexTableInfoFor<DataModel_, TableName>>, NamedSearchIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>>) => SearchFilter) => OrderedQuery.OrderedQuery<TableInfoFor<DataModel_, TableName>, Doc, TargetKind>;
28
+ /**
29
+ * EXPERIMENTAL—stream-first querying (see `notes/stream-based-querying.md`).
30
+ *
31
+ * Like `index`, but returns a {@link QueryStream.QueryStream}: a genuine
32
+ * Effect `Stream` of documents in index order that stays mergeable and
33
+ * paginable.
34
+ *
35
+ * In SQL terms: an index range scan—`SELECT * FROM table WHERE <range> ORDER
36
+ * BY <index fields> [DESC]`; `eq` calls are the equality predicates, the
37
+ * bound calls are the range predicates. The value is a reusable description
38
+ * of a query: each run re-runs the index query. * The typed range builder
39
+ * consumes `eq`-pinned fields from the index's field tuple at the type level,
40
+ * so the stream's visible label type is exactly the fields that still vary
41
+ * (the `ORDER BY` columns left after the equality predicates). The order
42
+ * direction is part of the type too: omitted, it is `"asc"`; a literal is
43
+ * tracked as that literal, and a value known only at runtime as the union.
44
+ * The order parameter is either absent or a direction—never `undefined`—so
45
+ * the type can't claim a literal the runtime default would contradict.
46
+ */
47
+ readonly stream: {
48
+ <IndexName extends keyof Indexes<ConvexTableInfoFor<DataModel_, TableName>> & string, Range extends QueryStreamIndexRange.QueryStreamIndexRange>(indexName: IndexName, indexRange: (q: QueryStreamIndexRange.Builder<TableInfoFor<DataModel_, TableName>["convexDocument"], NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>>) => Range): QueryStream.QueryStream<Doc, QueryStreamKeyLabels.QueryStreamKeyLabels<QueryStreamIndexRange.Remaining<Range>>, "asc", Document.DocumentDecodeError, never>;
49
+ <IndexName extends keyof Indexes<ConvexTableInfoFor<DataModel_, TableName>> & string, Range extends QueryStreamIndexRange.QueryStreamIndexRange, Direction extends OrderDirection>(indexName: IndexName, indexRange: (q: QueryStreamIndexRange.Builder<TableInfoFor<DataModel_, TableName>["convexDocument"], NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>>) => Range, order: Direction): QueryStream.QueryStream<Doc, QueryStreamKeyLabels.QueryStreamKeyLabels<QueryStreamIndexRange.Remaining<Range>>, Direction, Document.DocumentDecodeError, never>;
50
+ <IndexName extends keyof Indexes<ConvexTableInfoFor<DataModel_, TableName>> & string>(indexName: IndexName): QueryStream.QueryStream<Doc, QueryStreamKeyLabels.QueryStreamKeyLabels<NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>>, "asc", Document.DocumentDecodeError, never>;
51
+ <IndexName extends keyof Indexes<ConvexTableInfoFor<DataModel_, TableName>> & string, Direction extends OrderDirection>(indexName: IndexName, order: Direction): QueryStream.QueryStream<Doc, QueryStreamKeyLabels.QueryStreamKeyLabels<NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>>, Direction, Document.DocumentDecodeError, never>;
52
+ };
53
+ }
54
+ export declare function make<Tables extends Table.AnyWithProps, TableName extends Table.Name<Tables>>(convexDatabaseReader: BaseDatabaseReader<DataModel.ToConvex<DataModel.FromTables<Tables>>>, table: Table.WithName<Tables, TableName> & {
55
+ readonly scope: IdScope.App;
56
+ }): QueryInitializer<DataModel.FromTables<Tables>, TableName>;
57
+ export declare function make<Tables extends Table.AnyWithProps, TableName extends Table.Name<Tables>>(convexDatabaseReader: BaseDatabaseReader<DataModel.ToConvex<DataModel.FromTables<Tables>>>, table: Table.WithName<Tables, TableName>): QueryInitializer<DataModel.FromTables<Tables>, TableName, DataModel.DocumentWithName<DataModel.FromTables<Tables>, TableName>, Table.Scope<Table.WithName<Tables, TableName>> extends IdScope.App ? "app" : "component">;
58
+ export declare const getById: <Tables extends Table.AnyWithProps, TableName extends Table.Name<Tables>>(convexDatabaseReader: BaseDatabaseReader<DataModel.ToConvex<DataModel.FromTables<Tables>>>, table: Table.WithName<Tables, TableName>) => (id: GenericId<TableName>) => Effect.Effect<import("./TableInfo").TableInfo<Table.WithName<Tables, TableName>>["document"], Document.DocumentDecodeError | GetByIdFailure, never>;
59
+ declare const GetByIdFailure_base: Schema.Class<GetByIdFailure, Schema.TaggedStruct<"GetByIdFailure", {
60
+ readonly id: Schema.String;
61
+ readonly tableName: Schema.String;
62
+ }>, import("effect/Cause").YieldableError>;
63
+ export declare class GetByIdFailure extends GetByIdFailure_base {
64
+ get message(): string;
65
+ }
66
+ declare const GetByIndexFailure_base: Schema.Class<GetByIndexFailure, Schema.TaggedStruct<"GetByIndexFailure", {
67
+ readonly tableName: Schema.String;
68
+ readonly indexName: Schema.String;
69
+ readonly indexFieldValues: Schema.$Array<Schema.Unknown>;
70
+ }>, import("effect/Cause").YieldableError>;
71
+ export declare class GetByIndexFailure extends GetByIndexFailure_base {
72
+ get message(): string;
73
+ }
74
+ export {};
75
+ //# sourceMappingURL=QueryInitializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryInitializer.d.ts","sourceRoot":"","sources":["../src/QueryInitializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { decode, documentErrorMessage } from "./Document.js";
3
+ import { make as make$1 } from "./OrderedQuery.js";
4
+ import { builder } from "./QueryStreamIndexRange.js";
5
+ import { fromReflection } from "./QueryStream.js";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Schema from "effect/Schema";
8
+ import { pipe } from "effect/Function";
9
+ import * as Option from "effect/Option";
10
+ import * as Array from "effect/Array";
11
+ import * as Predicate from "effect/Predicate";
12
+ import * as Result from "effect/Result";
13
+ //#region src/QueryInitializer.ts
14
+ var QueryInitializer_exports = /* @__PURE__ */ __exportAll({
15
+ GetByIdFailure: () => GetByIdFailure,
16
+ GetByIndexFailure: () => GetByIndexFailure,
17
+ getById: () => getById,
18
+ make: () => make
19
+ });
20
+ function make(convexDatabaseReader, table) {
21
+ const tableName = table.tableName;
22
+ const getByIndex = (indexName, indexFieldValues) => {
23
+ const indexFieldPaths = table.indexes[indexName];
24
+ return pipe(Effect.promise(() => convexDatabaseReader.query(tableName).withIndex(indexName, (q) => Array.reduce(indexFieldValues, q, (q_, v, i) => q_.eq(indexFieldPaths[i], v))).unique()), Effect.andThen((value) => Effect.fromResult(Result.fromNullishOr(value, () => new GetByIndexFailure({
25
+ tableName,
26
+ indexName,
27
+ indexFieldValues
28
+ })))), Effect.andThen(decode(table)));
29
+ };
30
+ const get = ((...args) => {
31
+ if (args.length === 1) {
32
+ const id = args[0];
33
+ return getById(convexDatabaseReader, table)(id);
34
+ } else {
35
+ const [indexName, ...indexFieldValues] = args;
36
+ return getByIndex(indexName, indexFieldValues);
37
+ }
38
+ });
39
+ const index = (indexName, indexRangeOrOrder, order) => {
40
+ const { applyWithIndex, applyOrder } = indexRangeOrOrder === void 0 ? {
41
+ applyWithIndex: (q) => q.withIndex(indexName),
42
+ applyOrder: (q) => q.order("asc")
43
+ } : typeof indexRangeOrOrder === "function" ? order === void 0 ? {
44
+ applyWithIndex: (q) => q.withIndex(indexName, indexRangeOrOrder),
45
+ applyOrder: (q) => q.order("asc")
46
+ } : {
47
+ applyWithIndex: (q) => q.withIndex(indexName, indexRangeOrOrder),
48
+ applyOrder: (q) => q.order(order)
49
+ } : {
50
+ applyWithIndex: (q) => q.withIndex(indexName),
51
+ applyOrder: (q) => q.order(indexRangeOrOrder)
52
+ };
53
+ const orderedQuery = pipe(convexDatabaseReader.query(tableName), applyWithIndex, applyOrder);
54
+ return make$1(orderedQuery, table);
55
+ };
56
+ const stream = ((indexName, indexRangeOrOrder, maybeOrder) => {
57
+ const orderDirection = Predicate.isString(indexRangeOrOrder) ? indexRangeOrOrder : maybeOrder ?? "asc";
58
+ const indexRange = Predicate.isFunction(indexRangeOrOrder) ? indexRangeOrOrder(builder()) : builder();
59
+ const indexFieldPaths = indexName === "by_id" ? ["_id"] : indexName === "by_creation_time" ? ["_creationTime"] : pipe(Option.fromUndefinedOr(table.indexes[indexName]), Option.getOrThrowWith(() => /* @__PURE__ */ new Error(`QueryInitializer.stream: table "${tableName}" has no index named "${indexName}"`)), Array.append("_creationTime"));
60
+ return fromReflection({
61
+ reader: convexDatabaseReader,
62
+ table,
63
+ indexName,
64
+ indexFieldPaths,
65
+ indexRange,
66
+ orderDirection
67
+ });
68
+ });
69
+ const search = (indexName, searchFilter) => make$1(convexDatabaseReader.query(tableName).withSearchIndex(indexName, searchFilter), table);
70
+ return {
71
+ get,
72
+ index,
73
+ search,
74
+ stream
75
+ };
76
+ }
77
+ const getById = (convexDatabaseReader, table) => (id) => pipe(Effect.promise(() => convexDatabaseReader.get(id)), Effect.andThen((value) => Effect.fromResult(Result.fromNullishOr(value, () => new GetByIdFailure({
78
+ tableName: table.tableName,
79
+ id
80
+ })))), Effect.andThen(decode(table)));
81
+ var GetByIdFailure = class extends Schema.TaggedError()("GetByIdFailure", {
82
+ id: Schema.String,
83
+ tableName: Schema.String
84
+ }) {
85
+ get message() {
86
+ return documentErrorMessage({
87
+ id: this.id,
88
+ tableName: this.tableName,
89
+ message: "not found"
90
+ });
91
+ }
92
+ };
93
+ var GetByIndexFailure = class extends Schema.TaggedError()("GetByIndexFailure", {
94
+ tableName: Schema.String,
95
+ indexName: Schema.String,
96
+ indexFieldValues: Schema.Array(Schema.Unknown)
97
+ }) {
98
+ get message() {
99
+ return `No documents found in table '${this.tableName}' with index '${this.indexName}' and field values '${JSON.stringify(this.indexFieldValues, (_key, value) => typeof value === "bigint" ? value.toString() : value)}'`;
100
+ }
101
+ };
102
+ //#endregion
103
+ export { GetByIdFailure, GetByIndexFailure, QueryInitializer_exports, getById, make };
104
+
105
+ //# sourceMappingURL=QueryInitializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryInitializer.js","names":["Document.decode","OrderedQuery.make","QueryStreamIndexRange.builder","QueryStream.fromReflection","Document.documentErrorMessage"],"sources":["../src/QueryInitializer.ts"],"sourcesContent":["import type * as IdScope from \"@confect/core/IdScope\";\nimport type {\n OrderedQuery as ConvexOrderedQuery,\n QueryInitializer as ConvexQueryInitializer,\n DocumentByInfo,\n GenericTableIndexes,\n Indexes,\n IndexRange,\n IndexRangeBuilder,\n NamedIndex,\n NamedSearchIndex,\n NamedTableInfo,\n Query,\n SearchFilter,\n SearchFilterBuilder,\n SearchIndexes,\n} from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Effect from \"effect/Effect\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport type { ReadonlyRecord } from \"effect/Record\";\nimport * as Result from \"effect/Result\";\nimport * as Schema from \"effect/Schema\";\nimport type {\n BaseDatabaseReader,\n IndexFieldTypesForEq,\n} from \"@confect/core/Types\";\nimport type * as DataModel from \"./DataModel\";\nimport type * as DatabaseSchema from \"./DatabaseSchema\";\nimport * as Document from \"./Document\";\nimport * as OrderedQuery from \"./OrderedQuery\";\nimport * as QueryStream from \"./QueryStream\";\nimport type * as QueryStreamKeyLabels from \"./QueryStreamKeyLabels\";\nimport * as QueryStreamIndexRange from \"./QueryStreamIndexRange\";\nimport type { QueryStreamOrderDirection as OrderDirection } from \"./QueryStreamOrderDirection\";\nimport type * as Table from \"./Table\";\n\ntype ConvexTableInfoFor<\n DataModel_ extends DataModel.AnyWithProps,\n TableName extends DataModel.TableNames<DataModel_>,\n> = DataModel.TableInfoWithName<DataModel_, TableName>;\n\ntype TableInfoFor<\n DataModel_ extends DataModel.AnyWithProps,\n TableName extends DataModel.TableNames<DataModel_>,\n> = DataModel.TableInfoWithName_<DataModel_, TableName>;\n\nexport interface QueryInitializer<\n DataModel_ extends DataModel.AnyWithProps,\n TableName extends DataModel.TableNames<DataModel_>,\n Doc = DataModel.DocumentWithName<DataModel_, TableName>,\n TargetKind extends DatabaseSchema.Target[\"kind\"] = \"app\",\n> {\n readonly get: {\n (\n id: DataModel.Id<DataModel_, TableName>,\n ): Effect.Effect<Doc, Document.DocumentDecodeError | GetByIdFailure>;\n <\n IndexName extends keyof Indexes<\n ConvexTableInfoFor<DataModel_, TableName>\n >,\n >(\n indexName: IndexName,\n ...indexFieldValues: IndexFieldTypesForEq<\n DataModel.ToConvex<DataModel_>,\n TableName,\n Indexes<ConvexTableInfoFor<DataModel_, TableName>>[IndexName]\n >\n ): Effect.Effect<Doc, Document.DocumentDecodeError | GetByIndexFailure>;\n };\n readonly index: {\n <\n IndexName extends keyof Indexes<\n ConvexTableInfoFor<DataModel_, TableName>\n >,\n >(\n indexName: IndexName,\n indexRange?: (\n q: IndexRangeBuilder<\n TableInfoFor<DataModel_, TableName>[\"convexDocument\"],\n NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>\n >,\n ) => IndexRange,\n order?: OrderDirection,\n ): OrderedQuery.OrderedQuery<\n TableInfoFor<DataModel_, TableName>,\n Doc,\n TargetKind\n >;\n <\n IndexName extends keyof Indexes<\n ConvexTableInfoFor<DataModel_, TableName>\n >,\n >(\n indexName: IndexName,\n order?: OrderDirection,\n ): OrderedQuery.OrderedQuery<\n TableInfoFor<DataModel_, TableName>,\n Doc,\n TargetKind\n >;\n };\n readonly search: <\n IndexName extends keyof SearchIndexes<\n ConvexTableInfoFor<DataModel_, TableName>\n >,\n >(\n indexName: IndexName,\n searchFilter: (\n q: SearchFilterBuilder<\n DocumentByInfo<ConvexTableInfoFor<DataModel_, TableName>>,\n NamedSearchIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>\n >,\n ) => SearchFilter,\n ) => OrderedQuery.OrderedQuery<\n TableInfoFor<DataModel_, TableName>,\n Doc,\n TargetKind\n >;\n /**\n * EXPERIMENTAL—stream-first querying (see `notes/stream-based-querying.md`).\n *\n * Like `index`, but returns a {@link QueryStream.QueryStream}: a genuine\n * Effect `Stream` of documents in index order that stays mergeable and\n * paginable.\n *\n * In SQL terms: an index range scan—`SELECT * FROM table WHERE <range> ORDER\n * BY <index fields> [DESC]`; `eq` calls are the equality predicates, the\n * bound calls are the range predicates. The value is a reusable description\n * of a query: each run re-runs the index query. * The typed range builder\n * consumes `eq`-pinned fields from the index's field tuple at the type level,\n * so the stream's visible label type is exactly the fields that still vary\n * (the `ORDER BY` columns left after the equality predicates). The order\n * direction is part of the type too: omitted, it is `\"asc\"`; a literal is\n * tracked as that literal, and a value known only at runtime as the union.\n * The order parameter is either absent or a direction—never `undefined`—so\n * the type can't claim a literal the runtime default would contradict.\n */\n readonly stream: {\n <\n IndexName extends keyof Indexes<\n ConvexTableInfoFor<DataModel_, TableName>\n > &\n string,\n Range extends QueryStreamIndexRange.QueryStreamIndexRange,\n >(\n indexName: IndexName,\n indexRange: (\n q: QueryStreamIndexRange.Builder<\n TableInfoFor<DataModel_, TableName>[\"convexDocument\"],\n NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>\n >,\n ) => Range,\n ): QueryStream.QueryStream<\n Doc,\n QueryStreamKeyLabels.QueryStreamKeyLabels<\n QueryStreamIndexRange.Remaining<Range>\n >,\n \"asc\",\n Document.DocumentDecodeError,\n never\n >;\n <\n IndexName extends keyof Indexes<\n ConvexTableInfoFor<DataModel_, TableName>\n > &\n string,\n Range extends QueryStreamIndexRange.QueryStreamIndexRange,\n Direction extends OrderDirection,\n >(\n indexName: IndexName,\n indexRange: (\n q: QueryStreamIndexRange.Builder<\n TableInfoFor<DataModel_, TableName>[\"convexDocument\"],\n NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>\n >,\n ) => Range,\n order: Direction,\n ): QueryStream.QueryStream<\n Doc,\n QueryStreamKeyLabels.QueryStreamKeyLabels<\n QueryStreamIndexRange.Remaining<Range>\n >,\n Direction,\n Document.DocumentDecodeError,\n never\n >;\n <\n IndexName extends keyof Indexes<\n ConvexTableInfoFor<DataModel_, TableName>\n > &\n string,\n >(\n indexName: IndexName,\n ): QueryStream.QueryStream<\n Doc,\n QueryStreamKeyLabels.QueryStreamKeyLabels<\n NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>\n >,\n \"asc\",\n Document.DocumentDecodeError,\n never\n >;\n <\n IndexName extends keyof Indexes<\n ConvexTableInfoFor<DataModel_, TableName>\n > &\n string,\n Direction extends OrderDirection,\n >(\n indexName: IndexName,\n order: Direction,\n ): QueryStream.QueryStream<\n Doc,\n QueryStreamKeyLabels.QueryStreamKeyLabels<\n NamedIndex<ConvexTableInfoFor<DataModel_, TableName>, IndexName>\n >,\n Direction,\n Document.DocumentDecodeError,\n never\n >;\n };\n}\n\nexport function make<\n Tables extends Table.AnyWithProps,\n TableName extends Table.Name<Tables>,\n>(\n convexDatabaseReader: BaseDatabaseReader<\n DataModel.ToConvex<DataModel.FromTables<Tables>>\n >,\n table: Table.WithName<Tables, TableName> & { readonly scope: IdScope.App },\n): QueryInitializer<DataModel.FromTables<Tables>, TableName>;\nexport function make<\n Tables extends Table.AnyWithProps,\n TableName extends Table.Name<Tables>,\n>(\n convexDatabaseReader: BaseDatabaseReader<\n DataModel.ToConvex<DataModel.FromTables<Tables>>\n >,\n table: Table.WithName<Tables, TableName>,\n): QueryInitializer<\n DataModel.FromTables<Tables>,\n TableName,\n DataModel.DocumentWithName<DataModel.FromTables<Tables>, TableName>,\n Table.Scope<Table.WithName<Tables, TableName>> extends IdScope.App\n ? \"app\"\n : \"component\"\n>;\nexport function make<\n Tables extends Table.AnyWithProps,\n TableName extends Table.Name<Tables>,\n>(\n convexDatabaseReader: BaseDatabaseReader<\n DataModel.ToConvex<DataModel.FromTables<Tables>>\n >,\n table: Table.WithName<Tables, TableName>,\n): QueryInitializer<\n DataModel.FromTables<Tables>,\n TableName,\n DataModel.DocumentWithName<DataModel.FromTables<Tables>, TableName>,\n DatabaseSchema.Target[\"kind\"]\n> {\n const tableName = table.tableName;\n type DataModel_ = DataModel.FromTables<Tables>;\n type ConvexDataModel_ = DataModel.ToConvex<DataModel_>;\n type ThisQueryInitializer = QueryInitializer<\n DataModel_,\n TableName,\n DataModel.DocumentWithName<DataModel_, TableName>,\n DatabaseSchema.Target[\"kind\"]\n >;\n type QueryInitializerFunction<\n FunctionName extends keyof ThisQueryInitializer,\n > = ThisQueryInitializer[FunctionName];\n\n const getByIndex = <\n IndexName extends keyof Indexes<\n DataModel.TableInfoWithName<DataModel_, TableName>\n >,\n >(\n indexName: IndexName,\n indexFieldValues: IndexFieldTypesForEq<\n DataModel.ToConvex<DataModel_>,\n TableName,\n Indexes<DataModel.TableInfoWithName<DataModel_, TableName>>[IndexName]\n >,\n ): Effect.Effect<\n DataModel.DocumentWithName<DataModel_, TableName>,\n Document.DocumentDecodeError | GetByIndexFailure\n > => {\n const indexFieldPaths: GenericTableIndexes[keyof GenericTableIndexes] = (\n table.indexes as GenericTableIndexes\n )[indexName as keyof GenericTableIndexes]!;\n\n return pipe(\n Effect.promise(() =>\n convexDatabaseReader\n .query(tableName)\n .withIndex(indexName, (q) =>\n Array.reduce(\n indexFieldValues,\n q,\n (q_, v, i) => q_.eq(indexFieldPaths[i] as any, v as any) as any,\n ),\n )\n .unique(),\n ),\n Effect.andThen((value) =>\n Effect.fromResult(\n Result.fromNullishOr(\n value,\n () =>\n new GetByIndexFailure({\n tableName,\n indexName: indexName as string,\n indexFieldValues,\n }),\n ),\n ),\n ),\n Effect.andThen(Document.decode(table)),\n );\n };\n\n const get: QueryInitializerFunction<\"get\"> = ((\n ...args: Parameters<QueryInitializerFunction<\"get\">>\n ) => {\n if (args.length === 1) {\n const id = args[0] as GenericId<TableName>;\n\n return getById<Tables, TableName>(convexDatabaseReader, table)(id);\n } else {\n const [indexName, ...indexFieldValues] = args;\n\n return getByIndex(\n indexName as keyof Indexes<\n DataModel.TableInfoWithName<DataModel_, TableName>\n >,\n indexFieldValues,\n );\n }\n }) as QueryInitializerFunction<\"get\">;\n\n const index: QueryInitializerFunction<\"index\"> = <\n IndexName extends keyof Indexes<\n DataModel.TableInfoWithName<DataModel_, TableName>\n >,\n >(\n indexName: IndexName,\n indexRangeOrOrder?:\n | ((\n q: IndexRangeBuilder<\n DataModel.TableInfoWithName_<\n DataModel_,\n TableName\n >[\"convexDocument\"],\n NamedIndex<\n DataModel.TableInfoWithName<DataModel_, TableName>,\n IndexName\n >\n >,\n ) => IndexRange)\n | OrderDirection,\n order?: OrderDirection,\n ) => {\n const {\n applyWithIndex,\n applyOrder,\n }: {\n applyWithIndex: (\n queryInitializer: ConvexQueryInitializer<\n NamedTableInfo<ConvexDataModel_, TableName>\n >,\n ) => Query<NamedTableInfo<ConvexDataModel_, TableName>>;\n applyOrder: (\n query: Query<NamedTableInfo<ConvexDataModel_, TableName>>,\n ) => ConvexOrderedQuery<NamedTableInfo<ConvexDataModel_, TableName>>;\n } =\n indexRangeOrOrder === undefined\n ? {\n applyWithIndex: (q) => q.withIndex(indexName),\n applyOrder: (q) => q.order(\"asc\"),\n }\n : typeof indexRangeOrOrder === \"function\"\n ? order === undefined\n ? {\n applyWithIndex: (q) =>\n q.withIndex(indexName, indexRangeOrOrder),\n applyOrder: (q) => q.order(\"asc\"),\n }\n : {\n applyWithIndex: (q) =>\n q.withIndex(indexName, indexRangeOrOrder),\n applyOrder: (q) => q.order(order),\n }\n : {\n applyWithIndex: (q) => q.withIndex(indexName),\n applyOrder: (q) => q.order(indexRangeOrOrder),\n };\n\n const orderedQuery = pipe(\n convexDatabaseReader.query(tableName),\n applyWithIndex,\n applyOrder,\n );\n\n return OrderedQuery.make(orderedQuery, table);\n };\n\n const stream: QueryInitializerFunction<\"stream\"> = ((\n indexName: string,\n indexRangeOrOrder?:\n | ((\n q: QueryStreamIndexRange.Builder<any, any>,\n ) => QueryStreamIndexRange.QueryStreamIndexRange)\n | OrderDirection,\n maybeOrder?: OrderDirection,\n ) => {\n const orderDirection = Predicate.isString(indexRangeOrOrder)\n ? indexRangeOrOrder\n : (maybeOrder ?? \"asc\");\n\n // Without a range callback, the leaf scans the entire index.\n const indexRange = Predicate.isFunction(indexRangeOrOrder)\n ? indexRangeOrOrder(QueryStreamIndexRange.builder())\n : QueryStreamIndexRange.builder();\n\n // The type-level field tuple appends the `_creationTime` tiebreaker, but\n // the runtime `table.indexes` record stores only the declared fields—append it here.\n const indexFieldPaths: ReadonlyArray<string> =\n indexName === \"by_id\"\n ? [\"_id\"]\n : indexName === \"by_creation_time\"\n ? [\"_creationTime\"]\n : pipe(\n Option.fromUndefinedOr(\n (\n table.indexes as ReadonlyRecord<string, ReadonlyArray<string>>\n )[indexName],\n ),\n // An unknown index name is a defect, not an empty field list:\n // silently empty fields would make key extraction and range\n // splitting target the wrong fields.\n Option.getOrThrowWith(\n () =>\n new Error(\n `QueryInitializer.stream: table \"${tableName}\" has no index named \"${indexName}\"`,\n ),\n ),\n Array.append(\"_creationTime\"),\n );\n\n return QueryStream.fromReflection({\n reader: convexDatabaseReader as QueryStream.ReflectionReader,\n table,\n indexName,\n indexFieldPaths,\n indexRange,\n orderDirection,\n });\n }) as QueryInitializerFunction<\"stream\">;\n\n const search: QueryInitializerFunction<\"search\"> = (\n indexName,\n searchFilter,\n ) =>\n OrderedQuery.make(\n convexDatabaseReader\n .query(tableName)\n .withSearchIndex(indexName, searchFilter),\n table,\n );\n\n return {\n get,\n index,\n search,\n stream,\n };\n}\n\nexport const getById =\n <Tables extends Table.AnyWithProps, TableName extends Table.Name<Tables>>(\n convexDatabaseReader: BaseDatabaseReader<\n DataModel.ToConvex<DataModel.FromTables<Tables>>\n >,\n table: Table.WithName<Tables, TableName>,\n ) =>\n (id: GenericId<TableName>) =>\n pipe(\n Effect.promise(() => convexDatabaseReader.get(id)),\n Effect.andThen((value) =>\n Effect.fromResult(\n Result.fromNullishOr(\n value,\n () => new GetByIdFailure({ tableName: table.tableName, id }),\n ),\n ),\n ),\n Effect.andThen(Document.decode(table)),\n );\n\nexport class GetByIdFailure extends Schema.TaggedError<GetByIdFailure>()(\n \"GetByIdFailure\",\n {\n id: Schema.String,\n tableName: Schema.String,\n },\n) {\n override get message(): string {\n return Document.documentErrorMessage({\n id: this.id,\n tableName: this.tableName,\n message: \"not found\",\n });\n }\n}\n\nexport class GetByIndexFailure extends Schema.TaggedError<GetByIndexFailure>()(\n \"GetByIndexFailure\",\n {\n tableName: Schema.String,\n indexName: Schema.String,\n indexFieldValues: Schema.Array(Schema.Unknown),\n },\n) {\n override get message(): string {\n return `No documents found in table '${this.tableName}' with index '${this.indexName}' and field values '${JSON.stringify(\n this.indexFieldValues,\n (_key, value) => (typeof value === \"bigint\" ? value.toString() : value),\n )}'`;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import * as Ref from "@confect/core/Ref";
2
+ import type { GenericActionCtx } from "convex/server";
3
+ import * as Context from "effect/Context";
4
+ import * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
+ import type * as Schema from "effect/Schema";
7
+ import * as MutationTransactionContext from "./MutationTransactionContext";
8
+ import * as QueryTransactionContext from "./QueryTransactionContext";
9
+ export type Options = MutationTransactionContext.QueryOptions;
10
+ export declare const QueryRunner: Context.Service<{
11
+ runQuery: {
12
+ <Query extends Ref.AnyQuery>(query: Query, ...args: [...Ref.OptionalArgs<Query>, options?: undefined]): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError>;
13
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: (QueryTransactionContext.Options & {
14
+ readonly useStaleSnapshot?: never;
15
+ }) | undefined): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, QueryTransactionContext.QueryTransactionContext>;
16
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: Options & {
17
+ readonly useStaleSnapshot: boolean;
18
+ }): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, MutationTransactionContext.MutationTransactionContext>;
19
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: Options | undefined): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, QueryTransactionContext.QueryTransactionContext | MutationTransactionContext.MutationTransactionContext>;
20
+ };
21
+ }, {
22
+ runQuery: {
23
+ <Query extends Ref.AnyQuery>(query: Query, ...args: [...Ref.OptionalArgs<Query>, options?: undefined]): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError>;
24
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: (QueryTransactionContext.Options & {
25
+ readonly useStaleSnapshot?: never;
26
+ }) | undefined): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, QueryTransactionContext.QueryTransactionContext>;
27
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: Options & {
28
+ readonly useStaleSnapshot: boolean;
29
+ }): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, MutationTransactionContext.MutationTransactionContext>;
30
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: Options | undefined): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, QueryTransactionContext.QueryTransactionContext | MutationTransactionContext.MutationTransactionContext>;
31
+ };
32
+ }>;
33
+ export type QueryRunner = typeof QueryRunner.Identifier;
34
+ export declare const layer: (runQuery: GenericActionCtx<any>["runQuery"]) => Layer.Layer<{
35
+ runQuery: {
36
+ <Query extends Ref.AnyQuery>(query: Query, ...args: [...Ref.OptionalArgs<Query>, options?: undefined]): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError>;
37
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: (QueryTransactionContext.Options & {
38
+ readonly useStaleSnapshot?: never;
39
+ }) | undefined): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, QueryTransactionContext.QueryTransactionContext>;
40
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: Options & {
41
+ readonly useStaleSnapshot: boolean;
42
+ }): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, MutationTransactionContext.MutationTransactionContext>;
43
+ <Query extends Ref.AnyQuery>(query: Query, args: Ref.Args<Query>, options: Options | undefined): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError, QueryTransactionContext.QueryTransactionContext | MutationTransactionContext.MutationTransactionContext>;
44
+ };
45
+ }, never, never>;
46
+ //# sourceMappingURL=QueryRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryRunner.d.ts","sourceRoot":"","sources":["../src/QueryRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { MutationTransactionContext } from "./MutationTransactionContext.js";
3
+ import { QueryTransactionContext } from "./QueryTransactionContext.js";
4
+ import * as Context from "effect/Context";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Ref from "@confect/core/Ref";
7
+ import * as Effect from "effect/Effect";
8
+ //#region src/QueryRunner.ts
9
+ var QueryRunner_exports = /* @__PURE__ */ __exportAll({
10
+ QueryRunner: () => QueryRunner,
11
+ layer: () => layer
12
+ });
13
+ const run = Effect.fn("QueryRunner.runQuery")((effect) => effect);
14
+ const make = (nativeRunQuery) => {
15
+ function runQuery(query, args, options) {
16
+ return run(Effect.gen(function* () {
17
+ const actualArgs = args ?? {};
18
+ if (options?.useStaleSnapshot !== void 0) return yield* (yield* MutationTransactionContext).runQuery(query, actualArgs, options);
19
+ if (options !== void 0) return yield* (yield* QueryTransactionContext).runQuery(query, actualArgs, options);
20
+ return yield* Ref.runWithCodec(query, actualArgs, (ref, encodedArgs) => nativeRunQuery(ref, encodedArgs));
21
+ }));
22
+ }
23
+ return { runQuery };
24
+ };
25
+ const QueryRunner = Context.Service("@confect/server/QueryRunner");
26
+ const layer = (runQuery) => Layer.succeed(QueryRunner, make(runQuery));
27
+ //#endregion
28
+ export { QueryRunner, QueryRunner_exports, layer };
29
+
30
+ //# sourceMappingURL=QueryRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryRunner.js","names":["MutationTransactionContext.MutationTransactionContext","QueryTransactionContext.QueryTransactionContext"],"sources":["../src/QueryRunner.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport type { GenericActionCtx } from \"convex/server\";\nimport * as Context from \"effect/Context\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport type * as Schema from \"effect/Schema\";\nimport * as MutationTransactionContext from \"./MutationTransactionContext\";\nimport * as QueryTransactionContext from \"./QueryTransactionContext\";\n\nexport type Options = MutationTransactionContext.QueryOptions;\n\nconst run = Effect.fn(\"QueryRunner.runQuery\")(\n <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> => effect,\n);\n\nconst make = (nativeRunQuery: GenericActionCtx<any>[\"runQuery\"]) => {\n function runQuery<Query extends Ref.AnyQuery>(\n query: Query,\n ...args: [...Ref.OptionalArgs<Query>, options?: undefined]\n ): Effect.Effect<Ref.Returns<Query>, Ref.Error<Query> | Schema.SchemaError>;\n function runQuery<Query extends Ref.AnyQuery>(\n query: Query,\n args: Ref.Args<Query>,\n options:\n | (QueryTransactionContext.Options & {\n readonly useStaleSnapshot?: never;\n })\n | undefined,\n ): Effect.Effect<\n Ref.Returns<Query>,\n Ref.Error<Query> | Schema.SchemaError,\n QueryTransactionContext.QueryTransactionContext\n >;\n function runQuery<Query extends Ref.AnyQuery>(\n query: Query,\n args: Ref.Args<Query>,\n options: Options & { readonly useStaleSnapshot: boolean },\n ): Effect.Effect<\n Ref.Returns<Query>,\n Ref.Error<Query> | Schema.SchemaError,\n MutationTransactionContext.MutationTransactionContext\n >;\n function runQuery<Query extends Ref.AnyQuery>(\n query: Query,\n args: Ref.Args<Query>,\n options: Options | undefined,\n ): Effect.Effect<\n Ref.Returns<Query>,\n Ref.Error<Query> | Schema.SchemaError,\n | QueryTransactionContext.QueryTransactionContext\n | MutationTransactionContext.MutationTransactionContext\n >;\n function runQuery<Query extends Ref.AnyQuery>(\n query: Query,\n args?: Ref.Args<Query>,\n options?: Options,\n ): Effect.Effect<\n Ref.Returns<Query>,\n Ref.Error<Query> | Schema.SchemaError,\n | QueryTransactionContext.QueryTransactionContext\n | MutationTransactionContext.MutationTransactionContext\n > {\n return run(\n Effect.gen(function* () {\n const actualArgs = (args ?? {}) as Ref.Args<Query>;\n if (options?.useStaleSnapshot !== undefined) {\n const controls =\n yield* MutationTransactionContext.MutationTransactionContext;\n return yield* controls.runQuery(query, actualArgs, options);\n }\n if (options !== undefined) {\n const controls =\n yield* QueryTransactionContext.QueryTransactionContext;\n return yield* controls.runQuery(query, actualArgs, options);\n }\n return yield* Ref.runWithCodec(query, actualArgs, (ref, encodedArgs) =>\n nativeRunQuery(ref, encodedArgs),\n );\n }),\n );\n }\n return { runQuery };\n};\n\nexport const QueryRunner = Context.Service<ReturnType<typeof make>>(\n \"@confect/server/QueryRunner\",\n);\nexport type QueryRunner = typeof QueryRunner.Identifier;\n\nexport const layer = (runQuery: GenericActionCtx<any>[\"runQuery\"]) =>\n Layer.succeed(QueryRunner, make(runQuery));\n"],"mappings":";;;;;;;;;;;;AAWA,MAAM,MAAM,OAAO,GAAG,sBAAsB,CAAC,EACjC,WAA2D,MACvE;AAEA,MAAM,QAAQ,mBAAsD;CAqClE,SAAS,SACP,OACA,MACA,SAMA;EACA,OAAO,IACL,OAAO,IAAI,aAAa;GACtB,MAAM,aAAc,QAAQ,CAAC;GAC7B,IAAI,SAAS,qBAAqB,KAAA,GAGhC,OAAO,QAAO,OADLA,2BAAAA,CACc,SAAS,OAAO,YAAY,OAAO;GAE5D,IAAI,YAAY,KAAA,GAGd,OAAO,QAAO,OADLC,wBAAAA,CACc,SAAS,OAAO,YAAY,OAAO;GAE5D,OAAO,OAAO,IAAI,aAAa,OAAO,aAAa,KAAK,gBACtD,eAAe,KAAK,WAAW,CACjC;EACF,CAAC,CACH;CACF;CACA,OAAO,EAAE,SAAS;AACpB;AAEA,MAAa,cAAc,QAAQ,QACjC,6BACF;AAGA,MAAa,SAAS,aACpB,MAAM,QAAQ,aAAa,KAAK,QAAQ,CAAC"}