UNPKG

jquery-toad

Version:

jQuery TOAD - O velho e querido jQuery

125 lines (100 loc) 3.06 kB
/* jQuery 1.12.4 é pré-requisito */ (function () { 'use strict'; if (typeof $ !== 'function') { throw new Error('jQuery TOAD\'s requires jQuery!'); } var versionAll = $.fn.jquery.split(' ')[0].split('.'), vMajor = versionAll[0], vMinor = versionAll[1], vPath = versionAll[2]; if (vMajor > 1) return; if (vMajor == 1 && vMinor > 12) return; if (vMajor == 1 && vMinor == 12 && vPath >= 4) return; throw new Error('jQuery TOAD\'s requires jQuery version 1.12.4 or higher!'); })(); var $toad = { '$jq': $, '$toad': { version: '${ pkg.version }', author: '${ pkg.author }', license: '${ pkg.license }', homepage: '${ pkg.homepage }', moduleLoader: $ml } }; var document = window.document; var _NAMESPACES_ = []; var _APP_NAMESPACE_KEY_ = '_app_namespace_'; // Inicializa namespace exclusivo para aplicação do usuário var _APP_ = $toad[_APP_NAMESPACE_KEY_] = {}; var $require = function (name) { return $toad[name] = $toad[name] || {}; }; var $namespace = function (order, name, factory) { _NAMESPACES_.push({ idx: order, cb: function () { factory(($toad[name] = $toad[name] || {})); } }); }; /** * @code {__TOAD__}.namespace('utils', function(exports) { var myData = {} var myFunction = function(){} exports.data = myData exports.func = myFunction }) */ $toad.namespace = function (name, factory) { if (typeof name !== 'string') { throw new Error('Invalid namespace.'); } // TODO: Mudar para abordagem semelhante a $namespace factory((_APP_[name] = _APP_[name] || {})); } /** * @code var utils = {__TOAD__}.require('utils') utils.func(utils.data) */ $toad.require = function (name) { if (typeof name !== 'string' || $.trim(name).length < 1) { throw new Error('Invalid namespace to import.'); } var required = {}, exportGlobals = [ 'core', 'utils' ], atIgnore = [ '__internals__' ]; if (name.charAt(0) === '@') { var parts = name.split('@'); if (parts.length !== 2 || $.inArray(parts[1], atIgnore) >= 0) return; return $toad['@'][parts[1]]; } // Objetos globais exceto o namespace da aplicação if ($.inArray(name, exportGlobals) > -1) { for (var k in $toad[name]) { required[k] = $toad[name][k]; } } // Objetos da aplicação. Esses sobrescrevem os globais se existirem for (var k in _APP_[name]) { required[k] = _APP_[name][k]; } return required; } /** * @code var MY_CONST = {__TOAD__}.constant('MY_CONST', VALUE_FOR_MY_CONST) */ $toad.constant = function (constName, constValue) { var internals = $require('@').__internals__; return internals.setConstant(constName, constValue); }