convex 1.42.1 → 1.42.2

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 (132) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/browser.bundle.js +1 -1
  3. package/dist/browser.bundle.js.map +2 -2
  4. package/dist/cjs/browser/simple_client.js +2 -2
  5. package/dist/cjs/browser/simple_client.js.map +2 -2
  6. package/dist/cjs/cli/codegen_templates/common.js +6 -0
  7. package/dist/cjs/cli/codegen_templates/common.js.map +2 -2
  8. package/dist/cjs/cli/dev.js +1 -0
  9. package/dist/cjs/cli/dev.js.map +2 -2
  10. package/dist/cjs/cli/generatedApi.js.map +1 -1
  11. package/dist/cjs/cli/lib/api.js.map +2 -2
  12. package/dist/cjs/cli/lib/codegen.js +2 -1
  13. package/dist/cjs/cli/lib/codegen.js.map +2 -2
  14. package/dist/cjs/cli/lib/utils/utils.js +4 -12
  15. package/dist/cjs/cli/lib/utils/utils.js.map +2 -2
  16. package/dist/cjs/index.js +1 -1
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/react/client.js +1 -1
  19. package/dist/cjs/react/client.js.map +2 -2
  20. package/dist/cjs/react-clerk/ConvexProviderWithClerk.js +2 -1
  21. package/dist/cjs/react-clerk/ConvexProviderWithClerk.js.map +2 -2
  22. package/dist/cjs/server/database.js.map +1 -1
  23. package/dist/cjs/server/impl/meta_impl.js +2 -2
  24. package/dist/cjs/server/impl/meta_impl.js.map +2 -2
  25. package/dist/cjs/server/impl/query_impl.js.map +2 -2
  26. package/dist/cjs/server/meta.js.map +1 -1
  27. package/dist/cjs/server/query.js.map +1 -1
  28. package/dist/cjs/server/registration.js.map +1 -1
  29. package/dist/cjs/server/schema.js.map +1 -1
  30. package/dist/cjs-types/browser/simple_client.d.ts +1 -2
  31. package/dist/cjs-types/browser/simple_client.d.ts.map +1 -1
  32. package/dist/cjs-types/cli/codegen_templates/common.d.ts +12 -0
  33. package/dist/cjs-types/cli/codegen_templates/common.d.ts.map +1 -1
  34. package/dist/cjs-types/cli/codegen_templates/common.test.d.ts +2 -0
  35. package/dist/cjs-types/cli/codegen_templates/common.test.d.ts.map +1 -0
  36. package/dist/cjs-types/cli/dev.d.ts.map +1 -1
  37. package/dist/cjs-types/cli/dev.test.d.ts +2 -0
  38. package/dist/cjs-types/cli/dev.test.d.ts.map +1 -0
  39. package/dist/cjs-types/cli/generatedApi.d.ts +0 -1
  40. package/dist/cjs-types/cli/generatedApi.d.ts.map +1 -1
  41. package/dist/cjs-types/cli/lib/api.d.ts +0 -1
  42. package/dist/cjs-types/cli/lib/api.d.ts.map +1 -1
  43. package/dist/cjs-types/cli/lib/codegen.d.ts.map +1 -1
  44. package/dist/cjs-types/cli/lib/utils/utils.d.ts.map +1 -1
  45. package/dist/cjs-types/index.d.ts +1 -1
  46. package/dist/cjs-types/react/client.d.ts.map +1 -1
  47. package/dist/cjs-types/react/client_provided_base_client.test.d.ts +2 -0
  48. package/dist/cjs-types/react/client_provided_base_client.test.d.ts.map +1 -0
  49. package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -0
  50. package/dist/cjs-types/react-clerk/ConvexProviderWithClerk.d.ts.map +1 -1
  51. package/dist/cjs-types/server/database.d.ts.map +1 -1
  52. package/dist/cjs-types/server/impl/query_impl.d.ts.map +1 -1
  53. package/dist/cjs-types/server/meta.d.ts +8 -0
  54. package/dist/cjs-types/server/meta.d.ts.map +1 -1
  55. package/dist/cjs-types/server/query.d.ts.map +1 -1
  56. package/dist/cjs-types/server/registration.d.ts.map +1 -1
  57. package/dist/cjs-types/server/schema.d.ts.map +1 -1
  58. package/dist/cli.bundle.cjs +12 -14
  59. package/dist/cli.bundle.cjs.map +2 -2
  60. package/dist/esm/browser/simple_client.js +5 -3
  61. package/dist/esm/browser/simple_client.js.map +2 -2
  62. package/dist/esm/cli/codegen_templates/common.js +5 -0
  63. package/dist/esm/cli/codegen_templates/common.js.map +2 -2
  64. package/dist/esm/cli/dev.js +3 -1
  65. package/dist/esm/cli/dev.js.map +2 -2
  66. package/dist/esm/cli/lib/api.js.map +2 -2
  67. package/dist/esm/cli/lib/codegen.js +2 -1
  68. package/dist/esm/cli/lib/codegen.js.map +2 -2
  69. package/dist/esm/cli/lib/utils/utils.js +4 -12
  70. package/dist/esm/cli/lib/utils/utils.js.map +2 -2
  71. package/dist/esm/index.js +1 -1
  72. package/dist/esm/index.js.map +1 -1
  73. package/dist/esm/react/client.js +1 -1
  74. package/dist/esm/react/client.js.map +2 -2
  75. package/dist/esm/react-clerk/ConvexProviderWithClerk.js +2 -1
  76. package/dist/esm/react-clerk/ConvexProviderWithClerk.js.map +2 -2
  77. package/dist/esm/server/impl/meta_impl.js +2 -2
  78. package/dist/esm/server/impl/meta_impl.js.map +2 -2
  79. package/dist/esm/server/impl/query_impl.js.map +2 -2
  80. package/dist/esm/server/schema.js.map +1 -1
  81. package/dist/esm-types/browser/simple_client.d.ts +1 -2
  82. package/dist/esm-types/browser/simple_client.d.ts.map +1 -1
  83. package/dist/esm-types/cli/codegen_templates/common.d.ts +12 -0
  84. package/dist/esm-types/cli/codegen_templates/common.d.ts.map +1 -1
  85. package/dist/esm-types/cli/codegen_templates/common.test.d.ts +2 -0
  86. package/dist/esm-types/cli/codegen_templates/common.test.d.ts.map +1 -0
  87. package/dist/esm-types/cli/dev.d.ts.map +1 -1
  88. package/dist/esm-types/cli/dev.test.d.ts +2 -0
  89. package/dist/esm-types/cli/dev.test.d.ts.map +1 -0
  90. package/dist/esm-types/cli/generatedApi.d.ts +0 -1
  91. package/dist/esm-types/cli/generatedApi.d.ts.map +1 -1
  92. package/dist/esm-types/cli/lib/api.d.ts +0 -1
  93. package/dist/esm-types/cli/lib/api.d.ts.map +1 -1
  94. package/dist/esm-types/cli/lib/codegen.d.ts.map +1 -1
  95. package/dist/esm-types/cli/lib/utils/utils.d.ts.map +1 -1
  96. package/dist/esm-types/index.d.ts +1 -1
  97. package/dist/esm-types/react/client.d.ts.map +1 -1
  98. package/dist/esm-types/react/client_provided_base_client.test.d.ts +2 -0
  99. package/dist/esm-types/react/client_provided_base_client.test.d.ts.map +1 -0
  100. package/dist/esm-types/react-clerk/ConvexProviderWithClerk.d.ts +1 -0
  101. package/dist/esm-types/react-clerk/ConvexProviderWithClerk.d.ts.map +1 -1
  102. package/dist/esm-types/server/database.d.ts.map +1 -1
  103. package/dist/esm-types/server/impl/query_impl.d.ts.map +1 -1
  104. package/dist/esm-types/server/meta.d.ts +8 -0
  105. package/dist/esm-types/server/meta.d.ts.map +1 -1
  106. package/dist/esm-types/server/query.d.ts.map +1 -1
  107. package/dist/esm-types/server/registration.d.ts.map +1 -1
  108. package/dist/esm-types/server/schema.d.ts.map +1 -1
  109. package/dist/react.bundle.js +2 -2
  110. package/dist/react.bundle.js.map +2 -2
  111. package/package.json +2 -2
  112. package/src/browser/simple_client.ts +12 -10
  113. package/src/cli/codegen_templates/common.test.ts +52 -0
  114. package/src/cli/codegen_templates/common.ts +17 -0
  115. package/src/cli/dev.test.ts +157 -0
  116. package/src/cli/dev.ts +7 -0
  117. package/src/cli/generatedApi.ts +0 -1
  118. package/src/cli/lib/api.ts +0 -1
  119. package/src/cli/lib/codegen.ts +2 -1
  120. package/src/cli/lib/config.test.ts +1 -4
  121. package/src/cli/lib/utils/utils.ts +4 -12
  122. package/src/index.ts +1 -1
  123. package/src/react/client.ts +23 -6
  124. package/src/react/client_provided_base_client.test.tsx +56 -0
  125. package/src/react-clerk/ConvexProviderWithClerk.tsx +3 -1
  126. package/src/server/database.ts +6 -4
  127. package/src/server/impl/meta_impl.ts +2 -2
  128. package/src/server/impl/query_impl.ts +1 -3
  129. package/src/server/meta.ts +8 -0
  130. package/src/server/query.ts +9 -6
  131. package/src/server/registration.ts +10 -10
  132. package/src/server/schema.ts +3 -2
@@ -25,8 +25,8 @@ __export(simple_client_exports, {
25
25
  });
26
26
  module.exports = __toCommonJS(simple_client_exports);
27
27
  var import_common = require("../common/index.js");
28
- var import_index = require("./index.js");
29
28
  var import_api = require("../server/api.js");
29
+ var import_client = require("./sync/client.js");
30
30
  var import_paginated_query_client = require("./sync/paginated_query_client.js");
31
31
  var import_udf_path_utils = require("./sync/udf_path_utils.js");
32
32
  let defaultWebSocketConstructor;
@@ -60,7 +60,7 @@ class ConvexClient {
60
60
  baseOptions.unsavedChangesWarning = false;
61
61
  }
