Something went wrong. Try again.
Atproto AMA app
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768import * as plc from "@did-plc/server";import { TestNetworkNoAppView, TestPds, TestPlc, mockNetworkUtilities } from "@atproto/dev-env";
import { DEV_PLC_ROTATION_KEY_HEX, DEV_RECOVERY_DID_KEY } from "./dev-network-state";import { DevLexiconAuthority, ensureLexiconAuthorityAccount, getPublishedLexiconNsids, verifyPublishedLexicon,} from "./lexicon-authority";
const PLC_PORT = 2583;const PDS_PORT = 2584;const BOOTSTRAP_PDS_PORT = 2585;
export type DevNetwork = TestNetworkNoAppView & { plcDb: plc.MockDatabase;};
/** Boot an ephemeral in-process PDS + PLC (no disk persistence). */export async function createDevNetwork(): Promise<DevNetwork> { const db = plc.Database.mock();
const plcPort = PLC_PORT; const plcUrl = `http://localhost:${plcPort}`; const plcServer = plc.PlcServer.create({ db, port: plcPort }); await plcServer.start(); const testPlc = new TestPlc(plcUrl, plcPort, plcServer);
const bootstrapPds = await TestPds.create({ didPlcUrl: plcUrl, port: BOOTSTRAP_PDS_PORT, inviteRequired: false, });
try { const profile = await DevLexiconAuthority.create(bootstrapPds); const lexiconAuthorityDid = profile.did;
const pds = await TestPds.create({ didPlcUrl: plcUrl, port: PDS_PORT, plcRotationKeyK256PrivateKeyHex: DEV_PLC_ROTATION_KEY_HEX, recoveryDidKey: DEV_RECOVERY_DID_KEY, lexiconDidAuthority: lexiconAuthorityDid, });
mockNetworkUtilities(pds);
await profile.migrateTo(pds); await profile.publishRecords();
const authorityAgent = await ensureLexiconAuthorityAccount(pds); for (const nsid of getPublishedLexiconNsids()) { await verifyPublishedLexicon(authorityAgent, nsid, lexiconAuthorityDid); }
const network = new TestNetworkNoAppView(testPlc, pds) as DevNetwork; network.plcDb = db;
console.log("Dev network: ephemeral (fresh PDS + PLC each boot)\n");
return network; } finally { await bootstrapPds.close(); }}