lmd
Version:
LMD: Lazy Module Declaration
1,398 lines (1,272 loc) • 91.8 kB
JavaScript
// 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 css files
*
* Flag "css"
*
* This plugin provides require.css() function
*/
/**
* @name sandbox
*/
(function (sb) {
/**
* Loads any CSS file
*
* Inspired by yepnope.css.js
*
* @see https://github.com/SlexAxton/yepnope.js/blob/master/plugins/yepnope.css.js
*
* @param {String|Array} moduleName path to css file
* @param {Function} [callback] callback(result) undefined on error HTMLLinkElement on success
*/
sb.require.css = function (moduleName, callback) {
var replacement = sb.trigger('*:request-off-package', moduleName, callback, 'css'), // [[returnResult, moduleName, module, true], callback, type]
returnResult = replacement[0][0];
if (replacement[0][3]) { // isReturnASAP
return returnResult;
}
var module = replacement[0][2],
isNotLoaded = 1,
head;
callback = replacement[1];
moduleName = replacement[0][1];
// Create stylesheet link
var link = sb.document.createElement("link"),
id = +new sb.global.Date,
onload = function (e) {
if (isNotLoaded) {
isNotLoaded = 0;
// register or cleanup
link.removeAttribute('id');
if (!e) {
sb.trigger('*:request-error', moduleName, module);
}
callback(e ? sb.register(moduleName, link) : head.removeChild(link) && sb.undefined); // e === undefined if error
}
};
// Add attributes
link.href = moduleName;
link.rel = "stylesheet";
link.id = id;
sb.global.setTimeout(onload, 3000, 0);
head = sb.document.getElementsByTagName("head")[0];
head.insertBefore(link, head.firstChild);
(function poll() {
if (isNotLoaded) {
var sheets = sb.document.styleSheets,
j = 0,
k = sheets.length;
try {
for (; j < k; j++) {
if((sheets[j].ownerNode || sheets[j].owningElement).id == id &&
(sheets[j].cssRules || sheets[j].rules).length) {
//#JSCOVERAGE_IF 0
return onload(1);
//#JSCOVERAGE_ENDIF
}
}
// if we get here, its not in document.styleSheets (we never saw the ID)
throw 1;
} catch(e) {
// Keep polling
sb.global.setTimeout(poll, 90);
}
}
}());
return returnResult;
};
}(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));
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", "5");
var sha512 = require("sha512");
require.coverage_line("main", "7");
function decorateInputs() {
require.coverage_function("main", "decorateInputs:7:154");
require.coverage_line("main", "8");
return require.css("css/b-input.css");
}
require.coverage_line("main", "11");
$(function() {
require.coverage_function("main", "(?):11:230");
require.coverage_line("main", "12");
var $button = $(".b-button"), $result = $(".b-result"), $input = $(".b-input");
require.coverage_line("main", "16");
function calculateSha512OfMd5() {
require.coverage_function("main", "calculateSha512OfMd5:16:349");
require.coverage_line("main", "17");
var md5 = require("md5");
require.coverage_line("main", "18");
var value = $input.val();
require.coverage_line("main", "19");
$result.val(sha512(md5(value)));
require.coverage_line("main", "20");
decorateInputs();
}
require.coverage_line("main", "23");
$button.click(calculateSha512OfMd5);
require.coverage_line("main", "25");
require("statsLogger");
});
}),{
"unused": (function(require, exports, module) {
var require = arguments[0];
require.coverage_function("unused", "(?):0:1");
require.coverage_line("unused", "2");
$(function() {
require.coverage_function("unused", "(?):2:67");
require.coverage_line("unused", "3");
if (require.coverage_condition("unused", "if:3:89", Math.random() > .5)) {
require.coverage_line("unused", "4");
console.log(123);
}
});
}),
"sha512": (function(require, exports, module) {
var require = arguments[0];
require.coverage_function("sha512", "(?):0:1");
require.coverage_line("sha512", "14");
var hexcase = 0;
require.coverage_line("sha512", "15");
var b64pad = "";
require.coverage_line("sha512", "21");
function hex_sha512(s) {
require.coverage_function("sha512", "hex_sha512:21:840");
require.coverage_line("sha512", "21");
return rstr2hex(rstr_sha512(str2rstr_utf8(s)));
}
require.coverage_line("sha512", "22");
function b64_sha512(s) {
require.coverage_function("sha512", "b64_sha512:22:918");
require.coverage_line("sha512", "22");
return rstr2b64(rstr_sha512(str2rstr_utf8(s)));
}
require.coverage_line("sha512", "23");
function any_sha512(s, e) {
require.coverage_function("sha512", "any_sha512:23:996");
require.coverage_line("sha512", "23");
return rstr2any(rstr_sha512(str2rstr_utf8(s)), e);
}
require.coverage_line("sha512", "24");
function hex_hmac_sha512(k, d) {
require.coverage_function("sha512", "hex_hmac_sha512:24:1076");
require.coverage_line("sha512", "25");
return rstr2hex(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d)));
}
require.coverage_line("sha512", "26");
function b64_hmac_sha512(k, d) {
require.coverage_function("sha512", "b64_hmac_sha512:26:1184");
require.coverage_line("sha512", "27");
return rstr2b64(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d)));
}
require.coverage_line("sha512", "28");
function any_hmac_sha512(k, d, e) {
require.coverage_function("sha512", "any_hmac_sha512:28:1292");
require.coverage_line("sha512", "29");
return rstr2any(rstr_hmac_sha512(str2rstr_utf8(k), str2rstr_utf8(d)), e);
}
require.coverage_line("sha512", "34");
function sha512_vm_test() {
require.coverage_function("sha512", "sha512_vm_test:34:1471");
require.coverage_line("sha512", "36");
return hex_sha512("abc").toLowerCase() == "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" + "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f";
}
require.coverage_line("sha512", "44");
function rstr_sha512(s) {
require.coverage_function("sha512", "rstr_sha512:44:1739");
require.coverage_line("sha512", "46");
return binb2rstr(binb_sha512(rstr2binb(s), s.length * 8));
}
require.coverage_line("sha512", "52");
function rstr_hmac_sha512(key, data) {
require.coverage_function("sha512", "rstr_hmac_sha512:52:1903");
require.coverage_line("sha512", "54");
var bkey = rstr2binb(key);
require.coverage_line("sha512", "55");
if (require.coverage_condition("sha512", "if:55:1976", bkey.length > 32)) {
require.coverage_line("sha512", "55");
bkey = binb_sha512(bkey, key.length * 8);
}
require.coverage_line("sha512", "57");
var ipad = Array(32), opad = Array(32);
require.coverage_line("sha512", "58");
for (var i = 0; i < 32; i++) {
require.coverage_line("sha512", "60");
ipad[i] = bkey[i] ^ 909522486;
require.coverage_line("sha512", "61");
opad[i] = bkey[i] ^ 1549556828;
}
require.coverage_line("sha512", "64");
var hash = binb_sha512(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);
require.coverage_line("sha512", "65");
return binb2rstr(binb_sha512(opad.concat(hash), 1024 + 512));
}
require.coverage_line("sha512", "71");
function rstr2hex(input) {
require.coverage_function("sha512", "rstr2hex:71:2384");
require.coverage_line("sha512", "73");
try {
require.coverage_line("sha512", "73");
hexcase;
} catch (e) {
require.coverage_line("sha512", "73");
hexcase = 0;
}
require.coverage_line("sha512", "74");
var hex_tab = require.coverage_condition("sha512", "conditional:74:2469", hexcase) ? "0123456789ABCDEF" : "0123456789abcdef";
require.coverage_line("sha512", "75");
var output = "";
require.coverage_line("sha512", "76");
var x;
require.coverage_line("sha512", "77");
for (var i = 0; i < input.length; i++) {
require.coverage_line("sha512", "79");
x = input.charCodeAt(i);
require.coverage_line("sha512", "80");
output += hex_tab.charAt(x >>> 4 & 15) + hex_tab.charAt(x & 15);
}
require.coverage_line("sha512", "83");
return output;
}
require.coverage_line("sha512", "89");
function rstr2b64(input) {
require.coverage_function("sha512", "rstr2b64:89:2791");
require.coverage_line("sha512", "91");
try {
require.coverage_line("sha512", "91");
b64pad;
} catch (e) {
require.coverage_line("sha512", "91");
b64pad = "";
}
require.coverage_line("sha512", "92");
var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
require.coverage_line("sha512", "93");
var output = "";
require.coverage_line("sha512", "94");
var len = input.length;
require.coverage_line("sha512", "95");
for (var i = 0; i < len; i += 3) {
require.coverage_line("sha512", "97");
var triplet = input.charCodeAt(i) << 16 | (require.coverage_condition("sha512", "conditional:98:s", i + 1 < len) ? input.charCodeAt(i + 1) << 8 : 0) | (require.coverage_condition("sha512", "conditional:99:s", i + 2 < len) ? input.charCodeAt(i + 2) : 0);
require.coverage_line("sha512", "100");
for (var j = 0; j < 4; j++) {
require.coverage_line("sha512", "102");
if (require.coverage_condition("sha512", "if:102:3245", i * 8 + j * 6 > input.length * 8)) {
require.coverage_line("sha512", "102");
output += b64pad;
} else {
require.coverage_line("sha512", "103");
output += tab.charAt(triplet >>> 6 * (3 - j) & 63);
}
}
}
require.coverage_line("sha512", "106");
return output;
}
require.coverage_line("sha512", "112");
function rstr2any(input, encoding) {
require.coverage_function("sha512", "rstr2any:112:3453");
require.coverage_line("sha512", "114");
var divisor = encoding.length;
require.coverage_line("sha512", "115");
var i, j, q, x, quotient;
require.coverage_line("sha512", "118");
var dividend = Array(Math.ceil(input.length / 2));
require.coverage_line("sha512", "119");
for (i = 0; i < dividend.length; i++) {
require.coverage_line("sha512", "121");
dividend[i] = input.charCodeAt(i * 2) << 8 | input.charCodeAt(i * 2 + 1);
}
require.coverage_line("sha512", "130");
var full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));
require.coverage_line("sha512", "132");
var remainders = Array(full_length);
require.coverage_line("sha512", "133");
for (j = 0; j < full_length; j++) {
require.coverage_line("sha512", "135");
quotient = Array();
require.coverage_line("sha512", "136");
x = 0;
require.coverage_line("sha512", "137");
for (i = 0; i < dividend.length; i++) {
require.coverage_line("sha512", "139");
x = (x << 16) + dividend[i];
require.coverage_line("sha512", "140");
q = Math.floor(x / divisor);
require.coverage_line("sha512", "141");
x -= q * divisor;
require.coverage_line("sha512", "142");
if (require.coverage_condition("sha512", "if:142:4457", quotient.length > 0) || require.coverage_condition("sha512", "if:142:4484", q > 0)) {
require.coverage_line("sha512", "143");
quotient[quotient.length] = q;
}
}
require.coverage_line("sha512", "145");
remainders[j] = x;
require.coverage_line("sha512", "146");
dividend = quotient;
}
require.coverage_line("sha512", "150");
var output = "";
require.coverage_line("sha512", "151");
for (i = remainders.length - 1; i >= 0; i--) {
require.coverage_line("sha512", "152");
output += encoding.charAt(remainders[i]);
}
require.coverage_line("sha512", "154");
return output;
}
require.coverage_line("sha512", "161");
function str2rstr_utf8(input) {
require.coverage_function("sha512", "str2rstr_utf8:161:4864");
require.coverage_line("sha512", "163");
var output = "";
require.coverage_line("sha512", "164");
var i = -1;
require.coverage_line("sha512", "165");
var x, y;
require.coverage_line("sha512", "167");
while (++i < input.length) {
require.coverage_line("sha512", "170");
x = input.charCodeAt(i);
require.coverage_line("sha512", "171");
y = require.coverage_condition("sha512", "undefined:s", i + 1 < input.length) ? input.charCodeAt(i + 1) : 0;
require.coverage_line("sha512", "172");
if (require.coverage_condition("sha512", "if:172:5110", 55296 <= x) && require.coverage_condition("sha512", "if:172:5110", x <= 56319) && require.coverage_condition("sha512", "if:172:5110", 56320 <= y) && require.coverage_condition("sha512", "if:172:5160", y <= 57343)) {
require.coverage_line("sha512", "174");
x = 65536 + ((x & 1023) << 10) + (y & 1023);
require.coverage_line("sha512", "175");
i++;
}
require.coverage_line("sha512", "179");
if (require.coverage_condition("sha512", "if:179:5289", x <= 127)) {
require.coverage_line("sha512", "180");
output += String.fromCharCode(x);
} else {
require.coverage_line("sha512", "181");
if (require.coverage_condition("sha512", "if:181:5352", x <= 2047)) {
require.coverage_line("sha512", "182");
output += String.fromCharCode(192 | x >>> 6 & 31, 128 | x & 63);
} else {
require.coverage_line("sha512", "184");
if (require.coverage_condition("sha512", "if:184:5505", x <= 65535)) {
require.coverage_line("sha512", "185");
output += String.fromCharCode(224 | x >>> 12 & 15, 128 | x >>> 6 & 63, 128 | x & 63);
} else {
require.coverage_line("sha512", "188");
if (require.coverage_condition("sha512", "if:188:5723", x <= 2097151)) {
require.coverage_line("sha512", "189");
output += String.fromCharCode(240 | x >>> 18 & 7, 128 | x >>> 12 & 63, 128 | x >>> 6 & 63, 128 | x & 63);
}
}
}
}
}
require.coverage_line("sha512", "194");
return output;
}
require.coverage_line("sha512", "200");
function str2rstr_utf16le(input) {
require.coverage_function("sha512", "str2rstr_utf16le:200:6055");
require.coverage_line("sha512", "202");
var output = "";
require.coverage_line("sha512", "203");
for (var i = 0; i < input.length; i++) {
require.coverage_line("sha512", "204");
output += String.fromCharCode(input.charCodeAt(i) & 255, input.charCodeAt(i) >>> 8 & 255);
}
require.coverage_line("sha512", "206");
return output;
}
require.coverage_line("sha512", "209");
function str2rstr_utf16be(input) {
require.coverage_function("sha512", "str2rstr_utf16be:209:6310");
require.coverage_line("sha512", "211");
var output = "";
require.coverage_line("sha512", "212");
for (var i = 0; i < input.length; i++) {
require.coverage_line("sha512", "213");
output += String.fromCharCode(input.charCodeAt(i) >>> 8 & 255, input.charCodeAt(i) & 255);
}
require.coverage_line("sha512", "215");
return output;
}
require.coverage_line("sha512", "222");
function rstr2binb(input) {
require.coverage_function("sha512", "rstr2binb:222:6686");
require.coverage_line("sha512", "224");
var output = Array(input.length >> 2);
require.coverage_line("sha512", "225");
for (var i = 0; i < output.length; i++) {
require.coverage_line("sha512", "226");
output[i] = 0;
}
require.coverage_line("sha512", "227");
for (var i = 0; i < input.length * 8; i += 8) {
require.coverage_line("sha512", "228");
output[i >> 5] |= (input.charCodeAt(i / 8) & 255) << 24 - i % 32;
}
require.coverage_line("sha512", "229");
return output;
}
require.coverage_line("sha512", "235");
function binb2rstr(input) {
require.coverage_function("sha512", "binb2rstr:235:7012");
require.coverage_line("sha512", "237");
var output = "";
require.coverage_line("sha512", "238");
for (var i = 0; i < input.length * 32; i += 8) {
require.coverage_line("sha512", "239");
output += String.fromCharCode(input[i >> 5] >>> 24 - i % 32 & 255);
}
require.coverage_line("sha512", "240");
return output;
}
require.coverage_line("sha512", "246");
var sha512_k;
require.coverage_line("sha512", "247");
function binb_sha512(x, len) {
require.coverage_function("sha512", "binb_sha512:247:7299");
require.coverage_line("sha512", "249");
if (require.coverage_condition("sha512", "if:249:7335", sha512_k == undefined)) {
require.coverage_line("sha512", "252");
sha512_k = new Array(new int64(1116352408, -685199838), new int64(1899447441, 602891725), new int64(-1245643825, -330482897), new int64(-373957723, -2121671748), new int64(961987163, -213338824), new int64(1508970993, -1241133031), new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736), new int64(-670586216, -1560083902), new int64(310598401, 1164996542), new int64(607225278, 1323610764), new int64(1426881987, -704662302), new int64(1925078388, -226784913), new int64(-2132889090, 991336113), new int64(-1680079193, 633803317), new int64(-1046744716, -815192428), new int64(-459576895, -1628353838), new int64(-272742522, 944711139), new int64(264347078, -1953704523), new int64(604807628, 2007800933), new int64(770255983, 1495990901), new int64(1249150122, 1856431235), new int64(1555081692, -1119749164), new int64(1996064986, -2096016459), new int64(-1740746414, -295247957), new int64(-1473132947, 766784016), new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340), new int64(-958395405, 1034457026), new int64(-710438585, -1828018395), new int64(113926993, -536640913), new int64(338241895, 168717936), new int64(666307205, 1188179964), new int64(773529912, 1546045734), new int64(1294757372, 1522805485), new int64(1396182291, -1651133473), new int64(1695183700, -1951439906), new int64(1986661051, 1014477480), new int64(-2117940946, 1206759142), new int64(-1838011259, 344077627), new int64(-1564481375, 1290863460), new int64(-1474664885, -1136513023), new int64(-1035236496, -789014639), new int64(-949202525, 106217008), new int64(-778901479, -688958952), new int64(-694614492, 1432725776), new int64(-200395387, 1467031594), new int64(275423344, 851169720), new int64(430227734, -1194143544), new int64(506948616, 1363258195), new int64(659060556, -544281703), new int64(883997877, -509917016), new int64(958139571, -976659869), new int64(1322822218, -482243893), new int64(1537002063, 2003034995), new int64(1747873779, -692930397), new int64(1955562222, 1575990012), new int64(2024104815, 1125592928), new int64(-2067236844, -1578062990), new int64(-1933114872, 442776044), new int64(-1866530822, 593698344), new int64(-1538233109, -561857047), new int64(-1090935817, -1295615723), new int64(-965641998, -479046869), new int64(-903397682, -366583396), new int64(-779700025, 566280711), new int64(-354779690, -840897762), new int64(-176337025, -294727304), new int64(116418474, 1914138554), new int64(174292421, -1563912026), new int64(289380356, -1090974290), new int64(460393269, 320620315), new int64(685471733, 587496836), new int64(852142971, 1086792851), new int64(1017036298, 365543100), new int64(1126000580, -1676669620), new int64(1288033470, -885112138), new int64(1501505948, -60457430), new int64(1607167915, 987167468), new int64(1816402316, 1246189591));
}
require.coverage_line("sha512", "296");
var H = new Array(new int64(1779033703, -205731576), new int64(-1150833019, -2067093701), new int64(1013904242, -23791573), new int64(-1521486534, 1595750129), new int64(1359