UNPKG

lfr-amd-loader

Version:

AMD Loader with support for combo URL and conditional loading

427 lines (425 loc) 12.9 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for umd/url-builder.js</title> <meta charset="utf-8"> <link rel="stylesheet" href="../prettify.css"> <link rel="stylesheet" href="../base.css"> <style type='text/css'> div.coverage-summary .sorter { background-image: url(../sort-arrow-sprite.png); } </style> </head> <body> <div class="header high"> <h1>Code coverage report for <span class="entity">umd/url-builder.js</span></h1> <h2> Statements: <span class="metric">100% <small>(43 / 43)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Branches: <span class="metric">100% <small>(32 / 32)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Functions: <span class="metric">100% <small>(5 / 5)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Lines: <span class="metric">100% <small>(43 / 43)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Ignored: <span class="metric">1 statement, 5 branches</span> &nbsp;&nbsp;&nbsp;&nbsp; </h2> <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">umd/</a> &#187; url-builder.js</div> </div> <div class="body"> <pre><table class="coverage"> <tr><td class="line-count">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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128</td><td class="line-coverage"><span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-yes">5</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-yes">25</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">25</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">24</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">24</span> <span class="cline-any cline-yes">5</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">19</span> <span class="cline-any cline-yes">18</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">25</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">24</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">24</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">24</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">8</span> <span class="cline-any cline-yes">8</span> <span class="cline-any cline-yes">3</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">24</span> <span class="cline-any cline-yes">11</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">24</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function (global, factory) { 'use strict'; &nbsp; var built = factory(global); &nbsp; /* istanbul ignore else */ <span class="skip-if-branch" title="else path not taken" >E</span>if (typeof module === 'object' &amp;&amp; module) { module.exports = built; } &nbsp; /* istanbul ignore next */ <span class="skip-if-branch" title="if path not taken" >I</span>if (typeof define === 'function' &amp;&amp; <span class="branch-1 cbranch-skip" title="branch not covered" >define.amd)</span> { <span class="cstat-skip" title="statement not covered" > define(factory);</span> } &nbsp; global.URLBuilder = built; }(typeof global !== 'undefined' ? global : /* istanbul ignore next */ <span class="branch-1 cbranch-skip" title="branch not covered" >this,</span> function (global) { &nbsp; 'use strict'; &nbsp; // External protocols regex, supports: // "http", "https", "//" and "www." var REGEX_EXTERNAL_PROTOCOLS = /^https?:\/\/|\/\/|www\./; &nbsp; /** * Creates an instance of URLBuilder class. * * @constructor * @param {object} - instance of {@link ConfigParser} object. */ &nbsp; function URLBuilder(configParser) { this._configParser = configParser; } &nbsp; URLBuilder.prototype = { constructor: URLBuilder, &nbsp; /** * Returns a list of URLs from provided list of modules. * * @param {array} modules List of modules for which URLs should be created. * @return {array} List of URLs. */ build: function (modules) { var buffer = []; var result = []; &nbsp; var registeredModules = this._configParser.getModules(); var config = this._configParser.getConfig(); &nbsp; var basePath = config.basePath; &nbsp; /* istanbul ignore else */ if (basePath.charAt(basePath.length - 1) !== '/') { basePath += '/'; } &nbsp; for (var i = 0; i &lt; modules.length; i++) { var module = registeredModules[modules[i]]; &nbsp; // If module has fullPath, individual URL have to be created. if (module.fullPath) { result.push(module.fullPath); &nbsp; } else { var path = this._getModulePath(module); &nbsp; // If the URL starts with external protocol, individual URL shall be created. if (REGEX_EXTERNAL_PROTOCOLS.test(path)) { result.push(path); &nbsp; // If combine is disabled, create individual URL based on config URL and module path. } else if (!config.combine) { result.push(config.url + basePath + path); &nbsp; } else { // If combine is true and module does not have full path, it will be collected // in a buffer to be loaded among with other modules from combo loader. buffer.push(path); } } &nbsp; module.requested = true; } &nbsp; // Add to the result all modules, which have to be combined. if (buffer.length) { result.push(config.url + basePath + buffer.join('&amp;' + basePath)); &nbsp; buffer.length = 0; } &nbsp; return result; }, &nbsp; /** * Returns the path for a module. If module has property path, it will be returned directly. Otherwise, * the name of module will be used and extension .js will be added to module name if omitted. * * @protected * @param {object} module The module which path should be returned. * @return {string} Module path. */ _getModulePath: function (module) { var path = module.path || module.name; &nbsp; var paths = this._configParser.getConfig().paths; &nbsp; for (var key in paths) { /* istanbul ignore else */ <span class="skip-if-branch" title="else path not taken" >E</span>if (Object.prototype.hasOwnProperty.call(paths, key)) { if (path === key || path.indexOf(key + '/') === 0) { path = paths[key] + path.substring(key.length); } } } &nbsp; if (!REGEX_EXTERNAL_PROTOCOLS.test(path) &amp;&amp; path.indexOf('.js') !== path.length - 3) { path += '.js'; } &nbsp; return path; } }; &nbsp; return URLBuilder; }));</pre></td></tr> </table></pre> </div> <div class="footer"> <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Jun 16 2015 17:51:38 GMT+0200 (CEST)</div> </div> <script src="../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../sorter.js"></script> </body> </html>