1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.waitChunks = undefined;
|
7 |
|
8 | var _regenerator = require('babel-runtime/regenerator');
|
9 |
|
10 | var _regenerator2 = _interopRequireDefault(_regenerator);
|
11 |
|
12 | var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
|
13 |
|
14 | var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
|
15 |
|
16 | var _promise = require('babel-runtime/core-js/promise');
|
17 |
|
18 | var _promise2 = _interopRequireDefault(_promise);
|
19 |
|
20 | var waitChunks = exports.waitChunks = function () {
|
21 | var _ref2 = (0, _asyncToGenerator3.default)( _regenerator2.default.mark(function _callee(chunksPath, timeout) {
|
22 | var chunksStatsJson;
|
23 | return _regenerator2.default.wrap(function _callee$(_context) {
|
24 | while (1) {
|
25 | switch (_context.prev = _context.next) {
|
26 | case 0:
|
27 | _context.next = 2;
|
28 | return waitWatchFile({
|
29 | path: chunksPath,
|
30 | onChange: function onChange(err, stats) {
|
31 | if (err) {
|
32 | throw new Error('Unable to load chunks');
|
33 | }
|
34 | chunksStats = parse(stats);
|
35 | },
|
36 |
|
37 | timeout: timeout
|
38 | });
|
39 |
|
40 | case 2:
|
41 | chunksStatsJson = _context.sent;
|
42 |
|
43 |
|
44 | chunksStats = parse(chunksStatsJson);
|
45 |
|
46 | return _context.abrupt('return', chunksStats);
|
47 |
|
48 | case 5:
|
49 | case 'end':
|
50 | return _context.stop();
|
51 | }
|
52 | }
|
53 | }, _callee, this);
|
54 | }));
|
55 |
|
56 | return function waitChunks(_x2, _x3) {
|
57 | return _ref2.apply(this, arguments);
|
58 | };
|
59 | }();
|
60 |
|
61 | exports.default = getChunks;
|
62 | exports.waitWatchFile = waitWatchFile;
|
63 |
|
64 | var _fs = require('fs');
|
65 |
|
66 | var _fs2 = _interopRequireDefault(_fs);
|
67 |
|
68 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
69 |
|
70 | (function () {
|
71 | var enterModule = require('react-hot-loader').enterModule;
|
72 |
|
73 | enterModule && enterModule(module);
|
74 | })();
|
75 |
|
76 | var chunksStats = [];
|
77 |
|
78 | function getChunks() {
|
79 | return chunksStats;
|
80 | }
|
81 |
|
82 | function waitWatchFile() {
|
83 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
84 | path = _ref.path,
|
85 | onChange = _ref.onChange,
|
86 | _ref$timeout = _ref.timeout,
|
87 | timeout = _ref$timeout === undefined ? 60000 : _ref$timeout;
|
88 |
|
89 | function watch(loaded, timeleft) {
|
90 | return new _promise2.default(function (resolve, reject) {
|
91 | if (timeleft < 0) {
|
92 | loaded = true;
|
93 | return reject(new Error('waitFile: timeout (' + timeout + 'ms): ' + path));
|
94 | }
|
95 |
|
96 |
|
97 | if (!loaded) {
|
98 | _fs2.default.access(path, _fs2.default.constants.R_OK, function (err) {
|
99 | if (!err && !loaded) {
|
100 | _fs2.default.readFile(path, 'utf8', function (err2, data) {
|
101 | if (err2) return reject(err2);
|
102 | loaded = true;
|
103 | resolve(data);
|
104 | });
|
105 | }
|
106 | });
|
107 | }
|
108 |
|
109 | if (!__DEVELOPMENT__) {
|
110 | return;
|
111 | }
|
112 |
|
113 | try {
|
114 | var watcher = _fs2.default.watch(path, 'utf8', function (eventType) {
|
115 | if (eventType !== 'change') return;
|
116 | _fs2.default.readFile(path, 'utf8', function (err2, data) {
|
117 | if (err2) return onChange(err2);
|
118 | loaded = true;
|
119 | onChange(null, data);
|
120 | });
|
121 | });
|
122 |
|
123 | setTimeout(function () {
|
124 | watcher.close();
|
125 | if (!loaded) {
|
126 | loaded = true;
|
127 | reject(new Error('waitFile: timeout (' + timeout + 'ms): ' + path));
|
128 | }
|
129 | }, timeleft);
|
130 | } catch (err) {
|
131 | if (err.code === 'ENOENT') {
|
132 | return setTimeout(function () {
|
133 | return resolve(watch(loaded, timeleft - 100));
|
134 | }, 100);
|
135 | }
|
136 | loaded = true;
|
137 | reject(err);
|
138 | }
|
139 | });
|
140 | }
|
141 |
|
142 | return watch(false, timeout);
|
143 | }
|
144 |
|
145 | function parse(json) {
|
146 | try {
|
147 | return JSON.parse(json);
|
148 | } catch (e) {
|
149 | return chunksStats;
|
150 | }
|
151 | }
|
152 |
|
153 | ;
|
154 |
|
155 | (function () {
|
156 | var reactHotLoader = require('react-hot-loader').default;
|
157 |
|
158 | var leaveModule = require('react-hot-loader').leaveModule;
|
159 |
|
160 | if (!reactHotLoader) {
|
161 | return;
|
162 | }
|
163 |
|
164 | reactHotLoader.register(chunksStats, 'chunksStats', '../../src/helpers/getChunks.js');
|
165 | reactHotLoader.register(getChunks, 'getChunks', '../../src/helpers/getChunks.js');
|
166 | reactHotLoader.register(waitWatchFile, 'waitWatchFile', '../../src/helpers/getChunks.js');
|
167 | reactHotLoader.register(parse, 'parse', '../../src/helpers/getChunks.js');
|
168 | reactHotLoader.register(waitChunks, 'waitChunks', '../../src/helpers/getChunks.js');
|
169 | leaveModule(module);
|
170 | })();
|
171 |
|
172 | ;
|
173 |
|
\ | No newline at end of file |