@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
@@ -0,0 +1 @@
1
+ {"main":"../../dist/adapters/astro/index.cjs","module":"../../dist/adapters/astro/index.mjs","types":"../../dist/adapters/astro/index.d.cts"}
@@ -0,0 +1 @@
1
+ {"main":"../../dist/adapters/express/index.cjs","module":"../../dist/adapters/express/index.mjs","types":"../../dist/adapters/express/index.d.cts"}
@@ -0,0 +1 @@
1
+ {"main":"../../dist/adapters/fastify/index.cjs","module":"../../dist/adapters/fastify/index.mjs","types":"../../dist/adapters/fastify/index.d.cts"}
@@ -0,0 +1 @@
1
+ {"main":"../../dist/adapters/hono/index.cjs","module":"../../dist/adapters/hono/index.mjs","types":"../../dist/adapters/hono/index.d.cts"}
@@ -0,0 +1 @@
1
+ {"main":"../../../dist/adapters/next/app/index.cjs","module":"../../../dist/adapters/next/app/index.mjs","types":"../../../dist/adapters/next/app/index.d.cts"}
@@ -0,0 +1 @@
1
+ {"main":"../../../dist/adapters/next/pages/index.cjs","module":"../../../dist/adapters/next/pages/index.mjs","types":"../../../dist/adapters/next/pages/index.d.cts"}
@@ -0,0 +1 @@
1
+ {"main":"../../dist/adapters/remix/index.cjs","module":"../../dist/adapters/remix/index.mjs","types":"../../dist/adapters/remix/index.d.cts"}
@@ -0,0 +1 @@
1
+ {"main":"../../dist/adapters/start/index.cjs","module":"../../dist/adapters/start/index.mjs","types":"../../dist/adapters/start/index.d.cts"}
@@ -0,0 +1 @@
1
+ {"main":"../dist/core/index.cjs","module":"../dist/core/index.mjs","types":"../dist/core/index.d.cts"}
@@ -0,0 +1,134 @@
1
+ const require_shared = require('../../shared-pWGwhEsU.cjs');
2
+ require('../../sdk-AhXUPMy1.cjs');
3
+ const require_utils = require('../../utils-D6YuBNUV.cjs');
4
+ const require_edgestore = require('../../edgestore-Dqb-EoFm.cjs');
5
+ let _edgestore_shared = require("@edgestore/shared");
6
+
7
+ //#region src/adapters/astro/index.ts
8
+ function getCookie(request, name) {
9
+ const cookieHeader = request.headers.get("cookie");
10
+ if (!cookieHeader) return void 0;
11
+ return cookieHeader.split(";").reduce((acc, cookie) => {
12
+ const [key, value] = cookie.trim().split("=");
13
+ if (key && value) acc[key] = value;
14
+ return acc;
15
+ }, {})[name];
16
+ }
17
+ function createEdgeStoreAstroHandler(config) {
18
+ const { provider = require_edgestore.EdgeStoreProvider(), cookieConfig } = config;
19
+ const log = new require_utils.logger_default(config.logLevel);
20
+ globalThis._EDGE_STORE_LOGGER = log;
21
+ log.debug("Creating EdgeStore Astro handler");
22
+ const resolvedCookieConfig = require_shared.getCookieConfig(cookieConfig);
23
+ return async (context) => {
24
+ try {
25
+ const { request } = context;
26
+ const url = new URL(request.url);
27
+ if (require_utils.matchPath(url.pathname, "health")) return new Response("OK");
28
+ else if (require_utils.matchPath(url.pathname, "init")) {
29
+ let ctx = {};
30
+ try {
31
+ ctx = "createContext" in config ? await config.createContext(context) : {};
32
+ } catch (err) {
33
+ throw new _edgestore_shared.EdgeStoreError({
34
+ message: "Error creating context",
35
+ code: "CREATE_CONTEXT_ERROR",
36
+ cause: err instanceof Error ? err : void 0
37
+ });
38
+ }
39
+ const { newCookies, token, baseUrl, providerName } = await require_shared.init({
40
+ ctx,
41
+ provider,
42
+ router: config.router,
43
+ cookieConfig
44
+ });
45
+ const headers = new Headers();
46
+ headers.set("Content-Type", "application/json");
47
+ if (Array.isArray(newCookies)) for (const cookie of newCookies) headers.append("Set-Cookie", cookie);
48
+ else if (newCookies) headers.append("Set-Cookie", newCookies);
49
+ return new Response(JSON.stringify({
50
+ token,
51
+ baseUrl,
52
+ providerName
53
+ }), { headers });
54
+ } else if (require_utils.matchPath(url.pathname, "request-upload")) {
55
+ const body = await request.json();
56
+ const result = await require_shared.requestUpload({
57
+ provider,
58
+ router: config.router,
59
+ body,
60
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
61
+ });
62
+ return new Response(JSON.stringify(result), { headers: { "Content-Type": "application/json" } });
63
+ } else if (require_utils.matchPath(url.pathname, "request-upload-parts")) {
64
+ const body = await request.json();
65
+ const result = await require_shared.requestUploadParts({
66
+ provider,
67
+ router: config.router,
68
+ body,
69
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
70
+ });
71
+ return new Response(JSON.stringify(result), { headers: { "Content-Type": "application/json" } });
72
+ } else if (require_utils.matchPath(url.pathname, "complete-multipart-upload")) {
73
+ const body = await request.json();
74
+ await require_shared.completeMultipartUpload({
75
+ provider,
76
+ router: config.router,
77
+ body,
78
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
79
+ });
80
+ return new Response(null, { status: 200 });
81
+ } else if (require_utils.matchPath(url.pathname, "confirm-upload")) {
82
+ const body = await request.json();
83
+ const result = await require_shared.confirmUpload({
84
+ provider,
85
+ router: config.router,
86
+ body,
87
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
88
+ });
89
+ return new Response(JSON.stringify(result), { headers: { "Content-Type": "application/json" } });
90
+ } else if (require_utils.matchPath(url.pathname, "delete-file")) {
91
+ const body = await request.json();
92
+ const result = await require_shared.deleteFile({
93
+ provider,
94
+ router: config.router,
95
+ body,
96
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
97
+ });
98
+ return new Response(JSON.stringify(result), { headers: { "Content-Type": "application/json" } });
99
+ } else if (require_utils.matchPath(url.pathname, "proxy-file")) {
100
+ const url$1 = new URL(request.url).searchParams.get("url");
101
+ if (typeof url$1 === "string") {
102
+ var _request$headers$get, _proxyRes$headers$get;
103
+ const cookieHeader = (_request$headers$get = request.headers.get("cookie")) !== null && _request$headers$get !== void 0 ? _request$headers$get : "";
104
+ const proxyRes = await fetch(url$1, { headers: { cookie: cookieHeader } });
105
+ const data = await proxyRes.arrayBuffer();
106
+ const headers = new Headers();
107
+ headers.set("Content-Type", (_proxyRes$headers$get = proxyRes.headers.get("Content-Type")) !== null && _proxyRes$headers$get !== void 0 ? _proxyRes$headers$get : "application/octet-stream");
108
+ return new Response(data, { headers });
109
+ } else return new Response(null, { status: 400 });
110
+ } else return new Response(null, { status: 404 });
111
+ } catch (err) {
112
+ if (err instanceof _edgestore_shared.EdgeStoreError) {
113
+ log[err.level](err.formattedMessage());
114
+ if (err.cause) log[err.level](err.cause);
115
+ return new Response(JSON.stringify(err.formattedJson()), {
116
+ status: _edgestore_shared.EDGE_STORE_ERROR_CODES[err.code],
117
+ headers: { "Content-Type": "application/json" }
118
+ });
119
+ } else {
120
+ log.error(err);
121
+ return new Response(JSON.stringify(new _edgestore_shared.EdgeStoreError({
122
+ message: "Internal Server Error",
123
+ code: "SERVER_ERROR"
124
+ }).formattedJson()), {
125
+ status: 500,
126
+ headers: { "Content-Type": "application/json" }
127
+ });
128
+ }
129
+ }
130
+ };
131
+ }
132
+
133
+ //#endregion
134
+ exports.createEdgeStoreAstroHandler = createEdgeStoreAstroHandler;
@@ -0,0 +1,20 @@
1
+ import { n as LogLevel, t as CookieConfig } from "../../shared-B39MtSQo.cjs";
2
+ import { EdgeStoreRouter, MaybePromise, Provider } from "@edgestore/shared";
3
+ import { APIContext } from "astro";
4
+
5
+ //#region src/adapters/astro/index.d.ts
6
+ type Config<TCtx> = {
7
+ provider?: Provider;
8
+ router: EdgeStoreRouter<TCtx>;
9
+ logLevel?: LogLevel;
10
+ cookieConfig?: CookieConfig;
11
+ } & (TCtx extends Record<string, never> ? object : {
12
+ provider?: Provider;
13
+ router: EdgeStoreRouter<TCtx>;
14
+ createContext: (opts: APIContext) => MaybePromise<TCtx>;
15
+ cookieConfig?: CookieConfig;
16
+ });
17
+ declare function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>): (context: APIContext) => Promise<Response>;
18
+ //#endregion
19
+ export { Config, createEdgeStoreAstroHandler };
20
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/adapters/astro/index.ts"],"sourcesContent":[],"mappings":";;;;;KA4BY;EAAA,QAAA,CAAM,EACL,QADK;EACL,MAAA,EACH,eADG,CACa,IADb,CAAA;EACa,QAAA,CAAA,EACb,QADa;EAAhB,YAAA,CAAA,EAEO,YAFP;CACG,GAAA,CAER,IAFQ,SAEK,MAFL,CAAA,MAAA,EAAA,KAAA,CAAA,GAAA,MAAA,GAAA;EACI,QAAA,CAAA,EAIA,QAJA;EACZ,MAAA,EAIS,eAJT,CAIyB,IAJzB,CAAA;EAAa,aAAA,EAAA,CAAA,IAAA,EAKU,UALV,EAAA,GAKyB,YALzB,CAKsC,IALtC,CAAA;EAGD,YAAA,CAAA,EAGI,YAHJ;CACa,CAAA;AAAhB,iBAyBE,2BAzBF,CAAA,IAAA,CAAA,CAAA,MAAA,EAyB4C,MAzB5C,CAyBmD,IAzBnD,CAAA,CAAA,EAAA,CAAA,OAAA,EAiCW,UAjCX,EAAA,GAiCqB,OAjCrB,CAiCqB,QAjCrB,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { n as LogLevel, t as CookieConfig } from "../../shared-DsWTtQ1-.mjs";
2
+ import { EdgeStoreRouter, MaybePromise, Provider } from "@edgestore/shared";
3
+ import { APIContext } from "astro";
4
+
5
+ //#region src/adapters/astro/index.d.ts
6
+ type Config<TCtx> = {
7
+ provider?: Provider;
8
+ router: EdgeStoreRouter<TCtx>;
9
+ logLevel?: LogLevel;
10
+ cookieConfig?: CookieConfig;
11
+ } & (TCtx extends Record<string, never> ? object : {
12
+ provider?: Provider;
13
+ router: EdgeStoreRouter<TCtx>;
14
+ createContext: (opts: APIContext) => MaybePromise<TCtx>;
15
+ cookieConfig?: CookieConfig;
16
+ });
17
+ declare function createEdgeStoreAstroHandler<TCtx>(config: Config<TCtx>): (context: APIContext) => Promise<Response>;
18
+ //#endregion
19
+ export { Config, createEdgeStoreAstroHandler };
20
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/adapters/astro/index.ts"],"sourcesContent":[],"mappings":";;;;;KA4BY;EAAA,QAAA,CAAM,EACL,QADK;EACL,MAAA,EACH,eADG,CACa,IADb,CAAA;EACa,QAAA,CAAA,EACb,QADa;EAAhB,YAAA,CAAA,EAEO,YAFP;CACG,GAAA,CAER,IAFQ,SAEK,MAFL,CAAA,MAAA,EAAA,KAAA,CAAA,GAAA,MAAA,GAAA;EACI,QAAA,CAAA,EAIA,QAJA;EACZ,MAAA,EAIS,eAJT,CAIyB,IAJzB,CAAA;EAAa,aAAA,EAAA,CAAA,IAAA,EAKU,UALV,EAAA,GAKyB,YALzB,CAKsC,IALtC,CAAA;EAGD,YAAA,CAAA,EAGI,YAHJ;CACa,CAAA;AAAhB,iBAyBE,2BAzBF,CAAA,IAAA,CAAA,CAAA,MAAA,EAyB4C,MAzB5C,CAyBmD,IAzBnD,CAAA,CAAA,EAAA,CAAA,OAAA,EAiCW,UAjCX,EAAA,GAiCqB,OAjCrB,CAiCqB,QAjCrB,CAAA"}
@@ -1,182 +1,135 @@
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 safely get cookies from Astro request
7
+ //#region src/adapters/astro/index.ts
12
8
  function getCookie(request, name) {
13
- const cookieHeader = request.headers.get('cookie');
14
- if (!cookieHeader) return undefined;
15
- const cookies = cookieHeader.split(';').reduce((acc, cookie)=>{
16
- const [key, value] = cookie.trim().split('=');
17
- if (key && value) acc[key] = value;
18
- return acc;
19
- }, {});
20
- return cookies[name];
9
+ const cookieHeader = request.headers.get("cookie");
10
+ if (!cookieHeader) return void 0;
11
+ return cookieHeader.split(";").reduce((acc, cookie) => {
12
+ const [key, value] = cookie.trim().split("=");
13
+ if (key && value) acc[key] = value;
14
+ return acc;
15
+ }, {})[name];
21
16
  }
