convex 1.31.6 → 1.31.8-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/bin/main-dev +1 -1
  3. package/dist/browser.bundle.js +1 -1
  4. package/dist/browser.bundle.js.map +1 -1
  5. package/dist/cjs/cli/configure.js +21 -15
  6. package/dist/cjs/cli/configure.js.map +2 -2
  7. package/dist/cjs/cli/convexImport.js +1 -1
  8. package/dist/cjs/cli/convexImport.js.map +2 -2
  9. package/dist/cjs/cli/dashboard.js +5 -4
  10. package/dist/cjs/cli/dashboard.js.map +2 -2
  11. package/dist/cjs/cli/deploy.js +4 -2
  12. package/dist/cjs/cli/deploy.js.map +2 -2
  13. package/dist/cjs/cli/dev.js +5 -0
  14. package/dist/cjs/cli/dev.js.map +2 -2
  15. package/dist/cjs/cli/integration.js +8 -1
  16. package/dist/cjs/cli/integration.js.map +2 -2
  17. package/dist/cjs/cli/lib/api.js +2 -4
  18. package/dist/cjs/cli/lib/api.js.map +2 -2
  19. package/dist/cjs/cli/lib/command.js +8 -2
  20. package/dist/cjs/cli/lib/command.js.map +2 -2
  21. package/dist/cjs/cli/lib/components.js +53 -1
  22. package/dist/cjs/cli/lib/components.js.map +2 -2
  23. package/dist/cjs/cli/lib/config.js.map +2 -2
  24. package/dist/cjs/cli/lib/dashboard.js +8 -2
  25. package/dist/cjs/cli/lib/dashboard.js.map +2 -2
  26. package/dist/cjs/cli/lib/deploy2.js +21 -6
  27. package/dist/cjs/cli/lib/deploy2.js.map +2 -2
  28. package/dist/cjs/cli/lib/deployApi/componentDefinition.js +3 -2
  29. package/dist/cjs/cli/lib/deployApi/componentDefinition.js.map +2 -2
  30. package/dist/cjs/cli/lib/deployApi/definitionConfig.js +2 -1
  31. package/dist/cjs/cli/lib/deployApi/definitionConfig.js.map +2 -2
  32. package/dist/cjs/cli/lib/deployApi/modules.js +6 -0
  33. package/dist/cjs/cli/lib/deployApi/modules.js.map +2 -2
  34. package/dist/cjs/cli/lib/deployment.js.map +2 -2
  35. package/dist/cjs/cli/lib/dev.js +3 -1
  36. package/dist/cjs/cli/lib/dev.js.map +2 -2
  37. package/dist/cjs/cli/lib/env.js +13 -1
  38. package/dist/cjs/cli/lib/env.js.map +2 -2
  39. package/dist/cjs/cli/lib/envvars.js +100 -39
  40. package/dist/cjs/cli/lib/envvars.js.map +2 -2
  41. package/dist/cjs/cli/lib/init.js +12 -6
  42. package/dist/cjs/cli/lib/init.js.map +2 -2
  43. package/dist/cjs/cli/lib/localDeployment/anonymous.js +1 -1
  44. package/dist/cjs/cli/lib/localDeployment/anonymous.js.map +2 -2
  45. package/dist/cjs/cli/lib/run.js +1 -0
  46. package/dist/cjs/cli/lib/run.js.map +2 -2
  47. package/dist/cjs/cli/lib/typecheck.js +30 -0
  48. package/dist/cjs/cli/lib/typecheck.js.map +2 -2
  49. package/dist/cjs/cli/lib/watch.js +3 -1
  50. package/dist/cjs/cli/lib/watch.js.map +2 -2
  51. package/dist/cjs/cli/lib/workos/workos.js +1 -1
  52. package/dist/cjs/cli/lib/workos/workos.js.map +2 -2
  53. package/dist/cjs/index.js +1 -1
  54. package/dist/cjs/index.js.map +1 -1
  55. package/dist/cjs/server/pagination.js.map +2 -2
  56. package/dist/cjs/values/index.js +3 -0
  57. package/dist/cjs/values/index.js.map +2 -2
  58. package/dist/cjs/values/size.js +108 -0
  59. package/dist/cjs/values/size.js.map +7 -0
  60. package/dist/cjs-types/cli/configure.d.ts +2 -7
  61. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  62. package/dist/cjs-types/cli/dashboard.d.ts +0 -1
  63. package/dist/cjs-types/cli/dashboard.d.ts.map +1 -1
  64. package/dist/cjs-types/cli/deploy.d.ts.map +1 -1
  65. package/dist/cjs-types/cli/dev.d.ts +1 -0
  66. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  67. package/dist/cjs-types/cli/integration.d.ts.map +1 -1
  68. package/dist/cjs-types/cli/lib/api.d.ts +2 -2
  69. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  70. package/dist/cjs-types/cli/lib/command.d.ts +2 -0
  71. package/dist/cjs-types/cli/lib/command.d.ts.map +1 -1
  72. package/dist/cjs-types/cli/lib/components.d.ts +8 -0
  73. package/dist/cjs-types/cli/lib/components.d.ts.map +1 -1
  74. package/dist/cjs-types/cli/lib/components.test.d.ts +2 -0
  75. package/dist/cjs-types/cli/lib/components.test.d.ts.map +1 -0
  76. package/dist/cjs-types/cli/lib/config.d.ts +1 -1
  77. package/dist/cjs-types/cli/lib/config.d.ts.map +1 -1
  78. package/dist/cjs-types/cli/lib/dashboard.d.ts +1 -1
  79. package/dist/cjs-types/cli/lib/dashboard.d.ts.map +1 -1
  80. package/dist/cjs-types/cli/lib/deploy2.d.ts +1 -0
  81. package/dist/cjs-types/cli/lib/deploy2.d.ts.map +1 -1
  82. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts +16 -15
  83. package/dist/cjs-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  84. package/dist/cjs-types/cli/lib/deployApi/definitionConfig.d.ts +26 -3
  85. package/dist/cjs-types/cli/lib/deployApi/definitionConfig.d.ts.map +1 -1
  86. package/dist/cjs-types/cli/lib/deployApi/modules.d.ts +14 -0
  87. package/dist/cjs-types/cli/lib/deployApi/modules.d.ts.map +1 -1
  88. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts +38 -5
  89. package/dist/cjs-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  90. package/dist/cjs-types/cli/lib/deployment.d.ts.map +1 -1
  91. package/dist/cjs-types/cli/lib/dev.d.ts +1 -0
  92. package/dist/cjs-types/cli/lib/dev.d.ts.map +1 -1
  93. package/dist/cjs-types/cli/lib/env.d.ts +4 -0
  94. package/dist/cjs-types/cli/lib/env.d.ts.map +1 -1
  95. package/dist/cjs-types/cli/lib/envvars.d.ts +32 -5
  96. package/dist/cjs-types/cli/lib/envvars.d.ts.map +1 -1
  97. package/dist/cjs-types/cli/lib/init.d.ts +1 -0
  98. package/dist/cjs-types/cli/lib/init.d.ts.map +1 -1
  99. package/dist/cjs-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  100. package/dist/cjs-types/cli/lib/run.d.ts.map +1 -1
  101. package/dist/cjs-types/cli/lib/typecheck.d.ts.map +1 -1
  102. package/dist/cjs-types/cli/lib/watch.d.ts +2 -1
  103. package/dist/cjs-types/cli/lib/watch.d.ts.map +1 -1
  104. package/dist/cjs-types/index.d.ts +1 -1
  105. package/dist/cjs-types/index.d.ts.map +1 -1
  106. package/dist/cjs-types/server/pagination.d.ts +34 -0
  107. package/dist/cjs-types/server/pagination.d.ts.map +1 -1
  108. package/dist/cjs-types/values/index.d.ts +1 -0
  109. package/dist/cjs-types/values/index.d.ts.map +1 -1
  110. package/dist/cjs-types/values/size.d.ts +53 -0
  111. package/dist/cjs-types/values/size.d.ts.map +1 -0
  112. package/dist/cjs-types/values/size.test.d.ts +2 -0
  113. package/dist/cjs-types/values/size.test.d.ts.map +1 -0
  114. package/dist/cli.bundle.cjs +655 -4297
  115. package/dist/cli.bundle.cjs.map +4 -4
  116. package/dist/esm/cli/configure.js +24 -17
  117. package/dist/esm/cli/configure.js.map +2 -2
  118. package/dist/esm/cli/convexImport.js +2 -2
  119. package/dist/esm/cli/convexImport.js.map +2 -2
  120. package/dist/esm/cli/dashboard.js +5 -3
  121. package/dist/esm/cli/dashboard.js.map +2 -2
  122. package/dist/esm/cli/deploy.js +5 -3
  123. package/dist/esm/cli/deploy.js.map +2 -2
  124. package/dist/esm/cli/dev.js +5 -0
  125. package/dist/esm/cli/dev.js.map +2 -2
  126. package/dist/esm/cli/integration.js +8 -1
  127. package/dist/esm/cli/integration.js.map +2 -2
  128. package/dist/esm/cli/lib/api.js +1 -3
  129. package/dist/esm/cli/lib/api.js.map +2 -2
  130. package/dist/esm/cli/lib/command.js +8 -2
  131. package/dist/esm/cli/lib/command.js.map +2 -2
  132. package/dist/esm/cli/lib/components.js +51 -1
  133. package/dist/esm/cli/lib/components.js.map +2 -2
  134. package/dist/esm/cli/lib/config.js.map +2 -2
  135. package/dist/esm/cli/lib/dashboard.js +8 -2
  136. package/dist/esm/cli/lib/dashboard.js.map +2 -2
  137. package/dist/esm/cli/lib/deploy2.js +22 -7
  138. package/dist/esm/cli/lib/deploy2.js.map +2 -2
  139. package/dist/esm/cli/lib/deployApi/componentDefinition.js +3 -2
  140. package/dist/esm/cli/lib/deployApi/componentDefinition.js.map +2 -2
  141. package/dist/esm/cli/lib/deployApi/definitionConfig.js +3 -2
  142. package/dist/esm/cli/lib/deployApi/definitionConfig.js.map +2 -2
  143. package/dist/esm/cli/lib/deployApi/modules.js +5 -0
  144. package/dist/esm/cli/lib/deployApi/modules.js.map +2 -2
  145. package/dist/esm/cli/lib/deployment.js.map +2 -2
  146. package/dist/esm/cli/lib/dev.js +3 -1
  147. package/dist/esm/cli/lib/dev.js.map +2 -2
  148. package/dist/esm/cli/lib/env.js +11 -0
  149. package/dist/esm/cli/lib/env.js.map +2 -2
  150. package/dist/esm/cli/lib/envvars.js +98 -37
  151. package/dist/esm/cli/lib/envvars.js.map +2 -2
  152. package/dist/esm/cli/lib/init.js +13 -7
  153. package/dist/esm/cli/lib/init.js.map +2 -2
  154. package/dist/esm/cli/lib/localDeployment/anonymous.js +2 -2
  155. package/dist/esm/cli/lib/localDeployment/anonymous.js.map +2 -2
  156. package/dist/esm/cli/lib/run.js +1 -0
  157. package/dist/esm/cli/lib/run.js.map +2 -2
  158. package/dist/esm/cli/lib/typecheck.js +37 -2
  159. package/dist/esm/cli/lib/typecheck.js.map +2 -2
  160. package/dist/esm/cli/lib/watch.js +3 -1
  161. package/dist/esm/cli/lib/watch.js.map +2 -2
  162. package/dist/esm/cli/lib/workos/workos.js +2 -2
  163. package/dist/esm/cli/lib/workos/workos.js.map +2 -2
  164. package/dist/esm/index.js +1 -1
  165. package/dist/esm/index.js.map +1 -1
  166. package/dist/esm/server/pagination.js.map +2 -2
  167. package/dist/esm/values/index.js +1 -0
  168. package/dist/esm/values/index.js.map +2 -2
  169. package/dist/esm/values/size.js +83 -0
  170. package/dist/esm/values/size.js.map +7 -0
  171. package/dist/esm-types/cli/configure.d.ts +2 -7
  172. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  173. package/dist/esm-types/cli/dashboard.d.ts +0 -1
  174. package/dist/esm-types/cli/dashboard.d.ts.map +1 -1
  175. package/dist/esm-types/cli/deploy.d.ts.map +1 -1
  176. package/dist/esm-types/cli/dev.d.ts +1 -0
  177. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  178. package/dist/esm-types/cli/integration.d.ts.map +1 -1
  179. package/dist/esm-types/cli/lib/api.d.ts +2 -2
  180. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  181. package/dist/esm-types/cli/lib/command.d.ts +2 -0
  182. package/dist/esm-types/cli/lib/command.d.ts.map +1 -1
  183. package/dist/esm-types/cli/lib/components.d.ts +8 -0
  184. package/dist/esm-types/cli/lib/components.d.ts.map +1 -1
  185. package/dist/esm-types/cli/lib/components.test.d.ts +2 -0
  186. package/dist/esm-types/cli/lib/components.test.d.ts.map +1 -0
  187. package/dist/esm-types/cli/lib/config.d.ts +1 -1
  188. package/dist/esm-types/cli/lib/config.d.ts.map +1 -1
  189. package/dist/esm-types/cli/lib/dashboard.d.ts +1 -1
  190. package/dist/esm-types/cli/lib/dashboard.d.ts.map +1 -1
  191. package/dist/esm-types/cli/lib/deploy2.d.ts +1 -0
  192. package/dist/esm-types/cli/lib/deploy2.d.ts.map +1 -1
  193. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts +16 -15
  194. package/dist/esm-types/cli/lib/deployApi/componentDefinition.d.ts.map +1 -1
  195. package/dist/esm-types/cli/lib/deployApi/definitionConfig.d.ts +26 -3
  196. package/dist/esm-types/cli/lib/deployApi/definitionConfig.d.ts.map +1 -1
  197. package/dist/esm-types/cli/lib/deployApi/modules.d.ts +14 -0
  198. package/dist/esm-types/cli/lib/deployApi/modules.d.ts.map +1 -1
  199. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts +38 -5
  200. package/dist/esm-types/cli/lib/deployApi/startPush.d.ts.map +1 -1
  201. package/dist/esm-types/cli/lib/deployment.d.ts.map +1 -1
  202. package/dist/esm-types/cli/lib/dev.d.ts +1 -0
  203. package/dist/esm-types/cli/lib/dev.d.ts.map +1 -1
  204. package/dist/esm-types/cli/lib/env.d.ts +4 -0
  205. package/dist/esm-types/cli/lib/env.d.ts.map +1 -1
  206. package/dist/esm-types/cli/lib/envvars.d.ts +32 -5
  207. package/dist/esm-types/cli/lib/envvars.d.ts.map +1 -1
  208. package/dist/esm-types/cli/lib/init.d.ts +1 -0
  209. package/dist/esm-types/cli/lib/init.d.ts.map +1 -1
  210. package/dist/esm-types/cli/lib/localDeployment/anonymous.d.ts.map +1 -1
  211. package/dist/esm-types/cli/lib/run.d.ts.map +1 -1
  212. package/dist/esm-types/cli/lib/typecheck.d.ts.map +1 -1
  213. package/dist/esm-types/cli/lib/watch.d.ts +2 -1
  214. package/dist/esm-types/cli/lib/watch.d.ts.map +1 -1
  215. package/dist/esm-types/index.d.ts +1 -1
  216. package/dist/esm-types/index.d.ts.map +1 -1
  217. package/dist/esm-types/server/pagination.d.ts +34 -0
  218. package/dist/esm-types/server/pagination.d.ts.map +1 -1
  219. package/dist/esm-types/values/index.d.ts +1 -0
  220. package/dist/esm-types/values/index.d.ts.map +1 -1
  221. package/dist/esm-types/values/size.d.ts +53 -0
  222. package/dist/esm-types/values/size.d.ts.map +1 -0
  223. package/dist/esm-types/values/size.test.d.ts +2 -0
  224. package/dist/esm-types/values/size.test.d.ts.map +1 -0
  225. package/dist/react.bundle.js +1 -1
  226. package/dist/react.bundle.js.map +1 -1
  227. package/package.json +1 -1
  228. package/src/cli/configure.ts +44 -25
  229. package/src/cli/convexImport.ts +2 -2
  230. package/src/cli/dashboard.ts +5 -6
  231. package/src/cli/deploy.ts +8 -4
  232. package/src/cli/dev.ts +8 -0
  233. package/src/cli/integration.ts +11 -3
  234. package/src/cli/lib/api.ts +3 -14
  235. package/src/cli/lib/command.ts +12 -1
  236. package/src/cli/lib/components.test.ts +227 -0
  237. package/src/cli/lib/components.ts +83 -1
  238. package/src/cli/lib/config.ts +4 -1
  239. package/src/cli/lib/dashboard.ts +9 -3
  240. package/src/cli/lib/deploy2.ts +24 -8
  241. package/src/cli/lib/deployApi/componentDefinition.ts +4 -2
  242. package/src/cli/lib/deployApi/definitionConfig.ts +3 -2
  243. package/src/cli/lib/deployApi/modules.ts +7 -0
  244. package/src/cli/lib/deployment.ts +1 -0
  245. package/src/cli/lib/dev.ts +3 -0
  246. package/src/cli/lib/env.ts +15 -0
  247. package/src/cli/lib/envvars.ts +164 -51
  248. package/src/cli/lib/init.ts +16 -7
  249. package/src/cli/lib/localDeployment/anonymous.ts +7 -6
  250. package/src/cli/lib/run.ts +1 -0
  251. package/src/cli/lib/typecheck.ts +44 -2
  252. package/src/cli/lib/watch.ts +7 -1
  253. package/src/cli/lib/workos/workos.ts +2 -2
  254. package/src/index.ts +1 -1
  255. package/src/server/pagination.ts +16 -17
  256. package/src/values/index.ts +1 -0
  257. package/src/values/size.test.ts +86 -0
  258. package/src/values/size.ts +191 -0
