kubricate
Version:
A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.
69 lines (68 loc) • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.InMemoryProvider = void 0;
var _mergeUtils = /*#__PURE__*/require("./merge-utils.js");
class InMemoryProvider {
name;
injectes = [];
allowMerge = true;
secretType = 'Kubricate.InMemory';
supportedStrategies = ['env'];
targetKind = 'Deployment';
config;
constructor(config = {}) {
this.config = config;
}
setInjects(injectes) {
this.injectes = injectes;
}
getTargetPath(strategy) {
if (strategy.kind === 'env') {
const index = strategy.containerIndex ?? 0;
return `spec.template.spec.containers[${index}].env`;
}
throw new Error(`[InMemoryProvider] Unsupported strategy: ${strategy.kind}`);
}
getInjectionPayload() {
return this.injectes.map(inject => ({
name: inject.meta?.targetName,
valueFrom: {
secretKeyRef: {
name: this.config.name ?? 'in-memory',
key: inject.meta?.secretName
}
}
}));
}
getEffectIdentifier(effect) {
return effect.value?.storeName;
}
/**
* Merge provider-level effects into final applyable resources.
* Used to deduplicate (e.g. K8s secret name + ns).
*/
mergeSecrets(effects) {
const merge = (0, _mergeUtils.createMergeHandler)();
return merge(effects);
}
/**
* Prepare the secret value for in-memory storage.
*/
prepare(name, value) {
return [{
secretName: name,
providerName: this.name,
type: 'custom',
value: {
storeName: this.config.name ?? 'in-memory',
rawData: {
[name]: value
}
}
}];
}
}
exports.InMemoryProvider = InMemoryProvider;
//# sourceMappingURL=InMemoryProvider.js.map