|
|
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.isInitialOrHasNoParents = isInitialOrHasNoParents;
- exports.isInvalidOrder = isInvalidOrder;
- exports.getOrder = getOrder;
- exports.getLoaderObject = getLoaderObject;
- exports.mergeOptions = mergeOptions;
- exports.isString = isString;
- exports.isFunction = isFunction;
- exports.isType = isType;
- /* eslint-disable
- no-param-reassign
- */
- function isInitialOrHasNoParents(chunk) {
- let parentCount = 0;
-
- for (const chunkGroup of chunk.groupsIterable) {
- parentCount += chunkGroup.getNumberOfParents();
- }
-
- return chunk.isOnlyInitial() || parentCount === 0;
- }
-
- function isInvalidOrder(a, b) {
- // Async chunks' modules don't get turned into ExtractedModule
- // instances for some reason. This is a temporary fix that
- // moves the isInvalidOrder check inside a condition.
- if (a.getPrevModules && b.getPrevModules) {
- const bBeforeA = a.getPrevModules().indexOf(b) >= 0;
- const aBeforeB = b.getPrevModules().indexOf(a) >= 0;
-
- return aBeforeB && bBeforeA;
- }
-
- return false;
- }
-
- function getOrder(a, b) {
- // Async chunks' modules don't get turned into ExtractedModule
- // instances for some reason. This is a temporary fix that
- // moves the custom sorting logic inside a condition.
- if (a.getOriginalModule && b.getOriginalModule) {
- const aOrder = a.getOrder();
- const bOrder = b.getOrder();
- if (aOrder < bOrder) return -1;
- if (aOrder > bOrder) return 1;
-
- // We are trying to use the underlying index2 property
- // of the original module, but this property seems
- // to be set to null most of the time. It makes
- // sorting with it pointless. We should look
- // into saving the index, index2 and depth
- // props (maybe inside ExtractedModule).
- const aIndex = a.getOriginalModule().index2;
- const bIndex = b.getOriginalModule().index2;
- if (aIndex < bIndex) return -1;
- if (aIndex > bIndex) return 1;
-
- const bBeforeA = a.getPrevModules().indexOf(b) >= 0;
- const aBeforeB = b.getPrevModules().indexOf(a) >= 0;
- if (aBeforeB && !bBeforeA) return -1;
- if (!aBeforeB && bBeforeA) return 1;
-
- // Sorting by id is the default behavior of webpack
- // and it keeps the modules in the correct order,
- // except for async imports. That's the reason
- // it is inside the conditional branch
- if (a.id < b.id) return -1;
- if (a.id > b.id) return 1;
- }
-
- // Sorting by identifier breaks the order of async imported
- // modules either because webpack sorts them by default,
- // or because they are processed in the correct order
- // in the first place, or maybe because the modules
- // aren't ExtractedModule instances in this case.
- // Returning 0 keeps the already correct order.
- /*
- const ai = a.identifier();
- const bi = b.identifier();
- if (ai < bi) return -1;
- if (ai > bi) return 1;
- */
-
- return 0;
- }
-
- function getLoaderObject(loader) {
- if (isString(loader)) {
- return { loader };
- }
- return loader;
- }
-
- function mergeOptions(a, b) {
- if (!b) return a;
- Object.keys(b).forEach(key => {
- a[key] = b[key];
- });
- return a;
- }
-
- function isString(a) {
- return typeof a === 'string';
- }
-
- function isFunction(a) {
- return typeof a === 'function';
- }
-
- function isType(type, obj) {
- return Object.prototype.toString.call(obj) === `[object ${type}]`;
- }
|