@edgestore/server 0.5.2 → 0.5.3
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/adapters/astro/index.d.ts +3 -0
- package/dist/adapters/astro/index.d.ts.map +1 -1
- package/dist/adapters/astro/index.js +23 -21
- package/dist/adapters/astro/index.mjs +12 -10
- package/dist/adapters/express/index.d.ts +3 -0
- package/dist/adapters/express/index.d.ts.map +1 -1
- package/dist/adapters/express/index.js +23 -21
- package/dist/adapters/express/index.mjs +12 -10
- package/dist/adapters/fastify/index.d.ts +4 -1
- package/dist/adapters/fastify/index.d.ts.map +1 -1
- package/dist/adapters/fastify/index.js +23 -21
- package/dist/adapters/fastify/index.mjs +12 -10
- package/dist/adapters/hono/index.d.ts +3 -0
- package/dist/adapters/hono/index.d.ts.map +1 -1
- package/dist/adapters/hono/index.js +23 -21
- package/dist/adapters/hono/index.mjs +12 -10
- package/dist/adapters/next/app/index.d.ts +3 -0
- package/dist/adapters/next/app/index.d.ts.map +1 -1
- package/dist/adapters/next/app/index.js +24 -22
- package/dist/adapters/next/app/index.mjs +12 -10
- package/dist/adapters/next/pages/index.d.ts +3 -0
- package/dist/adapters/next/pages/index.d.ts.map +1 -1
- package/dist/adapters/next/pages/index.js +24 -22
- package/dist/adapters/next/pages/index.mjs +12 -10
- package/dist/adapters/remix/index.d.ts +3 -0
- package/dist/adapters/remix/index.d.ts.map +1 -1
- package/dist/adapters/remix/index.js +23 -21
- package/dist/adapters/remix/index.mjs +12 -10
- package/dist/adapters/shared.d.ts +74 -0
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/start/index.d.ts +3 -0
- package/dist/adapters/start/index.d.ts.map +1 -1
- package/dist/adapters/start/index.js +26 -22
- package/dist/adapters/start/index.mjs +15 -11
- package/dist/core/client/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -3
- package/dist/core/index.mjs +7 -4
- package/dist/{index-7b259533.js → index-0c5489b9.js} +1 -1
- package/dist/{index-421c502f.js → index-c5c3cdaa.js} +1 -1
- package/dist/{index-2848cb40.mjs → index-e0432eed.mjs} +1 -1
- package/dist/providers/aws/index.js +1 -1
- package/dist/providers/aws/index.mjs +1 -1
- package/dist/providers/azure/index.js +1 -1
- package/dist/providers/azure/index.mjs +1 -1
- package/dist/providers/edgestore/index.js +2 -2
- package/dist/providers/edgestore/index.mjs +2 -2
- package/dist/{shared-25dbfab4.js → shared-8397d4db.js} +37 -10
- package/dist/{shared-685c8a0c.js → shared-8a6bcddb.js} +38 -9
- package/dist/{shared-4b199b96.mjs → shared-d2a0d681.mjs} +38 -10
- package/dist/{utils-7349adab.mjs → utils-2dd5613c.mjs} +1 -1
- package/dist/{utils-0aab6e3b.js → utils-681a13a7.js} +1 -1
- package/dist/{utils-b3d35894.js → utils-b30649cc.js} +1 -1
- package/package.json +7 -7
- package/src/adapters/astro/index.ts +19 -9
- package/src/adapters/express/index.ts +13 -6
- package/src/adapters/fastify/index.ts +33 -22
- package/src/adapters/hono/index.ts +13 -6
- package/src/adapters/next/app/index.ts +13 -6
- package/src/adapters/next/pages/index.ts +13 -6
- package/src/adapters/remix/index.ts +13 -6
- package/src/adapters/shared.ts +125 -9
- package/src/adapters/start/index.ts +16 -7
- package/src/core/client/index.ts +7 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgestore/server",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "Upload files with ease from React/Next.js",
|
|
5
5
|
"homepage": "https://edgestore.dev",
|
|
6
6
|
"repository": "https://github.com/edgestorejs/edgestore.git",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
},
|
|
110
110
|
"license": "MIT",
|
|
111
111
|
"dependencies": {
|
|
112
|
-
"@edgestore/shared": "0.5.
|
|
112
|
+
"@edgestore/shared": "0.5.3",
|
|
113
113
|
"@panva/hkdf": "^1.0.4",
|
|
114
114
|
"cookie": "^0.5.0",
|
|
115
115
|
"jose": "^4.13.1",
|
|
@@ -145,11 +145,11 @@
|
|
|
145
145
|
"astro": "^5.7.12",
|
|
146
146
|
"fastify": "^5.3.2",
|
|
147
147
|
"hono": "^4.7.9",
|
|
148
|
-
"next": "
|
|
149
|
-
"react": "
|
|
150
|
-
"react-dom": "
|
|
148
|
+
"next": "15.3.1",
|
|
149
|
+
"react": "19.1.0",
|
|
150
|
+
"react-dom": "19.1.0",
|
|
151
151
|
"typescript": "^5",
|
|
152
|
-
"zod": "3.
|
|
152
|
+
"zod": "3.25.42"
|
|
153
153
|
},
|
|
154
|
-
"gitHead": "
|
|
154
|
+
"gitHead": "fb6625eb48bf5565acc01fe765dcc949f8641e84"
|
|
155
155
|
}
|
|
@@ -14,11 +14,13 @@ import {
|
|
|
14
14
|
completeMultipartUpload,
|
|
15
15
|
confirmUpload,
|
|
16
16
|
deleteFile,
|
|
17
|
+
getCookieConfig,
|
|
17
18
|
init,
|
|
18
19
|
requestUpload,
|
|
19
20
|
requestUploadParts,
|
|
20
21
|
type CompleteMultipartUploadBody,
|
|
21
22
|
type ConfirmUploadBody,
|
|
23
|
+
type CookieConfig,
|
|
22
24
|
type DeleteFileBody,
|
|
23
25
|
type RequestUploadBody,
|
|
24
26
|
type RequestUploadPartsParams,
|
|
@@ -28,12 +30,14 @@ export type Config<TCtx> = {
|
|
|
28
30
|
provider?: Provider;
|
|
29
31
|
router: EdgeStoreRouter<TCtx>;
|
|
30
32
|
logLevel?: LogLevel;
|
|
33
|
+
cookieConfig?: CookieConfig;
|
|
31
34
|
} & (TCtx extends Record<string, never>
|
|
32
35
|
? object
|
|
33
36
|
: {
|
|
34
37
|
provider?: Provider;
|
|
35
38
|
router: EdgeStoreRouter<TCtx>;
|
|
36
39
|
createContext: (opts: APIContext) => MaybePromise<TCtx>;
|
|
40
|
+
cookieConfig?: CookieConfig;
|
|
37
41
|
});
|
|
38
42
|
|
|
39
43
|
declare const globalThis: {
|
|
@@ -57,11 +61,13 @@ function getCookie(request: Request, name: string): string | undefined {
|
|
|
57
61
|
}
|
|
58
62
|
|
|
59
63
|
export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
60
|
-
const { provider = EdgeStoreProvider() } = config;
|
|
64
|
+
const { provider = EdgeStoreProvider(), cookieConfig } = config;
|
|
61
65
|
const log = new Logger(config.logLevel);
|
|
62
66
|
globalThis._EDGE_STORE_LOGGER = log;
|
|
63
67
|
log.debug('Creating EdgeStore Astro handler');
|
|
64
68
|
|
|
69
|
+
const resolvedCookieConfig = getCookieConfig(cookieConfig);
|
|
70
|
+
|
|
65
71
|
return async (context: APIContext) => {
|
|
66
72
|
try {
|
|
67
73
|
const { request } = context;
|
|
@@ -87,6 +93,7 @@ export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
|
87
93
|
ctx,
|
|
88
94
|
provider,
|
|
89
95
|
router: config.router,
|
|
96
|
+
cookieConfig,
|
|
90
97
|
});
|
|
91
98
|
|
|
92
99
|
const headers = new Headers();
|
|
@@ -114,7 +121,7 @@ export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
|
114
121
|
provider,
|
|
115
122
|
router: config.router,
|
|
116
123
|
body,
|
|
117
|
-
ctxToken: getCookie(request,
|
|
124
|
+
ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),
|
|
118
125
|
});
|
|
119
126
|
|
|
120
127
|
return new Response(JSON.stringify(result), {
|
|
@@ -126,7 +133,7 @@ export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
|
126
133
|
provider,
|
|
127
134
|
router: config.router,
|
|
128
135
|
body,
|
|
129
|
-
ctxToken: getCookie(request,
|
|
136
|
+
ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),
|
|
130
137
|
});
|
|
131
138
|
|
|
132
139
|
return new Response(JSON.stringify(result), {
|
|
@@ -138,7 +145,7 @@ export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
|
138
145
|
provider,
|
|
139
146
|
router: config.router,
|
|
140
147
|
body,
|
|
141
|
-
ctxToken: getCookie(request,
|
|
148
|
+
ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),
|
|
142
149
|
});
|
|
143
150
|
|
|
144
151
|
return new Response(null, { status: 200 });
|
|
@@ -148,7 +155,7 @@ export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
|
148
155
|
provider,
|
|
149
156
|
router: config.router,
|
|
150
157
|
body,
|
|
151
|
-
ctxToken: getCookie(request,
|
|
158
|
+
ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),
|
|
152
159
|
});
|
|
153
160
|
|
|
154
161
|
return new Response(JSON.stringify(result), {
|
|
@@ -160,7 +167,7 @@ export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
|
160
167
|
provider,
|
|
161
168
|
router: config.router,
|
|
162
169
|
body,
|
|
163
|
-
ctxToken: getCookie(request,
|
|
170
|
+
ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),
|
|
164
171
|
});
|
|
165
172
|
|
|
166
173
|
return new Response(JSON.stringify(result), {
|
|
@@ -199,11 +206,12 @@ export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
|
199
206
|
|
|
200
207
|
return new Response(JSON.stringify(err.formattedJson()), {
|
|
201
208
|
status: EDGE_STORE_ERROR_CODES[err.code as EdgeStoreErrorCodeKey],
|
|
202
|
-
headers: {
|
|
209
|
+
headers: {
|
|
210
|
+
'Content-Type': 'application/json',
|
|
211
|
+
},
|
|
203
212
|
});
|
|
204
213
|
} else {
|
|
205
214
|
log.error(err);
|
|
206
|
-
|
|
207
215
|
return new Response(
|
|
208
216
|
JSON.stringify(
|
|
209
217
|
new EdgeStoreError({
|
|
@@ -213,7 +221,9 @@ export function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>) {
|
|
|
213
221
|
),
|
|
214
222
|
{
|
|
215
223
|
status: 500,
|
|
216
|
-
headers: {
|
|
224
|
+
headers: {
|
|
225
|
+
'Content-Type': 'application/json',
|
|
226
|
+
},
|
|
217
227
|
},
|
|
218
228
|
);
|
|
219
229
|
}
|
|
@@ -14,11 +14,13 @@ import {
|
|
|
14
14
|
completeMultipartUpload,
|
|
15
15
|
confirmUpload,
|
|
16
16
|
deleteFile,
|
|
17
|
+
getCookieConfig,
|
|
17
18
|
init,
|
|
18
19
|
requestUpload,
|
|
19
20
|
requestUploadParts,
|
|
20
21
|
type CompleteMultipartUploadBody,
|
|
21
22
|
type ConfirmUploadBody,
|
|
23
|
+
type CookieConfig,
|
|
22
24
|
type DeleteFileBody,
|
|
23
25
|
type RequestUploadBody,
|
|
24
26
|
type RequestUploadPartsParams,
|
|
@@ -33,12 +35,14 @@ export type Config<TCtx> = {
|
|
|
33
35
|
provider?: Provider;
|
|
34
36
|
router: EdgeStoreRouter<TCtx>;
|
|
35
37
|
logLevel?: LogLevel;
|
|
38
|
+
cookieConfig?: CookieConfig;
|
|
36
39
|
} & (TCtx extends Record<string, never>
|
|
37
40
|
? object
|
|
38
41
|
: {
|
|
39
42
|
provider?: Provider;
|
|
40
43
|
router: EdgeStoreRouter<TCtx>;
|
|
41
44
|
createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;
|
|
45
|
+
cookieConfig?: CookieConfig;
|
|
42
46
|
});
|
|
43
47
|
|
|
44
48
|
declare const globalThis: {
|
|
@@ -46,11 +50,13 @@ declare const globalThis: {
|
|
|
46
50
|
};
|
|
47
51
|
|
|
48
52
|
export function createEdgeStoreExpressHandler<TCtx>(config: Config<TCtx>) {
|
|
49
|
-
const { provider = EdgeStoreProvider() } = config;
|
|
53
|
+
const { provider = EdgeStoreProvider(), cookieConfig } = config;
|
|
50
54
|
const log = new Logger(config.logLevel);
|
|
51
55
|
globalThis._EDGE_STORE_LOGGER = log;
|
|
52
56
|
log.debug('Creating EdgeStore Express handler');
|
|
53
57
|
|
|
58
|
+
const resolvedCookieConfig = getCookieConfig(cookieConfig);
|
|
59
|
+
|
|
54
60
|
return async (req: Request, res: Response) => {
|
|
55
61
|
try {
|
|
56
62
|
const pathname = req.url ?? '';
|
|
@@ -74,6 +80,7 @@ export function createEdgeStoreExpressHandler<TCtx>(config: Config<TCtx>) {
|
|
|
74
80
|
ctx,
|
|
75
81
|
provider,
|
|
76
82
|
router: config.router,
|
|
83
|
+
cookieConfig,
|
|
77
84
|
});
|
|
78
85
|
res.setHeader('Set-Cookie', newCookies);
|
|
79
86
|
res.json({
|
|
@@ -86,7 +93,7 @@ export function createEdgeStoreExpressHandler<TCtx>(config: Config<TCtx>) {
|
|
|
86
93
|
provider,
|
|
87
94
|
router: config.router,
|
|
88
95
|
body: req.body as RequestUploadBody,
|
|
89
|
-
ctxToken: req.cookies[
|
|
96
|
+
ctxToken: req.cookies[resolvedCookieConfig.ctx.name],
|
|
90
97
|
}),
|
|
91
98
|
);
|
|
92
99
|
} else if (matchPath(pathname, '/request-upload-parts')) {
|
|
@@ -95,7 +102,7 @@ export function createEdgeStoreExpressHandler<TCtx>(config: Config<TCtx>) {
|
|
|
95
102
|
provider,
|
|
96
103
|
router: config.router,
|
|
97
104
|
body: req.body as RequestUploadPartsParams,
|
|
98
|
-
ctxToken: req.cookies[
|
|
105
|
+
ctxToken: req.cookies[resolvedCookieConfig.ctx.name],
|
|
99
106
|
}),
|
|
100
107
|
);
|
|
101
108
|
} else if (matchPath(pathname, '/complete-multipart-upload')) {
|
|
@@ -103,7 +110,7 @@ export function createEdgeStoreExpressHandler<TCtx>(config: Config<TCtx>) {
|
|
|
103
110
|
provider,
|
|
104
111
|
router: config.router,
|
|
105
112
|
body: req.body as CompleteMultipartUploadBody,
|
|
106
|
-
ctxToken: req.cookies[
|
|
113
|
+
ctxToken: req.cookies[resolvedCookieConfig.ctx.name],
|
|
107
114
|
});
|
|
108
115
|
res.status(200).end();
|
|
109
116
|
} else if (matchPath(pathname, '/confirm-upload')) {
|
|
@@ -112,7 +119,7 @@ export function createEdgeStoreExpressHandler<TCtx>(config: Config<TCtx>) {
|
|
|
112
119
|
provider,
|
|
113
120
|
router: config.router,
|
|
114
121
|
body: req.body as ConfirmUploadBody,
|
|
115
|
-
ctxToken: req.cookies[
|
|
122
|
+
ctxToken: req.cookies[resolvedCookieConfig.ctx.name],
|
|
116
123
|
}),
|
|
117
124
|
);
|
|
118
125
|
} else if (matchPath(pathname, '/delete-file')) {
|
|
@@ -121,7 +128,7 @@ export function createEdgeStoreExpressHandler<TCtx>(config: Config<TCtx>) {
|
|
|
121
128
|
provider,
|
|
122
129
|
router: config.router,
|
|
123
130
|
body: req.body as DeleteFileBody,
|
|
124
|
-
ctxToken: req.cookies[
|
|
131
|
+
ctxToken: req.cookies[resolvedCookieConfig.ctx.name],
|
|
125
132
|
}),
|
|
126
133
|
);
|
|
127
134
|
} else if (matchPath(pathname, '/proxy-file')) {
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
type MaybePromise,
|
|
7
7
|
type Provider,
|
|
8
8
|
} from '@edgestore/shared';
|
|
9
|
-
import { type
|
|
9
|
+
import { type FastifyReply, type FastifyRequest } from 'fastify';
|
|
10
10
|
import Logger, { type LogLevel } from '../../libs/logger';
|
|
11
11
|
import { matchPath } from '../../libs/utils';
|
|
12
12
|
import { EdgeStoreProvider } from '../../providers/edgestore';
|
|
@@ -14,11 +14,13 @@ import {
|
|
|
14
14
|
completeMultipartUpload,
|
|
15
15
|
confirmUpload,
|
|
16
16
|
deleteFile,
|
|
17
|
+
getCookieConfig,
|
|
17
18
|
init,
|
|
18
19
|
requestUpload,
|
|
19
20
|
requestUploadParts,
|
|
20
21
|
type CompleteMultipartUploadBody,
|
|
21
22
|
type ConfirmUploadBody,
|
|
23
|
+
type CookieConfig,
|
|
22
24
|
type DeleteFileBody,
|
|
23
25
|
type RequestUploadBody,
|
|
24
26
|
type RequestUploadPartsParams,
|
|
@@ -33,12 +35,14 @@ export type Config<TCtx> = {
|
|
|
33
35
|
provider?: Provider;
|
|
34
36
|
router: EdgeStoreRouter<TCtx>;
|
|
35
37
|
logLevel?: LogLevel;
|
|
38
|
+
cookieConfig?: CookieConfig;
|
|
36
39
|
} & (TCtx extends Record<string, never>
|
|
37
40
|
? object
|
|
38
41
|
: {
|
|
39
42
|
provider?: Provider;
|
|
40
43
|
router: EdgeStoreRouter<TCtx>;
|
|
41
44
|
createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;
|
|
45
|
+
cookieConfig?: CookieConfig;
|
|
42
46
|
});
|
|
43
47
|
|
|
44
48
|
declare const globalThis: {
|
|
@@ -52,31 +56,35 @@ function getCookie(req: FastifyRequest, name: string): string | undefined {
|
|
|
52
56
|
// Type assertion for TypeScript
|
|
53
57
|
return (req as any).cookies[name];
|
|
54
58
|
}
|
|
55
|
-
|
|
59
|
+
|
|
56
60
|
// Fallback to parsing cookie header
|
|
57
61
|
const cookieHeader = req.headers.cookie;
|
|
58
62
|
if (!cookieHeader) return undefined;
|
|
59
|
-
|
|
60
|
-
const cookies = cookieHeader
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
|
|
64
|
+
const cookies = cookieHeader
|
|
65
|
+
.split(';')
|
|
66
|
+
.reduce<Record<string, string>>((acc, cookie) => {
|
|
67
|
+
const [key, value] = cookie.trim().split('=');
|
|
68
|
+
if (key && value) acc[key] = value;
|
|
69
|
+
return acc;
|
|
70
|
+
}, {});
|
|
71
|
+
|
|
66
72
|
return cookies[name];
|
|
67
73
|
}
|
|
68
74
|
|
|
69
75
|
export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
70
|
-
const { provider = EdgeStoreProvider() } = config;
|
|
76
|
+
const { provider = EdgeStoreProvider(), cookieConfig } = config;
|
|
71
77
|
const log = new Logger(config.logLevel);
|
|
72
78
|
globalThis._EDGE_STORE_LOGGER = log;
|
|
73
79
|
log.debug('Creating EdgeStore Fastify handler');
|
|
74
80
|
|
|
81
|
+
const resolvedCookieConfig = getCookieConfig(cookieConfig);
|
|
82
|
+
|
|
75
83
|
return async (req: FastifyRequest, reply: FastifyReply) => {
|
|
76
84
|
try {
|
|
77
85
|
// Get the URL from the request - simplified approach
|
|
78
86
|
const pathname = req.url;
|
|
79
|
-
|
|
87
|
+
|
|
80
88
|
if (matchPath(pathname, '/health')) {
|
|
81
89
|
return reply.send('OK');
|
|
82
90
|
} else if (matchPath(pathname, '/init')) {
|
|
@@ -97,8 +105,9 @@ export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
|
97
105
|
ctx,
|
|
98
106
|
provider,
|
|
99
107
|
router: config.router,
|
|
108
|
+
cookieConfig,
|
|
100
109
|
});
|
|
101
|
-
|
|
110
|
+
|
|
102
111
|
// Set cookies more efficiently - handling them using void operator
|
|
103
112
|
// to explicitly mark these synchronous calls as intentionally not awaited
|
|
104
113
|
if (Array.isArray(newCookies)) {
|
|
@@ -110,7 +119,7 @@ export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
|
110
119
|
// If it's a single cookie string
|
|
111
120
|
void reply.header('Set-Cookie', newCookies);
|
|
112
121
|
}
|
|
113
|
-
|
|
122
|
+
|
|
114
123
|
return reply.send({
|
|
115
124
|
token,
|
|
116
125
|
baseUrl,
|
|
@@ -121,7 +130,7 @@ export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
|
121
130
|
provider,
|
|
122
131
|
router: config.router,
|
|
123
132
|
body: req.body as RequestUploadBody,
|
|
124
|
-
ctxToken: getCookie(req,
|
|
133
|
+
ctxToken: getCookie(req, resolvedCookieConfig.ctx.name),
|
|
125
134
|
}),
|
|
126
135
|
);
|
|
127
136
|
} else if (matchPath(pathname, '/request-upload-parts')) {
|
|
@@ -130,7 +139,7 @@ export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
|
130
139
|
provider,
|
|
131
140
|
router: config.router,
|
|
132
141
|
body: req.body as RequestUploadPartsParams,
|
|
133
|
-
ctxToken: getCookie(req,
|
|
142
|
+
ctxToken: getCookie(req, resolvedCookieConfig.ctx.name),
|
|
134
143
|
}),
|
|
135
144
|
);
|
|
136
145
|
} else if (matchPath(pathname, '/complete-multipart-upload')) {
|
|
@@ -138,7 +147,7 @@ export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
|
138
147
|
provider,
|
|
139
148
|
router: config.router,
|
|
140
149
|
body: req.body as CompleteMultipartUploadBody,
|
|
141
|
-
ctxToken: getCookie(req,
|
|
150
|
+
ctxToken: getCookie(req, resolvedCookieConfig.ctx.name),
|
|
142
151
|
});
|
|
143
152
|
return reply.status(200).send();
|
|
144
153
|
} else if (matchPath(pathname, '/confirm-upload')) {
|
|
@@ -147,7 +156,7 @@ export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
|
147
156
|
provider,
|
|
148
157
|
router: config.router,
|
|
149
158
|
body: req.body as ConfirmUploadBody,
|
|
150
|
-
ctxToken: getCookie(req,
|
|
159
|
+
ctxToken: getCookie(req, resolvedCookieConfig.ctx.name),
|
|
151
160
|
}),
|
|
152
161
|
);
|
|
153
162
|
} else if (matchPath(pathname, '/delete-file')) {
|
|
@@ -156,15 +165,17 @@ export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
|
156
165
|
provider,
|
|
157
166
|
router: config.router,
|
|
158
167
|
body: req.body as DeleteFileBody,
|
|
159
|
-
ctxToken: getCookie(req,
|
|
168
|
+
ctxToken: getCookie(req, resolvedCookieConfig.ctx.name),
|
|
160
169
|
}),
|
|
161
170
|
);
|
|
162
171
|
} else if (matchPath(pathname, '/proxy-file')) {
|
|
163
|
-
const url = req.query
|
|
164
|
-
|
|
172
|
+
const url = req.query
|
|
173
|
+
? (req.query as Record<string, any>).url
|
|
174
|
+
: undefined;
|
|
175
|
+
|
|
165
176
|
if (typeof url === 'string') {
|
|
166
177
|
const cookieHeader = req.headers.cookie ?? '';
|
|
167
|
-
|
|
178
|
+
|
|
168
179
|
const proxyRes = await fetch(url, {
|
|
169
180
|
headers: {
|
|
170
181
|
cookie: cookieHeader,
|
|
@@ -202,4 +213,4 @@ export function createEdgeStoreFastifyHandler<TCtx>(config: Config<TCtx>) {
|
|
|
202
213
|
}
|
|
203
214
|
}
|
|
204
215
|
};
|
|
205
|
-
}
|
|
216
|
+
}
|
|
@@ -14,11 +14,13 @@ import {
|
|
|
14
14
|
completeMultipartUpload,
|
|
15
15
|
confirmUpload,
|
|
16
16
|
deleteFile,
|
|
17
|
+
getCookieConfig,
|
|
17
18
|
init,
|
|
18
19
|
requestUpload,
|
|
19
20
|
requestUploadParts,
|
|
20
21
|
type CompleteMultipartUploadBody,
|
|
21
22
|
type ConfirmUploadBody,
|
|
23
|
+
type CookieConfig,
|
|
22
24
|
type DeleteFileBody,
|
|
23
25
|
type RequestUploadBody,
|
|
24
26
|
type RequestUploadPartsParams,
|
|
@@ -32,12 +34,14 @@ export type Config<TCtx> = {
|
|
|
32
34
|
provider?: Provider;
|
|
33
35
|
router: EdgeStoreRouter<TCtx>;
|
|
34
36
|
logLevel?: LogLevel;
|
|
37
|
+
cookieConfig?: CookieConfig;
|
|
35
38
|
} & (TCtx extends Record<string, never>
|
|
36
39
|
? object
|
|
37
40
|
: {
|
|
38
41
|
provider?: Provider;
|
|
39
42
|
router: EdgeStoreRouter<TCtx>;
|
|
40
43
|
createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;
|
|
44
|
+
cookieConfig?: CookieConfig;
|
|
41
45
|
});
|
|
42
46
|
|
|
43
47
|
declare const globalThis: {
|
|
@@ -54,11 +58,13 @@ function getCookie(c: Context, name: string): string | undefined {
|
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
export function createEdgeStoreHonoHandler<TCtx>(config: Config<TCtx>) {
|
|
57
|
-
const { provider = EdgeStoreProvider() } = config;
|
|
61
|
+
const { provider = EdgeStoreProvider(), cookieConfig } = config;
|
|
58
62
|
const log = new Logger(config.logLevel);
|
|
59
63
|
globalThis._EDGE_STORE_LOGGER = log;
|
|
60
64
|
log.debug('Creating EdgeStore Hono handler');
|
|
61
65
|
|
|
66
|
+
const resolvedCookieConfig = getCookieConfig(cookieConfig);
|
|
67
|
+
|
|
62
68
|
return async (c: Context) => {
|
|
63
69
|
try {
|
|
64
70
|
const pathname = new URL(c.req.url).pathname;
|
|
@@ -83,6 +89,7 @@ export function createEdgeStoreHonoHandler<TCtx>(config: Config<TCtx>) {
|
|
|
83
89
|
ctx,
|
|
84
90
|
provider,
|
|
85
91
|
router: config.router,
|
|
92
|
+
cookieConfig,
|
|
86
93
|
});
|
|
87
94
|
|
|
88
95
|
// Set cookies
|
|
@@ -105,7 +112,7 @@ export function createEdgeStoreHonoHandler<TCtx>(config: Config<TCtx>) {
|
|
|
105
112
|
provider,
|
|
106
113
|
router: config.router,
|
|
107
114
|
body,
|
|
108
|
-
ctxToken: getCookie(c,
|
|
115
|
+
ctxToken: getCookie(c, resolvedCookieConfig.ctx.name),
|
|
109
116
|
}),
|
|
110
117
|
);
|
|
111
118
|
} else if (matchPath(pathname, '/request-upload-parts')) {
|
|
@@ -115,7 +122,7 @@ export function createEdgeStoreHonoHandler<TCtx>(config: Config<TCtx>) {
|
|
|
115
122
|
provider,
|
|
116
123
|
router: config.router,
|
|
117
124
|
body,
|
|
118
|
-
ctxToken: getCookie(c,
|
|
125
|
+
ctxToken: getCookie(c, resolvedCookieConfig.ctx.name),
|
|
119
126
|
}),
|
|
120
127
|
);
|
|
121
128
|
} else if (matchPath(pathname, '/complete-multipart-upload')) {
|
|
@@ -124,7 +131,7 @@ export function createEdgeStoreHonoHandler<TCtx>(config: Config<TCtx>) {
|
|
|
124
131
|
provider,
|
|
125
132
|
router: config.router,
|
|
126
133
|
body,
|
|
127
|
-
ctxToken: getCookie(c,
|
|
134
|
+
ctxToken: getCookie(c, resolvedCookieConfig.ctx.name),
|
|
128
135
|
});
|
|
129
136
|
return c.body(null, 200);
|
|
130
137
|
} else if (matchPath(pathname, '/confirm-upload')) {
|
|
@@ -134,7 +141,7 @@ export function createEdgeStoreHonoHandler<TCtx>(config: Config<TCtx>) {
|
|
|
134
141
|
provider,
|
|
135
142
|
router: config.router,
|
|
136
143
|
body,
|
|
137
|
-
ctxToken: getCookie(c,
|
|
144
|
+
ctxToken: getCookie(c, resolvedCookieConfig.ctx.name),
|
|
138
145
|
}),
|
|
139
146
|
);
|
|
140
147
|
} else if (matchPath(pathname, '/delete-file')) {
|
|
@@ -144,7 +151,7 @@ export function createEdgeStoreHonoHandler<TCtx>(config: Config<TCtx>) {
|
|
|
144
151
|
provider,
|
|
145
152
|
router: config.router,
|
|
146
153
|
body,
|
|
147
|
-
ctxToken: getCookie(c,
|
|
154
|
+
ctxToken: getCookie(c, resolvedCookieConfig.ctx.name),
|
|
148
155
|
}),
|
|
149
156
|
);
|
|
150
157
|
} else if (matchPath(pathname, '/proxy-file')) {
|
|
@@ -14,11 +14,13 @@ import {
|
|
|
14
14
|
completeMultipartUpload,
|
|
15
15
|
confirmUpload,
|
|
16
16
|
deleteFile,
|
|
17
|
+
getCookieConfig,
|
|
17
18
|
init,
|
|
18
19
|
requestUpload,
|
|
19
20
|
requestUploadParts,
|
|
20
21
|
type CompleteMultipartUploadBody,
|
|
21
22
|
type ConfirmUploadBody,
|
|
23
|
+
type CookieConfig,
|
|
22
24
|
type DeleteFileBody,
|
|
23
25
|
type RequestUploadBody,
|
|
24
26
|
type RequestUploadPartsParams,
|
|
@@ -32,12 +34,14 @@ export type Config<TCtx> = {
|
|
|
32
34
|
provider?: Provider;
|
|
33
35
|
router: EdgeStoreRouter<TCtx>;
|
|
34
36
|
logLevel?: LogLevel;
|
|
37
|
+
cookieConfig?: CookieConfig;
|
|
35
38
|
} & (TCtx extends Record<string, never>
|
|
36
39
|
? object
|
|
37
40
|
: {
|
|
38
41
|
provider?: Provider;
|
|
39
42
|
router: EdgeStoreRouter<TCtx>;
|
|
40
43
|
createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;
|
|
44
|
+
cookieConfig?: CookieConfig;
|
|
41
45
|
});
|
|
42
46
|
|
|
43
47
|
declare const globalThis: {
|
|
@@ -45,11 +49,13 @@ declare const globalThis: {
|
|
|
45
49
|
};
|
|
46
50
|
|
|
47
51
|
export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
|
|
48
|
-
const { provider = EdgeStoreProvider() } = config;
|
|
52
|
+
const { provider = EdgeStoreProvider(), cookieConfig } = config;
|
|
49
53
|
const log = new Logger(config.logLevel);
|
|
50
54
|
globalThis._EDGE_STORE_LOGGER = log;
|
|
51
55
|
log.debug('Creating EdgeStore Next handler (app adapter)');
|
|
52
56
|
|
|
57
|
+
const resolvedCookieConfig = getCookieConfig(cookieConfig);
|
|
58
|
+
|
|
53
59
|
return async (req: NextRequest) => {
|
|
54
60
|
try {
|
|
55
61
|
if (!('nextUrl' in req))
|
|
@@ -83,6 +89,7 @@ export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
|
|
|
83
89
|
ctx,
|
|
84
90
|
provider,
|
|
85
91
|
router: config.router,
|
|
92
|
+
cookieConfig,
|
|
86
93
|
});
|
|
87
94
|
const res = new Response(
|
|
88
95
|
JSON.stringify({
|
|
@@ -105,7 +112,7 @@ export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
|
|
|
105
112
|
provider,
|
|
106
113
|
router: config.router,
|
|
107
114
|
body: (await req.json()) as RequestUploadBody,
|
|
108
|
-
ctxToken: req.cookies.get(
|
|
115
|
+
ctxToken: req.cookies.get(resolvedCookieConfig.ctx.name)?.value,
|
|
109
116
|
});
|
|
110
117
|
return new Response(JSON.stringify(res), {
|
|
111
118
|
status: 200,
|
|
@@ -118,7 +125,7 @@ export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
|
|
|
118
125
|
provider,
|
|
119
126
|
router: config.router,
|
|
120
127
|
body: (await req.json()) as RequestUploadPartsParams,
|
|
121
|
-
ctxToken: req.cookies.get(
|
|
128
|
+
ctxToken: req.cookies.get(resolvedCookieConfig.ctx.name)?.value,
|
|
122
129
|
});
|
|
123
130
|
return new Response(JSON.stringify(res), {
|
|
124
131
|
status: 200,
|
|
@@ -131,7 +138,7 @@ export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
|
|
|
131
138
|
provider,
|
|
132
139
|
router: config.router,
|
|
133
140
|
body: (await req.json()) as CompleteMultipartUploadBody,
|
|
134
|
-
ctxToken: req.cookies.get(
|
|
141
|
+
ctxToken: req.cookies.get(resolvedCookieConfig.ctx.name)?.value,
|
|
135
142
|
});
|
|
136
143
|
return new Response(null, {
|
|
137
144
|
status: 200,
|
|
@@ -141,7 +148,7 @@ export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
|
|
|
141
148
|
provider,
|
|
142
149
|
router: config.router,
|
|
143
150
|
body: (await req.json()) as ConfirmUploadBody,
|
|
144
|
-
ctxToken: req.cookies.get(
|
|
151
|
+
ctxToken: req.cookies.get(resolvedCookieConfig.ctx.name)?.value,
|
|
145
152
|
});
|
|
146
153
|
return new Response(JSON.stringify(res), {
|
|
147
154
|
status: 200,
|
|
@@ -154,7 +161,7 @@ export function createEdgeStoreNextHandler<TCtx>(config: Config<TCtx>) {
|
|
|
154
161
|
provider,
|
|
155
162
|
router: config.router,
|
|
156
163
|
body: (await req.json()) as DeleteFileBody,
|
|
157
|
-
ctxToken: req.cookies.get(
|
|
164
|
+
ctxToken: req.cookies.get(resolvedCookieConfig.ctx.name)?.value,
|
|
158
165
|
});
|
|
159
166
|
return new Response(JSON.stringify(res), {
|
|
160
167
|
status: 200,
|