@stackframe/stack 2.5.0 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/components/selected-team-switcher.js +8 -4
- package/dist/components/selected-team-switcher.js.map +1 -1
- package/dist/components-page/email-verification.js +3 -3
- package/dist/components-page/email-verification.js.map +1 -1
- package/dist/components-page/magic-link-callback.js +3 -3
- package/dist/components-page/magic-link-callback.js.map +1 -1
- package/dist/components-page/password-reset.js +3 -3
- package/dist/components-page/password-reset.js.map +1 -1
- package/dist/esm/components/selected-team-switcher.js +8 -4
- package/dist/esm/components/selected-team-switcher.js.map +1 -1
- package/dist/esm/components-page/email-verification.js +3 -3
- package/dist/esm/components-page/email-verification.js.map +1 -1
- package/dist/esm/components-page/magic-link-callback.js +3 -3
- package/dist/esm/components-page/magic-link-callback.js.map +1 -1
- package/dist/esm/components-page/password-reset.js +3 -3
- package/dist/esm/components-page/password-reset.js.map +1 -1
- package/dist/esm/lib/stack-app.js +3 -1
- package/dist/esm/lib/stack-app.js.map +1 -1
- package/dist/lib/stack-app.d.mts +5 -4
- package/dist/lib/stack-app.d.ts +5 -4
- package/dist/lib/stack-app.js +3 -1
- package/dist/lib/stack-app.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @stackframe/stack
|
|
2
2
|
|
|
3
|
+
## 2.5.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Team profile pictures
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @stackframe/stack-shared@2.5.2
|
|
10
|
+
- @stackframe/stack-ui@2.5.2
|
|
11
|
+
- @stackframe/stack-sc@2.5.2
|
|
12
|
+
|
|
13
|
+
## 2.5.1
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- New backend endpoints
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
- @stackframe/stack-shared@2.5.1
|
|
20
|
+
- @stackframe/stack-ui@2.5.1
|
|
21
|
+
- @stackframe/stack-sc@2.5.1
|
|
22
|
+
|
|
3
23
|
## 2.5.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
|
@@ -25,14 +25,18 @@ __export(selected_team_switcher_exports, {
|
|
|
25
25
|
SelectedTeamSwitcher: () => SelectedTeamSwitcher
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(selected_team_switcher_exports);
|
|
28
|
-
var import__ = require("..");
|
|
29
28
|
var import_promises = require("@stackframe/stack-shared/dist/utils/promises");
|
|
30
|
-
var import_navigation = require("next/navigation");
|
|
31
29
|
var import_stack_ui = require("@stackframe/stack-ui");
|
|
30
|
+
var import_navigation = require("next/navigation");
|
|
32
31
|
var import_react = require("react");
|
|
32
|
+
var import__ = require("..");
|
|
33
33
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
34
34
|
function TeamIcon(props) {
|
|
35
|
-
|
|
35
|
+
if (props.team.profileImageUrl) {
|
|
36
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "w-6 h-6 mr-2 rounded bg-gray-200 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { src: props.team.profileImageUrl, alt: props.team.displayName, className: "w-6 h-6" }) });
|
|
37
|
+
} else {
|
|
38
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex items-center justify-center w-6 h-6 mr-2 rounded bg-gray-200", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { children: props.team.displayName.slice(0, 1).toUpperCase() }) });
|
|
39
|
+
}
|
|
36
40
|
}
|
|
37
41
|
function SelectedTeamSwitcher(props) {
|
|
38
42
|
const user = (0, import__.useUser)();
|
|
@@ -67,7 +71,7 @@ function SelectedTeamSwitcher(props) {
|
|
|
67
71
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.SelectTrigger, { className: "stack-scope", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.SelectValue, { placeholder: "Select team" }) }),
|
|
68
72
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stack_ui.SelectContent, { className: "stack-scope", children: [
|
|
69
73
|
teams && teams.map((team) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.SelectItem, { value: team.id, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center", children: [
|
|
70
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TeamIcon, {
|
|
74
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TeamIcon, { team }),
|
|
71
75
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.Typography, { children: team.displayName })
|
|
72
76
|
] }) }, team.id)),
|
|
73
77
|
teams?.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.SelectGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stack_ui.SelectLabel, { children: "No teams" }) })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/selected-team-switcher.tsx"],"sourcesContent":["'use client';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/components/selected-team-switcher.tsx"],"sourcesContent":["'use client';\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectTrigger,\n SelectValue,\n Typography\n} from \"@stackframe/stack-ui\";\nimport { useRouter } from \"next/navigation\";\nimport { useEffect, useMemo } from \"react\";\nimport { Team, useUser } from \"..\";\n\ntype SelectedTeamSwitcherProps = {\n urlMap?: (team: Team) => string,\n selectedTeam?: Team,\n noUpdateSelectedTeam?: boolean,\n};\n\nfunction TeamIcon(props: { team: Team }) {\n if (props.team.profileImageUrl) {\n return (\n <div className=\"w-6 h-6 mr-2 rounded bg-gray-200 overflow-hidden\">\n <img src={props.team.profileImageUrl} alt={props.team.displayName} className=\"w-6 h-6\" />\n </div>\n );\n } else {\n return (\n <div className=\"flex items-center justify-center w-6 h-6 mr-2 rounded bg-gray-200\">\n <Typography>{props.team.displayName.slice(0, 1).toUpperCase()}</Typography>\n </div>\n );\n }\n}\n\nexport function SelectedTeamSwitcher(props: SelectedTeamSwitcherProps) {\n const user = useUser();\n const router = useRouter();\n const selectedTeam = user?.selectedTeam || props.selectedTeam;\n const rawTeams = user?.useTeams();\n const teams = useMemo(() => rawTeams?.sort((a, b) => b.id === selectedTeam?.id ? 1 : -1), [rawTeams, selectedTeam]);\n\n useEffect(() => {\n if (!props.noUpdateSelectedTeam && props.selectedTeam) {\n runAsynchronouslyWithAlert(user?.setSelectedTeam(props.selectedTeam));\n }\n }, [props.noUpdateSelectedTeam, props.selectedTeam]);\n\n return (\n <Select \n value={selectedTeam?.id}\n onValueChange={(value) => {\n runAsynchronouslyWithAlert(async () => {\n const team = teams?.find(team => team.id === value);\n if (!team) {\n throw new Error('Team not found, this should not happen');\n }\n\n if (!props.noUpdateSelectedTeam) {\n await user?.setSelectedTeam(team);\n }\n if (props.urlMap) {\n router.push(props.urlMap(team));\n }\n });\n }}\n >\n <SelectTrigger className=\"stack-scope\">\n <SelectValue placeholder=\"Select team\"/>\n </SelectTrigger>\n <SelectContent className=\"stack-scope\">\n {teams && teams.map(team => (\n <SelectItem value={team.id} key={team.id}>\n <div className=\"flex items-center\">\n <TeamIcon team={team} />\n <Typography>{team.displayName}</Typography>\n </div>\n </SelectItem>\n ))}\n\n {teams?.length === 0 && (\n <SelectGroup>\n <SelectLabel>No teams</SelectLabel>\n </SelectGroup>\n )}\n </SelectContent>\n </Select>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAA2C;AAC3C,sBASO;AACP,wBAA0B;AAC1B,mBAAmC;AACnC,eAA8B;AAYtB;AAJR,SAAS,SAAS,OAAuB;AACvC,MAAI,MAAM,KAAK,iBAAiB;AAC9B,WACE,4CAAC,SAAI,WAAU,oDACb,sDAAC,SAAI,KAAK,MAAM,KAAK,iBAAiB,KAAK,MAAM,KAAK,aAAa,WAAU,WAAU,GACzF;AAAA,EAEJ,OAAO;AACL,WACE,4CAAC,SAAI,WAAU,qEACb,sDAAC,8BAAY,gBAAM,KAAK,YAAY,MAAM,GAAG,CAAC,EAAE,YAAY,GAAE,GAChE;AAAA,EAEJ;AACF;AAEO,SAAS,qBAAqB,OAAkC;AACrE,QAAM,WAAO,kBAAQ;AACrB,QAAM,aAAS,6BAAU;AACzB,QAAM,eAAe,MAAM,gBAAgB,MAAM;AACjD,QAAM,WAAW,MAAM,SAAS;AAChC,QAAM,YAAQ,sBAAQ,MAAM,UAAU,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,cAAc,KAAK,IAAI,EAAE,GAAG,CAAC,UAAU,YAAY,CAAC;AAElH,8BAAU,MAAM;AACd,QAAI,CAAC,MAAM,wBAAwB,MAAM,cAAc;AACrD,sDAA2B,MAAM,gBAAgB,MAAM,YAAY,CAAC;AAAA,IACtE;AAAA,EACF,GAAG,CAAC,MAAM,sBAAsB,MAAM,YAAY,CAAC;AAEnD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,cAAc;AAAA,MACrB,eAAe,CAAC,UAAU;AACxB,wDAA2B,YAAY;AACrC,gBAAM,OAAO,OAAO,KAAK,CAAAA,UAAQA,MAAK,OAAO,KAAK;AAClD,cAAI,CAAC,MAAM;AACT,kBAAM,IAAI,MAAM,wCAAwC;AAAA,UAC1D;AAEA,cAAI,CAAC,MAAM,sBAAsB;AAC/B,kBAAM,MAAM,gBAAgB,IAAI;AAAA,UAClC;AACA,cAAI,MAAM,QAAQ;AAChB,mBAAO,KAAK,MAAM,OAAO,IAAI,CAAC;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA;AAAA,oDAAC,iCAAc,WAAU,eACvB,sDAAC,+BAAY,aAAY,eAAa,GACxC;AAAA,QACA,6CAAC,iCAAc,WAAU,eACtB;AAAA,mBAAS,MAAM,IAAI,UAClB,4CAAC,8BAAW,OAAO,KAAK,IACtB,uDAAC,SAAI,WAAU,qBACb;AAAA,wDAAC,YAAS,MAAY;AAAA,YACtB,4CAAC,8BAAY,eAAK,aAAY;AAAA,aAChC,KAJ+B,KAAK,EAKtC,CACD;AAAA,UAEA,OAAO,WAAW,KACjB,4CAAC,+BACC,sDAAC,+BAAY,sBAAQ,GACvB;AAAA,WAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;","names":["team"]}
|
|
@@ -44,11 +44,11 @@ function EmailVerification({
|
|
|
44
44
|
return invalidJsx;
|
|
45
45
|
}
|
|
46
46
|
const error = (0, import_react.use)(stackApp.verifyEmail(code));
|
|
47
|
-
if (error instanceof import_stack_shared.KnownErrors.
|
|
47
|
+
if (error instanceof import_stack_shared.KnownErrors.VerificationCodeNotFound) {
|
|
48
48
|
return invalidJsx;
|
|
49
|
-
} else if (error instanceof import_stack_shared.KnownErrors.
|
|
49
|
+
} else if (error instanceof import_stack_shared.KnownErrors.VerificationCodeExpired) {
|
|
50
50
|
return expiredJsx;
|
|
51
|
-
} else if (error instanceof import_stack_shared.KnownErrors.
|
|
51
|
+
} else if (error instanceof import_stack_shared.KnownErrors.VerificationCodeAlreadyUsed) {
|
|
52
52
|
} else if (error) {
|
|
53
53
|
throw error;
|
|
54
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nexport function EmailVerification({ \n searchParams: {\n code = \"\",\n } = {},\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 Verification Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Verification Link\" fullPage={fullPage}>\n <p>Your email verification link has expired. Please request a new verification link from your account settings.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.verifyEmail(code));\n\n if (error instanceof KnownErrors.
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nexport function EmailVerification({ \n searchParams: {\n code = \"\",\n } = {},\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 Verification Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Verification Link\" fullPage={fullPage}>\n <p>Your email verification link has expired. Please request a new verification link from your account settings.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.verifyEmail(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 // everything fine, continue\n } else if (error) {\n throw error;\n }\n\n return <PredefinedMessageCard type='emailVerified' fullPage={fullPage} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAoB;AACpB,eAA4B;AAC5B,0BAA4B;AAC5B,qCAAsC;AACtC,0BAA4B;AAetB;AAbC,SAAS,kBAAkB;AAAA,EAChC,cAAc;AAAA,IACZ,OAAO;AAAA,EACT,IAAI,CAAC;AAAA,EACL,WAAW;AACb,GAGG;AACD,QAAM,eAAW,sBAAY;AAE7B,QAAM,aACJ,4CAAC,mCAAY,OAAM,6BAA4B,UAC7C,sDAAC,OAAE,gHAAkG,GACvG;AAGF,QAAM,aACJ,4CAAC,mCAAY,OAAM,6BAA4B,UAC7C,sDAAC,OAAE,0HAA4G,GACjH;AAGF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,YAAQ,kBAAI,SAAS,YAAY,IAAI,CAAC;AAE5C,MAAI,iBAAiB,gCAAY,0BAA0B;AACzD,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,yBAAyB;AAC/D,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,6BAA6B;AAAA,EAErE,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,4CAAC,wDAAsB,MAAK,iBAAgB,UAAoB;AACzE;","names":[]}
|
|
@@ -50,11 +50,11 @@ function MagicLinkCallback({
|
|
|
50
50
|
return invalidJsx;
|
|
51
51
|
}
|
|
52
52
|
const error = (0, import_react.use)(stackApp.signInWithMagicLink(code));
|
|
53
|
-
if (error instanceof import_stack_shared.KnownErrors.
|
|
53
|
+
if (error instanceof import_stack_shared.KnownErrors.VerificationCodeNotFound) {
|
|
54
54
|
return invalidJsx;
|
|
55
|
-
} else if (error instanceof import_stack_shared.KnownErrors.
|
|
55
|
+
} else if (error instanceof import_stack_shared.KnownErrors.VerificationCodeExpired) {
|
|
56
56
|
return expiredJsx;
|
|
57
|
-
} else if (error instanceof import_stack_shared.KnownErrors.
|
|
57
|
+
} else if (error instanceof import_stack_shared.KnownErrors.VerificationCodeAlreadyUsed) {
|
|
58
58
|
return alreadyUsedJsx;
|
|
59
59
|
} else if (error) {
|
|
60
60
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/magic-link-callback.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp, useUser } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { neverResolve } from \"@stackframe/stack-shared/dist/utils/promises\";\n\nexport function MagicLinkCallback({ \n searchParams: {\n code = \"\",\n } = {},\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Magic Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Magic Link\" fullPage={fullPage}>\n <p>Your magic link has expired. Please request a new magic link if you need to sign-in.</p>\n </MessageCard>\n );\n\n const alreadyUsedJsx = (\n <MessageCard title=\"Magic Link Already Used\" fullPage={fullPage}>\n <p>The magic link has already been used. The link can only be used once. Please request a new magic link if you need to sign-in again.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.signInWithMagicLink(code));\n\n if (error instanceof KnownErrors.
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/magic-link-callback.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp, useUser } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { neverResolve } from \"@stackframe/stack-shared/dist/utils/promises\";\n\nexport function MagicLinkCallback({ \n searchParams: {\n code = \"\",\n } = {},\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Magic Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Magic Link\" fullPage={fullPage}>\n <p>Your magic link has expired. Please request a new magic link if you need to sign-in.</p>\n </MessageCard>\n );\n\n const alreadyUsedJsx = (\n <MessageCard title=\"Magic Link Already Used\" fullPage={fullPage}>\n <p>The magic link has already been used. The link can only be used once. Please request a new magic link if you need to sign-in again.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.signInWithMagicLink(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 alreadyUsedJsx;\n } else if (error) {\n throw error;\n }\n\n use(neverResolve());\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAoB;AACpB,eAAqC;AACrC,0BAA4B;AAC5B,qCAAsC;AACtC,0BAA4B;AAC5B,sBAA6B;AAelB;AAbJ,SAAS,kBAAkB;AAAA,EAChC,cAAc;AAAA,IACZ,OAAO;AAAA,EACT,IAAI,CAAC;AAAA,EACL,WAAW;AACb,GAGG;AACD,QAAM,eAAW,sBAAY;AAC7B,QAAM,WAAO,kBAAQ;AAErB,MAAI,MAAM;AACR,WAAO,4CAAC,wDAAsB,MAAK,YAAW,UAAoB;AAAA,EACpE;AAEA,QAAM,aACJ,4CAAC,mCAAY,OAAM,sBAAqB,UACtC,sDAAC,OAAE,gHAAkG,GACvG;AAGF,QAAM,aACJ,4CAAC,mCAAY,OAAM,sBAAqB,UACtC,sDAAC,OAAE,kGAAoF,GACzF;AAGF,QAAM,iBACJ,4CAAC,mCAAY,OAAM,2BAA0B,UAC3C,sDAAC,OAAE,iJAAmI,GACxI;AAGF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,YAAQ,kBAAI,SAAS,oBAAoB,IAAI,CAAC;AAEpD,MAAI,iBAAiB,gCAAY,0BAA0B;AACzD,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,yBAAyB;AAC/D,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,6BAA6B;AACnE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,4BAAI,8BAAa,CAAC;AACpB;","names":[]}
|
|
@@ -59,11 +59,11 @@ function PasswordReset({
|
|
|
59
59
|
return invalidJsx;
|
|
60
60
|
}
|
|
61
61
|
const error = (0, import_react.use)(cachedVerifyPasswordResetCode(stackApp, code));
|
|
62
|
-
if (error instanceof import_stack_shared.KnownErrors.
|
|
62
|
+
if (error instanceof import_stack_shared.KnownErrors.VerificationCodeNotFound) {
|
|
63
63
|
return invalidJsx;
|
|
64
|
-
} else if (error instanceof import_stack_shared.KnownErrors.
|
|
64
|
+
} else if (error instanceof import_stack_shared.KnownErrors.VerificationCodeExpired) {
|
|
65
65
|
return expiredJsx;
|
|
66
|
-
} else if (error instanceof import_stack_shared.KnownErrors.
|
|
66
|
+
} else if (error instanceof import_stack_shared.KnownErrors.VerificationCodeAlreadyUsed) {
|
|
67
67
|
return usedJsx;
|
|
68
68
|
} else if (error) {
|
|
69
69
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { use } from \"react\";\nimport PasswordResetForm from \"../components/password-reset-form\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { Typography } from \"@stackframe/stack-ui\";\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 = use(cachedVerifyPasswordResetCode(stackApp, code));\n \n if (error instanceof KnownErrors.
|
|
1
|
+
{"version":3,"sources":["../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { use } from \"react\";\nimport PasswordResetForm from \"../components/password-reset-form\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { Typography } from \"@stackframe/stack-ui\";\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 = 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAA4B;AAC5B,eAA4C;AAC5C,mBAAoB;AACpB,iCAA8B;AAC9B,oBAA8B;AAC9B,0BAA4B;AAC5B,sBAA2B;AAiBrB;AAfN,IAAM,oCAAgC,6BAAc,OAAO,UAAgC,SAAiB;AAC1G,SAAO,MAAM,SAAS,wBAAwB,IAAI;AACpD,CAAC;AAEM,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,WAAW;AACb,GAGG;AACD,QAAM,eAAW,sBAAY;AAE7B,QAAM,aACJ,4CAAC,mCAAY,OAAM,+BAA8B,UAC/C,sDAAC,8BAAW,8EAAgE,GAC9E;AAGF,QAAM,aACJ,4CAAC,mCAAY,OAAM,+BAA8B,UAC/C,sDAAC,8BAAW,iHAAmG,GACjH;AAGF,QAAM,UACJ,4CAAC,mCAAY,OAAM,4BAA2B,UAC5C,sDAAC,8BAAW,qKAAuJ,GACrK;AAGF,QAAM,OAAO,cAAc;AAC3B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,YAAQ,kBAAI,8BAA8B,UAAU,IAAI,CAAC;AAE/D,MAAI,iBAAiB,gCAAY,0BAA0B;AACzD,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,yBAAyB;AAC/D,WAAO;AAAA,EACT,WAAW,iBAAiB,gCAAY,6BAA6B;AACnE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,4CAAC,2BAAAA,SAAA,EAAkB,MAAY,UAAoB;AAC5D;","names":["PasswordResetForm"]}
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
4
|
// src/components/selected-team-switcher.tsx
|
|
5
|
-
import { useUser } from "..";
|
|
6
5
|
import { runAsynchronouslyWithAlert } from "@stackframe/stack-shared/dist/utils/promises";
|
|
7
|
-
import { useRouter } from "next/navigation";
|
|
8
6
|
import {
|
|
9
7
|
Select,
|
|
10
8
|
SelectContent,
|
|
@@ -15,10 +13,16 @@ import {
|
|
|
15
13
|
SelectValue,
|
|
16
14
|
Typography
|
|
17
15
|
} from "@stackframe/stack-ui";
|
|
16
|
+
import { useRouter } from "next/navigation";
|
|
18
17
|
import { useEffect, useMemo } from "react";
|
|
18
|
+
import { useUser } from "..";
|
|
19
19
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
20
20
|
function TeamIcon(props) {
|
|
21
|
-
|
|
21
|
+
if (props.team.profileImageUrl) {
|
|
22
|
+
return /* @__PURE__ */ jsx("div", { className: "w-6 h-6 mr-2 rounded bg-gray-200 overflow-hidden", children: /* @__PURE__ */ jsx("img", { src: props.team.profileImageUrl, alt: props.team.displayName, className: "w-6 h-6" }) });
|
|
23
|
+
} else {
|
|
24
|
+
return /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-6 h-6 mr-2 rounded bg-gray-200", children: /* @__PURE__ */ jsx(Typography, { children: props.team.displayName.slice(0, 1).toUpperCase() }) });
|
|
25
|
+
}
|
|
22
26
|
}
|
|
23
27
|
function SelectedTeamSwitcher(props) {
|
|
24
28
|
const user = useUser();
|
|
@@ -53,7 +57,7 @@ function SelectedTeamSwitcher(props) {
|
|
|
53
57
|
/* @__PURE__ */ jsx(SelectTrigger, { className: "stack-scope", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select team" }) }),
|
|
54
58
|
/* @__PURE__ */ jsxs(SelectContent, { className: "stack-scope", children: [
|
|
55
59
|
teams && teams.map((team) => /* @__PURE__ */ jsx(SelectItem, { value: team.id, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
|
|
56
|
-
/* @__PURE__ */ jsx(TeamIcon, {
|
|
60
|
+
/* @__PURE__ */ jsx(TeamIcon, { team }),
|
|
57
61
|
/* @__PURE__ */ jsx(Typography, { children: team.displayName })
|
|
58
62
|
] }) }, team.id)),
|
|
59
63
|
teams?.length === 0 && /* @__PURE__ */ jsx(SelectGroup, { children: /* @__PURE__ */ jsx(SelectLabel, { children: "No teams" }) })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/selected-team-switcher.tsx"],"sourcesContent":["'use client';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/selected-team-switcher.tsx"],"sourcesContent":["'use client';\nimport { runAsynchronouslyWithAlert } from \"@stackframe/stack-shared/dist/utils/promises\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectTrigger,\n SelectValue,\n Typography\n} from \"@stackframe/stack-ui\";\nimport { useRouter } from \"next/navigation\";\nimport { useEffect, useMemo } from \"react\";\nimport { Team, useUser } from \"..\";\n\ntype SelectedTeamSwitcherProps = {\n urlMap?: (team: Team) => string,\n selectedTeam?: Team,\n noUpdateSelectedTeam?: boolean,\n};\n\nfunction TeamIcon(props: { team: Team }) {\n if (props.team.profileImageUrl) {\n return (\n <div className=\"w-6 h-6 mr-2 rounded bg-gray-200 overflow-hidden\">\n <img src={props.team.profileImageUrl} alt={props.team.displayName} className=\"w-6 h-6\" />\n </div>\n );\n } else {\n return (\n <div className=\"flex items-center justify-center w-6 h-6 mr-2 rounded bg-gray-200\">\n <Typography>{props.team.displayName.slice(0, 1).toUpperCase()}</Typography>\n </div>\n );\n }\n}\n\nexport function SelectedTeamSwitcher(props: SelectedTeamSwitcherProps) {\n const user = useUser();\n const router = useRouter();\n const selectedTeam = user?.selectedTeam || props.selectedTeam;\n const rawTeams = user?.useTeams();\n const teams = useMemo(() => rawTeams?.sort((a, b) => b.id === selectedTeam?.id ? 1 : -1), [rawTeams, selectedTeam]);\n\n useEffect(() => {\n if (!props.noUpdateSelectedTeam && props.selectedTeam) {\n runAsynchronouslyWithAlert(user?.setSelectedTeam(props.selectedTeam));\n }\n }, [props.noUpdateSelectedTeam, props.selectedTeam]);\n\n return (\n <Select \n value={selectedTeam?.id}\n onValueChange={(value) => {\n runAsynchronouslyWithAlert(async () => {\n const team = teams?.find(team => team.id === value);\n if (!team) {\n throw new Error('Team not found, this should not happen');\n }\n\n if (!props.noUpdateSelectedTeam) {\n await user?.setSelectedTeam(team);\n }\n if (props.urlMap) {\n router.push(props.urlMap(team));\n }\n });\n }}\n >\n <SelectTrigger className=\"stack-scope\">\n <SelectValue placeholder=\"Select team\"/>\n </SelectTrigger>\n <SelectContent className=\"stack-scope\">\n {teams && teams.map(team => (\n <SelectItem value={team.id} key={team.id}>\n <div className=\"flex items-center\">\n <TeamIcon team={team} />\n <Typography>{team.displayName}</Typography>\n </div>\n </SelectItem>\n ))}\n\n {teams?.length === 0 && (\n <SelectGroup>\n <SelectLabel>No teams</SelectLabel>\n </SelectGroup>\n )}\n </SelectContent>\n </Select>\n );\n}\n"],"mappings":";;;AACA,SAAS,kCAAkC;AAC3C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB;AAC1B,SAAS,WAAW,eAAe;AACnC,SAAe,eAAe;AAYtB,cAkDI,YAlDJ;AAJR,SAAS,SAAS,OAAuB;AACvC,MAAI,MAAM,KAAK,iBAAiB;AAC9B,WACE,oBAAC,SAAI,WAAU,oDACb,8BAAC,SAAI,KAAK,MAAM,KAAK,iBAAiB,KAAK,MAAM,KAAK,aAAa,WAAU,WAAU,GACzF;AAAA,EAEJ,OAAO;AACL,WACE,oBAAC,SAAI,WAAU,qEACb,8BAAC,cAAY,gBAAM,KAAK,YAAY,MAAM,GAAG,CAAC,EAAE,YAAY,GAAE,GAChE;AAAA,EAEJ;AACF;AAEO,SAAS,qBAAqB,OAAkC;AACrE,QAAM,OAAO,QAAQ;AACrB,QAAM,SAAS,UAAU;AACzB,QAAM,eAAe,MAAM,gBAAgB,MAAM;AACjD,QAAM,WAAW,MAAM,SAAS;AAChC,QAAM,QAAQ,QAAQ,MAAM,UAAU,KAAK,CAAC,GAAG,MAAM,EAAE,OAAO,cAAc,KAAK,IAAI,EAAE,GAAG,CAAC,UAAU,YAAY,CAAC;AAElH,YAAU,MAAM;AACd,QAAI,CAAC,MAAM,wBAAwB,MAAM,cAAc;AACrD,iCAA2B,MAAM,gBAAgB,MAAM,YAAY,CAAC;AAAA,IACtE;AAAA,EACF,GAAG,CAAC,MAAM,sBAAsB,MAAM,YAAY,CAAC;AAEnD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,cAAc;AAAA,MACrB,eAAe,CAAC,UAAU;AACxB,mCAA2B,YAAY;AACrC,gBAAM,OAAO,OAAO,KAAK,CAAAA,UAAQA,MAAK,OAAO,KAAK;AAClD,cAAI,CAAC,MAAM;AACT,kBAAM,IAAI,MAAM,wCAAwC;AAAA,UAC1D;AAEA,cAAI,CAAC,MAAM,sBAAsB;AAC/B,kBAAM,MAAM,gBAAgB,IAAI;AAAA,UAClC;AACA,cAAI,MAAM,QAAQ;AAChB,mBAAO,KAAK,MAAM,OAAO,IAAI,CAAC;AAAA,UAChC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA;AAAA,4BAAC,iBAAc,WAAU,eACvB,8BAAC,eAAY,aAAY,eAAa,GACxC;AAAA,QACA,qBAAC,iBAAc,WAAU,eACtB;AAAA,mBAAS,MAAM,IAAI,UAClB,oBAAC,cAAW,OAAO,KAAK,IACtB,+BAAC,SAAI,WAAU,qBACb;AAAA,gCAAC,YAAS,MAAY;AAAA,YACtB,oBAAC,cAAY,eAAK,aAAY;AAAA,aAChC,KAJ+B,KAAK,EAKtC,CACD;AAAA,UAEA,OAAO,WAAW,KACjB,oBAAC,eACC,8BAAC,eAAY,sBAAQ,GACvB;AAAA,WAEJ;AAAA;AAAA;AAAA,EACF;AAEJ;","names":["team"]}
|
|
@@ -21,11 +21,11 @@ function EmailVerification({
|
|
|
21
21
|
return invalidJsx;
|
|
22
22
|
}
|
|
23
23
|
const error = use(stackApp.verifyEmail(code));
|
|
24
|
-
if (error instanceof KnownErrors.
|
|
24
|
+
if (error instanceof KnownErrors.VerificationCodeNotFound) {
|
|
25
25
|
return invalidJsx;
|
|
26
|
-
} else if (error instanceof KnownErrors.
|
|
26
|
+
} else if (error instanceof KnownErrors.VerificationCodeExpired) {
|
|
27
27
|
return expiredJsx;
|
|
28
|
-
} else if (error instanceof KnownErrors.
|
|
28
|
+
} else if (error instanceof KnownErrors.VerificationCodeAlreadyUsed) {
|
|
29
29
|
} else if (error) {
|
|
30
30
|
throw error;
|
|
31
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nexport function EmailVerification({ \n searchParams: {\n code = \"\",\n } = {},\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 Verification Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Verification Link\" fullPage={fullPage}>\n <p>Your email verification link has expired. Please request a new verification link from your account settings.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.verifyEmail(code));\n\n if (error instanceof KnownErrors.
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/email-verification.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\n\nexport function EmailVerification({ \n searchParams: {\n code = \"\",\n } = {},\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 Verification Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Verification Link\" fullPage={fullPage}>\n <p>Your email verification link has expired. Please request a new verification link from your account settings.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.verifyEmail(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 // everything fine, continue\n } else if (error) {\n throw error;\n }\n\n return <PredefinedMessageCard type='emailVerified' fullPage={fullPage} />;\n}\n"],"mappings":";;;AAEA,SAAS,WAAW;AACpB,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,6BAA6B;AACtC,SAAS,mBAAmB;AAetB;AAbC,SAAS,kBAAkB;AAAA,EAChC,cAAc;AAAA,IACZ,OAAO;AAAA,EACT,IAAI,CAAC;AAAA,EACL,WAAW;AACb,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,QAAM,aACJ,oBAAC,eAAY,OAAM,6BAA4B,UAC7C,8BAAC,OAAE,gHAAkG,GACvG;AAGF,QAAM,aACJ,oBAAC,eAAY,OAAM,6BAA4B,UAC7C,8BAAC,OAAE,0HAA4G,GACjH;AAGF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,IAAI,SAAS,YAAY,IAAI,CAAC;AAE5C,MAAI,iBAAiB,YAAY,0BAA0B;AACzD,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,yBAAyB;AAC/D,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,6BAA6B;AAAA,EAErE,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,oBAAC,yBAAsB,MAAK,iBAAgB,UAAoB;AACzE;","names":[]}
|
|
@@ -27,11 +27,11 @@ function MagicLinkCallback({
|
|
|
27
27
|
return invalidJsx;
|
|
28
28
|
}
|
|
29
29
|
const error = use(stackApp.signInWithMagicLink(code));
|
|
30
|
-
if (error instanceof KnownErrors.
|
|
30
|
+
if (error instanceof KnownErrors.VerificationCodeNotFound) {
|
|
31
31
|
return invalidJsx;
|
|
32
|
-
} else if (error instanceof KnownErrors.
|
|
32
|
+
} else if (error instanceof KnownErrors.VerificationCodeExpired) {
|
|
33
33
|
return expiredJsx;
|
|
34
|
-
} else if (error instanceof KnownErrors.
|
|
34
|
+
} else if (error instanceof KnownErrors.VerificationCodeAlreadyUsed) {
|
|
35
35
|
return alreadyUsedJsx;
|
|
36
36
|
} else if (error) {
|
|
37
37
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/magic-link-callback.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp, useUser } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { neverResolve } from \"@stackframe/stack-shared/dist/utils/promises\";\n\nexport function MagicLinkCallback({ \n searchParams: {\n code = \"\",\n } = {},\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Magic Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Magic Link\" fullPage={fullPage}>\n <p>Your magic link has expired. Please request a new magic link if you need to sign-in.</p>\n </MessageCard>\n );\n\n const alreadyUsedJsx = (\n <MessageCard title=\"Magic Link Already Used\" fullPage={fullPage}>\n <p>The magic link has already been used. The link can only be used once. Please request a new magic link if you need to sign-in again.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.signInWithMagicLink(code));\n\n if (error instanceof KnownErrors.
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/magic-link-callback.tsx"],"sourcesContent":["'use client';\n\nimport { use } from \"react\";\nimport { useStackApp, useUser } from \"..\";\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { PredefinedMessageCard } from \"../components/message-cards/predefined-message-card\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { neverResolve } from \"@stackframe/stack-shared/dist/utils/promises\";\n\nexport function MagicLinkCallback({ \n searchParams: {\n code = \"\",\n } = {},\n fullPage = false,\n}: { \n searchParams?: Record<string, string>,\n fullPage?: boolean,\n}) {\n const stackApp = useStackApp();\n const user = useUser();\n\n if (user) {\n return <PredefinedMessageCard type='signedIn' fullPage={fullPage} />;\n }\n\n const invalidJsx = (\n <MessageCard title=\"Invalid Magic Link\" fullPage={fullPage}>\n <p>Please check if you have the correct link. If you continue to have issues, please contact support.</p>\n </MessageCard>\n );\n\n const expiredJsx = (\n <MessageCard title=\"Expired Magic Link\" fullPage={fullPage}>\n <p>Your magic link has expired. Please request a new magic link if you need to sign-in.</p>\n </MessageCard>\n );\n\n const alreadyUsedJsx = (\n <MessageCard title=\"Magic Link Already Used\" fullPage={fullPage}>\n <p>The magic link has already been used. The link can only be used once. Please request a new magic link if you need to sign-in again.</p>\n </MessageCard>\n );\n\n if (!code) {\n return invalidJsx;\n }\n\n const error = use(stackApp.signInWithMagicLink(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 alreadyUsedJsx;\n } else if (error) {\n throw error;\n }\n\n use(neverResolve());\n}\n"],"mappings":";;;AAEA,SAAS,WAAW;AACpB,SAAS,aAAa,eAAe;AACrC,SAAS,mBAAmB;AAC5B,SAAS,6BAA6B;AACtC,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAelB;AAbJ,SAAS,kBAAkB;AAAA,EAChC,cAAc;AAAA,IACZ,OAAO;AAAA,EACT,IAAI,CAAC;AAAA,EACL,WAAW;AACb,GAGG;AACD,QAAM,WAAW,YAAY;AAC7B,QAAM,OAAO,QAAQ;AAErB,MAAI,MAAM;AACR,WAAO,oBAAC,yBAAsB,MAAK,YAAW,UAAoB;AAAA,EACpE;AAEA,QAAM,aACJ,oBAAC,eAAY,OAAM,sBAAqB,UACtC,8BAAC,OAAE,gHAAkG,GACvG;AAGF,QAAM,aACJ,oBAAC,eAAY,OAAM,sBAAqB,UACtC,8BAAC,OAAE,kGAAoF,GACzF;AAGF,QAAM,iBACJ,oBAAC,eAAY,OAAM,2BAA0B,UAC3C,8BAAC,OAAE,iJAAmI,GACxI;AAGF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,IAAI,SAAS,oBAAoB,IAAI,CAAC;AAEpD,MAAI,iBAAiB,YAAY,0BAA0B;AACzD,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,yBAAyB;AAC/D,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,6BAA6B;AACnE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,MAAI,aAAa,CAAC;AACpB;","names":[]}
|
|
@@ -26,11 +26,11 @@ function PasswordReset({
|
|
|
26
26
|
return invalidJsx;
|
|
27
27
|
}
|
|
28
28
|
const error = use(cachedVerifyPasswordResetCode(stackApp, code));
|
|
29
|
-
if (error instanceof KnownErrors.
|
|
29
|
+
if (error instanceof KnownErrors.VerificationCodeNotFound) {
|
|
30
30
|
return invalidJsx;
|
|
31
|
-
} else if (error instanceof KnownErrors.
|
|
31
|
+
} else if (error instanceof KnownErrors.VerificationCodeExpired) {
|
|
32
32
|
return expiredJsx;
|
|
33
|
-
} else if (error instanceof KnownErrors.
|
|
33
|
+
} else if (error instanceof KnownErrors.VerificationCodeAlreadyUsed) {
|
|
34
34
|
return usedJsx;
|
|
35
35
|
} else if (error) {
|
|
36
36
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { use } from \"react\";\nimport PasswordResetForm from \"../components/password-reset-form\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { Typography } from \"@stackframe/stack-ui\";\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 = use(cachedVerifyPasswordResetCode(stackApp, code));\n \n if (error instanceof KnownErrors.
|
|
1
|
+
{"version":3,"sources":["../../../src/components-page/password-reset.tsx"],"sourcesContent":["'use client';\n\nimport { MessageCard } from \"../components/message-cards/message-card\";\nimport { StackClientApp, useStackApp } from \"..\";\nimport { use } from \"react\";\nimport PasswordResetForm from \"../components/password-reset-form\";\nimport { cacheFunction } from \"@stackframe/stack-shared/dist/utils/caches\";\nimport { KnownErrors } from \"@stackframe/stack-shared\";\nimport { Typography } from \"@stackframe/stack-ui\";\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 = 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":";;;AAEA,SAAS,mBAAmB;AAC5B,SAAyB,mBAAmB;AAC5C,SAAS,WAAW;AACpB,OAAO,uBAAuB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,kBAAkB;AAiBrB;AAfN,IAAM,gCAAgC,cAAc,OAAO,UAAgC,SAAiB;AAC1G,SAAO,MAAM,SAAS,wBAAwB,IAAI;AACpD,CAAC;AAEM,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA,WAAW;AACb,GAGG;AACD,QAAM,WAAW,YAAY;AAE7B,QAAM,aACJ,oBAAC,eAAY,OAAM,+BAA8B,UAC/C,8BAAC,cAAW,8EAAgE,GAC9E;AAGF,QAAM,aACJ,oBAAC,eAAY,OAAM,+BAA8B,UAC/C,8BAAC,cAAW,iHAAmG,GACjH;AAGF,QAAM,UACJ,oBAAC,eAAY,OAAM,4BAA2B,UAC5C,8BAAC,cAAW,qKAAuJ,GACrK;AAGF,QAAM,OAAO,cAAc;AAC3B,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,IAAI,8BAA8B,UAAU,IAAI,CAAC;AAE/D,MAAI,iBAAiB,YAAY,0BAA0B;AACzD,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,yBAAyB;AAC/D,WAAO;AAAA,EACT,WAAW,iBAAiB,YAAY,6BAA6B;AACnE,WAAO;AAAA,EACT,WAAW,OAAO;AAChB,UAAM;AAAA,EACR;AAEA,SAAO,oBAAC,qBAAkB,MAAY,UAAoB;AAC5D;","names":[]}
|
|
@@ -22,7 +22,7 @@ import * as cookie from "cookie";
|
|
|
22
22
|
import { InternalSession } from "@stackframe/stack-shared/dist/sessions";
|
|
23
23
|
import { mergeScopeStrings } from "@stackframe/stack-shared/dist/utils/strings";
|
|
24
24
|
var NextNavigation = scrambleDuringCompileTime(NextNavigationUnscrambled);
|
|
25
|
-
var clientVersion = "js @stackframe/stack@2.5.
|
|
25
|
+
var clientVersion = "js @stackframe/stack@2.5.2";
|
|
26
26
|
function permissionDefinitionScopeToType(scope) {
|
|
27
27
|
return { "any-team": "team", "specific-team": "team", "global": "global" }[scope.type];
|
|
28
28
|
}
|
|
@@ -480,6 +480,7 @@ var _StackClientAppImpl = class __StackClientAppImpl {
|
|
|
480
480
|
return {
|
|
481
481
|
id: json.id,
|
|
482
482
|
displayName: json.displayName,
|
|
483
|
+
profileImageUrl: json.profileImageUrl,
|
|
483
484
|
createdAt: new Date(json.createdAtMillis),
|
|
484
485
|
toJson() {
|
|
485
486
|
return json;
|
|
@@ -1189,6 +1190,7 @@ var _StackServerAppImpl = class extends _StackClientAppImpl {
|
|
|
1189
1190
|
return {
|
|
1190
1191
|
id: json.id,
|
|
1191
1192
|
displayName: json.displayName,
|
|
1193
|
+
profileImageUrl: json.profileImageUrl,
|
|
1192
1194
|
createdAt: new Date(json.createdAtMillis),
|
|
1193
1195
|
async listMembers() {
|
|
1194
1196
|
return (await app._interface.listServerTeamMembers(json.id)).map((u) => app._serverTeamMemberFromJson(u));
|