UNPKG

@pundle/chunk-generator-js

Version:
119 lines (91 loc) 5.69 kB
"use strict"; var _sbFs = _interopRequireDefault(require("sb-fs")); var _path = _interopRequireDefault(require("path")); var _sourceMap = require("source-map"); var _api = require("@pundle/api"); var Helpers = _interopRequireWildcard(require("./helpers")); var _package = _interopRequireDefault(require("../package.json")); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function createComponent() { const wrapperNode = _sbFs.default.readFile(_path.default.join(__dirname, 'wrapper', 'node.js'), 'utf8'); const wrapperBrowser = _sbFs.default.readFile(_path.default.join(__dirname, 'wrapper', 'browser.js'), 'utf8'); return (0, _api.createChunkGenerator)({ name: _package.default.name, version: _package.default.version, callback({ chunk, job, context }) { return _asyncToGenerator(function* () { if (chunk.format !== 'js') return null; const sourceMap = new _sourceMap.SourceMapGenerator({ skipValidation: true }); const sourceMapPath = context.getPublicPath(_objectSpread({}, chunk, { format: `${chunk.format}.map` })); const _Helpers$getContentFo = Helpers.getContentForOutput(chunk, job), files = _Helpers$getContentFo.files; const contents = [';(function(){', yield context.config.target === 'browser' ? wrapperBrowser : wrapperNode, `sbPundleChunkLoading(${JSON.stringify(context.getPublicPath(chunk))});`]; let sourceMapOffset = Helpers.getLinesCount(contents.join('\n')) + 1; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { const file = _step.value; const fileContents = `sbPundleModuleRegister(${JSON.stringify((0, _api.getUniqueHash)(file))}, function(exports, require, module, __filename, __dirname) {\n${file.contents.toString()}\n});`; if (sourceMapPath) { if (file.sourceMap) { yield Helpers.mergeSourceMap(file.sourceMap, sourceMap, sourceMapOffset, file.filePath); } sourceMapOffset += Helpers.getLinesCount(fileContents); } contents.push(fileContents); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } if (chunk.filePath && chunk.root) { const chunkEntryId = (0, _api.getUniqueHash)(chunk); contents.push(`${context.config.target === 'node' ? 'module.exports = ' : ''}sbPundleModuleGenerate('$root')(${JSON.stringify(chunkEntryId)})`); } contents.push(`sbPundleChunkLoaded(${JSON.stringify(context.getPublicPath(chunk))});`); contents.push('})();'); const output = { contents: '', sourceMap: null, format: chunk.format }; const publicPath = context.getPublicPath(chunk); if (sourceMapPath) { output.sourceMap = { contents: JSON.stringify(sourceMap.toJSON()), filePath: sourceMapPath }; contents.push(`//# sourceMappingURL=${_path.default.posix.relative(_path.default.dirname(publicPath), sourceMapPath)}`); } output.contents = contents.join('\n'); return output; })(); } }); } module.exports = createComponent;