@edgestore/server 0.5.7 → 0.6.0-canary.1

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 (202) hide show
  1. package/adapters/astro/package.json +1 -0
  2. package/adapters/express/package.json +1 -0
  3. package/adapters/fastify/package.json +1 -0
  4. package/adapters/hono/package.json +1 -0
  5. package/adapters/next/app/package.json +1 -0
  6. package/adapters/next/pages/package.json +1 -0
  7. package/adapters/remix/package.json +1 -0
  8. package/adapters/start/package.json +1 -0
  9. package/core/package.json +1 -0
  10. package/dist/adapters/astro/index.cjs +134 -0
  11. package/dist/adapters/astro/index.d.cts +20 -0
  12. package/dist/adapters/astro/index.d.cts.map +1 -0
  13. package/dist/adapters/astro/index.d.mts +20 -0
  14. package/dist/adapters/astro/index.d.mts.map +1 -0
  15. package/dist/adapters/astro/index.mjs +128 -175
  16. package/dist/adapters/astro/index.mjs.map +1 -0
  17. package/dist/adapters/express/index.cjs +104 -0
  18. package/dist/adapters/express/index.d.cts +24 -0
  19. package/dist/adapters/express/index.d.cts.map +1 -0
  20. package/dist/adapters/express/index.d.mts +24 -0
  21. package/dist/adapters/express/index.d.mts.map +1 -0
  22. package/dist/adapters/express/index.mjs +100 -112
  23. package/dist/adapters/express/index.mjs.map +1 -0
  24. package/dist/adapters/fastify/index.cjs +115 -0
  25. package/dist/adapters/fastify/index.d.cts +24 -0
  26. package/dist/adapters/fastify/index.d.cts.map +1 -0
  27. package/dist/adapters/fastify/index.d.mts +24 -0
  28. package/dist/adapters/fastify/index.d.mts.map +1 -0
  29. package/dist/adapters/fastify/index.mjs +109 -139
  30. package/dist/adapters/fastify/index.mjs.map +1 -0
  31. package/dist/adapters/hono/index.cjs +117 -0
  32. package/dist/adapters/hono/index.d.cts +91 -0
  33. package/dist/adapters/hono/index.d.cts.map +1 -0
  34. package/dist/adapters/hono/index.d.mts +91 -0
  35. package/dist/adapters/hono/index.d.mts.map +1 -0
  36. package/dist/adapters/hono/index.mjs +111 -129
  37. package/dist/adapters/hono/index.mjs.map +1 -0
  38. package/dist/adapters/next/app/index.cjs +140 -0
  39. package/dist/adapters/next/app/index.d.cts +23 -0
  40. package/dist/adapters/next/app/index.d.cts.map +1 -0
  41. package/dist/adapters/next/app/index.d.mts +23 -0
  42. package/dist/adapters/next/app/index.d.mts.map +1 -0
  43. package/dist/adapters/next/app/index.mjs +136 -168
  44. package/dist/adapters/next/app/index.mjs.map +1 -0
  45. package/dist/adapters/next/pages/index.cjs +108 -0
  46. package/dist/adapters/next/pages/index.d.cts +24 -0
  47. package/dist/adapters/next/pages/index.d.cts.map +1 -0
  48. package/dist/adapters/next/pages/index.d.mts +24 -0
  49. package/dist/adapters/next/pages/index.d.mts.map +1 -0
  50. package/dist/adapters/next/pages/index.mjs +104 -116
  51. package/dist/adapters/next/pages/index.mjs.map +1 -0
  52. package/dist/adapters/remix/index.cjs +124 -0
  53. package/dist/adapters/remix/index.d.cts +26 -0
  54. package/dist/adapters/remix/index.d.cts.map +1 -0
  55. package/dist/adapters/remix/index.d.mts +26 -0
  56. package/dist/adapters/remix/index.d.mts.map +1 -0
  57. package/dist/adapters/remix/index.mjs +118 -150
  58. package/dist/adapters/remix/index.mjs.map +1 -0
  59. package/dist/adapters/start/index.cjs +156 -0
  60. package/dist/adapters/start/index.d.cts +26 -0
  61. package/dist/adapters/start/index.d.cts.map +1 -0
  62. package/dist/adapters/start/index.d.mts +26 -0
  63. package/dist/adapters/start/index.d.mts.map +1 -0
  64. package/dist/adapters/start/index.mjs +150 -184
  65. package/dist/adapters/start/index.mjs.map +1 -0
  66. package/dist/core/index.cjs +148 -0
  67. package/dist/core/index.d.cts +500 -0
  68. package/dist/core/index.d.cts.map +1 -0
  69. package/dist/core/index.d.mts +500 -0
  70. package/dist/core/index.d.mts.map +1 -0
  71. package/dist/core/index.mjs +135 -169
  72. package/dist/core/index.mjs.map +1 -0
  73. package/dist/edgestore-Cr88uKUx.mjs +142 -0
  74. package/dist/edgestore-Cr88uKUx.mjs.map +1 -0
  75. package/dist/edgestore-Dqb-EoFm.cjs +146 -0
  76. package/dist/index.cjs +8 -0
  77. package/dist/index.d.cts +2 -0
  78. package/dist/index.d.mts +2 -0
  79. package/dist/index.mjs +3 -1
  80. package/dist/providers/aws/index.cjs +89 -0
  81. package/dist/providers/aws/index.d.cts +71 -0
  82. package/dist/providers/aws/index.d.cts.map +1 -0
  83. package/dist/providers/aws/index.d.mts +71 -0
  84. package/dist/providers/aws/index.d.mts.map +1 -0
  85. package/dist/providers/aws/index.mjs +85 -102
  86. package/dist/providers/aws/index.mjs.map +1 -0
  87. package/dist/providers/azure/index.cjs +56 -0
  88. package/dist/providers/azure/index.d.cts +44 -0
  89. package/dist/providers/azure/index.d.cts.map +1 -0
  90. package/dist/providers/azure/index.d.mts +44 -0
  91. package/dist/providers/azure/index.d.mts.map +1 -0
  92. package/dist/providers/azure/index.mjs +52 -58
  93. package/dist/providers/azure/index.mjs.map +1 -0
  94. package/dist/providers/edgestore/index.cjs +5 -0
  95. package/dist/providers/edgestore/index.d.cts +23 -0
  96. package/dist/providers/edgestore/index.d.cts.map +1 -0
  97. package/dist/providers/edgestore/index.d.mts +23 -0
  98. package/dist/providers/edgestore/index.d.mts.map +1 -0
  99. package/dist/providers/edgestore/index.mjs +4 -146
  100. package/dist/sdk-AhXUPMy1.cjs +238 -0
  101. package/dist/sdk-CKRQe75P.mjs +222 -0
  102. package/dist/sdk-CKRQe75P.mjs.map +1 -0
  103. package/dist/shared-B39MtSQo.d.cts +68 -0
  104. package/dist/shared-B39MtSQo.d.cts.map +1 -0
  105. package/dist/shared-Bd7-gfqa.mjs +457 -0
  106. package/dist/shared-Bd7-gfqa.mjs.map +1 -0
  107. package/dist/shared-DsWTtQ1-.d.mts +68 -0
  108. package/dist/shared-DsWTtQ1-.d.mts.map +1 -0
  109. package/dist/shared-pWGwhEsU.cjs +527 -0
  110. package/dist/utils--x-q_GK5.mjs +44 -0
  111. package/dist/utils--x-q_GK5.mjs.map +1 -0
  112. package/dist/utils-D6YuBNUV.cjs +54 -0
  113. package/package.json +121 -57
  114. package/providers/aws/package.json +1 -0
  115. package/providers/azure/package.json +1 -0
  116. package/providers/edgestore/package.json +1 -0
  117. package/adapters/astro/index.d.ts +0 -1
  118. package/adapters/astro/index.js +0 -1
  119. package/adapters/express/index.d.ts +0 -1
  120. package/adapters/express/index.js +0 -1
  121. package/adapters/fastify/index.d.ts +0 -1
  122. package/adapters/fastify/index.js +0 -1
  123. package/adapters/hono/index.d.ts +0 -1
  124. package/adapters/hono/index.js +0 -1
  125. package/adapters/next/app/index.d.ts +0 -1
  126. package/adapters/next/app/index.js +0 -1
  127. package/adapters/next/pages/index.d.ts +0 -1
  128. package/adapters/next/pages/index.js +0 -1
  129. package/adapters/remix/index.d.ts +0 -1
  130. package/adapters/remix/index.js +0 -1
  131. package/adapters/start/index.d.ts +0 -1
  132. package/adapters/start/index.js +0 -1
  133. package/core/index.d.ts +0 -1
  134. package/core/index.js +0 -1
  135. package/dist/adapters/astro/index.d.ts +0 -17
  136. package/dist/adapters/astro/index.d.ts.map +0 -1
  137. package/dist/adapters/astro/index.js +0 -186
  138. package/dist/adapters/express/index.d.ts +0 -21
  139. package/dist/adapters/express/index.d.ts.map +0 -1
  140. package/dist/adapters/express/index.js +0 -121
  141. package/dist/adapters/fastify/index.d.ts +0 -21
  142. package/dist/adapters/fastify/index.d.ts.map +0 -1
  143. package/dist/adapters/fastify/index.js +0 -150
  144. package/dist/adapters/hono/index.d.ts +0 -86
  145. package/dist/adapters/hono/index.d.ts.map +0 -1
  146. package/dist/adapters/hono/index.js +0 -140
  147. package/dist/adapters/imageTypes.d.ts +0 -2
  148. package/dist/adapters/imageTypes.d.ts.map +0 -1
  149. package/dist/adapters/next/app/index.d.ts +0 -20
  150. package/dist/adapters/next/app/index.d.ts.map +0 -1
  151. package/dist/adapters/next/app/index.js +0 -177
  152. package/dist/adapters/next/pages/index.d.ts +0 -21
  153. package/dist/adapters/next/pages/index.d.ts.map +0 -1
  154. package/dist/adapters/next/pages/index.js +0 -125
  155. package/dist/adapters/remix/index.d.ts +0 -21
  156. package/dist/adapters/remix/index.d.ts.map +0 -1
  157. package/dist/adapters/remix/index.js +0 -161
  158. package/dist/adapters/shared.d.ts +0 -167
  159. package/dist/adapters/shared.d.ts.map +0 -1
  160. package/dist/adapters/start/index.d.ts +0 -21
  161. package/dist/adapters/start/index.d.ts.map +0 -1
  162. package/dist/adapters/start/index.js +0 -195
  163. package/dist/core/client/index.d.ts +0 -217
  164. package/dist/core/client/index.d.ts.map +0 -1
  165. package/dist/core/index.d.ts +0 -3
  166. package/dist/core/index.d.ts.map +0 -1
  167. package/dist/core/index.js +0 -186
  168. package/dist/core/sdk/index.d.ts +0 -240
  169. package/dist/core/sdk/index.d.ts.map +0 -1
  170. package/dist/index-1e7b1b93.js +0 -235
  171. package/dist/index-a36b09a6.mjs +0 -231
  172. package/dist/index-b0fff508.js +0 -231
  173. package/dist/index.d.ts +0 -2
  174. package/dist/index.d.ts.map +0 -1
  175. package/dist/index.js +0 -12
  176. package/dist/libs/errors/EdgeStoreCredentialsError.d.ts +0 -5
  177. package/dist/libs/errors/EdgeStoreCredentialsError.d.ts.map +0 -1
  178. package/dist/libs/logger.d.ts +0 -13
  179. package/dist/libs/logger.d.ts.map +0 -1
  180. package/dist/libs/utils.d.ts +0 -5
  181. package/dist/libs/utils.d.ts.map +0 -1
  182. package/dist/providers/aws/index.d.ts +0 -68
  183. package/dist/providers/aws/index.d.ts.map +0 -1
  184. package/dist/providers/aws/index.js +0 -111
  185. package/dist/providers/azure/index.d.ts +0 -39
  186. package/dist/providers/azure/index.d.ts.map +0 -1
  187. package/dist/providers/azure/index.js +0 -67
  188. package/dist/providers/edgestore/index.d.ts +0 -19
  189. package/dist/providers/edgestore/index.d.ts.map +0 -1
  190. package/dist/providers/edgestore/index.js +0 -151
  191. package/dist/shared-4ec2dc90.js +0 -466
  192. package/dist/shared-64e9c30c.js +0 -435
  193. package/dist/shared-c6527780.mjs +0 -454
  194. package/dist/utils-26113e02.js +0 -65
  195. package/dist/utils-ab564a9e.js +0 -44
  196. package/dist/utils-cba23eef.mjs +0 -62
  197. package/providers/aws/index.d.ts +0 -1
  198. package/providers/aws/index.js +0 -1
  199. package/providers/azure/index.d.ts +0 -1
  200. package/providers/azure/index.js +0 -1
  201. package/providers/edgestore/index.d.ts +0 -1
  202. package/providers/edgestore/index.js +0 -1
