UNPKG

deep-package-manager

Version:
126 lines (97 loc) 2.95 kB
/** * Created by CCristi <ccovali@mitocgroup.com> on 2/23/16. */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.RootAssetsDriver = undefined; var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _os = require('os'); var _os2 = _interopRequireDefault(_os); var _gracefulFs = require('graceful-fs'); var _gracefulFs2 = _interopRequireDefault(_gracefulFs); var _AbstractDriver = require('./AbstractDriver'); var _FileWalker = require('../../Helpers/FileWalker'); var _UnknownAssetException = require('./Exception/UnknownAssetException'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Root Assets Driver */ class RootAssetsDriver extends _AbstractDriver.AbstractDriver { /** * @param {Object} microservicesConfig */ constructor(microservicesConfig) { super(); this._microservicesConfig = microservicesConfig; } /** * @param {String} htmlContent * @returns {*} */ inject(htmlContent) { let scriptContent = this._assetsPaths.map(this._buildAssetTag.bind(this)).join(_os2.default.EOL); return this.replaceTags(htmlContent, RootAssetsDriver.TAG_SUFFIX, scriptContent); } /** * @returns {Array} * @private */ get _assetsPaths() { let files = []; for (let msIdentifier in this._microservicesConfig) { if (!this._microservicesConfig.hasOwnProperty(msIdentifier)) { continue; } let msConfig = this._microservicesConfig[msIdentifier]; let rootAssetsPath = _path2.default.join(msConfig.autoload.frontend, RootAssetsDriver.ROOT_ASSETS_FOLDER); if (!_gracefulFs2.default.existsSync(rootAssetsPath)) { continue; } let msRootAssets = new _FileWalker.FileWalker().walk(rootAssetsPath, file => { return RootAssetsDriver.ASSET_REGEXP.test(file); }); files = files.concat(msRootAssets.map(file => { return _path2.default.join(_path2.default.sep, msConfig.identifier, RootAssetsDriver.ROOT_ASSETS_FOLDER, file.substr(rootAssetsPath.length)); })); } return files; } /** * @param {String} file * @returns {*} * @private */ _buildAssetTag(file) { let matches = file.match(RootAssetsDriver.ASSET_REGEXP); switch (matches[1]) { case 'js': return `<script type="text/javascript" src="${file}"></script>`; case 'css': return `<link rel="stylesheet" href="${file}"/>`; } throw new _UnknownAssetException.UnknownAssetException(file); } /** * @returns {RegExp} */ static get ASSET_REGEXP() { return (/^(?:.*[\/|\\])?(?:[^\/\\]+)\.(js|css)$/ ); } /** * @returns {string} */ static get ROOT_ASSETS_FOLDER() { return 'root_assets'; } /** * @returns {string} */ static get TAG_SUFFIX() { return 'root-assets'; } } exports.RootAssetsDriver = RootAssetsDriver;