UNPKG

every-plugin

Version:
48 lines (46 loc) 1.78 kB
import { PluginRuntimeError } from "../errors.mjs"; import * as z$1 from "zod"; import { Context, Effect } from "effect"; //#region src/runtime/services/secrets.service.ts const configSchema = z$1.object({ secrets: z$1.record(z$1.string(), z$1.unknown()) }).passthrough(); var SecretsConfigTag = class extends Context.Tag("SecretsConfig")() {}; var SecretsService = class extends Effect.Service()("SecretsService", { effect: Effect.gen(function* () { const secrets = yield* SecretsConfigTag; const hydrateValue = (value) => { if (typeof value === "string") { let result = value; for (const [key, secretValue] of Object.entries(secrets)) { const pattern = new RegExp(`{{${key}}}`, "g"); result = result.replace(pattern, String(secretValue)); } return result; } if (Array.isArray(value)) return value.map(hydrateValue); if (value && typeof value === "object") { if (value.constructor === Object || value.constructor === void 0) { const hydrated = {}; for (const [key, val] of Object.entries(value)) hydrated[key] = hydrateValue(val); return hydrated; } const hydrated = Object.create(Object.getPrototypeOf(value)); for (const [key, val] of Object.entries(value)) hydrated[key] = hydrateValue(val); return hydrated; } return value; }; return { hydrateSecrets: (config) => Effect.gen(function* () { const parseResult = configSchema.parse(config); try { return hydrateValue(parseResult); } catch (error) { return yield* Effect.fail(new PluginRuntimeError({ operation: "hydrate-secrets", cause: error instanceof Error ? error : new Error(String(error)), retryable: false })); } }) }; }) }) {}; //#endregion export { SecretsConfigTag, SecretsService }; //# sourceMappingURL=secrets.service.mjs.map