@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.
- package/adapters/astro/package.json +1 -0
- package/adapters/express/package.json +1 -0
- package/adapters/fastify/package.json +1 -0
- package/adapters/hono/package.json +1 -0
- package/adapters/next/app/package.json +1 -0
- package/adapters/next/pages/package.json +1 -0
- package/adapters/remix/package.json +1 -0
- package/adapters/start/package.json +1 -0
- package/core/package.json +1 -0
- package/dist/adapters/astro/index.cjs +134 -0
- package/dist/adapters/astro/index.d.cts +20 -0
- package/dist/adapters/astro/index.d.cts.map +1 -0
- package/dist/adapters/astro/index.d.mts +20 -0
- package/dist/adapters/astro/index.d.mts.map +1 -0
- package/dist/adapters/astro/index.mjs +128 -175
- package/dist/adapters/astro/index.mjs.map +1 -0
- package/dist/adapters/express/index.cjs +104 -0
- package/dist/adapters/express/index.d.cts +24 -0
- package/dist/adapters/express/index.d.cts.map +1 -0
- package/dist/adapters/express/index.d.mts +24 -0
- package/dist/adapters/express/index.d.mts.map +1 -0
- package/dist/adapters/express/index.mjs +100 -112
- package/dist/adapters/express/index.mjs.map +1 -0
- package/dist/adapters/fastify/index.cjs +115 -0
- package/dist/adapters/fastify/index.d.cts +24 -0
- package/dist/adapters/fastify/index.d.cts.map +1 -0
- package/dist/adapters/fastify/index.d.mts +24 -0
- package/dist/adapters/fastify/index.d.mts.map +1 -0
- package/dist/adapters/fastify/index.mjs +109 -139
- package/dist/adapters/fastify/index.mjs.map +1 -0
- package/dist/adapters/hono/index.cjs +117 -0
- package/dist/adapters/hono/index.d.cts +91 -0
- package/dist/adapters/hono/index.d.cts.map +1 -0
- package/dist/adapters/hono/index.d.mts +91 -0
- package/dist/adapters/hono/index.d.mts.map +1 -0
- package/dist/adapters/hono/index.mjs +111 -129
- package/dist/adapters/hono/index.mjs.map +1 -0
- package/dist/adapters/next/app/index.cjs +140 -0
- package/dist/adapters/next/app/index.d.cts +23 -0
- package/dist/adapters/next/app/index.d.cts.map +1 -0
- package/dist/adapters/next/app/index.d.mts +23 -0
- package/dist/adapters/next/app/index.d.mts.map +1 -0
- package/dist/adapters/next/app/index.mjs +136 -168
- package/dist/adapters/next/app/index.mjs.map +1 -0
- package/dist/adapters/next/pages/index.cjs +108 -0
- package/dist/adapters/next/pages/index.d.cts +24 -0
- package/dist/adapters/next/pages/index.d.cts.map +1 -0
- package/dist/adapters/next/pages/index.d.mts +24 -0
- package/dist/adapters/next/pages/index.d.mts.map +1 -0
- package/dist/adapters/next/pages/index.mjs +104 -116
- package/dist/adapters/next/pages/index.mjs.map +1 -0
- package/dist/adapters/remix/index.cjs +124 -0
- package/dist/adapters/remix/index.d.cts +26 -0
- package/dist/adapters/remix/index.d.cts.map +1 -0
- package/dist/adapters/remix/index.d.mts +26 -0
- package/dist/adapters/remix/index.d.mts.map +1 -0
- package/dist/adapters/remix/index.mjs +118 -150
- package/dist/adapters/remix/index.mjs.map +1 -0
- package/dist/adapters/start/index.cjs +156 -0
- package/dist/adapters/start/index.d.cts +26 -0
- package/dist/adapters/start/index.d.cts.map +1 -0
- package/dist/adapters/start/index.d.mts +26 -0
- package/dist/adapters/start/index.d.mts.map +1 -0
- package/dist/adapters/start/index.mjs +150 -184
- package/dist/adapters/start/index.mjs.map +1 -0
- package/dist/core/index.cjs +148 -0
- package/dist/core/index.d.cts +500 -0
- package/dist/core/index.d.cts.map +1 -0
- package/dist/core/index.d.mts +500 -0
- package/dist/core/index.d.mts.map +1 -0
- package/dist/core/index.mjs +135 -169
- package/dist/core/index.mjs.map +1 -0
- package/dist/edgestore-Cr88uKUx.mjs +142 -0
- package/dist/edgestore-Cr88uKUx.mjs.map +1 -0
- package/dist/edgestore-Dqb-EoFm.cjs +146 -0
- package/dist/index.cjs +8 -0
- package/dist/index.d.cts +2 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.mjs +3 -1
- package/dist/providers/aws/index.cjs +89 -0
- package/dist/providers/aws/index.d.cts +71 -0
- package/dist/providers/aws/index.d.cts.map +1 -0
- package/dist/providers/aws/index.d.mts +71 -0
- package/dist/providers/aws/index.d.mts.map +1 -0
- package/dist/providers/aws/index.mjs +85 -102
- package/dist/providers/aws/index.mjs.map +1 -0
- package/dist/providers/azure/index.cjs +56 -0
- package/dist/providers/azure/index.d.cts +44 -0
- package/dist/providers/azure/index.d.cts.map +1 -0
- package/dist/providers/azure/index.d.mts +44 -0
- package/dist/providers/azure/index.d.mts.map +1 -0
- package/dist/providers/azure/index.mjs +52 -58
- package/dist/providers/azure/index.mjs.map +1 -0
- package/dist/providers/edgestore/index.cjs +5 -0
- package/dist/providers/edgestore/index.d.cts +23 -0
- package/dist/providers/edgestore/index.d.cts.map +1 -0
- package/dist/providers/edgestore/index.d.mts +23 -0
- package/dist/providers/edgestore/index.d.mts.map +1 -0
- package/dist/providers/edgestore/index.mjs +4 -146
- package/dist/sdk-AhXUPMy1.cjs +238 -0
- package/dist/sdk-CKRQe75P.mjs +222 -0
- package/dist/sdk-CKRQe75P.mjs.map +1 -0
- package/dist/shared-B39MtSQo.d.cts +68 -0
- package/dist/shared-B39MtSQo.d.cts.map +1 -0
- package/dist/shared-Bd7-gfqa.mjs +457 -0
- package/dist/shared-Bd7-gfqa.mjs.map +1 -0
- package/dist/shared-DsWTtQ1-.d.mts +68 -0
- package/dist/shared-DsWTtQ1-.d.mts.map +1 -0
- package/dist/shared-pWGwhEsU.cjs +527 -0
- package/dist/utils--x-q_GK5.mjs +44 -0
- package/dist/utils--x-q_GK5.mjs.map +1 -0
- package/dist/utils-D6YuBNUV.cjs +54 -0
- package/package.json +121 -57
- package/providers/aws/package.json +1 -0
- package/providers/azure/package.json +1 -0
- package/providers/edgestore/package.json +1 -0
- package/adapters/astro/index.d.ts +0 -1
- package/adapters/astro/index.js +0 -1
- package/adapters/express/index.d.ts +0 -1
- package/adapters/express/index.js +0 -1
- package/adapters/fastify/index.d.ts +0 -1
- package/adapters/fastify/index.js +0 -1
- package/adapters/hono/index.d.ts +0 -1
- package/adapters/hono/index.js +0 -1
- package/adapters/next/app/index.d.ts +0 -1
- package/adapters/next/app/index.js +0 -1
- package/adapters/next/pages/index.d.ts +0 -1
- package/adapters/next/pages/index.js +0 -1
- package/adapters/remix/index.d.ts +0 -1
- package/adapters/remix/index.js +0 -1
- package/adapters/start/index.d.ts +0 -1
- package/adapters/start/index.js +0 -1
- package/core/index.d.ts +0 -1
- package/core/index.js +0 -1
- package/dist/adapters/astro/index.d.ts +0 -17
- package/dist/adapters/astro/index.d.ts.map +0 -1
- package/dist/adapters/astro/index.js +0 -186
- package/dist/adapters/express/index.d.ts +0 -21
- package/dist/adapters/express/index.d.ts.map +0 -1
- package/dist/adapters/express/index.js +0 -121
- package/dist/adapters/fastify/index.d.ts +0 -21
- package/dist/adapters/fastify/index.d.ts.map +0 -1
- package/dist/adapters/fastify/index.js +0 -150
- package/dist/adapters/hono/index.d.ts +0 -86
- package/dist/adapters/hono/index.d.ts.map +0 -1
- package/dist/adapters/hono/index.js +0 -140
- package/dist/adapters/imageTypes.d.ts +0 -2
- package/dist/adapters/imageTypes.d.ts.map +0 -1
- package/dist/adapters/next/app/index.d.ts +0 -20
- package/dist/adapters/next/app/index.d.ts.map +0 -1
- package/dist/adapters/next/app/index.js +0 -177
- package/dist/adapters/next/pages/index.d.ts +0 -21
- package/dist/adapters/next/pages/index.d.ts.map +0 -1
- package/dist/adapters/next/pages/index.js +0 -125
- package/dist/adapters/remix/index.d.ts +0 -21
- package/dist/adapters/remix/index.d.ts.map +0 -1
- package/dist/adapters/remix/index.js +0 -161
- package/dist/adapters/shared.d.ts +0 -167
- package/dist/adapters/shared.d.ts.map +0 -1
- package/dist/adapters/start/index.d.ts +0 -21
- package/dist/adapters/start/index.d.ts.map +0 -1
- package/dist/adapters/start/index.js +0 -195
- package/dist/core/client/index.d.ts +0 -217
- package/dist/core/client/index.d.ts.map +0 -1
- package/dist/core/index.d.ts +0 -3
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -186
- package/dist/core/sdk/index.d.ts +0 -240
- package/dist/core/sdk/index.d.ts.map +0 -1
- package/dist/index-1e7b1b93.js +0 -235
- package/dist/index-a36b09a6.mjs +0 -231
- package/dist/index-b0fff508.js +0 -231
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -12
- package/dist/libs/errors/EdgeStoreCredentialsError.d.ts +0 -5
- package/dist/libs/errors/EdgeStoreCredentialsError.d.ts.map +0 -1
- package/dist/libs/logger.d.ts +0 -13
- package/dist/libs/logger.d.ts.map +0 -1
- package/dist/libs/utils.d.ts +0 -5
- package/dist/libs/utils.d.ts.map +0 -1
- package/dist/providers/aws/index.d.ts +0 -68
- package/dist/providers/aws/index.d.ts.map +0 -1
- package/dist/providers/aws/index.js +0 -111
- package/dist/providers/azure/index.d.ts +0 -39
- package/dist/providers/azure/index.d.ts.map +0 -1
- package/dist/providers/azure/index.js +0 -67
- package/dist/providers/edgestore/index.d.ts +0 -19
- package/dist/providers/edgestore/index.d.ts.map +0 -1
- package/dist/providers/edgestore/index.js +0 -151
- package/dist/shared-4ec2dc90.js +0 -466
- package/dist/shared-64e9c30c.js +0 -435
- package/dist/shared-c6527780.mjs +0 -454
- package/dist/utils-26113e02.js +0 -65
- package/dist/utils-ab564a9e.js +0 -44
- package/dist/utils-cba23eef.mjs +0 -62
- package/providers/aws/index.d.ts +0 -1
- package/providers/aws/index.js +0 -1
- package/providers/azure/index.d.ts +0 -1
- package/providers/azure/index.js +0 -1
- package/providers/edgestore/index.d.ts +0 -1
- 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 {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
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
|
-
|
|
7
|
+
//#region src/adapters/astro/index.ts
|
|
12
8
|
function getCookie(request, name) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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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"}
|