Give Heimdall Odin documents unique catalog keys

This commit is contained in:
Meta Vens 2026-08-22 03:47:02 +02:00
commit 1086aee011
2 changed files with 24 additions and 9 deletions

View file

@ -36,7 +36,22 @@ export async function publishHeimdallOdinState(
);
const publish = options.publish ?? publishRecord;
for (const record of buildHeimdallVerseRecords(config, pulse)) {
await publish(record, endpoint);
await publish({ ...record, key: odinCatalogKey(record) }, endpoint);
}
}
function odinCatalogKey(record: CultCacheRecord): string {
switch (record.schemaId) {
case "gamecult.eve.provider_advertisement.v1":
return "eve:provider:heimdall";
case "heimdall.command_boundary.v1":
return "heimdall:command-boundary";
case "gamecult.eve.plugin_advertisement.v1":
return "eve:plugin:gamecult.heimdall.access";
case "heimdall.transport_profile.v1":
return "heimdall:transport-profile";
default:
throw new Error(`Heimdall has no Odin catalog key for ${record.schemaId}`);
}
}

View file

@ -36,10 +36,10 @@ describe("Heimdall Odin publication", () => {
});
expect(published.map((record) => [record.schemaId, record.key])).toEqual([
["gamecult.eve.provider_advertisement.v1", "heimdall"],
["heimdall.command_boundary.v1", "heimdall"],
["gamecult.eve.plugin_advertisement.v1", "gamecult.heimdall.access"],
["heimdall.transport_profile.v1", "heimdall"],
["gamecult.eve.provider_advertisement.v1", "eve:provider:heimdall"],
["heimdall.command_boundary.v1", "heimdall:command-boundary"],
["gamecult.eve.plugin_advertisement.v1", "eve:plugin:gamecult.heimdall.access"],
["heimdall.transport_profile.v1", "heimdall:transport-profile"],
]);
const serialized = JSON.stringify(published);
expect(serialized).not.toContain("must-never-publish");
@ -85,10 +85,10 @@ describe("Heimdall Odin publication", () => {
environment: { CULTMESH_URI_ODIN_RUDP: `127.0.0.1:${server.bind.port}` },
});
expect([...received].sort()).toEqual([
"gamecult.eve.plugin_advertisement.v1:gamecult.heimdall.access",
"gamecult.eve.provider_advertisement.v1:heimdall",
"heimdall.command_boundary.v1:heimdall",
"heimdall.transport_profile.v1:heimdall",
"gamecult.eve.plugin_advertisement.v1:eve:plugin:gamecult.heimdall.access",
"gamecult.eve.provider_advertisement.v1:eve:provider:heimdall",
"heimdall.command_boundary.v1:heimdall:command-boundary",
"heimdall.transport_profile.v1:heimdall:transport-profile",
]);
} finally {
server.close();