@@ -1,191 +1,157 @@
1
- import { EdgeStoreError, EDGE_STORE_ERROR_CODES } from '@edgestore/shared';
2
- import { L as Logger, m as matchPath } from '../../utils-cba23eef.mjs';
3
- import { EdgeStoreProvider } from '../../providers/edgestore/index.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-c6527780.mjs';
5
- import '../../index-a36b09a6.mjs';
6
- import '@panva/hkdf';
7
- import 'cookie';
8
- import 'jose';
9
- import 'uuid';
1
+ import { a as getCookieConfig, d as requestUploadParts, i as deleteFile, n as completeMultipartUpload, r as confirmUpload, s as init, u as requestUpload } from "../../shared-Bd7-gfqa.mjs";
2
+ import "../../sdk-CKRQe75P.mjs";
3
+ import { n as logger_default, t as matchPath } from "../../utils--x-q_GK5.mjs";
4
+ import { t as EdgeStoreProvider } from "../../edgestore-Cr88uKUx.mjs";
5
+ import { EDGE_STORE_ERROR_CODES, EdgeStoreError } from "@edgestore/shared";
10
6
 
11
- // Helper to extract a cookie from the request's cookie header
7
+ //#region src/adapters/start/index.ts
12
8
  function getCookie(req, cookieName) {
13
- const cookieHeader = req.headers.get('cookie');
14
- if (!cookieHeader) return undefined;
15
- return cookieHeader.split(';').map((cookieStr)=>cookieStr.trim()).reduce((acc, cookieStr)=>{
16
- const [name, ...rest] = cookieStr.split('=');
17
- if (name && rest.length > 0) {
18
- acc[name] = rest.join('=');
19
- }
20
- return acc;
21
- }, {})[cookieName];
9
+ const cookieHeader = req.headers.get("cookie");
10
+ if (!cookieHeader) return void 0;
11
+ return cookieHeader.split(";").map((cookieStr) => cookieStr.trim()).reduce((acc, cookieStr) => {
12
+ const [name, ...rest] = cookieStr.split("=");
13
+ if (name && rest.length > 0) acc[name] = rest.join("=");
14
+ return acc;
15
+ }, {})[cookieName];
22
16
  }
