analytics-sdk-generator
Version:
Generates an SDK from an analytics descriptor file
97 lines • 4.51 kB
JavaScript
;
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