static resolve()

in lib/resolvers/DependencyResolver.ts [10:55]


  static resolve(file: string, modules?: string[], mainModule?: string): any {

    // Create a virtual context, to isolate the script which modifies the globals
    // to be able to mock a Browser Environment.
    let virtualContext = new VirtualContext({
      $$moduleName: file,
      $$mainModule: mainModule
    });

    // Execute our dependency resolve script in the virtual context, to completely
    // isolate the window modification from our node environment.
    let output = virtualContext.run(`${__dirname}/isolated_angular.js`, {
      strictMode: true
    });

    let targetModules = modules && modules.length ? modules : Object.keys(output.dependencies);

    let resultMap = {
      _flat: [],
      _mainModule: output.mainModule
    };

    targetModules.forEach(function addDependencies(componentName) {
      let exists = output.dependencies.hasOwnProperty(componentName);

      if (exists && !resultMap.hasOwnProperty(componentName)) {
        let component = output.dependencies[componentName];
        let dependencies = component.dependencies;

        resultMap[componentName] = dependencies;
        resultMap._flat.push(componentName);

        if (resultMap._mainModule.dependencies.indexOf(component.rawName) === -1) {
          resultMap._mainModule.dependencies.push(component.rawName);
        }

        if (dependencies && dependencies.length) {
          dependencies.forEach(addDependencies);
        }
      } else if (!exists) {
        Logger.warn(`Module "${componentName}" does not exist and will be skipped.`);
      }
    });

    return resultMap;
  }