23
17
  function createEdgeStoreStartHandler(config) {
24
- const { provider = EdgeStoreProvider(), cookieConfig } = config;
25
- const log = new Logger(config.logLevel);
26
- globalThis._EDGE_STORE_LOGGER = log;
27
- log.debug('Creating EdgeStore TanStack Start handler');
28
- const resolvedCookieConfig = getCookieConfig(cookieConfig);
29
- return async ({ request })=>{
30
- try {
31
- const { pathname } = new URL(request.url);
32
- if (matchPath(pathname, '/health')) {
33
- return new Response('OK', {
34
- status: 200
35
- });
36
- } else if (matchPath(pathname, '/init')) {
37
- let ctx = {};
38
- try {
39
- ctx = 'createContext' in config ? await config.createContext({
40
- req: request
41
- }) : {};
42
- } catch (err) {
43
- throw new EdgeStoreError({
44
- message: 'Error creating context',
45
- code: 'CREATE_CONTEXT_ERROR',
46
- cause: err instanceof Error ? err : undefined
47
- });
48
- }
49
- const { newCookies, token, baseUrl, providerName } = await init({
50
- ctx,
51
- provider,
52
- router: config.router,
53
- cookieConfig
54
- });
55
- const headers = new Headers();
56
- newCookies.forEach((cookie)=>{
57
- headers.append('Set-Cookie', cookie);
58
- });
59
- headers.set('Content-Type', 'application/json');
60
- return new Response(JSON.stringify({
61
- token,
62
- baseUrl,
63
- providerName
64
- }), {
65
- status: 200,
66
- headers
67
- });
68
- } else if (matchPath(pathname, '/request-upload')) {
69
- const body = await request.json();
70
- const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
71
- const result = await requestUpload({
72
- provider,
73
- router: config.router,
74
- body: body,
75
- ctxToken
76
- });
77
- return new Response(JSON.stringify(result), {
78
- status: 200,
79
- headers: {
80
- 'Content-Type': 'application/json'
81
- }
82
- });
83
- } else if (matchPath(pathname, '/request-upload-parts')) {
84
- const body = await request.json();
85
- const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
86
- const result = await requestUploadParts({
87
- provider,
88
- router: config.router,
89
- body: body,
90
- ctxToken
91
- });
92
- return new Response(JSON.stringify(result), {
93
- status: 200,
94
- headers: {
95
- 'Content-Type': 'application/json'
96
- }
97
- });
98
- } else if (matchPath(pathname, '/complete-multipart-upload')) {
99
- const body = await request.json();
100
- const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
101
- await completeMultipartUpload({
102
- provider,
103
- router: config.router,
104
- body: body,
105
- ctxToken
106
- });
107
- return new Response(null, {
108
- status: 200
109
- });
110
- } else if (matchPath(pathname, '/confirm-upload')) {
111
- const body = await request.json();
112
- const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
113
- const result = await confirmUpload({
114
- provider,
115
- router: config.router,
116
- body: body,
117
- ctxToken
118
- });
119
- return new Response(JSON.stringify(result), {
120
- status: 200,
121
- headers: {
122
- 'Content-Type': 'application/json'
123
- }
124
- });
125
- } else if (matchPath(pathname, '/delete-file')) {
126
- const body = await request.json();
127
- const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
128
- const result = await deleteFile({
129
- provider,
130
- router: config.router,
131
- body: body,
132
- ctxToken
133
- });
134
- return new Response(JSON.stringify(result), {
135
- status: 200,
136
- headers: {
137
- 'Content-Type': 'application/json'
138
- }
139
- });
140
- } else if (matchPath(pathname, '/proxy-file')) {
141
- const urlParam = new URL(request.url).searchParams.get('url');
142
- if (typeof urlParam === 'string') {
143
- const proxyRes = await fetch(urlParam, {
144
- headers: {
145
- cookie: request.headers.get('cookie') ?? ''
146
- }
147
- });
148
- const data = await proxyRes.arrayBuffer();
149
- const headers = new Headers();
150
- headers.set('Content-Type', proxyRes.headers.get('Content-Type') ?? 'application/octet-stream');
151
- return new Response(data, {
152
- status: proxyRes.status,
153
- headers
154
- });
155
- } else {
156
- return new Response(null, {
157
- status: 400
158
- });
159
- }
160
- } else {
161
- return new Response(null, {
162
- status: 404
163
- });
164
- }
165
- } catch (err) {
166
- if (err instanceof EdgeStoreError) {
167
- log[err.level](err.formattedMessage());
168
- if (err.cause) log[err.level](err.cause);
169
- const status = EDGE_STORE_ERROR_CODES[err.code] || 500;
170
- return new Response(JSON.stringify(err.formattedJson()), {
171
- status,
172
- headers: {
173
- 'Content-Type': 'application/json'
174
- }
175
- });
176
- }
177
- log.error(err);
178
- return new Response(JSON.stringify(new EdgeStoreError({
179
- message: 'Internal server error',
180
- code: 'SERVER_ERROR'
181
- }).formattedJson()), {
182
- status: 500,
183
- headers: {
184
- 'Content-Type': 'application/json'
185
- }
186
- });
187
- }
188
- };
18
+ const { provider = EdgeStoreProvider(), cookieConfig } = config;
19
+ const log = new logger_default(config.logLevel);
20
+ globalThis._EDGE_STORE_LOGGER = log;
21
+ log.debug("Creating EdgeStore TanStack Start handler");
22
+ const resolvedCookieConfig = getCookieConfig(cookieConfig);
23
+ return async ({ request }) => {
24
+ try {
25
+ const { pathname } = new URL(request.url);
26
+ if (matchPath(pathname, "/health")) return new Response("OK", { status: 200 });
27
+ else if (matchPath(pathname, "/init")) {
28
+ let ctx = {};
29
+ try {
30
+ ctx = "createContext" in config ? await config.createContext({ req: request }) : {};
31
+ } catch (err) {
32
+ throw new EdgeStoreError({
33
+ message: "Error creating context",
34
+ code: "CREATE_CONTEXT_ERROR",
35
+ cause: err instanceof Error ? err : void 0
36
+ });
37
+ }
38
+ const { newCookies, token, baseUrl, providerName } = await init({
39
+ ctx,
40
+ provider,
41
+ router: config.router,
42
+ cookieConfig
43
+ });
44
+ const headers = new Headers();
45
+ newCookies.forEach((cookie) => {
46
+ headers.append("Set-Cookie", cookie);
47
+ });
48
+ headers.set("Content-Type", "application/json");
49
+ return new Response(JSON.stringify({
50
+ token,
51
+ baseUrl,
52
+ providerName
53
+ }), {
54
+ status: 200,
55
+ headers
56
+ });
57
+ } else if (matchPath(pathname, "/request-upload")) {
58
+ const body = await request.json();
59
+ const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
60
+ const result = await requestUpload({
61
+ provider,
62
+ router: config.router,
63
+ body,
64
+ ctxToken
65
+ });
66
+ return new Response(JSON.stringify(result), {
67
+ status: 200,
68
+ headers: { "Content-Type": "application/json" }
69
+ });
70
+ } else if (matchPath(pathname, "/request-upload-parts")) {
71
+ const body = await request.json();
72
+ const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
73
+ const result = await requestUploadParts({
74
+ provider,
75
+ router: config.router,
76
+ body,
77
+ ctxToken
78
+ });
79
+ return new Response(JSON.stringify(result), {
80
+ status: 200,
81
+ headers: { "Content-Type": "application/json" }
82
+ });
83
+ } else if (matchPath(pathname, "/complete-multipart-upload")) {
84
+ const body = await request.json();
85
+ const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
86
+ await completeMultipartUpload({
87
+ provider,
88
+ router: config.router,
89
+ body,
90
+ ctxToken
91
+ });
92
+ return new Response(null, { status: 200 });
93
+ } else if (matchPath(pathname, "/confirm-upload")) {
94
+ const body = await request.json();
95
+ const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
96
+ const result = await confirmUpload({
97
+ provider,
98
+ router: config.router,
99
+ body,
100
+ ctxToken
101
+ });
102
+ return new Response(JSON.stringify(result), {
103
+ status: 200,
104
+ headers: { "Content-Type": "application/json" }
105
+ });
106
+ } else if (matchPath(pathname, "/delete-file")) {
107
+ const body = await request.json();
108
+ const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);
109
+ const result = await deleteFile({
110
+ provider,
111
+ router: config.router,
112
+ body,
113
+ ctxToken
114
+ });
115
+ return new Response(JSON.stringify(result), {
116
+ status: 200,
117
+ headers: { "Content-Type": "application/json" }
118
+ });
119
+ } else if (matchPath(pathname, "/proxy-file")) {
120
+ const urlParam = new URL(request.url).searchParams.get("url");
121
+ if (typeof urlParam === "string") {
122
+ var _request$headers$get, _proxyRes$headers$get;
123
+ const proxyRes = await fetch(urlParam, { headers: { cookie: (_request$headers$get = request.headers.get("cookie")) !== null && _request$headers$get !== void 0 ? _request$headers$get : "" } });
124
+ const data = await proxyRes.arrayBuffer();
125
+ const headers = new Headers();
126
+ headers.set("Content-Type", (_proxyRes$headers$get = proxyRes.headers.get("Content-Type")) !== null && _proxyRes$headers$get !== void 0 ? _proxyRes$headers$get : "application/octet-stream");
127
+ return new Response(data, {
128
+ status: proxyRes.status,
129
+ headers
130
+ });
131
+ } else return new Response(null, { status: 400 });
132
+ } else return new Response(null, { status: 404 });
133
+ } catch (err) {
134
+ if (err instanceof EdgeStoreError) {
135
+ log[err.level](err.formattedMessage());
136
+ if (err.cause) log[err.level](err.cause);
137
+ const status = EDGE_STORE_ERROR_CODES[err.code] || 500;
138
+ return new Response(JSON.stringify(err.formattedJson()), {
139
+ status,
140
+ headers: { "Content-Type": "application/json" }
141
+ });
142
+ }
143
+ log.error(err);
144
+ return new Response(JSON.stringify(new EdgeStoreError({
145
+ message: "Internal server error",
146
+ code: "SERVER_ERROR"
147
+ }).formattedJson()), {
148
+ status: 500,
149
+ headers: { "Content-Type": "application/json" }
150
+ });
151
+ }
152
+ };
189
153
  }
