convex 1.42.2 → 1.43.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/bin/main-dev +6 -1
  3. package/dist/browser.bundle.js +49 -10
  4. package/dist/browser.bundle.js.map +2 -2
  5. package/dist/cjs/browser/index.js.map +2 -2
  6. package/dist/cjs/browser/simple_client-node.js +35 -35
  7. package/dist/cjs/browser/simple_client-node.js.map +2 -2
  8. package/dist/cjs/browser/sync/client.js.map +1 -1
  9. package/dist/cjs/browser/sync/paginated_query_client.js +20 -9
  10. package/dist/cjs/browser/sync/paginated_query_client.js.map +2 -2
  11. package/dist/cjs/cli/codegen_templates/component_api.js +2 -2
  12. package/dist/cjs/cli/codegen_templates/component_api.js.map +2 -2
  13. package/dist/cjs/cli/codegen_templates/validator_helpers.js +2 -0
  14. package/dist/cjs/cli/codegen_templates/validator_helpers.js.map +2 -2
  15. package/dist/cjs/cli/deployment.js +2 -1
  16. package/dist/cjs/cli/deployment.js.map +2 -2
  17. package/dist/cjs/cli/deploymentCreate.js.map +2 -2
  18. package/dist/cjs/cli/generatedApi.js.map +1 -1
  19. package/dist/cjs/cli/lib/deployApi/validator.js +1 -0
  20. package/dist/cjs/cli/lib/deployApi/validator.js.map +2 -2
  21. package/dist/cjs/cli/lib/deploymentSelection.js.map +2 -2
  22. package/dist/cjs/cli/lib/generateDocs.js +1 -1
  23. package/dist/cjs/cli/lib/generateDocs.js.map +2 -2
  24. package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
  25. package/dist/cjs/cli/lib/localDeployment/projectMismatch.js.map +2 -2
  26. package/dist/cjs/cli/lib/login.js +23 -23
  27. package/dist/cjs/cli/lib/login.js.map +2 -2
  28. package/dist/cjs/cli/lib/typecheck.js +28 -25
  29. package/dist/cjs/cli/lib/typecheck.js.map +2 -2
  30. package/dist/cjs/cli/lib/usageLimits.js +164 -0
  31. package/dist/cjs/cli/lib/usageLimits.js.map +7 -0
  32. package/dist/cjs/cli/usageLimits.js +326 -0
  33. package/dist/cjs/cli/usageLimits.js.map +7 -0
  34. package/dist/cjs/index.js +1 -1
  35. package/dist/cjs/index.js.map +1 -1
  36. package/dist/cjs/react/client.js.map +2 -2
  37. package/dist/cjs/server/components/index.js.map +2 -2
  38. package/dist/cjs/server/cron.js +33 -29
  39. package/dist/cjs/server/cron.js.map +2 -2
  40. package/dist/cjs/server/database.js.map +1 -1
  41. package/dist/cjs/server/impl/database_impl.js +3 -0
  42. package/dist/cjs/server/impl/database_impl.js.map +2 -2
  43. package/dist/cjs/server/log.js +2 -1
  44. package/dist/cjs/server/log.js.map +2 -2
  45. package/dist/cjs/server/logVars.js +12 -1
  46. package/dist/cjs/server/logVars.js.map +2 -2
  47. package/dist/cjs/server/meta.js.map +1 -1
  48. package/dist/cjs/values/compare.js +5 -1
  49. package/dist/cjs/values/compare.js.map +2 -2
  50. package/dist/cjs/values/index.js +1 -0
  51. package/dist/cjs/values/index.js.map +2 -2
  52. package/dist/cjs/values/size.js +4 -0
  53. package/dist/cjs/values/size.js.map +2 -2
  54. package/dist/cjs/values/validator.js +11 -0
  55. package/dist/cjs/values/validator.js.map +2 -2
  56. package/dist/cjs/values/validators.js +20 -0
  57. package/dist/cjs/values/validators.js.map +2 -2
  58. package/dist/cjs/values/value.js +31 -0
  59. package/dist/cjs/values/value.js.map +2 -2
  60. package/dist/cjs-types/browser/index.d.ts.map +1 -1
  61. package/dist/cjs-types/browser/sync/paginated_query_client.d.ts +1 -38
  62. package/dist/cjs-types/browser/sync/paginated_query_client.d.ts.map +1 -1
  63. package/dist/cjs-types/cli/codegen_templates/component_api.d.ts.map +1 -1
  64. package/dist/cjs-types/cli/codegen_templates/validator_helpers.d.ts.map +1 -1
  65. package/dist/cjs-types/cli/codegen_templates/validator_helpers.test.d.ts +2 -0
  66. package/dist/cjs-types/cli/codegen_templates/validator_helpers.test.d.ts.map +1 -0
  67. package/dist/cjs-types/cli/deployment.d.ts.map +1 -1
  68. package/dist/cjs-types/cli/deploymentCreate.d.ts +2 -2
  69. package/dist/cjs-types/cli/generatedApi.d.ts +43 -43
  70. package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
  71. package/dist/cjs-types/cli/lib/deployApi/validator.d.ts +6 -0
  72. package/dist/cjs-types/cli/lib/deployApi/validator.d.ts.map +1 -1
  73. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts +2 -2
  74. package/dist/cjs-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  75. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +45 -45
  76. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  77. package/dist/cjs-types/cli/lib/localDeployment/projectMismatch.d.ts +2 -2
  78. package/dist/cjs-types/cli/lib/localDeployment/projectMismatch.d.ts.map +1 -1
  79. package/dist/cjs-types/cli/lib/login.d.ts.map +1 -1
  80. package/dist/cjs-types/cli/lib/mcp/tools/insights.d.ts +24 -24
  81. package/dist/cjs-types/cli/lib/typecheck.d.ts +2 -0
  82. package/dist/cjs-types/cli/lib/typecheck.d.ts.map +1 -1
  83. package/dist/cjs-types/cli/lib/typecheck.test.d.ts +2 -0
  84. package/dist/cjs-types/cli/lib/typecheck.test.d.ts.map +1 -0
  85. package/dist/cjs-types/cli/lib/usageLimits.d.ts +46 -0
  86. package/dist/cjs-types/cli/lib/usageLimits.d.ts.map +1 -0
  87. package/dist/cjs-types/cli/usageLimits.d.ts +22 -0
  88. package/dist/cjs-types/cli/usageLimits.d.ts.map +1 -0
  89. package/dist/cjs-types/index.d.ts +1 -1
  90. package/dist/cjs-types/index.d.ts.map +1 -1
  91. package/dist/cjs-types/react/client.d.ts.map +1 -1
  92. package/dist/cjs-types/server/components/index.d.ts +26 -8
  93. package/dist/cjs-types/server/components/index.d.ts.map +1 -1
  94. package/dist/cjs-types/server/cron.d.ts +20 -11
  95. package/dist/cjs-types/server/cron.d.ts.map +1 -1
  96. package/dist/cjs-types/server/cron.test.d.ts +2 -0
  97. package/dist/cjs-types/server/cron.test.d.ts.map +1 -0
  98. package/dist/cjs-types/server/database.d.ts.map +1 -1
  99. package/dist/cjs-types/server/impl/database_impl.d.ts.map +1 -1
  100. package/dist/cjs-types/server/log.d.ts.map +1 -1
  101. package/dist/cjs-types/server/logVars.d.ts +14 -1
  102. package/dist/cjs-types/server/logVars.d.ts.map +1 -1
  103. package/dist/cjs-types/server/meta.d.ts +2 -2
  104. package/dist/cjs-types/server/meta.d.ts.map +1 -1
  105. package/dist/cjs-types/values/compare.d.ts.map +1 -1
  106. package/dist/cjs-types/values/index.d.ts +2 -2
  107. package/dist/cjs-types/values/index.d.ts.map +1 -1
  108. package/dist/cjs-types/values/size.d.ts +1 -1
  109. package/dist/cjs-types/values/size.d.ts.map +1 -1
  110. package/dist/cjs-types/values/validator.d.ts +10 -1
  111. package/dist/cjs-types/values/validator.d.ts.map +1 -1
  112. package/dist/cjs-types/values/validators.d.ts +14 -3
  113. package/dist/cjs-types/values/validators.d.ts.map +1 -1
  114. package/dist/cjs-types/values/value.d.ts +18 -1
  115. package/dist/cjs-types/values/value.d.ts.map +1 -1
  116. package/dist/cli.bundle.cjs +2327 -1866
  117. package/dist/cli.bundle.cjs.map +4 -4
  118. package/dist/esm/browser/index.js.map +2 -2
  119. package/dist/esm/browser/simple_client-node.js +35 -35
  120. package/dist/esm/browser/simple_client-node.js.map +1 -1
  121. package/dist/esm/browser/sync/client.js.map +1 -1
  122. package/dist/esm/browser/sync/paginated_query_client.js +20 -9
  123. package/dist/esm/browser/sync/paginated_query_client.js.map +2 -2
  124. package/dist/esm/cli/codegen_templates/component_api.js +8 -3
  125. package/dist/esm/cli/codegen_templates/component_api.js.map +2 -2
  126. package/dist/esm/cli/codegen_templates/validator_helpers.js +2 -0
  127. package/dist/esm/cli/codegen_templates/validator_helpers.js.map +2 -2
  128. package/dist/esm/cli/deployment.js +2 -1
  129. package/dist/esm/cli/deployment.js.map +2 -2
  130. package/dist/esm/cli/deploymentCreate.js.map +2 -2
  131. package/dist/esm/cli/lib/deployApi/validator.js +1 -0
  132. package/dist/esm/cli/lib/deployApi/validator.js.map +2 -2
  133. package/dist/esm/cli/lib/deploymentSelection.js.map +2 -2
  134. package/dist/esm/cli/lib/generateDocs.js +1 -1
  135. package/dist/esm/cli/lib/generateDocs.js.map +2 -2
  136. package/dist/esm/cli/lib/localDeployment/projectMismatch.js.map +2 -2
  137. package/dist/esm/cli/lib/login.js +23 -23
  138. package/dist/esm/cli/lib/login.js.map +2 -2
  139. package/dist/esm/cli/lib/typecheck.js +27 -25
  140. package/dist/esm/cli/lib/typecheck.js.map +2 -2
  141. package/dist/esm/cli/lib/usageLimits.js +129 -0
  142. package/dist/esm/cli/lib/usageLimits.js.map +7 -0
  143. package/dist/esm/cli/usageLimits.js +316 -0
  144. package/dist/esm/cli/usageLimits.js.map +7 -0
  145. package/dist/esm/index.js +1 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/react/client.js.map +2 -2
  148. package/dist/esm/server/components/index.js.map +2 -2
  149. package/dist/esm/server/cron.js +33 -29
  150. package/dist/esm/server/cron.js.map +2 -2
  151. package/dist/esm/server/impl/database_impl.js +4 -1
  152. package/dist/esm/server/impl/database_impl.js.map +2 -2
  153. package/dist/esm/server/log.js +3 -2
  154. package/dist/esm/server/log.js.map +2 -2
  155. package/dist/esm/server/logVars.js +11 -1
  156. package/dist/esm/server/logVars.js.map +2 -2
  157. package/dist/esm/values/compare.js +5 -1
  158. package/dist/esm/values/compare.js.map +2 -2
  159. package/dist/esm/values/index.js +1 -1
  160. package/dist/esm/values/index.js.map +2 -2
  161. package/dist/esm/values/size.js +4 -0
  162. package/dist/esm/values/size.js.map +2 -2
  163. package/dist/esm/values/validator.js +12 -0
  164. package/dist/esm/values/validator.js.map +2 -2
  165. package/dist/esm/values/validators.js +19 -0
  166. package/dist/esm/values/validators.js.map +2 -2
  167. package/dist/esm/values/value.js +29 -1
  168. package/dist/esm/values/value.js.map +2 -2
  169. package/dist/esm-types/browser/index.d.ts.map +1 -1
  170. package/dist/esm-types/browser/sync/paginated_query_client.d.ts +1 -38
  171. package/dist/esm-types/browser/sync/paginated_query_client.d.ts.map +1 -1
  172. package/dist/esm-types/cli/codegen_templates/component_api.d.ts.map +1 -1
  173. package/dist/esm-types/cli/codegen_templates/validator_helpers.d.ts.map +1 -1
  174. package/dist/esm-types/cli/codegen_templates/validator_helpers.test.d.ts +2 -0
  175. package/dist/esm-types/cli/codegen_templates/validator_helpers.test.d.ts.map +1 -0
  176. package/dist/esm-types/cli/deployment.d.ts.map +1 -1
  177. package/dist/esm-types/cli/deploymentCreate.d.ts +2 -2
  178. package/dist/esm-types/cli/generatedApi.d.ts +43 -43
  179. package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
  180. package/dist/esm-types/cli/lib/deployApi/validator.d.ts +6 -0
  181. package/dist/esm-types/cli/lib/deployApi/validator.d.ts.map +1 -1
  182. package/dist/esm-types/cli/lib/deploymentSelection.d.ts +2 -2
  183. package/dist/esm-types/cli/lib/deploymentSelection.d.ts.map +1 -1
  184. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +45 -45
  185. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  186. package/dist/esm-types/cli/lib/localDeployment/projectMismatch.d.ts +2 -2
  187. package/dist/esm-types/cli/lib/localDeployment/projectMismatch.d.ts.map +1 -1
  188. package/dist/esm-types/cli/lib/login.d.ts.map +1 -1
  189. package/dist/esm-types/cli/lib/mcp/tools/insights.d.ts +24 -24
  190. package/dist/esm-types/cli/lib/typecheck.d.ts +2 -0
  191. package/dist/esm-types/cli/lib/typecheck.d.ts.map +1 -1
  192. package/dist/esm-types/cli/lib/typecheck.test.d.ts +2 -0
  193. package/dist/esm-types/cli/lib/typecheck.test.d.ts.map +1 -0
  194. package/dist/esm-types/cli/lib/usageLimits.d.ts +46 -0
  195. package/dist/esm-types/cli/lib/usageLimits.d.ts.map +1 -0
  196. package/dist/esm-types/cli/usageLimits.d.ts +22 -0
  197. package/dist/esm-types/cli/usageLimits.d.ts.map +1 -0
  198. package/dist/esm-types/index.d.ts +1 -1
  199. package/dist/esm-types/index.d.ts.map +1 -1
  200. package/dist/esm-types/react/client.d.ts.map +1 -1
  201. package/dist/esm-types/server/components/index.d.ts +26 -8
  202. package/dist/esm-types/server/components/index.d.ts.map +1 -1
  203. package/dist/esm-types/server/cron.d.ts +20 -11
  204. package/dist/esm-types/server/cron.d.ts.map +1 -1
  205. package/dist/esm-types/server/cron.test.d.ts +2 -0
  206. package/dist/esm-types/server/cron.test.d.ts.map +1 -0
  207. package/dist/esm-types/server/database.d.ts.map +1 -1
  208. package/dist/esm-types/server/impl/database_impl.d.ts.map +1 -1
  209. package/dist/esm-types/server/log.d.ts.map +1 -1
  210. package/dist/esm-types/server/logVars.d.ts +14 -1
  211. package/dist/esm-types/server/logVars.d.ts.map +1 -1
  212. package/dist/esm-types/server/meta.d.ts +2 -2
  213. package/dist/esm-types/server/meta.d.ts.map +1 -1
  214. package/dist/esm-types/values/compare.d.ts.map +1 -1
  215. package/dist/esm-types/values/index.d.ts +2 -2
  216. package/dist/esm-types/values/index.d.ts.map +1 -1
  217. package/dist/esm-types/values/size.d.ts +1 -1
  218. package/dist/esm-types/values/size.d.ts.map +1 -1
  219. package/dist/esm-types/values/validator.d.ts +10 -1
  220. package/dist/esm-types/values/validator.d.ts.map +1 -1
  221. package/dist/esm-types/values/validators.d.ts +14 -3
  222. package/dist/esm-types/values/validators.d.ts.map +1 -1
  223. package/dist/esm-types/values/value.d.ts +18 -1
  224. package/dist/esm-types/values/value.d.ts.map +1 -1
  225. package/dist/react.bundle.js +53 -11
  226. package/dist/react.bundle.js.map +2 -2
  227. package/package.json +8 -8
  228. package/schemas/convex.schema.json +2 -1
  229. package/src/browser/index.ts +2 -0
  230. package/src/browser/sync/client.test.ts +8 -1
  231. package/src/browser/sync/client.ts +63 -0
  232. package/src/browser/sync/paginated_query_client.test.ts +209 -1
  233. package/src/browser/sync/paginated_query_client.ts +29 -11
  234. package/src/cli/codegen_templates/component_api.ts +8 -3
  235. package/src/cli/codegen_templates/validator_helpers.test.ts +31 -0
  236. package/src/cli/codegen_templates/validator_helpers.ts +6 -0
  237. package/src/cli/deployment.ts +4 -1
  238. package/src/cli/deploymentCreate.test.ts +2 -2
  239. package/src/cli/deploymentCreate.ts +2 -2
  240. package/src/cli/generatedApi.ts +43 -43
  241. package/src/cli/lib/deployApi/validator.ts +1 -0
  242. package/src/cli/lib/deploymentSelection.ts +2 -2
  243. package/src/cli/lib/generateDocs.test.ts +1 -1
  244. package/src/cli/lib/generateDocs.ts +3 -3
  245. package/src/cli/lib/generatedFunctionLogsApi.ts +45 -45
  246. package/src/cli/lib/localDeployment/projectMismatch.ts +2 -2
  247. package/src/cli/lib/login.ts +33 -30
  248. package/src/cli/lib/typecheck.test.ts +71 -0
  249. package/src/cli/lib/typecheck.ts +33 -27
  250. package/src/cli/lib/usageLimits.ts +242 -0
  251. package/src/cli/usageLimits.ts +420 -0
  252. package/src/index.ts +1 -1
  253. package/src/react/ConvexAuthState.test.tsx +24 -8
  254. package/src/react/auth_websocket.test.tsx +39 -29
  255. package/src/react/client.ts +3 -2
  256. package/src/react/client_provided_base_client.test.tsx +154 -36
  257. package/src/server/audit_logging.test.ts +2 -0
  258. package/src/server/components/index.test.ts +33 -1
  259. package/src/server/components/index.ts +41 -14
  260. package/src/server/cron.test.ts +58 -0
  261. package/src/server/cron.ts +82 -21
  262. package/src/server/database.ts +17 -0
  263. package/src/server/impl/database_impl.ts +4 -1
  264. package/src/server/log.ts +4 -1
  265. package/src/server/logVars.ts +17 -1
  266. package/src/server/meta.ts +2 -2
  267. package/src/server/schema.test.ts +6 -1
  268. package/src/values/compare.ts +5 -2
  269. package/src/values/index.ts +2 -1
  270. package/src/values/size.test.ts +5 -0
  271. package/src/values/size.ts +5 -1
  272. package/src/values/validator.test.ts +16 -1
  273. package/src/values/validator.ts +13 -0
  274. package/src/values/validators.ts +29 -1
  275. package/src/values/value.test.ts +35 -0
  276. package/src/values/value.ts +56 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cli/codegen_templates/validator_helpers.ts"],
