1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.createWorkerFarm = createWorkerFarm;
|
7 | Object.defineProperty(exports, "Asset", {
|
8 | enumerable: true,
|
9 | get: function () {
|
10 | return _InternalAsset.default;
|
11 | }
|
12 | });
|
13 | exports.BuildError = exports.default = exports.INTERNAL_RESOLVE = exports.INTERNAL_TRANSFORM = void 0;
|
14 |
|
15 | var _assert = _interopRequireDefault(require("assert"));
|
16 |
|
17 | var _diagnostic = _interopRequireWildcard(require("@parcel/diagnostic"));
|
18 |
|
19 | var _Dependency = require("./Dependency");
|
20 |
|
21 | var _Environment = require("./Environment");
|
22 |
|
23 | var _Asset = require("./public/Asset");
|
24 |
|
25 | var _BundleGraph = _interopRequireDefault(require("./public/BundleGraph"));
|
26 |
|
27 | var _BundlerRunner = _interopRequireDefault(require("./BundlerRunner"));
|
28 |
|
29 | var _workers = _interopRequireDefault(require("@parcel/workers"));
|
30 |
|
31 | var _nullthrows = _interopRequireDefault(require("nullthrows"));
|
32 |
|
33 | var _path = _interopRequireDefault(require("path"));
|
34 |
|
35 | var _AssetGraphBuilder = _interopRequireDefault(require("./AssetGraphBuilder"));
|
36 |
|
37 | var _utils = require("./utils");
|
38 |
|
39 | var _PackagerRunner = _interopRequireDefault(require("./PackagerRunner"));
|
40 |
|
41 | var _loadParcelConfig = _interopRequireDefault(require("./loadParcelConfig"));
|
42 |
|
43 | var _ReporterRunner = _interopRequireWildcard(require("./ReporterRunner"));
|
44 |
|
45 | var _dumpGraphToGraphViz = _interopRequireDefault(require("./dumpGraphToGraphViz"));
|
46 |
|
47 | var _resolveOptions = _interopRequireDefault(require("./resolveOptions"));
|
48 |
|
49 | var _events2 = require("@parcel/events");
|
50 |
|
51 | var _cache = require("@parcel/cache");
|
52 |
|
53 | var _cjsPonyfill = require("abortcontroller-polyfill/dist/cjs-ponyfill");
|
54 |
|
55 | var _utils2 = require("@parcel/utils");
|
56 |
|
57 | var _InternalAsset = _interopRequireDefault(require("./InternalAsset"));
|
58 |
|
59 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
60 |
|
61 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
62 |
|
63 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
64 |
|
65 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
66 |
|
67 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
68 |
|
69 | 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; }
|
70 |
|
71 | function _classPrivateFieldGet(receiver, privateMap) { var descriptor = privateMap.get(receiver); if (!descriptor) { throw new TypeError("attempted to get private field on non-instance"); } if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
72 |
|
73 | function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = privateMap.get(receiver); if (!descriptor) { throw new TypeError("attempted to set private field on non-instance"); } if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } return value; }
|
74 |
|
75 | (0, _utils.registerCoreWithSerializer)();
|
76 | const INTERNAL_TRANSFORM = Symbol('internal_transform');
|
77 | exports.INTERNAL_TRANSFORM = INTERNAL_TRANSFORM;
|
78 | const INTERNAL_RESOLVE = Symbol('internal_resolve');
|
79 | exports.INTERNAL_RESOLVE = INTERNAL_RESOLVE;
|
80 |
|
81 | class Parcel {
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 |
|
94 |
|
95 |
|
96 | constructor(options) {
|
97 | _assetGraphBuilder.set(this, {
|
98 | writable: true,
|
99 | value: void 0
|
100 | });
|
101 |
|
102 | _runtimesAssetGraphBuilder.set(this, {
|
103 | writable: true,
|
104 | value: void 0
|
105 | });
|
106 |
|
107 | _bundlerRunner.set(this, {
|
108 | writable: true,
|
109 | value: void 0
|
110 | });
|
111 |
|
112 | _packagerRunner.set(this, {
|
113 | writable: true,
|
114 | value: void 0
|
115 | });
|
116 |
|
117 | _config.set(this, {
|
118 | writable: true,
|
119 | value: void 0
|
120 | });
|
121 |
|
122 | _farm.set(this, {
|
123 | writable: true,
|
124 | value: void 0
|
125 | });
|
126 |
|
127 | _initialized.set(this, {
|
128 | writable: true,
|
129 | value: false
|
130 | });
|
131 |
|
132 | _initialOptions.set(this, {
|
133 | writable: true,
|
134 | value: void 0
|
135 | });
|
136 |
|
137 | _reporterRunner.set(this, {
|
138 | writable: true,
|
139 | value: void 0
|
140 | });
|
141 |
|
142 | _resolvedOptions.set(this, {
|
143 | writable: true,
|
144 | value: null
|
145 | });
|
146 |
|
147 | _runPackage.set(this, {
|
148 | writable: true,
|
149 | value: void 0
|
150 | });
|
151 |
|
152 | _watchAbortController.set(this, {
|
153 | writable: true,
|
154 | value: void 0
|
155 | });
|
156 |
|
157 | _watchQueue.set(this, {
|
158 | writable: true,
|
159 | value: new _utils2.PromiseQueue({
|
160 | maxConcurrent: 1
|
161 | })
|
162 | });
|
163 |
|
164 | _watchEvents.set(this, {
|
165 | writable: true,
|
166 | value: new _events2.ValueEmitter()
|
167 | });
|
168 |
|
169 | _watcherSubscription.set(this, {
|
170 | writable: true,
|
171 | value: void 0
|
172 | });
|
173 |
|
174 | _watcherCount.set(this, {
|
175 | writable: true,
|
176 | value: 0
|
177 | });
|
178 |
|
179 | _classPrivateFieldSet(this, _initialOptions, options);
|
180 | }
|
181 |
|
182 | async init() {
|
183 | var _classPrivateFieldGet2;
|
184 |
|
185 | if (_classPrivateFieldGet(this, _initialized)) {
|
186 | return;
|
187 | }
|
188 |
|
189 | let resolvedOptions = await (0, _resolveOptions.default)(_classPrivateFieldGet(this, _initialOptions));
|
190 |
|
191 | _classPrivateFieldSet(this, _resolvedOptions, resolvedOptions);
|
192 |
|
193 | await (0, _cache.createCacheDir)(resolvedOptions.outputFS, resolvedOptions.cacheDir);
|
194 | let {
|
195 | config
|
196 | } = await (0, _loadParcelConfig.default)(_path.default.join(resolvedOptions.inputFS.cwd(), 'index'), resolvedOptions);
|
197 |
|
198 | _classPrivateFieldSet(this, _config, config);
|
199 |
|
200 | _classPrivateFieldSet(this, _farm, (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _initialOptions).workerFarm) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : createWorkerFarm({
|
201 | patchConsole: resolvedOptions.patchConsole
|
202 | }));
|
203 |
|
204 | _classPrivateFieldSet(this, _assetGraphBuilder, new _AssetGraphBuilder.default());
|
205 |
|
206 | _classPrivateFieldSet(this, _runtimesAssetGraphBuilder, new _AssetGraphBuilder.default());
|
207 |
|
208 | await Promise.all([_classPrivateFieldGet(this, _assetGraphBuilder).init({
|
209 | name: 'MainAssetGraph',
|
210 | options: resolvedOptions,
|
211 | config,
|
212 | entries: resolvedOptions.entries,
|
213 | workerFarm: _classPrivateFieldGet(this, _farm)
|
214 | }), _classPrivateFieldGet(this, _runtimesAssetGraphBuilder).init({
|
215 | name: 'RuntimesAssetGraph',
|
216 | options: resolvedOptions,
|
217 | config,
|
218 | workerFarm: _classPrivateFieldGet(this, _farm)
|
219 | })]);
|
220 |
|
221 | _classPrivateFieldSet(this, _bundlerRunner, new _BundlerRunner.default({
|
222 | options: resolvedOptions,
|
223 | runtimesBuilder: _classPrivateFieldGet(this, _runtimesAssetGraphBuilder),
|
224 | config,
|
225 | workerFarm: _classPrivateFieldGet(this, _farm)
|
226 | }));
|
227 |
|
228 | _classPrivateFieldSet(this, _reporterRunner, new _ReporterRunner.default({
|
229 | config,
|
230 | options: resolvedOptions,
|
231 | workerFarm: _classPrivateFieldGet(this, _farm)
|
232 | }));
|
233 |
|
234 | _classPrivateFieldSet(this, _packagerRunner, new _PackagerRunner.default({
|
235 | config,
|
236 | farm: _classPrivateFieldGet(this, _farm),
|
237 | options: resolvedOptions,
|
238 | report: _ReporterRunner.report
|
239 | }));
|
240 |
|
241 | _classPrivateFieldSet(this, _runPackage, _classPrivateFieldGet(this, _farm).createHandle('runPackage'));
|
242 |
|
243 | _classPrivateFieldSet(this, _initialized, true);
|
244 | }
|
245 |
|
246 | async run() {
|
247 | let startTime = Date.now();
|
248 |
|
249 | if (!_classPrivateFieldGet(this, _initialized)) {
|
250 | await this.init();
|
251 | }
|
252 |
|
253 | let result = await this.build({
|
254 | startTime
|
255 | });
|
256 | await Promise.all([_classPrivateFieldGet(this, _assetGraphBuilder).writeToCache(), _classPrivateFieldGet(this, _runtimesAssetGraphBuilder).writeToCache()]);
|
257 |
|
258 | if (!_classPrivateFieldGet(this, _initialOptions).workerFarm) {
|
259 |
|
260 | await _classPrivateFieldGet(this, _farm).end();
|
261 | }
|
262 |
|
263 | if (result.type === 'buildFailure') {
|
264 | throw new BuildError(result.diagnostics);
|
265 | }
|
266 |
|
267 | return result.bundleGraph;
|
268 | }
|
269 |
|
270 | async startNextBuild() {
|
271 | _classPrivateFieldSet(this, _watchAbortController, new _cjsPonyfill.AbortController());
|
272 |
|
273 | try {
|
274 | _classPrivateFieldGet(this, _watchEvents).emit({
|
275 | buildEvent: await this.build({
|
276 | signal: _classPrivateFieldGet(this, _watchAbortController).signal
|
277 | })
|
278 | });
|
279 | } catch (err) {
|
280 |
|
281 | if (!(err instanceof _utils.BuildAbortError)) {
|
282 | throw err;
|
283 | }
|
284 | }
|
285 | }
|
286 |
|
287 | async watch(cb) {
|
288 | var _this$watcherCount;
|
289 |
|
290 | let watchEventsDisposable;
|
291 |
|
292 | if (cb) {
|
293 | watchEventsDisposable = _classPrivateFieldGet(this, _watchEvents).addListener(({
|
294 | error,
|
295 | buildEvent
|
296 | }) => cb(error, buildEvent));
|
297 | }
|
298 |
|
299 | if (_classPrivateFieldGet(this, _watcherCount) === 0) {
|
300 | if (!_classPrivateFieldGet(this, _initialized)) {
|
301 | await this.init();
|
302 | }
|
303 |
|
304 | _classPrivateFieldSet(this, _watcherSubscription, (await this._getWatcherSubscription()));
|
305 |
|
306 | await _classPrivateFieldGet(this, _reporterRunner).report({
|
307 | type: 'watchStart'
|
308 | });
|
309 |
|
310 |
|
311 | _classPrivateFieldGet(this, _watchQueue).add(() => this.startNextBuild());
|
312 |
|
313 | _classPrivateFieldGet(this, _watchQueue).run();
|
314 | }
|
315 |
|
316 | _classPrivateFieldSet(this, _watcherCount, (_this$watcherCount = +_classPrivateFieldGet(this, _watcherCount)) + 1), _this$watcherCount;
|
317 | let unsubscribePromise;
|
318 |
|
319 | const unsubscribe = async () => {
|
320 | var _this$watcherCount2;
|
321 |
|
322 | if (watchEventsDisposable) {
|
323 | watchEventsDisposable.dispose();
|
324 | }
|
325 |
|
326 | _classPrivateFieldSet(this, _watcherCount, (_this$watcherCount2 = +_classPrivateFieldGet(this, _watcherCount)) - 1), _this$watcherCount2;
|
327 |
|
328 | if (_classPrivateFieldGet(this, _watcherCount) === 0) {
|
329 | await (0, _nullthrows.default)(_classPrivateFieldGet(this, _watcherSubscription)).unsubscribe();
|
330 |
|
331 | _classPrivateFieldSet(this, _watcherSubscription, null);
|
332 |
|
333 | await _classPrivateFieldGet(this, _reporterRunner).report({
|
334 | type: 'watchEnd'
|
335 | });
|
336 | await Promise.all([_classPrivateFieldGet(this, _assetGraphBuilder).writeToCache(), _classPrivateFieldGet(this, _runtimesAssetGraphBuilder).writeToCache()]);
|
337 | }
|
338 | };
|
339 |
|
340 | return {
|
341 | unsubscribe() {
|
342 | if (unsubscribePromise == null) {
|
343 | unsubscribePromise = unsubscribe();
|
344 | }
|
345 |
|
346 | return unsubscribePromise;
|
347 | }
|
348 |
|
349 | };
|
350 | }
|
351 |
|
352 | async build({
|
353 | signal,
|
354 | startTime = Date.now()
|
355 | }) {
|
356 | let options = (0, _nullthrows.default)(_classPrivateFieldGet(this, _resolvedOptions));
|
357 |
|
358 | try {
|
359 | if (options.profile) {
|
360 | await _classPrivateFieldGet(this, _farm).startProfile();
|
361 | }
|
362 |
|
363 | _classPrivateFieldGet(this, _reporterRunner).report({
|
364 | type: 'buildStart'
|
365 | });
|
366 |
|
367 | let {
|
368 | assetGraph,
|
369 | changedAssets
|
370 | } = await _classPrivateFieldGet(this, _assetGraphBuilder).build(signal);
|
371 | (0, _dumpGraphToGraphViz.default)(assetGraph, 'MainAssetGraph');
|
372 | let bundleGraph = await _classPrivateFieldGet(this, _bundlerRunner).bundle(assetGraph, {
|
373 | signal
|
374 | });
|
375 | (0, _dumpGraphToGraphViz.default)(bundleGraph._graph, 'BundleGraph');
|
376 | await _classPrivateFieldGet(this, _packagerRunner).writeBundles(bundleGraph);
|
377 | (0, _utils.assertSignalNotAborted)(signal);
|
378 | let event = {
|
379 | type: 'buildSuccess',
|
380 | changedAssets: new Map(Array.from(changedAssets).map(([id, asset]) => [id, (0, _Asset.assetFromValue)(asset, options)])),
|
381 | bundleGraph: new _BundleGraph.default(bundleGraph, options),
|
382 | buildTime: Date.now() - startTime
|
383 | };
|
384 |
|
385 | _classPrivateFieldGet(this, _reporterRunner).report(event);
|
386 |
|
387 | await _classPrivateFieldGet(this, _assetGraphBuilder).validate();
|
388 | return event;
|
389 | } catch (e) {
|
390 | if (e instanceof _utils.BuildAbortError) {
|
391 | throw e;
|
392 | }
|
393 |
|
394 | let diagnostic = (0, _diagnostic.anyToDiagnostic)(e);
|
395 | let event = {
|
396 | type: 'buildFailure',
|
397 | diagnostics: Array.isArray(diagnostic) ? diagnostic : [diagnostic]
|
398 | };
|
399 | await _classPrivateFieldGet(this, _reporterRunner).report(event);
|
400 | return event;
|
401 | } finally {
|
402 | if (options.profile) {
|
403 | await _classPrivateFieldGet(this, _farm).endProfile();
|
404 | }
|
405 | }
|
406 | }
|
407 |
|
408 |
|
409 | async [INTERNAL_TRANSFORM]({
|
410 | filePath,
|
411 | env,
|
412 | code
|
413 | }) {
|
414 | let [result] = await Promise.all([_classPrivateFieldGet(this, _assetGraphBuilder).runTransform({
|
415 | filePath,
|
416 | code,
|
417 | env: (0, _Environment.createEnvironment)(env)
|
418 | }), _classPrivateFieldGet(this, _reporterRunner).config.getReporters()]);
|
419 | return result;
|
420 | }
|
421 |
|
422 |
|
423 | async [INTERNAL_RESOLVE]({
|
424 | moduleSpecifier,
|
425 | sourcePath,
|
426 | env
|
427 | }) {
|
428 | let resolved = await _classPrivateFieldGet(this, _assetGraphBuilder).resolverRunner.resolve((0, _Dependency.createDependency)({
|
429 | moduleSpecifier,
|
430 | sourcePath,
|
431 | env: (0, _Environment.createEnvironment)(env)
|
432 | }));
|
433 | return resolved.filePath;
|
434 | }
|
435 |
|
436 | _getWatcherSubscription() {
|
437 | (0, _assert.default)(_classPrivateFieldGet(this, _watcherSubscription) == null);
|
438 | let resolvedOptions = (0, _nullthrows.default)(_classPrivateFieldGet(this, _resolvedOptions));
|
439 |
|
440 | let opts = _classPrivateFieldGet(this, _assetGraphBuilder).getWatcherOptions();
|
441 |
|
442 | return resolvedOptions.inputFS.watch(resolvedOptions.projectRoot, (err, _events) => {
|
443 | let events = _events.filter(e => !e.path.includes('.cache'));
|
444 |
|
445 | if (err) {
|
446 | _classPrivateFieldGet(this, _watchEvents).emit({
|
447 | error: err
|
448 | });
|
449 |
|
450 | return;
|
451 | }
|
452 |
|
453 | let isInvalid = _classPrivateFieldGet(this, _assetGraphBuilder).respondToFSEvents(events);
|
454 |
|
455 | if (isInvalid && _classPrivateFieldGet(this, _watchQueue).getNumWaiting() === 0) {
|
456 | if (_classPrivateFieldGet(this, _watchAbortController)) {
|
457 | _classPrivateFieldGet(this, _watchAbortController).abort();
|
458 | }
|
459 |
|
460 | _classPrivateFieldGet(this, _watchQueue).add(() => this.startNextBuild());
|
461 |
|
462 | _classPrivateFieldGet(this, _watchQueue).run();
|
463 | }
|
464 | }, opts);
|
465 | }
|
466 |
|
467 | }
|
468 |
|
469 | exports.default = Parcel;
|
470 |
|
471 | var _assetGraphBuilder = new WeakMap();
|
472 |
|
473 | var _runtimesAssetGraphBuilder = new WeakMap();
|
474 |
|
475 | var _bundlerRunner = new WeakMap();
|
476 |
|
477 | var _packagerRunner = new WeakMap();
|
478 |
|
479 | var _config = new WeakMap();
|
480 |
|
481 | var _farm = new WeakMap();
|
482 |
|
483 | var _initialized = new WeakMap();
|
484 |
|
485 | var _initialOptions = new WeakMap();
|
486 |
|
487 | var _reporterRunner = new WeakMap();
|
488 |
|
489 | var _resolvedOptions = new WeakMap();
|
490 |
|
491 | var _runPackage = new WeakMap();
|
492 |
|
493 | var _watchAbortController = new WeakMap();
|
494 |
|
495 | var _watchQueue = new WeakMap();
|
496 |
|
497 | var _watchEvents = new WeakMap();
|
498 |
|
499 | var _watcherSubscription = new WeakMap();
|
500 |
|
501 | var _watcherCount = new WeakMap();
|
502 |
|
503 | class BuildError extends _diagnostic.default {
|
504 | constructor(diagnostics) {
|
505 | super({
|
506 | diagnostic: diagnostics
|
507 | });
|
508 | this.name = 'BuildError';
|
509 | }
|
510 |
|
511 | }
|
512 |
|
513 | exports.BuildError = BuildError;
|
514 |
|
515 | function createWorkerFarm(options = {}) {
|
516 | return new _workers.default(_objectSpread({}, options, {
|
517 | workerPath: require.resolve('./worker')
|
518 | }));
|
519 | } |
\ | No newline at end of file |