@@ -30,7 +30,6 @@ var configure_exports = {};
30
30
  __export(configure_exports, {
31
31
  _deploymentCredentialsOrConfigure: () => _deploymentCredentialsOrConfigure,
32
32
  deploymentCredentialsOrConfigure: () => deploymentCredentialsOrConfigure,
33
- handleManuallySetUrlAndAdminKey: () => handleManuallySetUrlAndAdminKey,
34
33
  selectProject: () => selectProject,
35
34
  updateEnvAndConfigForDeploymentSelection: () => updateEnvAndConfigForDeploymentSelection
36
35
  });
@@ -52,6 +51,7 @@ var import_globalConfig = require("./lib/utils/globalConfig.js");
52
51
  var import_deploymentSelection = require("./lib/deploymentSelection.js");
53
52
  var import_login = require("./lib/login.js");
54
53
  var import_anonymous = require("./lib/localDeployment/anonymous.js");
54
+ var import_env = require("./lib/env.js");
55
55
  async function deploymentCredentialsOrConfigure(ctx, deploymentSelection, chosenConfiguration, cmdOptions) {
56
56
  const selectedDeployment = await _deploymentCredentialsOrConfigure(
57
57
  ctx,
@@ -59,11 +59,16 @@ async function deploymentCredentialsOrConfigure(ctx, deploymentSelection, chosen
59
59
  chosenConfiguration,
60
60
  cmdOptions
61
61
  );
62
+ const siteUrl = await (0, import_env.fetchDeploymentCanonicalSiteUrl)(ctx, {
63
+ adminKey: selectedDeployment.adminKey,
64
+ deploymentUrl: selectedDeployment.url
65
+ });
62
66
  if (selectedDeployment.deploymentFields !== null) {
63
67
  await updateEnvAndConfigForDeploymentSelection(
64
68
  ctx,
65
69
  {
66
70
  url: selectedDeployment.url,
71
+ siteUrl,
67
72
  deploymentName: selectedDeployment.deploymentFields.deploymentName,
68
73
  teamSlug: selectedDeployment.deploymentFields.teamSlug,
69
74
  projectSlug: selectedDeployment.deploymentFields.projectSlug,
@@ -74,13 +79,14 @@ async function deploymentCredentialsOrConfigure(ctx, deploymentSelection, chosen
74
79
  } else {
75
80
  await handleManuallySetUrlAndAdminKey(ctx, {
76
81
  url: selectedDeployment.url,
82
+ siteUrl,
77
83
  adminKey: selectedDeployment.adminKey
78
84
  });
79
85
  }
80
86
  return {
81
87
  url: selectedDeployment.url,
82
88
  adminKey: selectedDeployment.adminKey,
83
- deploymentFields: selectedDeployment.deploymentFields
89
+ deploymentFields: selectedDeployment.deploymentFields === null ? null : { ...selectedDeployment.deploymentFields, siteUrl }
84
90
  };
85
91
  }
86
92
  async function _deploymentCredentialsOrConfigure(ctx, deploymentSelection, chosenConfiguration, cmdOptions) {
@@ -100,12 +106,6 @@ async function _deploymentCredentialsOrConfigure(ctx, deploymentSelection, chose
100
106
  cmdOptions.selectionWithinProject,
101
107
  deploymentSelection.deploymentToActOn.source
102
108
  );
103
- if (deploymentSelection.deploymentToActOn.deploymentFields === null) {
104
- await handleManuallySetUrlAndAdminKey(ctx, {
105
- url: deploymentSelection.deploymentToActOn.url,
106
- adminKey: deploymentSelection.deploymentToActOn.adminKey
107
- });
108
- }
109
109
  return {
110
110
  url: deploymentSelection.deploymentToActOn.url,
111
111
  adminKey: deploymentSelection.deploymentToActOn.adminKey,
@@ -311,7 +311,7 @@ async function handleChooseProject(ctx, chosenConfiguration, args, cmdOptions) {
311
311
  };
312
312
  }
313
313
  async function handleManuallySetUrlAndAdminKey(ctx, cmdOptions) {
314
- const { url, adminKey } = cmdOptions;
314
+ const { url, siteUrl, adminKey } = cmdOptions;
315
315
  const didErase = await (0, import_deployment.eraseDeploymentEnvVar)(ctx);
316
316
  if (didErase) {
317
317
  (0, import_log.logMessage)(
@@ -320,12 +320,17 @@ async function handleManuallySetUrlAndAdminKey(ctx, cmdOptions) {
320
320
  )
321
321
  );
322
322
  }
323
- const envVarWrite = await (0, import_envvars.writeConvexUrlToEnvFile)(ctx, url);
324
- if (envVarWrite !== null) {
323
+ const envFileConfig = await (0, import_envvars.writeUrlsToEnvFile)(ctx, {
324
+ convexUrl: url,
325
+ siteUrl
326
+ });
327
+ if (envFileConfig !== null && (envFileConfig.convexUrlEnvVar || envFileConfig.siteUrlEnvVar)) {
328
+ const updatedVars = [
329
+ envFileConfig.convexUrlEnvVar,
330
+ envFileConfig.siteUrlEnvVar
331
+ ].filter(Boolean).join(" and ");
325
332
  (0, import_log.logMessage)(
326
- import_chalk.chalkStderr.green(
327
- `Saved the given --url as ${envVarWrite.envVar} to ${envVarWrite.envFile}`
328
- )
333
+ import_chalk.chalkStderr.green(`Saved ${updatedVars} to ${envFileConfig.envFile}`)
329
334
  );
330
335
  }
331
336
  return { url, adminKey };
@@ -369,7 +374,7 @@ async function selectNewProject(ctx, chosenConfiguration, config) {
369
374
  (0, import_log.showSpinner)("Creating new Convex project...");
370
375
  let projectSlug, teamSlug, projectsRemaining;
371
376
  try {
372
- ({ projectSlug, teamSlug, projectsRemaining } = await (0, import_api.createProject)(ctx, {
377
+ ({ projectSlug, teamSlug, projectsRemaining } = await (0, import_api.createProjectAndCreateDeployment)(ctx, {
373
378
  teamSlug: selectedTeam,
374
379
  projectName,
375
380
  // We have to create some deployment initially for a project.
@@ -494,6 +499,7 @@ async function updateEnvAndConfigForDeploymentSelection(ctx, options, existingVa
494
499
  deploymentType: options.deploymentType,
495
500
  deploymentName: options.deploymentName,
496
501
  url: options.url,
502
+ siteUrl: options.siteUrl,
497
503
  wroteToGitIgnore,
498
504
  changedDeploymentEnvVar,
499
505
  functionsPath: (0, import_utils.functionsDir)(configPath, projectConfig)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/configure.ts"],
4
- "sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { Context } from \"../bundler/context.js\";\nimport {\n logFailure,\n logFinishedStep,\n logMessage,\n logWarning,\n showSpinner,\n} from \"../bundler/log.js\";\nimport {\n DeploymentType,\n DeploymentName,\n fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows,\n createProject,\n DeploymentSelectionWithinProject,\n loadSelectedDeploymentCredentials,\n checkAccessToSelectedProject,\n validateDeploymentSelectionForExistingDeployment,\n} from \"./lib/api.js\";\nimport { readProjectConfig, writeProjectConfig } from \"./lib/config.js\";\nimport {\n DeploymentDetails,\n eraseDeploymentEnvVar,\n writeDeploymentEnvVar,\n} from \"./lib/deployment.js\";\nimport { finalizeConfiguration } from \"./lib/init.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n functionsDir,\n hasProjects,\n logAndHandleFetchError,\n selectDevDeploymentType,\n validateOrSelectProject,\n validateOrSelectTeam,\n} from \"./lib/utils/utils.js\";\nimport { writeConvexUrlToEnvFile } from \"./lib/envvars.js\";\nimport path from \"path\";\nimport { projectDashboardUrl } from \"./lib/dashboard.js\";\nimport { doInitConvexFolder } from \"./lib/codegen.js\";\nimport { handleLocalDeployment } from \"./lib/localDeployment/localDeployment.js\";\nimport {\n promptOptions,\n promptString,\n promptYesNo,\n} from \"./lib/utils/prompts.js\";\nimport { readGlobalConfig } from \"./lib/utils/globalConfig.js\";\nimport {\n DeploymentSelection,\n ProjectSelection,\n deploymentNameFromSelection,\n shouldAllowAnonymousDevelopment,\n} from \"./lib/deploymentSelection.js\";\nimport { ensureLoggedIn } from \"./lib/login.js\";\nimport { handleAnonymousDeployment } from \"./lib/localDeployment/anonymous.js\";\ntype DeploymentCredentials = {\n url: string;\n adminKey: string;\n};\n\ntype ChosenConfiguration =\n // `--configure new`\n | \"new\"\n // `--configure existing`\n | \"existing\"\n // `--configure`\n | \"ask\"\n // `--configure` was not specified\n | null;\n\ntype ConfigureCmdOptions = {\n selectionWithinProject: DeploymentSelectionWithinProject;\n prod: boolean;\n localOptions: {\n ports?: {\n cloud: number;\n site: number;\n };\n backendVersion?: string | undefined;\n dashboardVersion?: string | undefined;\n forceUpgrade: boolean;\n };\n team?: string | undefined;\n project?: string | undefined;\n devDeployment?: \"cloud\" | \"local\" | undefined;\n local?: boolean | undefined;\n cloud?: boolean | undefined;\n url?: string | undefined;\n adminKey?: string | undefined;\n envFile?: string | undefined;\n overrideAuthUrl?: string | undefined;\n overrideAuthClient?: string | undefined;\n overrideAuthUsername?: string | undefined;\n overrideAuthPassword?: string | undefined;\n};\n\n/**\n * As of writing, this is used by:\n * - `npx convex dev`\n * - `npx convex codegen`\n *\n * But is not used by `npx convex deploy` or other commands.\n */\nexport async function deploymentCredentialsOrConfigure(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n chosenConfiguration: ChosenConfiguration,\n cmdOptions: ConfigureCmdOptions,\n): Promise<\n DeploymentCredentials & {\n deploymentFields: {\n deploymentName: DeploymentName;\n deploymentType: DeploymentType;\n projectSlug: string | null;\n teamSlug: string | null;\n } | null;\n }\n> {\n const selectedDeployment = await _deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n chosenConfiguration,\n cmdOptions,\n );\n\n if (selectedDeployment.deploymentFields !== null) {\n // Set the `CONVEX_DEPLOYMENT` env var + the `CONVEX_URL` env var\n await updateEnvAndConfigForDeploymentSelection(\n ctx,\n {\n url: selectedDeployment.url,\n deploymentName: selectedDeployment.deploymentFields.deploymentName,\n teamSlug: selectedDeployment.deploymentFields.teamSlug,\n projectSlug: selectedDeployment.deploymentFields.projectSlug,\n deploymentType: selectedDeployment.deploymentFields.deploymentType,\n },\n deploymentNameFromSelection(deploymentSelection),\n );\n } else {\n // Clear the `CONVEX_DEPLOYMENT` env var + set the `CONVEX_URL` env var\n await handleManuallySetUrlAndAdminKey(ctx, {\n url: selectedDeployment.url,\n adminKey: selectedDeployment.adminKey,\n });\n }\n return {\n url: selectedDeployment.url,\n adminKey: selectedDeployment.adminKey,\n deploymentFields: selectedDeployment.deploymentFields,\n };\n}\n\nexport async function _deploymentCredentialsOrConfigure(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n chosenConfiguration: ChosenConfiguration,\n cmdOptions: ConfigureCmdOptions,\n): Promise<\n DeploymentCredentials & {\n deploymentFields: {\n deploymentName: DeploymentName;\n deploymentType: DeploymentType;\n projectSlug: string | null;\n teamSlug: string | null;\n } | null;\n }\n> {\n const config = readGlobalConfig(ctx);\n const globallyForceCloud = !!config?.optOutOfLocalDevDeploymentsUntilBetaOver;\n if (globallyForceCloud && cmdOptions.local) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Can't specify --local when local deployments are disabled on this machine. Run `npx convex disable-local-deployments --undo-global` to allow use of --local.\",\n });\n }\n\n switch (deploymentSelection.kind) {\n case \"existingDeployment\":\n await validateDeploymentSelectionForExistingDeployment(\n ctx,\n cmdOptions.selectionWithinProject,\n deploymentSelection.deploymentToActOn.source,\n );\n if (deploymentSelection.deploymentToActOn.deploymentFields === null) {\n // erase `CONVEX_DEPLOYMENT` from .env.local + set the url env var\n await handleManuallySetUrlAndAdminKey(ctx, {\n url: deploymentSelection.deploymentToActOn.url,\n adminKey: deploymentSelection.deploymentToActOn.adminKey,\n });\n }\n return {\n url: deploymentSelection.deploymentToActOn.url,\n adminKey: deploymentSelection.deploymentToActOn.adminKey,\n deploymentFields:\n deploymentSelection.deploymentToActOn.deploymentFields,\n };\n case \"chooseProject\": {\n await ensureLoggedIn(ctx, {\n overrideAuthUrl: cmdOptions.overrideAuthUrl,\n overrideAuthClient: cmdOptions.overrideAuthClient,\n overrideAuthUsername: cmdOptions.overrideAuthUsername,\n overrideAuthPassword: cmdOptions.overrideAuthPassword,\n });\n return await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n }\n case \"preview\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Use `npx convex deploy` to use preview deployments.\",\n });\n case \"deploymentWithinProject\": {\n return await handleDeploymentWithinProject(ctx, {\n chosenConfiguration,\n targetProject: deploymentSelection.targetProject,\n cmdOptions,\n globallyForceCloud,\n });\n }\n case \"anonymous\": {\n const hasAuth = ctx.bigBrainAuth() !== null;\n const isAgentMode = process.env.CONVEX_AGENT_MODE === \"anonymous\";\n if (\n !isAgentMode &&\n hasAuth &&\n deploymentSelection.deploymentName !== null\n ) {\n const shouldConfigure =\n chosenConfiguration !== null ||\n (await promptYesNo(ctx, {\n message: `${CONVEX_DEPLOYMENT_ENV_VAR_NAME} is configured with deployment ${deploymentSelection.deploymentName}, which is not linked with your account. Would you like to choose a different project instead?`,\n }));\n if (!shouldConfigure) {\n return await ctx.crash({\n exitCode: 0,\n errorType: \"fatal\",\n printedMessage: `Run \\`npx convex login --link-deployments\\` first to link this deployment to your account, and then run \\`npx convex dev\\` again.`,\n });\n }\n return await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n }\n const alreadyHasConfiguredAnonymousDeployment =\n deploymentSelection.deploymentName !== null &&\n chosenConfiguration === null;\n if (isAgentMode) {\n logWarning(\n chalkStderr.yellow.bold(\n \"CONVEX_AGENT_MODE=anonymous mode is in beta, functionality may change in the future.\",\n ),\n );\n }\n\n const shouldPromptForLogin = isAgentMode\n ? \"no\"\n : alreadyHasConfiguredAnonymousDeployment\n ? \"no\"\n : await promptOptions(ctx, {\n message:\n \"Welcome to Convex! Would you like to login to your account?\",\n choices: [\n {\n name: \"Start without an account (run Convex locally)\",\n value: \"no\",\n },\n { name: \"Login or create an account\", value: \"yes\" },\n ],\n default: \"no\",\n });\n if (shouldPromptForLogin === \"no\") {\n const result = await handleAnonymousDeployment(ctx, {\n chosenConfiguration,\n deploymentName: deploymentSelection.deploymentName,\n ...cmdOptions.localOptions,\n });\n return {\n adminKey: result.adminKey,\n url: result.deploymentUrl,\n deploymentFields: {\n deploymentName: result.deploymentName,\n deploymentType: \"anonymous\",\n projectSlug: null,\n teamSlug: null,\n },\n };\n }\n return await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n }\n }\n}\n\nasync function handleDeploymentWithinProject(\n ctx: Context,\n {\n chosenConfiguration,\n targetProject,\n cmdOptions,\n globallyForceCloud,\n }: {\n chosenConfiguration: ChosenConfiguration;\n targetProject: ProjectSelection;\n cmdOptions: ConfigureCmdOptions;\n globallyForceCloud: boolean;\n },\n) {\n const hasAuth = ctx.bigBrainAuth() !== null;\n const loginMessage =\n hasAuth && shouldAllowAnonymousDevelopment()\n ? undefined\n : `Tip: You can try out Convex without creating an account by clearing the ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} environment variable.`;\n await ensureLoggedIn(ctx, {\n message: loginMessage,\n overrideAuthUrl: cmdOptions.overrideAuthUrl,\n overrideAuthClient: cmdOptions.overrideAuthClient,\n overrideAuthUsername: cmdOptions.overrideAuthUsername,\n overrideAuthPassword: cmdOptions.overrideAuthPassword,\n });\n if (chosenConfiguration !== null) {\n const result = await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n return result;\n }\n\n const accessResult = await checkAccessToSelectedProject(ctx, targetProject);\n if (accessResult.kind === \"noAccess\") {\n logMessage(\"You don't have access to the selected project.\");\n const result = await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n return result;\n }\n\n const selectedDeployment = await loadSelectedDeploymentCredentials(\n ctx,\n {\n kind: \"deploymentWithinProject\",\n targetProject,\n },\n cmdOptions.selectionWithinProject,\n // We'll start running it below\n { ensureLocalRunning: false },\n );\n if (\n selectedDeployment.deploymentFields !== null &&\n selectedDeployment.deploymentFields.deploymentType === \"local\"\n ) {\n // Start running the local backend\n await handleLocalDeployment(ctx, {\n teamSlug: selectedDeployment.deploymentFields.teamSlug!,\n projectSlug: selectedDeployment.deploymentFields.projectSlug!,\n forceUpgrade: cmdOptions.localOptions.forceUpgrade,\n ports: cmdOptions.localOptions.ports,\n backendVersion: cmdOptions.localOptions.backendVersion,\n });\n }\n return {\n url: selectedDeployment.url,\n adminKey: selectedDeployment.adminKey,\n deploymentFields: selectedDeployment.deploymentFields,\n };\n}\n\nasync function handleChooseProject(\n ctx: Context,\n chosenConfiguration: ChosenConfiguration,\n args: {\n globallyForceCloud: boolean;\n },\n cmdOptions: ConfigureCmdOptions,\n): Promise<\n DeploymentCredentials & {\n deploymentFields: {\n deploymentName: DeploymentName;\n deploymentType: DeploymentType;\n projectSlug: string;\n teamSlug: string;\n };\n }\n> {\n await ensureLoggedIn(ctx, {\n overrideAuthUrl: cmdOptions.overrideAuthUrl,\n overrideAuthClient: cmdOptions.overrideAuthClient,\n overrideAuthUsername: cmdOptions.overrideAuthUsername,\n overrideAuthPassword: cmdOptions.overrideAuthPassword,\n });\n const project = await selectProject(ctx, chosenConfiguration, {\n team: cmdOptions.team,\n project: cmdOptions.project,\n devDeployment: cmdOptions.devDeployment,\n local: args.globallyForceCloud ? false : cmdOptions.local,\n cloud: args.globallyForceCloud ? true : cmdOptions.cloud,\n });\n // TODO complain about any non-default cmdOptions.localOptions here\n // because we're ignoring them if this isn't a local development.\n\n const deploymentOptions: DeploymentOptions =\n cmdOptions.selectionWithinProject.kind === \"prod\"\n ? { kind: \"prod\" }\n : project.devDeployment === \"local\"\n ? { kind: \"local\", ...cmdOptions.localOptions }\n : { kind: \"dev\" };\n const {\n deploymentName,\n deploymentUrl: url,\n adminKey,\n } = await ensureDeploymentProvisioned(ctx, {\n teamSlug: project.teamSlug,\n projectSlug: project.projectSlug,\n deploymentOptions,\n });\n return {\n url,\n adminKey,\n deploymentFields: {\n deploymentName,\n deploymentType: deploymentOptions.kind,\n projectSlug: project.projectSlug,\n teamSlug: project.teamSlug,\n },\n };\n}\n\nexport async function handleManuallySetUrlAndAdminKey(\n ctx: Context,\n cmdOptions: { url: string; adminKey: string },\n) {\n const { url, adminKey } = cmdOptions;\n const didErase = await eraseDeploymentEnvVar(ctx);\n if (didErase) {\n logMessage(\n chalkStderr.yellowBright(\n `Removed the CONVEX_DEPLOYMENT environment variable from .env.local`,\n ),\n );\n }\n const envVarWrite = await writeConvexUrlToEnvFile(ctx, url);\n if (envVarWrite !== null) {\n logMessage(\n chalkStderr.green(\n `Saved the given --url as ${envVarWrite.envVar} to ${envVarWrite.envFile}`,\n ),\n );\n }\n return { url, adminKey };\n}\n\nexport async function selectProject(\n ctx: Context,\n chosenConfiguration: ChosenConfiguration,\n cmdOptions: {\n team?: string | undefined;\n project?: string | undefined;\n devDeployment?: \"cloud\" | \"local\" | undefined;\n local?: boolean | undefined;\n cloud?: boolean | undefined;\n defaultProjectName?: string | undefined;\n },\n): Promise<{\n teamSlug: string;\n projectSlug: string;\n devDeployment: \"cloud\" | \"local\";\n}> {\n // Prompt the user to select a project.\n const choice =\n chosenConfiguration !== \"ask\" && chosenConfiguration !== null\n ? chosenConfiguration\n : await askToConfigure(ctx);\n switch (choice) {\n case \"new\":\n return selectNewProject(ctx, chosenConfiguration, cmdOptions);\n case \"existing\":\n return selectExistingProject(ctx, chosenConfiguration, cmdOptions);\n default:\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"No project selected.\",\n });\n }\n}\n\nconst cwd = path.basename(process.cwd());\nasync function selectNewProject(\n ctx: Context,\n chosenConfiguration: ChosenConfiguration,\n config: {\n team?: string | undefined;\n project?: string | undefined;\n devDeployment?: \"cloud\" | \"local\" | undefined;\n cloud?: boolean | undefined;\n local?: boolean | undefined;\n defaultProjectName?: string | undefined;\n },\n) {\n const { teamSlug: selectedTeam, chosen: didChooseBetweenTeams } =\n await validateOrSelectTeam(ctx, config.team, \"Team:\");\n let projectName: string = config.project || cwd;\n let choseProjectInteractively = false;\n if (!config.project) {\n projectName = await promptString(ctx, {\n message: \"Project name:\",\n default: config.defaultProjectName || cwd,\n });\n choseProjectInteractively = true;\n }\n\n const { devDeployment } = await selectDevDeploymentType(ctx, {\n chosenConfiguration,\n newOrExisting: \"new\",\n teamSlug: selectedTeam,\n userHasChosenSomethingInteractively:\n didChooseBetweenTeams || choseProjectInteractively,\n projectSlug: undefined,\n devDeploymentFromFlag: config.devDeployment,\n forceDevDeployment: config.local\n ? \"local\"\n : config.cloud\n ? \"cloud\"\n : undefined,\n });\n\n showSpinner(\"Creating new Convex project...\");\n\n let projectSlug, teamSlug, projectsRemaining;\n try {\n ({ projectSlug, teamSlug, projectsRemaining } = await createProject(ctx, {\n teamSlug: selectedTeam,\n projectName,\n // We have to create some deployment initially for a project.\n deploymentTypeToProvision: devDeployment === \"local\" ? \"prod\" : \"dev\",\n }));\n } catch (err) {\n logFailure(\"Unable to create project.\");\n return await logAndHandleFetchError(ctx, err);\n }\n const teamMessage = didChooseBetweenTeams\n ? \" in team \" + chalkStderr.bold(teamSlug)\n : \"\";\n logFinishedStep(\n `Created project ${chalkStderr.bold(\n projectSlug,\n )}${teamMessage}, manage it at ${chalkStderr.bold(\n projectDashboardUrl(teamSlug, projectSlug),\n )}`,\n );\n\n if (projectsRemaining <= 2) {\n logWarning(\n chalkStderr.yellow.bold(\n `Your account now has ${projectsRemaining} project${\n projectsRemaining === 1 ? \"\" : \"s\"\n } remaining.`,\n ),\n );\n }\n\n await doInitConvexFolder(ctx);\n return { teamSlug, projectSlug, devDeployment };\n}\n\nasync function selectExistingProject(\n ctx: Context,\n chosenConfiguration: ChosenConfiguration,\n config: {\n team?: string | undefined;\n project?: string | undefined;\n devDeployment?: \"cloud\" | \"local\" | undefined;\n local?: boolean | undefined;\n cloud?: boolean | undefined;\n },\n): Promise<{\n teamSlug: string;\n projectSlug: string;\n devDeployment: \"cloud\" | \"local\";\n}> {\n const { teamSlug, chosen } = await validateOrSelectTeam(\n ctx,\n config.team,\n \"Team:\",\n );\n\n const projectSlug = await validateOrSelectProject(\n ctx,\n config.project,\n teamSlug,\n \"Configure project\",\n \"Project:\",\n );\n if (projectSlug === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Run the command again to create a new project instead.\",\n });\n }\n const { devDeployment } = await selectDevDeploymentType(ctx, {\n chosenConfiguration,\n newOrExisting: \"existing\",\n teamSlug,\n projectSlug,\n userHasChosenSomethingInteractively: chosen || !config.project,\n devDeploymentFromFlag: config.devDeployment,\n forceDevDeployment: config.local\n ? \"local\"\n : config.cloud\n ? \"cloud\"\n : undefined,\n });\n\n logFinishedStep(`Reinitialized project ${chalkStderr.bold(projectSlug)}`);\n return { teamSlug, projectSlug, devDeployment };\n}\n\nasync function askToConfigure(ctx: Context): Promise<\"new\" | \"existing\"> {\n if (!(await hasProjects(ctx))) {\n return \"new\";\n }\n return await promptOptions(ctx, {\n message: \"What would you like to configure?\",\n default: \"new\",\n choices: [\n { name: \"create a new project\", value: \"new\" },\n { name: \"choose an existing project\", value: \"existing\" },\n ],\n });\n}\n\ntype DeploymentOptions =\n | {\n kind: \"prod\";\n }\n | { kind: \"dev\" }\n | {\n kind: \"local\";\n ports?:\n | {\n cloud: number;\n site: number;\n }\n | undefined;\n backendVersion?: string | undefined;\n forceUpgrade: boolean;\n };\n\n/**\n * This method assumes that the member has access to the selected project.\n */\nasync function ensureDeploymentProvisioned(\n ctx: Context,\n options: {\n teamSlug: string;\n projectSlug: string;\n deploymentOptions: DeploymentOptions;\n },\n): Promise<DeploymentDetails> {\n switch (options.deploymentOptions.kind) {\n case \"dev\":\n case \"prod\": {\n const credentials =\n await fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx,\n {\n kind: \"teamAndProjectSlugs\",\n teamSlug: options.teamSlug,\n projectSlug: options.projectSlug,\n },\n options.deploymentOptions.kind,\n );\n return {\n ...credentials,\n onActivity: null,\n };\n }\n case \"local\": {\n const credentials = await handleLocalDeployment(ctx, {\n teamSlug: options.teamSlug,\n projectSlug: options.projectSlug,\n ...options.deploymentOptions,\n });\n return credentials;\n }\n default:\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Invalid deployment type: ${(options.deploymentOptions as any).kind}`,\n errForSentry: `Invalid deployment type: ${(options.deploymentOptions as any).kind}`,\n });\n }\n}\n\nexport async function updateEnvAndConfigForDeploymentSelection(\n ctx: Context,\n options: {\n url: string;\n deploymentName: string;\n teamSlug: string | null;\n projectSlug: string | null;\n deploymentType: DeploymentType;\n },\n existingValue: string | null,\n) {\n const { configPath, projectConfig } = await readProjectConfig(ctx);\n\n const { wroteToGitIgnore, changedDeploymentEnvVar } =\n await writeDeploymentEnvVar(\n ctx,\n options.deploymentType,\n {\n team: options.teamSlug,\n project: options.projectSlug,\n deploymentName: options.deploymentName,\n },\n existingValue,\n );\n await writeProjectConfig(ctx, projectConfig);\n await finalizeConfiguration(ctx, {\n deploymentType: options.deploymentType,\n deploymentName: options.deploymentName,\n url: options.url,\n wroteToGitIgnore,\n changedDeploymentEnvVar,\n functionsPath: functionsDir(configPath, projectConfig),\n });\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { Context } from \"../bundler/context.js\";\nimport {\n logFailure,\n logFinishedStep,\n logMessage,\n logWarning,\n showSpinner,\n} from \"../bundler/log.js\";\nimport {\n DeploymentType,\n DeploymentName,\n fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows,\n createProjectAndCreateDeployment,\n DeploymentSelectionWithinProject,\n loadSelectedDeploymentCredentials,\n checkAccessToSelectedProject,\n validateDeploymentSelectionForExistingDeployment,\n} from \"./lib/api.js\";\nimport { readProjectConfig, writeProjectConfig } from \"./lib/config.js\";\nimport {\n DeploymentDetails,\n eraseDeploymentEnvVar,\n writeDeploymentEnvVar,\n} from \"./lib/deployment.js\";\nimport { finalizeConfiguration } from \"./lib/init.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n functionsDir,\n hasProjects,\n logAndHandleFetchError,\n selectDevDeploymentType,\n validateOrSelectProject,\n validateOrSelectTeam,\n} from \"./lib/utils/utils.js\";\nimport { writeUrlsToEnvFile } from \"./lib/envvars.js\";\nimport path from \"path\";\nimport { projectDashboardUrl } from \"./lib/dashboard.js\";\nimport { doInitConvexFolder } from \"./lib/codegen.js\";\nimport { handleLocalDeployment } from \"./lib/localDeployment/localDeployment.js\";\nimport {\n promptOptions,\n promptString,\n promptYesNo,\n} from \"./lib/utils/prompts.js\";\nimport { readGlobalConfig } from \"./lib/utils/globalConfig.js\";\nimport {\n DeploymentSelection,\n ProjectSelection,\n deploymentNameFromSelection,\n shouldAllowAnonymousDevelopment,\n} from \"./lib/deploymentSelection.js\";\nimport { ensureLoggedIn } from \"./lib/login.js\";\nimport { handleAnonymousDeployment } from \"./lib/localDeployment/anonymous.js\";\nimport { fetchDeploymentCanonicalSiteUrl } from \"./lib/env.js\";\ntype DeploymentCredentials = {\n url: string;\n adminKey: string;\n};\n\ntype ChosenConfiguration =\n // `--configure new`\n | \"new\"\n // `--configure existing`\n | \"existing\"\n // `--configure`\n | \"ask\"\n // `--configure` was not specified\n | null;\n\ntype ConfigureCmdOptions = {\n selectionWithinProject: DeploymentSelectionWithinProject;\n prod: boolean;\n localOptions: {\n ports?: {\n cloud: number;\n site: number;\n };\n backendVersion?: string | undefined;\n dashboardVersion?: string | undefined;\n forceUpgrade: boolean;\n };\n team?: string | undefined;\n project?: string | undefined;\n devDeployment?: \"cloud\" | \"local\" | undefined;\n local?: boolean | undefined;\n cloud?: boolean | undefined;\n url?: string | undefined;\n adminKey?: string | undefined;\n envFile?: string | undefined;\n overrideAuthUrl?: string | undefined;\n overrideAuthClient?: string | undefined;\n overrideAuthUsername?: string | undefined;\n overrideAuthPassword?: string | undefined;\n};\n\n/**\n * As of writing, this is used by:\n * - `npx convex dev`\n * - `npx convex codegen`\n *\n * But is not used by `npx convex deploy` or other commands.\n */\nexport async function deploymentCredentialsOrConfigure(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n chosenConfiguration: ChosenConfiguration,\n cmdOptions: ConfigureCmdOptions,\n): Promise<\n DeploymentCredentials & {\n deploymentFields: {\n deploymentName: DeploymentName;\n deploymentType: DeploymentType;\n projectSlug: string | null;\n teamSlug: string | null;\n siteUrl: string | null;\n } | null;\n }\n> {\n const selectedDeployment = await _deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n chosenConfiguration,\n cmdOptions,\n );\n const siteUrl = await fetchDeploymentCanonicalSiteUrl(ctx, {\n adminKey: selectedDeployment.adminKey,\n deploymentUrl: selectedDeployment.url,\n });\n\n if (selectedDeployment.deploymentFields !== null) {\n // Set the `CONVEX_DEPLOYMENT` env var + the `CONVEX_URL` env var\n await updateEnvAndConfigForDeploymentSelection(\n ctx,\n {\n url: selectedDeployment.url,\n siteUrl,\n deploymentName: selectedDeployment.deploymentFields.deploymentName,\n teamSlug: selectedDeployment.deploymentFields.teamSlug,\n projectSlug: selectedDeployment.deploymentFields.projectSlug,\n deploymentType: selectedDeployment.deploymentFields.deploymentType,\n },\n deploymentNameFromSelection(deploymentSelection),\n );\n } else {\n // Clear the `CONVEX_DEPLOYMENT` env var + set the `CONVEX_URL` and\n // `CONVEX_SITE_URL` env vars.\n await handleManuallySetUrlAndAdminKey(ctx, {\n url: selectedDeployment.url,\n siteUrl,\n adminKey: selectedDeployment.adminKey,\n });\n }\n return {\n url: selectedDeployment.url,\n adminKey: selectedDeployment.adminKey,\n deploymentFields:\n selectedDeployment.deploymentFields === null\n ? null\n : { ...selectedDeployment.deploymentFields, siteUrl: siteUrl },\n };\n}\n\nexport async function _deploymentCredentialsOrConfigure(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n chosenConfiguration: ChosenConfiguration,\n cmdOptions: ConfigureCmdOptions,\n): Promise<\n DeploymentCredentials & {\n deploymentFields: {\n deploymentName: DeploymentName;\n deploymentType: DeploymentType;\n projectSlug: string | null;\n teamSlug: string | null;\n } | null;\n }\n> {\n const config = readGlobalConfig(ctx);\n const globallyForceCloud = !!config?.optOutOfLocalDevDeploymentsUntilBetaOver;\n if (globallyForceCloud && cmdOptions.local) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Can't specify --local when local deployments are disabled on this machine. Run `npx convex disable-local-deployments --undo-global` to allow use of --local.\",\n });\n }\n\n switch (deploymentSelection.kind) {\n case \"existingDeployment\":\n await validateDeploymentSelectionForExistingDeployment(\n ctx,\n cmdOptions.selectionWithinProject,\n deploymentSelection.deploymentToActOn.source,\n );\n return {\n url: deploymentSelection.deploymentToActOn.url,\n adminKey: deploymentSelection.deploymentToActOn.adminKey,\n deploymentFields:\n deploymentSelection.deploymentToActOn.deploymentFields,\n };\n case \"chooseProject\": {\n await ensureLoggedIn(ctx, {\n overrideAuthUrl: cmdOptions.overrideAuthUrl,\n overrideAuthClient: cmdOptions.overrideAuthClient,\n overrideAuthUsername: cmdOptions.overrideAuthUsername,\n overrideAuthPassword: cmdOptions.overrideAuthPassword,\n });\n return await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n }\n case \"preview\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Use `npx convex deploy` to use preview deployments.\",\n });\n case \"deploymentWithinProject\": {\n return await handleDeploymentWithinProject(ctx, {\n chosenConfiguration,\n targetProject: deploymentSelection.targetProject,\n cmdOptions,\n globallyForceCloud,\n });\n }\n case \"anonymous\": {\n const hasAuth = ctx.bigBrainAuth() !== null;\n const isAgentMode = process.env.CONVEX_AGENT_MODE === \"anonymous\";\n if (\n !isAgentMode &&\n hasAuth &&\n deploymentSelection.deploymentName !== null\n ) {\n const shouldConfigure =\n chosenConfiguration !== null ||\n (await promptYesNo(ctx, {\n message: `${CONVEX_DEPLOYMENT_ENV_VAR_NAME} is configured with deployment ${deploymentSelection.deploymentName}, which is not linked with your account. Would you like to choose a different project instead?`,\n }));\n if (!shouldConfigure) {\n return await ctx.crash({\n exitCode: 0,\n errorType: \"fatal\",\n printedMessage: `Run \\`npx convex login --link-deployments\\` first to link this deployment to your account, and then run \\`npx convex dev\\` again.`,\n });\n }\n return await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n }\n const alreadyHasConfiguredAnonymousDeployment =\n deploymentSelection.deploymentName !== null &&\n chosenConfiguration === null;\n if (isAgentMode) {\n logWarning(\n chalkStderr.yellow.bold(\n \"CONVEX_AGENT_MODE=anonymous mode is in beta, functionality may change in the future.\",\n ),\n );\n }\n\n const shouldPromptForLogin = isAgentMode\n ? \"no\"\n : alreadyHasConfiguredAnonymousDeployment\n ? \"no\"\n : await promptOptions(ctx, {\n message:\n \"Welcome to Convex! Would you like to login to your account?\",\n choices: [\n {\n name: \"Start without an account (run Convex locally)\",\n value: \"no\",\n },\n { name: \"Login or create an account\", value: \"yes\" },\n ],\n default: \"no\",\n });\n if (shouldPromptForLogin === \"no\") {\n const result = await handleAnonymousDeployment(ctx, {\n chosenConfiguration,\n deploymentName: deploymentSelection.deploymentName,\n ...cmdOptions.localOptions,\n });\n return {\n adminKey: result.adminKey,\n url: result.deploymentUrl,\n deploymentFields: {\n deploymentName: result.deploymentName,\n deploymentType: \"anonymous\",\n projectSlug: null,\n teamSlug: null,\n },\n };\n }\n return await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n }\n }\n}\n\nasync function handleDeploymentWithinProject(\n ctx: Context,\n {\n chosenConfiguration,\n targetProject,\n cmdOptions,\n globallyForceCloud,\n }: {\n chosenConfiguration: ChosenConfiguration;\n targetProject: ProjectSelection;\n cmdOptions: ConfigureCmdOptions;\n globallyForceCloud: boolean;\n },\n) {\n const hasAuth = ctx.bigBrainAuth() !== null;\n const loginMessage =\n hasAuth && shouldAllowAnonymousDevelopment()\n ? undefined\n : `Tip: You can try out Convex without creating an account by clearing the ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} environment variable.`;\n await ensureLoggedIn(ctx, {\n message: loginMessage,\n overrideAuthUrl: cmdOptions.overrideAuthUrl,\n overrideAuthClient: cmdOptions.overrideAuthClient,\n overrideAuthUsername: cmdOptions.overrideAuthUsername,\n overrideAuthPassword: cmdOptions.overrideAuthPassword,\n });\n if (chosenConfiguration !== null) {\n const result = await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n return result;\n }\n\n const accessResult = await checkAccessToSelectedProject(ctx, targetProject);\n if (accessResult.kind === \"noAccess\") {\n logMessage(\"You don't have access to the selected project.\");\n const result = await handleChooseProject(\n ctx,\n chosenConfiguration,\n {\n globallyForceCloud,\n },\n cmdOptions,\n );\n return result;\n }\n\n const selectedDeployment = await loadSelectedDeploymentCredentials(\n ctx,\n {\n kind: \"deploymentWithinProject\",\n targetProject,\n },\n cmdOptions.selectionWithinProject,\n // We'll start running it below\n { ensureLocalRunning: false },\n );\n if (\n selectedDeployment.deploymentFields !== null &&\n selectedDeployment.deploymentFields.deploymentType === \"local\"\n ) {\n // Start running the local backend\n await handleLocalDeployment(ctx, {\n teamSlug: selectedDeployment.deploymentFields.teamSlug!,\n projectSlug: selectedDeployment.deploymentFields.projectSlug!,\n forceUpgrade: cmdOptions.localOptions.forceUpgrade,\n ports: cmdOptions.localOptions.ports,\n backendVersion: cmdOptions.localOptions.backendVersion,\n });\n }\n return {\n url: selectedDeployment.url,\n adminKey: selectedDeployment.adminKey,\n deploymentFields: selectedDeployment.deploymentFields,\n };\n}\n\nasync function handleChooseProject(\n ctx: Context,\n chosenConfiguration: ChosenConfiguration,\n args: {\n globallyForceCloud: boolean;\n },\n cmdOptions: ConfigureCmdOptions,\n): Promise<\n DeploymentCredentials & {\n deploymentFields: {\n deploymentName: DeploymentName;\n deploymentType: DeploymentType;\n projectSlug: string;\n teamSlug: string;\n };\n }\n> {\n await ensureLoggedIn(ctx, {\n overrideAuthUrl: cmdOptions.overrideAuthUrl,\n overrideAuthClient: cmdOptions.overrideAuthClient,\n overrideAuthUsername: cmdOptions.overrideAuthUsername,\n overrideAuthPassword: cmdOptions.overrideAuthPassword,\n });\n const project = await selectProject(ctx, chosenConfiguration, {\n team: cmdOptions.team,\n project: cmdOptions.project,\n devDeployment: cmdOptions.devDeployment,\n local: args.globallyForceCloud ? false : cmdOptions.local,\n cloud: args.globallyForceCloud ? true : cmdOptions.cloud,\n });\n // TODO complain about any non-default cmdOptions.localOptions here\n // because we're ignoring them if this isn't a local development.\n\n const deploymentOptions: DeploymentOptions =\n cmdOptions.selectionWithinProject.kind === \"prod\"\n ? { kind: \"prod\" }\n : project.devDeployment === \"local\"\n ? { kind: \"local\", ...cmdOptions.localOptions }\n : { kind: \"dev\" };\n const {\n deploymentName,\n deploymentUrl: url,\n adminKey,\n } = await ensureDeploymentProvisioned(ctx, {\n teamSlug: project.teamSlug,\n projectSlug: project.projectSlug,\n deploymentOptions,\n });\n return {\n url,\n adminKey,\n deploymentFields: {\n deploymentName,\n deploymentType: deploymentOptions.kind,\n projectSlug: project.projectSlug,\n teamSlug: project.teamSlug,\n },\n };\n}\n\nasync function handleManuallySetUrlAndAdminKey(\n ctx: Context,\n cmdOptions: { url: string; siteUrl: string; adminKey: string },\n) {\n const { url, siteUrl, adminKey } = cmdOptions;\n const didErase = await eraseDeploymentEnvVar(ctx);\n if (didErase) {\n logMessage(\n chalkStderr.yellowBright(\n `Removed the CONVEX_DEPLOYMENT environment variable from .env.local`,\n ),\n );\n }\n const envFileConfig = await writeUrlsToEnvFile(ctx, {\n convexUrl: url,\n siteUrl,\n });\n if (\n envFileConfig !== null &&\n (envFileConfig.convexUrlEnvVar || envFileConfig.siteUrlEnvVar)\n ) {\n // Join both names with \" and \" if both exist, otherwise just use one of them.\n const updatedVars = [\n envFileConfig.convexUrlEnvVar,\n envFileConfig.siteUrlEnvVar,\n ]\n .filter(Boolean)\n .join(\" and \");\n logMessage(\n chalkStderr.green(`Saved ${updatedVars} to ${envFileConfig.envFile}`),\n );\n }\n return { url, adminKey };\n}\n\nexport async function selectProject(\n ctx: Context,\n chosenConfiguration: ChosenConfiguration,\n cmdOptions: {\n team?: string | undefined;\n project?: string | undefined;\n devDeployment?: \"cloud\" | \"local\" | undefined;\n local?: boolean | undefined;\n cloud?: boolean | undefined;\n defaultProjectName?: string | undefined;\n },\n): Promise<{\n teamSlug: string;\n projectSlug: string;\n devDeployment: \"cloud\" | \"local\";\n}> {\n // Prompt the user to select a project.\n const choice =\n chosenConfiguration !== \"ask\" && chosenConfiguration !== null\n ? chosenConfiguration\n : await askToConfigure(ctx);\n switch (choice) {\n case \"new\":\n return selectNewProject(ctx, chosenConfiguration, cmdOptions);\n case \"existing\":\n return selectExistingProject(ctx, chosenConfiguration, cmdOptions);\n default:\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"No project selected.\",\n });\n }\n}\n\nconst cwd = path.basename(process.cwd());\nasync function selectNewProject(\n ctx: Context,\n chosenConfiguration: ChosenConfiguration,\n config: {\n team?: string | undefined;\n project?: string | undefined;\n devDeployment?: \"cloud\" | \"local\" | undefined;\n cloud?: boolean | undefined;\n local?: boolean | undefined;\n defaultProjectName?: string | undefined;\n },\n) {\n const { teamSlug: selectedTeam, chosen: didChooseBetweenTeams } =\n await validateOrSelectTeam(ctx, config.team, \"Team:\");\n let projectName: string = config.project || cwd;\n let choseProjectInteractively = false;\n if (!config.project) {\n projectName = await promptString(ctx, {\n message: \"Project name:\",\n default: config.defaultProjectName || cwd,\n });\n choseProjectInteractively = true;\n }\n\n const { devDeployment } = await selectDevDeploymentType(ctx, {\n chosenConfiguration,\n newOrExisting: \"new\",\n teamSlug: selectedTeam,\n userHasChosenSomethingInteractively:\n didChooseBetweenTeams || choseProjectInteractively,\n projectSlug: undefined,\n devDeploymentFromFlag: config.devDeployment,\n forceDevDeployment: config.local\n ? \"local\"\n : config.cloud\n ? \"cloud\"\n : undefined,\n });\n\n showSpinner(\"Creating new Convex project...\");\n\n let projectSlug, teamSlug, projectsRemaining;\n try {\n ({ projectSlug, teamSlug, projectsRemaining } =\n await createProjectAndCreateDeployment(ctx, {\n teamSlug: selectedTeam,\n projectName,\n // We have to create some deployment initially for a project.\n deploymentTypeToProvision: devDeployment === \"local\" ? \"prod\" : \"dev\",\n }));\n } catch (err) {\n logFailure(\"Unable to create project.\");\n return await logAndHandleFetchError(ctx, err);\n }\n const teamMessage = didChooseBetweenTeams\n ? \" in team \" + chalkStderr.bold(teamSlug)\n : \"\";\n logFinishedStep(\n `Created project ${chalkStderr.bold(\n projectSlug,\n )}${teamMessage}, manage it at ${chalkStderr.bold(\n projectDashboardUrl(teamSlug, projectSlug),\n )}`,\n );\n\n if (projectsRemaining <= 2) {\n logWarning(\n chalkStderr.yellow.bold(\n `Your account now has ${projectsRemaining} project${\n projectsRemaining === 1 ? \"\" : \"s\"\n } remaining.`,\n ),\n );\n }\n\n await doInitConvexFolder(ctx);\n return { teamSlug, projectSlug, devDeployment };\n}\n\nasync function selectExistingProject(\n ctx: Context,\n chosenConfiguration: ChosenConfiguration,\n config: {\n team?: string | undefined;\n project?: string | undefined;\n devDeployment?: \"cloud\" | \"local\" | undefined;\n local?: boolean | undefined;\n cloud?: boolean | undefined;\n },\n): Promise<{\n teamSlug: string;\n projectSlug: string;\n devDeployment: \"cloud\" | \"local\";\n}> {\n const { teamSlug, chosen } = await validateOrSelectTeam(\n ctx,\n config.team,\n \"Team:\",\n );\n\n const projectSlug = await validateOrSelectProject(\n ctx,\n config.project,\n teamSlug,\n \"Configure project\",\n \"Project:\",\n );\n if (projectSlug === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"Run the command again to create a new project instead.\",\n });\n }\n const { devDeployment } = await selectDevDeploymentType(ctx, {\n chosenConfiguration,\n newOrExisting: \"existing\",\n teamSlug,\n projectSlug,\n userHasChosenSomethingInteractively: chosen || !config.project,\n devDeploymentFromFlag: config.devDeployment,\n forceDevDeployment: config.local\n ? \"local\"\n : config.cloud\n ? \"cloud\"\n : undefined,\n });\n\n logFinishedStep(`Reinitialized project ${chalkStderr.bold(projectSlug)}`);\n return { teamSlug, projectSlug, devDeployment };\n}\n\nasync function askToConfigure(ctx: Context): Promise<\"new\" | \"existing\"> {\n if (!(await hasProjects(ctx))) {\n return \"new\";\n }\n return await promptOptions(ctx, {\n message: \"What would you like to configure?\",\n default: \"new\",\n choices: [\n { name: \"create a new project\", value: \"new\" },\n { name: \"choose an existing project\", value: \"existing\" },\n ],\n });\n}\n\ntype DeploymentOptions =\n | {\n kind: \"prod\";\n }\n | { kind: \"dev\" }\n | {\n kind: \"local\";\n ports?:\n | {\n cloud: number;\n site: number;\n }\n | undefined;\n backendVersion?: string | undefined;\n forceUpgrade: boolean;\n };\n\n/**\n * This method assumes that the member has access to the selected project.\n */\nasync function ensureDeploymentProvisioned(\n ctx: Context,\n options: {\n teamSlug: string;\n projectSlug: string;\n deploymentOptions: DeploymentOptions;\n },\n): Promise<DeploymentDetails> {\n switch (options.deploymentOptions.kind) {\n case \"dev\":\n case \"prod\": {\n const credentials =\n await fetchDeploymentCredentialsProvisioningDevOrProdMaybeThrows(\n ctx,\n {\n kind: \"teamAndProjectSlugs\",\n teamSlug: options.teamSlug,\n projectSlug: options.projectSlug,\n },\n options.deploymentOptions.kind,\n );\n return {\n ...credentials,\n onActivity: null,\n };\n }\n case \"local\": {\n const credentials = await handleLocalDeployment(ctx, {\n teamSlug: options.teamSlug,\n projectSlug: options.projectSlug,\n ...options.deploymentOptions,\n });\n return credentials;\n }\n default:\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Invalid deployment type: ${(options.deploymentOptions as any).kind}`,\n errForSentry: `Invalid deployment type: ${(options.deploymentOptions as any).kind}`,\n });\n }\n}\n\nexport async function updateEnvAndConfigForDeploymentSelection(\n ctx: Context,\n options: {\n url: string;\n siteUrl?: string | null;\n deploymentName: string;\n teamSlug: string | null;\n projectSlug: string | null;\n deploymentType: DeploymentType;\n },\n existingValue: string | null,\n) {\n const { configPath, projectConfig } = await readProjectConfig(ctx);\n\n const { wroteToGitIgnore, changedDeploymentEnvVar } =\n await writeDeploymentEnvVar(\n ctx,\n options.deploymentType,\n {\n team: options.teamSlug,\n project: options.projectSlug,\n deploymentName: options.deploymentName,\n },\n existingValue,\n );\n await writeProjectConfig(ctx, projectConfig);\n await finalizeConfiguration(ctx, {\n deploymentType: options.deploymentType,\n deploymentName: options.deploymentName,\n url: options.url,\n siteUrl: options.siteUrl,\n wroteToGitIgnore,\n changedDeploymentEnvVar,\n functionsPath: functionsDir(configPath, projectConfig),\n });\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["path"]
7
7
  }
@@ -54,6 +54,6 @@ const convexImport = new import_extra_typings.Command("import").summary("Import
54
54
  });
55
55
  });
56
56
  function snapshotImportDashboardLink(deploymentName) {
57
- return deploymentName === null ? "https://dashboard.convex.dev/deployment/settings/snapshots" : (0, import_dashboard.deploymentDashboardUrlPage)(deploymentName, "/settings/snapshots");
57
+ return deploymentName === null ? `${import_dashboard.DASHBOARD_HOST}/deployment/settings/snapshots` : (0, import_dashboard.deploymentDashboardUrlPage)(deploymentName, "/settings/snapshots");
58
58
  }
59
59
  //# sourceMappingURL=convexImport.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/convexImport.ts"],
4
- "sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { oneoffContext } from \"../bundler/context.js\";\nimport {\n deploymentSelectionWithinProjectFromOptions,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport { Command } from \"@commander-js/extra-typings\";\nimport { actionDescription } from \"./lib/command.js\";\nimport { deploymentDashboardUrlPage } from \"./lib/dashboard.js\";\nimport { importIntoDeployment } from \"./lib/convexImport.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\n\nexport const convexImport = new Command(\"import\")\n .summary(\"Import data from a file to your deployment\")\n .description(\n \"Import data from a file to your Convex deployment.\\n\\n\" +\n \" From a snapshot: `npx convex import snapshot.zip`\\n\" +\n \" For a single table: `npx convex import --table tableName file.json`\\n\\n\" +\n \"By default, this imports into your dev deployment.\",\n )\n .allowExcessArguments(false)\n .addImportOptions()\n .addDeploymentSelectionOptions(actionDescription(\"Import data into\"))\n .showHelpAfterError()\n .action(async (filePath, options) => {\n const ctx = await oneoffContext(options);\n\n await ensureHasConvexDependency(ctx, \"import\");\n\n const selectionWithinProject =\n deploymentSelectionWithinProjectFromOptions(options);\n\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const deployment = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n selectionWithinProject,\n );\n\n const deploymentNotice = options.prod\n ? ` in your ${chalkStderr.bold(\"prod\")} deployment`\n : \"\";\n\n await importIntoDeployment(ctx, filePath, {\n ...options,\n deploymentUrl: deployment.url,\n adminKey: deployment.adminKey,\n deploymentNotice,\n snapshotImportDashboardLink: snapshotImportDashboardLink(\n deployment.deploymentFields?.deploymentName ?? null,\n ),\n });\n });\n\nfunction snapshotImportDashboardLink(deploymentName: string | null) {\n return deploymentName === null\n ? \"https://dashboard.convex.dev/deployment/settings/snapshots\"\n : deploymentDashboardUrlPage(deploymentName, \"/settings/snapshots\");\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAC5B,mBAA0C;AAC1C,qBAA8B;AAC9B,iBAGO;AACP,2BAAwB;AACxB,qBAAkC;AAClC,uBAA2C;AAC3C,0BAAqC;AACrC,iCAAuC;AAEhC,MAAM,eAAe,IAAI,6BAAQ,QAAQ,EAC7C,QAAQ,4CAA4C,EACpD;AAAA,EACC;AAIF,EACC,qBAAqB,KAAK,EAC1B,iBAAiB,EACjB,kCAA8B,kCAAkB,kBAAkB,CAAC,EACnE,mBAAmB,EACnB,OAAO,OAAO,UAAU,YAAY;AACnC,QAAM,MAAM,UAAM,8BAAc,OAAO;AAEvC,YAAM,wCAA0B,KAAK,QAAQ;AAE7C,QAAM,6BACJ,wDAA4C,OAAO;AAErD,QAAM,sBAAsB,UAAM,mDAAuB,KAAK,OAAO;AACrE,QAAM,aAAa,UAAM;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,mBAAmB,QAAQ,OAC7B,YAAY,yBAAY,KAAK,MAAM,CAAC,gBACpC;AAEJ,YAAM,0CAAqB,KAAK,UAAU;AAAA,IACxC,GAAG;AAAA,IACH,eAAe,WAAW;AAAA,IAC1B,UAAU,WAAW;AAAA,IACrB;AAAA,IACA,6BAA6B;AAAA,MAC3B,WAAW,kBAAkB,kBAAkB;AAAA,IACjD;AAAA,EACF,CAAC;AACH,CAAC;AAEH,SAAS,4BAA4B,gBAA+B;AAClE,SAAO,mBAAmB,OACtB,mEACA,6CAA2B,gBAAgB,qBAAqB;AACtE;",
4
+ "sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { oneoffContext } from \"../bundler/context.js\";\nimport {\n deploymentSelectionWithinProjectFromOptions,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport { Command } from \"@commander-js/extra-typings\";\nimport { actionDescription } from \"./lib/command.js\";\nimport { DASHBOARD_HOST, deploymentDashboardUrlPage } from \"./lib/dashboard.js\";\nimport { importIntoDeployment } from \"./lib/convexImport.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\n\nexport const convexImport = new Command(\"import\")\n .summary(\"Import data from a file to your deployment\")\n .description(\n \"Import data from a file to your Convex deployment.\\n\\n\" +\n \" From a snapshot: `npx convex import snapshot.zip`\\n\" +\n \" For a single table: `npx convex import --table tableName file.json`\\n\\n\" +\n \"By default, this imports into your dev deployment.\",\n )\n .allowExcessArguments(false)\n .addImportOptions()\n .addDeploymentSelectionOptions(actionDescription(\"Import data into\"))\n .showHelpAfterError()\n .action(async (filePath, options) => {\n const ctx = await oneoffContext(options);\n\n await ensureHasConvexDependency(ctx, \"import\");\n\n const selectionWithinProject =\n deploymentSelectionWithinProjectFromOptions(options);\n\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const deployment = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n selectionWithinProject,\n );\n\n const deploymentNotice = options.prod\n ? ` in your ${chalkStderr.bold(\"prod\")} deployment`\n : \"\";\n\n await importIntoDeployment(ctx, filePath, {\n ...options,\n deploymentUrl: deployment.url,\n adminKey: deployment.adminKey,\n deploymentNotice,\n snapshotImportDashboardLink: snapshotImportDashboardLink(\n deployment.deploymentFields?.deploymentName ?? null,\n ),\n });\n });\n\nfunction snapshotImportDashboardLink(deploymentName: string | null) {\n return deploymentName === null\n ? `${DASHBOARD_HOST}/deployment/settings/snapshots`\n : deploymentDashboardUrlPage(deploymentName, \"/settings/snapshots\");\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAC5B,mBAA0C;AAC1C,qBAA8B;AAC9B,iBAGO;AACP,2BAAwB;AACxB,qBAAkC;AAClC,uBAA2D;AAC3D,0BAAqC;AACrC,iCAAuC;AAEhC,MAAM,eAAe,IAAI,6BAAQ,QAAQ,EAC7C,QAAQ,4CAA4C,EACpD;AAAA,EACC;AAIF,EACC,qBAAqB,KAAK,EAC1B,iBAAiB,EACjB,kCAA8B,kCAAkB,kBAAkB,CAAC,EACnE,mBAAmB,EACnB,OAAO,OAAO,UAAU,YAAY;AACnC,QAAM,MAAM,UAAM,8BAAc,OAAO;AAEvC,YAAM,wCAA0B,KAAK,QAAQ;AAE7C,QAAM,6BACJ,wDAA4C,OAAO;AAErD,QAAM,sBAAsB,UAAM,mDAAuB,KAAK,OAAO;AACrE,QAAM,aAAa,UAAM;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,mBAAmB,QAAQ,OAC7B,YAAY,yBAAY,KAAK,MAAM,CAAC,gBACpC;AAEJ,YAAM,0CAAqB,KAAK,UAAU;AAAA,IACxC,GAAG;AAAA,IACH,eAAe,WAAW;AAAA,IAC1B,UAAU,WAAW;AAAA,IACrB;AAAA,IACA,6BAA6B;AAAA,MAC3B,WAAW,kBAAkB,kBAAkB;AAAA,IACjD;AAAA,EACF,CAAC;AACH,CAAC;AAEH,SAAS,4BAA4B,gBAA+B;AAClE,SAAO,mBAAmB,OACtB,GAAG,+BAAc,uCACjB,6CAA2B,gBAAgB,qBAAqB;AACtE;",
6
6
  "names": []
7
7
  }
@@ -28,7 +28,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var dashboard_exports = {};
30
30
  __export(dashboard_exports, {
31
- DASHBOARD_HOST: () => DASHBOARD_HOST,
32
31
  dashboard: () => dashboard
33
32
  });
34
33
  module.exports = __toCommonJS(dashboard_exports);
@@ -43,7 +42,6 @@ var import_deploymentSelection = require("./lib/deploymentSelection.js");
43
42
  var import_dashboard = require("./lib/localDeployment/dashboard.js");
44
43
  var import_dashboard2 = require("./lib/dashboard.js");
45
44
  var import_deployment = require("./lib/deployment.js");
46
- const DASHBOARD_HOST = process.env.CONVEX_PROVISION_HOST ? "http://localhost:6789" : "https://dashboard.convex.dev";
47
45
  const dashboard = new import_extra_typings.Command("dashboard").alias("dash").description("Open the dashboard in the browser").allowExcessArguments(false).option(
48
46
  "--no-open",
49
47
  "Don't automatically open the dashboard in the default browser"
@@ -64,7 +62,10 @@ See self-hosting instructions for how to self-host the dashboard.`;
64
62
  (0, import_log.logMessage)(import_chalk.chalkStderr.yellow(msg));
65
63
  return;
66
64
  }
67
- const dashboardUrl = (0, import_dashboard2.getDashboardUrl)(ctx, deployment.deploymentFields);
65
+ const dashboardUrl = await (0, import_dashboard2.getDashboardUrl)(
66
+ ctx,
67
+ deployment.deploymentFields
68
+ );
68
69
  if ((0, import_deployment.isAnonymousDeployment)(deployment.deploymentFields.deploymentName)) {
69
70
  const warningMessage = `You are not currently running the dashboard locally. Make sure \`npx convex dev\` is running and try again.`;
70
71
  if (dashboardUrl === null) {
@@ -79,7 +80,7 @@ See self-hosting instructions for how to self-host the dashboard.`;
79
80
  await logOrOpenUrl(ctx, dashboardUrl, options.open);
80
81
  return;
81
82
  }
82
- await logOrOpenUrl(ctx, dashboardUrl ?? DASHBOARD_HOST, options.open);
83
+ await logOrOpenUrl(ctx, dashboardUrl ?? import_dashboard2.DASHBOARD_HOST, options.open);
83
84
  });
84
85
  async function logOrOpenUrl(ctx, url, shouldOpen) {
85
86
  if (shouldOpen) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/dashboard.ts"],
4
- "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport open from \"open\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { logMessage, logOutput, logWarning } from \"../bundler/log.js\";\nimport {\n deploymentSelectionWithinProjectFromOptions,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport { actionDescription } from \"./lib/command.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { checkIfDashboardIsRunning } from \"./lib/localDeployment/dashboard.js\";\nimport { getDashboardUrl } from \"./lib/dashboard.js\";\nimport { isAnonymousDeployment } from \"./lib/deployment.js\";\n\nexport const DASHBOARD_HOST = process.env.CONVEX_PROVISION_HOST\n ? \"http://localhost:6789\"\n : \"https://dashboard.convex.dev\";\n\nexport const dashboard = new Command(\"dashboard\")\n .alias(\"dash\")\n .description(\"Open the dashboard in the browser\")\n .allowExcessArguments(false)\n .option(\n \"--no-open\",\n \"Don't automatically open the dashboard in the default browser\",\n )\n .addDeploymentSelectionOptions(actionDescription(\"Open the dashboard for\"))\n .showHelpAfterError()\n .action(async (options) => {\n const ctx = await oneoffContext(options);\n\n const selectionWithinProject =\n deploymentSelectionWithinProjectFromOptions(options);\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const deployment = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n selectionWithinProject,\n { ensureLocalRunning: false },\n );\n\n if (deployment.deploymentFields === null) {\n const msg = `Self-hosted deployment configured.\\n\\`${chalkStderr.bold(\"npx convex dashboard\")}\\` is not supported for self-hosted deployments.\\nSee self-hosting instructions for how to self-host the dashboard.`;\n logMessage(chalkStderr.yellow(msg));\n return;\n }\n const dashboardUrl = getDashboardUrl(ctx, deployment.deploymentFields);\n if (isAnonymousDeployment(deployment.deploymentFields.deploymentName)) {\n const warningMessage = `You are not currently running the dashboard locally. Make sure \\`npx convex dev\\` is running and try again.`;\n if (dashboardUrl === null) {\n logWarning(warningMessage);\n return;\n }\n const isLocalDashboardRunning = await checkIfDashboardIsRunning(ctx);\n if (!isLocalDashboardRunning) {\n logWarning(warningMessage);\n return;\n }\n await logOrOpenUrl(ctx, dashboardUrl, options.open);\n return;\n }\n\n await logOrOpenUrl(ctx, dashboardUrl ?? DASHBOARD_HOST, options.open);\n });\n\nasync function logOrOpenUrl(ctx: Context, url: string, shouldOpen: boolean) {\n if (shouldOpen) {\n logMessage(chalkStderr.gray(`Opening ${url} in the default browser...`));\n try {\n // This can fail e.g. on a headless dev machine.\n await open(url);\n } catch {\n logWarning(\n `\u26A0\uFE0F Could not open dashboard in the default browser.\\nPlease visit: ${url}`,\n );\n }\n } else {\n logOutput(url);\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAwB;AACxB,mBAA4B;AAC5B,kBAAiB;AACjB,qBAAuC;AACvC,iBAAkD;AAClD,iBAGO;AACP,qBAAkC;AAClC,iCAAuC;AACvC,uBAA0C;AAC1C,IAAAA,oBAAgC;AAChC,wBAAsC;AAE/B,MAAM,iBAAiB,QAAQ,IAAI,wBACtC,0BACA;AAEG,MAAM,YAAY,IAAI,6BAAQ,WAAW,EAC7C,MAAM,MAAM,EACZ,YAAY,mCAAmC,EAC/C,qBAAqB,KAAK,EAC1B;AAAA,EACC;AAAA,EACA;AACF,EACC,kCAA8B,kCAAkB,wBAAwB,CAAC,EACzE,mBAAmB,EACnB,OAAO,OAAO,YAAY;AACzB,QAAM,MAAM,UAAM,8BAAc,OAAO;AAEvC,QAAM,6BACJ,wDAA4C,OAAO;AACrD,QAAM,sBAAsB,UAAM,mDAAuB,KAAK,OAAO;AACrE,QAAM,aAAa,UAAM;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,oBAAoB,MAAM;AAAA,EAC9B;AAEA,MAAI,WAAW,qBAAqB,MAAM;AACxC,UAAM,MAAM;AAAA,IAAyC,yBAAY,KAAK,sBAAsB,CAAC;AAAA;AAC7F,+BAAW,yBAAY,OAAO,GAAG,CAAC;AAClC;AAAA,EACF;AACA,QAAM,mBAAe,mCAAgB,KAAK,WAAW,gBAAgB;AACrE,UAAI,yCAAsB,WAAW,iBAAiB,cAAc,GAAG;AACrE,UAAM,iBAAiB;AACvB,QAAI,iBAAiB,MAAM;AACzB,iCAAW,cAAc;AACzB;AAAA,IACF;AACA,UAAM,0BAA0B,UAAM,4CAA0B,GAAG;AACnE,QAAI,CAAC,yBAAyB;AAC5B,iCAAW,cAAc;AACzB;AAAA,IACF;AACA,UAAM,aAAa,KAAK,cAAc,QAAQ,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,aAAa,KAAK,gBAAgB,gBAAgB,QAAQ,IAAI;AACtE,CAAC;AAEH,eAAe,aAAa,KAAc,KAAa,YAAqB;AAC1E,MAAI,YAAY;AACd,+BAAW,yBAAY,KAAK,WAAW,GAAG,4BAA4B,CAAC;AACvE,QAAI;AAEF,gBAAM,YAAAC,SAAK,GAAG;AAAA,IAChB,QAAQ;AACN;AAAA,QACE;AAAA,gBAAsE,GAAG;AAAA,MAC3E;AAAA,IACF;AAAA,EACF,OAAO;AACL,8BAAU,GAAG;AAAA,EACf;AACF;",
4
+ "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport open from \"open\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { logMessage, logOutput, logWarning } from \"../bundler/log.js\";\nimport {\n deploymentSelectionWithinProjectFromOptions,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport { actionDescription } from \"./lib/command.js\";\nimport { getDeploymentSelection } from \"./lib/deploymentSelection.js\";\nimport { checkIfDashboardIsRunning } from \"./lib/localDeployment/dashboard.js\";\nimport { DASHBOARD_HOST, getDashboardUrl } from \"./lib/dashboard.js\";\nimport { isAnonymousDeployment } from \"./lib/deployment.js\";\n\nexport const dashboard = new Command(\"dashboard\")\n .alias(\"dash\")\n .description(\"Open the dashboard in the browser\")\n .allowExcessArguments(false)\n .option(\n \"--no-open\",\n \"Don't automatically open the dashboard in the default browser\",\n )\n .addDeploymentSelectionOptions(actionDescription(\"Open the dashboard for\"))\n .showHelpAfterError()\n .action(async (options) => {\n const ctx = await oneoffContext(options);\n\n const selectionWithinProject =\n deploymentSelectionWithinProjectFromOptions(options);\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const deployment = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n selectionWithinProject,\n { ensureLocalRunning: false },\n );\n\n if (deployment.deploymentFields === null) {\n const msg = `Self-hosted deployment configured.\\n\\`${chalkStderr.bold(\"npx convex dashboard\")}\\` is not supported for self-hosted deployments.\\nSee self-hosting instructions for how to self-host the dashboard.`;\n logMessage(chalkStderr.yellow(msg));\n return;\n }\n const dashboardUrl = await getDashboardUrl(\n ctx,\n deployment.deploymentFields,\n );\n if (isAnonymousDeployment(deployment.deploymentFields.deploymentName)) {\n const warningMessage = `You are not currently running the dashboard locally. Make sure \\`npx convex dev\\` is running and try again.`;\n if (dashboardUrl === null) {\n logWarning(warningMessage);\n return;\n }\n const isLocalDashboardRunning = await checkIfDashboardIsRunning(ctx);\n if (!isLocalDashboardRunning) {\n logWarning(warningMessage);\n return;\n }\n await logOrOpenUrl(ctx, dashboardUrl, options.open);\n return;\n }\n\n await logOrOpenUrl(ctx, dashboardUrl ?? DASHBOARD_HOST, options.open);\n });\n\nasync function logOrOpenUrl(ctx: Context, url: string, shouldOpen: boolean) {\n if (shouldOpen) {\n logMessage(chalkStderr.gray(`Opening ${url} in the default browser...`));\n try {\n // This can fail e.g. on a headless dev machine.\n await open(url);\n } catch {\n logWarning(\n `\u26A0\uFE0F Could not open dashboard in the default browser.\\nPlease visit: ${url}`,\n );\n }\n } else {\n logOutput(url);\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAwB;AACxB,mBAA4B;AAC5B,kBAAiB;AACjB,qBAAuC;AACvC,iBAAkD;AAClD,iBAGO;AACP,qBAAkC;AAClC,iCAAuC;AACvC,uBAA0C;AAC1C,IAAAA,oBAAgD;AAChD,wBAAsC;AAE/B,MAAM,YAAY,IAAI,6BAAQ,WAAW,EAC7C,MAAM,MAAM,EACZ,YAAY,mCAAmC,EAC/C,qBAAqB,KAAK,EAC1B;AAAA,EACC;AAAA,EACA;AACF,EACC,kCAA8B,kCAAkB,wBAAwB,CAAC,EACzE,mBAAmB,EACnB,OAAO,OAAO,YAAY;AACzB,QAAM,MAAM,UAAM,8BAAc,OAAO;AAEvC,QAAM,6BACJ,wDAA4C,OAAO;AACrD,QAAM,sBAAsB,UAAM,mDAAuB,KAAK,OAAO;AACrE,QAAM,aAAa,UAAM;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,oBAAoB,MAAM;AAAA,EAC9B;AAEA,MAAI,WAAW,qBAAqB,MAAM;AACxC,UAAM,MAAM;AAAA,IAAyC,yBAAY,KAAK,sBAAsB,CAAC;AAAA;AAC7F,+BAAW,yBAAY,OAAO,GAAG,CAAC;AAClC;AAAA,EACF;AACA,QAAM,eAAe,UAAM;AAAA,IACzB;AAAA,IACA,WAAW;AAAA,EACb;AACA,UAAI,yCAAsB,WAAW,iBAAiB,cAAc,GAAG;AACrE,UAAM,iBAAiB;AACvB,QAAI,iBAAiB,MAAM;AACzB,iCAAW,cAAc;AACzB;AAAA,IACF;AACA,UAAM,0BAA0B,UAAM,4CAA0B,GAAG;AACnE,QAAI,CAAC,yBAAyB;AAC5B,iCAAW,cAAc;AACzB;AAAA,IACF;AACA,UAAM,aAAa,KAAK,cAAc,QAAQ,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,aAAa,KAAK,gBAAgB,kCAAgB,QAAQ,IAAI;AACtE,CAAC;AAEH,eAAe,aAAa,KAAc,KAAa,YAAqB;AAC1E,MAAI,YAAY;AACd,+BAAW,yBAAY,KAAK,WAAW,GAAG,4BAA4B,CAAC;AACvE,QAAI;AAEF,gBAAM,YAAAC,SAAK,GAAG;AAAA,IAChB,QAAQ;AACN;AAAA,QACE;AAAA,gBAAsE,GAAG;AAAA,MAC3E;AAAA,IACF;AAAA,EACF,OAAO;AACL,8BAAU,GAAG;AAAA,EACf;AACF;",
6
6
  "names": ["import_dashboard", "open"]
7
7
  }
@@ -39,6 +39,7 @@ var import_deploymentSelection2 = require("./lib/deploymentSelection.js");
39
39
  var import_updates = require("./lib/updates.js");
40
40
  var import_config = require("./lib/config.js");
41
41
  var import_workos = require("./lib/workos/workos.js");
42
+ var import_dashboard = require("./lib/dashboard.js");
42
43
  const deploy = new import_extra_typings.Command("deploy").summary("Deploy to your prod deployment").description(
43
44
  `Deploy to your deployment. By default, this deploys to your prod deployment.
44
45
 
@@ -121,7 +122,7 @@ Deploys to a preview deployment if the \`${import_utils.CONVEX_DEPLOY_KEY_ENV_VA
121
122
  );
122
123
  } else {
123
124
  if (cmdOptions.previewCreate !== void 0) {
124
- const source = deploymentSelection.kind === "deploymentWithinProject" && deploymentSelection.targetProject.kind === "deploymentName" ? `at ${import_chalk.chalkStderr.blue.underline(`https://dashboard.convex.dev/dp/${deploymentSelection.targetProject.deploymentName}/settings#preview-deploy-keys`)}` : deploymentSelection.kind === "existingDeployment" && deploymentSelection.deploymentToActOn.deploymentFields !== null ? `at ${import_chalk.chalkStderr.blue.underline(`https://dashboard.convex.dev/dp/${deploymentSelection.deploymentToActOn.deploymentFields.deploymentName}/settings#preview-deploy-keys`)}` : "on the dashboard";
125
+ const source = deploymentSelection.kind === "deploymentWithinProject" && deploymentSelection.targetProject.kind === "deploymentName" ? `at ${import_chalk.chalkStderr.blue.underline(`${import_dashboard.DASHBOARD_HOST}/dp/${deploymentSelection.targetProject.deploymentName}/settings#preview-deploy-keys`)}` : deploymentSelection.kind === "existingDeployment" && deploymentSelection.deploymentToActOn.deploymentFields !== null ? `at ${import_chalk.chalkStderr.blue.underline(`${import_dashboard.DASHBOARD_HOST}/dp/${deploymentSelection.deploymentToActOn.deploymentFields.deploymentName}/settings#preview-deploy-keys`)}` : "on the dashboard";
125
126
  await ctx.crash({
126
127
  exitCode: 1,
127
128
  errorType: "fatal",
@@ -202,6 +203,7 @@ async function deployToNewPreviewDeployment(ctx, deploymentSelection, options) {
202
203
  codegen: options.codegen === "enable",
203
204
  url: previewUrl,
204
205
  liveComponentSources: false,
206
+ pushAllModules: !!options.pushAllModules,
205
207
  largeIndexDeletionCheck: "no verification"
206
208
  // fine for preview deployments
207
209
  };
@@ -285,7 +287,7 @@ Your ${import_chalk.chalkStderr.bold(deployment.requestedType)} deployment ${imp
285
287
  deployment.requestedName
286
288
  )} serves traffic at:
287
289
 
288
- ${(await (0, import_envvars.suggestedEnvVarName)(ctx)).envVar}=${import_chalk.chalkStderr.bold(prodUrl)}
290
+ ${(await (0, import_envvars.suggestedEnvVarNames)(ctx)).convexUrlEnvVar}=${import_chalk.chalkStderr.bold(prodUrl)}
289
291
 
290
292
  Make sure that your published client is configured with this URL (for instructions see https://docs.convex.dev/hosting)
291
293
  `
@@ -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 {\n deploymentSelectionWithinProjectFromOptions,\n loadSelectedDeploymentCredentials,\n} from \"./lib/api.js\";\nimport {\n gitBranchFromEnvironment,\n isNonProdBuildEnvironment,\n suggestedEnvVarName,\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\";\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(\"--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(`https://dashboard.convex.dev/dp/${deploymentSelection.targetProject.deploymentName}/settings#preview-deploy-keys`)}`\n : deploymentSelection.kind === \"existingDeployment\" &&\n deploymentSelection.deploymentToActOn.deploymentFields !== null\n ? `at ${chalkStderr.blue.underline(`https://dashboard.convex.dev/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 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\n debug?: boolean | undefined;\n debugBundlePath?: string | 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 url: \"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 =\n previewUrl.match(/https:\\/\\/([^.]+)\\.convex\\.cloud/)?.[1] ?? null;\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) {\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 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\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 allowDeletingLargeIndexes: boolean;\n },\n) {\n const selectionWithinProject = deploymentSelectionWithinProjectFromOptions({\n ...options,\n implicitProd: true,\n });\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const deploymentToActOn = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n selectionWithinProject,\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,\n ),\n ...(isCloudDeployment\n ? [\n usageStateWarning(ctx, deploymentFields.deploymentName),\n checkVersion(),\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 suggestedEnvVarName(ctx)).envVar}=${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 {\n deploymentSelectionWithinProjectFromOptions,\n loadSelectedDeploymentCredentials,\n} 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\";\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(\"--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 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 },\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 url: \"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 =\n previewUrl.match(/https:\\/\\/([^.]+)\\.convex\\.cloud/)?.[1] ?? null;\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) {\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 allowDeletingLargeIndexes: boolean;\n },\n) {\n const selectionWithinProject = deploymentSelectionWithinProjectFromOptions({\n ...options,\n implicitProd: true,\n });\n const deploymentSelection = await getDeploymentSelection(ctx, options);\n const deploymentToActOn = await loadSelectedDeploymentCredentials(\n ctx,\n deploymentSelection,\n selectionWithinProject,\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,\n ),\n ...(isCloudDeployment\n ? [\n usageStateWarning(ctx, deploymentFields.deploymentName),\n checkVersion(),\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
  }
@@ -46,6 +46,11 @@ const dev = new import_extra_typings.Command("dev").summary("Develop against a d
46
46
  false
47
47
  ).addOption(
48
48
  new import_extra_typings.Option("--codegen <mode>", "Regenerate code in `convex/_generated/`").choices(["enable", "disable"]).default("enable")
49
+ ).addOption(
50
+ new import_extra_typings.Option(
51
+ "--push-all-modules",
52
+ "Push all modules without checking for unchanged module hashes from the server"
53
+ ).default(false).hideHelp()
49
54
  ).option(
50
55
  "--once",
51
56
  "Execute only the first 3 steps, stop on any failure",