| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 'use strict';
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- var _map = require('babel-runtime/core-js/map');
- var _map2 = _interopRequireDefault(_map);
- var _keys = require('babel-runtime/core-js/object/keys');
- var _keys2 = _interopRequireDefault(_keys);
- var _get2 = require('lodash/get');
- var _get3 = _interopRequireDefault(_get2);
- exports.default = createWatchCompiler;
- var _Watching = require('webpack/lib/Watching');
- var _Watching2 = _interopRequireDefault(_Watching);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var noop = function noop() {
- return undefined;
- };
- function createWatchCompiler(compiler, watchOptions) {
- // this ugly statement to create a watch compiler is unfortunately necessary,
- // as webpack clears the file timestamps with the official compiler.watch()
- var createWatcher = function createWatcher() {
- return new _Watching2.default(compiler, watchOptions, noop);
- };
- var watchCompiler = null;
- return {
- watch: function watch() {
- if (watchCompiler === null) {
- watchCompiler = createWatcher();
- } else {
- var times = compiler.watchFileSystem.watcher.getTimes();
- // check if we can store some collected file timestamps
- // the non-empty check is necessary as the times will be reseted after .close()
- // and we don't want to reset already existing timestamps
- if ((0, _keys2.default)(times).length > 0) {
- var timesMap = new _map2.default((0, _keys2.default)(times).map(function (key) {
- return [key, times[key]];
- }));
- // set already collected file timestamps to cache compiled files
- // webpack will do this only after a file change, but that will not happen when we add or delete files
- // and this means that we have to test the whole test suite again ...
- compiler.fileTimestamps = timesMap; // eslint-disable-line no-param-reassign
- compiler.contextTimestamps = timesMap; // eslint-disable-line no-param-reassign
- }
- watchCompiler.close(function () {
- watchCompiler = createWatcher();
- });
- }
- },
- pause: function pause() {
- if (watchCompiler !== null && watchCompiler.watcher) {
- watchCompiler.watcher.pause();
- }
- },
- getWatchOptions: function getWatchOptions() {
- // 200 is the default value by webpack
- return (0, _get3.default)(watchCompiler, 'watchOptions', { aggregateTimeout: 200 });
- }
- };
- }
|