Files
AtreidesAssetsFree/shared/registry.js
T
2026-10-29 11:57:29 +01:00

16 lines
634 B
JavaScript

// Generated, do not edit. sha256:afb8f908930f6e36cf200b71f053da053bdc63adc393178a3cdc212216d2ca98
export function createRegistry(name, { validate } = {}) {
const items = new Map();
return Object.freeze({
name,
register(entry) {
if (!entry || typeof entry.id !== 'string' || !entry.id) throw new Error(`${name}: an entry needs an id`);
if (items.has(entry.id)) throw new Error(`${name}: '${entry.id}' is registered twice`);
validate?.(entry);
items.set(entry.id, Object.freeze({ feature: null, ...entry }));
},
get: id => items.get(id) ?? null,
list: () => [...items.values()],
});
}