UNPKG

lmd

Version:

LMD: Lazy Module Declaration

1,505 lines (1,357 loc) 150 kB
// This file was automatically generated from "index.lmd.json" (function (global, main, modules, modules_options, options) { var initialized_modules = {}, global_eval = function (code) { return global.Function('return ' + code)(); }, global_noop = function () {}, global_document = global.document, local_undefined, /** * @param {String} moduleName module name or path to file * @param {*} module module content * * @returns {*} */ register_module = function (moduleName, module) { lmd_trigger('lmd-register:before-register', moduleName, module); // Predefine in case of recursive require var output = {'exports': {}}; initialized_modules[moduleName] = 1; modules[moduleName] = output.exports; if (!module) { // if undefined - try to pick up module from globals (like jQuery) // or load modules from nodejs/worker environment module = lmd_trigger('js:request-environment-module', moduleName, module)[1] || global[moduleName]; } else if (typeof module === 'function') { // Ex-Lazy LMD module or unpacked module ("pack": false) var module_require = lmd_trigger('lmd-register:decorate-require', moduleName, lmd_require)[1]; // Make sure that sandboxed modules cant require if (modules_options[moduleName] && modules_options[moduleName].sandbox && typeof module_require === 'function') { module_require = local_undefined; } module = module(module_require, output.exports, output) || output.exports; } module = lmd_trigger('lmd-register:after-register', moduleName, module)[1]; return modules[moduleName] = module; }, /** * List of All lmd Events * * @important Do not rename it! */ lmd_events = {}, /** * LMD event trigger function * * @important Do not rename it! */ lmd_trigger = function (event, data, data2, data3) { var list = lmd_events[event], result; if (list) { for (var i = 0, c = list.length; i < c; i++) { result = list[i](data, data2, data3) || result; if (result) { // enable decoration data = result[0] || data; data2 = result[1] || data2; data3 = result[2] || data3; } } } return result || [data, data2, data3]; }, /** * LMD event register function * * @important Do not rename it! */ lmd_on = function (event, callback) { if (!lmd_events[event]) { lmd_events[event] = []; } lmd_events[event].push(callback); }, /** * @param {String} moduleName module name or path to file * * @returns {*} */ lmd_require = function (moduleName) { var module = modules[moduleName]; var replacement = lmd_trigger('*:rewrite-shortcut', moduleName, module); if (replacement) { moduleName = replacement[0]; module = replacement[1]; } lmd_trigger('*:before-check', moduleName, module); // Already inited - return as is if (initialized_modules[moduleName] && module) { return module; } lmd_trigger('*:before-init', moduleName, module); // Lazy LMD module not a string if (typeof module === 'string' && module.indexOf('(function(') === 0) { module = global_eval(module); } return register_module(moduleName, module); }, output = {'exports': {}}, /** * Sandbox object for plugins * * @important Do not rename it! */ sandbox = { 'global': global, 'modules': modules, 'modules_options': modules_options, 'options': options, 'eval': global_eval, 'register': register_module, 'require': lmd_require, 'initialized': initialized_modules, 'noop': global_noop, 'document': global_document, 'on': lmd_on, 'trigger': lmd_trigger, 'undefined': local_undefined }; for (var moduleName in modules) { // reset module init flag in case of overwriting initialized_modules[moduleName] = 0; } /** * @name sandbox */ (function (sb) { var domOnlyLoaders = { 'css': true, 'image': true }; var reEvalable = /(java|ecma)script|json/, reJson = /json/; /** * Load off-package LMD module * * @param {String|Array} moduleName same origin path to LMD module * @param {Function} [callback] callback(result) undefined on error others on success */ sb.on('*:preload', function (moduleName, callback, type) { var replacement = sb.trigger('*:request-off-package', moduleName, callback, type), // [[returnResult, moduleName, module, true], callback, type] returnResult = [replacement[0][0], callback, type]; if (replacement[0][3]) { // isReturnASAP return returnResult; } var module = replacement[0][2], XMLHttpRequestConstructor = sb.global.XMLHttpRequest || sb.global.ActiveXObject; callback = replacement[1]; moduleName = replacement[0][1]; if (!XMLHttpRequestConstructor) { sb.trigger('preload:require-environment-file', moduleName, module, callback); return returnResult; } // Optimized tiny ajax get // @see https://gist.github.com/1625623 var xhr = new XMLHttpRequestConstructor("Microsoft.XMLHTTP"); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { // 3. Check for correct status 200 or 0 - OK? if (xhr.status < 201) { var contentType = xhr.getResponseHeader('content-type'); module = xhr.responseText; if (reEvalable.test(contentType)) { module = sb.trigger('*:wrap-module', moduleName, module, contentType)[1]; if (!reJson.test(contentType)) { module = sb.trigger('*:coverage-apply', moduleName, module)[1]; } sb.trigger('preload:before-callback', moduleName, module); module = sb.eval(module); } else { sb.trigger('preload:before-callback', moduleName, module); } if (type === 'preload') { // 4. Declare it sb.modules[moduleName] = module; // 5. Then callback it callback(moduleName); } else { // 4. Callback it callback(sb.register(moduleName, module)); } } else { sb.trigger('*:request-error', moduleName, module); callback(); } } }; xhr.open('get', moduleName); xhr.send(); return returnResult; }); /** * @event *:request-off-package * * @param {String} moduleName * @param {Function} callback * @param {String} type * * @retuns yes [asap, returnResult] */ sb.on('*:request-off-package', function (moduleName, callback, type) { var returnResult = sb.require; callback = callback || sb.noop; if (typeof moduleName !== "string") { callback = sb.trigger('*:request-parallel', moduleName, callback, sb.require[type])[1]; if (!callback) { return [[returnResult, moduleName, module, true], callback, type]; } } var module = sb.modules[moduleName]; var replacement = sb.trigger('*:rewrite-shortcut', moduleName, module); if (replacement) { moduleName = replacement[0]; module = replacement[1]; } sb.trigger('*:before-check', moduleName, module, type); // If module exists or its a node.js env if (module || (domOnlyLoaders[type] && !sb.document)) { callback(type === "preload" ? moduleName : sb.initialized[moduleName] ? module : sb.require(moduleName)); return [[returnResult, moduleName, module, true], callback, type]; } sb.trigger('*:before-init', moduleName, module); callback = sb.trigger('*:request-race', moduleName, callback)[1]; // if already called if (!callback) { return [[returnResult, moduleName, module, true], callback, type] } return [[returnResult, moduleName, module, false], callback, type]; }); }(sandbox)); /** * Async loader of off-package LMD modules (special LMD format file) * * @see /README.md near "LMD Modules types" for details * * Flag "async" * * This plugin provides require.async() function */ /** * @name sandbox */ (function (sb) { /** * Load off-package LMD module * * @param {String|Array} moduleName same origin path to LMD module * @param {Function} [callback] callback(result) undefined on error others on success */ sb.require.async = function (moduleName, callback) { return sb.trigger('*:preload', moduleName, callback, 'async')[0]; }; }(sandbox)); /** * Parallel resource loader * * Flag "parallel" * * This plugin provides private "parallel" function */ /** * @name sandbox */ (function (sb) { function parallel(method, items, callback) { var i = 0, j = 0, c = items.length, results = [], ready; var readyFactory = function (index) { return function (data) { // keep the order results[index] = data; j++; if (j >= c) { callback.apply(sb.global, results); } } }; for (; i < c; i++) { ready = readyFactory(i); method(items[i], ready); } } /** * @event *:request-parallel parallel module request for require.async(['a', 'b', 'c']) etc * * @param {Array} moduleNames list of modules to init * @param {Function} callback this callback will be called when module inited * @param {Function} method method to call for init * * @retuns yes empty environment */ sb.on('*:request-parallel', function (moduleNames, callback, method) { parallel(method, moduleNames, callback); return []; }); }(sandbox)); /** * This plugin enables shortcuts * * Flag "shortcuts" * * This plugin provides private "is_shortcut" function */ /** * @name sandbox */ (function (sb) { function is_shortcut(moduleName, moduleContent) { return !sb.initialized[moduleName] && typeof moduleContent === "string" && moduleContent.charAt(0) == '@'; } function rewrite_shortcut(moduleName, module) { if (is_shortcut(moduleName, module)) { sb.trigger('shortcuts:before-resolve', moduleName, module); moduleName = module.replace('@', ''); // #66 Shortcut self reference should be resolved as undefined->global name var newModule = sb.modules[moduleName]; module = newModule === module ? sb.undefined : newModule; } return [moduleName, module]; } /** * @event *:rewrite-shortcut request for shortcut rewrite * * @param {String} moduleName race for module name * @param {String} module this callback will be called when module inited * * @retuns yes returns modified moduleName and module itself */ sb.on('*:rewrite-shortcut', rewrite_shortcut); /** * @event *:rewrite-shortcut fires before stats plugin counts require same as *:rewrite-shortcut * but without triggering shortcuts:before-resolve event * * @param {String} moduleName race for module name * @param {String} module this callback will be called when module inited * * @retuns yes returns modified moduleName and module itself */ sb.on('stats:before-require-count', function (moduleName, module) { if (is_shortcut(moduleName, module)) { moduleName = module.replace('@', ''); module = sb.modules[moduleName]; return [moduleName, module]; } }); }(sandbox)); /** * Package usage statistics * * @see /README.md near "Application statistics. Require, load, eval, call statistics" for details * * Flag "stats" * * This plugin provides require.stats() function and bunch of private functions */ /** * @name LineReport * @type {Object} * * @property {Boolean} lines if false -> not called * @property {Array[]} conditions list of unused conditions [[0, 2], [7, 0]] * @property {String[]} functions list of unused functions in that line */ /** * @name TypeReport * @type {Object} * * @property {Number} total * @property {Number} covered * @property {Number} percentage */ /** * @name LmdCoverage * @type {Object} * * @property {TypeReport} lines * @property {TypeReport} conditions * @property {TypeReport} functions * * @property {Object} report {lineNum: LineReport} */ /** * @name lmdStats * @type {Object} * * @property {String} name module name * @property {Object} moduleAccessTimes module access times {byModuleName: accessTimes} * @property {Number[]} accessTimes access times * @property {Number} initTime module init time: load+eval+call * @property {String[]} shortcuts list of used shortcuts * * @property {String} type module type: global, in-package, off-package * * @property {String[]} lines list of all statements * @property {String[]} conditions list of all conditions * @property {String[]} functions list of all functions * * @property {Object} runLines {lineId: callTimes} * @property {Object} runConditions {conditionId: [falseTimes, trueTimes]} * @property {Object} runFunctions {functionId: callTimes} * * @property {LmdCoverage} coverage * * @example * { * name: "pewpew", * type: "in-package", * accessTimes: [0], * moduleAccessTimes: [{ * time: 0, * byModule: "main" * }], * initTime: 10, * shortcuts: ["ololo"], * * lines: ["4", "5", "8"], * conditions: ["4:1", "5:2"], * functions: ["FunctionName:5:1", "FunctionName2:9:1"], * * runLines: { * "4": 1 * "5": 0, * "8": 14 * }, * * runConditions: { * "4:1": [1, 0], * "5:2": [0, 0] * }, * * runFunctions: { * "FunctionName:5:1": 10 * "FunctionName2:9:1": 0 * } * * coverage: { * lines: { * total: 3, * covered: 2, * percentage: 66.66667 * }, * * conditions: { * total: 2, * covered: 0.5, * percentage: 25 * }, * * functions: { * total: 2, * covered: 1, * percentage: 50 * }, * * report: { * "4": { * conditions: [[1, 0]] * }, * "5": { * lines: false, * conditions: [[0, 0]] * }, * "9": { * functions: ["FunctionName2"] * } * } * } * } */ /** * @name sandbox */ (function (sb) { /** * @type {lmdStats} */ var stats_results = {}, stats_Date = sb.global.Date, stats_startTime = +new stats_Date; function stats_get(moduleName) { return stats_results[moduleName] ? stats_results[moduleName] : stats_results[moduleName] = { name: moduleName, accessTimes: [], moduleAccessTimes: {}, initTime: -1 }; } function stats_initStart(moduleName) { stats_get(moduleName).initTime = +new stats_Date; } function stats_initEnd(moduleName) { var stat = stats_get(moduleName); stat.initTime = +new stats_Date - stat.initTime; } function stats_require(moduleName) { var stat = stats_get(moduleName); stat.accessTimes.push(+new stats_Date - stats_startTime); } function stats_require_module(moduleName, byModuleName) { var stat = stats_get(moduleName); if (!stat.moduleAccessTimes[byModuleName]) { stat.moduleAccessTimes[byModuleName] = []; } stat.moduleAccessTimes[byModuleName].push(+new stats_Date - stats_startTime); } function stats_wrap_require_method(method, thisObject, byModuleName) { return function (moduleName) { stats_require_modules(moduleName, byModuleName); return method.apply(thisObject, arguments); } } function stats_require_modules(moduleName, byModuleName) { var moduleNames = []; if (Object.prototype.toString.call(moduleName) !== "[object Array]") { moduleNames = [moduleName]; } else { moduleNames = moduleName; } for (var i = 0, c = moduleNames.length, moduleNamesItem, module; i < c; i++) { moduleNamesItem = moduleNames[i]; module = sb.modules[moduleNamesItem]; var replacement = sb.trigger('stats:before-require-count', moduleNamesItem, module); if (replacement) { moduleNamesItem = replacement[0]; } stats_require_module(moduleNamesItem, byModuleName); } } function stats_wrap_require(require, byModuleName) { var wrappedRequire = stats_wrap_require_method(require, this, byModuleName); for (var name in require) { wrappedRequire[name] = require[name]; } if (require.async) { wrappedRequire.async = stats_wrap_require_method(require.async, this, byModuleName); } if (require.css) { wrappedRequire.css = stats_wrap_require_method(require.css, this, byModuleName); } if (require.js) { wrappedRequire.js = stats_wrap_require_method(require.js, this, byModuleName); } return wrappedRequire; } function stats_type(moduleName, type) { var stat = stats_get(moduleName); stat.type = type; } function stats_shortcut(moduleName, shortcut) { var module = stats_get(moduleName.replace('@', '')), shortcuts = module.shortcuts, index; if (!shortcuts) { shortcuts = module.shortcuts = []; } // Link shortcut and real module if (!stats_results[shortcut]) { stats_results[shortcut] = module; } // ie6 indexOf hackz index = sb.trigger('*:request-indexof', [].indexOf)[0].call(shortcuts, shortcut); if (index === -1) { shortcuts.push(shortcut); } } /** * Returns module statistics or all statistics * * @param {String} [moduleName] * @return {Object} */ sb.require.stats = function (moduleName) { var replacement = sb.trigger('stats:before-return-stats', moduleName, stats_results); if (replacement && replacement[1]) { return replacement[1]; } return moduleName ? stats_results[moduleName] : stats_results; }; /** * @event lmd-register:decorate-require request for fake require * * @param {String} moduleName * @param {Object} module * * @retuns yes wraps require */ sb.on('lmd-register:decorate-require', function (moduleName, require) { var options = sb.modules_options[moduleName] || {}; if (options.sandbox) { return; } return [moduleName, stats_wrap_require(require, moduleName)]; }); /** * @event lmd-register:after-register after module register event * * @param {String} moduleName * @param {Object} module * * @retuns no */ sb.on('lmd-register:after-register', function (moduleName) { stats_initEnd(moduleName); }); /** * @event lmd-register:before-register before module register event * * @param {String} moduleName * @param {Object} module * * @retuns no */ sb.on('lmd-register:before-register', function (moduleName, module) { stats_type(moduleName, !module ? 'global' : typeof sb.modules[moduleName] === "undefined" ? 'off-package' : 'in-package'); }); /** * @event *:before-check before module cache check * * @param {String} moduleName * @param {Object} module * @param {String} type * * @retuns no */ sb.on('*:before-check', function (moduleName, module, type) { switch (type) { case "css": if (!(module || !sb.document) || sb.initialized[moduleName]) { stats_require(moduleName); } break; case "js": case "async": if (!module || sb.initialized[moduleName]) { stats_require(moduleName); } break; default: stats_require(moduleName); } }); /** * @event *:before-init calls when module is goint to eval or call * * @param {String} moduleName * @param {Object} module * * @retuns no */ sb.on('*:before-init', function (moduleName) { stats_initStart(moduleName); }); /** * @event *:request-error module load error * * @param {String} moduleName * @param {Object} module * * @retuns no */ sb.on('*:request-error', function (moduleName) { stats_initEnd(moduleName); }); /** * @event shortcuts:before-resolve moduleName is shortcut and its goint to resolve with actual name * * @param {String} moduleName * @param {Object} module * * @retuns no */ sb.on('shortcuts:before-resolve', function (moduleName, module) { // assign shortcut name for module stats_shortcut(module, moduleName); }); /** * @event *:stats-get somethins is request raw module stats * * @param {String} moduleName * @param {Object} result default stats * * @retuns yes */ sb.on('*:stats-get', function (moduleName, result) { return [moduleName, stats_get(moduleName)]; }); /** * @event *:stats-type something tells stats to overwrite module type * * @param {String} moduleName * @param {String} packageType * * @retuns no */ sb.on('*:stats-type', function (moduleName, packageType) { stats_type(moduleName, packageType); }); /** * @event *:stats-results somethins is request processed module stats * * @param {String} moduleName * @param {Object} result default stats * * @retuns yes */ sb.on('*:stats-results', function (moduleName, result) { return [moduleName, stats_results[moduleName]]; }); }(sandbox)); /** * @name sandbox */ (function (sb) { /** * Calculate coverage total * * @param moduleName */ function stats_calculate_coverage(moduleName) { var stats = sb.trigger('*:stats-get', moduleName, null)[1], total, covered, lineId, lineNum, parts; var lineReport = {}; if (!stats.lines) { return; } stats.coverage = {}; covered = 0; total = stats.lines.length; for (lineId in stats.runLines) { if (stats.runLines[lineId] > 0) { covered++; } else { lineNum = lineId; if (!lineReport[lineNum]) { lineReport[lineNum] = {}; } lineReport[lineNum].lines = false; } } stats.coverage.lines = { total: total, covered: covered, percentage: 100.0 * (total ? covered / total : 1) }; covered = 0; total = stats.functions.length; for (lineId in stats.runFunctions) { if (stats.runFunctions[lineId] > 0) { covered++; } else { parts = lineId.split(':'); lineNum = parts[1]; if (!lineReport[lineNum]) { lineReport[lineNum] = {}; } if (!lineReport[lineNum].functions) { lineReport[lineNum].functions = []; } lineReport[lineNum].functions.push(parts[0]); } } stats.coverage.functions = { total:total, covered:covered, percentage:100.0 * (total ? covered / total : 1) }; covered = 0; total = stats.conditions.length; for (lineId in stats.runConditions) { if (stats.runConditions[lineId][1] > 0) { covered += 1; } if (stats.runConditions[lineId][1] === 0) { parts = lineId.split(':'); lineNum = parts[1]; if (!lineReport[lineNum]) { lineReport[lineNum] = {}; } if (!lineReport[lineNum].conditions) { lineReport[lineNum].conditions = []; } lineReport[lineNum].conditions.push(stats.runConditions[lineId]); } } stats.coverage.conditions = { total:total, covered:covered, percentage:100.0 * (total ? covered / total : 1) }; stats.coverage.report = lineReport; } /** * Line counter * * @private */ sb.require.coverage_line = function (moduleName, lineId) { sb.trigger('*:stats-results', moduleName, null)[1].runLines[lineId] += 1; }; /** * Function call counter * * @private */ sb.require.coverage_function = function (moduleName, lineId) { sb.trigger('*:stats-results', moduleName, null)[1].runFunctions[lineId] += 1; }; /** * Condition counter * * @private */ sb.require.coverage_condition = function (moduleName, lineId, condition) { sb.trigger('*:stats-results', moduleName, null)[1].runConditions[lineId][condition ? 1 : 0] += 1; return condition; }; /** * Registers module * * @private */ function coverage_module(moduleName, lines, conditions, functions) { var stats = sb.trigger('*:stats-get', moduleName, null)[1]; if (stats.lines) { return; } stats.lines = lines; stats.conditions = conditions; stats.functions = functions; stats.runLines = {}; stats.runConditions = {}; stats.runFunctions = {}; for (var i = 0, c = lines.length; i < c; i += 1) { stats.runLines[lines[i]] = 0; } for (i = 0, c = conditions.length; i < c; i += 1) { stats.runConditions[conditions[i]] = [0, 0]; } for (i = 0, c = functions.length; i < c; i += 1) { stats.runFunctions[functions[i]] = 0; } } (function () { var moduleOption; for (var moduleName in sb.modules_options) { if (sb.modules_options.hasOwnProperty(moduleName)) { moduleOption = sb.modules_options[moduleName]; if (!moduleOption.coverage) { continue; } coverage_module(moduleName, moduleOption.lines, moduleOption.conditions, moduleOption.functions); sb.trigger('*:stats-type', moduleName, 'in-package'); } } })(); /** * @event *:stats-coverage adds module parameters for statistics * * @param {String} moduleName * @param {Object} moduleOption preprocessed data for lines, conditions and functions * * @retuns no */ sb.on('*:stats-coverage', function (moduleName, moduleOption) { coverage_module(moduleName, moduleOption.lines, moduleOption.conditions, moduleOption.functions); }); sb.on('lmd-register:decorate-require', function (moduleName, require) { var options = sb.modules_options[moduleName] || {}; if (!options.sandbox) { return; } return [moduleName, { coverage_line: require.coverage_line, coverage_function: require.coverage_function, coverage_condition: require.coverage_condition }]; }); /** * @event stats:before-return-stats stats is going to return stats data * this event can modify that data * * @param {String|undefined} moduleName * @param {Object} stats_results default stats * * @retuns yes depend on moduleName value returns empty array or replaces stats_results */ sb.on('stats:before-return-stats', function (moduleName, stats_results) { if (moduleName) { stats_calculate_coverage(moduleName); return []; } else { for (var moduleNameId in stats_results) { stats_calculate_coverage(moduleNameId); } // calculate global coverage var result = { modules: stats_results, global: { lines: { total: 0, covered: 0, percentage: 0 }, conditions: { total: 0, covered: 0, percentage: 0 }, functions: { total: 0, covered: 0, percentage: 0 } } }, modulesCount = 0, moduleStats; for (var moduleName in stats_results) { moduleStats = stats_results[moduleName]; // not a shortcut if (moduleName === moduleStats.name && moduleStats.coverage) { modulesCount++; for (var statName in moduleStats.coverage) { if (statName !== "report") { result.global[statName].total += moduleStats.coverage[statName].total; result.global[statName].covered += moduleStats.coverage[statName].covered; result.global[statName].percentage += moduleStats.coverage[statName].percentage; } } } } for (statName in result.global) { // avg percentage result.global[statName].percentage /= modulesCount; } return [moduleName, result]; } }); }(sandbox)); /** * Coverage for off-package LMD modules * * Flag "stats_sendto" * * This plugin provides sendTo private function and require.stats.sendTo() public function * * This plugin depends on stats */ /** * @name sandbox */ (function (sb) { /** * XDomain post * * @param {String} host * @param {String} method * @param {Object} data * @param {String} [reportName] * */ var sendTo = function () { var runId = function () { var userAgent = navigator.userAgent, rchrome = /(chrome)[ \/]([\w.]+)/i, rwebkit = /(webkit)[ \/]([\w.]+)/i, ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/i, rmsie = /(msie) ([\w.]+)/i, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/i; userAgent = (userAgent.match(rchrome) || userAgent.match(rwebkit) || userAgent.match(ropera) || userAgent.match(rmsie) || userAgent.match(rmozilla) ); return (userAgent ? userAgent.slice(1).join('-') : 'undefined-0') + '-' + (new Date+'').split(' ').slice(1, 5).join('_') + '-' + Math.random(); }(); /** * @return {HTMLIFrameElement} */ return function (host, method, data, reportName) { var JSON = sb.trigger('*:request-json', sb.global.JSON)[0]; // Add the iframe with a unique name var iframe = sb.document.createElement("iframe"), uniqueString = sb.global.Math.random(); sb.document.body.appendChild(iframe); iframe.style.visibility = "hidden"; iframe.style.position = "absolute"; iframe.style.left = "-1000px"; iframe.style.top = "-1000px"; iframe.contentWindow.name = uniqueString; // construct a form with hidden inputs, targeting the iframe var form = sb.document.createElement("form"); form.target = uniqueString; form.action = host + "/" + method + '/' + (reportName || runId).replace(/\/|\\|\./g, '_'); form.method = "POST"; form.setAttribute('accept-charset', 'utf-8'); // repeat for each parameter var input = sb.document.createElement("input"); input.type = "hidden"; input.name = "json"; input.value = JSON.stringify(data); form.appendChild(input); document.body.appendChild(form); form.submit(); return iframe; } }(); sb.require.stats.sendTo = function (host) { return sendTo(host, "stats", sb.require.stats()); }; }(sandbox)); /** * Coverage for off-package LMD modules * * Flag "stats_auto" * * This plugin depends on stats and stats_sendto */ /** * @name sandbox */ (function (sb) { var timeout, host = sb.options.stats_host; if (!host) return; if (host === true) { host = 'http://' + sb.global.location.hostname + ':8081'; } function updateStats() { if (timeout) return; timeout = setTimeout(function () { sb.require.stats.sendTo(host); timeout = 0; }, 2000); } function registerCallbacks() { var events = 'click0keyup0orientationchange0resize0scroll0focus'.split(0); for (var i = 0, c = events.length; i < c; i++) { sb.document.body.addEventListener(events[i], updateStats, false); } } var interval = sb.global.setInterval(function () { if (sb.document.body) { sb.global.clearInterval(interval); registerCallbacks(); } }, 100); sb.on('*:before-check', updateStats); }(sandbox)); main(lmd_trigger('lmd-register:decorate-require', 'main', lmd_require)[1], output.exports, output); })/*DO NOT ADD ; !*/ (this,(function(require, exports, module) { var require = arguments[0]; require.coverage_function("main", "(?):0:1"); require.coverage_line("main", "1"); var $ = require().$, Roster = require("b-roster"); require.coverage_line("main", "4"); new Roster($("body")); }),{ "b-roster": (function(require, exports, module) { var require = arguments[0]; require.coverage_function("b-roster", "(?):0:1"); require.coverage_line("b-roster", "1"); var $ = require().$; require.coverage_line("b-roster", "3"); function Roster(element) { require.coverage_function("b-roster", "Roster:3:114"); require.coverage_line("b-roster", "4"); element.innerHTML += this.renderWrapper(); require.coverage_line("b-roster", "6"); var contactsHtml = []; require.coverage_line("b-roster", "8"); for (var i = 100; i-- > 0; ) { require.coverage_line("b-roster", "9"); contactsHtml.push(this.renderItem()); } require.coverage_line("b-roster", "12"); $(".b-roster").innerHTML = contactsHtml.join(""); require.coverage_line("b-roster", "14"); $(".b-roster").addEventListener("click", function(e) { require.coverage_function("b-roster", "(?):14:404"); require.coverage_line("b-roster", "18"); require.async([ "b-dialog", "b-talk" ], function(Dialog) { require.coverage_function("b-roster", "(?):18:568"); require.coverage_line("b-roster", "19"); new Dialog(element); require.coverage_line("b-roster", "20"); require.stats.sendTo("http://localhost:8081"); }); }, false); } require.coverage_line("b-roster", "25"); Roster.prototype.renderWrapper = function() { require.coverage_function("b-roster", "renderWrapper:25:743"); require.coverage_line("b-roster", "26"); return '<div class="b-roster"></div>'; }; require.coverage_line("b-roster", "29"); Roster.prototype.renderItem = function() { require.coverage_function("b-roster", "renderItem:29:834"); require.coverage_line("b-roster", "30"); return '<div class="b-roster__item js-item">' + '<div class="b-roster__item__photo js-photo"></div>' + '<div class="b-roster__item__meta">' + '<div class="b-roster__item__meta__name">' + this.renderName("Test Test Test Test") + "</div>" + '<div class="b-roster__item__meta__status b-roster__item__meta__status_status_online">' + '<span class="b-roster__item__meta__status_icon"></span>' + "<span>Online</span>" + "</div>" + "</div>" + "</div>"; }; require.coverage_line("b-roster", "42"); Roster.prototype.renderName = function(name) { require.coverage_function("b-roster", "renderName:42:1490"); require.coverage_line("b-roster", "43"); return Long_Long_Name_renderName0("<span>" + name + "</span>"); }; require.coverage_line("b-roster", "47"); function Long_Long_Name_renderName0(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName0:47:1596"); require.coverage_line("b-roster", "48"); return Long_Long_Name_renderName1("<span>" + name + "</span>"); } require.coverage_line("b-roster", "51"); function Long_Long_Name_renderName1(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName1:51:1728"); require.coverage_line("b-roster", "52"); return Long_Long_Name_renderName2("<span>" + name + "</span>"); } require.coverage_line("b-roster", "55"); function Long_Long_Name_renderName2(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName2:55:1860"); require.coverage_line("b-roster", "56"); return Long_Long_Name_renderName3("<span>" + name + "</span>"); } require.coverage_line("b-roster", "59"); function Long_Long_Name_renderName3(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName3:59:1992"); require.coverage_line("b-roster", "60"); return Long_Long_Name_renderName4("<span>" + name + "</span>"); } require.coverage_line("b-roster", "63"); function Long_Long_Name_renderName4(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName4:63:2124"); require.coverage_line("b-roster", "64"); return Long_Long_Name_renderName5("<span>" + name + "</span>"); } require.coverage_line("b-roster", "67"); function Long_Long_Name_renderName5(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName5:67:2256"); require.coverage_line("b-roster", "68"); return Long_Long_Name_renderName6("<span>" + name + "</span>"); } require.coverage_line("b-roster", "71"); function Long_Long_Name_renderName6(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName6:71:2388"); require.coverage_line("b-roster", "72"); return Long_Long_Name_renderName7("<span>" + name + "</span>"); } require.coverage_line("b-roster", "75"); function Long_Long_Name_renderName7(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName7:75:2520"); require.coverage_line("b-roster", "76"); return Long_Long_Name_renderName8("<span>" + name + "</span>"); } require.coverage_line("b-roster", "79"); function Long_Long_Name_renderName8(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName8:79:2652"); require.coverage_line("b-roster", "80"); return Long_Long_Name_renderName9("<span>" + name + "</span>"); } require.coverage_line("b-roster", "83"); function Long_Long_Name_renderName9(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName9:83:2784"); require.coverage_line("b-roster", "84"); return Long_Long_Name_renderName10("<span>" + name + "</span>"); } require.coverage_line("b-roster", "87"); function Long_Long_Name_renderName10(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName10:87:2917"); require.coverage_line("b-roster", "88"); return Long_Long_Name_renderName11("<span>" + name + "</span>"); } require.coverage_line("b-roster", "91"); function Long_Long_Name_renderName11(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName11:91:3051"); require.coverage_line("b-roster", "92"); return Long_Long_Name_renderName12("<span>" + name + "</span>"); } require.coverage_line("b-roster", "95"); function Long_Long_Name_renderName12(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName12:95:3185"); require.coverage_line("b-roster", "96"); return Long_Long_Name_renderName13("<span>" + name + "</span>"); } require.coverage_line("b-roster", "99"); function Long_Long_Name_renderName13(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName13:99:3319"); require.coverage_line("b-roster", "100"); return Long_Long_Name_renderName14("<span>" + name + "</span>"); } require.coverage_line("b-roster", "103"); function Long_Long_Name_renderName14(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName14:103:3453"); require.coverage_line("b-roster", "104"); return Long_Long_Name_renderName15("<span>" + name + "</span>"); } require.coverage_line("b-roster", "107"); function Long_Long_Name_renderName15(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName15:107:3587"); require.coverage_line("b-roster", "108"); return Long_Long_Name_renderName16("<span>" + name + "</span>"); } require.coverage_line("b-roster", "111"); function Long_Long_Name_renderName16(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName16:111:3721"); require.coverage_line("b-roster", "112"); return Long_Long_Name_renderName17("<span>" + name + "</span>"); } require.coverage_line("b-roster", "115"); function Long_Long_Name_renderName17(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName17:115:3855"); require.coverage_line("b-roster", "116"); return Long_Long_Name_renderName18("<span>" + name + "</span>"); } require.coverage_line("b-roster", "119"); function Long_Long_Name_renderName18(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName18:119:3989"); require.coverage_line("b-roster", "120"); return Long_Long_Name_renderName19("<span>" + name + "</span>"); } require.coverage_line("b-roster", "123"); function Long_Long_Name_renderName19(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName19:123:4123"); require.coverage_line("b-roster", "124"); return Long_Long_Name_renderName20("<span>" + name + "</span>"); } require.coverage_line("b-roster", "127"); function Long_Long_Name_renderName20(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName20:127:4257"); require.coverage_line("b-roster", "128"); return Long_Long_Name_renderName21("<span>" + name + "</span>"); } require.coverage_line("b-roster", "131"); function Long_Long_Name_renderName21(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName21:131:4391"); require.coverage_line("b-roster", "132"); return Long_Long_Name_renderName22("<span>" + name + "</span>"); } require.coverage_line("b-roster", "135"); function Long_Long_Name_renderName22(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName22:135:4525"); require.coverage_line("b-roster", "136"); return Long_Long_Name_renderName23("<span>" + name + "</span>"); } require.coverage_line("b-roster", "139"); function Long_Long_Name_renderName23(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName23:139:4659"); require.coverage_line("b-roster", "140"); return Long_Long_Name_renderName24("<span>" + name + "</span>"); } require.coverage_line("b-roster", "143"); function Long_Long_Name_renderName24(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName24:143:4793"); require.coverage_line("b-roster", "144"); return Long_Long_Name_renderName25("<span>" + name + "</span>"); } require.coverage_line("b-roster", "147"); function Long_Long_Name_renderName25(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName25:147:4927"); require.coverage_line("b-roster", "148"); return Long_Long_Name_renderName26("<span>" + name + "</span>"); } require.coverage_line("b-roster", "151"); function Long_Long_Name_renderName26(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName26:151:5061"); require.coverage_line("b-roster", "152"); return Long_Long_Name_renderName27("<span>" + name + "</span>"); } require.coverage_line("b-roster", "155"); function Long_Long_Name_renderName27(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName27:155:5195"); require.coverage_line("b-roster", "156"); return Long_Long_Name_renderName28("<span>" + name + "</span>"); } require.coverage_line("b-roster", "159"); function Long_Long_Name_renderName28(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName28:159:5329"); require.coverage_line("b-roster", "160"); return Long_Long_Name_renderName29("<span>" + name + "</span>"); } require.coverage_line("b-roster", "163"); function Long_Long_Name_renderName29(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName29:163:5463"); require.coverage_line("b-roster", "164"); return Long_Long_Name_renderName30("<span>" + name + "</span>"); } require.coverage_line("b-roster", "167"); function Long_Long_Name_renderName30(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName30:167:5597"); require.coverage_line("b-roster", "168"); return Long_Long_Name_renderName31("<span>" + name + "</span>"); } require.coverage_line("b-roster", "171"); function Long_Long_Name_renderName31(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName31:171:5731"); require.coverage_line("b-roster", "172"); return Long_Long_Name_renderName32("<span>" + name + "</span>"); } require.coverage_line("b-roster", "175"); function Long_Long_Name_renderName32(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName32:175:5865"); require.coverage_line("b-roster", "176"); return Long_Long_Name_renderName33("<span>" + name + "</span>"); } require.coverage_line("b-roster", "179"); function Long_Long_Name_renderName33(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName33:179:5999"); require.coverage_line("b-roster", "180"); return Long_Long_Name_renderName34("<span>" + name + "</span>"); } require.coverage_line("b-roster", "183"); function Long_Long_Name_renderName34(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName34:183:6133"); require.coverage_line("b-roster", "184"); return Long_Long_Name_renderName35("<span>" + name + "</span>"); } require.coverage_line("b-roster", "187"); function Long_Long_Name_renderName35(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName35:187:6267"); require.coverage_line("b-roster", "188"); return Long_Long_Name_renderName36("<span>" + name + "</span>"); } require.coverage_line("b-roster", "191"); function Long_Long_Name_renderName36(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName36:191:6401"); require.coverage_line("b-roster", "192"); return Long_Long_Name_renderName37("<span>" + name + "</span>"); } require.coverage_line("b-roster", "195"); function Long_Long_Name_renderName37(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName37:195:6535"); require.coverage_line("b-roster", "196"); return Long_Long_Name_renderName38("<span>" + name + "</span>"); } require.coverage_line("b-roster", "199"); function Long_Long_Name_renderName38(name) { require.coverage_function("b-roster", "Long_Long_Name_renderName38:19