@stackframe/react 2.8.65 → 2.8.66

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.
@@ -10,7 +10,7 @@ import { Store } from "@stackframe/stack-shared/dist/utils/stores";
10
10
  import React, { useCallback } from "react";
11
11
  import { stackAppInternalsSymbol } from "../../common.js";
12
12
  var process = globalThis.process ?? { env: {} };
13
- var clientVersion = "js @stackframe/react@2.8.65";
13
+ var clientVersion = "js @stackframe/react@2.8.66";
14
14
  if (clientVersion.startsWith("STACK_COMPILE_TIME")) {
15
15
  throw new StackAssertionError("Client version was not replaced. Something went wrong during build!");
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/lib/stack-app/apps/implementations/common.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { InternalSession } from \"@stackframe/stack-shared/dist/sessions\";\nimport { AsyncCache } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { isBrowserLike } from \"@stackframe/stack-shared/dist/utils/env\";\nimport { StackAssertionError, concatStacktraces, throwErr } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { getGlobal } from \"@stackframe/stack-shared/dist/utils/globals\";\nimport { filterUndefined, omit } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport { ReactPromise } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { suspendIfSsr, use } from \"@stackframe/stack-shared/dist/utils/react\";\nimport { Result } from \"@stackframe/stack-shared/dist/utils/results\";\nimport { Store } from \"@stackframe/stack-shared/dist/utils/stores\";\nimport React, { useCallback } from \"react\"; // THIS_LINE_PLATFORM react-like\nimport { HandlerUrls, stackAppInternalsSymbol } from \"../../common\";\n\n// hack to make sure process is defined in non-node environments\nconst process = (globalThis as any).process ?? { env: {} }; // THIS_LINE_PLATFORM js react\n\nexport const clientVersion = \"js @stackframe/react@2.8.65\";\nif (clientVersion.startsWith(\"STACK_COMPILE_TIME\")) {\n throw new StackAssertionError(\"Client version was not replaced. Something went wrong during build!\");\n}\n\nconst replaceStackPortPrefix = <T extends string | undefined>(input: T): T => {\n if (!input) return input;\n const prefix = process.env.NEXT_PUBLIC_STACK_PORT_PREFIX;\n return prefix ? input.replace(/\\$\\{NEXT_PUBLIC_STACK_PORT_PREFIX:-81\\}/g, prefix) as T : input;\n};\n\n\nexport const createCache = <D extends any[], T>(fetcher: (dependencies: D) => Promise<T>) => {\n return new AsyncCache<D, Result<T>>(\n async (dependencies) => await Result.fromThrowingAsync(async () => await fetcher(dependencies)),\n {},\n );\n};\n\nexport const createCacheBySession = <D extends any[], T>(fetcher: (session: InternalSession, extraDependencies: D) => Promise<T> ) => {\n return new AsyncCache<[InternalSession, ...D], Result<T>>(\n async ([session, ...extraDependencies]) => await Result.fromThrowingAsync(async () => await fetcher(session, extraDependencies)),\n {\n onSubscribe: ([session], refresh) => {\n const handler = session.onInvalidate(() => refresh());\n return () => handler.unsubscribe();\n },\n },\n );\n};\n\n\ntype AppLike = { [stackAppInternalsSymbol]: { getConstructorOptions: () => any } };\nexport function resolveConstructorOptions<T extends { inheritsFrom?: AppLike }>(options: T): T & { inheritsFrom?: undefined } {\n return {\n ...options.inheritsFrom?.[stackAppInternalsSymbol].getConstructorOptions() ?? {},\n ...filterUndefined(omit(options, [\"inheritsFrom\"])),\n };\n}\n\nexport function getUrls(partial: Partial<HandlerUrls>): HandlerUrls {\n const handler = partial.handler ?? \"/handler\";\n const home = partial.home ?? \"/\";\n const afterSignIn = partial.afterSignIn ?? home;\n return {\n handler,\n signIn: `${handler}/sign-in`,\n afterSignIn: home,\n signUp: `${handler}/sign-up`,\n afterSignUp: afterSignIn,\n signOut: `${handler}/sign-out`,\n afterSignOut: home,\n emailVerification: `${handler}/email-verification`,\n passwordReset: `${handler}/password-reset`,\n forgotPassword: `${handler}/forgot-password`,\n oauthCallback: `${handler}/oauth-callback`,\n magicLinkCallback: `${handler}/magic-link-callback`,\n home: home,\n accountSettings: `${handler}/account-settings`,\n error: `${handler}/error`,\n teamInvitation: `${handler}/team-invitation`,\n mfa: `${handler}/mfa`,\n onboarding: `${handler}/onboarding`,\n ...filterUndefined(partial),\n };\n}\n\nexport function getDefaultProjectId() {\n return process.env.NEXT_PUBLIC_STACK_PROJECT_ID || process.env.STACK_PROJECT_ID || throwErr(new Error(\"Welcome to Stack Auth! It seems that you haven't provided a project ID. Please create a project on the Stack dashboard at https://app.stack-auth.com and put it in the NEXT_PUBLIC_STACK_PROJECT_ID environment variable.\"));\n}\n\nexport function getDefaultPublishableClientKey() {\n return process.env.NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY || process.env.STACK_PUBLISHABLE_CLIENT_KEY || throwErr(new Error(\"Welcome to Stack Auth! It seems that you haven't provided a publishable client key. Please create an API key for your project on the Stack dashboard at https://app.stack-auth.com and copy your publishable client key into the NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY environment variable.\"));\n}\n\nexport function getDefaultSecretServerKey() {\n return process.env.STACK_SECRET_SERVER_KEY || throwErr(new Error(\"No secret server key provided. Please copy your key from the Stack dashboard and put it in the STACK_SECRET_SERVER_KEY environment variable.\"));\n}\n\nexport function getDefaultSuperSecretAdminKey() {\n return process.env.STACK_SUPER_SECRET_ADMIN_KEY || throwErr(new Error(\"No super secret admin key provided. Please copy your key from the Stack dashboard and put it in the STACK_SUPER_SECRET_ADMIN_KEY environment variable.\"));\n}\n\nexport function getDefaultExtraRequestHeaders() {\n return JSON.parse(process.env.NEXT_PUBLIC_STACK_EXTRA_REQUEST_HEADERS || process.env.STACK_EXTRA_REQUEST_HEADERS || '{}');\n}\n\n/**\n * Returns the base URL for the Stack API.\n *\n * The URL can be specified in several ways, in order of precedence:\n * 1. Directly through userSpecifiedBaseUrl parameter as string or browser/server object\n * 2. Through environment variables:\n * - Browser: NEXT_PUBLIC_BROWSER_STACK_API_URL\n * - Server: NEXT_PUBLIC_SERVER_STACK_API_URL\n * - Fallback: NEXT_PUBLIC_STACK_API_URL or NEXT_PUBLIC_STACK_URL\n * 3. Default base URL if none of the above are specified\n *\n * The function also ensures the URL doesn't end with a trailing slash\n * by removing it if present.\n *\n * @param userSpecifiedBaseUrl - Optional URL override as string or {browser, server} object\n * @returns The configured base URL without trailing slash\n\n */\nexport function getBaseUrl(userSpecifiedBaseUrl: string | { browser: string, server: string } | undefined) {\n let url;\n if (userSpecifiedBaseUrl) {\n if (typeof userSpecifiedBaseUrl === \"string\") {\n url = userSpecifiedBaseUrl;\n } else {\n if (isBrowserLike()) {\n url = userSpecifiedBaseUrl.browser;\n } else {\n url = userSpecifiedBaseUrl.server;\n }\n }\n } else {\n // note: NEXT_PUBLIC_BROWSER_STACK_API_URL was renamed to NEXT_PUBLIC_STACK_API_URL_BROWSER, and NEXT_PUBLIC_STACK_URL to NEXT_PUBLIC_STACK_API_URL\n if (isBrowserLike()) {\n url = process.env.NEXT_PUBLIC_BROWSER_STACK_API_URL || process.env.NEXT_PUBLIC_STACK_API_URL_BROWSER || process.env.STACK_API_URL_BROWSER;\n } else {\n url = process.env.NEXT_PUBLIC_SERVER_STACK_API_URL || process.env.NEXT_PUBLIC_STACK_API_URL_SERVER || process.env.STACK_API_URL_SERVER;\n }\n url = url || process.env.NEXT_PUBLIC_STACK_API_URL || process.env.STACK_API_URL || process.env.NEXT_PUBLIC_STACK_URL || defaultBaseUrl;\n }\n\n return replaceStackPortPrefix(url.endsWith('/') ? url.slice(0, -1) : url);\n}\nexport const defaultBaseUrl = \"https://api.stack-auth.com\";\n\nexport type TokenObject = {\n accessToken: string | null,\n refreshToken: string | null,\n};\n\nexport function createEmptyTokenStore() {\n return new Store<TokenObject>({\n refreshToken: null,\n accessToken: null,\n });\n}\n\n\nconst cachePromiseByHookId = new Map<string, ReactPromise<Result<unknown>>>();\nexport function useAsyncCache<D extends any[], T>(cache: AsyncCache<D, Result<T>>, dependencies: D, caller: string): T {\n // we explicitly don't want to run this hook in SSR\n suspendIfSsr(caller);\n\n // on the dashboard, we do some perf monitoring for pre-fetching which should hook right in here\n const asyncCacheHooks: any[] = getGlobal(\"use-async-cache-execution-hooks\") ?? [];\n for (const hook of asyncCacheHooks) {\n hook({ cache, caller, dependencies });\n }\n\n const id = React.useId();\n\n // whenever the dependencies change, we need to refresh the promise cache\n React.useEffect(() => {\n cachePromiseByHookId.delete(id);\n }, [...dependencies, id]);\n\n const subscribe = useCallback((cb: () => void) => {\n const { unsubscribe } = cache.onStateChange(dependencies, () => {\n cachePromiseByHookId.delete(id);\n cb();\n });\n return unsubscribe;\n }, [cache, ...dependencies]);\n const getSnapshot = useCallback(() => {\n // React checks whether a promise passed to `use` is still the same as the previous one by comparing the reference.\n // If we didn't cache here, this wouldn't work because the promise would be recreated every time the value changes.\n if (!cachePromiseByHookId.has(id)) {\n cachePromiseByHookId.set(id, cache.getOrWait(dependencies, \"read-write\"));\n }\n return cachePromiseByHookId.get(id) as ReactPromise<Result<T>>;\n }, [cache, ...dependencies]);\n\n // note: we must use React.useSyncExternalStore instead of importing the function directly, as it will otherwise\n // throw an error on Next.js (\"can't import useSyncExternalStore from the server\")\n const promise = React.useSyncExternalStore(\n subscribe,\n getSnapshot,\n () => throwErr(new Error(\"getServerSnapshot should never be called in useAsyncCache because we restrict to CSR earlier\"))\n );\n\n const result = use(promise);\n if (result.status === \"error\") {\n const error = result.error;\n if (error instanceof Error && !(error as any).__stackHasConcatenatedStacktraces) {\n concatStacktraces(error, new Error());\n (error as any).__stackHasConcatenatedStacktraces = true;\n }\n throw error;\n }\n return result.data;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/lib/stack-app/apps/implementations/common.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { InternalSession } from \"@stackframe/stack-shared/dist/sessions\";\nimport { AsyncCache } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { isBrowserLike } from \"@stackframe/stack-shared/dist/utils/env\";\nimport { StackAssertionError, concatStacktraces, throwErr } from \"@stackframe/stack-shared/dist/utils/errors\";\nimport { getGlobal } from \"@stackframe/stack-shared/dist/utils/globals\";\nimport { filterUndefined, omit } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport { ReactPromise } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { suspendIfSsr, use } from \"@stackframe/stack-shared/dist/utils/react\";\nimport { Result } from \"@stackframe/stack-shared/dist/utils/results\";\nimport { Store } from \"@stackframe/stack-shared/dist/utils/stores\";\nimport React, { useCallback } from \"react\"; // THIS_LINE_PLATFORM react-like\nimport { HandlerUrls, stackAppInternalsSymbol } from \"../../common\";\n\n// hack to make sure process is defined in non-node environments\nconst process = (globalThis as any).process ?? { env: {} }; // THIS_LINE_PLATFORM js react\n\nexport const clientVersion = \"js @stackframe/react@2.8.66\";\nif (clientVersion.startsWith(\"STACK_COMPILE_TIME\")) {\n throw new StackAssertionError(\"Client version was not replaced. Something went wrong during build!\");\n}\n\nconst replaceStackPortPrefix = <T extends string | undefined>(input: T): T => {\n if (!input) return input;\n const prefix = process.env.NEXT_PUBLIC_STACK_PORT_PREFIX;\n return prefix ? input.replace(/\\$\\{NEXT_PUBLIC_STACK_PORT_PREFIX:-81\\}/g, prefix) as T : input;\n};\n\n\nexport const createCache = <D extends any[], T>(fetcher: (dependencies: D) => Promise<T>) => {\n return new AsyncCache<D, Result<T>>(\n async (dependencies) => await Result.fromThrowingAsync(async () => await fetcher(dependencies)),\n {},\n );\n};\n\nexport const createCacheBySession = <D extends any[], T>(fetcher: (session: InternalSession, extraDependencies: D) => Promise<T> ) => {\n return new AsyncCache<[InternalSession, ...D], Result<T>>(\n async ([session, ...extraDependencies]) => await Result.fromThrowingAsync(async () => await fetcher(session, extraDependencies)),\n {\n onSubscribe: ([session], refresh) => {\n const handler = session.onInvalidate(() => refresh());\n return () => handler.unsubscribe();\n },\n },\n );\n};\n\n\ntype AppLike = { [stackAppInternalsSymbol]: { getConstructorOptions: () => any } };\nexport function resolveConstructorOptions<T extends { inheritsFrom?: AppLike }>(options: T): T & { inheritsFrom?: undefined } {\n return {\n ...options.inheritsFrom?.[stackAppInternalsSymbol].getConstructorOptions() ?? {},\n ...filterUndefined(omit(options, [\"inheritsFrom\"])),\n };\n}\n\nexport function getUrls(partial: Partial<HandlerUrls>): HandlerUrls {\n const handler = partial.handler ?? \"/handler\";\n const home = partial.home ?? \"/\";\n const afterSignIn = partial.afterSignIn ?? home;\n return {\n handler,\n signIn: `${handler}/sign-in`,\n afterSignIn: home,\n signUp: `${handler}/sign-up`,\n afterSignUp: afterSignIn,\n signOut: `${handler}/sign-out`,\n afterSignOut: home,\n emailVerification: `${handler}/email-verification`,\n passwordReset: `${handler}/password-reset`,\n forgotPassword: `${handler}/forgot-password`,\n oauthCallback: `${handler}/oauth-callback`,\n magicLinkCallback: `${handler}/magic-link-callback`,\n home: home,\n accountSettings: `${handler}/account-settings`,\n error: `${handler}/error`,\n teamInvitation: `${handler}/team-invitation`,\n mfa: `${handler}/mfa`,\n onboarding: `${handler}/onboarding`,\n ...filterUndefined(partial),\n };\n}\n\nexport function getDefaultProjectId() {\n return process.env.NEXT_PUBLIC_STACK_PROJECT_ID || process.env.STACK_PROJECT_ID || throwErr(new Error(\"Welcome to Stack Auth! It seems that you haven't provided a project ID. Please create a project on the Stack dashboard at https://app.stack-auth.com and put it in the NEXT_PUBLIC_STACK_PROJECT_ID environment variable.\"));\n}\n\nexport function getDefaultPublishableClientKey() {\n return process.env.NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY || process.env.STACK_PUBLISHABLE_CLIENT_KEY || throwErr(new Error(\"Welcome to Stack Auth! It seems that you haven't provided a publishable client key. Please create an API key for your project on the Stack dashboard at https://app.stack-auth.com and copy your publishable client key into the NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY environment variable.\"));\n}\n\nexport function getDefaultSecretServerKey() {\n return process.env.STACK_SECRET_SERVER_KEY || throwErr(new Error(\"No secret server key provided. Please copy your key from the Stack dashboard and put it in the STACK_SECRET_SERVER_KEY environment variable.\"));\n}\n\nexport function getDefaultSuperSecretAdminKey() {\n return process.env.STACK_SUPER_SECRET_ADMIN_KEY || throwErr(new Error(\"No super secret admin key provided. Please copy your key from the Stack dashboard and put it in the STACK_SUPER_SECRET_ADMIN_KEY environment variable.\"));\n}\n\nexport function getDefaultExtraRequestHeaders() {\n return JSON.parse(process.env.NEXT_PUBLIC_STACK_EXTRA_REQUEST_HEADERS || process.env.STACK_EXTRA_REQUEST_HEADERS || '{}');\n}\n\n/**\n * Returns the base URL for the Stack API.\n *\n * The URL can be specified in several ways, in order of precedence:\n * 1. Directly through userSpecifiedBaseUrl parameter as string or browser/server object\n * 2. Through environment variables:\n * - Browser: NEXT_PUBLIC_BROWSER_STACK_API_URL\n * - Server: NEXT_PUBLIC_SERVER_STACK_API_URL\n * - Fallback: NEXT_PUBLIC_STACK_API_URL or NEXT_PUBLIC_STACK_URL\n * 3. Default base URL if none of the above are specified\n *\n * The function also ensures the URL doesn't end with a trailing slash\n * by removing it if present.\n *\n * @param userSpecifiedBaseUrl - Optional URL override as string or {browser, server} object\n * @returns The configured base URL without trailing slash\n\n */\nexport function getBaseUrl(userSpecifiedBaseUrl: string | { browser: string, server: string } | undefined) {\n let url;\n if (userSpecifiedBaseUrl) {\n if (typeof userSpecifiedBaseUrl === \"string\") {\n url = userSpecifiedBaseUrl;\n } else {\n if (isBrowserLike()) {\n url = userSpecifiedBaseUrl.browser;\n } else {\n url = userSpecifiedBaseUrl.server;\n }\n }\n } else {\n // note: NEXT_PUBLIC_BROWSER_STACK_API_URL was renamed to NEXT_PUBLIC_STACK_API_URL_BROWSER, and NEXT_PUBLIC_STACK_URL to NEXT_PUBLIC_STACK_API_URL\n if (isBrowserLike()) {\n url = process.env.NEXT_PUBLIC_BROWSER_STACK_API_URL || process.env.NEXT_PUBLIC_STACK_API_URL_BROWSER || process.env.STACK_API_URL_BROWSER;\n } else {\n url = process.env.NEXT_PUBLIC_SERVER_STACK_API_URL || process.env.NEXT_PUBLIC_STACK_API_URL_SERVER || process.env.STACK_API_URL_SERVER;\n }\n url = url || process.env.NEXT_PUBLIC_STACK_API_URL || process.env.STACK_API_URL || process.env.NEXT_PUBLIC_STACK_URL || defaultBaseUrl;\n }\n\n return replaceStackPortPrefix(url.endsWith('/') ? url.slice(0, -1) : url);\n}\nexport const defaultBaseUrl = \"https://api.stack-auth.com\";\n\nexport type TokenObject = {\n accessToken: string | null,\n refreshToken: string | null,\n};\n\nexport function createEmptyTokenStore() {\n return new Store<TokenObject>({\n refreshToken: null,\n accessToken: null,\n });\n}\n\n\nconst cachePromiseByHookId = new Map<string, ReactPromise<Result<unknown>>>();\nexport function useAsyncCache<D extends any[], T>(cache: AsyncCache<D, Result<T>>, dependencies: D, caller: string): T {\n // we explicitly don't want to run this hook in SSR\n suspendIfSsr(caller);\n\n // on the dashboard, we do some perf monitoring for pre-fetching which should hook right in here\n const asyncCacheHooks: any[] = getGlobal(\"use-async-cache-execution-hooks\") ?? [];\n for (const hook of asyncCacheHooks) {\n hook({ cache, caller, dependencies });\n }\n\n const id = React.useId();\n\n // whenever the dependencies change, we need to refresh the promise cache\n React.useEffect(() => {\n cachePromiseByHookId.delete(id);\n }, [...dependencies, id]);\n\n const subscribe = useCallback((cb: () => void) => {\n const { unsubscribe } = cache.onStateChange(dependencies, () => {\n cachePromiseByHookId.delete(id);\n cb();\n });\n return unsubscribe;\n }, [cache, ...dependencies]);\n const getSnapshot = useCallback(() => {\n // React checks whether a promise passed to `use` is still the same as the previous one by comparing the reference.\n // If we didn't cache here, this wouldn't work because the promise would be recreated every time the value changes.\n if (!cachePromiseByHookId.has(id)) {\n cachePromiseByHookId.set(id, cache.getOrWait(dependencies, \"read-write\"));\n }\n return cachePromiseByHookId.get(id) as ReactPromise<Result<T>>;\n }, [cache, ...dependencies]);\n\n // note: we must use React.useSyncExternalStore instead of importing the function directly, as it will otherwise\n // throw an error on Next.js (\"can't import useSyncExternalStore from the server\")\n const promise = React.useSyncExternalStore(\n subscribe,\n getSnapshot,\n () => throwErr(new Error(\"getServerSnapshot should never be called in useAsyncCache because we restrict to CSR earlier\"))\n );\n\n const result = use(promise);\n if (result.status === \"error\") {\n const error = result.error;\n if (error instanceof Error && !(error as any).__stackHasConcatenatedStacktraces) {\n concatStacktraces(error, new Error());\n (error as any).__stackHasConcatenatedStacktraces = true;\n }\n throw error;\n }\n return result.data;\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/stack-app/users/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { CurrentUserCrud } from \"@stackframe/stack-shared/dist/interface/crud/current-user\";\nimport { UsersCrud } from \"@stackframe/stack-shared/dist/interface/crud/users\";\nimport { InternalSession } from \"@stackframe/stack-shared/dist/sessions\";\nimport { encodeBase64 } from \"@stackframe/stack-shared/dist/utils/bytes\";\nimport { GeoInfo } from \"@stackframe/stack-shared/dist/utils/geo\";\nimport { ReadonlyJson } from \"@stackframe/stack-shared/dist/utils/json\";\nimport { ProviderType } from \"@stackframe/stack-shared/dist/utils/oauth\";\nimport { Result } from \"@stackframe/stack-shared/dist/utils/results\";\nimport { ApiKeyCreationOptions, UserApiKey, UserApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty, AuthLike } from \"../common\";\nimport { OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { Customer } from \"../customers\";\nimport { NotificationCategory } from \"../notification-categories\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectCreateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\nconst userGetterErrorMessage = \"Stack Auth: useUser() already returns the user object. Use `const user = useUser()` (or `const user = await app.getUser()`) instead of destructuring it like `const { user } = ...`.\";\n\nexport function withUserDestructureGuard<T extends object>(target: T): T {\n Object.freeze(target);\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"user\") {\n return guardGetter();\n }\n return target[prop as keyof T];\n },\n });\n}\n\nfunction guardGetter(): never {\n throw new Error(userGetterErrorMessage);\n}\n\nexport type OAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId?: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\nexport type ServerOAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { accountId?: string, email?: string, allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = AuthLike<{}> & {\n readonly _internalSession: InternalSession,\n readonly currentSession: {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n useTokens(): { accessToken: string | null, refreshToken: string | null }, // THIS_LINE_PLATFORM react-like\n },\n};\n\n/**\n * ```\n * +----------+-------------+-------------------+\n * | \\ | !Server | Server |\n * +----------+-------------+-------------------+\n * | !Session | User | ServerUser |\n * | Session | CurrentUser | CurrentServerUser |\n * +----------+-------------+-------------------+\n * ```\n *\n * The fields on each of these types are available iff:\n * BaseUser: true\n * Auth: Session\n * ServerBaseUser: Server\n * UserExtra: Session OR Server\n *\n * The types are defined as follows (in the typescript manner):\n * User = BaseUser\n * CurrentUser = BaseUser & Auth & UserExtra\n * ServerUser = BaseUser & ServerBaseUser & UserExtra\n * CurrentServerUser = BaseUser & ServerBaseUser & Auth & UserExtra\n **/\n\nexport type BaseUser = {\n readonly id: string,\n\n readonly displayName: string | null,\n\n /**\n * The user's email address.\n *\n * Note: This might NOT be unique across multiple users, so always use `id` for unique identification.\n */\n readonly primaryEmail: string | null,\n readonly primaryEmailVerified: boolean,\n readonly profileImageUrl: string | null,\n\n readonly signedUpAt: Date,\n\n readonly clientMetadata: any,\n readonly clientReadOnlyMetadata: any,\n\n /**\n * Whether the user has a password set.\n */\n readonly hasPassword: boolean,\n readonly otpAuthEnabled: boolean,\n readonly passkeyAuthEnabled: boolean,\n\n readonly isMultiFactorRequired: boolean,\n readonly isAnonymous: boolean,\n /**\n * Whether the user is in restricted state (signed up but hasn't completed onboarding requirements).\n * For example, if email verification is required but the user hasn't verified their email yet.\n */\n readonly isRestricted: boolean,\n /**\n * The reason why the user is restricted, e.g., { type: \"email_not_verified\" }, { type: \"anonymous\" }, or { type: \"restricted_by_administrator\" }.\n * Null if the user is not restricted.\n */\n readonly restrictedReason: { type: \"anonymous\" | \"email_not_verified\" | \"restricted_by_administrator\" } | null,\n toClientJson(): CurrentUserCrud[\"Client\"][\"Read\"],\n\n /**\n * @deprecated, use contact channel's usedForAuth instead\n */\n readonly emailAuthEnabled: boolean,\n /**\n * @deprecated\n */\n readonly oauthProviders: readonly { id: string }[],\n}\n\nexport type UserExtra = {\n setDisplayName(displayName: string | null): Promise<void>,\n /** @deprecated Use contact channel's sendVerificationEmail instead */\n sendVerificationEmail(): Promise<KnownErrors[\"EmailAlreadyVerified\"] | void>,\n setClientMetadata(metadata: any): Promise<void>,\n updatePassword(options: { oldPassword: string, newPassword: string}): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n setPassword(options: { password: string }): Promise<KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n\n /**\n * A shorthand method to update multiple fields of the user at once.\n */\n update(update: UserUpdateOptions): Promise<void>,\n\n useContactChannels(): ContactChannel[], // THIS_LINE_PLATFORM react-like\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\n\n useNotificationCategories(): NotificationCategory[], // THIS_LINE_PLATFORM react-like\n listNotificationCategories(): Promise<NotificationCategory[]>,\n\n delete(): Promise<void>,\n\n getConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): Promise<OAuthConnection>,\n getConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): Promise<OAuthConnection | null>,\n\n useConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): OAuthConnection,\n useConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): OAuthConnection | null,\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n usePermissions(scope: Team, options?: { recursive?: boolean }): TeamPermission[],\n usePermissions(options?: { recursive?: boolean }): TeamPermission[],\n\n usePermission(scope: Team, permissionId: string): TeamPermission | null,\n usePermission(permissionId: string): TeamPermission | null,\n\n readonly selectedTeam: Team | null,\n setSelectedTeam(teamOrId: string | Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n getActiveSessions(): Promise<ActiveSession[]>,\n revokeSession(sessionId: string): Promise<void>,\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n useTeamProfile(team: Team): EditableTeamMemberProfile, // THIS_LINE_PLATFORM react-like\n\n createApiKey(options: ApiKeyCreationOptions<\"user\">): Promise<UserApiKeyFirstView>,\n\n useOAuthProviders(): OAuthProvider[], // THIS_LINE_PLATFORM react-like\n listOAuthProviders(): Promise<OAuthProvider[]>,\n\n useOAuthProvider(id: string): OAuthProvider | null, // THIS_LINE_PLATFORM react-like\n getOAuthProvider(id: string): Promise<OAuthProvider | null>,\n\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n}\n& AsyncStoreProperty<\"apiKeys\", [], UserApiKey[], true>\n& AsyncStoreProperty<\"team\", [id: string], Team | null, false>\n& AsyncStoreProperty<\"teams\", [], Team[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { recursive?: boolean }], TeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { recursive?: boolean }], TeamPermission[], true>;\n\nexport type InternalUserExtra =\n & {\n createProject(newProject: AdminProjectCreateOptions): Promise<AdminOwnedProject>,\n transferProject(projectIdToTransfer: string, newTeamId: string): Promise<void>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra & Customer;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\nexport type TokenPartialUser = Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"isAnonymous\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>\n\nexport type SyncedPartialUser = TokenPartialUser & Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"profileImageUrl\"\n | \"signedUpAt\"\n | \"clientMetadata\"\n | \"clientReadOnlyMetadata\"\n | \"isAnonymous\"\n | \"hasPassword\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>;\n\n\nexport type ActiveSession = {\n id: string,\n userId: string,\n createdAt: Date,\n isImpersonation: boolean,\n lastUsedAt: Date | undefined,\n isCurrentSession: boolean,\n geoInfo?: GeoInfo,\n};\n\nexport type UserUpdateOptions = {\n displayName?: string | null,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?: boolean,\n primaryEmail?: string | null,\n}\nexport function userUpdateOptionsToCrud(options: UserUpdateOptions): CurrentUserCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n client_metadata: options.clientMetadata,\n selected_team_id: options.selectedTeamId,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n profile_image_url: options.profileImageUrl,\n otp_auth_enabled: options.otpAuthEnabled,\n passkey_auth_enabled: options.passkeyAuthEnabled,\n primary_email: options.primaryEmail,\n };\n}\n\n\nexport type ServerBaseUser = {\n setPrimaryEmail(email: string | null, options?: { verified?: boolean | undefined }): Promise<void>,\n\n readonly lastActiveAt: Date,\n\n readonly serverMetadata: any,\n setServerMetadata(metadata: any): Promise<void>,\n setClientReadOnlyMetadata(metadata: any): Promise<void>,\n\n /** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */\n readonly restrictedByAdmin: boolean,\n /** Public reason shown to the user explaining why they are restricted. Optional. */\n readonly restrictedByAdminReason: string | null,\n /** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */\n readonly restrictedByAdminPrivateDetails: string | null,\n\n createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n useContactChannels(): ServerContactChannel[], // THIS_LINE_PLATFORM react-like\n listContactChannels(): Promise<ServerContactChannel[]>,\n createContactChannel(data: ServerContactChannelCreateOptions): Promise<ServerContactChannel>,\n\n update(user: ServerUserUpdateOptions): Promise<void>,\n\n grantPermission(scope: Team, permissionId: string): Promise<void>,\n grantPermission(permissionId: string): Promise<void>,\n\n revokePermission(scope: Team, permissionId: string): Promise<void>,\n revokePermission(permissionId: string): Promise<void>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n usePermissions(scope: Team, options?: { recursive?: boolean }): TeamPermission[],\n usePermissions(options?: { recursive?: boolean }): TeamPermission[],\n\n usePermission(scope: Team, permissionId: string): TeamPermission | null,\n usePermission(permissionId: string): TeamPermission | null,\n\n useOAuthProviders(): ServerOAuthProvider[], // THIS_LINE_PLATFORM react-like\n listOAuthProviders(): Promise<ServerOAuthProvider[]>,\n\n useOAuthProvider(id: string): ServerOAuthProvider | null, // THIS_LINE_PLATFORM react-like\n getOAuthProvider(id: string): Promise<ServerOAuthProvider | null>,\n\n /**\n * Creates a new session object with a refresh token for this user. Can be used to impersonate them.\n */\n createSession(options?: { expiresInMillis?: number, isImpersonation?: boolean }): Promise<{\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n }>,\n}\n& AsyncStoreProperty<\"team\", [id: string], ServerTeam | null, false>\n& AsyncStoreProperty<\"teams\", [], ServerTeam[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { direct?: boolean }], AdminTeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { direct?: boolean }], AdminTeamPermission[], true>;\n\n/**\n * A user including sensitive fields that should only be used on the server, never sent to the client\n * (such as sensitive information and serverMetadata).\n */\nexport type ServerUser = ServerBaseUser & BaseUser & UserExtra & Customer<true>;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\n\nexport type SyncedPartialServerUser = SyncedPartialUser & Pick<\n ServerUser,\n | \"serverMetadata\"\n>;\n\nexport type ServerUserUpdateOptions = {\n primaryEmail?: string | null,\n primaryEmailVerified?: boolean,\n primaryEmailAuthEnabled?: boolean,\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n password?: string,\n restrictedByAdmin?: boolean,\n restrictedByAdminReason?: string | null,\n restrictedByAdminPrivateDetails?: string | null,\n} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n // Base update options\n const baseUpdate: CurrentUserCrud[\"Server\"][\"Update\"] = {\n display_name: options.displayName,\n primary_email: options.primaryEmail,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n selected_team_id: options.selectedTeamId,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n primary_email_verified: options.primaryEmailVerified,\n password: options.password,\n profile_image_url: options.profileImageUrl,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n };\n // Add admin restriction fields (may not be in generated types yet but will be at runtime)\n return {\n ...baseUpdate,\n restricted_by_admin: options.restrictedByAdmin,\n restricted_by_admin_reason: options.restrictedByAdminReason,\n restricted_by_admin_private_details: options.restrictedByAdminPrivateDetails,\n } as CurrentUserCrud[\"Server\"][\"Update\"];\n}\n\n\nexport type ServerUserCreateOptions = {\n primaryEmail?: string | null,\n primaryEmailAuthEnabled?: boolean,\n password?: string,\n otpAuthEnabled?: boolean,\n displayName?: string,\n primaryEmailVerified?: boolean,\n clientMetadata?: any,\n clientReadOnlyMetadata?: any,\n serverMetadata?: any,\n}\nexport function serverUserCreateOptionsToCrud(options: ServerUserCreateOptions): UsersCrud[\"Server\"][\"Create\"] {\n return {\n primary_email: options.primaryEmail,\n password: options.password,\n otp_auth_enabled: options.otpAuthEnabled,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n display_name: options.displayName,\n primary_email_verified: options.primaryEmailVerified,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n };\n}\n"],"mappings":";AAQA,SAAS,oBAAoB;AAe7B,IAAM,yBAAyB;AAExB,SAAS,yBAA2C,QAAc;AACvE,SAAO,OAAO,MAAM;AACpB,SAAO,IAAI,MAAM,QAAQ;AAAA,IACvB,IAAIA,SAAQ,MAAM,UAAU;AAC1B,UAAI,SAAS,QAAQ;AACnB,eAAO,YAAY;AAAA,MACrB;AACA,aAAOA,QAAO,IAAe;AAAA,IAC/B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,cAAqB;AAC5B,QAAM,IAAI,MAAM,sBAAsB;AACxC;AAuPO,SAAS,wBAAwB,SAAiE;AACvG,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,QAAQ;AAAA,IAC1B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,IAClH,mBAAmB,QAAQ;AAAA,IAC3B,kBAAkB,QAAQ;AAAA,IAC1B,sBAAsB,QAAQ;AAAA,IAC9B,eAAe,QAAQ;AAAA,EACzB;AACF;AA8FO,SAAS,8BAA8B,SAAuE;AAEnH,QAAM,aAAkD;AAAA,IACtD,cAAc,QAAQ;AAAA,IACtB,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,QAAQ;AAAA,IAC1B,4BAA4B,QAAQ;AAAA,IACpC,wBAAwB,QAAQ;AAAA,IAChC,UAAU,QAAQ;AAAA,IAClB,mBAAmB,QAAQ;AAAA,IAC3B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,EACpH;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,qBAAqB,QAAQ;AAAA,IAC7B,4BAA4B,QAAQ;AAAA,IACpC,qCAAqC,QAAQ;AAAA,EAC/C;AACF;AAcO,SAAS,8BAA8B,SAAiE;AAC7G,SAAO;AAAA,IACL,eAAe,QAAQ;AAAA,IACvB,UAAU,QAAQ;AAAA,IAClB,kBAAkB,QAAQ;AAAA,IAC1B,4BAA4B,QAAQ;AAAA,IACpC,cAAc,QAAQ;AAAA,IACtB,wBAAwB,QAAQ;AAAA,IAChC,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC,iBAAiB,QAAQ;AAAA,EAC3B;AACF;","names":["target"]}
1
+ {"version":3,"sources":["../../../../../src/lib/stack-app/users/index.ts"],"sourcesContent":["\n//===========================================\n// THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY, INSTEAD EDIT THE CORRESPONDING FILE IN packages/template\n//===========================================\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { CurrentUserCrud } from \"@stackframe/stack-shared/dist/interface/crud/current-user\";\nimport { UsersCrud } from \"@stackframe/stack-shared/dist/interface/crud/users\";\nimport type { RestrictedReason } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { InternalSession } from \"@stackframe/stack-shared/dist/sessions\";\nimport { encodeBase64 } from \"@stackframe/stack-shared/dist/utils/bytes\";\nimport { GeoInfo } from \"@stackframe/stack-shared/dist/utils/geo\";\nimport { ReadonlyJson } from \"@stackframe/stack-shared/dist/utils/json\";\nimport { ProviderType } from \"@stackframe/stack-shared/dist/utils/oauth\";\nimport { Result } from \"@stackframe/stack-shared/dist/utils/results\";\nimport { ApiKeyCreationOptions, UserApiKey, UserApiKeyFirstView } from \"../api-keys\";\nimport { AsyncStoreProperty, AuthLike } from \"../common\";\nimport { OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { Customer } from \"../customers\";\nimport { NotificationCategory } from \"../notification-categories\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectCreateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\nconst userGetterErrorMessage = \"Stack Auth: useUser() already returns the user object. Use `const user = useUser()` (or `const user = await app.getUser()`) instead of destructuring it like `const { user } = ...`.\";\n\nexport function withUserDestructureGuard<T extends object>(target: T): T {\n Object.freeze(target);\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === \"user\") {\n return guardGetter();\n }\n return target[prop as keyof T];\n },\n });\n}\n\nfunction guardGetter(): never {\n throw new Error(userGetterErrorMessage);\n}\n\nexport type OAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId?: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\nexport type ServerOAuthProvider = {\n readonly id: string,\n readonly type: string,\n readonly userId: string,\n readonly accountId: string,\n readonly email?: string,\n readonly allowSignIn: boolean,\n readonly allowConnectedAccounts: boolean,\n update(data: { accountId?: string, email?: string, allowSignIn?: boolean, allowConnectedAccounts?: boolean }): Promise<Result<void,\n InstanceType<typeof KnownErrors.OAuthProviderAccountIdAlreadyUsedForSignIn>\n >>,\n delete(): Promise<void>,\n};\n\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = AuthLike<{}> & {\n readonly _internalSession: InternalSession,\n readonly currentSession: {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n useTokens(): { accessToken: string | null, refreshToken: string | null }, // THIS_LINE_PLATFORM react-like\n },\n};\n\n/**\n * ```\n * +----------+-------------+-------------------+\n * | \\ | !Server | Server |\n * +----------+-------------+-------------------+\n * | !Session | User | ServerUser |\n * | Session | CurrentUser | CurrentServerUser |\n * +----------+-------------+-------------------+\n * ```\n *\n * The fields on each of these types are available iff:\n * BaseUser: true\n * Auth: Session\n * ServerBaseUser: Server\n * UserExtra: Session OR Server\n *\n * The types are defined as follows (in the typescript manner):\n * User = BaseUser\n * CurrentUser = BaseUser & Auth & UserExtra\n * ServerUser = BaseUser & ServerBaseUser & UserExtra\n * CurrentServerUser = BaseUser & ServerBaseUser & Auth & UserExtra\n **/\n\nexport type BaseUser = {\n readonly id: string,\n\n readonly displayName: string | null,\n\n /**\n * The user's email address.\n *\n * Note: This might NOT be unique across multiple users, so always use `id` for unique identification.\n */\n readonly primaryEmail: string | null,\n readonly primaryEmailVerified: boolean,\n readonly profileImageUrl: string | null,\n\n readonly signedUpAt: Date,\n\n readonly clientMetadata: any,\n readonly clientReadOnlyMetadata: any,\n\n /**\n * Whether the user has a password set.\n */\n readonly hasPassword: boolean,\n readonly otpAuthEnabled: boolean,\n readonly passkeyAuthEnabled: boolean,\n\n readonly isMultiFactorRequired: boolean,\n readonly isAnonymous: boolean,\n /**\n * Whether the user is in restricted state (signed up but hasn't completed onboarding requirements).\n * For example, if email verification is required but the user hasn't verified their email yet.\n */\n readonly isRestricted: boolean,\n /**\n * The reason why the user is restricted, e.g., { type: \"email_not_verified\" }, { type: \"anonymous\" }, or { type: \"restricted_by_administrator\" }.\n * Null if the user is not restricted.\n */\n readonly restrictedReason: RestrictedReason | null,\n toClientJson(): CurrentUserCrud[\"Client\"][\"Read\"],\n\n /**\n * @deprecated, use contact channel's usedForAuth instead\n */\n readonly emailAuthEnabled: boolean,\n /**\n * @deprecated\n */\n readonly oauthProviders: readonly { id: string }[],\n}\n\nexport type UserExtra = {\n setDisplayName(displayName: string | null): Promise<void>,\n /** @deprecated Use contact channel's sendVerificationEmail instead */\n sendVerificationEmail(): Promise<KnownErrors[\"EmailAlreadyVerified\"] | void>,\n setClientMetadata(metadata: any): Promise<void>,\n updatePassword(options: { oldPassword: string, newPassword: string}): Promise<KnownErrors[\"PasswordConfirmationMismatch\"] | KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n setPassword(options: { password: string }): Promise<KnownErrors[\"PasswordRequirementsNotMet\"] | void>,\n\n /**\n * A shorthand method to update multiple fields of the user at once.\n */\n update(update: UserUpdateOptions): Promise<void>,\n\n useContactChannels(): ContactChannel[], // THIS_LINE_PLATFORM react-like\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\n\n useNotificationCategories(): NotificationCategory[], // THIS_LINE_PLATFORM react-like\n listNotificationCategories(): Promise<NotificationCategory[]>,\n\n delete(): Promise<void>,\n\n getConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): Promise<OAuthConnection>,\n getConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): Promise<OAuthConnection | null>,\n\n useConnectedAccount(id: ProviderType, options: { or: 'redirect', scopes?: string[] }): OAuthConnection,\n useConnectedAccount(id: ProviderType, options?: { or?: 'redirect' | 'throw' | 'return-null', scopes?: string[] }): OAuthConnection | null,\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n usePermissions(scope: Team, options?: { recursive?: boolean }): TeamPermission[],\n usePermissions(options?: { recursive?: boolean }): TeamPermission[],\n\n usePermission(scope: Team, permissionId: string): TeamPermission | null,\n usePermission(permissionId: string): TeamPermission | null,\n\n readonly selectedTeam: Team | null,\n setSelectedTeam(teamOrId: string | Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n getActiveSessions(): Promise<ActiveSession[]>,\n revokeSession(sessionId: string): Promise<void>,\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n useTeamProfile(team: Team): EditableTeamMemberProfile, // THIS_LINE_PLATFORM react-like\n\n createApiKey(options: ApiKeyCreationOptions<\"user\">): Promise<UserApiKeyFirstView>,\n\n useOAuthProviders(): OAuthProvider[], // THIS_LINE_PLATFORM react-like\n listOAuthProviders(): Promise<OAuthProvider[]>,\n\n useOAuthProvider(id: string): OAuthProvider | null, // THIS_LINE_PLATFORM react-like\n getOAuthProvider(id: string): Promise<OAuthProvider | null>,\n\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\n}\n& AsyncStoreProperty<\"apiKeys\", [], UserApiKey[], true>\n& AsyncStoreProperty<\"team\", [id: string], Team | null, false>\n& AsyncStoreProperty<\"teams\", [], Team[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { recursive?: boolean }], TeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { recursive?: boolean }], TeamPermission[], true>;\n\nexport type InternalUserExtra =\n & {\n createProject(newProject: AdminProjectCreateOptions): Promise<AdminOwnedProject>,\n transferProject(projectIdToTransfer: string, newTeamId: string): Promise<void>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra & Customer;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\nexport type TokenPartialUser = Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"isAnonymous\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>\n\nexport type SyncedPartialUser = TokenPartialUser & Pick<\n User,\n | \"id\"\n | \"displayName\"\n | \"primaryEmail\"\n | \"primaryEmailVerified\"\n | \"profileImageUrl\"\n | \"signedUpAt\"\n | \"clientMetadata\"\n | \"clientReadOnlyMetadata\"\n | \"isAnonymous\"\n | \"hasPassword\"\n | \"isRestricted\"\n | \"restrictedReason\"\n>;\n\n\nexport type ActiveSession = {\n id: string,\n userId: string,\n createdAt: Date,\n isImpersonation: boolean,\n lastUsedAt: Date | undefined,\n isCurrentSession: boolean,\n geoInfo?: GeoInfo,\n};\n\nexport type UserUpdateOptions = {\n displayName?: string | null,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?: boolean,\n primaryEmail?: string | null,\n}\nexport function userUpdateOptionsToCrud(options: UserUpdateOptions): CurrentUserCrud[\"Client\"][\"Update\"] {\n return {\n display_name: options.displayName,\n client_metadata: options.clientMetadata,\n selected_team_id: options.selectedTeamId,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n profile_image_url: options.profileImageUrl,\n otp_auth_enabled: options.otpAuthEnabled,\n passkey_auth_enabled: options.passkeyAuthEnabled,\n primary_email: options.primaryEmail,\n };\n}\n\n\nexport type ServerBaseUser = {\n setPrimaryEmail(email: string | null, options?: { verified?: boolean | undefined }): Promise<void>,\n\n readonly lastActiveAt: Date,\n\n readonly serverMetadata: any,\n setServerMetadata(metadata: any): Promise<void>,\n setClientReadOnlyMetadata(metadata: any): Promise<void>,\n\n /** Whether the user is restricted by an administrator. Can be set manually or by sign-up rules. */\n readonly restrictedByAdmin: boolean,\n /** Public reason shown to the user explaining why they are restricted. Optional. */\n readonly restrictedByAdminReason: string | null,\n /** Private details about the restriction (e.g., which sign-up rule triggered). Only visible to server access and above. */\n readonly restrictedByAdminPrivateDetails: string | null,\n\n createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n useContactChannels(): ServerContactChannel[], // THIS_LINE_PLATFORM react-like\n listContactChannels(): Promise<ServerContactChannel[]>,\n createContactChannel(data: ServerContactChannelCreateOptions): Promise<ServerContactChannel>,\n\n update(user: ServerUserUpdateOptions): Promise<void>,\n\n grantPermission(scope: Team, permissionId: string): Promise<void>,\n grantPermission(permissionId: string): Promise<void>,\n\n revokePermission(scope: Team, permissionId: string): Promise<void>,\n revokePermission(permissionId: string): Promise<void>,\n\n getPermission(scope: Team, permissionId: string): Promise<TeamPermission | null>,\n getPermission(permissionId: string): Promise<TeamPermission | null>,\n\n hasPermission(scope: Team, permissionId: string): Promise<boolean>,\n hasPermission(permissionId: string): Promise<boolean>,\n\n listPermissions(scope: Team, options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n listPermissions(options?: { recursive?: boolean }): Promise<TeamPermission[]>,\n\n usePermissions(scope: Team, options?: { recursive?: boolean }): TeamPermission[],\n usePermissions(options?: { recursive?: boolean }): TeamPermission[],\n\n usePermission(scope: Team, permissionId: string): TeamPermission | null,\n usePermission(permissionId: string): TeamPermission | null,\n\n useOAuthProviders(): ServerOAuthProvider[], // THIS_LINE_PLATFORM react-like\n listOAuthProviders(): Promise<ServerOAuthProvider[]>,\n\n useOAuthProvider(id: string): ServerOAuthProvider | null, // THIS_LINE_PLATFORM react-like\n getOAuthProvider(id: string): Promise<ServerOAuthProvider | null>,\n\n /**\n * Creates a new session object with a refresh token for this user. Can be used to impersonate them.\n */\n createSession(options?: { expiresInMillis?: number, isImpersonation?: boolean }): Promise<{\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n }>,\n}\n& AsyncStoreProperty<\"team\", [id: string], ServerTeam | null, false>\n& AsyncStoreProperty<\"teams\", [], ServerTeam[], true>\n& AsyncStoreProperty<\"permission\", [scope: Team, permissionId: string, options?: { direct?: boolean }], AdminTeamPermission | null, false>\n& AsyncStoreProperty<\"permissions\", [scope: Team, options?: { direct?: boolean }], AdminTeamPermission[], true>;\n\n/**\n * A user including sensitive fields that should only be used on the server, never sent to the client\n * (such as sensitive information and serverMetadata).\n */\nexport type ServerUser = ServerBaseUser & BaseUser & UserExtra & Customer<true>;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\n\nexport type SyncedPartialServerUser = SyncedPartialUser & Pick<\n ServerUser,\n | \"serverMetadata\"\n>;\n\nexport type ServerUserUpdateOptions = {\n primaryEmail?: string | null,\n primaryEmailVerified?: boolean,\n primaryEmailAuthEnabled?: boolean,\n clientReadOnlyMetadata?: ReadonlyJson,\n serverMetadata?: ReadonlyJson,\n password?: string,\n restrictedByAdmin?: boolean,\n restrictedByAdminReason?: string | null,\n restrictedByAdminPrivateDetails?: string | null,\n} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n // Base update options\n const baseUpdate: CurrentUserCrud[\"Server\"][\"Update\"] = {\n display_name: options.displayName,\n primary_email: options.primaryEmail,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n selected_team_id: options.selectedTeamId,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n primary_email_verified: options.primaryEmailVerified,\n password: options.password,\n profile_image_url: options.profileImageUrl,\n totp_secret_base64: options.totpMultiFactorSecret != null ? encodeBase64(options.totpMultiFactorSecret) : options.totpMultiFactorSecret,\n };\n // Add admin restriction fields (may not be in generated types yet but will be at runtime)\n return {\n ...baseUpdate,\n restricted_by_admin: options.restrictedByAdmin,\n restricted_by_admin_reason: options.restrictedByAdminReason,\n restricted_by_admin_private_details: options.restrictedByAdminPrivateDetails,\n } as CurrentUserCrud[\"Server\"][\"Update\"];\n}\n\n\nexport type ServerUserCreateOptions = {\n primaryEmail?: string | null,\n primaryEmailAuthEnabled?: boolean,\n password?: string,\n otpAuthEnabled?: boolean,\n displayName?: string,\n primaryEmailVerified?: boolean,\n clientMetadata?: any,\n clientReadOnlyMetadata?: any,\n serverMetadata?: any,\n}\nexport function serverUserCreateOptionsToCrud(options: ServerUserCreateOptions): UsersCrud[\"Server\"][\"Create\"] {\n return {\n primary_email: options.primaryEmail,\n password: options.password,\n otp_auth_enabled: options.otpAuthEnabled,\n primary_email_auth_enabled: options.primaryEmailAuthEnabled,\n display_name: options.displayName,\n primary_email_verified: options.primaryEmailVerified,\n client_metadata: options.clientMetadata,\n client_read_only_metadata: options.clientReadOnlyMetadata,\n server_metadata: options.serverMetadata,\n };\n}\n"],"mappings":";AASA,SAAS,oBAAoB;AAe7B,IAAM,yBAAyB;AAExB,SAAS,yBAA2C,QAAc;AACvE,SAAO,OAAO,MAAM;AACpB,SAAO,IAAI,MAAM,QAAQ;AAAA,IACvB,IAAIA,SAAQ,MAAM,UAAU;AAC1B,UAAI,SAAS,QAAQ;AACnB,eAAO,YAAY;AAAA,MACrB;AACA,aAAOA,QAAO,IAAe;AAAA,IAC/B;AAAA,EACF,CAAC;AACH;AAEA,SAAS,cAAqB;AAC5B,QAAM,IAAI,MAAM,sBAAsB;AACxC;AAuPO,SAAS,wBAAwB,SAAiE;AACvG,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,QAAQ;AAAA,IAC1B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,IAClH,mBAAmB,QAAQ;AAAA,IAC3B,kBAAkB,QAAQ;AAAA,IAC1B,sBAAsB,QAAQ;AAAA,IAC9B,eAAe,QAAQ;AAAA,EACzB;AACF;AA8FO,SAAS,8BAA8B,SAAuE;AAEnH,QAAM,aAAkD;AAAA,IACtD,cAAc,QAAQ;AAAA,IACtB,eAAe,QAAQ;AAAA,IACvB,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,QAAQ;AAAA,IAC1B,4BAA4B,QAAQ;AAAA,IACpC,wBAAwB,QAAQ;AAAA,IAChC,UAAU,QAAQ;AAAA,IAClB,mBAAmB,QAAQ;AAAA,IAC3B,oBAAoB,QAAQ,yBAAyB,OAAO,aAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,EACpH;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,qBAAqB,QAAQ;AAAA,IAC7B,4BAA4B,QAAQ;AAAA,IACpC,qCAAqC,QAAQ;AAAA,EAC/C;AACF;AAcO,SAAS,8BAA8B,SAAiE;AAC7G,SAAO;AAAA,IACL,eAAe,QAAQ;AAAA,IACvB,UAAU,QAAQ;AAAA,IAClB,kBAAkB,QAAQ;AAAA,IAC1B,4BAA4B,QAAQ;AAAA,IACpC,cAAc,QAAQ;AAAA,IACtB,wBAAwB,QAAQ;AAAA,IAChC,iBAAiB,QAAQ;AAAA,IACzB,2BAA2B,QAAQ;AAAA,IACnC,iBAAiB,QAAQ;AAAA,EAC3B;AACF;","names":["target"]}
@@ -504,7 +504,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
504
504
  "__stack-auto-translation-249": "Teamnutzername",
