From 1cc60d30cbc5dda59a3e012fcbf0c65c267ab2bd Mon Sep 17 00:00:00 2001 From: thebriando Date: Fri, 2 Sep 2022 11:35:53 -0700 Subject: [PATCH 01/10] Package on main thread when there's only one bundle in request --- packages/core/core/src/PackagerRunner.js | 2 ++ packages/core/core/src/ReporterRunner.js | 10 ++++---- .../core/core/src/requests/PackageRequest.js | 6 +++-- .../core/src/requests/WriteBundlesRequest.js | 24 +++++++++++++++---- packages/core/core/src/worker.js | 7 ++++-- packages/core/types/index.js | 2 ++ 6 files changed, 38 insertions(+), 13 deletions(-) diff --git a/packages/core/core/src/PackagerRunner.js b/packages/core/core/src/PackagerRunner.js index 3c18a16c10b..a82e023c1e5 100644 --- a/packages/core/core/src/PackagerRunner.js +++ b/packages/core/core/src/PackagerRunner.js @@ -325,6 +325,7 @@ export default class PackagerRunner { type: 'buildProgress', phase: 'packaging', bundle, + bundleGraph, }); let packager = await this.config.getPackager(bundle.name); @@ -418,6 +419,7 @@ export default class PackagerRunner { type: 'buildProgress', phase: 'optimizing', bundle, + bundleGraph: internalBundleGraph, }); let optimized = { diff --git a/packages/core/core/src/ReporterRunner.js b/packages/core/core/src/ReporterRunner.js index 9b07912bb7e..535dcddc1dd 100644 --- a/packages/core/core/src/ReporterRunner.js +++ b/packages/core/core/src/ReporterRunner.js @@ -64,10 +64,12 @@ export default class ReporterRunner { let bundle: InternalBundle = event.bundle; // Convert any internal bundles back to their public equivalents as reporting // is public api - let bundleGraph = this.workerFarm.workerApi.getSharedReference( - // $FlowFixMe - bundleGraphRef, - ); + let bundleGraph = + event.bundleGraph ?? + this.workerFarm.workerApi.getSharedReference( + // $FlowFixMe + bundleGraphRef, + ); invariant(bundleGraph instanceof BundleGraph); // $FlowFixMe[incompatible-call] this.report({ diff --git a/packages/core/core/src/requests/PackageRequest.js b/packages/core/core/src/requests/PackageRequest.js index e02c605fd30..33c4a967071 100644 --- a/packages/core/core/src/requests/PackageRequest.js +++ b/packages/core/core/src/requests/PackageRequest.js @@ -18,7 +18,7 @@ import createParcelConfigRequest from './ParcelConfigRequest'; type PackageRequestInput = {| bundleGraph: BundleGraph, bundle: Bundle, - bundleGraphReference: SharedReference, + bundleGraphReference?: SharedReference, optionsRef: SharedReference, |}; @@ -54,10 +54,12 @@ async function run({input, api, farm}: RunInput) { let {cachePath} = nullthrows( await api.runRequest(createParcelConfigRequest()), ); + let {devDepRequests, configRequests, bundleInfo, invalidations} = await runPackage({ bundle, - bundleGraphReference, + bundleGraphReference: + bundleGraphReference == null ? input.bundleGraph : bundleGraphReference, optionsRef, configCachePath: cachePath, previousDevDeps: devDeps, diff --git a/packages/core/core/src/requests/WriteBundlesRequest.js b/packages/core/core/src/requests/WriteBundlesRequest.js index bdfcbcf1360..870fbd3507c 100644 --- a/packages/core/core/src/requests/WriteBundlesRequest.js +++ b/packages/core/core/src/requests/WriteBundlesRequest.js @@ -49,10 +49,6 @@ export default function createWriteBundlesRequest( async function run({input, api, farm, options}: RunInput) { let {bundleGraph, optionsRef} = input; - let {ref, dispose} = await farm.createSharedReference( - bundleGraph, - serialize(bundleGraph), - ); api.invalidateOnOptionChange('shouldContentHash'); @@ -80,9 +76,25 @@ async function run({input, api, farm, options}: RunInput) { return false; } + // Filter out skippable requests. + // if (api.canSkipSubrequest(bundleGraph.getHash(bundle))) { + // // console.log('skipping', bundle.id); + // return false; + // } + return true; }); + let ref; + let dispose; + + // Create shared reference in WorkerFarm if we need to change multiple bundles. + if (bundles.length > 1) { + ({ref, dispose} = await farm.createSharedReference( + bundleGraph, + serialize(bundleGraph), + )); + } try { await Promise.all( bundles.map(async bundle => { @@ -133,7 +145,9 @@ async function run({input, api, farm, options}: RunInput) { api.storeResult(res); return res; } finally { - await dispose(); + if (dispose) { + await dispose(); + } } } diff --git a/packages/core/core/src/worker.js b/packages/core/core/src/worker.js index bb1467076f5..22da7b05041 100644 --- a/packages/core/core/src/worker.js +++ b/packages/core/core/src/worker.js @@ -121,7 +121,7 @@ export async function runPackage( previousInvalidations, }: {| bundle: Bundle, - bundleGraphReference: SharedReference, + bundleGraphReference: SharedReference | BundleGraph, configCachePath: string, optionsRef: SharedReference, previousDevDeps: Map, @@ -129,7 +129,10 @@ export async function runPackage( previousInvalidations: Array, |}, ): Promise { - let bundleGraph = workerApi.getSharedReference(bundleGraphReference); + let bundleGraph = + typeof bundleGraphReference === 'number' + ? workerApi.getSharedReference(bundleGraphReference) + : bundleGraphReference; invariant(bundleGraph instanceof BundleGraph); let options = loadOptions(optionsRef, workerApi); let parcelConfig = await loadConfig(configCachePath, options); diff --git a/packages/core/types/index.js b/packages/core/types/index.js index 2c1ca94685e..a57400f8089 100644 --- a/packages/core/types/index.js +++ b/packages/core/types/index.js @@ -1750,6 +1750,7 @@ export type PackagingProgressEvent = {| +type: 'buildProgress', +phase: 'packaging', +bundle: NamedBundle, + +bundleGraph?: BundleGraph, |}; /** @@ -1760,6 +1761,7 @@ export type OptimizingProgressEvent = {| +type: 'buildProgress', +phase: 'optimizing', +bundle: NamedBundle, + +bundleGraph?: BundleGraph, |}; /** From 43847dda032c280d8795b709d3c4f6be5bc1e917 Mon Sep 17 00:00:00 2001 From: thebriando Date: Fri, 2 Sep 2022 13:16:55 -0700 Subject: [PATCH 02/10] Fix flow errors --- packages/core/types/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/core/types/index.js b/packages/core/types/index.js index 076e72b1c48..f1bf04575e8 100644 --- a/packages/core/types/index.js +++ b/packages/core/types/index.js @@ -5,6 +5,7 @@ import type SourceMap from '@parcel/source-map'; import type {FileSystem} from '@parcel/fs'; import type WorkerFarm from '@parcel/workers'; import type {PackageManager} from '@parcel/package-manager'; +import type InternalBundleGraph from '../core/src/BundleGraph'; import type { Diagnostic, Diagnostifiable, @@ -1754,7 +1755,7 @@ export type PackagingProgressEvent = {| +type: 'buildProgress', +phase: 'packaging', +bundle: NamedBundle, - +bundleGraph?: BundleGraph, + +bundleGraph?: InternalBundleGraph, |}; /** @@ -1765,7 +1766,7 @@ export type OptimizingProgressEvent = {| +type: 'buildProgress', +phase: 'optimizing', +bundle: NamedBundle, - +bundleGraph?: BundleGraph, + +bundleGraph?: InternalBundleGraph, |}; /** From ad39a493fc99fd68dab059fa115d368edad2d973 Mon Sep 17 00:00:00 2001 From: thebriando Date: Fri, 9 Sep 2022 12:01:11 -0700 Subject: [PATCH 03/10] Use report instead of reportWorker when not farming out --- packages/core/core/src/PackagerRunner.js | 8 ++++++-- packages/core/core/src/ReporterRunner.js | 14 +++++++++++++- packages/core/core/src/worker.js | 8 ++++++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/packages/core/core/src/PackagerRunner.js b/packages/core/core/src/PackagerRunner.js index a82e023c1e5..2b2bd5b89d7 100644 --- a/packages/core/core/src/PackagerRunner.js +++ b/packages/core/core/src/PackagerRunner.js @@ -67,6 +67,7 @@ type Opts = {| report: ReportFn, previousDevDeps: Map, previousInvalidations: Array, + useFarm: boolean, |}; export type PackageRequestResult = {| @@ -109,6 +110,7 @@ export default class PackagerRunner { devDepRequests: Map; invalidations: Map; previousInvalidations: Array; + useFarm: boolean; constructor({ config, @@ -116,6 +118,7 @@ export default class PackagerRunner { report, previousDevDeps, previousInvalidations, + useFarm, }: Opts) { this.config = config; this.options = options; @@ -123,6 +126,7 @@ export default class PackagerRunner { this.previousDevDeps = previousDevDeps; this.devDepRequests = new Map(); this.previousInvalidations = previousInvalidations; + this.useFarm = useFarm; this.invalidations = new Map(); this.pluginOptions = new PluginOptions( optionsProxy(this.options, option => { @@ -325,7 +329,7 @@ export default class PackagerRunner { type: 'buildProgress', phase: 'packaging', bundle, - bundleGraph, + bundleGraph: this.useFarm ? undefined : bundleGraph, }); let packager = await this.config.getPackager(bundle.name); @@ -419,7 +423,7 @@ export default class PackagerRunner { type: 'buildProgress', phase: 'optimizing', bundle, - bundleGraph: internalBundleGraph, + bundleGraph: this.useFarm ? undefined : internalBundleGraph, }); let optimized = { diff --git a/packages/core/core/src/ReporterRunner.js b/packages/core/core/src/ReporterRunner.js index 535dcddc1dd..6b358871343 100644 --- a/packages/core/core/src/ReporterRunner.js +++ b/packages/core/core/src/ReporterRunner.js @@ -133,5 +133,17 @@ export function reportWorker(workerApi: WorkerApi, event: ReporterEvent) { } export function report(event: ReporterEvent) { - bus.emit('reporterEvent', event); + if ( + event.bundleGraph && + event.type === 'buildProgress' && + (event.phase === 'optimizing' || event.phase === 'packaging') + ) { + bus.emit('reporterEvent', { + ...event, + bundle: bundleToInternalBundle(event.bundle), + bundleGraphRef: event.bundleGraph, + }); + } else { + bus.emit('reporterEvent', event); + } } diff --git a/packages/core/core/src/worker.js b/packages/core/core/src/worker.js index 22da7b05041..4664a2e66a9 100644 --- a/packages/core/core/src/worker.js +++ b/packages/core/core/src/worker.js @@ -17,7 +17,7 @@ import Transformation, { type TransformationOpts, type TransformationResult, } from './Transformation'; -import {reportWorker} from './ReporterRunner'; +import {reportWorker, report} from './ReporterRunner'; import PackagerRunner, {type PackageRequestResult} from './PackagerRunner'; import Validation, {type ValidationOpts} from './Validation'; import ParcelConfig from './ParcelConfig'; @@ -140,9 +140,13 @@ export async function runPackage( let runner = new PackagerRunner({ config: parcelConfig, options, - report: reportWorker.bind(null, workerApi), + report: + typeof bundleGraphReference === 'number' + ? reportWorker.bind(null, workerApi) + : report, previousDevDeps, previousInvalidations, + useFarm: typeof bundleGraphReference === 'number' ? true : false, }); return runner.run(bundleGraph, bundle, invalidDevDeps); From 350e01e68b01202ff80afbf609b86ed90cec3fd0 Mon Sep 17 00:00:00 2001 From: thebriando Date: Tue, 20 Sep 2022 10:55:48 +1000 Subject: [PATCH 04/10] Don't serialize if we can skip all bundle subrequests --- .../core/core/src/requests/WriteBundlesRequest.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/core/core/src/requests/WriteBundlesRequest.js b/packages/core/core/src/requests/WriteBundlesRequest.js index 870fbd3507c..891c02f3f13 100644 --- a/packages/core/core/src/requests/WriteBundlesRequest.js +++ b/packages/core/core/src/requests/WriteBundlesRequest.js @@ -76,20 +76,18 @@ async function run({input, api, farm, options}: RunInput) { return false; } - // Filter out skippable requests. - // if (api.canSkipSubrequest(bundleGraph.getHash(bundle))) { - // // console.log('skipping', bundle.id); - // return false; - // } - return true; }); let ref; let dispose; - // Create shared reference in WorkerFarm if we need to change multiple bundles. - if (bundles.length > 1) { + // Create shared reference in WorkerFarm if we need to change multiple bundles and if we + // can't skip the subrequests for all the bundles + if ( + bundles.length > 1 && + bundles.some(b => !api.canSkipSubrequest(bundleGraph.getHash(b))) + ) { ({ref, dispose} = await farm.createSharedReference( bundleGraph, serialize(bundleGraph), From ddf8a34facecef8788542b9b96cabf4bc1741fd0 Mon Sep 17 00:00:00 2001 From: thebriando Date: Wed, 5 Oct 2022 13:08:21 -0700 Subject: [PATCH 05/10] Change condition to not serialize with single bundle case --- packages/core/core/src/requests/WriteBundlesRequest.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/core/core/src/requests/WriteBundlesRequest.js b/packages/core/core/src/requests/WriteBundlesRequest.js index 891c02f3f13..e9089c89973 100644 --- a/packages/core/core/src/requests/WriteBundlesRequest.js +++ b/packages/core/core/src/requests/WriteBundlesRequest.js @@ -86,7 +86,8 @@ async function run({input, api, farm, options}: RunInput) { // can't skip the subrequests for all the bundles if ( bundles.length > 1 && - bundles.some(b => !api.canSkipSubrequest(bundleGraph.getHash(b))) + bundles.filter(b => !api.canSkipSubrequest(bundleGraph.getHash(b))).length > + 1 ) { ({ref, dispose} = await farm.createSharedReference( bundleGraph, From 32bef5819d3cb29cd286debc6916f536a1dc5281 Mon Sep 17 00:00:00 2001 From: thebriando Date: Mon, 17 Oct 2022 22:28:39 -0700 Subject: [PATCH 06/10] Prevent serialization in PackageRequest --- packages/core/core/src/requests/PackageRequest.js | 5 +++-- .../core/core/src/requests/WriteBundlesRequest.js | 3 +++ packages/core/workers/src/WorkerFarm.js | 13 +++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/core/core/src/requests/PackageRequest.js b/packages/core/core/src/requests/PackageRequest.js index 33c4a967071..3740fb217e4 100644 --- a/packages/core/core/src/requests/PackageRequest.js +++ b/packages/core/core/src/requests/PackageRequest.js @@ -20,6 +20,7 @@ type PackageRequestInput = {| bundle: Bundle, bundleGraphReference?: SharedReference, optionsRef: SharedReference, + shouldSerialize?: boolean, |}; type RunInput = {| @@ -46,8 +47,8 @@ export function createPackageRequest( } async function run({input, api, farm}: RunInput) { - let {bundleGraphReference, optionsRef, bundle} = input; - let runPackage = farm.createHandle('runPackage'); + let {bundleGraphReference, optionsRef, bundle, shouldSerialize} = input; + let runPackage = farm.createHandle('runPackage', shouldSerialize); let start = Date.now(); let {devDeps, invalidDevDeps} = await getDevDepRequests(api); diff --git a/packages/core/core/src/requests/WriteBundlesRequest.js b/packages/core/core/src/requests/WriteBundlesRequest.js index e9089c89973..a299156e0f3 100644 --- a/packages/core/core/src/requests/WriteBundlesRequest.js +++ b/packages/core/core/src/requests/WriteBundlesRequest.js @@ -84,11 +84,13 @@ async function run({input, api, farm, options}: RunInput) { // Create shared reference in WorkerFarm if we need to change multiple bundles and if we // can't skip the subrequests for all the bundles + let shouldSerialize = false; if ( bundles.length > 1 && bundles.filter(b => !api.canSkipSubrequest(bundleGraph.getHash(b))).length > 1 ) { + shouldSerialize = true; ({ref, dispose} = await farm.createSharedReference( bundleGraph, serialize(bundleGraph), @@ -102,6 +104,7 @@ async function run({input, api, farm, options}: RunInput) { bundleGraph, bundleGraphReference: ref, optionsRef, + shouldSerialize, }); let info = await api.runRequest(request); diff --git a/packages/core/workers/src/WorkerFarm.js b/packages/core/workers/src/WorkerFarm.js index 03228f4ea88..6cdb42a8df7 100644 --- a/packages/core/workers/src/WorkerFarm.js +++ b/packages/core/workers/src/WorkerFarm.js @@ -175,7 +175,7 @@ export default class WorkerFarm extends EventEmitter { ); } - createHandle(method: string): HandleFunction { + createHandle(method: string, shouldSerialize?: boolean): HandleFunction { return async (...args) => { // Child process workers are slow to start (~600ms). // While we're waiting, just run on the main thread. @@ -187,9 +187,14 @@ export default class WorkerFarm extends EventEmitter { this.warmupWorker(method, args); } - let processedArgs = restoreDeserializedObject( - prepareForSerialization([...args, false]), - ); + let processedArgs; + if (shouldSerialize) { + processedArgs = restoreDeserializedObject( + prepareForSerialization([...args, false]), + ); + } else { + processedArgs = args; + } if (this.localWorkerInit != null) { await this.localWorkerInit; From d3ec1646667b14ce9bf86bfd22f1e6a3d646253b Mon Sep 17 00:00:00 2001 From: thebriando Date: Mon, 24 Oct 2022 13:09:14 -0700 Subject: [PATCH 07/10] Don't use remote workers when serialization is skipped --- packages/core/workers/src/WorkerFarm.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/core/workers/src/WorkerFarm.js b/packages/core/workers/src/WorkerFarm.js index 6cdb42a8df7..057863ae49a 100644 --- a/packages/core/workers/src/WorkerFarm.js +++ b/packages/core/workers/src/WorkerFarm.js @@ -175,12 +175,15 @@ export default class WorkerFarm extends EventEmitter { ); } - createHandle(method: string, shouldSerialize?: boolean): HandleFunction { + createHandle( + method: string, + shouldSerialize: boolean = true, + ): HandleFunction { return async (...args) => { // Child process workers are slow to start (~600ms). // While we're waiting, just run on the main thread. // This significantly speeds up startup time. - if (this.shouldUseRemoteWorkers()) { + if (this.shouldUseRemoteWorkers() && shouldSerialize) { return this.addCall(method, [...args, false]); } else { if (this.options.warmWorkers && this.shouldStartRemoteWorkers()) { From cf5b3ffdaadb3de90104a6d24261e1aad9c496fd Mon Sep 17 00:00:00 2001 From: thebriando Date: Mon, 24 Oct 2022 14:52:44 -0700 Subject: [PATCH 08/10] Fix import --- packages/core/types/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/types/index.js b/packages/core/types/index.js index f1bf04575e8..b7de0060f1d 100644 --- a/packages/core/types/index.js +++ b/packages/core/types/index.js @@ -5,7 +5,7 @@ import type SourceMap from '@parcel/source-map'; import type {FileSystem} from '@parcel/fs'; import type WorkerFarm from '@parcel/workers'; import type {PackageManager} from '@parcel/package-manager'; -import type InternalBundleGraph from '../core/src/BundleGraph'; +import type InternalBundleGraph from '@parcel/core'; import type { Diagnostic, Diagnostifiable, From 51f357534538fb1451c47365bb48a102d1d8f81f Mon Sep 17 00:00:00 2001 From: thebriando Date: Mon, 24 Oct 2022 15:56:18 -0700 Subject: [PATCH 09/10] Revert "Fix import" This reverts commit cf5b3ffdaadb3de90104a6d24261e1aad9c496fd. --- packages/core/types/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/types/index.js b/packages/core/types/index.js index b7de0060f1d..f1bf04575e8 100644 --- a/packages/core/types/index.js +++ b/packages/core/types/index.js @@ -5,7 +5,7 @@ import type SourceMap from '@parcel/source-map'; import type {FileSystem} from '@parcel/fs'; import type WorkerFarm from '@parcel/workers'; import type {PackageManager} from '@parcel/package-manager'; -import type InternalBundleGraph from '@parcel/core'; +import type InternalBundleGraph from '../core/src/BundleGraph'; import type { Diagnostic, Diagnostifiable, From 8bf905ad35f9c6cc594ffdaae13bf1f7f22ae918 Mon Sep 17 00:00:00 2001 From: thebriando Date: Wed, 26 Oct 2022 14:50:12 -0700 Subject: [PATCH 10/10] Send BundleGraph through separate ReporterEvent --- packages/core/core/src/PackagerRunner.js | 28 ++++++++++++++++++------ packages/core/core/src/ReporterRunner.js | 8 +++++-- packages/core/types/index.js | 17 +++++++++----- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/packages/core/core/src/PackagerRunner.js b/packages/core/core/src/PackagerRunner.js index dfaa780eec0..05cc443d848 100644 --- a/packages/core/core/src/PackagerRunner.js +++ b/packages/core/core/src/PackagerRunner.js @@ -390,11 +390,23 @@ export default class PackagerRunner { bundleConfigs: Map, ): Promise { let bundle = NamedBundle.get(internalBundle, bundleGraph, this.options); + let publicBundleGraph = new BundleGraph( + bundleGraph, + NamedBundle.get.bind(NamedBundle), + this.options, + ); + + if (this.useFarm) { + this.report({ + type: 'bundleGraph', + bundleGraph: publicBundleGraph, + }); + } + this.report({ type: 'buildProgress', phase: 'packaging', bundle, - bundleGraph: this.useFarm ? undefined : bundleGraph, }); let packager = await this.config.getPackager(bundle.name); @@ -404,11 +416,7 @@ export default class PackagerRunner { config: configs.get(name)?.result, bundleConfig: bundleConfigs.get(name)?.result, bundle, - bundleGraph: new BundleGraph( - bundleGraph, - NamedBundle.get.bind(NamedBundle), - this.options, - ), + bundleGraph: publicBundleGraph, getSourceMapReference: map => { return this.getSourceMapReference(bundle, map); }, @@ -487,11 +495,17 @@ export default class PackagerRunner { return {type: bundle.type, contents, map}; } + if (this.useFarm) { + this.report({ + type: 'bundleGraph', + bundleGraph, + }); + } + this.report({ type: 'buildProgress', phase: 'optimizing', bundle, - bundleGraph: this.useFarm ? undefined : internalBundleGraph, }); let optimized = { diff --git a/packages/core/core/src/ReporterRunner.js b/packages/core/core/src/ReporterRunner.js index 6b358871343..a80f7d0da03 100644 --- a/packages/core/core/src/ReporterRunner.js +++ b/packages/core/core/src/ReporterRunner.js @@ -21,6 +21,7 @@ import logger, { } from '@parcel/logger'; import PluginOptions from './public/PluginOptions'; import BundleGraph from './BundleGraph'; +import {bundleGraphToInternalBundleGraph} from './public/BundleGraph'; type Opts = {| config: ParcelConfig, @@ -34,6 +35,7 @@ export default class ReporterRunner { options: ParcelOptions; pluginOptions: PluginOptions; reporters: Array>; + bundleGraph: BundleGraph; constructor(opts: Opts) { this.config = opts.config; @@ -53,7 +55,9 @@ export default class ReporterRunner { } eventHandler: ReporterEvent => void = (event): void => { - if ( + if (event.type === 'bundleGraph') { + this.bundleGraph = bundleGraphToInternalBundleGraph(event.bundleGraph); + } else if ( event.type === 'buildProgress' && (event.phase === 'optimizing' || event.phase === 'packaging') && !(event.bundle instanceof NamedBundle) @@ -65,7 +69,7 @@ export default class ReporterRunner { // Convert any internal bundles back to their public equivalents as reporting // is public api let bundleGraph = - event.bundleGraph ?? + this.bundleGraph ?? this.workerFarm.workerApi.getSharedReference( // $FlowFixMe bundleGraphRef, diff --git a/packages/core/types/index.js b/packages/core/types/index.js index 4867144a2bd..09792eae736 100644 --- a/packages/core/types/index.js +++ b/packages/core/types/index.js @@ -5,7 +5,6 @@ import type SourceMap from '@parcel/source-map'; import type {FileSystem} from '@parcel/fs'; import type WorkerFarm from '@parcel/workers'; import type {PackageManager} from '@parcel/package-manager'; -import type InternalBundleGraph from '../core/src/BundleGraph'; import type { Diagnostic, Diagnostifiable, @@ -1710,7 +1709,11 @@ export type TextLogEvent = {| /** * @section reporter */ -export type LogEvent = ProgressLogEvent | DiagnosticLogEvent | TextLogEvent; +export type LogEvent = + | ProgressLogEvent + | DiagnosticLogEvent + | TextLogEvent + | BundleGraphEvent; /** * The build just started. @@ -1765,6 +1768,11 @@ export type BundlingProgressEvent = {| +phase: 'bundling', |}; +export type BundleGraphEvent = {| + +type: 'bundleGraph', + +bundleGraph: BundleGraph, +|}; + /** * A new Bundle is being packaged. * @section reporter @@ -1773,7 +1781,6 @@ export type PackagingProgressEvent = {| +type: 'buildProgress', +phase: 'packaging', +bundle: NamedBundle, - +bundleGraph?: InternalBundleGraph, |}; /** @@ -1784,7 +1791,6 @@ export type OptimizingProgressEvent = {| +type: 'buildProgress', +phase: 'optimizing', +bundle: NamedBundle, - +bundleGraph?: InternalBundleGraph, |}; /** @@ -1843,7 +1849,8 @@ export type ReporterEvent = | BuildFailureEvent | WatchStartEvent | WatchEndEvent - | ValidationEvent; + | ValidationEvent + | BundleGraphEvent; /** * @section reporter