@stackframe/stack 2.5.29 → 2.5.31
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 +20 -0
- package/dist/components/oauth-button.js +48 -47
- package/dist/components/oauth-button.js.map +1 -1
- package/dist/components-page/account-settings.d.mts +8 -1
- package/dist/components-page/account-settings.d.ts +8 -1
- package/dist/components-page/account-settings.js +9 -2
- package/dist/components-page/account-settings.js.map +1 -1
- package/dist/components-page/auth-page.d.mts +2 -1
- package/dist/components-page/auth-page.d.ts +2 -1
- package/dist/components-page/auth-page.js +25 -29
- package/dist/components-page/auth-page.js.map +1 -1
- package/dist/components-page/email-verification.d.mts +1 -1
- package/dist/components-page/email-verification.d.ts +1 -1
- package/dist/components-page/email-verification.js +6 -11
- package/dist/components-page/email-verification.js.map +1 -1
- package/dist/components-page/error-page.d.mts +1 -1
- package/dist/components-page/error-page.d.ts +1 -1
- package/dist/components-page/error-page.js +8 -8
- package/dist/components-page/error-page.js.map +1 -1
- package/dist/components-page/forgot-password.d.mts +1 -1
- package/dist/components-page/forgot-password.d.ts +1 -1
- package/dist/components-page/forgot-password.js +5 -5
- package/dist/components-page/forgot-password.js.map +1 -1
- package/dist/components-page/magic-link-callback.d.mts +1 -1
- package/dist/components-page/magic-link-callback.d.ts +1 -1
- package/dist/components-page/magic-link-callback.js +7 -12
- package/dist/components-page/magic-link-callback.js.map +1 -1
- package/dist/components-page/password-reset.d.mts +1 -1
- package/dist/components-page/password-reset.d.ts +1 -1
- package/dist/components-page/password-reset.js +6 -6
- package/dist/components-page/password-reset.js.map +1 -1
- package/dist/components-page/sign-in.d.mts +3 -1
- package/dist/components-page/sign-in.d.ts +3 -1
- package/dist/components-page/sign-in.js +2 -2
- package/dist/components-page/sign-in.js.map +1 -1
- package/dist/components-page/sign-out.js +1 -1
- package/dist/components-page/sign-out.js.map +1 -1
- package/dist/components-page/sign-up.d.mts +3 -1
- package/dist/components-page/sign-up.d.ts +3 -1
- package/dist/components-page/sign-up.js +2 -2
- package/dist/components-page/sign-up.js.map +1 -1
- package/dist/components-page/stack-handler.d.mts +30 -2
- package/dist/components-page/stack-handler.d.ts +30 -2
- package/dist/components-page/stack-handler.js +96 -28
- package/dist/components-page/stack-handler.js.map +1 -1
- package/dist/components-page/team-creation.js +3 -4
- package/dist/components-page/team-creation.js.map +1 -1
- package/dist/esm/components/oauth-button.js +48 -47
- package/dist/esm/components/oauth-button.js.map +1 -1
- package/dist/esm/components-page/account-settings.js +9 -2
- package/dist/esm/components-page/account-settings.js.map +1 -1
- package/dist/esm/components-page/auth-page.js +25 -29
- package/dist/esm/components-page/auth-page.js.map +1 -1
- package/dist/esm/components-page/email-verification.js +6 -11
- package/dist/esm/components-page/email-verification.js.map +1 -1
- package/dist/esm/components-page/error-page.js +8 -8
- package/dist/esm/components-page/error-page.js.map +1 -1
- package/dist/esm/components-page/forgot-password.js +5 -5
- package/dist/esm/components-page/forgot-password.js.map +1 -1
- package/dist/esm/components-page/magic-link-callback.js +7 -12
- package/dist/esm/components-page/magic-link-callback.js.map +1 -1
- package/dist/esm/components-page/password-reset.js +6 -6
- package/dist/esm/components-page/password-reset.js.map +1 -1
- package/dist/esm/components-page/sign-in.js +2 -2
- package/dist/esm/components-page/sign-in.js.map +1 -1
- package/dist/esm/components-page/sign-out.js +1 -1
- package/dist/esm/components-page/sign-out.js.map +1 -1
- package/dist/esm/components-page/sign-up.js +2 -2
- package/dist/esm/components-page/sign-up.js.map +1 -1
- package/dist/esm/components-page/stack-handler.js +97 -29
- package/dist/esm/components-page/stack-handler.js.map +1 -1
- package/dist/esm/components-page/team-creation.js +3 -4
- package/dist/esm/components-page/team-creation.js.map +1 -1
- package/dist/esm/lib/stack-app.js +5 -3
- package/dist/esm/lib/stack-app.js.map +1 -1
- package/dist/esm/utils/browser-script.js +10 -2
- package/dist/esm/utils/browser-script.js.map +1 -1
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/lib/stack-app.d.mts +1 -0
- package/dist/lib/stack-app.d.ts +1 -0
- package/dist/lib/stack-app.js +5 -3
- package/dist/lib/stack-app.js.map +1 -1
- package/dist/utils/browser-script.js +10 -2
- package/dist/utils/browser-script.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { getPasswordError } from \"@stackframe/stack-shared/dist/helpers/password\";\nimport { yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Label, PasswordInput, Typography } from \"@stackframe/stack-ui\";\nimport React, { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\n\nconst schema = yupObject({\n password: yupString().required('Please enter your password').test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n passwordRepeat: yupString().nullable().oneOf([yup.ref('password'), null], 'Passwords do not match').required('Please repeat your password')\n});\n\nexport default function PasswordResetForm(\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { getPasswordError } from \"@stackframe/stack-shared/dist/helpers/password\";\nimport { yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Label, PasswordInput, Typography } from \"@stackframe/stack-ui\";\nimport React, { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\n\nconst schema = yupObject({\n password: yupString().required('Please enter your password').test({\n name: 'is-valid-password',\n test: (value, ctx) => {\n const error = getPasswordError(value);\n if (error) {\n return ctx.createError({ message: error.message });\n } else {\n return true;\n }\n }\n }),\n passwordRepeat: yupString().nullable().oneOf([yup.ref('password'), null], 'Passwords do not match').required('Please repeat your password')\n});\n\nexport default function PasswordResetForm(props: {\n code: string,\n fullPage?: boolean,\n}) {\n const { register, handleSubmit, formState: { errors }, clearErrors } = useForm({\n resolver: yupResolver(schema)\n });\n const stackApp = useStackApp();\n const [finished, setFinished] = useState(false);\n const [resetError, setResetError] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n try {\n const { password } = data;\n const errorCode = await stackApp.resetPassword({ password, code: props.code });\n if (errorCode) {\n setResetError(true);\n return;\n }\n\n setFinished(true);\n } finally {\n setLoading(false);\n }\n };\n\n if (finished) {\n return <PredefinedMessageCard type='passwordReset' fullPage={!!props.fullPage} />;\n }\n\n if (resetError) {\n return (\n <MessageCard title=\"Failed to reset password\" fullPage={!!props.fullPage}>\n Failed to reset password. Please request a new password reset link\n </MessageCard>\n );\n }\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className=\"text-center mb-6\" style={{ width: '380px', padding: props.fullPage ? '1rem' : 0 }}>\n <Typography type='h2'>Reset Your Password</Typography>\n </div>\n\n <form\n style={{ display: 'flex', flexDirection: 'column', alignItems: 'stretch' }}\n onSubmit={e => runAsynchronouslyWithAlert(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"password\" className=\"mb-1\">New Password</Label>\n <PasswordInput\n id=\"password\"\n {...register('password')}\n onChange={() => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n }}\n />\n <FormWarningText text={errors.password?.message?.toString()} />\n\n <Label htmlFor=\"repeat-password\" className=\"mt-4 mb-1\">Repeat New Password</Label>\n <PasswordInput\n id=\"repeat-password\"\n {...register('passwordRepeat')}\n onChange={() => {\n clearErrors('password');\n clearErrors('passwordRepeat');\n }}\n />\n <FormWarningText text={errors.passwordRepeat?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n Reset Password\n </Button>\n </form>\n </MaybeFullPage>\n );\n}\n\n\nconst cachedVerifyPasswordResetCode = cacheFunction(async (stackApp: StackClientApp<true>, code: string) => {\n return await stackApp.verifyPasswordResetCode(code);\n});\n\nexport function PasswordReset({\n searchParams,\n fullPage = false,\n}: {\n searchParams: Record<string, string>,\n fullPage?: boolean,\n}) {\n const stackApp = useStackApp();\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Password Reset Link\" fullPage={fullPage}>\n <Typography>Please double check if you have the correct password reset link.</Typography>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Password Reset Link\" fullPage={fullPage}>\n <Typography>Your password reset link has expired. Please request a new password reset link from the login page.</Typography>\n </MessageCard>\n );\n\n const usedJsx = (\n <MessageCard title=\"Used Password Reset Link\" fullPage={fullPage}>\n <Typography>This password reset link has already been used. If you need to reset your password again, please request a new password reset link from the login page.</Typography>\n </MessageCard>\n );\n\n const code = searchParams.code;\n if (!code) {\n return invalidJsx;\n }\n\n const error = React.use(cachedVerifyPasswordResetCode(stackApp, code));\n\n if (error instanceof KnownErrors.VerificationCodeNotFound) {\n return invalidJsx;\n } else if (error instanceof KnownErrors.VerificationCodeExpired) {\n return expiredJsx;\n } else if (error instanceof KnownErrors.VerificationCodeAlreadyUsed) {\n return usedJsx;\n } else if (error) {\n throw error;\n }\n\n return <PasswordResetForm code={code} fullPage={fullPage} />;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/components-page/sign-in.tsx
|
|
2
2
|
import { AuthPage } from "./auth-page";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
function SignIn(
|
|
5
|
-
return /* @__PURE__ */ jsx(AuthPage, { fullPage, type: "sign-in" });
|
|
4
|
+
function SignIn(props) {
|
|
5
|
+
return /* @__PURE__ */ jsx(AuthPage, { fullPage: !!props.fullPage, type: "sign-in", automaticRedirect: !!props.automaticRedirect, extraInfo: props.extraInfo });
|
|
6
6
|
}
|
|
7
7
|
export {
|
|
8
8
|
SignIn
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/sign-in.tsx"],"sourcesContent":["import { AuthPage } from './auth-page';\n\nexport function SignIn(
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/sign-in.tsx"],"sourcesContent":["import { AuthPage } from './auth-page';\n\nexport function SignIn(props: { fullPage?: boolean, automaticRedirect?: boolean, extraInfo?: React.ReactNode }) {\n return <AuthPage fullPage={!!props.fullPage} type='sign-in' automaticRedirect={!!props.automaticRedirect} extraInfo={props.extraInfo} />;\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAGhB;AADF,SAAS,OAAO,OAAyF;AAC9G,SAAO,oBAAC,YAAS,UAAU,CAAC,CAAC,MAAM,UAAU,MAAK,WAAU,mBAAmB,CAAC,CAAC,MAAM,mBAAmB,WAAW,MAAM,WAAW;AACxI;","names":[]}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
4
|
// src/components-page/sign-out.tsx
|
|
5
|
+
import { cacheFunction } from "@stackframe/stack-shared/dist/utils/caches";
|
|
5
6
|
import React from "react";
|
|
6
7
|
import { useUser } from "..";
|
|
7
8
|
import { PredefinedMessageCard } from "../components/message-cards/predefined-message-card";
|
|
8
|
-
import { cacheFunction } from "@stackframe/stack-shared/dist/utils/caches";
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
10
10
|
var cacheSignOut = cacheFunction(async (user) => {
|
|
11
11
|
return await user.signOut();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/sign-out.tsx"],"sourcesContent":["'use client';\n\nimport React from \"react\";\nimport { CurrentUser,
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/sign-out.tsx"],"sourcesContent":["'use client';\n\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport React from \"react\";\nimport { CurrentUser, useUser } from \"..\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\n\nconst cacheSignOut = cacheFunction(async (user: CurrentUser) => {\n return await user.signOut();\n});\n\nexport function SignOut(props: { fullPage?: boolean }) {\n const user = useUser();\n\n if (user) {\n React.use(cacheSignOut(user));\n }\n\n return <PredefinedMessageCard type='signedOut' fullPage={props.fullPage} />;\n}\n"],"mappings":";;;AAEA,SAAS,qBAAqB;AAC9B,OAAO,WAAW;AAClB,SAAsB,eAAe;AACrC,SAAS,6BAA6B;AAa7B;AAXT,IAAM,eAAe,cAAc,OAAO,SAAsB;AAC9D,SAAO,MAAM,KAAK,QAAQ;AAC5B,CAAC;AAEM,SAAS,QAAQ,OAA+B;AACrD,QAAM,OAAO,QAAQ;AAErB,MAAI,MAAM;AACR,UAAM,IAAI,aAAa,IAAI,CAAC;AAAA,EAC9B;AAEA,SAAO,oBAAC,yBAAsB,MAAK,aAAY,UAAU,MAAM,UAAU;AAC3E;","names":[]}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// src/components-page/sign-up.tsx
|
|
5
5
|
import { AuthPage } from "./auth-page";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
|
-
function SignUp(
|
|
8
|
-
return /* @__PURE__ */ jsx(AuthPage, { fullPage, type: "sign-up" });
|
|
7
|
+
function SignUp(props) {
|
|
8
|
+
return /* @__PURE__ */ jsx(AuthPage, { fullPage: !!props.fullPage, type: "sign-up", automaticRedirect: !!props.automaticRedirect, extraInfo: props.extraInfo });
|
|
9
9
|
}
|
|
10
10
|
export {
|
|
11
11
|
SignUp
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/sign-up.tsx"],"sourcesContent":["'use client';\nimport { AuthPage } from './auth-page';\n\nexport function SignUp(
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/sign-up.tsx"],"sourcesContent":["'use client';\nimport { AuthPage } from './auth-page';\n\nexport function SignUp(props: { fullPage?: boolean, automaticRedirect?: boolean, extraInfo?: React.ReactNode }) {\n return <AuthPage fullPage={!!props.fullPage} type='sign-up' automaticRedirect={!!props.automaticRedirect} extraInfo={props.extraInfo} />;\n}\n"],"mappings":";;;AACA,SAAS,gBAAgB;AAGhB;AADF,SAAS,OAAO,OAAyF;AAC9G,SAAO,oBAAC,YAAS,UAAU,CAAC,CAAC,MAAM,UAAU,MAAK,WAAU,mBAAmB,CAAC,CAAC,MAAM,mBAAmB,WAAW,MAAM,WAAW;AACxI;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/components-page/stack-handler.tsx
|
|
2
2
|
import { getRelativePart } from "@stackframe/stack-shared/dist/utils/urls";
|
|
3
3
|
import { RedirectType, notFound, redirect } from "next/navigation";
|
|
4
|
-
import {
|
|
4
|
+
import { SignIn, SignUp } from "..";
|
|
5
5
|
import { MessageCard } from "../components/message-cards/message-card";
|
|
6
6
|
import { AccountSettings } from "./account-settings";
|
|
7
7
|
import { EmailVerification } from "./email-verification";
|
|
@@ -12,28 +12,20 @@ import { OAuthCallback } from "./oauth-callback";
|
|
|
12
12
|
import { PasswordReset } from "./password-reset";
|
|
13
13
|
import { SignOut } from "./sign-out";
|
|
14
14
|
import { TeamInvitation } from "./team-invitation";
|
|
15
|
+
import { filterUndefined } from "@stackframe/stack-shared/dist/utils/objects";
|
|
15
16
|
import { jsx } from "react/jsx-runtime";
|
|
16
|
-
async function StackHandler({
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
searchParams = {},
|
|
20
|
-
fullPage
|
|
21
|
-
}) {
|
|
22
|
-
if (fullPage === void 0) {
|
|
23
|
-
console.warn("Not specifying `fullPage` in the StackHandler options is deprecated; the default value will change to `false` in the next major version. Please specify `fullPage={true}` in your `app/[...stack]/handler/page.tsx` file to retain the current behavior.");
|
|
24
|
-
fullPage = true;
|
|
25
|
-
}
|
|
26
|
-
if (!stack) {
|
|
27
|
-
return /* @__PURE__ */ jsx(MessageCard, { title: "Invalid Stack Handler Setup", fullPage, children: /* @__PURE__ */ jsx("p", { children: "Can't use Stack handler at this location. Make sure that the file is in a folder called [...stack]." }) });
|
|
17
|
+
async function StackHandler(props) {
|
|
18
|
+
if (!props.params?.stack) {
|
|
19
|
+
return /* @__PURE__ */ jsx(MessageCard, { title: "Invalid Stack Handler Setup", fullPage: props.fullPage, children: /* @__PURE__ */ jsx("p", { children: "Can't use Stack handler at this location. Make sure that the file is in a folder called [...stack]." }) });
|
|
28
20
|
}
|
|
29
21
|
function redirectIfNotHandler(name) {
|
|
30
|
-
const url = app.urls[name];
|
|
31
|
-
const handlerUrl = app.urls.handler;
|
|
22
|
+
const url = props.app.urls[name];
|
|
23
|
+
const handlerUrl = props.app.urls.handler;
|
|
32
24
|
if (url !== handlerUrl && url.startsWith(handlerUrl + "/")) {
|
|
33
25
|
return;
|
|
34
26
|
}
|
|
35
27
|
const urlObj = new URL(url, "http://example.com");
|
|
36
|
-
for (const [key, value] of Object.entries(searchParams)) {
|
|
28
|
+
for (const [key, value] of Object.entries(props.searchParams || {})) {
|
|
37
29
|
urlObj.searchParams.set(key, value);
|
|
38
30
|
}
|
|
39
31
|
redirect(getRelativePart(urlObj), RedirectType.replace);
|
|
@@ -51,60 +43,136 @@ async function StackHandler({
|
|
|
51
43
|
teamInvitation: "team-invitation",
|
|
52
44
|
error: "error"
|
|
53
45
|
};
|
|
54
|
-
const path = stack.join("/");
|
|
46
|
+
const path = props.params.stack.join("/");
|
|
55
47
|
if (path.startsWith("account-settings")) {
|
|
56
|
-
return /* @__PURE__ */ jsx(
|
|
48
|
+
return /* @__PURE__ */ jsx(
|
|
49
|
+
AccountSettings,
|
|
50
|
+
{
|
|
51
|
+
fullPage: props.fullPage,
|
|
52
|
+
...filterUndefinedINU(props.componentProps?.AccountSettings)
|
|
53
|
+
}
|
|
54
|
+
);
|
|
57
55
|
}
|
|
58
56
|
switch (path) {
|
|
59
57
|
case availablePaths.signIn: {
|
|
60
58
|
redirectIfNotHandler("signIn");
|
|
61
|
-
return /* @__PURE__ */ jsx(
|
|
59
|
+
return /* @__PURE__ */ jsx(
|
|
60
|
+
SignIn,
|
|
61
|
+
{
|
|
62
|
+
fullPage: props.fullPage,
|
|
63
|
+
automaticRedirect: true,
|
|
64
|
+
...filterUndefinedINU(props.componentProps?.SignIn)
|
|
65
|
+
}
|
|
66
|
+
);
|
|
62
67
|
}
|
|
63
68
|
case availablePaths.signUp: {
|
|
64
69
|
redirectIfNotHandler("signUp");
|
|
65
|
-
return /* @__PURE__ */ jsx(
|
|
70
|
+
return /* @__PURE__ */ jsx(
|
|
71
|
+
SignUp,
|
|
72
|
+
{
|
|
73
|
+
fullPage: props.fullPage,
|
|
74
|
+
automaticRedirect: true,
|
|
75
|
+
...filterUndefinedINU(props.componentProps?.SignUp)
|
|
76
|
+
}
|
|
77
|
+
);
|
|
66
78
|
}
|
|
67
79
|
case availablePaths.emailVerification: {
|
|
68
80
|
redirectIfNotHandler("emailVerification");
|
|
69
|
-
return /* @__PURE__ */ jsx(
|
|
81
|
+
return /* @__PURE__ */ jsx(
|
|
82
|
+
EmailVerification,
|
|
83
|
+
{
|
|
84
|
+
searchParams: props.searchParams,
|
|
85
|
+
fullPage: props.fullPage,
|
|
86
|
+
...filterUndefinedINU(props.componentProps?.EmailVerification)
|
|
87
|
+
}
|
|
88
|
+
);
|
|
70
89
|
}
|
|
71
90
|
case availablePaths.passwordReset: {
|
|
72
91
|
redirectIfNotHandler("passwordReset");
|
|
73
|
-
return /* @__PURE__ */ jsx(
|
|
92
|
+
return /* @__PURE__ */ jsx(
|
|
93
|
+
PasswordReset,
|
|
94
|
+
{
|
|
95
|
+
searchParams: props.searchParams || {},
|
|
96
|
+
fullPage: props.fullPage,
|
|
97
|
+
...filterUndefinedINU(props.componentProps?.PasswordReset)
|
|
98
|
+
}
|
|
99
|
+
);
|
|
74
100
|
}
|
|
75
101
|
case availablePaths.forgotPassword: {
|
|
76
102
|
redirectIfNotHandler("forgotPassword");
|
|
77
|
-
return /* @__PURE__ */ jsx(
|
|
103
|
+
return /* @__PURE__ */ jsx(
|
|
104
|
+
ForgotPassword,
|
|
105
|
+
{
|
|
106
|
+
fullPage: props.fullPage,
|
|
107
|
+
...filterUndefinedINU(props.componentProps?.ForgotPassword)
|
|
108
|
+
}
|
|
109
|
+
);
|
|
78
110
|
}
|
|
79
111
|
case availablePaths.signOut: {
|
|
80
112
|
redirectIfNotHandler("signOut");
|
|
81
|
-
return /* @__PURE__ */ jsx(
|
|
113
|
+
return /* @__PURE__ */ jsx(
|
|
114
|
+
SignOut,
|
|
115
|
+
{
|
|
116
|
+
fullPage: props.fullPage,
|
|
117
|
+
...filterUndefinedINU(props.componentProps?.SignOut)
|
|
118
|
+
}
|
|
119
|
+
);
|
|
82
120
|
}
|
|
83
121
|
case availablePaths.oauthCallback: {
|
|
84
122
|
redirectIfNotHandler("oauthCallback");
|
|
85
|
-
return /* @__PURE__ */ jsx(
|
|
123
|
+
return /* @__PURE__ */ jsx(
|
|
124
|
+
OAuthCallback,
|
|
125
|
+
{
|
|
126
|
+
fullPage: props.fullPage,
|
|
127
|
+
...filterUndefinedINU(props.componentProps?.OAuthCallback)
|
|
128
|
+
}
|
|
129
|
+
);
|
|
86
130
|
}
|
|
87
131
|
case availablePaths.magicLinkCallback: {
|
|
88
132
|
redirectIfNotHandler("magicLinkCallback");
|
|
89
|
-
return /* @__PURE__ */ jsx(
|
|
133
|
+
return /* @__PURE__ */ jsx(
|
|
134
|
+
MagicLinkCallback,
|
|
135
|
+
{
|
|
136
|
+
searchParams: props.searchParams || {},
|
|
137
|
+
fullPage: props.fullPage,
|
|
138
|
+
...filterUndefinedINU(props.componentProps?.MagicLinkCallback)
|
|
139
|
+
}
|
|
140
|
+
);
|
|
90
141
|
}
|
|
91
142
|
case availablePaths.teamInvitation: {
|
|
92
143
|
redirectIfNotHandler("teamInvitation");
|
|
93
|
-
return /* @__PURE__ */ jsx(
|
|
144
|
+
return /* @__PURE__ */ jsx(
|
|
145
|
+
TeamInvitation,
|
|
146
|
+
{
|
|
147
|
+
searchParams: props.searchParams || {},
|
|
148
|
+
fullPage: props.fullPage,
|
|
149
|
+
...filterUndefinedINU(props.componentProps?.TeamInvitation)
|
|
150
|
+
}
|
|
151
|
+
);
|
|
94
152
|
}
|
|
95
153
|
case availablePaths.error: {
|
|
96
|
-
return /* @__PURE__ */ jsx(
|
|
154
|
+
return /* @__PURE__ */ jsx(
|
|
155
|
+
ErrorPage,
|
|
156
|
+
{
|
|
157
|
+
searchParams: props.searchParams || {},
|
|
158
|
+
fullPage: props.fullPage,
|
|
159
|
+
...filterUndefinedINU(props.componentProps?.ErrorPage)
|
|
160
|
+
}
|
|
161
|
+
);
|
|
97
162
|
}
|
|
98
163
|
default: {
|
|
99
164
|
for (const [key, value] of Object.entries(availablePaths)) {
|
|
100
165
|
if (path === value.replaceAll("-", "")) {
|
|
101
|
-
redirect(`${app.urls.handler}/${value}`, RedirectType.replace);
|
|
166
|
+
redirect(`${props.app.urls.handler}/${value}`, RedirectType.replace);
|
|
102
167
|
}
|
|
103
168
|
}
|
|
104
169
|
return notFound();
|
|
105
170
|
}
|
|
106
171
|
}
|
|
107
172
|
}
|
|
173
|
+
function filterUndefinedINU(value) {
|
|
174
|
+
return value === void 0 ? value : filterUndefined(value);
|
|
175
|
+
}
|
|
108
176
|
export {
|
|
109
177
|
StackHandler as default
|
|
110
178
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/stack-handler.tsx"],"sourcesContent":["import { getRelativePart } from \"@stackframe/stack-shared/dist/utils/urls\";\nimport { RedirectType, notFound, redirect } from 'next/navigation';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/stack-handler.tsx"],"sourcesContent":["import { getRelativePart } from \"@stackframe/stack-shared/dist/utils/urls\";\nimport { RedirectType, notFound, redirect } from 'next/navigation';\nimport { SignIn, SignUp, StackServerApp } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { HandlerUrls } from \"../lib/stack-app\";\nimport { AccountSettings } from \"./account-settings\";\nimport { EmailVerification } from \"./email-verification\";\nimport { ErrorPage } from \"./error-page\";\nimport { ForgotPassword } from \"./forgot-password\";\nimport { MagicLinkCallback } from \"./magic-link-callback\";\nimport { OAuthCallback } from \"./oauth-callback\";\nimport { PasswordReset } from \"./password-reset\";\nimport { SignOut } from \"./sign-out\";\nimport { TeamInvitation } from \"./team-invitation\";\nimport { FilterUndefined, filterUndefined } from \"@stackframe/stack-shared/dist/utils/objects\";\n\ntype Components = {\n SignIn: typeof SignIn,\n SignUp: typeof SignUp,\n EmailVerification: typeof EmailVerification,\n PasswordReset: typeof PasswordReset,\n ForgotPassword: typeof ForgotPassword,\n SignOut: typeof SignOut,\n OAuthCallback: typeof OAuthCallback,\n MagicLinkCallback: typeof MagicLinkCallback,\n TeamInvitation: typeof TeamInvitation,\n ErrorPage: typeof ErrorPage,\n AccountSettings: typeof AccountSettings,\n};\n\n\nexport default async function StackHandler<HasTokenStore extends boolean>(props: {\n app: StackServerApp<HasTokenStore>,\n params?: { stack?: string[] },\n searchParams?: Record<string, string>,\n fullPage: boolean,\n componentProps?: {\n [K in keyof Components]?: Parameters<Components[K]>;\n },\n}) {\n if (!props.params?.stack) {\n return (\n <MessageCard title=\"Invalid Stack Handler Setup\" fullPage={props.fullPage}>\n <p>Can't use Stack handler at this location. Make sure that the file is in a folder called [...stack].</p>\n </MessageCard>\n );\n }\n\n function redirectIfNotHandler(name: keyof HandlerUrls) {\n const url = props.app.urls[name];\n const handlerUrl = props.app.urls.handler;\n\n if (url !== handlerUrl && url.startsWith(handlerUrl + \"/\")) {\n // don't redirect if the url is a handler url\n return;\n }\n\n const urlObj = new URL(url, \"http://example.com\");\n for (const [key, value] of Object.entries(props.searchParams || {})) {\n urlObj.searchParams.set(key, value);\n }\n\n redirect(getRelativePart(urlObj), RedirectType.replace);\n };\n\n const availablePaths = {\n signIn: 'sign-in',\n signUp: 'sign-up',\n emailVerification: 'email-verification',\n passwordReset: 'password-reset',\n forgotPassword: 'forgot-password',\n signOut: 'sign-out',\n oauthCallback: 'oauth-callback',\n magicLinkCallback: 'magic-link-callback',\n teamInvitation: 'team-invitation',\n error: 'error',\n };\n\n const path = props.params.stack.join('/');\n\n if (path.startsWith('account-settings')) {\n return <AccountSettings\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.AccountSettings)}\n />;\n }\n\n switch (path) {\n case availablePaths.signIn: {\n redirectIfNotHandler('signIn');\n return <SignIn\n fullPage={props.fullPage}\n automaticRedirect\n {...filterUndefinedINU(props.componentProps?.SignIn)}\n />;\n }\n case availablePaths.signUp: {\n redirectIfNotHandler('signUp');\n return <SignUp\n fullPage={props.fullPage}\n automaticRedirect\n {...filterUndefinedINU(props.componentProps?.SignUp)}\n />;\n }\n case availablePaths.emailVerification: {\n redirectIfNotHandler('emailVerification');\n return <EmailVerification\n searchParams={props.searchParams}\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.EmailVerification)}\n />;\n }\n case availablePaths.passwordReset: {\n redirectIfNotHandler('passwordReset');\n return <PasswordReset\n searchParams={props.searchParams || {}}\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.PasswordReset)}\n />;\n }\n case availablePaths.forgotPassword: {\n redirectIfNotHandler('forgotPassword');\n return <ForgotPassword\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.ForgotPassword)}\n />;\n }\n case availablePaths.signOut: {\n redirectIfNotHandler('signOut');\n return <SignOut\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.SignOut)}\n />;\n }\n case availablePaths.oauthCallback: {\n redirectIfNotHandler('oauthCallback');\n return <OAuthCallback\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.OAuthCallback)}\n />;\n }\n case availablePaths.magicLinkCallback: {\n redirectIfNotHandler('magicLinkCallback');\n return <MagicLinkCallback\n searchParams={props.searchParams || {}}\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.MagicLinkCallback)}\n />;\n }\n case availablePaths.teamInvitation: {\n redirectIfNotHandler('teamInvitation');\n return <TeamInvitation\n searchParams={props.searchParams || {}}\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.TeamInvitation)}\n />;\n }\n case availablePaths.error: {\n return <ErrorPage\n searchParams={props.searchParams || {}}\n fullPage={props.fullPage}\n {...filterUndefinedINU(props.componentProps?.ErrorPage)}\n />;\n }\n default: {\n for (const [key, value] of Object.entries(availablePaths)) {\n if (path === value.replaceAll('-', '')) {\n redirect(`${props.app.urls.handler}/${value}`, RedirectType.replace);\n }\n }\n return notFound();\n }\n }\n}\n\n\nfunction filterUndefinedINU<T extends {}>(value: T | undefined): FilterUndefined<T> | undefined {\n return value === undefined ? value : filterUndefined(value);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -6,12 +6,12 @@ import { yupResolver } from "@hookform/resolvers/yup";
|
|
|
6
6
|
import { yupObject, yupString } from "@stackframe/stack-shared/dist/schema-fields";
|
|
7
7
|
import { runAsynchronously } from "@stackframe/stack-shared/dist/utils/promises";
|
|
8
8
|
import { Button, Input, Label, Typography } from "@stackframe/stack-ui";
|
|
9
|
+
import { useRouter } from "next/navigation";
|
|
9
10
|
import { useState } from "react";
|
|
10
11
|
import { useForm } from "react-hook-form";
|
|
11
12
|
import { MessageCard, useStackApp, useUser } from "..";
|
|
12
13
|
import { FormWarningText } from "../components/elements/form-warning";
|
|
13
14
|
import { MaybeFullPage } from "../components/elements/maybe-full-page";
|
|
14
|
-
import { useRouter } from "next/navigation";
|
|
15
15
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
16
|
var schema = yupObject({
|
|
17
17
|
displayName: yupString().required("Please enter a team name")
|
|
@@ -46,12 +46,11 @@ function TeamCreation(props) {
|
|
|
46
46
|
onSubmit: (e) => runAsynchronously(handleSubmit(onSubmit)(e)),
|
|
47
47
|
noValidate: true,
|
|
48
48
|
children: [
|
|
49
|
-
/* @__PURE__ */ jsx(Label, { htmlFor: "
|
|
49
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: "display-name", className: "mb-1", children: "Display name" }),
|
|
50
50
|
/* @__PURE__ */ jsx(
|
|
51
51
|
Input,
|
|
52
52
|
{
|
|
53
|
-
id: "
|
|
54
|
-
type: "email",
|
|
53
|
+
id: "display-name",
|
|
55
54
|
...register("displayName")
|
|
56
55
|
}
|
|
57
56
|
),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/team-creation.tsx"],"sourcesContent":["'use client';\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input, Label, Typography } from \"@stackframe/stack-ui\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { MessageCard, useStackApp, useUser } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/team-creation.tsx"],"sourcesContent":["'use client';\n\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { yupObject, yupString } from \"@stackframe/stack-shared/dist/schema-fields\";\nimport { runAsynchronously } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport { Button, Input, Label, Typography } from \"@stackframe/stack-ui\";\nimport { useRouter } from \"next/navigation\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport * as yup from \"yup\";\nimport { MessageCard, useStackApp, useUser } from \"..\";\nimport { FormWarningText } from \"../components/elements/form-warning\";\nimport { MaybeFullPage } from \"../components/elements/maybe-full-page\";\n\nconst schema = yupObject({\n displayName: yupString().required('Please enter a team name'),\n});\n\nexport function TeamCreation(props: { fullPage?: boolean }) {\n const { register, handleSubmit, formState: { errors } } = useForm({\n resolver: yupResolver(schema)\n });\n const app = useStackApp();\n const project = app.useProject();\n const user = useUser({ or: 'redirect' });\n const [loading, setLoading] = useState(false);\n const router = useRouter();\n\n if (!project.config.clientTeamCreationEnabled) {\n return <MessageCard title='Team creation is not enabled' />;\n }\n\n const onSubmit = async (data: yup.InferType<typeof schema>) => {\n setLoading(true);\n\n try {\n const team = await user.createTeam({ displayName: data.displayName });\n router.push(`${app.urls.handler}/team-settings/${team.id}`);\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <MaybeFullPage fullPage={!!props.fullPage}>\n <div className='stack-scope flex flex-col items-stretch' style={{ width: '380px', padding: props.fullPage ? '1rem' : 0 }}>\n <div className=\"text-center mb-6\">\n <Typography type='h2'>\n Create a Team\n </Typography>\n </div>\n <form\n className=\"flex flex-col items-stretch stack-scope\"\n onSubmit={e => runAsynchronously(handleSubmit(onSubmit)(e))}\n noValidate\n >\n <Label htmlFor=\"display-name\" className=\"mb-1\">Display name</Label>\n <Input\n id=\"display-name\"\n {...register('displayName')}\n />\n <FormWarningText text={errors.displayName?.message?.toString()} />\n\n <Button type=\"submit\" className=\"mt-6\" loading={loading}>\n Create\n </Button>\n </form>\n </div>\n </MaybeFullPage>\n );\n}\n"],"mappings":";;;AAEA,SAAS,mBAAmB;AAC5B,SAAS,WAAW,iBAAiB;AACrC,SAAS,yBAAyB;AAClC,SAAS,QAAQ,OAAO,OAAO,kBAAkB;AACjD,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,eAAe;AAExB,SAAS,aAAa,aAAa,eAAe;AAClD,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAiBnB,cAsBH,YAtBG;AAfX,IAAM,SAAS,UAAU;AAAA,EACvB,aAAa,UAAU,EAAE,SAAS,0BAA0B;AAC9D,CAAC;AAEM,SAAS,aAAa,OAA+B;AAC1D,QAAM,EAAE,UAAU,cAAc,WAAW,EAAE,OAAO,EAAE,IAAI,QAAQ;AAAA,IAChE,UAAU,YAAY,MAAM;AAAA,EAC9B,CAAC;AACD,QAAM,MAAM,YAAY;AACxB,QAAM,UAAU,IAAI,WAAW;AAC/B,QAAM,OAAO,QAAQ,EAAE,IAAI,WAAW,CAAC;AACvC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,SAAS,UAAU;AAEzB,MAAI,CAAC,QAAQ,OAAO,2BAA2B;AAC7C,WAAO,oBAAC,eAAY,OAAM,gCAA+B;AAAA,EAC3D;AAEA,QAAM,WAAW,OAAO,SAAuC;AAC7D,eAAW,IAAI;AAEf,QAAI;AACF,YAAM,OAAO,MAAM,KAAK,WAAW,EAAE,aAAa,KAAK,YAAY,CAAC;AACpE,aAAO,KAAK,GAAG,IAAI,KAAK,OAAO,kBAAkB,KAAK,EAAE,EAAE;AAAA,IAC5D,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAEA,SACE,oBAAC,iBAAc,UAAU,CAAC,CAAC,MAAM,UAC/B,+BAAC,SAAI,WAAU,2CAA0C,OAAO,EAAE,OAAO,SAAS,SAAS,MAAM,WAAW,SAAS,EAAE,GACrH;AAAA,wBAAC,SAAI,WAAU,oBACb,8BAAC,cAAW,MAAK,MAAK,2BAEtB,GACF;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,UAAU,OAAK,kBAAkB,aAAa,QAAQ,EAAE,CAAC,CAAC;AAAA,QAC1D,YAAU;AAAA,QAEV;AAAA,8BAAC,SAAM,SAAQ,gBAAe,WAAU,QAAO,0BAAY;AAAA,UAC3D;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACF,GAAG,SAAS,aAAa;AAAA;AAAA,UAC5B;AAAA,UACA,oBAAC,mBAAgB,MAAM,OAAO,aAAa,SAAS,SAAS,GAAG;AAAA,UAEhE,oBAAC,UAAO,MAAK,UAAS,WAAU,QAAO,SAAkB,oBAEzD;AAAA;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -24,7 +24,7 @@ import { constructRedirectUrl } from "../utils/url";
|
|
|
24
24
|
import { addNewOAuthProviderOrScope, callOAuthCallback, signInWithOAuth } from "./auth";
|
|
25
25
|
import { deleteCookie, getCookie, setOrDeleteCookie } from "./cookie";
|
|
26
26
|
var NextNavigation = scrambleDuringCompileTime(NextNavigationUnscrambled);
|
|
27
|
-
var clientVersion = "js @stackframe/stack@2.5.
|
|
27
|
+
var clientVersion = "js @stackframe/stack@2.5.31";
|
|
28
28
|
function getUrls(partial) {
|
|
29
29
|
const handler = partial.handler ?? "/handler";
|
|
30
30
|
const home = partial.home ?? "/";
|
|
@@ -1676,7 +1676,8 @@ var _StackAdminAppImpl = class extends _StackServerAppImpl {
|
|
|
1676
1676
|
type: "standard",
|
|
1677
1677
|
clientId: p.client_id ?? throwErr("Client ID is missing"),
|
|
1678
1678
|
clientSecret: p.client_secret ?? throwErr("Client secret is missing"),
|
|
1679
|
-
facebookConfigId: p.facebook_config_id
|
|
1679
|
+
facebookConfigId: p.facebook_config_id,
|
|
1680
|
+
microsoftTenantId: p.microsoft_tenant_id
|
|
1680
1681
|
}),
|
|
1681
1682
|
emailConfig: data.config.email_config.type === "shared" ? {
|
|
1682
1683
|
type: "shared"
|
|
@@ -1892,7 +1893,8 @@ function adminProjectUpdateOptionsToCrud(options) {
|
|
|
1892
1893
|
...p.type === "standard" && {
|
|
1893
1894
|
client_id: p.clientId,
|
|
1894
1895
|
client_secret: p.clientSecret,
|
|
1895
|
-
facebook_config_id: p.facebookConfigId
|
|
1896
|
+
facebook_config_id: p.facebookConfigId,
|
|
1897
|
+
microsoft_tenant_id: p.microsoftTenantId
|
|
1896
1898
|
}
|
|
1897
1899
|
})),
|
|
1898
1900
|
email_config: options.config?.emailConfig && (options.config.emailConfig.type === "shared" ? {
|