convex 1.45.0 → 1.47.0

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 (511) hide show
  1. package/CHANGELOG.md +105 -6
  2. package/dist/browser.bundle.js +7 -1
  3. package/dist/browser.bundle.js.map +2 -2
  4. package/dist/cjs/browser/http_client.js.map +2 -2
  5. package/dist/cjs/browser/query_options.js.map +2 -2
  6. package/dist/cjs/browser/simple_client.js.map +2 -2
  7. package/dist/cjs/browser/sync/optimistic_updates.js.map +1 -1
  8. package/dist/cjs/browser/sync/optimistic_updates_impl.js.map +2 -2
  9. package/dist/cjs/bundler/index.js +5 -4
  10. package/dist/cjs/bundler/index.js.map +2 -2
  11. package/dist/cjs/cli/codegen.js +0 -2
  12. package/dist/cjs/cli/codegen.js.map +2 -2
  13. package/dist/cjs/cli/configure.js +13 -4
  14. package/dist/cjs/cli/configure.js.map +2 -2
  15. package/dist/cjs/cli/deploy.js +28 -2
  16. package/dist/cjs/cli/deploy.js.map +2 -2
  17. package/dist/cjs/cli/deploymentSelect.js +2 -2
  18. package/dist/cjs/cli/deploymentSelect.js.map +2 -2
  19. package/dist/cjs/cli/dev.js +6 -0
  20. package/dist/cjs/cli/dev.js.map +2 -2
  21. package/dist/cjs/cli/docs.js +3 -36
  22. package/dist/cjs/cli/docs.js.map +2 -2
  23. package/dist/cjs/cli/env.js +10 -5
  24. package/dist/cjs/cli/env.js.map +2 -2
  25. package/dist/cjs/cli/envDefault.js +7 -2
  26. package/dist/cjs/cli/envDefault.js.map +2 -2
  27. package/dist/cjs/cli/generatedApi.js.map +1 -1
  28. package/dist/cjs/cli/lib/api.js +2 -0
  29. package/dist/cjs/cli/lib/api.js.map +2 -2
  30. package/dist/cjs/cli/lib/checkForLargeIndexBackfill.js +113 -0
  31. package/dist/cjs/cli/lib/checkForLargeIndexBackfill.js.map +7 -0
  32. package/dist/cjs/cli/lib/checkForLargeIndexDeletion.js +100 -70
  33. package/dist/cjs/cli/lib/checkForLargeIndexDeletion.js.map +2 -2
  34. package/dist/cjs/cli/lib/checkForSlowSchemaValidation.js +126 -0
  35. package/dist/cjs/cli/lib/checkForSlowSchemaValidation.js.map +7 -0
  36. package/dist/cjs/cli/lib/checkForStagedValidatorDeletion.js +90 -0
  37. package/dist/cjs/cli/lib/checkForStagedValidatorDeletion.js.map +7 -0
  38. package/dist/cjs/cli/lib/codegen.js.map +2 -2
  39. package/dist/cjs/cli/lib/command.js +2 -1
  40. package/dist/cjs/cli/lib/command.js.map +2 -2
  41. package/dist/cjs/cli/lib/components/definition/bundle.js +37 -11
  42. package/dist/cjs/cli/lib/components/definition/bundle.js.map +2 -2
  43. package/dist/cjs/cli/lib/components.js +56 -1
  44. package/dist/cjs/cli/lib/components.js.map +2 -2
  45. package/dist/cjs/cli/lib/config.js +56 -17
  46. package/dist/cjs/cli/lib/config.js.map +2 -2
  47. package/dist/cjs/cli/lib/deploy2.js +32 -3
  48. package/dist/cjs/cli/lib/deploy2.js.map +2 -2
  49. package/dist/cjs/cli/lib/deployApi/evaluateSchema.js +101 -0
  50. package/dist/cjs/cli/lib/deployApi/evaluateSchema.js.map +7 -0
  51. package/dist/cjs/cli/lib/deployApi/finishPush.js +1 -0
  52. package/dist/cjs/cli/lib/deployApi/finishPush.js.map +2 -2
  53. package/dist/cjs/cli/lib/deployApi/startPush.js +1 -1
  54. package/dist/cjs/cli/lib/deployApi/startPush.js.map +2 -2
  55. package/dist/cjs/cli/lib/dev.js +6 -0
  56. package/dist/cjs/cli/lib/dev.js.map +2 -2
  57. package/dist/cjs/cli/lib/formatValidationProgress.js +47 -0
  58. package/dist/cjs/cli/lib/formatValidationProgress.js.map +7 -0
  59. package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
  60. package/dist/cjs/cli/lib/indexes.js.map +1 -1
  61. package/dist/cjs/cli/lib/localDeployment/run.js +30 -1
  62. package/dist/cjs/cli/lib/localDeployment/run.js.map +2 -2
  63. package/dist/cjs/cli/lib/localDeployment/upgrade.js +6 -5
  64. package/dist/cjs/cli/lib/localDeployment/upgrade.js.map +2 -2
  65. package/dist/cjs/cli/lib/localDeployment/utils.js +5 -1
  66. package/dist/cjs/cli/lib/localDeployment/utils.js.map +2 -2
  67. package/dist/cjs/cli/lib/mcp/tools/env.js +10 -3
  68. package/dist/cjs/cli/lib/mcp/tools/env.js.map +2 -2
  69. package/dist/cjs/cli/lib/run.js +5 -0
  70. package/dist/cjs/cli/lib/run.js.map +2 -2
  71. package/dist/cjs/cli/lib/schemaEvaluation.js +62 -0
  72. package/dist/cjs/cli/lib/schemaEvaluation.js.map +7 -0
  73. package/dist/cjs/cli/lib/usageLimits.js +4 -2
  74. package/dist/cjs/cli/lib/usageLimits.js.map +2 -2
  75. package/dist/cjs/cli/lib/utils/mutex.js +9 -24
  76. package/dist/cjs/cli/lib/utils/mutex.js.map +2 -2
  77. package/dist/cjs/cli/lib/utils/utils.js +84 -47
  78. package/dist/cjs/cli/lib/utils/utils.js.map +2 -2
  79. package/dist/cjs/cli/projectCreate.js +1 -1
  80. package/dist/cjs/cli/projectCreate.js.map +1 -1
  81. package/dist/cjs/index.js +1 -1
  82. package/dist/cjs/index.js.map +1 -1
  83. package/dist/cjs/nextjs/index.js.map +2 -2
  84. package/dist/cjs/react/client.js.map +2 -2
  85. package/dist/cjs/react/hydration.js.map +2 -2
  86. package/dist/cjs/react/queries_observer.js.map +2 -2
  87. package/dist/cjs/react/use_paginated_query2.js.map +2 -2
  88. package/dist/cjs/react/use_queries.js.map +2 -2
  89. package/dist/cjs/server/api.js.map +2 -2
  90. package/dist/cjs/server/components/index.js.map +2 -2
  91. package/dist/cjs/server/cron.js +10 -10
  92. package/dist/cjs/server/cron.js.map +2 -2
  93. package/dist/cjs/server/impl/actions_impl.js +8 -3
  94. package/dist/cjs/server/impl/actions_impl.js.map +2 -2
  95. package/dist/cjs/server/impl/meta_impl.js +8 -2
  96. package/dist/cjs/server/impl/meta_impl.js.map +2 -2
  97. package/dist/cjs/server/impl/scheduler_impl.js.map +2 -2
  98. package/dist/cjs/server/impl/storage_impl.js +29 -0
  99. package/dist/cjs/server/impl/storage_impl.js.map +2 -2
  100. package/dist/cjs/server/index.js +1 -0
  101. package/dist/cjs/server/index.js.map +2 -2
  102. package/dist/cjs/server/meta.js.map +1 -1
  103. package/dist/cjs/server/registration.js.map +1 -1
  104. package/dist/cjs/server/scheduler.js.map +1 -1
  105. package/dist/cjs/server/schema.js +72 -3
  106. package/dist/cjs/server/schema.js.map +2 -2
  107. package/dist/cjs/server/storage.js.map +1 -1
  108. package/dist/cjs/values/validator.js +1 -1
  109. package/dist/cjs/values/validator.js.map +2 -2
  110. package/dist/cjs/values/validators.js +82 -26
  111. package/dist/cjs/values/validators.js.map +2 -2
  112. package/dist/cjs/values/value.js +6 -0
  113. package/dist/cjs/values/value.js.map +2 -2
  114. package/dist/cjs-types/browser/http_client.d.ts +5 -5
  115. package/dist/cjs-types/browser/http_client.d.ts.map +1 -1
  116. package/dist/cjs-types/browser/query_options.d.ts +2 -2
  117. package/dist/cjs-types/browser/query_options.d.ts.map +1 -1
  118. package/dist/cjs-types/browser/simple_client.d.ts +6 -6
  119. package/dist/cjs-types/browser/simple_client.d.ts.map +1 -1
  120. package/dist/cjs-types/browser/sync/optimistic_updates.d.ts +4 -4
  121. package/dist/cjs-types/browser/sync/optimistic_updates.d.ts.map +1 -1
  122. package/dist/cjs-types/browser/sync/optimistic_updates_impl.d.ts.map +1 -1
  123. package/dist/cjs-types/bundler/index.d.ts +9 -2
  124. package/dist/cjs-types/bundler/index.d.ts.map +1 -1
  125. package/dist/cjs-types/cli/codegen.d.ts.map +1 -1
  126. package/dist/cjs-types/cli/configure.d.ts +6 -0
  127. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  128. package/dist/cjs-types/cli/deploy.d.ts +2 -0
  129. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  130. package/dist/cjs-types/cli/deploymentCreate.d.ts +6 -6
  131. package/dist/cjs-types/cli/deploymentSelect.d.ts.map +1 -1
  132. package/dist/cjs-types/cli/dev.d.ts +1 -0
  133. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  134. package/dist/cjs-types/cli/docs.d.ts.map +1 -1
  135. package/dist/cjs-types/cli/env.d.ts.map +1 -1
  136. package/dist/cjs-types/cli/envDefault.d.ts.map +1 -1
  137. package/dist/cjs-types/cli/generatedApi.d.ts +1 -1
  138. package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
  139. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  140. package/dist/cjs-types/cli/lib/checkForLargeIndexBackfill.d.ts +30 -0
  141. package/dist/cjs-types/cli/lib/checkForLargeIndexBackfill.d.ts.map +1 -0
  142. package/dist/cjs-types/cli/lib/checkForLargeIndexDeletion.d.ts +25 -6
  143. package/dist/cjs-types/cli/lib/checkForLargeIndexDeletion.d.ts.map +1 -1
  144. package/dist/cjs-types/cli/lib/checkForSlowSchemaValidation.d.ts +8 -0
  145. package/dist/cjs-types/cli/lib/checkForSlowSchemaValidation.d.ts.map +1 -0
  146. package/dist/cjs-types/cli/lib/checkForStagedValidatorDeletion.d.ts +17 -0
  147. package/dist/cjs-types/cli/lib/checkForStagedValidatorDeletion.d.ts.map +1 -0
  148. package/dist/cjs-types/cli/lib/codegen.d.ts +0 -2
  149. package/dist/cjs-types/cli/lib/codegen.d.ts.map +1 -1
  150. package/dist/cjs-types/cli/lib/command.d.ts +2 -0
  151. package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
  152. package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts +13 -0
  153. package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
  154. package/dist/cjs-types/cli/lib/components.d.ts +5 -0
  155. package/dist/cjs-types/cli/lib/components.d.ts.map +1 -1
  156. package/dist/cjs-types/cli/lib/config.d.ts +2 -1
  157. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  158. package/dist/cjs-types/cli/lib/deploy2.d.ts +8 -0
  159. package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
  160. package/dist/cjs-types/cli/lib/deployApi/evaluateSchema.d.ts +897 -0
  161. package/dist/cjs-types/cli/lib/deployApi/evaluateSchema.d.ts.map +1 -0
  162. package/dist/cjs-types/cli/lib/deployApi/finishPush.d.ts +1 -2
  163. package/dist/cjs-types/cli/lib/deployApi/finishPush.d.ts.map +1 -1
  164. package/dist/cjs-types/cli/lib/dev.d.ts +1 -0
  165. package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
  166. package/dist/cjs-types/cli/lib/formatValidationProgress.d.ts +8 -0
  167. package/dist/cjs-types/cli/lib/formatValidationProgress.d.ts.map +1 -0
  168. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +2 -0
  169. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  170. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts +2 -0
  171. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  172. package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  173. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts +1 -0
  174. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  175. package/dist/cjs-types/cli/lib/mcp/tools/env.d.ts +8 -5
  176. package/dist/cjs-types/cli/lib/mcp/tools/env.d.ts.map +1 -1
  177. package/dist/cjs-types/cli/lib/run.d.ts.map +1 -1
  178. package/dist/cjs-types/cli/lib/schemaEvaluation.d.ts +33 -0
  179. package/dist/cjs-types/cli/lib/schemaEvaluation.d.ts.map +1 -0
  180. package/dist/cjs-types/cli/lib/usageLimits.d.ts +1 -1
  181. package/dist/cjs-types/cli/lib/usageLimits.d.ts.map +1 -1
  182. package/dist/cjs-types/cli/lib/utils/mutex.d.ts +1 -3
  183. package/dist/cjs-types/cli/lib/utils/mutex.d.ts.map +1 -1
  184. package/dist/cjs-types/cli/lib/utils/utils.d.ts +15 -7
  185. package/dist/cjs-types/cli/lib/utils/utils.d.ts.map +1 -1
  186. package/dist/cjs-types/index.d.ts +1 -1
  187. package/dist/cjs-types/nextjs/index.d.ts +6 -6
  188. package/dist/cjs-types/nextjs/index.d.ts.map +1 -1
  189. package/dist/cjs-types/react/client.d.ts +15 -15
  190. package/dist/cjs-types/react/client.d.ts.map +1 -1
  191. package/dist/cjs-types/react/hydration.d.ts +3 -3
  192. package/dist/cjs-types/react/hydration.d.ts.map +1 -1
  193. package/dist/cjs-types/react/queries_observer.d.ts +9 -9
  194. package/dist/cjs-types/react/queries_observer.d.ts.map +1 -1
  195. package/dist/cjs-types/react/use_paginated_query2.d.ts.map +1 -1
  196. package/dist/cjs-types/react/use_queries.d.ts +14 -6
  197. package/dist/cjs-types/react/use_queries.d.ts.map +1 -1
  198. package/dist/cjs-types/server/api.d.ts +157 -7
  199. package/dist/cjs-types/server/api.d.ts.map +1 -1
  200. package/dist/cjs-types/server/components/index.d.ts +2 -2
  201. package/dist/cjs-types/server/components/index.d.ts.map +1 -1
  202. package/dist/cjs-types/server/cron.d.ts +21 -20
  203. package/dist/cjs-types/server/cron.d.ts.map +1 -1
  204. package/dist/cjs-types/server/impl/actions_impl.d.ts +22 -7
  205. package/dist/cjs-types/server/impl/actions_impl.d.ts.map +1 -1
  206. package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -1
  207. package/dist/cjs-types/server/impl/scheduler_impl.d.ts.map +1 -1
  208. package/dist/cjs-types/server/impl/storage_impl.d.ts.map +1 -1
  209. package/dist/cjs-types/server/index.d.ts +2 -2
  210. package/dist/cjs-types/server/index.d.ts.map +1 -1
  211. package/dist/cjs-types/server/meta.d.ts +63 -0
  212. package/dist/cjs-types/server/meta.d.ts.map +1 -1
  213. package/dist/cjs-types/server/registration.d.ts +17 -7
  214. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  215. package/dist/cjs-types/server/scheduler.d.ts +9 -7
  216. package/dist/cjs-types/server/scheduler.d.ts.map +1 -1
  217. package/dist/cjs-types/server/schema.d.ts +34 -0
  218. package/dist/cjs-types/server/schema.d.ts.map +1 -1
  219. package/dist/cjs-types/server/storage.d.ts.map +1 -1
  220. package/dist/cjs-types/values/validator.d.ts.map +1 -1
  221. package/dist/cjs-types/values/validators.d.ts +30 -0
  222. package/dist/cjs-types/values/validators.d.ts.map +1 -1
  223. package/dist/cjs-types/values/value.d.ts.map +1 -1
  224. package/dist/cli.bundle.cjs +2728 -1627
  225. package/dist/cli.bundle.cjs.map +4 -4
  226. package/dist/esm/browser/http_client.js.map +2 -2
  227. package/dist/esm/browser/query_options.js.map +2 -2
  228. package/dist/esm/browser/simple_client.js.map +2 -2
  229. package/dist/esm/browser/sync/optimistic_updates_impl.js.map +2 -2
  230. package/dist/esm/bundler/index.js +5 -4
  231. package/dist/esm/bundler/index.js.map +2 -2
  232. package/dist/esm/cli/codegen.js +0 -2
  233. package/dist/esm/cli/codegen.js.map +2 -2
  234. package/dist/esm/cli/configure.js +12 -4
  235. package/dist/esm/cli/configure.js.map +2 -2
  236. package/dist/esm/cli/deploy.js +28 -2
  237. package/dist/esm/cli/deploy.js.map +2 -2
  238. package/dist/esm/cli/deploymentSelect.js +6 -3
  239. package/dist/esm/cli/deploymentSelect.js.map +2 -2
  240. package/dist/esm/cli/dev.js +6 -0
  241. package/dist/esm/cli/dev.js.map +2 -2
  242. package/dist/esm/cli/docs.js +3 -43
  243. package/dist/esm/cli/docs.js.map +2 -2
  244. package/dist/esm/cli/env.js +11 -6
  245. package/dist/esm/cli/env.js.map +2 -2
  246. package/dist/esm/cli/envDefault.js +7 -2
  247. package/dist/esm/cli/envDefault.js.map +2 -2
  248. package/dist/esm/cli/lib/api.js +2 -0
  249. package/dist/esm/cli/lib/api.js.map +2 -2
  250. package/dist/esm/cli/lib/checkForLargeIndexBackfill.js +95 -0
  251. package/dist/esm/cli/lib/checkForLargeIndexBackfill.js.map +7 -0
  252. package/dist/esm/cli/lib/checkForLargeIndexDeletion.js +98 -69
  253. package/dist/esm/cli/lib/checkForLargeIndexDeletion.js.map +2 -2
  254. package/dist/esm/cli/lib/checkForSlowSchemaValidation.js +107 -0
  255. package/dist/esm/cli/lib/checkForSlowSchemaValidation.js.map +7 -0
  256. package/dist/esm/cli/lib/checkForStagedValidatorDeletion.js +68 -0
  257. package/dist/esm/cli/lib/checkForStagedValidatorDeletion.js.map +7 -0
  258. package/dist/esm/cli/lib/codegen.js.map +2 -2
  259. package/dist/esm/cli/lib/command.js +2 -1
  260. package/dist/esm/cli/lib/command.js.map +2 -2
  261. package/dist/esm/cli/lib/components/definition/bundle.js +37 -11
  262. package/dist/esm/cli/lib/components/definition/bundle.js.map +2 -2
  263. package/dist/esm/cli/lib/components.js +63 -1
  264. package/dist/esm/cli/lib/components.js.map +2 -2
  265. package/dist/esm/cli/lib/config.js +55 -17
  266. package/dist/esm/cli/lib/config.js.map +2 -2
  267. package/dist/esm/cli/lib/deploy2.js +33 -3
  268. package/dist/esm/cli/lib/deploy2.js.map +2 -2
  269. package/dist/esm/cli/lib/deployApi/evaluateSchema.js +72 -0
  270. package/dist/esm/cli/lib/deployApi/evaluateSchema.js.map +7 -0
  271. package/dist/esm/cli/lib/deployApi/finishPush.js +1 -1
  272. package/dist/esm/cli/lib/deployApi/finishPush.js.map +2 -2
  273. package/dist/esm/cli/lib/deployApi/startPush.js +1 -1
  274. package/dist/esm/cli/lib/deployApi/startPush.js.map +2 -2
  275. package/dist/esm/cli/lib/dev.js +6 -0
  276. package/dist/esm/cli/lib/dev.js.map +2 -2
  277. package/dist/esm/cli/lib/formatValidationProgress.js +24 -0
  278. package/dist/esm/cli/lib/formatValidationProgress.js.map +7 -0
  279. package/dist/esm/cli/lib/indexes.js.map +1 -1
  280. package/dist/esm/cli/lib/localDeployment/run.js +30 -2
  281. package/dist/esm/cli/lib/localDeployment/run.js.map +2 -2
  282. package/dist/esm/cli/lib/localDeployment/upgrade.js +4 -3
  283. package/dist/esm/cli/lib/localDeployment/upgrade.js.map +2 -2
  284. package/dist/esm/cli/lib/localDeployment/utils.js +3 -0
  285. package/dist/esm/cli/lib/localDeployment/utils.js.map +2 -2
  286. package/dist/esm/cli/lib/mcp/tools/env.js +10 -3
  287. package/dist/esm/cli/lib/mcp/tools/env.js.map +2 -2
  288. package/dist/esm/cli/lib/run.js +5 -0
  289. package/dist/esm/cli/lib/run.js.map +2 -2
  290. package/dist/esm/cli/lib/schemaEvaluation.js +39 -0
  291. package/dist/esm/cli/lib/schemaEvaluation.js.map +7 -0
  292. package/dist/esm/cli/lib/usageLimits.js +4 -2
  293. package/dist/esm/cli/lib/usageLimits.js.map +2 -2
  294. package/dist/esm/cli/lib/utils/mutex.js +9 -24
  295. package/dist/esm/cli/lib/utils/mutex.js.map +2 -2
  296. package/dist/esm/cli/lib/utils/utils.js +84 -49
  297. package/dist/esm/cli/lib/utils/utils.js.map +2 -2
  298. package/dist/esm/cli/projectCreate.js +1 -1
  299. package/dist/esm/cli/projectCreate.js.map +1 -1
  300. package/dist/esm/index.js +1 -1
  301. package/dist/esm/index.js.map +1 -1
  302. package/dist/esm/nextjs/index.js.map +2 -2
  303. package/dist/esm/react/client.js.map +2 -2
  304. package/dist/esm/react/hydration.js +3 -1
  305. package/dist/esm/react/hydration.js.map +2 -2
  306. package/dist/esm/react/queries_observer.js +3 -1
  307. package/dist/esm/react/queries_observer.js.map +2 -2
  308. package/dist/esm/react/use_paginated_query2.js +3 -1
  309. package/dist/esm/react/use_paginated_query2.js.map +2 -2
  310. package/dist/esm/react/use_queries.js.map +2 -2
  311. package/dist/esm/server/api.js.map +2 -2
  312. package/dist/esm/server/components/index.js.map +2 -2
  313. package/dist/esm/server/cron.js +13 -11
  314. package/dist/esm/server/cron.js.map +2 -2
  315. package/dist/esm/server/impl/actions_impl.js +7 -3
  316. package/dist/esm/server/impl/actions_impl.js.map +2 -2
  317. package/dist/esm/server/impl/meta_impl.js +9 -3
  318. package/dist/esm/server/impl/meta_impl.js.map +2 -2
  319. package/dist/esm/server/impl/scheduler_impl.js.map +2 -2
  320. package/dist/esm/server/impl/storage_impl.js +29 -0
  321. package/dist/esm/server/impl/storage_impl.js.map +2 -2
  322. package/dist/esm/server/index.js +4 -1
  323. package/dist/esm/server/index.js.map +2 -2
  324. package/dist/esm/server/schema.js +72 -3
  325. package/dist/esm/server/schema.js.map +2 -2
  326. package/dist/esm/values/validator.js +1 -1
  327. package/dist/esm/values/validator.js.map +2 -2
  328. package/dist/esm/values/validators.js +82 -26
  329. package/dist/esm/values/validators.js.map +2 -2
  330. package/dist/esm/values/value.js +6 -0
  331. package/dist/esm/values/value.js.map +2 -2
  332. package/dist/esm-types/browser/http_client.d.ts +5 -5
  333. package/dist/esm-types/browser/http_client.d.ts.map +1 -1
  334. package/dist/esm-types/browser/query_options.d.ts +2 -2
  335. package/dist/esm-types/browser/query_options.d.ts.map +1 -1
  336. package/dist/esm-types/browser/simple_client.d.ts +6 -6
  337. package/dist/esm-types/browser/simple_client.d.ts.map +1 -1
  338. package/dist/esm-types/browser/sync/optimistic_updates.d.ts +4 -4
  339. package/dist/esm-types/browser/sync/optimistic_updates.d.ts.map +1 -1
  340. package/dist/esm-types/browser/sync/optimistic_updates_impl.d.ts.map +1 -1
  341. package/dist/esm-types/bundler/index.d.ts +9 -2
  342. package/dist/esm-types/bundler/index.d.ts.map +1 -1
  343. package/dist/esm-types/cli/codegen.d.ts.map +1 -1
  344. package/dist/esm-types/cli/configure.d.ts +6 -0
  345. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  346. package/dist/esm-types/cli/deploy.d.ts +2 -0
  347. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  348. package/dist/esm-types/cli/deploymentCreate.d.ts +6 -6
  349. package/dist/esm-types/cli/deploymentSelect.d.ts.map +1 -1
  350. package/dist/esm-types/cli/dev.d.ts +1 -0
  351. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  352. package/dist/esm-types/cli/docs.d.ts.map +1 -1
  353. package/dist/esm-types/cli/env.d.ts.map +1 -1
  354. package/dist/esm-types/cli/envDefault.d.ts.map +1 -1
  355. package/dist/esm-types/cli/generatedApi.d.ts +1 -1
  356. package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
  357. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  358. package/dist/esm-types/cli/lib/checkForLargeIndexBackfill.d.ts +30 -0
  359. package/dist/esm-types/cli/lib/checkForLargeIndexBackfill.d.ts.map +1 -0
  360. package/dist/esm-types/cli/lib/checkForLargeIndexDeletion.d.ts +25 -6
  361. package/dist/esm-types/cli/lib/checkForLargeIndexDeletion.d.ts.map +1 -1
  362. package/dist/esm-types/cli/lib/checkForSlowSchemaValidation.d.ts +8 -0
  363. package/dist/esm-types/cli/lib/checkForSlowSchemaValidation.d.ts.map +1 -0
  364. package/dist/esm-types/cli/lib/checkForStagedValidatorDeletion.d.ts +17 -0
  365. package/dist/esm-types/cli/lib/checkForStagedValidatorDeletion.d.ts.map +1 -0
  366. package/dist/esm-types/cli/lib/codegen.d.ts +0 -2
  367. package/dist/esm-types/cli/lib/codegen.d.ts.map +1 -1
  368. package/dist/esm-types/cli/lib/command.d.ts +2 -0
  369. package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
  370. package/dist/esm-types/cli/lib/components/definition/bundle.d.ts +13 -0
  371. package/dist/esm-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
  372. package/dist/esm-types/cli/lib/components.d.ts +5 -0
  373. package/dist/esm-types/cli/lib/components.d.ts.map +1 -1
  374. package/dist/esm-types/cli/lib/config.d.ts +2 -1
  375. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  376. package/dist/esm-types/cli/lib/deploy2.d.ts +8 -0
  377. package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
  378. package/dist/esm-types/cli/lib/deployApi/evaluateSchema.d.ts +897 -0
  379. package/dist/esm-types/cli/lib/deployApi/evaluateSchema.d.ts.map +1 -0
  380. package/dist/esm-types/cli/lib/deployApi/finishPush.d.ts +1 -2
  381. package/dist/esm-types/cli/lib/deployApi/finishPush.d.ts.map +1 -1
  382. package/dist/esm-types/cli/lib/dev.d.ts +1 -0
  383. package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
  384. package/dist/esm-types/cli/lib/formatValidationProgress.d.ts +8 -0
  385. package/dist/esm-types/cli/lib/formatValidationProgress.d.ts.map +1 -0
  386. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +2 -0
  387. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  388. package/dist/esm-types/cli/lib/localDeployment/run.d.ts +2 -0
  389. package/dist/esm-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  390. package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  391. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts +1 -0
  392. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  393. package/dist/esm-types/cli/lib/mcp/tools/env.d.ts +8 -5
  394. package/dist/esm-types/cli/lib/mcp/tools/env.d.ts.map +1 -1
  395. package/dist/esm-types/cli/lib/run.d.ts.map +1 -1
  396. package/dist/esm-types/cli/lib/schemaEvaluation.d.ts +33 -0
  397. package/dist/esm-types/cli/lib/schemaEvaluation.d.ts.map +1 -0
  398. package/dist/esm-types/cli/lib/usageLimits.d.ts +1 -1
  399. package/dist/esm-types/cli/lib/usageLimits.d.ts.map +1 -1
  400. package/dist/esm-types/cli/lib/utils/mutex.d.ts +1 -3
  401. package/dist/esm-types/cli/lib/utils/mutex.d.ts.map +1 -1
  402. package/dist/esm-types/cli/lib/utils/utils.d.ts +15 -7
  403. package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
  404. package/dist/esm-types/index.d.ts +1 -1
  405. package/dist/esm-types/nextjs/index.d.ts +6 -6
  406. package/dist/esm-types/nextjs/index.d.ts.map +1 -1
  407. package/dist/esm-types/react/client.d.ts +15 -15
  408. package/dist/esm-types/react/client.d.ts.map +1 -1
  409. package/dist/esm-types/react/hydration.d.ts +3 -3
  410. package/dist/esm-types/react/hydration.d.ts.map +1 -1
  411. package/dist/esm-types/react/queries_observer.d.ts +9 -9
  412. package/dist/esm-types/react/queries_observer.d.ts.map +1 -1
  413. package/dist/esm-types/react/use_paginated_query2.d.ts.map +1 -1
  414. package/dist/esm-types/react/use_queries.d.ts +14 -6
  415. package/dist/esm-types/react/use_queries.d.ts.map +1 -1
  416. package/dist/esm-types/server/api.d.ts +157 -7
  417. package/dist/esm-types/server/api.d.ts.map +1 -1
  418. package/dist/esm-types/server/components/index.d.ts +2 -2
  419. package/dist/esm-types/server/components/index.d.ts.map +1 -1
  420. package/dist/esm-types/server/cron.d.ts +21 -20
  421. package/dist/esm-types/server/cron.d.ts.map +1 -1
  422. package/dist/esm-types/server/impl/actions_impl.d.ts +22 -7
  423. package/dist/esm-types/server/impl/actions_impl.d.ts.map +1 -1
  424. package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -1
  425. package/dist/esm-types/server/impl/scheduler_impl.d.ts.map +1 -1
  426. package/dist/esm-types/server/impl/storage_impl.d.ts.map +1 -1
  427. package/dist/esm-types/server/index.d.ts +2 -2
  428. package/dist/esm-types/server/index.d.ts.map +1 -1
  429. package/dist/esm-types/server/meta.d.ts +63 -0
  430. package/dist/esm-types/server/meta.d.ts.map +1 -1
  431. package/dist/esm-types/server/registration.d.ts +17 -7
  432. package/dist/esm-types/server/registration.d.ts.map +1 -1
  433. package/dist/esm-types/server/scheduler.d.ts +9 -7
  434. package/dist/esm-types/server/scheduler.d.ts.map +1 -1
  435. package/dist/esm-types/server/schema.d.ts +34 -0
  436. package/dist/esm-types/server/schema.d.ts.map +1 -1
  437. package/dist/esm-types/server/storage.d.ts.map +1 -1
  438. package/dist/esm-types/values/validator.d.ts.map +1 -1
  439. package/dist/esm-types/values/validators.d.ts +30 -0
  440. package/dist/esm-types/values/validators.d.ts.map +1 -1
  441. package/dist/esm-types/values/value.d.ts.map +1 -1
  442. package/dist/react.bundle.js +7 -1
  443. package/dist/react.bundle.js.map +2 -2
  444. package/package.json +9 -9
  445. package/schemas/convex.schema.json +5 -5
  446. package/src/browser/http_client.ts +43 -10
  447. package/src/browser/query_options.ts +11 -5
  448. package/src/browser/simple_client.ts +35 -14
  449. package/src/browser/sync/optimistic_updates.ts +17 -4
  450. package/src/browser/sync/optimistic_updates_impl.ts +17 -4
  451. package/src/bundler/index.ts +9 -4
  452. package/src/cli/codegen.ts +0 -1
  453. package/src/cli/configure.ts +27 -7
  454. package/src/cli/deploy.ts +37 -5
  455. package/src/cli/deploymentSelect.ts +7 -4
  456. package/src/cli/dev.ts +9 -0
  457. package/src/cli/docs.ts +3 -44
  458. package/src/cli/env.ts +12 -6
  459. package/src/cli/envDefault.ts +8 -2
  460. package/src/cli/generatedApi.ts +1 -1
  461. package/src/cli/lib/api.ts +5 -1
  462. package/src/cli/lib/checkForLargeIndexBackfill.ts +173 -0
  463. package/src/cli/lib/checkForLargeIndexDeletion.ts +150 -91
  464. package/src/cli/lib/checkForSlowSchemaValidation.ts +141 -0
  465. package/src/cli/lib/checkForStagedValidatorDeletion.ts +104 -0
  466. package/src/cli/lib/codegen.ts +0 -2
  467. package/src/cli/lib/command.ts +3 -0
  468. package/src/cli/lib/components/definition/bundle.ts +68 -14
  469. package/src/cli/lib/components.ts +84 -0
  470. package/src/cli/lib/config.ts +85 -18
  471. package/src/cli/lib/deploy2.ts +66 -2
  472. package/src/cli/lib/deployApi/evaluateSchema.ts +97 -0
  473. package/src/cli/lib/deployApi/finishPush.ts +1 -1
  474. package/src/cli/lib/deployApi/startPush.ts +1 -1
  475. package/src/cli/lib/dev.ts +15 -0
  476. package/src/cli/lib/formatValidationProgress.ts +35 -0
  477. package/src/cli/lib/generatedFunctionLogsApi.ts +2 -0
  478. package/src/cli/lib/indexes.ts +1 -1
  479. package/src/cli/lib/localDeployment/run.ts +44 -2
  480. package/src/cli/lib/localDeployment/upgrade.ts +4 -6
  481. package/src/cli/lib/localDeployment/utils.ts +6 -0
  482. package/src/cli/lib/mcp/tools/env.ts +17 -3
  483. package/src/cli/lib/run.ts +3 -0
  484. package/src/cli/lib/schemaEvaluation.ts +88 -0
  485. package/src/cli/lib/usageLimits.ts +2 -0
  486. package/src/cli/lib/utils/mutex.ts +9 -27
  487. package/src/cli/lib/utils/utils.ts +127 -56
  488. package/src/cli/projectCreate.ts +1 -1
  489. package/src/index.ts +1 -1
  490. package/src/nextjs/index.ts +19 -8
  491. package/src/react/client.ts +73 -30
  492. package/src/react/hydration.tsx +14 -6
  493. package/src/react/queries_observer.ts +19 -16
  494. package/src/react/use_paginated_query2.ts +10 -6
  495. package/src/react/use_queries.ts +23 -7
  496. package/src/server/api.ts +220 -14
  497. package/src/server/components/index.ts +4 -6
  498. package/src/server/cron.ts +34 -24
  499. package/src/server/impl/actions_impl.ts +39 -10
  500. package/src/server/impl/meta_impl.ts +8 -1
  501. package/src/server/impl/scheduler_impl.ts +13 -6
  502. package/src/server/impl/storage_impl.ts +30 -0
  503. package/src/server/index.ts +6 -1
  504. package/src/server/meta.ts +79 -0
  505. package/src/server/registration.ts +38 -7
  506. package/src/server/scheduler.ts +22 -7
  507. package/src/server/schema.ts +77 -0
  508. package/src/server/storage.ts +17 -0
  509. package/src/values/validator.ts +3 -1
  510. package/src/values/validators.ts +85 -27
  511. package/src/values/value.ts +9 -5
