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.
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");
}
