11import { Database } from "bun:sqlite" ;
22import { randomBytes } from "node:crypto" ;
3+ import { readdir } from "node:fs/promises" ;
4+ import type { BuildConfig as BunBuildConfig } from "bun" ;
35import { CamelCasePlugin , Kysely } from "kysely" ;
46import { BunSqliteDialect } from "kysely-bun-sqlite" ;
57import { bun } from "plainjob" ;
68import { migrate as migrate_ } from "./database" ;
7- import { test } from "./env" ;
9+ import { prod , test } from "./env" ;
810import { queue } from "./job" ;
911
10- export function bunSqlite < DB = unknown > ( ) {
11- const sqlite = new Database ( test ( ) ? ":memory:" : "data.db" , {
12+ export function sqlite < DB = unknown > ( ) {
13+ const sqlite_ = new Database ( test ( ) ? ":memory:" : "data.db" , {
1214 strict : true ,
1315 } ) ;
1416 const q = queue ( {
15- connection : bun ( sqlite ) ,
17+ connection : bun ( sqlite_ ) ,
1618 } ) ;
1719 const database = new Kysely < DB > ( {
1820 dialect : new BunSqliteDialect ( {
19- database : sqlite ,
21+ database : sqlite_ ,
2022 } ) ,
2123 plugins : [ new CamelCasePlugin ( ) ] ,
2224 } ) ;
2325 const migrate = migrate_ ( database ) ;
24- return { sqlite, database, migrate, queue : q } ;
26+ return { sqlite : sqlite_ , database, migrate, queue : q } ;
2527}
2628
2729export async function secret ( ) : Promise < string > {
@@ -36,3 +38,21 @@ export async function secret(): Promise<string> {
3638 }
3739 return newSecret ;
3840}
41+
42+ type BuildConfig = Omit < BunBuildConfig , "entrypoints" > & {
43+ entrypoints : string | string [ ] ;
44+ } ;
45+
46+ export async function build ( options : BuildConfig ) {
47+ const entrypointfiles =
48+ typeof options . entrypoints === "string"
49+ ? await readdir ( options . entrypoints )
50+ : options . entrypoints ;
51+ return await Bun . build ( {
52+ outdir : "static" ,
53+ sourcemap : "linked" ,
54+ minify : false , // TODO
55+ ...options ,
56+ entrypoints : entrypointfiles ,
57+ } ) ;
58+ }
0 commit comments