22
17
  function createEdgeStoreAstroHandler(config) {
23
- const { provider = EdgeStoreProvider(), cookieConfig } = config;
24
- const log = new Logger(config.logLevel);
25
- globalThis._EDGE_STORE_LOGGER = log;
26
- log.debug('Creating EdgeStore Astro handler');
27
- const resolvedCookieConfig = getCookieConfig(cookieConfig);
28
- return async (context)=>{
29
- try {
30
- const { request } = context;
31
- const url = new URL(request.url);
32
- if (matchPath(url.pathname, 'health')) {
33
- return new Response('OK');
34
- } else if (matchPath(url.pathname, 'init')) {
35
- let ctx = {};
36
- try {
37
- ctx = 'createContext' in config ? await config.createContext(context) : {};
38
- } catch (err) {
39
- throw new EdgeStoreError({
40
- message: 'Error creating context',
41
- code: 'CREATE_CONTEXT_ERROR',
42
- cause: err instanceof Error ? err : undefined
43
- });
44
- }
45
- const { newCookies, token, baseUrl, providerName } = await init({
46
- ctx,
47
- provider,
48
- router: config.router,
49
- cookieConfig
50
- });
51
- const headers = new Headers();
52
- headers.set('Content-Type', 'application/json');
53
- // Set cookies
54
- if (Array.isArray(newCookies)) {
55
- for (const cookie of newCookies){
56
- headers.append('Set-Cookie', cookie);
57
- }
58
- } else if (newCookies) {
59
- headers.append('Set-Cookie', newCookies);
60
- }
61
- return new Response(JSON.stringify({
62
- token,
63
- baseUrl,
64
- providerName
65
- }), {
66
- headers
67
- });
68
- } else if (matchPath(url.pathname, 'request-upload')) {
69
- const body = await request.json();
70
- const result = await requestUpload({
71
- provider,
72
- router: config.router,
73
- body,
74
- ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
75
- });
76
- return new Response(JSON.stringify(result), {
77
- headers: {
78
- 'Content-Type': 'application/json'
79
- }
80
- });
81
- } else if (matchPath(url.pathname, 'request-upload-parts')) {
82
- const body = await request.json();
83
- const result = await requestUploadParts({
84
- provider,
85
- router: config.router,
86
- body,
87
- ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
88
- });
89
- return new Response(JSON.stringify(result), {
90
- headers: {
91
- 'Content-Type': 'application/json'
92
- }
93
- });
94
- } else if (matchPath(url.pathname, 'complete-multipart-upload')) {
95
- const body = await request.json();
96
- await completeMultipartUpload({
97
- provider,
98
- router: config.router,
99
- body,
100
- ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
101
- });
102
- return new Response(null, {
103
- status: 200
104
- });
105
- } else if (matchPath(url.pathname, 'confirm-upload')) {
106
- const body = await request.json();
107
- const result = await confirmUpload({
108
- provider,
109
- router: config.router,
110
- body,
111
- ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
112
- });
113
- return new Response(JSON.stringify(result), {
114
- headers: {
115
- 'Content-Type': 'application/json'
116
- }
117
- });
118
- } else if (matchPath(url.pathname, 'delete-file')) {
119
- const body = await request.json();
120
- const result = await deleteFile({
121
- provider,
122
- router: config.router,
123
- body,
124
- ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
125
- });
126
- return new Response(JSON.stringify(result), {
127
- headers: {
128
- 'Content-Type': 'application/json'
129
- }
130
- });
131
- } else if (matchPath(url.pathname, 'proxy-file')) {
132
- const url = new URL(request.url).searchParams.get('url');
133
- if (typeof url === 'string') {
134
- const cookieHeader = request.headers.get('cookie') ?? '';
135
- const proxyRes = await fetch(url, {
136
- headers: {
137
- cookie: cookieHeader
138
- }
139
- });
140
- const data = await proxyRes.arrayBuffer();
141
- const headers = new Headers();
142
- headers.set('Content-Type', proxyRes.headers.get('Content-Type') ?? 'application/octet-stream');
143
- return new Response(data, {
144
- headers
145
- });
146
- } else {
147
- return new Response(null, {
148
- status: 400
149
- });
150
- }
151
- } else {
152
- return new Response(null, {
153
- status: 404
154
- });
155
- }
156
- } catch (err) {
157
- if (err instanceof EdgeStoreError) {
158
- log[err.level](err.formattedMessage());
159
- if (err.cause) log[err.level](err.cause);
160
- return new Response(JSON.stringify(err.formattedJson()), {
161
- status: EDGE_STORE_ERROR_CODES[err.code],
162
- headers: {
163
- 'Content-Type': 'application/json'
164
- }
165
- });
166
- } else {
167
- log.error(err);
168
- return new Response(JSON.stringify(new EdgeStoreError({
169
- message: 'Internal Server Error',
170
- code: 'SERVER_ERROR'
171
- }).formattedJson()), {
172
- status: 500,
173
- headers: {
174
- 'Content-Type': 'application/json'
175
- }
176
- });
177
- }
178
- }
179
- };
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 Astro handler");
22
+ const resolvedCookieConfig = getCookieConfig(cookieConfig);
23
+ return async (context) => {
24
+ try {
25
+ const { request } = context;
26
+ const url = new URL(request.url);
27
+ if (matchPath(url.pathname, "health")) return new Response("OK");
28
+ else if (matchPath(url.pathname, "init")) {
29
+ let ctx = {};
30
+ try {
31
+ ctx = "createContext" in config ? await config.createContext(context) : {};
32
+ } catch (err) {
33
+ throw new EdgeStoreError({
34
+ message: "Error creating context",
35
+ code: "CREATE_CONTEXT_ERROR",
36
+ cause: err instanceof Error ? err : void 0
37
+ });
38
+ }
39
+ const { newCookies, token, baseUrl, providerName } = await init({
40
+ ctx,
41
+ provider,
42
+ router: config.router,
43
+ cookieConfig
44
+ });
45
+ const headers = new Headers();
46
+ headers.set("Content-Type", "application/json");
47
+ if (Array.isArray(newCookies)) for (const cookie of newCookies) headers.append("Set-Cookie", cookie);
48
+ else if (newCookies) headers.append("Set-Cookie", newCookies);
49
+ return new Response(JSON.stringify({
50
+ token,
51
+ baseUrl,
52
+ providerName
53
+ }), { headers });
54
+ } else if (matchPath(url.pathname, "request-upload")) {
55
+ const body = await request.json();
56
+ const result = await requestUpload({
57
+ provider,
58
+ router: config.router,
59
+ body,
60
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
61
+ });
62
+ return new Response(JSON.stringify(result), { headers: { "Content-Type": "application/json" } });
63
+ } else if (matchPath(url.pathname, "request-upload-parts")) {
64
+ const body = await request.json();
65
+ const result = await requestUploadParts({
66
+ provider,
67
+ router: config.router,
68
+ body,
69
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
70
+ });
71
+ return new Response(JSON.stringify(result), { headers: { "Content-Type": "application/json" } });
72
+ } else if (matchPath(url.pathname, "complete-multipart-upload")) {
73
+ const body = await request.json();
74
+ await completeMultipartUpload({
75
+ provider,
76
+ router: config.router,
77
+ body,
78
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
79
+ });
80
+ return new Response(null, { status: 200 });
81
+ } else if (matchPath(url.pathname, "confirm-upload")) {
82
+ const body = await request.json();
83
+ const result = await confirmUpload({
84
+ provider,
85
+ router: config.router,
86
+ body,
87
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
88
+ });
89
+ return new Response(JSON.stringify(result), { headers: { "Content-Type": "application/json" } });
90
+ } else if (matchPath(url.pathname, "delete-file")) {
91
+ const body = await request.json();
92
+ const result = await deleteFile({
93
+ provider,
94
+ router: config.router,
95
+ body,
96
+ ctxToken: getCookie(request, resolvedCookieConfig.ctx.name)
97
+ });
98
+ return new Response(JSON.stringify(result), { headers: { "Content-Type": "application/json" } });
99
+ } else if (matchPath(url.pathname, "proxy-file")) {
100
+ const url$1 = new URL(request.url).searchParams.get("url");
101
+ if (typeof url$1 === "string") {
102
+ var _request$headers$get, _proxyRes$headers$get;
103
+ const cookieHeader = (_request$headers$get = request.headers.get("cookie")) !== null && _request$headers$get !== void 0 ? _request$headers$get : "";
104
+ const proxyRes = await fetch(url$1, { headers: { cookie: cookieHeader } });
105
+ const data = await proxyRes.arrayBuffer();
106
+ const headers = new Headers();
107
+ headers.set("Content-Type", (_proxyRes$headers$get = proxyRes.headers.get("Content-Type")) !== null && _proxyRes$headers$get !== void 0 ? _proxyRes$headers$get : "application/octet-stream");
108
+ return new Response(data, { headers });
109
+ } else return new Response(null, { status: 400 });
110
+ } else return new Response(null, { status: 404 });
111
+ } catch (err) {
112
+ if (err instanceof EdgeStoreError) {
113
+ log[err.level](err.formattedMessage());
114
+ if (err.cause) log[err.level](err.cause);
115
+ return new Response(JSON.stringify(err.formattedJson()), {
116
+ status: EDGE_STORE_ERROR_CODES[err.code],
117
+ headers: { "Content-Type": "application/json" }
118
+ });
119
+ } else {
120
+ log.error(err);
121
+ return new Response(JSON.stringify(new EdgeStoreError({
122
+ message: "Internal Server Error",
123
+ code: "SERVER_ERROR"
124
+ }).formattedJson()), {
125
+ status: 500,
126
+ headers: { "Content-Type": "application/json" }
127
+ });
128
+ }
129
+ }
130
+ };
180
131
  }
