convex 1.34.1 → 1.35.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 (512) hide show
  1. package/CHANGELOG.md +86 -43
  2. package/dist/browser.bundle.js +8 -2
  3. package/dist/browser.bundle.js.map +3 -3
  4. package/dist/cjs/browser/index-node.js +3 -1
  5. package/dist/cjs/browser/index.js +3 -1
  6. package/dist/cjs/browser/index.js.map +2 -2
  7. package/dist/cjs/browser/query_options.js.map +2 -2
  8. package/dist/cjs/cli/aiFiles.js +31 -13
  9. package/dist/cjs/cli/aiFiles.js.map +3 -3
  10. package/dist/cjs/cli/codegen_templates/readme.js +14 -1
  11. package/dist/cjs/cli/codegen_templates/readme.js.map +2 -2
  12. package/dist/cjs/cli/configure.js +21 -24
  13. package/dist/cjs/cli/configure.js.map +2 -2
  14. package/dist/cjs/cli/deploy.js +7 -8
  15. package/dist/cjs/cli/deploy.js.map +2 -2
  16. package/dist/cjs/cli/deploymentCreate.js +225 -40
  17. package/dist/cjs/cli/deploymentCreate.js.map +3 -3
  18. package/dist/cjs/cli/deploymentSelect.js +14 -13
  19. package/dist/cjs/cli/deploymentSelect.js.map +2 -2
  20. package/dist/cjs/cli/dev.js +30 -11
  21. package/dist/cjs/cli/dev.js.map +2 -2
  22. package/dist/cjs/cli/docs.js +1 -1
  23. package/dist/cjs/cli/docs.js.map +2 -2
  24. package/dist/cjs/cli/init.js +1 -1
  25. package/dist/cjs/cli/init.js.map +2 -2
  26. package/dist/cjs/cli/lib/aiFiles/agentsmd.js +14 -10
  27. package/dist/cjs/cli/lib/aiFiles/agentsmd.js.map +2 -2
  28. package/dist/cjs/cli/lib/aiFiles/claudemd.js +14 -10
  29. package/dist/cjs/cli/lib/aiFiles/claudemd.js.map +2 -2
  30. package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js +10 -3
  31. package/dist/cjs/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
  32. package/dist/cjs/cli/lib/aiFiles/index.js +70 -86
  33. package/dist/cjs/cli/lib/aiFiles/index.js.map +3 -3
  34. package/dist/cjs/cli/lib/aiFiles/skills.js +28 -12
  35. package/dist/cjs/cli/lib/aiFiles/skills.js.map +2 -2
  36. package/dist/cjs/cli/lib/aiFiles/state.js +96 -0
  37. package/dist/cjs/cli/lib/aiFiles/state.js.map +7 -0
  38. package/dist/cjs/cli/lib/aiFiles/status.js +31 -28
  39. package/dist/cjs/cli/lib/aiFiles/status.js.map +2 -2
  40. package/dist/cjs/cli/lib/aiFiles/utils.js +31 -14
  41. package/dist/cjs/cli/lib/aiFiles/utils.js.map +2 -2
  42. package/dist/cjs/cli/lib/api.js +70 -7
  43. package/dist/cjs/cli/lib/api.js.map +2 -2
  44. package/dist/cjs/cli/lib/command.js +4 -5
  45. package/dist/cjs/cli/lib/command.js.map +2 -2
  46. package/dist/cjs/cli/lib/config.js +41 -4
  47. package/dist/cjs/cli/lib/config.js.map +3 -3
  48. package/dist/cjs/cli/lib/deploy2.js +9 -26
  49. package/dist/cjs/cli/lib/deploy2.js.map +2 -2
  50. package/dist/cjs/cli/lib/deployApi/componentDefinition.js +4 -1
  51. package/dist/cjs/cli/lib/deployApi/componentDefinition.js.map +2 -2
  52. package/dist/cjs/cli/lib/deploymentSelection.js +45 -2
  53. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  54. package/dist/cjs/cli/lib/deploymentSelector.js +1 -0
  55. package/dist/cjs/cli/lib/deploymentSelector.js.map +2 -2
  56. package/dist/cjs/cli/lib/dev.js +162 -117
  57. package/dist/cjs/cli/lib/dev.js.map +2 -2
  58. package/dist/cjs/cli/lib/env.js +1 -13
  59. package/dist/cjs/cli/lib/env.js.map +2 -2
  60. package/dist/cjs/cli/lib/expiration.js +104 -0
  61. package/dist/cjs/cli/lib/expiration.js.map +7 -0
  62. package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
  63. package/dist/cjs/cli/lib/init.js +4 -3
  64. package/dist/cjs/cli/lib/init.js.map +2 -2
  65. package/dist/cjs/cli/lib/insights.js +1 -1
  66. package/dist/cjs/cli/lib/insights.js.map +2 -2
  67. package/dist/cjs/cli/lib/localDeployment/anonymous.js +14 -7
  68. package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
  69. package/dist/cjs/cli/lib/localDeployment/localDeployment.js +8 -10
  70. package/dist/cjs/cli/lib/localDeployment/localDeployment.js.map +2 -2
  71. package/dist/cjs/cli/lib/localDeployment/run.js +1 -0
  72. package/dist/cjs/cli/lib/localDeployment/run.js.map +2 -2
  73. package/dist/cjs/cli/lib/localDeployment/upgrade.js +2 -2
  74. package/dist/cjs/cli/lib/localDeployment/upgrade.js.map +2 -2
  75. package/dist/cjs/cli/lib/localDeployment/utils.js +9 -0
  76. package/dist/cjs/cli/lib/localDeployment/utils.js.map +2 -2
  77. package/dist/cjs/cli/lib/mcp/tools/status.js +1 -1
  78. package/dist/cjs/cli/lib/mcp/tools/status.js.map +2 -2
  79. package/dist/cjs/cli/lib/updates.js +8 -9
  80. package/dist/cjs/cli/lib/updates.js.map +2 -2
  81. package/dist/cjs/cli/lib/usage.js +2 -1
  82. package/dist/cjs/cli/lib/usage.js.map +2 -2
  83. package/dist/cjs/cli/lib/utils/prompts.js +2 -1
  84. package/dist/cjs/cli/lib/utils/prompts.js.map +2 -2
  85. package/dist/cjs/cli/lib/utils/utils.js +46 -20
  86. package/dist/cjs/cli/lib/utils/utils.js.map +3 -3
  87. package/dist/cjs/index.js +1 -1
  88. package/dist/cjs/index.js.map +1 -1
  89. package/dist/cjs/react/client.js +43 -6
  90. package/dist/cjs/react/client.js.map +2 -2
  91. package/dist/cjs/react/index.js +2 -0
  92. package/dist/cjs/react/index.js.map +2 -2
  93. package/dist/cjs/react-clerk/ConvexProviderWithClerk.js.map +1 -1
  94. package/dist/cjs/server/api.js.map +2 -2
  95. package/dist/cjs/server/components/definition.js.map +1 -1
  96. package/dist/cjs/server/components/index.js +40 -4
  97. package/dist/cjs/server/components/index.js.map +2 -2
  98. package/dist/cjs/server/data_model.js.map +1 -1
  99. package/dist/cjs/server/impl/meta_impl.js +78 -0
  100. package/dist/cjs/server/impl/meta_impl.js.map +7 -0
  101. package/dist/cjs/server/impl/registration_impl.js +16 -11
  102. package/dist/cjs/server/impl/registration_impl.js.map +2 -2
  103. package/dist/cjs/server/index.js.map +2 -2
  104. package/dist/cjs/server/meta.js +17 -0
  105. package/dist/cjs/server/meta.js.map +7 -0
  106. package/dist/cjs/server/registration.js.map +1 -1
  107. package/dist/cjs-types/browser/index.d.ts +1 -0
  108. package/dist/cjs-types/browser/index.d.ts.map +1 -1
  109. package/dist/cjs-types/browser/query_options.d.ts +12 -9
  110. package/dist/cjs-types/browser/query_options.d.ts.map +1 -1
  111. package/dist/cjs-types/cli/aiFiles.d.ts.map +1 -1
  112. package/dist/cjs-types/cli/codegen_templates/readme.d.ts.map +1 -1
  113. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  114. package/dist/cjs-types/cli/configure.test.d.ts +2 -0
  115. package/dist/cjs-types/cli/configure.test.d.ts.map +1 -0
  116. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  117. package/dist/cjs-types/cli/deploymentCreate.d.ts +1 -0
  118. package/dist/cjs-types/cli/deploymentCreate.d.ts.map +1 -1
  119. package/dist/cjs-types/cli/deploymentSelect.d.ts +2 -1
  120. package/dist/cjs-types/cli/deploymentSelect.d.ts.map +1 -1
  121. package/dist/cjs-types/cli/dev.d.ts +3 -1
  122. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  123. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts +5 -5
  124. package/dist/cjs-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
  125. package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
  126. package/dist/cjs-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
  127. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
  128. package/dist/cjs-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
  129. package/dist/cjs-types/cli/lib/aiFiles/index.d.ts +20 -18
  130. package/dist/cjs-types/cli/lib/aiFiles/index.d.ts.map +1 -1
  131. package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts +6 -4
  132. package/dist/cjs-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
  133. package/dist/cjs-types/cli/lib/aiFiles/state.d.ts +38 -0
  134. package/dist/cjs-types/cli/lib/aiFiles/state.d.ts.map +1 -0
  135. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts +2 -0
  136. package/dist/cjs-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
  137. package/dist/cjs-types/cli/lib/aiFiles/status.d.ts +4 -1
  138. package/dist/cjs-types/cli/lib/aiFiles/status.d.ts.map +1 -1
  139. package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts +13 -3
  140. package/dist/cjs-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
  141. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
  142. package/dist/cjs-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
  143. package/dist/cjs-types/cli/lib/api.d.ts +3 -3
  144. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  145. package/dist/cjs-types/cli/lib/command.d.ts +2 -1
  146. package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
  147. package/dist/cjs-types/cli/lib/config.d.ts +17 -6
  148. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  149. package/dist/cjs-types/cli/lib/deploy2.d.ts +5 -2
  150. package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
  151. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
  152. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  153. package/dist/cjs-types/cli/lib/deployApi/definitionConfig.d.ts +24 -24
  154. package/dist/cjs-types/cli/lib/deployApi/modules.d.ts +14 -14
  155. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts +61 -52
  156. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  157. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  158. package/dist/cjs-types/cli/lib/deploymentSelector.d.ts +2 -0
  159. package/dist/cjs-types/cli/lib/deploymentSelector.d.ts.map +1 -1
  160. package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
  161. package/dist/cjs-types/cli/lib/env.d.ts +0 -4
  162. package/dist/cjs-types/cli/lib/env.d.ts.map +1 -1
  163. package/dist/cjs-types/cli/lib/expiration.d.ts +35 -0
  164. package/dist/cjs-types/cli/lib/expiration.d.ts.map +1 -0
  165. package/dist/cjs-types/cli/lib/expiration.test.d.ts +2 -0
  166. package/dist/cjs-types/cli/lib/expiration.test.d.ts.map +1 -0
  167. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
  168. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  169. package/dist/cjs-types/cli/lib/init.d.ts.map +1 -1
  170. package/dist/cjs-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  171. package/dist/cjs-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
  172. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts +15 -0
  173. package/dist/cjs-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  174. package/dist/cjs-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  175. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts +7 -0
  176. package/dist/cjs-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  177. package/dist/cjs-types/cli/lib/mcp/requestContext.d.ts +3 -3
  178. package/dist/cjs-types/cli/lib/mcp/tools/insights.d.ts +2 -2
  179. package/dist/cjs-types/cli/lib/updates.d.ts +4 -3
  180. package/dist/cjs-types/cli/lib/updates.d.ts.map +1 -1
  181. package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
  182. package/dist/cjs-types/cli/lib/utils/prompts.d.ts +1 -0
  183. package/dist/cjs-types/cli/lib/utils/prompts.d.ts.map +1 -1
  184. package/dist/cjs-types/cli/lib/utils/utils.d.ts +16 -2
  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/react/client.d.ts +54 -2
  188. package/dist/cjs-types/react/client.d.ts.map +1 -1
  189. package/dist/cjs-types/react/index.d.ts +7 -2
  190. package/dist/cjs-types/react/index.d.ts.map +1 -1
  191. package/dist/cjs-types/react/use_query_object_options.test.d.ts +5 -0
  192. package/dist/cjs-types/react/use_query_object_options.test.d.ts.map +1 -0
  193. package/dist/cjs-types/react/use_query_result.test.d.ts +5 -0
  194. package/dist/cjs-types/react/use_query_result.test.d.ts.map +1 -0
  195. package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
  196. package/dist/cjs-types/server/api.d.ts +5 -1
  197. package/dist/cjs-types/server/api.d.ts.map +1 -1
  198. package/dist/cjs-types/server/components/definition.d.ts +1 -0
  199. package/dist/cjs-types/server/components/definition.d.ts.map +1 -1
  200. package/dist/cjs-types/server/components/index.d.ts +5 -1
  201. package/dist/cjs-types/server/components/index.d.ts.map +1 -1
  202. package/dist/cjs-types/server/data_model.d.ts +2 -1
  203. package/dist/cjs-types/server/data_model.d.ts.map +1 -1
  204. package/dist/cjs-types/server/impl/meta_impl.d.ts +5 -0
  205. package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -0
  206. package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
  207. package/dist/cjs-types/server/index.d.ts +1 -0
  208. package/dist/cjs-types/server/index.d.ts.map +1 -1
  209. package/dist/cjs-types/server/meta.d.ts +72 -0
  210. package/dist/cjs-types/server/meta.d.ts.map +1 -0
  211. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  212. package/dist/cli.bundle.cjs +1670 -1214
  213. package/dist/cli.bundle.cjs.map +4 -4
  214. package/dist/esm/browser/index-node.js +1 -0
  215. package/dist/esm/browser/index.js +1 -0
  216. package/dist/esm/browser/index.js.map +2 -2
  217. package/dist/esm/browser/query_options.js.map +2 -2
  218. package/dist/esm/cli/aiFiles.js +33 -15
  219. package/dist/esm/cli/aiFiles.js.map +2 -2
  220. package/dist/esm/cli/codegen_templates/readme.js +14 -1
  221. package/dist/esm/cli/codegen_templates/readme.js.map +2 -2
  222. package/dist/esm/cli/configure.js +23 -26
  223. package/dist/esm/cli/configure.js.map +2 -2
  224. package/dist/esm/cli/deploy.js +11 -10
  225. package/dist/esm/cli/deploy.js.map +2 -2
  226. package/dist/esm/cli/deploymentCreate.js +238 -42
  227. package/dist/esm/cli/deploymentCreate.js.map +2 -2
  228. package/dist/esm/cli/deploymentSelect.js +13 -12
  229. package/dist/esm/cli/deploymentSelect.js.map +2 -2
  230. package/dist/esm/cli/dev.js +34 -13
  231. package/dist/esm/cli/dev.js.map +2 -2
  232. package/dist/esm/cli/docs.js +1 -1
  233. package/dist/esm/cli/docs.js.map +2 -2
  234. package/dist/esm/cli/init.js +2 -2
  235. package/dist/esm/cli/init.js.map +2 -2
  236. package/dist/esm/cli/lib/aiFiles/agentsmd.js +13 -9
  237. package/dist/esm/cli/lib/aiFiles/agentsmd.js.map +2 -2
  238. package/dist/esm/cli/lib/aiFiles/claudemd.js +13 -9
  239. package/dist/esm/cli/lib/aiFiles/claudemd.js.map +2 -2
  240. package/dist/esm/cli/lib/aiFiles/guidelinesmd.js +12 -5
  241. package/dist/esm/cli/lib/aiFiles/guidelinesmd.js.map +2 -2
  242. package/dist/esm/cli/lib/aiFiles/index.js +72 -89
  243. package/dist/esm/cli/lib/aiFiles/index.js.map +2 -2
  244. package/dist/esm/cli/lib/aiFiles/skills.js +29 -13
  245. package/dist/esm/cli/lib/aiFiles/skills.js.map +2 -2
  246. package/dist/esm/cli/lib/aiFiles/state.js +60 -0
  247. package/dist/esm/cli/lib/aiFiles/state.js.map +7 -0
  248. package/dist/esm/cli/lib/aiFiles/status.js +32 -29
  249. package/dist/esm/cli/lib/aiFiles/status.js.map +2 -2
  250. package/dist/esm/cli/lib/aiFiles/utils.js +25 -10
  251. package/dist/esm/cli/lib/aiFiles/utils.js.map +2 -2
  252. package/dist/esm/cli/lib/api.js +70 -7
  253. package/dist/esm/cli/lib/api.js.map +2 -2
  254. package/dist/esm/cli/lib/command.js +4 -5
  255. package/dist/esm/cli/lib/command.js.map +2 -2
  256. package/dist/esm/cli/lib/config.js +39 -3
  257. package/dist/esm/cli/lib/config.js.map +2 -2
  258. package/dist/esm/cli/lib/deploy2.js +13 -26
  259. package/dist/esm/cli/lib/deploy2.js.map +2 -2
  260. package/dist/esm/cli/lib/deployApi/componentDefinition.js +4 -1
  261. package/dist/esm/cli/lib/deployApi/componentDefinition.js.map +2 -2
  262. package/dist/esm/cli/lib/deploymentSelection.js +46 -2
  263. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  264. package/dist/esm/cli/lib/deploymentSelector.js +1 -0
  265. package/dist/esm/cli/lib/deploymentSelector.js.map +2 -2
  266. package/dist/esm/cli/lib/dev.js +162 -118
  267. package/dist/esm/cli/lib/dev.js.map +2 -2
  268. package/dist/esm/cli/lib/env.js +0 -11
  269. package/dist/esm/cli/lib/env.js.map +2 -2
  270. package/dist/esm/cli/lib/expiration.js +80 -0
  271. package/dist/esm/cli/lib/expiration.js.map +7 -0
  272. package/dist/esm/cli/lib/init.js +4 -3
  273. package/dist/esm/cli/lib/init.js.map +2 -2
  274. package/dist/esm/cli/lib/insights.js +1 -1
  275. package/dist/esm/cli/lib/insights.js.map +2 -2
  276. package/dist/esm/cli/lib/localDeployment/anonymous.js +16 -9
  277. package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
  278. package/dist/esm/cli/lib/localDeployment/localDeployment.js +9 -11
  279. package/dist/esm/cli/lib/localDeployment/localDeployment.js.map +2 -2
  280. package/dist/esm/cli/lib/localDeployment/run.js +1 -1
  281. package/dist/esm/cli/lib/localDeployment/run.js.map +2 -2
  282. package/dist/esm/cli/lib/localDeployment/upgrade.js +2 -2
  283. package/dist/esm/cli/lib/localDeployment/upgrade.js.map +2 -2
  284. package/dist/esm/cli/lib/localDeployment/utils.js +8 -0
  285. package/dist/esm/cli/lib/localDeployment/utils.js.map +2 -2
  286. package/dist/esm/cli/lib/mcp/tools/status.js +1 -1
  287. package/dist/esm/cli/lib/mcp/tools/status.js.map +2 -2
  288. package/dist/esm/cli/lib/updates.js +11 -9
  289. package/dist/esm/cli/lib/updates.js.map +2 -2
  290. package/dist/esm/cli/lib/usage.js +2 -1
  291. package/dist/esm/cli/lib/usage.js.map +2 -2
  292. package/dist/esm/cli/lib/utils/prompts.js +2 -1
  293. package/dist/esm/cli/lib/utils/prompts.js.map +2 -2
  294. package/dist/esm/cli/lib/utils/utils.js +45 -20
  295. package/dist/esm/cli/lib/utils/utils.js.map +3 -3
  296. package/dist/esm/index.js +1 -1
  297. package/dist/esm/index.js.map +1 -1
  298. package/dist/esm/react/client.js +43 -6
  299. package/dist/esm/react/client.js.map +2 -2
  300. package/dist/esm/react/index.js +1 -0
  301. package/dist/esm/react/index.js.map +2 -2
  302. package/dist/esm/react-clerk/ConvexProviderWithClerk.js.map +1 -1
  303. package/dist/esm/server/api.js.map +2 -2
  304. package/dist/esm/server/components/index.js +40 -4
  305. package/dist/esm/server/components/index.js.map +2 -2
  306. package/dist/esm/server/impl/meta_impl.js +54 -0
  307. package/dist/esm/server/impl/meta_impl.js.map +7 -0
  308. package/dist/esm/server/impl/registration_impl.js +20 -11
  309. package/dist/esm/server/impl/registration_impl.js.map +2 -2
  310. package/dist/esm/server/index.js.map +2 -2
  311. package/dist/esm/server/meta.js +2 -0
  312. package/dist/esm/server/meta.js.map +7 -0
  313. package/dist/esm-types/browser/index.d.ts +1 -0
  314. package/dist/esm-types/browser/index.d.ts.map +1 -1
  315. package/dist/esm-types/browser/query_options.d.ts +12 -9
  316. package/dist/esm-types/browser/query_options.d.ts.map +1 -1
  317. package/dist/esm-types/cli/aiFiles.d.ts.map +1 -1
  318. package/dist/esm-types/cli/codegen_templates/readme.d.ts.map +1 -1
  319. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  320. package/dist/esm-types/cli/configure.test.d.ts +2 -0
  321. package/dist/esm-types/cli/configure.test.d.ts.map +1 -0
  322. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  323. package/dist/esm-types/cli/deploymentCreate.d.ts +1 -0
  324. package/dist/esm-types/cli/deploymentCreate.d.ts.map +1 -1
  325. package/dist/esm-types/cli/deploymentSelect.d.ts +2 -1
  326. package/dist/esm-types/cli/deploymentSelect.d.ts.map +1 -1
  327. package/dist/esm-types/cli/dev.d.ts +3 -1
  328. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  329. package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts +5 -5
  330. package/dist/esm-types/cli/lib/aiFiles/agentsmd.d.ts.map +1 -1
  331. package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts +5 -5
  332. package/dist/esm-types/cli/lib/aiFiles/claudemd.d.ts.map +1 -1
  333. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts +3 -3
  334. package/dist/esm-types/cli/lib/aiFiles/guidelinesmd.d.ts.map +1 -1
  335. package/dist/esm-types/cli/lib/aiFiles/index.d.ts +20 -18
  336. package/dist/esm-types/cli/lib/aiFiles/index.d.ts.map +1 -1
  337. package/dist/esm-types/cli/lib/aiFiles/skills.d.ts +6 -4
  338. package/dist/esm-types/cli/lib/aiFiles/skills.d.ts.map +1 -1
  339. package/dist/esm-types/cli/lib/aiFiles/state.d.ts +38 -0
  340. package/dist/esm-types/cli/lib/aiFiles/state.d.ts.map +1 -0
  341. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts +2 -0
  342. package/dist/esm-types/cli/lib/aiFiles/state.test.d.ts.map +1 -0
  343. package/dist/esm-types/cli/lib/aiFiles/status.d.ts +4 -1
  344. package/dist/esm-types/cli/lib/aiFiles/status.d.ts.map +1 -1
  345. package/dist/esm-types/cli/lib/aiFiles/utils.d.ts +13 -3
  346. package/dist/esm-types/cli/lib/aiFiles/utils.d.ts.map +1 -1
  347. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts +2 -0
  348. package/dist/esm-types/cli/lib/aiFiles/utils.test.d.ts.map +1 -0
  349. package/dist/esm-types/cli/lib/api.d.ts +3 -3
  350. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  351. package/dist/esm-types/cli/lib/command.d.ts +2 -1
  352. package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
  353. package/dist/esm-types/cli/lib/config.d.ts +17 -6
  354. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  355. package/dist/esm-types/cli/lib/deploy2.d.ts +5 -2
  356. package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
  357. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts +27 -12
  358. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  359. package/dist/esm-types/cli/lib/deployApi/definitionConfig.d.ts +24 -24
  360. package/dist/esm-types/cli/lib/deployApi/modules.d.ts +14 -14
  361. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts +61 -52
  362. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  363. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  364. package/dist/esm-types/cli/lib/deploymentSelector.d.ts +2 -0
  365. package/dist/esm-types/cli/lib/deploymentSelector.d.ts.map +1 -1
  366. package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
  367. package/dist/esm-types/cli/lib/env.d.ts +0 -4
  368. package/dist/esm-types/cli/lib/env.d.ts.map +1 -1
  369. package/dist/esm-types/cli/lib/expiration.d.ts +35 -0
  370. package/dist/esm-types/cli/lib/expiration.d.ts.map +1 -0
  371. package/dist/esm-types/cli/lib/expiration.test.d.ts +2 -0
  372. package/dist/esm-types/cli/lib/expiration.test.d.ts.map +1 -0
  373. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +16 -1
  374. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  375. package/dist/esm-types/cli/lib/init.d.ts.map +1 -1
  376. package/dist/esm-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  377. package/dist/esm-types/cli/lib/localDeployment/localDeployment.d.ts.map +1 -1
  378. package/dist/esm-types/cli/lib/localDeployment/run.d.ts +15 -0
  379. package/dist/esm-types/cli/lib/localDeployment/run.d.ts.map +1 -1
  380. package/dist/esm-types/cli/lib/localDeployment/upgrade.d.ts.map +1 -1
  381. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts +7 -0
  382. package/dist/esm-types/cli/lib/localDeployment/utils.d.ts.map +1 -1
  383. package/dist/esm-types/cli/lib/mcp/requestContext.d.ts +3 -3
  384. package/dist/esm-types/cli/lib/mcp/tools/insights.d.ts +2 -2
  385. package/dist/esm-types/cli/lib/updates.d.ts +4 -3
  386. package/dist/esm-types/cli/lib/updates.d.ts.map +1 -1
  387. package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
  388. package/dist/esm-types/cli/lib/utils/prompts.d.ts +1 -0
  389. package/dist/esm-types/cli/lib/utils/prompts.d.ts.map +1 -1
  390. package/dist/esm-types/cli/lib/utils/utils.d.ts +16 -2
  391. package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
  392. package/dist/esm-types/index.d.ts +1 -1
  393. package/dist/esm-types/react/client.d.ts +54 -2
  394. package/dist/esm-types/react/client.d.ts.map +1 -1
  395. package/dist/esm-types/react/index.d.ts +7 -2
  396. package/dist/esm-types/react/index.d.ts.map +1 -1
  397. package/dist/esm-types/react/use_query_object_options.test.d.ts +5 -0
  398. package/dist/esm-types/react/use_query_object_options.test.d.ts.map +1 -0
  399. package/dist/esm-types/react/use_query_result.test.d.ts +5 -0
  400. package/dist/esm-types/react/use_query_result.test.d.ts.map +1 -0
  401. package/dist/esm-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -1
  402. package/dist/esm-types/server/api.d.ts +5 -1
  403. package/dist/esm-types/server/api.d.ts.map +1 -1
  404. package/dist/esm-types/server/components/definition.d.ts +1 -0
  405. package/dist/esm-types/server/components/definition.d.ts.map +1 -1
  406. package/dist/esm-types/server/components/index.d.ts +5 -1
  407. package/dist/esm-types/server/components/index.d.ts.map +1 -1
  408. package/dist/esm-types/server/data_model.d.ts +2 -1
  409. package/dist/esm-types/server/data_model.d.ts.map +1 -1
  410. package/dist/esm-types/server/impl/meta_impl.d.ts +5 -0
  411. package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -0
  412. package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
  413. package/dist/esm-types/server/index.d.ts +1 -0
  414. package/dist/esm-types/server/index.d.ts.map +1 -1
  415. package/dist/esm-types/server/meta.d.ts +72 -0
  416. package/dist/esm-types/server/meta.d.ts.map +1 -0
  417. package/dist/esm-types/server/registration.d.ts.map +1 -1
  418. package/dist/react.bundle.js +50 -7
  419. package/dist/react.bundle.js.map +3 -3
  420. package/package.json +11 -7
  421. package/schemas/convex.schema.json +15 -2
  422. package/src/browser/index.ts +3 -0
  423. package/src/browser/query_options.test.ts +0 -9
  424. package/src/browser/query_options.ts +36 -15
  425. package/src/cli/aiFiles.ts +44 -14
  426. package/src/cli/codegen_templates/readme.ts +14 -1
  427. package/src/cli/configure.test.ts +138 -0
  428. package/src/cli/configure.ts +48 -47
  429. package/src/cli/deploy.ts +12 -9
  430. package/src/cli/deploymentCreate.test.ts +349 -14
  431. package/src/cli/deploymentCreate.ts +268 -41
  432. package/src/cli/deploymentSelect.test.ts +136 -27
  433. package/src/cli/deploymentSelect.ts +50 -41
  434. package/src/cli/deploymentSelection.test.ts +343 -35
  435. package/src/cli/dev.ts +49 -14
  436. package/src/cli/docs.ts +1 -1
  437. package/src/cli/init.ts +2 -2
  438. package/src/cli/lib/aiFiles/agentsmd.ts +15 -11
  439. package/src/cli/lib/aiFiles/claudemd.ts +15 -11
  440. package/src/cli/lib/aiFiles/guidelinesmd.test.ts +12 -2
  441. package/src/cli/lib/aiFiles/guidelinesmd.ts +15 -7
  442. package/src/cli/lib/aiFiles/index.test.ts +188 -222
  443. package/src/cli/lib/aiFiles/index.ts +119 -125
  444. package/src/cli/lib/aiFiles/integration.test.ts +112 -45
  445. package/src/cli/lib/aiFiles/prompt.test.ts +6 -6
  446. package/src/cli/lib/aiFiles/skills.ts +46 -16
  447. package/src/cli/lib/aiFiles/state.test.ts +280 -0
  448. package/src/cli/lib/aiFiles/state.ts +82 -0
  449. package/src/cli/lib/aiFiles/status.ts +45 -39
  450. package/src/cli/lib/aiFiles/utils.test.ts +50 -0
  451. package/src/cli/lib/aiFiles/utils.ts +38 -10
  452. package/src/cli/lib/api.ts +88 -7
  453. package/src/cli/lib/command.ts +12 -7
  454. package/src/cli/lib/config.test.ts +184 -7
  455. package/src/cli/lib/config.ts +67 -7
  456. package/src/cli/lib/deploy2.ts +14 -27
  457. package/src/cli/lib/deployApi/componentDefinition.ts +4 -1
  458. package/src/cli/lib/deploymentSelection.ts +59 -6
  459. package/src/cli/lib/deploymentSelector.test.ts +6 -0
  460. package/src/cli/lib/deploymentSelector.ts +2 -0
  461. package/src/cli/lib/dev.ts +202 -153
  462. package/src/cli/lib/env.ts +0 -15
  463. package/src/cli/lib/expiration.test.ts +159 -0
  464. package/src/cli/lib/expiration.ts +124 -0
  465. package/src/cli/lib/generatedFunctionLogsApi.ts +16 -1
  466. package/src/cli/lib/init.ts +6 -2
  467. package/src/cli/lib/insights.ts +1 -1
  468. package/src/cli/lib/localDeployment/anonymous.ts +19 -9
  469. package/src/cli/lib/localDeployment/localDeployment.ts +9 -11
  470. package/src/cli/lib/localDeployment/run.ts +1 -1
  471. package/src/cli/lib/localDeployment/upgrade.ts +12 -10
  472. package/src/cli/lib/localDeployment/utils.ts +12 -0
  473. package/src/cli/lib/mcp/tools/status.ts +1 -1
  474. package/src/cli/lib/updates.test.ts +102 -75
  475. package/src/cli/lib/updates.ts +14 -12
  476. package/src/cli/lib/usage.ts +3 -1
  477. package/src/cli/lib/utils/prompts.ts +2 -0
  478. package/src/cli/lib/utils/utils.test.ts +6 -6
  479. package/src/cli/lib/utils/utils.ts +66 -27
  480. package/src/index.ts +1 -1
  481. package/src/react/client.test.tsx +65 -0
  482. package/src/react/client.ts +129 -13
  483. package/src/react/index.ts +9 -1
  484. package/src/react/use_query_object_options.test.ts +50 -0
  485. package/src/react/use_query_result.test.ts +41 -0
  486. package/src/react-clerk/ConvexProviderWithClerk.test.tsx +1 -1
  487. package/src/react-clerk/ConvexProviderWithClerk.tsx +1 -1
  488. package/src/server/api.ts +5 -1
  489. package/src/server/components/definition.ts +3 -0
  490. package/src/server/components/index.ts +62 -5
  491. package/src/server/data_model.ts +2 -1
  492. package/src/server/impl/meta_impl.ts +74 -0
  493. package/src/server/impl/registration_impl.ts +21 -9
  494. package/src/server/index.ts +8 -0
  495. package/src/server/meta.ts +76 -0
  496. package/src/server/registration.ts +10 -0
  497. package/src/server/schema.test.ts +78 -1
  498. package/dist/cjs/cli/lib/aiFiles/config.js +0 -171
  499. package/dist/cjs/cli/lib/aiFiles/config.js.map +0 -7
  500. package/dist/cjs-types/cli/lib/aiFiles/config.d.ts +0 -46
  501. package/dist/cjs-types/cli/lib/aiFiles/config.d.ts.map +0 -1
  502. package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts +0 -2
  503. package/dist/cjs-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
  504. package/dist/esm/cli/lib/aiFiles/config.js +0 -135
  505. package/dist/esm/cli/lib/aiFiles/config.js.map +0 -7
  506. package/dist/esm-types/cli/lib/aiFiles/config.d.ts +0 -46
  507. package/dist/esm-types/cli/lib/aiFiles/config.d.ts.map +0 -1
  508. package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts +0 -2
  509. package/dist/esm-types/cli/lib/aiFiles/config.test.d.ts.map +0 -1
  510. package/src/cli/lib/aiFiles/config.test.ts +0 -460
  511. package/src/cli/lib/aiFiles/config.ts +0 -188
  512. package/src/values/.claude/settings.local.json +0 -10
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/deploy.ts"],
4
- "sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { Command, Option } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { logFinishedStep, logMessage, showSpinner } from \"../bundler/log.js\";\nimport { loadSelectedDeploymentCredentials } from \"./lib/api.js\";\nimport {\n gitBranchFromEnvironment,\n isNonProdBuildEnvironment,\n suggestedEnvVarNames,\n} from \"./lib/envvars.js\";\nimport { PushOptions } from \"./lib/components.js\";\nimport {\n CONVEX_DEPLOY_KEY_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n bigBrainAPI,\n} from \"./lib/utils/utils.js\";\nimport { runFunctionAndLog } from \"./lib/run.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./lib/deployment.js\";\nimport { runPush } from \"./lib/components.js\";\nimport { promptYesNo } from \"./lib/utils/prompts.js\";\nimport { deployToDeployment, runCommand } from \"./lib/deploy2.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { deploymentNameAndTypeFromSelection } from \"./lib/deploymentSelection.js\";\nimport { checkVersion } from \"./lib/updates.js\";\nimport { readProjectConfig, getAuthKitConfig } from \"./lib/config.js\";\nimport { ensureAuthKitProvisionedBeforeBuild } from \"./lib/workos/workos.js\";\nimport { DASHBOARD_HOST } from \"./lib/dashboard.js\";\nimport { extractDeploymentNameForWorkOS } from \"./lib/extractDeploymentNameForWorkOS.js\";\n\nexport const deploy = new Command(\"deploy\")\n .summary(\"Deploy to your prod deployment\")\n .description(\n \"Deploy to your deployment. By default, this deploys to your prod deployment.\\n\\n\" +\n `Deploys to a preview deployment if the \\`${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\\` environment variable is set to a Preview Deploy Key.`,\n )\n .allowExcessArguments(false)\n .addDeployOptions()\n .addOption(\n new Option(\n \"--preview-run <functionName>\",\n \"Function to run if deploying to a preview deployment. This is ignored if deploying to a production deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--preview-create <name>\",\n \"The name to associate with this deployment if deploying to a newly created preview deployment. Defaults to the current Git branch name in Vercel, Netlify and GitHub CI. This parameter can only be used with a preview deploy key (when used with another type of key, the command will return an error).\",\n ).conflicts(\"preview-name\"),\n )\n .addOption(\n new Option(\n \"--check-build-environment <mode>\",\n \"Whether to check for a non-production build environment before deploying to a production Convex deployment.\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const)\n .hideHelp(),\n )\n // Hidden options to pass in admin key and url for tests and local development\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n .addOption(\n new Option(\n \"--preview-name <name>\",\n \"[deprecated] Use `--preview-create` instead. The name to associate with this deployment if deploying to a preview deployment.\",\n )\n .hideHelp()\n .conflicts(\"preview-create\"),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(\n new Option(\n \"--skip-workos-check\",\n \"Skip WorkOS AuthKit provisioning and credential checks during deploy.\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\"--allow-deleting-large-indexes\")\n .hideHelp()\n .conflicts(\"preview-create\")\n .conflicts(\"preview-name\"),\n )\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n\n const deploymentSelection = await getDeploymentSelection(ctx, cmdOptions);\n if (\n cmdOptions.checkBuildEnvironment === \"enable\" &&\n isNonProdBuildEnvironment() &&\n deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.source === \"deployKey\" &&\n deploymentSelection.deploymentToActOn.deploymentFields?.deploymentType ===\n \"prod\"\n ) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"invalid filesystem data\",\n printedMessage: `Detected a non-production build environment and \"${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\" for a production Convex deployment.\\n\n This is probably unintentional.\n `,\n });\n }\n\n if (deploymentSelection.kind === \"anonymous\") {\n logMessage(\n \"You are currently developing anonymously with a locally running project.\\n\" +\n \"To deploy your Convex app to the cloud, log in by running `npx convex login`.\\n\" +\n \"See https://docs.convex.dev/production for more information on how Convex cloud works and instructions on how to set up hosting.\",\n );\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: null,\n });\n }\n\n if (deploymentSelection.kind === \"preview\") {\n // TODO -- add usage state warnings here too once we can do it without a deployment name\n // await usageStateWarning(ctx);\n if (cmdOptions.previewName !== undefined) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--preview-name` flag has been deprecated in favor of `--preview-create`. Please re-run the command using `--preview-create` instead.\",\n });\n }\n\n const teamAndProjectSlugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n await deployToNewPreviewDeployment(\n ctx,\n {\n previewDeployKey: deploymentSelection.previewDeployKey,\n projectSelection: {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProjectSlugs.teamSlug,\n projectSlug: teamAndProjectSlugs.projectSlug,\n },\n },\n {\n ...cmdOptions,\n },\n );\n } else {\n if (cmdOptions.previewCreate !== undefined) {\n const source =\n deploymentSelection.kind === \"deploymentWithinProject\" &&\n deploymentSelection.targetProject.kind === \"deploymentName\"\n ? `at ${chalkStderr.blue.underline(`${DASHBOARD_HOST}/dp/${deploymentSelection.targetProject.deploymentName}/settings#preview-deploy-keys`)}`\n : deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.deploymentFields !== null\n ? `at ${chalkStderr.blue.underline(`${DASHBOARD_HOST}/dp/${deploymentSelection.deploymentToActOn.deploymentFields.deploymentName}/settings#preview-deploy-keys`)}`\n : \"on the dashboard\";\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Preview deployments can only be created with preview deploy keys. Generate a preview deploy key ${source} and set the ${chalkStderr.bold(`CONVEX_DEPLOY_KEY`)} environment variable with it.`,\n });\n }\n\n await deployToExistingDeployment(ctx, {\n ...cmdOptions,\n skipWorkosCheck: cmdOptions.skipWorkosCheck ?? false,\n allowDeletingLargeIndexes:\n cmdOptions.allowDeletingLargeIndexes ?? false,\n });\n }\n });\n\nasync function deployToNewPreviewDeployment(\n ctx: Context,\n deploymentSelection: {\n previewDeployKey: string;\n projectSelection: {\n kind: \"teamAndProjectSlugs\";\n teamSlug: string;\n projectSlug: string;\n };\n },\n options: {\n dryRun?: boolean | undefined;\n previewCreate?: string | undefined;\n previewRun?: string | undefined;\n cmdUrlEnvVarName?: string | undefined;\n cmd?: string | undefined;\n verbose?: boolean | undefined;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n pushAllModules?: boolean;\n\n debug?: boolean | undefined;\n debugBundlePath?: string | undefined;\n skipWorkosCheck?: boolean | undefined;\n },\n) {\n const previewName = options.previewCreate ?? gitBranchFromEnvironment();\n if (previewName === null) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`npx convex deploy` to a preview deployment could not determine the preview name. Provide one using `--preview-create`\",\n });\n }\n\n if (options.dryRun) {\n logFinishedStep(\n `Would have claimed preview deployment for \"${previewName}\"`,\n );\n await runCommand(ctx, {\n cmdUrlEnvVarName: options.cmdUrlEnvVarName,\n cmd: options.cmd,\n dryRun: !!options.dryRun,\n url: \"https://<PREVIEW DEPLOYMENT>.convex.cloud\",\n adminKey: \"preview-deployment-admin-key\",\n });\n logFinishedStep(\n `Would have deployed Convex functions to preview deployment for \"${previewName}\"`,\n );\n if (options.previewRun !== undefined) {\n logMessage(`Would have run function \"${options.previewRun}\"`);\n }\n return;\n }\n const data = await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"claim_preview_deployment\",\n data: {\n projectSelection: deploymentSelection.projectSelection,\n identifier: previewName,\n },\n });\n\n const previewAdminKey = data.adminKey;\n const previewUrl = data.instanceUrl;\n\n // Extract deployment name from URL for WorkOS provisioning\n const deploymentNameForWorkOS = extractDeploymentNameForWorkOS(previewUrl);\n\n // Provision WorkOS before building the client bundle (if configured)\n const { projectConfig } = await readProjectConfig(ctx);\n const authKitConfig = await getAuthKitConfig(ctx, projectConfig);\n\n if (authKitConfig && deploymentNameForWorkOS && !options.skipWorkosCheck) {\n await ensureAuthKitProvisionedBeforeBuild(\n ctx,\n deploymentNameForWorkOS,\n { deploymentUrl: previewUrl, adminKey: previewAdminKey },\n \"preview\",\n );\n }\n\n await runCommand(ctx, {\n ...options,\n url: previewUrl,\n adminKey: previewAdminKey,\n });\n\n const pushOptions: PushOptions = {\n deploymentName: null,\n adminKey: previewAdminKey,\n verbose: !!options.verbose,\n dryRun: false,\n typecheck: options.typecheck,\n typecheckComponents: options.typecheckComponents,\n debug: !!options.debug,\n debugBundlePath: options.debugBundlePath,\n debugNodeApis: false,\n codegen: options.codegen === \"enable\",\n url: previewUrl,\n liveComponentSources: false,\n pushAllModules: !!options.pushAllModules,\n largeIndexDeletionCheck: \"no verification\", // fine for preview deployments\n };\n showSpinner(`Deploying to ${previewUrl}...`);\n await runPush(ctx, pushOptions);\n logFinishedStep(`Deployed Convex functions to ${previewUrl}`);\n\n if (options.previewRun !== undefined) {\n await runFunctionAndLog(ctx, {\n deploymentUrl: previewUrl,\n adminKey: previewAdminKey,\n functionName: options.previewRun,\n argsString: \"{}\",\n componentPath: undefined,\n callbacks: {\n onSuccess: () => {\n logFinishedStep(`Finished running function \"${options.previewRun}\"`);\n },\n },\n });\n }\n}\n\nasync function deployToExistingDeployment(\n ctx: Context,\n options: {\n verbose?: boolean | undefined;\n dryRun?: boolean | undefined;\n yes?: boolean | undefined;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n cmd?: string | undefined;\n cmdUrlEnvVarName?: string | undefined;\n pushAllModules?: boolean;\n\n debugBundlePath?: string | undefined;\n debug?: boolean | undefined;\n adminKey?: string | undefined;\n url?: string | undefined;\n writePushRequest?: string | undefined;\n liveComponentSources?: boolean | undefined;\n envFile?: string | undefined;\n skipWorkosCheck?: boolean | undefined;\n allowDeletingLargeIndexes: boolean;\n },\n) {\n const deploymentSelection = await getDeploymentSelection(ctx, {\n ...options,\n implicitProd: true,\n });\n const deploymentToActOn = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n );\n const { deploymentFields } = deploymentToActOn;\n\n const configuredDeployment =\n deploymentNameAndTypeFromSelection(deploymentSelection);\n if (configuredDeployment !== null && configuredDeployment.name !== null) {\n const shouldPushToProd =\n configuredDeployment.name === deploymentFields?.deploymentName ||\n (options.yes ??\n (await askToConfirmPush(\n ctx,\n {\n configuredName: configuredDeployment.name,\n configuredType: configuredDeployment.type,\n requestedName: deploymentFields?.deploymentName!,\n requestedType: deploymentFields?.deploymentType!,\n },\n deploymentToActOn.url,\n )));\n if (!shouldPushToProd) {\n await ctx.crash({\n exitCode: 1,\n printedMessage: null,\n errorType: \"fatal\",\n });\n }\n }\n\n const isCloudDeployment = deploymentFields !== null;\n await Promise.all([\n deployToDeployment(\n ctx,\n {\n url: deploymentToActOn.url,\n adminKey: deploymentToActOn.adminKey,\n deploymentName: deploymentFields?.deploymentName ?? null,\n ...(deploymentFields?.deploymentType !== undefined\n ? { deploymentType: deploymentFields.deploymentType }\n : {}),\n },\n { ...options, skipWorkosCheck: options.skipWorkosCheck },\n ),\n ...(isCloudDeployment\n ? [\n usageStateWarning(ctx, deploymentFields.deploymentName),\n checkVersion(ctx),\n ]\n : []),\n ]);\n}\n\nasync function askToConfirmPush(\n ctx: Context,\n deployment: {\n configuredName: string;\n configuredType: string | null;\n requestedName: string;\n requestedType: string;\n },\n prodUrl: string,\n) {\n logMessage(\n `\\\nYou're currently developing against your ${chalkStderr.bold(\n deployment.configuredType ?? \"dev\",\n )} deployment\n\n ${deployment.configuredName} (set in CONVEX_DEPLOYMENT)\n\nYour ${chalkStderr.bold(deployment.requestedType)} deployment ${chalkStderr.bold(\n deployment.requestedName,\n )} serves traffic at:\n\n ${(await suggestedEnvVarNames(ctx)).convexUrlEnvVar}=${chalkStderr.bold(prodUrl)}\n\nMake sure that your published client is configured with this URL (for instructions see https://docs.convex.dev/hosting)\\n`,\n );\n return promptYesNo(ctx, {\n message: `Do you want to push your code to your ${deployment.requestedType} deployment ${deployment.requestedName} now?`,\n default: true,\n });\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { Command, Option } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { logFinishedStep, logMessage, showSpinner } from \"../bundler/log.js\";\nimport { loadSelectedDeploymentCredentials } from \"./lib/api.js\";\nimport {\n gitBranchFromEnvironment,\n isNonProdBuildEnvironment,\n suggestedEnvVarNames,\n} from \"./lib/envvars.js\";\nimport { PushOptions } from \"./lib/components.js\";\nimport {\n CONVEX_DEPLOY_KEY_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n bigBrainAPI,\n} from \"./lib/utils/utils.js\";\nimport { runFunctionAndLog } from \"./lib/run.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./lib/deployment.js\";\nimport { runPush } from \"./lib/components.js\";\nimport { promptYesNo } from \"./lib/utils/prompts.js\";\nimport { deployToDeployment, runCommand } from \"./lib/deploy2.js\";\nimport {\n DeploymentSelection,\n getDeploymentSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { deploymentNameAndTypeFromSelection } from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\nimport { readProjectConfig, getAuthKitConfig } from \"./lib/config.js\";\nimport { ensureAuthKitProvisionedBeforeBuild } from \"./lib/workos/workos.js\";\nimport { DASHBOARD_HOST } from \"./lib/dashboard.js\";\nimport { extractDeploymentNameForWorkOS } from \"./lib/extractDeploymentNameForWorkOS.js\";\n\nexport const deploy = new Command(\"deploy\")\n .summary(\"Deploy to your prod deployment\")\n .description(\n \"Deploy to your deployment. By default, this deploys to your prod deployment.\\n\\n\" +\n `Deploys to a preview deployment if the \\`${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\\` environment variable is set to a Preview Deploy Key.`,\n )\n .allowExcessArguments(false)\n .addDeployOptions()\n .addOption(\n new Option(\n \"--preview-run <functionName>\",\n \"Function to run if deploying to a preview deployment. This is ignored if deploying to a production deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--preview-create <name>\",\n \"The name to associate with this deployment if deploying to a newly created preview deployment. Defaults to the current Git branch name in Vercel, Netlify and GitHub CI. This parameter can only be used with a preview deploy key (when used with another type of key, the command will return an error).\",\n ).conflicts(\"preview-name\"),\n )\n .addOption(\n new Option(\n \"--check-build-environment <mode>\",\n \"Whether to check for a non-production build environment before deploying to a production Convex deployment.\",\n )\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const)\n .hideHelp(),\n )\n // Hidden options to pass in admin key and url for tests and local development\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n .addOption(\n new Option(\n \"--preview-name <name>\",\n \"[deprecated] Use `--preview-create` instead. The name to associate with this deployment if deploying to a preview deployment.\",\n )\n .hideHelp()\n .conflicts(\"preview-create\"),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(\n new Option(\n \"--skip-workos-check\",\n \"Skip WorkOS AuthKit provisioning and credential checks during deploy.\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\"--allow-deleting-large-indexes\")\n .hideHelp()\n .conflicts(\"preview-create\")\n .conflicts(\"preview-name\"),\n )\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n\n const deploymentSelection = await getDeploymentSelection(ctx, {\n ...cmdOptions,\n implicitProd: true,\n });\n if (\n cmdOptions.checkBuildEnvironment === \"enable\" &&\n isNonProdBuildEnvironment() &&\n deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.source === \"deployKey\" &&\n deploymentSelection.deploymentToActOn.deploymentFields?.deploymentType ===\n \"prod\"\n ) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"invalid filesystem data\",\n printedMessage: `Detected a non-production build environment and \"${CONVEX_DEPLOY_KEY_ENV_VAR_NAME}\" for a production Convex deployment.\\n\n This is probably unintentional.\n `,\n });\n }\n\n if (deploymentSelection.kind === \"anonymous\") {\n logMessage(\n \"You are currently developing anonymously with a locally running project.\\n\" +\n \"To deploy your Convex app to the cloud, log in by running `npx convex login`.\\n\" +\n \"See https://docs.convex.dev/production for more information on how Convex cloud works and instructions on how to set up hosting.\",\n );\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: null,\n });\n }\n\n if (deploymentSelection.kind === \"preview\") {\n // TODO -- add usage state warnings here too once we can do it without a deployment name\n // await usageStateWarning(ctx);\n if (cmdOptions.previewName !== undefined) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"The `--preview-name` flag has been deprecated in favor of `--preview-create`. Please re-run the command using `--preview-create` instead.\",\n });\n }\n\n const teamAndProjectSlugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n await deployToNewPreviewDeployment(\n ctx,\n {\n previewDeployKey: deploymentSelection.previewDeployKey,\n projectSelection: {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProjectSlugs.teamSlug,\n projectSlug: teamAndProjectSlugs.projectSlug,\n },\n },\n {\n ...cmdOptions,\n },\n );\n } else {\n if (cmdOptions.previewCreate !== undefined) {\n const source =\n deploymentSelection.kind === \"deploymentWithinProject\" &&\n deploymentSelection.targetProject.kind === \"deploymentName\"\n ? `at ${chalkStderr.blue.underline(`${DASHBOARD_HOST}/dp/${deploymentSelection.targetProject.deploymentName}/settings#preview-deploy-keys`)}`\n : deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.deploymentFields !== null\n ? `at ${chalkStderr.blue.underline(`${DASHBOARD_HOST}/dp/${deploymentSelection.deploymentToActOn.deploymentFields.deploymentName}/settings#preview-deploy-keys`)}`\n : \"on the dashboard\";\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Preview deployments can only be created with preview deploy keys. Generate a preview deploy key ${source} and set the ${chalkStderr.bold(`CONVEX_DEPLOY_KEY`)} environment variable with it.`,\n });\n }\n\n await deployToExistingDeployment(ctx, deploymentSelection, {\n ...cmdOptions,\n skipWorkosCheck: cmdOptions.skipWorkosCheck ?? false,\n allowDeletingLargeIndexes:\n cmdOptions.allowDeletingLargeIndexes ?? false,\n });\n }\n });\n\nasync function deployToNewPreviewDeployment(\n ctx: Context,\n deploymentSelection: {\n previewDeployKey: string;\n projectSelection: {\n kind: \"teamAndProjectSlugs\";\n teamSlug: string;\n projectSlug: string;\n };\n },\n options: {\n dryRun?: boolean | undefined;\n previewCreate?: string | undefined;\n previewRun?: string | undefined;\n cmdUrlEnvVarName?: string | undefined;\n cmd?: string | undefined;\n verbose?: boolean | undefined;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n pushAllModules?: boolean;\n\n debug?: boolean | undefined;\n debugBundlePath?: string | undefined;\n skipWorkosCheck?: boolean | undefined;\n },\n) {\n const previewName = options.previewCreate ?? gitBranchFromEnvironment();\n if (previewName === null) {\n await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`npx convex deploy` to a preview deployment could not determine the preview name. Provide one using `--preview-create`\",\n });\n }\n\n if (options.dryRun) {\n logFinishedStep(\n `Would have claimed preview deployment for \"${previewName}\"`,\n );\n await runCommand(ctx, {\n cmdUrlEnvVarName: options.cmdUrlEnvVarName,\n cmd: options.cmd,\n dryRun: !!options.dryRun,\n url: \"https://<PREVIEW DEPLOYMENT>.convex.cloud\",\n adminKey: \"preview-deployment-admin-key\",\n });\n logFinishedStep(\n `Would have deployed Convex functions to preview deployment for \"${previewName}\"`,\n );\n if (options.previewRun !== undefined) {\n logMessage(`Would have run function \"${options.previewRun}\"`);\n }\n return;\n }\n const data = await bigBrainAPI({\n ctx,\n method: \"POST\",\n path: \"claim_preview_deployment\",\n data: {\n projectSelection: deploymentSelection.projectSelection,\n identifier: previewName,\n },\n });\n\n const previewAdminKey = data.adminKey;\n const previewUrl = data.instanceUrl;\n\n // Extract deployment name from URL for WorkOS provisioning\n const deploymentNameForWorkOS = extractDeploymentNameForWorkOS(previewUrl);\n\n // Provision WorkOS before building the client bundle (if configured)\n const { projectConfig } = await readProjectConfig(ctx);\n const authKitConfig = await getAuthKitConfig(ctx, projectConfig);\n\n if (authKitConfig && deploymentNameForWorkOS && !options.skipWorkosCheck) {\n await ensureAuthKitProvisionedBeforeBuild(\n ctx,\n deploymentNameForWorkOS,\n { deploymentUrl: previewUrl, adminKey: previewAdminKey },\n \"preview\",\n );\n }\n\n await runCommand(ctx, {\n ...options,\n url: previewUrl,\n adminKey: previewAdminKey,\n });\n\n const pushOptions: PushOptions = {\n deploymentName: null,\n adminKey: previewAdminKey,\n verbose: !!options.verbose,\n dryRun: false,\n typecheck: options.typecheck,\n typecheckComponents: options.typecheckComponents,\n debug: !!options.debug,\n debugBundlePath: options.debugBundlePath,\n debugNodeApis: false,\n codegen: options.codegen === \"enable\",\n url: previewUrl,\n liveComponentSources: false,\n pushAllModules: !!options.pushAllModules,\n largeIndexDeletionCheck: \"no verification\", // fine for preview deployments\n };\n showSpinner(`Deploying to ${previewUrl}...`);\n await runPush(ctx, pushOptions);\n logFinishedStep(`Deployed Convex functions to ${previewUrl}`);\n\n if (options.previewRun !== undefined) {\n await runFunctionAndLog(ctx, {\n deploymentUrl: previewUrl,\n adminKey: previewAdminKey,\n functionName: options.previewRun,\n argsString: \"{}\",\n componentPath: undefined,\n callbacks: {\n onSuccess: () => {\n logFinishedStep(`Finished running function \"${options.previewRun}\"`);\n },\n },\n });\n }\n}\n\nasync function deployToExistingDeployment(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n options: {\n verbose?: boolean | undefined;\n dryRun?: boolean | undefined;\n yes?: boolean | undefined;\n typecheck: \"enable\" | \"try\" | \"disable\";\n typecheckComponents: boolean;\n codegen: \"enable\" | \"disable\";\n cmd?: string | undefined;\n cmdUrlEnvVarName?: string | undefined;\n pushAllModules?: boolean;\n\n debugBundlePath?: string | undefined;\n debug?: boolean | undefined;\n adminKey?: string | undefined;\n url?: string | undefined;\n writePushRequest?: string | undefined;\n liveComponentSources?: boolean | undefined;\n envFile?: string | undefined;\n skipWorkosCheck?: boolean | undefined;\n allowDeletingLargeIndexes: boolean;\n },\n) {\n const deploymentToActOn = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n );\n const { deploymentFields } = deploymentToActOn;\n\n const configuredDeployment =\n deploymentNameAndTypeFromSelection(deploymentSelection);\n if (configuredDeployment !== null && configuredDeployment.name !== null) {\n const shouldPushToProd =\n configuredDeployment.name === deploymentFields?.deploymentName ||\n (options.yes ??\n (await askToConfirmPush(\n ctx,\n {\n configuredName: configuredDeployment.name,\n configuredType: configuredDeployment.type,\n requestedName: deploymentFields?.deploymentName!,\n requestedType: deploymentFields?.deploymentType!,\n },\n deploymentToActOn.url,\n )));\n if (!shouldPushToProd) {\n await ctx.crash({\n exitCode: 1,\n printedMessage: null,\n errorType: \"fatal\",\n });\n }\n }\n\n const isCloudDeployment = deploymentFields !== null;\n await Promise.all([\n deployToDeployment(\n ctx,\n {\n url: deploymentToActOn.url,\n adminKey: deploymentToActOn.adminKey,\n deploymentName: deploymentFields?.deploymentName ?? null,\n ...(deploymentFields?.deploymentType !== undefined\n ? { deploymentType: deploymentFields.deploymentType }\n : {}),\n },\n { ...options, skipWorkosCheck: options.skipWorkosCheck },\n ),\n ...(isCloudDeployment\n ? [\n usageStateWarning(ctx, deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]\n : []),\n ]);\n}\n\nasync function askToConfirmPush(\n ctx: Context,\n deployment: {\n configuredName: string;\n configuredType: string | null;\n requestedName: string;\n requestedType: string;\n },\n prodUrl: string,\n) {\n logMessage(\n `\\\nYou're currently developing against your ${chalkStderr.bold(\n deployment.configuredType ?? \"dev\",\n )} deployment\n\n ${deployment.configuredName} (set in CONVEX_DEPLOYMENT)\n\nYour ${chalkStderr.bold(deployment.requestedType)} deployment ${chalkStderr.bold(\n deployment.requestedName,\n )} serves traffic at:\n\n ${(await suggestedEnvVarNames(ctx)).convexUrlEnvVar}=${chalkStderr.bold(prodUrl)}\n\nMake sure that your published client is configured with this URL (for instructions see https://docs.convex.dev/hosting)\\n`,\n );\n return promptYesNo(ctx, {\n message: `Do you want to push your code to your ${deployment.requestedType} deployment ${deployment.requestedName} now?`,\n default: true,\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_components", "import_deploymentSelection"]
7
7
  }
