releaseRecord
uses Buffer
The record announcing a release of this codebase, fetched from sources.
import type { Codebase } from "#codebase/tcmts/cli/codebase"; import { releaseNamespace } from "#codebase/tcmts/cli/libraries"; import { UsageError } from "#codebase/tcmts/cli/ui"; import { IR_VERSION } from "#codebase/tcmts/core/hash"; import { RELEASE_COLLECTION, releaseLexicon } from "#codebase/tcmts/records"; import type { ReleaseRecord } from "#codebase/tcmts/records"; import type { Release } from "#codebase/tcmts/store"; export async function releaseRecord( cb: Codebase, r: Release, sources: string[], ): Promise<ReleaseRecord> { const most = releaseLexicon.defs.main.record.properties.notes.maxLength; const size = Buffer.byteLength(r.notes); if (size > most) throw new UsageError( `${r.package}@${r.version}'s notes are ${size} bytes: a release record holds at most ${most}`, ); return { $type: RELEASE_COLLECTION, package: r.package, version: r.version, namespace: await releaseNamespace(cb.store, r), entry: r.causal, hashFormat: IR_VERSION, notes: r.notes, sources, createdAt: new Date(r.ts).toISOString(), }; }
uses
- tcmts.cli.codebase.Codebase
- tcmts.cli.libraries.releaseNamespace
- tcmts.cli.ui.UsageError
- tcmts.core.hash.IR_VERSION
- tcmts.records.RELEASE_COLLECTION
- tcmts.records.ReleaseRecord
- tcmts.records.releaseLexicon
- tcmts.store.Release