181
132
 
133
+ //#endregion
182
134
  export { createEdgeStoreAstroHandler };
135
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["Logger","url"],"sources":["../../../src/adapters/astro/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 type { APIContext } from 'astro';\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 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: APIContext) => MaybePromise<TCtx>;\n cookieConfig?: CookieConfig;\n });\n\ndeclare const globalThis: {\n _EDGE_STORE_LOGGER: Logger;\n};\n\n// Helper to safely get cookies from Astro request\nfunction getCookie(request: Request, name: string): string | undefined {\n const cookieHeader = request.headers.get('cookie');\n if (!cookieHeader) return undefined;\n\n const cookies = cookieHeader\n .split(';')\n .reduce<Record<string, string>>((acc, cookie) => {\n const [key, value] = cookie.trim().split('=');\n if (key && value) acc[key] = value;\n return acc;\n }, {});\n\n return cookies[name];\n}\n\nexport function createEdgeStoreAstroHandler<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 Astro handler');\n\n const resolvedCookieConfig = getCookieConfig(cookieConfig);\n\n return async (context: APIContext) => {\n try {\n const { request } = context;\n const url = new URL(request.url);\n\n if (matchPath(url.pathname, 'health')) {\n return new Response('OK');\n } else if (matchPath(url.pathname, 'init')) {\n let ctx = {} as TCtx;\n try {\n ctx =\n 'createContext' in config\n ? await config.createContext(context)\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\n const headers = new Headers();\n headers.set('Content-Type', 'application/json');\n\n // Set cookies\n if (Array.isArray(newCookies)) {\n for (const cookie of newCookies) {\n headers.append('Set-Cookie', cookie);\n }\n } else if (newCookies) {\n headers.append('Set-Cookie', newCookies);\n }\n\n return new Response(\n JSON.stringify({\n token,\n baseUrl,\n providerName,\n }),\n { headers },\n );\n } else if (matchPath(url.pathname, 'request-upload')) {\n const body = (await request.json()) as RequestUploadBody;\n const result = await requestUpload({\n provider,\n router: config.router,\n body,\n ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),\n });\n\n return new Response(JSON.stringify(result), {\n headers: { 'Content-Type': 'application/json' },\n });\n } else if (matchPath(url.pathname, 'request-upload-parts')) {\n const body = (await request.json()) as RequestUploadPartsParams;\n const result = await requestUploadParts({\n provider,\n router: config.router,\n body,\n ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),\n });\n\n return new Response(JSON.stringify(result), {\n headers: { 'Content-Type': 'application/json' },\n });\n } else if (matchPath(url.pathname, 'complete-multipart-upload')) {\n const body = (await request.json()) as CompleteMultipartUploadBody;\n await completeMultipartUpload({\n provider,\n router: config.router,\n body,\n ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),\n });\n\n return new Response(null, { status: 200 });\n } else if (matchPath(url.pathname, 'confirm-upload')) {\n const body = (await request.json()) as ConfirmUploadBody;\n const result = await confirmUpload({\n provider,\n router: config.router,\n body,\n ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),\n });\n\n return new Response(JSON.stringify(result), {\n headers: { 'Content-Type': 'application/json' },\n });\n } else if (matchPath(url.pathname, 'delete-file')) {\n const body = (await request.json()) as DeleteFileBody;\n const result = await deleteFile({\n provider,\n router: config.router,\n body,\n ctxToken: getCookie(request, resolvedCookieConfig.ctx.name),\n });\n\n return new Response(JSON.stringify(result), {\n headers: { 'Content-Type': 'application/json' },\n });\n } else if (matchPath(url.pathname, 'proxy-file')) {\n const url = new URL(request.url).searchParams.get('url');\n\n if (typeof url === 'string') {\n const cookieHeader = request.headers.get('cookie') ?? '';\n\n const proxyRes = await fetch(url, {\n headers: {\n cookie: cookieHeader,\n },\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\n return new Response(data, { 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\n return new Response(JSON.stringify(err.formattedJson()), {\n status: EDGE_STORE_ERROR_CODES[err.code as EdgeStoreErrorCodeKey],\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n } else {\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: {\n 'Content-Type': 'application/json',\n },\n },\n );\n }\n }\n };\n}\n"],"mappings":"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"}