UNPKG

ivr-tester-cli

Version:

CLI for automated testing of IVR call flows

73 lines (72 loc) 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadConfigOption = void 0; const validateJsonConfig_1 = require("./json/validateJsonConfig"); const MODULE_PREFIX = "ivr-tester-transcriber-"; function validateTwilioClientAuth(env) { const accountSid = env.TWILIO_ACCOUNT_SID; const authToken = env.TWILIO_AUTH_TOKEN; let error; if (!accountSid && authToken) { error = new Error("TWILIO_ACCOUNT_SID environment variable must be set"); } if (accountSid && !authToken) { error = new Error("TWILIO_AUTH_TOKEN environment variable must be set"); } if (!accountSid && !authToken) { error = new Error("TWILIO_ACCOUNT_SID and TWILIO_AUTH_TOKEN environment variables must be set"); } return { error, value: error ? undefined : { accountSid, authToken, }, }; } function loadConfigOption(options, jsonFileReader, moduleRequire) { function loadTranscriber(transcriber) { const transcriberModuleName = `${MODULE_PREFIX}${transcriber.name}`; let factory; try { factory = moduleRequire(transcriberModuleName); } catch (error) { if (error.code === "MODULE_NOT_FOUND") { throw new Error(`Cannot find module '${error.moduleName}' for the transcriber '${transcriber.name}'`); } throw error; } if (typeof factory.default !== "function") { throw new Error(`Transcriber loaded does not have a default export '${transcriberModuleName}'. Contact the author of this package`); } return factory.default(transcriber.options); } function convert(configuration) { const configResult = validateJsonConfig_1.validateConfig(configuration); if (configResult.error) { throw new Error(configResult.error.message); } const authResult = validateTwilioClientAuth(process.env); if (authResult.error) { throw new Error(authResult.error.message); } return { transcriber: loadTranscriber(configResult.config.transcriber), localServerPort: configResult.config.localServerPort, recording: configResult.config.recording, twilioAuth: authResult.value, }; } const configPath = options.configPath; const jsonContent = jsonFileReader(configPath); try { return convert(jsonContent); } catch (error) { throw new Error(`Invalid config '${configPath}. Reason: ${error.message}`); } } exports.loadConfigOption = loadConfigOption;