convex 1.46.0 → 1.48.0-alpha.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 (479) hide show
  1. package/CHANGELOG.md +58 -1
  2. package/dist/browser.bundle.js +7 -1
  3. package/dist/browser.bundle.js.map +2 -2
  4. package/dist/cjs/bundler/context.js +7 -5
  5. package/dist/cjs/bundler/context.js.map +2 -2
  6. package/dist/cjs/bundler/fs.js +47 -6
  7. package/dist/cjs/bundler/fs.js.map +2 -2
  8. package/dist/cjs/bundler/index.js +5 -4
  9. package/dist/cjs/bundler/index.js.map +2 -2
  10. package/dist/cjs/cli/account.js +237 -0
  11. package/dist/cjs/cli/account.js.map +7 -0
  12. package/dist/cjs/cli/codegen.js +0 -4
  13. package/dist/cjs/cli/codegen.js.map +2 -2
  14. package/dist/cjs/cli/configure.js +28 -6
  15. package/dist/cjs/cli/configure.js.map +2 -2
  16. package/dist/cjs/cli/deploy.js +27 -2
  17. package/dist/cjs/cli/deploy.js.map +2 -2
  18. package/dist/cjs/cli/deploymentSelect.js +2 -2
  19. package/dist/cjs/cli/deploymentSelect.js.map +2 -2
  20. package/dist/cjs/cli/dev.js +6 -0
  21. package/dist/cjs/cli/dev.js.map +2 -2
  22. package/dist/cjs/cli/env.js +10 -5
  23. package/dist/cjs/cli/env.js.map +2 -2
  24. package/dist/cjs/cli/envDefault.js +7 -2
  25. package/dist/cjs/cli/envDefault.js.map +2 -2
  26. package/dist/cjs/cli/generatedApi.js.map +1 -1
  27. package/dist/cjs/cli/lib/api.js +2 -0
  28. package/dist/cjs/cli/lib/api.js.map +2 -2
  29. package/dist/cjs/cli/lib/checkForLargeIndexBackfill.js +113 -0
  30. package/dist/cjs/cli/lib/checkForLargeIndexBackfill.js.map +7 -0
  31. package/dist/cjs/cli/lib/checkForLargeIndexDeletion.js +36 -47
  32. package/dist/cjs/cli/lib/checkForLargeIndexDeletion.js.map +2 -2
  33. package/dist/cjs/cli/lib/checkForSlowSchemaValidation.js +58 -39
  34. package/dist/cjs/cli/lib/checkForSlowSchemaValidation.js.map +2 -2
  35. package/dist/cjs/cli/lib/checkForStagedValidatorDeletion.js +90 -0
  36. package/dist/cjs/cli/lib/checkForStagedValidatorDeletion.js.map +7 -0
  37. package/dist/cjs/cli/lib/codegen.js.map +2 -2
  38. package/dist/cjs/cli/lib/command.js +2 -1
  39. package/dist/cjs/cli/lib/command.js.map +2 -2
  40. package/dist/cjs/cli/lib/components/definition/bundle.js +37 -11
  41. package/dist/cjs/cli/lib/components/definition/bundle.js.map +2 -2
  42. package/dist/cjs/cli/lib/components.js +48 -5
  43. package/dist/cjs/cli/lib/components.js.map +2 -2
  44. package/dist/cjs/cli/lib/config.js +56 -17
  45. package/dist/cjs/cli/lib/config.js.map +2 -2
  46. package/dist/cjs/cli/lib/deploy2.js +3 -1
  47. package/dist/cjs/cli/lib/deploy2.js.map +2 -2
  48. package/dist/cjs/cli/lib/deployApi/evaluateSchema.js +30 -2
  49. package/dist/cjs/cli/lib/deployApi/evaluateSchema.js.map +2 -2
  50. package/dist/cjs/cli/lib/deployKeyWarning.js +43 -0
  51. package/dist/cjs/cli/lib/deployKeyWarning.js.map +7 -0
  52. package/dist/cjs/cli/lib/deployment.js +2 -0
  53. package/dist/cjs/cli/lib/deployment.js.map +2 -2
  54. package/dist/cjs/cli/lib/deploymentSelection.js +27 -18
  55. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  56. package/dist/cjs/cli/lib/dev.js +5 -0
  57. package/dist/cjs/cli/lib/dev.js.map +2 -2
  58. package/dist/cjs/cli/lib/envvars.js +32 -0
  59. package/dist/cjs/cli/lib/envvars.js.map +2 -2
  60. package/dist/cjs/cli/lib/formatValidationProgress.js +47 -0
  61. package/dist/cjs/cli/lib/formatValidationProgress.js.map +7 -0
  62. package/dist/cjs/cli/lib/fsUtils.js +1 -1
  63. package/dist/cjs/cli/lib/fsUtils.js.map +2 -2
  64. package/dist/cjs/cli/lib/generateDocs.js +1 -1
  65. package/dist/cjs/cli/lib/generateDocs.js.map +1 -1
  66. package/dist/cjs/cli/lib/indexes.js.map +1 -1
  67. package/dist/cjs/cli/lib/login.js +28 -4
  68. package/dist/cjs/cli/lib/login.js.map +2 -2
  69. package/dist/cjs/cli/lib/mcp/requestContext.js +5 -1
  70. package/dist/cjs/cli/lib/mcp/requestContext.js.map +2 -2
  71. package/dist/cjs/cli/lib/mcp/tools/env.js +10 -3
  72. package/dist/cjs/cli/lib/mcp/tools/env.js.map +2 -2
  73. package/dist/cjs/cli/lib/profileManagement.js +196 -0
  74. package/dist/cjs/cli/lib/profileManagement.js.map +7 -0
  75. package/dist/cjs/cli/lib/profiles.js +333 -0
  76. package/dist/cjs/cli/lib/profiles.js.map +7 -0
  77. package/dist/cjs/cli/lib/run.js +4 -0
  78. package/dist/cjs/cli/lib/run.js.map +2 -2
  79. package/dist/cjs/cli/lib/schemaEvaluation.js +62 -0
  80. package/dist/cjs/cli/lib/schemaEvaluation.js.map +7 -0
  81. package/dist/cjs/cli/lib/usageLimits.js +4 -2
  82. package/dist/cjs/cli/lib/usageLimits.js.map +2 -2
  83. package/dist/cjs/cli/lib/utils/mutex.js +9 -24
  84. package/dist/cjs/cli/lib/utils/mutex.js.map +2 -2
  85. package/dist/cjs/cli/lib/utils/utils.js +66 -27
  86. package/dist/cjs/cli/lib/utils/utils.js.map +2 -2
  87. package/dist/cjs/cli/login.js +213 -114
  88. package/dist/cjs/cli/login.js.map +3 -3
  89. package/dist/cjs/cli/logout.js +113 -12
  90. package/dist/cjs/cli/logout.js.map +3 -3
  91. package/dist/cjs/cli/mcp.js +43 -10
  92. package/dist/cjs/cli/mcp.js.map +3 -3
  93. package/dist/cjs/cli/program.js +2 -1
  94. package/dist/cjs/cli/program.js.map +2 -2
  95. package/dist/cjs/cli/projectCreate.js +1 -1
  96. package/dist/cjs/cli/projectCreate.js.map +1 -1
  97. package/dist/cjs/index.js +1 -1
  98. package/dist/cjs/index.js.map +1 -1
  99. package/dist/cjs/server/impl/actions_impl.js +8 -3
  100. package/dist/cjs/server/impl/actions_impl.js.map +2 -2
  101. package/dist/cjs/server/impl/storage_impl.js +29 -0
  102. package/dist/cjs/server/impl/storage_impl.js.map +2 -2
  103. package/dist/cjs/server/index.js +1 -0
  104. package/dist/cjs/server/index.js.map +2 -2
  105. package/dist/cjs/server/meta.js.map +1 -1
  106. package/dist/cjs/server/registration.js.map +1 -1
  107. package/dist/cjs/server/schema.js +34 -12
  108. package/dist/cjs/server/schema.js.map +2 -2
  109. package/dist/cjs/server/storage.js.map +1 -1
  110. package/dist/cjs/values/validators.js +1 -1
  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/bundler/context.d.ts +5 -0
  115. package/dist/cjs-types/bundler/context.d.ts.map +1 -1
  116. package/dist/cjs-types/bundler/fs.d.ts +7 -2
  117. package/dist/cjs-types/bundler/fs.d.ts.map +1 -1
  118. package/dist/cjs-types/bundler/index.d.ts +9 -2
  119. package/dist/cjs-types/bundler/index.d.ts.map +1 -1
  120. package/dist/cjs-types/cli/account.d.ts +6 -0
  121. package/dist/cjs-types/cli/account.d.ts.map +1 -0
  122. package/dist/cjs-types/cli/codegen.d.ts.map +1 -1
  123. package/dist/cjs-types/cli/configure.d.ts +6 -0
  124. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  125. package/dist/cjs-types/cli/deploy.d.ts +2 -0
  126. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  127. package/dist/cjs-types/cli/deploymentCreate.d.ts +6 -6
  128. package/dist/cjs-types/cli/deploymentSelect.d.ts.map +1 -1
  129. package/dist/cjs-types/cli/dev.d.ts +1 -0
  130. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  131. package/dist/cjs-types/cli/env.d.ts.map +1 -1
  132. package/dist/cjs-types/cli/envDefault.d.ts.map +1 -1
  133. package/dist/cjs-types/cli/generatedApi.d.ts +1 -1
  134. package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
  135. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  136. package/dist/cjs-types/cli/lib/checkForLargeIndexBackfill.d.ts +30 -0
  137. package/dist/cjs-types/cli/lib/checkForLargeIndexBackfill.d.ts.map +1 -0
  138. package/dist/cjs-types/cli/lib/checkForLargeIndexDeletion.d.ts +5 -7
  139. package/dist/cjs-types/cli/lib/checkForLargeIndexDeletion.d.ts.map +1 -1
  140. package/dist/cjs-types/cli/lib/checkForSlowSchemaValidation.d.ts +4 -10
  141. package/dist/cjs-types/cli/lib/checkForSlowSchemaValidation.d.ts.map +1 -1
  142. package/dist/cjs-types/cli/lib/checkForStagedValidatorDeletion.d.ts +17 -0
  143. package/dist/cjs-types/cli/lib/checkForStagedValidatorDeletion.d.ts.map +1 -0
  144. package/dist/cjs-types/cli/lib/codegen.d.ts +0 -3
  145. package/dist/cjs-types/cli/lib/codegen.d.ts.map +1 -1
  146. package/dist/cjs-types/cli/lib/command.d.ts +2 -0
  147. package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
  148. package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts +13 -0
  149. package/dist/cjs-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
  150. package/dist/cjs-types/cli/lib/components.d.ts +4 -0
  151. package/dist/cjs-types/cli/lib/components.d.ts.map +1 -1
  152. package/dist/cjs-types/cli/lib/config.d.ts +2 -1
  153. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  154. package/dist/cjs-types/cli/lib/deploy2.d.ts +2 -0
  155. package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
  156. package/dist/cjs-types/cli/lib/deployApi/evaluateSchema.d.ts +460 -16
  157. package/dist/cjs-types/cli/lib/deployApi/evaluateSchema.d.ts.map +1 -1
  158. package/dist/cjs-types/cli/lib/deployKeyWarning.d.ts +3 -0
  159. package/dist/cjs-types/cli/lib/deployKeyWarning.d.ts.map +1 -0
  160. package/dist/cjs-types/cli/lib/deployment.d.ts +2 -0
  161. package/dist/cjs-types/cli/lib/deployment.d.ts.map +1 -1
  162. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts +2 -1
  163. package/dist/cjs-types/cli/lib/deploymentSelection.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/envvars.d.ts +6 -0
  167. package/dist/cjs-types/cli/lib/envvars.d.ts.map +1 -1
  168. package/dist/cjs-types/cli/lib/formatValidationProgress.d.ts +8 -0
  169. package/dist/cjs-types/cli/lib/formatValidationProgress.d.ts.map +1 -0
  170. package/dist/cjs-types/cli/lib/fsUtils.d.ts +1 -0
  171. package/dist/cjs-types/cli/lib/fsUtils.d.ts.map +1 -1
  172. package/dist/cjs-types/cli/lib/login.d.ts +3 -1
  173. package/dist/cjs-types/cli/lib/login.d.ts.map +1 -1
  174. package/dist/cjs-types/cli/lib/mcp/requestContext.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/mcp/tools/insights.d.ts +2 -2
  178. package/dist/cjs-types/cli/lib/profileManagement.d.ts +10 -0
  179. package/dist/cjs-types/cli/lib/profileManagement.d.ts.map +1 -0
  180. package/dist/cjs-types/cli/lib/profiles.d.ts +59 -0
  181. package/dist/cjs-types/cli/lib/profiles.d.ts.map +1 -0
  182. package/dist/cjs-types/cli/lib/run.d.ts.map +1 -1
  183. package/dist/cjs-types/cli/lib/schemaEvaluation.d.ts +33 -0
  184. package/dist/cjs-types/cli/lib/schemaEvaluation.d.ts.map +1 -0
  185. package/dist/cjs-types/cli/lib/usageLimits.d.ts +1 -1
  186. package/dist/cjs-types/cli/lib/usageLimits.d.ts.map +1 -1
  187. package/dist/cjs-types/cli/lib/utils/mutex.d.ts +1 -3
  188. package/dist/cjs-types/cli/lib/utils/mutex.d.ts.map +1 -1
  189. package/dist/cjs-types/cli/lib/utils/utils.d.ts +15 -2
  190. package/dist/cjs-types/cli/lib/utils/utils.d.ts.map +1 -1
  191. package/dist/cjs-types/cli/login.d.ts +21 -0
  192. package/dist/cjs-types/cli/login.d.ts.map +1 -1
  193. package/dist/cjs-types/cli/logout.d.ts +8 -1
  194. package/dist/cjs-types/cli/logout.d.ts.map +1 -1
  195. package/dist/cjs-types/cli/mcp.d.ts.map +1 -1
  196. package/dist/cjs-types/cli/program.d.ts.map +1 -1
  197. package/dist/cjs-types/index.d.ts +1 -1
  198. package/dist/cjs-types/index.d.ts.map +1 -1
  199. package/dist/cjs-types/server/impl/actions_impl.d.ts +18 -3
  200. package/dist/cjs-types/server/impl/actions_impl.d.ts.map +1 -1
  201. package/dist/cjs-types/server/impl/storage_impl.d.ts.map +1 -1
  202. package/dist/cjs-types/server/index.d.ts +1 -1
  203. package/dist/cjs-types/server/index.d.ts.map +1 -1
  204. package/dist/cjs-types/server/meta.d.ts +63 -0
  205. package/dist/cjs-types/server/meta.d.ts.map +1 -1
  206. package/dist/cjs-types/server/registration.d.ts +10 -0
  207. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  208. package/dist/cjs-types/server/schema.d.ts +33 -0
  209. package/dist/cjs-types/server/schema.d.ts.map +1 -1
  210. package/dist/cjs-types/server/storage.d.ts.map +1 -1
  211. package/dist/cjs-types/values/value.d.ts.map +1 -1
  212. package/dist/cli.bundle.cjs +4889 -2980
  213. package/dist/cli.bundle.cjs.map +4 -4
  214. package/dist/esm/bundler/context.js +7 -5
  215. package/dist/esm/bundler/context.js.map +2 -2
  216. package/dist/esm/bundler/fs.js +47 -6
  217. package/dist/esm/bundler/fs.js.map +2 -2
  218. package/dist/esm/bundler/index.js +5 -4
  219. package/dist/esm/bundler/index.js.map +2 -2
  220. package/dist/esm/cli/account.js +221 -0
  221. package/dist/esm/cli/account.js.map +7 -0
  222. package/dist/esm/cli/codegen.js +0 -4
  223. package/dist/esm/cli/codegen.js.map +2 -2
  224. package/dist/esm/cli/configure.js +27 -6
  225. package/dist/esm/cli/configure.js.map +2 -2
  226. package/dist/esm/cli/deploy.js +27 -2
  227. package/dist/esm/cli/deploy.js.map +2 -2
  228. package/dist/esm/cli/deploymentSelect.js +6 -3
  229. package/dist/esm/cli/deploymentSelect.js.map +2 -2
  230. package/dist/esm/cli/dev.js +6 -0
  231. package/dist/esm/cli/dev.js.map +2 -2
  232. package/dist/esm/cli/env.js +11 -6
  233. package/dist/esm/cli/env.js.map +2 -2
  234. package/dist/esm/cli/envDefault.js +7 -2
  235. package/dist/esm/cli/envDefault.js.map +2 -2
  236. package/dist/esm/cli/lib/api.js +2 -0
  237. package/dist/esm/cli/lib/api.js.map +2 -2
  238. package/dist/esm/cli/lib/checkForLargeIndexBackfill.js +95 -0
  239. package/dist/esm/cli/lib/checkForLargeIndexBackfill.js.map +7 -0
  240. package/dist/esm/cli/lib/checkForLargeIndexDeletion.js +37 -48
  241. package/dist/esm/cli/lib/checkForLargeIndexDeletion.js.map +2 -2
  242. package/dist/esm/cli/lib/checkForSlowSchemaValidation.js +63 -41
  243. package/dist/esm/cli/lib/checkForSlowSchemaValidation.js.map +2 -2
  244. package/dist/esm/cli/lib/checkForStagedValidatorDeletion.js +68 -0
  245. package/dist/esm/cli/lib/checkForStagedValidatorDeletion.js.map +7 -0
  246. package/dist/esm/cli/lib/codegen.js.map +2 -2
  247. package/dist/esm/cli/lib/command.js +2 -1
  248. package/dist/esm/cli/lib/command.js.map +2 -2
  249. package/dist/esm/cli/lib/components/definition/bundle.js +37 -11
  250. package/dist/esm/cli/lib/components/definition/bundle.js.map +2 -2
  251. package/dist/esm/cli/lib/components.js +55 -5
  252. package/dist/esm/cli/lib/components.js.map +2 -2
  253. package/dist/esm/cli/lib/config.js +55 -17
  254. package/dist/esm/cli/lib/config.js.map +2 -2
  255. package/dist/esm/cli/lib/deploy2.js +3 -1
  256. package/dist/esm/cli/lib/deploy2.js.map +2 -2
  257. package/dist/esm/cli/lib/deployApi/evaluateSchema.js +28 -2
  258. package/dist/esm/cli/lib/deployApi/evaluateSchema.js.map +2 -2
  259. package/dist/esm/cli/lib/deployKeyWarning.js +27 -0
  260. package/dist/esm/cli/lib/deployKeyWarning.js.map +7 -0
  261. package/dist/esm/cli/lib/deployment.js +2 -2
  262. package/dist/esm/cli/lib/deployment.js.map +2 -2
  263. package/dist/esm/cli/lib/deploymentSelection.js +35 -20
  264. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  265. package/dist/esm/cli/lib/dev.js +5 -0
  266. package/dist/esm/cli/lib/dev.js.map +2 -2
  267. package/dist/esm/cli/lib/envvars.js +35 -1
  268. package/dist/esm/cli/lib/envvars.js.map +2 -2
  269. package/dist/esm/cli/lib/formatValidationProgress.js +24 -0
  270. package/dist/esm/cli/lib/formatValidationProgress.js.map +7 -0
  271. package/dist/esm/cli/lib/fsUtils.js +1 -1
  272. package/dist/esm/cli/lib/fsUtils.js.map +2 -2
  273. package/dist/esm/cli/lib/generateDocs.js +1 -1
  274. package/dist/esm/cli/lib/generateDocs.js.map +1 -1
  275. package/dist/esm/cli/lib/indexes.js.map +1 -1
  276. package/dist/esm/cli/lib/login.js +36 -4
  277. package/dist/esm/cli/lib/login.js.map +2 -2
  278. package/dist/esm/cli/lib/mcp/requestContext.js +5 -1
  279. package/dist/esm/cli/lib/mcp/requestContext.js.map +2 -2
  280. package/dist/esm/cli/lib/mcp/tools/env.js +10 -3
  281. package/dist/esm/cli/lib/mcp/tools/env.js.map +2 -2
  282. package/dist/esm/cli/lib/profileManagement.js +179 -0
  283. package/dist/esm/cli/lib/profileManagement.js.map +7 -0
  284. package/dist/esm/cli/lib/profiles.js +288 -0
  285. package/dist/esm/cli/lib/profiles.js.map +7 -0
  286. package/dist/esm/cli/lib/run.js +4 -0
  287. package/dist/esm/cli/lib/run.js.map +2 -2
  288. package/dist/esm/cli/lib/schemaEvaluation.js +39 -0
  289. package/dist/esm/cli/lib/schemaEvaluation.js.map +7 -0
  290. package/dist/esm/cli/lib/usageLimits.js +4 -2
  291. package/dist/esm/cli/lib/usageLimits.js.map +2 -2
  292. package/dist/esm/cli/lib/utils/mutex.js +9 -24
  293. package/dist/esm/cli/lib/utils/mutex.js.map +2 -2
  294. package/dist/esm/cli/lib/utils/utils.js +63 -27
  295. package/dist/esm/cli/lib/utils/utils.js.map +2 -2
  296. package/dist/esm/cli/login.js +225 -112
  297. package/dist/esm/cli/login.js.map +3 -3
  298. package/dist/esm/cli/logout.js +110 -13
  299. package/dist/esm/cli/logout.js.map +2 -2
  300. package/dist/esm/cli/mcp.js +34 -10
  301. package/dist/esm/cli/mcp.js.map +2 -2
  302. package/dist/esm/cli/program.js +2 -1
  303. package/dist/esm/cli/program.js.map +2 -2
  304. package/dist/esm/cli/projectCreate.js +1 -1
  305. package/dist/esm/cli/projectCreate.js.map +1 -1
  306. package/dist/esm/index.js +1 -1
  307. package/dist/esm/index.js.map +1 -1
  308. package/dist/esm/server/impl/actions_impl.js +7 -3
  309. package/dist/esm/server/impl/actions_impl.js.map +2 -2
  310. package/dist/esm/server/impl/storage_impl.js +29 -0
  311. package/dist/esm/server/impl/storage_impl.js.map +2 -2
  312. package/dist/esm/server/index.js +4 -1
  313. package/dist/esm/server/index.js.map +2 -2
  314. package/dist/esm/server/schema.js +34 -12
  315. package/dist/esm/server/schema.js.map +2 -2
  316. package/dist/esm/values/validators.js +1 -1
  317. package/dist/esm/values/validators.js.map +2 -2
  318. package/dist/esm/values/value.js +6 -0
  319. package/dist/esm/values/value.js.map +2 -2
  320. package/dist/esm-types/bundler/context.d.ts +5 -0
  321. package/dist/esm-types/bundler/context.d.ts.map +1 -1
  322. package/dist/esm-types/bundler/fs.d.ts +7 -2
  323. package/dist/esm-types/bundler/fs.d.ts.map +1 -1
  324. package/dist/esm-types/bundler/index.d.ts +9 -2
  325. package/dist/esm-types/bundler/index.d.ts.map +1 -1
  326. package/dist/esm-types/cli/account.d.ts +6 -0
  327. package/dist/esm-types/cli/account.d.ts.map +1 -0
  328. package/dist/esm-types/cli/codegen.d.ts.map +1 -1
  329. package/dist/esm-types/cli/configure.d.ts +6 -0
  330. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  331. package/dist/esm-types/cli/deploy.d.ts +2 -0
  332. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  333. package/dist/esm-types/cli/deploymentCreate.d.ts +6 -6
  334. package/dist/esm-types/cli/deploymentSelect.d.ts.map +1 -1
  335. package/dist/esm-types/cli/dev.d.ts +1 -0
  336. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  337. package/dist/esm-types/cli/env.d.ts.map +1 -1
  338. package/dist/esm-types/cli/envDefault.d.ts.map +1 -1
  339. package/dist/esm-types/cli/generatedApi.d.ts +1 -1
  340. package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
  341. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  342. package/dist/esm-types/cli/lib/checkForLargeIndexBackfill.d.ts +30 -0
  343. package/dist/esm-types/cli/lib/checkForLargeIndexBackfill.d.ts.map +1 -0
  344. package/dist/esm-types/cli/lib/checkForLargeIndexDeletion.d.ts +5 -7
  345. package/dist/esm-types/cli/lib/checkForLargeIndexDeletion.d.ts.map +1 -1
  346. package/dist/esm-types/cli/lib/checkForSlowSchemaValidation.d.ts +4 -10
  347. package/dist/esm-types/cli/lib/checkForSlowSchemaValidation.d.ts.map +1 -1
  348. package/dist/esm-types/cli/lib/checkForStagedValidatorDeletion.d.ts +17 -0
  349. package/dist/esm-types/cli/lib/checkForStagedValidatorDeletion.d.ts.map +1 -0
  350. package/dist/esm-types/cli/lib/codegen.d.ts +0 -3
  351. package/dist/esm-types/cli/lib/codegen.d.ts.map +1 -1
  352. package/dist/esm-types/cli/lib/command.d.ts +2 -0
  353. package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
  354. package/dist/esm-types/cli/lib/components/definition/bundle.d.ts +13 -0
  355. package/dist/esm-types/cli/lib/components/definition/bundle.d.ts.map +1 -1
  356. package/dist/esm-types/cli/lib/components.d.ts +4 -0
  357. package/dist/esm-types/cli/lib/components.d.ts.map +1 -1
  358. package/dist/esm-types/cli/lib/config.d.ts +2 -1
  359. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  360. package/dist/esm-types/cli/lib/deploy2.d.ts +2 -0
  361. package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
  362. package/dist/esm-types/cli/lib/deployApi/evaluateSchema.d.ts +460 -16
  363. package/dist/esm-types/cli/lib/deployApi/evaluateSchema.d.ts.map +1 -1
  364. package/dist/esm-types/cli/lib/deployKeyWarning.d.ts +3 -0
  365. package/dist/esm-types/cli/lib/deployKeyWarning.d.ts.map +1 -0
  366. package/dist/esm-types/cli/lib/deployment.d.ts +2 -0
  367. package/dist/esm-types/cli/lib/deployment.d.ts.map +1 -1
  368. package/dist/esm-types/cli/lib/deploymentSelection.d.ts +2 -1
  369. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  370. package/dist/esm-types/cli/lib/dev.d.ts +1 -0
  371. package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
  372. package/dist/esm-types/cli/lib/envvars.d.ts +6 -0
  373. package/dist/esm-types/cli/lib/envvars.d.ts.map +1 -1
  374. package/dist/esm-types/cli/lib/formatValidationProgress.d.ts +8 -0
  375. package/dist/esm-types/cli/lib/formatValidationProgress.d.ts.map +1 -0
  376. package/dist/esm-types/cli/lib/fsUtils.d.ts +1 -0
  377. package/dist/esm-types/cli/lib/fsUtils.d.ts.map +1 -1
  378. package/dist/esm-types/cli/lib/login.d.ts +3 -1
  379. package/dist/esm-types/cli/lib/login.d.ts.map +1 -1
  380. package/dist/esm-types/cli/lib/mcp/requestContext.d.ts.map +1 -1
  381. package/dist/esm-types/cli/lib/mcp/tools/env.d.ts +8 -5
  382. package/dist/esm-types/cli/lib/mcp/tools/env.d.ts.map +1 -1
  383. package/dist/esm-types/cli/lib/mcp/tools/insights.d.ts +2 -2
  384. package/dist/esm-types/cli/lib/profileManagement.d.ts +10 -0
  385. package/dist/esm-types/cli/lib/profileManagement.d.ts.map +1 -0
  386. package/dist/esm-types/cli/lib/profiles.d.ts +59 -0
  387. package/dist/esm-types/cli/lib/profiles.d.ts.map +1 -0
  388. package/dist/esm-types/cli/lib/run.d.ts.map +1 -1
  389. package/dist/esm-types/cli/lib/schemaEvaluation.d.ts +33 -0
  390. package/dist/esm-types/cli/lib/schemaEvaluation.d.ts.map +1 -0
  391. package/dist/esm-types/cli/lib/usageLimits.d.ts +1 -1
  392. package/dist/esm-types/cli/lib/usageLimits.d.ts.map +1 -1
  393. package/dist/esm-types/cli/lib/utils/mutex.d.ts +1 -3
  394. package/dist/esm-types/cli/lib/utils/mutex.d.ts.map +1 -1
  395. package/dist/esm-types/cli/lib/utils/utils.d.ts +15 -2
  396. package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
  397. package/dist/esm-types/cli/login.d.ts +21 -0
  398. package/dist/esm-types/cli/login.d.ts.map +1 -1
  399. package/dist/esm-types/cli/logout.d.ts +8 -1
  400. package/dist/esm-types/cli/logout.d.ts.map +1 -1
  401. package/dist/esm-types/cli/mcp.d.ts.map +1 -1
  402. package/dist/esm-types/cli/program.d.ts.map +1 -1
  403. package/dist/esm-types/index.d.ts +1 -1
  404. package/dist/esm-types/index.d.ts.map +1 -1
  405. package/dist/esm-types/server/impl/actions_impl.d.ts +18 -3
  406. package/dist/esm-types/server/impl/actions_impl.d.ts.map +1 -1
  407. package/dist/esm-types/server/impl/storage_impl.d.ts.map +1 -1
  408. package/dist/esm-types/server/index.d.ts +1 -1
  409. package/dist/esm-types/server/index.d.ts.map +1 -1
  410. package/dist/esm-types/server/meta.d.ts +63 -0
  411. package/dist/esm-types/server/meta.d.ts.map +1 -1
  412. package/dist/esm-types/server/registration.d.ts +10 -0
  413. package/dist/esm-types/server/registration.d.ts.map +1 -1
  414. package/dist/esm-types/server/schema.d.ts +33 -0
  415. package/dist/esm-types/server/schema.d.ts.map +1 -1
  416. package/dist/esm-types/server/storage.d.ts.map +1 -1
  417. package/dist/esm-types/values/value.d.ts.map +1 -1
  418. package/dist/react.bundle.js +7 -1
  419. package/dist/react.bundle.js.map +2 -2
  420. package/package.json +5 -5
  421. package/schemas/convex.schema.json +5 -5
  422. package/src/bundler/context.ts +9 -5
  423. package/src/bundler/fs.ts +54 -5
  424. package/src/bundler/index.ts +9 -4
  425. package/src/cli/account.ts +320 -0
  426. package/src/cli/codegen.ts +0 -2
  427. package/src/cli/configure.ts +45 -9
  428. package/src/cli/deploy.ts +36 -5
  429. package/src/cli/deploymentSelect.ts +7 -4
  430. package/src/cli/dev.ts +9 -0
  431. package/src/cli/env.ts +12 -6
  432. package/src/cli/envDefault.ts +8 -2
  433. package/src/cli/generatedApi.ts +1 -1
  434. package/src/cli/lib/api.ts +5 -1
  435. package/src/cli/lib/checkForLargeIndexBackfill.ts +173 -0
  436. package/src/cli/lib/checkForLargeIndexDeletion.ts +45 -58
  437. package/src/cli/lib/checkForSlowSchemaValidation.ts +76 -65
  438. package/src/cli/lib/checkForStagedValidatorDeletion.ts +104 -0
  439. package/src/cli/lib/codegen.ts +0 -3
  440. package/src/cli/lib/command.ts +3 -0
  441. package/src/cli/lib/components/definition/bundle.ts +68 -14
  442. package/src/cli/lib/components.ts +71 -4
  443. package/src/cli/lib/config.ts +85 -18
  444. package/src/cli/lib/deploy2.ts +10 -1
  445. package/src/cli/lib/deployApi/evaluateSchema.ts +35 -0
  446. package/src/cli/lib/deployKeyWarning.ts +43 -0
  447. package/src/cli/lib/deployment.ts +2 -2
  448. package/src/cli/lib/deploymentSelection.ts +37 -18
  449. package/src/cli/lib/dev.ts +14 -0
  450. package/src/cli/lib/envvars.ts +43 -1
  451. package/src/cli/lib/formatValidationProgress.ts +35 -0
  452. package/src/cli/lib/fsUtils.ts +5 -2
  453. package/src/cli/lib/generateDocs.ts +1 -1
  454. package/src/cli/lib/indexes.ts +1 -1
  455. package/src/cli/lib/login.ts +47 -3
  456. package/src/cli/lib/mcp/requestContext.ts +7 -1
  457. package/src/cli/lib/mcp/tools/env.ts +17 -3
  458. package/src/cli/lib/profileManagement.ts +262 -0
  459. package/src/cli/lib/profiles.ts +398 -0
  460. package/src/cli/lib/run.ts +2 -0
  461. package/src/cli/lib/schemaEvaluation.ts +88 -0
  462. package/src/cli/lib/usageLimits.ts +2 -0
  463. package/src/cli/lib/utils/mutex.ts +9 -27
  464. package/src/cli/lib/utils/utils.ts +83 -36
  465. package/src/cli/login.ts +293 -168
  466. package/src/cli/logout.ts +142 -17
  467. package/src/cli/mcp.ts +48 -11
  468. package/src/cli/program.ts +2 -0
  469. package/src/cli/projectCreate.ts +1 -1
  470. package/src/index.ts +1 -1
  471. package/src/server/impl/actions_impl.ts +26 -6
  472. package/src/server/impl/storage_impl.ts +30 -0
  473. package/src/server/index.ts +5 -1
  474. package/src/server/meta.ts +56 -2
  475. package/src/server/registration.ts +10 -0
  476. package/src/server/schema.ts +37 -15
  477. package/src/server/storage.ts +17 -0
  478. package/src/values/validators.ts +1 -1
  479. package/src/values/value.ts +9 -5
