@supertokens/rownd-react 0.1.0-beta.0
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/LICENSE +21 -0
- package/README.md +308 -0
- package/dist/components/RequireSignIn.d.ts +11 -0
- package/dist/components/RequireSignIn.js +18 -0
- package/dist/components/RequireSignIn.js.map +1 -0
- package/dist/components/SignedIn.d.ts +7 -0
- package/dist/components/SignedIn.js +11 -0
- package/dist/components/SignedIn.js.map +1 -0
- package/dist/components/SignedOut.d.ts +7 -0
- package/dist/components/SignedOut.js +11 -0
- package/dist/components/SignedOut.js.map +1 -0
- package/dist/context/HubScriptInjector/HubScriptInjector.d.ts +17 -0
- package/dist/context/HubScriptInjector/HubScriptInjector.js +34 -0
- package/dist/context/HubScriptInjector/HubScriptInjector.js.map +1 -0
- package/dist/context/HubScriptInjector/InternalProviderHubScriptInjector.d.ts +3 -0
- package/dist/context/HubScriptInjector/InternalProviderHubScriptInjector.js +19 -0
- package/dist/context/HubScriptInjector/InternalProviderHubScriptInjector.js.map +1 -0
- package/dist/context/InternalProvider.d.ts +9 -0
- package/dist/context/InternalProvider.js +13 -0
- package/dist/context/InternalProvider.js.map +1 -0
- package/dist/context/ReactRowndProvider.d.ts +4 -0
- package/dist/context/ReactRowndProvider.js +43 -0
- package/dist/context/ReactRowndProvider.js.map +1 -0
- package/dist/context/RowndContext.d.ts +33 -0
- package/dist/context/RowndContext.js +13 -0
- package/dist/context/RowndContext.js.map +1 -0
- package/dist/context/index.d.ts +7 -0
- package/dist/context/index.js +9 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/types.d.ts +112 -0
- package/dist/hooks/useHub.d.ts +48 -0
- package/dist/hooks/useHub.js +153 -0
- package/dist/hooks/useHub.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +13 -0
- package/dist/main.js.map +1 -0
- package/dist/next/RowndProvider.d.ts +5 -0
- package/dist/next/RowndProvider.js +9 -0
- package/dist/next/RowndProvider.js.map +1 -0
- package/dist/next/client/components/RequireSignIn.d.ts +5 -0
- package/dist/next/client/components/RequireSignIn.js +30 -0
- package/dist/next/client/components/RequireSignIn.js.map +1 -0
- package/dist/next/client/components/RowndServerStateSync.d.ts +2 -0
- package/dist/next/client/components/RowndServerStateSync.js +36 -0
- package/dist/next/client/components/RowndServerStateSync.js.map +1 -0
- package/dist/next/client/components/RowndServerStateSync.test.d.ts +1 -0
- package/dist/next/client/index.d.ts +5 -0
- package/dist/next/client/index.js +49 -0
- package/dist/next/client/index.js.map +1 -0
- package/dist/next/client/store/index.d.ts +3 -0
- package/dist/next/client/store/index.js +52 -0
- package/dist/next/client/store/index.js.map +1 -0
- package/dist/next/client/store/store.d.ts +13 -0
- package/dist/next/client/store/store.js +32 -0
- package/dist/next/client/store/store.js.map +1 -0
- package/dist/next/client/store/useStore.d.ts +3 -0
- package/dist/next/client/store/useStore.js +14 -0
- package/dist/next/client/store/useStore.js.map +1 -0
- package/dist/next/client/useRownd.d.ts +3 -0
- package/dist/next/client/useRownd.js +32 -0
- package/dist/next/client/useRownd.js.map +1 -0
- package/dist/next/client/withRowndRequireSignIn.d.ts +8 -0
- package/dist/next/client/withRowndRequireSignIn.js +19 -0
- package/dist/next/client/withRowndRequireSignIn.js.map +1 -0
- package/dist/next/index.d.ts +6 -0
- package/dist/next/server/getRowndAccessToken.d.ts +3 -0
- package/dist/next/server/getRowndAccessToken.js +11 -0
- package/dist/next/server/getRowndAccessToken.js.map +1 -0
- package/dist/next/server/getRowndUser.d.ts +11 -0
- package/dist/next/server/getRowndUser.js +11 -0
- package/dist/next/server/getRowndUser.js.map +1 -0
- package/dist/next/server/getRowndUserId.d.ts +3 -0
- package/dist/next/server/getRowndUserId.js +11 -0
- package/dist/next/server/getRowndUserId.js.map +1 -0
- package/dist/next/server/index.d.ts +8 -0
- package/dist/next/server/isAuthenticated.d.ts +3 -0
- package/dist/next/server/isAuthenticated.js +11 -0
- package/dist/next/server/isAuthenticated.js.map +1 -0
- package/dist/next/server/withRowndMiddleware.d.ts +4 -0
- package/dist/next/server/withRowndMiddleware.js +11 -0
- package/dist/next/server/withRowndMiddleware.js.map +1 -0
- package/dist/next/useRownd.d.ts +3 -0
- package/dist/next-server.d.ts +1 -0
- package/dist/next-server.js +15 -0
- package/dist/next-server.js.map +1 -0
- package/dist/next.d.ts +1 -0
- package/dist/next.js +11 -0
- package/dist/next.js.map +1 -0
- package/dist/remix/RemixRowndProvider.d.ts +5 -0
- package/dist/remix/RemixRowndProvider.js +28 -0
- package/dist/remix/RemixRowndProvider.js.map +1 -0
- package/dist/remix/client/RemixClientScript.d.ts +4 -0
- package/dist/remix/client/RemixClientScript.js +22 -0
- package/dist/remix/client/RemixClientScript.js.map +1 -0
- package/dist/remix/client/useRownd.d.ts +4 -0
- package/dist/remix/client/useRownd.js +35 -0
- package/dist/remix/client/useRownd.js.map +1 -0
- package/dist/remix/client/withRowndRequireSignIn.d.ts +4 -0
- package/dist/remix/client/withRowndRequireSignIn.js +27 -0
- package/dist/remix/client/withRowndRequireSignIn.js.map +1 -0
- package/dist/remix/index.d.ts +7 -0
- package/dist/remix/server/getRowndUser.d.ts +3 -0
- package/dist/remix/server/getRowndUser.js +11 -0
- package/dist/remix/server/getRowndUser.js.map +1 -0
- package/dist/remix/server/getRowndUserId.d.ts +1 -0
- package/dist/remix/server/getRowndUserId.js +8 -0
- package/dist/remix/server/getRowndUserId.js.map +1 -0
- package/dist/remix/server/index.d.ts +8 -0
- package/dist/remix/server/isAuthenticated.d.ts +1 -0
- package/dist/remix/server/isAuthenticated.js +8 -0
- package/dist/remix/server/isAuthenticated.js.map +1 -0
- package/dist/remix/server/withRowndActionHandler.d.ts +2 -0
- package/dist/remix/server/withRowndActionHandler.js +41 -0
- package/dist/remix/server/withRowndActionHandler.js.map +1 -0
- package/dist/remix/server/withRowndLoader.d.ts +13 -0
- package/dist/remix/server/withRowndLoader.js +19 -0
- package/dist/remix/server/withRowndLoader.js.map +1 -0
- package/dist/remix-server.d.ts +1 -0
- package/dist/remix-server.js +15 -0
- package/dist/remix-server.js.map +1 -0
- package/dist/remix.d.ts +1 -0
- package/dist/remix.js +17 -0
- package/dist/remix.js.map +1 -0
- package/dist/ssr/hooks/useCookie.d.ts +7 -0
- package/dist/ssr/hooks/useCookie.js +22 -0
- package/dist/ssr/hooks/useCookie.js.map +1 -0
- package/dist/ssr/server/cookie.d.ts +13 -0
- package/dist/ssr/server/cookie.js +51 -0
- package/dist/ssr/server/cookie.js.map +1 -0
- package/dist/ssr/server/token.d.ts +44 -0
- package/dist/ssr/server/token.js +128 -0
- package/dist/ssr/server/token.js.map +1 -0
- package/dist/ssr/server/token.test.d.ts +1 -0
- package/dist/utils/listeners.d.ts +8 -0
- package/dist/utils/listeners.js +15 -0
- package/dist/utils/listeners.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { useRownd } from './RowndContext';
|
|
2
|
+
import { default as RequireSignIn } from '../components/RequireSignIn';
|
|
3
|
+
import { default as SignedIn } from '../components/SignedIn';
|
|
4
|
+
import { default as SignedOut } from '../components/SignedOut';
|
|
5
|
+
|
|
6
|
+
declare const RowndProvider: import('react').FC<import('./RowndContext').RowndProviderProps>;
|
|
7
|
+
export { RowndProvider, useRownd, RequireSignIn, SignedIn, SignedOut };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/context/index.tsx"],"sourcesContent":["import { useRownd } from './RowndContext';\nimport RequireSignIn from '../components/RequireSignIn';\nimport SignedIn from '../components/SignedIn';\nimport SignedOut from '../components/SignedOut';\nimport { ReactRowndProvider } from './ReactRowndProvider';\n\nconst RowndProvider = ReactRowndProvider;\n\nexport { RowndProvider, useRownd, RequireSignIn, SignedIn, SignedOut };\n"],"names":["RowndProvider","ReactRowndProvider"],"mappings":";;;AAMA,MAAMA,IAAgBC;"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
type AuthLevel = 'instant' | 'guest' | 'unverified' | 'verified';
|
|
2
|
+
type Unsubscribe = () => void;
|
|
3
|
+
export type TRowndContext = {
|
|
4
|
+
requestSignIn: (e?: SignInProps) => void;
|
|
5
|
+
signOut: () => void;
|
|
6
|
+
manageAccount: () => void;
|
|
7
|
+
setUser: (e: UserDataContext) => Promise<UserContext>;
|
|
8
|
+
setUserValue: (key: string, value: any) => Promise<UserContext>;
|
|
9
|
+
getAccessToken: (e?: {
|
|
10
|
+
token?: string;
|
|
11
|
+
provider?: string;
|
|
12
|
+
tokenType?: 'id_token' | 'access_token' | string;
|
|
13
|
+
waitForToken?: boolean;
|
|
14
|
+
forceRefresh?: boolean;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}) => Promise<string | undefined | null>;
|
|
17
|
+
getFirebaseIdToken: (token: string) => Promise<string>;
|
|
18
|
+
getAppConfig: () => any;
|
|
19
|
+
onAuthenticated: (callback: (userData: UserDataContext) => void) => Unsubscribe;
|
|
20
|
+
passkeys: {
|
|
21
|
+
register: () => void;
|
|
22
|
+
authenticate: () => void;
|
|
23
|
+
};
|
|
24
|
+
is_authenticated: boolean;
|
|
25
|
+
is_initializing: boolean;
|
|
26
|
+
auth_level?: AuthLevel;
|
|
27
|
+
access_token: string | null;
|
|
28
|
+
auth: AuthContext;
|
|
29
|
+
user: UserContext;
|
|
30
|
+
events: {
|
|
31
|
+
addEventListener: (type: string, callback: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined) => void;
|
|
32
|
+
removeEventListener: (type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean) => void;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export declare enum RequestSignInIntent {
|
|
36
|
+
SignUp = "sign_up",
|
|
37
|
+
SignIn = "sign_in"
|
|
38
|
+
}
|
|
39
|
+
export type SignInProps = {
|
|
40
|
+
identifier?: string;
|
|
41
|
+
auto_sign_in?: boolean;
|
|
42
|
+
init_data?: Record<string, string | number | boolean | object>;
|
|
43
|
+
post_login_redirect?: string;
|
|
44
|
+
include_user_data?: boolean;
|
|
45
|
+
redirect?: boolean;
|
|
46
|
+
intent?: RequestSignInIntent;
|
|
47
|
+
group_to_join?: string;
|
|
48
|
+
prevent_closing?: boolean;
|
|
49
|
+
} & ({
|
|
50
|
+
method?: string;
|
|
51
|
+
} | {
|
|
52
|
+
method: 'one_tap';
|
|
53
|
+
method_options?: {
|
|
54
|
+
prompt_parent_id?: string;
|
|
55
|
+
};
|
|
56
|
+
} | {
|
|
57
|
+
method: 'email' | 'phone' | 'google' | 'apple' | 'passkeys' | 'anonymous';
|
|
58
|
+
});
|
|
59
|
+
type AuthContext = {
|
|
60
|
+
access_token: string | null;
|
|
61
|
+
app_id?: string;
|
|
62
|
+
is_authenticated: boolean;
|
|
63
|
+
is_verified_user?: boolean;
|
|
64
|
+
auth_level?: AuthLevel;
|
|
65
|
+
};
|
|
66
|
+
export type UserContext = {
|
|
67
|
+
data: UserDataContext;
|
|
68
|
+
groups: UserGroup[];
|
|
69
|
+
redacted_fields: string[];
|
|
70
|
+
verified_data: {
|
|
71
|
+
[key: string]: any | null;
|
|
72
|
+
};
|
|
73
|
+
meta: {
|
|
74
|
+
[key: string]: any | null;
|
|
75
|
+
};
|
|
76
|
+
instant_user?: {
|
|
77
|
+
is_initializing: boolean;
|
|
78
|
+
};
|
|
79
|
+
is_loading: boolean;
|
|
80
|
+
};
|
|
81
|
+
export type UserDataContext = {
|
|
82
|
+
user_id?: string;
|
|
83
|
+
email?: string | null;
|
|
84
|
+
phone?: string | null;
|
|
85
|
+
[key: string]: any;
|
|
86
|
+
};
|
|
87
|
+
export interface UserGroup {
|
|
88
|
+
group: Group;
|
|
89
|
+
member: GroupMember;
|
|
90
|
+
}
|
|
91
|
+
export interface Group {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
app_id: string;
|
|
95
|
+
admission_policy: string;
|
|
96
|
+
created_at: string;
|
|
97
|
+
updated_at: string;
|
|
98
|
+
updated_by?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface GroupMember {
|
|
101
|
+
id: string;
|
|
102
|
+
app_id: string;
|
|
103
|
+
user_id: string;
|
|
104
|
+
roles: string[];
|
|
105
|
+
group_id: string;
|
|
106
|
+
state: string;
|
|
107
|
+
invited_by?: string;
|
|
108
|
+
added_by?: string;
|
|
109
|
+
updated_at?: Date;
|
|
110
|
+
updated_by?: string;
|
|
111
|
+
}
|
|
112
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TRowndContext } from '../context/types';
|
|
2
|
+
|
|
3
|
+
type HubListenerInternalCallback = (prevState: TRowndContext) => TRowndContext;
|
|
4
|
+
type HubListenerCallback = {
|
|
5
|
+
state: any;
|
|
6
|
+
api: any;
|
|
7
|
+
callback: (e: HubListenerInternalCallback) => void;
|
|
8
|
+
};
|
|
9
|
+
declare const useHub: () => {
|
|
10
|
+
setInitialHubState: () => {
|
|
11
|
+
requestSignIn: (...args: any[]) => any;
|
|
12
|
+
getAccessToken: (...args: any[]) => Promise<string | undefined | null>;
|
|
13
|
+
signOut: (...args: any[]) => any;
|
|
14
|
+
manageAccount: (...args: any[]) => any;
|
|
15
|
+
passkeys: {
|
|
16
|
+
register: (...args: any[]) => any;
|
|
17
|
+
authenticate: (...args: any[]) => any;
|
|
18
|
+
};
|
|
19
|
+
setUser: (...args: any[]) => any;
|
|
20
|
+
setUserValue: (...args: any[]) => any;
|
|
21
|
+
getFirebaseIdToken: (...args: any[]) => any;
|
|
22
|
+
getAppConfig: () => any;
|
|
23
|
+
events: {
|
|
24
|
+
addEventListener: (...args: any[]) => any;
|
|
25
|
+
removeEventListener: (...args: any[]) => any;
|
|
26
|
+
};
|
|
27
|
+
is_initializing: boolean;
|
|
28
|
+
is_authenticated: boolean;
|
|
29
|
+
access_token: null;
|
|
30
|
+
auth: {
|
|
31
|
+
access_token: null;
|
|
32
|
+
is_authenticated: boolean;
|
|
33
|
+
};
|
|
34
|
+
user: {
|
|
35
|
+
data: {};
|
|
36
|
+
groups: never[];
|
|
37
|
+
redacted_fields: never[];
|
|
38
|
+
verified_data: {};
|
|
39
|
+
meta: {};
|
|
40
|
+
instant_user: {
|
|
41
|
+
is_initializing: boolean;
|
|
42
|
+
};
|
|
43
|
+
is_loading: boolean;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
hubListenerCb: ({ state, api, callback }: HubListenerCallback) => void;
|
|
47
|
+
};
|
|
48
|
+
export default useHub;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { useRef as b, useCallback as s } from "react";
|
|
2
|
+
const O = () => {
|
|
3
|
+
const a = b(null), u = b([]), r = s(
|
|
4
|
+
(e, n) => {
|
|
5
|
+
if (n.length === 1 || e === void 0)
|
|
6
|
+
return e == null ? void 0 : e[n[0]];
|
|
7
|
+
const i = n[0];
|
|
8
|
+
return r(
|
|
9
|
+
e == null ? void 0 : e[i],
|
|
10
|
+
n == null ? void 0 : n.filter((c) => c !== i)
|
|
11
|
+
);
|
|
12
|
+
},
|
|
13
|
+
[]
|
|
14
|
+
), t = s(
|
|
15
|
+
(e, ...n) => {
|
|
16
|
+
const i = r(a.current, e);
|
|
17
|
+
if (i)
|
|
18
|
+
return i(...n);
|
|
19
|
+
u.current.push({ fnNames: e, args: n });
|
|
20
|
+
},
|
|
21
|
+
[a, r]
|
|
22
|
+
), o = s(
|
|
23
|
+
(...e) => t(["requestSignIn"], ...e),
|
|
24
|
+
[t]
|
|
25
|
+
), l = s(
|
|
26
|
+
(...e) => t(["getAccessToken"], ...e),
|
|
27
|
+
[t]
|
|
28
|
+
), _ = s(
|
|
29
|
+
(...e) => t(["signOut"], ...e),
|
|
30
|
+
[t]
|
|
31
|
+
), g = s(
|
|
32
|
+
(...e) => t(["user", "manageAccount"], ...e),
|
|
33
|
+
[t]
|
|
34
|
+
), h = s(
|
|
35
|
+
(...e) => t(["user", "set"], ...e),
|
|
36
|
+
[t]
|
|
37
|
+
), d = s(
|
|
38
|
+
(...e) => t(["user", "setValue"], ...e),
|
|
39
|
+
[t]
|
|
40
|
+
), p = s(
|
|
41
|
+
(...e) => t(["firebase", "getIdToken"], ...e),
|
|
42
|
+
[t]
|
|
43
|
+
), k = s(
|
|
44
|
+
(...e) => t(["events", "addEventListener"], ...e),
|
|
45
|
+
[t]
|
|
46
|
+
), v = s(
|
|
47
|
+
(...e) => t(["events", "removeEventListener"], ...e),
|
|
48
|
+
[t]
|
|
49
|
+
), f = s(
|
|
50
|
+
() => t(["getAppConfig"]),
|
|
51
|
+
[t]
|
|
52
|
+
), A = s(
|
|
53
|
+
(...e) => t(["auth", "passkeys", "promptForPasskeyRegistration"], ...e),
|
|
54
|
+
[t]
|
|
55
|
+
), y = s(
|
|
56
|
+
(...e) => t(["auth", "passkeys", "authenticate"], ...e),
|
|
57
|
+
[t]
|
|
58
|
+
), z = s(() => {
|
|
59
|
+
if (u.current.length) {
|
|
60
|
+
for (const { fnNames: e, args: n } of u.current) {
|
|
61
|
+
const i = r(a.current, e);
|
|
62
|
+
if (!i)
|
|
63
|
+
return;
|
|
64
|
+
i(...n);
|
|
65
|
+
}
|
|
66
|
+
u.current.length = 0;
|
|
67
|
+
}
|
|
68
|
+
}, [u, r]), q = s(() => ({
|
|
69
|
+
requestSignIn: o,
|
|
70
|
+
getAccessToken: l,
|
|
71
|
+
signOut: _,
|
|
72
|
+
manageAccount: g,
|
|
73
|
+
passkeys: {
|
|
74
|
+
register: A,
|
|
75
|
+
authenticate: y
|
|
76
|
+
},
|
|
77
|
+
setUser: h,
|
|
78
|
+
setUserValue: d,
|
|
79
|
+
getFirebaseIdToken: p,
|
|
80
|
+
getAppConfig: f,
|
|
81
|
+
events: {
|
|
82
|
+
addEventListener: k,
|
|
83
|
+
removeEventListener: v
|
|
84
|
+
},
|
|
85
|
+
is_initializing: !0,
|
|
86
|
+
is_authenticated: !1,
|
|
87
|
+
access_token: null,
|
|
88
|
+
auth: {
|
|
89
|
+
access_token: null,
|
|
90
|
+
is_authenticated: !1
|
|
91
|
+
},
|
|
92
|
+
user: {
|
|
93
|
+
data: {},
|
|
94
|
+
groups: [],
|
|
95
|
+
redacted_fields: [],
|
|
96
|
+
verified_data: {},
|
|
97
|
+
meta: {},
|
|
98
|
+
instant_user: {
|
|
99
|
+
is_initializing: !1
|
|
100
|
+
},
|
|
101
|
+
is_loading: !1
|
|
102
|
+
}
|
|
103
|
+
}), [
|
|
104
|
+
o,
|
|
105
|
+
l,
|
|
106
|
+
_,
|
|
107
|
+
g,
|
|
108
|
+
A,
|
|
109
|
+
y,
|
|
110
|
+
h,
|
|
111
|
+
d,
|
|
112
|
+
p,
|
|
113
|
+
f,
|
|
114
|
+
k,
|
|
115
|
+
v
|
|
116
|
+
]), B = s(
|
|
117
|
+
({ state: e, api: n, callback: i }) => {
|
|
118
|
+
a.current = n, i((c) => {
|
|
119
|
+
var H, I, L, C, E, T, P, S;
|
|
120
|
+
return {
|
|
121
|
+
...c,
|
|
122
|
+
is_initializing: e.is_initializing,
|
|
123
|
+
is_authenticated: !!((H = e.auth) != null && H.access_token),
|
|
124
|
+
auth_level: e.auth.auth_level,
|
|
125
|
+
access_token: ((I = e.auth) == null ? void 0 : I.access_token) || null,
|
|
126
|
+
auth: {
|
|
127
|
+
access_token: (L = e.auth) == null ? void 0 : L.access_token,
|
|
128
|
+
app_id: (C = e.auth) == null ? void 0 : C.app_id,
|
|
129
|
+
is_authenticated: !!((E = e.auth) != null && E.access_token),
|
|
130
|
+
is_verified_user: (T = e.auth) == null ? void 0 : T.is_verified_user,
|
|
131
|
+
auth_level: e.auth.auth_level
|
|
132
|
+
},
|
|
133
|
+
user: {
|
|
134
|
+
...e.user,
|
|
135
|
+
instant_user: {
|
|
136
|
+
is_initializing: !!((S = (P = e.user) == null ? void 0 : P.instant_user) != null && S.is_initializing)
|
|
137
|
+
},
|
|
138
|
+
is_loading: !!e.user.is_loading
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
}), z();
|
|
142
|
+
},
|
|
143
|
+
[z]
|
|
144
|
+
);
|
|
145
|
+
return {
|
|
146
|
+
setInitialHubState: q,
|
|
147
|
+
hubListenerCb: B
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
export {
|
|
151
|
+
O as default
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=useHub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHub.js","sources":["../../src/hooks/useHub.tsx"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport { TRowndContext } from '../context/types';\n\ntype HubListenerInternalCallback = (prevState: TRowndContext) => TRowndContext;\n\ntype HubListenerCallback = {\n state: any;\n api: any;\n callback: (e: HubListenerInternalCallback) => void;\n};\n\nconst useHub = () => {\n const hubApi = useRef<{ [key: string]: any } | null>(null);\n const apiQueue = useRef<{ fnNames: string[]; args: any[] }[]>([]);\n\n const selectHubApi = useCallback(\n (obj: { [key: string]: any } | null, fnNames: string[]): any => {\n if (fnNames.length === 1 || obj === undefined) {\n return obj?.[fnNames[0]];\n }\n\n const firstKey = fnNames[0];\n return selectHubApi(\n obj?.[firstKey],\n fnNames?.filter((x) => x !== firstKey)\n );\n },\n []\n );\n\n const callHubApi = useCallback(\n (fnNames: string[], ...args: any[]) => {\n const selectedHubApi = selectHubApi(hubApi.current, fnNames);\n if (selectedHubApi) {\n return selectedHubApi(...args);\n }\n\n apiQueue.current.push({ fnNames, args });\n },\n [hubApi, selectHubApi]\n );\n\n const requestSignIn = useCallback(\n (...args: any[]) => callHubApi(['requestSignIn'], ...args),\n [callHubApi]\n );\n const getAccessToken = useCallback(\n (...args: any[]): Promise<string | undefined | null> =>\n callHubApi(['getAccessToken'], ...args),\n [callHubApi]\n );\n const signOut = useCallback(\n (...args: any[]) => callHubApi(['signOut'], ...args),\n [callHubApi]\n );\n const manageAccount = useCallback(\n (...args: any[]) => callHubApi(['user', 'manageAccount'], ...args),\n [callHubApi]\n );\n const setUser = useCallback(\n (...args: any[]) => callHubApi(['user', 'set'], ...args),\n [callHubApi]\n );\n const setUserValue = useCallback(\n (...args: any[]) => callHubApi(['user', 'setValue'], ...args),\n [callHubApi]\n );\n const getFirebaseIdToken = useCallback(\n (...args: any[]) => callHubApi(['firebase', 'getIdToken'], ...args),\n [callHubApi]\n );\n\n const addEventListener = useCallback(\n (...args: any[]) => callHubApi(['events', 'addEventListener'], ...args),\n [callHubApi]\n );\n\n const removeEventListener = useCallback(\n (...args: any[]) => callHubApi(['events', 'removeEventListener'], ...args),\n [callHubApi]\n );\n\n const getAppConfig = useCallback(\n () => callHubApi(['getAppConfig']),\n [callHubApi]\n );\n\n const registerPasskey = useCallback(\n (...args: any[]) =>\n callHubApi(['auth', 'passkeys', 'promptForPasskeyRegistration'], ...args),\n [callHubApi]\n );\n\n const authenticatePasskey = useCallback(\n (...args: any[]) =>\n callHubApi(['auth', 'passkeys', 'authenticate'], ...args),\n [callHubApi]\n );\n\n const flushApiQueue = useCallback(() => {\n // Flush the call stack if needed\n if (!apiQueue.current.length) {\n return;\n }\n\n for (const { fnNames, args } of apiQueue.current) {\n const selectedHubApi = selectHubApi(hubApi.current, fnNames);\n if (!selectedHubApi) {\n return;\n }\n\n selectedHubApi(...args);\n }\n\n apiQueue.current.length = 0;\n }, [apiQueue, selectHubApi]);\n\n const setInitialHubState = useCallback(() => {\n return {\n requestSignIn,\n getAccessToken,\n signOut,\n manageAccount,\n passkeys: {\n register: registerPasskey,\n authenticate: authenticatePasskey,\n },\n setUser,\n setUserValue,\n getFirebaseIdToken,\n getAppConfig,\n events: {\n addEventListener,\n removeEventListener,\n },\n is_initializing: true,\n is_authenticated: false,\n access_token: null,\n auth: {\n access_token: null,\n is_authenticated: false,\n },\n\n user: {\n data: {},\n groups: [],\n redacted_fields: [],\n verified_data: {},\n meta: {},\n instant_user: {\n is_initializing: false,\n },\n is_loading: false,\n },\n };\n }, [\n requestSignIn,\n getAccessToken,\n signOut,\n manageAccount,\n registerPasskey,\n authenticatePasskey,\n setUser,\n setUserValue,\n getFirebaseIdToken,\n getAppConfig,\n addEventListener,\n removeEventListener,\n ]);\n\n const hubListenerCb = useCallback(\n ({ state, api, callback }: HubListenerCallback) => {\n hubApi.current = api;\n callback((prev) => ({\n ...prev,\n ...{\n is_initializing: state.is_initializing,\n is_authenticated: !!state.auth?.access_token,\n auth_level: state.auth.auth_level,\n access_token: state.auth?.access_token || null,\n auth: {\n access_token: state.auth?.access_token,\n app_id: state.auth?.app_id,\n is_authenticated: !!state.auth?.access_token,\n is_verified_user: state.auth?.is_verified_user,\n auth_level: state.auth.auth_level,\n },\n user: {\n ...state.user,\n instant_user: {\n is_initializing: Boolean(\n state.user?.instant_user?.is_initializing\n ),\n },\n is_loading: Boolean(state.user.is_loading),\n },\n },\n }));\n flushApiQueue();\n },\n [flushApiQueue]\n );\n\n return {\n setInitialHubState,\n hubListenerCb,\n };\n};\n\nexport default useHub;\n"],"names":["useHub","hubApi","useRef","apiQueue","selectHubApi","useCallback","obj","fnNames","firstKey","x","callHubApi","args","selectedHubApi","requestSignIn","getAccessToken","signOut","manageAccount","setUser","setUserValue","getFirebaseIdToken","addEventListener","removeEventListener","getAppConfig","registerPasskey","authenticatePasskey","flushApiQueue","setInitialHubState","hubListenerCb","state","api","callback","prev","_a","_b","_c","_d","_e","_f","_h","_g"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './context';
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './index'
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RowndProvider as r } from "./context/index.js";
|
|
2
|
+
import { default as d } from "./components/RequireSignIn.js";
|
|
3
|
+
import { default as n } from "./components/SignedIn.js";
|
|
4
|
+
import { default as u } from "./components/SignedOut.js";
|
|
5
|
+
import { useRownd as m } from "./context/RowndContext.js";
|
|
6
|
+
export {
|
|
7
|
+
d as RequireSignIn,
|
|
8
|
+
r as RowndProvider,
|
|
9
|
+
n as SignedIn,
|
|
10
|
+
u as SignedOut,
|
|
11
|
+
m as useRownd
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import e, { lazy as r, Suspense as l } from "react";
|
|
2
|
+
const a = r(() => import("./client/index.js"));
|
|
3
|
+
function c({ children: t, ...n }) {
|
|
4
|
+
return /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(l, { fallback: null }, /* @__PURE__ */ e.createElement(a, { ...n })), t);
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
c as RowndProvider
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=RowndProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowndProvider.js","sources":["../../src/next/RowndProvider.tsx"],"sourcesContent":["import React, { lazy, Suspense } from 'react';\nimport { RowndProviderProps } from '../context/RowndContext';\nconst Client = lazy(() => import('./client'));\n\nfunction RowndProvider({ children, ...props }: RowndProviderProps) {\n return (\n <>\n <Suspense fallback={null}>\n <Client {...props} />\n </Suspense>\n {children}\n </>\n );\n}\n\nexport { RowndProvider };\n"],"names":["Client","lazy","RowndProvider","children","props","React","Suspense"],"mappings":";AAEA,MAAMA,IAASC,EAAK,MAAM,OAAO,mBAAU,CAAC;AAE5C,SAASC,EAAc,EAAE,UAAAC,GAAU,GAAGC,KAA6B;AACjE,SACE,gBAAAC,EAAA,cAAAA,EAAA,UAAA,MACE,gBAAAA,EAAA,cAACC,GAAA,EAAS,UAAU,KAAA,GAClB,gBAAAD,EAAA,cAACL,GAAA,EAAQ,GAAGI,EAAA,CAAO,CACrB,GACCD,CACH;AAEJ;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState as S, useRef as a, useEffect as g, useMemo as p } from "react";
|
|
3
|
+
import l from "../../../ssr/hooks/useCookie.js";
|
|
4
|
+
import { useRownd as d } from "../useRownd.js";
|
|
5
|
+
const _ = ({ isFallback: e }) => {
|
|
6
|
+
const { access_token: n, is_initializing: t, requestSignIn: i, is_authenticated: r } = d(), { cookieSignIn: u, cookieSignOut: s } = l(d), [c, m] = S(!1), o = a(void 0);
|
|
7
|
+
g(() => {
|
|
8
|
+
if (!(t || o.current === n)) {
|
|
9
|
+
if (o.current = n, n && e) {
|
|
10
|
+
u(() => window.location.reload());
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
!n && !e && (m(!0), s(() => window.location.reload()));
|
|
14
|
+
}
|
|
15
|
+
}, [
|
|
16
|
+
u,
|
|
17
|
+
t,
|
|
18
|
+
n,
|
|
19
|
+
e,
|
|
20
|
+
s
|
|
21
|
+
]);
|
|
22
|
+
const f = p(() => !e && (!!o.current || c), [e, o.current, c]);
|
|
23
|
+
return g(() => {
|
|
24
|
+
!r && !t && !f && i({ prevent_closing: !0 });
|
|
25
|
+
}, [r, t, i, f]), null;
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
_ as default
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=RequireSignIn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequireSignIn.js","sources":["../../../../src/next/client/components/RequireSignIn.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport useCookie from '../../../ssr/hooks/useCookie';\nimport { useRownd } from '../useRownd';\n\ntype RequireSignInProps = {\n isFallback: boolean;\n\n};\n\nconst RequireSignIn = ({ isFallback }: RequireSignInProps) => {\n const { access_token, is_initializing, requestSignIn, is_authenticated } = useRownd();\n const { cookieSignIn, cookieSignOut } = useCookie(useRownd);\n const [signingOut, setSigningOut] = useState(false);\n\n // Trigger cookieSignIn when new accessToken is available.\n const prevAccessToken = useRef<string | null | undefined>(undefined);\n useEffect(() => {\n if (is_initializing || prevAccessToken.current === access_token) {\n return;\n }\n\n prevAccessToken.current = access_token;\n\n if (access_token && isFallback) {\n cookieSignIn(() => window.location.reload());\n return;\n }\n\n // Handle sign out\n if (!access_token && !isFallback) {\n setSigningOut(true);\n cookieSignOut(() => window.location.reload());\n }\n }, [\n cookieSignIn,\n is_initializing,\n access_token,\n isFallback,\n cookieSignOut,\n ]);\n\n // This prevents the Hub sign in modal from being shown when the user is signing out.\n const isRequireSignInDisabled = useMemo(() => {\n return !isFallback && (Boolean(prevAccessToken.current) || signingOut);\n }, [isFallback, prevAccessToken.current, signingOut]);\n\n useEffect(() => {\n if (!is_authenticated && !is_initializing && !isRequireSignInDisabled) {\n requestSignIn({ prevent_closing: true });\n }\n }, [is_authenticated, is_initializing, requestSignIn, isRequireSignInDisabled]);\n\n return null;\n};\n\nexport default RequireSignIn;\n"],"names":["RequireSignIn","isFallback","access_token","is_initializing","requestSignIn","is_authenticated","useRownd","cookieSignIn","cookieSignOut","useCookie","signingOut","setSigningOut","useState","prevAccessToken","useRef","useEffect","isRequireSignInDisabled","useMemo"],"mappings":";;;;AAWA,MAAMA,IAAgB,CAAC,EAAE,YAAAC,QAAqC;AAC5D,QAAM,EAAE,cAAAC,GAAc,iBAAAC,GAAiB,eAAAC,GAAe,kBAAAC,EAAA,IAAqBC,EAAA,GACrE,EAAE,cAAAC,GAAc,eAAAC,MAAkBC,EAAUH,CAAQ,GACpD,CAACI,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAG5CC,IAAkBC,EAAkC,MAAS;AACnE,EAAAC,EAAU,MAAM;AACd,QAAI,EAAAZ,KAAmBU,EAAgB,YAAYX,IAMnD;AAAA,UAFAW,EAAgB,UAAUX,GAEtBA,KAAgBD,GAAY;AAC9B,QAAAM,EAAa,MAAM,OAAO,SAAS,OAAA,CAAQ;AAC3C;AAAA,MACF;AAGA,MAAI,CAACL,KAAgB,CAACD,MACpBU,EAAc,EAAI,GAClBH,EAAc,MAAM,OAAO,SAAS,OAAA,CAAQ;AAAA;AAAA,EAEhD,GAAG;AAAA,IACDD;AAAA,IACAJ;AAAA,IACAD;AAAA,IACAD;AAAA,IACAO;AAAA,EAAA,CACD;AAGD,QAAMQ,IAA0BC,EAAQ,MAC/B,CAAChB,MAAe,EAAQY,EAAgB,WAAYH,IAC1D,CAACT,GAAYY,EAAgB,SAASH,CAAU,CAAC;AAEpD,SAAAK,EAAU,MAAM;AACd,IAAI,CAACV,KAAoB,CAACF,KAAmB,CAACa,KAC5CZ,EAAc,EAAE,iBAAiB,IAAM;AAAA,EAE3C,GAAG,CAACC,GAAkBF,GAAiBC,GAAeY,CAAuB,CAAC,GAEvE;AACT;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useRef as c, useEffect as d } from "react";
|
|
3
|
+
import l from "../../../ssr/hooks/useCookie.js";
|
|
4
|
+
import { useRownd as s } from "../useRownd.js";
|
|
5
|
+
const m = () => {
|
|
6
|
+
const { access_token: n, is_initializing: t } = s(), { cookieSignIn: r, cookieSignOut: i } = l(s), e = c(void 0), o = c(!1);
|
|
7
|
+
return d(() => {
|
|
8
|
+
if (t)
|
|
9
|
+
return;
|
|
10
|
+
if (!o.current) {
|
|
11
|
+
o.current = !0, e.current = n, n && r();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (e.current === n)
|
|
15
|
+
return;
|
|
16
|
+
const u = !e.current && !!n, f = !!e.current && !n, a = !!e.current && !!n;
|
|
17
|
+
if (e.current = n, u) {
|
|
18
|
+
r(() => window.location.reload());
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (a) {
|
|
22
|
+
r();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
f && i(() => window.location.reload());
|
|
26
|
+
}, [
|
|
27
|
+
r,
|
|
28
|
+
t,
|
|
29
|
+
n,
|
|
30
|
+
i
|
|
31
|
+
]), null;
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
m as default
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=RowndServerStateSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowndServerStateSync.js","sources":["../../../../src/next/client/components/RowndServerStateSync.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport useCookie from '../../../ssr/hooks/useCookie';\nimport { useRownd } from '../useRownd';\n\nconst RowndServerStateSync = () => {\n const { access_token, is_initializing } = useRownd();\n const { cookieSignIn, cookieSignOut } = useCookie(useRownd);\n\n // Trigger cookieSignIn when new accessToken is available.\n const prevAccessToken = useRef<string | null | undefined>(undefined);\n const hasInitialized = useRef(false);\n\n useEffect(() => {\n if (is_initializing) {\n return;\n }\n\n // Track initialization state\n if (!hasInitialized.current) {\n hasInitialized.current = true;\n prevAccessToken.current = access_token;\n\n // If we have a token on initial load, sync it without reload\n if (access_token) {\n cookieSignIn();\n }\n return;\n }\n\n if (prevAccessToken.current === access_token) {\n return;\n }\n\n const wasSignedOut = !prevAccessToken.current;\n const isSigningIn = wasSignedOut && !!access_token;\n const isSigningOut = !!prevAccessToken.current && !access_token;\n const isTokenRefresh = !!prevAccessToken.current && !!access_token;\n\n prevAccessToken.current = access_token;\n\n if (isSigningIn) {\n // User just signed in - sync cookie and reload\n // This ensures server has the cookie for initial authenticated render\n cookieSignIn(() => window.location.reload());\n return;\n }\n\n if (isTokenRefresh) {\n // Token was refreshed in background - sync cookie silently, no reload\n cookieSignIn();\n return;\n }\n\n if (isSigningOut) {\n // User signed out - sync cookie and reload\n cookieSignOut(() => window.location.reload());\n }\n }, [\n cookieSignIn,\n is_initializing,\n access_token,\n cookieSignOut,\n ]);\n\n return null;\n};\n\nexport default RowndServerStateSync;\n"],"names":["RowndServerStateSync","access_token","is_initializing","useRownd","cookieSignIn","cookieSignOut","useCookie","prevAccessToken","useRef","hasInitialized","useEffect","isSigningIn","isSigningOut","isTokenRefresh"],"mappings":";;;;AAMA,MAAMA,IAAuB,MAAM;AACjC,QAAM,EAAE,cAAAC,GAAc,iBAAAC,EAAA,IAAoBC,EAAA,GACpC,EAAE,cAAAC,GAAc,eAAAC,MAAkBC,EAAUH,CAAQ,GAGpDI,IAAkBC,EAAkC,MAAS,GAC7DC,IAAiBD,EAAO,EAAK;AAEnC,SAAAE,EAAU,MAAM;AACd,QAAIR;AACF;AAIF,QAAI,CAACO,EAAe,SAAS;AAC3B,MAAAA,EAAe,UAAU,IACzBF,EAAgB,UAAUN,GAGtBA,KACFG,EAAA;AAEF;AAAA,IACF;AAEA,QAAIG,EAAgB,YAAYN;AAC9B;AAIF,UAAMU,IADe,CAACJ,EAAgB,WACF,CAAC,CAACN,GAChCW,IAAe,CAAC,CAACL,EAAgB,WAAW,CAACN,GAC7CY,IAAiB,CAAC,CAACN,EAAgB,WAAW,CAAC,CAACN;AAItD,QAFAM,EAAgB,UAAUN,GAEtBU,GAAa;AAGf,MAAAP,EAAa,MAAM,OAAO,SAAS,OAAA,CAAQ;AAC3C;AAAA,IACF;AAEA,QAAIS,GAAgB;AAElB,MAAAT,EAAA;AACA;AAAA,IACF;AAEA,IAAIQ,KAEFP,EAAc,MAAM,OAAO,SAAS,OAAA,CAAQ;AAAA,EAEhD,GAAG;AAAA,IACDD;AAAA,IACAF;AAAA,IACAD;AAAA,IACAI;AAAA,EAAA,CACD,GAEM;AACT;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import s, { useState as E, useRef as k, useEffect as i, useCallback as b } from "react";
|
|
3
|
+
import { store as o } from "./store/index.js";
|
|
4
|
+
import H from "../../context/HubScriptInjector/HubScriptInjector.js";
|
|
5
|
+
import L from "../../hooks/useHub.js";
|
|
6
|
+
import R from "../../ssr/hooks/useCookie.js";
|
|
7
|
+
import { useRownd as g } from "./useRownd.js";
|
|
8
|
+
import { getOnAuthenticatedListeners as v } from "../../utils/listeners.js";
|
|
9
|
+
const F = (h) => {
|
|
10
|
+
const { setInitialHubState: C, hubListenerCb: a } = L(), [c, u] = E(!1), f = k(!1);
|
|
11
|
+
i(() => {
|
|
12
|
+
f.current || (o.setState(C()), f.current = !0);
|
|
13
|
+
}, []);
|
|
14
|
+
const l = b(
|
|
15
|
+
(e) => {
|
|
16
|
+
o.setState(e);
|
|
17
|
+
},
|
|
18
|
+
[o]
|
|
19
|
+
), { access_token: t, is_initializing: r, is_authenticated: m, user: n } = g(), { cookieSignIn: d, cookieSignOut: p } = R(g), S = k(void 0);
|
|
20
|
+
i(() => {
|
|
21
|
+
if (!(r || S.current === t)) {
|
|
22
|
+
if (S.current = t, !t) {
|
|
23
|
+
u(!1), p();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
d().then(() => u(!0));
|
|
27
|
+
}
|
|
28
|
+
}, [r, t, p, d]), i(() => {
|
|
29
|
+
c && n.data.user_id && !r && m && v().forEach(({ callback: e }) => e(n.data));
|
|
30
|
+
}, [c, n.data.user_id, r, m]);
|
|
31
|
+
const I = b(({ state: e, api: _ }) => {
|
|
32
|
+
a({
|
|
33
|
+
state: e,
|
|
34
|
+
api: _,
|
|
35
|
+
callback: l
|
|
36
|
+
});
|
|
37
|
+
}, [a, l]);
|
|
38
|
+
return /* @__PURE__ */ s.createElement(s.Fragment, null, /* @__PURE__ */ s.createElement(
|
|
39
|
+
H,
|
|
40
|
+
{
|
|
41
|
+
stateListener: I,
|
|
42
|
+
...h
|
|
43
|
+
}
|
|
44
|
+
));
|
|
45
|
+
};
|
|
46
|
+
export {
|
|
47
|
+
F as default
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/next/client/index.tsx"],"sourcesContent":["'use client';\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { HubListenerProps, RowndProviderProps } from '../../context/RowndContext';\nimport { store } from './store';\nimport HubScriptInjector from '../../context/HubScriptInjector/HubScriptInjector';\nimport useHub from '../../hooks/useHub';\nimport { TRowndContext } from '../../context/types';\nimport useCookie from '../../ssr/hooks/useCookie';\nimport { useRownd } from './useRownd';\nimport {\n getOnAuthenticatedListeners,\n} from '../../utils/listeners';\n\nconst Client: React.FC<Omit<RowndProviderProps, 'children'>> = (props) => {\n const { setInitialHubState, hubListenerCb } = useHub();\n const [hasCookieSignedIn, setHasCookieSignedIn] = useState(false);\n\n const hasInitialized = useRef(false);\n useEffect(() => {\n if (hasInitialized.current) return;\n store.setState(setInitialHubState());\n hasInitialized.current = true;\n }, []);\n\n const setState: (\n partial:\n | Partial<TRowndContext>\n | ((state: TRowndContext) => Partial<TRowndContext>)\n ) => void = useCallback(\n (partial) => {\n store.setState(partial);\n },\n [store]\n );\n\n const { access_token, is_initializing, is_authenticated, user } = useRownd();\n const { cookieSignIn, cookieSignOut } = useCookie(useRownd);\n\n // Listen for access_token changes to determine when to sign(In/Out) cookies and state.\n const prevAccessToken = useRef<string | null | undefined>(undefined);\n useEffect(() => {\n if (is_initializing || prevAccessToken.current === access_token) return;\n\n prevAccessToken.current = access_token;\n\n if (!access_token) {\n setHasCookieSignedIn(false);\n cookieSignOut();\n return;\n }\n\n cookieSignIn().then(() => setHasCookieSignedIn(true));\n }, [is_initializing, access_token, cookieSignOut, cookieSignIn]);\n\n // Trigger onAuthenticated listeners when the user is authenticated and has a user_id\n useEffect(() => {\n if (hasCookieSignedIn && Boolean(user.data.user_id) && !is_initializing && is_authenticated) {\n getOnAuthenticatedListeners().forEach(({ callback }) => callback(user.data));\n }\n }, [hasCookieSignedIn, user.data.user_id, is_initializing, is_authenticated]);\n\n const stateListener = useCallback(({ state, api }: HubListenerProps) => {\n hubListenerCb({\n state,\n api,\n callback: setState,\n })\n }, [hubListenerCb, setState]);\n\n return (\n <>\n <HubScriptInjector\n stateListener={stateListener}\n {...props}\n />\n </>\n );\n};\n\nexport default Client;\n"],"names":["Client","props","setInitialHubState","hubListenerCb","useHub","hasCookieSignedIn","setHasCookieSignedIn","useState","hasInitialized","useRef","useEffect","store","setState","useCallback","partial","access_token","is_initializing","is_authenticated","user","useRownd","cookieSignIn","cookieSignOut","useCookie","prevAccessToken","getOnAuthenticatedListeners","callback","stateListener","state","api","React","HubScriptInjector"],"mappings":";;;;;;;;AAcA,MAAMA,IAAyD,CAACC,MAAU;AACxE,QAAM,EAAE,oBAAAC,GAAoB,eAAAC,EAAA,IAAkBC,EAAA,GACxC,CAACC,GAAmBC,CAAoB,IAAIC,EAAS,EAAK,GAE1DC,IAAiBC,EAAO,EAAK;AACnC,EAAAC,EAAU,MAAM;AACd,IAAIF,EAAe,YACnBG,EAAM,SAAST,GAAoB,GACnCM,EAAe,UAAU;AAAA,EAC3B,GAAG,CAAA,CAAE;AAEL,QAAMI,IAIMC;AAAA,IACV,CAACC,MAAY;AACX,MAAAH,EAAM,SAASG,CAAO;AAAA,IACxB;AAAA,IACA,CAACH,CAAK;AAAA,EAAA,GAGF,EAAE,cAAAI,GAAc,iBAAAC,GAAiB,kBAAAC,GAAkB,MAAAC,EAAA,IAASC,EAAA,GAC5D,EAAE,cAAAC,GAAc,eAAAC,MAAkBC,EAAUH,CAAQ,GAGpDI,IAAkBd,EAAkC,MAAS;AACnE,EAAAC,EAAU,MAAM;AACd,QAAI,EAAAM,KAAmBO,EAAgB,YAAYR,IAInD;AAAA,UAFAQ,EAAgB,UAAUR,GAEtB,CAACA,GAAc;AACjB,QAAAT,EAAqB,EAAK,GAC1Be,EAAA;AACA;AAAA,MACF;AAEA,MAAAD,EAAA,EAAe,KAAK,MAAMd,EAAqB,EAAI,CAAC;AAAA;AAAA,EACtD,GAAG,CAACU,GAAiBD,GAAcM,GAAeD,CAAY,CAAC,GAG/DV,EAAU,MAAM;AACd,IAAIL,KAA6Ba,EAAK,KAAK,WAAY,CAACF,KAAmBC,KACzEO,EAAA,EAA8B,QAAQ,CAAC,EAAE,UAAAC,QAAeA,EAASP,EAAK,IAAI,CAAC;AAAA,EAE/E,GAAG,CAACb,GAAmBa,EAAK,KAAK,SAASF,GAAiBC,CAAgB,CAAC;AAE5E,QAAMS,IAAgBb,EAAY,CAAC,EAAE,OAAAc,GAAO,KAAAC,QAA4B;AACtE,IAAAzB,EAAc;AAAA,MACZ,OAAAwB;AAAA,MACA,KAAAC;AAAA,MACA,UAAUhB;AAAA,IAAA,CACX;AAAA,EACH,GAAG,CAACT,GAAeS,CAAQ,CAAC;AAE5B,SACE,gBAAAiB,EAAA,cAAAA,EAAA,UAAA,MACE,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAAJ;AAAA,MACC,GAAGzB;AAAA,IAAA;AAAA,EAAA,CAER;AAEJ;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createStore as t } from "./store.js";
|
|
2
|
+
const e = () => (console.log("Rownd context/provider not initialized yet."), Promise.resolve(null)), n = t(
|
|
3
|
+
{
|
|
4
|
+
requestSignIn: () => {
|
|
5
|
+
},
|
|
6
|
+
getAccessToken: () => e(),
|
|
7
|
+
signOut: () => {
|
|
8
|
+
},
|
|
9
|
+
manageAccount: () => {
|
|
10
|
+
},
|
|
11
|
+
passkeys: {
|
|
12
|
+
register: () => {
|
|
13
|
+
},
|
|
14
|
+
authenticate: () => {
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
setUser: () => e(),
|
|
18
|
+
setUserValue: () => e(),
|
|
19
|
+
getFirebaseIdToken: () => e(),
|
|
20
|
+
getAppConfig: () => e(),
|
|
21
|
+
onAuthenticated: () => () => {
|
|
22
|
+
},
|
|
23
|
+
is_initializing: !0,
|
|
24
|
+
is_authenticated: !1,
|
|
25
|
+
access_token: null,
|
|
26
|
+
auth: {
|
|
27
|
+
access_token: null,
|
|
28
|
+
is_authenticated: !1
|
|
29
|
+
},
|
|
30
|
+
events: {
|
|
31
|
+
addEventListener: () => {
|
|
32
|
+
},
|
|
33
|
+
removeEventListener: () => {
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
user: {
|
|
37
|
+
data: {},
|
|
38
|
+
groups: [],
|
|
39
|
+
redacted_fields: [],
|
|
40
|
+
verified_data: {},
|
|
41
|
+
meta: {},
|
|
42
|
+
instant_user: {
|
|
43
|
+
is_initializing: !1
|
|
44
|
+
},
|
|
45
|
+
is_loading: !1
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
export {
|
|
50
|
+
n as store
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/next/client/store/index.ts"],"sourcesContent":["import { TRowndContext } from \"../../../context/types\";\nimport { createStore } from \"./store\";\n\nconst notInitialized = () => {\n console.log('Rownd context/provider not initialized yet.');\n return Promise.resolve(null as any);\n};\n\nexport const store = createStore<TRowndContext>(\n {\n requestSignIn: () => {},\n getAccessToken: () => notInitialized(),\n signOut: () => {},\n manageAccount: () => {},\n passkeys: {\n register: () => {},\n authenticate: () => {},\n },\n setUser: () => notInitialized(),\n setUserValue: () => notInitialized(),\n getFirebaseIdToken: () => notInitialized(),\n getAppConfig: () => notInitialized(),\n onAuthenticated: () => () => undefined,\n is_initializing: true,\n is_authenticated: false,\n access_token: null,\n auth: {\n access_token: null,\n is_authenticated: false,\n },\n events: {\n addEventListener: () => {},\n removeEventListener: () => {},\n },\n user: {\n data: {},\n groups: [],\n redacted_fields: [],\n verified_data: {},\n meta: {},\n instant_user: {\n is_initializing: false,\n },\n is_loading: false,\n },\n }\n);\n"],"names":["notInitialized","store","createStore"],"mappings":";AAGA,MAAMA,IAAiB,OACrB,QAAQ,IAAI,6CAA6C,GAClD,QAAQ,QAAQ,IAAW,IAGvBC,IAAQC;AAAA,EACnB;AAAA,IACE,eAAe,MAAM;AAAA,IAAC;AAAA,IACtB,gBAAgB,MAAMF,EAAA;AAAA,IACtB,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,eAAe,MAAM;AAAA,IAAC;AAAA,IACtB,UAAU;AAAA,MACR,UAAU,MAAM;AAAA,MAAC;AAAA,MACjB,cAAc,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,IAEvB,SAAS,MAAMA,EAAA;AAAA,IACf,cAAc,MAAMA,EAAA;AAAA,IACpB,oBAAoB,MAAMA,EAAA;AAAA,IAC1B,cAAc,MAAMA,EAAA;AAAA,IACpB,iBAAiB,MAAM,MAAA;AAAA;AAAA,IACvB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,cAAc;AAAA,IACd,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,kBAAkB;AAAA,IAAA;AAAA,IAEpB,QAAQ;AAAA,MACN,kBAAkB,MAAM;AAAA,MAAC;AAAA,MACzB,qBAAqB,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,IAE9B,MAAM;AAAA,MACJ,MAAM,CAAA;AAAA,MACN,QAAQ,CAAA;AAAA,MACR,iBAAiB,CAAA;AAAA,MACjB,eAAe,CAAA;AAAA,MACf,MAAM,CAAA;AAAA,MACN,cAAc;AAAA,QACZ,iBAAiB;AAAA,MAAA;AAAA,MAEnB,YAAY;AAAA,IAAA;AAAA,EACd;AAEJ;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type Listener<T> = (state: T) => void;
|
|
2
|
+
export type Selector<T, U> = (state: T) => U;
|
|
3
|
+
export declare class Store<T extends object> {
|
|
4
|
+
private state;
|
|
5
|
+
private listeners;
|
|
6
|
+
constructor(initialState: T);
|
|
7
|
+
getState(): T;
|
|
8
|
+
setState(partial: Partial<T> | ((state: T) => Partial<T>)): void;
|
|
9
|
+
subscribe(listener: Listener<T>): () => void;
|
|
10
|
+
private notify;
|
|
11
|
+
select<U>(selector: Selector<T, U>): U;
|
|
12
|
+
}
|
|
13
|
+
export declare function createStore<T extends object>(initialState: T): Store<T>;
|