@stackframe/stack 2.7.23 → 2.7.25
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.
- package/CHANGELOG.md +19 -0
- package/dist/components/elements/sidebar-layout.js +2 -9
- package/dist/components/elements/sidebar-layout.js.map +1 -1
- package/dist/components-page/account-settings.js +70 -83
- package/dist/components-page/account-settings.js.map +1 -1
- package/dist/esm/components/elements/sidebar-layout.js +2 -9
- package/dist/esm/components/elements/sidebar-layout.js.map +1 -1
- package/dist/esm/components-page/account-settings.js +69 -80
- package/dist/esm/components-page/account-settings.js.map +1 -1
- package/dist/esm/generated/global-css.js +1 -1
- package/dist/esm/generated/global-css.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js +6 -10
- package/dist/esm/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js +1 -1
- package/dist/esm/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/esm/lib/stack-app/users/index.js.map +1 -1
- package/dist/generated/global-css.js +1 -1
- package/dist/generated/global-css.js.map +1 -1
- package/dist/index.d.mts +1054 -53
- package/dist/index.d.ts +1054 -53
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js +5 -9
- package/dist/lib/stack-app/apps/implementations/client-app-impl.js.map +1 -1
- package/dist/lib/stack-app/apps/implementations/common.js +1 -1
- package/dist/lib/stack-app/apps/implementations/common.js.map +1 -1
- package/dist/lib/stack-app/users/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/admin-app-impl-CTQhv9tV.d.ts +0 -395
- package/dist/admin-app-impl-DpyRKp1e.d.mts +0 -395
- package/dist/components/credential-sign-in.d.mts +0 -5
- package/dist/components/credential-sign-in.d.ts +0 -5
- package/dist/components/credential-sign-up.d.mts +0 -7
- package/dist/components/credential-sign-up.d.ts +0 -7
- package/dist/components/elements/form-warning.d.mts +0 -7
- package/dist/components/elements/form-warning.d.ts +0 -7
- package/dist/components/elements/maybe-full-page.d.mts +0 -11
- package/dist/components/elements/maybe-full-page.d.ts +0 -11
- package/dist/components/elements/separator-with-text.d.mts +0 -7
- package/dist/components/elements/separator-with-text.d.ts +0 -7
- package/dist/components/elements/sidebar-layout.d.mts +0 -19
- package/dist/components/elements/sidebar-layout.d.ts +0 -19
- package/dist/components/elements/ssr-layout-effect.d.mts +0 -8
- package/dist/components/elements/ssr-layout-effect.d.ts +0 -8
- package/dist/components/elements/user-avatar.d.mts +0 -13
- package/dist/components/elements/user-avatar.d.ts +0 -13
- package/dist/components/iframe-preventer.d.mts +0 -8
- package/dist/components/iframe-preventer.d.ts +0 -8
- package/dist/components/link.d.mts +0 -14
- package/dist/components/link.d.ts +0 -14
- package/dist/components/magic-link-sign-in.d.mts +0 -5
- package/dist/components/magic-link-sign-in.d.ts +0 -5
- package/dist/components/message-cards/known-error-message-card.d.mts +0 -9
- package/dist/components/message-cards/known-error-message-card.d.ts +0 -9
- package/dist/components/message-cards/message-card.d.mts +0 -14
- package/dist/components/message-cards/message-card.d.ts +0 -14
- package/dist/components/message-cards/predefined-message-card.d.mts +0 -8
- package/dist/components/message-cards/predefined-message-card.d.ts +0 -8
- package/dist/components/oauth-button-group.d.mts +0 -14
- package/dist/components/oauth-button-group.d.ts +0 -14
- package/dist/components/oauth-button.d.mts +0 -8
- package/dist/components/oauth-button.d.ts +0 -8
- package/dist/components/passkey-button.d.mts +0 -7
- package/dist/components/passkey-button.d.ts +0 -7
- package/dist/components/profile-image-editor.d.mts +0 -11
- package/dist/components/profile-image-editor.d.ts +0 -11
- package/dist/components/selected-team-switcher.d.mts +0 -33
- package/dist/components/selected-team-switcher.d.ts +0 -33
- package/dist/components/team-icon.d.mts +0 -30
- package/dist/components/team-icon.d.ts +0 -30
- package/dist/components/user-button.d.mts +0 -15
- package/dist/components/user-button.d.ts +0 -15
- package/dist/components-page/account-settings.d.mts +0 -24
- package/dist/components-page/account-settings.d.ts +0 -24
- package/dist/components-page/auth-page.d.mts +0 -24
- package/dist/components-page/auth-page.d.ts +0 -24
- package/dist/components-page/email-verification.d.mts +0 -8
- package/dist/components-page/email-verification.d.ts +0 -8
- package/dist/components-page/error-page.d.mts +0 -8
- package/dist/components-page/error-page.d.ts +0 -8
- package/dist/components-page/forgot-password.d.mts +0 -10
- package/dist/components-page/forgot-password.d.ts +0 -10
- package/dist/components-page/magic-link-callback.d.mts +0 -8
- package/dist/components-page/magic-link-callback.d.ts +0 -8
- package/dist/components-page/oauth-callback.d.mts +0 -7
- package/dist/components-page/oauth-callback.d.ts +0 -7
- package/dist/components-page/password-reset.d.mts +0 -12
- package/dist/components-page/password-reset.d.ts +0 -12
- package/dist/components-page/sign-in.d.mts +0 -10
- package/dist/components-page/sign-in.d.ts +0 -10
- package/dist/components-page/sign-out.d.mts +0 -7
- package/dist/components-page/sign-out.d.ts +0 -7
- package/dist/components-page/sign-up.d.mts +0 -11
- package/dist/components-page/sign-up.d.ts +0 -11
- package/dist/components-page/stack-handler.d.mts +0 -72
- package/dist/components-page/stack-handler.d.ts +0 -72
- package/dist/components-page/team-creation.d.mts +0 -7
- package/dist/components-page/team-creation.d.ts +0 -7
- package/dist/components-page/team-invitation.d.mts +0 -8
- package/dist/components-page/team-invitation.d.ts +0 -8
- package/dist/generated/global-css.d.mts +0 -3
- package/dist/generated/global-css.d.ts +0 -3
- package/dist/generated/quetzal-translations.d.mts +0 -4
- package/dist/generated/quetzal-translations.d.ts +0 -4
- package/dist/global.d.d.mts +0 -2
- package/dist/global.d.d.ts +0 -2
- package/dist/index-C7D6Vt7X.d.mts +0 -560
- package/dist/index-DQk7XJpU.d.ts +0 -560
- package/dist/lib/auth.d.mts +0 -33
- package/dist/lib/auth.d.ts +0 -33
- package/dist/lib/cookie.d.mts +0 -33
- package/dist/lib/cookie.d.ts +0 -33
- package/dist/lib/hooks.d.mts +0 -53
- package/dist/lib/hooks.d.ts +0 -53
- package/dist/lib/stack-app/api-keys/index.d.mts +0 -40
- package/dist/lib/stack-app/api-keys/index.d.ts +0 -40
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.mts +0 -30
- package/dist/lib/stack-app/apps/implementations/admin-app-impl.d.ts +0 -30
- package/dist/lib/stack-app/apps/implementations/client-app-impl.d.mts +0 -30
- package/dist/lib/stack-app/apps/implementations/client-app-impl.d.ts +0 -30
- package/dist/lib/stack-app/apps/implementations/common.d.mts +0 -45
- package/dist/lib/stack-app/apps/implementations/common.d.ts +0 -45
- package/dist/lib/stack-app/apps/implementations/index.d.mts +0 -36
- package/dist/lib/stack-app/apps/implementations/index.d.ts +0 -36
- package/dist/lib/stack-app/apps/implementations/server-app-impl.d.mts +0 -30
- package/dist/lib/stack-app/apps/implementations/server-app-impl.d.ts +0 -30
- package/dist/lib/stack-app/apps/index.d.mts +0 -23
- package/dist/lib/stack-app/apps/index.d.ts +0 -23
- package/dist/lib/stack-app/apps/interfaces/admin-app.d.mts +0 -23
- package/dist/lib/stack-app/apps/interfaces/admin-app.d.ts +0 -23
- package/dist/lib/stack-app/apps/interfaces/client-app.d.mts +0 -23
- package/dist/lib/stack-app/apps/interfaces/client-app.d.ts +0 -23
- package/dist/lib/stack-app/apps/interfaces/server-app.d.mts +0 -23
- package/dist/lib/stack-app/apps/interfaces/server-app.d.ts +0 -23
- package/dist/lib/stack-app/common.d.mts +0 -63
- package/dist/lib/stack-app/common.d.ts +0 -63
- package/dist/lib/stack-app/connected-accounts/index.d.mts +0 -13
- package/dist/lib/stack-app/connected-accounts/index.d.ts +0 -13
- package/dist/lib/stack-app/contact-channels/index.d.mts +0 -38
- package/dist/lib/stack-app/contact-channels/index.d.ts +0 -38
- package/dist/lib/stack-app/email-templates/index.d.mts +0 -15
- package/dist/lib/stack-app/email-templates/index.d.ts +0 -15
- package/dist/lib/stack-app/index.d.mts +0 -23
- package/dist/lib/stack-app/index.d.ts +0 -23
- package/dist/lib/stack-app/permissions/index.d.mts +0 -21
- package/dist/lib/stack-app/permissions/index.d.ts +0 -21
- package/dist/lib/stack-app/project-configs/index.d.mts +0 -82
- package/dist/lib/stack-app/project-configs/index.d.ts +0 -82
- package/dist/lib/stack-app/projects/index.d.mts +0 -23
- package/dist/lib/stack-app/projects/index.d.ts +0 -23
- package/dist/lib/stack-app/teams/index.d.mts +0 -23
- package/dist/lib/stack-app/teams/index.d.ts +0 -23
- package/dist/lib/stack-app/users/index.d.mts +0 -23
- package/dist/lib/stack-app/users/index.d.ts +0 -23
- package/dist/lib/translations.d.mts +0 -5
- package/dist/lib/translations.d.ts +0 -5
- package/dist/providers/stack-provider-client.d.mts +0 -39
- package/dist/providers/stack-provider-client.d.ts +0 -39
- package/dist/providers/stack-provider.d.mts +0 -42
- package/dist/providers/stack-provider.d.ts +0 -42
- package/dist/providers/theme-provider.d.mts +0 -40
- package/dist/providers/theme-provider.d.ts +0 -40
- package/dist/providers/translation-provider-client.d.mts +0 -14
- package/dist/providers/translation-provider-client.d.ts +0 -14
- package/dist/providers/translation-provider.d.mts +0 -10
- package/dist/providers/translation-provider.d.ts +0 -10
- package/dist/utils/browser-script.d.mts +0 -7
- package/dist/utils/browser-script.d.ts +0 -7
- package/dist/utils/constants.d.mts +0 -79
- package/dist/utils/constants.d.ts +0 -79
- package/dist/utils/url.d.mts +0 -3
- package/dist/utils/url.d.ts +0 -3
|
@@ -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\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 { filterUndefined } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport { ReactPromise } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { suspendIfSsr } 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 { HandlerUrls } from \"../../common\";\nimport React, { useCallback } from \"react\";\n\n// hack to make sure process is defined in non-node environments\n\nexport const clientVersion = \"js @stackframe/stack@2.7.23\";\nif (clientVersion.startsWith(\"STACK_COMPILE_TIME\")) {\n throw new StackAssertionError(\"Client version was not replaced. Something went wrong during build!\");\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\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 ...filterUndefined(partial),\n };\n}\n\nexport function getDefaultProjectId() {\n return process.env.NEXT_PUBLIC_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 || 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\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 if (isBrowserLike()) {\n url = process.env.NEXT_PUBLIC_BROWSER_STACK_API_URL;\n } else {\n url = process.env.NEXT_PUBLIC_SERVER_STACK_API_URL;\n }\n url = url || process.env.NEXT_PUBLIC_STACK_API_URL || process.env.NEXT_PUBLIC_STACK_URL || defaultBaseUrl;\n }\n\n return url.endsWith('/') ? url.slice(0, -1) : url;\n}\nconst 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 cachePromiseByComponentId = 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 const id = React.useId();\n\n const subscribe = useCallback((cb: () => void) => {\n const { unsubscribe } = cache.onStateChange(dependencies, () => {\n cachePromiseByComponentId.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 (!cachePromiseByComponentId.has(id)) {\n cachePromiseByComponentId.set(id, cache.getOrWait(dependencies, \"read-write\"));\n }\n return cachePromiseByComponentId.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 (\"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 = React.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":["import_react","React"]}
|
|
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\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 { filterUndefined } from \"@stackframe/stack-shared/dist/utils/objects\";\nimport { ReactPromise } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { suspendIfSsr } 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 { HandlerUrls } from \"../../common\";\nimport React, { useCallback } from \"react\";\n\n// hack to make sure process is defined in non-node environments\n\nexport const clientVersion = \"js @stackframe/stack@2.7.25\";\nif (clientVersion.startsWith(\"STACK_COMPILE_TIME\")) {\n throw new StackAssertionError(\"Client version was not replaced. Something went wrong during build!\");\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\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 ...filterUndefined(partial),\n };\n}\n\nexport function getDefaultProjectId() {\n return process.env.NEXT_PUBLIC_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 || 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\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 if (isBrowserLike()) {\n url = process.env.NEXT_PUBLIC_BROWSER_STACK_API_URL;\n } else {\n url = process.env.NEXT_PUBLIC_SERVER_STACK_API_URL;\n }\n url = url || process.env.NEXT_PUBLIC_STACK_API_URL || process.env.NEXT_PUBLIC_STACK_URL || defaultBaseUrl;\n }\n\n return url.endsWith('/') ? url.slice(0, -1) : url;\n}\nconst 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 cachePromiseByComponentId = 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 const id = React.useId();\n\n const subscribe = useCallback((cb: () => void) => {\n const { unsubscribe } = cache.onStateChange(dependencies, () => {\n cachePromiseByComponentId.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 (!cachePromiseByComponentId.has(id)) {\n cachePromiseByComponentId.set(id, cache.getOrWait(dependencies, \"read-write\"));\n }\n return cachePromiseByComponentId.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 (\"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 = React.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":["import_react","React"]}
|
|
@@ -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\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 { 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 { AsyncStoreProperty } from \"../common\";\nimport { OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectUpdateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\n\nexport type Session = {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n};\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = {\n readonly _internalSession: InternalSession,\n readonly currentSession: Session,\n signOut(options?: { redirectUrl?: URL | string }): Promise<void>,\n\n /**\n * Returns headers for sending authenticated HTTP requests to external servers. Most commonly used in cross-origin\n * requests. Similar to `getAuthJson`, but specifically for HTTP requests.\n *\n * If you are using `tokenStore: \"cookie\"`, you don't need this for same-origin requests. However, most\n * browsers now disable third-party cookies by default, so we must pass authentication tokens by header instead\n * if the client and server are on different hostnames.\n *\n * This function returns a header object that can be used with `fetch` or other HTTP request libraries to send\n * authenticated requests.\n *\n * On the server, you can then pass in the `Request` object to the `tokenStore` option\n * of your Stack app. Please note that CORS does not allow most headers by default, so you\n * must include `x-stack-auth` in the [`Access-Control-Allow-Headers` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers)\n * of the CORS preflight response.\n *\n * If you are not using HTTP (and hence cannot set headers), you will need to use the `getAuthJson()` function\n * instead.\n *\n * Example:\n *\n * ```ts\n * // client\n * const res = await fetch(\"https://api.example.com\", {\n * headers: {\n * ...await stackApp.getAuthHeaders()\n * // you can also add your own headers here\n * },\n * });\n *\n * // server\n * function handleRequest(req: Request) {\n * const user = await stackServerApp.getUser({ tokenStore: req });\n * return new Response(\"Welcome, \" + user.displayName);\n * }\n * ```\n */\n getAuthHeaders(): Promise<{ \"x-stack-auth\": string }>,\n\n /**\n * Creates a JSON-serializable object containing the information to authenticate a user on an external server.\n * Similar to `getAuthHeaders`, but returns an object that can be sent over any protocol instead of just\n * HTTP headers.\n *\n * While `getAuthHeaders` is the recommended way to send authentication tokens over HTTP, your app may use\n * a different protocol, for example WebSockets or gRPC. This function returns a token object that can be JSON-serialized and sent to the server in any way you like.\n *\n * On the server, you can pass in this token object into the `tokenStore` option to fetch user details.\n *\n * Example:\n *\n * ```ts\n * // client\n * const res = await rpcCall(rpcEndpoint, {\n * data: {\n * auth: await stackApp.getAuthJson(),\n * },\n * });\n *\n * // server\n * function handleRequest(data) {\n * const user = await stackServerApp.getUser({ tokenStore: data.auth });\n * return new Response(\"Welcome, \" + user.displayName);\n * }\n * ```\n */\n getAuthJson(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\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 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): 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[],\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\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\n readonly selectedTeam: Team | null,\n setSelectedTeam(team: Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n useTeamProfile(team: Team): EditableTeamMemberProfile,\n}\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: AdminProjectUpdateOptions & { displayName: string }): Promise<AdminOwnedProject>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\n\nexport type UserUpdateOptions = {\n displayName?: string,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?:boolean,\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 };\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 createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n useContactChannels(): ServerContactChannel[],\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 revokePermission(scope: Team, permissionId: string): Promise<void>,\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 }): Promise<Session>,\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;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\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} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n return {\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}\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,mBAA6B;AA4NtB,SAAS,wBAAwB,SAAiE;AACvG,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,QAAQ;AAAA,IAC1B,oBAAoB,QAAQ,yBAAyB,WAAO,2BAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,IAClH,mBAAmB,QAAQ;AAAA,IAC3B,kBAAkB,QAAQ;AAAA,IAC1B,sBAAsB,QAAQ;AAAA,EAChC;AACF;AAsDO,SAAS,8BAA8B,SAAuE;AACnH,SAAO;AAAA,IACL,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,WAAO,2BAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,EACpH;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":[]}
|
|
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\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 { 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 { AsyncStoreProperty } from \"../common\";\nimport { OAuthConnection } from \"../connected-accounts\";\nimport { ContactChannel, ContactChannelCreateOptions, ServerContactChannel, ServerContactChannelCreateOptions } from \"../contact-channels\";\nimport { AdminTeamPermission, TeamPermission } from \"../permissions\";\nimport { AdminOwnedProject, AdminProjectUpdateOptions } from \"../projects\";\nimport { EditableTeamMemberProfile, ServerTeam, ServerTeamCreateOptions, Team, TeamCreateOptions } from \"../teams\";\n\n\nexport type Session = {\n getTokens(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n};\n\n/**\n * Contains everything related to the current user session.\n */\nexport type Auth = {\n readonly _internalSession: InternalSession,\n readonly currentSession: Session,\n signOut(options?: { redirectUrl?: URL | string }): Promise<void>,\n\n /**\n * Returns headers for sending authenticated HTTP requests to external servers. Most commonly used in cross-origin\n * requests. Similar to `getAuthJson`, but specifically for HTTP requests.\n *\n * If you are using `tokenStore: \"cookie\"`, you don't need this for same-origin requests. However, most\n * browsers now disable third-party cookies by default, so we must pass authentication tokens by header instead\n * if the client and server are on different origins.\n *\n * This function returns a header object that can be used with `fetch` or other HTTP request libraries to send\n * authenticated requests.\n *\n * On the server, you can then pass in the `Request` object to the `tokenStore` option\n * of your Stack app. Please note that CORS does not allow most headers by default, so you\n * must include `x-stack-auth` in the [`Access-Control-Allow-Headers` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers)\n * of the CORS preflight response.\n *\n * If you are not using HTTP (and hence cannot set headers), you will need to use the `getAuthJson()` function\n * instead.\n *\n * Example:\n *\n * ```ts\n * // client\n * const res = await fetch(\"https://api.example.com\", {\n * headers: {\n * ...await stackApp.getAuthHeaders()\n * // you can also add your own headers here\n * },\n * });\n *\n * // server\n * function handleRequest(req: Request) {\n * const user = await stackServerApp.getUser({ tokenStore: req });\n * return new Response(\"Welcome, \" + user.displayName);\n * }\n * ```\n */\n getAuthHeaders(): Promise<{ \"x-stack-auth\": string }>,\n\n /**\n * Creates a JSON-serializable object containing the information to authenticate a user on an external server.\n * Similar to `getAuthHeaders`, but returns an object that can be sent over any protocol instead of just\n * HTTP headers.\n *\n * While `getAuthHeaders` is the recommended way to send authentication tokens over HTTP, your app may use\n * a different protocol, for example WebSockets or gRPC. This function returns a token object that can be JSON-serialized and sent to the server in any way you like.\n *\n * On the server, you can pass in this token object into the `tokenStore` option to fetch user details.\n *\n * Example:\n *\n * ```ts\n * // client\n * const res = await rpcCall(rpcEndpoint, {\n * data: {\n * auth: await stackApp.getAuthJson(),\n * },\n * });\n *\n * // server\n * function handleRequest(data) {\n * const user = await stackServerApp.getUser({ tokenStore: data.auth });\n * return new Response(\"Welcome, \" + user.displayName);\n * }\n * ```\n */\n getAuthJson(): Promise<{ accessToken: string | null, refreshToken: string | null }>,\n registerPasskey(options?: { hostname?: string }): Promise<Result<undefined, KnownErrors[\"PasskeyRegistrationFailed\"] | KnownErrors[\"PasskeyWebAuthnError\"]>>,\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 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): 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[],\n listContactChannels(): Promise<ContactChannel[]>,\n createContactChannel(data: ContactChannelCreateOptions): Promise<ContactChannel>,\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\n readonly selectedTeam: Team | null,\n setSelectedTeam(team: Team | null): Promise<void>,\n createTeam(data: TeamCreateOptions): Promise<Team>,\n leaveTeam(team: Team): Promise<void>,\n\n getTeamProfile(team: Team): Promise<EditableTeamMemberProfile>,\n useTeamProfile(team: Team): EditableTeamMemberProfile,\n}\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: AdminProjectUpdateOptions & { displayName: string }): Promise<AdminOwnedProject>,\n }\n & AsyncStoreProperty<\"ownedProjects\", [], AdminOwnedProject[], true>\n\nexport type User = BaseUser;\n\nexport type CurrentUser = BaseUser & Auth & UserExtra;\n\nexport type CurrentInternalUser = CurrentUser & InternalUserExtra;\n\nexport type ProjectCurrentUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalUser : CurrentUser;\n\n\nexport type UserUpdateOptions = {\n displayName?: string,\n clientMetadata?: ReadonlyJson,\n selectedTeamId?: string | null,\n totpMultiFactorSecret?: Uint8Array | null,\n profileImageUrl?: string | null,\n otpAuthEnabled?: boolean,\n passkeyAuthEnabled?:boolean,\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 };\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 createTeam(data: Omit<ServerTeamCreateOptions, \"creatorUserId\">): Promise<ServerTeam>,\n\n useContactChannels(): ServerContactChannel[],\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 revokePermission(scope: Team, permissionId: string): Promise<void>,\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 }): Promise<Session>,\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;\n\nexport type CurrentServerUser = Auth & ServerUser;\n\nexport type CurrentInternalServerUser = CurrentServerUser & InternalUserExtra;\n\nexport type ProjectCurrentServerUser<ProjectId> = ProjectId extends \"internal\" ? CurrentInternalServerUser : CurrentServerUser;\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} & UserUpdateOptions;\nexport function serverUserUpdateOptionsToCrud(options: ServerUserUpdateOptions): CurrentUserCrud[\"Server\"][\"Update\"] {\n return {\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}\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,mBAA6B;AA4NtB,SAAS,wBAAwB,SAAiE;AACvG,SAAO;AAAA,IACL,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,QAAQ;AAAA,IAC1B,oBAAoB,QAAQ,yBAAyB,WAAO,2BAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,IAClH,mBAAmB,QAAQ;AAAA,IAC3B,kBAAkB,QAAQ;AAAA,IAC1B,sBAAsB,QAAQ;AAAA,EAChC;AACF;AAsDO,SAAS,8BAA8B,SAAuE;AACnH,SAAO;AAAA,IACL,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,WAAO,2BAAa,QAAQ,qBAAqB,IAAI,QAAQ;AAAA,EACpH;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":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"//": "THIS FILE IS AUTO-GENERATED FROM TEMPLATE. DO NOT EDIT IT DIRECTLY",
|
|
3
3
|
"name": "@stackframe/stack",
|
|
4
|
-
"version": "2.7.
|
|
4
|
+
"version": "2.7.25",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"tailwindcss-animate": "^1.0.7",
|
|
42
42
|
"tsx": "^4.7.2",
|
|
43
43
|
"yup": "^1.4.0",
|
|
44
|
-
"@stackframe/stack-
|
|
45
|
-
"@stackframe/stack-
|
|
46
|
-
"@stackframe/stack-
|
|
44
|
+
"@stackframe/stack-shared": "2.7.25",
|
|
45
|
+
"@stackframe/stack-sc": "2.7.25",
|
|
46
|
+
"@stackframe/stack-ui": "2.7.25"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"@types/react": ">=18.2 || >=19.0.0-rc.0",
|
|
@@ -1,395 +0,0 @@
|
|
|
1
|
-
import * as _stackframe_stack_shared_dist_sessions from '@stackframe/stack-shared/dist/sessions';
|
|
2
|
-
import { InternalSession } from '@stackframe/stack-shared/dist/sessions';
|
|
3
|
-
import * as _stackframe_stack_shared_dist_interface_crud_current_user from '@stackframe/stack-shared/dist/interface/crud/current-user';
|
|
4
|
-
import { CurrentUserCrud } from '@stackframe/stack-shared/dist/interface/crud/current-user';
|
|
5
|
-
import { f as StackClientAppConstructorOptions, a as StackClientApp, P as Project, w as TeamUser, t as TeamInvitation, T as Team, x as Auth, E as EditableTeamMemberProfile, G as BaseUser, H as UserExtra, I as InternalUserExtra, J as ProjectCurrentUser, K as UserUpdateOptions, A as AdminOwnedProject, l as AdminProjectUpdateOptions, g as StackClientAppJson, i as StackServerAppConstructorOptions, D as ServerUser, r as ServerTeamUser, L as ProjectCurrentServerUser, n as ServerTeam, M as ServerUserCreateOptions, m as ServerListUsersOptions, o as ServerTeamCreateOptions, d as StackAdminAppConstructorOptions, j as AdminProject } from './index-DQk7XJpU.js';
|
|
6
|
-
import { TokenStoreInit, RedirectMethod, HandlerUrls, OAuthScopesOnSignIn, RequestLike, RedirectToOptions, GetUserOptions, stackAppInternalsSymbol, EmailConfig } from './lib/stack-app/common.js';
|
|
7
|
-
import { StackClientInterface, KnownErrors, StackServerInterface, StackAdminInterface } from '@stackframe/stack-shared';
|
|
8
|
-
import { Result } from '@stackframe/stack-shared/dist/utils/results';
|
|
9
|
-
import { TeamPermission, AdminTeamPermission, AdminTeamPermissionDefinition, AdminTeamPermissionDefinitionCreateOptions, AdminTeamPermissionDefinitionUpdateOptions } from './lib/stack-app/permissions/index.js';
|
|
10
|
-
import { ApiKeyCreateCrudResponse } from '@stackframe/stack-shared/dist/interface/adminInterface';
|
|
11
|
-
import { ApiKeysCrud } from '@stackframe/stack-shared/dist/interface/crud/api-keys';
|
|
12
|
-
import { EmailTemplateCrud, EmailTemplateType } from '@stackframe/stack-shared/dist/interface/crud/email-templates';
|
|
13
|
-
import { ProjectsCrud, InternalProjectsCrud } from '@stackframe/stack-shared/dist/interface/crud/projects';
|
|
14
|
-
import { ApiKeyBaseCrudRead, ApiKeyBase, ApiKey, ApiKeyFirstView, ApiKeyCreateOptions } from './lib/stack-app/api-keys/index.js';
|
|
15
|
-
import { AdminEmailTemplate, AdminEmailTemplateUpdateOptions } from './lib/stack-app/email-templates/index.js';
|
|
16
|
-
import { ContactChannelsCrud } from '@stackframe/stack-shared/dist/interface/crud/contact-channels';
|
|
17
|
-
import { TeamInvitationCrud } from '@stackframe/stack-shared/dist/interface/crud/team-invitation';
|
|
18
|
-
import { TeamMemberProfilesCrud } from '@stackframe/stack-shared/dist/interface/crud/team-member-profiles';
|
|
19
|
-
import { TeamPermissionsCrud, TeamPermissionDefinitionsCrud } from '@stackframe/stack-shared/dist/interface/crud/team-permissions';
|
|
20
|
-
import { TeamsCrud } from '@stackframe/stack-shared/dist/interface/crud/teams';
|
|
21
|
-
import { UsersCrud } from '@stackframe/stack-shared/dist/interface/crud/users';
|
|
22
|
-
import { ContactChannel, ServerContactChannel } from './lib/stack-app/contact-channels/index.js';
|
|
23
|
-
import { ProviderType } from '@stackframe/stack-shared/dist/utils/oauth';
|
|
24
|
-
import { Store } from '@stackframe/stack-shared/dist/utils/stores';
|
|
25
|
-
import { CookieHelper } from './lib/cookie.js';
|
|
26
|
-
import { TokenObject } from './lib/stack-app/apps/implementations/common.js';
|
|
27
|
-
|
|
28
|
-
declare class _StackClientAppImplIncomplete<HasTokenStore extends boolean, ProjectId extends string = string> {
|
|
29
|
-
protected readonly _options: {
|
|
30
|
-
uniqueIdentifier?: string;
|
|
31
|
-
checkString?: string;
|
|
32
|
-
} & (StackClientAppConstructorOptions<HasTokenStore, ProjectId> | Exclude<StackClientAppConstructorOptions<HasTokenStore, ProjectId>, "baseUrl" | "projectId" | "publishableClientKey"> & {
|
|
33
|
-
interface: StackClientInterface;
|
|
34
|
-
});
|
|
35
|
-
/**
|
|
36
|
-
* There is a circular dependency between the admin app and the client app, as the former inherits from the latter and
|
|
37
|
-
* the latter needs to use the former when creating a new instance of an internal project.
|
|
38
|
-
*
|
|
39
|
-
* To break it, we set the admin app here lazily instead of importing it directly. This variable is set by ./index.ts,
|
|
40
|
-
* which imports both this file and ./admin-app-impl.ts.
|
|
41
|
-
*/
|
|
42
|
-
static readonly LazyStackAdminAppImpl: {
|
|
43
|
-
value: typeof _StackAdminAppImplIncomplete | undefined;
|
|
44
|
-
};
|
|
45
|
-
protected _uniqueIdentifier: string | undefined;
|
|
46
|
-
protected _interface: StackClientInterface;
|
|
47
|
-
protected readonly _tokenStoreInit: TokenStoreInit<HasTokenStore>;
|
|
48
|
-
protected readonly _redirectMethod: RedirectMethod | undefined;
|
|
49
|
-
protected readonly _urlOptions: Partial<HandlerUrls>;
|
|
50
|
-
protected readonly _oauthScopesOnSignIn: Partial<OAuthScopesOnSignIn>;
|
|
51
|
-
private __DEMO_ENABLE_SLIGHT_FETCH_DELAY;
|
|
52
|
-
private readonly _ownedAdminApps;
|
|
53
|
-
private readonly _currentUserCache;
|
|
54
|
-
private readonly _currentProjectCache;
|
|
55
|
-
private readonly _ownedProjectsCache;
|
|
56
|
-
private readonly _currentUserPermissionsCache;
|
|
57
|
-
private readonly _currentUserTeamsCache;
|
|
58
|
-
private readonly _currentUserOAuthConnectionAccessTokensCache;
|
|
59
|
-
private readonly _currentUserOAuthConnectionCache;
|
|
60
|
-
private readonly _teamMemberProfilesCache;
|
|
61
|
-
private readonly _teamInvitationsCache;
|
|
62
|
-
private readonly _currentUserTeamProfileCache;
|
|
63
|
-
private readonly _clientContactChannelsCache;
|
|
64
|
-
protected _createCookieHelper(): Promise<CookieHelper>;
|
|
65
|
-
protected _getUserOAuthConnectionCacheFn(options: {
|
|
66
|
-
getUser: () => Promise<CurrentUserCrud['Client']['Read'] | null>;
|
|
67
|
-
getOrWaitOAuthToken: () => Promise<{
|
|
68
|
-
accessToken: string;
|
|
69
|
-
} | null>;
|
|
70
|
-
useOAuthToken: () => {
|
|
71
|
-
accessToken: string;
|
|
72
|
-
} | null;
|
|
73
|
-
providerId: ProviderType;
|
|
74
|
-
scope: string | null;
|
|
75
|
-
} & ({
|
|
76
|
-
redirect: true;
|
|
77
|
-
session: InternalSession | null;
|
|
78
|
-
} | {
|
|
79
|
-
redirect: false;
|
|
80
|
-
})): Promise<{
|
|
81
|
-
id: "google" | "github" | "microsoft" | "spotify" | "facebook" | "discord" | "gitlab" | "bitbucket" | "linkedin" | "apple" | "x";
|
|
82
|
-
getAccessToken(): Promise<{
|
|
83
|
-
accessToken: string;
|
|
84
|
-
}>;
|
|
85
|
-
useAccessToken(): {
|
|
86
|
-
accessToken: string;
|
|
87
|
-
};
|
|
88
|
-
} | null>;
|
|
89
|
-
constructor(_options: {
|
|
90
|
-
uniqueIdentifier?: string;
|
|
91
|
-
checkString?: string;
|
|
92
|
-
} & (StackClientAppConstructorOptions<HasTokenStore, ProjectId> | Exclude<StackClientAppConstructorOptions<HasTokenStore, ProjectId>, "baseUrl" | "projectId" | "publishableClientKey"> & {
|
|
93
|
-
interface: StackClientInterface;
|
|
94
|
-
}));
|
|
95
|
-
protected _initUniqueIdentifier(): void;
|
|
96
|
-
/**
|
|
97
|
-
* Cloudflare workers does not allow use of randomness on the global scope (on which the Stack app is probably
|
|
98
|
-
* initialized). For that reason, we generate the unique identifier lazily when it is first needed instead of in the
|
|
99
|
-
* constructor.
|
|
100
|
-
*/
|
|
101
|
-
protected _getUniqueIdentifier(): string;
|
|
102
|
-
protected _checkFeatureSupport(name: string, options: any): Promise<never>;
|
|
103
|
-
protected _useCheckFeatureSupport(name: string, options: any): never;
|
|
104
|
-
protected _memoryTokenStore: Store<TokenObject>;
|
|
105
|
-
protected _nextServerCookiesTokenStores: WeakMap<object, Store<TokenObject>>;
|
|
106
|
-
protected _requestTokenStores: WeakMap<RequestLike, Store<TokenObject>>;
|
|
107
|
-
protected _storedBrowserCookieTokenStore: Store<TokenObject> | null;
|
|
108
|
-
protected get _refreshTokenCookieName(): string;
|
|
109
|
-
protected _getTokensFromCookies(cookies: {
|
|
110
|
-
refreshTokenCookie: string | null;
|
|
111
|
-
accessTokenCookie: string | null;
|
|
112
|
-
}): TokenObject;
|
|
113
|
-
protected get _accessTokenCookieName(): string;
|
|
114
|
-
protected _getBrowserCookieTokenStore(): Store<TokenObject>;
|
|
115
|
-
protected _getOrCreateTokenStore(cookieHelper: CookieHelper, overrideTokenStoreInit?: TokenStoreInit): Store<TokenObject>;
|
|
116
|
-
protected _useTokenStore(overrideTokenStoreInit?: TokenStoreInit): Store<TokenObject>;
|
|
117
|
-
/**
|
|
118
|
-
* A map from token stores and session keys to sessions.
|
|
119
|
-
*
|
|
120
|
-
* This isn't just a map from session keys to sessions for two reasons:
|
|
121
|
-
*
|
|
122
|
-
* - So we can garbage-collect Session objects when the token store is garbage-collected
|
|
123
|
-
* - So different token stores are separated and don't leak information between each other, eg. if the same user sends two requests to the same server they should get a different session object
|
|
124
|
-
*/
|
|
125
|
-
private _sessionsByTokenStoreAndSessionKey;
|
|
126
|
-
protected _getSessionFromTokenStore(tokenStore: Store<TokenObject>): InternalSession;
|
|
127
|
-
protected _getSession(overrideTokenStoreInit?: TokenStoreInit): Promise<InternalSession>;
|
|
128
|
-
protected _useSession(overrideTokenStoreInit?: TokenStoreInit): InternalSession;
|
|
129
|
-
protected _signInToAccountWithTokens(tokens: {
|
|
130
|
-
accessToken: string | null;
|
|
131
|
-
refreshToken: string;
|
|
132
|
-
}): Promise<void>;
|
|
133
|
-
protected _hasPersistentTokenStore(overrideTokenStoreInit?: TokenStoreInit): this is StackClientApp<true, ProjectId>;
|
|
134
|
-
protected _ensurePersistentTokenStore(overrideTokenStoreInit?: TokenStoreInit): asserts this is StackClientApp<true, ProjectId>;
|
|
135
|
-
protected _isInternalProject(): this is {
|
|
136
|
-
projectId: "internal";
|
|
137
|
-
};
|
|
138
|
-
protected _ensureInternalProject(): asserts this is {
|
|
139
|
-
projectId: "internal";
|
|
140
|
-
};
|
|
141
|
-
protected _clientProjectFromCrud(crud: ProjectsCrud['Client']['Read']): Project;
|
|
142
|
-
protected _clientTeamPermissionFromCrud(crud: TeamPermissionsCrud['Client']['Read']): TeamPermission;
|
|
143
|
-
protected _clientTeamUserFromCrud(crud: TeamMemberProfilesCrud['Client']['Read']): TeamUser;
|
|
144
|
-
protected _clientTeamInvitationFromCrud(session: InternalSession, crud: TeamInvitationCrud['Client']['Read']): TeamInvitation;
|
|
145
|
-
protected _clientTeamFromCrud(crud: TeamsCrud['Client']['Read'], session: InternalSession): Team;
|
|
146
|
-
protected _clientContactChannelFromCrud(crud: ContactChannelsCrud['Client']['Read'], session: InternalSession): ContactChannel;
|
|
147
|
-
protected _createAuth(session: InternalSession): Auth;
|
|
148
|
-
protected _editableTeamProfileFromCrud(crud: TeamMemberProfilesCrud['Client']['Read'], session: InternalSession): EditableTeamMemberProfile;
|
|
149
|
-
protected _createBaseUser(crud: NonNullable<CurrentUserCrud['Client']['Read']> | UsersCrud['Server']['Read']): BaseUser;
|
|
150
|
-
protected _createUserExtraFromCurrent(crud: NonNullable<CurrentUserCrud['Client']['Read']>, session: InternalSession): UserExtra;
|
|
151
|
-
protected _createInternalUserExtra(session: InternalSession): InternalUserExtra;
|
|
152
|
-
protected _currentUserFromCrud(crud: NonNullable<CurrentUserCrud['Client']['Read']>, session: InternalSession): ProjectCurrentUser<ProjectId>;
|
|
153
|
-
protected _getOwnedAdminApp(forProjectId: string, session: InternalSession): _StackAdminAppImplIncomplete<false, string>;
|
|
154
|
-
get projectId(): ProjectId;
|
|
155
|
-
protected _isTrusted(url: string): Promise<boolean>;
|
|
156
|
-
get urls(): Readonly<HandlerUrls>;
|
|
157
|
-
protected _getCurrentUrl(): Promise<URL | null>;
|
|
158
|
-
protected _redirectTo(options: {
|
|
159
|
-
url: URL | string;
|
|
160
|
-
replace?: boolean;
|
|
161
|
-
}): Promise<void>;
|
|
162
|
-
useNavigate(): (to: string) => void;
|
|
163
|
-
protected _redirectIfTrusted(url: string, options?: RedirectToOptions): Promise<void>;
|
|
164
|
-
protected _redirectToHandler(handlerName: keyof HandlerUrls, options?: RedirectToOptions): Promise<void>;
|
|
165
|
-
redirectToSignIn(options?: RedirectToOptions): Promise<void>;
|
|
166
|
-
redirectToSignUp(options?: RedirectToOptions): Promise<void>;
|
|
167
|
-
redirectToSignOut(options?: RedirectToOptions): Promise<void>;
|
|
168
|
-
redirectToEmailVerification(options?: RedirectToOptions): Promise<void>;
|
|
169
|
-
redirectToPasswordReset(options?: RedirectToOptions): Promise<void>;
|
|
170
|
-
redirectToForgotPassword(options?: RedirectToOptions): Promise<void>;
|
|
171
|
-
redirectToHome(options?: RedirectToOptions): Promise<void>;
|
|
172
|
-
redirectToOAuthCallback(options?: RedirectToOptions): Promise<void>;
|
|
173
|
-
redirectToMagicLinkCallback(options?: RedirectToOptions): Promise<void>;
|
|
174
|
-
redirectToAfterSignIn(options?: RedirectToOptions): Promise<void>;
|
|
175
|
-
redirectToAfterSignUp(options?: RedirectToOptions): Promise<void>;
|
|
176
|
-
redirectToAfterSignOut(options?: RedirectToOptions): Promise<void>;
|
|
177
|
-
redirectToAccountSettings(options?: RedirectToOptions): Promise<void>;
|
|
178
|
-
redirectToError(options?: RedirectToOptions): Promise<void>;
|
|
179
|
-
redirectToTeamInvitation(options?: RedirectToOptions): Promise<void>;
|
|
180
|
-
sendForgotPasswordEmail(email: string, options?: {
|
|
181
|
-
callbackUrl?: string;
|
|
182
|
-
}): Promise<Result<undefined, KnownErrors["UserNotFound"]>>;
|
|
183
|
-
sendMagicLinkEmail(email: string, options?: {
|
|
184
|
-
callbackUrl?: string;
|
|
185
|
-
}): Promise<Result<{
|
|
186
|
-
nonce: string;
|
|
187
|
-
}, KnownErrors["RedirectUrlNotWhitelisted"]>>;
|
|
188
|
-
resetPassword(options: {
|
|
189
|
-
password: string;
|
|
190
|
-
code: string;
|
|
191
|
-
}): Promise<Result<undefined, KnownErrors["VerificationCodeError"]>>;
|
|
192
|
-
verifyPasswordResetCode(code: string): Promise<Result<undefined, KnownErrors["VerificationCodeError"]>>;
|
|
193
|
-
verifyTeamInvitationCode(code: string): Promise<Result<undefined, KnownErrors["VerificationCodeError"]>>;
|
|
194
|
-
acceptTeamInvitation(code: string): Promise<Result<undefined, KnownErrors["VerificationCodeError"]>>;
|
|
195
|
-
getTeamInvitationDetails(code: string): Promise<Result<{
|
|
196
|
-
teamDisplayName: string;
|
|
197
|
-
}, KnownErrors["VerificationCodeError"]>>;
|
|
198
|
-
verifyEmail(code: string): Promise<Result<undefined, KnownErrors["VerificationCodeError"]>>;
|
|
199
|
-
getUser(options: GetUserOptions<HasTokenStore> & {
|
|
200
|
-
or: 'redirect';
|
|
201
|
-
}): Promise<ProjectCurrentUser<ProjectId>>;
|
|
202
|
-
getUser(options: GetUserOptions<HasTokenStore> & {
|
|
203
|
-
or: 'throw';
|
|
204
|
-
}): Promise<ProjectCurrentUser<ProjectId>>;
|
|
205
|
-
getUser(options?: GetUserOptions<HasTokenStore>): Promise<ProjectCurrentUser<ProjectId> | null>;
|
|
206
|
-
useUser(options: GetUserOptions<HasTokenStore> & {
|
|
207
|
-
or: 'redirect';
|
|
208
|
-
}): ProjectCurrentUser<ProjectId>;
|
|
209
|
-
useUser(options: GetUserOptions<HasTokenStore> & {
|
|
210
|
-
or: 'throw';
|
|
211
|
-
}): ProjectCurrentUser<ProjectId>;
|
|
212
|
-
useUser(options?: GetUserOptions<HasTokenStore>): ProjectCurrentUser<ProjectId> | null;
|
|
213
|
-
protected _updateClientUser(update: UserUpdateOptions, session: InternalSession): Promise<void>;
|
|
214
|
-
signInWithOAuth(provider: ProviderType): Promise<void>;
|
|
215
|
-
/**
|
|
216
|
-
* @deprecated
|
|
217
|
-
* TODO remove
|
|
218
|
-
*/
|
|
219
|
-
protected _experimentalMfa(error: KnownErrors['MultiFactorAuthenticationRequired'], session: InternalSession): Promise<{
|
|
220
|
-
accessToken: any;
|
|
221
|
-
refreshToken: any;
|
|
222
|
-
newUser: any;
|
|
223
|
-
}>;
|
|
224
|
-
/**
|
|
225
|
-
* @deprecated
|
|
226
|
-
* TODO remove
|
|
227
|
-
*/
|
|
228
|
-
protected _catchMfaRequiredError<T, E>(callback: () => Promise<Result<T, E>>): Promise<Result<T | {
|
|
229
|
-
accessToken: string;
|
|
230
|
-
refreshToken: string;
|
|
231
|
-
newUser: boolean;
|
|
232
|
-
}, E>>;
|
|
233
|
-
signInWithCredential(options: {
|
|
234
|
-
email: string;
|
|
235
|
-
password: string;
|
|
236
|
-
noRedirect?: boolean;
|
|
237
|
-
}): Promise<Result<undefined, KnownErrors["EmailPasswordMismatch"] | KnownErrors["InvalidTotpCode"]>>;
|
|
238
|
-
signUpWithCredential(options: {
|
|
239
|
-
email: string;
|
|
240
|
-
password: string;
|
|
241
|
-
noRedirect?: boolean;
|
|
242
|
-
verificationCallbackUrl?: string;
|
|
243
|
-
}): Promise<Result<undefined, KnownErrors["UserEmailAlreadyExists"] | KnownErrors['PasswordRequirementsNotMet']>>;
|
|
244
|
-
signInWithMagicLink(code: string): Promise<Result<undefined, KnownErrors["VerificationCodeError"] | KnownErrors["InvalidTotpCode"]>>;
|
|
245
|
-
signInWithPasskey(): Promise<Result<undefined, KnownErrors["PasskeyAuthenticationFailed"] | KnownErrors["InvalidTotpCode"] | KnownErrors["PasskeyWebAuthnError"]>>;
|
|
246
|
-
callOAuthCallback(): Promise<boolean>;
|
|
247
|
-
protected _signOut(session: InternalSession, options?: {
|
|
248
|
-
redirectUrl?: URL | string;
|
|
249
|
-
}): Promise<void>;
|
|
250
|
-
signOut(options?: {
|
|
251
|
-
redirectUrl?: URL | string;
|
|
252
|
-
}): Promise<void>;
|
|
253
|
-
getProject(): Promise<Project>;
|
|
254
|
-
useProject(): Project;
|
|
255
|
-
protected _listOwnedProjects(session: InternalSession): Promise<AdminOwnedProject[]>;
|
|
256
|
-
protected _useOwnedProjects(session: InternalSession): AdminOwnedProject[];
|
|
257
|
-
protected _createProject(session: InternalSession, newProject: AdminProjectUpdateOptions & {
|
|
258
|
-
displayName: string;
|
|
259
|
-
}): Promise<AdminOwnedProject>;
|
|
260
|
-
protected _refreshUser(session: InternalSession): Promise<void>;
|
|
261
|
-
protected _refreshSession(session: InternalSession): Promise<void>;
|
|
262
|
-
protected _refreshUsers(): Promise<void>;
|
|
263
|
-
protected _refreshProject(): Promise<void>;
|
|
264
|
-
protected _refreshOwnedProjects(session: InternalSession): Promise<void>;
|
|
265
|
-
static get [stackAppInternalsSymbol](): {
|
|
266
|
-
fromClientJson: <HasTokenStore extends boolean, ProjectId extends string>(json: StackClientAppJson<HasTokenStore, ProjectId>) => StackClientApp<HasTokenStore, ProjectId>;
|
|
267
|
-
};
|
|
268
|
-
get [stackAppInternalsSymbol](): {
|
|
269
|
-
toClientJson: () => StackClientAppJson<HasTokenStore, ProjectId>;
|
|
270
|
-
setCurrentUser: (userJsonPromise: Promise<CurrentUserCrud["Client"]["Read"] | null>) => void;
|
|
271
|
-
sendRequest: (path: string, requestOptions: RequestInit, requestType?: "client" | "server" | "admin") => Promise<Response & {
|
|
272
|
-
usedTokens: {
|
|
273
|
-
accessToken: _stackframe_stack_shared_dist_sessions.AccessToken;
|
|
274
|
-
refreshToken: _stackframe_stack_shared_dist_sessions.RefreshToken | null;
|
|
275
|
-
} | null;
|
|
276
|
-
}>;
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
declare class _StackServerAppImplIncomplete<HasTokenStore extends boolean, ProjectId extends string> extends _StackClientAppImplIncomplete<HasTokenStore, ProjectId> {
|
|
281
|
-
protected _interface: StackServerInterface;
|
|
282
|
-
private readonly _currentServerUserCache;
|
|
283
|
-
private readonly _serverUsersCache;
|
|
284
|
-
private readonly _serverUserCache;
|
|
285
|
-
private readonly _serverTeamsCache;
|
|
286
|
-
private readonly _serverTeamUserPermissionsCache;
|
|
287
|
-
private readonly _serverUserOAuthConnectionAccessTokensCache;
|
|
288
|
-
private readonly _serverUserOAuthConnectionCache;
|
|
289
|
-
private readonly _serverTeamMemberProfilesCache;
|
|
290
|
-
private readonly _serverTeamInvitationsCache;
|
|
291
|
-
private readonly _serverUserTeamProfileCache;
|
|
292
|
-
private readonly _serverContactChannelsCache;
|
|
293
|
-
private _updateServerUser;
|
|
294
|
-
protected _serverEditableTeamProfileFromCrud(crud: TeamMemberProfilesCrud['Client']['Read']): EditableTeamMemberProfile;
|
|
295
|
-
protected _serverContactChannelFromCrud(userId: string, crud: ContactChannelsCrud['Server']['Read']): ServerContactChannel;
|
|
296
|
-
constructor(options: StackServerAppConstructorOptions<HasTokenStore, ProjectId> | {
|
|
297
|
-
interface: StackServerInterface;
|
|
298
|
-
tokenStore: TokenStoreInit<HasTokenStore>;
|
|
299
|
-
urls: Partial<HandlerUrls> | undefined;
|
|
300
|
-
oauthScopesOnSignIn?: Partial<OAuthScopesOnSignIn> | undefined;
|
|
301
|
-
});
|
|
302
|
-
protected _serverUserFromCrud(crud: UsersCrud['Server']['Read']): ServerUser;
|
|
303
|
-
protected _serverTeamUserFromCrud(crud: TeamMemberProfilesCrud["Server"]["Read"]): ServerTeamUser;
|
|
304
|
-
protected _serverTeamInvitationFromCrud(crud: TeamInvitationCrud['Server']['Read']): TeamInvitation;
|
|
305
|
-
protected _currentUserFromCrud(crud: UsersCrud['Server']['Read'], session: InternalSession): ProjectCurrentServerUser<ProjectId>;
|
|
306
|
-
protected _serverTeamFromCrud(crud: TeamsCrud['Server']['Read']): ServerTeam;
|
|
307
|
-
createUser(options: ServerUserCreateOptions): Promise<ServerUser>;
|
|
308
|
-
getUser(options: GetUserOptions<HasTokenStore> & {
|
|
309
|
-
or: 'redirect';
|
|
310
|
-
}): Promise<ProjectCurrentServerUser<ProjectId>>;
|
|
311
|
-
getUser(options: GetUserOptions<HasTokenStore> & {
|
|
312
|
-
or: 'throw';
|
|
313
|
-
}): Promise<ProjectCurrentServerUser<ProjectId>>;
|
|
314
|
-
getUser(options?: GetUserOptions<HasTokenStore>): Promise<ProjectCurrentServerUser<ProjectId> | null>;
|
|
315
|
-
getUser(id: string): Promise<ServerUser | null>;
|
|
316
|
-
getServerUser(): Promise<ProjectCurrentServerUser<ProjectId> | null>;
|
|
317
|
-
getServerUserById(userId: string): Promise<ServerUser | null>;
|
|
318
|
-
useUser(options: GetUserOptions<HasTokenStore> & {
|
|
319
|
-
or: 'redirect';
|
|
320
|
-
}): ProjectCurrentServerUser<ProjectId>;
|
|
321
|
-
useUser(options: GetUserOptions<HasTokenStore> & {
|
|
322
|
-
or: 'throw';
|
|
323
|
-
}): ProjectCurrentServerUser<ProjectId>;
|
|
324
|
-
useUser(options?: GetUserOptions<HasTokenStore>): ProjectCurrentServerUser<ProjectId> | null;
|
|
325
|
-
useUser(id: string): ServerUser | null;
|
|
326
|
-
useUserById(userId: string): ServerUser | null;
|
|
327
|
-
listUsers(options?: ServerListUsersOptions): Promise<ServerUser[] & {
|
|
328
|
-
nextCursor: string | null;
|
|
329
|
-
}>;
|
|
330
|
-
useUsers(options?: ServerListUsersOptions): ServerUser[] & {
|
|
331
|
-
nextCursor: string | null;
|
|
332
|
-
};
|
|
333
|
-
_serverPermissionFromCrud(crud: TeamPermissionsCrud['Server']['Read']): AdminTeamPermission;
|
|
334
|
-
_serverTeamPermissionDefinitionFromCrud(crud: TeamPermissionDefinitionsCrud['Admin']['Read']): AdminTeamPermissionDefinition;
|
|
335
|
-
listTeams(): Promise<ServerTeam[]>;
|
|
336
|
-
createTeam(data: ServerTeamCreateOptions): Promise<ServerTeam>;
|
|
337
|
-
useTeams(): ServerTeam[];
|
|
338
|
-
getTeam(teamId: string): Promise<ServerTeam | null>;
|
|
339
|
-
useTeam(teamId: string): ServerTeam | null;
|
|
340
|
-
protected _refreshSession(session: InternalSession): Promise<void>;
|
|
341
|
-
protected _refreshUsers(): Promise<void>;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
declare class _StackAdminAppImplIncomplete<HasTokenStore extends boolean, ProjectId extends string> extends _StackServerAppImplIncomplete<HasTokenStore, ProjectId> {
|
|
345
|
-
protected _interface: StackAdminInterface;
|
|
346
|
-
private readonly _adminProjectCache;
|
|
347
|
-
private readonly _apiKeysCache;
|
|
348
|
-
private readonly _adminEmailTemplatesCache;
|
|
349
|
-
private readonly _adminTeamPermissionDefinitionsCache;
|
|
350
|
-
private readonly _svixTokenCache;
|
|
351
|
-
private readonly _metricsCache;
|
|
352
|
-
constructor(options: StackAdminAppConstructorOptions<HasTokenStore, ProjectId>);
|
|
353
|
-
_adminOwnedProjectFromCrud(data: InternalProjectsCrud['Admin']['Read'], onRefresh: () => Promise<void>): AdminOwnedProject;
|
|
354
|
-
_adminProjectFromCrud(data: InternalProjectsCrud['Admin']['Read'], onRefresh: () => Promise<void>): AdminProject;
|
|
355
|
-
_adminEmailTemplateFromCrud(data: EmailTemplateCrud['Admin']['Read']): AdminEmailTemplate;
|
|
356
|
-
getProject(): Promise<AdminProject>;
|
|
357
|
-
useProject(): AdminProject;
|
|
358
|
-
protected _createApiKeyBaseFromCrud(data: ApiKeyBaseCrudRead): ApiKeyBase;
|
|
359
|
-
protected _createApiKeyFromCrud(data: ApiKeysCrud["Admin"]["Read"]): ApiKey;
|
|
360
|
-
protected _createApiKeyFirstViewFromCrud(data: ApiKeyCreateCrudResponse): ApiKeyFirstView;
|
|
361
|
-
listApiKeys(): Promise<ApiKey[]>;
|
|
362
|
-
useApiKeys(): ApiKey[];
|
|
363
|
-
createApiKey(options: ApiKeyCreateOptions): Promise<ApiKeyFirstView>;
|
|
364
|
-
useEmailTemplates(): AdminEmailTemplate[];
|
|
365
|
-
listEmailTemplates(): Promise<AdminEmailTemplate[]>;
|
|
366
|
-
updateEmailTemplate(type: EmailTemplateType, data: AdminEmailTemplateUpdateOptions): Promise<void>;
|
|
367
|
-
resetEmailTemplate(type: EmailTemplateType): Promise<void>;
|
|
368
|
-
createTeamPermissionDefinition(data: AdminTeamPermissionDefinitionCreateOptions): Promise<AdminTeamPermission>;
|
|
369
|
-
updateTeamPermissionDefinition(permissionId: string, data: AdminTeamPermissionDefinitionUpdateOptions): Promise<void>;
|
|
370
|
-
deleteTeamPermissionDefinition(permissionId: string): Promise<void>;
|
|
371
|
-
listTeamPermissionDefinitions(): Promise<AdminTeamPermissionDefinition[]>;
|
|
372
|
-
useTeamPermissionDefinitions(): AdminTeamPermissionDefinition[];
|
|
373
|
-
useSvixToken(): string;
|
|
374
|
-
protected _refreshProject(): Promise<void>;
|
|
375
|
-
protected _refreshApiKeys(): Promise<void>;
|
|
376
|
-
get [stackAppInternalsSymbol](): {
|
|
377
|
-
useMetrics: () => any;
|
|
378
|
-
toClientJson: () => StackClientAppJson<HasTokenStore, ProjectId>;
|
|
379
|
-
setCurrentUser: (userJsonPromise: Promise<_stackframe_stack_shared_dist_interface_crud_current_user.CurrentUserCrud["Client"]["Read"] | null>) => void;
|
|
380
|
-
sendRequest: (path: string, requestOptions: RequestInit, requestType?: "client" | "server" | "admin") => Promise<Response & {
|
|
381
|
-
usedTokens: {
|
|
382
|
-
accessToken: _stackframe_stack_shared_dist_sessions.AccessToken;
|
|
383
|
-
refreshToken: _stackframe_stack_shared_dist_sessions.RefreshToken | null;
|
|
384
|
-
} | null;
|
|
385
|
-
}>;
|
|
386
|
-
};
|
|
387
|
-
sendTestEmail(options: {
|
|
388
|
-
recipientEmail: string;
|
|
389
|
-
emailConfig: EmailConfig;
|
|
390
|
-
}): Promise<Result<undefined, {
|
|
391
|
-
errorMessage: string;
|
|
392
|
-
}>>;
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
export { _StackAdminAppImplIncomplete as _, _StackClientAppImplIncomplete as a, _StackServerAppImplIncomplete as b };
|