505
505
  "__stack-auto-translation-25": "Autorisierung...",
506
506
  "__stack-auto-translation-250": "Teams",
507
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
507
+ "__stack-auto-translation-251": "Die CLI-Anwendung wurde erfolgreich autorisiert. Sie k\xF6nnen dieses Fenster schlie\xDFen und zur Befehlszeile zur\xFCckkehren.",
508
508
  "__stack-auto-translation-252": "Der magische Link wurde bereits verwendet. Der Link kann nur einmal benutzt werden. Bitte fordern Sie einen neuen magischen Link an, wenn Sie sich erneut anmelden m\xFCssen.",
509
509
  "__stack-auto-translation-253": "Der Anmeldevorgang wurde abgebrochen oder verweigert. Bitte versuchen Sie es erneut.",
510
510
  "__stack-auto-translation-254": "Der Benutzer ist bereits mit einem anderen OAuth-Konto verbunden. Haben Sie vielleicht das falsche Konto auf der Seite des OAuth-Anbieters ausgew\xE4hlt?",
@@ -555,7 +555,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
555
555
  "__stack-auto-translation-295": "Sie k\xF6nnen Ihre letzte Anmelde-E-Mail nicht entfernen",
556
556
  "__stack-auto-translation-296": "Sie k\xF6nnen Ihre aktuelle Sitzung nicht widerrufen",
