aliaset
Version:
twind monorepo
62 lines (50 loc) • 1.8 kB
text/typescript
import type { Handle, HandleServerError } from '@sveltejs/kit'
import { sequence } from '@sveltejs/kit/hooks'
import handleTwind from '@twind/with-sveltekit/hooks'
import { dev } from '$app/environment'
const handlers: Handle[] = [handleTwind()]
if (dev) {
handlers.push(async ({ event, resolve }) => {
if (!event.platform) {
const { Miniflare, Log, LogLevel } = await import('miniflare')
const mf = new Miniflare({
log: new Log(LogLevel.INFO),
liveReload: false,
kvPersist: './.mf/kv',
r2Persist: './.mf/r2',
durableObjectsPersist: './.mf/do',
cachePersist: './.mf/cache',
// kvNamespaces: ['KVNamespace'],
r2Buckets: ['WORKSPACES'],
globalAsyncIO: true,
globalTimers: true,
globalRandom: true,
script: `
addEventListener("fetch", (event) => {
event.waitUntil(Promise.resolve(event.request.url));
event.respondWith(new Response(event.request.headers.get("X-Message")));
});
addEventListener("scheduled", (event) => {
event.waitUntil(Promise.resolve(event.scheduledTime));
});
`,
})
event.platform = {
caches: (await mf.getCaches()) as unknown as CacheStorage & { default: Cache },
env: {
// KVNamespace: await mf.getKVNamespace('KVNamespace'),
WORKSPACES: (await mf.getR2Bucket('WORKSPACES')) as unknown as R2Bucket,
},
}
}
return resolve(event)
})
}
export const handle = handlers.length > 1 ? sequence(...handlers) : handlers[0]
export const handleError: HandleServerError = ({ error }) => {
return {
message: 'Whoops! ' + (error as Error).message,
stack: (error as Error).stack,
...(error as any),
}
}