warden/dist/parser.js
2025-02-26 16:55:25 +01:00

48 lines
1.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SecretInput = void 0;
exports.parseSecretInput = parseSecretInput;
const validators_1 = require("./validators");
class SecretInput {
constructor(id, outputEnvName) {
this.id = id;
this.outputEnvName = outputEnvName;
}
}
exports.SecretInput = SecretInput;
class ParsingError extends Error {
constructor(message) {
super(message);
}
}
function parseSecretInput(secrets) {
const results = secrets.map((secret) => {
try {
if (secret.indexOf(">") === -1) {
throw new ParsingError(`Expected format: <secretGuid> > <environmentVariableName>`);
}
let [id, envName] = secret.split(">", 2);
id = id.trim();
envName = envName.trim();
if (!(0, validators_1.isValidGuid)(id)) {
throw new ParsingError(`Id is not a valid GUID`);
}
if (!(0, validators_1.isValidEnvName)(envName)) {
throw new ParsingError(`Environment variable name is not valid`);
}
return new SecretInput(id, envName);
}
catch (e) {
const message = `Error occurred when attempting to parse ${secret}`;
if (e instanceof ParsingError) {
throw TypeError(`${message}. ${e.message}`);
}
throw TypeError(message);
}
});
if (!(0, validators_1.isUniqueEnvNames)(results)) {
throw TypeError("Environmental variable names provided are not unique, names must be unique");
}
return results;
}