@@ -33,27 +33,81 @@ var import_deploymentSelect = require("./deploymentSelect.js");
33
33
  var import_prompts = require("./lib/utils/prompts.js");
34
34
  var import_chalk = require("chalk");
35
35
  var import_deploymentSelector = require("./lib/deploymentSelector.js");
36
- const deploymentCreate = new import_extra_typings.Command("create").summary("Create a new cloud deployment for a project").description(
37
- "Create a new cloud deployment for a project.\n\n Create a dev deployment and select it: `npx convex deployment create dev/my-new-feature --type dev --select`\n Create a prod staging deployment: `npx convex deployment create staging --type prod`\n"
36
+ var import_expiration = require("./lib/expiration.js");
37
+ var import_download = require("./lib/localDeployment/download.js");
38
+ var import_filePaths = require("./lib/localDeployment/filePaths.js");
39
+ var import_utils2 = require("./lib/localDeployment/utils.js");
40
+ var import_bigBrain = require("./lib/localDeployment/bigBrain.js");
41
+ const SUPPORTED_TYPES = ["dev", "prod", "preview"];
42
+ const deploymentCreate = new import_extra_typings.Command("create").summary("Create a new deployment for a project").description(
43
+ "Create a new deployment for a project.\n\n Create a dev deployment and select it: `npx convex deployment create dev/my-new-feature --type dev --select`\n Create a prod deployment named \u201Cstaging\u201D: `npx convex deployment create staging --type prod`\n Create a local deployment: `npx convex deployment create local`\n"
38
44
  ).argument("[ref]").allowExcessArguments(false).addOption(
39
- new import_extra_typings.Option("--type <type>", "Deployment type").choices([
40
- "dev",
41
- "prod",
42
- "preview"
43
- ])
45
+ new import_extra_typings.Option("--type <type>", "Deployment type").choices(SUPPORTED_TYPES)
44
46
  ).option("--region <region>", "Deployment region").option(
45
47
  "--select",
46
- "Select the new deployment. This will update the Convex environment variables in .env.local and `npx convex dev` will run against this deployment."
48
+ "Select the new deployment. This will update the Convex environment variables in .env.local. Subsequent `npx convex` commands will run against this deployment."
47
49
  ).option(
48
50
  "--default",
49
- "Set the new deployment as your default development or production deployment."
51
+ "Make the new deployment your default production deployment (used by `npx convex deploy`) or your personal dev deployment."
52
+ ).option(
53
+ "--expiration <value>",
54
+ 'When the deployment expires (e.g. "none", "in 7 days", "2026-04-01T00:00:00Z", or a UNIX timestamp in seconds or milliseconds)'
50
55
  ).action(async (refParam, options) => {
51
56
  const ctx = await (0, import_context.oneoffContext)({
52
57
  url: void 0,
53
58
  adminKey: void 0,
54
59
  envFile: void 0
55
60
  });
56
- const { ref, regionDetails, projectId, type, isDefault } = process.stdin.isTTY ? await resolveOptionsInteractively(ctx, refParam, options) : await resolveOptionsNoninteractively(ctx, refParam, options);
61
+ const currentDeployment = await (0, import_deploymentSelection.getDeploymentSelection)(ctx, {
62
+ url: void 0,
63
+ adminKey: void 0,
64
+ envFile: void 0
65
+ });
66
+ if (refParam !== void 0) {
67
+ if (refParam === "local") {
68
+ const cloudOnlyFlags = [
69
+ "type",
70
+ "region",
71
+ "default",
72
+ "expiration"
73
+ ];
74
+ for (const flag of cloudOnlyFlags) {
75
+ if (options[flag]) {
76
+ return await ctx.crash({
77
+ exitCode: 1,
78
+ errorType: "fatal",
79
+ printedMessage: `--${flag} cannot be used when creating a local deployment`
80
+ });
81
+ }
82
+ }
83
+ await createLocalDeployment(
84
+ ctx,
85
+ currentDeployment,
86
+ options.select ?? false
87
+ );
88
+ return;
89
+ }
90
+ }
91
+ const expiresAt = await resolveExpiresAtOrCrash(ctx, options.expiration);
92
+ const {
93
+ ref,
94
+ regionDetails,
95
+ projectId,
96
+ type,
97
+ isDefault,
98
+ teamSlug,
99
+ projectSlug
100
+ } = process.stdin.isTTY ? await resolveOptionsInteractively(
101
+ ctx,
102
+ currentDeployment,
103
+ refParam,
104
+ options
105
+ ) : await resolveOptionsNoninteractively(
106
+ ctx,
107
+ currentDeployment,
108
+ refParam,
109
+ options
110
+ );
57
111
  (0, import_log.showSpinner)(
58
112
  `Creating ${type} deployment` + (regionDetails ? ` in region ${regionDetails.displayName}` : "") + "..."
59
113
  );
@@ -67,7 +121,8 @@ const deploymentCreate = new import_extra_typings.Command("create").summary("Cre
67
121
  type,
68
122
  region: regionDetails?.name ?? null,
69
123
  reference: ref ?? null,
70
- isDefault
124
+ isDefault,
125
+ ...expiresAt !== void 0 ? { expiresAt } : {}
71
126
  }
72
127
  }
73
128
  )).data;
