openapi-client-sdk-loader
Version:
An Open API loader for webpack. Compiles yaml to client sdk.
55 lines (41 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = loader;
exports.raw = void 0;
var _path = _interopRequireDefault(require("path"));
var _loaderUtils = require("loader-utils");
var _options = require("./options");
var _format = _interopRequireDefault(require("./format"));
var _templates = _interopRequireDefault(require("./templates"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const raw = true;
exports.raw = raw;
function loader(source) {
const callback = this.async();
const options = (0, _options.normalize)((0, _loaderUtils.getOptions)(this));
const validExts = ['.yml', '.yaml'];
if (!validExts.includes(_path.default.extname(this.resourcePath))) {
return callback(null, source);
}
try {
(0, _options.validate)(options);
} catch (error) {
return callback(error);
}
return options.parser.bundle(this.resourcePath, (error, api) => {
if (error) {
if (options.skipInvalid) {
return callback(null, source);
}
return callback(error);
}
options.parser.$refs.paths().forEach(filePath => {
if (filePath !== this.resourcePath) {
this.addDependency(filePath);
}
});
return options.compiler(api, options).then(result => (0, _templates.default)(result, options)).then(result => callback(null, (0, _format.default)(result, options))).catch(compilationError => callback(compilationError));
});
}