557
557
  "__stack-auto-translation-297": "Ihre E-Mail wurde verifiziert!",
558
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
558
+ "__stack-auto-translation-298": "Sie haben Ihre Kontoeinrichtung noch nicht abgeschlossen. Bitte wenden Sie sich an den Support, wenn Sie glauben, dass dies ein Fehler ist.",
559
559
  "__stack-auto-translation-299": "Ihre E-Mail-Adresse",
560
560
  "__stack-auto-translation-3": "Kontoeinstellungen",
561
561
  "__stack-auto-translation-30": "Tarif \xE4ndern",
@@ -1118,7 +1118,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
1118
1118
  "__stack-auto-translation-249": "Nombre de usuario del equipo",
1119
1119
  "__stack-auto-translation-25": "Autorizando...",
1120
1120
  "__stack-auto-translation-250": "Equipos",
1121
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
1121
+ "__stack-auto-translation-251": "La aplicaci\xF3n CLI ha sido autorizada exitosamente. Puedes cerrar esta ventana y regresar a la l\xEDnea de comandos.",
1122
1122
  "__stack-auto-translation-252": "El enlace m\xE1gico ya ha sido utilizado. El enlace solo puede usarse una vez. Por favor, solicita un nuevo enlace m\xE1gico si necesitas iniciar sesi\xF3n nuevamente.",
