import { ExtensionKnownShares, ExtensionSyncWebsocket, ReplicaServer, ReplicaServerOpts,} from "../mod.ts";import { Earthstar } from "../deps.ts";import { ReplicaDriverSqlite } from "https://deno.land/x/earthstar@v9.3.2/src/replica/replica-driver-sqlite.deno.ts";
export class NimbleServer { private server: ReplicaServer;
constructor(opts: ReplicaServerOpts) { this.server = new ReplicaServer([ new ExtensionKnownShares({ knownSharesPath: "./known_shares.json", onCreateReplica: (shareAddress) => { return new Earthstar.Replica( shareAddress, Earthstar.FormatValidatorEs4, new ReplicaDriverSqlite({ share: shareAddress, filename: `./data/${shareAddress}.sql`, mode: "create-or-open", }), ); }, }), new ExtensionSyncWebsocket({}), ], opts); }
close() { return this.server.close(); }}