convex 1.36.1 → 1.37.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 (219) hide show
  1. package/CHANGELOG.md +47 -25
  2. package/dist/browser.bundle.js +1 -1
  3. package/dist/browser.bundle.js.map +1 -1
  4. package/dist/cjs/cli/codegen_templates/agentsmd.js +8 -2
  5. package/dist/cjs/cli/codegen_templates/agentsmd.js.map +2 -2
  6. package/dist/cjs/cli/codegen_templates/claudemd.js +2 -0
  7. package/dist/cjs/cli/codegen_templates/claudemd.js.map +2 -2
  8. package/dist/cjs/cli/configure.js +0 -8
  9. package/dist/cjs/cli/configure.js.map +2 -2
  10. package/dist/cjs/cli/deployment.js +2 -1
  11. package/dist/cjs/cli/deployment.js.map +2 -2
  12. package/dist/cjs/cli/deploymentToken.js +30 -0
  13. package/dist/cjs/cli/deploymentToken.js.map +7 -0
  14. package/dist/cjs/cli/deploymentTokenCreate.js +109 -0
  15. package/dist/cjs/cli/deploymentTokenCreate.js.map +7 -0
  16. package/dist/cjs/cli/deploymentTokenDelete.js +87 -0
  17. package/dist/cjs/cli/deploymentTokenDelete.js.map +7 -0
  18. package/dist/cjs/cli/envDefault.js +1 -1
  19. package/dist/cjs/cli/envDefault.js.map +1 -1
  20. package/dist/cjs/cli/generatedApi.js.map +1 -1
  21. package/dist/cjs/cli/lib/generatedFunctionLogsApi.js.map +1 -1
  22. package/dist/cjs/cli/lib/usage.js +13 -6
  23. package/dist/cjs/cli/lib/usage.js.map +2 -2
  24. package/dist/cjs/cli/lib/workos/environmentApi.js +6 -12
  25. package/dist/cjs/cli/lib/workos/environmentApi.js.map +3 -3
  26. package/dist/cjs/index.js +1 -1
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/react/client.js +40 -42
  29. package/dist/cjs/react/client.js.map +2 -2
  30. package/dist/cjs/react/index.js +1 -0
  31. package/dist/cjs/react/index.js.map +2 -2
  32. package/dist/cjs/react/use_paginated_query.js +5 -46
  33. package/dist/cjs/react/use_paginated_query.js.map +2 -2
  34. package/dist/cjs/react/use_paginated_query2.js.map +2 -2
  35. package/dist/cjs/server/audit_logging.js +67 -0
  36. package/dist/cjs/server/audit_logging.js.map +7 -0
  37. package/dist/cjs/server/impl/meta_impl.js +27 -3
  38. package/dist/cjs/server/impl/meta_impl.js.map +2 -2
  39. package/dist/cjs/server/impl/registration_impl.js +2 -0
  40. package/dist/cjs/server/impl/registration_impl.js.map +2 -2
  41. package/dist/cjs/server/index.js +2 -0
  42. package/dist/cjs/server/index.js.map +2 -2
  43. package/dist/cjs/server/log.js +30 -0
  44. package/dist/cjs/server/log.js.map +7 -0
  45. package/dist/cjs/server/logVars.js +48 -0
  46. package/dist/cjs/server/logVars.js.map +7 -0
  47. package/dist/cjs/server/meta.js.map +1 -1
  48. package/dist/cjs/server/registration.js.map +1 -1
  49. package/dist/cjs-types/cli/codegen_templates/agentsmd.d.ts.map +1 -1
  50. package/dist/cjs-types/cli/codegen_templates/claudemd.d.ts.map +1 -1
  51. package/dist/cjs-types/cli/configure.d.ts.map +1 -1
  52. package/dist/cjs-types/cli/deployment.d.ts.map +1 -1
  53. package/dist/cjs-types/cli/deploymentToken.d.ts +3 -0
  54. package/dist/cjs-types/cli/deploymentToken.d.ts.map +1 -0
  55. package/dist/cjs-types/cli/deploymentToken.test.d.ts +2 -0
  56. package/dist/cjs-types/cli/deploymentToken.test.d.ts.map +1 -0
  57. package/dist/cjs-types/cli/deploymentTokenCreate.d.ts +13 -0
  58. package/dist/cjs-types/cli/deploymentTokenCreate.d.ts.map +1 -0
  59. package/dist/cjs-types/cli/deploymentTokenDelete.d.ts +11 -0
  60. package/dist/cjs-types/cli/deploymentTokenDelete.d.ts.map +1 -0
  61. package/dist/cjs-types/cli/generatedApi.d.ts +1 -1
  62. package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
  63. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts +1 -0
  64. package/dist/cjs-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  65. package/dist/cjs-types/cli/lib/usage.d.ts.map +1 -1
  66. package/dist/cjs-types/cli/lib/workos/environmentApi.d.ts.map +1 -1
  67. package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts +2 -0
  68. package/dist/cjs-types/cli/lib/workos/environmentApi.test.d.ts.map +1 -0
  69. package/dist/cjs-types/index.d.ts +1 -1
  70. package/dist/cjs-types/react/client.d.ts +52 -0
  71. package/dist/cjs-types/react/client.d.ts.map +1 -1
  72. package/dist/cjs-types/react/index.d.ts +2 -2
  73. package/dist/cjs-types/react/index.d.ts.map +1 -1
  74. package/dist/cjs-types/react/use_paginated_query.d.ts.map +1 -1
  75. package/dist/cjs-types/react/use_paginated_query2.d.ts +63 -1
  76. package/dist/cjs-types/react/use_paginated_query2.d.ts.map +1 -1
  77. package/dist/cjs-types/server/api.intersect.test.d.ts +2 -0
  78. package/dist/cjs-types/server/api.intersect.test.d.ts.map +1 -0
  79. package/dist/cjs-types/server/audit_logging.d.ts +19 -0
  80. package/dist/cjs-types/server/audit_logging.d.ts.map +1 -0
  81. package/dist/cjs-types/server/audit_logging.test.d.ts +2 -0
  82. package/dist/cjs-types/server/audit_logging.test.d.ts.map +1 -0
  83. package/dist/cjs-types/server/impl/meta_impl.d.ts.map +1 -1
  84. package/dist/cjs-types/server/impl/registration_impl.d.ts.map +1 -1
  85. package/dist/cjs-types/server/index.d.ts +2 -2
  86. package/dist/cjs-types/server/index.d.ts.map +1 -1
  87. package/dist/cjs-types/server/log.d.ts +2 -0
  88. package/dist/cjs-types/server/log.d.ts.map +1 -0
  89. package/dist/cjs-types/server/logVars.d.ts +20 -0
  90. package/dist/cjs-types/server/logVars.d.ts.map +1 -0
  91. package/dist/cjs-types/server/meta.d.ts +40 -0
  92. package/dist/cjs-types/server/meta.d.ts.map +1 -1
  93. package/dist/cjs-types/server/registration.d.ts +5 -2
  94. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  95. package/dist/cli.bundle.cjs +184 -34
  96. package/dist/cli.bundle.cjs.map +4 -4
  97. package/dist/esm/cli/codegen_templates/agentsmd.js +8 -2
  98. package/dist/esm/cli/codegen_templates/agentsmd.js.map +2 -2
  99. package/dist/esm/cli/codegen_templates/claudemd.js +2 -0
  100. package/dist/esm/cli/codegen_templates/claudemd.js.map +2 -2
  101. package/dist/esm/cli/configure.js +0 -8
  102. package/dist/esm/cli/configure.js.map +2 -2
  103. package/dist/esm/cli/deployment.js +2 -1
  104. package/dist/esm/cli/deployment.js.map +2 -2
  105. package/dist/esm/cli/deploymentToken.js +8 -0
  106. package/dist/esm/cli/deploymentToken.js.map +7 -0
  107. package/dist/esm/cli/deploymentTokenCreate.js +91 -0
  108. package/dist/esm/cli/deploymentTokenCreate.js.map +7 -0
  109. package/dist/esm/cli/deploymentTokenDelete.js +68 -0
  110. package/dist/esm/cli/deploymentTokenDelete.js.map +7 -0
  111. package/dist/esm/cli/envDefault.js +1 -1
  112. package/dist/esm/cli/envDefault.js.map +1 -1
  113. package/dist/esm/cli/lib/usage.js +15 -8
  114. package/dist/esm/cli/lib/usage.js.map +2 -2
  115. package/dist/esm/cli/lib/workos/environmentApi.js +6 -12
  116. package/dist/esm/cli/lib/workos/environmentApi.js.map +3 -3
  117. package/dist/esm/index.js +1 -1
  118. package/dist/esm/index.js.map +1 -1
  119. package/dist/esm/react/client.js +38 -41
  120. package/dist/esm/react/client.js.map +2 -2
  121. package/dist/esm/react/index.js +4 -1
  122. package/dist/esm/react/index.js.map +2 -2
  123. package/dist/esm/react/use_paginated_query.js +5 -46
  124. package/dist/esm/react/use_paginated_query.js.map +2 -2
  125. package/dist/esm/react/use_paginated_query2.js.map +2 -2
  126. package/dist/esm/server/audit_logging.js +44 -0
  127. package/dist/esm/server/audit_logging.js.map +7 -0
  128. package/dist/esm/server/impl/meta_impl.js +27 -3
  129. package/dist/esm/server/impl/meta_impl.js.map +2 -2
  130. package/dist/esm/server/impl/registration_impl.js +2 -0
  131. package/dist/esm/server/impl/registration_impl.js.map +2 -2
  132. package/dist/esm/server/index.js +1 -0
  133. package/dist/esm/server/index.js.map +2 -2
  134. package/dist/esm/server/log.js +8 -0
  135. package/dist/esm/server/log.js.map +7 -0
  136. package/dist/esm/server/logVars.js +25 -0
  137. package/dist/esm/server/logVars.js.map +7 -0
  138. package/dist/esm-types/cli/codegen_templates/agentsmd.d.ts.map +1 -1
  139. package/dist/esm-types/cli/codegen_templates/claudemd.d.ts.map +1 -1
  140. package/dist/esm-types/cli/configure.d.ts.map +1 -1
  141. package/dist/esm-types/cli/deployment.d.ts.map +1 -1
  142. package/dist/esm-types/cli/deploymentToken.d.ts +3 -0
  143. package/dist/esm-types/cli/deploymentToken.d.ts.map +1 -0
  144. package/dist/esm-types/cli/deploymentToken.test.d.ts +2 -0
  145. package/dist/esm-types/cli/deploymentToken.test.d.ts.map +1 -0
  146. package/dist/esm-types/cli/deploymentTokenCreate.d.ts +13 -0
  147. package/dist/esm-types/cli/deploymentTokenCreate.d.ts.map +1 -0
  148. package/dist/esm-types/cli/deploymentTokenDelete.d.ts +11 -0
  149. package/dist/esm-types/cli/deploymentTokenDelete.d.ts.map +1 -0
  150. package/dist/esm-types/cli/generatedApi.d.ts +1 -1
  151. package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
  152. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts +1 -0
  153. package/dist/esm-types/cli/lib/generatedFunctionLogsApi.d.ts.map +1 -1
  154. package/dist/esm-types/cli/lib/usage.d.ts.map +1 -1
  155. package/dist/esm-types/cli/lib/workos/environmentApi.d.ts.map +1 -1
  156. package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts +2 -0
  157. package/dist/esm-types/cli/lib/workos/environmentApi.test.d.ts.map +1 -0
  158. package/dist/esm-types/index.d.ts +1 -1
  159. package/dist/esm-types/react/client.d.ts +52 -0
  160. package/dist/esm-types/react/client.d.ts.map +1 -1
  161. package/dist/esm-types/react/index.d.ts +2 -2
  162. package/dist/esm-types/react/index.d.ts.map +1 -1
  163. package/dist/esm-types/react/use_paginated_query.d.ts.map +1 -1
  164. package/dist/esm-types/react/use_paginated_query2.d.ts +63 -1
  165. package/dist/esm-types/react/use_paginated_query2.d.ts.map +1 -1
  166. package/dist/esm-types/server/api.intersect.test.d.ts +2 -0
  167. package/dist/esm-types/server/api.intersect.test.d.ts.map +1 -0
  168. package/dist/esm-types/server/audit_logging.d.ts +19 -0
  169. package/dist/esm-types/server/audit_logging.d.ts.map +1 -0
  170. package/dist/esm-types/server/audit_logging.test.d.ts +2 -0
  171. package/dist/esm-types/server/audit_logging.test.d.ts.map +1 -0
  172. package/dist/esm-types/server/impl/meta_impl.d.ts.map +1 -1
  173. package/dist/esm-types/server/impl/registration_impl.d.ts.map +1 -1
  174. package/dist/esm-types/server/index.d.ts +2 -2
  175. package/dist/esm-types/server/index.d.ts.map +1 -1
  176. package/dist/esm-types/server/log.d.ts +2 -0
  177. package/dist/esm-types/server/log.d.ts.map +1 -0
  178. package/dist/esm-types/server/logVars.d.ts +20 -0
  179. package/dist/esm-types/server/logVars.d.ts.map +1 -0
  180. package/dist/esm-types/server/meta.d.ts +40 -0
  181. package/dist/esm-types/server/meta.d.ts.map +1 -1
  182. package/dist/esm-types/server/registration.d.ts +5 -2
  183. package/dist/esm-types/server/registration.d.ts.map +1 -1
  184. package/dist/react.bundle.js +45 -88
  185. package/dist/react.bundle.js.map +2 -2
  186. package/package.json +1 -1
  187. package/src/cli/codegen_templates/agentsmd.ts +8 -2
  188. package/src/cli/codegen_templates/claudemd.ts +2 -0
  189. package/src/cli/configure.ts +0 -9
  190. package/src/cli/deployment.ts +3 -1
  191. package/src/cli/deploymentToken.test.ts +372 -0
  192. package/src/cli/deploymentToken.ts +11 -0
  193. package/src/cli/deploymentTokenCreate.ts +113 -0
  194. package/src/cli/deploymentTokenDelete.ts +91 -0
  195. package/src/cli/envDefault.ts +1 -1
  196. package/src/cli/generatedApi.ts +1 -1
  197. package/src/cli/lib/generatedFunctionLogsApi.ts +1 -0
  198. package/src/cli/lib/usage.ts +18 -8
  199. package/src/cli/lib/workos/environmentApi.test.ts +107 -0
  200. package/src/cli/lib/workos/environmentApi.ts +12 -19
  201. package/src/index.ts +1 -1
  202. package/src/react/client.test.tsx +10 -8
  203. package/src/react/client.ts +88 -96
  204. package/src/react/index.ts +6 -1
  205. package/src/react/use_paginated_query.test.tsx +215 -132
  206. package/src/react/use_paginated_query.ts +8 -142
  207. package/src/react/use_paginated_query2.ts +78 -5
  208. package/src/react/use_query_object_options.test.ts +8 -7
  209. package/src/react/use_query_result.test.ts +40 -7
  210. package/src/server/api.intersect.test.ts +109 -0
  211. package/src/server/audit_logging.test.ts +129 -0
  212. package/src/server/audit_logging.ts +75 -0
  213. package/src/server/impl/meta_impl.ts +28 -0
  214. package/src/server/impl/registration_impl.ts +2 -0
  215. package/src/server/index.ts +12 -0
  216. package/src/server/log.ts +16 -0
  217. package/src/server/logVars.ts +34 -0
  218. package/src/server/meta.ts +53 -1
  219. package/src/server/registration.ts +10 -8
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/envDefault.ts"],
4
- "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport {\n envGet,\n envList,\n envRemove,\n envSet,\n EnvVarBackend,\n} from \"./lib/env.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { defaultEnvBackend } from \"./lib/defaultEnv.js\";\nimport {\n CloudDeploymentType,\n DeploymentSelectionOptions,\n DeploymentType,\n fetchTeamAndProject,\n} from \"./lib/api.js\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { selectEnvDeployment } from \"./env.js\";\nimport { getProjectDetails } from \"./lib/deploymentSelection.js\";\n\ntype EnvDefaultExtraOptions = {\n type?: string;\n project?: string;\n};\n\nfunction addEnvDefaultOptions<T extends Command<any, any>>(cmd: T): T {\n return cmd\n .addOption(\n new Option(\n \"--type <type>\",\n \"Manage default env vars for the given deployment type instead of inferring from the current deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--project <project>\",\n \"Select a project manually. Accepts `team-slug:project-slug` or just `project-slug` (team inferred from your current project). Requires --type.\",\n ),\n ) as T;\n}\n\nconst envDefaultSet = addEnvDefaultOptions(\n new Command(\"set\")\n .usage(\"[options] <name> <value>\")\n .arguments(\"[name] [value]\")\n .summary(\"Set a default variable\")\n .description(\n \"Set default environment variables for your project's deployment type.\\n\\n\" +\n \" npx convex env default set NAME 'value'\\n\" +\n \" npx convex env default set NAME # omit a value to set one interactively\\n\" +\n \" npx convex env default set NAME --from-file value.txt\\n\" +\n \" npx convex env default set --from-file .env.defaults\\n\" +\n \"When setting multiple values, it will refuse all changes if any \" +\n \"variables are already set to different values by default. \" +\n \"Pass --force to overwrite the provided values.\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\\n\",\n )\n .option(\n \"--from-file <file>\",\n \"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value.\",\n )\n .option(\n \"--force\",\n \"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, value, cmdOptions, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default set\");\n const didAnything = await envSet(ctx, backend, name, value, cmdOptions);\n if (didAnything === false) {\n cmd.outputHelp({ error: true });\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: No environment variables specified to be set.\",\n });\n }\n});\n\nconst envDefaultGet = addEnvDefaultOptions(\n new Command(\"get\")\n .arguments(\"<name>\")\n .summary(\"Print a default variable's value\")\n .description(\n \"Print a default variable's value: `npx convex env default get NAME`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (envVarName, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default get\");\n await envGet(ctx, backend, envVarName);\n});\n\nconst envDefaultRemove = addEnvDefaultOptions(\n new Command(\"remove\")\n .alias(\"rm\")\n .alias(\"unset\")\n .arguments(\"<name>\")\n .summary(\"Unset a default variable\")\n .description(\n \"Unset a default variable: `npx convex env default remove NAME`\\n\" +\n \"If the variable doesn't exist, the command doesn't do anything and succeeds.\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default remove\");\n await envRemove(ctx, backend, name);\n});\n\nconst envDefaultList = addEnvDefaultOptions(\n new Command(\"list\")\n .summary(\"List all default variables\")\n .description(\n \"List all default variables: `npx convex env default list`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default list\");\n await envList(ctx, backend);\n});\n\nexport const envDefault = new Command(\"default\")\n .summary(\"Manage project-level default environment variables\")\n .description(\n \"Manage default environment variables for your project.\\n\\n\" +\n \"The default environment variables read and written to by this command are the ones for the deployment type of the current deployment (i.e. dev in most cases), unless --type is provided.\\n\\n\" +\n \" Set a default variable: `npx convex env default set NAME 'value'`\\n\" +\n \" Unset a default variable: `npx convex env default remove NAME`\\n\" +\n \" List all default variables: `npx convex env default list`\\n\" +\n \" Print a default variable's value: `npx convex env default get NAME`\\n\\n\",\n )\n .addCommand(envDefaultSet)\n .addCommand(envDefaultGet)\n .addCommand(envDefaultRemove)\n .addCommand(envDefaultList)\n .helpCommand(false);\n\ntype ParsedProjectOption =\n | { kind: \"teamAndProject\"; teamSlug: string; projectSlug: string }\n | { kind: \"projectOnly\"; projectSlug: string };\n\nasync function resolveEnvDefaultBackend(\n options: DeploymentSelectionOptions & EnvDefaultExtraOptions,\n): Promise<{ ctx: Context; backend: EnvVarBackend }> {\n const dtypeOverride = normalizeTypeOption(options.type);\n\n if (options.project !== undefined) {\n const parsedProject = parseProjectOption(options.project);\n if (parsedProject === null) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project must be `team-slug:project-slug` or `project-slug`.\",\n });\n }\n if (dtypeOverride === undefined) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: --project requires --type to also be set.\",\n });\n }\n\n let ctx: Context;\n let resolved: { teamSlug: string; projectSlug: string };\n if (parsedProject.kind === \"teamAndProject\") {\n ctx = await oneoffContext(options);\n resolved = {\n teamSlug: parsedProject.teamSlug,\n projectSlug: parsedProject.projectSlug,\n };\n } else {\n const selected = await selectEnvDeployment(options);\n ctx = selected.ctx;\n if (selected.deployment.deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project <project-slug> requires a current cloud deployment to infer the team from. Use `team-slug:project-slug` to specify the team explicitly.\",\n });\n }\n const { team } = await fetchTeamAndProject(\n ctx,\n selected.deployment.deploymentFields.deploymentName,\n );\n resolved = { teamSlug: team, projectSlug: parsedProject.projectSlug };\n }\n\n const details = await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: resolved.teamSlug,\n projectSlug: resolved.projectSlug,\n });\n return {\n ctx,\n backend: defaultEnvBackend(ctx, details.id, dtypeOverride),\n };\n }\n\n const { ctx, deployment } = await selectEnvDeployment(options);\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n dtypeOverride,\n );\n return { ctx, backend };\n}\n\nfunction normalizeTypeOption(\n type: string | undefined,\n): CloudDeploymentType | undefined {\n if (type === undefined) return undefined;\n if (type === \"development\") return \"dev\";\n if (type === \"production\") return \"prod\";\n return type as CloudDeploymentType;\n}\n\nfunction parseProjectOption(value: string): ParsedProjectOption | null {\n const parts = value.split(\":\");\n if (parts.length === 1 && parts[0].length > 0) {\n return { kind: \"projectOnly\", projectSlug: parts[0] };\n }\n if (parts.length === 2 && parts[0].length > 0 && parts[1].length > 0) {\n return {\n kind: \"teamAndProject\",\n teamSlug: parts[0],\n projectSlug: parts[1],\n };\n }\n return null;\n}\n\nexport async function resolveDefaultEnvBackend(\n ctx: Context,\n deploymentFields: {\n deploymentName: string;\n deploymentType: DeploymentType;\n } | null,\n dtypeOverride?: CloudDeploymentType,\n): Promise<EnvVarBackend> {\n if (deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are only available for cloud projects.\",\n });\n }\n if (deploymentFields.deploymentType === \"anonymous\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are not available for anonymous deployments.\",\n });\n }\n const dtype =\n dtypeOverride ?? resolveDefaultEnvDtype(deploymentFields.deploymentType);\n const { projectId } = await fetchTeamAndProject(\n ctx,\n deploymentFields.deploymentName,\n );\n return defaultEnvBackend(ctx, projectId, dtype);\n}\n\nfunction resolveDefaultEnvDtype(\n deploymentType: Exclude<DeploymentType, \"anonymous\">,\n): CloudDeploymentType {\n if (deploymentType === \"local\") return \"dev\";\n return deploymentType;\n}\n"],
4
+ "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport {\n envGet,\n envList,\n envRemove,\n envSet,\n EnvVarBackend,\n} from \"./lib/env.js\";\nimport { ensureHasConvexDependency } from \"./lib/utils/utils.js\";\nimport { defaultEnvBackend } from \"./lib/defaultEnv.js\";\nimport {\n CloudDeploymentType,\n DeploymentSelectionOptions,\n DeploymentType,\n fetchTeamAndProject,\n} from \"./lib/api.js\";\nimport { Context, oneoffContext } from \"../bundler/context.js\";\nimport { selectEnvDeployment } from \"./env.js\";\nimport { getProjectDetails } from \"./lib/deploymentSelection.js\";\n\ntype EnvDefaultExtraOptions = {\n type?: string;\n project?: string;\n};\n\nfunction addEnvDefaultOptions<T extends Command<any, any>>(cmd: T): T {\n return cmd\n .addOption(\n new Option(\n \"--type <type>\",\n \"Manage default env vars for the given deployment type (dev, preview, prod) instead of inferring from the current deployment.\",\n ),\n )\n .addOption(\n new Option(\n \"--project <project>\",\n \"Select a project manually. Accepts `team-slug:project-slug` or just `project-slug` (team inferred from your current project). Requires --type.\",\n ),\n ) as T;\n}\n\nconst envDefaultSet = addEnvDefaultOptions(\n new Command(\"set\")\n .usage(\"[options] <name> <value>\")\n .arguments(\"[name] [value]\")\n .summary(\"Set a default variable\")\n .description(\n \"Set default environment variables for your project's deployment type.\\n\\n\" +\n \" npx convex env default set NAME 'value'\\n\" +\n \" npx convex env default set NAME # omit a value to set one interactively\\n\" +\n \" npx convex env default set NAME --from-file value.txt\\n\" +\n \" npx convex env default set --from-file .env.defaults\\n\" +\n \"When setting multiple values, it will refuse all changes if any \" +\n \"variables are already set to different values by default. \" +\n \"Pass --force to overwrite the provided values.\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\\n\",\n )\n .option(\n \"--from-file <file>\",\n \"Read environment variables from a .env file. Without --force, fails if any existing variable has a different value.\",\n )\n .option(\n \"--force\",\n \"When setting multiple variables, overwrite existing environment variable values instead of failing on mismatch.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, value, cmdOptions, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default set\");\n const didAnything = await envSet(ctx, backend, name, value, cmdOptions);\n if (didAnything === false) {\n cmd.outputHelp({ error: true });\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: No environment variables specified to be set.\",\n });\n }\n});\n\nconst envDefaultGet = addEnvDefaultOptions(\n new Command(\"get\")\n .arguments(\"<name>\")\n .summary(\"Print a default variable's value\")\n .description(\n \"Print a default variable's value: `npx convex env default get NAME`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (envVarName, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default get\");\n await envGet(ctx, backend, envVarName);\n});\n\nconst envDefaultRemove = addEnvDefaultOptions(\n new Command(\"remove\")\n .alias(\"rm\")\n .alias(\"unset\")\n .arguments(\"<name>\")\n .summary(\"Unset a default variable\")\n .description(\n \"Unset a default variable: `npx convex env default remove NAME`\\n\" +\n \"If the variable doesn't exist, the command doesn't do anything and succeeds.\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (name, _options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default remove\");\n await envRemove(ctx, backend, name);\n});\n\nconst envDefaultList = addEnvDefaultOptions(\n new Command(\"list\")\n .summary(\"List all default variables\")\n .description(\n \"List all default variables: `npx convex env default list`\\n\" +\n \"The deployment type is determined by the current deployment (local maps to dev), or by --type if provided.\",\n )\n .configureHelp({ showGlobalOptions: true })\n .allowExcessArguments(false),\n).action(async (_options, cmd) => {\n const options = cmd.optsWithGlobals() as DeploymentSelectionOptions &\n EnvDefaultExtraOptions;\n const { ctx, backend } = await resolveEnvDefaultBackend(options);\n await ensureHasConvexDependency(ctx, \"env default list\");\n await envList(ctx, backend);\n});\n\nexport const envDefault = new Command(\"default\")\n .summary(\"Manage project-level default environment variables\")\n .description(\n \"Manage default environment variables for your project.\\n\\n\" +\n \"The default environment variables read and written to by this command are the ones for the deployment type of the current deployment (i.e. dev in most cases), unless --type is provided.\\n\\n\" +\n \" Set a default variable: `npx convex env default set NAME 'value'`\\n\" +\n \" Unset a default variable: `npx convex env default remove NAME`\\n\" +\n \" List all default variables: `npx convex env default list`\\n\" +\n \" Print a default variable's value: `npx convex env default get NAME`\\n\\n\",\n )\n .addCommand(envDefaultSet)\n .addCommand(envDefaultGet)\n .addCommand(envDefaultRemove)\n .addCommand(envDefaultList)\n .helpCommand(false);\n\ntype ParsedProjectOption =\n | { kind: \"teamAndProject\"; teamSlug: string; projectSlug: string }\n | { kind: \"projectOnly\"; projectSlug: string };\n\nasync function resolveEnvDefaultBackend(\n options: DeploymentSelectionOptions & EnvDefaultExtraOptions,\n): Promise<{ ctx: Context; backend: EnvVarBackend }> {\n const dtypeOverride = normalizeTypeOption(options.type);\n\n if (options.project !== undefined) {\n const parsedProject = parseProjectOption(options.project);\n if (parsedProject === null) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project must be `team-slug:project-slug` or `project-slug`.\",\n });\n }\n if (dtypeOverride === undefined) {\n const ctx = await oneoffContext(options);\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: \"error: --project requires --type to also be set.\",\n });\n }\n\n let ctx: Context;\n let resolved: { teamSlug: string; projectSlug: string };\n if (parsedProject.kind === \"teamAndProject\") {\n ctx = await oneoffContext(options);\n resolved = {\n teamSlug: parsedProject.teamSlug,\n projectSlug: parsedProject.projectSlug,\n };\n } else {\n const selected = await selectEnvDeployment(options);\n ctx = selected.ctx;\n if (selected.deployment.deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"error: --project <project-slug> requires a current cloud deployment to infer the team from. Use `team-slug:project-slug` to specify the team explicitly.\",\n });\n }\n const { team } = await fetchTeamAndProject(\n ctx,\n selected.deployment.deploymentFields.deploymentName,\n );\n resolved = { teamSlug: team, projectSlug: parsedProject.projectSlug };\n }\n\n const details = await getProjectDetails(ctx, {\n kind: \"teamAndProjectSlugs\",\n teamSlug: resolved.teamSlug,\n projectSlug: resolved.projectSlug,\n });\n return {\n ctx,\n backend: defaultEnvBackend(ctx, details.id, dtypeOverride),\n };\n }\n\n const { ctx, deployment } = await selectEnvDeployment(options);\n const backend = await resolveDefaultEnvBackend(\n ctx,\n deployment.deploymentFields,\n dtypeOverride,\n );\n return { ctx, backend };\n}\n\nfunction normalizeTypeOption(\n type: string | undefined,\n): CloudDeploymentType | undefined {\n if (type === undefined) return undefined;\n if (type === \"development\") return \"dev\";\n if (type === \"production\") return \"prod\";\n return type as CloudDeploymentType;\n}\n\nfunction parseProjectOption(value: string): ParsedProjectOption | null {\n const parts = value.split(\":\");\n if (parts.length === 1 && parts[0].length > 0) {\n return { kind: \"projectOnly\", projectSlug: parts[0] };\n }\n if (parts.length === 2 && parts[0].length > 0 && parts[1].length > 0) {\n return {\n kind: \"teamAndProject\",\n teamSlug: parts[0],\n projectSlug: parts[1],\n };\n }\n return null;\n}\n\nexport async function resolveDefaultEnvBackend(\n ctx: Context,\n deploymentFields: {\n deploymentName: string;\n deploymentType: DeploymentType;\n } | null,\n dtypeOverride?: CloudDeploymentType,\n): Promise<EnvVarBackend> {\n if (deploymentFields === null) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are only available for cloud projects.\",\n });\n }\n if (deploymentFields.deploymentType === \"anonymous\") {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"Default environment variables are not available for anonymous deployments.\",\n });\n }\n const dtype =\n dtypeOverride ?? resolveDefaultEnvDtype(deploymentFields.deploymentType);\n const { projectId } = await fetchTeamAndProject(\n ctx,\n deploymentFields.deploymentName,\n );\n return defaultEnvBackend(ctx, projectId, dtype);\n}\n\nfunction resolveDefaultEnvDtype(\n deploymentType: Exclude<DeploymentType, \"anonymous\">,\n): CloudDeploymentType {\n if (deploymentType === \"local\") return \"dev\";\n return deploymentType;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAgC;AAChC,iBAMO;AACP,mBAA0C;AAC1C,wBAAkC;AAClC,iBAKO;AACP,qBAAuC;AACvC,IAAAA,cAAoC;AACpC,iCAAkC;AAOlC,SAAS,qBAAkD,KAAW;AACpE,SAAO,IACJ;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF,EACC;AAAA,IACC,IAAI;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACJ;AAEA,MAAM,gBAAgB;AAAA,EACpB,IAAI,6BAAQ,KAAK,EACd,MAAM,0BAA0B,EAChC,UAAU,gBAAgB,EAC1B,QAAQ,wBAAwB,EAChC;AAAA,IACC;AAAA,EASF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,EACF,EACC,cAAc,EAAE,mBAAmB,KAAK,CAAC,EACzC,qBAAqB,KAAK;AAC/B,EAAE,OAAO,OAAO,MAAM,OAAO,YAAY,QAAQ;AAC/C,QAAM,UAAU,IAAI,gBAAgB;AAEpC,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,yBAAyB,OAAO;AAC/D,YAAM,wCAA0B,KAAK,iBAAiB;AACtD,QAAM,cAAc,UAAM,mBAAO,KAAK,SAAS,MAAM,OAAO,UAAU;AACtE,MAAI,gBAAgB,OAAO;AACzB,QAAI,WAAW,EAAE,OAAO,KAAK,CAAC;AAC9B,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AACF,CAAC;AAED,MAAM,gBAAgB;AAAA,EACpB,IAAI,6BAAQ,KAAK,EACd,UAAU,QAAQ,EAClB,QAAQ,kCAAkC,EAC1C;AAAA,IACC;AAAA,EAEF,EACC,cAAc,EAAE,mBAAmB,KAAK,CAAC,EACzC,qBAAqB,KAAK;AAC/B,EAAE,OAAO,OAAO,YAAY,UAAU,QAAQ;AAC5C,QAAM,UAAU,IAAI,gBAAgB;AAEpC,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,yBAAyB,OAAO;AAC/D,YAAM,wCAA0B,KAAK,iBAAiB;AACtD,YAAM,mBAAO,KAAK,SAAS,UAAU;AACvC,CAAC;AAED,MAAM,mBAAmB;AAAA,EACvB,IAAI,6BAAQ,QAAQ,EACjB,MAAM,IAAI,EACV,MAAM,OAAO,EACb,UAAU,QAAQ,EAClB,QAAQ,0BAA0B,EAClC;AAAA,IACC;AAAA,EAGF,EACC,cAAc,EAAE,mBAAmB,KAAK,CAAC,EACzC,qBAAqB,KAAK;AAC/B,EAAE,OAAO,OAAO,MAAM,UAAU,QAAQ;AACtC,QAAM,UAAU,IAAI,gBAAgB;AAEpC,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,yBAAyB,OAAO;AAC/D,YAAM,wCAA0B,KAAK,oBAAoB;AACzD,YAAM,sBAAU,KAAK,SAAS,IAAI;AACpC,CAAC;AAED,MAAM,iBAAiB;AAAA,EACrB,IAAI,6BAAQ,MAAM,EACf,QAAQ,4BAA4B,EACpC;AAAA,IACC;AAAA,EAEF,EACC,cAAc,EAAE,mBAAmB,KAAK,CAAC,EACzC,qBAAqB,KAAK;AAC/B,EAAE,OAAO,OAAO,UAAU,QAAQ;AAChC,QAAM,UAAU,IAAI,gBAAgB;AAEpC,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,yBAAyB,OAAO;AAC/D,YAAM,wCAA0B,KAAK,kBAAkB;AACvD,YAAM,oBAAQ,KAAK,OAAO;AAC5B,CAAC;AAEM,MAAM,aAAa,IAAI,6BAAQ,SAAS,EAC5C,QAAQ,oDAAoD,EAC5D;AAAA,EACC;AAMF,EACC,WAAW,aAAa,EACxB,WAAW,aAAa,EACxB,WAAW,gBAAgB,EAC3B,WAAW,cAAc,EACzB,YAAY,KAAK;AAMpB,eAAe,yBACb,SACmD;AACnD,QAAM,gBAAgB,oBAAoB,QAAQ,IAAI;AAEtD,MAAI,QAAQ,YAAY,QAAW;AACjC,UAAM,gBAAgB,mBAAmB,QAAQ,OAAO;AACxD,QAAI,kBAAkB,MAAM;AAC1B,YAAMC,OAAM,UAAM,8BAAc,OAAO;AACvC,aAAO,MAAMA,KAAI,MAAM;AAAA,QACrB,UAAU;AAAA,QACV,WAAW;AAAA,QACX,gBACE;AAAA,MACJ,CAAC;AAAA,IACH;AACA,QAAI,kBAAkB,QAAW;AAC/B,YAAMA,OAAM,UAAM,8BAAc,OAAO;AACvC,aAAO,MAAMA,KAAI,MAAM;AAAA,QACrB,UAAU;AAAA,QACV,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB,CAAC;AAAA,IACH;AAEA,QAAIA;AACJ,QAAI;AACJ,QAAI,cAAc,SAAS,kBAAkB;AAC3C,MAAAA,OAAM,UAAM,8BAAc,OAAO;AACjC,iBAAW;AAAA,QACT,UAAU,cAAc;AAAA,QACxB,aAAa,cAAc;AAAA,MAC7B;AAAA,IACF,OAAO;AACL,YAAM,WAAW,UAAM,iCAAoB,OAAO;AAClD,MAAAA,OAAM,SAAS;AACf,UAAI,SAAS,WAAW,qBAAqB,MAAM;AACjD,eAAO,MAAMA,KAAI,MAAM;AAAA,UACrB,UAAU;AAAA,UACV,WAAW;AAAA,UACX,gBACE;AAAA,QACJ,CAAC;AAAA,MACH;AACA,YAAM,EAAE,KAAK,IAAI,UAAM;AAAA,QACrBA;AAAA,QACA,SAAS,WAAW,iBAAiB;AAAA,MACvC;AACA,iBAAW,EAAE,UAAU,MAAM,aAAa,cAAc,YAAY;AAAA,IACtE;AAEA,UAAM,UAAU,UAAM,8CAAkBA,MAAK;AAAA,MAC3C,MAAM;AAAA,MACN,UAAU,SAAS;AAAA,MACnB,aAAa,SAAS;AAAA,IACxB,CAAC;AACD,WAAO;AAAA,MACL,KAAAA;AAAA,MACA,aAAS,qCAAkBA,MAAK,QAAQ,IAAI,aAAa;AAAA,IAC3D;AAAA,EACF;AAEA,QAAM,EAAE,KAAK,WAAW,IAAI,UAAM,iCAAoB,OAAO;AAC7D,QAAM,UAAU,MAAM;AAAA,IACpB;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACF;AACA,SAAO,EAAE,KAAK,QAAQ;AACxB;AAEA,SAAS,oBACP,MACiC;AACjC,MAAI,SAAS,OAAW,QAAO;AAC/B,MAAI,SAAS,cAAe,QAAO;AACnC,MAAI,SAAS,aAAc,QAAO;AAClC,SAAO;AACT;AAEA,SAAS,mBAAmB,OAA2C;AACrE,QAAM,QAAQ,MAAM,MAAM,GAAG;AAC7B,MAAI,MAAM,WAAW,KAAK,MAAM,CAAC,EAAE,SAAS,GAAG;AAC7C,WAAO,EAAE,MAAM,eAAe,aAAa,MAAM,CAAC,EAAE;AAAA,EACtD;AACA,MAAI,MAAM,WAAW,KAAK,MAAM,CAAC,EAAE,SAAS,KAAK,MAAM,CAAC,EAAE,SAAS,GAAG;AACpE,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,MAAM,CAAC;AAAA,MACjB,aAAa,MAAM,CAAC;AAAA,IACtB;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,yBACpB,KACA,kBAIA,eACwB;AACxB,MAAI,qBAAqB,MAAM;AAC7B,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBACE;AAAA,IACJ,CAAC;AAAA,EACH;AACA,MAAI,iBAAiB,mBAAmB,aAAa;AACnD,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBACE;AAAA,IACJ,CAAC;AAAA,EACH;AACA,QAAM,QACJ,iBAAiB,uBAAuB,iBAAiB,cAAc;AACzE,QAAM,EAAE,UAAU,IAAI,UAAM;AAAA,IAC1B;AAAA,IACA,iBAAiB;AAAA,EACnB;AACA,aAAO,qCAAkB,KAAK,WAAW,KAAK;AAChD;AAEA,SAAS,uBACP,gBACqB;AACrB,MAAI,mBAAmB,QAAS,QAAO;AACvC,SAAO;AACT;",
6
6
  "names": ["import_env", "ctx"]
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 isDemo: boolean;\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\";\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 /** @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 isDemo: boolean;\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"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cli/lib/generatedFunctionLogsApi.ts"],
4
- "sourcesContent": ["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport type paths = Record<string, never>;\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n FunctionExecutionJson: {\n cachedResult: boolean;\n caller: string;\n componentPath?: string | null;\n environment: string;\n error?: string | null;\n executionId: string;\n /** Format: double */\n executionTime: number;\n /** Format: double */\n executionTimestamp: number;\n identifier: string;\n identityType: string;\n /** @enum {string} */\n kind: \"Completion\";\n logLines: components[\"schemas\"][\"Value\"][];\n occInfo?: null | components[\"schemas\"][\"OccInfoJson\"];\n parentExecutionId?: string | null;\n requestId: string;\n /** Format: double */\n returnBytes?: number | null;\n success?: null | components[\"schemas\"][\"Value\"];\n /** Format: double */\n timestamp: number;\n udfType: components[\"schemas\"][\"UdfTypeJson\"];\n usageStats: components[\"schemas\"][\"UsageStatsJson\"];\n /** Format: double */\n userExecutionTime?: number | null;\n } | {\n componentPath?: string | null;\n executionId: string;\n identifier: string;\n /** @enum {string} */\n kind: \"Progress\";\n logLines: components[\"schemas\"][\"Value\"][];\n requestId: string;\n /** Format: double */\n timestamp: number;\n udfType: components[\"schemas\"][\"UdfTypeJson\"];\n };\n /** @enum {string} */\n LogLevelJson: \"DEBUG\" | \"ERROR\" | \"WARN\" | \"INFO\" | \"LOG\";\n LogLineJson: {\n componentPath?: string | null;\n isTruncated: boolean;\n level: components[\"schemas\"][\"LogLevelJson\"];\n messages: string[];\n systemMetadata?: null | components[\"schemas\"][\"SystemLogMetadataJson\"];\n /** Format: int64 */\n timestamp: number;\n udfPath?: string | null;\n };\n OccInfoJson: {\n componentPath?: string | null;\n documentId?: string | null;\n /** Format: int64 */\n retryCount?: number | null;\n tableName?: string | null;\n writeSource?: string | null;\n };\n StreamFunctionLogs: {\n /** Format: int32 */\n clientRequestCounter?: number | null;\n /** Format: double */\n cursor: number;\n sessionId?: string | null;\n };\n StreamUdfExecutionQueryArgs: {\n /** Format: double */\n cursor: number;\n };\n StreamUdfExecutionResponse: {\n entries: components[\"schemas\"][\"FunctionExecutionJson\"][];\n /** Format: double */\n newCursor: number;\n };\n SystemLogMetadataJson: {\n code: string;\n };\n /** @enum {string} */\n UdfTypeJson: \"Query\" | \"Mutation\" | \"Action\" | \"HttpAction\";\n UsageStatsJson: {\n /** Format: int64 */\n databaseIoReadBytes: number;\n /** Format: int64 */\n databaseIoWriteBytes: number;\n /** Format: int64 */\n databaseReadBytes: number;\n /** Format: int64 */\n databaseReadDocuments: number;\n /** Format: int64 */\n databaseWriteBytes: number;\n /** Format: int64 */\n memoryUsedMb: number;\n /** Format: int64 */\n networkEgressBytes: number;\n /** Format: int64 */\n storageReadBytes: number;\n /** Format: int64 */\n storageWriteBytes: number;\n /** Format: int64 */\n textIndexQueryBytes: number;\n /** Format: int64 */\n textIndexWriteQueryBytes: number;\n /** Format: int64 */\n vectorIndexReadBytes: number;\n /** Format: int64 */\n vectorIndexReadQueryBytes: number;\n /** Format: int64 */\n vectorIndexWriteBytes: number;\n /** Format: int64 */\n vectorIndexWriteQueryBytes: number;\n };\n Value: unknown;\n };\n responses: never;\n parameters: never;\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type FunctionExecutionJson = components['schemas']['FunctionExecutionJson'];\nexport type LogLevelJson = components['schemas']['LogLevelJson'];\nexport type LogLineJson = components['schemas']['LogLineJson'];\nexport type OccInfoJson = components['schemas']['OccInfoJson'];\nexport type StreamFunctionLogs = components['schemas']['StreamFunctionLogs'];\nexport type StreamUdfExecutionQueryArgs = components['schemas']['StreamUdfExecutionQueryArgs'];\nexport type StreamUdfExecutionResponse = components['schemas']['StreamUdfExecutionResponse'];\nexport type SystemLogMetadataJson = components['schemas']['SystemLogMetadataJson'];\nexport type UdfTypeJson = components['schemas']['UdfTypeJson'];\nexport type UsageStatsJson = components['schemas']['UsageStatsJson'];\nexport type Value = components['schemas']['Value'];\nexport type $defs = Record<string, never>;\nexport type operations = Record<string, never>;\n"],
4
+ "sourcesContent": ["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport type paths = Record<string, never>;\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n FunctionExecutionJson: {\n cachedResult: boolean;\n caller: string;\n componentPath?: string | null;\n environment: string;\n error?: string | null;\n executionId: string;\n /** Format: double */\n executionTime: number;\n /** Format: double */\n executionTimestamp: number;\n identifier: string;\n identityType: string;\n /** @enum {string} */\n kind: \"Completion\";\n logLines: components[\"schemas\"][\"Value\"][];\n occInfo?: null | components[\"schemas\"][\"OccInfoJson\"];\n parentExecutionId?: string | null;\n requestId: string;\n /** Format: double */\n returnBytes?: number | null;\n success?: null | components[\"schemas\"][\"Value\"];\n /** Format: double */\n timestamp: number;\n udfType: components[\"schemas\"][\"UdfTypeJson\"];\n usageStats: components[\"schemas\"][\"UsageStatsJson\"];\n /** Format: double */\n userExecutionTime?: number | null;\n willRetry: boolean;\n } | {\n componentPath?: string | null;\n executionId: string;\n identifier: string;\n /** @enum {string} */\n kind: \"Progress\";\n logLines: components[\"schemas\"][\"Value\"][];\n requestId: string;\n /** Format: double */\n timestamp: number;\n udfType: components[\"schemas\"][\"UdfTypeJson\"];\n };\n /** @enum {string} */\n LogLevelJson: \"DEBUG\" | \"ERROR\" | \"WARN\" | \"INFO\" | \"LOG\";\n LogLineJson: {\n componentPath?: string | null;\n isTruncated: boolean;\n level: components[\"schemas\"][\"LogLevelJson\"];\n messages: string[];\n systemMetadata?: null | components[\"schemas\"][\"SystemLogMetadataJson\"];\n /** Format: int64 */\n timestamp: number;\n udfPath?: string | null;\n };\n OccInfoJson: {\n componentPath?: string | null;\n documentId?: string | null;\n /** Format: int64 */\n retryCount?: number | null;\n tableName?: string | null;\n writeSource?: string | null;\n };\n StreamFunctionLogs: {\n /** Format: int32 */\n clientRequestCounter?: number | null;\n /** Format: double */\n cursor: number;\n sessionId?: string | null;\n };\n StreamUdfExecutionQueryArgs: {\n /** Format: double */\n cursor: number;\n };\n StreamUdfExecutionResponse: {\n entries: components[\"schemas\"][\"FunctionExecutionJson\"][];\n /** Format: double */\n newCursor: number;\n };\n SystemLogMetadataJson: {\n code: string;\n };\n /** @enum {string} */\n UdfTypeJson: \"Query\" | \"Mutation\" | \"Action\" | \"HttpAction\";\n UsageStatsJson: {\n /** Format: int64 */\n databaseIoReadBytes: number;\n /** Format: int64 */\n databaseIoWriteBytes: number;\n /** Format: int64 */\n databaseReadBytes: number;\n /** Format: int64 */\n databaseReadDocuments: number;\n /** Format: int64 */\n databaseWriteBytes: number;\n /** Format: int64 */\n memoryUsedMb: number;\n /** Format: int64 */\n networkEgressBytes: number;\n /** Format: int64 */\n storageReadBytes: number;\n /** Format: int64 */\n storageWriteBytes: number;\n /** Format: int64 */\n textIndexQueryBytes: number;\n /** Format: int64 */\n textIndexWriteQueryBytes: number;\n /** Format: int64 */\n vectorIndexReadBytes: number;\n /** Format: int64 */\n vectorIndexReadQueryBytes: number;\n /** Format: int64 */\n vectorIndexWriteBytes: number;\n /** Format: int64 */\n vectorIndexWriteQueryBytes: number;\n };\n Value: unknown;\n };\n responses: never;\n parameters: never;\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type FunctionExecutionJson = components['schemas']['FunctionExecutionJson'];\nexport type LogLevelJson = components['schemas']['LogLevelJson'];\nexport type LogLineJson = components['schemas']['LogLineJson'];\nexport type OccInfoJson = components['schemas']['OccInfoJson'];\nexport type StreamFunctionLogs = components['schemas']['StreamFunctionLogs'];\nexport type StreamUdfExecutionQueryArgs = components['schemas']['StreamUdfExecutionQueryArgs'];\nexport type StreamUdfExecutionResponse = components['schemas']['StreamUdfExecutionResponse'];\nexport type SystemLogMetadataJson = components['schemas']['SystemLogMetadataJson'];\nexport type UdfTypeJson = components['schemas']['UdfTypeJson'];\nexport type UsageStatsJson = components['schemas']['UsageStatsJson'];\nexport type Value = components['schemas']['Value'];\nexport type $defs = Record<string, never>;\nexport type operations = Record<string, never>;\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -36,7 +36,7 @@ async function warn(ctx, options) {
36
36
  );
