mirror of
https://codeberg.org/valpackett/tiddlypwa.git
synced 2025-12-05 18:20:40 -08:00
32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
/// <reference lib="deno.window" />
|
|
import * as dotenv from 'https://deno.land/std@0.192.0/dotenv/mod.ts';
|
|
import { parse as argparse } from 'https://deno.land/std@0.192.0/flags/mod.ts';
|
|
import { serveListener } from 'https://deno.land/std@0.192.0/http/server.ts';
|
|
import { SQLiteDatastore } from './sqlite.ts';
|
|
import { TiddlyPWASyncApp } from './app.ts';
|
|
|
|
export async function listen(args: any) {
|
|
if (!('BroadcastChannel' in globalThis)) throw new Error('Run Deno with --unstable-broadcast-channel!');
|
|
const denv = args.dotenv ? await dotenv.load() : {};
|
|
const envvar = (name: string) => Deno.env.get(name) ?? denv[name];
|
|
const adminpwhash = (args.adminpwhash ?? envvar('ADMIN_PASSWORD_HASH'))?.trim();
|
|
const adminpwsalt = (args.adminpwsalt ?? envvar('ADMIN_PASSWORD_SALT'))?.trim();
|
|
const basepath = args.basepath ?? envvar('BASE_PATH') ?? '';
|
|
const db = new SQLiteDatastore(args.db ?? envvar('DB_PATH') ?? '.data/tiddly.db');
|
|
const app = new TiddlyPWASyncApp(db, adminpwsalt, adminpwhash, basepath);
|
|
const listen: any = { port: 8000 };
|
|
if ('port' in args) {
|
|
listen.port = args.port;
|
|
}
|
|
if ('host' in args) {
|
|
listen.hostname = args.host;
|
|
}
|
|
if ('socket' in args) {
|
|
listen.transport = 'unix';
|
|
listen.path = args.socket;
|
|
}
|
|
console.log('Listening:', listen);
|
|
await serveListener(Deno.listen(listen), app.handle.bind(app));
|
|
}
|
|
|
|
if (import.meta.main) await listen(argparse(Deno.args));
|