spinjs
Version:
[](https://gitter.im/sysgears/spinjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [;
var path = require("path");
var SwaggerWebpackPlugin = (function () {
function SwaggerWebpackPlugin(builder, spin) {
var pkgJson = builder.require('./package.json');
this._pkgJson = pkgJson;
this._config = spin.createConfig(builder, 'swaggerJsDoc', {
swaggerDefinition: {
openapi: '3.0.0',
info: { title: pkgJson.name, version: pkgJson.version, description: pkgJson.description }
},
apis: ['!(node_modules)/**/*.js', '!(node_modules)/**/*.ts']
});
this._builder = builder;
this._bail = !spin.dev;
this._swaggerJsDoc = builder.require('swagger-jsdoc');
this._VirtualModules = builder.require('webpack-virtual-modules');
}
SwaggerWebpackPlugin.prototype.apply = function (compiler) {
var _this = this;
var _a;
var swaggerJsonPath = path.join(this._builder.projectRoot, 'node_modules', 'swagger.json');
var pkgJson = this._pkgJson;
var emptyDoc = {
openapi: '3.0.0',
info: { title: pkgJson.name, version: pkgJson.version, description: pkgJson.description }
};
var virtualModules = new this._VirtualModules((_a = {},
_a[swaggerJsonPath] = JSON.stringify(emptyDoc),
_a));
virtualModules.apply(compiler);
var pluginName = 'SwaggerJSDocPlugin';
compiler.hooks.compilation.tap(pluginName, function (compilation) {
compilation.hooks.normalModuleLoader.tap(pluginName, function (_, module) {
if (module.resource === swaggerJsonPath) {
var result = void 0;
var error = void 0;
try {
result = _this._swaggerJsDoc(_this._config);
}
catch (e) {
error = e;
}
module.loaders.push({
loader: require.resolve('./virtualModuleLoader'),
options: { result: result, error: error }
});
}
});
});
};
return SwaggerWebpackPlugin;
}());
exports.default = SwaggerWebpackPlugin;
//# sourceMappingURL=SwaggerWebpackPlugin.js.map