@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.
Files changed (63) hide show
  1. package/dist/adapters/astro/index.d.ts +3 -0
  2. package/dist/adapters/astro/index.d.ts.map +1 -1
  3. package/dist/adapters/astro/index.js +23 -21
  4. package/dist/adapters/astro/index.mjs +12 -10
  5. package/dist/adapters/express/index.d.ts +3 -0
  6. package/dist/adapters/express/index.d.ts.map +1 -1
  7. package/dist/adapters/express/index.js +23 -21
  8. package/dist/adapters/express/index.mjs +12 -10
  9. package/dist/adapters/fastify/index.d.ts +4 -1
  10. package/dist/adapters/fastify/index.d.ts.map +1 -1
  11. package/dist/adapters/fastify/index.js +23 -21
  12. package/dist/adapters/fastify/index.mjs +12 -10
  13. package/dist/adapters/hono/index.d.ts +3 -0
  14. package/dist/adapters/hono/index.d.ts.map +1 -1
  15. package/dist/adapters/hono/index.js +23 -21
  16. package/dist/adapters/hono/index.mjs +12 -10
  17. package/dist/adapters/next/app/index.d.ts +3 -0
  18. package/dist/adapters/next/app/index.d.ts.map +1 -1
  19. package/dist/adapters/next/app/index.js +24 -22
  20. package/dist/adapters/next/app/index.mjs +12 -10
  21. package/dist/adapters/next/pages/index.d.ts +3 -0
  22. package/dist/adapters/next/pages/index.d.ts.map +1 -1
  23. package/dist/adapters/next/pages/index.js +24 -22
  24. package/dist/adapters/next/pages/index.mjs +12 -10
  25. package/dist/adapters/remix/index.d.ts +3 -0
  26. package/dist/adapters/remix/index.d.ts.map +1 -1
  27. package/dist/adapters/remix/index.js +23 -21
  28. package/dist/adapters/remix/index.mjs +12 -10
  29. package/dist/adapters/shared.d.ts +74 -0
  30. package/dist/adapters/shared.d.ts.map +1 -1
  31. package/dist/adapters/start/index.d.ts +3 -0
  32. package/dist/adapters/start/index.d.ts.map +1 -1
  33. package/dist/adapters/start/index.js +26 -22
  34. package/dist/adapters/start/index.mjs +15 -11
  35. package/dist/core/client/index.d.ts.map +1 -1
  36. package/dist/core/index.js +6 -3
  37. package/dist/core/index.mjs +7 -4
  38. package/dist/{index-7b259533.js → index-0c5489b9.js} +1 -1
  39. package/dist/{index-421c502f.js → index-c5c3cdaa.js} +1 -1
  40. package/dist/{index-2848cb40.mjs → index-e0432eed.mjs} +1 -1
  41. package/dist/providers/aws/index.js +1 -1
  42. package/dist/providers/aws/index.mjs +1 -1
  43. package/dist/providers/azure/index.js +1 -1
  44. package/dist/providers/azure/index.mjs +1 -1
  45. package/dist/providers/edgestore/index.js +2 -2
  46. package/dist/providers/edgestore/index.mjs +2 -2
  47. package/dist/{shared-25dbfab4.js → shared-8397d4db.js} +37 -10
  48. package/dist/{shared-685c8a0c.js → shared-8a6bcddb.js} +38 -9
  49. package/dist/{shared-4b199b96.mjs → shared-d2a0d681.mjs} +38 -10
  50. package/dist/{utils-7349adab.mjs → utils-2dd5613c.mjs} +1 -1
  51. package/dist/{utils-0aab6e3b.js → utils-681a13a7.js} +1 -1
  52. package/dist/{utils-b3d35894.js → utils-b30649cc.js} +1 -1
  53. package/package.json +7 -7
  54. package/src/adapters/astro/index.ts +19 -9
  55. package/src/adapters/express/index.ts +13 -6
  56. package/src/adapters/fastify/index.ts +33 -22
  57. package/src/adapters/hono/index.ts +13 -6
  58. package/src/adapters/next/app/index.ts +13 -6
  59. package/src/adapters/next/pages/index.ts +13 -6
  60. package/src/adapters/remix/index.ts +13 -6
  61. package/src/adapters/shared.ts +125 -9
  62. package/src/adapters/start/index.ts +16 -7
  63. 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.2",
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.2",
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": "^15.2.4",
149
- "react": "^19.0.0",
150
- "react-dom": "^19.0.0",
148
+ "next": "15.3.1",
149
+ "react": "19.1.0",
150
+ "react-dom": "19.1.0",
151
151
  "typescript": "^5",
152
- "zod": "3.21.4"
152
+ "zod": "3.25.42"
153
153
  },
154
- "gitHead": "97cb861d3f56e4e04c83acc6808d56771433df29"
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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: { 'Content-Type': 'application/json' },
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: { 'Content-Type': 'application/json' },
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['edgestore-ctx'],
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['edgestore-ctx'],
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['edgestore-ctx'],
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['edgestore-ctx'],
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['edgestore-ctx'],
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 FastifyRequest, type FastifyReply } from 'fastify';
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.split(';').reduce<Record<string, string>>((acc, cookie) => {
61
- const [key, value] = cookie.trim().split('=');
62
- if (key && value) acc[key] = value;
63
- return acc;
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
168
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name),
160
169
  }),
161
170
  );
162
171
  } else if (matchPath(pathname, '/proxy-file')) {
163
- const url = req.query ? (req.query as Record<string, any>).url : undefined;
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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, 'edgestore-ctx'),
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('edgestore-ctx')?.value,
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('edgestore-ctx')?.value,
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('edgestore-ctx')?.value,
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('edgestore-ctx')?.value,
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('edgestore-ctx')?.value,
164
+ ctxToken: req.cookies.get(resolvedCookieConfig.ctx.name)?.value,
158
165
  });
159
166
  return new Response(JSON.stringify(res), {
160
167
  status: 200,