1123
1123
  "__stack-auto-translation-253": "La operaci\xF3n de inicio de sesi\xF3n ha sido cancelada o denegada. Por favor, int\xE9ntelo de nuevo.",
1124
1124
  "__stack-auto-translation-254": "El usuario ya est\xE1 conectado a otra cuenta de OAuth. \xBFQuiz\xE1s seleccionaste la cuenta incorrecta en la p\xE1gina del proveedor de OAuth?",
@@ -1169,7 +1169,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
1169
1169
  "__stack-auto-translation-295": "No puedes eliminar tu \xFAltimo correo electr\xF3nico de inicio de sesi\xF3n",
1170
1170
  "__stack-auto-translation-296": "No puedes revocar tu sesi\xF3n actual",
1171
1171
  "__stack-auto-translation-297": "\xA1Tu correo electr\xF3nico ha sido verificado!",
1172
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
1172
+ "__stack-auto-translation-298": "A\xFAn no has completado la configuraci\xF3n de tu cuenta. Por favor contacta a soporte si crees que esto es un error.",
1173
1173
  "__stack-auto-translation-299": "Tu correo electr\xF3nico",
1174
1174
  "__stack-auto-translation-3": "Configuraci\xF3n de cuenta",
1175
1175
  "__stack-auto-translation-30": "Cambiar plan",
