UNPKG

zcatalyst-cli

Version:

Command Line Tool for CATALYST

209 lines (208 loc) 12 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generate = void 0; const ansi_colors_1 = require("ansi-colors"); const error_1 = __importDefault(require("../error")); const constants_1 = require("../util_modules/constants"); const fs_1 = require("../util_modules/fs"); const logger_1 = require("../util_modules/logger"); const project_1 = require("../util_modules/project"); const js_1 = require("../util_modules/js"); const option_1 = require("../util_modules/option"); function generate(publisher, event) { return __awaiter(this, void 0, void 0, function* () { var _a; const unknownArgs = (0, option_1.getUnknownOpts)([]); if (unknownArgs.length % 2 !== 0) { throw new error_1.default('Unknown options are not provided as key value pairs', { exit: 1, errorId: 'IDX-1', arg: [(0, ansi_colors_1.bold)(publisher), (0, ansi_colors_1.bold)(event), (0, ansi_colors_1.bold)('--key value')] }); } const remotePublisherName = constants_1.SIGNALS_PUBLISHERS[publisher]; if (remotePublisherName === undefined) { throw new error_1.default('Invalid publisher service', { exit: 1, errorId: 'IDX-2', arg: [ (0, ansi_colors_1.bold)(Object.keys(constants_1.SIGNALS_PUBLISHERS) .map((src) => '* ' + src) .join('\n')) ] }); } if (constants_1.SIGNALS_API_NAMES[remotePublisherName] === undefined) { throw new error_1.default('Signal reference is not found for the publisher service provided', { exit: 2 }); } let eventJsonContent = yield fs_1.ASYNC.readFile(constants_1.TEMPLATE.signal_event_data); if (eventJsonContent === undefined) { throw new error_1.default('Signal template json is undefined', { exit: 2 }); } const eventDataPlaceHolder = constants_1.PLACEHOLDER.signal_event_data; const optionMap = unknownArgs.reduce((previousValue, currentValue, currentIndex, optionArr) => { if (currentIndex % 2 === 0) { if (!currentValue.startsWith('--') && currentValue !== '-e' && currentValue !== '-rid' && currentValue !== '--verbose') { const fault = unknownArgs === null || unknownArgs === void 0 ? void 0 : unknownArgs.map((arg) => { if (arg === currentValue) { return (0, ansi_colors_1.red)(arg); } return arg; }).join(' '); throw new error_1.default('Invalid option format detected', { exit: 1, errorId: 'IDX-3', arg: [(0, ansi_colors_1.italic)(fault), (0, ansi_colors_1.bold)('--<option> <value>')] }); } previousValue[currentValue.slice(2)] = optionArr[currentIndex + 1]; } return previousValue; }, {}); let data = {}; if (publisher !== 'custom') { const publisherModule = yield (_a = '../event_generate/' + (publisher === 'authentication' ? 'user' : publisher), Promise.resolve().then(() => __importStar(require(_a)))); data = yield publisherModule.getData(optionMap); if (publisher === 'datastore') { data = Object.assign(Object.assign({}, data), { table_details: { table_id: publisherModule.sourceId, table_name: 'Default' } }); } if (publisher === 'authentication' && event !== 'user_signedup') { data = data.user_details; } } Object.keys(eventDataPlaceHolder).forEach((placeholderKey) => { switch (placeholderKey) { case 'version': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), 1 + ''); break; case 'org_id': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), (0, project_1.getEnvId)() + ''); break; case 'project_id': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), (0, project_1.getProjectId)() + ''); break; case 'project_name': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), (0, project_1.getProjectName)() + ''); break; case 'environment': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), (0, project_1.getEnvName)() + ''); break; case 'rule_id': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), js_1.JS.randomNumber(18) + ''); break; case 'uuid': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), js_1.JS.randomString(8) + '-' + js_1.JS.randomString(4) + '-' + js_1.JS.randomString(4) + '-' + js_1.JS.randomString(4) + '-' + js_1.JS.randomString(11)); break; case 'target_id': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), js_1.JS.randomNumber(8) + ''); break; case 'signal_id': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), js_1.JS.randomNumber(17) + ''); break; case 'signal_api_name': if (publisher !== 'custom') { const eventRefArr = constants_1.SIGNALS_API_NAMES[remotePublisherName]; const remoteRefevent = event; (0, logger_1.debug)(`event name provided is : ${remoteRefevent}`); const indexOfevent = eventRefArr.indexOf(remoteRefevent); if (indexOfevent < 0) { const availableEvents = eventRefArr .map((act) => { return '* ' + act; }) .join('\n'); throw new error_1.default('Event name incompatible with the publisher service: ' + eventRefArr, { exit: 1, errorId: 'IDX-4', arg: [ (0, ansi_colors_1.bold)(event), ansi_colors_1.bold.red('X'), (0, ansi_colors_1.bold)(publisher), (0, ansi_colors_1.bold)(availableEvents) ] }); } event = constants_1.SIGNALS_API_NAMES[remotePublisherName][indexOfevent]; } eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), event); break; case 'attempt': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), 1 + ''); break; case 'source': const publisherDetails = `publisher_id:${js_1.JS.randomNumber(17)}` + `/service:${getPublisherType(publisher)}${publisher === 'custom' ? '' : publisher + '/account:' + js_1.JS.randomNumber(8)}`; eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), publisherDetails); break; case 'time_in_ms': eventJsonContent = eventJsonContent === null || eventJsonContent === void 0 ? void 0 : eventJsonContent.replace(new RegExp(eventDataPlaceHolder[placeholderKey], 'g'), Date.now().toString()); break; default: break; } }); eventJsonContent = eventJsonContent.replace(new RegExp(constants_1.PLACEHOLDER.signal_event_data.data, 'g'), JSON.stringify(data)); const jsonContent = JSON.parse(eventJsonContent); return jsonContent; }); } exports.generate = generate; function getPublisherType(publisher) { for (const [category, services] of Object.entries(constants_1.SIGNALS_PUBLISHERS_TYPE)) { if (services.includes(publisher)) { return category; } } return null; }