All files OpenUI5ResourceDependencyParserPlugin.js

91.67% Statements 22/24
90.48% Branches 19/21
100% Functions 4/4
91.67% Lines 22/24
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 531x       19x       19x   19x 4x 4x 4x 4x 4x 4x     4x 3x 3x 3x         3x       3x   1x     4x                 4x 4x 4x       1x  
const OpenUI5ResourceDependency = require('./OpenUI5ResourceDependency');
 
class OpenUI5ResourceDependencyParserPlugin {
  constructor(options) {
    this.options = options;
  }
 
  apply(parser) {
    const options = this.options || {};
 
    parser.plugin('call jQuery.sap.loadResource', (expr) => {
      const modulePath = options.modulePath || '';
      const resources = options.resources || {};
      const extensions = resources.extensions || ['properties', 'xml'];
      const translations = options.translations || [];
      const libraries = options.libs || [];
      const arg = expr.arguments[0];
 
      let param;
      if (arg.type === 'ObjectExpression') {
        const property = arg.properties.find((prop) => {
          Eif (prop.key && prop.key.type === 'Identifier' && prop.key.name === 'url') {
            return true;
          }
          return false;
        });
 
        Iif (!property) {
          throw new Error('Property url missing in object for jQuery.sap.loadResource');
        }
 
        param = parser.evaluateExpression(property.value);
      } else {
        param = parser.evaluateExpression(arg);
      }
 
      const dep = new OpenUI5ResourceDependency(
        parser.state.options.context,
        modulePath,
        extensions,
        libraries,
        translations,
        expr.range,
        param.range,
      );
      dep.loc = expr.loc;
      parser.state.current.addDependency(dep);
      return true;
    });
  }
}
module.exports = OpenUI5ResourceDependencyParserPlugin;