@ory/elements-react 1.0.0-next.17 → 1.0.0-next.19
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 +33 -0
- package/api-report/elements-react-client.api.json +144 -16
- package/api-report/elements-react-client.api.md +19 -8
- package/api-report/elements-react-theme.api.json +47 -0
- package/api-report/elements-react-theme.api.md +5 -2
- package/api-report/elements-react.api.json +85 -23
- package/api-report/elements-react.api.md +37 -16
- package/api-report/temp/elements-react-client.api.md +19 -8
- package/api-report/temp/elements-react-theme.api.md +5 -2
- package/api-report/temp/elements-react.api.md +37 -16
- package/dist/client/config.d.mts +21 -0
- package/dist/client/config.d.ts +21 -0
- package/dist/client/config.js +77 -0
- package/dist/client/config.js.map +1 -0
- package/dist/client/config.mjs +51 -0
- package/dist/client/config.mjs.map +1 -0
- package/dist/client/frontendClient.d.mts +3 -1
- package/dist/client/frontendClient.d.ts +3 -1
- package/dist/client/frontendClient.js +14 -2
- package/dist/client/frontendClient.js.map +1 -1
- package/dist/client/frontendClient.mjs +14 -2
- package/dist/client/frontendClient.mjs.map +1 -1
- package/dist/client/index.d.mts +3 -1
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.js +4 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +5 -0
- package/dist/client/index.mjs.map +1 -1
- package/dist/client/session-provider.d.mts +62 -0
- package/dist/client/session-provider.d.ts +62 -0
- package/dist/client/session-provider.js +96 -0
- package/dist/client/session-provider.js.map +1 -0
- package/dist/client/session-provider.mjs +71 -0
- package/dist/client/session-provider.mjs.map +1 -0
- package/dist/client/useSession.d.mts +22 -31
- package/dist/client/useSession.d.ts +22 -31
- package/dist/client/useSession.js +7 -49
- package/dist/client/useSession.js.map +1 -1
- package/dist/client/useSession.mjs +8 -49
- package/dist/client/useSession.mjs.map +1 -1
- package/dist/index.d.mts +36 -19
- package/dist/index.d.ts +36 -19
- package/dist/index.js +583 -402
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +586 -405
- package/dist/index.mjs.map +1 -1
- package/dist/theme/default/index.css +393 -259
- package/dist/theme/default/index.css.map +1 -1
- package/dist/theme/default/index.d.mts +4 -2
- package/dist/theme/default/index.d.ts +4 -2
- package/dist/theme/default/index.js +728 -588
- package/dist/theme/default/index.js.map +1 -1
- package/dist/theme/default/index.mjs +665 -526
- package/dist/theme/default/index.mjs.map +1 -1
- package/jest.config.ts +1 -1
- package/package.json +2 -1
- package/postcss.config.ts +1 -0
- package/tailwind.config.ts +14 -13
- package/tsconfig.json +4 -3
- package/variables-processed.json +385 -187
- package/.eslintrc.js +0 -63
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import { Session } from '@ory/client-fetch';
|
|
4
|
+
|
|
5
|
+
type SessionContextData = {
|
|
6
|
+
/**
|
|
7
|
+
* Whether the session is currently being loaded
|
|
8
|
+
*/
|
|
9
|
+
isLoading: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Whether the session is being loaded for the first time
|
|
12
|
+
* Never true, if a session was passed to the provider
|
|
13
|
+
*/
|
|
14
|
+
initialized: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* The current session or null if the user is not authenticated or an error occurred,
|
|
17
|
+
* when fetching the session
|
|
18
|
+
*/
|
|
19
|
+
session: Session | null;
|
|
20
|
+
/**
|
|
21
|
+
* The error that occurred when fetching the session if any
|
|
22
|
+
*/
|
|
23
|
+
error: Error | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Refetches the session
|
|
26
|
+
*/
|
|
27
|
+
refetch: () => Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
declare const SessionContext: react.Context<SessionContextData>;
|
|
30
|
+
type SessionProviderProps = {
|
|
31
|
+
session?: Session | null;
|
|
32
|
+
baseUrl?: string;
|
|
33
|
+
} & React.PropsWithChildren;
|
|
34
|
+
/**
|
|
35
|
+
* A provider that fetches the session from the Ory Network and provides it to the children.
|
|
36
|
+
*
|
|
37
|
+
* To use this provider, wrap your application in it:
|
|
38
|
+
*
|
|
39
|
+
* ```tsx
|
|
40
|
+
* import { SessionProvider } from "@ory/elements-react"
|
|
41
|
+
*
|
|
42
|
+
* export default function App() {
|
|
43
|
+
* return (
|
|
44
|
+
* <SessionProvider>
|
|
45
|
+
* <MyApp />
|
|
46
|
+
* </SessionProvider>
|
|
47
|
+
* )
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* If you have a session from the server, you can pass it to the provider:
|
|
52
|
+
*
|
|
53
|
+
* ```tsx
|
|
54
|
+
* <SessionProvider session={serverSession}>
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @see {@link useSession}
|
|
58
|
+
* @param props - The provider props
|
|
59
|
+
*/
|
|
60
|
+
declare function SessionProvider({ session: initialSession, children, baseUrl, }: SessionProviderProps): react_jsx_runtime.JSX.Element;
|
|
61
|
+
|
|
62
|
+
export { SessionContext, type SessionContextData, SessionProvider, type SessionProviderProps };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import { Session } from '@ory/client-fetch';
|
|
4
|
+
|
|
5
|
+
type SessionContextData = {
|
|
6
|
+
/**
|
|
7
|
+
* Whether the session is currently being loaded
|
|
8
|
+
*/
|
|
9
|
+
isLoading: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Whether the session is being loaded for the first time
|
|
12
|
+
* Never true, if a session was passed to the provider
|
|
13
|
+
*/
|
|
14
|
+
initialized: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* The current session or null if the user is not authenticated or an error occurred,
|
|
17
|
+
* when fetching the session
|
|
18
|
+
*/
|
|
19
|
+
session: Session | null;
|
|
20
|
+
/**
|
|
21
|
+
* The error that occurred when fetching the session if any
|
|
22
|
+
*/
|
|
23
|
+
error: Error | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Refetches the session
|
|
26
|
+
*/
|
|
27
|
+
refetch: () => Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
declare const SessionContext: react.Context<SessionContextData>;
|
|
30
|
+
type SessionProviderProps = {
|
|
31
|
+
session?: Session | null;
|
|
32
|
+
baseUrl?: string;
|
|
33
|
+
} & React.PropsWithChildren;
|
|
34
|
+
/**
|
|
35
|
+
* A provider that fetches the session from the Ory Network and provides it to the children.
|
|
36
|
+
*
|
|
37
|
+
* To use this provider, wrap your application in it:
|
|
38
|
+
*
|
|
39
|
+
* ```tsx
|
|
40
|
+
* import { SessionProvider } from "@ory/elements-react"
|
|
41
|
+
*
|
|
42
|
+
* export default function App() {
|
|
43
|
+
* return (
|
|
44
|
+
* <SessionProvider>
|
|
45
|
+
* <MyApp />
|
|
46
|
+
* </SessionProvider>
|
|
47
|
+
* )
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* If you have a session from the server, you can pass it to the provider:
|
|
52
|
+
*
|
|
53
|
+
* ```tsx
|
|
54
|
+
* <SessionProvider session={serverSession}>
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @see {@link useSession}
|
|
58
|
+
* @param props - The provider props
|
|
59
|
+
*/
|
|
60
|
+
declare function SessionProvider({ session: initialSession, children, baseUrl, }: SessionProviderProps): react_jsx_runtime.JSX.Element;
|
|
61
|
+
|
|
62
|
+
export { SessionContext, type SessionContextData, SessionProvider, type SessionProviderProps };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var session_provider_exports = {};
|
|
21
|
+
__export(session_provider_exports, {
|
|
22
|
+
SessionContext: () => SessionContext,
|
|
23
|
+
SessionProvider: () => SessionProvider
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(session_provider_exports);
|
|
26
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
27
|
+
var import_react = require("react");
|
|
28
|
+
var import_frontendClient = require("./frontendClient");
|
|
29
|
+
const SessionContext = (0, import_react.createContext)({
|
|
30
|
+
session: null,
|
|
31
|
+
isLoading: false,
|
|
32
|
+
initialized: false,
|
|
33
|
+
error: void 0,
|
|
34
|
+
refetch: async () => {
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
function SessionProvider({
|
|
38
|
+
session: initialSession,
|
|
39
|
+
children,
|
|
40
|
+
baseUrl
|
|
41
|
+
}) {
|
|
42
|
+
const initialized = (0, import_react.useRef)(!!initialSession);
|
|
43
|
+
const [isLoading, setLoading] = (0, import_react.useState)(false);
|
|
44
|
+
const [sessionState, setSessionState] = (0, import_react.useState)(
|
|
45
|
+
() => {
|
|
46
|
+
if (initialSession) {
|
|
47
|
+
return {
|
|
48
|
+
session: initialSession,
|
|
49
|
+
state: initialSession.active ? "authenticated" : "unauthenticated"
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return void 0;
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
const fetchSession = (0, import_react.useCallback)(async () => {
|
|
56
|
+
try {
|
|
57
|
+
setLoading(true);
|
|
58
|
+
const session = await (0, import_frontendClient.frontendClient)({
|
|
59
|
+
forceBaseUrl: baseUrl
|
|
60
|
+
}).toSession();
|
|
61
|
+
setSessionState({
|
|
62
|
+
session,
|
|
63
|
+
state: session.active ? "authenticated" : "unauthenticated"
|
|
64
|
+
});
|
|
65
|
+
} catch (error) {
|
|
66
|
+
setSessionState({ state: "error", error });
|
|
67
|
+
} finally {
|
|
68
|
+
setLoading(false);
|
|
69
|
+
}
|
|
70
|
+
}, [baseUrl]);
|
|
71
|
+
(0, import_react.useEffect)(() => {
|
|
72
|
+
if (!initialized.current) {
|
|
73
|
+
initialized.current = true;
|
|
74
|
+
void fetchSession();
|
|
75
|
+
}
|
|
76
|
+
}, [fetchSession]);
|
|
77
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
78
|
+
SessionContext.Provider,
|
|
79
|
+
{
|
|
80
|
+
value: {
|
|
81
|
+
error: (sessionState == null ? void 0 : sessionState.state) === "error" ? sessionState.error : void 0,
|
|
82
|
+
session: (sessionState == null ? void 0 : sessionState.state) === "authenticated" ? sessionState.session : null,
|
|
83
|
+
isLoading,
|
|
84
|
+
initialized: initialized.current,
|
|
85
|
+
refetch: fetchSession
|
|
86
|
+
},
|
|
87
|
+
children
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
92
|
+
0 && (module.exports = {
|
|
93
|
+
SessionContext,
|
|
94
|
+
SessionProvider
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=session-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client/session-provider.tsx"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\n\"use client\"\nimport { Session } from \"@ory/client-fetch\"\nimport { createContext, useCallback, useEffect, useRef, useState } from \"react\"\nimport { frontendClient } from \"./frontendClient\"\n\ntype SessionState =\n | {\n session: Session\n state: \"authenticated\"\n }\n | {\n state: \"unauthenticated\"\n }\n | {\n state: \"error\"\n error: Error\n }\n\nexport type SessionContextData = {\n /**\n * Whether the session is currently being loaded\n */\n isLoading: boolean\n /**\n * Whether the session is being loaded for the first time\n * Never true, if a session was passed to the provider\n */\n initialized: boolean\n /**\n * The current session or null if the user is not authenticated or an error occurred,\n * when fetching the session\n */\n session: Session | null\n /**\n * The error that occurred when fetching the session if any\n */\n error: Error | undefined\n /**\n * Refetches the session\n */\n refetch: () => Promise<void>\n}\n\nexport const SessionContext = createContext<SessionContextData>({\n session: null,\n isLoading: false,\n initialized: false,\n error: undefined,\n refetch: async () => {},\n})\n\nexport type SessionProviderProps = {\n session?: Session | null\n baseUrl?: string\n} & React.PropsWithChildren\n\n/**\n * A provider that fetches the session from the Ory Network and provides it to the children.\n *\n * To use this provider, wrap your application in it:\n *\n * ```tsx\n * import { SessionProvider } from \"@ory/elements-react\"\n *\n * export default function App() {\n * return (\n * <SessionProvider>\n * <MyApp />\n * </SessionProvider>\n * )\n * }\n * ```\n *\n * If you have a session from the server, you can pass it to the provider:\n *\n * ```tsx\n * <SessionProvider session={serverSession}>\n * ```\n *\n * @see {@link useSession}\n * @param props - The provider props\n */\nexport function SessionProvider({\n session: initialSession,\n children,\n baseUrl,\n}: SessionProviderProps) {\n const initialized = useRef(!!initialSession)\n const [isLoading, setLoading] = useState(false)\n const [sessionState, setSessionState] = useState<SessionState | undefined>(\n () => {\n if (initialSession) {\n return {\n session: initialSession,\n state: initialSession.active ? \"authenticated\" : \"unauthenticated\",\n }\n }\n\n return undefined\n },\n )\n\n const fetchSession = useCallback(async () => {\n try {\n setLoading(true)\n const session = await frontendClient({\n forceBaseUrl: baseUrl,\n }).toSession()\n\n setSessionState({\n session,\n state: session.active ? \"authenticated\" : \"unauthenticated\",\n })\n } catch (error) {\n setSessionState({ state: \"error\", error: error as Error })\n } finally {\n setLoading(false)\n }\n }, [baseUrl])\n\n useEffect(() => {\n if (!initialized.current) {\n initialized.current = true\n void fetchSession()\n }\n }, [fetchSession])\n\n return (\n <SessionContext.Provider\n value={{\n error: sessionState?.state === \"error\" ? sessionState.error : undefined,\n session:\n sessionState?.state === \"authenticated\" ? sessionState.session : null,\n isLoading,\n initialized: initialized.current,\n refetch: fetchSession,\n }}\n >\n {children}\n </SessionContext.Provider>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmII;AA9HJ,mBAAwE;AACxE,4BAA+B;AAwCxB,MAAM,qBAAiB,4BAAkC;AAAA,EAC9D,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AAAA,EACb,OAAO;AAAA,EACP,SAAS,YAAY;AAAA,EAAC;AACxB,CAAC;AAiCM,SAAS,gBAAgB;AAAA,EAC9B,SAAS;AAAA,EACT;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,kBAAc,qBAAO,CAAC,CAAC,cAAc;AAC3C,QAAM,CAAC,WAAW,UAAU,QAAI,uBAAS,KAAK;AAC9C,QAAM,CAAC,cAAc,eAAe,QAAI;AAAA,IACtC,MAAM;AACJ,UAAI,gBAAgB;AAClB,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO,eAAe,SAAS,kBAAkB;AAAA,QACnD;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,mBAAe,0BAAY,YAAY;AAC3C,QAAI;AACF,iBAAW,IAAI;AACf,YAAM,UAAU,UAAM,sCAAe;AAAA,QACnC,cAAc;AAAA,MAChB,CAAC,EAAE,UAAU;AAEb,sBAAgB;AAAA,QACd;AAAA,QACA,OAAO,QAAQ,SAAS,kBAAkB;AAAA,MAC5C,CAAC;AAAA,IACH,SAAS,OAAO;AACd,sBAAgB,EAAE,OAAO,SAAS,MAAsB,CAAC;AAAA,IAC3D,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,8BAAU,MAAM;AACd,QAAI,CAAC,YAAY,SAAS;AACxB,kBAAY,UAAU;AACtB,WAAK,aAAa;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAEjB,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,OAAO;AAAA,QACL,QAAO,6CAAc,WAAU,UAAU,aAAa,QAAQ;AAAA,QAC9D,UACE,6CAAc,WAAU,kBAAkB,aAAa,UAAU;AAAA,QACnE;AAAA,QACA,aAAa,YAAY;AAAA,QACzB,SAAS;AAAA,MACX;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
+
import { frontendClient } from "./frontendClient";
|
|
5
|
+
const SessionContext = createContext({
|
|
6
|
+
session: null,
|
|
7
|
+
isLoading: false,
|
|
8
|
+
initialized: false,
|
|
9
|
+
error: void 0,
|
|
10
|
+
refetch: async () => {
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
function SessionProvider({
|
|
14
|
+
session: initialSession,
|
|
15
|
+
children,
|
|
16
|
+
baseUrl
|
|
17
|
+
}) {
|
|
18
|
+
const initialized = useRef(!!initialSession);
|
|
19
|
+
const [isLoading, setLoading] = useState(false);
|
|
20
|
+
const [sessionState, setSessionState] = useState(
|
|
21
|
+
() => {
|
|
22
|
+
if (initialSession) {
|
|
23
|
+
return {
|
|
24
|
+
session: initialSession,
|
|
25
|
+
state: initialSession.active ? "authenticated" : "unauthenticated"
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return void 0;
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
const fetchSession = useCallback(async () => {
|
|
32
|
+
try {
|
|
33
|
+
setLoading(true);
|
|
34
|
+
const session = await frontendClient({
|
|
35
|
+
forceBaseUrl: baseUrl
|
|
36
|
+
}).toSession();
|
|
37
|
+
setSessionState({
|
|
38
|
+
session,
|
|
39
|
+
state: session.active ? "authenticated" : "unauthenticated"
|
|
40
|
+
});
|
|
41
|
+
} catch (error) {
|
|
42
|
+
setSessionState({ state: "error", error });
|
|
43
|
+
} finally {
|
|
44
|
+
setLoading(false);
|
|
45
|
+
}
|
|
46
|
+
}, [baseUrl]);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!initialized.current) {
|
|
49
|
+
initialized.current = true;
|
|
50
|
+
void fetchSession();
|
|
51
|
+
}
|
|
52
|
+
}, [fetchSession]);
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
SessionContext.Provider,
|
|
55
|
+
{
|
|
56
|
+
value: {
|
|
57
|
+
error: (sessionState == null ? void 0 : sessionState.state) === "error" ? sessionState.error : void 0,
|
|
58
|
+
session: (sessionState == null ? void 0 : sessionState.state) === "authenticated" ? sessionState.session : null,
|
|
59
|
+
isLoading,
|
|
60
|
+
initialized: initialized.current,
|
|
61
|
+
refetch: fetchSession
|
|
62
|
+
},
|
|
63
|
+
children
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
SessionContext,
|
|
69
|
+
SessionProvider
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=session-provider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/client/session-provider.tsx"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\n\"use client\"\nimport { Session } from \"@ory/client-fetch\"\nimport { createContext, useCallback, useEffect, useRef, useState } from \"react\"\nimport { frontendClient } from \"./frontendClient\"\n\ntype SessionState =\n | {\n session: Session\n state: \"authenticated\"\n }\n | {\n state: \"unauthenticated\"\n }\n | {\n state: \"error\"\n error: Error\n }\n\nexport type SessionContextData = {\n /**\n * Whether the session is currently being loaded\n */\n isLoading: boolean\n /**\n * Whether the session is being loaded for the first time\n * Never true, if a session was passed to the provider\n */\n initialized: boolean\n /**\n * The current session or null if the user is not authenticated or an error occurred,\n * when fetching the session\n */\n session: Session | null\n /**\n * The error that occurred when fetching the session if any\n */\n error: Error | undefined\n /**\n * Refetches the session\n */\n refetch: () => Promise<void>\n}\n\nexport const SessionContext = createContext<SessionContextData>({\n session: null,\n isLoading: false,\n initialized: false,\n error: undefined,\n refetch: async () => {},\n})\n\nexport type SessionProviderProps = {\n session?: Session | null\n baseUrl?: string\n} & React.PropsWithChildren\n\n/**\n * A provider that fetches the session from the Ory Network and provides it to the children.\n *\n * To use this provider, wrap your application in it:\n *\n * ```tsx\n * import { SessionProvider } from \"@ory/elements-react\"\n *\n * export default function App() {\n * return (\n * <SessionProvider>\n * <MyApp />\n * </SessionProvider>\n * )\n * }\n * ```\n *\n * If you have a session from the server, you can pass it to the provider:\n *\n * ```tsx\n * <SessionProvider session={serverSession}>\n * ```\n *\n * @see {@link useSession}\n * @param props - The provider props\n */\nexport function SessionProvider({\n session: initialSession,\n children,\n baseUrl,\n}: SessionProviderProps) {\n const initialized = useRef(!!initialSession)\n const [isLoading, setLoading] = useState(false)\n const [sessionState, setSessionState] = useState<SessionState | undefined>(\n () => {\n if (initialSession) {\n return {\n session: initialSession,\n state: initialSession.active ? \"authenticated\" : \"unauthenticated\",\n }\n }\n\n return undefined\n },\n )\n\n const fetchSession = useCallback(async () => {\n try {\n setLoading(true)\n const session = await frontendClient({\n forceBaseUrl: baseUrl,\n }).toSession()\n\n setSessionState({\n session,\n state: session.active ? \"authenticated\" : \"unauthenticated\",\n })\n } catch (error) {\n setSessionState({ state: \"error\", error: error as Error })\n } finally {\n setLoading(false)\n }\n }, [baseUrl])\n\n useEffect(() => {\n if (!initialized.current) {\n initialized.current = true\n void fetchSession()\n }\n }, [fetchSession])\n\n return (\n <SessionContext.Provider\n value={{\n error: sessionState?.state === \"error\" ? sessionState.error : undefined,\n session:\n sessionState?.state === \"authenticated\" ? sessionState.session : null,\n isLoading,\n initialized: initialized.current,\n refetch: fetchSession,\n }}\n >\n {children}\n </SessionContext.Provider>\n )\n}\n"],"mappings":";AAmII;AA9HJ,SAAS,eAAe,aAAa,WAAW,QAAQ,gBAAgB;AACxE,SAAS,sBAAsB;AAwCxB,MAAM,iBAAiB,cAAkC;AAAA,EAC9D,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AAAA,EACb,OAAO;AAAA,EACP,SAAS,YAAY;AAAA,EAAC;AACxB,CAAC;AAiCM,SAAS,gBAAgB;AAAA,EAC9B,SAAS;AAAA,EACT;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,cAAc,OAAO,CAAC,CAAC,cAAc;AAC3C,QAAM,CAAC,WAAW,UAAU,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,cAAc,eAAe,IAAI;AAAA,IACtC,MAAM;AACJ,UAAI,gBAAgB;AAClB,eAAO;AAAA,UACL,SAAS;AAAA,UACT,OAAO,eAAe,SAAS,kBAAkB;AAAA,QACnD;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,eAAe,YAAY,YAAY;AAC3C,QAAI;AACF,iBAAW,IAAI;AACf,YAAM,UAAU,MAAM,eAAe;AAAA,QACnC,cAAc;AAAA,MAChB,CAAC,EAAE,UAAU;AAEb,sBAAgB;AAAA,QACd;AAAA,QACA,OAAO,QAAQ,SAAS,kBAAkB;AAAA,MAC5C,CAAC;AAAA,IACH,SAAS,OAAO;AACd,sBAAgB,EAAE,OAAO,SAAS,MAAsB,CAAC;AAAA,IAC3D,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AACd,QAAI,CAAC,YAAY,SAAS;AACxB,kBAAY,UAAU;AACtB,WAAK,aAAa;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAEjB,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,OAAO;AAAA,QACL,QAAO,6CAAc,WAAU,UAAU,aAAa,QAAQ;AAAA,QAC9D,UACE,6CAAc,WAAU,kBAAkB,aAAa,UAAU;AAAA,QACnE;AAAA,QACA,aAAa,YAAY;AAAA,QACzB,SAAS;AAAA,MACX;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;","names":[]}
|
|
@@ -1,41 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { SessionContextData } from './session-provider.mjs';
|
|
2
|
+
import 'react/jsx-runtime';
|
|
3
|
+
import 'react';
|
|
4
|
+
import '@ory/client-fetch';
|
|
3
5
|
|
|
4
|
-
type SessionStore = {
|
|
5
|
-
setIsLoading: (loading: boolean) => void;
|
|
6
|
-
setSession: (session: Session) => void;
|
|
7
|
-
isLoading: boolean;
|
|
8
|
-
session: Session | undefined;
|
|
9
|
-
error: string | undefined;
|
|
10
|
-
setError: (error: string | undefined) => void;
|
|
11
|
-
};
|
|
12
|
-
declare const sessionStore: zustand.UseBoundStore<Omit<zustand.StoreApi<SessionStore>, "subscribe"> & {
|
|
13
|
-
subscribe: {
|
|
14
|
-
(listener: (selectedState: SessionStore, previousSelectedState: SessionStore) => void): () => void;
|
|
15
|
-
<U>(selector: (state: SessionStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
|
|
16
|
-
equalityFn?: ((a: U, b: U) => boolean) | undefined;
|
|
17
|
-
fireImmediately?: boolean | undefined;
|
|
18
|
-
} | undefined): () => void;
|
|
19
|
-
};
|
|
20
|
-
}>;
|
|
21
6
|
/**
|
|
22
7
|
* A hook to get the current session from the Ory Network.
|
|
23
8
|
*
|
|
24
9
|
* Usage:
|
|
25
10
|
* ```ts
|
|
26
|
-
* const
|
|
11
|
+
* const session = useSession()
|
|
12
|
+
*
|
|
13
|
+
* if (session.state == "loading") {
|
|
14
|
+
* return <div>Loading...</div>
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* if (session.state == "authenticated") {
|
|
18
|
+
* return <div>Session: {session.session.id}</div>
|
|
19
|
+
* }
|
|
27
20
|
* ```
|
|
28
21
|
*
|
|
29
|
-
*
|
|
22
|
+
* :::note
|
|
23
|
+
* This is a client-side hook and must be used within a React component.
|
|
24
|
+
* On the server, you can use the getServerSession function from `@ory/nextjs`
|
|
25
|
+
* and hydrate SessionProvider with the session.
|
|
26
|
+
* :::
|
|
27
|
+
*
|
|
28
|
+
* @returns The current session, and error or loading state.
|
|
30
29
|
*/
|
|
31
|
-
declare
|
|
32
|
-
sdk: {
|
|
33
|
-
url: string;
|
|
34
|
-
};
|
|
35
|
-
}) => {
|
|
36
|
-
session: Session | undefined;
|
|
37
|
-
error: string | undefined;
|
|
38
|
-
isLoading: boolean;
|
|
39
|
-
};
|
|
30
|
+
declare function useSession(): SessionContextData;
|
|
40
31
|
|
|
41
|
-
export {
|
|
32
|
+
export { useSession };
|
|
@@ -1,41 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { SessionContextData } from './session-provider.js';
|
|
2
|
+
import 'react/jsx-runtime';
|
|
3
|
+
import 'react';
|
|
4
|
+
import '@ory/client-fetch';
|
|
3
5
|
|
|
4
|
-
type SessionStore = {
|
|
5
|
-
setIsLoading: (loading: boolean) => void;
|
|
6
|
-
setSession: (session: Session) => void;
|
|
7
|
-
isLoading: boolean;
|
|
8
|
-
session: Session | undefined;
|
|
9
|
-
error: string | undefined;
|
|
10
|
-
setError: (error: string | undefined) => void;
|
|
11
|
-
};
|
|
12
|
-
declare const sessionStore: zustand.UseBoundStore<Omit<zustand.StoreApi<SessionStore>, "subscribe"> & {
|
|
13
|
-
subscribe: {
|
|
14
|
-
(listener: (selectedState: SessionStore, previousSelectedState: SessionStore) => void): () => void;
|
|
15
|
-
<U>(selector: (state: SessionStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
|
|
16
|
-
equalityFn?: ((a: U, b: U) => boolean) | undefined;
|
|
17
|
-
fireImmediately?: boolean | undefined;
|
|
18
|
-
} | undefined): () => void;
|
|
19
|
-
};
|
|
20
|
-
}>;
|
|
21
6
|
/**
|
|
22
7
|
* A hook to get the current session from the Ory Network.
|
|
23
8
|
*
|
|
24
9
|
* Usage:
|
|
25
10
|
* ```ts
|
|
26
|
-
* const
|
|
11
|
+
* const session = useSession()
|
|
12
|
+
*
|
|
13
|
+
* if (session.state == "loading") {
|
|
14
|
+
* return <div>Loading...</div>
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* if (session.state == "authenticated") {
|
|
18
|
+
* return <div>Session: {session.session.id}</div>
|
|
19
|
+
* }
|
|
27
20
|
* ```
|
|
28
21
|
*
|
|
29
|
-
*
|
|
22
|
+
* :::note
|
|
23
|
+
* This is a client-side hook and must be used within a React component.
|
|
24
|
+
* On the server, you can use the getServerSession function from `@ory/nextjs`
|
|
25
|
+
* and hydrate SessionProvider with the session.
|
|
26
|
+
* :::
|
|
27
|
+
*
|
|
28
|
+
* @returns The current session, and error or loading state.
|
|
30
29
|
*/
|
|
31
|
-
declare
|
|
32
|
-
sdk: {
|
|
33
|
-
url: string;
|
|
34
|
-
};
|
|
35
|
-
}) => {
|
|
36
|
-
session: Session | undefined;
|
|
37
|
-
error: string | undefined;
|
|
38
|
-
isLoading: boolean;
|
|
39
|
-
};
|
|
30
|
+
declare function useSession(): SessionContextData;
|
|
40
31
|
|
|
41
|
-
export {
|
|
32
|
+
export { useSession };
|
|
@@ -19,61 +19,19 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
19
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
20
|
var useSession_exports = {};
|
|
21
21
|
__export(useSession_exports, {
|
|
22
|
-
sessionStore: () => sessionStore,
|
|
23
22
|
useSession: () => useSession
|
|
24
23
|
});
|
|
25
24
|
module.exports = __toCommonJS(useSession_exports);
|
|
26
25
|
var import_react = require("react");
|
|
27
|
-
var
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
session: void 0,
|
|
35
|
-
setSession: (session) => set({ session }),
|
|
36
|
-
error: void 0,
|
|
37
|
-
setError: (error) => set({ error })
|
|
38
|
-
}))
|
|
39
|
-
);
|
|
40
|
-
const useSession = (config) => {
|
|
41
|
-
const store = (0, import_zustand.useStore)(sessionStore);
|
|
42
|
-
const fetchSession = (0, import_react.useCallback)(async () => {
|
|
43
|
-
var _a;
|
|
44
|
-
const { session, isLoading, setSession, setIsLoading, setError } = sessionStore.getState();
|
|
45
|
-
if (!!session || isLoading) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
setIsLoading(true);
|
|
49
|
-
try {
|
|
50
|
-
const sessionData = await (0, import_frontendClient.frontendClient)(
|
|
51
|
-
(_a = config == null ? void 0 : config.sdk.url) != null ? _a : window.location.protocol + "//" + window.location.host
|
|
52
|
-
).toSession();
|
|
53
|
-
setSession(sessionData);
|
|
54
|
-
} catch (e) {
|
|
55
|
-
setError(e instanceof Error ? e.message : "Unknown error occurred");
|
|
56
|
-
if (!(config == null ? void 0 : config.sdk.url)) {
|
|
57
|
-
console.error(
|
|
58
|
-
"Could not fetch session. Make sure you have set the SDK URL in the config."
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
} finally {
|
|
62
|
-
setIsLoading(false);
|
|
63
|
-
}
|
|
64
|
-
}, [config == null ? void 0 : config.sdk.url]);
|
|
65
|
-
(0, import_react.useEffect)(() => {
|
|
66
|
-
void fetchSession();
|
|
67
|
-
}, [fetchSession]);
|
|
68
|
-
return {
|
|
69
|
-
session: store.session,
|
|
70
|
-
error: store.error,
|
|
71
|
-
isLoading: store.isLoading
|
|
72
|
-
};
|
|
73
|
-
};
|
|
26
|
+
var import_session_provider = require("./session-provider");
|
|
27
|
+
function useSession() {
|
|
28
|
+
if (!import_session_provider.SessionContext) {
|
|
29
|
+
throw new Error("[Ory/Elements] useSession must be used on the client");
|
|
30
|
+
}
|
|
31
|
+
return (0, import_react.useContext)(import_session_provider.SessionContext);
|
|
32
|
+
}
|
|
74
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
75
34
|
0 && (module.exports = {
|
|
76
|
-
sessionStore,
|
|
77
35
|
useSession
|
|
78
36
|
});
|
|
79
37
|
//# sourceMappingURL=useSession.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/useSession.ts"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\"use client\"\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/client/useSession.ts"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\"use client\"\n\nimport { useContext } from \"react\"\nimport { SessionContext } from \"./session-provider\"\n\n/**\n * A hook to get the current session from the Ory Network.\n *\n * Usage:\n * ```ts\n * const session = useSession()\n *\n * if (session.state == \"loading\") {\n * return <div>Loading...</div>\n * }\n *\n * if (session.state == \"authenticated\") {\n * return <div>Session: {session.session.id}</div>\n * }\n * ```\n *\n * :::note\n * This is a client-side hook and must be used within a React component.\n * On the server, you can use the getServerSession function from `@ory/nextjs`\n * and hydrate SessionProvider with the session.\n * :::\n *\n * @returns The current session, and error or loading state.\n */\n\nexport function useSession() {\n if (!SessionContext) {\n throw new Error(\"[Ory/Elements] useSession must be used on the client\")\n }\n return useContext(SessionContext)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,mBAA2B;AAC3B,8BAA+B;AA2BxB,SAAS,aAAa;AAC3B,MAAI,CAAC,wCAAgB;AACnB,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AACA,aAAO,yBAAW,sCAAc;AAClC;","names":[]}
|
|
@@ -1,54 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
session: void 0,
|
|
11
|
-
setSession: (session) => set({ session }),
|
|
12
|
-
error: void 0,
|
|
13
|
-
setError: (error) => set({ error })
|
|
14
|
-
}))
|
|
15
|
-
);
|
|
16
|
-
const useSession = (config) => {
|
|
17
|
-
const store = useStore(sessionStore);
|
|
18
|
-
const fetchSession = useCallback(async () => {
|
|
19
|
-
var _a;
|
|
20
|
-
const { session, isLoading, setSession, setIsLoading, setError } = sessionStore.getState();
|
|
21
|
-
if (!!session || isLoading) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
setIsLoading(true);
|
|
25
|
-
try {
|
|
26
|
-
const sessionData = await frontendClient(
|
|
27
|
-
(_a = config == null ? void 0 : config.sdk.url) != null ? _a : window.location.protocol + "//" + window.location.host
|
|
28
|
-
).toSession();
|
|
29
|
-
setSession(sessionData);
|
|
30
|
-
} catch (e) {
|
|
31
|
-
setError(e instanceof Error ? e.message : "Unknown error occurred");
|
|
32
|
-
if (!(config == null ? void 0 : config.sdk.url)) {
|
|
33
|
-
console.error(
|
|
34
|
-
"Could not fetch session. Make sure you have set the SDK URL in the config."
|
|
35
|
-
);
|
|
36
|
-
}
|
|
37
|
-
} finally {
|
|
38
|
-
setIsLoading(false);
|
|
39
|
-
}
|
|
40
|
-
}, [config == null ? void 0 : config.sdk.url]);
|
|
41
|
-
useEffect(() => {
|
|
42
|
-
void fetchSession();
|
|
43
|
-
}, [fetchSession]);
|
|
44
|
-
return {
|
|
45
|
-
session: store.session,
|
|
46
|
-
error: store.error,
|
|
47
|
-
isLoading: store.isLoading
|
|
48
|
-
};
|
|
49
|
-
};
|
|
2
|
+
import { useContext } from "react";
|
|
3
|
+
import { SessionContext } from "./session-provider";
|
|
4
|
+
function useSession() {
|
|
5
|
+
if (!SessionContext) {
|
|
6
|
+
throw new Error("[Ory/Elements] useSession must be used on the client");
|
|
7
|
+
}
|
|
8
|
+
return useContext(SessionContext);
|
|
9
|
+
}
|
|
50
10
|
export {
|
|
51
|
-
sessionStore,
|
|
52
11
|
useSession
|
|
53
12
|
};
|
|
54
13
|
//# sourceMappingURL=useSession.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/useSession.ts"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\"use client\"\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/client/useSession.ts"],"sourcesContent":["// Copyright © 2024 Ory Corp\n// SPDX-License-Identifier: Apache-2.0\n\"use client\"\n\nimport { useContext } from \"react\"\nimport { SessionContext } from \"./session-provider\"\n\n/**\n * A hook to get the current session from the Ory Network.\n *\n * Usage:\n * ```ts\n * const session = useSession()\n *\n * if (session.state == \"loading\") {\n * return <div>Loading...</div>\n * }\n *\n * if (session.state == \"authenticated\") {\n * return <div>Session: {session.session.id}</div>\n * }\n * ```\n *\n * :::note\n * This is a client-side hook and must be used within a React component.\n * On the server, you can use the getServerSession function from `@ory/nextjs`\n * and hydrate SessionProvider with the session.\n * :::\n *\n * @returns The current session, and error or loading state.\n */\n\nexport function useSession() {\n if (!SessionContext) {\n throw new Error(\"[Ory/Elements] useSession must be used on the client\")\n }\n return useContext(SessionContext)\n}\n"],"mappings":";AAIA,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AA2BxB,SAAS,aAAa;AAC3B,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACxE;AACA,SAAO,WAAW,cAAc;AAClC;","names":[]}
|