All files OpenUI5ResourceModuleFactory.js

85% Statements 34/40
50% Branches 4/8
100% Functions 11/11
89.47% Lines 34/38
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 841x 1x 1x       19x 19x       4x 4x   4x             4x 4x 4x 4x 4x 4x   4x 4x 1x       4x 4x 2x 2x 4x     4x 1x     4x 5x 5x       5x     4x         4x           4x     4x   4x                       1x  
const async = require('async');
const Tapable = require('tapable');
const OpenUI5ResourceModule = require('./OpenUI5ResourceModule');
 
class OpenUI5ResourceModuleFactory extends Tapable {
  constructor(resolvers) {
    super();
    this.resolvers = resolvers;
  }
 
  create(data, callback) {
    const dependencies = data.dependencies;
    const dependency = dependencies[0];
 
    this.applyPluginsAsyncWaterfall('before-resolve', {
      context: dependency.context,
      modulePath: dependency.modulePath,
      extensions: dependency.extensions,
      libraries: dependency.libraries,
      translations: dependency.translations,
    }, (err, result) => {
      const context = result.context;
      const modulePath = result.modulePath;
      const extensions = result.extensions;
      const libraries = result.libraries;
      const translations = result.translations;
      const resolvers = this.resolvers;
 
      const messagebundles = ['messagebundle.properties'];
      translations.forEach((translation) => {
        messagebundles.push(`messagebundle_${translation}.properties`);
      });
 
 
      const resources = [];
      libraries.forEach((library) => {
        const libSlash = library.replace(/\./g, '/');
        messagebundles.forEach((messagebundle) => {
          resources.push(`${libSlash}/${messagebundle}`);
        });
      });
      translations.forEach((translation) => {
        resources.push(`sap/ui/core/cldr/${translation}.json`);
      });
 
      async.map(resources, (resource, callback) => {
        resolvers.normal.resolve({}, dependency.context, resource, (err) => {
          Iif (err) {
            callback(err);
            return;
          }
          callback(null, resource);
        });
      }, (err, result) => {
        Iif (err) {
          callback(err);
          return;
        }
 
        this.applyPluginsAsyncWaterfall('after-resolve', {
          context,
          modulePath,
          extensions,
          resources: result,
        }, (err, result) => {
          Iif (err) return callback(err);
 
          // Ignored
          Iif (!result) return callback();
 
          return callback(null, new OpenUI5ResourceModule(
            result.context,
            result.modulePath,
            result.extensions,
            result.resources,
          ));
        });
      });
    });
  }
}
 
module.exports = OpenUI5ResourceModuleFactory;