@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
@@ -2,24 +2,25 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var shared = require('@edgestore/shared');
6
- var utils = require('../../../utils-0aab6e3b.js');
5
+ var shared$1 = require('@edgestore/shared');
6
+ var utils = require('../../../utils-681a13a7.js');
7
7
  var providers_edgestore_index = require('../../../providers/edgestore/index.js');
8
- var shared$1 = require('../../../shared-685c8a0c.js');
9
- require('../../../index-7b259533.js');
8
+ var shared = require('../../../shared-8a6bcddb.js');
9
+ require('../../../index-0c5489b9.js');
10
10
  require('@panva/hkdf');
11
11
  require('cookie');
12
12
  require('jose');
13
13
  require('uuid');
14
14
 
15
15
  function createEdgeStoreNextHandler(config) {
16
- const { provider = providers_edgestore_index.EdgeStoreProvider() } = config;
16
+ const { provider = providers_edgestore_index.EdgeStoreProvider(), cookieConfig } = config;
17
17
  const log = new utils.Logger(config.logLevel);
18
18
  globalThis._EDGE_STORE_LOGGER = log;
19
19
  log.debug('Creating EdgeStore Next handler (pages adapter)');
20
+ const resolvedCookieConfig = shared.getCookieConfig(cookieConfig);
20
21
  return async (req, res)=>{
21
22
  try {
22
- if (!('json' in res)) throw new shared.EdgeStoreError({
23
+ if (!('json' in res)) throw new shared$1.EdgeStoreError({
23
24
  message: 'Error running the pages adapter. Make sure you are importing the correct adapter in your router configuration',
24
25
  code: 'SERVER_ERROR'
25
26
  });
@@ -34,16 +35,17 @@ function createEdgeStoreNextHandler(config) {
34
35
  res
35
36
  }) : {};
36
37
  } catch (err) {
37
- throw new shared.EdgeStoreError({
38
+ throw new shared$1.EdgeStoreError({
38
39
  message: 'Error creating context',
39
40
  code: 'CREATE_CONTEXT_ERROR',
40
41
  cause: err instanceof Error ? err : undefined
41
42
  });
42
43
  }
43
- const { newCookies, token, baseUrl } = await shared$1.init({
44
+ const { newCookies, token, baseUrl } = await shared.init({
44
45
  ctx,
45
46
  provider,
46
- router: config.router
47
+ router: config.router,
48
+ cookieConfig
47
49
  });
48
50
  res.setHeader('Set-Cookie', newCookies);
49
51
  res.json({
@@ -51,40 +53,40 @@ function createEdgeStoreNextHandler(config) {
51
53
  baseUrl
52
54
  });
53
55
  } else if (utils.matchPath(pathname, '/request-upload')) {
54
- res.json(await shared$1.requestUpload({
56
+ res.json(await shared.requestUpload({
55
57
  provider,
56
58
  router: config.router,
57
59
  body: req.body,
58
- ctxToken: req.cookies['edgestore-ctx']
60
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
59
61
  }));
60
62
  } else if (utils.matchPath(pathname, '/request-upload-parts')) {
61
- res.json(await shared$1.requestUploadParts({
63
+ res.json(await shared.requestUploadParts({
62
64
  provider,
63
65
  router: config.router,
64
66
  body: req.body,
65
- ctxToken: req.cookies['edgestore-ctx']
67
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
66
68
  }));
67
69
  } else if (utils.matchPath(pathname, '/complete-multipart-upload')) {
68
- await shared$1.completeMultipartUpload({
70
+ await shared.completeMultipartUpload({
69
71
  provider,
70
72
  router: config.router,
71
73
  body: req.body,
72
- ctxToken: req.cookies['edgestore-ctx']
74
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
73
75
  });
74
76
  res.status(200).end();
75
77
  } else if (utils.matchPath(pathname, '/confirm-upload')) {
76
- res.json(await shared$1.confirmUpload({
78
+ res.json(await shared.confirmUpload({
77
79
  provider,
78
80
  router: config.router,
79
81
  body: req.body,
80
- ctxToken: req.cookies['edgestore-ctx']
82
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
81
83
  }));
82
84
  } else if (utils.matchPath(pathname, '/delete-file')) {
83
- res.json(await shared$1.deleteFile({
85
+ res.json(await shared.deleteFile({
84
86
  provider,
85
87
  router: config.router,
86
88
  body: req.body,
87
- ctxToken: req.cookies['edgestore-ctx']
89
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
88
90
  }));
89
91
  } else if (utils.matchPath(pathname, '/proxy-file')) {
90
92
  const { url } = req.query;
@@ -104,13 +106,13 @@ function createEdgeStoreNextHandler(config) {
104
106
  res.status(404).end();
105
107
  }
106
108
  } catch (err) {
107
- if (err instanceof shared.EdgeStoreError) {
109
+ if (err instanceof shared$1.EdgeStoreError) {
108
110
  log[err.level](err.formattedMessage());
109
111
  if (err.cause) log[err.level](err.cause);
110
- res.status(shared.EDGE_STORE_ERROR_CODES[err.code]).json(err.formattedJson());
112
+ res.status(shared$1.EDGE_STORE_ERROR_CODES[err.code]).json(err.formattedJson());
111
113
  } else {
112
114
  log.error(err);
113
- res.status(500).send(new shared.EdgeStoreError({
115
+ res.status(500).send(new shared$1.EdgeStoreError({
114
116
  message: 'Internal Server Error',
115
117
  code: 'SERVER_ERROR'
116
118
  }).formattedJson());
@@ -1,18 +1,19 @@
1
1
  import { EdgeStoreError, EDGE_STORE_ERROR_CODES } from '@edgestore/shared';
2
- import { L as Logger, m as matchPath } from '../../../utils-7349adab.mjs';
2
+ import { L as Logger, m as matchPath } from '../../../utils-2dd5613c.mjs';
3
3
  import { EdgeStoreProvider } from '../../../providers/edgestore/index.mjs';
4
- import { a as init, r as requestUpload, c as requestUploadParts, d as completeMultipartUpload, e as confirmUpload, f as deleteFile } from '../../../shared-4b199b96.mjs';
5
- import '../../../index-2848cb40.mjs';
4
+ import { a as getCookieConfig, c as init, r as requestUpload, d as requestUploadParts, e as completeMultipartUpload, f as confirmUpload, h as deleteFile } from '../../../shared-d2a0d681.mjs';
5
+ import '../../../index-e0432eed.mjs';
6
6
  import '@panva/hkdf';
7
7
  import 'cookie';
8
8
  import 'jose';
9
9
  import 'uuid';
10
10
 
11
11
  function createEdgeStoreNextHandler(config) {
12
- const { provider = EdgeStoreProvider() } = config;
12
+ const { provider = EdgeStoreProvider(), cookieConfig } = config;
13
13
  const log = new Logger(config.logLevel);
14
14
  globalThis._EDGE_STORE_LOGGER = log;
15
15
  log.debug('Creating EdgeStore Next handler (pages adapter)');
16
+ const resolvedCookieConfig = getCookieConfig(cookieConfig);
16
17
  return async (req, res)=>{
17
18
  try {
18
19
  if (!('json' in res)) throw new EdgeStoreError({
@@ -39,7 +40,8 @@ function createEdgeStoreNextHandler(config) {
39
40
  const { newCookies, token, baseUrl } = await init({
40
41
  ctx,
41
42
  provider,
42
- router: config.router
43
+ router: config.router,
44
+ cookieConfig
43
45
  });
44
46
  res.setHeader('Set-Cookie', newCookies);
45
47
  res.json({
@@ -51,21 +53,21 @@ function createEdgeStoreNextHandler(config) {
51
53
  provider,
52
54
  router: config.router,
53
55
  body: req.body,
54
- ctxToken: req.cookies['edgestore-ctx']
56
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
55
57
  }));
56
58
  } else if (matchPath(pathname, '/request-upload-parts')) {
57
59
  res.json(await requestUploadParts({
58
60
  provider,
59
61
  router: config.router,
60
62
  body: req.body,
61
- ctxToken: req.cookies['edgestore-ctx']
63
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
62
64
  }));
63
65
  } else if (matchPath(pathname, '/complete-multipart-upload')) {
64
66
  await completeMultipartUpload({
65
67
  provider,
66
68
  router: config.router,
67
69
  body: req.body,
68
- ctxToken: req.cookies['edgestore-ctx']
70
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
69
71
  });
70
72
  res.status(200).end();
71
73
  } else if (matchPath(pathname, '/confirm-upload')) {
@@ -73,14 +75,14 @@ function createEdgeStoreNextHandler(config) {
73
75
  provider,
74
76
  router: config.router,
75
77
  body: req.body,
76
- ctxToken: req.cookies['edgestore-ctx']
78
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
77
79
  }));
78
80
  } else if (matchPath(pathname, '/delete-file')) {
79
81
  res.json(await deleteFile({
80
82
  provider,
81
83
  router: config.router,
82
84
  body: req.body,
83
- ctxToken: req.cookies['edgestore-ctx']
85
+ ctxToken: req.cookies[resolvedCookieConfig.ctx.name]
84
86
  }));
85
87
  } else if (matchPath(pathname, '/proxy-file')) {
86
88
  const { url } = req.query;
@@ -1,5 +1,6 @@
1
1
  import { type EdgeStoreRouter, type MaybePromise, type Provider } from '@edgestore/shared';
2
2
  import { type LogLevel } from '../../libs/logger';
3
+ import { type CookieConfig } from '../shared';
3
4
  export type CreateContextOptions = {
4
5
  req: Request;
5
6
  };
@@ -7,10 +8,12 @@ export type Config<TCtx> = {
7
8
  provider?: Provider;
8
9
  router: EdgeStoreRouter<TCtx>;
9
10
  logLevel?: LogLevel;
11
+ cookieConfig?: CookieConfig;
10
12
  } & (TCtx extends Record<string, never> ? object : {
11
13
  provider?: Provider;
12
14
  router: EdgeStoreRouter<TCtx>;
13
15
  createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;
16
+ cookieConfig?: CookieConfig;
14
17
  });
15
18
  export declare function createEdgeStoreRemixHandler<TCtx>(config: Config<TCtx>): ({ request: req }: {
16
19
  request: Request;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/remix/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAiB1D,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GAAG,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,MAAM,GACN;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC,CAAC;AAsBP,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,sBAMpC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,uBAqIrD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/remix/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAUL,KAAK,YAAY,EAIlB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GAAG,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,MAAM,GACN;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC,CAAC;AAsBP,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,sBAQpC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,uBAsIrD"}
@@ -2,11 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var shared = require('@edgestore/shared');
6
- var utils = require('../../utils-0aab6e3b.js');
5
+ var shared$1 = require('@edgestore/shared');
6
+ var utils = require('../../utils-681a13a7.js');
7
7
  var providers_edgestore_index = require('../../providers/edgestore/index.js');
8
- var shared$1 = require('../../shared-685c8a0c.js');
9
- require('../../index-7b259533.js');
8
+ var shared = require('../../shared-8a6bcddb.js');
9
+ require('../../index-0c5489b9.js');
10
10
  require('@panva/hkdf');
11
11
  require('cookie');
12
12
  require('jose');
@@ -24,10 +24,11 @@ function getCookie(req, name) {
24
24
  return cookies[name];
25
25
  }
26
26
  function createEdgeStoreRemixHandler(config) {
27
- const { provider = providers_edgestore_index.EdgeStoreProvider() } = config;
27
+ const { provider = providers_edgestore_index.EdgeStoreProvider(), cookieConfig } = config;
28
28
  const log = new utils.Logger(config.logLevel);
29
29
  globalThis._EDGE_STORE_LOGGER = log;
30
30
  log.debug('Creating EdgeStore Remix handler');
31
+ const resolvedCookieConfig = shared.getCookieConfig(cookieConfig);
31
32
  return async ({ request: req })=>{
32
33
  try {
33
34
  const url = new URL(req.url);
@@ -41,16 +42,17 @@ function createEdgeStoreRemixHandler(config) {
41
42
  req
42
43
  }) : {};
43
44
  } catch (err) {
44
- throw new shared.EdgeStoreError({
45
+ throw new shared$1.EdgeStoreError({
45
46
  message: 'Error creating context',
46
47
  code: 'CREATE_CONTEXT_ERROR',
47
48
  cause: err instanceof Error ? err : undefined
48
49
  });
49
50
  }
50
- const { newCookies, token, baseUrl } = await shared$1.init({
51
+ const { newCookies, token, baseUrl } = await shared.init({
51
52
  ctx,
52
53
  provider,
53
- router: config.router
54
+ router: config.router,
55
+ cookieConfig
54
56
  });
55
57
  // Create response with cookies and token
56
58
  const responseHeaders = new Headers();
@@ -70,46 +72,46 @@ function createEdgeStoreRemixHandler(config) {
70
72
  });
71
73
  } else if (utils.matchPath(pathname, '/request-upload')) {
72
74
  const body = await req.json();
73
- return Response.json(await shared$1.requestUpload({
75
+ return Response.json(await shared.requestUpload({
74
76
  provider,
75
77
  router: config.router,
76
78
  body,
77
- ctxToken: getCookie(req, 'edgestore-ctx')
79
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
78
80
  }));
79
81
  } else if (utils.matchPath(pathname, '/request-upload-parts')) {
80
82
  const body = await req.json();
81
- return Response.json(await shared$1.requestUploadParts({
83
+ return Response.json(await shared.requestUploadParts({
82
84
  provider,
83
85
  router: config.router,
84
86
  body,
85
- ctxToken: getCookie(req, 'edgestore-ctx')
87
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
86
88
  }));
87
89
  } else if (utils.matchPath(pathname, '/complete-multipart-upload')) {
88
90
  const body = await req.json();
89
- await shared$1.completeMultipartUpload({
91
+ await shared.completeMultipartUpload({
90
92
  provider,
91
93
  router: config.router,
92
94
  body,
93
- ctxToken: getCookie(req, 'edgestore-ctx')
95
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
94
96
  });
95
97
  return new Response(null, {
96
98
  status: 200
97
99
  });
98
100
  } else if (utils.matchPath(pathname, '/confirm-upload')) {
99
101
  const body = await req.json();
100
- return Response.json(await shared$1.confirmUpload({
102
+ return Response.json(await shared.confirmUpload({
101
103
  provider,
102
104
  router: config.router,
103
105
  body,
104
- ctxToken: getCookie(req, 'edgestore-ctx')
106
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
105
107
  }));
106
108
  } else if (utils.matchPath(pathname, '/delete-file')) {
107
109
  const body = await req.json();
108
- return Response.json(await shared$1.deleteFile({
110
+ return Response.json(await shared.deleteFile({
109
111
  provider,
110
112
  router: config.router,
111
113
  body,
112
- ctxToken: getCookie(req, 'edgestore-ctx')
114
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
113
115
  }));
114
116
  } else if (utils.matchPath(pathname, '/proxy-file')) {
115
117
  const url = new URL(req.url).searchParams.get('url');
@@ -136,15 +138,15 @@ function createEdgeStoreRemixHandler(config) {
136
138
  });
137
139
  }
138
140
  } catch (err) {
139
- if (err instanceof shared.EdgeStoreError) {
141
+ if (err instanceof shared$1.EdgeStoreError) {
140
142
  log[err.level](err.formattedMessage());
141
143
  if (err.cause) log[err.level](err.cause);
142
144
  return Response.json(err.formattedJson(), {
143
- status: shared.EDGE_STORE_ERROR_CODES[err.code]
145
+ status: shared$1.EDGE_STORE_ERROR_CODES[err.code]
144
146
  });
145
147
  } else {
146
148
  log.error(err);
147
- return Response.json(new shared.EdgeStoreError({
149
+ return Response.json(new shared$1.EdgeStoreError({
148
150
  message: 'Internal Server Error',
149
151
  code: 'SERVER_ERROR'
150
152
  }).formattedJson(), {
@@ -1,8 +1,8 @@
1
1
  import { EdgeStoreError, EDGE_STORE_ERROR_CODES } from '@edgestore/shared';
2
- import { L as Logger, m as matchPath } from '../../utils-7349adab.mjs';
2
+ import { L as Logger, m as matchPath } from '../../utils-2dd5613c.mjs';
3
3
  import { EdgeStoreProvider } from '../../providers/edgestore/index.mjs';
4
- import { a as init, r as requestUpload, c as requestUploadParts, d as completeMultipartUpload, e as confirmUpload, f as deleteFile } from '../../shared-4b199b96.mjs';
5
- import '../../index-2848cb40.mjs';
4
+ import { a as getCookieConfig, c as init, r as requestUpload, d as requestUploadParts, e as completeMultipartUpload, f as confirmUpload, h as deleteFile } from '../../shared-d2a0d681.mjs';
5
+ import '../../index-e0432eed.mjs';
6
6
  import '@panva/hkdf';
7
7
  import 'cookie';
8
8
  import 'jose';
@@ -20,10 +20,11 @@ function getCookie(req, name) {
20
20
  return cookies[name];
21
21
  }
22
22
  function createEdgeStoreRemixHandler(config) {
23
- const { provider = EdgeStoreProvider() } = config;
23
+ const { provider = EdgeStoreProvider(), cookieConfig } = config;
24
24
  const log = new Logger(config.logLevel);
25
25
  globalThis._EDGE_STORE_LOGGER = log;
26
26
  log.debug('Creating EdgeStore Remix handler');
27
+ const resolvedCookieConfig = getCookieConfig(cookieConfig);
27
28
  return async ({ request: req })=>{
28
29
  try {
29
30
  const url = new URL(req.url);
@@ -46,7 +47,8 @@ function createEdgeStoreRemixHandler(config) {
46
47
  const { newCookies, token, baseUrl } = await init({
47
48
  ctx,
48
49
  provider,
49
- router: config.router
50
+ router: config.router,
51
+ cookieConfig
50
52
  });
51
53
  // Create response with cookies and token
52
54
  const responseHeaders = new Headers();
@@ -70,7 +72,7 @@ function createEdgeStoreRemixHandler(config) {
70
72
  provider,
71
73
  router: config.router,
72
74
  body,
73
- ctxToken: getCookie(req, 'edgestore-ctx')
75
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
74
76
  }));
75
77
  } else if (matchPath(pathname, '/request-upload-parts')) {
76
78
  const body = await req.json();
@@ -78,7 +80,7 @@ function createEdgeStoreRemixHandler(config) {
78
80
  provider,
79
81
  router: config.router,
80
82
  body,
81
- ctxToken: getCookie(req, 'edgestore-ctx')
83
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
82
84
  }));
83
85
  } else if (matchPath(pathname, '/complete-multipart-upload')) {
84
86
  const body = await req.json();
@@ -86,7 +88,7 @@ function createEdgeStoreRemixHandler(config) {
86
88
  provider,
87
89
  router: config.router,
88
90
  body,
89
- ctxToken: getCookie(req, 'edgestore-ctx')
91
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
90
92
  });
91
93
  return new Response(null, {
92
94
  status: 200
@@ -97,7 +99,7 @@ function createEdgeStoreRemixHandler(config) {
97
99
  provider,
98
100
  router: config.router,
99
101
  body,
100
- ctxToken: getCookie(req, 'edgestore-ctx')
102
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
101
103
  }));
102
104
  } else if (matchPath(pathname, '/delete-file')) {
103
105
  const body = await req.json();
@@ -105,7 +107,7 @@ function createEdgeStoreRemixHandler(config) {
105
107
  provider,
106
108
  router: config.router,
107
109
  body,
108
- ctxToken: getCookie(req, 'edgestore-ctx')
110
+ ctxToken: getCookie(req, resolvedCookieConfig.ctx.name)
109
111
  }));
110
112
  } else if (matchPath(pathname, '/proxy-file')) {
111
113
  const url = new URL(req.url).searchParams.get('url');
@@ -1,8 +1,81 @@
1
1
  import { type AnyBuilder, type EdgeStoreRouter, type Provider, type SharedDeleteFileRes, type SharedInitRes, type SharedRequestUploadPartsRes, type SharedRequestUploadRes } from '@edgestore/shared';
2
+ export type CookieOptions = {
3
+ /**
4
+ * Cookie path
5
+ * @default "/"
6
+ */
7
+ path?: string;
8
+ /**
9
+ * Cookie max age in seconds
10
+ * @default 2592000 (30 days)
11
+ */
12
+ maxAge?: number;
13
+ /**
14
+ * Cookie domain
15
+ */
16
+ domain?: string;
17
+ /**
18
+ * Cookie same site policy
19
+ */
20
+ sameSite?: 'strict' | 'lax' | 'none';
21
+ /**
22
+ * Cookie secure flag
23
+ */
24
+ secure?: boolean;
25
+ /**
26
+ * Cookie http only flag
27
+ */
28
+ httpOnly?: boolean;
29
+ };
30
+ export type CookieConfig = {
31
+ /**
32
+ * Context cookie configuration
33
+ */
34
+ ctx?: {
35
+ /**
36
+ * Name of the context cookie
37
+ * @default "edgestore-ctx"
38
+ */
39
+ name?: string;
40
+ /**
41
+ * Cookie options for context cookie
42
+ */
43
+ options?: CookieOptions;
44
+ };
45
+ /**
46
+ * Token cookie configuration
47
+ */
48
+ token?: {
49
+ /**
50
+ * Name of the token cookie
51
+ * @default "edgestore-token"
52
+ */
53
+ name?: string;
54
+ /**
55
+ * Cookie options for token cookie
56
+ */
57
+ options?: CookieOptions;
58
+ };
59
+ };
60
+ type ResolvedCookieConfig = {
61
+ ctx: {
62
+ name: string;
63
+ options: CookieOptions;
64
+ };
65
+ token: {
66
+ name: string;
67
+ options: CookieOptions;
68
+ };
69
+ };
70
+ /**
71
+ * Merges the provided cookie configuration with default values
72
+ */
73
+ export declare function getCookieConfig(cookieConfig?: CookieConfig): ResolvedCookieConfig;
2
74
  export declare function init<TCtx>(params: {
3
75
  provider: Provider;
4
76
  router: EdgeStoreRouter<TCtx>;
5
77
  ctx: TCtx;
78
+ cookieConfig?: CookieConfig;
6
79
  }): Promise<SharedInitRes>;
7
80
  export type RequestUploadBody = {
8
81
  bucketName: string;
@@ -90,4 +163,5 @@ export declare function parsePath(path: {
90
163
  };
91
164
  export declare function getEnv(key: string): string | undefined;
92
165
  export declare function isDev(): boolean;
166
+ export {};
93
167
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/adapters/shared.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type EdgeStoreRouter, type MaybePromise, type Provider } from '@edgestore/shared';
2
2
  import { type LogLevel } from '../../libs/logger';
3
+ import { type CookieConfig } from '../shared';
3
4
  export type CreateContextOptions = {
4
5
  req: Request;
5
6
  };
@@ -7,10 +8,12 @@ export type Config<TCtx> = {
7
8
  provider?: Provider;
8
9
  router: EdgeStoreRouter<TCtx>;
9
10
  logLevel?: LogLevel;
11
+ cookieConfig?: CookieConfig;
10
12
  } & (TCtx extends Record<string, never> ? object : {
11
13
  provider?: Provider;
12
14
  router: EdgeStoreRouter<TCtx>;
13
15
  createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;
16
+ cookieConfig?: CookieConfig;
14
17
  });
15
18
  export declare function createEdgeStoreStartHandler<TCtx>(config: Config<TCtx>): ({ request }: {
16
19
  request: Request;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/start/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAiB1D,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GAAG,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,MAAM,GACN;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC,CAAC;AAsBP,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,iBAMzC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,uBA4IhD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/start/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG1D,OAAO,EAUL,KAAK,YAAY,EAIlB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,IAAI,IAAI;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GAAG,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,MAAM,GACN;IACE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC,CAAC;AAsBP,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,iBAQzC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,uBA+IhD"}