@@ -64,7 +64,7 @@ async function runProjectCreate(
64
64
  logMessage(
65
65
  chalkStderr.gray(
66
66
  `Next, add a deployment with ` +
67
- `\`npx convex deployment create ${team.slug}:${projectSlug}:dev --type dev\` ` +
67
+ `\`npx convex deployment create ${team.slug}:${projectSlug}:dev/my-feature --type dev --select\` ` +
68
68
  `(pass \`--region us\` to choose a region).`,
69
69
  ),
70
70
  );
package/src/index.ts CHANGED
@@ -1 +1 @@
1
- export const version = "1.45.0";
1
+ export const version = "1.47.0";
@@ -48,9 +48,10 @@ import { validateDeploymentUrl } from "../common/index.js";
48
48
  import { Preloaded } from "../react/index.js";
49
49
  import {
50
50
  ArgsAndOptions,
51
- FunctionReference,
52
51
  FunctionReturnType,
53
52
  getFunctionName,
53
+ FunctionReference,
54
+ FunctionReference_future,
54
55
  } from "../server/index.js";
55
56
  import { convexToJson, jsonToConvex } from "../values/index.js";
56
57
 
@@ -98,7 +99,9 @@ export type NextjsOptions = {
98
99
  * @param options - A {@link NextjsOptions} options object for the query.
99
100
  * @returns A promise of the `Preloaded` payload.
100
101
  */
101
- export async function preloadQuery<Query extends FunctionReference<"query">>(
102
+ export async function preloadQuery<
103
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
104
+ >(
102
105
  query: Query,
103
106
  ...args: ArgsAndOptions<Query, NextjsOptions>
104
107
  ): Promise<Preloaded<Query>> {
@@ -117,9 +120,9 @@ export async function preloadQuery<Query extends FunctionReference<"query">>(
117
120
  * @param preloaded - The `Preloaded` payload returned by {@link preloadQuery}.
118
121
  * @returns The query result.
119
122
  */
120
- export function preloadedQueryResult<Query extends FunctionReference<"query">>(
121
- preloaded: Preloaded<Query>,
122
- ): FunctionReturnType<Query> {
123
+ export function preloadedQueryResult<
124
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
125
+ >(preloaded: Preloaded<Query>): FunctionReturnType<Query> {
123
126
  return jsonToConvex(preloaded._valueJSON);
124
127
  }
125
128
 
@@ -133,7 +136,9 @@ export function preloadedQueryResult<Query extends FunctionReference<"query">>(
133
136
  * @param options - A {@link NextjsOptions} options object for the query.
134
137
  * @returns A promise of the query's result.
135
138
  */
136
- export async function fetchQuery<Query extends FunctionReference<"query">>(
139
+ export async function fetchQuery<
140
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
141
+ >(
137
142
  query: Query,
138
143
  ...args: ArgsAndOptions<Query, NextjsOptions>
139
144
  ): Promise<FunctionReturnType<Query>> {
@@ -153,7 +158,9 @@ export async function fetchQuery<Query extends FunctionReference<"query">>(
153
158
  * @returns A promise of the mutation's result.
154
159
  */
155
160
  export async function fetchMutation<
156
- Mutation extends FunctionReference<"mutation">,
161
+ Mutation extends
162
+ | FunctionReference<"mutation">
163
+ | FunctionReference_future<"mutation">,
157
164
  >(
158
165
  mutation: Mutation,
159
166
  ...args: ArgsAndOptions<Mutation, NextjsOptions>
@@ -173,7 +180,11 @@ export async function fetchMutation<
173
180
  * @param options - A {@link NextjsOptions} options object for the action.
174
181
  * @returns A promise of the action's result.
175
182
  */
176
- export async function fetchAction<Action extends FunctionReference<"action">>(
183
+ export async function fetchAction<
184
+ Action extends
185
+ | FunctionReference<"action">
186
+ | FunctionReference_future<"action">,
187
+ >(
177
188
  action: Action,
178
189
  ...args: ArgsAndOptions<Action, NextjsOptions>
179
190
  ): Promise<FunctionReturnType<Action>> {
@@ -21,11 +21,12 @@ import { parseArgs } from "../common/index.js";
21
21
  import {
22
22
  ArgsAndOptions,
23
23
  FunctionArgs,
24
- FunctionReference,
25
24
  FunctionReturnType,
26
25
  OptionalRestArgs,
27
26
  getFunctionName,
28
27
  makeFunctionReference,
28
+ FunctionReference,
29
+ FunctionReference_future,
29
30
  } from "../server/api.js";
30
31
  import { EmptyObject } from "../server/registration.js";
31
32
  import {
@@ -55,7 +56,11 @@ if (typeof React === "undefined") {
55
56
  *
56
57
  * @public
57
58
  */
58
- export interface ReactMutation<Mutation extends FunctionReference<"mutation">> {
59
+ export interface ReactMutation<
60
+ Mutation extends
61
+ | FunctionReference<"mutation">
62
+ | FunctionReference_future<"mutation">,
63
+ > {
59
64
  /**
60
65
  * Execute the mutation on the server, returning a `Promise` of its return value.
61
66
  *
@@ -95,7 +100,9 @@ export interface ReactMutation<Mutation extends FunctionReference<"mutation">> {
95
100
 
96
101
  // Exported only for testing.
97
102
  export function createMutation(
98
- mutationReference: FunctionReference<"mutation">,
103
+ mutationReference:
104
+ | FunctionReference<"mutation">
105
+ | FunctionReference_future<"mutation">,
99
106
  client: ConvexReactClient,
100
107
  update?: OptimisticUpdate<any>,
101
108
  ): ReactMutation<any> {
@@ -126,7 +133,11 @@ export function createMutation(
126
133
  *
127
134
  * @public
128
135
  */
129
- export interface ReactAction<Action extends FunctionReference<"action">> {
136
+ export interface ReactAction<
137
+ Action extends
138
+ | FunctionReference<"action">
139
+ | FunctionReference_future<"action">,
140
+ > {
130
141
  /**
131
142
  * Execute the function on the server, returning a `Promise` of its return value.
132
143
  *
@@ -138,7 +149,9 @@ export interface ReactAction<Action extends FunctionReference<"action">> {
138
149
  }
139
150
 
140
151
  function createAction(
141
- actionReference: FunctionReference<"action">,
152
+ actionReference:
153
+ | FunctionReference<"action">
154
+ | FunctionReference_future<"action">,
142
155
  client: ConvexReactClient,
143
156
  ): ReactAction<any> {
144
157
  return function (args?: Record<string, Value>): Promise<unknown> {
@@ -481,7 +494,11 @@ export class ConvexReactClient {
481
494
  *
482
495
  * @returns The {@link Watch} object.
483
496
  */
484
- watchQuery<Query extends FunctionReference<"query">>(
497
+ watchQuery<
498
+ Query extends
499
+ | FunctionReference<"query">
500
+ | FunctionReference_future<"query">,
501
+ >(
485
502
  query: Query,
486
503
  ...argsAndOptions: ArgsAndOptions<Query, WatchQueryOptions>
487
504
  ): Watch<FunctionReturnType<Query>> {
@@ -557,9 +574,11 @@ export class ConvexReactClient {
557
574
  * @param queryOptions - A query (function reference from an api object) and its args, plus
558
575
  * an optional extendSubscriptionFor for how long to subscribe to the query.
559
576
  */
560
- prewarmQuery<Query extends FunctionReference<"query">>(
561
- queryOptions: QueryOptions<Query> & { extendSubscriptionFor?: number },
562
- ) {
577
+ prewarmQuery<
578
+ Query extends
579
+ | FunctionReference<"query">
580
+ | FunctionReference_future<"query">,
581
+ >(queryOptions: QueryOptions<Query> & { extendSubscriptionFor?: number }) {
563
582
  const extendSubscriptionFor =
564
583
  queryOptions.extendSubscriptionFor ?? DEFAULT_EXTEND_SUBSCRIPTION_FOR;
565
584
  const watch = this.watchQuery(queryOptions.query, queryOptions.args || {});
@@ -584,9 +603,13 @@ export class ConvexReactClient {
584
603
  *
585
604
  * @internal
586
605
  */
587
- watchPaginatedQuery<Query extends FunctionReference<"query">>(
606
+ watchPaginatedQuery<
607
+ Query extends
608
+ | FunctionReference<"query">
609
+ | FunctionReference_future<"query">,
610
+ >(
588
611
  query: Query,
589
- args: Query["_args"],
612
+ args: FunctionArgs<Query>,
590
613
  options: WatchPaginatedQueryOptions,
591
614
  ): PaginatedWatch<FunctionReturnType<Query>> {
592
615
  const name = getFunctionName(query);
@@ -634,7 +657,11 @@ export class ConvexReactClient {
634
657
  * @param options - A {@link MutationOptions} options object for the mutation.
635
658
  * @returns A promise of the mutation's result.
636
659
  */
637
- mutation<Mutation extends FunctionReference<"mutation">>(
660
+ mutation<
661
+ Mutation extends
662
+ | FunctionReference<"mutation">
663
+ | FunctionReference_future<"mutation">,
664
+ >(
638
665
  mutation: Mutation,
639
666
  ...argsAndOptions: ArgsAndOptions<
640
667
  Mutation,
@@ -655,7 +682,11 @@ export class ConvexReactClient {
655
682
  * the arguments will be `{}`.
656
683
  * @returns A promise of the action's result.
657
684
  */
658
- action<Action extends FunctionReference<"action">>(
685
+ action<
686
+ Action extends
687
+ | FunctionReference<"action">
688
+ | FunctionReference_future<"action">,
689
+ >(
659
690
  action: Action,
660
691
  ...args: OptionalRestArgs<Action>
661
692
  ): Promise<FunctionReturnType<Action>> {
@@ -675,7 +706,11 @@ export class ConvexReactClient {
675
706
  * the arguments will be `{}`.
676
707
  * @returns A promise of the query's result.
677
708
  */
678
- query<Query extends FunctionReference<"query">>(
709
+ query<
710
+ Query extends
711
+ | FunctionReference<"query">
712
+ | FunctionReference_future<"query">,
713
+ >(
679
714
  query: Query,
680
715
  ...args: OptionalRestArgs<Query>
681
716
  ): Promise<FunctionReturnType<Query>> {
@@ -815,10 +850,12 @@ export const ConvexProvider: React.FC<{
815
850
  );
816
851
  };
817
852
 
818
- export type OptionalRestArgsOrSkip<FuncRef extends FunctionReference<any>> =
819
- FuncRef["_args"] extends EmptyObject
853
+ export type OptionalRestArgsOrSkip<
854
+ FuncRef extends FunctionReference<any> | FunctionReference_future<any>,
855
+ > =
856
+ FunctionArgs<FuncRef> extends EmptyObject
820
857
  ? [args?: EmptyObject | "skip"]
821
- : [args: FuncRef["_args"] | "skip"];
858
+ : [args: FunctionArgs<FuncRef> | "skip"];
822
859
 
823
860
  /**
824
861
  * Result returned by object-form {@link useQuery_experimental}.
@@ -831,7 +868,7 @@ export type UseQueryResult<QueryResult, ThrowOnError extends boolean = false> =
831
868
  | (ThrowOnError extends true ? never : { status: "error"; error: Error });
832
869
 
833
870
  type UseQueryOptions<
834
- Query extends FunctionReference<"query">,
871
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
835
872
  ThrowOnError extends boolean,
836
873
  > = {
837
874
  query: Query;
@@ -882,10 +919,12 @@ type UseQueryOptions<
882
919
  * @see https://docs.convex.dev/client/react#fetching-data
883
920
  * @public
884
921
  */
885
- export function useQuery<Query extends FunctionReference<"query">>(
922
+ export function useQuery<
923
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
924
+ >(
886
925
  query: Query,
887
926
  ...args: OptionalRestArgsOrSkip<Query>
888
- ): Query["_returnType"] | undefined {
927
+ ): FunctionReturnType<Query> | undefined {
889
928
  const skip = args[0] === "skip";
890
929
  const argsObject = args[0] === "skip" ? {} : parseArgs(args[0]);
891
930
  const queryReference =
@@ -947,18 +986,18 @@ export function useQuery<Query extends FunctionReference<"query">>(
947
986
  * @public
948
987
  */
949
988
  export function useQuery_experimental<
950
- Query extends FunctionReference<"query">,
989
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
951
990
  ThrowOnError extends boolean = false,
952
991
  >(
953
992
  options: UseQueryOptions<Query, ThrowOnError>,
954
- ): UseQueryResult<Query["_returnType"], ThrowOnError>;
993
+ ): UseQueryResult<FunctionReturnType<Query>, ThrowOnError>;
955
994
 
956
995
  export function useQuery_experimental<
957
- Query extends FunctionReference<"query">,
996
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
958
997
  ThrowOnError extends boolean = false,
959
998
  >(
960
999
  options: UseQueryOptions<Query, ThrowOnError>,
961
- ): UseQueryResult<Query["_returnType"], false> {
1000
+ ): UseQueryResult<FunctionReturnType<Query>, false> {
962
1001
  const throwOnError = options.throwOnError ?? false;
963
1002
  const queryReference =
964
1003
  typeof options.query === "string"
@@ -1042,9 +1081,11 @@ export function useQuery_experimental<
1042
1081
  * @see https://docs.convex.dev/client/react#editing-data
1043
1082
  * @public
1044
1083
  */
1045
- export function useMutation<Mutation extends FunctionReference<"mutation">>(
1046
- mutation: Mutation,
1047
- ): ReactMutation<Mutation> {
1084
+ export function useMutation<
1085
+ Mutation extends
1086
+ | FunctionReference<"mutation">
1087
+ | FunctionReference_future<"mutation">,
1088
+ >(mutation: Mutation): ReactMutation<Mutation> {
1048
1089
  const mutationReference =
1049
1090
  typeof mutation === "string"
1050
1091
  ? makeFunctionReference<"mutation", any, any>(mutation)
@@ -1111,9 +1152,11 @@ export function useMutation<Mutation extends FunctionReference<"mutation">>(
1111
1152
  * @see https://docs.convex.dev/functions/actions#calling-actions-from-clients
1112
1153
  * @public
1113
1154
  */
1114
- export function useAction<Action extends FunctionReference<"action">>(
1115
- action: Action,
1116
- ): ReactAction<Action> {
1155
+ export function useAction<
1156
+ Action extends
1157
+ | FunctionReference<"action">
1158
+ | FunctionReference_future<"action">,
1159
+ >(action: Action): ReactAction<Action> {
1117
1160
  const convex = useContext(ConvexContext);
1118
1161
  const actionReference =
1119
1162
  typeof action === "string"
@@ -1,6 +1,12 @@
1
1
  import { useMemo } from "react";
2
2
  import { useQuery } from "../react/client.js";
3
- import { FunctionReference, makeFunctionReference } from "../server/api.js";
3
+ import {
4
+ FunctionArgs,
5
+ FunctionReturnType,
6
+ makeFunctionReference,
7
+ FunctionReference,
8
+ FunctionReference_future,
9
+ } from "../server/api.js";
4
10
  import { jsonToConvex } from "../values/index.js";
5
11
 
6
12
  /**
@@ -9,7 +15,9 @@ import { jsonToConvex } from "../values/index.js";
9
15
  *
10
16
  * @public
11
17
  */
12
- export type Preloaded<Query extends FunctionReference<"query">> = {
18
+ export type Preloaded<
19
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
20
+ > = {
13
21
  __type: Query;
14
22
  _name: string;
15
23
  _argsJSON: string;
@@ -31,13 +39,13 @@ export type Preloaded<Query extends FunctionReference<"query">> = {
31
39
  *
32
40
  * @public
33
41
  */
34
- export function usePreloadedQuery<Query extends FunctionReference<"query">>(
35
- preloadedQuery: Preloaded<Query>,
36
- ): Query["_returnType"] {
42
+ export function usePreloadedQuery<
43
+ Query extends FunctionReference<"query"> | FunctionReference_future<"query">,
44
+ >(preloadedQuery: Preloaded<Query>): FunctionReturnType<Query> {
37
45
  const args = useMemo(
38
46
  () => jsonToConvex(preloadedQuery._argsJSON),
39
47
  [preloadedQuery._argsJSON],
40
- ) as Query["_args"];
48
+ ) as FunctionArgs<Query>;
41
49
  const preloadedResult = useMemo(
42
50
  () => jsonToConvex(preloadedQuery._valueJSON),
43
51
  [preloadedQuery._valueJSON],
@@ -1,15 +1,27 @@
1
1
  import { convexToJson, Value } from "../values/index.js";
2
2
  import { PaginatedWatch, Watch } from "./client.js";
3
3
  import { QueryJournal } from "../browser/sync/protocol.js";
4
- import { FunctionReference, getFunctionName } from "../server/api.js";
5
- import { RequestForQueries } from "./use_queries.js";
4
+ import {
5
+ getFunctionName,
6
+ FunctionReference,
7
+ FunctionReference_future,
8
+ } from "../server/api.js";
6
9
  import { PaginatedQueryResult } from "../browser/sync/pagination.js";
7
10
  import { SubscribeToPaginatedQueryOptions } from "../browser/sync/paginated_query_client.js";
8
11
 
9
12
  type Identifier = string;
10
13
 
14
+ type RequestForQueriesCompat = Record<
15
+ Identifier,
16
+ {
17
+ query: FunctionReference<"query"> | FunctionReference_future<"query">;
18
+ args: Record<string, Value>;
19
+ paginationOptions?: SubscribeToPaginatedQueryOptions;
20
+ }
21
+ >;
22
+
11
23
  type QueryInfo = {
12
- query: FunctionReference<"query">;
24
+ query: FunctionReference<"query"> | FunctionReference_future<"query">;
13
25
  args: Record<string, Value>;
14
26
  watch: Watch<Value> | PaginatedWatch<Value>;
15
27
  unsubscribe: () => void;
@@ -18,7 +30,7 @@ type QueryInfo = {
18
30
 
19
31
  export interface CreateWatch {
20
32
  (
21
- query: FunctionReference<"query">,
33
+ query: FunctionReference<"query"> | FunctionReference_future<"query">,
22
34
  args: Record<string, Value>,
23
35
  options: {
24
36
  journal?: QueryJournal;
@@ -44,16 +56,7 @@ export class QueriesObserver {
44
56
  this.listeners = new Set();
45
57
  }
46
58
 
47
- setQueries(
48
- newQueries: Record<
49
- Identifier,
50
- {
51
- query: FunctionReference<"query">;
52
- args: Record<string, Value>;
53
- paginationOptions?: SubscribeToPaginatedQueryOptions;
54
- }
55
- >,
56
- ) {
59
+ setQueries(newQueries: RequestForQueriesCompat) {
57
60
  // Add the new queries before unsubscribing from the old ones so that
58
61
  // the deduping in the `ConvexReactClient` can help if there are duplicates.
59
62
  for (const identifier of Object.keys(newQueries)) {
@@ -107,7 +110,7 @@ export class QueriesObserver {
107
110
  }
108
111
 
109
112
  getLocalResults(
110
- queries: RequestForQueries,
113
+ queries: RequestForQueriesCompat,
111
114
  ): Record<
112
115
  Identifier,
113
116
  Value | undefined | Error | PaginatedQueryResult<Value>
@@ -173,7 +176,7 @@ export class QueriesObserver {
173
176
 
174
177
  private addQuery(
175
178
  identifier: Identifier,
176
- query: FunctionReference<"query">,
179
+ query: FunctionReference<"query"> | FunctionReference_future<"query">,
177
180
  args: Record<string, Value>,
178
181
  {
179
182
  paginationOptions,
@@ -1,6 +1,10 @@
1
1
  import { useState } from "react";
2
2
 
3
- import { FunctionReference, getFunctionName } from "../server/api.js";
3
+ import {
4
+ FunctionReference,
5
+ FunctionReturnType,
6
+ getFunctionName,
7
+ } from "../server/api.js";
4
8
  import {
5
9
  PaginatedQueryReference,
6
10
  PaginatedQueryArgs,
@@ -255,7 +259,7 @@ export function usePaginatedQuery_experimental<
255
259
  throw new Error("Why is it missing?");
256
260
  }
257
261
  const internalResult = {
258
- results: [] as Query["_returnType"]["page"],
262
+ results: [] as FunctionReturnType<Query>["page"],
259
263
  status: "LoadingFirstPage" as const,
260
264
  isLoading: true as const,
261
265
  loadMore: function skipNOP(_numItems: number) {
@@ -270,7 +274,7 @@ export function usePaginatedQuery_experimental<
270
274
  return internalResult as unknown as UsePaginatedQueryReturnType<Query>;
271
275
  }
272
276
  const result = resultsObject.paginatedQuery as
273
- | PaginatedQueryResult<Query["_returnType"]["page"][number]>
277
+ | PaginatedQueryResult<FunctionReturnType<Query>["page"][number]>
274
278
  | Error;
275
279
 
276
280
  // TODO this is a weird mix of responsibilities:
@@ -279,7 +283,7 @@ export function usePaginatedQuery_experimental<
279
283
  // It comes back to why we'd ever get undefined when asking about a query; have we not yet called subscribe for it?
280
284
  if (result === undefined) {
281
285
  const internalResult = {
282
- results: [] as Query["_returnType"]["page"],
286
+ results: [] as FunctionReturnType<Query>["page"],
283
287
  loadMore: () => false,
284
288
  isLoading: true as const,
285
289
  status: "LoadingFirstPage" as const,
@@ -313,7 +317,7 @@ export function usePaginatedQuery_experimental<
313
317
  );
314
318
  setState(createInitialState);
315
319
  const internalResult = {
316
- results: [] as Query["_returnType"]["page"],
320
+ results: [] as FunctionReturnType<Query>["page"],
317
321
  loadMore: () => false,
318
322
  isLoading: true as const,
319
323
  status: "LoadingFirstPage" as const,
@@ -329,7 +333,7 @@ export function usePaginatedQuery_experimental<
329
333
  throw result;
330
334
  }
331
335
  const internalResult = {
332
- results: [] as Query["_returnType"]["page"],
336
+ results: [] as FunctionReturnType<Query>["page"],
333
337
  loadMore: () => false,
334
338
  isLoading: false as const,
335
339
  status: "Error" as const,
@@ -4,7 +4,7 @@ import { useConvex } from "./client.js";
4
4
  import { CreateWatch, QueriesObserver } from "./queries_observer.js";
5
5
  import { useSubscription } from "./use_subscription.js";
6
6
  import { QueryJournal } from "../browser/index.js";
7
- import { FunctionReference } from "../server/api.js";
7
+ import { FunctionReference, FunctionReference_future } from "../server/api.js";
8
8
  import { SubscribeToPaginatedQueryOptions } from "../browser/sync/paginated_query_client.js";
9
9
 
10
10
  /**
@@ -15,9 +15,10 @@ import { SubscribeToPaginatedQueryOptions } from "../browser/sync/paginated_quer
15
15
  * of queries without violating the rules of React hooks.
16
16
  *
17
17
  * This hook accepts an object whose keys are identifiers for each query and the
18
- * values are objects of `{ query: FunctionReference, args: Record<string, Value> }`. The
19
- * `query` is a FunctionReference for the Convex query function to load, and the `args` are
20
- * the arguments to that function.
18
+ * values are objects of
19
+ * `{ query: FunctionReference | FunctionReference_future, args: Record<string, Value> }`.
20
+ * The `query` is a reference to the Convex query function to load, and the
21
+ * `args` are the arguments to that function.
21
22
  *
22
23
  * The hook returns an object that maps each identifier to the result of the query,
23
24
  * `undefined` if the query is still loading, or an instance of `Error` if the query
@@ -59,7 +60,7 @@ import { SubscribeToPaginatedQueryOptions } from "../browser/sync/paginated_quer
59
60
  * @public
60
61
  */
61
62
  export function useQueries(
62
- queries: RequestForQueries,
63
+ queries: RequestForQueriesCompat,
63
64
  ): Record<string, any | undefined | Error> {
64
65
  const convex = useConvex();
65
66
  if (convex === undefined) {
@@ -73,7 +74,7 @@ export function useQueries(
73
74
  }
74
75
  const createWatch = useMemo(() => {
75
76
  return (
76
- query: FunctionReference<"query">,
77
+ query: FunctionReference<"query"> | FunctionReference_future<"query">,
77
78
  args: Record<string, Value>,
78
79
  {
79
80
  journal,
@@ -97,7 +98,7 @@ export function useQueries(
97
98
  * Internal version of `useQueries` that is exported for testing.
98
99
  */
99
100
  export function useQueriesHelper(
100
- queries: RequestForQueries,
101
+ queries: RequestForQueriesCompat,
101
102
  createWatch: CreateWatch,
102
103
  ): Record<string, any | undefined | Error> {
103
104
  const [observer] = useState(() => new QueriesObserver(createWatch));
@@ -143,3 +144,18 @@ export type RequestForQueries = Record<
143
144
  paginationOptions?: SubscribeToPaginatedQueryOptions;
144
145
  }
145
146
  >;
147
+
148
+ // The `queries` parameter of `useQueries`: `RequestForQueries` with `query`
149
+ // also accepting a `FunctionReference_future`. The exported type stays a plain
150
+ // reference so that code reading a `query` out of one gets a
151
+ // `FunctionReference` it can forward anywhere. Module-local so that a
152
+ // consumer's declaration file inlines it rather than importing it from a path
153
+ // outside the package's public entry points.
154
+ type RequestForQueriesCompat = Record<
155
+ string,
156
+ {
157
+ query: FunctionReference<"query"> | FunctionReference_future<"query">;
158
+ args: Record<string, Value>;
159
+ paginationOptions?: SubscribeToPaginatedQueryOptions;
160
+ }
161
+ >;