UNPKG

uupaa.valid.js

Version:
57 lines (45 loc) 2.41 kB
// http://git.io/WebModule // --- global variables ------------------------------------ // https://github.com/uupaa/WebModule/wiki/WebModuleIdiom var GLOBAL = (this || 0).self || global; // --- environment detection ------------------------------- // https://github.com/uupaa/WebModule/wiki/EnvironmentDetection (function() { var hasGlobal = !!GLOBAL.global; var processType = !!(GLOBAL.process || 0).type; var nativeTimer = !!/native/.test(setTimeout); GLOBAL.IN_BROWSER = !hasGlobal && "document" in GLOBAL; GLOBAL.IN_WORKER = !hasGlobal && "WorkerLocation" in GLOBAL; GLOBAL.IN_NODE = hasGlobal && !processType && !nativeTimer; GLOBAL.IN_NW = hasGlobal && !processType && nativeTimer; GLOBAL.IN_EL = hasGlobal && processType; })(); // --- validate and assert functions ----------------------- //{@dev https://github.com/uupaa/WebModule/wiki/Validate GLOBAL.$type = function(v, types) { return GLOBAL.Valid ? GLOBAL.Valid.type(v, types) : true; }; GLOBAL.$keys = function(o, keys, ig) { return GLOBAL.Valid ? GLOBAL.Valid.keys(o, keys, ig) : true; }; GLOBAL.$values = function(o, vals, ig) { return GLOBAL.Valid ? GLOBAL.Valid.values(o, vals, ig) : true; }; GLOBAL.$some = function(v, cd, ig) { return GLOBAL.Valid ? GLOBAL.Valid.some(v, cd, ig) : true; }; GLOBAL.$args = function(api, args) { return GLOBAL.Valid ? GLOBAL.Valid.args(api, args) : true; }; GLOBAL.$valid = function(v, api, hl) { return GLOBAL.Valid ? GLOBAL.Valid(v, api, hl) : true; }; //}@dev // --- WebModule ------------------------------------------- GLOBAL.WebModule = { verify: false, // Verify mode verbose: false, // Verbose mode publish: false, // WebModule based modules publish to global. closure: {}, // module script stocker exports: function(moduleName, moduleClosure) { var wm = this; // GLOBAL.WebModule // https://github.com/uupaa/WebModule/wiki/SwitchModulePattern var alias = wm[moduleName] ? (moduleName + "_") : moduleName; if (!wm[alias]) { // secondary module already exported -> skip wm[alias] = moduleClosure(GLOBAL); // evaluate the module entity wm.closure[alias] = moduleClosure + ""; // stock if (wm.publish && !GLOBAL[alias]) { GLOBAL[alias] = wm[alias]; // publish to global } } return wm[alias]; } };