@@ -1,4 +1,5 @@
1
1
  import { chalkStderr } from "chalk";
2
+ import { handleNoAccessToConfiguredProject } from "./account.js";
2
3
  import { Context } from "../bundler/context.js";
3
4
  import {
4
5
  logFailure,
@@ -122,17 +123,22 @@ export async function deploymentCredentialsOrConfigure(
122
123
  chosenConfiguration,
123
124
  cmdOptions,
124
125
  );
125
- const { convexSiteUrl: siteUrl } = await fetchDeploymentCanonicalUrls(ctx, {
126
- adminKey: selectedDeployment.adminKey,
127
- deploymentUrl: selectedDeployment.url,
128
- });
126
+ const { convexCloudUrl, convexSiteUrl: siteUrl } =
127
+ await fetchDeploymentCanonicalUrls(ctx, {
128
+ adminKey: selectedDeployment.adminKey,
129
+ deploymentUrl: selectedDeployment.url,
130
+ });
131
+ const applicationUrl = deploymentUrlForApplicationEnv(
132
+ selectedDeployment,
133
+ convexCloudUrl,
134
+ );
129
135
 
130
136
  if (selectedDeployment.deploymentFields !== null) {
131
137
  // Set the `CONVEX_DEPLOYMENT` env var + the `CONVEX_URL` env var
132
138
  await updateEnvAndConfigForDeploymentSelection(
133
139
  ctx,
134
140
  {
135
- url: selectedDeployment.url,
141
+ url: applicationUrl,
136
142
  siteUrl,
137
143
  deploymentName: selectedDeployment.deploymentFields.deploymentName,
138
144
  teamSlug: selectedDeployment.deploymentFields.teamSlug,
@@ -160,6 +166,21 @@ export async function deploymentCredentialsOrConfigure(
160
166
  };
161
167
  }
162
168
 
169
+ export function deploymentUrlForApplicationEnv(
170
+ selectedDeployment: {
171
+ url: string;
172
+ deploymentFields: { deploymentType: DeploymentType } | null;
173
+ },
174
+ canonicalCloudUrl: string,
175
+ ): string {
176
+ const deploymentType = selectedDeployment.deploymentFields?.deploymentType;
177
+ return deploymentType !== undefined &&
178
+ deploymentType !== "local" &&
179
+ deploymentType !== "anonymous"
180
+ ? canonicalCloudUrl
181
+ : selectedDeployment.url;
182
+ }
183
+
163
184
  export async function _deploymentCredentialsOrConfigure(
164
185
  ctx: Context,
165
186
  deploymentSelection: DeploymentSelection,
@@ -330,11 +351,26 @@ async function handleDeploymentWithinProject(
330
351
  return result;
331
352
  }
332
353
 
333
- const accessResult = await checkAccessToSelectedProject(
354
+ let accessResult = await checkAccessToSelectedProject(
334
355
  ctx,
335
356
  deploymentSelection.targetProject,
336
357
  );
337
- if (accessResult.kind === "noAccess") {
358
+ while (accessResult.kind === "noAccess") {
359
+ const next =
360
+ cmdOptions.team !== undefined && cmdOptions.project !== undefined
361
+ ? "chooseProject"
362
+ : await handleNoAccessToConfiguredProject(
363
+ ctx,
364
+ deploymentSelection.targetProject,
365
+ cmdOptions.envFile,
366
+ );
367
+ if (next === "retry") {
368
+ accessResult = await checkAccessToSelectedProject(
369
+ ctx,
370
+ deploymentSelection.targetProject,
371
+ );
372
+ continue;
373
+ }
338
374
  logMessage("You don't have access to the selected project.");
339
375
  const result = await handleChooseProject(
340
376
  ctx,
@@ -608,14 +644,14 @@ async function selectExistingProject(
608
644
  devDeployment: "cloud" | "local";
609
645
  }> {
610
646
  const {
611
- team: { slug: teamSlug },
647
+ team: { id: teamId, slug: teamSlug },
612
648
  chosen,
613
649
  } = await validateOrSelectTeam(ctx, config.team, "Team:");
614
650
 
615
651
  const projectSlug = await validateOrSelectProject(
616
652
  ctx,
617
653
  config.project,
618
- teamSlug,
654
+ teamId,
619
655
  "Configure project",
620
656
  "Project:",
621
657
  );
package/src/cli/deploy.ts CHANGED
@@ -111,10 +111,23 @@ Same format as .env.local or .env files, and overrides them.`,
111
111
  ).hideHelp(),
112
112
  )
113
113
  .addOption(
114
- new Option("--allow-deleting-large-indexes")
115
- .hideHelp()
116
- .conflicts("preview-create")
117
- .conflicts("preview-name"),
114
+ new Option(
115
+ "--skip-large-indexes-check",
116
+ "Skip the confirmation prompt when this push creates, changes, or deletes an index on a large table. Creating or changing an index blocks the deploy until it is backfilled; consider staging it instead so it backfills in the background.",
117
+ ),
118
+ )
119
+ .addOption(
120
+ // Predecessor of --skip-large-indexes-check, kept hidden so existing
121
+ // deploy scripts keep working. It still skips only the deletion
122
+ // confirmation: scripts that opted into that never agreed to let a
123
+ // blocking backfill through.
124
+ new Option("--allow-deleting-large-indexes").hideHelp(),
125
+ )
126
+ .addOption(
127
+ new Option(
128
+ "--allow-unstaging-schema",
129
+ "Skip the confirmation prompt when this push discards a staged table validator that is validating or already validated.",
130
+ ),
118
131
  )
119
132
  .showHelpAfterError()
120
133
  .action(async (cmdOptions) => {
@@ -181,6 +194,7 @@ Same format as .env.local or .env files, and overrides them.`,
181
194
  ...cmdOptions,
182
195
  previewName: previewName ?? undefined,
183
196
  reuse,
197
+ skipLargeIndexesCheck: cmdOptions.skipLargeIndexesCheck ?? false,
184
198
  message: cmdOptions.message ?? getDefaultDeployMessage(),
185
199
  },
186
200
  );
@@ -204,8 +218,10 @@ Same format as .env.local or .env files, and overrides them.`,
204
218
  await deployToExistingDeployment(ctx, deploymentSelection, {
205
219
  ...cmdOptions,
206
220
  skipWorkosCheck: cmdOptions.skipWorkosCheck ?? false,
221
+ skipLargeIndexesCheck: cmdOptions.skipLargeIndexesCheck ?? false,
207
222
  allowDeletingLargeIndexes:
208
223
  cmdOptions.allowDeletingLargeIndexes ?? false,
224
+ allowUnstagingSchema: cmdOptions.allowUnstagingSchema ?? false,
209
225
  message: cmdOptions.message ?? getDefaultDeployMessage(),
210
226
  });
211
227
  }
@@ -237,6 +253,7 @@ async function deployToNewPreviewDeployment(
237
253
  debug?: boolean | undefined;
238
254
  debugBundlePath?: string | undefined;
239
255
  skipWorkosCheck?: boolean | undefined;
256
+ skipLargeIndexesCheck: boolean;
240
257
  message: string | null;
241
258
  },
242
259
  ) {
@@ -319,7 +336,8 @@ async function deployToNewPreviewDeployment(
319
336
  });
320
337
 
321
338
  const pushOptions: PushOptions = {
322
- deploymentName: null,
339
+ deploymentName: data.deploymentName,
340
+ deploymentType: "preview",
323
341
  adminKey: previewAdminKey,
324
342
  verbose: !!options.verbose,
325
343
  dryRun: false,
@@ -333,6 +351,17 @@ async function deployToNewPreviewDeployment(
333
351
  liveComponentSources: false,
334
352
  pushAllModules: !!options.pushAllModules,
335
353
  largeIndexDeletionCheck: "no verification", // fine for preview deployments
354
+ // A freshly claimed preview has no data to backfill. A reused one keeps
355
+ // the data earlier pushes wrote, so an unstaged index there can block
356
+ // the deploy like on any other deployment.
357
+ largeIndexBackfillCheck: data.isNewDeployment
358
+ ? "no verification"
359
+ : options.skipLargeIndexesCheck
360
+ ? "has confirmation"
361
+ : "ask for confirmation",
362
+ // Staged validation on throwaway preview data is cheap to redo, so
363
+ // discarding it needs no confirmation.
364
+ stagedValidatorDeletionCheck: "no verification",
336
365
  warnOnSlowSchemaValidation: true,
337
366
  message: options.message,
338
367
  };
@@ -378,7 +407,9 @@ async function deployToExistingDeployment(
378
407
  liveComponentSources?: boolean | undefined;
379
408
  envFile?: string | undefined;
380
409
  skipWorkosCheck?: boolean | undefined;
410
+ skipLargeIndexesCheck: boolean;
381
411
  allowDeletingLargeIndexes: boolean;
412
+ allowUnstagingSchema: boolean;
382
413
  message: string | null;
383
414
  },
384
415
  ) {
@@ -12,7 +12,10 @@ import {
12
12
  parseDeploymentSelector,
13
13
  ParsedDeploymentSelector,
14
14
  } from "./lib/deploymentSelector.js";
15
- import { updateEnvAndConfigForDeploymentSelection } from "./configure.js";
15
+ import {
16
+ deploymentUrlForApplicationEnv,
17
+ updateEnvAndConfigForDeploymentSelection,
18
+ } from "./configure.js";
16
19
  import { fetchDeploymentCanonicalUrls } from "./lib/deploy2.js";
17
20
  import {
18
21
  loadProjectLocalConfig,
@@ -267,9 +270,9 @@ export async function saveSelectedDeployment(
267
270
  });
268
271
  }
269
272
 
270
- const { convexSiteUrl: siteUrl } =
273
+ const { convexCloudUrl, convexSiteUrl: siteUrl } =
271
274
  deployment.deploymentFields.deploymentType === "local"
272
- ? { convexSiteUrl: null }
275
+ ? { convexCloudUrl: deployment.url, convexSiteUrl: null }
273
276
  : await fetchDeploymentCanonicalUrls(ctx, {
274
277
  adminKey: deployment.adminKey,
275
278
  deploymentUrl: deployment.url,
@@ -278,7 +281,7 @@ export async function saveSelectedDeployment(
278
281
  await updateEnvAndConfigForDeploymentSelection(
279
282
  ctx,
280
283
  {
281
- url: deployment.url,
284
+ url: deploymentUrlForApplicationEnv(deployment, convexCloudUrl),
282
285
  siteUrl,
283
286
  deploymentName: deployment.deploymentFields.deploymentName,
284
287
  teamSlug: deployment.deploymentFields.teamSlug,
package/src/cli/dev.ts CHANGED
@@ -143,6 +143,15 @@ export const dev = new Command("dev")
143
143
  .default(false)
144
144
  .hideHelp(),
145
145
  )
146
+ .addOption(
147
+ // Only `--prod` pushes check this; hidden alongside it.
148
+ new Option(
149
+ "--allow-unstaging-schema",
150
+ "Skip the confirmation prompt when a push to production discards a staged table validator that is validating or already validated.",
151
+ )
152
+ .default(false)
153
+ .hideHelp(),
154
+ )
146
155
  .addOption(
147
156
  new Option(
148
157
  "--env-file <envFile>",
package/src/cli/env.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Command } from "@commander-js/extra-typings";
1
+ import { Command, Option } from "@commander-js/extra-typings";
2
2
  import { chalkStderr } from "chalk";
3
3
  import { Context, oneoffContext } from "../bundler/context.js";
4
4
  import {
@@ -43,7 +43,7 @@ const envSetCmd = new Command("set")
43
43
  "• `pbpaste | npx convex env set API_KEY` (macOS)",
44
44
  "• `Get-Clipboard | npx convex env set API_KEY` (Windows PowerShell)",
45
45
  "",
46
- "To update many variables at once, save them with `npx convex env list > .env.convex`, edit the file, then reapply the changes with `npx convex env set --force < .env.convex`.",
46
+ "To update many variables at once, save them with `npx convex env list --include-values > .env.convex`, edit the file, then reapply the changes with `npx convex env set --force < .env.convex`.",
47
47
  ].join("\n"),
48
48
  )
49
49
  .option(
@@ -167,16 +167,22 @@ const envListCmd = new Command("list")
167
167
  .summary("List all environment variables and their values")
168
168
  .description(
169
169
  [
170
- "• List all variables and their values: `npx convex env list`",
171
170
  "• List only variable names (no values): `npx convex env list --names-only`",
172
- "• Save all variables to a file: `npx convex env list > .env.convex`",
173
- "• Append to a file: `npx convex env list >> .env.convex`",
171
+ "• List all variables and their values: `npx convex env list --include-values`",
172
+ "• Save all variables to a file: `npx convex env list --include-values > .env.convex`",
173
+ "• Append to a file: `npx convex env list --include-values >> .env.convex`",
174
174
  ].join("\n"),
175
175
  )
176
176
  .option(
177
177
  "--names-only",
178
178
  "List only the names of environment variables, without their values",
179
179
  )
180
+ .addOption(
181
+ new Option(
182
+ "--include-values",
183
+ "Print each variable's value alongside its name, in .env format (the default). Pass it explicitly in scripts that rely on the values.",
184
+ ).conflicts("namesOnly"),
185
+ )
180
186
  .configureHelp({ showGlobalOptions: true })
181
187
  .allowExcessArguments(false)
182
188
  .action(async (cmdOptions, cmd) => {
@@ -207,8 +213,8 @@ export const env = new Command("env")
207
213
  "• Set interactively: `npx convex env set NAME`",
208
214
  "• Set multiple from file: `npx convex env set --from-file .env`",
209
215
  "• Unset a variable: `npx convex env remove NAME`",
210
- "• List all variables and their values: `npx convex env list`",
211
216
  "• List only variable names (no values): `npx convex env list --names-only`",
217
+ "• List all variables and their values: `npx convex env list --include-values`",
212
218
  "• Print a variable's value: `npx convex env get NAME`",
213
219
  "",
214
220
  "By default, this sets and views variables on your dev deployment.",
@@ -144,8 +144,8 @@ const envDefaultList = addEnvDefaultOptions(
144
144
  .summary("List all default environment variables and their values")
145
145
  .description(
146
146
  [
147
- "• List all default variables and their values: `npx convex env default list`",
148
147
  "• List only default variable names (no values): `npx convex env default list --names-only`",
148
+ "• List all default variables and their values: `npx convex env default list --include-values`",
149
149
  "",
150
150
  "The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.",
151
151
  ].join("\n"),
@@ -154,6 +154,12 @@ const envDefaultList = addEnvDefaultOptions(
154
154
  "--names-only",
155
155
  "List only the names of environment variables, without their values",
156
156
  )
157
+ .addOption(
158
+ new Option(
159
+ "--include-values",
160
+ "Print each variable's value alongside its name, in .env format (the default). Pass it explicitly in scripts that rely on the values.",
161
+ ).conflicts("namesOnly"),
162
+ )
157
163
  .configureHelp({ showGlobalOptions: true })
158
164
  .allowExcessArguments(false),
159
165
  ).action(async (cmdOptions, cmd) => {
@@ -176,8 +182,8 @@ export const envDefault = new Command("default")
176
182
  "",
177
183
  "• Set a default variable: `npx convex env default set NAME 'value'`",
178
184
  "• Unset a default variable: `npx convex env default remove NAME`",
179
- "• List all default variables and their values: `npx convex env default list`",
180
185
  "• List only default variable names (no values): `npx convex env default list --names-only`",
186
+ "• List all default variables and their values: `npx convex env default list --include-values`",
181
187
  "• Print a default variable's value: `npx convex env default get NAME`",
182
188
  ].join("\n"),
183
189
  )
@@ -461,7 +461,7 @@ export interface components {
461
461
  };
462
462
  ReferralCode: string;
463
463
  /** @enum {string} */
464
- RegionName: "aws-us-east-1" | "aws-eu-west-1";
464
+ RegionName: "aws-us-east-1" | "aws-eu-west-1" | "aws-ca-central-1" | "aws-ap-southeast-2";
465
465
  /** Format: int64 */
466
466
  TeamId: number;
467
467
  TeamName: string;
@@ -26,6 +26,7 @@ import {
26
26
  import { loadProjectLocalConfig } from "./localDeployment/filePaths.js";
27
27
  import { chalkStderr } from "chalk";
28
28
  import { RegionName } from "../generatedApi.js";
29
+ import type { RegionName as PublishedRegionName } from "@convex-dev/platform/managementApi";
29
30
  export type DeploymentName = string;
30
31
  export type CloudDeploymentType = "prod" | "dev" | "preview" | "custom";
31
32
  export type AccountRequiredDeploymentType = CloudDeploymentType | "local";
@@ -66,7 +67,10 @@ export async function createProject(
66
67
  body: {
67
68
  projectName,
68
69
  deploymentType: deploymentToProvision?.deploymentType ?? null,
69
- deploymentRegion: deploymentToProvision?.region ?? null,
70
+ // The published platform types lag the CLI's own spec by a release,
71
+ // so the cast is deliberate: a new region needs no change here.
72
+ deploymentRegion: (deploymentToProvision?.region ??
73
+ null) as PublishedRegionName | null,
70
74
  },
71
75
  },
72
76
  );
@@ -0,0 +1,173 @@
1
+ import { chalkStderr } from "chalk";
2
+ import { Context } from "../../bundler/context.js";
3
+ import {
4
+ changeSpinner,
5
+ logFinishedStep,
6
+ logMessage,
7
+ stopSpinner,
8
+ } from "../../bundler/log.js";
9
+ import { formatIndex } from "./indexes.js";
10
+ import { promptYesNo } from "./utils/prompts.js";
11
+ import { Span } from "./tracing.js";
12
+ import {
13
+ EvaluateSchemaResponse,
14
+ IndexPrediction,
15
+ } from "./deployApi/evaluateSchema.js";
16
+ import { SchemaEvaluation } from "./schemaEvaluation.js";
17
+ import { integerFromEnv } from "./utils/utils.js";
18
+
19
+ // Same size as the large index deletion check, so both index guards fire at
20
+ // the same table size. Separate env override so tests can trigger one
21
+ // without the other.
22
+ const MIN_DOCUMENTS_FOR_INDEX_BACKFILL_WARNING = 100_000;
23
+
24
+ export type LargeIndexBackfillCheck =
25
+ // Don’t check whether the push creates indexes on large tables
26
+ | "no verification"
27
+ // If it does, ask for confirmation (and fail in non-interactive envs)
28
+ | "ask for confirmation"
29
+ // If it does, proceed (the user has used --skip-large-indexes-check)
30
+ | "has confirmation";
31
+
32
+ type BlockingIndex = {
33
+ // The component instance path ("" for the root component), matching the
34
+ // keys of `componentSchemaEvaluations`.
35
+ componentPath: string;
36
+ index: IndexPrediction;
37
+ };
38
+
39
+ /**
40
+ * Warn — and on a real deploy require confirmation — when a push creates or
41
+ * enables a non-staged index on a large table. `wait_for_schema` blocks the
42
+ * deploy until every such index is backfilled, which can take a long time on
43
+ * large tables; staging the index instead backfills it in the background.
44
+ *
45
+ * Skipped silently when the deployment doesn't support `evaluate_schema`:
46
+ * the check protects the developer's time, not correctness.
47
+ */
48
+ export async function checkForLargeIndexBackfill({
49
+ ctx,
50
+ span,
51
+ schemaEvaluation,
52
+ options,
53
+ mode,
54
+ }: {
55
+ ctx: Context;
56
+ span: Span;
57
+ schemaEvaluation: SchemaEvaluation;
58
+ options: { url: string };
59
+ // "warn" prints the warning without prompting, for dry runs.
60
+ mode: "warn" | "ask for confirmation" | "has confirmation";
61
+ }): Promise<void> {
62
+ changeSpinner("Verifying that the push isn’t creating large indexes...");
63
+ const response = await schemaEvaluation(span);
64
+ if (response === null) {
65
+ return;
66
+ }
67
+
68
+ const blockingIndexes = blockingIndexesFromSchemaEvaluation(
69
+ response,
70
+ minDocumentsForIndexBackfillWarning(),
71
+ );
72
+ if (blockingIndexes.length === 0) {
73
+ return;
74
+ }
75
+
76
+ const plural = blockingIndexes.length !== 1;
77
+ logMessage(`⚠️ This push will ${chalkStderr.bold("create")} the following ${plural ? "indexes on large tables" : "index on a large table"}
78
+ in your deployment (${options.url}). The deploy will block until ${plural ? "they finish" : "it finishes"} backfilling:
79
+
80
+ ${blockingIndexes.map(formatBlockingIndex).join("\n")}
81
+
82
+ Tip: stage the index (e.g. \`.index("by_field", { fields: ["field"], staged: true })\`) to backfill
83
+ it in the background without blocking the deploy, then remove \`staged\` in a later push once it’s ready.
84
+ Learn more at https://docs.convex.dev/database/reading-data/indexes#staged-indexes
85
+ `);
86
+
87
+ if (mode === "warn") {
88
+ return;
89
+ }
90
+
91
+ if (mode === "has confirmation") {
92
+ logFinishedStep(
93
+ "Proceeding with push since --skip-large-indexes-check is set",
94
+ );
95
+ return;
96
+ }
97
+
98
+ if (!process.stdin.isTTY) {
99
+ return ctx.crash({
100
+ exitCode: 1,
101
+ errorType: "fatal",
102
+ printedMessage: `To confirm the push:
103
+ • run the deploy command in an ${chalkStderr.bold("interactive terminal")}
104
+ • or run the deploy command with the ${chalkStderr.bold("--skip-large-indexes-check")} flag`,
105
+ });
106
+ }
107
+
108
+ stopSpinner();
109
+ if (
110
+ !(await promptYesNo(ctx, {
111
+ message: `Create ${plural ? "these indexes" : "this index"} now?`,
112
+ default: false,
113
+ }))
114
+ ) {
115
+ return ctx.crash({
116
+ exitCode: 1,
117
+ errorType: "fatal",
118
+ printedMessage: `Canceling push`,
119
+ });
120
+ }
121
+
122
+ logFinishedStep("Proceeding with push.");
123
+ }
124
+
125
+ // An index blocks the deploy when this push starts (`added`) or waits on
126
+ // (`enabled` before its staged backfill finished) a backfill that isn't
127
+ // staged. Added staged indexes report `needsBackfill` too but never block,
128
+ // and an in-progress backfill an earlier push started (`identical`) isn't
129
+ // this push's doing.
130
+ export function blockingIndexesFromSchemaEvaluation(
131
+ response: EvaluateSchemaResponse,
132
+ minDocuments: number,
133
+ ): BlockingIndex[] {
134
+ return Object.entries(response.componentSchemaEvaluations).flatMap(
135
+ ([componentPath, prediction]) =>
136
+ prediction.indexes
137
+ .filter(
138
+ (index) =>
139
+ index.needsBackfill &&
140
+ !index.staged &&
141
+ (index.change === "added" || index.change === "enabled") &&
142
+ index.numDocs >= minDocuments,
143
+ )
144
+ .map((index) => ({ componentPath, index })),
145
+ );
146
+ }
147
+
148
+ function formatBlockingIndex({ componentPath, index }: BlockingIndex) {
149
+ const componentNameFormatted =
150
+ componentPath !== "" ? `${chalkStderr.gray(componentPath)}:` : "";
151
+ const documentsCountFormatted = chalkStderr.yellowBright(
152
+ `⚠️ ${index.numDocs.toLocaleString()} documents`,
153
+ );
154
+ const enabledNote =
155
+ index.change === "enabled"
156
+ ? `\n ${chalkStderr.gray("enabled before its staged backfill finished")}`
157
+ : "";
158
+ return (
159
+ "⛔ " +
160
+ componentNameFormatted +
161
+ formatIndex(index) +
162
+ " " +
163
+ documentsCountFormatted +
164
+ enabledNote
165
+ );
166
+ }
167
+
168
+ function minDocumentsForIndexBackfillWarning(): number {
169
+ return integerFromEnv(
170
+ "CONVEX_MIN_DOCUMENTS_FOR_INDEX_BACKFILL_WARNING",
171
+ MIN_DOCUMENTS_FOR_INDEX_BACKFILL_WARNING,
172
+ );
173
+ }