You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/client/web/scripts/deno-static-entry.ts

35 lines
940 B
TypeScript

// @ts-nocheck
import { serve } from 'https://deno.land/std@0.120.0/http/server.ts';
import { serveFile } from 'https://deno.land/std@0.120.0/http/file_server.ts';
import { fromFileUrl } from 'https://deno.land/std@0.120.0/path/mod.ts';
const clientRoot = new URL('./', import.meta.url);
serve(async (req) => {
const url = new URL(req.url);
const localPath = new URL('./' + url.pathname, clientRoot);
const filePath = fromFileUrl(localPath);
const fileExists = await checkFileExists(filePath);
if (fileExists) {
return serveFile(req, filePath);
} else {
return await serveFile(
req,
fromFileUrl(new URL('./index.html', clientRoot))
);
}
});
async function checkFileExists(filePath: string): Promise<boolean> {
try {
await Deno.stat(filePath);
return true;
} catch (error) {
if (error instanceof Deno.errors.NotFound) {
return false;
} else {
throw error;
}
}
}