Skip to content

Commit

Permalink
fix: correct global tracker mutation
Browse files Browse the repository at this point in the history
  • Loading branch information
theKashey committed May 8, 2021
1 parent 8b84df1 commit 4ee1c64
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/loadable/marks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,19 +39,19 @@ export const drainHydrateMarks = (stream: Stream = defaultStream) => {

/**
* Loads a given marks/chunks
* @see returns a promise for a given marks only. In order to await all requests currently in flight use {@link waitForMarks}
* @param marks
* @returns a resolution promise
*/
export const rehydrateMarks = (marks?: string[]) => {
const rehydratedMarks: string[] = marks || (global as any).___REACT_DEFERRED_COMPONENT_MARKS || [];
const tasks: Array<Promise<any>> = [];

const usedMarks = new Set<string>();

LOADABLE_MARKS.forEach(({ mark, loadable }) => {
if (markerOverlap(mark, rehydratedMarks)) {
mark.forEach(m => usedMarks.add(m));
tasks.push(loadable.load());
loadable.load();
}
});

Expand All @@ -63,7 +63,7 @@ export const rehydrateMarks = (marks?: string[]) => {
}
});

return Promise.all(tasks);
return waitForMarks(rehydratedMarks);
};

/**
Expand Down
13 changes: 13 additions & 0 deletions src/trackers/globalTracker.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
import { rehydrateMarks } from '../loadable/marks';

/**
* injects a loadable tracker on a given global variable name.
*
* WARNING: mutates the origin variable!
*
* @param name = 'importedComponents`
* @example
* ```js
* window.importedMarks = window.importedMarks || [];
* importedMarks.push(hydratedMarks[0]);
* ///
* injectLoadableTracker();
*/
export const injectLoadableTracker = (name: string = 'importedComponents') => {
const value = (global as any)[name] as string[][];
if (value) {
Expand Down

0 comments on commit 4ee1c64

Please sign in to comment.