190
154
 
155
+ //#endregion
191
156
  export { createEdgeStoreStartHandler };
157
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["Logger"],"sources":["../../../src/adapters/start/index.ts"],"sourcesContent":["import {\n EDGE_STORE_ERROR_CODES,\n EdgeStoreError,\n type EdgeStoreErrorCodeKey,\n type EdgeStoreRouter,\n type MaybePromise,\n type Provider,\n} from '@edgestore/shared';\nimport Logger, { type LogLevel } from '../../libs/logger';\nimport { matchPath } from '../../libs/utils';\nimport { EdgeStoreProvider } from '../../providers/edgestore';\nimport {\n completeMultipartUpload,\n confirmUpload,\n deleteFile,\n getCookieConfig,\n init,\n requestUpload,\n requestUploadParts,\n type CompleteMultipartUploadBody,\n type ConfirmUploadBody,\n type CookieConfig,\n type DeleteFileBody,\n type RequestUploadBody,\n type RequestUploadPartsParams,\n} from '../shared';\n\nexport type CreateContextOptions = {\n req: Request;\n};\n\nexport type Config<TCtx> = {\n provider?: Provider;\n router: EdgeStoreRouter<TCtx>;\n logLevel?: LogLevel;\n cookieConfig?: CookieConfig;\n} & (TCtx extends Record<string, never>\n ? object\n : {\n provider?: Provider;\n router: EdgeStoreRouter<TCtx>;\n createContext: (opts: CreateContextOptions) => MaybePromise<TCtx>;\n cookieConfig?: CookieConfig;\n });\n\ndeclare const globalThis: {\n _EDGE_STORE_LOGGER: Logger;\n};\n\n// Helper to extract a cookie from the request's cookie header\nfunction getCookie(req: Request, cookieName: string): string | undefined {\n const cookieHeader = req.headers.get('cookie');\n if (!cookieHeader) return undefined;\n return cookieHeader\n .split(';')\n .map((cookieStr) => cookieStr.trim())\n .reduce((acc: Record<string, string>, cookieStr) => {\n const [name, ...rest] = cookieStr.split('=');\n if (name && rest.length > 0) {\n acc[name] = rest.join('=');\n }\n return acc;\n }, {})[cookieName];\n}\n\nexport function createEdgeStoreStartHandler<TCtx>(config: Config<TCtx>) {\n const { provider = EdgeStoreProvider(), cookieConfig } = config;\n const log = new Logger(config.logLevel);\n globalThis._EDGE_STORE_LOGGER = log;\n log.debug('Creating EdgeStore TanStack Start handler');\n\n const resolvedCookieConfig = getCookieConfig(cookieConfig);\n\n return async ({ request }: { request: Request }) => {\n try {\n const { pathname } = new URL(request.url);\n if (matchPath(pathname, '/health')) {\n return new Response('OK', { status: 200 });\n } else if (matchPath(pathname, '/init')) {\n let ctx = {} as TCtx;\n try {\n ctx =\n 'createContext' in config\n ? await config.createContext({ req: request })\n : ({} as TCtx);\n } catch (err) {\n throw new EdgeStoreError({\n message: 'Error creating context',\n code: 'CREATE_CONTEXT_ERROR',\n cause: err instanceof Error ? err : undefined,\n });\n }\n const { newCookies, token, baseUrl, providerName } = await init({\n ctx,\n provider,\n router: config.router,\n cookieConfig,\n });\n const headers = new Headers();\n newCookies.forEach((cookie) => {\n headers.append('Set-Cookie', cookie);\n });\n headers.set('Content-Type', 'application/json');\n return new Response(JSON.stringify({ token, baseUrl, providerName }), {\n status: 200,\n headers,\n });\n } else if (matchPath(pathname, '/request-upload')) {\n const body = await request.json();\n const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);\n const result = await requestUpload({\n provider,\n router: config.router,\n body: body as RequestUploadBody,\n ctxToken,\n });\n return new Response(JSON.stringify(result), {\n status: 200,\n headers: { 'Content-Type': 'application/json' },\n });\n } else if (matchPath(pathname, '/request-upload-parts')) {\n const body = await request.json();\n const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);\n const result = await requestUploadParts({\n provider,\n router: config.router,\n body: body as RequestUploadPartsParams,\n ctxToken,\n });\n return new Response(JSON.stringify(result), {\n status: 200,\n headers: { 'Content-Type': 'application/json' },\n });\n } else if (matchPath(pathname, '/complete-multipart-upload')) {\n const body = await request.json();\n const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);\n await completeMultipartUpload({\n provider,\n router: config.router,\n body: body as CompleteMultipartUploadBody,\n ctxToken,\n });\n return new Response(null, { status: 200 });\n } else if (matchPath(pathname, '/confirm-upload')) {\n const body = await request.json();\n const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);\n const result = await confirmUpload({\n provider,\n router: config.router,\n body: body as ConfirmUploadBody,\n ctxToken,\n });\n return new Response(JSON.stringify(result), {\n status: 200,\n headers: { 'Content-Type': 'application/json' },\n });\n } else if (matchPath(pathname, '/delete-file')) {\n const body = await request.json();\n const ctxToken = getCookie(request, resolvedCookieConfig.ctx.name);\n const result = await deleteFile({\n provider,\n router: config.router,\n body: body as DeleteFileBody,\n ctxToken,\n });\n return new Response(JSON.stringify(result), {\n status: 200,\n headers: { 'Content-Type': 'application/json' },\n });\n } else if (matchPath(pathname, '/proxy-file')) {\n const urlParam = new URL(request.url).searchParams.get('url');\n if (typeof urlParam === 'string') {\n const proxyRes = await fetch(urlParam, {\n headers: {\n cookie: request.headers.get('cookie') ?? '',\n },\n });\n const data = await proxyRes.arrayBuffer();\n const headers = new Headers();\n headers.set(\n 'Content-Type',\n proxyRes.headers.get('Content-Type') ?? 'application/octet-stream',\n );\n return new Response(data, { status: proxyRes.status, headers });\n } else {\n return new Response(null, { status: 400 });\n }\n } else {\n return new Response(null, { status: 404 });\n }\n } catch (err) {\n if (err instanceof EdgeStoreError) {\n log[err.level](err.formattedMessage());\n if (err.cause) log[err.level](err.cause);\n const status =\n EDGE_STORE_ERROR_CODES[err.code as EdgeStoreErrorCodeKey] || 500;\n return new Response(JSON.stringify(err.formattedJson()), {\n status,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n log.error(err);\n return new Response(\n JSON.stringify(\n new EdgeStoreError({\n message: 'Internal server error',\n code: 'SERVER_ERROR',\n }).formattedJson(),\n ),\n {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n },\n );\n }\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ const require_shared = require('../shared-pWGwhEsU.cjs');
2
+ const require_sdk = require('../sdk-AhXUPMy1.cjs');
3
+
4
+ //#region src/core/client/index.ts
5
+ function isTextContent(content) {
6
+ return typeof content === "string";
7
+ }
8
+ function isBlobContent(content) {
9
+ return typeof content !== "string" && "blob" in content;
10
+ }
11
+ function initEdgeStoreClient(config) {
12
+ const sdk = require_sdk.initEdgeStoreSdk({
13
+ accessKey: config.accessKey,
14
+ secretKey: config.secretKey
15
+ });
16
+ return new Proxy({}, { get(_target, key) {
17
+ const bucketName = key;
18
+ const bucket = config.router.buckets[bucketName];
19
+ if (!bucket) throw new Error(`Bucket ${bucketName} not found`);
20
+ return {
21
+ async upload(params) {
22
+ var _params$options, _params$options2, _params$options3, _params$options4, _params$options$tempo, _params$options5;
23
+ const content = params.content;
24
+ const ctx = "ctx" in params ? params.ctx : {};
25
+ const input = "input" in params ? params.input : {};
26
+ const { blob, extension } = await (async () => {
27
+ if (isTextContent(content)) return {
28
+ blob: new Blob([content], { type: "text/plain" }),
29
+ extension: "txt"
30
+ };
31
+ else if (isBlobContent(content)) return {
32
+ blob: content.blob,
33
+ extension: content.extension
34
+ };
35
+ else return {
36
+ blob: await getBlobFromUrl(content.url),
37
+ extension: content.extension
38
+ };
39
+ })();
40
+ const path = require_shared.buildPath({
41
+ bucket,
42
+ pathAttrs: {
43
+ ctx,
44
+ input
45
+ },
46
+ fileInfo: {
47
+ type: blob.type,
48
+ size: blob.size,
49
+ extension,
50
+ temporary: false,
51
+ fileName: (_params$options = params.options) === null || _params$options === void 0 ? void 0 : _params$options.manualFileName,
52
+ replaceTargetUrl: (_params$options2 = params.options) === null || _params$options2 === void 0 ? void 0 : _params$options2.replaceTargetUrl
53
+ }
54
+ });
55
+ const metadata = await bucket._def.metadata({
56
+ ctx,
57
+ input
58
+ });
59
+ const requestUploadRes = await sdk.requestUpload({
60
+ bucketName,
61
+ bucketType: bucket._def.type,
62
+ fileInfo: {
63
+ fileName: (_params$options3 = params.options) === null || _params$options3 === void 0 ? void 0 : _params$options3.manualFileName,
64
+ replaceTargetUrl: (_params$options4 = params.options) === null || _params$options4 === void 0 ? void 0 : _params$options4.replaceTargetUrl,
65
+ type: blob.type,
66
+ size: blob.size,
67
+ extension,
68
+ isPublic: bucket._def.accessControl === void 0,
69
+ temporary: (_params$options$tempo = (_params$options5 = params.options) === null || _params$options5 === void 0 ? void 0 : _params$options5.temporary) !== null && _params$options$tempo !== void 0 ? _params$options$tempo : false,
70
+ path,
71
+ metadata
72
+ }
73
+ });
74
+ const { signedUrl, multipart } = requestUploadRes;
75
+ if (multipart) throw new Error("Multipart upload not implemented");
76
+ else if (signedUrl) {
77
+ const uploadResponse = await fetch(signedUrl, {
78
+ method: "PUT",
79
+ body: blob
80
+ });
81
+ if (!uploadResponse.ok) throw new Error(`Upload failed with status ${uploadResponse.status}: ${uploadResponse.statusText}`);
82
+ } else throw new Error("Missing signedUrl");
83
+ const { parsedPath, pathOrder } = require_shared.parsePath(path);
84
+ return require_shared._objectSpread2(require_shared._objectSpread2({ url: requestUploadRes.accessUrl }, { thumbnailUrl: requestUploadRes.thumbnailUrl }), {}, {
85
+ size: blob.size,
86
+ metadata,
87
+ path: parsedPath,
88
+ pathOrder
89
+ });
90
+ },
91
+ async getFile(params) {
92
+ const res = await sdk.getFile(params);
93
+ return {
94
+ url: getUrl(res.url, config.baseUrl),
95
+ size: res.size,
96
+ uploadedAt: new Date(res.uploadedAt),
97
+ metadata: res.metadata,
98
+ path: res.path
99
+ };
100
+ },
101
+ async confirmUpload(params) {
102
+ return await sdk.confirmUpload(params);
103
+ },
104
+ async deleteFile(params) {
105
+ return await sdk.deleteFile(params);
106
+ },
107
+ async listFiles(params) {
108
+ const res = await sdk.listFiles(require_shared._objectSpread2({ bucketName }, params));
109
+ return {
110
+ data: res.data.map((file) => {
111
+ return {
112
+ url: getUrl(file.url, config.baseUrl),
113
+ thumbnailUrl: file.thumbnailUrl,
114
+ size: file.size,
115
+ uploadedAt: new Date(file.uploadedAt),
116
+ metadata: file.metadata,
117
+ path: file.path
118
+ };
119
+ }),
120
+ pagination: res.pagination
121
+ };
122
+ }
123
+ };
124
+ } });
125
+ }
126
+ /**
127
+ * Protected files need third-party cookies to work.
128
+ * Since third party cookies don't work on localhost,
129
+ * we need to proxy the file through the server.
130
+ */
131
+ function getUrl(url, baseUrl) {
132
+ if (require_shared.isDev() && !url.includes("/_public/")) {
133
+ if (!baseUrl) throw new Error("Missing baseUrl. You need to pass the baseUrl to `initEdgeStoreClient` to get protected files in development.");
134
+ const proxyUrl = new URL(baseUrl);
135
+ proxyUrl.pathname = `${proxyUrl.pathname}/proxy-file`;
136
+ proxyUrl.search = new URLSearchParams({ url }).toString();
137
+ return proxyUrl.toString();
138
+ }
139
+ return url;
140
+ }
141
+ async function getBlobFromUrl(url) {
142
+ return await (await fetch(url)).blob();
143
+ }
144
+
145
+ //#endregion
146
+ exports.edgeStoreRawSdk = require_sdk.edgeStoreRawSdk;
147
+ exports.initEdgeStoreClient = initEdgeStoreClient;
148
+ exports.initEdgeStoreSdk = require_sdk.initEdgeStoreSdk;