@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.
Files changed (138) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +308 -0
  3. package/dist/components/RequireSignIn.d.ts +11 -0
  4. package/dist/components/RequireSignIn.js +18 -0
  5. package/dist/components/RequireSignIn.js.map +1 -0
  6. package/dist/components/SignedIn.d.ts +7 -0
  7. package/dist/components/SignedIn.js +11 -0
  8. package/dist/components/SignedIn.js.map +1 -0
  9. package/dist/components/SignedOut.d.ts +7 -0
  10. package/dist/components/SignedOut.js +11 -0
  11. package/dist/components/SignedOut.js.map +1 -0
  12. package/dist/context/HubScriptInjector/HubScriptInjector.d.ts +17 -0
  13. package/dist/context/HubScriptInjector/HubScriptInjector.js +34 -0
  14. package/dist/context/HubScriptInjector/HubScriptInjector.js.map +1 -0
  15. package/dist/context/HubScriptInjector/InternalProviderHubScriptInjector.d.ts +3 -0
  16. package/dist/context/HubScriptInjector/InternalProviderHubScriptInjector.js +19 -0
  17. package/dist/context/HubScriptInjector/InternalProviderHubScriptInjector.js.map +1 -0
  18. package/dist/context/InternalProvider.d.ts +9 -0
  19. package/dist/context/InternalProvider.js +13 -0
  20. package/dist/context/InternalProvider.js.map +1 -0
  21. package/dist/context/ReactRowndProvider.d.ts +4 -0
  22. package/dist/context/ReactRowndProvider.js +43 -0
  23. package/dist/context/ReactRowndProvider.js.map +1 -0
  24. package/dist/context/RowndContext.d.ts +33 -0
  25. package/dist/context/RowndContext.js +13 -0
  26. package/dist/context/RowndContext.js.map +1 -0
  27. package/dist/context/index.d.ts +7 -0
  28. package/dist/context/index.js +9 -0
  29. package/dist/context/index.js.map +1 -0
  30. package/dist/context/types.d.ts +112 -0
  31. package/dist/hooks/useHub.d.ts +48 -0
  32. package/dist/hooks/useHub.js +153 -0
  33. package/dist/hooks/useHub.js.map +1 -0
  34. package/dist/index.d.ts +1 -0
  35. package/dist/main.d.ts +1 -0
  36. package/dist/main.js +13 -0
  37. package/dist/main.js.map +1 -0
  38. package/dist/next/RowndProvider.d.ts +5 -0
  39. package/dist/next/RowndProvider.js +9 -0
  40. package/dist/next/RowndProvider.js.map +1 -0
  41. package/dist/next/client/components/RequireSignIn.d.ts +5 -0
  42. package/dist/next/client/components/RequireSignIn.js +30 -0
  43. package/dist/next/client/components/RequireSignIn.js.map +1 -0
  44. package/dist/next/client/components/RowndServerStateSync.d.ts +2 -0
  45. package/dist/next/client/components/RowndServerStateSync.js +36 -0
  46. package/dist/next/client/components/RowndServerStateSync.js.map +1 -0
  47. package/dist/next/client/components/RowndServerStateSync.test.d.ts +1 -0
  48. package/dist/next/client/index.d.ts +5 -0
  49. package/dist/next/client/index.js +49 -0
  50. package/dist/next/client/index.js.map +1 -0
  51. package/dist/next/client/store/index.d.ts +3 -0
  52. package/dist/next/client/store/index.js +52 -0
  53. package/dist/next/client/store/index.js.map +1 -0
  54. package/dist/next/client/store/store.d.ts +13 -0
  55. package/dist/next/client/store/store.js +32 -0
  56. package/dist/next/client/store/store.js.map +1 -0
  57. package/dist/next/client/store/useStore.d.ts +3 -0
  58. package/dist/next/client/store/useStore.js +14 -0
  59. package/dist/next/client/store/useStore.js.map +1 -0
  60. package/dist/next/client/useRownd.d.ts +3 -0
  61. package/dist/next/client/useRownd.js +32 -0
  62. package/dist/next/client/useRownd.js.map +1 -0
  63. package/dist/next/client/withRowndRequireSignIn.d.ts +8 -0
  64. package/dist/next/client/withRowndRequireSignIn.js +19 -0
  65. package/dist/next/client/withRowndRequireSignIn.js.map +1 -0
  66. package/dist/next/index.d.ts +6 -0
  67. package/dist/next/server/getRowndAccessToken.d.ts +3 -0
  68. package/dist/next/server/getRowndAccessToken.js +11 -0
  69. package/dist/next/server/getRowndAccessToken.js.map +1 -0
  70. package/dist/next/server/getRowndUser.d.ts +11 -0
  71. package/dist/next/server/getRowndUser.js +11 -0
  72. package/dist/next/server/getRowndUser.js.map +1 -0
  73. package/dist/next/server/getRowndUserId.d.ts +3 -0
  74. package/dist/next/server/getRowndUserId.js +11 -0
  75. package/dist/next/server/getRowndUserId.js.map +1 -0
  76. package/dist/next/server/index.d.ts +8 -0
  77. package/dist/next/server/isAuthenticated.d.ts +3 -0
  78. package/dist/next/server/isAuthenticated.js +11 -0
  79. package/dist/next/server/isAuthenticated.js.map +1 -0
  80. package/dist/next/server/withRowndMiddleware.d.ts +4 -0
  81. package/dist/next/server/withRowndMiddleware.js +11 -0
  82. package/dist/next/server/withRowndMiddleware.js.map +1 -0
  83. package/dist/next/useRownd.d.ts +3 -0
  84. package/dist/next-server.d.ts +1 -0
  85. package/dist/next-server.js +15 -0
  86. package/dist/next-server.js.map +1 -0
  87. package/dist/next.d.ts +1 -0
  88. package/dist/next.js +11 -0
  89. package/dist/next.js.map +1 -0
  90. package/dist/remix/RemixRowndProvider.d.ts +5 -0
  91. package/dist/remix/RemixRowndProvider.js +28 -0
  92. package/dist/remix/RemixRowndProvider.js.map +1 -0
  93. package/dist/remix/client/RemixClientScript.d.ts +4 -0
  94. package/dist/remix/client/RemixClientScript.js +22 -0
  95. package/dist/remix/client/RemixClientScript.js.map +1 -0
  96. package/dist/remix/client/useRownd.d.ts +4 -0
  97. package/dist/remix/client/useRownd.js +35 -0
  98. package/dist/remix/client/useRownd.js.map +1 -0
  99. package/dist/remix/client/withRowndRequireSignIn.d.ts +4 -0
  100. package/dist/remix/client/withRowndRequireSignIn.js +27 -0
  101. package/dist/remix/client/withRowndRequireSignIn.js.map +1 -0
  102. package/dist/remix/index.d.ts +7 -0
  103. package/dist/remix/server/getRowndUser.d.ts +3 -0
  104. package/dist/remix/server/getRowndUser.js +11 -0
  105. package/dist/remix/server/getRowndUser.js.map +1 -0
  106. package/dist/remix/server/getRowndUserId.d.ts +1 -0
  107. package/dist/remix/server/getRowndUserId.js +8 -0
  108. package/dist/remix/server/getRowndUserId.js.map +1 -0
  109. package/dist/remix/server/index.d.ts +8 -0
  110. package/dist/remix/server/isAuthenticated.d.ts +1 -0
  111. package/dist/remix/server/isAuthenticated.js +8 -0
  112. package/dist/remix/server/isAuthenticated.js.map +1 -0
  113. package/dist/remix/server/withRowndActionHandler.d.ts +2 -0
  114. package/dist/remix/server/withRowndActionHandler.js +41 -0
  115. package/dist/remix/server/withRowndActionHandler.js.map +1 -0
  116. package/dist/remix/server/withRowndLoader.d.ts +13 -0
  117. package/dist/remix/server/withRowndLoader.js +19 -0
  118. package/dist/remix/server/withRowndLoader.js.map +1 -0
  119. package/dist/remix-server.d.ts +1 -0
  120. package/dist/remix-server.js +15 -0
  121. package/dist/remix-server.js.map +1 -0
  122. package/dist/remix.d.ts +1 -0
  123. package/dist/remix.js +17 -0
  124. package/dist/remix.js.map +1 -0
  125. package/dist/ssr/hooks/useCookie.d.ts +7 -0
  126. package/dist/ssr/hooks/useCookie.js +22 -0
  127. package/dist/ssr/hooks/useCookie.js.map +1 -0
  128. package/dist/ssr/server/cookie.d.ts +13 -0
  129. package/dist/ssr/server/cookie.js +51 -0
  130. package/dist/ssr/server/cookie.js.map +1 -0
  131. package/dist/ssr/server/token.d.ts +44 -0
  132. package/dist/ssr/server/token.js +128 -0
  133. package/dist/ssr/server/token.js.map +1 -0
  134. package/dist/ssr/server/token.test.d.ts +1 -0
  135. package/dist/utils/listeners.d.ts +8 -0
  136. package/dist/utils/listeners.js +15 -0
  137. package/dist/utils/listeners.js.map +1 -0
  138. 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,9 @@