@@ -1425,7 +1425,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
1425
1425
  "__stack-auto-translation-249": "Nombre de usuario del equipo",
1426
1426
  "__stack-auto-translation-25": "Autorizando...",
1427
1427
  "__stack-auto-translation-250": "Equipos",
1428
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
1428
+ "__stack-auto-translation-251": "La aplicaci\xF3n CLI se ha autorizado correctamente. Puedes cerrar esta ventana y volver a la l\xEDnea de comandos.",
1429
1429
  "__stack-auto-translation-252": "El enlace m\xE1gico ya ha sido utilizado. El enlace solo se puede usar una vez. Por favor, solicita un nuevo enlace m\xE1gico si necesitas iniciar sesi\xF3n de nuevo.",
1430
1430
  "__stack-auto-translation-253": "La operaci\xF3n de inicio de sesi\xF3n ha sido cancelada o denegada. Por favor, int\xE9ntelo de nuevo.",
1431
1431
  "__stack-auto-translation-254": "El usuario ya est\xE1 conectado a otra cuenta OAuth. \xBFQuiz\xE1s seleccion\xF3 la cuenta equivocada en la p\xE1gina del proveedor OAuth?",
@@ -1476,7 +1476,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
1476
1476
  "__stack-auto-translation-295": "No puedes eliminar tu \xFAltimo email de inicio de sesi\xF3n",
