ssm-config-loader
Version:
Load configuration from SSM Parameter Store with local fallback
40 lines • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSingletonConfigGetter = exports.ConfigError = void 0;
const client_ssm_1 = require("@aws-sdk/client-ssm");
const index_1 = require("./index");
class ConfigError extends Error {
constructor(message, wrappedError) {
if (wrappedError instanceof Error) {
message += `: ${wrappedError.message}`;
}
super(message);
this.wrappedError = wrappedError;
}
}
exports.ConfigError = ConfigError;
const createSingletonConfigGetter = (ssm, schema, prefix) => {
let configPromise;
return async () => {
if (configPromise) {
return configPromise;
}
return configPromise = (async () => {
let rawConfig;
try {
rawConfig = await (0, index_1.loadSsmConfig)(new client_ssm_1.SSM({}), prefix);
}
catch (error) {
throw new ConfigError('Config loading failed', error);
}
try {
return schema.parse(rawConfig);
}
catch (error) {
throw new ConfigError('Config validation failed', error);
}
})();
};
};
exports.createSingletonConfigGetter = createSingletonConfigGetter;
//# sourceMappingURL=singleton-config-getter.js.map