1
+ import { useRownd as m } from "./RowndContext.js";
2
+ import "react";
3
+ import { ReactRowndProvider as o } from "./ReactRowndProvider.js";
4
+ const t = o;
5
+ export {
6
+ t as RowndProvider,
7
+ m as useRownd
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -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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"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { RowndProviderProps } from '../context/RowndContext';
3
+
4
+ declare function RowndProvider({ children, ...props }: RowndProviderProps): React.JSX.Element;
5
+ export { RowndProvider };
@@ -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,5 @@
1
+ type RequireSignInProps = {
2
+ isFallback: boolean;
3
+ };
4
+ declare const RequireSignIn: ({ isFallback }: RequireSignInProps) => null;
5
+ export default RequireSignIn;
@@ -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,2 @@
1
+ declare const RowndServerStateSync: () => null;
2
+ export default RowndServerStateSync;
@@ -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,5 @@
1
+ import { default as React } from 'react';
2
+ import { RowndProviderProps } from '../../context/RowndContext';
3
+
4
+ declare const Client: React.FC<Omit<RowndProviderProps, 'children'>>;
5
+ export default Client;
@@ -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,3 @@
1
+ import { TRowndContext } from '../../../context/types';
2
+
3
+ export declare const store: import('./store').Store<TRowndContext>;
@@ -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>;