better-auth-studio 1.0.79-beta.60 → 1.0.79-beta.61
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.
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { StudioConfig } from '../types/handler.js';
|
|
2
|
+
type TanStackStartHandlerContext = {
|
|
3
|
+
request: Request;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* TanStack Start adapter for Better Auth Studio
|
|
7
|
+
*
|
|
8
|
+
* Usage in a server route:
|
|
9
|
+
* ```ts
|
|
10
|
+
* // src/routes/api/studio/$.ts
|
|
11
|
+
* import { createFileRoute } from '@tanstack/react-router';
|
|
12
|
+
* import { betterAuthStudio } from 'better-auth-studio/tanstack-start';
|
|
13
|
+
* import studioConfig from '../../../../studio.config';
|
|
14
|
+
*
|
|
15
|
+
* const handler = betterAuthStudio(studioConfig);
|
|
16
|
+
*
|
|
17
|
+
* export const Route = createFileRoute('/api/studio/$')({
|
|
18
|
+
* server: {
|
|
19
|
+
* handlers: {
|
|
20
|
+
* GET: handler,
|
|
21
|
+
* POST: handler,
|
|
22
|
+
* PUT: handler,
|
|
23
|
+
* DELETE: handler,
|
|
24
|
+
* PATCH: handler,
|
|
25
|
+
* },
|
|
26
|
+
* },
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function betterAuthStudio(config: StudioConfig): ({ request }: TanStackStartHandlerContext) => Promise<Response>;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=tanstack-start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-start.d.ts","sourceRoot":"","sources":["../../src/adapters/tanstack-start.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAuC,MAAM,qBAAqB,CAAC;AAG7F,KAAK,2BAA2B,GAAG;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,IACrC,aAAa,2BAA2B,KAAG,OAAO,CAAC,QAAQ,CAAC,CAa3E"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { handleStudioRequest } from '../core/handler.js';
|
|
2
|
+
/**
|
|
3
|
+
* TanStack Start adapter for Better Auth Studio
|
|
4
|
+
*
|
|
5
|
+
* Usage in a server route:
|
|
6
|
+
* ```ts
|
|
7
|
+
* // src/routes/api/studio/$.ts
|
|
8
|
+
* import { createFileRoute } from '@tanstack/react-router';
|
|
9
|
+
* import { betterAuthStudio } from 'better-auth-studio/tanstack-start';
|
|
10
|
+
* import studioConfig from '../../../../studio.config';
|
|
11
|
+
*
|
|
12
|
+
* const handler = betterAuthStudio(studioConfig);
|
|
13
|
+
*
|
|
14
|
+
* export const Route = createFileRoute('/api/studio/$')({
|
|
15
|
+
* server: {
|
|
16
|
+
* handlers: {
|
|
17
|
+
* GET: handler,
|
|
18
|
+
* POST: handler,
|
|
19
|
+
* PUT: handler,
|
|
20
|
+
* DELETE: handler,
|
|
21
|
+
* PATCH: handler,
|
|
22
|
+
* },
|
|
23
|
+
* },
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function betterAuthStudio(config) {
|
|
28
|
+
return async ({ request }) => {
|
|
29
|
+
try {
|
|
30
|
+
const universalReq = await convertTanStackStartToUniversal(request, config);
|
|
31
|
+
const universalRes = await handleStudioRequest(universalReq, config);
|
|
32
|
+
return universalToResponse(universalRes);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error('Studio handler error:', error);
|
|
36
|
+
return new Response(JSON.stringify({ error: 'Internal server error' }), {
|
|
37
|
+
status: 500,
|
|
38
|
+
headers: { 'Content-Type': 'application/json' },
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async function convertTanStackStartToUniversal(request, config) {
|
|
44
|
+
let body;
|
|
45
|
+
const method = request.method;
|
|
46
|
+
if (method !== 'GET' && method !== 'HEAD') {
|
|
47
|
+
const contentType = request.headers.get('content-type') || '';
|
|
48
|
+
if (contentType.includes('application/json')) {
|
|
49
|
+
try {
|
|
50
|
+
body = await request.json();
|
|
51
|
+
}
|
|
52
|
+
catch { }
|
|
53
|
+
}
|
|
54
|
+
else if (contentType.includes('application/x-www-form-urlencoded') ||
|
|
55
|
+
contentType.includes('multipart/form-data')) {
|
|
56
|
+
try {
|
|
57
|
+
const formData = await request.formData();
|
|
58
|
+
body = Object.fromEntries(formData.entries());
|
|
59
|
+
}
|
|
60
|
+
catch { }
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
try {
|
|
64
|
+
const text = await request.text();
|
|
65
|
+
if (text && text.trim()) {
|
|
66
|
+
try {
|
|
67
|
+
body = JSON.parse(text);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
body = text;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch { }
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const headers = {};
|
|
78
|
+
request.headers.forEach((value, key) => {
|
|
79
|
+
headers[key] = value;
|
|
80
|
+
});
|
|
81
|
+
const basePath = config.basePath || '/api/studio';
|
|
82
|
+
const normalizedBasePath = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
|
|
83
|
+
const url = new URL(request.url);
|
|
84
|
+
let path = url.pathname;
|
|
85
|
+
if (path.startsWith(normalizedBasePath)) {
|
|
86
|
+
path = path.slice(normalizedBasePath.length) || '/';
|
|
87
|
+
}
|
|
88
|
+
const pathWithQuery = path + url.search;
|
|
89
|
+
return {
|
|
90
|
+
url: pathWithQuery,
|
|
91
|
+
method: method,
|
|
92
|
+
headers,
|
|
93
|
+
body,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function universalToResponse(res) {
|
|
97
|
+
return new Response(res.body, {
|
|
98
|
+
status: res.status,
|
|
99
|
+
headers: res.headers,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=tanstack-start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tanstack-start.js","sourceRoot":"","sources":["../../src/adapters/tanstack-start.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "better-auth-studio",
|
|
3
|
-
"version": "1.0.79-beta.
|
|
3
|
+
"version": "1.0.79-beta.61",
|
|
4
4
|
"description": "Studio for Better Auth",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"./elysia": "./dist/adapters/elysia.js",
|
|
16
16
|
"./svelte-kit": "./dist/adapters/svelte-kit.js",
|
|
17
17
|
"./solid-start": "./dist/adapters/solid-start.js",
|
|
18
|
+
"./tanstack-start": "./dist/adapters/tanstack-start.js",
|
|
18
19
|
"./config": "./dist/types/handler.js"
|
|
19
20
|
},
|
|
20
21
|
"scripts": {
|