1477
1477
  "__stack-auto-translation-296": "No puedes revocar tu sesi\xF3n actual",
1478
1478
  "__stack-auto-translation-297": "\xA1Tu email ha sido verificado!",
1479
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
1479
+ "__stack-auto-translation-298": "A\xFAn no has completado la configuraci\xF3n de tu cuenta. Por favor, contacta con soporte si crees que esto es un error.",
1480
1480
  "__stack-auto-translation-299": "Tu correo electr\xF3nico",
1481
1481
  "__stack-auto-translation-3": "Configuraci\xF3n de la cuenta",
1482
1482
  "__stack-auto-translation-30": "Cambiar plan",
@@ -1732,7 +1732,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
1732
1732
  "__stack-auto-translation-249": "Nom d'utilisateur d'\xE9quipe",
1733
1733
  "__stack-auto-translation-25": "Autorisation en cours...",
1734
1734
  "__stack-auto-translation-250": "\xC9quipes",
1735
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
1735
+ "__stack-auto-translation-251": "L'application CLI a \xE9t\xE9 autoris\xE9e avec succ\xE8s. Vous pouvez fermer cette fen\xEAtre et retourner \xE0 la ligne de commande.",
1736
1736
  "__stack-auto-translation-252": "Le lien magique a d\xE9j\xE0 \xE9t\xE9 utilis\xE9. Le lien ne peut \xEAtre utilis\xE9 qu'une seule fois. Veuillez demander un nouveau lien magique si vous devez vous reconnecter.",
1737
1737
  "__stack-auto-translation-253": "L'op\xE9ration de connexion a \xE9t\xE9 annul\xE9e ou refus\xE9e. Veuillez r\xE9essayer.",
1738
1738
  "__stack-auto-translation-254": "L'utilisateur est d\xE9j\xE0 connect\xE9 \xE0 un autre compte OAuth. Avez-vous peut-\xEAtre s\xE9lectionn\xE9 le mauvais compte sur la page du fournisseur OAuth ?",
@@ -1783,7 +1783,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
1783
1783
  "__stack-auto-translation-295": "Vous ne pouvez pas supprimer votre dernier courriel de connexion",
1784
1784
  "__stack-auto-translation-296": "Vous ne pouvez pas r\xE9voquer votre session actuelle",
1785
1785
  "__stack-auto-translation-297": "Votre courriel a \xE9t\xE9 v\xE9rifi\xE9 !",
1786
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
1786
+ "__stack-auto-translation-298": "Vous n'avez pas encore compl\xE9t\xE9 la configuration de votre compte. Veuillez contacter le support si vous pensez qu'il s'agit d'une erreur.",
1787
1787
  "__stack-auto-translation-299": "Votre courriel",
1788
1788
  "__stack-auto-translation-3": "Param\xE8tres du compte",
1789
1789
  "__stack-auto-translation-30": "Changer de forfait",
@@ -2039,7 +2039,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
2039
2039
  "__stack-auto-translation-249": "Nom d'utilisateur de l'\xE9quipe",
2040
2040
  "__stack-auto-translation-25": "Autorisation en cours...",
2041
2041
  "__stack-auto-translation-250": "\xC9quipes",