37
37
  }
38
38
  async function teamUsageState(ctx, teamId) {
39
- const { usageState } = await (0, import_utils.bigBrainAPI)({
39
+ const { usageState } = await (0, import_utils.bigBrainAPIMaybeThrows)({
40
40
  ctx,
41
41
  method: "GET",
42
42
  path: "dashboard/teams/" + teamId + "/usage/team_usage_state"
@@ -44,7 +44,7 @@ async function teamUsageState(ctx, teamId) {
44
44
  return usageState;
45
45
  }
46
46
  async function teamSpendingLimitsState(ctx, teamId) {
47
- const response = await (0, import_utils.bigBrainAPI)({
47
+ const response = await (0, import_utils.bigBrainAPIMaybeThrows)({
48
48
  ctx,
49
49
  method: "GET",
50
50
  path: "dashboard/teams/" + teamId + "/get_spending_limits"
@@ -57,10 +57,17 @@ async function usageStateWarning(ctx, targetDeployment) {
57
57
  return;
58
58
  }
59
59
  const { teamId, team } = await (0, import_api.fetchTeamAndProject)(ctx, targetDeployment);
60
- const [usageState, spendingLimitsState] = await Promise.all([
61
- teamUsageState(ctx, teamId),
62
- teamSpendingLimitsState(ctx, teamId)
63
- ]);
60
+ let usageState;
61
+ let spendingLimitsState;
62
+ try {
63
+ [usageState, spendingLimitsState] = await Promise.all([
64
+ teamUsageState(ctx, teamId),
65
+ teamSpendingLimitsState(ctx, teamId)
66
+ ]);
67
+ } catch (err) {
68
+ (0, import_log.logVerbose)("Skipping usage state warning:", err);
69
+ return;
70
+ }
64
71
  if (spendingLimitsState === "Disabled") {
65
72
  await warn(ctx, {
66
73
  title: "Your projects are disabled because you exceeded your spending limit.",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cli/lib/usage.ts"],
4
- "sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { Context } from \"../../bundler/context.js\";\nimport { logWarning } from \"../../bundler/log.js\";\nimport { teamDashboardUrl } from \"./dashboard.js\";\nimport { fetchTeamAndProject } from \"./api.js\";\nimport { isAnonymousDeployment } from \"./deployment.js\";\nimport { bigBrainAPI } from \"./utils/utils.js\";\n\nasync function warn(\n ctx: Context,\n options: { title: string; subtitle: string; teamSlug: string },\n) {\n const { title, subtitle, teamSlug } = options;\n logWarning(chalkStderr.bold.yellow(title));\n logWarning(chalkStderr.yellow(subtitle));\n logWarning(\n chalkStderr.yellow(`Visit ${teamDashboardUrl(teamSlug)} to learn more.`),\n );\n}\n\nasync function teamUsageState(ctx: Context, teamId: number) {\n const { usageState } = (await bigBrainAPI({\n ctx,\n method: \"GET\",\n path: \"dashboard/teams/\" + teamId + \"/usage/team_usage_state\",\n })) as {\n usageState: \"Default\" | \"Approaching\" | \"Exceeded\" | \"Disabled\" | \"Paused\";\n };\n\n return usageState;\n}\n\nasync function teamSpendingLimitsState(ctx: Context, teamId: number) {\n const response = (await bigBrainAPI({\n ctx,\n method: \"GET\",\n path: \"dashboard/teams/\" + teamId + \"/get_spending_limits\",\n })) as {\n disableThresholdCents: number | null;\n state: null | \"Running\" | \"Disabled\" | \"Warning\";\n };\n\n return response.state;\n}\n\nexport async function usageStateWarning(\n ctx: Context,\n targetDeployment: string,\n) {\n // Skip the warning if the user doesn\u2019t have an auth token\n // (which can happen for instance when using a deploy key)\n const auth = ctx.bigBrainAuth();\n if (\n auth === null ||\n auth.kind === \"projectKey\" ||\n auth.kind === \"deploymentKey\" ||\n process.env.CONVEX_AGENT_MODE === \"anonymous\" ||\n isAnonymousDeployment(targetDeployment)\n ) {\n return;\n }\n const { teamId, team } = await fetchTeamAndProject(ctx, targetDeployment);\n\n const [usageState, spendingLimitsState] = await Promise.all([\n teamUsageState(ctx, teamId),\n teamSpendingLimitsState(ctx, teamId),\n ]);\n if (spendingLimitsState === \"Disabled\") {\n await warn(ctx, {\n title:\n \"Your projects are disabled because you exceeded your spending limit.\",\n subtitle: \"Increase it from the dashboard to re-enable your projects.\",\n teamSlug: team,\n });\n } else if (usageState === \"Approaching\") {\n await warn(ctx, {\n title: \"Your projects are approaching the Free plan limits.\",\n subtitle: \"Consider upgrading to avoid service interruption.\",\n teamSlug: team,\n });\n } else if (usageState === \"Exceeded\") {\n await warn(ctx, {\n title: \"Your projects are above the Free plan limits.\",\n subtitle: \"Decrease your usage or upgrade to avoid service interruption.\",\n teamSlug: team,\n });\n } else if (usageState === \"Disabled\") {\n await warn(ctx, {\n title:\n \"Your projects are disabled because the team exceeded Free plan limits.\",\n subtitle: \"Decrease your usage or upgrade to reenable your projects.\",\n teamSlug: team,\n });\n } else if (usageState === \"Paused\") {\n await warn(ctx, {\n title:\n \"Your projects are disabled because the team previously exceeded Free plan limits.\",\n subtitle: \"Restore your projects by going to the dashboard.\",\n teamSlug: team,\n });\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAE5B,iBAA2B;AAC3B,uBAAiC;AACjC,iBAAoC;AACpC,wBAAsC;AACtC,mBAA4B;AAE5B,eAAe,KACb,KACA,SACA;AACA,QAAM,EAAE,OAAO,UAAU,SAAS,IAAI;AACtC,6BAAW,yBAAY,KAAK,OAAO,KAAK,CAAC;AACzC,6BAAW,yBAAY,OAAO,QAAQ,CAAC;AACvC;AAAA,IACE,yBAAY,OAAO,aAAS,mCAAiB,QAAQ,CAAC,iBAAiB;AAAA,EACzE;AACF;AAEA,eAAe,eAAe,KAAc,QAAgB;AAC1D,QAAM,EAAE,WAAW,IAAK,UAAM,0BAAY;AAAA,IACxC;AAAA,IACA,QAAQ;AAAA,IACR,MAAM,qBAAqB,SAAS;AAAA,EACtC,CAAC;AAID,SAAO;AACT;AAEA,eAAe,wBAAwB,KAAc,QAAgB;AACnE,QAAM,WAAY,UAAM,0BAAY;AAAA,IAClC;AAAA,IACA,QAAQ;AAAA,IACR,MAAM,qBAAqB,SAAS;AAAA,EACtC,CAAC;AAKD,SAAO,SAAS;AAClB;AAEA,eAAsB,kBACpB,KACA,kBACA;AAGA,QAAM,OAAO,IAAI,aAAa;AAC9B,MACE,SAAS,QACT,KAAK,SAAS,gBACd,KAAK,SAAS,mBACd,QAAQ,IAAI,sBAAsB,mBAClC,yCAAsB,gBAAgB,GACtC;AACA;AAAA,EACF;AACA,QAAM,EAAE,QAAQ,KAAK,IAAI,UAAM,gCAAoB,KAAK,gBAAgB;AAExE,QAAM,CAAC,YAAY,mBAAmB,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC1D,eAAe,KAAK,MAAM;AAAA,IAC1B,wBAAwB,KAAK,MAAM;AAAA,EACrC,CAAC;AACD,MAAI,wBAAwB,YAAY;AACtC,UAAM,KAAK,KAAK;AAAA,MACd,OACE;AAAA,MACF,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,WAAW,eAAe,eAAe;AACvC,UAAM,KAAK,KAAK;AAAA,MACd,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,WAAW,eAAe,YAAY;AACpC,UAAM,KAAK,KAAK;AAAA,MACd,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,WAAW,eAAe,YAAY;AACpC,UAAM,KAAK,KAAK;AAAA,MACd,OACE;AAAA,MACF,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,WAAW,eAAe,UAAU;AAClC,UAAM,KAAK,KAAK;AAAA,MACd,OACE;AAAA,MACF,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AACF;",
4
+ "sourcesContent": ["import { chalkStderr } from \"chalk\";\nimport { Context } from \"../../bundler/context.js\";\nimport { logVerbose, logWarning } from \"../../bundler/log.js\";\nimport { teamDashboardUrl } from \"./dashboard.js\";\nimport { fetchTeamAndProject } from \"./api.js\";\nimport { isAnonymousDeployment } from \"./deployment.js\";\nimport { bigBrainAPIMaybeThrows } from \"./utils/utils.js\";\n\nasync function warn(\n ctx: Context,\n options: { title: string; subtitle: string; teamSlug: string },\n) {\n const { title, subtitle, teamSlug } = options;\n logWarning(chalkStderr.bold.yellow(title));\n logWarning(chalkStderr.yellow(subtitle));\n logWarning(\n chalkStderr.yellow(`Visit ${teamDashboardUrl(teamSlug)} to learn more.`),\n );\n}\n\nasync function teamUsageState(ctx: Context, teamId: number) {\n const { usageState } = (await bigBrainAPIMaybeThrows({\n ctx,\n method: \"GET\",\n path: \"dashboard/teams/\" + teamId + \"/usage/team_usage_state\",\n })) as {\n usageState: \"Default\" | \"Approaching\" | \"Exceeded\" | \"Disabled\" | \"Paused\";\n };\n\n return usageState;\n}\n\nasync function teamSpendingLimitsState(ctx: Context, teamId: number) {\n const response = (await bigBrainAPIMaybeThrows({\n ctx,\n method: \"GET\",\n path: \"dashboard/teams/\" + teamId + \"/get_spending_limits\",\n })) as {\n disableThresholdCents: number | null;\n state: null | \"Running\" | \"Disabled\" | \"Warning\";\n };\n\n return response.state;\n}\n\nexport async function usageStateWarning(\n ctx: Context,\n targetDeployment: string,\n) {\n // Skip the warning if the user doesn\u2019t have an auth token\n // (which can happen for instance when using a deploy key)\n const auth = ctx.bigBrainAuth();\n if (\n auth === null ||\n auth.kind === \"projectKey\" ||\n auth.kind === \"deploymentKey\" ||\n process.env.CONVEX_AGENT_MODE === \"anonymous\" ||\n isAnonymousDeployment(targetDeployment)\n ) {\n return;\n }\n\n const { teamId, team } = await fetchTeamAndProject(ctx, targetDeployment);\n\n let usageState: Awaited<ReturnType<typeof teamUsageState>>;\n let spendingLimitsState: Awaited<ReturnType<typeof teamSpendingLimitsState>>;\n try {\n [usageState, spendingLimitsState] = await Promise.all([\n teamUsageState(ctx, teamId),\n teamSpendingLimitsState(ctx, teamId),\n ]);\n } catch (err) {\n // Non-fatal: usage warnings are advisory, so don't block `convex dev`\n // if these endpoints error.\n logVerbose(\"Skipping usage state warning:\", err);\n return;\n }\n if (spendingLimitsState === \"Disabled\") {\n await warn(ctx, {\n title:\n \"Your projects are disabled because you exceeded your spending limit.\",\n subtitle: \"Increase it from the dashboard to re-enable your projects.\",\n teamSlug: team,\n });\n } else if (usageState === \"Approaching\") {\n await warn(ctx, {\n title: \"Your projects are approaching the Free plan limits.\",\n subtitle: \"Consider upgrading to avoid service interruption.\",\n teamSlug: team,\n });\n } else if (usageState === \"Exceeded\") {\n await warn(ctx, {\n title: \"Your projects are above the Free plan limits.\",\n subtitle: \"Decrease your usage or upgrade to avoid service interruption.\",\n teamSlug: team,\n });\n } else if (usageState === \"Disabled\") {\n await warn(ctx, {\n title:\n \"Your projects are disabled because the team exceeded Free plan limits.\",\n subtitle: \"Decrease your usage or upgrade to reenable your projects.\",\n teamSlug: team,\n });\n } else if (usageState === \"Paused\") {\n await warn(ctx, {\n title:\n \"Your projects are disabled because the team previously exceeded Free plan limits.\",\n subtitle: \"Restore your projects by going to the dashboard.\",\n teamSlug: team,\n });\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAE5B,iBAAuC;AACvC,uBAAiC;AACjC,iBAAoC;AACpC,wBAAsC;AACtC,mBAAuC;AAEvC,eAAe,KACb,KACA,SACA;AACA,QAAM,EAAE,OAAO,UAAU,SAAS,IAAI;AACtC,6BAAW,yBAAY,KAAK,OAAO,KAAK,CAAC;AACzC,6BAAW,yBAAY,OAAO,QAAQ,CAAC;AACvC;AAAA,IACE,yBAAY,OAAO,aAAS,mCAAiB,QAAQ,CAAC,iBAAiB;AAAA,EACzE;AACF;AAEA,eAAe,eAAe,KAAc,QAAgB;AAC1D,QAAM,EAAE,WAAW,IAAK,UAAM,qCAAuB;AAAA,IACnD;AAAA,IACA,QAAQ;AAAA,IACR,MAAM,qBAAqB,SAAS;AAAA,EACtC,CAAC;AAID,SAAO;AACT;AAEA,eAAe,wBAAwB,KAAc,QAAgB;AACnE,QAAM,WAAY,UAAM,qCAAuB;AAAA,IAC7C;AAAA,IACA,QAAQ;AAAA,IACR,MAAM,qBAAqB,SAAS;AAAA,EACtC,CAAC;AAKD,SAAO,SAAS;AAClB;AAEA,eAAsB,kBACpB,KACA,kBACA;AAGA,QAAM,OAAO,IAAI,aAAa;AAC9B,MACE,SAAS,QACT,KAAK,SAAS,gBACd,KAAK,SAAS,mBACd,QAAQ,IAAI,sBAAsB,mBAClC,yCAAsB,gBAAgB,GACtC;AACA;AAAA,EACF;AAEA,QAAM,EAAE,QAAQ,KAAK,IAAI,UAAM,gCAAoB,KAAK,gBAAgB;AAExE,MAAI;AACJ,MAAI;AACJ,MAAI;AACF,KAAC,YAAY,mBAAmB,IAAI,MAAM,QAAQ,IAAI;AAAA,MACpD,eAAe,KAAK,MAAM;AAAA,MAC1B,wBAAwB,KAAK,MAAM;AAAA,IACrC,CAAC;AAAA,EACH,SAAS,KAAK;AAGZ,+BAAW,iCAAiC,GAAG;AAC/C;AAAA,EACF;AACA,MAAI,wBAAwB,YAAY;AACtC,UAAM,KAAK,KAAK;AAAA,MACd,OACE;AAAA,MACF,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,WAAW,eAAe,eAAe;AACvC,UAAM,KAAK,KAAK;AAAA,MACd,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,WAAW,eAAe,YAAY;AACpC,UAAM,KAAK,KAAK;AAAA,MACd,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,WAAW,eAAe,YAAY;AACpC,UAAM,KAAK,KAAK;AAAA,MACd,OACE;AAAA,MACF,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,WAAW,eAAe,UAAU;AAClC,UAAM,KAAK,KAAK;AAAA,MACd,OACE;AAAA,MACF,UAAU;AAAA,MACV,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AACF;",
6
6
  "names": []
7
7
  }
@@ -36,13 +36,10 @@ async function createRedirectURI(ctx, apiKey, uri) {
36
36
  }
37
37
  );
38
38
  if (!response.ok) {
39
- if (response.status === 422) {
40
- const errorText2 = await response.text();
41
- if (errorText2.includes("already exists")) {
42
- return { modified: false };
43
- }
44
- }
45
39
  const errorText = await response.text();
40
+ if (response.status === 422 && errorText.includes("already exists")) {
41
+ return { modified: false };
42
+ }
46
43
  return await ctx.crash({
47
44
  exitCode: 1,
48
45
  errorType: "fatal",
@@ -89,13 +86,10 @@ async function createCORSOrigin(ctx, apiKey, origin) {
89
86
  }
90
87
  );
91
88
  if (!response.ok) {
92
- if (response.status === 409) {
93
- const errorText2 = await response.text();
94
- if (errorText2.includes("duplicate_cors_origin") || errorText2.includes("already exists")) {
95
- return { modified: false };
96
- }
97
- }
98
89
  const errorText = await response.text();
90
+ if (response.status === 409 && (errorText.includes("duplicate_cors_origin") || errorText.includes("already exists"))) {
91
+ return { modified: false };
92
+ }
99
93
  return await ctx.crash({
100
94
  exitCode: 1,
101
95
  errorType: "fatal",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/cli/lib/workos/environmentApi.ts"],
4
- "sourcesContent": ["import { Context } from \"../../../bundler/context.js\";\n\nexport interface RedirectUriResponse {\n object: \"redirect_uri\";\n id: string;\n uri: string;\n default: boolean;\n created_at: string;\n updated_at: string;\n}\n\nexport interface CorsOriginResponse {\n object: \"cors_origin\";\n id: string;\n origin: string;\n created_at: string;\n updated_at: string;\n}\n\nexport async function createRedirectURI(\n ctx: Context,\n apiKey: string,\n uri: string,\n): Promise<{ modified: boolean }> {\n const response = await fetch(\n \"https://api.workos.com/user_management/redirect_uris\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ uri }),\n },\n );\n\n if (!response.ok) {\n if (response.status === 422) {\n const errorText = await response.text();\n if (errorText.includes(\"already exists\")) {\n // This redirect URI already exists.\n return { modified: false };\n }\n }\n\n const errorText = await response.text();\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Failed to create redirect URI: ${response.status} ${errorText}`,\n });\n }\n\n return { modified: true };\n}\n\nexport async function updateAppHomepageUrl(\n ctx: Context,\n apiKey: string,\n url: string,\n): Promise<{ modified: boolean; previousUrl?: string }> {\n const response = await fetch(\n \"https://api.workos.com/user_management/app_homepage_url\",\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ url }),\n },\n );\n\n if (!response.ok) {\n const errorText = await response.text();\n\n if (response.status === 422) {\n // Validation error - likely localhost URL or other invalid format\n // Don't crash, just return that we couldn't modify it\n return { modified: false };\n }\n\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Failed to update app homepage URL: ${response.status} ${errorText}`,\n });\n }\n\n // Always returns modified: true since PUT always updates (or sets the same value)\n return { modified: true };\n}\n\nexport async function createCORSOrigin(\n ctx: Context,\n apiKey: string,\n origin: string,\n): Promise<{ modified: boolean }> {\n const response = await fetch(\n \"https://api.workos.com/user_management/cors_origins\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ origin }),\n },\n );\n\n if (!response.ok) {\n if (response.status === 409) {\n const errorText = await response.text();\n if (\n errorText.includes(\"duplicate_cors_origin\") ||\n errorText.includes(\"already exists\")\n ) {\n // This CORS origin already exists.\n return { modified: false };\n }\n }\n\n const errorText = await response.text();\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Failed to create CORS origin: ${response.status} ${errorText}`,\n });\n }\n return { modified: true };\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,eAAsB,kBACpB,KACA,QACA,KACgC;AAChC,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,MAAM;AAAA,MACjC;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,IAAI,CAAC;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,QAAI,SAAS,WAAW,KAAK;AAC3B,YAAMA,aAAY,MAAM,SAAS,KAAK;AACtC,UAAIA,WAAU,SAAS,gBAAgB,GAAG;AAExC,eAAO,EAAE,UAAU,MAAM;AAAA,MAC3B;AAAA,IACF;AAEA,UAAM,YAAY,MAAM,SAAS,KAAK;AACtC,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB,kCAAkC,SAAS,MAAM,IAAI,SAAS;AAAA,IAChF,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,UAAU,KAAK;AAC1B;AAEA,eAAsB,qBACpB,KACA,QACA,KACsD;AACtD,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,MAAM;AAAA,MACjC;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,IAAI,CAAC;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,YAAY,MAAM,SAAS,KAAK;AAEtC,QAAI,SAAS,WAAW,KAAK;AAG3B,aAAO,EAAE,UAAU,MAAM;AAAA,IAC3B;AAEA,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB,sCAAsC,SAAS,MAAM,IAAI,SAAS;AAAA,IACpF,CAAC;AAAA,EACH;AAGA,SAAO,EAAE,UAAU,KAAK;AAC1B;AAEA,eAAsB,iBACpB,KACA,QACA,QACgC;AAChC,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,MAAM;AAAA,MACjC;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,OAAO,CAAC;AAAA,IACjC;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,QAAI,SAAS,WAAW,KAAK;AAC3B,YAAMA,aAAY,MAAM,SAAS,KAAK;AACtC,UACEA,WAAU,SAAS,uBAAuB,KAC1CA,WAAU,SAAS,gBAAgB,GACnC;AAEA,eAAO,EAAE,UAAU,MAAM;AAAA,MAC3B;AAAA,IACF;AAEA,UAAM,YAAY,MAAM,SAAS,KAAK;AACtC,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB,iCAAiC,SAAS,MAAM,IAAI,SAAS;AAAA,IAC/E,CAAC;AAAA,EACH;AACA,SAAO,EAAE,UAAU,KAAK;AAC1B;",
6
- "names": ["errorText"]
4
+ "sourcesContent": ["import { Context } from \"../../../bundler/context.js\";\n\nexport interface RedirectUriResponse {\n object: \"redirect_uri\";\n id: string;\n uri: string;\n default: boolean;\n created_at: string;\n updated_at: string;\n}\n\nexport interface CorsOriginResponse {\n object: \"cors_origin\";\n id: string;\n origin: string;\n created_at: string;\n updated_at: string;\n}\n\nexport async function createRedirectURI(\n ctx: Context,\n apiKey: string,\n uri: string,\n): Promise<{ modified: boolean }> {\n const response = await fetch(\n \"https://api.workos.com/user_management/redirect_uris\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ uri }),\n },\n );\n\n if (!response.ok) {\n const errorText = await response.text();\n if (response.status === 422 && errorText.includes(\"already exists\")) {\n // This redirect URI already exists.\n return { modified: false };\n }\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Failed to create redirect URI: ${response.status} ${errorText}`,\n });\n }\n\n return { modified: true };\n}\n\nexport async function updateAppHomepageUrl(\n ctx: Context,\n apiKey: string,\n url: string,\n): Promise<{ modified: boolean; previousUrl?: string }> {\n const response = await fetch(\n \"https://api.workos.com/user_management/app_homepage_url\",\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ url }),\n },\n );\n\n if (!response.ok) {\n const errorText = await response.text();\n\n if (response.status === 422) {\n // Validation error - likely localhost URL or other invalid format\n // Don't crash, just return that we couldn't modify it\n return { modified: false };\n }\n\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Failed to update app homepage URL: ${response.status} ${errorText}`,\n });\n }\n\n // Always returns modified: true since PUT always updates (or sets the same value)\n return { modified: true };\n}\n\nexport async function createCORSOrigin(\n ctx: Context,\n apiKey: string,\n origin: string,\n): Promise<{ modified: boolean }> {\n const response = await fetch(\n \"https://api.workos.com/user_management/cors_origins\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ origin }),\n },\n );\n\n if (!response.ok) {\n const errorText = await response.text();\n if (\n response.status === 409 &&\n (errorText.includes(\"duplicate_cors_origin\") ||\n errorText.includes(\"already exists\"))\n ) {\n // This CORS origin already exists.\n return { modified: false };\n }\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage: `Failed to create CORS origin: ${response.status} ${errorText}`,\n });\n }\n return { modified: true };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,eAAsB,kBACpB,KACA,QACA,KACgC;AAChC,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,MAAM;AAAA,MACjC;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,IAAI,CAAC;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,YAAY,MAAM,SAAS,KAAK;AACtC,QAAI,SAAS,WAAW,OAAO,UAAU,SAAS,gBAAgB,GAAG;AAEnE,aAAO,EAAE,UAAU,MAAM;AAAA,IAC3B;AACA,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB,kCAAkC,SAAS,MAAM,IAAI,SAAS;AAAA,IAChF,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,UAAU,KAAK;AAC1B;AAEA,eAAsB,qBACpB,KACA,QACA,KACsD;AACtD,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,MAAM;AAAA,MACjC;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,IAAI,CAAC;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,YAAY,MAAM,SAAS,KAAK;AAEtC,QAAI,SAAS,WAAW,KAAK;AAG3B,aAAO,EAAE,UAAU,MAAM;AAAA,IAC3B;AAEA,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB,sCAAsC,SAAS,MAAM,IAAI,SAAS;AAAA,IACpF,CAAC;AAAA,EACH;AAGA,SAAO,EAAE,UAAU,KAAK;AAC1B;AAEA,eAAsB,iBACpB,KACA,QACA,QACgC;AAChC,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,eAAe,UAAU,MAAM;AAAA,MACjC;AAAA,MACA,MAAM,KAAK,UAAU,EAAE,OAAO,CAAC;AAAA,IACjC;AAAA,EACF;AAEA,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,YAAY,MAAM,SAAS,KAAK;AACtC,QACE,SAAS,WAAW,QACnB,UAAU,SAAS,uBAAuB,KACzC,UAAU,SAAS,gBAAgB,IACrC;AAEA,aAAO,EAAE,UAAU,MAAM;AAAA,IAC3B;AACA,WAAO,MAAM,IAAI,MAAM;AAAA,MACrB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,gBAAgB,iCAAiC,SAAS,MAAM,IAAI,SAAS;AAAA,IAC/E,CAAC;AAAA,EACH;AACA,SAAO,EAAE,UAAU,KAAK;AAC1B;",
6
+ "names": []
7
7
  }
package/dist/cjs/index.js CHANGED
@@ -21,5 +21,5 @@ __export(index_exports, {
21
21
  version: () => version
22
22
  });
23
23
  module.exports = __toCommonJS(index_exports);
24
- const version = "1.36.1";
24
+ const version = "1.37.0";
25
25
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export const version = \"1.36.1\";\n"],
4
+ "sourcesContent": ["export const version = \"1.37.0\";\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,UAAU;",
6
6
  "names": []
7
7
  }
@@ -37,7 +37,8 @@ __export(client_exports, {
37
37
  useConvex: () => useConvex,
38
38
  useConvexConnectionState: () => useConvexConnectionState,
39
39
  useMutation: () => useMutation,
40
- useQuery: () => useQuery
40
+ useQuery: () => useQuery,
41
+ useQuery_experimental: () => useQuery_experimental
41
42
  });
42
43
  module.exports = __toCommonJS(client_exports);
43
44
  var import_browser = require("../browser/index.js");
@@ -475,26 +476,33 @@ const ConvexProvider = ({ client, children }) => {
475
476
  children
476
477
  );
477
478
  };
478
- function useQuery(queryOrOptions, ...args) {
479
- const isObjectOptions = typeof queryOrOptions === "object" && queryOrOptions !== null && "query" in queryOrOptions;
480
- const throwOnError = isObjectOptions ? queryOrOptions.throwOnError ?? false : true;
481
- let queryReference;
482
- let argsObject = {};
483
- if (isObjectOptions) {
484
- const query = queryOrOptions.query;
485
- queryReference = typeof query === "string" ? (0, import_api.makeFunctionReference)(query) : query;
486
- if (queryOrOptions.args !== "skip") {
487
- argsObject = (0, import_common.parseArgs)(queryOrOptions.args);
488
- }
489
- } else {
490
- const query = queryOrOptions;
491
- queryReference = typeof query === "string" ? (0, import_api.makeFunctionReference)(query) : query;
492
- argsObject = args[0] === "skip" ? {} : (0, import_common.parseArgs)(args[0]);
479
+ function useQuery(query, ...args) {
480
+ const skip = args[0] === "skip";
481
+ const argsObject = args[0] === "skip" ? {} : (0, import_common.parseArgs)(args[0]);
482
+ const queryReference = typeof query === "string" ? (0, import_api.makeFunctionReference)(query) : query;
483
+ const queryName = (0, import_api.getFunctionName)(queryReference);
484
+ const queries = (0, import_react.useMemo)(
485
+ () => skip ? {} : { query: { query: queryReference, args: argsObject } },
486
+ // Stringify args so args that are semantically the same don't trigger a
487
+ // rerender. Saves developers from adding `useMemo` on every args usage.
488
+ // eslint-disable-next-line react-hooks/exhaustive-deps
489
+ [JSON.stringify((0, import_values.convexToJson)(argsObject)), queryName, skip]
490
+ );
491
+ const results = (0, import_use_queries.useQueries)(queries);
492
+ const result = results["query"];
493
+ if (result instanceof Error) {
494
+ throw result;
493
495
  }
494
- const queryName = queryReference ? (0, import_api.getFunctionName)(queryReference) : void 0;
495
- const skip = isObjectOptions && queryOrOptions.args === "skip" || !isObjectOptions && args[0] === "skip";
496
+ return result;
497
+ }
498
+ function useQuery_experimental(options) {
499
+ const throwOnError = options.throwOnError ?? false;
500
+ const queryReference = typeof options.query === "string" ? (0, import_api.makeFunctionReference)(options.query) : options.query;
501
+ const skip = options.args === "skip";
502
+ const argsObject = !skip ? (0, import_common.parseArgs)(options.args) : {};
503
+ const queryName = (0, import_api.getFunctionName)(queryReference);
496
504
  const queries = (0, import_react.useMemo)(
497
- () => skip || !queryReference ? {} : { query: { query: queryReference, args: argsObject } },
505
+ () => skip ? {} : { query: { query: queryReference, args: argsObject } },
498
506
  // Stringify args so args that are semantically the same don't trigger a
499
507
  // rerender. Saves developers from adding `useMemo` on every args usage.
500
508
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -502,34 +510,24 @@ function useQuery(queryOrOptions, ...args) {
502
510
  );
503
511
  const results = (0, import_use_queries.useQueries)(queries);
504
512
  const result = results["query"];
505
- if (isObjectOptions) {
506
- if (result instanceof Error) {
507
- if (throwOnError) {
508
- throw result;
509
- }
510
- return {
511
- data: void 0,
512
- error: result,
513
- status: "error"
514
- };
515
- }
516
- if (result === void 0) {
517
- return {
518
- data: void 0,
519
- error: void 0,
520
- status: "pending"
521
- };
513
+ if (result instanceof Error) {
514
+ if (throwOnError) {
515
+ throw result;
522
516
  }
523
517
  return {
524
- data: result,
525
- error: void 0,
526
- status: "success"
518
+ error: result,
519
+ status: "error"
527
520
  };
528
521
  }
529
- if (result instanceof Error) {
530
- throw result;
522
+ if (result === void 0) {
523
+ return {
524
+ status: "pending"
525
+ };
531
526
  }
532
- return result;
527
+ return {
528
+ data: result,
529
+ status: "success"
530
+ };
533
531
  }
534
532
  function useMutation(mutation) {
535
533
  const mutationReference = typeof mutation === "string" ? (0, import_api.makeFunctionReference)(mutation) : mutation;