@take-out/better-auth-utils 0.4.3 → 0.4.4
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/dist/cjs/createAuthClient.cjs +140 -89
- package/dist/cjs/createAuthClient.native.js +185 -141
- package/dist/cjs/createAuthClient.native.js.map +1 -1
- package/dist/cjs/index.cjs +7 -5
- package/dist/cjs/index.native.js +7 -5
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/server.cjs +57 -42
- package/dist/cjs/server.native.js +137 -92
- package/dist/cjs/server.native.js.map +1 -1
- package/dist/esm/createAuthClient.mjs +126 -77
- package/dist/esm/createAuthClient.mjs.map +1 -1
- package/dist/esm/createAuthClient.native.js +171 -129
- package/dist/esm/createAuthClient.native.js.map +1 -1
- package/dist/esm/server.mjs +45 -32
- package/dist/esm/server.mjs.map +1 -1
- package/dist/esm/server.native.js +125 -82
- package/dist/esm/server.native.js.map +1 -1
- package/package.json +3 -3
|
@@ -2,24 +2,25 @@ import { createEmitter, createStorageValue, isEqualDeepLite, useEmitterValue } f
|
|
|
2
2
|
import { createAuthClient } from "better-auth/client";
|
|
3
3
|
function createBetterAuthClient(options) {
|
|
4
4
|
const {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
onAuthStateChange,
|
|
6
|
+
onAuthError,
|
|
7
|
+
createUser,
|
|
8
|
+
storagePrefix = "auth",
|
|
9
|
+
retryDelay = 4e3,
|
|
10
|
+
useJWT = false,
|
|
11
|
+
authCookieNames = ["better-auth.jwt", "better-auth.session_token"],
|
|
12
|
+
...authClientOptions
|
|
13
|
+
} = options;
|
|
14
|
+
const empty = {
|
|
15
|
+
state: "logged-out",
|
|
16
|
+
session: null,
|
|
17
|
+
user: null,
|
|
18
|
+
token: null
|
|
19
|
+
};
|
|
20
|
+
const keysStorage = createStorageValue(`${storagePrefix}-keys`);
|
|
21
|
+
const stateStorage = createStorageValue(`${storagePrefix}-state`);
|
|
22
|
+
const createAuthClientWithSession = session => {
|
|
23
|
+
return createAuthClient({
|
|
23
24
|
...authClientOptions,
|
|
24
25
|
fetchOptions: {
|
|
25
26
|
credentials: "include",
|
|
@@ -28,6 +29,7 @@ function createBetterAuthClient(options) {
|
|
|
28
29
|
} : void 0
|
|
29
30
|
}
|
|
30
31
|
});
|
|
32
|
+
};
|
|
31
33
|
let authClient = (() => {
|
|
32
34
|
const existingSession = keysStorage.get()?.session;
|
|
33
35
|
return existingSession ? createAuthClientWithSession(existingSession) : createAuthClient({
|
|
@@ -38,79 +40,108 @@ function createBetterAuthClient(options) {
|
|
|
38
40
|
});
|
|
39
41
|
})();
|
|
40
42
|
const authState = createEmitter("authState", stateStorage.get() || empty, {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
comparator: isEqualDeepLite
|
|
44
|
+
});
|
|
45
|
+
const authClientVersion = createEmitter("authClientVersion", 0);
|
|
46
|
+
const setState = update => {
|
|
47
|
+
const current = authState.value;
|
|
48
|
+
const next = {
|
|
49
|
+
...current,
|
|
50
|
+
...update
|
|
51
|
+
};
|
|
52
|
+
stateStorage.set(next);
|
|
53
|
+
authState.emit(next);
|
|
54
|
+
if (next.token && next.session) {
|
|
55
|
+
keysStorage.set({
|
|
50
56
|
token: next.token,
|
|
51
57
|
session: next.session.token
|
|
52
|
-
})
|
|
58
|
+
});
|
|
59
|
+
} else if (next.session) {
|
|
60
|
+
keysStorage.set({
|
|
53
61
|
token: "",
|
|
54
62
|
session: next.session.token
|
|
55
|
-
})
|
|
63
|
+
});
|
|
64
|
+
} else {
|
|
65
|
+
keysStorage.set({
|
|
56
66
|
token: "",
|
|
57
67
|
session: ""
|
|
58
|
-
})
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
onAuthStateChange?.(next);
|
|
71
|
+
};
|
|
72
|
+
const setAuthClientToken = async props => {
|
|
73
|
+
keysStorage.set(props);
|
|
74
|
+
updateAuthClient(props.session);
|
|
75
|
+
};
|
|
63
76
|
function updateAuthClient(session) {
|
|
64
|
-
authClient = createAuthClientWithSession(session)
|
|
77
|
+
authClient = createAuthClientWithSession(session);
|
|
78
|
+
authClientVersion.emit(Math.random());
|
|
79
|
+
subscribeToAuthEffect();
|
|
65
80
|
}
|
|
66
|
-
let dispose = null
|
|
67
|
-
|
|
81
|
+
let dispose = null;
|
|
82
|
+
let retryTimer = null;
|
|
68
83
|
function subscribeToAuthEffect() {
|
|
69
|
-
dispose?.()
|
|
84
|
+
dispose?.();
|
|
85
|
+
dispose = authClient.useSession.subscribe(async props => {
|
|
70
86
|
const {
|
|
71
87
|
data: dataGeneric,
|
|
72
88
|
isPending,
|
|
73
89
|
error
|
|
74
90
|
} = props;
|
|
75
91
|
if (error) {
|
|
76
|
-
onAuthError?.(error)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
92
|
+
onAuthError?.(error);
|
|
93
|
+
const hasPersistedSession2 = !!keysStorage.get()?.session;
|
|
94
|
+
if (!hasPersistedSession2) {
|
|
95
|
+
setState({
|
|
96
|
+
state: "logged-out",
|
|
97
|
+
session: null,
|
|
98
|
+
user: null
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
scheduleAuthRetry(retryDelay);
|
|
81
102
|
return;
|
|
82
103
|
}
|
|
83
|
-
const data = dataGeneric
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
104
|
+
const data = dataGeneric;
|
|
105
|
+
const hasPersistedSession = !!keysStorage.get()?.session;
|
|
106
|
+
const nextState = isPending ? "loading" : data?.session ? "logged-in" : hasPersistedSession && data === void 0 ? "loading" : "logged-out";
|
|
107
|
+
const sessionUpdate = nextState === "loading" ? {} : {
|
|
108
|
+
session: data?.session ?? null,
|
|
109
|
+
user: data?.user ? createUser ? createUser(data.user) : data.user : null
|
|
110
|
+
};
|
|
111
|
+
const previousSession = authState.value?.session;
|
|
112
|
+
const isNewSession = data?.session && (!previousSession || previousSession.id !== data.session.id || previousSession.userId !== data.session.userId);
|
|
92
113
|
setState({
|
|
93
114
|
state: nextState,
|
|
94
115
|
...sessionUpdate
|
|
95
|
-
})
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
116
|
+
});
|
|
117
|
+
if (useJWT && data?.session && (isNewSession || !authState.value.token)) {
|
|
118
|
+
if (isNewSession && authState.value.token) {
|
|
119
|
+
setState({
|
|
120
|
+
token: null
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
getValidToken().then(token => {
|
|
124
|
+
if (token) {
|
|
125
|
+
setState({
|
|
126
|
+
token
|
|
127
|
+
});
|
|
128
|
+
}
|
|
100
129
|
});
|
|
101
|
-
}
|
|
130
|
+
}
|
|
102
131
|
});
|
|
103
132
|
}
|
|
104
133
|
function scheduleAuthRetry(delayMs) {
|
|
105
|
-
|
|
106
|
-
|
|
134
|
+
if (retryTimer) clearTimeout(retryTimer);
|
|
135
|
+
retryTimer = setTimeout(() => {
|
|
136
|
+
retryTimer = null;
|
|
137
|
+
subscribeToAuthEffect();
|
|
107
138
|
}, delayMs);
|
|
108
139
|
}
|
|
109
140
|
async function getValidToken() {
|
|
110
141
|
const res = await authClient.$fetch("/token");
|
|
111
142
|
if (res.error) {
|
|
112
143
|
console.error(`Error fetching token: ${res.error.statusText}`);
|
|
113
|
-
return;
|
|
144
|
+
return void 0;
|
|
114
145
|
}
|
|
115
146
|
return res.data?.token;
|
|
116
147
|
}
|
|
@@ -118,37 +149,55 @@ function createBetterAuthClient(options) {
|
|
|
118
149
|
keysStorage.remove();
|
|
119
150
|
};
|
|
120
151
|
function clearAuthCookies() {
|
|
121
|
-
if (
|
|
152
|
+
if (typeof document === "undefined") return;
|
|
153
|
+
for (const cookieName of authCookieNames) {
|
|
122
154
|
document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
|
|
123
155
|
const domain = window.location.hostname;
|
|
124
|
-
document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain}
|
|
156
|
+
document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain}`;
|
|
157
|
+
if (domain.startsWith(".")) {
|
|
158
|
+
document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain.slice(1)}`;
|
|
159
|
+
}
|
|
125
160
|
}
|
|
126
161
|
}
|
|
127
162
|
function clearAllAuth() {
|
|
128
|
-
clearAuthCookies()
|
|
163
|
+
clearAuthCookies();
|
|
164
|
+
clearState();
|
|
129
165
|
}
|
|
130
166
|
const getAuth = () => {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
167
|
+
const state = authState?.value || empty;
|
|
168
|
+
return {
|
|
169
|
+
...state,
|
|
170
|
+
loggedIn: !!state.session
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
const useAuth = () => {
|
|
174
|
+
return useEmitterValue(authState) || empty;
|
|
175
|
+
};
|
|
138
176
|
function clearState() {
|
|
139
|
-
keysStorage.remove()
|
|
177
|
+
keysStorage.remove();
|
|
178
|
+
stateStorage.remove();
|
|
179
|
+
setState(empty);
|
|
140
180
|
}
|
|
141
|
-
|
|
181
|
+
subscribeToAuthEffect();
|
|
182
|
+
if (typeof window !== "undefined" && window.addEventListener) {
|
|
142
183
|
const cleanup = () => {
|
|
143
|
-
dispose?.()
|
|
184
|
+
dispose?.();
|
|
185
|
+
if (retryTimer) clearTimeout(retryTimer);
|
|
144
186
|
};
|
|
145
187
|
window.addEventListener("beforeunload", cleanup);
|
|
146
188
|
}
|
|
147
189
|
const proxiedAuthClient = new Proxy(authClient, {
|
|
148
190
|
get(_target, key) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
191
|
+
if (key === "signOut") {
|
|
192
|
+
return () => {
|
|
193
|
+
clearState();
|
|
194
|
+
authClient.signOut?.();
|
|
195
|
+
if (typeof window !== "undefined") {
|
|
196
|
+
window.location?.reload?.();
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return Reflect.get(authClient, key);
|
|
152
201
|
}
|
|
153
202
|
});
|
|
154
203
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createEmitter","createStorageValue","isEqualDeepLite","useEmitterValue","createAuthClient","createBetterAuthClient","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","stateStorage","createAuthClientWithSession","fetchOptions","credentials","headers","Authorization","authClient","existingSession","get","authState","comparator","authClientVersion","setState","update","
|
|
1
|
+
{"version":3,"names":["createEmitter","createStorageValue","isEqualDeepLite","useEmitterValue","createAuthClient","createBetterAuthClient","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","stateStorage","createAuthClientWithSession","fetchOptions","credentials","headers","Authorization","authClient","existingSession","get","authState","comparator","authClientVersion","setState","update","current","value","next","set","emit","setAuthClientToken","props","updateAuthClient","Math","random","subscribeToAuthEffect","dispose","retryTimer","useSession","subscribe","data","dataGeneric","isPending","error","hasPersistedSession2","scheduleAuthRetry","hasPersistedSession","nextState","sessionUpdate","previousSession","isNewSession","id","userId","getValidToken","then","delayMs","clearTimeout","setTimeout","res","$fetch","console","statusText","clearAuthClientToken","remove","clearAuthCookies","document","cookieName","cookie","domain","window","location","hostname","startsWith","slice","clearAllAuth","clearState","getAuth","loggedIn","useAuth","addEventListener","cleanup","proxiedAuthClient","Proxy","_target","key","signOut","reload","Reflect"],"sources":["../../src/createAuthClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|