UNPKG

analytics-sdk-generator

Version:

Generates an SDK from an analytics descriptor file

97 lines 4.51 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var yaml_1 = __importDefault(require("yaml")); var typescript_1 = __importStar(require("typescript")); var fs_1 = __importDefault(require("fs")); var path_1 = __importDefault(require("path")); var TrackingPlan_1 = __importDefault(require("../TrackingPlan")); var Transliterator_1 = __importDefault(require("../Transliterator")); var TransliterateCommand = /** @class */ (function () { function TransliterateCommand(args) { this.args = __assign(__assign({}, args), { methodsAsync: !!args.methodsAsync }); } TransliterateCommand.prototype.run = function () { var options = { methodsAsync: this.args.methodsAsync }; if (this.args.implementation) { var implementationSplit = this.args.implementation.split(path_1.default.sep); if (implementationSplit[0] == '.') { implementationSplit.shift(); } options['implementation'] = "../".repeat(this.args.output.split(path_1.default.sep).length - 1) + implementationSplit.join(path_1.default.sep); } var plan = this.readTrackingPlan(); var transliterator = new Transliterator_1.default(options); var result = transliterator.transliterate(plan); this.write(result); }; TransliterateCommand.prototype.readTrackingPlan = function () { var contents = yaml_1.default.parse(fs_1.default.readFileSync(this.args.schema_path).toString('utf-8')); return new TrackingPlan_1.default(contents); }; TransliterateCommand.prototype.groupByPath = function (pathnodes) { var _this = this; return pathnodes.map(function (pn) { pn.path.unshift(_this.args.output); return { path: path_1.default.join.apply(path_1.default, pn.path) + '.ts', nodes: pn.nodes }; }).reduce(function (accumulated, current) { var nodes = accumulated[current.path] || []; var newNodes = nodes.concat(current.nodes); accumulated[current.path] = newNodes; return accumulated; }, {}); }; TransliterateCommand.prototype.write = function (pathnodes) { var paths = this.groupByPath(pathnodes); for (var filepath in paths) { var nodes = typescript_1.factory.createNodeArray(paths[filepath]); var sourceFile = typescript_1.default.createSourceFile(filepath, "", typescript_1.default.ScriptTarget.ESNext, true, typescript_1.default.ScriptKind.TS); var printer = typescript_1.default.createPrinter({ omitTrailingSemicolon: true }); var outputFile = printer.printList(typescript_1.default.ListFormat.MultiLine, nodes, sourceFile); fs_1.default.mkdirSync(path_1.default.dirname(filepath), { recursive: true }); fs_1.default.writeFileSync(filepath, outputFile); } }; return TransliterateCommand; }()); exports.default = TransliterateCommand; //# sourceMappingURL=TransliterateCommand.js.map