// Mint the loser-club community DID (step 1, LOCAL — no PLC submit here). Creates a co-owned community
// did:plc (handle loser-club.7rnx.net) with a keyless CommunityRoom whose roster = p2p.7rnx.net + ashatron.
// Persists to ~/.config/loser-club and saves the secrets + prints the genesis op for the PLC submit.
// Run once: bare scripts/mint-loser-club.mjs
import '../lib/bare-globals.js'
import process from 'bare-process'
import fs from 'bare-fs'
import Corestore from 'corestore'
import { generateMnemonic } from 'bip39-mnemonic'
import { createCommunity } from '../index.js'
const HOME = process.env.HOME
const DIR = HOME + '/.config/loser-club'
const SECRETS = DIR + '/secrets.json'
if (fs.existsSync(SECRETS)) { console.error('refusing to overwrite existing', SECRETS, '(loser-club already minted)'); process.exit(1) }
fs.mkdirSync(DIR + '/room', { recursive: true })
fs.mkdirSync(DIR + '/repo', { recursive: true })
const WJ62 = 'did:plc:wj62ebbusln6gxo5azo6ogzo' // p2p.7rnx.net
const ASHATRON = 'did:plc:e2jevhuurrhlm36ufk7fklpg' // ashatron.7rnx.net
const MEMBRANE = 'https://pds.7rnx.net'
const rootMnemonic = generateMnemonic()
const founderDeviceMnemonic = generateMnemonic()
const roomStore = new Corestore(DIR + '/room')
const c = await createCommunity({
rootMnemonic,
founderDeviceMnemonic,
handle: 'loser-club.7rnx.net',
name: 'loser-club',
feedGenEndpoint: MEMBRANE,
labelerEndpoint: MEMBRANE,
roomStore,
repoStorage: DIR + '/repo',
network: false
})
await c.room.addMember(WJ62)
await c.room.addMember(ASHATRON)
const secrets = {
did: c.did,
handle: 'loser-club.7rnx.net',
rootMnemonic,
founderDeviceMnemonic,
signingKey: c.signingKey,
roomKey: c.room.key,
members: [WJ62, ASHATRON],
createdAt: null // stamped by the operator; Date.now() is unavailable under bare here
}
fs.writeFileSync(SECRETS, JSON.stringify(secrets, null, 2))
try { fs.chmodSync(SECRETS, 0o600) } catch {}
console.log('=== loser-club minted (LOCAL — not yet PLC-submitted) ===')
console.log('DID: ' + c.did)
console.log('handle: loser-club.7rnx.net')
console.log('roomKey: ' + c.room.key)
console.log('members: ' + (await c.room.members()).join(', '))
console.log('secrets: ' + SECRETS + ' (root mnemonic + keys — KEEP SAFE)')
console.log('\n--- genesis op (submit this to plc.directory: POST https://plc.directory/<did>) ---')
console.log(JSON.stringify(c.identity.signedOp))
console.log('--- end genesis op ---')
await c.sb.close()
await c.room.close()
try { await roomStore.close() } catch {}
process.exit(0)