UNPKG

angular-feature-toggle

Version:

feature toggling capabilities for angular

184 lines (183 loc) 13.9 kB
!function(){"use strict" function e(e){window.angularFeaturesConf?e.init(window.angularFeaturesConf):window.console.warn("could not detect features")}function r(e,r){try{var t=e.get("$stateProvider"),n=t.state t.state=function(e,i){if(void 0!==i.version&&!r.isVersion(i.feature||e,i.version))return t try{return n.call(t,e,i)}catch(o){return window.console&&window.console.warn("state "+e+" is already defined"),t}}}catch(i){}}function t(e){function r(e){this.version=e}function t(e){a=e}function n(e,r){return s.satisfies(a[e],r)}function i(e){return!!a[e]}function o(){return{isVersion:n,isEnabled:i}}var s=e r.prototype.isVersion=function(e){return s.satisfies(this.version,e)},r.prototype.isEnabled=function(){return s.satisfies(this.version,"*")} var a={},u={init:t,features:a,isVersion:n,isEnabled:i,$get:o} return u}function n(e){function r(r,t,n,i,o){var s,a,u,c="*",f=n.showIfFeature.split(/\s+/) u=f[0],f.length>1&&(c=f[1]),e.isVersion(u,c)?(a=r.$new(),o(a,function(e){s=e,t.after(s).remove()})):(a&&(a.$destroy(),a=null),s&&(s.after(t).remove(),s=null))}var t={restrict:"AE",transclude:"element",terminal:!0,priority:999,link:r} return t}function i(e){function r(r,t,n,i,o){var s,a,u,c="*",f=n.hideIfFeature.split(/\s+/) u=f[0],f.length>1&&(c=f[1]),e.isVersion(u,c)?(a&&(a.$destroy(),a=null),s&&(s.after(t).remove(),s=null)):(a=r.$new(),o(a,function(e){s=e,t.after(s).remove()}))}var t={restrict:"AE",transclude:"element",terminal:!0,priority:999,link:r} return t}angular.module("yh.featureToggle",["semver"]).config(e).config(r).provider("featureToggle",t).directive("showIfFeature",n).directive("hideIfFeature",i),e.$inject=["featureToggleProvider"],r.$inject=["$injector","featureToggleProvider"],t.$inject=["semverProvider"],n.$inject=["featureToggle"],i.$inject=["featureToggle"]}(),function(){"use strict" function e(){return{parse:r,valid:t,clean:n,inc:o,SemVer:i,diff:s,compareIdentifiers:a,rcompareIdentifiers:u,major:c,minor:f,patch:h,compare:p,compareLoose:l,rcompare:v,sort:m,rsort:g,gt:w,lt:d,eq:y,neq:j,lte:b,gte:$,cmp:E,Comparator:k,Range:T,toComparators:I,satisfies:X,maxSatisfying:Z,validRange:q,ltr:L,gtr:_,outside:G,$get:function(){}}}function r(e,r){if(e instanceof i)return e if("string"!=typeof e)return null if(e.length>B)return null var t=r?H[ce]:H[se] if(!t.test(e))return null try{return new i(e,r)}catch(n){return null}}function t(e,t){var n=r(e,t) return n?n.version:null}function n(e,t){var n=r(e.trim().replace(/^[=v]+/,""),t) return n?n.version:null}function i(e,r){if(e instanceof i){if(e.loose===r)return e e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e) if(e.length>B)throw new TypeError("version is longer than "+B+" characters") if(!(this instanceof i))return new i(e,r) this.loose=r var t=e.trim().match(r?H[ce]:H[se]) if(!t)throw new TypeError("Invalid Version: "+e) if(this.raw=e,this.major=+t[1],this.minor=+t[2],this.patch=+t[3],this.major>D||this.major<0)throw new TypeError("Invalid major version") if(this.minor>D||this.minor<0)throw new TypeError("Invalid minor version") if(this.patch>D||this.patch<0)throw new TypeError("Invalid patch version") t[4]?this.prerelease=t[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var r=+e if(r>=0&&D>r)return r}return e}):this.prerelease=[],this.build=t[5]?t[5].split("."):[],this.format()}function o(e,r,t,n){"string"==typeof t&&(n=t,t=void 0) try{return new i(e,t).inc(r,n).version}catch(o){return null}}function s(e,t){if(y(e,t))return null var n,i=r(e),o=r(t) if(i.prerelease.length||o.prerelease.length){for(n in i)if(("major"===n||"minor"===n||"patch"===n)&&i[n]!==o[n])return"pre"+n return"prerelease"}for(n in i)if(("major"===n||"minor"===n||"patch"===n)&&i[n]!==o[n])return n}function a(e,r){var t=Me.test(e),n=Me.test(r) return t&&n&&(e=+e,r=+r),t&&!n?-1:n&&!t?1:r>e?-1:e>r?1:0}function u(e,r){return a(r,e)}function c(e,r){return new i(e,r).major}function f(e,r){return new i(e,r).minor}function h(e,r){return new i(e,r).patch}function p(e,r,t){return new i(e,t).compare(r)}function l(e,r){return p(e,r,!0)}function v(e,r,t){return p(r,e,t)}function m(e,r){return e.sort(function(e,t){return p(e,t,r)})}function g(e,r){return e.sort(function(e,t){return v(e,t,r)})}function w(e,r,t){return p(e,r,t)>0}function d(e,r,t){return p(e,r,t)<0}function y(e,r,t){return 0===p(e,r,t)}function j(e,r,t){return 0!==p(e,r,t)}function $(e,r,t){return p(e,r,t)>=0}function b(e,r,t){return p(e,r,t)<=0}function E(e,r,t,n){var i switch(r){case"===":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),i=e===t break case"!==":"object"==typeof e&&(e=e.version),"object"==typeof t&&(t=t.version),i=e!==t break case"":case"=":case"==":i=y(e,t,n) break case"!=":i=j(e,t,n) break case">":i=w(e,t,n) break case">=":i=$(e,t,n) break case"<":i=d(e,t,n) break case"<=":i=b(e,t,n) break default:throw new TypeError("Invalid operator: "+r)}return i}function k(e,r){if(e instanceof k){if(e.loose===r)return e e=e.value}return this instanceof k?(this.loose=r,this.parse(e),void(this.semver===Ne?this.value="":this.value=this.operator+this.semver.version)):new k(e,r)}function T(e,r){if(e instanceof T&&e.loose===r)return e if(!(this instanceof T))return new T(e,r) if(this.loose=r,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e) this.format()}function I(e,r){return new T(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function V(e,r){return e=x(e,r),e=S(e,r),e=C(e,r),e=M(e,r)}function R(e){return!e||"x"===e.toLowerCase()||"*"===e}function S(e,r){return e.trim().split(/\s+/).map(function(e){return A(e,r)}).join(" ")}function A(e,r){var t=r?H[$e]:H[je] return e.replace(t,function(e,r,t,n,i){var o return R(r)?o="":R(t)?o=">="+r+".0.0 <"+(+r+1)+".0.0":R(n)?o=">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0":i?("-"!==i.charAt(0)&&(i="-"+i),o=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0"):o=">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0",o})}function x(e,r){return e.trim().split(/\s+/).map(function(e){return F(e,r)}).join(" ")}function F(e,r){var t=r?H[Ie]:H[Te] return e.replace(t,function(e,r,t,n,i){var o return R(r)?o="":R(t)?o=">="+r+".0.0 <"+(+r+1)+".0.0":R(n)?o="0"===r?">="+r+"."+t+".0 <"+r+"."+(+t+1)+".0":">="+r+"."+t+".0 <"+(+r+1)+".0.0":i?("-"!==i.charAt(0)&&(i="-"+i),o="0"===r?"0"===t?">="+r+"."+t+"."+n+i+" <"+r+"."+t+"."+(+n+1):">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0":">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0"):o="0"===r?"0"===t?">="+r+"."+t+"."+n+" <"+r+"."+t+"."+(+n+1):">="+r+"."+t+"."+n+" <"+r+"."+(+t+1)+".0":">="+r+"."+t+"."+n+" <"+(+r+1)+".0.0",o})}function C(e,r){return e.split(/\s+/).map(function(e){return P(e,r)}).join(" ")}function P(e,r){e=e.trim() var t=r?H[ge]:H[me] return e.replace(t,function(e,r,t,n,i,o){var s=R(t),a=s||R(n),u=a||R(i),c=u return"="===r&&c&&(r=""),s?e=">"===r||"<"===r?"<0.0.0":"*":r&&c?(a&&(n=0),u&&(i=0),">"===r?(r=">=",a?(t=+t+1,n=0,i=0):u&&(n=+n+1,i=0)):"<="===r&&(r="<",a?t=+t+1:n=+n+1),e=r+t+"."+n+"."+i):a?e=">="+t+".0.0 <"+(+t+1)+".0.0":u&&(e=">="+t+"."+n+".0 <"+t+"."+(+n+1)+".0"),e})}function M(e,r){return e.trim().replace(H[Ce],"")}function N(e,r,t,n,i,o,s,a,u,c,f,h,p){return r=R(t)?"":R(n)?">="+t+".0.0":R(i)?">="+t+"."+n+".0":">="+r,a=R(u)?"":R(c)?"<"+(+u+1)+".0.0":R(f)?"<"+u+"."+(+c+1)+".0":h?"<="+u+"."+c+"."+f+"-"+h:"<="+a,(r+" "+a).trim()}function z(e,r){var t for(t=0;t<e.length;t++)if(!e[t].test(r))return!1 if(r.prerelease.length){for(t=0;t<e.length;t++)if(e[t].semver!==Ne&&e[t].semver.prerelease.length>0){var n=e[t].semver if(n.major===r.major&&n.minor===r.minor&&n.patch===r.patch)return!0}return!1}return!0}function X(e,r,t){try{r=new T(r,t)}catch(n){return!1}return r.test(e)}function Z(e,r,t){return e.filter(function(e){return X(e,r,t)}).sort(function(e,r){return v(e,r,t)})[0]||null}function q(e,r){try{return new T(e,r).range||"*"}catch(t){return null}}function L(e,r,t){return G(e,r,"<",t)}function _(e,r,t){return G(e,r,">",t)}function G(e,r,t,n){e=new i(e,n),r=new T(r,n) var o,s,a,u,c switch(t){case">":o=w,s=b,a=d,u=">",c=">=" break case"<":o=d,s=$,a=w,u="<",c="<=" break default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(X(e,r,n))return!1 for(var f=0;f<r.set.length;++f){var h=r.set[f],p=null,l=null if(h.forEach(function(e){e.semver===Ne&&(e=new k(">=0.0.0")),p=p||e,l=l||e,o(e.semver,p.semver,n)?p=e:a(e.semver,l.semver,n)&&(l=e)}),p.operator===u||p.operator===c)return!1 if((!l.operator||l.operator===u)&&s(e,l.semver))return!1 if(l.operator===c&&a(e,l.semver))return!1}return!0}angular.module("semver",[]).provider("semver",e) var B=256,D=Number.MAX_SAFE_INTEGER||9007199254740991,H=[],J=[],K=0,O=K++ J[O]="0|[1-9]\\d*" var Q=K++ J[Q]="[0-9]+" var U=K++ J[U]="\\d*[a-zA-Z-][a-zA-Z0-9-]*" var W=K++ J[W]="("+J[O]+")\\.("+J[O]+")\\.("+J[O]+")" var Y=K++ J[Y]="("+J[Q]+")\\.("+J[Q]+")\\.("+J[Q]+")" var ee=K++ J[ee]="(?:"+J[O]+"|"+J[U]+")" var re=K++ J[re]="(?:"+J[Q]+"|"+J[U]+")" var te=K++ J[te]="(?:-("+J[ee]+"(?:\\."+J[ee]+")*))" var ne=K++ J[ne]="(?:-?("+J[re]+"(?:\\."+J[re]+")*))" var ie=K++ J[ie]="[0-9A-Za-z-]+" var oe=K++ J[oe]="(?:\\+("+J[ie]+"(?:\\."+J[ie]+")*))" var se=K++,ae="v?"+J[W]+J[te]+"?"+J[oe]+"?" J[se]="^"+ae+"$" var ue="[v=\\s]*"+J[Y]+J[ne]+"?"+J[oe]+"?",ce=K++ J[ce]="^"+ue+"$" var fe=K++ J[fe]="((?:<|>)?=?)" var he=K++ J[he]=J[Q]+"|x|X|\\*" var pe=K++ J[pe]=J[O]+"|x|X|\\*" var le=K++ J[le]="[v=\\s]*("+J[pe]+")(?:\\.("+J[pe]+")(?:\\.("+J[pe]+")(?:"+J[te]+")?"+J[oe]+"?)?)?" var ve=K++ J[ve]="[v=\\s]*("+J[he]+")(?:\\.("+J[he]+")(?:\\.("+J[he]+")(?:"+J[ne]+")?"+J[oe]+"?)?)?" var me=K++ J[me]="^"+J[fe]+"\\s*"+J[le]+"$" var ge=K++ J[ge]="^"+J[fe]+"\\s*"+J[ve]+"$" var we=K++ J[we]="(?:~>?)" var de=K++ J[de]="(\\s*)"+J[we]+"\\s+",H[de]=new RegExp(J[de],"g") var ye="$1~",je=K++ J[je]="^"+J[we]+J[le]+"$" var $e=K++ J[$e]="^"+J[we]+J[ve]+"$" var be=K++ J[be]="(?:\\^)" var Ee=K++ J[Ee]="(\\s*)"+J[be]+"\\s+",H[Ee]=new RegExp(J[Ee],"g") var ke="$1^",Te=K++ J[Te]="^"+J[be]+J[le]+"$" var Ie=K++ J[Ie]="^"+J[be]+J[ve]+"$" var Ve=K++ J[Ve]="^"+J[fe]+"\\s*("+ue+")$|^$" var Re=K++ J[Re]="^"+J[fe]+"\\s*("+ae+")$|^$" var Se=K++ J[Se]="(\\s*)"+J[fe]+"\\s*("+ue+"|"+J[le]+")",H[Se]=new RegExp(J[Se],"g") var Ae="$1$2$3",xe=K++ J[xe]="^\\s*("+J[le]+")\\s+-\\s+("+J[le]+")\\s*$" var Fe=K++ J[Fe]="^\\s*("+J[ve]+")\\s+-\\s+("+J[ve]+")\\s*$" var Ce=K++ J[Ce]="(<|>)?=?\\s*\\*" for(var Pe=0;K>Pe;Pe++)H[Pe]||(H[Pe]=new RegExp(J[Pe])) i.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version},i.prototype.inspect=function(){return'<SemVer "'+this+'">'},i.prototype.toString=function(){return this.version},i.prototype.compare=function(e){return e instanceof i||(e=new i(e,this.loose)),this.compareMain(e)||this.comparePre(e)},i.prototype.compareMain=function(e){return e instanceof i||(e=new i(e,this.loose)),a(this.major,e.major)||a(this.minor,e.minor)||a(this.patch,e.patch)},i.prototype.comparePre=function(e){if(e instanceof i||(e=new i(e,this.loose)),this.prerelease.length&&!e.prerelease.length)return-1 if(!this.prerelease.length&&e.prerelease.length)return 1 if(!this.prerelease.length&&!e.prerelease.length)return 0 var r=0 do{var t=this.prerelease[r],n=e.prerelease[r] if(void 0===t&&void 0===n)return 0 if(void 0===n)return 1 if(void 0===t)return-1 if(t!==n)return a(t,n)}while(++r)},i.prototype.inc=function(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r) break case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r) break case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r) break case"prerelease":0===this.prerelease.length&&this.inc("patch",r),this.inc("pre",r) break case"major":(0!==this.minor||0!==this.patch||0===this.prerelease.length)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[] break case"minor":(0!==this.patch||0===this.prerelease.length)&&this.minor++,this.patch=0,this.prerelease=[] break case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[] break case"pre":if(0===this.prerelease.length)this.prerelease=[0] else{for(var t=this.prerelease.length;--t>=0;)"number"==typeof this.prerelease[t]&&(this.prerelease[t]++,t=-2);-1===t&&this.prerelease.push(0)}r&&(this.prerelease[0]===r?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]) break default:throw new Error("invalid increment argument: "+e)}return this.format(),this} var Me=/^[0-9]+$/,Ne={} k.prototype.parse=function(e){var r=this.loose?H[Ve]:H[Re],t=e.match(r) if(!t)throw new TypeError("Invalid comparator: "+e) this.operator=t[1],"="===this.operator&&(this.operator=""),t[2]?this.semver=new i(t[2],this.loose):this.semver=Ne},k.prototype.inspect=function(){return'<SemVer Comparator "'+this+'">'},k.prototype.toString=function(){return this.value},k.prototype.test=function(e){return this.semver===Ne?!0:("string"==typeof e&&(e=new i(e,this.loose)),E(e,this.operator,this.semver,this.loose))},T.prototype.inspect=function(){return'<SemVer Range "'+this.range+'">'},T.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},T.prototype.toString=function(){return this.range},T.prototype.parseRange=function(e){var r=this.loose e=e.trim() var t=r?H[Fe]:H[xe] e=e.replace(t,N),e=e.replace(H[Se],Ae),e=e.replace(H[de],ye),e=e.replace(H[Ee],ke),e=e.split(/\s+/).join(" ") var n=r?H[Ve]:H[Re],i=e.split(" ").map(function(e){return V(e,r)}).join(" ").split(/\s+/) return this.loose&&(i=i.filter(function(e){return!!e.match(n)})),i=i.map(function(e){return new k(e,r)})},T.prototype.test=function(e){if(!e)return!1 "string"==typeof e&&(e=new i(e,this.loose)) for(var r=0;r<this.set.length;r++)if(z(this.set[r],e))return!0 return!1}}()