2042
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
2042
+ "__stack-auto-translation-251": "L'application CLI a \xE9t\xE9 autoris\xE9e avec succ\xE8s. Vous pouvez fermer cette fen\xEAtre et retourner \xE0 la ligne de commande.",
2043
2043
  "__stack-auto-translation-252": "Le lien magique a d\xE9j\xE0 \xE9t\xE9 utilis\xE9. Le lien ne peut \xEAtre utilis\xE9 qu'une seule fois. Veuillez demander un nouveau lien magique si vous devez vous reconnecter.",
2044
2044
  "__stack-auto-translation-253": "L'op\xE9ration de connexion a \xE9t\xE9 annul\xE9e ou refus\xE9e. Veuillez r\xE9essayer.",
2045
2045
  "__stack-auto-translation-254": "L'utilisateur est d\xE9j\xE0 connect\xE9 \xE0 un autre compte OAuth. Avez-vous peut-\xEAtre s\xE9lectionn\xE9 le mauvais compte sur la page du fournisseur OAuth ?",
@@ -2090,7 +2090,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
2090
2090
  "__stack-auto-translation-295": "Vous ne pouvez pas supprimer votre derni\xE8re adresse e-mail de connexion",
2091
2091
  "__stack-auto-translation-296": "Vous ne pouvez pas r\xE9voquer votre session actuelle",
2092
2092
  "__stack-auto-translation-297": "Votre email a \xE9t\xE9 v\xE9rifi\xE9 !",
2093
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
2093
+ "__stack-auto-translation-298": "Vous n'avez pas encore termin\xE9 la configuration de votre compte. Veuillez contacter le support si vous pensez qu'il s'agit d'une erreur.",
2094
2094
  "__stack-auto-translation-299": "Votre e-mail",
2095
2095
  "__stack-auto-translation-3": "Param\xE8tres du compte",
2096
2096
  "__stack-auto-translation-30": "Changer de forfait",
@@ -2346,7 +2346,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
2346
2346
  "__stack-auto-translation-249": "Nome utente del team",
2347
2347
  "__stack-auto-translation-25": "Autorizzazione in corso...",
2348
2348
  "__stack-auto-translation-250": "Team",
2349
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
2349
+ "__stack-auto-translation-251": "L'applicazione CLI \xE8 stata autorizzata con successo. Puoi chiudere questa finestra e tornare alla riga di comando.",
2350
2350
  "__stack-auto-translation-252": "Il link magico \xE8 gi\xE0 stato utilizzato. Il link pu\xF2 essere usato una sola volta. Si prega di richiedere un nuovo link magico se \xE8 necessario accedere nuovamente.",
2351
2351
  "__stack-auto-translation-253": "L'operazione di accesso \xE8 stata annullata o negata. Si prega di riprovare.",
2352
2352
  "__stack-auto-translation-254": "L'utente \xE8 gi\xE0 collegato a un altro account OAuth. Hai forse selezionato l'account sbagliato nella pagina del provider OAuth?",
@@ -2397,7 +2397,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
2397
2397
  "__stack-auto-translation-295": "Non puoi rimuovere la tua ultima email di accesso",
2398
2398
  "__stack-auto-translation-296": "Non puoi revocare la sessione corrente",
2399
2399
  "__stack-auto-translation-297": "La tua email \xE8 stata verificata!",
2400
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
2400
+ "__stack-auto-translation-298": "Non hai ancora completato la configurazione del tuo account. Contatta il supporto se ritieni che si tratti di un errore.",
2401
2401
  "__stack-auto-translation-299": "La tua email",
2402
2402
  "__stack-auto-translation-3": "Impostazioni Account",
2403
2403
  "__stack-auto-translation-30": "Cambia piano",
@@ -2653,7 +2653,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
2653
2653
  "__stack-auto-translation-249": "\u30C1\u30FC\u30E0\u5185\u30E6\u30FC\u30B6\u30FC\u540D",
2654
2654
  "__stack-auto-translation-25": "\u8A8D\u8A3C\u4E2D...",
2655
2655
  "__stack-auto-translation-250": "\u30C1\u30FC\u30E0",
2656
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
2656
+ "__stack-auto-translation-251": "CLI\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8A8D\u8A3C\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002\u3053\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u9589\u3058\u3066\u3001\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u306B\u623B\u3063\u3066\u304F\u3060\u3055\u3044\u3002",
2657
2657
  "__stack-auto-translation-252": "\u30DE\u30B8\u30C3\u30AF\u30EA\u30F3\u30AF\u306F\u65E2\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30EA\u30F3\u30AF\u306F\u4E00\u5EA6\u3057\u304B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u518D\u5EA6\u30B5\u30A4\u30F3\u30A4\u30F3\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u5834\u5408\u306F\u3001\u65B0\u3057\u3044\u30DE\u30B8\u30C3\u30AF\u30EA\u30F3\u30AF\u3092\u30EA\u30AF\u30A8\u30B9\u30C8\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
2658
2658
  "__stack-auto-translation-253": "\u30B5\u30A4\u30F3\u30A4\u30F3\u64CD\u4F5C\u306F\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u305F\u304B\u62D2\u5426\u3055\u308C\u307E\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",
2659
2659
  "__stack-auto-translation-254": "\u30E6\u30FC\u30B6\u30FC\u306F\u65E2\u306B\u5225\u306EOAuth\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u63A5\u7D9A\u3055\u308C\u3066\u3044\u307E\u3059\u3002OAuth\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u306E\u30DA\u30FC\u30B8\u3067\u9593\u9055\u3063\u305F\u30A2\u30AB\u30A6\u30F3\u30C8\u3092\u9078\u629E\u3057\u305F\u53EF\u80FD\u6027\u306F\u3042\u308A\u307E\u305B\u3093\u304B\uFF1F",
@@ -2704,7 +2704,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
2704
2704
  "__stack-auto-translation-295": "\u6700\u5F8C\u306E\u30B5\u30A4\u30F3\u30A4\u30F3\u30E1\u30FC\u30EB\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093",
2705
2705
  "__stack-auto-translation-296": "\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u53D6\u308A\u6D88\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093",
2706
2706
  "__stack-auto-translation-297": "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u8A8D\u8A3C\u3055\u308C\u307E\u3057\u305F\uFF01",
2707
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
2707
+ "__stack-auto-translation-298": "\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u8A2D\u5B9A\u304C\u307E\u3060\u5B8C\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u30A8\u30E9\u30FC\u3060\u3068\u601D\u308F\u308C\u308B\u5834\u5408\u306F\u3001\u30B5\u30DD\u30FC\u30C8\u307E\u3067\u304A\u554F\u3044\u5408\u308F\u305B\u304F\u3060\u3055\u3044\u3002",
2708
2708
  "__stack-auto-translation-299": "\u3042\u306A\u305F\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",
2709
2709
  "__stack-auto-translation-3": "\u30A2\u30AB\u30A6\u30F3\u30C8\u8A2D\u5B9A",
2710
2710
  "__stack-auto-translation-30": "\u30D7\u30E9\u30F3\u3092\u5909\u66F4",
@@ -2960,7 +2960,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
2960
2960
  "__stack-auto-translation-249": "\uD300 \uC0AC\uC6A9\uC790 \uC774\uB984",
2961
2961
  "__stack-auto-translation-25": "\uC778\uC99D \uC911...",
2962
2962
  "__stack-auto-translation-250": "\uD300",
2963
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
2963
+ "__stack-auto-translation-251": "CLI \uC560\uD50C\uB9AC\uCF00\uC774\uC158\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uC2B9\uC778\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uC774 \uCC3D\uC744 \uB2EB\uACE0 \uBA85\uB839\uC904\uB85C \uB3CC\uC544\uAC00\uC138\uC694.",
2964
2964
  "__stack-auto-translation-252": "\uB9E4\uC9C1 \uB9C1\uD06C\uAC00 \uC774\uBBF8 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB9C1\uD06C\uB294 \uD55C \uBC88\uB9CC \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uB85C\uADF8\uC778\uD574\uC57C \uD558\uB294 \uACBD\uC6B0 \uC0C8 \uB9E4\uC9C1 \uB9C1\uD06C\uB97C \uC694\uCCAD\uD558\uC138\uC694.",
2965
2965
  "__stack-auto-translation-253": "\uB85C\uADF8\uC778 \uC791\uC5C5\uC774 \uCDE8\uC18C\uB418\uC5C8\uAC70\uB098 \uAC70\uBD80\uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uC2DC\uB3C4\uD574 \uC8FC\uC138\uC694.",
2966
2966
  "__stack-auto-translation-254": "\uC0AC\uC6A9\uC790\uB294 \uC774\uBBF8 \uB2E4\uB978 OAuth \uACC4\uC815\uC5D0 \uC5F0\uACB0\uB418\uC5B4 \uC788\uC2B5\uB2C8\uB2E4. OAuth \uC81C\uACF5\uC790 \uD398\uC774\uC9C0\uC5D0\uC11C \uC798\uBABB\uB41C \uACC4\uC815\uC744 \uC120\uD0DD\uD558\uC168\uB098\uC694?",
@@ -3011,7 +3011,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
3011
3011
  "__stack-auto-translation-295": "\uB9C8\uC9C0\uB9C9 \uB85C\uADF8\uC778 \uC774\uBA54\uC77C\uC744 \uC0AD\uC81C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",
3012
3012
  "__stack-auto-translation-296": "\uD604\uC7AC \uC138\uC158\uC744 \uD574\uC81C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4",
3013
3013
  "__stack-auto-translation-297": "\uC774\uBA54\uC77C\uC774 \uC778\uC99D\uB418\uC5C8\uC2B5\uB2C8\uB2E4!",
3014
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
3014
+ "__stack-auto-translation-298": "\uC544\uC9C1 \uACC4\uC815 \uC124\uC815\uC744 \uC644\uB8CC\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uC624\uB958\uB77C\uACE0 \uC0DD\uAC01\uB418\uBA74 \uC9C0\uC6D0\uD300\uC5D0 \uBB38\uC758\uD574 \uC8FC\uC138\uC694.",
3015
3015
  "__stack-auto-translation-299": "\uC774\uBA54\uC77C \uC8FC\uC18C",
3016
3016
  "__stack-auto-translation-3": "\uACC4\uC815 \uC124\uC815",
3017
3017
  "__stack-auto-translation-30": "\uD50C\uB79C \uBCC0\uACBD",
@@ -3267,7 +3267,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
3267
3267
  "__stack-auto-translation-249": "Nome de usu\xE1rio na equipe",
3268
3268
  "__stack-auto-translation-25": "Autorizando...",
3269
3269
  "__stack-auto-translation-250": "Equipes",
