better-auth 0.0.8-beta.2 → 0.0.8-beta.21
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/access.d.ts +3 -4
- package/dist/access.js +3 -13
- package/dist/access.js.map +1 -1
- package/dist/cli.d.ts +1 -2
- package/dist/cli.js +36 -44
- package/dist/cli.js.map +1 -1
- package/dist/client/plugins.d.ts +97 -2407
- package/dist/client/plugins.js +143 -203
- package/dist/client/plugins.js.map +1 -1
- package/dist/client.d.ts +159 -1213
- package/dist/client.js +125 -527
- package/dist/client.js.map +1 -1
- package/dist/{helper-B5_2Vzba.d.ts → helper-D8dhRz72.d.ts} +1 -4
- package/dist/{index-Dg4eEXZW.d.ts → index-B9jOjqnF.d.ts} +1 -1
- package/dist/{schema-BOszzrbQ.d.ts → index-CcxejJTH.d.ts} +172 -142
- package/dist/{client-CaF9eUcv.d.ts → index-Dwhjsk4l.d.ts} +2014 -1971
- package/dist/index.d.ts +1124 -6
- package/dist/index.js +737 -707
- package/dist/index.js.map +1 -1
- package/dist/internal-adapter-CVKQ4XR9.d.ts +637 -0
- package/dist/next-js.d.ts +17 -7
- package/dist/next-js.js +20 -3
- package/dist/next-js.js.map +1 -1
- package/dist/plugins.d.ts +12 -883
- package/dist/plugins.js +743 -679
- package/dist/plugins.js.map +1 -1
- package/dist/react.d.ts +312 -12
- package/dist/react.js +138 -148
- package/dist/react.js.map +1 -1
- package/dist/social.d.ts +2 -2
- package/dist/social.js +179 -151
- package/dist/social.js.map +1 -1
- package/dist/solid-start.d.ts +7 -6
- package/dist/solid-start.js +3 -3
- package/dist/solid-start.js.map +1 -1
- package/dist/solid.d.ts +91 -2713
- package/dist/solid.js +130 -139
- package/dist/solid.js.map +1 -1
- package/dist/{statement-COylZd3J.d.ts → statement-D6SPoYOh.d.ts} +7 -7
- package/dist/svelte-kit.d.ts +6 -5
- package/dist/svelte-kit.js +10 -9
- package/dist/svelte-kit.js.map +1 -1
- package/dist/svelte.d.ts +89 -2713
- package/dist/svelte.js +124 -138
- package/dist/svelte.js.map +1 -1
- package/dist/types-D4WrjKeJ.d.ts +81 -0
- package/dist/types.d.ts +31 -5
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -1
- package/dist/vue.d.ts +313 -12
- package/dist/vue.js +131 -145
- package/dist/vue.js.map +1 -1
- package/package.json +8 -3
- package/dist/index-CGeV0d2g.d.ts +0 -1498
- package/dist/preact.d.ts +0 -8
- package/dist/preact.js +0 -291
- package/dist/preact.js.map +0 -1
- package/dist/type-tYx_kmry.d.ts +0 -5724
package/dist/solid.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import { createFetch } from
|
|
1
|
+
import { useStore } from '@nanostores/solid';
|
|
2
|
+
import { createFetch, betterFetch } from '@better-fetch/fetch';
|
|
3
|
+
import { atom, computed, task } from 'nanostores';
|
|
3
4
|
|
|
4
|
-
// src/
|
|
5
|
-
var BetterAuthError = class extends Error {
|
|
6
|
-
constructor(message) {
|
|
7
|
-
super(message);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
5
|
+
// src/client/solid.ts
|
|
10
6
|
|
|
11
7
|
// src/utils/base-url.ts
|
|
12
8
|
function checkHasPath(url) {
|
|
@@ -21,47 +17,43 @@ function checkHasPath(url) {
|
|
|
21
17
|
function withPath(url, path = "/api/auth") {
|
|
22
18
|
const hasPath = checkHasPath(url);
|
|
23
19
|
if (hasPath) {
|
|
24
|
-
return
|
|
25
|
-
baseURL: new URL(url).origin,
|
|
26
|
-
withPath: url
|
|
27
|
-
};
|
|
20
|
+
return url;
|
|
28
21
|
}
|
|
29
22
|
path = path.startsWith("/") ? path : `/${path}`;
|
|
30
|
-
return {
|
|
31
|
-
baseURL: url,
|
|
32
|
-
withPath: `${url}${path}`
|
|
33
|
-
};
|
|
23
|
+
return `${url}${path}`;
|
|
34
24
|
}
|
|
35
25
|
function getBaseURL(url, path) {
|
|
36
26
|
if (url) {
|
|
37
27
|
return withPath(url, path);
|
|
38
28
|
}
|
|
39
29
|
const env = typeof process !== "undefined" ? process.env : {};
|
|
40
|
-
const fromEnv = env.BETTER_AUTH_URL || env.
|
|
30
|
+
const fromEnv = env.BETTER_AUTH_URL || env.NEXT_PUBLIC_BETTER_AUTH_URL || env.PUBLIC_BETTER_AUTH_URL || env.NUXT_PUBLIC_BETTER_AUTH_URL || env.NUXT_PUBLIC_AUTH_URL;
|
|
41
31
|
if (fromEnv) {
|
|
42
32
|
return withPath(fromEnv, path);
|
|
43
33
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
baseURL: "http://localhost:3000",
|
|
48
|
-
withPath: "http://localhost:3000/api/auth"
|
|
49
|
-
};
|
|
34
|
+
if (typeof window !== "undefined") {
|
|
35
|
+
return withPath(window.location.origin, path);
|
|
50
36
|
}
|
|
51
|
-
|
|
52
|
-
"Could not infer baseURL from environment variables"
|
|
53
|
-
);
|
|
37
|
+
return void 0;
|
|
54
38
|
}
|
|
55
39
|
|
|
40
|
+
// src/error/better-auth-error.ts
|
|
41
|
+
var BetterAuthError = class extends Error {
|
|
42
|
+
constructor(message) {
|
|
43
|
+
super(message);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
56
47
|
// src/client/fetch-plugins.ts
|
|
57
|
-
import { betterFetch } from "@better-fetch/fetch";
|
|
58
48
|
var redirectPlugin = {
|
|
59
49
|
id: "redirect",
|
|
60
50
|
name: "Redirect",
|
|
61
51
|
hooks: {
|
|
62
52
|
onSuccess(context) {
|
|
63
53
|
if (context.data?.url && context.data?.redirect) {
|
|
64
|
-
window
|
|
54
|
+
if (typeof window !== "undefined") {
|
|
55
|
+
window.location.href = context.data.url;
|
|
56
|
+
}
|
|
65
57
|
}
|
|
66
58
|
}
|
|
67
59
|
}
|
|
@@ -84,6 +76,17 @@ var csrfPlugin = {
|
|
|
84
76
|
id: "csrf",
|
|
85
77
|
name: "CSRF Check",
|
|
86
78
|
async init(url, options) {
|
|
79
|
+
if (typeof window !== "undefined") {
|
|
80
|
+
const isTheSameOrigin = new URL(options?.baseURL || url).origin === window.location.origin;
|
|
81
|
+
if (isTheSameOrigin) {
|
|
82
|
+
return { url, options };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (!options?.baseURL) {
|
|
86
|
+
throw new BetterAuthError(
|
|
87
|
+
"API Base URL on the auth client isn't configured. Please pass it directly to the client `baseURL`"
|
|
88
|
+
);
|
|
89
|
+
}
|
|
87
90
|
if (options?.method !== "GET") {
|
|
88
91
|
options = options || {};
|
|
89
92
|
const { data, error } = await betterFetch("/csrf", {
|
|
@@ -91,7 +94,8 @@ var csrfPlugin = {
|
|
|
91
94
|
baseURL: options.baseURL,
|
|
92
95
|
plugins: [],
|
|
93
96
|
method: "GET",
|
|
94
|
-
credentials: "include"
|
|
97
|
+
credentials: "include",
|
|
98
|
+
customFetchImpl: options.customFetchImpl
|
|
95
99
|
});
|
|
96
100
|
if (error?.status === 404) {
|
|
97
101
|
throw new BetterAuthError(
|
|
@@ -111,6 +115,56 @@ var csrfPlugin = {
|
|
|
111
115
|
}
|
|
112
116
|
};
|
|
113
117
|
|
|
118
|
+
// src/client/config.ts
|
|
119
|
+
var getClientConfig = (options) => {
|
|
120
|
+
const $fetch = createFetch({
|
|
121
|
+
baseURL: getBaseURL(options?.fetchOptions?.baseURL || options?.baseURL),
|
|
122
|
+
...options?.fetchOptions,
|
|
123
|
+
plugins: [
|
|
124
|
+
csrfPlugin,
|
|
125
|
+
redirectPlugin,
|
|
126
|
+
addCurrentURL,
|
|
127
|
+
...options?.fetchOptions?.plugins || [],
|
|
128
|
+
...options?.plugins?.flatMap((plugin) => plugin.fetchPlugins).filter((pl) => pl !== void 0) || []
|
|
129
|
+
]
|
|
130
|
+
});
|
|
131
|
+
const plugins = options?.plugins || [];
|
|
132
|
+
let pluginsActions = {};
|
|
133
|
+
let pluginsAtoms = {};
|
|
134
|
+
let pluginPathMethods = {
|
|
135
|
+
"/sign-out": "POST"
|
|
136
|
+
};
|
|
137
|
+
const atomListeners = [
|
|
138
|
+
{
|
|
139
|
+
signal: "_sessionSignal",
|
|
140
|
+
matcher(path) {
|
|
141
|
+
return path === "/sign-out" || path === "sign-up/email";
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
];
|
|
145
|
+
for (const plugin of plugins) {
|
|
146
|
+
if (plugin.getActions) {
|
|
147
|
+
Object.assign(pluginsActions, plugin.getActions?.($fetch));
|
|
148
|
+
}
|
|
149
|
+
if (plugin.getAtoms) {
|
|
150
|
+
Object.assign(pluginsAtoms, plugin.getAtoms?.($fetch));
|
|
151
|
+
}
|
|
152
|
+
if (plugin.pathMethods) {
|
|
153
|
+
Object.assign(pluginPathMethods, plugin.pathMethods);
|
|
154
|
+
}
|
|
155
|
+
if (plugin.atomListeners) {
|
|
156
|
+
atomListeners.push(...plugin.atomListeners);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
pluginsActions,
|
|
161
|
+
pluginsAtoms,
|
|
162
|
+
pluginPathMethods,
|
|
163
|
+
atomListeners,
|
|
164
|
+
$fetch
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
|
|
114
168
|
// src/client/proxy.ts
|
|
115
169
|
function getMethod(path, knownPathMethods, args) {
|
|
116
170
|
const method = knownPathMethods[path];
|
|
@@ -126,7 +180,7 @@ function getMethod(path, knownPathMethods, args) {
|
|
|
126
180
|
}
|
|
127
181
|
return "GET";
|
|
128
182
|
}
|
|
129
|
-
function createDynamicPathProxy(routes, client, knownPathMethods,
|
|
183
|
+
function createDynamicPathProxy(routes, client, knownPathMethods, atoms, atomListeners) {
|
|
130
184
|
function createProxy(path = []) {
|
|
131
185
|
return new Proxy(function() {
|
|
132
186
|
}, {
|
|
@@ -155,16 +209,21 @@ function createDynamicPathProxy(routes, client, knownPathMethods, $signal, $sign
|
|
|
155
209
|
const { query, options, ...body } = arg;
|
|
156
210
|
return await client(routePath, {
|
|
157
211
|
...options,
|
|
158
|
-
body: method === "GET" ? void 0 :
|
|
212
|
+
body: method === "GET" ? void 0 : {
|
|
213
|
+
...body,
|
|
214
|
+
...options?.body || {}
|
|
215
|
+
},
|
|
159
216
|
query,
|
|
160
217
|
method,
|
|
161
218
|
async onSuccess(context) {
|
|
162
|
-
const signal = $signal?.find((s) => s.matcher(routePath));
|
|
163
|
-
if (!signal) return;
|
|
164
|
-
const signalAtom = $signals?.[signal.atom];
|
|
165
|
-
if (!signalAtom) return;
|
|
166
|
-
signalAtom.set(!signalAtom.get());
|
|
167
219
|
await options?.onSuccess?.(context);
|
|
220
|
+
const matches = atomListeners?.find((s) => s.matcher(routePath));
|
|
221
|
+
if (!matches) return;
|
|
222
|
+
const signal = atoms[matches.signal];
|
|
223
|
+
if (!signal) return;
|
|
224
|
+
setTimeout(() => {
|
|
225
|
+
signal.set(!signal.get());
|
|
226
|
+
}, 0);
|
|
168
227
|
}
|
|
169
228
|
});
|
|
170
229
|
}
|
|
@@ -173,8 +232,10 @@ function createDynamicPathProxy(routes, client, knownPathMethods, $signal, $sign
|
|
|
173
232
|
return createProxy();
|
|
174
233
|
}
|
|
175
234
|
|
|
176
|
-
// src/
|
|
177
|
-
|
|
235
|
+
// src/utils/misc.ts
|
|
236
|
+
function capitalizeFirstLetter(str) {
|
|
237
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
238
|
+
}
|
|
178
239
|
function getSessionAtom(client) {
|
|
179
240
|
const $signal = atom(false);
|
|
180
241
|
const $session = computed(
|
|
@@ -187,117 +248,47 @@ function getSessionAtom(client) {
|
|
|
187
248
|
return session.data;
|
|
188
249
|
})
|
|
189
250
|
);
|
|
190
|
-
return { $session,
|
|
251
|
+
return { $session, _sessionSignal: $signal };
|
|
191
252
|
}
|
|
192
253
|
|
|
193
|
-
// src/client/
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
...options?.authPlugins?.flatMap((plugin) => plugin($baseFetch).fetchPlugins).filter((plugin) => plugin !== void 0) || [],
|
|
203
|
-
...options?.csrfPlugin !== false ? [csrfPlugin] : [],
|
|
204
|
-
redirectPlugin,
|
|
205
|
-
addCurrentURL
|
|
206
|
-
]
|
|
207
|
-
});
|
|
208
|
-
};
|
|
209
|
-
var createAuthClient = (options, additionalActions = {}) => {
|
|
210
|
-
const $fetch = createAuthFetch(options);
|
|
211
|
-
const { $session, $sessionSignal } = getSessionAtom($fetch);
|
|
212
|
-
let pluginsActions = {};
|
|
213
|
-
const pluginProxySignals = [];
|
|
214
|
-
let pluginSignals = {};
|
|
215
|
-
let pluginPathMethods = {};
|
|
216
|
-
for (const plugin of options?.authPlugins || []) {
|
|
217
|
-
const pl = plugin($fetch);
|
|
218
|
-
if (pl.authProxySignal) {
|
|
219
|
-
pluginProxySignals.push(...pl.authProxySignal);
|
|
220
|
-
}
|
|
221
|
-
if (pl.actions) {
|
|
222
|
-
pluginsActions = {
|
|
223
|
-
...pluginsActions,
|
|
224
|
-
...pl.actions
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
if (pl.signals) {
|
|
228
|
-
pluginSignals = {
|
|
229
|
-
...pluginSignals,
|
|
230
|
-
...pl.signals
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
if (pl.pathMethods) {
|
|
234
|
-
pluginPathMethods = {
|
|
235
|
-
...pluginPathMethods,
|
|
236
|
-
...pl.pathMethods
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
const actions = {
|
|
241
|
-
$atoms: {
|
|
242
|
-
$session
|
|
243
|
-
},
|
|
254
|
+
// src/client/solid.ts
|
|
255
|
+
function getAtomKey(str) {
|
|
256
|
+
return `use${capitalizeFirstLetter(str)}`;
|
|
257
|
+
}
|
|
258
|
+
function createAuthClient(options) {
|
|
259
|
+
const {
|
|
260
|
+
pluginPathMethods,
|
|
261
|
+
pluginsActions,
|
|
262
|
+
pluginsAtoms,
|
|
244
263
|
$fetch,
|
|
264
|
+
atomListeners
|
|
265
|
+
} = getClientConfig(options);
|
|
266
|
+
let resolvedHooks = {};
|
|
267
|
+
for (const [key, value] of Object.entries(pluginsAtoms)) {
|
|
268
|
+
resolvedHooks[getAtomKey(key)] = () => useStore(value);
|
|
269
|
+
}
|
|
270
|
+
const { $session, _sessionSignal } = getSessionAtom($fetch);
|
|
271
|
+
function useSession() {
|
|
272
|
+
return useStore($session);
|
|
273
|
+
}
|
|
274
|
+
const routes = {
|
|
245
275
|
...pluginsActions,
|
|
246
|
-
...
|
|
276
|
+
...resolvedHooks,
|
|
277
|
+
useSession
|
|
247
278
|
};
|
|
248
279
|
const proxy = createDynamicPathProxy(
|
|
249
|
-
|
|
280
|
+
routes,
|
|
250
281
|
$fetch,
|
|
282
|
+
pluginPathMethods,
|
|
251
283
|
{
|
|
252
|
-
...
|
|
253
|
-
|
|
284
|
+
...pluginsAtoms,
|
|
285
|
+
_sessionSignal
|
|
254
286
|
},
|
|
255
|
-
|
|
256
|
-
{
|
|
257
|
-
matcher: (path) => path === "/organization/create",
|
|
258
|
-
atom: "$listOrg"
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
matcher: (path) => path.startsWith("/organization"),
|
|
262
|
-
atom: "$activeOrgSignal"
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
matcher: (path) => path === "/sign-out" || path.startsWith("/sign-up") || path.startsWith("/sign-in"),
|
|
266
|
-
atom: "$sessionSignal"
|
|
267
|
-
},
|
|
268
|
-
...pluginProxySignals
|
|
269
|
-
],
|
|
270
|
-
{
|
|
271
|
-
$sessionSignal,
|
|
272
|
-
...pluginSignals
|
|
273
|
-
}
|
|
287
|
+
atomListeners
|
|
274
288
|
);
|
|
275
289
|
return proxy;
|
|
276
|
-
}
|
|
290
|
+
}
|
|
277
291
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
var createAuthClient2 = (options) => {
|
|
281
|
-
const $fetch = createAuthFetch(options);
|
|
282
|
-
const hooks = options?.authPlugins?.reduce(
|
|
283
|
-
(acc, plugin) => {
|
|
284
|
-
return {
|
|
285
|
-
...acc,
|
|
286
|
-
...plugin($fetch).integrations?.solid?.(useStore) || {}
|
|
287
|
-
};
|
|
288
|
-
},
|
|
289
|
-
{}
|
|
290
|
-
);
|
|
291
|
-
const client = createAuthClient(options, hooks);
|
|
292
|
-
function useSession() {
|
|
293
|
-
return useStore(client.$atoms.$session);
|
|
294
|
-
}
|
|
295
|
-
const obj = Object.assign(client, {
|
|
296
|
-
useSession
|
|
297
|
-
});
|
|
298
|
-
return obj;
|
|
299
|
-
};
|
|
300
|
-
export {
|
|
301
|
-
createAuthClient2 as createAuthClient
|
|
302
|
-
};
|
|
292
|
+
export { createAuthClient };
|
|
293
|
+
//# sourceMappingURL=solid.js.map
|
|
303
294
|
//# sourceMappingURL=solid.js.map
|
package/dist/solid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/base.ts","../src/error/better-auth-error.ts","../src/utils/base-url.ts","../src/client/fetch-plugins.ts","../src/client/proxy.ts","../src/client/session-atom.ts","../src/client/solid.ts"],"sourcesContent":["import { createFetch } from \"@better-fetch/fetch\";\nimport type { Auth } from \"../auth\";\nimport { getBaseURL } from \"../utils/base-url\";\nimport { addCurrentURL, csrfPlugin, redirectPlugin } from \"./fetch-plugins\";\nimport type { InferRoutes } from \"./path-to-object\";\nimport { createDynamicPathProxy, type AuthProxySignal } from \"./proxy\";\nimport { getSessionAtom } from \"./session-atom\";\nimport type { AuthPlugin, ClientOptions } from \"./type\";\nimport type { UnionToIntersection } from \"../types/helper\";\nimport type { PreinitializedWritableAtom } from \"nanostores\";\nimport type { BetterAuthPlugin } from \"../types/plugins\";\n\n/**\n * used for plugins only\n */\n\nexport const createAuthFetch = (options?: ClientOptions) => {\n\tconst $baseFetch = createFetch();\n\treturn createFetch({\n\t\tmethod: \"GET\",\n\t\t...options,\n\t\tbaseURL: getBaseURL(options?.baseURL).withPath,\n\t\tplugins: [\n\t\t\t...(options?.plugins || []),\n\t\t\t...(options?.authPlugins\n\t\t\t\t?.flatMap((plugin) => plugin($baseFetch).fetchPlugins)\n\t\t\t\t.filter((plugin) => plugin !== undefined) || []),\n\t\t\t...(options?.csrfPlugin !== false ? [csrfPlugin] : []),\n\t\t\tredirectPlugin,\n\t\t\taddCurrentURL,\n\t\t],\n\t});\n};\n\nexport const createAuthClient = <\n\tO extends ClientOptions = ClientOptions,\n\tAT extends Record<string, any> = {},\n>(\n\toptions?: O,\n\tadditionalActions = {} as AT,\n) => {\n\ttype API = O[\"authPlugins\"] extends Array<any>\n\t\t? (O[\"authPlugins\"] extends Array<infer Pl>\n\t\t\t\t? UnionToIntersection<\n\t\t\t\t\t\t//@ts-expect-error\n\t\t\t\t\t\tReturnType<Pl> extends {\n\t\t\t\t\t\t\tplugin: infer Plug;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\t? Plug extends BetterAuthPlugin\n\t\t\t\t\t\t\t\t? Plug[\"endpoints\"]\n\t\t\t\t\t\t\t\t: {}\n\t\t\t\t\t\t\t: {}\n\t\t\t\t\t>\n\t\t\t\t: {}) &\n\t\t\t\tAuth[\"api\"]\n\t\t: Auth[\"api\"];\n\n\tconst $fetch = createAuthFetch(options);\n\n\ttype Plugins = O[\"authPlugins\"] extends Array<AuthPlugin>\n\t\t? Array<ReturnType<O[\"authPlugins\"][number]>[\"plugin\"]>\n\t\t: undefined;\n\t//@ts-expect-error\n\tconst { $session, $sessionSignal } = getSessionAtom<{\n\t\thandler: any;\n\t\tapi: any;\n\t\toptions: {\n\t\t\tdatabase: any;\n\t\t\tplugins: Plugins;\n\t\t};\n\t}>($fetch);\n\n\tlet pluginsActions = {} as Record<string, any>;\n\ttype PluginActions = UnionToIntersection<\n\t\tO[\"authPlugins\"] extends Array<infer Pl>\n\t\t\t? //@ts-expect-error\n\t\t\t\tReturnType<Pl> extends {\n\t\t\t\t\tactions?: infer R;\n\t\t\t\t}\n\t\t\t\t? R\n\t\t\t\t: {}\n\t\t\t: {}\n\t>;\n\n\tconst pluginProxySignals: AuthProxySignal[] = [];\n\tlet pluginSignals: Record<string, PreinitializedWritableAtom<boolean>> = {};\n\tlet pluginPathMethods: Record<string, \"POST\" | \"GET\"> = {};\n\n\tfor (const plugin of options?.authPlugins || []) {\n\t\tconst pl = plugin($fetch);\n\t\tif (pl.authProxySignal) {\n\t\t\tpluginProxySignals.push(...pl.authProxySignal);\n\t\t}\n\t\tif (pl.actions) {\n\t\t\tpluginsActions = {\n\t\t\t\t...pluginsActions,\n\t\t\t\t...pl.actions,\n\t\t\t};\n\t\t}\n\t\tif (pl.signals) {\n\t\t\tpluginSignals = {\n\t\t\t\t...pluginSignals,\n\t\t\t\t...pl.signals,\n\t\t\t};\n\t\t}\n\t\tif (pl.pathMethods) {\n\t\t\tpluginPathMethods = {\n\t\t\t\t...pluginPathMethods,\n\t\t\t\t...pl.pathMethods,\n\t\t\t};\n\t\t}\n\t}\n\n\tconst actions = {\n\t\t$atoms: {\n\t\t\t$session,\n\t\t},\n\t\t$fetch,\n\t\t...(pluginsActions as object),\n\t\t...additionalActions,\n\t};\n\n\ttype Actions = typeof actions & PluginActions;\n\n\tconst proxy = createDynamicPathProxy(\n\t\tactions,\n\t\t$fetch,\n\t\t{\n\t\t\t...pluginPathMethods,\n\t\t\t\"/sign-out\": \"POST\",\n\t\t},\n\t\t[\n\t\t\t{\n\t\t\t\tmatcher: (path) => path === \"/organization/create\",\n\t\t\t\tatom: \"$listOrg\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatcher: (path) => path.startsWith(\"/organization\"),\n\t\t\t\tatom: \"$activeOrgSignal\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmatcher: (path) =>\n\t\t\t\t\tpath === \"/sign-out\" ||\n\t\t\t\t\tpath.startsWith(\"/sign-up\") ||\n\t\t\t\t\tpath.startsWith(\"/sign-in\"),\n\t\t\t\tatom: \"$sessionSignal\",\n\t\t\t},\n\t\t\t...pluginProxySignals,\n\t\t],\n\t\t{\n\t\t\t$sessionSignal,\n\t\t\t...pluginSignals,\n\t\t},\n\t) as unknown as InferRoutes<API> & Actions;\n\treturn proxy;\n};\n","export class BetterAuthError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t}\n}\n","import { BetterAuthError } from \"../error/better-auth-error\";\n\nfunction checkHasPath(url: string): boolean {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\treturn parsedUrl.pathname !== \"/\";\n\t} catch (error) {\n\t\tconsole.error(\"Invalid URL:\", error);\n\t\treturn false;\n\t}\n}\n\nfunction withPath(url: string, path = \"/api/auth\") {\n\tconst hasPath = checkHasPath(url);\n\tif (hasPath) {\n\t\treturn {\n\t\t\tbaseURL: new URL(url).origin,\n\t\t\twithPath: url,\n\t\t};\n\t}\n\tpath = path.startsWith(\"/\") ? path : `/${path}`;\n\treturn {\n\t\tbaseURL: url,\n\t\twithPath: `${url}${path}`,\n\t};\n}\n\nexport function getBaseURL(url?: string, path?: string) {\n\tif (url) {\n\t\treturn withPath(url, path);\n\t}\n\tconst env: any = typeof process !== \"undefined\" ? process.env : {};\n\tconst fromEnv =\n\t\tenv.BETTER_AUTH_URL ||\n\t\tenv.AUTH_URL ||\n\t\tenv.NEXT_PUBLIC_AUTH_URL ||\n\t\tenv.NEXT_PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.PUBLIC_AUTH_URL ||\n\t\tenv.PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.NUXT_PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.NUXT_PUBLIC_AUTH_URL;\n\tif (fromEnv) {\n\t\treturn withPath(fromEnv, path);\n\t}\n\n\tconst isDev =\n\t\t!fromEnv && (env.NODE_ENV === \"development\" || env.NODE_ENV === \"test\");\n\tif (isDev) {\n\t\treturn {\n\t\t\tbaseURL: \"http://localhost:3000\",\n\t\t\twithPath: \"http://localhost:3000/api/auth\",\n\t\t};\n\t}\n\tthrow new BetterAuthError(\n\t\t\"Could not infer baseURL from environment variables\",\n\t);\n}\n","import { type BetterFetchPlugin, betterFetch } from \"@better-fetch/fetch\";\nimport { BetterAuthError } from \"../error/better-auth-error\";\n\nexport const redirectPlugin = {\n\tid: \"redirect\",\n\tname: \"Redirect\",\n\thooks: {\n\t\tonSuccess(context) {\n\t\t\tif (context.data?.url && context.data?.redirect) {\n\t\t\t\twindow.location.href = context.data.url;\n\t\t\t}\n\t\t},\n\t},\n} satisfies BetterFetchPlugin;\n\nexport const addCurrentURL = {\n\tid: \"add-current-url\",\n\tname: \"Add current URL\",\n\thooks: {\n\t\tonRequest(context) {\n\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\tconst url = new URL(context.url);\n\t\t\t\turl.searchParams.set(\"currentURL\", window.location.href);\n\t\t\t\tcontext.url = url;\n\t\t\t}\n\t\t\treturn context;\n\t\t},\n\t},\n} satisfies BetterFetchPlugin;\n\nexport const csrfPlugin = {\n\tid: \"csrf\",\n\tname: \"CSRF Check\",\n\tasync init(url, options) {\n\t\tif (options?.method !== \"GET\") {\n\t\t\toptions = options || {};\n\t\t\tconst { data, error } = await betterFetch<{\n\t\t\t\tcsrfToken: string;\n\t\t\t}>(\"/csrf\", {\n\t\t\t\tbody: undefined,\n\t\t\t\tbaseURL: options.baseURL,\n\t\t\t\tplugins: [],\n\t\t\t\tmethod: \"GET\",\n\t\t\t\tcredentials: \"include\",\n\t\t\t});\n\t\t\tif (error?.status === 404) {\n\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\"Route not found. Make sure the server is running and the base URL is correct and includes the path (e.g. http://localhost:3000/api/auth).\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (error) {\n\t\t\t\tthrow new BetterAuthError(error.message || \"Failed to get CSRF token.\");\n\t\t\t}\n\t\t\toptions.body = {\n\t\t\t\t...options?.body,\n\t\t\t\tcsrfToken: data.csrfToken,\n\t\t\t};\n\t\t}\n\t\toptions.credentials = \"include\";\n\t\treturn { url, options };\n\t},\n} satisfies BetterFetchPlugin;\n","import type { BetterFetch } from \"@better-fetch/fetch\";\nimport type { PreinitializedWritableAtom } from \"nanostores\";\nimport type { ProxyRequest } from \"./path-to-object\";\nimport type { LiteralUnion } from \"../types/helper\";\n\nfunction getMethod(\n\tpath: string,\n\tknownPathMethods: Record<string, \"POST\" | \"GET\">,\n\targs?: ProxyRequest,\n) {\n\tconst method = knownPathMethods[path];\n\tconst { options, query, ...body } = args || {};\n\tif (method) {\n\t\treturn method;\n\t}\n\tif (options?.method) {\n\t\treturn options.method;\n\t}\n\tif (body && Object.keys(body).length > 0) {\n\t\treturn \"POST\";\n\t}\n\treturn \"GET\";\n}\n\nexport type AuthProxySignal = {\n\tatom: LiteralUnion<string, \"$sessionSignal\">;\n\tmatcher: (path: string) => boolean;\n};\n\nexport function createDynamicPathProxy<T extends Record<string, any>>(\n\troutes: T,\n\tclient: BetterFetch,\n\tknownPathMethods: Record<string, \"POST\" | \"GET\">,\n\t$signal?: AuthProxySignal[],\n\t$signals?: Record<string, PreinitializedWritableAtom<boolean>>,\n): T {\n\tfunction createProxy(path: string[] = []): any {\n\t\treturn new Proxy(function () {}, {\n\t\t\tget(target, prop: string) {\n\t\t\t\tconst fullPath = [...path, prop];\n\t\t\t\tlet current: any = routes;\n\t\t\t\tfor (const segment of fullPath) {\n\t\t\t\t\tif (current && typeof current === \"object\" && segment in current) {\n\t\t\t\t\t\tcurrent = current[segment];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrent = undefined;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (typeof current === \"function\") {\n\t\t\t\t\treturn current;\n\t\t\t\t}\n\n\t\t\t\treturn createProxy(fullPath);\n\t\t\t},\n\t\t\tapply: async (_, __, args) => {\n\t\t\t\tconst routePath =\n\t\t\t\t\t\"/\" +\n\t\t\t\t\tpath\n\t\t\t\t\t\t.map((segment) =>\n\t\t\t\t\t\t\tsegment.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"/\");\n\n\t\t\t\tconst arg = (args[0] || {}) as ProxyRequest;\n\t\t\t\tconst method = getMethod(routePath, knownPathMethods, arg);\n\t\t\t\tconst { query, options, ...body } = arg;\n\n\t\t\t\treturn await client(routePath, {\n\t\t\t\t\t...options,\n\t\t\t\t\tbody: method === \"GET\" ? undefined : body,\n\t\t\t\t\tquery: query,\n\t\t\t\t\tmethod,\n\t\t\t\t\tasync onSuccess(context) {\n\t\t\t\t\t\tconst signal = $signal?.find((s) => s.matcher(routePath));\n\t\t\t\t\t\tif (!signal) return;\n\t\t\t\t\t\tconst signalAtom = $signals?.[signal.atom];\n\t\t\t\t\t\tif (!signalAtom) return;\n\t\t\t\t\t\tsignalAtom.set(!signalAtom.get());\n\t\t\t\t\t\tawait options?.onSuccess?.(context);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\treturn createProxy() as T;\n}\n","import type { BetterFetch } from \"@better-fetch/fetch\";\nimport { atom, computed, task } from \"nanostores\";\nimport type { Auth as BetterAuth } from \"../auth\";\nimport type { Prettify } from \"../types/helper\";\nimport type { InferSession, InferUser } from \"../types/models\";\n\nexport function getSessionAtom<Auth extends BetterAuth>(client: BetterFetch) {\n\ttype UserWithAdditionalFields = InferUser<Auth[\"options\"]>;\n\ttype SessionWithAdditionalFields = InferSession<Auth[\"options\"]>;\n\tconst $signal = atom<boolean>(false);\n\tconst $session = computed($signal, () =>\n\t\ttask(async () => {\n\t\t\tconst session = await client(\"/session\", {\n\t\t\t\tcredentials: \"include\",\n\t\t\t\tmethod: \"GET\",\n\t\t\t});\n\t\t\treturn session.data as {\n\t\t\t\tuser: Prettify<UserWithAdditionalFields>;\n\t\t\t\tsession: Prettify<SessionWithAdditionalFields>;\n\t\t\t} | null;\n\t\t}),\n\t);\n\treturn { $session, $sessionSignal: $signal };\n}\n","import type { AuthPlugin, ClientOptions } from \"./type\";\nimport { createAuthFetch, createAuthClient as createClient } from \"./base\";\nimport { useStore } from \"@nanostores/solid\";\nimport type * as SolidJS from \"solid-js\"; //to fix ts error: This is likely not portable. A type annotation is necessary.\nimport type { UnionToIntersection } from \"../types/helper\";\nexport const createAuthClient = <Option extends ClientOptions>(\n\toptions?: Option,\n) => {\n\tconst $fetch = createAuthFetch(options);\n\tconst hooks = options?.authPlugins?.reduce(\n\t\t(acc, plugin) => {\n\t\t\treturn {\n\t\t\t\t...acc,\n\t\t\t\t...(plugin($fetch).integrations?.solid?.(useStore) || {}),\n\t\t\t};\n\t\t},\n\t\t{} as Record<string, any>,\n\t) as Option[\"authPlugins\"] extends Array<infer Pl>\n\t\t? Pl extends AuthPlugin\n\t\t\t? UnionToIntersection<\n\t\t\t\t\tReturnType<Pl>[\"integrations\"] extends\n\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\treact?: (useStore: any) => infer R;\n\t\t\t\t\t\t }\n\t\t\t\t\t\t| undefined\n\t\t\t\t\t\t? R\n\t\t\t\t\t\t: {}\n\t\t\t\t>\n\t\t\t: {}\n\t\t: {};\n\n\tconst client = createClient(options, hooks);\n\n\tfunction useSession() {\n\t\treturn useStore(client.$atoms.$session);\n\t}\n\tconst obj = Object.assign(client, {\n\t\tuseSession,\n\t});\n\treturn obj;\n};\n"],"mappings":"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","names":["createAuthClient"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/base-url.ts","../src/error/better-auth-error.ts","../src/client/fetch-plugins.ts","../src/client/config.ts","../src/client/proxy.ts","../src/utils/misc.ts","../src/client/session-atom.ts","../src/client/solid.ts"],"names":[],"mappings":"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","file":"solid.js","sourcesContent":["function checkHasPath(url: string): boolean {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\treturn parsedUrl.pathname !== \"/\";\n\t} catch (error) {\n\t\tconsole.error(\"Invalid URL:\", error);\n\t\treturn false;\n\t}\n}\n\nfunction withPath(url: string, path = \"/api/auth\") {\n\tconst hasPath = checkHasPath(url);\n\tif (hasPath) {\n\t\treturn url;\n\t}\n\tpath = path.startsWith(\"/\") ? path : `/${path}`;\n\treturn `${url}${path}`;\n}\n\nexport function getBaseURL(url?: string, path?: string) {\n\tif (url) {\n\t\treturn withPath(url, path);\n\t}\n\tconst env: any = typeof process !== \"undefined\" ? process.env : {};\n\tconst fromEnv =\n\t\tenv.BETTER_AUTH_URL ||\n\t\tenv.NEXT_PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.NUXT_PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.NUXT_PUBLIC_AUTH_URL;\n\tif (fromEnv) {\n\t\treturn withPath(fromEnv, path);\n\t}\n\n\tif (typeof window !== \"undefined\") {\n\t\treturn withPath(window.location.origin, path);\n\t}\n\n\treturn undefined;\n}\n","export class BetterAuthError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t}\n}\n","import { type BetterFetchPlugin, betterFetch } from \"@better-fetch/fetch\";\nimport { BetterAuthError } from \"../error/better-auth-error\";\n\nexport const redirectPlugin = {\n\tid: \"redirect\",\n\tname: \"Redirect\",\n\thooks: {\n\t\tonSuccess(context) {\n\t\t\tif (context.data?.url && context.data?.redirect) {\n\t\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\t\twindow.location.href = context.data.url;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n} satisfies BetterFetchPlugin;\n\nexport const addCurrentURL = {\n\tid: \"add-current-url\",\n\tname: \"Add current URL\",\n\thooks: {\n\t\tonRequest(context) {\n\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\tconst url = new URL(context.url);\n\t\t\t\turl.searchParams.set(\"currentURL\", window.location.href);\n\t\t\t\tcontext.url = url;\n\t\t\t}\n\t\t\treturn context;\n\t\t},\n\t},\n} satisfies BetterFetchPlugin;\n\nexport const csrfPlugin = {\n\tid: \"csrf\",\n\tname: \"CSRF Check\",\n\tasync init(url, options) {\n\t\tif (typeof window !== \"undefined\") {\n\t\t\t/**\n\t\t\t * If origin is the same as baseURL\n\t\t\t * then we don't need to check the CSRF token.\n\t\t\t */\n\t\t\tconst isTheSameOrigin =\n\t\t\t\tnew URL(options?.baseURL || url).origin === window.location.origin;\n\t\t\tif (isTheSameOrigin) {\n\t\t\t\treturn { url, options };\n\t\t\t}\n\t\t}\n\n\t\tif (!options?.baseURL) {\n\t\t\tthrow new BetterAuthError(\n\t\t\t\t\"API Base URL on the auth client isn't configured. Please pass it directly to the client `baseURL`\",\n\t\t\t);\n\t\t}\n\n\t\tif (options?.method !== \"GET\") {\n\t\t\toptions = options || {};\n\t\t\tconst { data, error } = await betterFetch<{\n\t\t\t\tcsrfToken: string;\n\t\t\t}>(\"/csrf\", {\n\t\t\t\tbody: undefined,\n\t\t\t\tbaseURL: options.baseURL,\n\t\t\t\tplugins: [],\n\t\t\t\tmethod: \"GET\",\n\t\t\t\tcredentials: \"include\",\n\t\t\t\tcustomFetchImpl: options.customFetchImpl,\n\t\t\t});\n\t\t\tif (error?.status === 404) {\n\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\"Route not found. Make sure the server is running and the base URL is correct and includes the path (e.g. http://localhost:3000/api/auth).\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (error) {\n\t\t\t\tthrow new BetterAuthError(error.message || \"Failed to get CSRF token.\");\n\t\t\t}\n\t\t\toptions.body = {\n\t\t\t\t...options?.body,\n\t\t\t\tcsrfToken: data.csrfToken,\n\t\t\t};\n\t\t}\n\t\toptions.credentials = \"include\";\n\t\treturn { url, options };\n\t},\n} satisfies BetterFetchPlugin;\n","import { createFetch } from \"@better-fetch/fetch\";\nimport { getBaseURL } from \"../utils/base-url\";\nimport { type Atom } from \"nanostores\";\nimport type { AtomListener, ClientOptions } from \"./types\";\n\nimport { addCurrentURL, csrfPlugin, redirectPlugin } from \"./fetch-plugins\";\n\nexport const getClientConfig = <O extends ClientOptions>(options?: O) => {\n\tconst $fetch = createFetch({\n\t\tbaseURL: getBaseURL(options?.fetchOptions?.baseURL || options?.baseURL),\n\t\t...options?.fetchOptions,\n\t\tplugins: [\n\t\t\tcsrfPlugin,\n\t\t\tredirectPlugin,\n\t\t\taddCurrentURL,\n\t\t\t...(options?.fetchOptions?.plugins || []),\n\t\t\t...(options?.plugins\n\t\t\t\t?.flatMap((plugin) => plugin.fetchPlugins)\n\t\t\t\t.filter((pl) => pl !== undefined) || []),\n\t\t],\n\t});\n\tconst plugins = options?.plugins || [];\n\tlet pluginsActions = {} as Record<string, any>;\n\tlet pluginsAtoms = {} as Record<string, Atom<any>>;\n\tlet pluginPathMethods: Record<string, \"POST\" | \"GET\"> = {\n\t\t\"/sign-out\": \"POST\",\n\t};\n\tconst atomListeners: AtomListener[] = [\n\t\t{\n\t\t\tsignal: \"_sessionSignal\",\n\t\t\tmatcher(path) {\n\t\t\t\treturn path === \"/sign-out\" || path === \"sign-up/email\";\n\t\t\t},\n\t\t},\n\t];\n\tfor (const plugin of plugins) {\n\t\tif (plugin.getActions) {\n\t\t\tObject.assign(pluginsActions, plugin.getActions?.($fetch));\n\t\t}\n\t\tif (plugin.getAtoms) {\n\t\t\tObject.assign(pluginsAtoms, plugin.getAtoms?.($fetch));\n\t\t}\n\t\tif (plugin.pathMethods) {\n\t\t\tObject.assign(pluginPathMethods, plugin.pathMethods);\n\t\t}\n\t\tif (plugin.atomListeners) {\n\t\t\tatomListeners.push(...plugin.atomListeners);\n\t\t}\n\t}\n\treturn {\n\t\tpluginsActions,\n\t\tpluginsAtoms,\n\t\tpluginPathMethods,\n\t\tatomListeners,\n\t\t$fetch,\n\t};\n};\n","import type { BetterFetch } from \"@better-fetch/fetch\";\nimport type { Atom, PreinitializedWritableAtom } from \"nanostores\";\nimport type { ProxyRequest } from \"./path-to-object\";\nimport type { AuthClientPlugin } from \"./types\";\n\nfunction getMethod(\n\tpath: string,\n\tknownPathMethods: Record<string, \"POST\" | \"GET\">,\n\targs?: ProxyRequest,\n) {\n\tconst method = knownPathMethods[path];\n\tconst { options, query, ...body } = args || {};\n\tif (method) {\n\t\treturn method;\n\t}\n\tif (options?.method) {\n\t\treturn options.method;\n\t}\n\tif (body && Object.keys(body).length > 0) {\n\t\treturn \"POST\";\n\t}\n\treturn \"GET\";\n}\n\nexport type AuthProxySignal = {\n\tatom: PreinitializedWritableAtom<boolean>;\n\tmatcher: (path: string) => boolean;\n};\n\nexport function createDynamicPathProxy<T extends Record<string, any>>(\n\troutes: T,\n\tclient: BetterFetch,\n\tknownPathMethods: Record<string, \"POST\" | \"GET\">,\n\tatoms: Record<string, Atom>,\n\tatomListeners: AuthClientPlugin[\"atomListeners\"],\n): T {\n\tfunction createProxy(path: string[] = []): any {\n\t\treturn new Proxy(function () {}, {\n\t\t\tget(target, prop: string) {\n\t\t\t\tconst fullPath = [...path, prop];\n\t\t\t\tlet current: any = routes;\n\t\t\t\tfor (const segment of fullPath) {\n\t\t\t\t\tif (current && typeof current === \"object\" && segment in current) {\n\t\t\t\t\t\tcurrent = current[segment];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrent = undefined;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (typeof current === \"function\") {\n\t\t\t\t\treturn current;\n\t\t\t\t}\n\t\t\t\treturn createProxy(fullPath);\n\t\t\t},\n\t\t\tapply: async (_, __, args) => {\n\t\t\t\tconst routePath =\n\t\t\t\t\t\"/\" +\n\t\t\t\t\tpath\n\t\t\t\t\t\t.map((segment) =>\n\t\t\t\t\t\t\tsegment.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"/\");\n\n\t\t\t\tconst arg = (args[0] || {}) as ProxyRequest;\n\t\t\t\tconst method = getMethod(routePath, knownPathMethods, arg);\n\t\t\t\tconst { query, options, ...body } = arg;\n\n\t\t\t\treturn await client(routePath, {\n\t\t\t\t\t...options,\n\t\t\t\t\tbody:\n\t\t\t\t\t\tmethod === \"GET\"\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t...body,\n\t\t\t\t\t\t\t\t\t...(options?.body || {}),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\tquery: query,\n\t\t\t\t\tmethod,\n\t\t\t\t\tasync onSuccess(context) {\n\t\t\t\t\t\tawait options?.onSuccess?.(context);\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * We trigger listeners\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst matches = atomListeners?.find((s) => s.matcher(routePath));\n\t\t\t\t\t\tif (!matches) return;\n\t\t\t\t\t\tconst signal = atoms[matches.signal];\n\t\t\t\t\t\tif (!signal) return;\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * To avoid race conditions we set the signal in a setTimeout\n\t\t\t\t\t\t */\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t//@ts-expect-error\n\t\t\t\t\t\t\tsignal.set(!signal.get());\n\t\t\t\t\t\t}, 0);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\n\treturn createProxy() as T;\n}\n","export function capitalizeFirstLetter(str: string) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n","import type { BetterFetch } from \"@better-fetch/fetch\";\nimport { atom, computed, task } from \"nanostores\";\nimport type { Auth as BetterAuth } from \"../auth\";\nimport type { Prettify } from \"../types/helper\";\nimport type { InferSession, InferUser } from \"../types/models\";\nimport type { AuthClientPlugin, ClientOptions } from \"./types\";\n\nexport function getSessionAtom<Option extends ClientOptions>(\n\tclient: BetterFetch,\n) {\n\ttype Plugins = Option[\"plugins\"] extends Array<AuthClientPlugin>\n\t\t? Array<Option[\"plugins\"][number][\"$InferServerPlugin\"]>\n\t\t: undefined;\n\n\ttype Auth = {\n\t\thandler: any;\n\t\tapi: any;\n\t\toptions: {\n\t\t\tdatabase: any;\n\t\t\tplugins: Plugins;\n\t\t};\n\t};\n\n\ttype UserWithAdditionalFields = InferUser<\n\t\tAuth extends BetterAuth ? Auth : never\n\t>;\n\n\t//@ts-expect-error\n\ttype SessionWithAdditionalFields = InferSession<Auth[\"options\"]>;\n\tconst $signal = atom<boolean>(false);\n\tconst $session = computed($signal, () =>\n\t\ttask(async () => {\n\t\t\tconst session = await client(\"/session\", {\n\t\t\t\tcredentials: \"include\",\n\t\t\t\tmethod: \"GET\",\n\t\t\t});\n\t\t\treturn session.data as {\n\t\t\t\tuser: Prettify<UserWithAdditionalFields>;\n\t\t\t\tsession: Prettify<SessionWithAdditionalFields>;\n\t\t\t} | null;\n\t\t}),\n\t);\n\treturn { $session, _sessionSignal: $signal };\n}\n","import { useStore } from \"@nanostores/solid\";\nimport { getClientConfig } from \"./config\";\nimport { createDynamicPathProxy } from \"./proxy\";\nimport { capitalizeFirstLetter } from \"../utils/misc\";\nimport type {\n\tAuthClientPlugin,\n\tClientOptions,\n\tInferActions,\n\tInferClientAPI,\n\tIsSignal,\n} from \"./types\";\nimport type { Accessor } from \"solid-js\";\nimport { getSessionAtom } from \"./session-atom\";\nimport type { UnionToIntersection } from \"../types/helper\";\n\nfunction getAtomKey(str: string) {\n\treturn `use${capitalizeFirstLetter(str)}`;\n}\n\ntype InferResolvedHooks<O extends ClientOptions> = O[\"plugins\"] extends Array<\n\tinfer Plugin\n>\n\t? Plugin extends AuthClientPlugin\n\t\t? Plugin[\"getAtoms\"] extends (fetch: any) => infer Atoms\n\t\t\t? Atoms extends Record<string, any>\n\t\t\t\t? {\n\t\t\t\t\t\t[key in keyof Atoms as IsSignal<key> extends true\n\t\t\t\t\t\t\t? never\n\t\t\t\t\t\t\t: key extends string\n\t\t\t\t\t\t\t\t? `use${Capitalize<key>}`\n\t\t\t\t\t\t\t\t: never]: () => Accessor<ReturnType<Atoms[key][\"get\"]>>;\n\t\t\t\t\t}\n\t\t\t\t: {}\n\t\t\t: {}\n\t\t: {}\n\t: {};\n\nexport function createAuthClient<Option extends ClientOptions>(\n\toptions?: Option,\n) {\n\tconst {\n\t\tpluginPathMethods,\n\t\tpluginsActions,\n\t\tpluginsAtoms,\n\t\t$fetch,\n\t\tatomListeners,\n\t} = getClientConfig(options);\n\tlet resolvedHooks: Record<string, any> = {};\n\tfor (const [key, value] of Object.entries(pluginsAtoms)) {\n\t\tresolvedHooks[getAtomKey(key)] = () => useStore(value);\n\t}\n\tconst { $session, _sessionSignal } = getSessionAtom<Option>($fetch);\n\n\tfunction useSession() {\n\t\treturn useStore($session);\n\t}\n\tconst routes = {\n\t\t...pluginsActions,\n\t\t...resolvedHooks,\n\t\tuseSession,\n\t};\n\tconst proxy = createDynamicPathProxy(\n\t\troutes,\n\t\t$fetch,\n\t\tpluginPathMethods,\n\t\t{\n\t\t\t...pluginsAtoms,\n\t\t\t_sessionSignal,\n\t\t},\n\t\tatomListeners,\n\t);\n\treturn proxy as UnionToIntersection<InferResolvedHooks<Option>> &\n\t\tInferClientAPI<Option> &\n\t\tInferActions<Option> & {\n\t\t\tuseSession: typeof useSession;\n\t\t};\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as LiteralString } from './helper-
|
|
1
|
+
import { L as LiteralString } from './helper-D8dhRz72.js';
|
|
2
2
|
|
|
3
3
|
type SubArray<T extends unknown[] | readonly unknown[] | any[]> = T[number][];
|
|
4
4
|
type Subset<K extends keyof R, R extends Record<string | LiteralString, readonly string[] | readonly LiteralString[]>> = {
|
|
@@ -45,33 +45,33 @@ declare const defaultAc: AccessControl<{
|
|
|
45
45
|
readonly member: readonly ["create", "update", "delete"];
|
|
46
46
|
readonly invitation: readonly ["create", "cancel"];
|
|
47
47
|
}>;
|
|
48
|
-
declare const adminAc: Role<Subset<"
|
|
48
|
+
declare const adminAc: Role<Subset<"organization" | "member" | "invitation", {
|
|
49
49
|
readonly organization: readonly ["update", "delete"];
|
|
50
50
|
readonly member: readonly ["create", "update", "delete"];
|
|
51
51
|
readonly invitation: readonly ["create", "cancel"];
|
|
52
52
|
}>>;
|
|
53
|
-
declare const ownerAc: Role<Subset<"
|
|
53
|
+
declare const ownerAc: Role<Subset<"organization" | "member" | "invitation", {
|
|
54
54
|
readonly organization: readonly ["update", "delete"];
|
|
55
55
|
readonly member: readonly ["create", "update", "delete"];
|
|
56
56
|
readonly invitation: readonly ["create", "cancel"];
|
|
57
57
|
}>>;
|
|
58
|
-
declare const memberAc: Role<Subset<"
|
|
58
|
+
declare const memberAc: Role<Subset<"organization" | "member" | "invitation", {
|
|
59
59
|
readonly organization: readonly ["update", "delete"];
|
|
60
60
|
readonly member: readonly ["create", "update", "delete"];
|
|
61
61
|
readonly invitation: readonly ["create", "cancel"];
|
|
62
62
|
}>>;
|
|
63
63
|
declare const defaultRoles: {
|
|
64
|
-
admin: Role<Subset<"
|
|
64
|
+
admin: Role<Subset<"organization" | "member" | "invitation", {
|
|
65
65
|
readonly organization: readonly ["update", "delete"];
|
|
66
66
|
readonly member: readonly ["create", "update", "delete"];
|
|
67
67
|
readonly invitation: readonly ["create", "cancel"];
|
|
68
68
|
}>>;
|
|
69
|
-
owner: Role<Subset<"
|
|
69
|
+
owner: Role<Subset<"organization" | "member" | "invitation", {
|
|
70
70
|
readonly organization: readonly ["update", "delete"];
|
|
71
71
|
readonly member: readonly ["create", "update", "delete"];
|
|
72
72
|
readonly invitation: readonly ["create", "cancel"];
|
|
73
73
|
}>>;
|
|
74
|
-
member: Role<Subset<"
|
|
74
|
+
member: Role<Subset<"organization" | "member" | "invitation", {
|
|
75
75
|
readonly organization: readonly ["update", "delete"];
|
|
76
76
|
readonly member: readonly ["create", "update", "delete"];
|
|
77
77
|
readonly invitation: readonly ["create", "cancel"];
|
package/dist/svelte-kit.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import '
|
|
1
|
+
import { Auth } from './index.js';
|
|
2
|
+
import { B as BetterAuthOptions } from './internal-adapter-CVKQ4XR9.js';
|
|
3
|
+
import './helper-D8dhRz72.js';
|
|
3
4
|
import 'zod';
|
|
4
|
-
import '
|
|
5
|
-
import './schema-BOszzrbQ.js';
|
|
6
|
-
import 'arctic';
|
|
5
|
+
import 'better-call';
|
|
7
6
|
import 'kysely';
|
|
7
|
+
import './index-CcxejJTH.js';
|
|
8
|
+
import 'arctic';
|
|
8
9
|
|
|
9
10
|
declare const toSvelteKitHandler: (auth: Auth) => (event: {
|
|
10
11
|
request: Request;
|
package/dist/svelte-kit.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { building } from '$app/environment';
|
|
2
|
+
|
|
1
3
|
// src/integrations/svelte-kit.ts
|
|
2
|
-
import { building } from "$app/environment";
|
|
3
4
|
var toSvelteKitHandler = (auth) => {
|
|
4
5
|
return (event) => auth.handler(event.request);
|
|
5
6
|
};
|
|
@@ -20,15 +21,15 @@ var svelteKitHandler = ({
|
|
|
20
21
|
};
|
|
21
22
|
function isAuthPath(url, options) {
|
|
22
23
|
const _url = new URL(url);
|
|
23
|
-
const baseURL = new URL(options.baseURL || _url.origin);
|
|
24
|
-
const basePath = options.basePath || "/api/auth";
|
|
24
|
+
const baseURL = new URL(options.baseURL || `${_url.origin}/api/auth`);
|
|
25
25
|
if (_url.origin !== baseURL.origin) return false;
|
|
26
|
-
if (!_url.pathname.startsWith(
|
|
26
|
+
if (!_url.pathname.startsWith(
|
|
27
|
+
baseURL.pathname.endsWith("/") ? baseURL.pathname : `${baseURL.pathname}/`
|
|
28
|
+
))
|
|
29
|
+
return false;
|
|
27
30
|
return true;
|
|
28
31
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
toSvelteKitHandler
|
|
33
|
-
};
|
|
32
|
+
|
|
33
|
+
export { isAuthPath, svelteKitHandler, toSvelteKitHandler };
|
|
34
|
+
//# sourceMappingURL=svelte-kit.js.map
|
|
34
35
|
//# sourceMappingURL=svelte-kit.js.map
|
package/dist/svelte-kit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/integrations/svelte-kit.ts"],"sourcesContent":["//@ts-expect-error\nimport { building } from \"$app/environment\";\nimport type { Auth } from \"../auth\";\nimport type { BetterAuthOptions } from \"../types\";\n\nexport const toSvelteKitHandler = (auth: Auth) => {\n\treturn (event: { request: Request }) => auth.handler(event.request);\n};\n\nexport const svelteKitHandler = ({\n\tauth,\n\tevent,\n\tresolve,\n}: {\n\tauth: Auth;\n\tevent: { request: Request; url: URL };\n\tresolve: (event: any) => any;\n}) => {\n\tif (building) {\n\t\treturn resolve(event);\n\t}\n\tconst { request, url } = event;\n\tif (isAuthPath(url.toString(), auth.options)) {\n\t\tconsole.log(\"here\");\n\t\treturn auth.handler(request);\n\t}\n\treturn resolve(event);\n};\n\nexport function isAuthPath(url: string, options: BetterAuthOptions) {\n\tconst _url = new URL(url);\n\tconst baseURL = new URL(options.baseURL || _url.origin
|
|
1
|
+
{"version":3,"sources":["../src/integrations/svelte-kit.ts"],"names":[],"mappings":";;;AAKa,IAAA,kBAAA,GAAqB,CAAC,IAAe,KAAA;AACjD,EAAA,OAAO,CAAC,KAAA,KAAgC,IAAK,CAAA,OAAA,CAAQ,MAAM,OAAO,CAAA,CAAA;AACnE,EAAA;AAEO,IAAM,mBAAmB,CAAC;AAAA,EAChC,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AACD,CAIM,KAAA;AACL,EAAA,IAAI,QAAU,EAAA;AACb,IAAA,OAAO,QAAQ,KAAK,CAAA,CAAA;AAAA,GACrB;AACA,EAAM,MAAA,EAAE,OAAS,EAAA,GAAA,EAAQ,GAAA,KAAA,CAAA;AACzB,EAAA,IAAI,WAAW,GAAI,CAAA,QAAA,EAAY,EAAA,IAAA,CAAK,OAAO,CAAG,EAAA;AAC7C,IAAA,OAAA,CAAQ,IAAI,MAAM,CAAA,CAAA;AAClB,IAAO,OAAA,IAAA,CAAK,QAAQ,OAAO,CAAA,CAAA;AAAA,GAC5B;AACA,EAAA,OAAO,QAAQ,KAAK,CAAA,CAAA;AACrB,EAAA;AAEO,SAAS,UAAA,CAAW,KAAa,OAA4B,EAAA;AACnE,EAAM,MAAA,IAAA,GAAO,IAAI,GAAA,CAAI,GAAG,CAAA,CAAA;AACxB,EAAM,MAAA,OAAA,GAAU,IAAI,GAAI,CAAA,OAAA,CAAQ,WAAW,CAAG,EAAA,IAAA,CAAK,MAAM,CAAW,SAAA,CAAA,CAAA,CAAA;AACpE,EAAA,IAAI,IAAK,CAAA,MAAA,KAAW,OAAQ,CAAA,MAAA,EAAe,OAAA,KAAA,CAAA;AAC3C,EACC,IAAA,CAAC,KAAK,QAAS,CAAA,UAAA;AAAA,IACd,OAAA,CAAQ,SAAS,QAAS,CAAA,GAAG,IAC1B,OAAQ,CAAA,QAAA,GACR,CAAG,EAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA,CAAA;AAAA,GACvB;AAEA,IAAO,OAAA,KAAA,CAAA;AACR,EAAO,OAAA,IAAA,CAAA;AACR","file":"svelte-kit.js","sourcesContent":["//@ts-expect-error\nimport { building } from \"$app/environment\";\nimport type { Auth } from \"../auth\";\nimport type { BetterAuthOptions } from \"../types\";\n\nexport const toSvelteKitHandler = (auth: Auth) => {\n\treturn (event: { request: Request }) => auth.handler(event.request);\n};\n\nexport const svelteKitHandler = ({\n\tauth,\n\tevent,\n\tresolve,\n}: {\n\tauth: Auth;\n\tevent: { request: Request; url: URL };\n\tresolve: (event: any) => any;\n}) => {\n\tif (building) {\n\t\treturn resolve(event);\n\t}\n\tconst { request, url } = event;\n\tif (isAuthPath(url.toString(), auth.options)) {\n\t\tconsole.log(\"here\");\n\t\treturn auth.handler(request);\n\t}\n\treturn resolve(event);\n};\n\nexport function isAuthPath(url: string, options: BetterAuthOptions) {\n\tconst _url = new URL(url);\n\tconst baseURL = new URL(options.baseURL || `${_url.origin}/api/auth`);\n\tif (_url.origin !== baseURL.origin) return false;\n\tif (\n\t\t!_url.pathname.startsWith(\n\t\t\tbaseURL.pathname.endsWith(\"/\")\n\t\t\t\t? baseURL.pathname\n\t\t\t\t: `${baseURL.pathname}/`,\n\t\t)\n\t)\n\t\treturn false;\n\treturn true;\n}\n"]}
|