@@ -82,19 +137,99 @@ const deploymentCreate = new import_extra_typings.Command("create").summary("Cre
82
137
  }
83
138
  if (!options.select) {
84
139
  (0, import_log.logFinishedStep)(
85
- `Provisioned a ${created.isDefault ? "default " : ""}${created.deploymentType} deployment. Select this deployment to develop against using \`npx convex deployment select ${created.reference}\``
86
- );
87
- (0, import_log.logMessage)(
88
- import_chalk.chalkStderr.gray(
89
- "Hint: use `npx convex deployment create --select` to immediately select the newly created deployment."
90
- )
140
+ `Provisioned a ${created.isDefault ? "default " : ""}${created.deploymentType} deployment.`
91
141
  );
142
+ if (type !== "prod") {
143
+ const selectRef = `${teamSlug}:${projectSlug}:${created.reference}`;
144
+ (0, import_log.logMessage)(
145
+ `
146
+ To make \`npx convex\` use this deployment, run ${import_chalk.chalkStderr.bold(`npx convex deployment select ${selectRef}`)}`
147
+ );
148
+ (0, import_log.logMessage)(
149
+ import_chalk.chalkStderr.gray(
150
+ "Hint: use `--select` to immediately select the newly created deployment."
151
+ )
152
+ );
153
+ }
92
154
  }
