Files
discord-clone/node_modules/unstorage/dist/server.mjs
2023-01-03 09:29:04 -06:00

46 lines
1.4 KiB
JavaScript

import { createApp, eventHandler, readBody, createError, toNodeListener } from 'h3';
import { s as stringify } from './shared/unstorage.10149939.mjs';
function createStorageServer(storage, _options = {}) {
const app = createApp();
app.use(eventHandler(async (event) => {
if (event.req.method === "GET") {
const value = await storage.getItem(event.req.url);
if (!value) {
const keys = await storage.getKeys(event.req.url);
return keys.map((key) => key.replace(/:/g, "/"));
}
return stringify(value);
}
if (event.req.method === "HEAD") {
const _hasItem = await storage.hasItem(event.req.url);
event.res.statusCode = _hasItem ? 200 : 404;
if (_hasItem) {
const meta = await storage.getMeta(event.req.url);
if (meta.mtime) {
event.res.setHeader("Last-Modified", new Date(meta.mtime).toUTCString());
}
}
return "";
}
if (event.req.method === "PUT") {
const value = await readBody(event);
await storage.setItem(event.req.url, value);
return "OK";
}
if (event.req.method === "DELETE") {
await storage.removeItem(event.req.url);
return "OK";
}
throw createError({
statusCode: 405,
statusMessage: "Method Not Allowed"
});
}));
return {
handle: toNodeListener(app)
};
}
export { createStorageServer };