UNPKG

openapi-ts-generator

Version:

Based on swagger-ts-generator, this is a type script model generator specifically for services with OpenApi spec documentation.

76 lines (75 loc) 3.58 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); 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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.EndPointsGenerator = void 0; var base_generator_1 = require("./base.generator"); var _ = require("lodash"); var EndPointsGenerator = /** @class */ (function (_super) { __extends(EndPointsGenerator, _super); function EndPointsGenerator(options) { var _this = this; var _a; _this = _super.call(this, options, (_a = options.templates) === null || _a === void 0 ? void 0 : _a.endpoints) || this; _this.GeneratorName = 'EndPointsGenerator'; _this.endpointIdentifierRegex = /[A-z0-9_-]*$/; return _this; } EndPointsGenerator.prototype.generate = function (templateData) { var paths = this.eliminateDupes(templateData); return _super.prototype.generateFile.call(this, "".concat(this.generatorOptions.outputPath, "/endpoints.ts"), { paths: paths }); }; EndPointsGenerator.prototype.eliminateDupes = function (templateData) { var _this = this; var sortedTemplateData = __spreadArray([], templateData.paths, true).sort(function (x, y) { return (x.endpoint.toUpperCase() < y.endpoint.toUpperCase() ? -1 : 1); }); var result = []; sortedTemplateData.forEach(function (val) { val = __assign(__assign({}, val), { tag: _.camelCase(val.tag) }); var dupeIndex = result.findIndex(function (f) { return f.tag === val.tag; }); if (dupeIndex > -1) { var dupeCount = result.filter(function (f) { return f.tag === val.tag; }).length + 1; var endpointIdentifier = (_this.endpointIdentifierRegex.exec(val.endpoint) || [])[0]; result.push(__assign(__assign({}, val), { tag: _.camelCase("".concat(val.tag, "_").concat(endpointIdentifier || dupeCount)) })); } else { result.push(val); } }); return result; }; return EndPointsGenerator; }(base_generator_1.BaseGenerator)); exports.EndPointsGenerator = EndPointsGenerator;