93
155
  if (options.select) {
94
- await (0, import_deploymentSelect.selectDeployment)(ctx, created.reference);
156
+ const selection = {
157
+ kind: "deploymentWithinProject",
158
+ targetProject: {
159
+ kind: "teamAndProjectSlugs",
160
+ teamSlug,
161
+ projectSlug
162
+ },
163
+ selectionWithinProject: {
164
+ kind: "deploymentSelector",
165
+ selector: created.reference
166
+ }
167
+ };
168
+ await (0, import_deploymentSelect.saveSelectedDeployment)(
169
+ ctx,
170
+ created.reference,
171
+ selection,
172
+ (0, import_deploymentSelection.deploymentNameFromSelection)(currentDeployment)
173
+ );
95
174
  }
96
175
  });
97
- async function resolveOptionsNoninteractively(ctx, refParam, options) {
176
+ async function createLocalDeployment(ctx, currentDeployment, select) {
177
+ const existing = (0, import_filePaths.loadProjectLocalConfig)(ctx);
178
+ if (existing) {
179
+ return await ctx.crash({
180
+ exitCode: 1,
181
+ errorType: "fatal",
182
+ printedMessage: "A local deployment already exists."
183
+ });
184
+ }
185
+ const { teamSlug, slug: projectSlug } = await resolveProject(
186
+ ctx,
187
+ currentDeployment
188
+ );
189
+ (0, import_log.showSpinner)("Downloading local backend...");
190
+ const { version } = await (0, import_download.ensureBackendBinaryDownloaded)(ctx, {
191
+ kind: "latest"
192
+ });
193
+ const { cloudPort, sitePort } = await (0, import_utils2.chooseLocalBackendPorts)(ctx);
194
+ (0, import_log.showSpinner)("Registering local deployment...");
195
+ const { deploymentName, adminKey } = await (0, import_bigBrain.bigBrainStart)(ctx, {
196
+ port: cloudPort,
197
+ projectSlug,
198
+ teamSlug,
199
+ instanceName: null
200
+ });
201
+ (0, import_filePaths.saveDeploymentConfig)(ctx, "local", deploymentName, {
202
+ backendVersion: version,
203
+ ports: { cloud: cloudPort, site: sitePort },
204
+ adminKey,
205
+ instanceSecret: import_utils2.LOCAL_BACKEND_INSTANCE_SECRET
206
+ });
207
+ (0, import_log.logFinishedStep)("Created local deployment.");
208
+ if (select) {
209
+ const selection = {
210
+ kind: "deploymentWithinProject",
211
+ targetProject: {
212
+ kind: "deploymentName",
213
+ deploymentName,
214
+ deploymentType: "local"
215
+ },
216
+ selectionWithinProject: {
217
+ kind: "deploymentSelector",
218
+ selector: "local"
219
+ }
220
+ };
221
+ await (0, import_deploymentSelect.saveSelectedDeployment)(
222
+ ctx,
223
+ "local",
224
+ selection,
225
+ (0, import_deploymentSelection.deploymentNameFromSelection)(currentDeployment)
226
+ );
227
+ }
228
+ const devCommand = select ? "npx convex dev" : "npx convex dev --deployment local";
229
+ (0, import_log.logMessage)(`
230
+ Run ${import_chalk.chalkStderr.bold(devCommand)} to start it.`);
231
+ }
232
+ async function resolveOptionsNoninteractively(ctx, currentDeployment, refParam, options) {
98
233
  let ref;
99
234
  let teamAndProject;
100
235
  if (refParam) {
@@ -120,21 +255,14 @@ async function resolveOptionsNoninteractively(ctx, refParam, options) {
120
255
  return await ctx.crash({
121
256
  exitCode: 1,
122
257
  errorType: "fatal",
123
- printedMessage: "--type is required. Use --type dev or --type prod."
258
+ printedMessage: `--type is required (supported values: ${SUPPORTED_TYPES.join(", ")})`
124
259
  });
125
260
  }
126
261
  const project = teamAndProject ? await (0, import_deploymentSelection.getProjectDetails)(ctx, {
127
262
  kind: "teamAndProjectSlugs",
128
263
  teamSlug: teamAndProject.teamSlug,
129
264
  projectSlug: teamAndProject.projectSlug
130
- }) : await resolveProject(
131
- ctx,
132
- await (0, import_deploymentSelection.getDeploymentSelection)(ctx, {
133
- url: void 0,
134
- adminKey: void 0,
135
- envFile: void 0
136
- })
137
- );
265
+ }) : await resolveProject(ctx, currentDeployment);
138
266
  const projectId = project.id;
139
267
  let regionDetails = null;
140
268
  if (options.region) {
@@ -150,10 +278,12 @@ async function resolveOptionsNoninteractively(ctx, refParam, options) {
150
278
  isDefault: options.default ?? null,
151
279
  projectId,
152
280
  regionDetails,
153
- type: options.type
281
+ type: options.type,
282
+ teamSlug: project.teamSlug,
283
+ projectSlug: project.slug
154
284
  };
155
285
  }
156
- async function resolveOptionsInteractively(ctx, refParam, options) {
286
+ async function resolveOptionsInteractively(ctx, currentDeployment, refParam, options) {
157
287
  let deploymentType;
158
288
  if (options.type) {
159
289
  deploymentType = logAndUse("type", options.type);
@@ -189,7 +319,12 @@ async function resolveOptionsInteractively(ctx, refParam, options) {
189
319
  }
190
320
  }
191
321
  while (ref === void 0) {
192
- const input = await (0, import_prompts.promptString)(ctx, { message: "Deployment ref?" });
322
+ const input = await (0, import_prompts.promptString)(ctx, {
323
+ message: "How to name this deployment?\n" + import_chalk.chalkStderr.reset.dim(
324
+ "The deployment reference will be used to identify your deployment on the dashboard and in CLI commands.\nExamples: staging, dev/james/feature-payment-integration"
325
+ ) + "\n>",
326
+ validate: validateTentativeReference
327
+ });
193
328
  const result = parseSelectorForNewDeployment(input);
194
329
  if (result.kind === "invalid") {
195
330
  (0, import_log.logFailure)(result.message);
@@ -202,14 +337,7 @@ async function resolveOptionsInteractively(ctx, refParam, options) {
202
337
  kind: "teamAndProjectSlugs",
203
338
  teamSlug: teamAndProject.teamSlug,
204
339
  projectSlug: teamAndProject.projectSlug
205
- }) : await resolveProject(
206
- ctx,
207
- await (0, import_deploymentSelection.getDeploymentSelection)(ctx, {
208
- url: void 0,
209
- adminKey: void 0,
210
- envFile: void 0
211
- })
212
- );
340
+ }) : await resolveProject(ctx, currentDeployment);
213
341
  const availableRegions = await fetchAvailableRegions(ctx, project.teamId);
214
342
  let regionDetails;
215
343
  if (options.region) {
@@ -248,12 +376,19 @@ async function resolveOptionsInteractively(ctx, refParam, options) {
248
376
  isDefault: options.default ?? null,
249
377
  projectId: project.id,
250
378
  regionDetails,
251
- type: deploymentType
379
+ type: deploymentType,
380
+ teamSlug: project.teamSlug,
381
+ projectSlug: project.slug
252
382
  };
253
383
  }
254
384
  function parseSelectorForNewDeployment(selectorString) {
255
385
  const selector = (0, import_deploymentSelector.parseDeploymentSelector)(selectorString);
256
386
  switch (selector.kind) {
387
+ case "local":
388
+ return {
389
+ kind: "invalid",
390
+ message: `"local" is not a valid deployment reference. To create a local deployment, run ${import_chalk.chalkStderr.bold("npx convex deployment create local")}`
391
+ };
257
392
  case "deploymentName":
258
393
  return {
259
394
  kind: "invalid",
@@ -409,8 +544,58 @@ async function crashInvalidRegion(ctx, availableRegions, region) {
409
544
  printedMessage: invalidRegionMessage(availableRegions, region)
410
545
  });
411
546
  }
547
+ async function resolveExpiresAtOrCrash(ctx, expiration) {
548
+ if (!expiration) {
549
+ return void 0;
550
+ }
551
+ const parsed = (0, import_expiration.parseExpiration)(expiration);
552
+ if (parsed.kind === "error") {
553
+ return await ctx.crash({
554
+ exitCode: 1,
555
+ errorType: "fatal",
556
+ printedMessage: parsed.message
557
+ });
558
+ }
559
+ const now = Date.now();
560
+ const resolved = (0, import_expiration.resolveExpiration)(parsed, now);
561
+ if (resolved !== null) {
562
+ const validation = (0, import_expiration.validateExpiration)(resolved, now);
563
+ if (validation.kind === "error") {
564
+ return await ctx.crash({
565
+ exitCode: 1,
566
+ errorType: "fatal",
567
+ printedMessage: validation.message
568
+ });
569
+ }
570
+ }
571
+ return resolved;
572
+ }
412
573
  function logAndUse(label, value) {
413
574
  (0, import_log.logFinishedStep)(`Using ${label}: ${import_chalk.chalkStderr.bold(value)}`);
414
575
  return value;
415
576
  }
577
+ function validateTentativeReference(tentativeReference) {
578
+ if (tentativeReference.length < 3) {
579
+ return "References must be at least 3 characters";
580
+ }
581
+ if (tentativeReference.length > 100) {
582
+ return "References must be at most 100 characters";
583
+ }
584
+ if (!/^[a-z0-9/-]+$/.test(tentativeReference)) {
585
+ return "References can only contain lowercase letters, numbers, hyphens, and slashes";
586
+ }
587
+ if (tentativeReference === "dev") {
588
+ return '"dev" is not a valid deployment reference.';
589
+ }
590
+ if (tentativeReference === "prod") {
591
+ return '"prod" is not a valid deployment reference.';
592
+ }
593
+ if (tentativeReference === "local") {
594
+ return `"local" is not a valid deployment reference. To create a local deployment, run ${import_chalk.chalkStderr.bold("npx convex deployment create local")}`;
595
+ }
596
+ if (/^[a-z]+-[a-z]+-\d+$/.test(tentativeReference)) {
597
+ return "References cannot be in the format abc-xyz-123, as it is reserved for deployment names";
598
+ }
599
+ return true;
600
+ }
416
601
  //# sourceMappingURL=deploymentCreate.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/deploymentCreate.ts"],
4
- "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport {\n logFailure,\n logFinishedStep,\n logMessage,\n showSpinner,\n} from \"../bundler/log.js\";\nimport {\n DeploymentSelection,\n getDeploymentSelection,\n getProjectDetails,\n} from \"./lib/deploymentSelection.js\";\nimport {\n logNoDefaultRegionMessage,\n selectRegion,\n typedBigBrainClient,\n typedPlatformClient,\n} from \"./lib/utils/utils.js\";\nimport { PlatformProjectDetails } from \"@convex-dev/platform/managementApi\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./lib/deployment.js\";\nimport { selectDeployment } from \"./deploymentSelect.js\";\nimport { promptOptions, promptString } from \"./lib/utils/prompts.js\";\nimport { chalkStderr } from \"chalk\";\nimport { parseDeploymentSelector } from \"./lib/deploymentSelector.js\";\n\nexport const deploymentCreate = new Command(\"create\")\n .summary(\"Create a new cloud deployment for a project\")\n .description(\n \"Create a new cloud deployment for a project.\\n\\n\" +\n \" Create a dev deployment and select it: `npx convex deployment create dev/my-new-feature --type dev --select`\\n\" +\n \" Create a prod staging deployment: `npx convex deployment create staging --type prod`\\n\",\n )\n .argument(\"[ref]\")\n .allowExcessArguments(false)\n .addOption(\n new Option(\"--type <type>\", \"Deployment type\").choices([\n \"dev\",\n \"prod\",\n \"preview\",\n ] as const),\n )\n .option(\"--region <region>\", \"Deployment region\")\n .option(\n \"--select\",\n \"Select the new deployment. This will update the Convex environment variables in .env.local and `npx convex dev` will run against this deployment.\",\n )\n .option(\n \"--default\",\n \"Set the new deployment as your default development or production deployment.\",\n )\n .action(async (refParam, options) => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n const { ref, regionDetails, projectId, type, isDefault } = process.stdin\n .isTTY\n ? await resolveOptionsInteractively(ctx, refParam, options)\n : await resolveOptionsNoninteractively(ctx, refParam, options);\n\n showSpinner(\n `Creating ${type} deployment` +\n (regionDetails ? ` in region ${regionDetails.displayName}` : \"\") +\n \"...\",\n );\n\n const created = (\n await typedPlatformClient(ctx).POST(\n \"/projects/{project_id}/create_deployment\",\n {\n params: {\n path: { project_id: projectId },\n },\n body: {\n type,\n region: regionDetails?.name ?? null,\n reference: ref ?? null,\n isDefault,\n },\n },\n )\n ).data!;\n\n if (created.kind !== \"cloud\") {\n // This should be impossible\n const err = `Expected cloud deployment to be created but got ${created.kind}`;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: err,\n errForSentry: err,\n });\n }\n\n if (!options.select) {\n logFinishedStep(\n `Provisioned a ${created.isDefault ? \"default \" : \"\"}${created.deploymentType} deployment. Select this deployment to develop against using \\`npx convex deployment select ${created.reference}\\``,\n );\n logMessage(\n chalkStderr.gray(\n \"Hint: use `npx convex deployment create --select` to immediately select the newly created deployment.\",\n ),\n );\n }\n\n if (options.select) {\n await selectDeployment(ctx, created.reference);\n }\n });\n\ntype RefParam = Parameters<Parameters<typeof deploymentCreate.action>[0]>[0];\ntype OptionsParam = Parameters<\n Parameters<typeof deploymentCreate.action>[0]\n>[1];\n\nasync function resolveOptionsNoninteractively(\n ctx: Context,\n refParam: RefParam,\n options: OptionsParam,\n) {\n let ref: string | undefined;\n let teamAndProject: { teamSlug: string; projectSlug: string } | undefined;\n if (refParam) {\n const result = parseSelectorForNewDeployment(refParam);\n if (result.kind === \"invalid\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: result.message,\n });\n }\n ref = result.ref;\n teamAndProject = result.teamAndProject;\n }\n\n if (!ref && !options.default) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Specify a deployment ref or use --default:\\n\" +\n \" `npx convex deployment create my-deployment-ref --type dev`\\n\" +\n \" `npx convex deployment create --type prod --default`\",\n });\n }\n\n if (!options.type) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"--type is required. Use --type dev or --type prod.\",\n });\n }\n\n const project = teamAndProject\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProject.teamSlug,\n projectSlug: teamAndProject.projectSlug,\n })\n : await resolveProject(\n ctx,\n await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n }),\n );\n const projectId = project.id;\n\n // If no region is passed in, the team's default region will be used\n let regionDetails: AvailableRegion | null = null;\n if (options.region) {\n const availableRegions = await fetchAvailableRegions(ctx, project.teamId);\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n options.region,\n );\n }\n\n return {\n ref,\n isDefault: options.default ?? null,\n projectId,\n regionDetails,\n type: options.type,\n };\n}\n\nasync function resolveOptionsInteractively(\n ctx: Context,\n refParam: RefParam,\n options: OptionsParam,\n) {\n let deploymentType: \"dev\" | \"prod\" | \"preview\";\n if (options.type) {\n deploymentType = logAndUse(\"type\", options.type);\n } else {\n const dtypeChoices = [\n {\n name: \"dev\",\n value: \"dev\" as const,\n },\n {\n name: \"preview\",\n value: \"preview\" as const,\n },\n {\n name: \"prod\",\n value: \"prod\" as const,\n },\n ];\n deploymentType = await promptOptions(ctx, {\n message: \"Deployment type?\",\n choices: dtypeChoices,\n });\n }\n\n let ref: string | undefined;\n let teamAndProject: { teamSlug: string; projectSlug: string } | undefined;\n if (refParam) {\n const result = parseSelectorForNewDeployment(refParam);\n if (result.kind === \"invalid\") {\n logFailure(result.message);\n } else {\n ref = logAndUse(\"ref\", result.ref);\n teamAndProject = result.teamAndProject;\n }\n }\n while (ref === undefined) {\n const input = await promptString(ctx, { message: \"Deployment ref?\" });\n const result = parseSelectorForNewDeployment(input);\n if (result.kind === \"invalid\") {\n logFailure(result.message);\n continue;\n }\n ref = result.ref;\n teamAndProject = result.teamAndProject;\n }\n\n const project = teamAndProject\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProject.teamSlug,\n projectSlug: teamAndProject.projectSlug,\n })\n : await resolveProject(\n ctx,\n await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n }),\n );\n\n const availableRegions = await fetchAvailableRegions(ctx, project.teamId);\n let regionDetails: AvailableRegion;\n if (options.region) {\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n options.region,\n );\n logAndUse(\"region\", regionDetails.displayName);\n } else {\n // Use the team's default region if set, or prompt the user to pick\n // TODO: this duplicates some of the logic in selectRegionOrUseDefault (npm-packages/convex/src/cli/lib/utils/utils.ts)\n const teams = (await typedBigBrainClient(ctx).GET(\"/teams\")).data!;\n const team = teams.find((team) => team.slug === project.teamSlug);\n if (!team) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Error: Team ${project.teamSlug} not found.`,\n });\n }\n const regionName =\n team.defaultRegion ?? (await selectRegion(ctx, team.id, deploymentType));\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n regionName,\n );\n if (team.defaultRegion) {\n logFinishedStep(\n `Using team default region of ${regionDetails.displayName}`,\n );\n } else {\n logNoDefaultRegionMessage(team.slug);\n }\n }\n\n return {\n ref,\n isDefault: options.default ?? null,\n projectId: project.id,\n regionDetails,\n type: deploymentType,\n };\n}\n\ntype NewDeploymentSelectorResult =\n | {\n kind: \"valid\";\n ref: string;\n teamAndProject?: { teamSlug: string; projectSlug: string };\n }\n | { kind: \"invalid\"; message: string };\n\nfunction parseSelectorForNewDeployment(\n selectorString: string,\n): NewDeploymentSelectorResult {\n const selector = parseDeploymentSelector(selectorString);\n switch (selector.kind) {\n case \"deploymentName\":\n return {\n kind: \"invalid\",\n message: `\"${selector.deploymentName}\" is not a valid deployment reference. References cannot be in the format abc-xyz-123, as it is reserved for deployment names.`,\n };\n case \"inCurrentProject\": {\n const inner = selector.selector;\n if (inner.kind === \"dev\") {\n return {\n kind: \"invalid\",\n message: `\"dev\" is not a valid deployment reference.`,\n };\n }\n if (inner.kind === \"prod\") {\n return {\n kind: \"invalid\",\n message: `\"prod\" is not a valid deployment reference.`,\n };\n }\n return { kind: \"valid\", ref: inner.reference };\n }\n case \"inProject\": {\n return {\n kind: \"invalid\",\n message: `Please use \"team:project:ref\" to specify the team when creating a new deployment in a different project.`,\n };\n }\n case \"inTeamProject\": {\n const inner = selector.selector;\n if (inner.kind === \"dev\") {\n return {\n kind: \"invalid\",\n message: `\"dev\" is not a valid deployment reference.`,\n };\n }\n if (inner.kind === \"prod\") {\n return {\n kind: \"invalid\",\n message: `\"prod\" is not a valid deployment reference.`,\n };\n }\n return {\n kind: \"valid\",\n ref: inner.reference,\n teamAndProject: {\n teamSlug: selector.teamSlug,\n projectSlug: selector.projectSlug,\n },\n };\n }\n default:\n selector satisfies never;\n return {\n kind: \"invalid\",\n message: \"Unknown state. This is a bug in Convex.\",\n };\n }\n}\n\nasync function resolveProject(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n): Promise<PlatformProjectDetails> {\n switch (deploymentSelection.kind) {\n case \"existingDeployment\": {\n const { deploymentFields } = deploymentSelection.deploymentToActOn;\n if (deploymentFields) {\n return await getProjectDetails(ctx, {\n kind: \"deploymentName\",\n deploymentName: deploymentFields.deploymentName,\n deploymentType: null,\n });\n }\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Cannot infer project from the current deployment configuration. Use `team:project:ref` to specify team and project slugs.\",\n });\n }\n case \"deploymentWithinProject\": {\n return await getProjectDetails(ctx, deploymentSelection.targetProject);\n }\n case \"preview\": {\n const slugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n return await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: slugs.teamSlug,\n projectSlug: slugs.projectSlug,\n });\n }\n case \"chooseProject\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"No project configured yet. Use `team:project:ref` to specify team and project slugs.\",\n });\n case \"anonymous\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Cannot create a deployment in anonymous mode. \" +\n \"Run `npx convex login` and configure a project first.\",\n });\n default: {\n deploymentSelection satisfies never;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Unexpected deployment selection kind.`,\n });\n }\n }\n}\n\nconst REGION_NAME_TO_ALIAS: Record<string, string> = {\n \"aws-us-east-1\": \"us\",\n \"aws-eu-west-1\": \"eu\",\n};\n\nconst REGION_ALIAS_TO_NAME = Object.fromEntries(\n Object.entries(REGION_NAME_TO_ALIAS).map(([name, alias]) => [alias, name]),\n);\n\nexport async function fetchAvailableRegions(ctx: Context, teamId: number) {\n const regionsResponse = (\n await typedPlatformClient(ctx).GET(\n \"/teams/{team_id}/list_deployment_regions\",\n {\n params: {\n path: { team_id: `${teamId}` },\n },\n },\n )\n ).data!;\n return regionsResponse.items.filter((item) => item.available);\n}\n\ntype AvailableRegion = Awaited<\n ReturnType<typeof fetchAvailableRegions>\n>[number];\n\nexport function resolveRegionDetails(\n availableRegions: AvailableRegion[],\n region: string,\n) {\n const resolvedRegion = REGION_ALIAS_TO_NAME[region] ?? region;\n return availableRegions.find((item) => item.name === resolvedRegion) ?? null;\n}\n\nasync function resolveRegionDetailsOrCrash(\n ctx: Context,\n availableRegions: AvailableRegion[],\n region: string,\n) {\n const regionDetails = resolveRegionDetails(availableRegions, region);\n if (!regionDetails) {\n return await crashInvalidRegion(ctx, availableRegions, region);\n }\n return regionDetails;\n}\n\nfunction invalidRegionMessage(\n availableRegions: AvailableRegion[],\n region: string,\n): string {\n const formatted = availableRegions\n .map(\n (item) =>\n ` Use \\`--region ${REGION_NAME_TO_ALIAS[item.name] ?? item.name}\\` for ${item.displayName}`,\n )\n .join(\"\\n\");\n return `Invalid region \"${region}\".\\n\\n` + formatted;\n}\n\nasync function crashInvalidRegion(\n ctx: Context,\n availableRegions: AvailableRegion[],\n region: string,\n): Promise<never> {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: invalidRegionMessage(availableRegions, region),\n });\n}\n\n/**\n * Helper to log a value passed in as a CLI argument in the interactive flow.\n */\nfunction logAndUse<T extends string | boolean>(label: string, value: T): T {\n logFinishedStep(`Using ${label}: ${chalkStderr.bold(value)}`);\n return value;\n}\n"],
5
- "mappings": "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",
6
- "names": ["team"]
4
+ "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport {\n logFailure,\n logFinishedStep,\n logMessage,\n showSpinner,\n} from \"../bundler/log.js\";\nimport {\n DeploymentSelection,\n getDeploymentSelection,\n getProjectDetails,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\nimport {\n logNoDefaultRegionMessage,\n selectRegion,\n typedBigBrainClient,\n typedPlatformClient,\n} from \"./lib/utils/utils.js\";\nimport { PlatformProjectDetails } from \"@convex-dev/platform/managementApi\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./lib/deployment.js\";\nimport { saveSelectedDeployment } from \"./deploymentSelect.js\";\nimport { promptOptions, promptString } from \"./lib/utils/prompts.js\";\nimport { chalkStderr } from \"chalk\";\nimport { parseDeploymentSelector } from \"./lib/deploymentSelector.js\";\nimport {\n parseExpiration,\n resolveExpiration,\n validateExpiration,\n} from \"./lib/expiration.js\";\nimport { ensureBackendBinaryDownloaded } from \"./lib/localDeployment/download.js\";\nimport {\n loadProjectLocalConfig,\n saveDeploymentConfig,\n} from \"./lib/localDeployment/filePaths.js\";\nimport {\n chooseLocalBackendPorts,\n LOCAL_BACKEND_INSTANCE_SECRET,\n} from \"./lib/localDeployment/utils.js\";\nimport { bigBrainStart } from \"./lib/localDeployment/bigBrain.js\";\n\nconst SUPPORTED_TYPES = [\"dev\", \"prod\", \"preview\"] as const;\n\nexport const deploymentCreate = new Command(\"create\")\n .summary(\"Create a new deployment for a project\")\n .description(\n \"Create a new deployment for a project.\\n\\n\" +\n \" Create a dev deployment and select it: `npx convex deployment create dev/my-new-feature --type dev --select`\\n\" +\n \" Create a prod deployment named \u201Cstaging\u201D: `npx convex deployment create staging --type prod`\\n\" +\n \" Create a local deployment: `npx convex deployment create local`\\n\",\n )\n .argument(\"[ref]\")\n .allowExcessArguments(false)\n .addOption(\n new Option(\"--type <type>\", \"Deployment type\").choices(SUPPORTED_TYPES),\n )\n .option(\"--region <region>\", \"Deployment region\")\n .option(\n \"--select\",\n \"Select the new deployment. This will update the Convex environment variables in .env.local. Subsequent `npx convex` commands will run against this deployment.\",\n )\n .option(\n \"--default\",\n \"Make the new deployment your default production deployment (used by `npx convex deploy`) or your personal dev deployment.\",\n )\n .option(\n \"--expiration <value>\",\n 'When the deployment expires (e.g. \"none\", \"in 7 days\", \"2026-04-01T00:00:00Z\", or a UNIX timestamp in seconds or milliseconds)',\n )\n .action(async (refParam, options) => {\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n const currentDeployment = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n // Handle `deployment create local`\n if (refParam !== undefined) {\n if (refParam === \"local\") {\n const cloudOnlyFlags = [\n \"type\",\n \"region\",\n \"default\",\n \"expiration\",\n ] as const;\n for (const flag of cloudOnlyFlags) {\n if (options[flag]) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `--${flag} cannot be used when creating a local deployment`,\n });\n }\n }\n await createLocalDeployment(\n ctx,\n currentDeployment,\n options.select ?? false,\n );\n return;\n }\n }\n\n const expiresAt = await resolveExpiresAtOrCrash(ctx, options.expiration);\n\n const {\n ref,\n regionDetails,\n projectId,\n type,\n isDefault,\n teamSlug,\n projectSlug,\n } = process.stdin.isTTY\n ? await resolveOptionsInteractively(\n ctx,\n currentDeployment,\n refParam,\n options,\n )\n : await resolveOptionsNoninteractively(\n ctx,\n currentDeployment,\n refParam,\n options,\n );\n\n showSpinner(\n `Creating ${type} deployment` +\n (regionDetails ? ` in region ${regionDetails.displayName}` : \"\") +\n \"...\",\n );\n\n const created = (\n await typedPlatformClient(ctx).POST(\n \"/projects/{project_id}/create_deployment\",\n {\n params: {\n path: { project_id: projectId },\n },\n body: {\n type,\n region: regionDetails?.name ?? null,\n reference: ref ?? null,\n isDefault,\n ...(expiresAt !== undefined ? { expiresAt } : {}),\n },\n },\n )\n ).data!;\n\n if (created.kind !== \"cloud\") {\n // This should be impossible\n const err = `Expected cloud deployment to be created but got ${created.kind}`;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: err,\n errForSentry: err,\n });\n }\n\n if (!options.select) {\n logFinishedStep(\n `Provisioned a ${created.isDefault ? \"default \" : \"\"}${created.deploymentType} deployment.`,\n );\n if (type !== \"prod\") {\n const selectRef = `${teamSlug}:${projectSlug}:${created.reference}`;\n logMessage(\n `\\nTo make \\`npx convex\\` use this deployment, run ${chalkStderr.bold(`npx convex deployment select ${selectRef}`)}`,\n );\n logMessage(\n chalkStderr.gray(\n \"Hint: use `--select` to immediately select the newly created deployment.\",\n ),\n );\n }\n }\n\n if (options.select) {\n const selection: DeploymentSelection = {\n kind: \"deploymentWithinProject\",\n targetProject: {\n kind: \"teamAndProjectSlugs\",\n teamSlug,\n projectSlug,\n },\n selectionWithinProject: {\n kind: \"deploymentSelector\",\n selector: created.reference,\n },\n };\n await saveSelectedDeployment(\n ctx,\n created.reference,\n selection,\n deploymentNameFromSelection(currentDeployment),\n );\n }\n });\n\nasync function createLocalDeployment(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n select: boolean,\n): Promise<void> {\n const existing = loadProjectLocalConfig(ctx);\n if (existing) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"A local deployment already exists.\",\n });\n }\n\n const { teamSlug, slug: projectSlug } = await resolveProject(\n ctx,\n currentDeployment,\n );\n\n showSpinner(\"Downloading local backend...\");\n const { version } = await ensureBackendBinaryDownloaded(ctx, {\n kind: \"latest\",\n });\n\n const { cloudPort, sitePort } = await chooseLocalBackendPorts(ctx);\n\n showSpinner(\"Registering local deployment...\");\n const { deploymentName, adminKey } = await bigBrainStart(ctx, {\n port: cloudPort,\n projectSlug,\n teamSlug,\n instanceName: null,\n });\n\n saveDeploymentConfig(ctx, \"local\", deploymentName, {\n backendVersion: version,\n ports: { cloud: cloudPort, site: sitePort },\n adminKey,\n instanceSecret: LOCAL_BACKEND_INSTANCE_SECRET,\n });\n\n logFinishedStep(\"Created local deployment.\");\n\n if (select) {\n const selection: DeploymentSelection = {\n kind: \"deploymentWithinProject\",\n targetProject: {\n kind: \"deploymentName\",\n deploymentName,\n deploymentType: \"local\",\n },\n selectionWithinProject: {\n kind: \"deploymentSelector\",\n selector: \"local\",\n },\n };\n await saveSelectedDeployment(\n ctx,\n \"local\",\n selection,\n deploymentNameFromSelection(currentDeployment),\n );\n }\n\n const devCommand = select\n ? \"npx convex dev\"\n : \"npx convex dev --deployment local\";\n logMessage(`\\nRun ${chalkStderr.bold(devCommand)} to start it.`);\n}\n\ntype RefParam = Parameters<Parameters<typeof deploymentCreate.action>[0]>[0];\ntype OptionsParam = Parameters<\n Parameters<typeof deploymentCreate.action>[0]\n>[1];\n\nasync function resolveOptionsNoninteractively(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n refParam: RefParam,\n options: OptionsParam,\n) {\n let ref: string | undefined;\n let teamAndProject: { teamSlug: string; projectSlug: string } | undefined;\n if (refParam) {\n const result = parseSelectorForNewDeployment(refParam);\n if (result.kind === \"invalid\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: result.message,\n });\n }\n ref = result.ref;\n teamAndProject = result.teamAndProject;\n }\n\n if (!ref && !options.default) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Specify a deployment ref or use --default:\\n\" +\n \" `npx convex deployment create my-deployment-ref --type dev`\\n\" +\n \" `npx convex deployment create --type prod --default`\",\n });\n }\n\n if (!options.type) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `--type is required (supported values: ${SUPPORTED_TYPES.join(\", \")})`,\n });\n }\n\n const project = teamAndProject\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProject.teamSlug,\n projectSlug: teamAndProject.projectSlug,\n })\n : await resolveProject(ctx, currentDeployment);\n const projectId = project.id;\n\n // If no region is passed in, the team's default region will be used\n let regionDetails: AvailableRegion | null = null;\n if (options.region) {\n const availableRegions = await fetchAvailableRegions(ctx, project.teamId);\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n options.region,\n );\n }\n\n return {\n ref,\n isDefault: options.default ?? null,\n projectId,\n regionDetails,\n type: options.type,\n teamSlug: project.teamSlug,\n projectSlug: project.slug,\n };\n}\n\nasync function resolveOptionsInteractively(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n refParam: RefParam,\n options: OptionsParam,\n) {\n let deploymentType: \"dev\" | \"prod\" | \"preview\";\n if (options.type) {\n deploymentType = logAndUse(\"type\", options.type);\n } else {\n const dtypeChoices = [\n {\n name: \"dev\",\n value: \"dev\" as const,\n },\n {\n name: \"preview\",\n value: \"preview\" as const,\n },\n {\n name: \"prod\",\n value: \"prod\" as const,\n },\n ];\n deploymentType = await promptOptions(ctx, {\n message: \"Deployment type?\",\n choices: dtypeChoices,\n });\n }\n\n let ref: string | undefined;\n let teamAndProject: { teamSlug: string; projectSlug: string } | undefined;\n if (refParam) {\n const result = parseSelectorForNewDeployment(refParam);\n if (result.kind === \"invalid\") {\n logFailure(result.message);\n } else {\n ref = logAndUse(\"ref\", result.ref);\n teamAndProject = result.teamAndProject;\n }\n }\n while (ref === undefined) {\n const input = await promptString(ctx, {\n message:\n \"How to name this deployment?\\n\" +\n chalkStderr.reset.dim(\n \"The deployment reference will be used to identify your deployment on the dashboard and in CLI commands.\\nExamples: staging, dev/james/feature-payment-integration\",\n ) +\n \"\\n>\",\n validate: validateTentativeReference,\n });\n const result = parseSelectorForNewDeployment(input);\n if (result.kind === \"invalid\") {\n logFailure(result.message);\n continue;\n }\n ref = result.ref;\n teamAndProject = result.teamAndProject;\n }\n\n const project = teamAndProject\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProject.teamSlug,\n projectSlug: teamAndProject.projectSlug,\n })\n : await resolveProject(ctx, currentDeployment);\n\n const availableRegions = await fetchAvailableRegions(ctx, project.teamId);\n let regionDetails: AvailableRegion;\n if (options.region) {\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n options.region,\n );\n logAndUse(\"region\", regionDetails.displayName);\n } else {\n // Use the team's default region if set, or prompt the user to pick\n // TODO: this duplicates some of the logic in selectRegionOrUseDefault (npm-packages/convex/src/cli/lib/utils/utils.ts)\n const teams = (await typedBigBrainClient(ctx).GET(\"/teams\")).data!;\n const team = teams.find((team) => team.slug === project.teamSlug);\n if (!team) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Error: Team ${project.teamSlug} not found.`,\n });\n }\n const regionName =\n team.defaultRegion ?? (await selectRegion(ctx, team.id, deploymentType));\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n regionName,\n );\n if (team.defaultRegion) {\n logFinishedStep(\n `Using team default region of ${regionDetails.displayName}`,\n );\n } else {\n logNoDefaultRegionMessage(team.slug);\n }\n }\n\n return {\n ref,\n isDefault: options.default ?? null,\n projectId: project.id,\n regionDetails,\n type: deploymentType,\n teamSlug: project.teamSlug,\n projectSlug: project.slug,\n };\n}\n\ntype NewDeploymentSelectorResult =\n | {\n kind: \"valid\";\n ref: string;\n teamAndProject?: { teamSlug: string; projectSlug: string };\n }\n | { kind: \"invalid\"; message: string };\n\nfunction parseSelectorForNewDeployment(\n selectorString: string,\n): NewDeploymentSelectorResult {\n const selector = parseDeploymentSelector(selectorString);\n switch (selector.kind) {\n case \"local\":\n return {\n kind: \"invalid\",\n message: `\"local\" is not a valid deployment reference. To create a local deployment, run ${chalkStderr.bold(\"npx convex deployment create local\")}`,\n };\n case \"deploymentName\":\n return {\n kind: \"invalid\",\n message: `\"${selector.deploymentName}\" is not a valid deployment reference. References cannot be in the format abc-xyz-123, as it is reserved for deployment names.`,\n };\n case \"inCurrentProject\": {\n const inner = selector.selector;\n if (inner.kind === \"dev\") {\n return {\n kind: \"invalid\",\n message: `\"dev\" is not a valid deployment reference.`,\n };\n }\n if (inner.kind === \"prod\") {\n return {\n kind: \"invalid\",\n message: `\"prod\" is not a valid deployment reference.`,\n };\n }\n return { kind: \"valid\", ref: inner.reference };\n }\n case \"inProject\": {\n return {\n kind: \"invalid\",\n message: `Please use \"team:project:ref\" to specify the team when creating a new deployment in a different project.`,\n };\n }\n case \"inTeamProject\": {\n const inner = selector.selector;\n if (inner.kind === \"dev\") {\n return {\n kind: \"invalid\",\n message: `\"dev\" is not a valid deployment reference.`,\n };\n }\n if (inner.kind === \"prod\") {\n return {\n kind: \"invalid\",\n message: `\"prod\" is not a valid deployment reference.`,\n };\n }\n return {\n kind: \"valid\",\n ref: inner.reference,\n teamAndProject: {\n teamSlug: selector.teamSlug,\n projectSlug: selector.projectSlug,\n },\n };\n }\n default:\n selector satisfies never;\n return {\n kind: \"invalid\",\n message: \"Unknown state. This is a bug in Convex.\",\n };\n }\n}\n\nasync function resolveProject(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n): Promise<PlatformProjectDetails> {\n switch (deploymentSelection.kind) {\n case \"existingDeployment\": {\n const { deploymentFields } = deploymentSelection.deploymentToActOn;\n if (deploymentFields) {\n return await getProjectDetails(ctx, {\n kind: \"deploymentName\",\n deploymentName: deploymentFields.deploymentName,\n deploymentType: null,\n });\n }\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Cannot infer project from the current deployment configuration. Use `team:project:ref` to specify team and project slugs.\",\n });\n }\n case \"deploymentWithinProject\": {\n return await getProjectDetails(ctx, deploymentSelection.targetProject);\n }\n case \"preview\": {\n const slugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n return await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: slugs.teamSlug,\n projectSlug: slugs.projectSlug,\n });\n }\n case \"chooseProject\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"No project configured yet. Use `team:project:ref` to specify team and project slugs.\",\n });\n case \"anonymous\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Cannot create a deployment in anonymous mode. \" +\n \"Run `npx convex login` and configure a project first.\",\n });\n default: {\n deploymentSelection satisfies never;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Unexpected deployment selection kind.`,\n });\n }\n }\n}\n\nconst REGION_NAME_TO_ALIAS: Record<string, string> = {\n \"aws-us-east-1\": \"us\",\n \"aws-eu-west-1\": \"eu\",\n};\n\nconst REGION_ALIAS_TO_NAME = Object.fromEntries(\n Object.entries(REGION_NAME_TO_ALIAS).map(([name, alias]) => [alias, name]),\n);\n\nexport async function fetchAvailableRegions(ctx: Context, teamId: number) {\n const regionsResponse = (\n await typedPlatformClient(ctx).GET(\n \"/teams/{team_id}/list_deployment_regions\",\n {\n params: {\n path: { team_id: `${teamId}` },\n },\n },\n )\n ).data!;\n return regionsResponse.items.filter((item) => item.available);\n}\n\ntype AvailableRegion = Awaited<\n ReturnType<typeof fetchAvailableRegions>\n>[number];\n\nexport function resolveRegionDetails(\n availableRegions: AvailableRegion[],\n region: string,\n) {\n const resolvedRegion = REGION_ALIAS_TO_NAME[region] ?? region;\n return availableRegions.find((item) => item.name === resolvedRegion) ?? null;\n}\n\nasync function resolveRegionDetailsOrCrash(\n ctx: Context,\n availableRegions: AvailableRegion[],\n region: string,\n) {\n const regionDetails = resolveRegionDetails(availableRegions, region);\n if (!regionDetails) {\n return await crashInvalidRegion(ctx, availableRegions, region);\n }\n return regionDetails;\n}\n\nfunction invalidRegionMessage(\n availableRegions: AvailableRegion[],\n region: string,\n): string {\n const formatted = availableRegions\n .map(\n (item) =>\n ` Use \\`--region ${REGION_NAME_TO_ALIAS[item.name] ?? item.name}\\` for ${item.displayName}`,\n )\n .join(\"\\n\");\n return `Invalid region \"${region}\".\\n\\n` + formatted;\n}\n\nasync function crashInvalidRegion(\n ctx: Context,\n availableRegions: AvailableRegion[],\n region: string,\n): Promise<never> {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: invalidRegionMessage(availableRegions, region),\n });\n}\n\nasync function resolveExpiresAtOrCrash(\n ctx: Context,\n expiration: string | undefined,\n): Promise<number | null | undefined> {\n if (!expiration) {\n return undefined;\n }\n const parsed = parseExpiration(expiration);\n if (parsed.kind === \"error\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: parsed.message,\n });\n }\n const now = Date.now();\n const resolved = resolveExpiration(parsed, now);\n if (resolved !== null) {\n const validation = validateExpiration(resolved, now);\n if (validation.kind === \"error\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: validation.message,\n });\n }\n }\n return resolved;\n}\n\n/**\n * Helper to log a value passed in as a CLI argument in the interactive flow.\n */\nfunction logAndUse<T extends string | boolean>(label: string, value: T): T {\n logFinishedStep(`Using ${label}: ${chalkStderr.bold(value)}`);\n return value;\n}\n\n// This is an oversimplification, it\u2019s fine if it fails later\nfunction validateTentativeReference(tentativeReference: string): true | string {\n if (tentativeReference.length < 3) {\n return \"References must be at least 3 characters\";\n }\n if (tentativeReference.length > 100) {\n return \"References must be at most 100 characters\";\n }\n if (!/^[a-z0-9/-]+$/.test(tentativeReference)) {\n return \"References can only contain lowercase letters, numbers, hyphens, and slashes\";\n }\n if (tentativeReference === \"dev\") {\n return '\"dev\" is not a valid deployment reference.';\n }\n if (tentativeReference === \"prod\") {\n return '\"prod\" is not a valid deployment reference.';\n }\n if (tentativeReference === \"local\") {\n return `\"local\" is not a valid deployment reference. To create a local deployment, run ${chalkStderr.bold(\"npx convex deployment create local\")}`;\n }\n if (/^[a-z]+-[a-z]+-\\d+$/.test(tentativeReference)) {\n return \"References cannot be in the format abc-xyz-123, as it is reserved for deployment names\";\n }\n\n return true;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_utils", "team"]
7
7
  }