Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | 8x 8x 7x 1x 7x 1x 7x 2x 8x 8x 7x 8x 5x 1x 1x 1x 1x 6x | import { ContainerBuilder, YamlFileLoader, JsFileLoader, JsonFileLoader } from 'node-dependency-injection' import path from 'path' import ExtensionConfigurationFileNameException from './exception/ExtensionConfigurationFileNameException' /** * Dependency Injection middleware */ export default class Index { /** * @param {string} serviceFilePath * @param {boolean} compile * @param {[]} compilerPass * @param {*} logger * @return {Index.middleware} */ constructor ({ serviceFilePath, compile = false, compilerPass = [], logger = null }) { this._container = new ContainerBuilder() this.serviceFilePath = serviceFilePath for (let pass of compilerPass) { this._container.addCompilerPass(pass) } if (logger) { this._container.logger = logger } if (compile) { this._container.compile() } } /** * @param {string} serviceFilePath */ set serviceFilePath (serviceFilePath) { const extName = path.extname(serviceFilePath).replace('.', '') const loader = this._getLoader(extName) loader.load(serviceFilePath) } /** * @param extName * @return {YamlFileLoader|JsFileLoader|JsonFileLoader|FileLoader} * @private */ _getLoader (extName) { switch (extName) { case 'yaml': case 'yml': return new YamlFileLoader(this._container) case 'js': return new JsFileLoader(this._container) case 'json': return new JsonFileLoader(this._container) } throw new ExtensionConfigurationFileNameException( `${extName} is not supported`) } /** * @return {ContainerBuilder} */ get container () { return this._container } /** * @return {function} */ middleware () { return (req, res, next) => { req.container = this._container next() } } } |