|
123456789101112131415161718192021222324252627 |
- 'use strict';
- const lazy = (importedModule, importFn, moduleId) =>
- importedModule === undefined ? importFn(moduleId) : importedModule;
-
- module.exports = importFn => {
- return moduleId => {
- let importedModule;
-
- const handler = {
- get: (target, property) => {
- importedModule = lazy(importedModule, importFn, moduleId);
- return Reflect.get(importedModule, property);
- },
- apply: (target, thisArgument, argumentsList) => {
- importedModule = lazy(importedModule, importFn, moduleId);
- return Reflect.apply(importedModule, thisArgument, argumentsList);
- },
- construct: (target, argumentsList) => {
- importedModule = lazy(importedModule, importFn, moduleId);
- return Reflect.construct(importedModule, argumentsList);
- }
- };
-
- // eslint-disable-next-line prefer-arrow-callback
- return new Proxy(function () {}, handler);
- };
- };
|