Back to Atlas map viewer
SOURCE / PINNED RELEASE

Made of little things.

Atlas map viewer

Release
1d2807e80b44…
Author-recorded commit
43810ed2b368…
License
LICENSE
Author’s source reference
nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-4757dbabc86

Archive hash verified: 8db6876d96c460ac…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

packages/format/src/composition-schema.ts
export const MEMBER_CHUNK_BYTES = 1024 ** 2;
export interface ArchiveComposition {
  version: 1;
  members: Array<{ id: string; snapshot: string; bytes: number }>;
}
export function validateComposition(
  value: unknown,
): asserts value is ArchiveComposition | undefined {
  if (value === undefined) return;
  const v = value as ArchiveComposition;
  if (
    !v ||
    v.version !== 1 ||
    !Array.isArray(v.members) ||
    !v.members.length ||
    v.members.length > 64 ||
    new Set(v.members.map((m) => m?.id)).size !== v.members.length ||
    v.members.some(
      (m) =>
        !m ||
        !/^m[0-9]{1,3}$/.test(m.id) ||
        !/^[a-f0-9]{64}$/.test(m.snapshot) ||
        !Number.isSafeInteger(m.bytes) ||
        m.bytes <= 0 ||
        m.bytes > MEMBER_CHUNK_BYTES * 2 ** 26,
    )
  )
    throw new Error("Invalid embedded Atlas composition");
}