UNPKG

spinjs

Version:

[![Join the chat at https://gitter.im/sysgears/spinjs](https://badges.gitter.im/sysgears/spinjs.svg)](https://gitter.im/sysgears/spinjs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![npm version](https://badge.fury.io/js/spi

56 lines 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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