UNPKG

decojs

Version:

Scalable frontend architecture

2 lines 21.3 kB
define("deco/utils",[],function(){return{toArray:function(a){for(var b=[],c=a.length>>>0;c--;)b[c]=a[c];return b},extend:function(a,b){b=b||{},a=a||{};for(var c in b)a[c]=b[c];return a},inheritsFrom:function(a){function b(){}return b.prototype=a.prototype,new b},arrayToObject:function(a,b){return a.reduce(function(a,c){return b(c,a),a},{})},trim:function(a,b){for(var c=0;c<a.length&&a.charAt(c)===b;c++);for(var d=a.length;d>0&&a.charAt(d-1)===b;d--);return a.substring(c,d)},after:function(a,b){var c=a.indexOf(b);return 0>c?"":a.substr(c+1)},popTail:function(a){return a.slice(0,-1)},startsWith:function(a,b){return a.charAt(0)===b},endsWith:function(a,b){return a.charAt(a.length-1)===b},addEventListener:function(a,b,c,d){"addEventListener"in a?a.addEventListener(b,c,d):a.attachEvent("on"+b,c)}}}),define("deco/qvc/ExecutableResult",["deco/utils"],function(a){function b(b){this.success=!1,this.valid=!1,this.result=null,this.exception=null,this.violations=[],a.extend(this,b)}return b}),define("deco/qvc/Constraint",[],function(){function a(a,b){this.type=a,this.attributes=b,this.message=b.message,this.init(a)}return a.prototype.init=function(a){require(["deco/qvc/constraints/"+a],function(a){var b=new a(this.attributes);this.validate=b.isValid.bind(b)}.bind(this))},a.prototype.validate=function(a){return!0},a}),define("deco/qvc/Validator",["deco/qvc/Constraint","knockout"],function(a,b){function c(a,b,c,d,e){return a.replace(/\{([^}]+)\}/g,function(a,f){return"value"==f?c:"this.name"==f?d:"this.path"==f?e:f in b?b[f]:a})}function d(a,c){var d=this;this.constraints=[],this.isValid=b.observable(!0),this.message=b.observable(""),this.name=c&&c.name,this.path=c&&c.path,this.executableName=c&&c.executableName,a&&b.isObservable(a)&&(a.isValid=function(){return d.isValid()})}return d.prototype.setConstraints=function(b){this.constraints=b.map(function(b){return new a(b.name,b.attributes)})},d.prototype.reset=function(){this.isValid(!0),this.message("")},d.prototype.validate=function(a){0==this.constraints.length?this.reset():this.constraints.every(function(b){return b.validate(a)?!0:(this.isValid(!1),this.message(c(b.message,b.attributes,a,this.name,this.path)),!1)}.bind(this))&&(this.isValid(!0),this.message(""))},d}),define("deco/qvc/koExtensions",["deco/qvc/Validator","knockout"],function(a,b){null!=b&&(b.bindingHandlers.validationMessageFor={init:function(a,c,d,e){var f=c(),g=f.validator;if(!g){var h=Array.prototype.reduce.call(a.attributes,function(a,b){return a+" "+b.localName+'="'+b.value+'"'},"");throw new Error("Could not bind `validationMessageFor` to value on element <"+a.tagName.toLowerCase()+h+">")}b.applyBindingsToNode(a,{hidden:g.isValid,text:g.message},g)}},b.bindingHandlers.command=b.bindingHandlers.query={init:function(a,c,d,e){b.applyBindingsToNode(a,{click:c()},e)}})}),define("deco/qvc/Validatable",["deco/utils","deco/qvc/Validator","knockout","deco/qvc/koExtensions"],function(a,b,c){function d(a,c,d){var f=this;this.validator=new b,this.validatableFields=[],this.validatableParameters=c,e(f.validatableParameters,f.validatableFields,[],a),d&&d.applyValidationConstraints(a,f)}function e(a,b,d,f){for(var g in a){var h=a[g],j=d.concat([g]);c.isObservable(h)&&b.push(i(h,g,j,f)),h=c.utils.unwrapObservable(h),"object"==typeof h&&e(h,b,j,f)}}function f(a,b,d){return a.split(".").reduce(function(b,e){var f=b.path,g=c.utils.unwrapObservable(b.field);if(e in g)return{field:g[e],path:f+"."+e};throw new Error(d+": "+a+"\n"+e+" is not a member of "+f+"\n"+f+" = `"+c.toJSON(g)+"`")},{field:b,path:"parameters"}).field}function g(a,b,c){var d=f(b,a,"Error applying violation");if(!("string"==typeof c&&"validator"in d))throw new Error("Error applying violation\n"+b+" is not validatable\nit should be an observable");d.validator.isValid(!1),d.validator.message(c)}function h(a,b){a.validator.isValid(!1);var c=a.validator.message(),d=0==c.length?b:c+", "+b;a.validator.message(d)}function i(a,c,d,e){if("validator"in a&&a.validator instanceof b)throw new Error("Observable `"+d+"` is parameter `"+a.validator.path+"` in "+a.validator.executableName+" and therefore cannot be a parameter in "+e+"!");return a.validator=new b(a,{name:c,path:d.join("."),executableName:e}),a.subscribe(function(b){a.validator.validate(b)}),a}return d.prototype.isValid=function(){return this.validatableFields.every(function(a){return a.validator&&a.validator.isValid()})&&this.validator.isValid()},d.prototype.applyViolations=function(a){a.forEach(function(a){var b=a.message,c=a.fieldName;c&&c.length>0?g(this.validatableParameters,c,b):h(this,b)}.bind(this))},d.prototype.applyConstraints=function(a){var b=this.validatableParameters;a.forEach(function(a){var d=a.name,e=a.constraints;if(null!=e&&0!=e.length){var g=f(d,b,"Error applying constraints to field");if(!(c.isObservable(g)&&"validator"in g))throw new Error("Error applying constraints to field: "+d+"\nIt is not an observable or is not extended with a validator. \n"+d+"=`"+c.toJSON(g)+"`");g.validator.setConstraints(e)}})},d.prototype.validate=function(){this.validator.validate(!0),this.validator.isValid()&&this.validatableFields.forEach(function(a){var b=a.validator;b&&b.validate(a())})},d.prototype.clearValidationMessages=function(){this.validator.reset(),this.validatableFields.forEach(function(a){var b=a.validator;b&&b.reset()})},d}),define("deco/qvc/Executable",["deco/qvc/ExecutableResult","deco/qvc/Validatable","deco/utils","knockout"],function(a,b,c,d){function e(e,f,g,h,i){b.call(this,e,g,i.constraintResolver),this.name=e,this.type=f,this.qvc=i,this.isBusy=d.observable(!1),this.hasError=d.observable(!1),this.result=new a,this.parameters=Object.seal(g),this.hooks=c.extend({beforeExecute:function(){},canExecute:function(){return!0},error:function(){},success:function(){},result:function(){},complete:function(){},invalid:function(){}},h)}return e.prototype=c.inheritsFrom(b),e.prototype.execute=function(){return this.isBusy()?!1:(this.hasError(!1),this.hooks.beforeExecute(),this.validate(),this.isValid()?this.hooks.canExecute()===!1?!1:(this.isBusy(!0),this.qvc.execute(this),!1):(this.hooks.invalid(),!1))},e.prototype.onError=function(){"violations"in this.result&&null!=this.result.violations&&this.result.violations.length>0?(this.applyViolations(this.result.violations),this.hooks.invalid()):(this.hasError(!0),this.hooks.error(this.result))},e.prototype.onSuccess=function(){this.hasError(!1),this.clearValidationMessages(),this.hooks.success(this.result),this.hooks.result(this.result.result)},e.prototype.onComplete=function(){this.hooks.complete(),this.isBusy(!1)},e.Command="command",e.Query="query",e}),define("deco/ajax",[],function(){function a(a){var b=[];for(var c in a){var d=a[c];b.push(encodeURIComponent(c)+"="+encodeURIComponent(d))}return b.join("&")}function b(a,b,c){return a+(a.match(/\?/)?a.match(/&$/)?"":"&":"?")+encodeURIComponent(b)+"="+encodeURIComponent(c)}function c(b,c){var d=a(c);return b+(b.match(/\?/)?b.match(/&$/)?"":d.length>0?"&":"":"?")+d}function d(a,b){return a+(a.match(/\/$/)?"":"/")+b}function e(a){return b(a,"cacheKey",Math.floor(Math.random()*Math.pow(2,53)))}function f(b,d,f,g){var h=new XMLHttpRequest,i="POST"===f,j=null;return d&&(i?j=a(d):b=c(b,d)),i&&(b=e(b)),h.open(f,b,!0),i&&j&&h.setRequestHeader("Content-type","application/x-www-form-urlencoded"),h.setRequestHeader("X-Requested-With","XMLHttpRequest"),h.onreadystatechange=function(){4==h.readyState&&g(h)},h.send(j),h}return f.addParamToUrl=b,f.addParamsToUrl=c,f.addToPath=d,f.cacheBust=e,f}),define("deco/qvc/ConstraintResolver",[],function(){function a(a,b){for(var c=0;c<b.length;c++)if(b[c].name==a)return b[c];return!1}function b(b,c){var d=a(b,this.constraints);d&&(d.validatables.forEach(function(a){a.applyConstraints(c)}),d.fields=c,d.state=e,d.validatables=[])}function c(a){this.qvc=a,this.constraints=[]}var d="loading",e="loaded";return c.prototype.applyValidationConstraints=function(c,e){var f=a(c,this.constraints);f===!1?(this.constraints.push({name:c,state:d,validatables:[e]}),this.qvc.loadConstraints(c,b.bind(this))):f.state===d?f.validatables.push(e):e.applyConstraints(f.fields)},c}),define("deco/errorHandler",[],function(){return{onError:function(a){console.error(a&&a.stack||a)}}}),define("deco/qvc",["deco/qvc/Executable","deco/qvc/ExecutableResult","deco/utils","deco/ajax","deco/qvc/ConstraintResolver","deco/errorHandler","knockout","deco/qvc/koExtensions"],function(a,b,c,d,e,f,g){function h(){var a=this;this.constraintResolver=new e(a),this.execute=function(c){var e=g.toJS(c.parameters),h={parameters:JSON.stringify(e),csrfToken:a.config.csrf},i=d.addToPath(a.config.baseUrl,c.type+"/"+c.name);d(i,h,"POST",function(a){200===a.status?(c.result=new b(JSON.parse(a.responseText||"{}")),c.result.success===!0?c.onSuccess():(c.result.exception&&c.result.exception.message&&f.onError(c.result.exception.message),c.onError())):(c.result=new b({exception:{message:a.responseText,cause:a}}),f.onError(c.result.exception.message),c.onError()),c.onComplete()})},this.loadConstraints=function(b,c){var e=d.addToPath(a.config.baseUrl,"constraints/"+b);d(d.addParamToUrl(e,"cacheKey",a.config.cacheKey),null,"GET",function(a){if(200===a.status){try{var d=JSON.parse(a.responseText||'{"parameters":[]}');"parameters"in d==0&&(d.parameters=[]),d.exception&&d.exception.message&&f.onError(d.exception.message)}catch(e){var d={parameters:[]}}c(b,d.parameters)}else f.onError(a.responseText)})},this.config={baseUrl:"/qvc",csrf:"",cachekey:Date.now()}}function i(b,c,d,e){var f=new a(b,c,d||{},e||{},j),h=f.execute.bind(f);return h.isValid=g.computed(f.isValid,f),h.isBusy=g.computed(f.isBusy,f),h.hasError=g.computed(f.hasError,f),h.success=function(a){return f.hooks.success=a,h},h.error=function(a){return f.hooks.error=a,h},h.invalid=function(a){return f.hooks.invalid=a,h},h.beforeExecute=function(a){return f.hooks.beforeExecute=a,h},h.canExecute=function(a){return f.hooks.canExecute=a,h},h.result=function(){return 1==arguments.length?(f.hooks.result=arguments[0],h):f.result.result},h.complete=function(a){return f.hooks.complete=a,h},h.clearValidationMessages=f.clearValidationMessages.bind(f),h.validator=f.validator,h.parameters=f.parameters,h.validate=f.validate.bind(f),h}var j=new h;return{createCommand:function(b,c,d){if(null==b||0==b.length)throw new Error("Command is missing name\nA command must have a name!\nusage: createCommand('name', [parameters, hooks])");return i(b,a.Command,c,d)},createQuery:function(b,c,d){if(null==b||0==b.length)throw new Error("Query is missing name\nA query must have a name!\nusage: createQuery('name', [parameters, hooks])");return i(b,a.Query,c,d)},config:function(a){c.extend(j.config,a)}}}),define("deco/spa/Outlet",["knockout"],function(a){function b(a,b){this.element=a,this.document=b||window.document}return b.prototype.outletExists=function(){return null!=this.element},b.prototype.unloadCurrentPage=function(){a.cleanNode(this.element),this.element.innerHTML=""},b.prototype.setPageContent=function(a){this.element.innerHTML=a},b.prototype.getPageTitle=function(){var a=this.element.querySelector("meta[name=title]");return a&&a.getAttribute("content")},b.prototype.setDocumentTitle=function(a){this.document.title=a},b.prototype.extractAndRunPageJavaScript=function(){for(var a=this.element.querySelectorAll("script[type='text/javascript']"),b=0;b<a.length;b++){if(a[b].parentNode.removeChild(a[b]),""===a[b].id)throw new Error("The script must have an id");if(null==this.document.getElementById(a[b].id)){var c=this.document.createElement("script");c.id=a[b].id,c.text=a[b].textContent,c.setAttribute("type",a[b].getAttribute("type")),this.document.body.appendChild(c)}}},b.prototype.indicatePageIsLoading=function(){this.element.setAttribute("data-loading","true")},b.prototype.pageHasLoaded=function(){this.element.setAttribute("data-loading","false")},b}),define("deco/spa/whenContext",[],function(){function a(a,b){a.dont(b)}function b(a,b){return a(b),a.dont.bind(null,b)}function c(){if(this.destroyed)throw new Error("This context has been destroyed!");if(0==arguments.length){var c=g();return this.childContexts.push(c),c.when}return 1==arguments.length&&"function"==typeof arguments[0]?{dont:a.bind(null,arguments[0])}:void(2==arguments.length&&"function"==typeof arguments[1]&&this.eventSubscribers.push(b(arguments[0],arguments[1])))}function d(a){this.onDestroyListeners.push(a)}function e(){for(var a;a=this.childContexts.pop();)a.destroyContext()}function f(){for(var a,b,c;a=this.eventSubscribers.pop();)a();for(;b=this.onDestroyListeners.pop();)b();for(;c=this.childContexts.pop();)c.destroyContext();this.destroyed=!0}function g(){var a={destroyed:!1,onDestroyListeners:[],childContexts:[],eventSubscribers:[]},b=c.bind(a);return b.thisIsDestroyed=d.bind(a),b.destroyChildContexts=e.bind(a),{when:b,destroyContext:f.bind(a)}}return g().when}),define("deco/spa/viewModelFactory",[],function(){return{getViewModelFromAttributes:function(a){var b=a.getAttribute("data-viewmodel"),c=a.getAttribute("data-model");return{target:a,viewModelName:b,model:c}},getParentViewModelElement:function(a,b){for(;a=a.parentNode;){if(a===b)return null;if(a.hasAttribute("data-viewmodel"))return a}return null},loadViewModel:function(a){return new Promise(function(b,c){require([a.viewModelName],b,c)}).then(function(b){return{viewModelName:a.viewModelName,ViewModel:b,model:a.model,target:a.target}},function(a){throw new Error("Could not load the following modules:\n"+a.requireModules.join("\n"))})},createViewModel:function(a,b,c){var d=!a.model||"{"!=a.model.charAt(0)&&"["!=a.model.charAt(0)?c:JSON.parse(a.model),e=b(),f=new a.ViewModel(d,e);return f["@SymbolDecoWhenContext"]=e,{viewModelName:a.viewModelName,viewModel:f,target:a.target}}}}),define("deco/spa/extendKnockout",["deco/spa/viewModelFactory","deco/errorHandler","knockout"],function(a,b,c){function d(a,b){var d=a.getAttribute("data-params");if(!d)return void 0;var e=f.parseBindingsString(d,b,a,{valueAccessors:!0,bindingParams:!0}),g=Object.create(null);for(paramName in e){var h=e[paramName];g[paramName]=c.computed(h,null,{disposeWhenNodeIsRemoved:a})}var i=Object.create(null);for(paramName in g){var j=g[paramName],h=j.peek();j.isActive()?i[paramName]=c.computed({read:function(){return c.unwrap(j())},write:c.isWriteableObservable(h)&&function(a){j()(a)},disposeWhenNodeIsRemoved:a}):i[paramName]=h}return i}function e(a){return 1===a.nodeType&&a.hasAttribute("data-viewmodel")&&!("@SymbolDecoViewModel"in a)}var f=new c.bindingProvider,g=c.bindingProvider.instance;c.bindingProvider.instance={nodeHasBindings:function(a){return e(a)||g.nodeHasBindings(a)},getBindingAccessors:function(a,b){return e(a)?{"@SymbolDecoApplyViewModel":function(){return null}}:g.getBindingAccessors(a,b)}},c.bindingHandlers["@SymbolDecoApplyViewModel"]={init:function(e,f,g,h,i){var j=a.getParentViewModelElement(e)["@SymbolDecoViewModel"],k=j["@SymbolDecoWhenContext"]();try{var l=d(e,i)}catch(m){console.error(m.stack)}return Promise.resolve(a.getViewModelFromAttributes(e)).then(function(b){return a.loadViewModel(b)}).then(function(b){return a.createViewModel(b,k,l)}).then(function(a){a.target["@SymbolDecoViewModel"]=a.viewModel;var b=i.createChildContext(a.viewModel);c.utils.domData.clear(a.target),c.applyBindings(b,a.target),c.utils.domNodeDisposal.addDisposeCallback(a.target,function(){delete a.target["@SymbolDecoViewModel"],k.destroyChildContexts()})})["catch"](b.onError),{controlsDescendantBindings:!0}}}}),define("deco/spa/applyViewModels",["deco/utils","deco/errorHandler","deco/spa/viewModelFactory","knockout","deco/spa/extendKnockout"],function(a,b,c,d){function e(a){a.target["@SymbolDecoViewModel"]=a.viewModel,d.applyBindings(a.viewModel,a.target)}function f(a,b){return function(c){return c.then(a,b)}}return function(d,g){d=d||document.body;var h=a.toArray(d.querySelectorAll("[data-viewmodel]")).map(c.getViewModelFromAttributes).map(c.loadViewModel).map(f(function(a){return(c.getParentViewModelElement(a.target,d)?1:0)?void 0:a})).map(f(function(a){return a?c.createViewModel(a,g):void 0})).map(f(function(a){a&&e(a)}));return Promise.all(h)["catch"](b.onError)}}),define("deco/spa/hashNavigation",["deco/utils"],function(a){function b(b,c,d){var e=a.startsWith(c,"/")===!1,f=a.endsWith(c,"/");if("/"===c)var g=[];else if(""===c)var g=[d];else var g=a.trim(c,"/").split("/");f&&g.push(d),e&&(g=a.popTail(b).concat(g));for(var h=[],i=!0,j=0,k=g.length-1;k>=0;k--)""===g[k]?i=!1:"."===g[k]?i=!1:".."===g[k]?(i=!1,j++):j>0?j--:h.unshift(g[k]);return{isAbsoluteAndPretty:!f&&!e&&i,path:h}}function c(c,d,e){var f=a.after(e.location.href,"#"),g=a.startsWith(f,"!"),h=b(this.currentPath,f.substr(g?1:0),c.index);h.isAbsoluteAndPretty&&g?(this.currentPath=h.path,d(h.path.join("/"),h.path.map(decodeURIComponent))):e.location.replace("#!/"+h.path.join("/"))}function d(b,d,e,f){e=e||document,f=f||window;var g={currentPath:[]},h=c.bind(g,b,d,e);return h(),a.addEventListener(f,"hashchange",h,!1),{stop:function(){f.removeEventListener("hashchange",h,!1)}}}return{start:d}}),define("deco/spa/PageLoader",["deco/ajax"],function(a){function b(a){this.pathToUrl=a&&a.pathToUrl||function(a){return a},this.cache=a&&"cachePages"in a?a.cachePages:!0,this.currentXHR=null}return b.prototype.loadPage=function(b){this.abort();var c=this.pathToUrl(b);this.cache===!1&&(c=a.cacheBust(c));var d=this;return new Promise(function(b,e){d.currentXHR=a(c,{},"GET",function(a){d.currentXHR=null,200===a.status?b(a.responseText):e({error:a.status,content:a.responseText})})})},b.prototype.abort=function(){this.currentXHR&&4!==this.currentXHR.readyState&&this.currentXHR.abort()},b}),define("deco/spa/Templates",["deco/spa/PageLoader","deco/utils"],function(a,b){function c(){return{pathToUrl:function(a){return a}}}function d(a){var c=a.querySelectorAll("[type='text/page-template']"),d=b.toArray(c),e=d.map(function(a){return{id:a.id.toLowerCase(),content:a.innerHTML}});return b.arrayToObject(e,function(a,b){b[a.id]=a.content})}function e(b,e){this.pageLoader=new a(e||c()),this.cachePages=e&&"cachePages"in e?e.cachePages:!0,this.templates=d(b)}return e.prototype.getTemplate=function(a){this.pageLoader.abort();var b=a.toLowerCase();return b in this.templates?Promise.resolve(this.templates[b]):this.pageLoader.loadPage(a).then(function(a){return this.cachePages&&(this.templates[b]=a),a}.bind(this),function(a){var b="error"+a.error;return b in this.templates?this.templates[b]:a.content}.bind(this))},e}),define("deco/proclaimWhen",[],function(){function a(a,b,c){b.forEach(function(a){a.apply(a,c)})}function b(a,b,c){var d=b.indexOf(c);return 0>d&&b.push(c),0>d}function c(a,b,c){var d=b.indexOf(c);return d>=0&&b.splice(d,1),d>=0}function d(d,e){e.subscribers=[],e.subscribeSubscribers=[],e.unsubscribeSubscribers=[];var f=function(){if(1==arguments.length&&"function"==typeof arguments[0]){var c=arguments[0],f=b(d,e.subscribers,c);f&&a(d+".isSubscribedTo",e.subscribeSubscribers,[function(){c.apply(c,arguments)}])}else a(d,e.subscribers,arguments)};return f.dont=function(b){c(d,e.subscribers,b)&&a(d+".isUnsubscribedFrom",e.unsubscribeSubscribers)},f.isSubscribedTo=function(a){b(d+".isSubscribedTo",e.subscribeSubscribers,a)},f.isSubscribedTo.dont=function(a){c(d+".isSubscribedTo",e.subscribeSubscribers,a)},f.isUnsubscribedFrom=function(a){b(d+".isUnsubscribedFrom",e.unsubscribeSubscribers,a)},f.isUnsubscribedFrom.dont=function(a){c(d+".isUnsubscribedFrom",e.unsubscribeSubscribers,a)},f.toString=function(){return"[Event "+d+"]"},f}function e(a){for(var b in a)a[b]=d(b,a[b]);return a}function f(a,b){return b?d(a,b):d("anonymous event",a)}return{extend:e,create:f}}),define("deco/events",["deco/proclaimWhen"],function(a){return a.extend({thePageHasChanged:function(a,b,c){}})}),define("deco/spa",["deco/spa/Outlet","deco/spa/whenContext","deco/spa/applyViewModels","deco/spa/hashNavigation","deco/spa/Templates","deco/utils","deco/events","deco/errorHandler"],function(a,b,c,d,e,f,g,h){function i(a){return m.unloadCurrentPage(),m.setPageContent(a),m.setDocumentTitle(m.getPageTitle()||n),m.extractAndRunPageJavaScript(),c(m.element,p())}function j(a,b){return m.indicatePageIsLoading(),p.destroyChildContexts(),o.getTemplate(a).then(i).then(function(){m.pageHasLoaded(),g.thePageHasChanged(a,b,document.location)})["catch"](h.onError)}function k(g,h){return l=h||window.document,q=f.extend(q,g),m=new a(l.querySelector("[data-outlet]"),l),n=l.title,p=b(),c(l,b()).then(function(){m.outletExists()&&(o=new e(l,q),d.start(q,j,l))})}var l,m,n,o,p,q={index:"index"};return{start:k}}),define("deco/deco",["deco/qvc","deco/spa"],function(a,b){function c(c){c=c||{};var d=c.spa||{},e=c.qvc||{};return a.config(e),{start:b.start.bind(null,d,document)}}return{config:c}}),define("deco",["deco/deco"],function(a){return a}),define("deco/qvc/constraints/NotEmpty",[],function(){function a(a){}return a.prototype.isValid=function(a){return null==a?!1:"string"==typeof a&&0==a.length?!1:!0},a}),define("deco/qvc/constraints/Pattern",[],function(){function a(a){a.flags=a.flags||[];var b="";a.flags.indexOf("CASE_INSENSITIVE")>=0&&(b+="i"),this.regex=new RegExp(a.regexp,b)}return a.prototype.isValid=function(a){if(null==a)return!1;var b=this.regex.exec(a);return null==b?!1:b[0]==a},a}); //# sourceMappingURL=deco.min.js.map