UNPKG

@lotto24-angular/imports-orchestrator

Version:

Orchestrate dynamically imported components in Angular applications

51 lines 6.72 kB
import { importsOrchestratorFeature, ImportsOrchestratorFeatureKind, } from './internal'; import { IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY } from '../internal'; export function withConcurrencyRelativeToDownlinkSpeed(max = 4, min = 1) { const providers = [ { provide: IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY, useValue: downlinkToConcurrencyFn(max, min), }, ]; return importsOrchestratorFeature(ImportsOrchestratorFeatureKind.Concurrency, providers); } /** * @param onUpdateConcurrencyFn called when queue processor updates concurrency; */ export function withConcurrencyUpdateFn(onUpdateConcurrencyFn) { const providers = [ { provide: IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY, useValue: onUpdateConcurrencyFn, }, ]; return importsOrchestratorFeature(ImportsOrchestratorFeatureKind.Concurrency, providers); } export function withConcurrencyStatic(value) { const providers = [ { provide: IMPORTS_ORCHESTRATOR_FEATURE_CONCURRENCY, useValue: value, }, ]; return importsOrchestratorFeature(ImportsOrchestratorFeatureKind.Concurrency, providers); } function downlinkToConcurrencyFn(max, min = 1) { return () => { const downlink = navigator.connection?.downlink ?? 10; if (downlink < 1) { return min; } else if (downlink < 2) { return Math.max(min, Math.floor(min + (max - min) / 4)); } else if (downlink < 4) { return Math.max(min, Math.floor(min + (max - min) / 2)); } else if (downlink < 8) { return Math.max(min, Math.floor(min + (max - min) / 1.5)); } return max; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY3VycmVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ltcG9ydHMtb3JjaGVzdHJhdG9yL3NyYy9saWIvZmVhdHVyZXMvY29uY3VycmVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUVMLDBCQUEwQixFQUMxQiw4QkFBOEIsR0FDL0IsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZFLE1BQU0sVUFBVSxzQ0FBc0MsQ0FDcEQsTUFBYyxDQUFDLEVBQ2YsTUFBYyxDQUFDO0lBRWYsTUFBTSxTQUFTLEdBQWU7UUFDNUI7WUFDRSxPQUFPLEVBQUUsd0NBQXdDO1lBQ2pELFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQzVDO0tBQ0YsQ0FBQztJQUNGLE9BQU8sMEJBQTBCLENBQy9CLDhCQUE4QixDQUFDLFdBQVcsRUFDMUMsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLHFCQUFtQztJQUVuQyxNQUFNLFNBQVMsR0FBZTtRQUM1QjtZQUNFLE9BQU8sRUFBRSx3Q0FBd0M7WUFDakQsUUFBUSxFQUFFLHFCQUFxQjtTQUNoQztLQUNGLENBQUM7SUFFRixPQUFPLDBCQUEwQixDQUMvQiw4QkFBOEIsQ0FBQyxXQUFXLEVBQzFDLFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsS0FBYTtJQUViLE1BQU0sU0FBUyxHQUFlO1FBQzVCO1lBQ0UsT0FBTyxFQUFFLHdDQUF3QztZQUNqRCxRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGLENBQUM7SUFDRixPQUFPLDBCQUEwQixDQUMvQiw4QkFBOEIsQ0FBQyxXQUFXLEVBQzFDLFNBQVMsQ0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsR0FBVyxFQUFFLE1BQWMsQ0FBQztJQUMzRCxPQUFPLEdBQUcsRUFBRTtRQUVWLE1BQU0sUUFBUSxHQUFJLFNBQWlCLENBQUMsVUFBVSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFFL0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO2FBQU0sSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7YUFBTSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEltcG9ydHNPcmNoZXN0cmF0b3JDb25jdXJyZW5jeSxcbiAgaW1wb3J0c09yY2hlc3RyYXRvckZlYXR1cmUsXG4gIEltcG9ydHNPcmNoZXN0cmF0b3JGZWF0dXJlS2luZCxcbn0gZnJvbSAnLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBJTVBPUlRTX09SQ0hFU1RSQVRPUl9GRUFUVVJFX0NPTkNVUlJFTkNZIH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aENvbmN1cnJlbmN5UmVsYXRpdmVUb0Rvd25saW5rU3BlZWQoXG4gIG1heDogbnVtYmVyID0gNCxcbiAgbWluOiBudW1iZXIgPSAxXG4pOiBJbXBvcnRzT3JjaGVzdHJhdG9yQ29uY3VycmVuY3kge1xuICBjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSU1QT1JUU19PUkNIRVNUUkFUT1JfRkVBVFVSRV9DT05DVVJSRU5DWSxcbiAgICAgIHVzZVZhbHVlOiBkb3dubGlua1RvQ29uY3VycmVuY3lGbihtYXgsIG1pbiksXG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIGltcG9ydHNPcmNoZXN0cmF0b3JGZWF0dXJlKFxuICAgIEltcG9ydHNPcmNoZXN0cmF0b3JGZWF0dXJlS2luZC5Db25jdXJyZW5jeSxcbiAgICBwcm92aWRlcnNcbiAgKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gb25VcGRhdGVDb25jdXJyZW5jeUZuIGNhbGxlZCB3aGVuIHF1ZXVlIHByb2Nlc3NvciB1cGRhdGVzIGNvbmN1cnJlbmN5O1xuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aENvbmN1cnJlbmN5VXBkYXRlRm4oXG4gIG9uVXBkYXRlQ29uY3VycmVuY3lGbjogKCkgPT4gbnVtYmVyXG4pOiBJbXBvcnRzT3JjaGVzdHJhdG9yQ29uY3VycmVuY3kge1xuICBjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSU1QT1JUU19PUkNIRVNUUkFUT1JfRkVBVFVSRV9DT05DVVJSRU5DWSxcbiAgICAgIHVzZVZhbHVlOiBvblVwZGF0ZUNvbmN1cnJlbmN5Rm4sXG4gICAgfSxcbiAgXTtcblxuICByZXR1cm4gaW1wb3J0c09yY2hlc3RyYXRvckZlYXR1cmUoXG4gICAgSW1wb3J0c09yY2hlc3RyYXRvckZlYXR1cmVLaW5kLkNvbmN1cnJlbmN5LFxuICAgIHByb3ZpZGVyc1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aENvbmN1cnJlbmN5U3RhdGljKFxuICB2YWx1ZTogbnVtYmVyXG4pOiBJbXBvcnRzT3JjaGVzdHJhdG9yQ29uY3VycmVuY3kge1xuICBjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSU1QT1JUU19PUkNIRVNUUkFUT1JfRkVBVFVSRV9DT05DVVJSRU5DWSxcbiAgICAgIHVzZVZhbHVlOiB2YWx1ZSxcbiAgICB9LFxuICBdO1xuICByZXR1cm4gaW1wb3J0c09yY2hlc3RyYXRvckZlYXR1cmUoXG4gICAgSW1wb3J0c09yY2hlc3RyYXRvckZlYXR1cmVLaW5kLkNvbmN1cnJlbmN5LFxuICAgIHByb3ZpZGVyc1xuICApO1xufVxuXG5mdW5jdGlvbiBkb3dubGlua1RvQ29uY3VycmVuY3lGbihtYXg6IG51bWJlciwgbWluOiBudW1iZXIgPSAxKTogKCkgPT4gbnVtYmVyIHtcbiAgcmV0dXJuICgpID0+IHtcblxuICAgIGNvbnN0IGRvd25saW5rID0gKG5hdmlnYXRvciBhcyBhbnkpLmNvbm5lY3Rpb24/LmRvd25saW5rID8/IDEwO1xuXG4gICAgaWYgKGRvd25saW5rIDwgMSkge1xuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9IGVsc2UgaWYgKGRvd25saW5rIDwgMikge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KG1pbiwgTWF0aC5mbG9vcihtaW4gKyAobWF4IC0gbWluKSAvIDQpKTtcbiAgICB9IGVsc2UgaWYgKGRvd25saW5rIDwgNCkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KG1pbiwgTWF0aC5mbG9vcihtaW4gKyAobWF4IC0gbWluKSAvIDIpKTtcbiAgICB9IGVsc2UgaWYgKGRvd25saW5rIDwgOCkge1xuICAgICAgcmV0dXJuIE1hdGgubWF4KG1pbiwgTWF0aC5mbG9vcihtaW4gKyAobWF4IC0gbWluKSAvIDEuNSkpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXg7XG4gIH07XG59XG4iXX0=