3270
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
3270
+ "__stack-auto-translation-251": "A aplica\xE7\xE3o CLI foi autorizada com sucesso. Voc\xEA pode fechar esta janela e retornar \xE0 linha de comando.",
3271
3271
  "__stack-auto-translation-252": "O link m\xE1gico j\xE1 foi utilizado. O link s\xF3 pode ser usado uma vez. Por favor, solicite um novo link m\xE1gico se precisar fazer login novamente.",
3272
3272
  "__stack-auto-translation-253": "A opera\xE7\xE3o de login foi cancelada ou negada. Tente novamente.",
3273
3273
  "__stack-auto-translation-254": "O usu\xE1rio j\xE1 est\xE1 conectado a outra conta OAuth. Voc\xEA selecionou a conta errada na p\xE1gina do provedor OAuth?",
@@ -3318,7 +3318,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
3318
3318
  "__stack-auto-translation-295": "Voc\xEA n\xE3o pode remover seu \xFAltimo email de login",
3319
3319
  "__stack-auto-translation-296": "Voc\xEA n\xE3o pode revogar sua sess\xE3o atual",
3320
3320
  "__stack-auto-translation-297": "Seu email foi verificado!",
3321
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
3321
+ "__stack-auto-translation-298": "Voc\xEA ainda n\xE3o concluiu a configura\xE7\xE3o da sua conta. Entre em contato com o suporte se acreditar que isso \xE9 um erro.",
3322
3322
  "__stack-auto-translation-299": "Seu E-mail",
3323
3323
  "__stack-auto-translation-3": "Configura\xE7\xF5es da Conta",
3324
3324
  "__stack-auto-translation-30": "Alterar plano",
@@ -3574,7 +3574,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
3574
3574
  "__stack-auto-translation-249": "Nome de utilizador da equipa",
3575
3575
  "__stack-auto-translation-25": "A autorizar...",
3576
3576
  "__stack-auto-translation-250": "Equipas",
3577
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
3577
+ "__stack-auto-translation-251": "A aplica\xE7\xE3o CLI foi autorizada com sucesso. Pode fechar esta janela e voltar \xE0 linha de comandos.",
3578
3578
  "__stack-auto-translation-252": "O link m\xE1gico j\xE1 foi utilizado. O link s\xF3 pode ser usado uma vez. Por favor, solicite um novo link m\xE1gico se precisar de iniciar sess\xE3o novamente.",
3579
3579
  "__stack-auto-translation-253": "A opera\xE7\xE3o de in\xEDcio de sess\xE3o foi cancelada ou negada. Por favor, tente novamente.",
3580
3580
  "__stack-auto-translation-254": "O utilizador j\xE1 est\xE1 conectado a outra conta OAuth. Ter\xE1 selecionado a conta errada na p\xE1gina do provedor OAuth?",
@@ -3625,7 +3625,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
3625
3625
  "__stack-auto-translation-295": "N\xE3o \xE9 poss\xEDvel remover o seu \xFAltimo email de in\xEDcio de sess\xE3o",
3626
3626
  "__stack-auto-translation-296": "N\xE3o pode revogar a sua sess\xE3o atual",
3627
3627
  "__stack-auto-translation-297": "O seu email foi verificado!",
3628
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
3628
+ "__stack-auto-translation-298": "Ainda n\xE3o concluiu a configura\xE7\xE3o da sua conta. Por favor, contacte o suporte se acreditar que isto \xE9 um erro.",
3629
3629
  "__stack-auto-translation-299": "O seu email",
3630
3630
  "__stack-auto-translation-3": "Defini\xE7\xF5es da Conta",
3631
3631
  "__stack-auto-translation-30": "Alterar plano",
@@ -3881,7 +3881,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
3881
3881
  "__stack-auto-translation-249": "\u56E2\u961F\u7528\u6237\u540D",
3882
3882
  "__stack-auto-translation-25": "\u6B63\u5728\u6388\u6743...",
3883
3883
  "__stack-auto-translation-250": "\u56E2\u961F",
3884
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
3884
+ "__stack-auto-translation-251": "CLI \u5E94\u7528\u5DF2\u6210\u529F\u6388\u6743\u3002\u60A8\u53EF\u4EE5\u5173\u95ED\u6B64\u7A97\u53E3\u5E76\u8FD4\u56DE\u547D\u4EE4\u884C\u3002",
3885
3885
  "__stack-auto-translation-252": "\u9B54\u6CD5\u94FE\u63A5\u5DF2\u88AB\u4F7F\u7528\u3002\u8BE5\u94FE\u63A5\u53EA\u80FD\u4F7F\u7528\u4E00\u6B21\u3002\u5982\u679C\u9700\u8981\u518D\u6B21\u767B\u5F55\uFF0C\u8BF7\u91CD\u65B0\u7533\u8BF7\u4E00\u4E2A\u65B0\u7684\u9B54\u6CD5\u94FE\u63A5\u3002",
3886
3886
  "__stack-auto-translation-253": "\u767B\u5F55\u64CD\u4F5C\u5DF2\u88AB\u53D6\u6D88\u6216\u62D2\u7EDD\u3002\u8BF7\u91CD\u8BD5\u3002",
3887
3887
  "__stack-auto-translation-254": "\u7528\u6237\u5DF2\u8FDE\u63A5\u5230\u53E6\u4E00\u4E2A OAuth \u8D26\u6237\u3002\u60A8\u662F\u5426\u5728 OAuth \u63D0\u4F9B\u5546\u9875\u9762\u4E0A\u9009\u62E9\u4E86\u9519\u8BEF\u7684\u8D26\u6237\uFF1F",
@@ -3932,7 +3932,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
3932
3932
  "__stack-auto-translation-295": "\u4F60\u4E0D\u80FD\u5220\u9664\u6700\u540E\u4E00\u4E2A\u7528\u4E8E\u767B\u5F55\u7684\u7535\u5B50\u90AE\u7BB1",
3933
3933
  "__stack-auto-translation-296": "\u4F60\u4E0D\u80FD\u64A4\u9500\u5F53\u524D\u4F1A\u8BDD",
3934
3934
  "__stack-auto-translation-297": "\u60A8\u7684\u90AE\u7BB1\u5DF2\u9A8C\u8BC1\uFF01",
3935
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
3935
+ "__stack-auto-translation-298": "\u60A8\u5C1A\u672A\u5B8C\u6210\u8D26\u6237\u8BBE\u7F6E\u3002\u5982\u679C\u60A8\u8BA4\u4E3A\u8FD9\u662F\u9519\u8BEF\uFF0C\u8BF7\u8054\u7CFB\u652F\u6301\u56E2\u961F\u3002",
3936
3936
  "__stack-auto-translation-299": "\u60A8\u7684\u90AE\u7BB1",
3937
3937
  "__stack-auto-translation-3": "\u8D26\u6237\u8BBE\u7F6E",
3938
3938
  "__stack-auto-translation-30": "\u66F4\u6539\u5957\u9910",
@@ -4188,7 +4188,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
4188
4188
  "__stack-auto-translation-249": "\u5718\u968A\u4F7F\u7528\u8005\u540D\u7A31",
4189
4189
  "__stack-auto-translation-25": "\u6388\u6B0A\u4E2D...",
4190
4190
  "__stack-auto-translation-250": "\u5718\u968A",
4191
- "__stack-auto-translation-251": "The CLI application has been authorized successfully. You can close this window and return to the command line.",
4191
+ "__stack-auto-translation-251": "CLI \u61C9\u7528\u7A0B\u5F0F\u5DF2\u6210\u529F\u6388\u6B0A\u3002\u60A8\u53EF\u4EE5\u95DC\u9589\u6B64\u8996\u7A97\u4E26\u8FD4\u56DE\u547D\u4EE4\u5217\u3002",
4192
4192
  "__stack-auto-translation-252": "\u8A72\u9B54\u6CD5\u9023\u7D50\u5DF2\u88AB\u4F7F\u7528\u904E\u3002\u6B64\u9023\u7D50\u50C5\u80FD\u4F7F\u7528\u4E00\u6B21\u3002\u5982\u679C\u60A8\u9700\u8981\u518D\u6B21\u767B\u5165\uFF0C\u8ACB\u91CD\u65B0\u7533\u8ACB\u4E00\u500B\u65B0\u7684\u9B54\u6CD5\u9023\u7D50\u3002",
4193
4193
  "__stack-auto-translation-253": "\u767B\u5165\u64CD\u4F5C\u5DF2\u88AB\u53D6\u6D88\u6216\u62D2\u7D55\u3002\u8ACB\u91CD\u8A66\u3002",
4194
4194
  "__stack-auto-translation-254": "\u4F7F\u7528\u8005\u5DF2\u7D93\u9023\u63A5\u5230\u53E6\u4E00\u500B OAuth \u5E33\u6236\u3002\u60A8\u53EF\u80FD\u5728 OAuth \u63D0\u4F9B\u8005\u9801\u9762\u4E0A\u9078\u64C7\u4E86\u932F\u8AA4\u7684\u5E33\u6236\u55CE\uFF1F",
@@ -4239,7 +4239,7 @@ var quetzalLocales = new Map((0, import_objects.typedEntries)({
4239
4239
  "__stack-auto-translation-295": "\u60A8\u7121\u6CD5\u79FB\u9664\u6700\u5F8C\u4E00\u500B\u7528\u65BC\u767B\u5165\u7684\u96FB\u5B50\u90F5\u4EF6",
4240
4240
  "__stack-auto-translation-296": "\u60A8\u7121\u6CD5\u64A4\u92B7\u76EE\u524D\u5DE5\u4F5C\u968E\u6BB5",
4241
4241
  "__stack-auto-translation-297": "\u60A8\u7684\u96FB\u5B50\u90F5\u4EF6\u5DF2\u9A57\u8B49\uFF01",
4242
- "__stack-auto-translation-298": "You have not yet completed your account setup. Please reach out to support if you believe this is an error.",
4242
+ "__stack-auto-translation-298": "\u60A8\u5C1A\u672A\u5B8C\u6210\u5E33\u6236\u8A2D\u7F6E\u3002\u5982\u679C\u60A8\u8A8D\u70BA\u9019\u662F\u932F\u8AA4\uFF0C\u8ACB\u806F\u7E6B\u652F\u63F4\u5718\u968A\u3002",
4243
4243
  "__stack-auto-translation-299": "\u60A8\u7684\u96FB\u5B50\u90F5\u4EF6",
4244
4244
  "__stack-auto-translation-3": "\u5E33\u6236\u8A2D\u5B9A",
4245
4245
  "__stack-auto-translation-30": "\u8B8A\u66F4\u65B9\u6848",