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
JavaScript
;
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;