import { MongoClient } from "https://deno.land/x/mongo@v0.31.2/mod.ts"; import { APIRouter } from "./routers/APIRouter.ts"; import * as bcrypt from "https://deno.land/x/bcrypt@v0.4.1/mod.ts"; import AppDatabase from "./AppDatabase.ts"; import { StaticRouter } from "./routers/StaticRouter.ts"; export default async function clonegur(apiUrl: string) { let salt; try { salt = new TextDecoder().decode(await Deno.readFile('keys/salt.txt')); } catch { salt = await bcrypt.genSalt(); await Deno.mkdir('keys', { recursive: true }); await Deno.writeFile('keys/salt.txt', new TextEncoder().encode(salt)); } const db = await new MongoClient().connect({ db: 'clonegur', servers: [ { host: '127.0.0.1', port: 27017 } ] }); return { static: new StaticRouter(apiUrl), api: new APIRouter(salt, new AppDatabase(db)), } }