kubricate
Version:
A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.
36 lines • 1.13 kB
JavaScript
/**
* Creates a reusable handler to merge multiple Raw Secret effects.
* Will group by Secret `storeName` and merge `.data`.
* Throws error if duplicate keys are found within the same store.
*/
export function createMergeHandler() {
return function mergeKubeSecrets(effects) {
const grouped = {};
for (const effect of effects) {
if (effect.type !== 'custom') continue;
const name = effect.value.storeName;
const key = name;
if (!grouped[key]) {
grouped[key] = {
...effect,
value: {
...effect.value,
rawData: {
...effect.value.rawData
}
}
};
continue;
}
const existing = grouped[key];
for (const [key, value] of Object.entries(effect.value.rawData ?? {})) {
if (existing.value.rawData?.[key]) {
throw new Error(`[conflict:in-memory] Conflict detected: key "${key}" already exists in Secret "${name}"`);
}
existing.value.rawData[key] = value;
}
}
return Object.values(grouped);
};
}
//# sourceMappingURL=merge-utils.js.map