62
62
  if (!this.disabled) {
63
- this._client = new import_index.BaseConvexClient(
63
+ this._client = new import_client.BaseConvexClient(
64
64
  address,
65
65
  () => {
66
66
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/browser/simple_client.ts"],
4
- "sourcesContent": ["import { validateDeploymentUrl } from \"../common/index.js\";\nimport {\n BaseConvexClient,\n BaseConvexClientOptions,\n MutationOptions,\n PaginatedQueryToken,\n QueryToken,\n UserIdentityAttributes,\n} from \"./index.js\";\nimport {\n FunctionArgs,\n FunctionReference,\n FunctionReturnType,\n PaginationResult,\n} from \"../server/index.js\";\nimport { getFunctionName } from \"../server/api.js\";\nimport { AuthTokenFetcher } from \"./sync/authentication_manager.js\";\nimport { ConnectionState } from \"./sync/client.js\";\nimport {\n ExtendedTransition,\n PaginatedQueryClient,\n} from \"./sync/paginated_query_client.js\";\nimport { PaginatedQueryResult } from \"./sync/pagination.js\";\nimport { serializedQueryTokenIsPaginated } from \"./sync/udf_path_utils.js\";\n\n// In Node.js builds this points to a bundled WebSocket implementation. If no\n// WebSocket implementation is manually specified or globally available,\n// this one is used.\nlet defaultWebSocketConstructor: typeof WebSocket | undefined;\n\n/** internal */\nexport function setDefaultWebSocketConstructor(ws: typeof WebSocket) {\n defaultWebSocketConstructor = ws;\n}\n\nexport type ConvexClientOptions = BaseConvexClientOptions & {\n /**\n * `disabled` makes onUpdate callback registration a no-op and actions,\n * mutations and one-shot queries throw. Setting disabled to true may be\n * useful for server-side rendering, where subscriptions don't make sense.\n */\n disabled?: boolean;\n /**\n * Whether to prompt users in browsers about queued or in-flight mutations.\n * This only works in environments where `window.onbeforeunload` is available.\n *\n * Defaults to true when `window` is defined, otherwise false.\n */\n unsavedChangesWarning?: boolean;\n};\n\n/**\n * Stops callbacks from running.\n *\n * @public\n */\nexport type Unsubscribe<T> = {\n /** Stop calling callback when query results changes. If this is the last listener on this query, stop received updates. */\n (): void;\n /** Stop calling callback when query results changes. If this is the last listener on this query, stop received updates. */\n unsubscribe(): void;\n /** Get the last known value, possibly with local optimistic updates applied. */\n getCurrentValue(): T | undefined;\n /** @internal */\n getQueryLogs(): string[] | undefined;\n};\n\n/**\n * Subscribes to Convex query functions and executes mutations and actions over a WebSocket.\n *\n * Optimistic updates for mutations are not provided for this client.\n * Third party clients may choose to wrap {@link browser.BaseConvexClient} for additional control.\n *\n * ```ts\n * const client = new ConvexClient(\"https://happy-otter-123.convex.cloud\");\n * const unsubscribe = client.onUpdate(api.messages.list, {}, (messages) => {\n * console.log(messages[0].body);\n * });\n * ```\n *\n * @public\n */\nexport class ConvexClient {\n private listeners: Set<QueryInfo>;\n private _client: BaseConvexClient | undefined;\n private _paginatedClient: PaginatedQueryClient | undefined;\n // A synthetic server event to run callbacks the first time\n private callNewListenersWithCurrentValuesTimer:\n | ReturnType<typeof setTimeout>\n | undefined;\n private _closed: boolean;\n private _disabled: boolean;\n /**\n * Once closed no registered callbacks will fire again.\n */\n get closed(): boolean {\n return this._closed;\n }\n get client(): BaseConvexClient {\n if (this._client) return this._client;\n throw new Error(\"ConvexClient is disabled\");\n }\n /**\n * @internal\n */\n get paginatedClient(): PaginatedQueryClient {\n if (this._paginatedClient) return this._paginatedClient;\n throw new Error(\"ConvexClient is disabled\");\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Construct a client and immediately initiate a WebSocket connection to the passed address.\n *\n * @public\n */\n constructor(address: string, options: ConvexClientOptions = {}) {\n if (options.skipConvexDeploymentUrlCheck !== true) {\n validateDeploymentUrl(address);\n }\n const { disabled, ...baseOptions } = options;\n this._closed = false;\n this._disabled = !!disabled;\n if (\n defaultWebSocketConstructor &&\n !(\"webSocketConstructor\" in baseOptions) &&\n typeof WebSocket === \"undefined\"\n ) {\n baseOptions.webSocketConstructor = defaultWebSocketConstructor;\n }\n if (\n typeof window === \"undefined\" &&\n !(\"unsavedChangesWarning\" in baseOptions)\n ) {\n baseOptions.unsavedChangesWarning = false;\n }\n if (!this.disabled) {\n this._client = new BaseConvexClient(\n address,\n () => {}, // NOP, let the paginated query client do it all\n baseOptions,\n );\n this._paginatedClient = new PaginatedQueryClient(\n this._client,\n (transition) => this._transition(transition),\n );\n }\n this.listeners = new Set();\n }\n\n /**\n * Call a callback whenever a new result for a query is received. The callback\n * will run soon after being registered if a result for the query is already\n * in memory.\n *\n * The return value is an {@link Unsubscribe} object which is both a function\n * an an object with properties. Both of the patterns below work with this object:\n *\n *```ts\n * // call the return value as a function\n * const unsubscribe = client.onUpdate(api.messages.list, {}, (messages) => {\n * console.log(messages);\n * });\n * unsubscribe();\n *\n * // unpack the return value into its properties\n * const {\n * getCurrentValue,\n * unsubscribe,\n * } = client.onUpdate(api.messages.list, {}, (messages) => {\n * console.log(messages);\n * });\n *```\n *\n * @param query - A {@link server.FunctionReference} for the public query to run.\n * @param args - The arguments to run the query with.\n * @param callback - Function to call when the query result updates.\n * @param onError - Function to call when the query result updates with an error.\n * If not provided, errors will be thrown instead of calling the callback.\n *\n * @return an {@link Unsubscribe} function to stop calling the onUpdate function.\n */\n onUpdate<Query extends FunctionReference<\"query\">>(\n query: Query,\n args: FunctionArgs<Query>,\n callback: (result: FunctionReturnType<Query>) => unknown,\n onError?: (e: Error) => unknown,\n ): Unsubscribe<Query[\"_returnType\"]> {\n if (this.disabled) {\n return this.createDisabledUnsubscribe<Query[\"_returnType\"]>();\n }\n\n // BaseConvexClient takes care of deduplicating queries subscriptions...\n const { queryToken, unsubscribe } = this.client.subscribe(\n getFunctionName(query),\n args,\n );\n\n // ...but we still need to bookkeep callbacks to actually call them.\n const queryInfo: QueryInfo = {\n queryToken,\n callback,\n onError,\n unsubscribe,\n hasEverRun: false,\n query,\n args,\n paginationOptions: undefined,\n };\n this.listeners.add(queryInfo);\n\n // If the callback is registered for a query with a result immediately available\n // schedule a fake transition to call the callback soon instead of waiting for\n // a new server update (which could take seconds or days).\n if (\n this.queryResultReady(queryToken) &&\n this.callNewListenersWithCurrentValuesTimer === undefined\n ) {\n this.callNewListenersWithCurrentValuesTimer = setTimeout(\n () => this.callNewListenersWithCurrentValues(),\n 0,\n );\n }\n\n const unsubscribeProps: RemoveCallSignature<\n Unsubscribe<Query[\"_returnType\"]>\n > = {\n unsubscribe: () => {\n if (this.closed) {\n // all unsubscribes already ran\n return;\n }\n this.listeners.delete(queryInfo);\n unsubscribe();\n },\n getCurrentValue: () => this.client.localQueryResultByToken(queryToken),\n getQueryLogs: () => this.client.localQueryLogs(queryToken),\n };\n const ret = unsubscribeProps.unsubscribe as Unsubscribe<\n Query[\"_returnType\"]\n >;\n Object.assign(ret, unsubscribeProps);\n return ret;\n }\n\n /**\n * Call a callback whenever a new result for a paginated query is received.\n *\n * This is an experimental preview: the final API may change.\n * In particular, caching behavior, page splitting, and required paginated query options\n * may change.\n *\n * @param query - A {@link server.FunctionReference} for the public query to run.\n * @param args - The arguments to run the query with.\n * @param options - Options for the paginated query including initialNumItems and id.\n * @param callback - Function to call when the query result updates.\n * @param onError - Function to call when the query result updates with an error.\n *\n * @return an {@link Unsubscribe} function to stop calling the callback.\n */\n onPaginatedUpdate_experimental<Query extends FunctionReference<\"query\">>(\n query: Query,\n args: FunctionArgs<Query>,\n options: { initialNumItems: number },\n callback: (result: PaginationResult<FunctionReturnType<Query>>) => unknown,\n onError?: (e: Error) => unknown,\n ): Unsubscribe<PaginatedQueryResult<FunctionReturnType<Query>[]>> {\n if (this.disabled) {\n return this.createDisabledUnsubscribe<\n PaginatedQueryResult<FunctionReturnType<Query>>\n >();\n }\n\n const paginationOptions = {\n initialNumItems: options.initialNumItems,\n id: -1,\n };\n\n const { paginatedQueryToken, unsubscribe } = this.paginatedClient.subscribe(\n getFunctionName(query),\n args,\n // Simple client doesn't use IDs, there's no expectation that these queries remain separate.\n paginationOptions,\n );\n\n const queryInfo: QueryInfo = {\n queryToken: paginatedQueryToken,\n callback,\n onError,\n unsubscribe,\n hasEverRun: false,\n query,\n args,\n paginationOptions,\n };\n this.listeners.add(queryInfo);\n\n // If the callback is registered for a query with a result immediately available\n // schedule a fake transition to call the callback soon instead of waiting for\n // a new server update (which could take seconds or days).\n if (\n !!this.paginatedClient.localQueryResultByToken(paginatedQueryToken) &&\n this.callNewListenersWithCurrentValuesTimer === undefined\n ) {\n this.callNewListenersWithCurrentValuesTimer = setTimeout(\n () => this.callNewListenersWithCurrentValues(),\n 0,\n );\n }\n\n const unsubscribeProps: RemoveCallSignature<\n Unsubscribe<PaginatedQueryResult<FunctionReturnType<Query>[]>>\n > = {\n unsubscribe: () => {\n if (this.closed) {\n // all unsubscribes already ran\n return;\n }\n this.listeners.delete(queryInfo);\n unsubscribe();\n },\n getCurrentValue: () => {\n const result = this.paginatedClient.localQueryResult(\n getFunctionName(query),\n args,\n paginationOptions,\n );\n // cast to apply the specific function type\n return result as\n | PaginatedQueryResult<FunctionReturnType<Query>>\n | undefined;\n },\n getQueryLogs: () => [], // Paginated queries don't aggregate their logs\n };\n const ret = unsubscribeProps.unsubscribe as Unsubscribe<\n PaginatedQueryResult<FunctionReturnType<Query>>\n >;\n Object.assign(ret, unsubscribeProps);\n return ret;\n }\n\n // Run all callbacks that have never been run before if they have a query\n // result available now.\n private callNewListenersWithCurrentValues() {\n this.callNewListenersWithCurrentValuesTimer = undefined;\n this._transition({ queries: [], paginatedQueries: [] }, true);\n }\n\n private queryResultReady(queryToken: QueryToken): boolean {\n return this.client.hasLocalQueryResultByToken(queryToken);\n }\n\n private createDisabledUnsubscribe<T>(): Unsubscribe<T> {\n const disabledUnsubscribe = (() => {}) as Unsubscribe<T>;\n const unsubscribeProps: RemoveCallSignature<Unsubscribe<T>> = {\n unsubscribe: disabledUnsubscribe,\n getCurrentValue: () => undefined,\n getQueryLogs: () => undefined,\n };\n Object.assign(disabledUnsubscribe, unsubscribeProps);\n return disabledUnsubscribe;\n }\n\n async close() {\n if (this.disabled) return;\n // prevent pending updates\n this.listeners.clear();\n this._closed = true;\n if (this._paginatedClient) {\n this._paginatedClient = undefined;\n }\n return this.client.close();\n }\n\n /**\n * Get the current JWT auth token and decoded claims.\n */\n getAuth(): { token: string; decoded: Record<string, any> } | undefined {\n if (this.disabled) return;\n return this.client.getCurrentAuthClaims();\n }\n\n /**\n * Set the authentication token to be used for subsequent queries and mutations.\n * `fetchToken` will be called automatically again if a token expires.\n * `fetchToken` should return `null` if the token cannot be retrieved, for example\n * when the user's rights were permanently revoked.\n * @param fetchToken - an async function returning the JWT (typically an OpenID Connect Identity Token)\n * @param onChange - a callback that will be called when the authentication status changes\n */\n setAuth(\n fetchToken: AuthTokenFetcher,\n onChange?: (isAuthenticated: boolean) => void,\n ) {\n if (this.disabled) return;\n this.client.setAuth(\n fetchToken,\n onChange ??\n (() => {\n // Do nothing\n }),\n );\n }\n\n /**\n * @internal\n */\n setAdminAuth(token: string, identity?: UserIdentityAttributes) {\n if (this.closed) {\n throw new Error(\"ConvexClient has already been closed.\");\n }\n if (this.disabled) return;\n this.client.setAdminAuth(token, identity);\n }\n\n /**\n * @internal\n */\n _transition(\n {\n queries,\n paginatedQueries,\n }: Pick<ExtendedTransition, \"queries\" | \"paginatedQueries\">,\n callNewListeners = false,\n ) {\n const updatedQueries = [\n ...queries.map((q) => q.token),\n ...paginatedQueries.map((q) => q.token),\n ];\n\n // Deduping subscriptions happens in the BaseConvexClient, so not much to do here.\n\n // Call all callbacks in the order they were registered\n for (const queryInfo of this.listeners) {\n const { callback, queryToken, onError, hasEverRun } = queryInfo;\n const isPaginatedQuery = serializedQueryTokenIsPaginated(queryToken);\n\n // What does it mean to have a paginated query result ready? I think it's\n // always going to fire immediately.\n const hasResultReady = isPaginatedQuery\n ? !!this.paginatedClient.localQueryResultByToken(queryToken)\n : this.client.hasLocalQueryResultByToken(queryToken);\n\n if (\n updatedQueries.includes(queryToken) ||\n (callNewListeners && !hasEverRun && hasResultReady)\n ) {\n queryInfo.hasEverRun = true;\n let newValue;\n try {\n if (isPaginatedQuery) {\n newValue = this.paginatedClient.localQueryResultByToken(queryToken);\n } else {\n newValue = this.client.localQueryResultByToken(queryToken);\n }\n } catch (error) {\n if (!(error instanceof Error)) throw error;\n if (onError) {\n onError(\n error,\n \"Second argument to onUpdate onError is reserved for later use\",\n );\n } else {\n // Make some noise without unsubscribing or failing to call other callbacks.\n void Promise.reject(error);\n }\n continue;\n }\n callback(\n newValue,\n \"Second argument to onUpdate callback is reserved for later use\",\n );\n }\n }\n }\n\n /**\n * Execute a mutation function.\n *\n * @param mutation - A {@link server.FunctionReference} for the public mutation\n * to run.\n * @param args - An arguments object for the mutation.\n * @param options - A {@link MutationOptions} options object for the mutation.\n * @returns A promise of the mutation's result.\n */\n async mutation<Mutation extends FunctionReference<\"mutation\">>(\n mutation: Mutation,\n args: FunctionArgs<Mutation>,\n options?: MutationOptions,\n ): Promise<Awaited<FunctionReturnType<Mutation>>> {\n if (this.disabled) throw new Error(\"ConvexClient is disabled\");\n return await this.client.mutation(getFunctionName(mutation), args, options);\n }\n\n /**\n * Execute an action function.\n *\n * @param action - A {@link server.FunctionReference} for the public action\n * to run.\n * @param args - An arguments object for the action.\n * @returns A promise of the action's result.\n */\n async action<Action extends FunctionReference<\"action\">>(\n action: Action,\n args: FunctionArgs<Action>,\n ): Promise<Awaited<FunctionReturnType<Action>>> {\n if (this.disabled) throw new Error(\"ConvexClient is disabled\");\n return await this.client.action(getFunctionName(action), args);\n }\n\n /**\n * Fetch a query result once.\n *\n * @param query - A {@link server.FunctionReference} for the public query\n * to run.\n * @param args - An arguments object for the query.\n * @returns A promise of the query's result.\n */\n async query<Query extends FunctionReference<\"query\">>(\n query: Query,\n args: Query[\"_args\"],\n ): Promise<Awaited<Query[\"_returnType\"]>> {\n if (this.disabled) throw new Error(\"ConvexClient is disabled\");\n const value = this.client.localQueryResult(getFunctionName(query), args) as\n | Awaited<Query[\"_returnType\"]>\n | undefined;\n if (value !== undefined) return Promise.resolve(value);\n\n return new Promise((resolve, reject) => {\n const { unsubscribe } = this.onUpdate(\n query,\n args,\n (value) => {\n unsubscribe();\n resolve(value);\n },\n (e: Error) => {\n unsubscribe();\n reject(e);\n },\n );\n });\n }\n\n /**\n * Get the current {@link ConnectionState} between the client and the Convex\n * backend.\n *\n * @returns The {@link ConnectionState} with the Convex backend.\n */\n connectionState(): ConnectionState {\n if (this.disabled) throw new Error(\"ConvexClient is disabled\");\n return this.client.connectionState();\n }\n\n /**\n * Subscribe to the {@link ConnectionState} between the client and the Convex\n * backend, calling a callback each time it changes.\n *\n * Subscribed callbacks will be called when any part of ConnectionState changes.\n * ConnectionState may grow in future versions (e.g. to provide a array of\n * inflight requests) in which case callbacks would be called more frequently.\n *\n * @returns An unsubscribe function to stop listening.\n */\n subscribeToConnectionState(\n cb: (connectionState: ConnectionState) => void,\n ): () => void {\n if (this.disabled) return () => {};\n return this.client.subscribeToConnectionState(cb);\n }\n}\n\n// internal information tracked about each registered callback\ntype QueryInfo = {\n callback: (result: any, meta: unknown) => unknown;\n onError: ((e: Error, meta: unknown) => unknown) | undefined;\n unsubscribe: () => void;\n queryToken: QueryToken | PaginatedQueryToken;\n hasEverRun: boolean;\n // query, args and paginationOptions are just here for debugging, the queryToken is authoritative\n query: FunctionReference<\"query\">;\n args: any;\n paginationOptions: { initialNumItems: number; id: number } | undefined;\n};\n\n// helps to construct objects with a call signature\ntype RemoveCallSignature<T> = Omit<T, never>;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { validateDeploymentUrl } from \"../common/index.js\";\nimport {\n FunctionArgs,\n FunctionReference,\n FunctionReturnType,\n PaginationResult,\n} from \"../server/index.js\";\nimport { getFunctionName } from \"../server/api.js\";\nimport { AuthTokenFetcher } from \"./sync/authentication_manager.js\";\nimport {\n BaseConvexClient,\n BaseConvexClientOptions,\n ConnectionState,\n MutationOptions,\n} from \"./sync/client.js\";\nimport {\n ExtendedTransition,\n PaginatedQueryClient,\n} from \"./sync/paginated_query_client.js\";\nimport { PaginatedQueryResult } from \"./sync/pagination.js\";\nimport { UserIdentityAttributes } from \"./sync/protocol.js\";\nimport {\n PaginatedQueryToken,\n QueryToken,\n serializedQueryTokenIsPaginated,\n} from \"./sync/udf_path_utils.js\";\n\n// In Node.js builds this points to a bundled WebSocket implementation. If no\n// WebSocket implementation is manually specified or globally available,\n// this one is used.\nlet defaultWebSocketConstructor: typeof WebSocket | undefined;\n\n/** internal */\nexport function setDefaultWebSocketConstructor(ws: typeof WebSocket) {\n defaultWebSocketConstructor = ws;\n}\n\nexport type ConvexClientOptions = BaseConvexClientOptions & {\n /**\n * `disabled` makes onUpdate callback registration a no-op and actions,\n * mutations and one-shot queries throw. Setting disabled to true may be\n * useful for server-side rendering, where subscriptions don't make sense.\n */\n disabled?: boolean;\n /**\n * Whether to prompt users in browsers about queued or in-flight mutations.\n * This only works in environments where `window.onbeforeunload` is available.\n *\n * Defaults to true when `window` is defined, otherwise false.\n */\n unsavedChangesWarning?: boolean;\n};\n\n/**\n * Stops callbacks from running.\n *\n * @public\n */\nexport type Unsubscribe<T> = {\n /** Stop calling callback when query results changes. If this is the last listener on this query, stop received updates. */\n (): void;\n /** Stop calling callback when query results changes. If this is the last listener on this query, stop received updates. */\n unsubscribe(): void;\n /** Get the last known value, possibly with local optimistic updates applied. */\n getCurrentValue(): T | undefined;\n /** @internal */\n getQueryLogs(): string[] | undefined;\n};\n\n/**\n * Subscribes to Convex query functions and executes mutations and actions over a WebSocket.\n *\n * Optimistic updates for mutations are not provided for this client.\n * Third party clients may choose to wrap {@link browser.BaseConvexClient} for additional control.\n *\n * ```ts\n * const client = new ConvexClient(\"https://happy-otter-123.convex.cloud\");\n * const unsubscribe = client.onUpdate(api.messages.list, {}, (messages) => {\n * console.log(messages[0].body);\n * });\n * ```\n *\n * @public\n */\nexport class ConvexClient {\n private listeners: Set<QueryInfo>;\n private _client: BaseConvexClient | undefined;\n private _paginatedClient: PaginatedQueryClient | undefined;\n // A synthetic server event to run callbacks the first time\n private callNewListenersWithCurrentValuesTimer:\n | ReturnType<typeof setTimeout>\n | undefined;\n private _closed: boolean;\n private _disabled: boolean;\n /**\n * Once closed no registered callbacks will fire again.\n */\n get closed(): boolean {\n return this._closed;\n }\n get client(): BaseConvexClient {\n if (this._client) return this._client;\n throw new Error(\"ConvexClient is disabled\");\n }\n /**\n * @internal\n */\n get paginatedClient(): PaginatedQueryClient {\n if (this._paginatedClient) return this._paginatedClient;\n throw new Error(\"ConvexClient is disabled\");\n }\n get disabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Construct a client and immediately initiate a WebSocket connection to the passed address.\n *\n * @public\n */\n constructor(address: string, options: ConvexClientOptions = {}) {\n if (options.skipConvexDeploymentUrlCheck !== true) {\n validateDeploymentUrl(address);\n }\n const { disabled, ...baseOptions } = options;\n this._closed = false;\n this._disabled = !!disabled;\n if (\n defaultWebSocketConstructor &&\n !(\"webSocketConstructor\" in baseOptions) &&\n typeof WebSocket === \"undefined\"\n ) {\n baseOptions.webSocketConstructor = defaultWebSocketConstructor;\n }\n if (\n typeof window === \"undefined\" &&\n !(\"unsavedChangesWarning\" in baseOptions)\n ) {\n baseOptions.unsavedChangesWarning = false;\n }\n if (!this.disabled) {\n this._client = new BaseConvexClient(\n address,\n () => {}, // NOP, let the paginated query client do it all\n baseOptions,\n );\n this._paginatedClient = new PaginatedQueryClient(\n this._client,\n (transition) => this._transition(transition),\n );\n }\n this.listeners = new Set();\n }\n\n /**\n * Call a callback whenever a new result for a query is received. The callback\n * will run soon after being registered if a result for the query is already\n * in memory.\n *\n * The return value is an {@link Unsubscribe} object which is both a function\n * an an object with properties. Both of the patterns below work with this object:\n *\n *```ts\n * // call the return value as a function\n * const unsubscribe = client.onUpdate(api.messages.list, {}, (messages) => {\n * console.log(messages);\n * });\n * unsubscribe();\n *\n * // unpack the return value into its properties\n * const {\n * getCurrentValue,\n * unsubscribe,\n * } = client.onUpdate(api.messages.list, {}, (messages) => {\n * console.log(messages);\n * });\n *```\n *\n * @param query - A {@link server.FunctionReference} for the public query to run.\n * @param args - The arguments to run the query with.\n * @param callback - Function to call when the query result updates.\n * @param onError - Function to call when the query result updates with an error.\n * If not provided, errors will be thrown instead of calling the callback.\n *\n * @return an {@link Unsubscribe} function to stop calling the onUpdate function.\n */\n onUpdate<Query extends FunctionReference<\"query\">>(\n query: Query,\n args: FunctionArgs<Query>,\n callback: (result: FunctionReturnType<Query>) => unknown,\n onError?: (e: Error) => unknown,\n ): Unsubscribe<Query[\"_returnType\"]> {\n if (this.disabled) {\n return this.createDisabledUnsubscribe<Query[\"_returnType\"]>();\n }\n\n // BaseConvexClient takes care of deduplicating queries subscriptions...\n const { queryToken, unsubscribe } = this.client.subscribe(\n getFunctionName(query),\n args,\n );\n\n // ...but we still need to bookkeep callbacks to actually call them.\n const queryInfo: QueryInfo = {\n queryToken,\n callback,\n onError,\n unsubscribe,\n hasEverRun: false,\n query,\n args,\n paginationOptions: undefined,\n };\n this.listeners.add(queryInfo);\n\n // If the callback is registered for a query with a result immediately available\n // schedule a fake transition to call the callback soon instead of waiting for\n // a new server update (which could take seconds or days).\n if (\n this.queryResultReady(queryToken) &&\n this.callNewListenersWithCurrentValuesTimer === undefined\n ) {\n this.callNewListenersWithCurrentValuesTimer = setTimeout(\n () => this.callNewListenersWithCurrentValues(),\n 0,\n );\n }\n\n const unsubscribeProps: RemoveCallSignature<\n Unsubscribe<Query[\"_returnType\"]>\n > = {\n unsubscribe: () => {\n if (this.closed) {\n // all unsubscribes already ran\n return;\n }\n this.listeners.delete(queryInfo);\n unsubscribe();\n },\n getCurrentValue: () => this.client.localQueryResultByToken(queryToken),\n getQueryLogs: () => this.client.localQueryLogs(queryToken),\n };\n const ret = unsubscribeProps.unsubscribe as Unsubscribe<\n Query[\"_returnType\"]\n >;\n Object.assign(ret, unsubscribeProps);\n return ret;\n }\n\n /**\n * Call a callback whenever a new result for a paginated query is received.\n *\n * This is an experimental preview: the final API may change.\n * In particular, caching behavior, page splitting, and required paginated query options\n * may change.\n *\n * @param query - A {@link server.FunctionReference} for the public query to run.\n * @param args - The arguments to run the query with.\n * @param options - Options for the paginated query including initialNumItems and id.\n * @param callback - Function to call when the query result updates.\n * @param onError - Function to call when the query result updates with an error.\n *\n * @return an {@link Unsubscribe} function to stop calling the callback.\n */\n onPaginatedUpdate_experimental<Query extends FunctionReference<\"query\">>(\n query: Query,\n args: FunctionArgs<Query>,\n options: { initialNumItems: number },\n callback: (result: PaginationResult<FunctionReturnType<Query>>) => unknown,\n onError?: (e: Error) => unknown,\n ): Unsubscribe<PaginatedQueryResult<FunctionReturnType<Query>[]>> {\n if (this.disabled) {\n return this.createDisabledUnsubscribe<\n PaginatedQueryResult<FunctionReturnType<Query>>\n >();\n }\n\n const paginationOptions = {\n initialNumItems: options.initialNumItems,\n id: -1,\n };\n\n const { paginatedQueryToken, unsubscribe } = this.paginatedClient.subscribe(\n getFunctionName(query),\n args,\n // Simple client doesn't use IDs, there's no expectation that these queries remain separate.\n paginationOptions,\n );\n\n const queryInfo: QueryInfo = {\n queryToken: paginatedQueryToken,\n callback,\n onError,\n unsubscribe,\n hasEverRun: false,\n query,\n args,\n paginationOptions,\n };\n this.listeners.add(queryInfo);\n\n // If the callback is registered for a query with a result immediately available\n // schedule a fake transition to call the callback soon instead of waiting for\n // a new server update (which could take seconds or days).\n if (\n !!this.paginatedClient.localQueryResultByToken(paginatedQueryToken) &&\n this.callNewListenersWithCurrentValuesTimer === undefined\n ) {\n this.callNewListenersWithCurrentValuesTimer = setTimeout(\n () => this.callNewListenersWithCurrentValues(),\n 0,\n );\n }\n\n const unsubscribeProps: RemoveCallSignature<\n Unsubscribe<PaginatedQueryResult<FunctionReturnType<Query>[]>>\n > = {\n unsubscribe: () => {\n if (this.closed) {\n // all unsubscribes already ran\n return;\n }\n this.listeners.delete(queryInfo);\n unsubscribe();\n },\n getCurrentValue: () => {\n const result = this.paginatedClient.localQueryResult(\n getFunctionName(query),\n args,\n paginationOptions,\n );\n // cast to apply the specific function type\n return result as\n | PaginatedQueryResult<FunctionReturnType<Query>>\n | undefined;\n },\n getQueryLogs: () => [], // Paginated queries don't aggregate their logs\n };\n const ret = unsubscribeProps.unsubscribe as Unsubscribe<\n PaginatedQueryResult<FunctionReturnType<Query>>\n >;\n Object.assign(ret, unsubscribeProps);\n return ret;\n }\n\n // Run all callbacks that have never been run before if they have a query\n // result available now.\n private callNewListenersWithCurrentValues() {\n this.callNewListenersWithCurrentValuesTimer = undefined;\n this._transition({ queries: [], paginatedQueries: [] }, true);\n }\n\n private queryResultReady(queryToken: QueryToken): boolean {\n return this.client.hasLocalQueryResultByToken(queryToken);\n }\n\n private createDisabledUnsubscribe<T>(): Unsubscribe<T> {\n const disabledUnsubscribe = (() => {}) as Unsubscribe<T>;\n const unsubscribeProps: RemoveCallSignature<Unsubscribe<T>> = {\n unsubscribe: disabledUnsubscribe,\n getCurrentValue: () => undefined,\n getQueryLogs: () => undefined,\n };\n Object.assign(disabledUnsubscribe, unsubscribeProps);\n return disabledUnsubscribe;\n }\n\n async close() {\n if (this.disabled) return;\n // prevent pending updates\n this.listeners.clear();\n this._closed = true;\n if (this._paginatedClient) {\n this._paginatedClient = undefined;\n }\n return this.client.close();\n }\n\n /**\n * Get the current JWT auth token and decoded claims.\n */\n getAuth(): { token: string; decoded: Record<string, any> } | undefined {\n if (this.disabled) return;\n return this.client.getCurrentAuthClaims();\n }\n\n /**\n * Set the authentication token to be used for subsequent queries and mutations.\n * `fetchToken` will be called automatically again if a token expires.\n * `fetchToken` should return `null` if the token cannot be retrieved, for example\n * when the user's rights were permanently revoked.\n * @param fetchToken - an async function returning the JWT (typically an OpenID Connect Identity Token)\n * @param onChange - a callback that will be called when the authentication status changes\n */\n setAuth(\n fetchToken: AuthTokenFetcher,\n onChange?: (isAuthenticated: boolean) => void,\n ) {\n if (this.disabled) return;\n this.client.setAuth(\n fetchToken,\n onChange ??\n (() => {\n // Do nothing\n }),\n );\n }\n\n /**\n * @internal\n */\n setAdminAuth(token: string, identity?: UserIdentityAttributes) {\n if (this.closed) {\n throw new Error(\"ConvexClient has already been closed.\");\n }\n if (this.disabled) return;\n this.client.setAdminAuth(token, identity);\n }\n\n /**\n * @internal\n */\n _transition(\n {\n queries,\n paginatedQueries,\n }: Pick<ExtendedTransition, \"queries\" | \"paginatedQueries\">,\n callNewListeners = false,\n ) {\n const updatedQueries = [\n ...queries.map((q) => q.token),\n ...paginatedQueries.map((q) => q.token),\n ];\n\n // Deduping subscriptions happens in the BaseConvexClient, so not much to do here.\n\n // Call all callbacks in the order they were registered\n for (const queryInfo of this.listeners) {\n const { callback, queryToken, onError, hasEverRun } = queryInfo;\n const isPaginatedQuery = serializedQueryTokenIsPaginated(queryToken);\n\n // What does it mean to have a paginated query result ready? I think it's\n // always going to fire immediately.\n const hasResultReady = isPaginatedQuery\n ? !!this.paginatedClient.localQueryResultByToken(queryToken)\n : this.client.hasLocalQueryResultByToken(queryToken);\n\n if (\n updatedQueries.includes(queryToken) ||\n (callNewListeners && !hasEverRun && hasResultReady)\n ) {\n queryInfo.hasEverRun = true;\n let newValue;\n try {\n if (isPaginatedQuery) {\n newValue = this.paginatedClient.localQueryResultByToken(queryToken);\n } else {\n newValue = this.client.localQueryResultByToken(queryToken);\n }\n } catch (error) {\n if (!(error instanceof Error)) throw error;\n if (onError) {\n onError(\n error,\n \"Second argument to onUpdate onError is reserved for later use\",\n );\n } else {\n // Make some noise without unsubscribing or failing to call other callbacks.\n void Promise.reject(error);\n }\n continue;\n }\n callback(\n newValue,\n \"Second argument to onUpdate callback is reserved for later use\",\n );\n }\n }\n }\n\n /**\n * Execute a mutation function.\n *\n * @param mutation - A {@link server.FunctionReference} for the public mutation\n * to run.\n * @param args - An arguments object for the mutation.\n * @param options - A {@link MutationOptions} options object for the mutation.\n * @returns A promise of the mutation's result.\n */\n async mutation<Mutation extends FunctionReference<\"mutation\">>(\n mutation: Mutation,\n args: FunctionArgs<Mutation>,\n options?: MutationOptions,\n ): Promise<Awaited<FunctionReturnType<Mutation>>> {\n if (this.disabled) throw new Error(\"ConvexClient is disabled\");\n return await this.client.mutation(getFunctionName(mutation), args, options);\n }\n\n /**\n * Execute an action function.\n *\n * @param action - A {@link server.FunctionReference} for the public action\n * to run.\n * @param args - An arguments object for the action.\n * @returns A promise of the action's result.\n */\n async action<Action extends FunctionReference<\"action\">>(\n action: Action,\n args: FunctionArgs<Action>,\n ): Promise<Awaited<FunctionReturnType<Action>>> {\n if (this.disabled) throw new Error(\"ConvexClient is disabled\");\n return await this.client.action(getFunctionName(action), args);\n }\n\n /**\n * Fetch a query result once.\n *\n * @param query - A {@link server.FunctionReference} for the public query\n * to run.\n * @param args - An arguments object for the query.\n * @returns A promise of the query's result.\n */\n async query<Query extends FunctionReference<\"query\">>(\n query: Query,\n args: Query[\"_args\"],\n ): Promise<Awaited<Query[\"_returnType\"]>> {\n if (this.disabled) throw new Error(\"ConvexClient is disabled\");\n const value = this.client.localQueryResult(getFunctionName(query), args) as\n | Awaited<Query[\"_returnType\"]>\n | undefined;\n if (value !== undefined) return Promise.resolve(value);\n\n return new Promise((resolve, reject) => {\n const { unsubscribe } = this.onUpdate(\n query,\n args,\n (value) => {\n unsubscribe();\n resolve(value);\n },\n (e: Error) => {\n unsubscribe();\n reject(e);\n },\n );\n });\n }\n\n /**\n * Get the current {@link ConnectionState} between the client and the Convex\n * backend.\n *\n * @returns The {@link ConnectionState} with the Convex backend.\n */\n connectionState(): ConnectionState {\n if (this.disabled) throw new Error(\"ConvexClient is disabled\");\n return this.client.connectionState();\n }\n\n /**\n * Subscribe to the {@link ConnectionState} between the client and the Convex\n * backend, calling a callback each time it changes.\n *\n * Subscribed callbacks will be called when any part of ConnectionState changes.\n * ConnectionState may grow in future versions (e.g. to provide a array of\n * inflight requests) in which case callbacks would be called more frequently.\n *\n * @returns An unsubscribe function to stop listening.\n */\n subscribeToConnectionState(\n cb: (connectionState: ConnectionState) => void,\n ): () => void {\n if (this.disabled) return () => {};\n return this.client.subscribeToConnectionState(cb);\n }\n}\n\n// internal information tracked about each registered callback\ntype QueryInfo = {\n callback: (result: any, meta: unknown) => unknown;\n onError: ((e: Error, meta: unknown) => unknown) | undefined;\n unsubscribe: () => void;\n queryToken: QueryToken | PaginatedQueryToken;\n hasEverRun: boolean;\n // query, args and paginationOptions are just here for debugging, the queryToken is authoritative\n query: FunctionReference<\"query\">;\n args: any;\n paginationOptions: { initialNumItems: number; id: number } | undefined;\n};\n\n// helps to construct objects with a call signature\ntype RemoveCallSignature<T> = Omit<T, never>;\n"],
5
+ "mappings": "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",
6
6
  "names": ["value"]
7
7
  }
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var common_exports = {};
20
20
  __export(common_exports, {
21
21
  apiComment: () => apiComment,
22
+ compareModulePaths: () => compareModulePaths,
22
23
  compareStrings: () => compareStrings,
23
24
  header: () => header
24
25
  });
@@ -56,4 +57,9 @@ const collator = new Intl.Collator("en-US", {
56
57
  function compareStrings(a, b) {
57
58
  return collator.compare(a, b);
58
59
  }
60
+ function compareModulePaths(a, b) {
61
+ const aNormalized = a.replace(/\\/g, "/");
62
+ const bNormalized = b.replace(/\\/g, "/");
63
+ return aNormalized < bNormalized ? -1 : aNormalized > bNormalized ? 1 : 0;
64
+ }
59
65
  //# sourceMappingURL=common.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cli/codegen_templates/common.ts"],
4
- "sourcesContent": ["export function header(oneLineDescription: string) {\n return `/* eslint-disable */\n /**\n * ${oneLineDescription}\n *\n * THIS CODE IS AUTOMATICALLY GENERATED.\n *\n * To regenerate, run \\`npx convex dev\\`.\n * @module\n */\n `;\n}\n\nexport function apiComment(\n apiName: string,\n type: \"public\" | \"internal\" | undefined,\n) {\n return `\n /**\n * A utility for referencing Convex functions in your app's${type ? ` ${type}` : \"\"} API.\n *\n * Usage:\n * \\`\\`\\`js\n * const myFunctionReference = ${apiName}.myModule.myFunction;\n * \\`\\`\\`\n */`;\n}\n\nconst collator = new Intl.Collator(\"en-US\", {\n usage: \"sort\",\n numeric: true,\n sensitivity: \"case\",\n ignorePunctuation: false,\n caseFirst: \"false\",\n});\n\n/**\n * Comparison function for sorting strings alphabetically.\n *\n * Usage: array.sort(compareStrings)\n * or with entries: Object.entries(obj).sort(([a], [b]) => compareStrings(a, b))\n */\nexport function compareStrings(a: string, b: string): number {\n return collator.compare(a, b);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,OAAO,oBAA4B;AACjD,SAAO;AAAA;AAAA,OAEF,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQzB;AAEO,SAAS,WACd,SACA,MACA;AACA,SAAO;AAAA;AAAA,iEAEwD,OAAO,IAAI,IAAI,KAAK,EAAE;AAAA;AAAA;AAAA;AAAA,qCAIlD,OAAO;AAAA;AAAA;AAG5C;AAEA,MAAM,WAAW,IAAI,KAAK,SAAS,SAAS;AAAA,EAC1C,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,WAAW;AACb,CAAC;AAQM,SAAS,eAAe,GAAW,GAAmB;AAC3D,SAAO,SAAS,QAAQ,GAAG,CAAC;AAC9B;",
4
+ "sourcesContent": ["export function header(oneLineDescription: string) {\n return `/* eslint-disable */\n /**\n * ${oneLineDescription}\n *\n * THIS CODE IS AUTOMATICALLY GENERATED.\n *\n * To regenerate, run \\`npx convex dev\\`.\n * @module\n */\n `;\n}\n\nexport function apiComment(\n apiName: string,\n type: \"public\" | \"internal\" | undefined,\n) {\n return `\n /**\n * A utility for referencing Convex functions in your app's${type ? ` ${type}` : \"\"} API.\n *\n * Usage:\n * \\`\\`\\`js\n * const myFunctionReference = ${apiName}.myModule.myFunction;\n * \\`\\`\\`\n */`;\n}\n\nconst collator = new Intl.Collator(\"en-US\", {\n usage: \"sort\",\n numeric: true,\n sensitivity: \"case\",\n ignorePunctuation: false,\n caseFirst: \"false\",\n});\n\n/**\n * Comparison function for sorting strings alphabetically.\n *\n * Usage: array.sort(compareStrings)\n * or with entries: Object.entries(obj).sort(([a], [b]) => compareStrings(a, b))\n */\nexport function compareStrings(a: string, b: string): number {\n return collator.compare(a, b);\n}\n\n/**\n * Comparison function for sorting module paths in codegen output.\n *\n * Compares the forward slash normalized form of each path so the resulting\n * order is identical on every platform. Sorting OS-native paths directly\n * diverges on Windows because \"\\\" (0x5C) sorts after letters while \"/\"\n * (0x2F) sorts before them. Uses plain code unit comparison to match the\n * default Array.prototype.sort() order these paths sorted with on POSIX.\n *\n * Usage: modulePaths.sort(compareModulePaths)\n */\nexport function compareModulePaths(a: string, b: string): number {\n const aNormalized = a.replace(/\\\\/g, \"/\");\n const bNormalized = b.replace(/\\\\/g, \"/\");\n return aNormalized < bNormalized ? -1 : aNormalized > bNormalized ? 1 : 0;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,OAAO,oBAA4B;AACjD,SAAO;AAAA;AAAA,OAEF,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQzB;AAEO,SAAS,WACd,SACA,MACA;AACA,SAAO;AAAA;AAAA,iEAEwD,OAAO,IAAI,IAAI,KAAK,EAAE;AAAA;AAAA;AAAA;AAAA,qCAIlD,OAAO;AAAA;AAAA;AAG5C;AAEA,MAAM,WAAW,IAAI,KAAK,SAAS,SAAS;AAAA,EAC1C,OAAO;AAAA,EACP,SAAS;AAAA,EACT,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,WAAW;AACb,CAAC;AAQM,SAAS,eAAe,GAAW,GAAmB;AAC3D,SAAO,SAAS,QAAQ,GAAG,CAAC;AAC9B;AAaO,SAAS,mBAAmB,GAAW,GAAmB;AAC/D,QAAM,cAAc,EAAE,QAAQ,OAAO,GAAG;AACxC,QAAM,cAAc,EAAE,QAAQ,OAAO,GAAG;AACxC,SAAO,cAAc,cAAc,KAAK,cAAc,cAAc,IAAI;AAC1E;",
6
6
  "names": []
7
7
  }
@@ -141,6 +141,7 @@ const dev = new import_extra_typings.Command("dev").summary("Develop against a d
141
141
  });
142
142
  }
143
143
  const devOptions = await (0, import_command.normalizeDevOptions)(ctx, cmdOptions);
144
+ await (0, import_utils.ensureHasConvexDependency)(ctx, "run `npx convex dev`");
144
145
  if (cmdOptions.configure === void 0) {
145
146
  if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)
146
147
  return await ctx.crash({
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/dev.ts"],
4
- "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport { installSigintHandler, oneoffContext } from \"../bundler/context.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { normalizeDevOptions } from \"./lib/command.js\";\nimport { devAgainstDeployment } from \"./lib/dev.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n} from \"./lib/utils/utils.js\";\nimport {\n getDeploymentSelection,\n type DeploymentSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\n\nexport const dev = new Command(\"dev\")\n .summary(\"Develop against a dev deployment, watching for changes\")\n .description(\n \"Develop against a dev deployment, watching for changes\\n\\n\" +\n \" 1. Configures a new or existing project (if needed)\\n\" +\n \" 2. Updates generated types and pushes code to the configured dev deployment\\n\" +\n \" 3. Runs the provided command (if `--start` or `--run` is used)\\n\" +\n \" 4. Watches for file changes, and repeats step 2\\n\",\n )\n .allowExcessArguments(false)\n .option(\"-v, --verbose\", \"Show full listing of changes\")\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\"--codegen <mode>\", \"Regenerate code in `convex/_generated/`\")\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--push-all-modules\",\n \"Push all modules without checking for unchanged module hashes from the server\",\n )\n .default(false)\n .hideHelp(),\n )\n .option(\n \"--once\",\n \"Execute only the first 3 steps, stop on any failure\",\n false,\n )\n .option(\n \"--until-success\",\n \"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3\",\n false,\n )\n .addOption(\n new Option(\n \"--start <command>\",\n \"Start a long-running command alongside `npx convex dev`, like a frontend \" +\n \"dev server. The command inherits stdin/stdout so you can interact \" +\n \"with it directly. Example: npx convex dev --start 'vite --open'\",\n ).conflicts([\"--run\", \"--run-sh\"]),\n )\n .addOption(\n new Option(\"--run-sh <command>\", \"Deprecated: use --start instead.\")\n .conflicts([\"--start\", \"--run\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--run <functionName>\",\n \"The identifier of the function to run in step 3, \" +\n \"like `api.init.createData` or `myDir/myFile:myFunction`\",\n ).conflicts([\"--start\"]),\n )\n .option(\n \"--run-component <functionName>\",\n 'If --run is used and the function is in a component, the path to the component (e.g. \"workflow\" or \"workflow/workpool\"). ' +\n \"Components are a beta feature. This flag is unstable and may change in subsequent releases.\",\n )\n .addOption(\n new Option(\n \"--tail-logs [mode]\",\n [\n \"Choose whether to tail Convex function logs in this terminal: \",\n \"\u2022 `always` shows logs continuously\",\n \"\u2022 `pause-on-deploy` (the default) pauses logs during deploys so you can spot sync issues\",\n \"\u2022 `disable` hides logs while developing.\",\n ].join(\"\\n\"),\n )\n .choices([\"always\", \"pause-on-deploy\", \"disable\"] as const)\n .default(\"pause-on-deploy\"),\n )\n .addOption(new Option(\"--trace-events\").default(false).hideHelp())\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug-node-apis\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--configure [choice]\",\n \"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud\",\n )\n .choices([\"new\", \"existing\"] as const)\n .conflicts([\"--url\", \"--admin-key\", \"--env-file\"]),\n )\n .addOption(\n new Option(\n \"--team <team_slug>\",\n \"The team you'd like to use for this project\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--project <project_slug>\",\n \"The name of the project you'd like to configure\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--dev-deployment <mode>\",\n \"Use a local or cloud deployment for dev for this project\",\n )\n .choices([\"cloud\", \"local\"] as const)\n .conflicts([\"--prod\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--prod\",\n \"Develop live against this project's production deployment.\",\n )\n .default(false)\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(new Option(\"--skip-push\").default(false).hideHelp())\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n // Options for testing\n .addOption(new Option(\"--override-auth-url <url>\").hideHelp())\n .addOption(new Option(\"--override-auth-client <id>\").hideHelp())\n .addOption(new Option(\"--override-auth-username <username>\").hideHelp())\n .addOption(new Option(\"--override-auth-password <password>\").hideHelp())\n .addOption(new Option(\"--local-cloud-port <port>\").hideHelp())\n .addOption(new Option(\"--local-site-port <port>\").hideHelp())\n .addOption(new Option(\"--local-backend-version <version>\").hideHelp())\n .addOption(new Option(\"--local-force-upgrade\").default(false).hideHelp())\n .addOption(new Option(\"--deployment <deployment>\").hideHelp())\n .addOption(new Option(\"--local\").default(false).hideHelp())\n .addOption(new Option(\"--cloud\").default(false).hideHelp())\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n installSigintHandler(ctx);\n\n if (cmdOptions.deployment !== undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--deployment` can\u2019t be used with `npx convex dev`. \\n\\n\" +\n \" To select this deployment for development, run: \\n\" +\n chalkStderr.bold(\n ` npx convex deployment select ${cmdOptions.deployment}\\n`,\n ) +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n if (cmdOptions.local) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local` is deprecated. \\n\\n\" +\n \" To select your local deployment, run: \\n\" +\n chalkStderr.bold(\" npx convex deployment select local\\n\") +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n if (cmdOptions.cloud) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--cloud` is deprecated. \\n\\n\" +\n \" To select your personal cloud dev deployment, run: \\n\" +\n chalkStderr.bold(\" npx convex deployment select dev\\n\") +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n const devOptions = await normalizeDevOptions(ctx, cmdOptions);\n\n if (cmdOptions.configure === undefined) {\n if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--team, --project, and --dev-deployment can can only be used with `--configure`.\",\n });\n }\n\n const localOptions: {\n ports: { cloud: number | undefined; site: number | undefined };\n backendVersion: string | undefined;\n forceUpgrade: boolean;\n } = {\n ports: {\n cloud:\n cmdOptions.localCloudPort !== undefined\n ? parseInt(cmdOptions.localCloudPort)\n : undefined,\n site:\n cmdOptions.localSitePort !== undefined\n ? parseInt(cmdOptions.localSitePort)\n : undefined,\n },\n backendVersion: cmdOptions.localBackendVersion,\n forceUpgrade: cmdOptions.localForceUpgrade,\n };\n\n const configure =\n cmdOptions.configure === true ? \"ask\" : (cmdOptions.configure ?? null);\n // --configure means \"pick a project\" \u2014 skip deployment selection entirely\n const deploymentSelection =\n configure !== null\n ? ({\n kind: \"chooseProject\",\n selectionWithinProject: {\n // For backwards compatibility, allow `--configure --prod`\n kind: cmdOptions.prod ? \"prod\" : \"unspecified\",\n },\n } satisfies DeploymentSelection)\n : await getDeploymentSelection(ctx, cmdOptions);\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n configure,\n {\n ...cmdOptions,\n localOptions,\n },\n );\n\n announceDeploymentTarget(\"Developing against deployment:\", credentials);\n\n await Promise.all([\n ...(!cmdOptions.skipPush\n ? [\n devAgainstDeployment(\n ctx,\n {\n url: credentials.url,\n adminKey: credentials.adminKey,\n deploymentName:\n credentials.deploymentFields?.deploymentName ?? null,\n ...(credentials.deploymentFields?.deploymentType !== undefined\n ? {\n deploymentType:\n credentials.deploymentFields.deploymentType,\n }\n : {}),\n backendVersion: localOptions.backendVersion,\n },\n devOptions,\n ),\n ]\n : []),\n ...(credentials.deploymentFields !== null\n ? [\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]\n : []),\n ]);\n });\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Command, Option } from \"@commander-js/extra-typings\";\nimport { chalkStderr } from \"chalk\";\nimport { installSigintHandler, oneoffContext } from \"../bundler/context.js\";\nimport { deploymentCredentialsOrConfigure } from \"./configure.js\";\nimport { announceDeploymentTarget } from \"./lib/announceDeploymentTarget.js\";\nimport { usageStateWarning } from \"./lib/usage.js\";\nimport { normalizeDevOptions } from \"./lib/command.js\";\nimport { devAgainstDeployment } from \"./lib/dev.js\";\nimport {\n CONVEX_DEPLOYMENT_ENV_VAR_NAME,\n CONVEX_SELF_HOSTED_URL_VAR_NAME,\n ensureHasConvexDependency,\n} from \"./lib/utils/utils.js\";\nimport {\n getDeploymentSelection,\n type DeploymentSelection,\n} from \"./lib/deploymentSelection.js\";\nimport { checkVersionAndAiFilesStaleness } from \"./lib/updates.js\";\n\nexport const dev = new Command(\"dev\")\n .summary(\"Develop against a dev deployment, watching for changes\")\n .description(\n \"Develop against a dev deployment, watching for changes\\n\\n\" +\n \" 1. Configures a new or existing project (if needed)\\n\" +\n \" 2. Updates generated types and pushes code to the configured dev deployment\\n\" +\n \" 3. Runs the provided command (if `--start` or `--run` is used)\\n\" +\n \" 4. Watches for file changes, and repeats step 2\\n\",\n )\n .allowExcessArguments(false)\n .option(\"-v, --verbose\", \"Show full listing of changes\")\n .addOption(\n new Option(\n \"--typecheck <mode>\",\n `Check TypeScript files with \\`tsc --noEmit\\`.`,\n )\n .choices([\"enable\", \"try\", \"disable\"] as const)\n .default(\"try\" as const),\n )\n .option(\n \"--typecheck-components\",\n \"Check TypeScript files within component implementations with `tsc --noEmit`.\",\n false,\n )\n .addOption(\n new Option(\"--codegen <mode>\", \"Regenerate code in `convex/_generated/`\")\n .choices([\"enable\", \"disable\"] as const)\n .default(\"enable\" as const),\n )\n .addOption(\n new Option(\n \"--push-all-modules\",\n \"Push all modules without checking for unchanged module hashes from the server\",\n )\n .default(false)\n .hideHelp(),\n )\n .option(\n \"--once\",\n \"Execute only the first 3 steps, stop on any failure\",\n false,\n )\n .option(\n \"--until-success\",\n \"Execute only the first 3 steps, on failure watch for local and remote changes and retry steps 2 and 3\",\n false,\n )\n .addOption(\n new Option(\n \"--start <command>\",\n \"Start a long-running command alongside `npx convex dev`, like a frontend \" +\n \"dev server. The command inherits stdin/stdout so you can interact \" +\n \"with it directly. Example: npx convex dev --start 'vite --open'\",\n ).conflicts([\"--run\", \"--run-sh\"]),\n )\n .addOption(\n new Option(\"--run-sh <command>\", \"Deprecated: use --start instead.\")\n .conflicts([\"--start\", \"--run\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--run <functionName>\",\n \"The identifier of the function to run in step 3, \" +\n \"like `api.init.createData` or `myDir/myFile:myFunction`\",\n ).conflicts([\"--start\"]),\n )\n .option(\n \"--run-component <functionName>\",\n 'If --run is used and the function is in a component, the path to the component (e.g. \"workflow\" or \"workflow/workpool\"). ' +\n \"Components are a beta feature. This flag is unstable and may change in subsequent releases.\",\n )\n .addOption(\n new Option(\n \"--tail-logs [mode]\",\n [\n \"Choose whether to tail Convex function logs in this terminal: \",\n \"\u2022 `always` shows logs continuously\",\n \"\u2022 `pause-on-deploy` (the default) pauses logs during deploys so you can spot sync issues\",\n \"\u2022 `disable` hides logs while developing.\",\n ].join(\"\\n\"),\n )\n .choices([\"always\", \"pause-on-deploy\", \"disable\"] as const)\n .default(\"pause-on-deploy\"),\n )\n .addOption(new Option(\"--trace-events\").default(false).hideHelp())\n .addOption(new Option(\"--debug-bundle-path <path>\").hideHelp())\n .addOption(new Option(\"--debug-node-apis\").hideHelp())\n .addOption(new Option(\"--live-component-sources\").hideHelp())\n .addOption(\n new Option(\n \"--configure [choice]\",\n \"Ignore existing configuration and configure new or existing project, interactively or set by --team <team_slug>, --project <project_slug>, and --dev-deployment local|cloud\",\n )\n .choices([\"new\", \"existing\"] as const)\n .conflicts([\"--url\", \"--admin-key\", \"--env-file\"]),\n )\n .addOption(\n new Option(\n \"--team <team_slug>\",\n \"The team you'd like to use for this project\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--project <project_slug>\",\n \"The name of the project you'd like to configure\",\n ).hideHelp(),\n )\n .addOption(\n new Option(\n \"--dev-deployment <mode>\",\n \"Use a local or cloud deployment for dev for this project\",\n )\n .choices([\"cloud\", \"local\"] as const)\n .conflicts([\"--prod\"])\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--prod\",\n \"Develop live against this project's production deployment.\",\n )\n .default(false)\n .hideHelp(),\n )\n .addOption(\n new Option(\n \"--env-file <envFile>\",\n `Path to a custom file of environment variables, for choosing the \\\ndeployment, e.g. ${CONVEX_DEPLOYMENT_ENV_VAR_NAME} or ${CONVEX_SELF_HOSTED_URL_VAR_NAME}. \\\nSame format as .env.local or .env files, and overrides them.`,\n ),\n )\n .addOption(new Option(\"--skip-push\").default(false).hideHelp())\n .addOption(new Option(\"--admin-key <adminKey>\").hideHelp())\n .addOption(new Option(\"--url <url>\").hideHelp())\n // Options for testing\n .addOption(new Option(\"--override-auth-url <url>\").hideHelp())\n .addOption(new Option(\"--override-auth-client <id>\").hideHelp())\n .addOption(new Option(\"--override-auth-username <username>\").hideHelp())\n .addOption(new Option(\"--override-auth-password <password>\").hideHelp())\n .addOption(new Option(\"--local-cloud-port <port>\").hideHelp())\n .addOption(new Option(\"--local-site-port <port>\").hideHelp())\n .addOption(new Option(\"--local-backend-version <version>\").hideHelp())\n .addOption(new Option(\"--local-force-upgrade\").default(false).hideHelp())\n .addOption(new Option(\"--deployment <deployment>\").hideHelp())\n .addOption(new Option(\"--local\").default(false).hideHelp())\n .addOption(new Option(\"--cloud\").default(false).hideHelp())\n .showHelpAfterError()\n .action(async (cmdOptions) => {\n const ctx = await oneoffContext(cmdOptions);\n installSigintHandler(ctx);\n\n if (cmdOptions.deployment !== undefined) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--deployment` can\u2019t be used with `npx convex dev`. \\n\\n\" +\n \" To select this deployment for development, run: \\n\" +\n chalkStderr.bold(\n ` npx convex deployment select ${cmdOptions.deployment}\\n`,\n ) +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n if (cmdOptions.local) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--local` is deprecated. \\n\\n\" +\n \" To select your local deployment, run: \\n\" +\n chalkStderr.bold(\" npx convex deployment select local\\n\") +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n if (cmdOptions.cloud) {\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--cloud` is deprecated. \\n\\n\" +\n \" To select your personal cloud dev deployment, run: \\n\" +\n chalkStderr.bold(\" npx convex deployment select dev\\n\") +\n \" Then, run `npx convex dev` again.\",\n });\n }\n\n const devOptions = await normalizeDevOptions(ctx, cmdOptions);\n\n // Check that we're in a Convex project (a package.json with a `convex`\n // dependency) before doing anything else, so we fail fast with a clear\n // error instead of prompting to create/select a project and only then\n // crashing because there's nothing to push.\n await ensureHasConvexDependency(ctx, \"run `npx convex dev`\");\n\n if (cmdOptions.configure === undefined) {\n if (cmdOptions.team || cmdOptions.project || cmdOptions.devDeployment)\n return await ctx.crash({\n exitCode: 1,\n errorType: \"fatal\",\n printedMessage:\n \"`--team, --project, and --dev-deployment can can only be used with `--configure`.\",\n });\n }\n\n const localOptions: {\n ports: { cloud: number | undefined; site: number | undefined };\n backendVersion: string | undefined;\n forceUpgrade: boolean;\n } = {\n ports: {\n cloud:\n cmdOptions.localCloudPort !== undefined\n ? parseInt(cmdOptions.localCloudPort)\n : undefined,\n site:\n cmdOptions.localSitePort !== undefined\n ? parseInt(cmdOptions.localSitePort)\n : undefined,\n },\n backendVersion: cmdOptions.localBackendVersion,\n forceUpgrade: cmdOptions.localForceUpgrade,\n };\n\n const configure =\n cmdOptions.configure === true ? \"ask\" : (cmdOptions.configure ?? null);\n // --configure means \"pick a project\" \u2014 skip deployment selection entirely\n const deploymentSelection =\n configure !== null\n ? ({\n kind: \"chooseProject\",\n selectionWithinProject: {\n // For backwards compatibility, allow `--configure --prod`\n kind: cmdOptions.prod ? \"prod\" : \"unspecified\",\n },\n } satisfies DeploymentSelection)\n : await getDeploymentSelection(ctx, cmdOptions);\n const credentials = await deploymentCredentialsOrConfigure(\n ctx,\n deploymentSelection,\n configure,\n {\n ...cmdOptions,\n localOptions,\n },\n );\n\n announceDeploymentTarget(\"Developing against deployment:\", credentials);\n\n await Promise.all([\n ...(!cmdOptions.skipPush\n ? [\n devAgainstDeployment(\n ctx,\n {\n url: credentials.url,\n adminKey: credentials.adminKey,\n deploymentName:\n credentials.deploymentFields?.deploymentName ?? null,\n ...(credentials.deploymentFields?.deploymentType !== undefined\n ? {\n deploymentType:\n credentials.deploymentFields.deploymentType,\n }\n : {}),\n backendVersion: localOptions.backendVersion,\n },\n devOptions,\n ),\n ]\n : []),\n ...(credentials.deploymentFields !== null\n ? [\n usageStateWarning(ctx, credentials.deploymentFields.deploymentName),\n checkVersionAndAiFilesStaleness(ctx),\n ]\n : []),\n ]);\n });\n"],
5
+ "mappings": "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",
6
6
  "names": []
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\" | \"suspended\" | \"deleting\";\n WorkOSTeamHealthResponse: {\n teamInfo?: null | components[\"schemas\"][\"WorkOSTeamInfo\"];\n /** @description Whether a WorkOS team has been provisioned for this Convex team */\n teamProvisioned: boolean;\n };\n WorkOSTeamInfo: {\n id: string;\n name: string;\n productionState: components[\"schemas\"][\"WorkOSProductionState\"];\n };\n };\n responses: never;\n parameters: never;\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type AvailableWorkOsTeamEmailsResponse = components['schemas']['AvailableWorkOSTeamEmailsResponse'];\nexport type CheckProjectEnvironmentHealthRequest = components['schemas']['CheckProjectEnvironmentHealthRequest'];\nexport type DeleteProjectEnvironmentRequest = components['schemas']['DeleteProjectEnvironmentRequest'];\nexport type DeleteProjectEnvironmentResponse = components['schemas']['DeleteProjectEnvironmentResponse'];\nexport type DeleteWorkOsEnvironmentRequest = components['schemas']['DeleteWorkOSEnvironmentRequest'];\nexport type DeleteWorkOsEnvironmentResponse = components['schemas']['DeleteWorkOSEnvironmentResponse'];\nexport type DisconnectWorkOsTeamRequest = components['schemas']['DisconnectWorkOSTeamRequest'];\nexport type DisconnectWorkOsTeamResponse = components['schemas']['DisconnectWorkOSTeamResponse'];\nexport type GetOrProvisionEnvironmentRequest = components['schemas']['GetOrProvisionEnvironmentRequest'];\nexport type GetProjectEnvironmentResponse = components['schemas']['GetProjectEnvironmentResponse'];\nexport type GetProjectEnvironmentsResponse = components['schemas']['GetProjectEnvironmentsResponse'];\nexport type HasAssociatedWorkOsTeamRequest = components['schemas']['HasAssociatedWorkOSTeamRequest'];\nexport type HasAssociatedWorkOsTeamResponse = components['schemas']['HasAssociatedWorkOSTeamResponse'];\nexport type InvitationEligibleEmailsResponse = components['schemas']['InvitationEligibleEmailsResponse'];\nexport type InviteWorkOsTeamMemberRequest = components['schemas']['InviteWorkOSTeamMemberRequest'];\nexport type InviteWorkOsTeamMemberResponse = components['schemas']['InviteWorkOSTeamMemberResponse'];\nexport type ManagedBy = components['schemas']['ManagedBy'];\nexport type MemberId = components['schemas']['MemberId'];\nexport type ProjectDetails = components['schemas']['ProjectDetails'];\nexport type ProjectEnvironmentSummary = components['schemas']['ProjectEnvironmentSummary'];\nexport type ProjectId = components['schemas']['ProjectId'];\nexport type ProjectName = components['schemas']['ProjectName'];\nexport type ProjectSlug = components['schemas']['ProjectSlug'];\nexport type ProvisionEnvironmentResponse = components['schemas']['ProvisionEnvironmentResponse'];\nexport type ProvisionProjectEnvironmentRequest = components['schemas']['ProvisionProjectEnvironmentRequest'];\nexport type ProvisionProjectEnvironmentResponse = components['schemas']['ProvisionProjectEnvironmentResponse'];\nexport type ProvisionWorkOsTeamRequest = components['schemas']['ProvisionWorkOSTeamRequest'];\nexport type ProvisionWorkOsTeamResponse = components['schemas']['ProvisionWorkOSTeamResponse'];\nexport type ReferralCode = components['schemas']['ReferralCode'];\nexport type RegionName = components['schemas']['RegionName'];\nexport type TeamId = components['schemas']['TeamId'];\nexport type TeamName = components['schemas']['TeamName'];\nexport type TeamResponse = components['schemas']['TeamResponse'];\nexport type TeamSlug = components['schemas']['TeamSlug'];\nexport type WorkOsEnvironmentHealthResponse = components['schemas']['WorkOSEnvironmentHealthResponse'];\nexport type WorkOsProductionState = components['schemas']['WorkOSProductionState'];\nexport type WorkOsTeamHealthResponse = components['schemas']['WorkOSTeamHealthResponse'];\nexport type WorkOsTeamInfo = components['schemas']['WorkOSTeamInfo'];\nexport type $defs = Record<string, never>;\nexport interface operations {\n get_teams_for_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"TeamResponse\"][];\n };\n };\n };\n };\n get_cli_projects_for_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Team slug identifier */\n team_slug: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProjectDetails\"][];\n };\n };\n };\n };\n delete_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentResponse\"];\n };\n };\n };\n };\n disconnect_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_available_workos_team_emails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"AvailableWorkOSTeamEmailsResponse\"];\n };\n };\n };\n };\n get_has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_or_provision_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"GetOrProvisionEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionEnvironmentResponse\"];\n };\n };\n };\n };\n get_workos_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n get_workos_invitation_eligible_emails: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InvitationEligibleEmailsResponse\"];\n };\n };\n };\n };\n get_workos_team_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSTeamHealthResponse\"];\n };\n };\n };\n };\n invite_workos_team_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberResponse\"];\n };\n };\n };\n };\n has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n provision_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_project_workos_environments: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentsResponse\"];\n };\n };\n };\n };\n provision_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentResponse\"];\n };\n };\n };\n };\n get_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n client_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentResponse\"];\n };\n };\n };\n };\n delete_project_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentResponse\"];\n };\n };\n };\n };\n check_project_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CheckProjectEnvironmentHealthRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n}\n"],
4
+ "sourcesContent": ["/**\n * This file was auto-generated by openapi-typescript.\n * Do not make direct changes to the file.\n */\n\nexport interface paths {\n \"/teams\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_teams_for_member\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_slug}/projects\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get: operations[\"get_cli_projects_for_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment. This removes the environment from both WorkOS and the Convex database. */\n post: operations[\"delete_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/disconnect_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Disconnect a WorkOS team from a Convex team. This is a destructive action that will prevent new WorkOS environments from being provisioned, though existing environments will continue to work. */\n post: operations[\"disconnect_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/available_workos_team_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get candidate email addresses to be WorkOS admins. */\n get: operations[\"get_available_workos_team_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if a deployment has an associated WorkOS team */\n get: operations[\"get_has_associated_workos_team\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/get_or_provision_workos_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Get or provision a WorkOS environment for a deployment */\n post: operations[\"get_or_provision_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/deployments/{deployment_name}/workos_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS environment associated with this deployment is still accessible */\n get: operations[\"get_workos_environment_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_invitation_eligible_emails\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get emails eligible for WorkOS team invitation (all verified emails except those that are admin of a different WorkOS team) */\n get: operations[\"get_workos_invitation_eligible_emails\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/teams/{team_id}/workos_team_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Check if the WorkOS team associated with this Convex team is still accessible */\n get: operations[\"get_workos_team_health\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/invite_team_member\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Invite a member to the WorkOS team associated with a Convex team */\n post: operations[\"invite_workos_team_member\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/has_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check if a deployment has an associated WorkOS team */\n post: operations[\"has_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/provision_associated_workos_team\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Provision a WorkOS team for a Convex team */\n post: operations[\"provision_associated_workos_team\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/projects/{project_id}/workos_environments\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description List all WorkOS environments for a project */\n get: operations[\"get_project_workos_environments\"];\n put?: never;\n /** @description Create a new WorkOS environment for a project */\n post: operations[\"provision_project_workos_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/projects/{project_id}/workos_environments/{client_id}\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n /** @description Get a specific WorkOS environment for a project including credentials. This action is audited. */\n get: operations[\"get_project_workos_environment\"];\n put?: never;\n post?: never;\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/delete_project_environment\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Delete a WorkOS environment from a project */\n post: operations[\"delete_project_environment\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n \"/workos/check_project_environment_health\": {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n get?: never;\n put?: never;\n /** @description Check the health of a project WorkOS environment. Returns HTTP error on failure. */\n post: operations[\"check_project_environment_health\"];\n delete?: never;\n options?: never;\n head?: never;\n patch?: never;\n trace?: never;\n };\n}\nexport type webhooks = Record<string, never>;\nexport interface components {\n schemas: {\n AvailableWorkOSTeamEmailsResponse: {\n availableEmails: string[];\n usedEmails: string[];\n };\n CheckProjectEnvironmentHealthRequest: {\n /** @description WorkOS client ID */\n clientId: string;\n /**\n * Format: int64\n * @description Project ID\n */\n projectId: number;\n };\n DeleteProjectEnvironmentRequest: {\n /** @description WorkOS client ID of the environment to delete */\n clientId: string;\n /**\n * Format: int64\n * @description Project ID for the environment to delete\n */\n projectId: number;\n };\n /** @description Response for deleting a project environment - matches\n * DeleteWorkOSEnvironmentResponse */\n DeleteProjectEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DeleteWorkOSEnvironmentRequest: {\n /** @description Deployment name for the environment to delete */\n deploymentName: string;\n };\n DeleteWorkOSEnvironmentResponse: {\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n workosTeamId: string;\n };\n DisconnectWorkOSTeamRequest: {\n /** @description Convex team ID to disconnect from WorkOS */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n DisconnectWorkOSTeamResponse: {\n workosTeamId: string;\n workosTeamName: string;\n };\n GetOrProvisionEnvironmentRequest: {\n deploymentName: string;\n environmentName?: string | null;\n isProduction?: boolean | null;\n };\n /** @description Response for getting a project WorkOS environment with credentials - matches\n * ProvisionProjectEnvironmentResponse pattern with workos_ prefix */\n GetProjectEnvironmentResponse: {\n isProduction: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosApiKey: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n GetProjectEnvironmentsResponse: {\n environments: components[\"schemas\"][\"ProjectEnvironmentSummary\"][];\n };\n HasAssociatedWorkOSTeamRequest: {\n deploymentName: string;\n };\n HasAssociatedWorkOSTeamResponse: {\n /** @description Email of Convex team member who created the WorkOS account.\n * This field should always be present when has_associated_workos_team is\n * true. */\n adminConvexEmail?: string | null;\n /** @description Email address used to provision the WorkOS account. This field should\n * always be present if has_associated_workos_team is true. */\n adminEmail?: string | null;\n /** @description Name of Convex team member who created the WorkOS account.\n * This field is optional even when has_associated_workos_team is true. */\n adminName?: string | null;\n hasAssociatedWorkosTeam: boolean;\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n InvitationEligibleEmailsResponse: {\n /** @description The admin email used to create this team's WorkOS account (always\n * eligible for re-invitation) */\n adminEmail?: string | null;\n eligibleEmails: string[];\n };\n InviteWorkOSTeamMemberRequest: {\n /** @description Email address to invite to the WorkOS team,\n * must be a verified email address associated with the user's account */\n email: string;\n /** @description Convex team ID that has an associated WorkOS team */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n InviteWorkOSTeamMemberResponse: {\n email: string;\n roleSlug: string;\n };\n ManagedBy: \"vercel\" | {\n oauthApp: string;\n };\n /** Format: int64 */\n MemberId: number;\n ProjectDetails: {\n /** Format: int64 */\n createTime: number;\n devDeploymentName?: string | null;\n id: components[\"schemas\"][\"ProjectId\"];\n name: components[\"schemas\"][\"ProjectName\"];\n prodDeploymentName?: string | null;\n slug: components[\"schemas\"][\"ProjectSlug\"];\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n /** @description Summary of a project WorkOS environment for list responses - slimmer than\n * full environment details, uses workos_ prefix for consistency with\n * deployment */\n ProjectEnvironmentSummary: {\n isProduction: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n /** Format: int64 */\n ProjectId: number;\n ProjectName: string;\n ProjectSlug: string;\n ProvisionEnvironmentResponse: {\n apiKey: string;\n clientId: string;\n environmentId: string;\n environmentName: string;\n newlyProvisioned: boolean;\n };\n ProvisionProjectEnvironmentRequest: {\n environmentName: string;\n isProduction?: boolean | null;\n };\n /** @description Response for provisioning a project WorkOS environment - matches\n * ProvisionEnvironmentResponse pattern with workos_ prefix for consistency */\n ProvisionProjectEnvironmentResponse: {\n newlyProvisioned: boolean;\n /** @description The user-provided environment name (e.g., \"staging\", \"development\") */\n userEnvironmentName: string;\n workosApiKey: string;\n workosClientId: string;\n workosEnvironmentId: string;\n workosEnvironmentName: string;\n };\n ProvisionWorkOSTeamRequest: {\n /** @description Email address to use for the WorkOS team admin,\n * must be a verified email address associated with the user's account */\n email: string;\n /** @description Convex team ID, no WorkOS team exists at this point */\n teamId: components[\"schemas\"][\"TeamId\"];\n };\n ProvisionWorkOSTeamResponse: {\n adminEmail: string;\n workosTeamId: string;\n workosTeamName: string;\n };\n ReferralCode: string;\n /** @enum {string} */\n RegionName: \"aws-us-east-1\" | \"aws-eu-west-1\";\n /** Format: int64 */\n TeamId: number;\n TeamName: string;\n TeamResponse: {\n creator?: null | components[\"schemas\"][\"MemberId\"];\n defaultRegion?: null | components[\"schemas\"][\"RegionName\"];\n id: components[\"schemas\"][\"TeamId\"];\n managedBy?: null | components[\"schemas\"][\"ManagedBy\"];\n managedByUrl?: string | null;\n name: components[\"schemas\"][\"TeamName\"];\n referralCode: components[\"schemas\"][\"ReferralCode\"];\n referredBy?: null | components[\"schemas\"][\"TeamId\"];\n slug: components[\"schemas\"][\"TeamSlug\"];\n ssoLoginId?: string | null;\n suspended: boolean;\n };\n TeamSlug: string;\n WorkOSEnvironmentHealthResponse: {\n clientId: string;\n id: string;\n name: string;\n };\n /** @enum {string} */\n WorkOSProductionState: \"active\" | \"inactive\" | \"suspended\" | \"deleting\";\n WorkOSTeamHealthResponse: {\n teamInfo?: null | components[\"schemas\"][\"WorkOSTeamInfo\"];\n /** @description Whether a WorkOS team has been provisioned for this Convex team */\n teamProvisioned: boolean;\n };\n WorkOSTeamInfo: {\n id: string;\n name: string;\n productionState: components[\"schemas\"][\"WorkOSProductionState\"];\n };\n };\n responses: never;\n parameters: never;\n requestBodies: never;\n headers: never;\n pathItems: never;\n}\nexport type AvailableWorkOsTeamEmailsResponse = components['schemas']['AvailableWorkOSTeamEmailsResponse'];\nexport type CheckProjectEnvironmentHealthRequest = components['schemas']['CheckProjectEnvironmentHealthRequest'];\nexport type DeleteProjectEnvironmentRequest = components['schemas']['DeleteProjectEnvironmentRequest'];\nexport type DeleteProjectEnvironmentResponse = components['schemas']['DeleteProjectEnvironmentResponse'];\nexport type DeleteWorkOsEnvironmentRequest = components['schemas']['DeleteWorkOSEnvironmentRequest'];\nexport type DeleteWorkOsEnvironmentResponse = components['schemas']['DeleteWorkOSEnvironmentResponse'];\nexport type DisconnectWorkOsTeamRequest = components['schemas']['DisconnectWorkOSTeamRequest'];\nexport type DisconnectWorkOsTeamResponse = components['schemas']['DisconnectWorkOSTeamResponse'];\nexport type GetOrProvisionEnvironmentRequest = components['schemas']['GetOrProvisionEnvironmentRequest'];\nexport type GetProjectEnvironmentResponse = components['schemas']['GetProjectEnvironmentResponse'];\nexport type GetProjectEnvironmentsResponse = components['schemas']['GetProjectEnvironmentsResponse'];\nexport type HasAssociatedWorkOsTeamRequest = components['schemas']['HasAssociatedWorkOSTeamRequest'];\nexport type HasAssociatedWorkOsTeamResponse = components['schemas']['HasAssociatedWorkOSTeamResponse'];\nexport type InvitationEligibleEmailsResponse = components['schemas']['InvitationEligibleEmailsResponse'];\nexport type InviteWorkOsTeamMemberRequest = components['schemas']['InviteWorkOSTeamMemberRequest'];\nexport type InviteWorkOsTeamMemberResponse = components['schemas']['InviteWorkOSTeamMemberResponse'];\nexport type ManagedBy = components['schemas']['ManagedBy'];\nexport type MemberId = components['schemas']['MemberId'];\nexport type ProjectDetails = components['schemas']['ProjectDetails'];\nexport type ProjectEnvironmentSummary = components['schemas']['ProjectEnvironmentSummary'];\nexport type ProjectId = components['schemas']['ProjectId'];\nexport type ProjectName = components['schemas']['ProjectName'];\nexport type ProjectSlug = components['schemas']['ProjectSlug'];\nexport type ProvisionEnvironmentResponse = components['schemas']['ProvisionEnvironmentResponse'];\nexport type ProvisionProjectEnvironmentRequest = components['schemas']['ProvisionProjectEnvironmentRequest'];\nexport type ProvisionProjectEnvironmentResponse = components['schemas']['ProvisionProjectEnvironmentResponse'];\nexport type ProvisionWorkOsTeamRequest = components['schemas']['ProvisionWorkOSTeamRequest'];\nexport type ProvisionWorkOsTeamResponse = components['schemas']['ProvisionWorkOSTeamResponse'];\nexport type ReferralCode = components['schemas']['ReferralCode'];\nexport type RegionName = components['schemas']['RegionName'];\nexport type TeamId = components['schemas']['TeamId'];\nexport type TeamName = components['schemas']['TeamName'];\nexport type TeamResponse = components['schemas']['TeamResponse'];\nexport type TeamSlug = components['schemas']['TeamSlug'];\nexport type WorkOsEnvironmentHealthResponse = components['schemas']['WorkOSEnvironmentHealthResponse'];\nexport type WorkOsProductionState = components['schemas']['WorkOSProductionState'];\nexport type WorkOsTeamHealthResponse = components['schemas']['WorkOSTeamHealthResponse'];\nexport type WorkOsTeamInfo = components['schemas']['WorkOSTeamInfo'];\nexport type $defs = Record<string, never>;\nexport interface operations {\n get_teams_for_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"TeamResponse\"][];\n };\n };\n };\n };\n get_cli_projects_for_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Team slug identifier */\n team_slug: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProjectDetails\"][];\n };\n };\n };\n };\n delete_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteWorkOSEnvironmentResponse\"];\n };\n };\n };\n };\n disconnect_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DisconnectWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_available_workos_team_emails: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"AvailableWorkOSTeamEmailsResponse\"];\n };\n };\n };\n };\n get_has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_or_provision_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"GetOrProvisionEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionEnvironmentResponse\"];\n };\n };\n };\n };\n get_workos_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Deployment name */\n deployment_name: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n get_workos_invitation_eligible_emails: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InvitationEligibleEmailsResponse\"];\n };\n };\n };\n };\n get_workos_team_health: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n /** @description Convex team ID */\n team_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSTeamHealthResponse\"];\n };\n };\n };\n };\n invite_workos_team_member: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"InviteWorkOSTeamMemberResponse\"];\n };\n };\n };\n };\n has_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"HasAssociatedWorkOSTeamResponse\"];\n };\n };\n };\n };\n provision_associated_workos_team: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionWorkOSTeamResponse\"];\n };\n };\n };\n };\n get_project_workos_environments: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentsResponse\"];\n };\n };\n };\n };\n provision_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n };\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"ProvisionProjectEnvironmentResponse\"];\n };\n };\n };\n };\n get_project_workos_environment: {\n parameters: {\n query?: never;\n header?: never;\n path: {\n project_id: number;\n client_id: string;\n };\n cookie?: never;\n };\n requestBody?: never;\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"GetProjectEnvironmentResponse\"];\n };\n };\n };\n };\n delete_project_environment: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"DeleteProjectEnvironmentResponse\"];\n };\n };\n };\n };\n check_project_environment_health: {\n parameters: {\n query?: never;\n header?: never;\n path?: never;\n cookie?: never;\n };\n requestBody: {\n content: {\n \"application/json\": components[\"schemas\"][\"CheckProjectEnvironmentHealthRequest\"];\n };\n };\n responses: {\n 200: {\n headers: {\n [name: string]: unknown;\n };\n content: {\n \"application/json\": components[\"schemas\"][\"WorkOSEnvironmentHealthResponse\"];\n };\n };\n };\n };\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }