gen-api-js
Version:
根据线上接口文档轻量化简易一键批量生成模块化 JavaScript/TypeScript API接口
105 lines (104 loc) • 5.01 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
var _require = require("quicktype-core"),
quicktype = _require.quicktype,
InputData = _require.InputData,
JSONSchemaInput = _require.JSONSchemaInput,
TypeScriptTargetLanguage = _require.TypeScriptTargetLanguage,
TypeScriptRenderer = _require.TypeScriptRenderer,
getOptionValues = _require.getOptionValues,
stringEscape = _require.stringEscape,
tsFlowOptions = _require.tsFlowOptions,
FetchingJSONSchemaStore = _require.FetchingJSONSchemaStore;
var MyTypeScriptTargetLanguage = /*#__PURE__*/function (_TypeScriptTargetLang) {
function MyTypeScriptTargetLanguage() {
(0, _classCallCheck2.default)(this, MyTypeScriptTargetLanguage);
return _callSuper(this, MyTypeScriptTargetLanguage, arguments);
}
(0, _inherits2.default)(MyTypeScriptTargetLanguage, _TypeScriptTargetLang);
return (0, _createClass2.default)(MyTypeScriptTargetLanguage, [{
key: "makeRenderer",
value: function makeRenderer(renderContext, untypedOptionValues) {
return new MyTypeScriptRenderer(this, renderContext, getOptionValues(tsFlowOptions, untypedOptionValues));
}
}]);
}(TypeScriptTargetLanguage);
var MyTypeScriptRenderer = /*#__PURE__*/function (_TypeScriptRenderer) {
function MyTypeScriptRenderer() {
(0, _classCallCheck2.default)(this, MyTypeScriptRenderer);
return _callSuper(this, MyTypeScriptRenderer, arguments);
}
(0, _inherits2.default)(MyTypeScriptRenderer, _TypeScriptRenderer);
return (0, _createClass2.default)(MyTypeScriptRenderer, [{
key: "emitEnum",
value: function emitEnum(e, enumName) {
var _this = this;
this.emitDescription(this.descriptionForType(e));
this.emitLine(["export type ", enumName, " = "]);
this.forEachEnumCase(e, "none", function (name, jsonName, position) {
var suffix = position === "last" || position === "only" ? ";" : " | ";
_this.indent(function () {
return _this.emitLine("\"".concat(stringEscape(jsonName), "\""), suffix);
});
});
}
}]);
}(TypeScriptRenderer);
function quicktypeJSONSchema(_x, _x2) {
return _quicktypeJSONSchema.apply(this, arguments);
}
function _quicktypeJSONSchema() {
_quicktypeJSONSchema = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(typeName, jsonSchemaString) {
var schemaInput, inputData, _yield$quicktype, lines;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (jsonSchemaString) {
_context.next = 2;
break;
}
return _context.abrupt("return", '');
case 2:
schemaInput = new JSONSchemaInput(new FetchingJSONSchemaStore()); // We could add multiple schemas for multiple types,
// but here we're just making one type from JSON schema.
_context.next = 5;
return schemaInput.addSource({
name: typeName,
schema: jsonSchemaString
});
case 5:
inputData = new InputData();
inputData.addInput(schemaInput);
_context.next = 9;
return quicktype({
inputData: inputData,
"export": true,
lang: new MyTypeScriptTargetLanguage(),
rendererOptions: {
"just-types": true
}
});
case 9:
_yield$quicktype = _context.sent;
lines = _yield$quicktype.lines;
return _context.abrupt("return", lines.join("\n"));
case 12:
case "end":
return _context.stop();
}
}, _callee);
}));
return _quicktypeJSONSchema.apply(this, arguments);
}
module.exports = {
jsonSchemaToTs: quicktypeJSONSchema
};
;