15 lines
634 B
JavaScript
15 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()],
|
||
|
|
});
|
||
|
|
}
|