@stackframe/stack 2.3.5 → 2.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/dist/components/card-frame.d.mts +9 -0
  2. package/dist/components/card-frame.d.ts +8 -5
  3. package/dist/components/card-frame.js +58 -23
  4. package/dist/components/credential-sign-in.d.mts +5 -0
  5. package/dist/components/credential-sign-in.d.ts +5 -1
  6. package/dist/components/credential-sign-in.js +109 -41
  7. package/dist/components/credential-sign-up.d.mts +5 -0
  8. package/dist/components/credential-sign-up.d.ts +5 -1
  9. package/dist/components/credential-sign-up.js +140 -62
  10. package/dist/components/forgot-password.d.mts +7 -0
  11. package/dist/components/forgot-password.d.ts +6 -2
  12. package/dist/components/forgot-password.js +83 -26
  13. package/dist/components/form-warning.d.mts +7 -0
  14. package/dist/components/form-warning.d.ts +6 -2
  15. package/dist/components/form-warning.js +34 -8
  16. package/dist/components/magic-link-sign-in.d.mts +5 -0
  17. package/dist/components/magic-link-sign-in.d.ts +5 -1
  18. package/dist/components/magic-link-sign-in.js +89 -31
  19. package/dist/components/message-card.d.mts +10 -0
  20. package/dist/components/message-card.d.ts +8 -4
  21. package/dist/components/message-card.js +45 -6
  22. package/dist/components/oauth-button.d.mts +8 -0
  23. package/dist/components/oauth-button.d.ts +6 -2
  24. package/dist/components/oauth-button.js +142 -63
  25. package/dist/components/oauth-group.d.mts +7 -0
  26. package/dist/components/oauth-group.d.ts +6 -2
  27. package/dist/components/oauth-group.js +46 -8
  28. package/dist/components/password-field.d.mts +5 -0
  29. package/dist/components/password-field.d.ts +5 -3
  30. package/dist/components/password-field.js +111 -41
  31. package/dist/components/password-reset-inner.d.mts +8 -0
  32. package/dist/components/password-reset-inner.d.ts +6 -2
  33. package/dist/components/password-reset-inner.js +120 -58
  34. package/dist/components/redirect-message-card.d.mts +8 -0
  35. package/dist/components/redirect-message-card.d.ts +6 -2
  36. package/dist/components/redirect-message-card.js +110 -58
  37. package/dist/components/separator-with-text.d.mts +7 -0
  38. package/dist/components/separator-with-text.d.ts +6 -2
  39. package/dist/components/separator-with-text.js +35 -5
  40. package/dist/components/user-avatar.d.mts +13 -0
  41. package/dist/components/user-avatar.d.ts +11 -3
  42. package/dist/components/user-avatar.js +34 -6
  43. package/dist/components/user-button.d.mts +15 -0
  44. package/dist/components/user-button.d.ts +12 -3
  45. package/dist/components/user-button.js +156 -26
  46. package/dist/components-core/avatar.d.mts +8 -0
  47. package/dist/components-core/avatar.d.ts +7 -5
  48. package/dist/components-core/avatar.js +73 -18
  49. package/dist/components-core/button.d.mts +12 -0
  50. package/dist/components-core/button.d.ts +8 -6
  51. package/dist/components-core/button.js +177 -113
  52. package/dist/components-core/card.d.mts +8 -0
  53. package/dist/components-core/card.d.ts +4 -2
  54. package/dist/components-core/card.js +73 -22
  55. package/dist/components-core/collapsible.d.mts +8 -0
  56. package/dist/components-core/collapsible.d.ts +8 -6
  57. package/dist/components-core/collapsible.js +48 -5
  58. package/dist/components-core/container.d.mts +8 -0
  59. package/dist/components-core/container.d.ts +5 -3
  60. package/dist/components-core/container.js +61 -11
  61. package/dist/components-core/dropdown.d.mts +15 -0
  62. package/dist/components-core/dropdown.d.ts +10 -8
  63. package/dist/components-core/dropdown.js +108 -36
  64. package/dist/components-core/index.d.mts +59 -0
  65. package/dist/components-core/index.d.ts +51 -40
  66. package/dist/components-core/index.js +144 -46
  67. package/dist/components-core/input.d.mts +6 -0
  68. package/dist/components-core/input.d.ts +5 -3
  69. package/dist/components-core/input.js +97 -28
  70. package/dist/components-core/label.d.mts +6 -0
  71. package/dist/components-core/label.d.ts +5 -3
  72. package/dist/components-core/label.js +65 -15
  73. package/dist/components-core/link.d.mts +10 -0
  74. package/dist/components-core/link.d.ts +7 -6
  75. package/dist/components-core/link.js +72 -18
  76. package/dist/components-core/loading-indicator.d.mts +13 -0
  77. package/dist/components-core/loading-indicator.d.ts +11 -4
  78. package/dist/components-core/loading-indicator.js +46 -6
  79. package/dist/components-core/popover.d.mts +8 -0
  80. package/dist/components-core/popover.d.ts +8 -6
  81. package/dist/components-core/popover.js +72 -16
  82. package/dist/components-core/separator.d.mts +6 -0
  83. package/dist/components-core/separator.d.ts +5 -3
  84. package/dist/components-core/separator.js +66 -16
  85. package/dist/components-core/skeleton.d.mts +7 -0
  86. package/dist/components-core/skeleton.d.ts +5 -3
  87. package/dist/components-core/skeleton.js +75 -21
  88. package/dist/components-core/tabs.d.mts +9 -0
  89. package/dist/components-core/tabs.d.ts +8 -6
  90. package/dist/components-core/tabs.js +87 -20
  91. package/dist/components-core/text.d.mts +10 -0
  92. package/dist/components-core/text.d.ts +5 -3
  93. package/dist/components-core/text.js +95 -40
  94. package/dist/components-core-joy/button.d.mts +6 -0
  95. package/dist/components-core-joy/button.d.ts +6 -2
  96. package/dist/components-core-joy/button.js +86 -28
  97. package/dist/components-core-joy/input.d.mts +5 -0
  98. package/dist/components-core-joy/input.d.ts +5 -2
  99. package/dist/components-core-joy/input.js +51 -6
  100. package/dist/components-core-joy/separator.d.mts +6 -0
  101. package/dist/components-core-joy/separator.d.ts +6 -2
  102. package/dist/components-core-joy/separator.js +50 -6
  103. package/dist/components-core-joy/tabs.d.mts +9 -0
  104. package/dist/components-core-joy/tabs.d.ts +9 -5
  105. package/dist/components-core-joy/tabs.js +62 -16
  106. package/dist/components-core-joy/text.d.mts +9 -0
  107. package/dist/components-core-joy/text.d.ts +6 -3
  108. package/dist/components-core-joy/text.js +68 -28
  109. package/dist/components-page/account-settings.d.mts +7 -0
  110. package/dist/components-page/account-settings.d.ts +6 -2
  111. package/dist/components-page/account-settings.js +213 -81
  112. package/dist/components-page/auth-page.d.mts +8 -0
  113. package/dist/components-page/auth-page.d.ts +6 -2
  114. package/dist/components-page/auth-page.js +79 -19
  115. package/dist/components-page/email-verification.d.mts +8 -0
  116. package/dist/components-page/email-verification.d.ts +6 -2
  117. package/dist/components-page/email-verification.js +65 -28
  118. package/dist/components-page/forgot-password.d.mts +7 -0
  119. package/dist/components-page/forgot-password.d.ts +6 -2
  120. package/dist/components-page/forgot-password.js +64 -20
  121. package/dist/components-page/magic-link-callback.d.mts +8 -0
  122. package/dist/components-page/magic-link-callback.d.ts +6 -2
  123. package/dist/components-page/magic-link-callback.js +72 -34
  124. package/dist/components-page/oauth-callback.d.mts +5 -0
  125. package/dist/components-page/oauth-callback.d.ts +5 -1
  126. package/dist/components-page/oauth-callback.js +52 -16
  127. package/dist/components-page/password-reset.d.mts +8 -0
  128. package/dist/components-page/password-reset.d.ts +6 -2
  129. package/dist/components-page/password-reset.js +70 -34
  130. package/dist/components-page/sign-in.d.mts +7 -0
  131. package/dist/components-page/sign-in.d.ts +6 -2
  132. package/dist/components-page/sign-in.js +41 -5
  133. package/dist/components-page/sign-out.d.mts +5 -0
  134. package/dist/components-page/sign-out.d.ts +5 -1
  135. package/dist/components-page/sign-out.js +47 -11
  136. package/dist/components-page/sign-up.d.mts +7 -0
  137. package/dist/components-page/sign-up.d.ts +6 -2
  138. package/dist/components-page/sign-up.js +41 -5
  139. package/dist/components-page/stack-handler.d.mts +16 -0
  140. package/dist/components-page/stack-handler.d.ts +11 -3
  141. package/dist/components-page/stack-handler.js +102 -64
  142. package/dist/esm/components/card-frame.js +39 -0
  143. package/dist/esm/components/credential-sign-in.js +82 -0
  144. package/dist/esm/components/credential-sign-up.js +114 -0
  145. package/dist/esm/components/forgot-password.js +55 -0
  146. package/dist/esm/components/form-warning.js +15 -0
  147. package/dist/esm/components/magic-link-sign-in.js +61 -0
  148. package/dist/esm/components/message-card.js +16 -0
  149. package/dist/esm/components/oauth-button.js +124 -0
  150. package/dist/esm/components/oauth-group.js +17 -0
  151. package/dist/esm/components/password-field.js +82 -0
  152. package/dist/esm/components/password-reset-inner.js +93 -0
  153. package/dist/esm/components/redirect-message-card.js +83 -0
  154. package/dist/esm/components/separator-with-text.js +16 -0
  155. package/dist/esm/components/user-avatar.js +14 -0
  156. package/dist/esm/components/user-button.js +133 -0
  157. package/dist/esm/components-core/avatar.js +56 -0
  158. package/dist/esm/components-core/button.js +165 -0
  159. package/dist/esm/components-core/card.js +51 -0
  160. package/dist/esm/components-core/collapsible.js +13 -0
  161. package/dist/esm/components-core/container.js +35 -0
  162. package/dist/esm/components-core/dropdown.js +106 -0
  163. package/dist/esm/components-core/index.js +93 -0
  164. package/dist/esm/components-core/input.js +80 -0
  165. package/dist/esm/components-core/label.js +38 -0
  166. package/dist/esm/components-core/link.js +38 -0
  167. package/dist/esm/components-core/loading-indicator.js +27 -0
  168. package/dist/esm/components-core/popover.js +43 -0
  169. package/dist/esm/components-core/separator.js +36 -0
  170. package/dist/esm/components-core/skeleton.js +52 -0
  171. package/dist/esm/components-core/tabs.js +79 -0
  172. package/dist/esm/components-core/text.js +63 -0
  173. package/dist/esm/components-core-joy/button.js +53 -0
  174. package/dist/esm/components-core-joy/input.js +18 -0
  175. package/dist/esm/components-core-joy/separator.js +17 -0
  176. package/dist/esm/components-core-joy/tabs.js +29 -0
  177. package/dist/esm/components-core-joy/text.js +35 -0
  178. package/dist/esm/components-page/account-settings.js +197 -0
  179. package/dist/esm/components-page/auth-page.js +50 -0
  180. package/dist/esm/components-page/email-verification.js +36 -0
  181. package/dist/esm/components-page/forgot-password.js +35 -0
  182. package/dist/esm/components-page/magic-link-callback.js +43 -0
  183. package/dist/esm/components-page/oauth-callback.js +23 -0
  184. package/dist/esm/components-page/password-reset.js +42 -0
  185. package/dist/esm/components-page/sign-in.js +12 -0
  186. package/dist/esm/components-page/sign-out.js +18 -0
  187. package/dist/esm/components-page/sign-up.js +12 -0
  188. package/dist/esm/components-page/stack-handler.js +75 -0
  189. package/dist/esm/index.js +47 -0
  190. package/dist/esm/joy.js +5 -0
  191. package/dist/esm/lib/auth.js +62 -0
  192. package/dist/esm/lib/cookie.js +185 -0
  193. package/dist/esm/lib/hooks.js +29 -0
  194. package/dist/esm/lib/stack-app.js +940 -0
  195. package/dist/esm/providers/component-provider.js +76 -0
  196. package/dist/esm/providers/design-provider.js +36 -0
  197. package/dist/esm/providers/joy-provider.js +35 -0
  198. package/dist/esm/providers/stack-provider-client.js +31 -0
  199. package/dist/esm/providers/stack-provider.js +21 -0
  200. package/dist/esm/providers/styled-components-registry.js +24 -0
  201. package/dist/esm/providers/theme-provider.js +22 -0
  202. package/dist/esm/utils/browser-script.js +25 -0
  203. package/dist/esm/utils/constants.js +34 -0
  204. package/dist/esm/utils/email.js +10 -0
  205. package/dist/esm/utils/next.js +7 -0
  206. package/dist/esm/utils/url.js +21 -0
  207. package/dist/index.d.mts +37 -0
  208. package/dist/index.d.ts +37 -22
  209. package/dist/index.js +106 -21
  210. package/dist/joy.d.mts +16 -0
  211. package/dist/joy.d.ts +16 -1
  212. package/dist/joy.js +30 -1
  213. package/dist/lib/auth.d.mts +11 -0
  214. package/dist/lib/auth.d.ts +8 -4
  215. package/dist/lib/auth.js +83 -57
  216. package/dist/lib/cookie.d.mts +14 -0
  217. package/dist/lib/cookie.d.ts +8 -6
  218. package/dist/lib/cookie.js +217 -45
  219. package/dist/lib/hooks.d.mts +35 -0
  220. package/dist/lib/hooks.d.ts +14 -8
  221. package/dist/lib/hooks.js +53 -28
  222. package/dist/lib/stack-app.d.mts +227 -0
  223. package/dist/lib/stack-app.d.ts +43 -41
  224. package/dist/lib/stack-app.js +937 -849
  225. package/dist/providers/component-provider.d.mts +113 -0
  226. package/dist/providers/component-provider.d.ts +95 -77
  227. package/dist/providers/component-provider.js +92 -58
  228. package/dist/providers/design-provider.d.mts +34 -0
  229. package/dist/providers/design-provider.d.ts +16 -21
  230. package/dist/providers/design-provider.js +57 -58
  231. package/dist/providers/joy-provider.d.mts +36 -0
  232. package/dist/providers/joy-provider.d.ts +30 -14
  233. package/dist/providers/joy-provider.js +58 -30
  234. package/dist/providers/stack-provider-client.d.mts +20 -0
  235. package/dist/providers/stack-provider-client.d.ts +15 -8
  236. package/dist/providers/stack-provider-client.js +64 -20
  237. package/dist/providers/stack-provider.d.mts +14 -0
  238. package/dist/providers/stack-provider.d.ts +13 -5
  239. package/dist/providers/stack-provider.js +39 -8
  240. package/dist/providers/styled-components-registry.d.mts +8 -0
  241. package/dist/providers/styled-components-registry.d.ts +8 -4
  242. package/dist/providers/styled-components-registry.js +43 -17
  243. package/dist/providers/theme-provider.d.mts +22 -0
  244. package/dist/providers/theme-provider.d.ts +21 -9
  245. package/dist/providers/theme-provider.js +55 -19
  246. package/dist/utils/browser-script.d.mts +5 -0
  247. package/dist/utils/browser-script.d.ts +5 -0
  248. package/dist/utils/browser-script.js +50 -0
  249. package/dist/utils/constants.d.mts +48 -0
  250. package/dist/utils/constants.d.ts +11 -9
  251. package/dist/utils/constants.js +66 -21
  252. package/dist/utils/email.d.mts +3 -0
  253. package/dist/utils/email.d.ts +3 -1
  254. package/dist/utils/email.js +44 -6
  255. package/dist/utils/next.d.mts +3 -0
  256. package/dist/utils/next.d.ts +3 -1
  257. package/dist/utils/next.js +31 -3
  258. package/dist/utils/url.d.mts +4 -0
  259. package/dist/utils/url.d.ts +4 -2
  260. package/dist/utils/url.js +44 -13
  261. package/package.json +20 -10