4
- "sourcesContent": ["import { jsonToConvex, Value } from \"../../values/index.js\";\nimport { ConvexValidator } from \"../lib/deployApi/validator.js\";\n\nexport function parseValidator(\n validator: string | null,\n): ConvexValidator | null {\n if (!validator) {\n return null;\n }\n // This is code returned from the server, so we can skip validation\n return JSON.parse(validator) as ConvexValidator;\n}\n\nexport function validatorToType(\n validator: ConvexValidator,\n useIdType: boolean,\n): string {\n if (validator.type === \"null\") {\n return \"null\";\n } else if (validator.type === \"number\") {\n return \"number\";\n } else if (validator.type === \"bigint\") {\n return \"bigint\";\n } else if (validator.type === \"boolean\") {\n return \"boolean\";\n } else if (validator.type === \"string\") {\n return \"string\";\n } else if (validator.type === \"bytes\") {\n return \"ArrayBuffer\";\n } else if (validator.type === \"any\") {\n return \"any\";\n } else if (validator.type === \"literal\") {\n const convexValue = jsonToConvex(validator.value);\n return convexValueToLiteral(convexValue);\n } else if (validator.type === \"id\") {\n return useIdType ? `Id<\"${validator.tableName}\">` : \"string\";\n } else if (validator.type === \"array\") {\n return `Array<${validatorToType(validator.value, useIdType)}>`;\n } else if (validator.type === \"record\") {\n return `Record<${validatorToType(validator.keys, useIdType)}, ${validatorToType(validator.values.fieldType, useIdType)}>`;\n } else if (validator.type === \"union\") {\n return validator.value\n .map((v) => validatorToType(v, useIdType))\n .join(\" | \");\n } else if (validator.type === \"object\") {\n return objectValidatorToType(validator.value, useIdType);\n } else {\n // eslint-disable-next-line no-restricted-syntax\n throw new Error(`Unsupported validator type`);\n }\n}\n\nfunction objectValidatorToType(\n fields: Record<string, { fieldType: ConvexValidator; optional: boolean }>,\n useIdType: boolean,\n): string {\n const fieldStrings: string[] = [];\n for (const [fieldName, field] of Object.entries(fields)) {\n const fieldType = validatorToType(field.fieldType, useIdType);\n fieldStrings.push(`${fieldName}${field.optional ? \"?\" : \"\"}: ${fieldType}`);\n }\n return `{ ${fieldStrings.join(\", \")} }`;\n}\n\nfunction convexValueToLiteral(value: Value): string {\n if (value === null) {\n return \"null\";\n }\n if (typeof value === \"bigint\") {\n return `${value}n`;\n }\n if (typeof value === \"number\") {\n return `${value}`;\n }\n if (typeof value === \"boolean\") {\n return `${value}`;\n }\n if (typeof value === \"string\") {\n return `\"${value}\"`;\n }\n // eslint-disable-next-line no-restricted-syntax\n throw new Error(`Unsupported literal type`);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoC;AAG7B,SAAS,eACd,WACwB;AACxB,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,SAAS;AAC7B;AAEO,SAAS,gBACd,WACA,WACQ;AACR,MAAI,UAAU,SAAS,QAAQ;AAC7B,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,WAAW;AACvC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,SAAS;AACrC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,OAAO;AACnC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,WAAW;AACvC,UAAM,kBAAc,4BAAa,UAAU,KAAK;AAChD,WAAO,qBAAqB,WAAW;AAAA,EACzC,WAAW,UAAU,SAAS,MAAM;AAClC,WAAO,YAAY,OAAO,UAAU,SAAS,OAAO;AAAA,EACtD,WAAW,UAAU,SAAS,SAAS;AACrC,WAAO,SAAS,gBAAgB,UAAU,OAAO,SAAS,CAAC;AAAA,EAC7D,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO,UAAU,gBAAgB,UAAU,MAAM,SAAS,CAAC,KAAK,gBAAgB,UAAU,OAAO,WAAW,SAAS,CAAC;AAAA,EACxH,WAAW,UAAU,SAAS,SAAS;AACrC,WAAO,UAAU,MACd,IAAI,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC,EACxC,KAAK,KAAK;AAAA,EACf,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO,sBAAsB,UAAU,OAAO,SAAS;AAAA,EACzD,OAAO;AAEL,UAAM,IAAI,MAAM,4BAA4B;AAAA,EAC9C;AACF;AAEA,SAAS,sBACP,QACA,WACQ;AACR,QAAM,eAAyB,CAAC;AAChC,aAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACvD,UAAM,YAAY,gBAAgB,MAAM,WAAW,SAAS;AAC5D,iBAAa,KAAK,GAAG,SAAS,GAAG,MAAM,WAAW,MAAM,EAAE,KAAK,SAAS,EAAE;AAAA,EAC5E;AACA,SAAO,KAAK,aAAa,KAAK,IAAI,CAAC;AACrC;AAEA,SAAS,qBAAqB,OAAsB;AAClD,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,MAAI,OAAO,UAAU,WAAW;AAC9B,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,IAAI,KAAK;AAAA,EAClB;AAEA,QAAM,IAAI,MAAM,0BAA0B;AAC5C;",
4
+ "sourcesContent": ["import { jsonToConvex, Value } from \"../../values/index.js\";\nimport { ConvexValidator } from \"../lib/deployApi/validator.js\";\n\nexport function parseValidator(\n validator: string | null,\n): ConvexValidator | null {\n if (!validator) {\n return null;\n }\n // This is code returned from the server, so we can skip validation\n return JSON.parse(validator) as ConvexValidator;\n}\n\nexport function validatorToType(\n validator: ConvexValidator,\n useIdType: boolean,\n): string {\n if (validator.type === \"null\") {\n return \"null\";\n } else if (validator.type === \"number\") {\n return \"number\";\n } else if (validator.type === \"bigint\") {\n return \"bigint\";\n } else if (validator.type === \"commitTs\") {\n // Match `Infer<v.commitTs()>`: the field holds a bigint once committed,\n // but writes go through `db.vars.commitTs` (a `CommitTsPlaceholder`) and\n // same-mutation read-backs yield the placeholder. The inline import keeps\n // this valid in every generated file regardless of its header imports.\n return 'bigint | import(\"convex/values\").CommitTsPlaceholder';\n } else if (validator.type === \"boolean\") {\n return \"boolean\";\n } else if (validator.type === \"string\") {\n return \"string\";\n } else if (validator.type === \"bytes\") {\n return \"ArrayBuffer\";\n } else if (validator.type === \"any\") {\n return \"any\";\n } else if (validator.type === \"literal\") {\n const convexValue = jsonToConvex(validator.value);\n return convexValueToLiteral(convexValue);\n } else if (validator.type === \"id\") {\n return useIdType ? `Id<\"${validator.tableName}\">` : \"string\";\n } else if (validator.type === \"array\") {\n return `Array<${validatorToType(validator.value, useIdType)}>`;\n } else if (validator.type === \"record\") {\n return `Record<${validatorToType(validator.keys, useIdType)}, ${validatorToType(validator.values.fieldType, useIdType)}>`;\n } else if (validator.type === \"union\") {\n return validator.value\n .map((v) => validatorToType(v, useIdType))\n .join(\" | \");\n } else if (validator.type === \"object\") {\n return objectValidatorToType(validator.value, useIdType);\n } else {\n // eslint-disable-next-line no-restricted-syntax\n throw new Error(`Unsupported validator type`);\n }\n}\n\nfunction objectValidatorToType(\n fields: Record<string, { fieldType: ConvexValidator; optional: boolean }>,\n useIdType: boolean,\n): string {\n const fieldStrings: string[] = [];\n for (const [fieldName, field] of Object.entries(fields)) {\n const fieldType = validatorToType(field.fieldType, useIdType);\n fieldStrings.push(`${fieldName}${field.optional ? \"?\" : \"\"}: ${fieldType}`);\n }\n return `{ ${fieldStrings.join(\", \")} }`;\n}\n\nfunction convexValueToLiteral(value: Value): string {\n if (value === null) {\n return \"null\";\n }\n if (typeof value === \"bigint\") {\n return `${value}n`;\n }\n if (typeof value === \"number\") {\n return `${value}`;\n }\n if (typeof value === \"boolean\") {\n return `${value}`;\n }\n if (typeof value === \"string\") {\n return `\"${value}\"`;\n }\n // eslint-disable-next-line no-restricted-syntax\n throw new Error(`Unsupported literal type`);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoC;AAG7B,SAAS,eACd,WACwB;AACxB,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,SAAS;AAC7B;AAEO,SAAS,gBACd,WACA,WACQ;AACR,MAAI,UAAU,SAAS,QAAQ;AAC7B,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,YAAY;AAKxC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,WAAW;AACvC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,SAAS;AACrC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,OAAO;AACnC,WAAO;AAAA,EACT,WAAW,UAAU,SAAS,WAAW;AACvC,UAAM,kBAAc,4BAAa,UAAU,KAAK;AAChD,WAAO,qBAAqB,WAAW;AAAA,EACzC,WAAW,UAAU,SAAS,MAAM;AAClC,WAAO,YAAY,OAAO,UAAU,SAAS,OAAO;AAAA,EACtD,WAAW,UAAU,SAAS,SAAS;AACrC,WAAO,SAAS,gBAAgB,UAAU,OAAO,SAAS,CAAC;AAAA,EAC7D,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO,UAAU,gBAAgB,UAAU,MAAM,SAAS,CAAC,KAAK,gBAAgB,UAAU,OAAO,WAAW,SAAS,CAAC;AAAA,EACxH,WAAW,UAAU,SAAS,SAAS;AACrC,WAAO,UAAU,MACd,IAAI,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC,EACxC,KAAK,KAAK;AAAA,EACf,WAAW,UAAU,SAAS,UAAU;AACtC,WAAO,sBAAsB,UAAU,OAAO,SAAS;AAAA,EACzD,OAAO;AAEL,UAAM,IAAI,MAAM,4BAA4B;AAAA,EAC9C;AACF;AAEA,SAAS,sBACP,QACA,WACQ;AACR,QAAM,eAAyB,CAAC;AAChC,aAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACvD,UAAM,YAAY,gBAAgB,MAAM,WAAW,SAAS;AAC5D,iBAAa,KAAK,GAAG,SAAS,GAAG,MAAM,WAAW,MAAM,EAAE,KAAK,SAAS,EAAE;AAAA,EAC5E;AACA,SAAO,KAAK,aAAa,KAAK,IAAI,CAAC;AACrC;AAEA,SAAS,qBAAqB,OAAsB;AAClD,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,MAAI,OAAO,UAAU,WAAW;AAC9B,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,IAAI,KAAK;AAAA,EAClB;AAEA,QAAM,IAAI,MAAM,0BAA0B;AAC5C;",
6
6
  "names": []
7
7
  }
@@ -25,5 +25,6 @@ var import_extra_typings = require("@commander-js/extra-typings");
25
25
  var import_deploymentSelect = require("./deploymentSelect.js");
26
26
  var import_deploymentCreate = require("./deploymentCreate.js");
27
27
  var import_deploymentToken = require("./deploymentToken.js");
28
- const deployment = new import_extra_typings.Command("deployment").summary("Manage deployments").description("Manage deployments in your project.").addCommand(import_deploymentSelect.deploymentSelect).addCommand(import_deploymentCreate.deploymentCreate).addCommand(import_deploymentToken.deploymentToken);
28
+ var import_usageLimits = require("./usageLimits.js");
29
+ const deployment = new import_extra_typings.Command("deployment").summary("Manage deployments").description("Manage deployments in your project.").addCommand(import_deploymentSelect.deploymentSelect).addCommand(import_deploymentCreate.deploymentCreate).addCommand(import_deploymentToken.deploymentToken).addCommand(import_usageLimits.usage).addCommand(import_usageLimits.usageLimits);
29
30
  //# sourceMappingURL=deployment.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/deployment.ts"],
4
- "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { deploymentSelect } from \"./deploymentSelect.js\";\nimport { deploymentCreate } from \"./deploymentCreate.js\";\nimport { deploymentToken } from \"./deploymentToken.js\";\n\nexport const deployment = new Command(\"deployment\")\n .summary(\"Manage deployments\")\n .description(\"Manage deployments in your project.\")\n .addCommand(deploymentSelect)\n .addCommand(deploymentCreate)\n .addCommand(deploymentToken);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAwB;AACxB,8BAAiC;AACjC,8BAAiC;AACjC,6BAAgC;AAEzB,MAAM,aAAa,IAAI,6BAAQ,YAAY,EAC/C,QAAQ,oBAAoB,EAC5B,YAAY,qCAAqC,EACjD,WAAW,wCAAgB,EAC3B,WAAW,wCAAgB,EAC3B,WAAW,sCAAe;",
4
+ "sourcesContent": ["import { Command } from \"@commander-js/extra-typings\";\nimport { deploymentSelect } from \"./deploymentSelect.js\";\nimport { deploymentCreate } from \"./deploymentCreate.js\";\nimport { deploymentToken } from \"./deploymentToken.js\";\nimport { usage, usageLimits } from \"./usageLimits.js\";\n\nexport const deployment = new Command(\"deployment\")\n .summary(\"Manage deployments\")\n .description(\"Manage deployments in your project.\")\n .addCommand(deploymentSelect)\n .addCommand(deploymentCreate)\n .addCommand(deploymentToken)\n .addCommand(usage)\n .addCommand(usageLimits);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAwB;AACxB,8BAAiC;AACjC,8BAAiC;AACjC,6BAAgC;AAChC,yBAAmC;AAE5B,MAAM,aAAa,IAAI,6BAAQ,YAAY,EAC/C,QAAQ,oBAAoB,EAC5B,YAAY,qCAAqC,EACjD,WAAW,wCAAgB,EAC3B,WAAW,wCAAgB,EAC3B,WAAW,sCAAe,EAC1B,WAAW,wBAAK,EAChB,WAAW,8BAAW;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/deploymentCreate.ts"],
4
- "sourcesContent": ["import { execSync } from \"child_process\";\nimport { Command, Option } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport {\n logFailure,\n logFinishedStep,\n logMessage,\n showSpinner,\n} from \"../bundler/log.js\";\nimport {\n DeploymentSelection,\n ensureAuthCanCreateDeployment,\n getDeploymentSelection,\n getProjectDetails,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\nimport {\n logNoDefaultRegionMessage,\n selectRegion,\n typedBigBrainClient,\n typedPlatformClient,\n} from \"./lib/utils/utils.js\";\nimport { PlatformProjectDetails } from \"@convex-dev/platform/managementApi\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./lib/deployment.js\";\nimport { saveSelectedDeployment } from \"./deploymentSelect.js\";\nimport { promptOptions, promptString } from \"./lib/utils/prompts.js\";\nimport { chalkStderr } from \"chalk\";\nimport { parseDeploymentSelector } from \"./lib/deploymentSelector.js\";\nimport {\n parseExpiration,\n resolveExpiration,\n validateExpiration,\n} from \"./lib/expiration.js\";\nimport { ensureBackendBinaryDownloaded } from \"./lib/localDeployment/download.js\";\nimport {\n loadProjectLocalConfig,\n saveDeploymentConfig,\n} from \"./lib/localDeployment/filePaths.js\";\nimport { chooseLocalBackendPorts } from \"./lib/localDeployment/utils.js\";\nimport { bigBrainStart } from \"./lib/localDeployment/bigBrain.js\";\nimport { importDefaultEnvVars } from \"./lib/localDeployment/localDeployment.js\";\nimport { localDeploymentUrl } from \"./lib/localDeployment/run.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport { generateLocalDevSecrets } from \"./lib/localDeployment/secrets.js\";\n\nconst SUPPORTED_TYPES = [\"dev\", \"prod\", \"preview\"] as const;\n\nexport const deploymentCreate = new Command(\"create\")\n .summary(\"Create a new deployment for a project\")\n .description(\n [\n \"Create a new deployment for a project.\",\n \"\",\n \"\u2022 Create a dev deployment and select it: `npx convex deployment create dev/my-new-feature --type dev --select`\",\n \"\u2022 Create a prod deployment named \u201Cstaging\u201D: `npx convex deployment create staging --type prod`\",\n ].join(\"\\n\"),\n )\n .argument(\n \"[reference]\",\n \"The reference for the new deployment, e.g. `staging` or `dev/my-feature`. \\n\" +\n \"Use `local` to create a local deployment. \\n\" +\n \"You can specify a team and project with `team-slug:project-slug:ref` (e.g. `my-team:my-project:staging` or `my-team:my-project:local`). \\n\" +\n \"Can be omitted when using `--default`.\",\n )\n .allowExcessArguments(false)\n .addOption(\n new Option(\"--type <type>\", \"Deployment type\").choices(SUPPORTED_TYPES),\n )\n .option(\"--region <region>\", \"Deployment region\")\n .addOption(new Option(\"--class <class>\", \"Deployment class\").hideHelp())\n .option(\n \"--select\",\n \"Select the new deployment. This will update the Convex environment variables in .env.local. Subsequent `npx convex` commands will run against this deployment.\",\n )\n .option(\n \"--default\",\n \"Make the new deployment your default production deployment (used by `npx convex deploy`) or your personal dev deployment.\",\n )\n .option(\n \"--expiration <value>\",\n 'When the deployment expires (e.g. \"none\", \"in 7 days\", \"2026-04-01T00:00:00Z\", or a UNIX timestamp in seconds or milliseconds)',\n )\n .addOption(new Option(\"--expiry <value>\").hideHelp())\n .addOption(new Option(\"--expires <value>\").hideHelp())\n .action(async (refParam, options) => {\n const expiration = options.expiration ?? options.expiry ?? options.expires;\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n // Creating a deployment goes through the platform API, which accepts\n // personal access tokens and project keys but not deployment/preview deploy\n // keys. Fail fast (and clearly) for the unsupported keys rather than\n // surfacing an opaque 401 from the lookup below.\n await ensureAuthCanCreateDeployment(ctx);\n\n const currentDeployment = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n // Handle `deployment create [team:project:]local`\n if (refParam !== undefined) {\n const localTarget = parseLocalCreateTarget(refParam);\n if (localTarget !== null) {\n const cloudOnlyFlags = [\"type\", \"region\", \"class\", \"default\"] as const;\n for (const flag of cloudOnlyFlags) {\n if (options[flag]) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `--${flag} cannot be used when creating a local deployment`,\n });\n }\n }\n if (expiration !== undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `--expiration cannot be used when creating a local deployment`,\n });\n }\n if (localTarget.kind === \"needsTeam\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Please use `team:project:local` to specify the team when creating a local deployment in a different project.\",\n });\n }\n await createLocalDeployment(\n ctx,\n currentDeployment,\n options.select ?? false,\n localTarget.kind === \"inTeamProject\"\n ? {\n teamSlug: localTarget.teamSlug,\n projectSlug: localTarget.projectSlug,\n }\n : null,\n );\n return;\n }\n }\n\n const expiresAt = await resolveExpiresAtOrCrash(ctx, expiration);\n\n const {\n ref,\n regionDetails,\n classDetails,\n projectId,\n type,\n isDefault,\n teamSlug,\n projectSlug,\n } = process.stdin.isTTY\n ? await resolveOptionsInteractively(\n ctx,\n currentDeployment,\n refParam,\n options,\n )\n : await resolveOptionsNoninteractively(\n ctx,\n currentDeployment,\n refParam,\n options,\n );\n\n showSpinner(\n `Creating ${type} deployment` +\n (regionDetails ? ` in region ${regionDetails.displayName}` : \"\") +\n (classDetails ? ` with class ${classDetails.type}` : \"\") +\n \"...\",\n );\n\n const created = (\n await typedPlatformClient(ctx).POST(\n \"/projects/{project_id}/create_deployment\",\n {\n params: {\n path: { project_id: projectId },\n },\n body: {\n type,\n region: regionDetails?.name ?? null,\n reference: ref ?? null,\n isDefault,\n ...(expiresAt !== undefined ? { expiresAt } : {}),\n ...(classDetails ? { class: classDetails.type } : {}),\n },\n },\n )\n ).data!;\n\n if (created.kind !== \"cloud\") {\n // This should be impossible\n const err = `Expected cloud deployment to be created but got ${created.kind}`;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: err,\n errForSentry: err,\n });\n }\n\n logFinishedStep(\n options.select\n ? `Created and selected new ${created.deploymentType} deployment:`\n : `Created new ${created.isDefault ? \"default \" : \"\"}${created.deploymentType} deployment:`,\n );\n announceDeploymentTarget(null, {\n url: created.deploymentUrl,\n deploymentFields: {\n deploymentName: created.name,\n deploymentType: created.deploymentType,\n teamSlug,\n projectSlug,\n reference: created.reference,\n isDefault: created.isDefault,\n },\n });\n\n if (!options.select) {\n if (type !== \"prod\") {\n const selectRef = `${teamSlug}:${projectSlug}:${created.reference}`;\n logMessage(\n `\\nTo make \\`npx convex\\` use this deployment, run ${chalkStderr.bold(`npx convex deployment select ${selectRef}`)}`,\n );\n logMessage(\n chalkStderr.gray(\n \"Hint: use `--select` to immediately select the newly created deployment.\",\n ),\n );\n }\n } else {\n const selection: DeploymentSelection = {\n kind: \"deploymentWithinProject\",\n targetProject: {\n kind: \"teamAndProjectSlugs\",\n teamSlug,\n projectSlug,\n },\n selectionWithinProject: {\n kind: \"deploymentSelector\",\n selector: created.reference,\n },\n };\n await saveSelectedDeployment(\n ctx,\n created.reference,\n selection,\n deploymentNameFromSelection(currentDeployment),\n );\n }\n });\n\nexport async function createLocalDeployment(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n select: boolean,\n baseDeployment: { teamSlug: string; projectSlug: string } | null,\n): Promise<void> {\n const existing = loadProjectLocalConfig(ctx);\n if (existing) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"A local deployment already exists.\",\n });\n }\n\n const {\n teamSlug,\n slug: projectSlug,\n id: cloudProjectId,\n } = baseDeployment\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: baseDeployment.teamSlug,\n projectSlug: baseDeployment.projectSlug,\n })\n : await resolveProject(ctx, currentDeployment);\n\n showSpinner(\"Downloading local backend...\");\n const { version, binaryPath: latestBinaryPath } =\n await ensureBackendBinaryDownloaded(ctx, {\n kind: \"latest\",\n });\n\n const { cloudPort, sitePort } = await chooseLocalBackendPorts(ctx);\n\n showSpinner(\"Registering local deployment...\");\n const { deploymentName } = await bigBrainStart(ctx, {\n port: cloudPort,\n projectSlug,\n teamSlug,\n instanceName: null,\n });\n const { instanceSecret, adminKey } = await generateLocalDevSecrets(ctx, {\n deploymentName,\n latestBinaryPath,\n });\n\n saveDeploymentConfig(ctx, \"local\", deploymentName, {\n backendVersion: version,\n ports: { cloud: cloudPort, site: sitePort },\n adminKey,\n instanceSecret,\n cloudProjectId,\n });\n\n logFinishedStep(\n select\n ? \"Created and selected local deployment:\"\n : \"Created local deployment:\",\n );\n\n announceDeploymentTarget(null, {\n url: `http://127.0.0.1:${cloudPort}`,\n deploymentFields: {\n deploymentName,\n deploymentType: \"local\",\n teamSlug,\n projectSlug,\n reference: null,\n isDefault: false,\n },\n });\n\n await importDefaultEnvVars(ctx, {\n teamSlug,\n projectSlug,\n deploymentName,\n deploymentUrl: localDeploymentUrl(cloudPort),\n adminKey,\n });\n\n if (select) {\n const selection: DeploymentSelection = {\n kind: \"deploymentWithinProject\",\n targetProject: {\n kind: \"deploymentName\",\n deploymentName,\n deploymentType: \"local\",\n },\n selectionWithinProject: {\n kind: \"deploymentSelector\",\n selector: \"local\",\n },\n };\n await saveSelectedDeployment(\n ctx,\n \"local\",\n selection,\n deploymentNameFromSelection(currentDeployment),\n );\n }\n\n const devCommand = \"npx convex dev\";\n if (select) {\n logMessage(`\\nRun ${chalkStderr.bold(devCommand)} to start it.`);\n } else {\n logMessage(\n `\\nTo use this deployment, run:\\n` +\n chalkStderr.bold(` npx convex deployment select local\\n`) +\n ` Then, run ${chalkStderr.bold(devCommand)} to start it.`,\n );\n }\n}\n\ntype RefParam = Parameters<Parameters<typeof deploymentCreate.action>[0]>[0];\ntype OptionsParam = Parameters<\n Parameters<typeof deploymentCreate.action>[0]\n>[1];\n\nasync function resolveOptionsNoninteractively(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n refParam: RefParam,\n options: OptionsParam,\n) {\n let ref: string | undefined;\n let teamAndProject: { teamSlug: string; projectSlug: string } | undefined;\n if (refParam) {\n const result = parseSelectorForNewDeployment(refParam);\n if (result.kind === \"invalid\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: result.message,\n });\n }\n ref = result.ref;\n teamAndProject = result.teamAndProject;\n }\n\n if (!ref && !options.default) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Specify a deployment ref or use --default:\\n\" +\n \" `npx convex deployment create my-deployment-ref --type dev`\\n\" +\n \" `npx convex deployment create --type prod --default`\",\n });\n }\n\n if (!options.type) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `--type is required (supported values: ${SUPPORTED_TYPES.join(\", \")})`,\n });\n }\n\n const project = teamAndProject\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProject.teamSlug,\n projectSlug: teamAndProject.projectSlug,\n })\n : await resolveProject(ctx, currentDeployment);\n const projectId = project.id;\n\n // If no region is passed in, the team's default region will be used\n let regionDetails: AvailableRegion | null = null;\n if (options.region) {\n const availableRegions = await fetchAvailableRegions(ctx, project.teamId);\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n options.region,\n );\n }\n\n // If no class is passed in, the team's default class will be used\n let classDetails: AvailableClass | null = null;\n if (options.class) {\n const availableClasses = await fetchAvailableClasses(ctx, project.teamId);\n classDetails = await resolveClassDetailsOrCrash(\n ctx,\n availableClasses,\n options.class,\n );\n }\n\n return {\n ref,\n isDefault: options.default ?? null,\n projectId,\n regionDetails,\n classDetails,\n type: options.type,\n teamSlug: project.teamSlug,\n projectSlug: project.slug,\n };\n}\n\nasync function resolveOptionsInteractively(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n refParam: RefParam,\n options: OptionsParam,\n) {\n let deploymentType: \"dev\" | \"prod\" | \"preview\";\n if (options.type) {\n deploymentType = logAndUse(\"type\", options.type);\n } else {\n const dtypeChoices = [\n {\n name: \"dev\",\n value: \"dev\" as const,\n },\n {\n name: \"preview\",\n value: \"preview\" as const,\n },\n {\n name: \"prod\",\n value: \"prod\" as const,\n },\n ];\n deploymentType = await promptOptions(ctx, {\n message: \"Deployment type?\",\n choices: dtypeChoices,\n });\n }\n\n let ref: string | undefined;\n let teamAndProject: { teamSlug: string; projectSlug: string } | undefined;\n if (refParam) {\n const result = parseSelectorForNewDeployment(refParam);\n if (result.kind === \"invalid\") {\n logFailure(result.message);\n } else {\n ref = logAndUse(\"ref\", result.ref);\n teamAndProject = result.teamAndProject;\n }\n }\n while (ref === undefined) {\n const gitDefault = defaultRef(localGitBranch(), deploymentType);\n const input = await promptString(ctx, {\n message:\n \"What do you want to call this deployment?\\n\" +\n chalkStderr.reset.dim(\n \"The deployment reference will be used to identify your deployment on the dashboard and in CLI commands.\\nExamples: staging, dev/james/feature\",\n ) +\n \"\\n>\",\n ...(gitDefault !== undefined ? { default: gitDefault } : {}),\n validate: validateTentativeReference,\n });\n const result = parseSelectorForNewDeployment(input);\n if (result.kind === \"invalid\") {\n logFailure(result.message);\n continue;\n }\n ref = result.ref;\n teamAndProject = result.teamAndProject;\n }\n\n const project = teamAndProject\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProject.teamSlug,\n projectSlug: teamAndProject.projectSlug,\n })\n : await resolveProject(ctx, currentDeployment);\n\n const availableRegions = await fetchAvailableRegions(ctx, project.teamId);\n let regionDetails: AvailableRegion;\n if (options.region) {\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n options.region,\n );\n logAndUse(\"region\", regionDetails.displayName);\n } else {\n // Use the team's default region if set, or prompt the user to pick\n // TODO: this duplicates some of the logic in selectRegionOrUseDefault (npm-packages/convex/src/cli/lib/utils/utils.ts)\n const teams = (await typedBigBrainClient(ctx).GET(\"/teams\")).data!;\n const team = teams.find((team) => team.slug === project.teamSlug);\n if (!team) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Error: Team ${project.teamSlug} not found.`,\n });\n }\n const regionName =\n team.defaultRegion ?? (await selectRegion(ctx, team.id, deploymentType));\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n regionName,\n );\n if (team.defaultRegion) {\n logFinishedStep(\n `Using team default region of ${regionDetails.displayName}`,\n );\n } else {\n await logNoDefaultRegionMessage(team.slug);\n }\n }\n\n let classDetails: AvailableClass | null = null;\n if (options.class) {\n const availableClasses = await fetchAvailableClasses(ctx, project.teamId);\n classDetails = await resolveClassDetailsOrCrash(\n ctx,\n availableClasses,\n options.class,\n );\n logAndUse(\"class\", classDetails.type);\n }\n\n return {\n ref,\n isDefault: options.default ?? null,\n projectId: project.id,\n regionDetails,\n classDetails,\n type: deploymentType,\n teamSlug: project.teamSlug,\n projectSlug: project.slug,\n };\n}\n\ntype NewDeploymentSelectorResult =\n | {\n kind: \"valid\";\n ref: string;\n teamAndProject?: { teamSlug: string; projectSlug: string };\n }\n | { kind: \"invalid\"; message: string };\n\nfunction parseSelectorForNewDeployment(\n selectorString: string,\n): NewDeploymentSelectorResult {\n const selector = parseDeploymentSelector(selectorString);\n switch (selector.kind) {\n case \"deploymentName\":\n return {\n kind: \"invalid\",\n message: `\"${selector.deploymentName}\" is not a valid deployment reference. References can't look like \"word-word-123\" \u2014 that format is reserved for automatically-generated deployment names.`,\n };\n case \"inCurrentProject\": {\n const inner = selector.selector;\n if (inner.kind === \"dev\") {\n return {\n kind: \"invalid\",\n message: `\"dev\" is reserved as an alias for your default dev deployment.`,\n };\n }\n if (inner.kind === \"prod\") {\n return {\n kind: \"invalid\",\n message: `\"prod\" is reserved as an alias for your default production deployment.`,\n };\n }\n if (inner.kind === \"local\") {\n return {\n kind: \"invalid\",\n message: `\"local\" is reserved as an alias for your local deployment. To create one, run ${chalkStderr.bold(\"npx convex deployment create local\")}`,\n };\n }\n return { kind: \"valid\", ref: inner.reference };\n }\n case \"inProject\": {\n return {\n kind: \"invalid\",\n message: `Please use \"team:project:ref\" to specify the team when creating a new deployment in a different project.`,\n };\n }\n case \"inTeamProject\": {\n const inner = selector.selector;\n if (inner.kind === \"dev\") {\n return {\n kind: \"invalid\",\n message: `\"dev\" is reserved as an alias for your default dev deployment.`,\n };\n }\n if (inner.kind === \"prod\") {\n return {\n kind: \"invalid\",\n message: `\"prod\" is reserved as an alias for your default production deployment.`,\n };\n }\n if (inner.kind === \"local\") {\n return {\n kind: \"invalid\",\n message: `\"local\" is reserved as an alias for your local deployment. To create one, run ${chalkStderr.bold(`npx convex deployment create ${selector.teamSlug}:${selector.projectSlug}:local`)}`,\n };\n }\n return {\n kind: \"valid\",\n ref: inner.reference,\n teamAndProject: {\n teamSlug: selector.teamSlug,\n projectSlug: selector.projectSlug,\n },\n };\n }\n default:\n selector satisfies never;\n return {\n kind: \"invalid\",\n message: \"Unknown state. This is a bug in Convex.\",\n };\n }\n}\n\n/**\n * Detect whether the user is creating a local deployment.\n * Returns:\n * - `null` if `refParam` is not a local-deployment selector\n * - `inCurrentProject` for plain `local`\n * - `needsTeam` for `project:local` (which we reject \u2014 same rule as cloud)\n * - `inTeamProject` for `team:project:local`\n */\nfunction parseLocalCreateTarget(\n refParam: string,\n):\n | null\n | { kind: \"inCurrentProject\" }\n | { kind: \"needsTeam\" }\n | { kind: \"inTeamProject\"; teamSlug: string; projectSlug: string } {\n const parsed = parseDeploymentSelector(refParam);\n if (parsed.kind === \"inCurrentProject\" && parsed.selector.kind === \"local\") {\n return { kind: \"inCurrentProject\" };\n }\n if (parsed.kind === \"inProject\" && parsed.selector.kind === \"local\") {\n return { kind: \"needsTeam\" };\n }\n if (parsed.kind === \"inTeamProject\" && parsed.selector.kind === \"local\") {\n return {\n kind: \"inTeamProject\",\n teamSlug: parsed.teamSlug,\n projectSlug: parsed.projectSlug,\n };\n }\n return null;\n}\n\nasync function resolveProject(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n): Promise<PlatformProjectDetails> {\n switch (deploymentSelection.kind) {\n case \"existingDeployment\": {\n const { deploymentFields } = deploymentSelection.deploymentToActOn;\n if (deploymentFields) {\n return await getProjectDetails(ctx, {\n kind: \"deploymentName\",\n deploymentName: deploymentFields.deploymentName,\n deploymentType: null,\n });\n }\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Cannot infer project from the current deployment configuration. Use `team:project:ref` to specify team and project slugs.\",\n });\n }\n case \"deploymentWithinProject\": {\n return await getProjectDetails(ctx, deploymentSelection.targetProject);\n }\n case \"preview\": {\n const slugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n return await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: slugs.teamSlug,\n projectSlug: slugs.projectSlug,\n });\n }\n case \"chooseProject\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"No project configured yet. Use `team:project:ref` to specify team and project slugs.\",\n });\n case \"anonymous\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Cannot create a deployment in anonymous mode. \" +\n \"Run `npx convex login` and configure a project first.\",\n });\n default: {\n deploymentSelection satisfies never;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Unexpected deployment selection kind.`,\n });\n }\n }\n}\n\nconst REGION_NAME_TO_ALIAS: Record<string, string> = {\n \"aws-us-east-1\": \"us\",\n \"aws-eu-west-1\": \"eu\",\n};\n\nconst REGION_ALIAS_TO_NAME = Object.fromEntries(\n Object.entries(REGION_NAME_TO_ALIAS).map(([name, alias]) => [alias, name]),\n);\n\nexport async function fetchAvailableRegions(ctx: Context, teamId: number) {\n const regionsResponse = (\n await typedPlatformClient(ctx).GET(\n \"/teams/{team_id}/list_deployment_regions\",\n {\n params: {\n path: { team_id: `${teamId}` },\n },\n },\n )\n ).data!;\n return regionsResponse.items.filter((item) => item.available);\n}\n\ntype AvailableRegion = Awaited<\n ReturnType<typeof fetchAvailableRegions>\n>[number];\n\nexport function resolveRegionDetails(\n availableRegions: AvailableRegion[],\n region: string,\n) {\n const resolvedRegion = REGION_ALIAS_TO_NAME[region] ?? region;\n return availableRegions.find((item) => item.name === resolvedRegion) ?? null;\n}\n\nasync function resolveRegionDetailsOrCrash(\n ctx: Context,\n availableRegions: AvailableRegion[],\n region: string,\n) {\n const regionDetails = resolveRegionDetails(availableRegions, region);\n if (!regionDetails) {\n return await crashInvalidRegion(ctx, availableRegions, region);\n }\n return regionDetails;\n}\n\nfunction invalidRegionMessage(\n availableRegions: AvailableRegion[],\n region: string,\n): string {\n const formatted = availableRegions\n .map(\n (item) =>\n ` Use \\`--region ${REGION_NAME_TO_ALIAS[item.name] ?? item.name}\\` for ${item.displayName}`,\n )\n .join(\"\\n\");\n return `Invalid region \"${region}\".\\n\\n` + formatted;\n}\n\nasync function crashInvalidRegion(\n ctx: Context,\n availableRegions: AvailableRegion[],\n region: string,\n): Promise<never> {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: invalidRegionMessage(availableRegions, region),\n });\n}\n\nexport async function fetchAvailableClasses(ctx: Context, teamId: number) {\n const classesResponse = (\n await typedPlatformClient(ctx).GET(\n \"/teams/{team_id}/list_deployment_classes\",\n {\n params: {\n path: { team_id: `${teamId}` },\n },\n },\n )\n ).data!;\n return classesResponse.items.filter((item) => item.available);\n}\n\ntype AvailableClass = Awaited<ReturnType<typeof fetchAvailableClasses>>[number];\n\nexport function resolveClassDetails(\n availableClasses: AvailableClass[],\n className: string,\n) {\n return availableClasses.find((item) => item.type === className) ?? null;\n}\n\nasync function resolveClassDetailsOrCrash(\n ctx: Context,\n availableClasses: AvailableClass[],\n className: string,\n) {\n const classDetails = resolveClassDetails(availableClasses, className);\n if (!classDetails) {\n return await crashInvalidClass(ctx, availableClasses, className);\n }\n return classDetails;\n}\n\nfunction invalidClassMessage(\n availableClasses: AvailableClass[],\n className: string,\n): string {\n const formatted = availableClasses\n .map((item) => ` \\`--class ${item.type}\\``)\n .join(\"\\n\");\n return `Invalid class \"${className}\".\\n\\nAvailable classes:\\n` + formatted;\n}\n\nasync function crashInvalidClass(\n ctx: Context,\n availableClasses: AvailableClass[],\n className: string,\n): Promise<never> {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: invalidClassMessage(availableClasses, className),\n });\n}\n\nasync function resolveExpiresAtOrCrash(\n ctx: Context,\n expiration: string | undefined,\n): Promise<number | null | undefined> {\n if (!expiration) {\n return undefined;\n }\n const parsed = parseExpiration(expiration);\n if (parsed.kind === \"error\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: parsed.message,\n });\n }\n const now = Date.now();\n const resolved = resolveExpiration(parsed, now);\n if (resolved !== null) {\n const validation = validateExpiration(resolved, now);\n if (validation.kind === \"error\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: validation.message,\n });\n }\n }\n return resolved;\n}\n\n/**\n * Helper to log a value passed in as a CLI argument in the interactive flow.\n */\nfunction logAndUse<T extends string | boolean>(label: string, value: T): T {\n logFinishedStep(`Using ${label}: ${chalkStderr.bold(value)}`);\n return value;\n}\n\n// This is an oversimplification, it\u2019s fine if it fails later\nfunction validateTentativeReference(tentativeReference: string): true | string {\n if (tentativeReference.length < 3) {\n return \"References must be at least 3 characters\";\n }\n if (tentativeReference.length > 100) {\n return \"References must be at most 100 characters\";\n }\n if (!/^[a-z0-9/-]+$/.test(tentativeReference)) {\n return \"References can only contain lowercase letters, numbers, `-`, and `/`\";\n }\n if (tentativeReference === \"dev\") {\n return '\"dev\" is reserved as an alias for your default dev deployment.';\n }\n if (tentativeReference === \"prod\") {\n return '\"prod\" is reserved as an alias for your default production deployment.';\n }\n if (tentativeReference === \"local\") {\n return `\"local\" is reserved as an alias for your local deployment. To create one, run ${chalkStderr.bold(\"npx convex deployment create local\")}`;\n }\n if (/^[a-z]+-[a-z]+-\\d+$/.test(tentativeReference)) {\n return 'References can\\'t look like \"word-word-123\" \u2014 that format is reserved for automatically-generated deployment names. Try something like dev/my-feature or staging instead.';\n }\n\n return true;\n}\n\n/**\n * Get the current local git branch name by shelling out to git.\n * Returns null if git is unavailable, the repo is in detached HEAD state,\n * or the branch is main/master.\n */\nfunction localGitBranch(): string | null {\n try {\n const branch = (\n execSync(\"git rev-parse --abbrev-ref HEAD\", {\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n timeout: 5000,\n }) as Buffer\n )\n .toString()\n .trim();\n if (\n !branch ||\n branch === \"HEAD\" ||\n branch === \"main\" ||\n branch === \"master\"\n ) {\n return null;\n }\n return branch;\n } catch {\n return null;\n }\n}\n\n/**\n * Slugify a git branch name into a valid deployment reference.\n * Returns undefined if the result would fail validation.\n */\nfunction defaultRef(\n branch: string | null,\n deploymentType: \"dev\" | \"prod\" | \"preview\",\n): string | undefined {\n if (deploymentType !== \"dev\" && deploymentType !== \"preview\") {\n return undefined;\n }\n if (!branch) return undefined;\n const slug = branch\n .replace(/[^a-z0-9/-]/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n if (!slug) return undefined;\n const ref = `${deploymentType}/${slug}`;\n const valid = validateTentativeReference(ref);\n if (valid !== true) return undefined;\n return ref;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { execSync } from \"child_process\";\nimport { Command, Option } from \"@commander-js/extra-typings\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport {\n logFailure,\n logFinishedStep,\n logMessage,\n showSpinner,\n} from \"../bundler/log.js\";\nimport {\n DeploymentSelection,\n ensureAuthCanCreateDeployment,\n getDeploymentSelection,\n getProjectDetails,\n deploymentNameFromSelection,\n} from \"./lib/deploymentSelection.js\";\nimport {\n logNoDefaultRegionMessage,\n selectRegion,\n typedBigBrainClient,\n typedPlatformClient,\n} from \"./lib/utils/utils.js\";\nimport { ProjectResponse } from \"@convex-dev/platform/managementApi\";\nimport { getTeamAndProjectFromPreviewAdminKey } from \"./lib/deployment.js\";\nimport { saveSelectedDeployment } from \"./deploymentSelect.js\";\nimport { promptOptions, promptString } from \"./lib/utils/prompts.js\";\nimport { chalkStderr } from \"chalk\";\nimport { parseDeploymentSelector } from \"./lib/deploymentSelector.js\";\nimport {\n parseExpiration,\n resolveExpiration,\n validateExpiration,\n} from \"./lib/expiration.js\";\nimport { ensureBackendBinaryDownloaded } from \"./lib/localDeployment/download.js\";\nimport {\n loadProjectLocalConfig,\n saveDeploymentConfig,\n} from \"./lib/localDeployment/filePaths.js\";\nimport { chooseLocalBackendPorts } from \"./lib/localDeployment/utils.js\";\nimport { bigBrainStart } from \"./lib/localDeployment/bigBrain.js\";\nimport { importDefaultEnvVars } from \"./lib/localDeployment/localDeployment.js\";\nimport { localDeploymentUrl } from \"./lib/localDeployment/run.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport { generateLocalDevSecrets } from \"./lib/localDeployment/secrets.js\";\n\nconst SUPPORTED_TYPES = [\"dev\", \"prod\", \"preview\"] as const;\n\nexport const deploymentCreate = new Command(\"create\")\n .summary(\"Create a new deployment for a project\")\n .description(\n [\n \"Create a new deployment for a project.\",\n \"\",\n \"\u2022 Create a dev deployment and select it: `npx convex deployment create dev/my-new-feature --type dev --select`\",\n \"\u2022 Create a prod deployment named \u201Cstaging\u201D: `npx convex deployment create staging --type prod`\",\n ].join(\"\\n\"),\n )\n .argument(\n \"[reference]\",\n \"The reference for the new deployment, e.g. `staging` or `dev/my-feature`. \\n\" +\n \"Use `local` to create a local deployment. \\n\" +\n \"You can specify a team and project with `team-slug:project-slug:ref` (e.g. `my-team:my-project:staging` or `my-team:my-project:local`). \\n\" +\n \"Can be omitted when using `--default`.\",\n )\n .allowExcessArguments(false)\n .addOption(\n new Option(\"--type <type>\", \"Deployment type\").choices(SUPPORTED_TYPES),\n )\n .option(\"--region <region>\", \"Deployment region\")\n .addOption(new Option(\"--class <class>\", \"Deployment class\").hideHelp())\n .option(\n \"--select\",\n \"Select the new deployment. This will update the Convex environment variables in .env.local. Subsequent `npx convex` commands will run against this deployment.\",\n )\n .option(\n \"--default\",\n \"Make the new deployment your default production deployment (used by `npx convex deploy`) or your personal dev deployment.\",\n )\n .option(\n \"--expiration <value>\",\n 'When the deployment expires (e.g. \"none\", \"in 7 days\", \"2026-04-01T00:00:00Z\", or a UNIX timestamp in seconds or milliseconds)',\n )\n .addOption(new Option(\"--expiry <value>\").hideHelp())\n .addOption(new Option(\"--expires <value>\").hideHelp())\n .action(async (refParam, options) => {\n const expiration = options.expiration ?? options.expiry ?? options.expires;\n const ctx = await oneoffContext({\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n // Creating a deployment goes through the platform API, which accepts\n // personal access tokens and project keys but not deployment/preview deploy\n // keys. Fail fast (and clearly) for the unsupported keys rather than\n // surfacing an opaque 401 from the lookup below.\n await ensureAuthCanCreateDeployment(ctx);\n\n const currentDeployment = await getDeploymentSelection(ctx, {\n url: undefined,\n adminKey: undefined,\n envFile: undefined,\n });\n\n // Handle `deployment create [team:project:]local`\n if (refParam !== undefined) {\n const localTarget = parseLocalCreateTarget(refParam);\n if (localTarget !== null) {\n const cloudOnlyFlags = [\"type\", \"region\", \"class\", \"default\"] as const;\n for (const flag of cloudOnlyFlags) {\n if (options[flag]) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `--${flag} cannot be used when creating a local deployment`,\n });\n }\n }\n if (expiration !== undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `--expiration cannot be used when creating a local deployment`,\n });\n }\n if (localTarget.kind === \"needsTeam\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Please use `team:project:local` to specify the team when creating a local deployment in a different project.\",\n });\n }\n await createLocalDeployment(\n ctx,\n currentDeployment,\n options.select ?? false,\n localTarget.kind === \"inTeamProject\"\n ? {\n teamSlug: localTarget.teamSlug,\n projectSlug: localTarget.projectSlug,\n }\n : null,\n );\n return;\n }\n }\n\n const expiresAt = await resolveExpiresAtOrCrash(ctx, expiration);\n\n const {\n ref,\n regionDetails,\n classDetails,\n projectId,\n type,\n isDefault,\n teamSlug,\n projectSlug,\n } = process.stdin.isTTY\n ? await resolveOptionsInteractively(\n ctx,\n currentDeployment,\n refParam,\n options,\n )\n : await resolveOptionsNoninteractively(\n ctx,\n currentDeployment,\n refParam,\n options,\n );\n\n showSpinner(\n `Creating ${type} deployment` +\n (regionDetails ? ` in region ${regionDetails.displayName}` : \"\") +\n (classDetails ? ` with class ${classDetails.type}` : \"\") +\n \"...\",\n );\n\n const created = (\n await typedPlatformClient(ctx).POST(\n \"/projects/{project_id}/create_deployment\",\n {\n params: {\n path: { project_id: projectId },\n },\n body: {\n type,\n region: regionDetails?.name ?? null,\n reference: ref ?? null,\n isDefault,\n ...(expiresAt !== undefined ? { expiresAt } : {}),\n ...(classDetails ? { class: classDetails.type } : {}),\n },\n },\n )\n ).data!;\n\n if (created.kind !== \"cloud\") {\n // This should be impossible\n const err = `Expected cloud deployment to be created but got ${created.kind}`;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: err,\n errForSentry: err,\n });\n }\n\n logFinishedStep(\n options.select\n ? `Created and selected new ${created.deploymentType} deployment:`\n : `Created new ${created.isDefault ? \"default \" : \"\"}${created.deploymentType} deployment:`,\n );\n announceDeploymentTarget(null, {\n url: created.deploymentUrl,\n deploymentFields: {\n deploymentName: created.name,\n deploymentType: created.deploymentType,\n teamSlug,\n projectSlug,\n reference: created.reference,\n isDefault: created.isDefault,\n },\n });\n\n if (!options.select) {\n if (type !== \"prod\") {\n const selectRef = `${teamSlug}:${projectSlug}:${created.reference}`;\n logMessage(\n `\\nTo make \\`npx convex\\` use this deployment, run ${chalkStderr.bold(`npx convex deployment select ${selectRef}`)}`,\n );\n logMessage(\n chalkStderr.gray(\n \"Hint: use `--select` to immediately select the newly created deployment.\",\n ),\n );\n }\n } else {\n const selection: DeploymentSelection = {\n kind: \"deploymentWithinProject\",\n targetProject: {\n kind: \"teamAndProjectSlugs\",\n teamSlug,\n projectSlug,\n },\n selectionWithinProject: {\n kind: \"deploymentSelector\",\n selector: created.reference,\n },\n };\n await saveSelectedDeployment(\n ctx,\n created.reference,\n selection,\n deploymentNameFromSelection(currentDeployment),\n );\n }\n });\n\nexport async function createLocalDeployment(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n select: boolean,\n baseDeployment: { teamSlug: string; projectSlug: string } | null,\n): Promise<void> {\n const existing = loadProjectLocalConfig(ctx);\n if (existing) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"A local deployment already exists.\",\n });\n }\n\n const {\n teamSlug,\n slug: projectSlug,\n id: cloudProjectId,\n } = baseDeployment\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: baseDeployment.teamSlug,\n projectSlug: baseDeployment.projectSlug,\n })\n : await resolveProject(ctx, currentDeployment);\n\n showSpinner(\"Downloading local backend...\");\n const { version, binaryPath: latestBinaryPath } =\n await ensureBackendBinaryDownloaded(ctx, {\n kind: \"latest\",\n });\n\n const { cloudPort, sitePort } = await chooseLocalBackendPorts(ctx);\n\n showSpinner(\"Registering local deployment...\");\n const { deploymentName } = await bigBrainStart(ctx, {\n port: cloudPort,\n projectSlug,\n teamSlug,\n instanceName: null,\n });\n const { instanceSecret, adminKey } = await generateLocalDevSecrets(ctx, {\n deploymentName,\n latestBinaryPath,\n });\n\n saveDeploymentConfig(ctx, \"local\", deploymentName, {\n backendVersion: version,\n ports: { cloud: cloudPort, site: sitePort },\n adminKey,\n instanceSecret,\n cloudProjectId,\n });\n\n logFinishedStep(\n select\n ? \"Created and selected local deployment:\"\n : \"Created local deployment:\",\n );\n\n announceDeploymentTarget(null, {\n url: `http://127.0.0.1:${cloudPort}`,\n deploymentFields: {\n deploymentName,\n deploymentType: \"local\",\n teamSlug,\n projectSlug,\n reference: null,\n isDefault: false,\n },\n });\n\n await importDefaultEnvVars(ctx, {\n teamSlug,\n projectSlug,\n deploymentName,\n deploymentUrl: localDeploymentUrl(cloudPort),\n adminKey,\n });\n\n if (select) {\n const selection: DeploymentSelection = {\n kind: \"deploymentWithinProject\",\n targetProject: {\n kind: \"deploymentName\",\n deploymentName,\n deploymentType: \"local\",\n },\n selectionWithinProject: {\n kind: \"deploymentSelector\",\n selector: \"local\",\n },\n };\n await saveSelectedDeployment(\n ctx,\n \"local\",\n selection,\n deploymentNameFromSelection(currentDeployment),\n );\n }\n\n const devCommand = \"npx convex dev\";\n if (select) {\n logMessage(`\\nRun ${chalkStderr.bold(devCommand)} to start it.`);\n } else {\n logMessage(\n `\\nTo use this deployment, run:\\n` +\n chalkStderr.bold(` npx convex deployment select local\\n`) +\n ` Then, run ${chalkStderr.bold(devCommand)} to start it.`,\n );\n }\n}\n\ntype RefParam = Parameters<Parameters<typeof deploymentCreate.action>[0]>[0];\ntype OptionsParam = Parameters<\n Parameters<typeof deploymentCreate.action>[0]\n>[1];\n\nasync function resolveOptionsNoninteractively(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n refParam: RefParam,\n options: OptionsParam,\n) {\n let ref: string | undefined;\n let teamAndProject: { teamSlug: string; projectSlug: string } | undefined;\n if (refParam) {\n const result = parseSelectorForNewDeployment(refParam);\n if (result.kind === \"invalid\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: result.message,\n });\n }\n ref = result.ref;\n teamAndProject = result.teamAndProject;\n }\n\n if (!ref && !options.default) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Specify a deployment ref or use --default:\\n\" +\n \" `npx convex deployment create my-deployment-ref --type dev`\\n\" +\n \" `npx convex deployment create --type prod --default`\",\n });\n }\n\n if (!options.type) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `--type is required (supported values: ${SUPPORTED_TYPES.join(\", \")})`,\n });\n }\n\n const project = teamAndProject\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProject.teamSlug,\n projectSlug: teamAndProject.projectSlug,\n })\n : await resolveProject(ctx, currentDeployment);\n const projectId = project.id;\n\n // If no region is passed in, the team's default region will be used\n let regionDetails: AvailableRegion | null = null;\n if (options.region) {\n const availableRegions = await fetchAvailableRegions(ctx, project.teamId);\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n options.region,\n );\n }\n\n // If no class is passed in, the team's default class will be used\n let classDetails: AvailableClass | null = null;\n if (options.class) {\n const availableClasses = await fetchAvailableClasses(ctx, project.teamId);\n classDetails = await resolveClassDetailsOrCrash(\n ctx,\n availableClasses,\n options.class,\n );\n }\n\n return {\n ref,\n isDefault: options.default ?? null,\n projectId,\n regionDetails,\n classDetails,\n type: options.type,\n teamSlug: project.teamSlug,\n projectSlug: project.slug,\n };\n}\n\nasync function resolveOptionsInteractively(\n ctx: Context,\n currentDeployment: DeploymentSelection,\n refParam: RefParam,\n options: OptionsParam,\n) {\n let deploymentType: \"dev\" | \"prod\" | \"preview\";\n if (options.type) {\n deploymentType = logAndUse(\"type\", options.type);\n } else {\n const dtypeChoices = [\n {\n name: \"dev\",\n value: \"dev\" as const,\n },\n {\n name: \"preview\",\n value: \"preview\" as const,\n },\n {\n name: \"prod\",\n value: \"prod\" as const,\n },\n ];\n deploymentType = await promptOptions(ctx, {\n message: \"Deployment type?\",\n choices: dtypeChoices,\n });\n }\n\n let ref: string | undefined;\n let teamAndProject: { teamSlug: string; projectSlug: string } | undefined;\n if (refParam) {\n const result = parseSelectorForNewDeployment(refParam);\n if (result.kind === \"invalid\") {\n logFailure(result.message);\n } else {\n ref = logAndUse(\"ref\", result.ref);\n teamAndProject = result.teamAndProject;\n }\n }\n while (ref === undefined) {\n const gitDefault = defaultRef(localGitBranch(), deploymentType);\n const input = await promptString(ctx, {\n message:\n \"What do you want to call this deployment?\\n\" +\n chalkStderr.reset.dim(\n \"The deployment reference will be used to identify your deployment on the dashboard and in CLI commands.\\nExamples: staging, dev/james/feature\",\n ) +\n \"\\n>\",\n ...(gitDefault !== undefined ? { default: gitDefault } : {}),\n validate: validateTentativeReference,\n });\n const result = parseSelectorForNewDeployment(input);\n if (result.kind === \"invalid\") {\n logFailure(result.message);\n continue;\n }\n ref = result.ref;\n teamAndProject = result.teamAndProject;\n }\n\n const project = teamAndProject\n ? await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: teamAndProject.teamSlug,\n projectSlug: teamAndProject.projectSlug,\n })\n : await resolveProject(ctx, currentDeployment);\n\n const availableRegions = await fetchAvailableRegions(ctx, project.teamId);\n let regionDetails: AvailableRegion;\n if (options.region) {\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n options.region,\n );\n logAndUse(\"region\", regionDetails.displayName);\n } else {\n // Use the team's default region if set, or prompt the user to pick\n // TODO: this duplicates some of the logic in selectRegionOrUseDefault (npm-packages/convex/src/cli/lib/utils/utils.ts)\n const teams = (await typedBigBrainClient(ctx).GET(\"/teams\")).data!;\n const team = teams.find((team) => team.slug === project.teamSlug);\n if (!team) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Error: Team ${project.teamSlug} not found.`,\n });\n }\n const regionName =\n team.defaultRegion ?? (await selectRegion(ctx, team.id, deploymentType));\n regionDetails = await resolveRegionDetailsOrCrash(\n ctx,\n availableRegions,\n regionName,\n );\n if (team.defaultRegion) {\n logFinishedStep(\n `Using team default region of ${regionDetails.displayName}`,\n );\n } else {\n await logNoDefaultRegionMessage(team.slug);\n }\n }\n\n let classDetails: AvailableClass | null = null;\n if (options.class) {\n const availableClasses = await fetchAvailableClasses(ctx, project.teamId);\n classDetails = await resolveClassDetailsOrCrash(\n ctx,\n availableClasses,\n options.class,\n );\n logAndUse(\"class\", classDetails.type);\n }\n\n return {\n ref,\n isDefault: options.default ?? null,\n projectId: project.id,\n regionDetails,\n classDetails,\n type: deploymentType,\n teamSlug: project.teamSlug,\n projectSlug: project.slug,\n };\n}\n\ntype NewDeploymentSelectorResult =\n | {\n kind: \"valid\";\n ref: string;\n teamAndProject?: { teamSlug: string; projectSlug: string };\n }\n | { kind: \"invalid\"; message: string };\n\nfunction parseSelectorForNewDeployment(\n selectorString: string,\n): NewDeploymentSelectorResult {\n const selector = parseDeploymentSelector(selectorString);\n switch (selector.kind) {\n case \"deploymentName\":\n return {\n kind: \"invalid\",\n message: `\"${selector.deploymentName}\" is not a valid deployment reference. References can't look like \"word-word-123\" \u2014 that format is reserved for automatically-generated deployment names.`,\n };\n case \"inCurrentProject\": {\n const inner = selector.selector;\n if (inner.kind === \"dev\") {\n return {\n kind: \"invalid\",\n message: `\"dev\" is reserved as an alias for your default dev deployment.`,\n };\n }\n if (inner.kind === \"prod\") {\n return {\n kind: \"invalid\",\n message: `\"prod\" is reserved as an alias for your default production deployment.`,\n };\n }\n if (inner.kind === \"local\") {\n return {\n kind: \"invalid\",\n message: `\"local\" is reserved as an alias for your local deployment. To create one, run ${chalkStderr.bold(\"npx convex deployment create local\")}`,\n };\n }\n return { kind: \"valid\", ref: inner.reference };\n }\n case \"inProject\": {\n return {\n kind: \"invalid\",\n message: `Please use \"team:project:ref\" to specify the team when creating a new deployment in a different project.`,\n };\n }\n case \"inTeamProject\": {\n const inner = selector.selector;\n if (inner.kind === \"dev\") {\n return {\n kind: \"invalid\",\n message: `\"dev\" is reserved as an alias for your default dev deployment.`,\n };\n }\n if (inner.kind === \"prod\") {\n return {\n kind: \"invalid\",\n message: `\"prod\" is reserved as an alias for your default production deployment.`,\n };\n }\n if (inner.kind === \"local\") {\n return {\n kind: \"invalid\",\n message: `\"local\" is reserved as an alias for your local deployment. To create one, run ${chalkStderr.bold(`npx convex deployment create ${selector.teamSlug}:${selector.projectSlug}:local`)}`,\n };\n }\n return {\n kind: \"valid\",\n ref: inner.reference,\n teamAndProject: {\n teamSlug: selector.teamSlug,\n projectSlug: selector.projectSlug,\n },\n };\n }\n default:\n selector satisfies never;\n return {\n kind: \"invalid\",\n message: \"Unknown state. This is a bug in Convex.\",\n };\n }\n}\n\n/**\n * Detect whether the user is creating a local deployment.\n * Returns:\n * - `null` if `refParam` is not a local-deployment selector\n * - `inCurrentProject` for plain `local`\n * - `needsTeam` for `project:local` (which we reject \u2014 same rule as cloud)\n * - `inTeamProject` for `team:project:local`\n */\nfunction parseLocalCreateTarget(\n refParam: string,\n):\n | null\n | { kind: \"inCurrentProject\" }\n | { kind: \"needsTeam\" }\n | { kind: \"inTeamProject\"; teamSlug: string; projectSlug: string } {\n const parsed = parseDeploymentSelector(refParam);\n if (parsed.kind === \"inCurrentProject\" && parsed.selector.kind === \"local\") {\n return { kind: \"inCurrentProject\" };\n }\n if (parsed.kind === \"inProject\" && parsed.selector.kind === \"local\") {\n return { kind: \"needsTeam\" };\n }\n if (parsed.kind === \"inTeamProject\" && parsed.selector.kind === \"local\") {\n return {\n kind: \"inTeamProject\",\n teamSlug: parsed.teamSlug,\n projectSlug: parsed.projectSlug,\n };\n }\n return null;\n}\n\nasync function resolveProject(\n ctx: Context,\n deploymentSelection: DeploymentSelection,\n): Promise<ProjectResponse> {\n switch (deploymentSelection.kind) {\n case \"existingDeployment\": {\n const { deploymentFields } = deploymentSelection.deploymentToActOn;\n if (deploymentFields) {\n return await getProjectDetails(ctx, {\n kind: \"deploymentName\",\n deploymentName: deploymentFields.deploymentName,\n deploymentType: null,\n });\n }\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Cannot infer project from the current deployment configuration. Use `team:project:ref` to specify team and project slugs.\",\n });\n }\n case \"deploymentWithinProject\": {\n return await getProjectDetails(ctx, deploymentSelection.targetProject);\n }\n case \"preview\": {\n const slugs = await getTeamAndProjectFromPreviewAdminKey(\n ctx,\n deploymentSelection.previewDeployKey,\n );\n return await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: slugs.teamSlug,\n projectSlug: slugs.projectSlug,\n });\n }\n case \"chooseProject\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"No project configured yet. Use `team:project:ref` to specify team and project slugs.\",\n });\n case \"anonymous\":\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Cannot create a deployment in anonymous mode. \" +\n \"Run `npx convex login` and configure a project first.\",\n });\n default: {\n deploymentSelection satisfies never;\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Unexpected deployment selection kind.`,\n });\n }\n }\n}\n\nconst REGION_NAME_TO_ALIAS: Record<string, string> = {\n \"aws-us-east-1\": \"us\",\n \"aws-eu-west-1\": \"eu\",\n};\n\nconst REGION_ALIAS_TO_NAME = Object.fromEntries(\n Object.entries(REGION_NAME_TO_ALIAS).map(([name, alias]) => [alias, name]),\n);\n\nexport async function fetchAvailableRegions(ctx: Context, teamId: number) {\n const regionsResponse = (\n await typedPlatformClient(ctx).GET(\n \"/teams/{team_id}/list_deployment_regions\",\n {\n params: {\n path: { team_id: `${teamId}` },\n },\n },\n )\n ).data!;\n return regionsResponse.items.filter((item) => item.available);\n}\n\ntype AvailableRegion = Awaited<\n ReturnType<typeof fetchAvailableRegions>\n>[number];\n\nexport function resolveRegionDetails(\n availableRegions: AvailableRegion[],\n region: string,\n) {\n const resolvedRegion = REGION_ALIAS_TO_NAME[region] ?? region;\n return availableRegions.find((item) => item.name === resolvedRegion) ?? null;\n}\n\nasync function resolveRegionDetailsOrCrash(\n ctx: Context,\n availableRegions: AvailableRegion[],\n region: string,\n) {\n const regionDetails = resolveRegionDetails(availableRegions, region);\n if (!regionDetails) {\n return await crashInvalidRegion(ctx, availableRegions, region);\n }\n return regionDetails;\n}\n\nfunction invalidRegionMessage(\n availableRegions: AvailableRegion[],\n region: string,\n): string {\n const formatted = availableRegions\n .map(\n (item) =>\n ` Use \\`--region ${REGION_NAME_TO_ALIAS[item.name] ?? item.name}\\` for ${item.displayName}`,\n )\n .join(\"\\n\");\n return `Invalid region \"${region}\".\\n\\n` + formatted;\n}\n\nasync function crashInvalidRegion(\n ctx: Context,\n availableRegions: AvailableRegion[],\n region: string,\n): Promise<never> {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: invalidRegionMessage(availableRegions, region),\n });\n}\n\nexport async function fetchAvailableClasses(ctx: Context, teamId: number) {\n const classesResponse = (\n await typedPlatformClient(ctx).GET(\n \"/teams/{team_id}/list_deployment_classes\",\n {\n params: {\n path: { team_id: `${teamId}` },\n },\n },\n )\n ).data!;\n return classesResponse.items.filter((item) => item.available);\n}\n\ntype AvailableClass = Awaited<ReturnType<typeof fetchAvailableClasses>>[number];\n\nexport function resolveClassDetails(\n availableClasses: AvailableClass[],\n className: string,\n) {\n return availableClasses.find((item) => item.type === className) ?? null;\n}\n\nasync function resolveClassDetailsOrCrash(\n ctx: Context,\n availableClasses: AvailableClass[],\n className: string,\n) {\n const classDetails = resolveClassDetails(availableClasses, className);\n if (!classDetails) {\n return await crashInvalidClass(ctx, availableClasses, className);\n }\n return classDetails;\n}\n\nfunction invalidClassMessage(\n availableClasses: AvailableClass[],\n className: string,\n): string {\n const formatted = availableClasses\n .map((item) => ` \\`--class ${item.type}\\``)\n .join(\"\\n\");\n return `Invalid class \"${className}\".\\n\\nAvailable classes:\\n` + formatted;\n}\n\nasync function crashInvalidClass(\n ctx: Context,\n availableClasses: AvailableClass[],\n className: string,\n): Promise<never> {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: invalidClassMessage(availableClasses, className),\n });\n}\n\nasync function resolveExpiresAtOrCrash(\n ctx: Context,\n expiration: string | undefined,\n): Promise<number | null | undefined> {\n if (!expiration) {\n return undefined;\n }\n const parsed = parseExpiration(expiration);\n if (parsed.kind === \"error\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: parsed.message,\n });\n }\n const now = Date.now();\n const resolved = resolveExpiration(parsed, now);\n if (resolved !== null) {\n const validation = validateExpiration(resolved, now);\n if (validation.kind === \"error\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: validation.message,\n });\n }\n }\n return resolved;\n}\n\n/**\n * Helper to log a value passed in as a CLI argument in the interactive flow.\n */\nfunction logAndUse<T extends string | boolean>(label: string, value: T): T {\n logFinishedStep(`Using ${label}: ${chalkStderr.bold(value)}`);\n return value;\n}\n\n// This is an oversimplification, it\u2019s fine if it fails later\nfunction validateTentativeReference(tentativeReference: string): true | string {\n if (tentativeReference.length < 3) {\n return \"References must be at least 3 characters\";\n }\n if (tentativeReference.length > 100) {\n return \"References must be at most 100 characters\";\n }\n if (!/^[a-z0-9/-]+$/.test(tentativeReference)) {\n return \"References can only contain lowercase letters, numbers, `-`, and `/`\";\n }\n if (tentativeReference === \"dev\") {\n return '\"dev\" is reserved as an alias for your default dev deployment.';\n }\n if (tentativeReference === \"prod\") {\n return '\"prod\" is reserved as an alias for your default production deployment.';\n }\n if (tentativeReference === \"local\") {\n return `\"local\" is reserved as an alias for your local deployment. To create one, run ${chalkStderr.bold(\"npx convex deployment create local\")}`;\n }\n if (/^[a-z]+-[a-z]+-\\d+$/.test(tentativeReference)) {\n return 'References can\\'t look like \"word-word-123\" \u2014 that format is reserved for automatically-generated deployment names. Try something like dev/my-feature or staging instead.';\n }\n\n return true;\n}\n\n/**\n * Get the current local git branch name by shelling out to git.\n * Returns null if git is unavailable, the repo is in detached HEAD state,\n * or the branch is main/master.\n */\nfunction localGitBranch(): string | null {\n try {\n const branch = (\n execSync(\"git rev-parse --abbrev-ref HEAD\", {\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n timeout: 5000,\n }) as Buffer\n )\n .toString()\n .trim();\n if (\n !branch ||\n branch === \"HEAD\" ||\n branch === \"main\" ||\n branch === \"master\"\n ) {\n return null;\n }\n return branch;\n } catch {\n return null;\n }\n}\n\n/**\n * Slugify a git branch name into a valid deployment reference.\n * Returns undefined if the result would fail validation.\n */\nfunction defaultRef(\n branch: string | null,\n deploymentType: \"dev\" | \"prod\" | \"preview\",\n): string | undefined {\n if (deploymentType !== \"dev\" && deploymentType !== \"preview\") {\n return undefined;\n }\n if (!branch) return undefined;\n const slug = branch\n .replace(/[^a-z0-9/-]/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n if (!slug) return undefined;\n const ref = `${deploymentType}/${slug}`;\n const valid = validateTentativeReference(ref);\n if (valid !== true) return undefined;\n return ref;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_utils", "team"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/generatedApi.ts"],
4
- "sourcesContent": ["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/teams\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_teams_for_member\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_slug}/projects\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_cli_projects_for_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment. This removes the environment from both WorkOS and the Convex database. */\n post: operations[\"delete_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/disconnect_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Disconnect a WorkOS team from a Convex team. This is a destructive action that will prevent new WorkOS environments from being provisioned, though existing environments will continue to work. */\n post: operations[\"disconnect_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/available_workos_team_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get candidate email addresses to be WorkOS admins. */\n get: operations[\"get_available_workos_team_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if a deployment has an associated WorkOS team */\n get: operations[\"get_has_associated_workos_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/get_or_provision_workos_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Get or provision a WorkOS environment for a deployment */\n post: operations[\"get_or_provision_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/workos_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS environment associated with this deployment is still accessible */\n get: operations[\"get_workos_environment_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_invitation_eligible_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get emails eligible for WorkOS team invitation (all verified emails except those that are admin of a different WorkOS team) */\n get: operations[\"get_workos_invitation_eligible_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_team_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS team associated with this Convex team is still accessible */\n get: operations[\"get_workos_team_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/invite_team_member\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Invite a member to the WorkOS team associated with a Convex team */\n post: operations[\"invite_workos_team_member\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check if a deployment has an associated WorkOS team */\n post: operations[\"has_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/provision_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Provision a WorkOS team for a Convex team */\n post: operations[\"provision_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/projects/{project_id}/workos_environments\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description List all WorkOS environments for a project */\n get: operations[\"get_project_workos_environments\"];\n put?: never;\n /** @description Create a new WorkOS environment for a project */\n post: operations[\"provision_project_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/projects/{project_id}/workos_environments/{client_id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get a specific WorkOS environment for a project including credentials. This action is audited. */\n get: operations[\"get_project_workos_environment\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_project_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment from a project */\n post: operations[\"delete_project_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/check_project_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check the health of a project WorkOS environment. Returns HTTP error on failure. */\n post: operations[\"check_project_environment_health\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n AvailableWorkOSTeamEmailsResponse: {\n availableEmails: string[];\n usedEmails: string[];\n };\n CheckProjectEnvironmentHealthRequest: {\n /** @description WorkOS client ID */\n clientId: string;\n /**\n * Format: int64\n * @description Project ID\n */\n projectId: number;\n };\n DeleteProjectEnvironmentRequest: {\n /** @description WorkOS client ID of the environment to delete */\n clientId: string;\n /**\n * Format: int64\n * @description Project ID for the environment to delete\n */\n projectId: number;\n };\n /** @description Response for deleting a project environment - matches\n * DeleteWorkOSEnvironmentResponse */\n DeleteProjectEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DeleteWorkOSEnvironmentRequest: {\n /** @description Deployment name for the environment to delete */\n deploymentName: string;\n };\n DeleteWorkOSEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DisconnectWorkOSTeamRequest: {\n /** @description Convex team ID to disconnect from WorkOS */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n DisconnectWorkOSTeamResponse: {\n workosTeamId: string;\n workosTeamName: string;\n };\n GetOrProvisionEnvironmentRequest: {\n deploymentName: string;\n environmentName?: string | null;\n isProduction?: boolean | null;\n };\n /** @description Response for getting a project WorkOS environment with credentials - matches\n * ProvisionProjectEnvironmentResponse pattern with workos_ prefix */\n GetProjectEnvironmentResponse: {\n isProduction: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosApiKey: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n GetProjectEnvironmentsResponse: {\n environments: components[\"schemas\"][\"ProjectEnvironmentSummary\"][];\n };\n HasAssociatedWorkOSTeamRequest: {\n deploymentName: string;\n };\n HasAssociatedWorkOSTeamResponse: {\n /** @description Email of Convex team member who created the WorkOS account.\n * This field should always be present when has_associated_workos_team is\n * true. */\n adminConvexEmail?: string | null;\n /** @description Email address used to provision the WorkOS account. This field should\n * always be present if has_associated_workos_team is true. */\n adminEmail?: string | null;\n /** @description Name of Convex team member who created the WorkOS account.\n * This field is optional even when has_associated_workos_team is true. */\n adminName?: string | null;\n hasAssociatedWorkosTeam: boolean;\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n InvitationEligibleEmailsResponse: {\n /** @description The admin email used to create this team's WorkOS account (always\n * eligible for re-invitation) */\n adminEmail?: string | null;\n eligibleEmails: string[];\n };\n InviteWorkOSTeamMemberRequest: {\n /** @description Email address to invite to the WorkOS team,\n * must be a verified email address associated with the user's account */\n email: string;\n /** @description Convex team ID that has an associated WorkOS team */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n InviteWorkOSTeamMemberResponse: {\n email: string;\n roleSlug: string;\n };\n ManagedBy: \"vercel\" | {\n oauthApp: string;\n };\n /** Format: int64 */\n MemberId: number;\n ProjectDetails: {\n /** Format: int64 */\n createTime: number;\n devDeploymentName?: string | null;\n id: components[\"schemas\"][\"ProjectId\"];\n name: components[\"schemas\"][\"ProjectName\"];\n prodDeploymentName?: string | null;\n slug: components[\"schemas\"][\"ProjectSlug\"];\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n /** @description Summary of a project WorkOS environment for list responses - slimmer than\n * full environment details, uses workos_ prefix for consistency with\n * deployment */\n ProjectEnvironmentSummary: {\n isProduction: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n /** Format: int64 */\n ProjectId: number;\n ProjectName: string;\n ProjectSlug: string;\n ProvisionEnvironmentResponse: {\n apiKey: string;\n clientId: string;\n environmentId: string;\n environmentName: string;\n newlyProvisioned: boolean;\n };\n ProvisionProjectEnvironmentRequest: {\n environmentName: string;\n isProduction?: boolean | null;\n };\n /** @description Response for provisioning a project WorkOS environment - matches\n * ProvisionEnvironmentResponse pattern with workos_ prefix for consistency */\n ProvisionProjectEnvironmentResponse: {\n newlyProvisioned: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosApiKey: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n ProvisionWorkOSTeamRequest: {\n /** @description Email address to use for the WorkOS team admin,\n * must be a verified email address associated with the user's account */\n email: string;\n /** @description Convex team ID, no WorkOS team exists at this point */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n ProvisionWorkOSTeamResponse: {\n adminEmail: string;\n workosTeamId: string;\n workosTeamName: string;\n };\n ReferralCode: string;\n /** @enum {string} */\n RegionName: \"aws-us-east-1\" | \"aws-eu-west-1\";\n /** Format: int64 */\n TeamId: number;\n TeamName: string;\n TeamResponse: {\n creator?: null | components[\"schemas\"][\"MemberId\"];\n defaultRegion?: null | components[\"schemas\"][\"RegionName\"];\n id: components[\"schemas\"][\"TeamId\"];\n managedBy?: null | components[\"schemas\"][\"ManagedBy\"];\n managedByUrl?: string | null;\n name: components[\"schemas\"][\"TeamName\"];\n referralCode: components[\"schemas\"][\"ReferralCode\"];\n referredBy?: null | components[\"schemas\"][\"TeamId\"];\n slug: components[\"schemas\"][\"TeamSlug\"];\n ssoLoginId?: string | null;\n suspended: boolean;\n };\n TeamSlug: string;\n WorkOSEnvironmentHealthResponse: {\n clientId: string;\n id: string;\n name: string;\n };\n /** @enum {string} */\n WorkOSProductionState: \"active\" | \"inactive\" | \"suspended\" | \"deleting\";\n WorkOSTeamHealthResponse: {\n teamInfo?: null | components[\"schemas\"][\"WorkOSTeamInfo\"];\n /** @description Whether a WorkOS team has been provisioned for this Convex team */\n teamProvisioned: boolean;\n };\n WorkOSTeamInfo: {\n id: string;\n name: string;\n productionState: components[\"schemas\"][\"WorkOSProductionState\"];\n };\n };\n responses: never;\n parameters: never;\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type AvailableWorkOsTeamEmailsResponse = components['schemas']['AvailableWorkOSTeamEmailsResponse'];\nexport type CheckProjectEnvironmentHealthRequest = components['schemas']['CheckProjectEnvironmentHealthRequest'];\nexport type DeleteProjectEnvironmentRequest = components['schemas']['DeleteProjectEnvironmentRequest'];\nexport type DeleteProjectEnvironmentResponse = components['schemas']['DeleteProjectEnvironmentResponse'];\nexport type DeleteWorkOsEnvironmentRequest = components['schemas']['DeleteWorkOSEnvironmentRequest'];\nexport type DeleteWorkOsEnvironmentResponse = components['schemas']['DeleteWorkOSEnvironmentResponse'];\nexport type DisconnectWorkOsTeamRequest = components['schemas']['DisconnectWorkOSTeamRequest'];\nexport type DisconnectWorkOsTeamResponse = components['schemas']['DisconnectWorkOSTeamResponse'];\nexport type GetOrProvisionEnvironmentRequest = components['schemas']['GetOrProvisionEnvironmentRequest'];\nexport type GetProjectEnvironmentResponse = components['schemas']['GetProjectEnvironmentResponse'];\nexport type GetProjectEnvironmentsResponse = components['schemas']['GetProjectEnvironmentsResponse'];\nexport type HasAssociatedWorkOsTeamRequest = components['schemas']['HasAssociatedWorkOSTeamRequest'];\nexport type HasAssociatedWorkOsTeamResponse = components['schemas']['HasAssociatedWorkOSTeamResponse'];\nexport type InvitationEligibleEmailsResponse = components['schemas']['InvitationEligibleEmailsResponse'];\nexport type InviteWorkOsTeamMemberRequest = components['schemas']['InviteWorkOSTeamMemberRequest'];\nexport type InviteWorkOsTeamMemberResponse = components['schemas']['InviteWorkOSTeamMemberResponse'];\nexport type ManagedBy = components['schemas']['ManagedBy'];\nexport type MemberId = components['schemas']['MemberId'];\nexport type ProjectDetails = components['schemas']['ProjectDetails'];\nexport type ProjectEnvironmentSummary = components['schemas']['ProjectEnvironmentSummary'];\nexport type ProjectId = components['schemas']['ProjectId'];\nexport type ProjectName = components['schemas']['ProjectName'];\nexport type ProjectSlug = components['schemas']['ProjectSlug'];\nexport type ProvisionEnvironmentResponse = components['schemas']['ProvisionEnvironmentResponse'];\nexport type ProvisionProjectEnvironmentRequest = components['schemas']['ProvisionProjectEnvironmentRequest'];\nexport type ProvisionProjectEnvironmentResponse = components['schemas']['ProvisionProjectEnvironmentResponse'];\nexport type ProvisionWorkOsTeamRequest = components['schemas']['ProvisionWorkOSTeamRequest'];\nexport type ProvisionWorkOsTeamResponse = components['schemas']['ProvisionWorkOSTeamResponse'];\nexport type ReferralCode = components['schemas']['ReferralCode'];\nexport type RegionName = components['schemas']['RegionName'];\nexport type TeamId = components['schemas']['TeamId'];\nexport type TeamName = components['schemas']['TeamName'];\nexport type TeamResponse = components['schemas']['TeamResponse'];\nexport type TeamSlug = components['schemas']['TeamSlug'];\nexport type WorkOsEnvironmentHealthResponse = components['schemas']['WorkOSEnvironmentHealthResponse'];\nexport type WorkOsProductionState = components['schemas']['WorkOSProductionState'];\nexport type WorkOsTeamHealthResponse = components['schemas']['WorkOSTeamHealthResponse'];\nexport type WorkOsTeamInfo = components['schemas']['WorkOSTeamInfo'];\nexport type $defs = Record<string, never>;\nexport interface operations {\n get_teams_for_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"TeamResponse\"][];\n };\n };\n };\n };\n get_cli_projects_for_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Team slug identifier */\n team_slug: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProjectDetails\"][];\n };\n };\n };\n };\n delete_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentResponse\"];\n };\n };\n };\n };\n disconnect_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_available_workos_team_emails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"AvailableWorkOSTeamEmailsResponse\"];\n };\n };\n };\n };\n get_has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_or_provision_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"GetOrProvisionEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionEnvironmentResponse\"];\n };\n };\n };\n };\n get_workos_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n get_workos_invitation_eligible_emails: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InvitationEligibleEmailsResponse\"];\n };\n };\n };\n };\n get_workos_team_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSTeamHealthResponse\"];\n };\n };\n };\n };\n invite_workos_team_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberResponse\"];\n };\n };\n };\n };\n has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n provision_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_project_workos_environments: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentsResponse\"];\n };\n };\n };\n };\n provision_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentResponse\"];\n };\n };\n };\n };\n get_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n client_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentResponse\"];\n };\n };\n };\n };\n delete_project_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentResponse\"];\n };\n };\n };\n };\n check_project_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CheckProjectEnvironmentHealthRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n}\n"],
4
+ "sourcesContent": ["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/teams\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_teams_for_member\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_slug}/projects\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_cli_projects_for_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment. This removes the environment from both WorkOS and the Convex database. */\n post: operations[\"delete_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/disconnect_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Disconnect a WorkOS team from a Convex team. This is a destructive action that will prevent new WorkOS environments from being provisioned, though existing environments will continue to work. */\n post: operations[\"disconnect_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/available_workos_team_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get candidate email addresses to be WorkOS admins. */\n get: operations[\"get_available_workos_team_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if a deployment has an associated WorkOS team */\n get: operations[\"get_has_associated_workos_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/get_or_provision_workos_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Get or provision a WorkOS environment for a deployment */\n post: operations[\"get_or_provision_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/workos_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS environment associated with this deployment is still accessible */\n get: operations[\"get_workos_environment_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_invitation_eligible_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get emails eligible for WorkOS team invitation (all verified emails except those that are admin of a different WorkOS team) */\n get: operations[\"get_workos_invitation_eligible_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_team_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS team associated with this Convex team is still accessible */\n get: operations[\"get_workos_team_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/invite_team_member\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Invite a member to the WorkOS team associated with a Convex team */\n post: operations[\"invite_workos_team_member\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check if a deployment has an associated WorkOS team */\n post: operations[\"has_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/provision_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Provision a WorkOS team for a Convex team */\n post: operations[\"provision_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/projects/{project_id}/workos_environments\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description List all WorkOS environments for a project */\n get: operations[\"get_project_workos_environments\"];\n put?: never;\n /** @description Create a new WorkOS environment for a project */\n post: operations[\"provision_project_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/projects/{project_id}/workos_environments/{client_id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get a specific WorkOS environment for a project including credentials. This action is audited. */\n get: operations[\"get_project_workos_environment\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_project_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment from a project */\n post: operations[\"delete_project_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/check_project_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check the health of a project WorkOS environment. Returns HTTP error on failure. */\n post: operations[\"check_project_environment_health\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n AvailableWorkOSTeamEmailsResponse: {\n availableEmails: string[];\n usedEmails: string[];\n };\n CheckProjectEnvironmentHealthRequest: {\n /**\n * Format: int64\n * @description Project ID\n */\n projectId: number;\n /** @description WorkOS client ID */\n clientId: string;\n };\n DeleteProjectEnvironmentRequest: {\n /**\n * Format: int64\n * @description Project ID for the environment to delete\n */\n projectId: number;\n /** @description WorkOS client ID of the environment to delete */\n clientId: string;\n };\n /** @description Response for deleting a project environment - matches\n * DeleteWorkOSEnvironmentResponse */\n DeleteProjectEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DeleteWorkOSEnvironmentRequest: {\n /** @description Deployment name for the environment to delete */\n deploymentName: string;\n };\n DeleteWorkOSEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DisconnectWorkOSTeamRequest: {\n /** @description Convex team ID to disconnect from WorkOS */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n DisconnectWorkOSTeamResponse: {\n workosTeamId: string;\n workosTeamName: string;\n };\n GetOrProvisionEnvironmentRequest: {\n deploymentName: string;\n environmentName?: string | null;\n isProduction?: boolean | null;\n };\n /** @description Response for getting a project WorkOS environment with credentials - matches\n * ProvisionProjectEnvironmentResponse pattern with workos_ prefix */\n GetProjectEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosClientId: string;\n workosApiKey: string;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n isProduction: boolean;\n };\n GetProjectEnvironmentsResponse: {\n environments: components[\"schemas\"][\"ProjectEnvironmentSummary\"][];\n };\n HasAssociatedWorkOSTeamRequest: {\n deploymentName: string;\n };\n HasAssociatedWorkOSTeamResponse: {\n hasAssociatedWorkosTeam: boolean;\n teamId: components[\"schemas\"][\"TeamId\"];\n /** @description Email address used to provision the WorkOS account. This field should\n * always be present if has_associated_workos_team is true. */\n adminEmail?: string | null;\n /** @description Name of Convex team member who created the WorkOS account.\n * This field is optional even when has_associated_workos_team is true. */\n adminName?: string | null;\n /** @description Email of Convex team member who created the WorkOS account.\n * This field should always be present when has_associated_workos_team is\n * true. */\n adminConvexEmail?: string | null;\n };\n InvitationEligibleEmailsResponse: {\n eligibleEmails: string[];\n /** @description The admin email used to create this team's WorkOS account (always\n * eligible for re-invitation) */\n adminEmail?: string | null;\n };\n InviteWorkOSTeamMemberRequest: {\n /** @description Convex team ID that has an associated WorkOS team */\n teamId: components[\"schemas\"][\"TeamId\"];\n /** @description Email address to invite to the WorkOS team,\n * must be a verified email address associated with the user's account */\n email: string;\n };\n InviteWorkOSTeamMemberResponse: {\n email: string;\n roleSlug: string;\n };\n ManagedBy: \"vercel\" | {\n oauthApp: string;\n };\n /** Format: int64 */\n MemberId: number;\n ProjectDetails: {\n id: components[\"schemas\"][\"ProjectId\"];\n name: components[\"schemas\"][\"ProjectName\"];\n slug: components[\"schemas\"][\"ProjectSlug\"];\n teamId: components[\"schemas\"][\"TeamId\"];\n /** Format: int64 */\n createTime: number;\n prodDeploymentName?: string | null;\n devDeploymentName?: string | null;\n };\n /** @description Summary of a project WorkOS environment for list responses - slimmer than\n * full environment details, uses workos_ prefix for consistency with\n * deployment */\n ProjectEnvironmentSummary: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosClientId: string;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n isProduction: boolean;\n };\n /** Format: int64 */\n ProjectId: number;\n ProjectName: string;\n ProjectSlug: string;\n ProvisionEnvironmentResponse: {\n environmentId: string;\n environmentName: string;\n clientId: string;\n apiKey: string;\n newlyProvisioned: boolean;\n };\n ProvisionProjectEnvironmentRequest: {\n environmentName: string;\n isProduction?: boolean | null;\n };\n /** @description Response for provisioning a project WorkOS environment - matches\n * ProvisionEnvironmentResponse pattern with workos_ prefix for consistency */\n ProvisionProjectEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosClientId: string;\n workosApiKey: string;\n newlyProvisioned: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n };\n ProvisionWorkOSTeamRequest: {\n /** @description Convex team ID, no WorkOS team exists at this point */\n teamId: components[\"schemas\"][\"TeamId\"];\n /** @description Email address to use for the WorkOS team admin,\n * must be a verified email address associated with the user's account */\n email: string;\n };\n ProvisionWorkOSTeamResponse: {\n workosTeamId: string;\n workosTeamName: string;\n adminEmail: string;\n };\n ReferralCode: string;\n /** @enum {string} */\n RegionName: \"aws-us-east-1\" | \"aws-eu-west-1\";\n /** Format: int64 */\n TeamId: number;\n TeamName: string;\n TeamResponse: {\n id: components[\"schemas\"][\"TeamId\"];\n name: components[\"schemas\"][\"TeamName\"];\n slug: components[\"schemas\"][\"TeamSlug\"];\n creator?: null | components[\"schemas\"][\"MemberId\"];\n suspended: boolean;\n referralCode: components[\"schemas\"][\"ReferralCode\"];\n referredBy?: null | components[\"schemas\"][\"TeamId\"];\n managedBy?: null | components[\"schemas\"][\"ManagedBy\"];\n defaultRegion?: null | components[\"schemas\"][\"RegionName\"];\n ssoLoginId?: string | null;\n managedByUrl?: string | null;\n };\n TeamSlug: string;\n WorkOSEnvironmentHealthResponse: {\n id: string;\n name: string;\n clientId: string;\n };\n /** @enum {string} */\n WorkOSProductionState: \"active\" | \"inactive\" | \"suspended\" | \"deleting\";\n WorkOSTeamHealthResponse: {\n /** @description Whether a WorkOS team has been provisioned for this Convex team */\n teamProvisioned: boolean;\n teamInfo?: null | components[\"schemas\"][\"WorkOSTeamInfo\"];\n };\n WorkOSTeamInfo: {\n id: string;\n name: string;\n productionState: components[\"schemas\"][\"WorkOSProductionState\"];\n };\n };\n responses: never;\n parameters: never;\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type AvailableWorkOsTeamEmailsResponse = components['schemas']['AvailableWorkOSTeamEmailsResponse'];\nexport type CheckProjectEnvironmentHealthRequest = components['schemas']['CheckProjectEnvironmentHealthRequest'];\nexport type DeleteProjectEnvironmentRequest = components['schemas']['DeleteProjectEnvironmentRequest'];\nexport type DeleteProjectEnvironmentResponse = components['schemas']['DeleteProjectEnvironmentResponse'];\nexport type DeleteWorkOsEnvironmentRequest = components['schemas']['DeleteWorkOSEnvironmentRequest'];\nexport type DeleteWorkOsEnvironmentResponse = components['schemas']['DeleteWorkOSEnvironmentResponse'];\nexport type DisconnectWorkOsTeamRequest = components['schemas']['DisconnectWorkOSTeamRequest'];\nexport type DisconnectWorkOsTeamResponse = components['schemas']['DisconnectWorkOSTeamResponse'];\nexport type GetOrProvisionEnvironmentRequest = components['schemas']['GetOrProvisionEnvironmentRequest'];\nexport type GetProjectEnvironmentResponse = components['schemas']['GetProjectEnvironmentResponse'];\nexport type GetProjectEnvironmentsResponse = components['schemas']['GetProjectEnvironmentsResponse'];\nexport type HasAssociatedWorkOsTeamRequest = components['schemas']['HasAssociatedWorkOSTeamRequest'];\nexport type HasAssociatedWorkOsTeamResponse = components['schemas']['HasAssociatedWorkOSTeamResponse'];\nexport type InvitationEligibleEmailsResponse = components['schemas']['InvitationEligibleEmailsResponse'];\nexport type InviteWorkOsTeamMemberRequest = components['schemas']['InviteWorkOSTeamMemberRequest'];\nexport type InviteWorkOsTeamMemberResponse = components['schemas']['InviteWorkOSTeamMemberResponse'];\nexport type ManagedBy = components['schemas']['ManagedBy'];\nexport type MemberId = components['schemas']['MemberId'];\nexport type ProjectDetails = components['schemas']['ProjectDetails'];\nexport type ProjectEnvironmentSummary = components['schemas']['ProjectEnvironmentSummary'];\nexport type ProjectId = components['schemas']['ProjectId'];\nexport type ProjectName = components['schemas']['ProjectName'];\nexport type ProjectSlug = components['schemas']['ProjectSlug'];\nexport type ProvisionEnvironmentResponse = components['schemas']['ProvisionEnvironmentResponse'];\nexport type ProvisionProjectEnvironmentRequest = components['schemas']['ProvisionProjectEnvironmentRequest'];\nexport type ProvisionProjectEnvironmentResponse = components['schemas']['ProvisionProjectEnvironmentResponse'];\nexport type ProvisionWorkOsTeamRequest = components['schemas']['ProvisionWorkOSTeamRequest'];\nexport type ProvisionWorkOsTeamResponse = components['schemas']['ProvisionWorkOSTeamResponse'];\nexport type ReferralCode = components['schemas']['ReferralCode'];\nexport type RegionName = components['schemas']['RegionName'];\nexport type TeamId = components['schemas']['TeamId'];\nexport type TeamName = components['schemas']['TeamName'];\nexport type TeamResponse = components['schemas']['TeamResponse'];\nexport type TeamSlug = components['schemas']['TeamSlug'];\nexport type WorkOsEnvironmentHealthResponse = components['schemas']['WorkOSEnvironmentHealthResponse'];\nexport type WorkOsProductionState = components['schemas']['WorkOSProductionState'];\nexport type WorkOsTeamHealthResponse = components['schemas']['WorkOSTeamHealthResponse'];\nexport type WorkOsTeamInfo = components['schemas']['WorkOSTeamInfo'];\nexport type $defs = Record<string, never>;\nexport interface operations {\n get_teams_for_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"TeamResponse\"][];\n };\n };\n };\n };\n get_cli_projects_for_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Team slug identifier */\n team_slug: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProjectDetails\"][];\n };\n };\n };\n };\n delete_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentResponse\"];\n };\n };\n };\n };\n disconnect_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_available_workos_team_emails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"AvailableWorkOSTeamEmailsResponse\"];\n };\n };\n };\n };\n get_has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_or_provision_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"GetOrProvisionEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionEnvironmentResponse\"];\n };\n };\n };\n };\n get_workos_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n get_workos_invitation_eligible_emails: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InvitationEligibleEmailsResponse\"];\n };\n };\n };\n };\n get_workos_team_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSTeamHealthResponse\"];\n };\n };\n };\n };\n invite_workos_team_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberResponse\"];\n };\n };\n };\n };\n has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n provision_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_project_workos_environments: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentsResponse\"];\n };\n };\n };\n };\n provision_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentResponse\"];\n };\n };\n };\n };\n get_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n client_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentResponse\"];\n };\n };\n };\n };\n delete_project_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentResponse\"];\n };\n };\n };\n };\n check_project_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CheckProjectEnvironmentHealthRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -27,6 +27,7 @@ const baseConvexValidator = import_zod.z.discriminatedUnion("type", [
27
27
  (0, import_utils.looseObject)({ type: import_zod.z.literal("null") }),
28
28
  (0, import_utils.looseObject)({ type: import_zod.z.literal("number") }),
29
29
  (0, import_utils.looseObject)({ type: import_zod.z.literal("bigint") }),
30
+ (0, import_utils.looseObject)({ type: import_zod.z.literal("commitTs") }),
30
31
  (0, import_utils.looseObject)({ type: import_zod.z.literal("boolean") }),
31
32
  (0, import_utils.looseObject)({ type: import_zod.z.literal("string") }),
32
33
  (0, import_utils.looseObject)({ type: import_zod.z.literal("bytes") }),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/cli/lib/deployApi/validator.ts"],
4
- "sourcesContent": ["import { z } from \"zod\";\nimport { looseObject } from \"./utils.js\";\n\nconst baseConvexValidator = z.discriminatedUnion(\"type\", [\n looseObject({ type: z.literal(\"null\") }),\n looseObject({ type: z.literal(\"number\") }),\n looseObject({ type: z.literal(\"bigint\") }),\n looseObject({ type: z.literal(\"boolean\") }),\n looseObject({ type: z.literal(\"string\") }),\n looseObject({ type: z.literal(\"bytes\") }),\n looseObject({ type: z.literal(\"any\") }),\n looseObject({ type: z.literal(\"literal\"), value: z.any() }),\n looseObject({ type: z.literal(\"id\"), tableName: z.string() }),\n]);\nexport type ConvexValidator =\n | z.infer<typeof baseConvexValidator>\n | { type: \"array\"; value: ConvexValidator }\n | {\n type: \"record\";\n keys: ConvexValidator;\n values: { fieldType: ConvexValidator; optional: false };\n }\n | { type: \"union\"; value: ConvexValidator[] }\n | {\n type: \"object\";\n value: Record<string, { fieldType: ConvexValidator; optional: boolean }>;\n };\nexport const convexValidator: z.ZodType<ConvexValidator> = z.lazy(() =>\n z.union([\n baseConvexValidator,\n looseObject({ type: z.literal(\"array\"), value: convexValidator }),\n looseObject({\n type: z.literal(\"record\"),\n keys: convexValidator,\n values: z.object({\n fieldType: convexValidator,\n optional: z.literal(false),\n }),\n }),\n looseObject({\n type: z.literal(\"union\"),\n value: z.array(convexValidator),\n }),\n looseObject({\n type: z.literal(\"object\"),\n value: z.record(\n looseObject({\n fieldType: convexValidator,\n optional: z.boolean(),\n }),\n ),\n }),\n ]),\n);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,mBAA4B;AAE5B,MAAM,sBAAsB,aAAE,mBAAmB,QAAQ;AAAA,MACvD,0BAAY,EAAE,MAAM,aAAE,QAAQ,MAAM,EAAE,CAAC;AAAA,MACvC,0BAAY,EAAE,MAAM,aAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACzC,0BAAY,EAAE,MAAM,aAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACzC,0BAAY,EAAE,MAAM,aAAE,QAAQ,SAAS,EAAE,CAAC;AAAA,MAC1C,0BAAY,EAAE,MAAM,aAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACzC,0BAAY,EAAE,MAAM,aAAE,QAAQ,OAAO,EAAE,CAAC;AAAA,MACxC,0BAAY,EAAE,MAAM,aAAE,QAAQ,KAAK,EAAE,CAAC;AAAA,MACtC,0BAAY,EAAE,MAAM,aAAE,QAAQ,SAAS,GAAG,OAAO,aAAE,IAAI,EAAE,CAAC;AAAA,MAC1D,0BAAY,EAAE,MAAM,aAAE,QAAQ,IAAI,GAAG,WAAW,aAAE,OAAO,EAAE,CAAC;AAC9D,CAAC;AAcM,MAAM,kBAA8C,aAAE;AAAA,EAAK,MAChE,aAAE,MAAM;AAAA,IACN;AAAA,QACA,0BAAY,EAAE,MAAM,aAAE,QAAQ,OAAO,GAAG,OAAO,gBAAgB,CAAC;AAAA,QAChE,0BAAY;AAAA,MACV,MAAM,aAAE,QAAQ,QAAQ;AAAA,MACxB,MAAM;AAAA,MACN,QAAQ,aAAE,OAAO;AAAA,QACf,WAAW;AAAA,QACX,UAAU,aAAE,QAAQ,KAAK;AAAA,MAC3B,CAAC;AAAA,IACH,CAAC;AAAA,QACD,0BAAY;AAAA,MACV,MAAM,aAAE,QAAQ,OAAO;AAAA,MACvB,OAAO,aAAE,MAAM,eAAe;AAAA,IAChC,CAAC;AAAA,QACD,0BAAY;AAAA,MACV,MAAM,aAAE,QAAQ,QAAQ;AAAA,MACxB,OAAO,aAAE;AAAA,YACP,0BAAY;AAAA,UACV,WAAW;AAAA,UACX,UAAU,aAAE,QAAQ;AAAA,QACtB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;",
4
+ "sourcesContent": ["import { z } from \"zod\";\nimport { looseObject } from \"./utils.js\";\n\nconst baseConvexValidator = z.discriminatedUnion(\"type\", [\n looseObject({ type: z.literal(\"null\") }),\n looseObject({ type: z.literal(\"number\") }),\n looseObject({ type: z.literal(\"bigint\") }),\n looseObject({ type: z.literal(\"commitTs\") }),\n looseObject({ type: z.literal(\"boolean\") }),\n looseObject({ type: z.literal(\"string\") }),\n looseObject({ type: z.literal(\"bytes\") }),\n looseObject({ type: z.literal(\"any\") }),\n looseObject({ type: z.literal(\"literal\"), value: z.any() }),\n looseObject({ type: z.literal(\"id\"), tableName: z.string() }),\n]);\nexport type ConvexValidator =\n | z.infer<typeof baseConvexValidator>\n | { type: \"array\"; value: ConvexValidator }\n | {\n type: \"record\";\n keys: ConvexValidator;\n values: { fieldType: ConvexValidator; optional: false };\n }\n | { type: \"union\"; value: ConvexValidator[] }\n | {\n type: \"object\";\n value: Record<string, { fieldType: ConvexValidator; optional: boolean }>;\n };\nexport const convexValidator: z.ZodType<ConvexValidator> = z.lazy(() =>\n z.union([\n baseConvexValidator,\n looseObject({ type: z.literal(\"array\"), value: convexValidator }),\n looseObject({\n type: z.literal(\"record\"),\n keys: convexValidator,\n values: z.object({\n fieldType: convexValidator,\n optional: z.literal(false),\n }),\n }),\n looseObject({\n type: z.literal(\"union\"),\n value: z.array(convexValidator),\n }),\n looseObject({\n type: z.literal(\"object\"),\n value: z.record(\n looseObject({\n fieldType: convexValidator,\n optional: z.boolean(),\n }),\n ),\n }),\n ]),\n);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,mBAA4B;AAE5B,MAAM,sBAAsB,aAAE,mBAAmB,QAAQ;AAAA,MACvD,0BAAY,EAAE,MAAM,aAAE,QAAQ,MAAM,EAAE,CAAC;AAAA,MACvC,0BAAY,EAAE,MAAM,aAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACzC,0BAAY,EAAE,MAAM,aAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACzC,0BAAY,EAAE,MAAM,aAAE,QAAQ,UAAU,EAAE,CAAC;AAAA,MAC3C,0BAAY,EAAE,MAAM,aAAE,QAAQ,SAAS,EAAE,CAAC;AAAA,MAC1C,0BAAY,EAAE,MAAM,aAAE,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACzC,0BAAY,EAAE,MAAM,aAAE,QAAQ,OAAO,EAAE,CAAC;AAAA,MACxC,0BAAY,EAAE,MAAM,aAAE,QAAQ,KAAK,EAAE,CAAC;AAAA,MACtC,0BAAY,EAAE,MAAM,aAAE,QAAQ,SAAS,GAAG,OAAO,aAAE,IAAI,EAAE,CAAC;AAAA,MAC1D,0BAAY,EAAE,MAAM,aAAE,QAAQ,IAAI,GAAG,WAAW,aAAE,OAAO,EAAE,CAAC;AAC9D,CAAC;AAcM,MAAM,kBAA8C,aAAE;AAAA,EAAK,MAChE,aAAE,MAAM;AAAA,IACN;AAAA,QACA,0BAAY,EAAE,MAAM,aAAE,QAAQ,OAAO,GAAG,OAAO,gBAAgB,CAAC;AAAA,QAChE,0BAAY;AAAA,MACV,MAAM,aAAE,QAAQ,QAAQ;AAAA,MACxB,MAAM;AAAA,MACN,QAAQ,aAAE,OAAO;AAAA,QACf,WAAW;AAAA,QACX,UAAU,aAAE,QAAQ,KAAK;AAAA,MAC3B,CAAC;AAAA,IACH,CAAC;AAAA,QACD,0BAAY;AAAA,MACV,MAAM,aAAE,QAAQ,OAAO;AAAA,MACvB,OAAO,aAAE,MAAM,eAAe;AAAA,IAChC,CAAC;AAAA,QACD,0BAAY;AAAA,MACV,MAAM,aAAE,QAAQ,QAAQ;AAAA,MACxB,OAAO,aAAE;AAAA,YACP,0BAAY;AAAA,UACV,WAAW;AAAA,UACX,UAAU,aAAE,QAAQ;AAAA,QACtB,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;",
6
6
  "names": []
7
7
  }