package/dist/lib/hooks.js CHANGED
@@ -1,30 +1,55 @@
1
- import { StackContext } from "../providers/stack-provider-client";
2
- import { useContext } from "react";
3
- export function useUser(options = {}) {
4
- const stackApp = useStackApp(options);
5
- if (options.projectIdMustMatch && stackApp.projectId !== options.projectIdMustMatch) {
6
- throw new Error("Unexpected project ID in useStackApp: " + stackApp.projectId);
7
- }
8
- if (options.projectIdMustMatch === "internal") {
9
- return stackApp.useUser(options);
10
- }
11
- else {
12
- return stackApp.useUser(options);
13
- }
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/lib/hooks.ts
21
+ var hooks_exports = {};
22
+ __export(hooks_exports, {
23
+ useStackApp: () => useStackApp,
24
+ useUser: () => useUser
25
+ });
26
+ module.exports = __toCommonJS(hooks_exports);
27
+ var import_stack_provider_client = require("../providers/stack-provider-client");
28
+ var import_react = require("react");
29
+ function useUser(options = {}) {
30
+ const stackApp = useStackApp(options);
31
+ if (options.projectIdMustMatch && stackApp.projectId !== options.projectIdMustMatch) {
32
+ throw new Error("Unexpected project ID in useStackApp: " + stackApp.projectId);
33
+ }
34
+ if (options.projectIdMustMatch === "internal") {
35
+ return stackApp.useUser(options);
36
+ } else {
37
+ return stackApp.useUser(options);
38
+ }
14
39
  }
15
- /**
16
- * Returns the current Stack app associated with the StackProvider.
17
- *
18
- * @returns the current Stack app
19
- */
20
- export function useStackApp(options = {}) {
21
- const context = useContext(StackContext);
22
- if (context === null) {
23
- throw new Error("useStackApp must be used within a StackProvider");
24
- }
25
- const stackApp = context.app;
26
- if (options.projectIdMustMatch && stackApp.projectId !== options.projectIdMustMatch) {
27
- throw new Error("Unexpected project ID in useStackApp: " + stackApp.projectId);
28
- }
29
- return stackApp;
40
+ function useStackApp(options = {}) {
41
+ const context = (0, import_react.useContext)(import_stack_provider_client.StackContext);
42
+ if (context === null) {
43
+ throw new Error("useStackApp must be used within a StackProvider");
44
+ }
45
+ const stackApp = context.app;
46
+ if (options.projectIdMustMatch && stackApp.projectId !== options.projectIdMustMatch) {
47
+ throw new Error("Unexpected project ID in useStackApp: " + stackApp.projectId);
48
+ }
49
+ return stackApp;
30
50
  }
51
+ // Annotate the CommonJS export names for ESM import in node:
52
+ 0 && (module.exports = {
53
+ useStackApp,
54
+ useUser
55
+ });
@@ -0,0 +1,227 @@
1
+ import { ServerUserJson, ServerUserCustomizableJson, OAuthProviderConfigJson, KnownErrors } from '@stackframe/stack-shared';
2
+ import { ReadonlyTokenStore, UserJson, UserCustomizableJson, ProjectJson, ProductionModeError, EmailConfigJson, DomainConfigJson, ClientProjectJson } from '@stackframe/stack-shared/dist/interface/clientInterface';
3
+ import { ReadonlyJson } from '@stackframe/stack-shared/dist/utils/json';
4
+ import { ProjectUpdateOptions, ApiKeySetCreateOptions } from '@stackframe/stack-shared/dist/interface/adminInterface';
5
+
6
+ type TokenStoreOptions<HasTokenStore extends boolean = boolean> = HasTokenStore extends true ? "cookie" | "nextjs-cookie" | "memory" : HasTokenStore extends false ? null : TokenStoreOptions<true> | TokenStoreOptions<false>;
7
+ type HandlerUrls = {
8
+ handler: string;
9
+ signIn: string;
10
+ afterSignIn: string;
11
+ signUp: string;
12
+ afterSignUp: string;
13
+ signOut: string;
14
+ afterSignOut: string;
15
+ emailVerification: string;
16
+ passwordReset: string;
17
+ forgotPassword: string;
18
+ home: string;
19
+ oauthCallback: string;
20
+ magicLinkCallback: string;
21
+ accountSettings: string;
22
+ };
23
+ type ProjectCurrentUser<ProjectId> = ProjectId extends "internal" ? CurrentInternalUser : CurrentUser;
24
+ type StackClientAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = {
25
+ baseUrl?: string;
26
+ projectId?: ProjectId;
27
+ publishableClientKey?: string;
28
+ urls?: Partial<HandlerUrls>;
29
+ tokenStore: TokenStoreOptions<HasTokenStore>;
30
+ };
31
+ type StackServerAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {
32
+ secretServerKey?: string;
33
+ };
34
+ type StackAdminAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = ((StackServerAppConstructorOptions<HasTokenStore, ProjectId> & {
35
+ superSecretAdminKey?: string;
36
+ }) | (Omit<StackServerAppConstructorOptions<HasTokenStore, ProjectId>, "publishableClientKey" | "secretServerKey"> & {
37
+ projectOwnerTokens: ReadonlyTokenStore;
38
+ }));
39
+ type StackClientAppJson<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {
40
+ uniqueIdentifier: string;
41
+ };
42
+ declare const stackAppInternalsSymbol: unique symbol;
43
+ type Auth<T, C> = {
44
+ readonly tokenStore: ReadonlyTokenStore;
45
+ update(this: T, user: Partial<C>): Promise<void>;
46
+ signOut(this: T): Promise<void>;
47
+ sendVerificationEmail(this: T): Promise<KnownErrors["EmailAlreadyVerified"] | undefined>;
48
+ updatePassword(this: T, options: {
49
+ oldPassword: string;
50
+ newPassword: string;
51
+ }): Promise<KnownErrors["PasswordMismatch"] | KnownErrors["PasswordRequirementsNotMet"] | undefined>;
52
+ };
53
+ type InternalAuth<T> = {
54
+ createProject(this: T, newProject: Pick<Project, "displayName" | "description">): Promise<Project>;
55
+ listOwnedProjects(this: T): Promise<Project[]>;
56
+ useOwnedProjects(this: T): Project[];
57
+ onOwnedProjectsChange(this: T, callback: (projects: Project[]) => void): void;
58
+ };
59
+ type User = {
60
+ readonly projectId: string;
61
+ readonly id: string;
62
+ readonly displayName: string | null;
63
+ /**
64
+ * The user's email address.
65
+ *
66
+ * Note: This might NOT be unique across multiple users, so always use `id` for unique identification.
67
+ */
68
+ readonly primaryEmail: string | null;
69
+ readonly primaryEmailVerified: boolean;
70
+ readonly profileImageUrl: string | null;
71
+ readonly signedUpAt: Date;
72
+ readonly clientMetadata: ReadonlyJson;
73
+ readonly authMethod: 'credential' | 'oauth';
74
+ readonly hasPassword: boolean;
75
+ readonly authWithEmail: boolean;
76
+ readonly oauthProviders: readonly string[];
77
+ toJson(this: CurrentUser): UserJson;
78
+ };
79
+ type CurrentUser = Auth<User, UserCustomizableJson> & User;
80
+ type CurrentInternalUser = CurrentUser & InternalAuth<CurrentUser>;
81
+ /**
82
+ * A user including sensitive fields that should only be used on the server, never sent to the client
83
+ * (such as sensitive information and serverMetadata).
84
+ */
85
+ type ServerUser = Omit<User, "toJson"> & {
86
+ readonly serverMetadata: ReadonlyJson;
87
+ /**
88
+ * Returns a new user object with the sensitive fields removed.
89
+ */
90
+ getClientUser(this: ServerUser): User;
91
+ toJson(this: ServerUser): ServerUserJson;
92
+ update(this: ServerUser, user: Partial<ServerUserCustomizableJson>): Promise<void>;
93
+ delete(this: ServerUser): Promise<void>;
94
+ };
95
+ type CurrentServerUser = Auth<ServerUser, ServerUserCustomizableJson> & Omit<ServerUser, "getClientUser"> & {
96
+ getClientUser(this: CurrentServerUser): CurrentUser;
97
+ };
98
+ type CurrentInternalServerUser = CurrentServerUser & InternalAuth<CurrentServerUser>;
99
+ type Project = {
100
+ readonly id: string;
101
+ readonly displayName: string;
102
+ readonly description?: string;
103
+ readonly createdAt: Date;
104
+ readonly userCount: number;
105
+ readonly isProductionMode: boolean;
106
+ readonly evaluatedConfig: {
107
+ readonly id: string;
108
+ readonly allowLocalhost: boolean;
109
+ readonly credentialEnabled: boolean;
110
+ readonly magicLinkEnabled: boolean;
111
+ readonly oauthProviders: OAuthProviderConfig[];
112
+ readonly emailConfig?: EmailConfig;
113
+ readonly domains: DomainConfig[];
114
+ };
115
+ update(this: Project, update: ProjectUpdateOptions): Promise<void>;
116
+ toJson(this: Project): ProjectJson;
117
+ getProductionModeErrors(this: Project): ProductionModeError[];
118
+ };
119
+ type ApiKeySetBase = {
120
+ id: string;
121
+ description: string;
122
+ expiresAt: Date;
123
+ manuallyRevokedAt: Date | null;
124
+ createdAt: Date;
125
+ isValid(): boolean;
126
+ whyInvalid(): "expired" | "manually-revoked" | null;
127
+ revoke(): Promise<void>;
128
+ };
129
+ type ApiKeySetFirstView = ApiKeySetBase & {
130
+ publishableClientKey?: string;
131
+ secretServerKey?: string;
132
+ superSecretAdminKey?: string;
133
+ };
134
+ type ApiKeySet = ApiKeySetBase & {
135
+ publishableClientKey: null | {
136
+ lastFour: string;
137
+ };
138
+ secretServerKey: null | {
139
+ lastFour: string;
140
+ };
141
+ superSecretAdminKey: null | {
142
+ lastFour: string;
143
+ };
144
+ };
145
+ type EmailConfig = EmailConfigJson;
146
+ type DomainConfig = DomainConfigJson;
147
+ type OAuthProviderConfig = OAuthProviderConfigJson;
148
+ type GetUserOptions = {
149
+ or?: 'redirect' | 'throw' | 'return-null';
150
+ };
151
+ type AsyncStoreProperty<Name extends string, Value, IsMultiple extends boolean> = {
152
+ [key in `${IsMultiple extends true ? "list" : "get"}${Capitalize<Name>}`]: () => Promise<Value>;
153
+ } & {
154
+ [key in `on${Capitalize<Name>}Change`]: (callback: (value: Value) => void) => void;
155
+ } & {
156
+ [key in `use${Capitalize<Name>}`]: () => Value;
157
+ };
158
+ type StackClientAppConstructor = {
159
+ new <TokenStoreType extends string, HasTokenStore extends (TokenStoreType extends {} ? true : boolean), ProjectId extends string>(options: StackClientAppConstructorOptions<HasTokenStore, ProjectId>): StackClientApp<HasTokenStore, ProjectId>;
160
+ new (options: StackClientAppConstructorOptions<boolean, string>): StackClientApp<boolean, string>;
161
+ [stackAppInternalsSymbol]: {
162
+ fromClientJson<HasTokenStore extends boolean, ProjectId extends string>(json: StackClientAppJson<HasTokenStore, ProjectId>): StackClientApp<HasTokenStore, ProjectId>;
163
+ };
164
+ };
165
+ type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = ({
166
+ readonly projectId: ProjectId;
167
+ readonly urls: Readonly<HandlerUrls>;
168
+ signInWithOAuth(provider: string): Promise<void>;
169
+ signInWithCredential(options: {
170
+ email: string;
171
+ password: string;
172
+ }): Promise<KnownErrors["EmailPasswordMismatch"] | undefined>;
173
+ signUpWithCredential(options: {
174
+ email: string;
175
+ password: string;
176
+ }): Promise<KnownErrors["UserEmailAlreadyExists"] | undefined>;
177
+ callOAuthCallback(): Promise<void>;
178
+ sendForgotPasswordEmail(email: string): Promise<KnownErrors["UserNotFound"] | undefined>;
179
+ sendMagicLinkEmail(email: string): Promise<KnownErrors["RedirectUrlNotWhitelisted"] | undefined>;
180
+ resetPassword(options: {
181
+ code: string;
182
+ password: string;
183
+ }): Promise<KnownErrors["PasswordResetError"] | undefined>;
184
+ verifyPasswordResetCode(code: string): Promise<KnownErrors["PasswordResetCodeError"] | undefined>;
185
+ verifyEmail(code: string): Promise<KnownErrors["EmailVerificationError"] | undefined>;
186
+ signInWithMagicLink(code: string): Promise<KnownErrors["MagicLinkError"] | undefined>;
187
+ [stackAppInternalsSymbol]: {
188
+ toClientJson(): StackClientAppJson<HasTokenStore, ProjectId>;
189
+ setCurrentUser(userJsonPromise: Promise<UserJson | null>): void;
190
+ };
191
+ } & AsyncStoreProperty<"project", ClientProjectJson, false> & {
192
+ [K in `redirectTo${Capitalize<keyof Omit<HandlerUrls, 'handler' | 'oauthCallback'>>}`]: () => Promise<never>;
193
+ } & (HasTokenStore extends false ? {} : {
194
+ redirectToOAuthCallback(): Promise<never>;
195
+ useUser(options: GetUserOptions & {
196
+ or: 'redirect';
197
+ }): ProjectCurrentUser<ProjectId>;
198
+ useUser(options: GetUserOptions & {
199
+ or: 'throw';
200
+ }): ProjectCurrentUser<ProjectId>;
201
+ useUser(options?: GetUserOptions): ProjectCurrentUser<ProjectId> | null;
202
+ getUser(options: GetUserOptions & {
203
+ or: 'redirect';
204
+ }): Promise<ProjectCurrentUser<ProjectId>>;
205
+ getUser(options: GetUserOptions & {
206
+ or: 'throw';
207
+ }): Promise<ProjectCurrentUser<ProjectId>>;
208
+ getUser(options?: GetUserOptions): Promise<ProjectCurrentUser<ProjectId> | null>;
209
+ onUserChange: AsyncStoreProperty<"user", CurrentUser | null, false>["onUserChange"];
210
+ }));
211
+ declare const StackClientApp: StackClientAppConstructor;
212
+ type StackServerAppConstructor = {
213
+ new <TokenStoreType extends string, HasTokenStore extends (TokenStoreType extends {} ? true : boolean), ProjectId extends string>(options: StackServerAppConstructorOptions<HasTokenStore, ProjectId>): StackServerApp<HasTokenStore, ProjectId>;
214
+ new (options: StackServerAppConstructorOptions<boolean, string>): StackServerApp<boolean, string>;
215
+ };
216
+ type StackServerApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (StackClientApp<HasTokenStore, ProjectId> & AsyncStoreProperty<"serverUser", CurrentServerUser | null, false> & AsyncStoreProperty<"serverUsers", ServerUser[], true> & {});
217
+ declare const StackServerApp: StackServerAppConstructor;
218
+ type StackAdminAppConstructor = {
219
+ new <HasTokenStore extends boolean, ProjectId extends string>(options: StackAdminAppConstructorOptions<HasTokenStore, ProjectId>): StackAdminApp<HasTokenStore, ProjectId>;
220
+ new (options: StackAdminAppConstructorOptions<boolean, string>): StackAdminApp<boolean, string>;
221
+ };
222
+ type StackAdminApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (StackServerApp<HasTokenStore, ProjectId> & AsyncStoreProperty<"projectAdmin", Project, false> & AsyncStoreProperty<"apiKeySets", ApiKeySet[], true> & {
223
+ createApiKeySet(options: ApiKeySetCreateOptions): Promise<ApiKeySetFirstView>;
224
+ });
225
+ declare const StackAdminApp: StackAdminAppConstructor;
226
+
227
+ export { type ApiKeySet, type ApiKeySetBase, type ApiKeySetFirstView, type CurrentInternalServerUser, type CurrentInternalUser, type CurrentServerUser, type CurrentUser, type DomainConfig, type EmailConfig, type GetUserOptions, type HandlerUrls, type OAuthProviderConfig, type Project, type ServerUser, StackAdminApp, type StackAdminAppConstructorOptions, StackClientApp, type StackClientAppConstructorOptions, type StackClientAppJson, StackServerApp, type StackServerAppConstructorOptions, type TokenStoreOptions, type User, stackAppInternalsSymbol };
@@ -1,9 +1,10 @@
1
- import { KnownErrors, OAuthProviderConfigJson, ServerUserCustomizableJson, ServerUserJson } from "@stackframe/stack-shared";
2
- import { ClientProjectJson, UserCustomizableJson, UserJson, ProjectJson, EmailConfigJson, DomainConfigJson, ReadonlyTokenStore, ProductionModeError } from "@stackframe/stack-shared/dist/interface/clientInterface";
3
- import { ReadonlyJson } from "@stackframe/stack-shared/dist/utils/json";
4
- import { ApiKeySetCreateOptions, ProjectUpdateOptions } from "@stackframe/stack-shared/dist/interface/adminInterface";
5
- export type TokenStoreOptions<HasTokenStore extends boolean = boolean> = HasTokenStore extends true ? "cookie" | "nextjs-cookie" | "memory" : HasTokenStore extends false ? null : TokenStoreOptions<true> | TokenStoreOptions<false>;
6
- export type HandlerUrls = {
1
+ import { ServerUserJson, ServerUserCustomizableJson, OAuthProviderConfigJson, KnownErrors } from '@stackframe/stack-shared';
2
+ import { ReadonlyTokenStore, UserJson, UserCustomizableJson, ProjectJson, ProductionModeError, EmailConfigJson, DomainConfigJson, ClientProjectJson } from '@stackframe/stack-shared/dist/interface/clientInterface';
3
+ import { ReadonlyJson } from '@stackframe/stack-shared/dist/utils/json';
4
+ import { ProjectUpdateOptions, ApiKeySetCreateOptions } from '@stackframe/stack-shared/dist/interface/adminInterface';
5
+
6
+ type TokenStoreOptions<HasTokenStore extends boolean = boolean> = HasTokenStore extends true ? "cookie" | "nextjs-cookie" | "memory" : HasTokenStore extends false ? null : TokenStoreOptions<true> | TokenStoreOptions<false>;
7
+ type HandlerUrls = {
7
8
  handler: string;
8
9
  signIn: string;
9
10
  afterSignIn: string;
@@ -20,25 +21,25 @@ export type HandlerUrls = {
20
21
  accountSettings: string;
21
22
  };
22
23
  type ProjectCurrentUser<ProjectId> = ProjectId extends "internal" ? CurrentInternalUser : CurrentUser;
23
- export type StackClientAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = {
24
+ type StackClientAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = {
24
25
  baseUrl?: string;
25
26
  projectId?: ProjectId;
26
27
  publishableClientKey?: string;
27
28
  urls?: Partial<HandlerUrls>;
28
29
  tokenStore: TokenStoreOptions<HasTokenStore>;
29
30
  };
30
- export type StackServerAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {
31
+ type StackServerAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {
31
32
  secretServerKey?: string;
32
33
  };
33
- export type StackAdminAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = ((StackServerAppConstructorOptions<HasTokenStore, ProjectId> & {
34
+ type StackAdminAppConstructorOptions<HasTokenStore extends boolean, ProjectId extends string> = ((StackServerAppConstructorOptions<HasTokenStore, ProjectId> & {
34
35
  superSecretAdminKey?: string;
35
36
  }) | (Omit<StackServerAppConstructorOptions<HasTokenStore, ProjectId>, "publishableClientKey" | "secretServerKey"> & {
36
37
  projectOwnerTokens: ReadonlyTokenStore;
37
38
  }));
38
- export type StackClientAppJson<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {
39
+ type StackClientAppJson<HasTokenStore extends boolean, ProjectId extends string> = StackClientAppConstructorOptions<HasTokenStore, ProjectId> & {
39
40
  uniqueIdentifier: string;
40
41
  };
41
- export declare const stackAppInternalsSymbol: unique symbol;
42
+ declare const stackAppInternalsSymbol: unique symbol;
42
43
  type Auth<T, C> = {
43
44
  readonly tokenStore: ReadonlyTokenStore;
44
45
  update(this: T, user: Partial<C>): Promise<void>;
@@ -55,7 +56,7 @@ type InternalAuth<T> = {
55
56
  useOwnedProjects(this: T): Project[];
56
57
  onOwnedProjectsChange(this: T, callback: (projects: Project[]) => void): void;
57
58
  };
58
- export type User = {
59
+ type User = {
59
60
  readonly projectId: string;
60
61
  readonly id: string;
61
62
  readonly displayName: string | null;
@@ -75,13 +76,13 @@ export type User = {
75
76
  readonly oauthProviders: readonly string[];
76
77
  toJson(this: CurrentUser): UserJson;
77
78
  };
78
- export type CurrentUser = Auth<User, UserCustomizableJson> & User;
79
- export type CurrentInternalUser = CurrentUser & InternalAuth<CurrentUser>;
79
+ type CurrentUser = Auth<User, UserCustomizableJson> & User;
80
+ type CurrentInternalUser = CurrentUser & InternalAuth<CurrentUser>;
80
81
  /**
81
82
  * A user including sensitive fields that should only be used on the server, never sent to the client
82
83
  * (such as sensitive information and serverMetadata).
83
84
  */
84
- export type ServerUser = Omit<User, "toJson"> & {
85
+ type ServerUser = Omit<User, "toJson"> & {
85
86
  readonly serverMetadata: ReadonlyJson;
86
87
  /**
87
88
  * Returns a new user object with the sensitive fields removed.
@@ -91,11 +92,11 @@ export type ServerUser = Omit<User, "toJson"> & {
91
92
  update(this: ServerUser, user: Partial<ServerUserCustomizableJson>): Promise<void>;
92
93
  delete(this: ServerUser): Promise<void>;
93
94
  };
94
- export type CurrentServerUser = Auth<ServerUser, ServerUserCustomizableJson> & Omit<ServerUser, "getClientUser"> & {
95
+ type CurrentServerUser = Auth<ServerUser, ServerUserCustomizableJson> & Omit<ServerUser, "getClientUser"> & {
95
96
  getClientUser(this: CurrentServerUser): CurrentUser;
96
97
  };
97
- export type CurrentInternalServerUser = CurrentServerUser & InternalAuth<CurrentServerUser>;
98
- export type Project = {
98
+ type CurrentInternalServerUser = CurrentServerUser & InternalAuth<CurrentServerUser>;
99
+ type Project = {
99
100
  readonly id: string;
100
101
  readonly displayName: string;
101
102
  readonly description?: string;
@@ -115,7 +116,7 @@ export type Project = {
115
116
  toJson(this: Project): ProjectJson;
116
117
  getProductionModeErrors(this: Project): ProductionModeError[];
117
118
  };
118
- export type ApiKeySetBase = {
119
+ type ApiKeySetBase = {
119
120
  id: string;
120
121
  description: string;
121
122
  expiresAt: Date;
@@ -125,12 +126,12 @@ export type ApiKeySetBase = {
125
126
  whyInvalid(): "expired" | "manually-revoked" | null;
126
127
  revoke(): Promise<void>;
127
128
  };
128
- export type ApiKeySetFirstView = ApiKeySetBase & {
129
+ type ApiKeySetFirstView = ApiKeySetBase & {
129
130
  publishableClientKey?: string;
130
131
  secretServerKey?: string;
131
132
  superSecretAdminKey?: string;
132
133
  };
133
- export type ApiKeySet = ApiKeySetBase & {
134
+ type ApiKeySet = ApiKeySetBase & {
134
135
  publishableClientKey: null | {
135
136
  lastFour: string;
136
137
  };
@@ -141,10 +142,10 @@ export type ApiKeySet = ApiKeySetBase & {
141
142
  lastFour: string;
142
143
  };
143
144
  };
144
- export type EmailConfig = EmailConfigJson;
145
- export type DomainConfig = DomainConfigJson;
146
- export type OAuthProviderConfig = OAuthProviderConfigJson;
147
- export type GetUserOptions = {
145
+ type EmailConfig = EmailConfigJson;
146
+ type DomainConfig = DomainConfigJson;
147
+ type OAuthProviderConfig = OAuthProviderConfigJson;
148
+ type GetUserOptions = {
148
149
  or?: 'redirect' | 'throw' | 'return-null';
149
150
  };
150
151
  type AsyncStoreProperty<Name extends string, Value, IsMultiple extends boolean> = {
@@ -154,7 +155,14 @@ type AsyncStoreProperty<Name extends string, Value, IsMultiple extends boolean>
154
155
  } & {
155
156
  [key in `use${Capitalize<Name>}`]: () => Value;
156
157
  };
157
- export type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = ({
158
+ type StackClientAppConstructor = {
159
+ new <TokenStoreType extends string, HasTokenStore extends (TokenStoreType extends {} ? true : boolean), ProjectId extends string>(options: StackClientAppConstructorOptions<HasTokenStore, ProjectId>): StackClientApp<HasTokenStore, ProjectId>;
160
+ new (options: StackClientAppConstructorOptions<boolean, string>): StackClientApp<boolean, string>;
161
+ [stackAppInternalsSymbol]: {
162
+ fromClientJson<HasTokenStore extends boolean, ProjectId extends string>(json: StackClientAppJson<HasTokenStore, ProjectId>): StackClientApp<HasTokenStore, ProjectId>;
163
+ };
164
+ };
165
+ type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = ({
158
166
  readonly projectId: ProjectId;
159
167
  readonly urls: Readonly<HandlerUrls>;
160
168
  signInWithOAuth(provider: string): Promise<void>;
@@ -200,26 +208,20 @@ export type StackClientApp<HasTokenStore extends boolean = boolean, ProjectId ex
200
208
  getUser(options?: GetUserOptions): Promise<ProjectCurrentUser<ProjectId> | null>;
201
209
  onUserChange: AsyncStoreProperty<"user", CurrentUser | null, false>["onUserChange"];
202
210
  }));
203
- type StackClientAppConstructor = {
204
- new <TokenStoreType extends string, HasTokenStore extends (TokenStoreType extends {} ? true : boolean), ProjectId extends string>(options: StackClientAppConstructorOptions<HasTokenStore, ProjectId>): StackClientApp<HasTokenStore, ProjectId>;
205
- new (options: StackClientAppConstructorOptions<boolean, string>): StackClientApp<boolean, string>;
206
- [stackAppInternalsSymbol]: {
207
- fromClientJson<HasTokenStore extends boolean, ProjectId extends string>(json: StackClientAppJson<HasTokenStore, ProjectId>): StackClientApp<HasTokenStore, ProjectId>;
208
- };
209
- };
210
- export declare const StackClientApp: StackClientAppConstructor;
211
- export type StackServerApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (StackClientApp<HasTokenStore, ProjectId> & AsyncStoreProperty<"serverUser", CurrentServerUser | null, false> & AsyncStoreProperty<"serverUsers", ServerUser[], true> & {});
211
+ declare const StackClientApp: StackClientAppConstructor;
212
212
  type StackServerAppConstructor = {
213
213
  new <TokenStoreType extends string, HasTokenStore extends (TokenStoreType extends {} ? true : boolean), ProjectId extends string>(options: StackServerAppConstructorOptions<HasTokenStore, ProjectId>): StackServerApp<HasTokenStore, ProjectId>;
214
214
  new (options: StackServerAppConstructorOptions<boolean, string>): StackServerApp<boolean, string>;
215
215
  };
216
- export declare const StackServerApp: StackServerAppConstructor;
217
- export type StackAdminApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (StackServerApp<HasTokenStore, ProjectId> & AsyncStoreProperty<"projectAdmin", Project, false> & AsyncStoreProperty<"apiKeySets", ApiKeySet[], true> & {
218
- createApiKeySet(options: ApiKeySetCreateOptions): Promise<ApiKeySetFirstView>;
219
- });
216
+ type StackServerApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (StackClientApp<HasTokenStore, ProjectId> & AsyncStoreProperty<"serverUser", CurrentServerUser | null, false> & AsyncStoreProperty<"serverUsers", ServerUser[], true> & {});
217
+ declare const StackServerApp: StackServerAppConstructor;
220
218
  type StackAdminAppConstructor = {
221
219
  new <HasTokenStore extends boolean, ProjectId extends string>(options: StackAdminAppConstructorOptions<HasTokenStore, ProjectId>): StackAdminApp<HasTokenStore, ProjectId>;
222
220
  new (options: StackAdminAppConstructorOptions<boolean, string>): StackAdminApp<boolean, string>;
223
221
  };
224
- export declare const StackAdminApp: StackAdminAppConstructor;
225
- export {};
222
+ type StackAdminApp<HasTokenStore extends boolean = boolean, ProjectId extends string = string> = (StackServerApp<HasTokenStore, ProjectId> & AsyncStoreProperty<"projectAdmin", Project, false> & AsyncStoreProperty<"apiKeySets", ApiKeySet[], true> & {
223
+ createApiKeySet(options: ApiKeySetCreateOptions): Promise<ApiKeySetFirstView>;
224
+ });
225
+ declare const StackAdminApp: StackAdminAppConstructor;
226
+
227
+ export { type ApiKeySet, type ApiKeySetBase, type ApiKeySetFirstView, type CurrentInternalServerUser, type CurrentInternalUser, type CurrentServerUser, type CurrentUser, type DomainConfig, type EmailConfig, type GetUserOptions, type HandlerUrls, type OAuthProviderConfig, type Project, type ServerUser, StackAdminApp, type StackAdminAppConstructorOptions, StackClientApp, type StackClientAppConstructorOptions, type StackClientAppJson, StackServerApp, type StackServerAppConstructorOptions, type TokenStoreOptions, type User, stackAppInternalsSymbol };