New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@featurevisor/sdk

Package Overview
Dependencies
Maintainers
1
Versions
115
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@featurevisor/sdk - npm Package Compare versions

Comparing version 0.28.1 to 0.29.0

11

CHANGELOG.md

@@ -6,2 +6,13 @@ # Change Log

# [0.29.0](https://github.com/fahad19/featurevisor/compare/v0.28.1...v0.29.0) (2023-06-10)
### Features
* drop Allocation.percentage in datafiles ([#80](https://github.com/fahad19/featurevisor/issues/80)) ([b43da69](https://github.com/fahad19/featurevisor/commit/b43da6922f81aef9fe8e8a54342067627adb990b))
## [0.28.1](https://github.com/fahad19/featurevisor/compare/v0.28.0...v0.28.1) (2023-06-08)

@@ -8,0 +19,0 @@

2

dist/index.js

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FeaturevisorSDK=t():e.FeaturevisorSDK=t()}(this,(()=>(()=>{var e={480:(e,t,r)=>{"use strict";r.r(t),r.d(t,{compare:()=>a,compareVersions:()=>i,satisfies:()=>o,validate:()=>n});const i=(e,t)=>{const r=u(e),i=u(t),n=r.pop(),a=i.pop(),o=d(r,i);return 0!==o?o:n&&a?d(n.split("."),a.split(".")):n||a?n?-1:1:0},n=e=>"string"==typeof e&&/^[v\d]/.test(e)&&s.test(e),a=(e,t,r)=>{v(r);const n=i(e,t);return g[r].includes(n)},o=(e,t)=>{if(t.includes("||"))return t.split("||").some((t=>o(e,t)));if(t.includes(" "))return t.trim().replace(/\s{2,}/g," ").split(" ").every((t=>o(e,t)));const r=t.match(/^([<>=~^]+)/),i=r?r[1]:"=";if("^"!==i&&"~"!==i)return a(e,t,i);const[n,s,f,,l]=u(e),[c,g,h,,v]=u(t),y=[n,s,f],p=[c,null!=g?g:"x",null!=h?h:"x"];if(v){if(!l)return!1;if(0!==d(y,p))return!1;if(-1===d(l.split("."),v.split(".")))return!1}const b=p.findIndex((e=>"0"!==e))+1,m="~"===i?2:b>1?b:1;return 0===d(y.slice(0,m),p.slice(0,m))&&-1!==d(y.slice(m),p.slice(m))},s=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,u=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(s);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},f=e=>"*"===e||"x"===e||"X"===e,l=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},c=(e,t)=>{if(f(e)||f(t))return 0;const[r,i]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(l(e),l(t));return r>i?1:r<i?-1:0},d=(e,t)=>{for(let r=0;r<Math.max(e.length,t.length);r++){const i=c(e[r]||"0",t[r]||"0");if(0!==i)return i}return 0},g={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},h=Object.keys(g),v=e=>{if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===h.indexOf(e))throw new Error(`Invalid operator, expected one of ${h.join("|")}`)}},77:e=>{!function(){const t=e=>(new TextEncoder).encode(e);function r(e,r){let i,n,a,o,s,u,f,l;for("string"==typeof e&&(e=t(e)),i=3&e.length,n=e.length-i,a=r,s=3432918353,u=461845907,l=0;l<n;)f=255&e[l]|(255&e[++l])<<8|(255&e[++l])<<16|(255&e[++l])<<24,++l,f=(65535&f)*s+(((f>>>16)*s&65535)<<16)&4294967295,f=f<<15|f>>>17,f=(65535&f)*u+(((f>>>16)*u&65535)<<16)&4294967295,a^=f,a=a<<13|a>>>19,o=5*(65535&a)+((5*(a>>>16)&65535)<<16)&4294967295,a=27492+(65535&o)+((58964+(o>>>16)&65535)<<16);switch(f=0,i){case 3:f^=(255&e[l+2])<<16;case 2:f^=(255&e[l+1])<<8;case 1:f^=255&e[l],f=(65535&f)*s+(((f>>>16)*s&65535)<<16)&4294967295,f=f<<15|f>>>17,f=(65535&f)*u+(((f>>>16)*u&65535)<<16)&4294967295,a^=f}return a^=e.length,a^=a>>>16,a=2246822507*(65535&a)+((2246822507*(a>>>16)&65535)<<16)&4294967295,a^=a>>>13,a=3266489909*(65535&a)+((3266489909*(a>>>16)&65535)<<16)&4294967295,a^=a>>>16,a>>>0}const i=r;i.v2=function(e,r){"string"==typeof e&&(e=t(e));let i,n=e.length,a=r^n,o=0;for(;n>=4;)i=255&e[o]|(255&e[++o])<<8|(255&e[++o])<<16|(255&e[++o])<<24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),i^=i>>>24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),a=1540483477*(65535&a)+((1540483477*(a>>>16)&65535)<<16)^i,n-=4,++o;switch(n){case 3:a^=(255&e[o+2])<<16;case 2:a^=(255&e[o+1])<<8;case 1:a^=255&e[o],a=1540483477*(65535&a)+((1540483477*(a>>>16)&65535)<<16)}return a^=a>>>13,a=1540483477*(65535&a)+((1540483477*(a>>>16)&65535)<<16),a^=a>>>15,a>>>0},i.v3=r,e.exports=i}()},725:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getBucketedNumber=t.MAX_BUCKETED_NUMBER=void 0;var i=r(77),n=Math.pow(2,32);t.MAX_BUCKETED_NUMBER=1e5,t.getBucketedNumber=function(e){var r=i.v3(e,1)/n;return Math.floor(r*t.MAX_BUCKETED_NUMBER)}},243:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.allConditionsAreMatched=t.conditionIsMatched=void 0;var i=r(480);function n(e,t){var r=e.attribute,n=e.operator,a=e.value;if("equals"===n)return t[r]===a;if("notEquals"===n)return t[r]!==a;if("before"===n||"after"===n){var o=(u=t[r])instanceof Date?u:new Date(u),s=a instanceof Date?a:new Date(a);return"before"===n?o<s:o>s}if("string"==typeof t[r]&&Array.isArray(a)){var u=t[r];if("in"===n)return-1!==a.indexOf(u);if("notIn"===n)return-1===a.indexOf(u)}else if("string"==typeof t[r]&&"string"==typeof a){if(u=t[r],"contains"===n)return-1!==u.indexOf(a);if("notContains"===n)return-1===u.indexOf(a);if("startsWith"===n)return u.startsWith(a);if("endsWith"===n)return u.endsWith(a);if("semverEquals"===n)return 0===(0,i.compareVersions)(u,a);if("semverNotEquals"===n)return 0!==(0,i.compareVersions)(u,a);if("semverGreaterThan"===n)return 1===(0,i.compareVersions)(u,a);if("semverGreaterThanOrEquals"===n)return(0,i.compareVersions)(u,a)>=0;if("semverLessThan"===n)return-1===(0,i.compareVersions)(u,a);if("semverLessThanOrEquals"===n)return(0,i.compareVersions)(u,a)<=0}else if("number"==typeof t[r]&&"number"==typeof a){if(u=t[r],"greaterThan"===n)return u>a;if("greaterThanOrEquals"===n)return u>=a;if("lessThan"===n)return u<a;if("lessThanOrEquals"===n)return u<=a}return!1}t.conditionIsMatched=n,t.allConditionsAreMatched=function e(t,r){return"attribute"in t?n(t,r):"and"in t&&Array.isArray(t.and)?t.and.every((function(t){return e(t,r)})):"or"in t&&Array.isArray(t.or)?t.or.some((function(t){return e(t,r)})):"not"in t&&Array.isArray(t.not)?t.not.every((function(i){return!1===e({and:t.not},r)})):!!Array.isArray(t)&&t.every((function(t){return e(t,r)}))}},913:(e,t)=>{"use strict";function r(e,t){if("string"==typeof e[t]&&"*"!==e[t])try{e[t]=JSON.parse(e[t])}catch(e){console.error("Error parsing JSON",e)}return e}Object.defineProperty(t,"__esModule",{value:!0}),t.DatafileReader=t.parseJsonConditionsIfStringified=void 0,t.parseJsonConditionsIfStringified=r;var i=function(){function e(e){this.schemaVersion=e.schemaVersion,this.revision=e.revision,this.segments=e.segments,this.attributes=e.attributes,this.features=e.features}return e.prototype.getRevision=function(){return this.revision},e.prototype.getSchemaVersion=function(){return this.schemaVersion},e.prototype.getAllAttributes=function(){return this.attributes},e.prototype.getAttribute=function(e){return this.attributes.find((function(t){return t.key===e}))},e.prototype.getSegment=function(e){var t=this.segments.find((function(t){return t.key===e}));if(t)return r(t,"conditions")},e.prototype.getFeature=function(e){var t=this.features.find((function(t){return t.key===e}));if(t)return t},e}();t.DatafileReader=i},186:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=void 0;var r=function(){function e(){this._listeners={}}return e.prototype.addListener=function(e,t){void 0===this._listeners[e]&&(this._listeners[e]=[]),this._listeners[e].push(t)},e.prototype.removeListener=function(e,t){if(void 0!==this._listeners[e]){var r=this._listeners[e].indexOf(t);-1!==r&&this._listeners[e].splice(r,1)}},e.prototype.removeAllListeners=function(e){var t=this;e?this._listeners[e]=[]:Object.keys(this._listeners).forEach((function(e){t._listeners[e]=[]}))},e.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];void 0!==this._listeners[e]&&this._listeners[e].forEach((function(e){e.apply(void 0,t)}))},e}();t.Emitter=r},522:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getBucketedVariableValue=t.getForcedVariableValue=t.getBucketedVariation=t.getForcedVariation=t.getMatchedTrafficAndAllocation=t.getMatchedAllocation=t.getStartEndFromRange=void 0;var i=r(590),n=r(243);function a(e){if(Array.isArray(e))return e;var t=e;return[t.start,t.end]}function o(e,t){for(var r=0,i=e.allocation.length>0&&void 0===e.allocation[0].range,n=0,o=e.allocation;n<o.length;n++){var s=o[n],u=a(s.range),f=u[0],l=u[1];if(s.range&&f<=t&&l>=t)return s;if(i&&t<=(r+=s.percentage||0))return s}}function s(e,t,r,n,a){var s;return{matchedTraffic:e.find((function(e){return!!(0,i.allGroupSegmentsAreMatched)("string"==typeof e.segments&&"*"!==e.segments?JSON.parse(e.segments):e.segments,t,n)&&!!(s=o(e,r))})),matchedAllocation:s}}function u(e,t,r){if(e.force)return e.force.find((function(e){return e.conditions?(0,n.allConditionsAreMatched)(e.conditions,t):!!e.segments&&(0,i.allGroupSegmentsAreMatched)(e.segments,t,r)}))}t.getStartEndFromRange=a,t.getMatchedAllocation=o,t.getMatchedTrafficAndAllocation=s,t.getForcedVariation=function(e,t,r){var i=u(e,t,r);if(i&&i.variation)return e.variations.find((function(e){return e.value===i.variation}))},t.getBucketedVariation=function(e,t,r,i,n){var a=s(e.traffic,t,r,i),o=a.matchedTraffic,u=a.matchedAllocation;if(o){if(o.variation){var f=e.variations.find((function(e){return e.value===o.variation}));if(f)return n.debug("using variation from rule",{featureKey:e.key,variation:f.value,ruleKey:o.key}),f}if(u){var l=u.variation,c=e.variations.find((function(e){return e.value===l}));if(c)return n.debug("matched variation",{featureKey:e.key,variation:c.value,bucketValue:r}),c;n.debug("no matched variation found",{featureKey:e.key,variation:l,bucketValue:r})}else n.debug("no matched allocation found",{featureKey:e.key,bucketValue:r})}else n.debug("no matched rule found",{featureKey:e.key,bucketValue:r})},t.getForcedVariableValue=function(e,t,r,i){var n=u(e,r,i);if(n&&n.variables){var a=n.variables[t.key];return"string"==typeof a&&"json"===t.type?JSON.parse(a):a}},t.getBucketedVariableValue=function(e,t,r,a,o,u){var f,l=s(e.traffic,r,a,o),c=l.matchedTraffic,d=l.matchedAllocation;if(c){var g=t.key;if(c.variables&&void 0!==c.variables[g])return u.debug("using variable from rule",{featureKey:e.key,variableKey:g,bucketValue:a}),c.variables[g];if(d){var h=d.variation,v=e.variations.find((function(e){return e.value===h}));if(v){var y=null===(f=v.variables)||void 0===f?void 0:f.find((function(e){return e.key===g}));if(!y)return u.debug("using default value as variation has no variable",{featureKey:e.key,variableKey:g,variation:h,bucketValue:a}),"json"===t.type?JSON.parse(t.defaultValue):t.defaultValue;if(y.overrides){var p=y.overrides.find((function(e){return e.conditions?(0,n.allConditionsAreMatched)("string"==typeof e.conditions?JSON.parse(e.conditions):e.conditions,r):!!e.segments&&(0,i.allGroupSegmentsAreMatched)("string"==typeof e.segments&&"*"!==e.segments?JSON.parse(e.segments):e.segments,r,o)}));if(p)return u.debug("using override value from variation",{feature:e.key,variableKey:g,variation:h,bucketValue:a}),"json"===t.type?JSON.parse(p.value):p.value}return u.debug("using value from variation",{feature:e.key,variableKey:g,variation:h,bucketValue:a}),"json"===t.type?JSON.parse(y.value):y.value}u.debug("no matched variation found",{feature:e.key,variableKey:g,variation:h,bucketValue:a})}else u.debug("no matched allocation found",{featureKey:e.key,variableKey:g,bucketValue:a})}else u.debug("no matched rule found",{featureKey:e.key,variableKey:t.key,bucketValue:a})}},97:function(e,t,r){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.getStartEndFromRange=void 0,n(r(725),t),n(r(681),t),n(r(687),t);var a=r(522);Object.defineProperty(t,"getStartEndFromRange",{enumerable:!0,get:function(){return a.getStartEndFromRange}})},681:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createInstance=t.FeaturevisorInstance=t.getValueByType=void 0;var i=r(687),n=r(913),a=r(186),o=r(725),s=r(522),u=".",f={schemaVersion:"1",revision:"unknown",attributes:[],segments:[],features:[]};function l(e,t){return t?t(e):fetch(e).then((function(e){return e.json()}))}function c(e,t){if(void 0!==e)switch(t){case"string":return"string"==typeof e?e:void 0;case"integer":return parseInt(e,10);case"double":return parseFloat(e);case"boolean":return!0===e;case"array":return Array.isArray(e)?e:void 0;case"object":return"object"==typeof e?e:void 0;default:return e}}t.getValueByType=c;var d=function(){function e(e){var t=this;this.bucketKeySeparator=e.bucketKeySeparator||u,this.configureBucketKey=e.configureBucketKey,this.configureBucketValue=e.configureBucketValue,this.datafileUrl=e.datafileUrl,this.handleDatafileFetch=e.handleDatafileFetch,this.initialFeatures=e.initialFeatures,this.interceptAttributes=e.interceptAttributes,this.logger=e.logger||(0,i.createLogger)(),this.refreshInterval=e.refreshInterval,this.stickyFeatures=e.stickyFeatures,this.emitter=new a.Emitter,this.statuses={ready:!1,refreshInProgress:!1},e.onReady&&this.emitter.addListener("ready",e.onReady),e.onRefresh&&this.emitter.addListener("refresh",e.onRefresh),e.onUpdate&&this.emitter.addListener("update",e.onUpdate),e.onActivation&&this.emitter.addListener("activation",e.onActivation);var r=this.emitter.addListener.bind(this.emitter);this.on=r,this.addListener=r;var n=this.emitter.removeListener.bind(this.emitter);if(this.off=n,this.removeListener=n,this.removeAllListeners=this.emitter.removeAllListeners.bind(this.emitter),e.datafileUrl)this.setDatafile(e.datafile||f),l(e.datafileUrl,e.handleDatafileFetch).then((function(e){t.setDatafile(e),t.statuses.ready=!0,t.emitter.emit("ready"),t.refreshInterval&&t.startRefreshing()})).catch((function(e){t.logger.error("failed to fetch datafile",{error:e})}));else{if(!e.datafile)throw new Error("Featurevisor SDK instance cannot be created without both `datafile` and `datafileUrl` options");this.setDatafile(e.datafile),this.statuses.ready=!0,setTimeout((function(){t.emitter.emit("ready")}),0)}}return e.prototype.setDatafile=function(e){try{this.datafileReader=new n.DatafileReader("string"==typeof e?JSON.parse(e):e)}catch(e){this.logger.error("could not parse datafile",{error:e})}},e.prototype.setStickyFeatures=function(e){this.stickyFeatures=e},e.prototype.getRevision=function(){return this.datafileReader.getRevision()},e.prototype.getFeature=function(e){return"string"==typeof e?this.datafileReader.getFeature(e):e},e.prototype.getBucketKey=function(e,t){var r,i,n=e.key;if("string"==typeof e.bucketBy)r="plain",i=[e.bucketBy];else if(Array.isArray(e.bucketBy))r="and",i=e.bucketBy;else{if("object"!=typeof e.bucketBy||!Array.isArray(e.bucketBy.or))throw this.logger.error("invalid bucketBy",{featureKey:n,bucketBy:e.bucketBy}),new Error("invalid bucketBy");r="or",i=e.bucketBy.or}var a=[];i.forEach((function(e){var i=t[e];void 0!==i&&("plain"===r||"and"===r||0===a.length)&&a.push(i)})),a.push(n);var o=a.join(this.bucketKeySeparator);return this.configureBucketKey?this.configureBucketKey(e,t,o):o},e.prototype.getBucketValue=function(e,t){var r=this.getBucketKey(e,t),i=(0,o.getBucketedNumber)(r);return this.configureBucketValue?this.configureBucketValue(e,t,i):i},e.prototype.isReady=function(){return this.statuses.ready},e.prototype.refresh=function(){var e=this;return this.logger.debug("refreshing datafile"),this.statuses.refreshInProgress?this.logger.warn("refresh in progress, skipping"):this.datafileUrl?(this.statuses.refreshInProgress=!0,void l(this.datafileUrl,this.handleDatafileFetch).then((function(t){var r=e.getRevision()!==t.revision;e.setDatafile(t),e.logger.info("refreshed datafile"),e.emitter.emit("refresh"),r&&e.emitter.emit("update"),e.statuses.refreshInProgress=!1})).catch((function(t){e.logger.error("failed to refresh datafile",{error:t}),e.statuses.refreshInProgress=!1}))):this.logger.error("cannot refresh since `datafileUrl` is not provided")},e.prototype.startRefreshing=function(){var e=this;return this.datafileUrl?this.intervalId?this.logger.warn("refreshing has already started"):this.refreshInterval?void(this.intervalId=setInterval((function(){e.refresh()}),1e3*this.refreshInterval)):this.logger.warn("no `refreshInterval` option provided"):this.logger.error("cannot start refreshing since `datafileUrl` is not provided")},e.prototype.stopRefreshing=function(){if(!this.intervalId)return this.logger.warn("refreshing has not started yet");clearInterval(this.intervalId)},e.prototype.getVariation=function(e,t){void 0===t&&(t={});try{var r,i="string"==typeof e?e:e.key;if(this.stickyFeatures&&this.stickyFeatures[i]&&void 0!==(r=this.stickyFeatures[i].variation))return this.logger.debug("using sticky variation",{featureKey:i,variation:r}),r;if(this.statuses&&!this.statuses.ready&&this.initialFeatures&&this.initialFeatures[i]&&void 0!==(r=this.initialFeatures[i].variation))return this.logger.debug("using initial variation",{featureKey:i,variation:r}),r;var n=this.getFeature(e);if(!n)return void this.logger.warn("feature not found in datafile",{featureKey:e});var a=this.interceptAttributes?this.interceptAttributes(t):t,o=(0,s.getForcedVariation)(n,a,this.datafileReader);if(o)return this.logger.debug("forced variation found",{featureKey:e,variation:o.value}),o.value;var u=this.getBucketValue(n,a),f=(0,s.getBucketedVariation)(n,a,u,this.datafileReader,this.logger);return f?f.value:(this.logger.debug("using default variation",{featureKey:e,bucketValue:u,variation:n.defaultVariation}),n.defaultVariation)}catch(t){return void this.logger.error("getVariation",{featureKey:e,error:t})}},e.prototype.getVariationBoolean=function(e,t){return void 0===t&&(t={}),c(this.getVariation(e,t),"boolean")},e.prototype.getVariationString=function(e,t){return void 0===t&&(t={}),c(this.getVariation(e,t),"string")},e.prototype.getVariationInteger=function(e,t){return void 0===t&&(t={}),c(this.getVariation(e,t),"integer")},e.prototype.getVariationDouble=function(e,t){return void 0===t&&(t={}),c(this.getVariation(e,t),"double")},e.prototype.activate=function(e,t){void 0===t&&(t={});try{var r=this.getVariation(e,t);if(void 0===r)return;var i=this.interceptAttributes?this.interceptAttributes(t):t,n={};return this.datafileReader.getAllAttributes().filter((function(e){return!0===e.capture})).forEach((function(e){void 0!==i[e.key]&&(n[e.key]=t[e.key])})),this.emitter.emit("activation",e,r,i,n),r}catch(t){return void this.logger.error("activate",{featureKey:e,error:t})}},e.prototype.activateBoolean=function(e,t){return void 0===t&&(t={}),c(this.activate(e,t),"boolean")},e.prototype.activateString=function(e,t){return void 0===t&&(t={}),c(this.activate(e,t),"string")},e.prototype.activateInteger=function(e,t){return void 0===t&&(t={}),c(this.activate(e,t),"integer")},e.prototype.activateDouble=function(e,t){return void 0===t&&(t={}),c(this.activate(e,t),"double")},e.prototype.getVariable=function(e,t,r){void 0===r&&(r={});try{var i,n="string"==typeof e?e:e.key;if(this.stickyFeatures&&this.stickyFeatures[n]&&this.stickyFeatures[n].variables&&void 0!==(i=this.stickyFeatures[n].variables[t]))return this.logger.debug("using sticky variable",{featureKey:n,variableKey:t}),i;if(this.statuses&&!this.statuses.ready&&this.initialFeatures&&this.initialFeatures[n]&&this.initialFeatures[n].variables&&void 0!==(i=this.initialFeatures[n].variables[t]))return this.logger.debug("using initial variable",{featureKey:n,variableKey:t}),i;var a=this.getFeature(e);if(!a)return void this.logger.warn("feature not found in datafile",{featureKey:e,variableKey:t});var o=Array.isArray(a.variablesSchema)?a.variablesSchema.find((function(e){return e.key===t})):void 0;if(!o)return void this.logger.warn("variable schema not found",{featureKey:e,variableKey:t});var u=this.interceptAttributes?this.interceptAttributes(r):r,f=(0,s.getForcedVariableValue)(a,o,u,this.datafileReader);if(void 0!==f)return this.logger.debug("forced variable value found",{featureKey:e,variableKey:t}),f;var l=this.getBucketValue(a,u);return(0,s.getBucketedVariableValue)(a,o,u,l,this.datafileReader,this.logger)}catch(r){return void this.logger.error("getVariable",{featureKey:e,variableKey:t,error:r})}},e.prototype.getVariableBoolean=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"boolean")},e.prototype.getVariableString=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"string")},e.prototype.getVariableInteger=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"integer")},e.prototype.getVariableDouble=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"double")},e.prototype.getVariableArray=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"array")},e.prototype.getVariableObject=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"object")},e.prototype.getVariableJSON=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"json")},e}();t.FeaturevisorInstance=d,t.createInstance=function(e){return new d(e)}},687:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createLogger=t.Logger=t.defaultLogHandler=t.defaultLogLevels=t.loggerPrefix=void 0,t.loggerPrefix="[Featurevisor]",t.defaultLogLevels=["warn","error"],t.defaultLogHandler=function(e,r,i){switch(void 0===i&&(i={}),e){case"debug":console.log(t.loggerPrefix,r,i);case"info":console.info(t.loggerPrefix,r,i);case"warn":console.warn(t.loggerPrefix,r,i);case"error":console.error(t.loggerPrefix,r,i)}};var r=function(){function e(e){this.levels=e.levels,this.handle=e.handler}return e.prototype.setLevels=function(e){this.levels=e},e.prototype.log=function(e,t,r){-1!==this.levels.indexOf(e)&&this.handle(e,t,r)},e.prototype.debug=function(e,t){this.log("debug",e,t)},e.prototype.info=function(e,t){this.log("info",e,t)},e.prototype.warn=function(e,t){this.log("warn",e,t)},e.prototype.error=function(e,t){this.log("error",e,t)},e}();t.Logger=r,t.createLogger=function(e){void 0===e&&(e={});var i=e.levels||t.defaultLogLevels,n=e.handler||t.defaultLogHandler;return new r({levels:i,handler:n})}},590:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.allGroupSegmentsAreMatched=t.segmentIsMatched=void 0;var i=r(243);function n(e,t){return(0,i.allConditionsAreMatched)(e.conditions,t)}t.segmentIsMatched=n,t.allGroupSegmentsAreMatched=function e(t,r,i){if("*"===t)return!0;if("string"==typeof t){var a=i.getSegment(t);return!!a&&n(a,r)}if("object"==typeof t){if("and"in t&&Array.isArray(t.and))return t.and.every((function(t){return e(t,r,i)}));if("or"in t&&Array.isArray(t.or))return t.or.some((function(t){return e(t,r,i)}));if("not"in t&&Array.isArray(t.not))return t.not.every((function(t){return!1===e(t,r,i)}))}return!!Array.isArray(t)&&t.every((function(t){return e(t,r,i)}))}}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var a=t[i]={exports:{}};return e[i].call(a.exports,a,a.exports,r),a.exports}return r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(97)})()));
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FeaturevisorSDK=t():e.FeaturevisorSDK=t()}(this,(()=>(()=>{var e={480:(e,t,r)=>{"use strict";r.r(t),r.d(t,{compare:()=>a,compareVersions:()=>i,satisfies:()=>o,validate:()=>n});const i=(e,t)=>{const r=u(e),i=u(t),n=r.pop(),a=i.pop(),o=d(r,i);return 0!==o?o:n&&a?d(n.split("."),a.split(".")):n||a?n?-1:1:0},n=e=>"string"==typeof e&&/^[v\d]/.test(e)&&s.test(e),a=(e,t,r)=>{v(r);const n=i(e,t);return h[r].includes(n)},o=(e,t)=>{if(t.includes("||"))return t.split("||").some((t=>o(e,t)));if(t.includes(" "))return t.trim().replace(/\s{2,}/g," ").split(" ").every((t=>o(e,t)));const r=t.match(/^([<>=~^]+)/),i=r?r[1]:"=";if("^"!==i&&"~"!==i)return a(e,t,i);const[n,s,f,,l]=u(e),[c,h,g,,v]=u(t),y=[n,s,f],p=[c,null!=h?h:"x",null!=g?g:"x"];if(v){if(!l)return!1;if(0!==d(y,p))return!1;if(-1===d(l.split("."),v.split(".")))return!1}const b=p.findIndex((e=>"0"!==e))+1,m="~"===i?2:b>1?b:1;return 0===d(y.slice(0,m),p.slice(0,m))&&-1!==d(y.slice(m),p.slice(m))},s=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,u=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(s);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},f=e=>"*"===e||"x"===e||"X"===e,l=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},c=(e,t)=>{if(f(e)||f(t))return 0;const[r,i]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(l(e),l(t));return r>i?1:r<i?-1:0},d=(e,t)=>{for(let r=0;r<Math.max(e.length,t.length);r++){const i=c(e[r]||"0",t[r]||"0");if(0!==i)return i}return 0},h={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]},g=Object.keys(h),v=e=>{if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===g.indexOf(e))throw new Error(`Invalid operator, expected one of ${g.join("|")}`)}},77:e=>{!function(){const t=e=>(new TextEncoder).encode(e);function r(e,r){let i,n,a,o,s,u,f,l;for("string"==typeof e&&(e=t(e)),i=3&e.length,n=e.length-i,a=r,s=3432918353,u=461845907,l=0;l<n;)f=255&e[l]|(255&e[++l])<<8|(255&e[++l])<<16|(255&e[++l])<<24,++l,f=(65535&f)*s+(((f>>>16)*s&65535)<<16)&4294967295,f=f<<15|f>>>17,f=(65535&f)*u+(((f>>>16)*u&65535)<<16)&4294967295,a^=f,a=a<<13|a>>>19,o=5*(65535&a)+((5*(a>>>16)&65535)<<16)&4294967295,a=27492+(65535&o)+((58964+(o>>>16)&65535)<<16);switch(f=0,i){case 3:f^=(255&e[l+2])<<16;case 2:f^=(255&e[l+1])<<8;case 1:f^=255&e[l],f=(65535&f)*s+(((f>>>16)*s&65535)<<16)&4294967295,f=f<<15|f>>>17,f=(65535&f)*u+(((f>>>16)*u&65535)<<16)&4294967295,a^=f}return a^=e.length,a^=a>>>16,a=2246822507*(65535&a)+((2246822507*(a>>>16)&65535)<<16)&4294967295,a^=a>>>13,a=3266489909*(65535&a)+((3266489909*(a>>>16)&65535)<<16)&4294967295,a^=a>>>16,a>>>0}const i=r;i.v2=function(e,r){"string"==typeof e&&(e=t(e));let i,n=e.length,a=r^n,o=0;for(;n>=4;)i=255&e[o]|(255&e[++o])<<8|(255&e[++o])<<16|(255&e[++o])<<24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),i^=i>>>24,i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16),a=1540483477*(65535&a)+((1540483477*(a>>>16)&65535)<<16)^i,n-=4,++o;switch(n){case 3:a^=(255&e[o+2])<<16;case 2:a^=(255&e[o+1])<<8;case 1:a^=255&e[o],a=1540483477*(65535&a)+((1540483477*(a>>>16)&65535)<<16)}return a^=a>>>13,a=1540483477*(65535&a)+((1540483477*(a>>>16)&65535)<<16),a^=a>>>15,a>>>0},i.v3=r,e.exports=i}()},725:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getBucketedNumber=t.MAX_BUCKETED_NUMBER=void 0;var i=r(77),n=Math.pow(2,32);t.MAX_BUCKETED_NUMBER=1e5,t.getBucketedNumber=function(e){var r=i.v3(e,1)/n;return Math.floor(r*t.MAX_BUCKETED_NUMBER)}},243:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.allConditionsAreMatched=t.conditionIsMatched=void 0;var i=r(480);function n(e,t){var r=e.attribute,n=e.operator,a=e.value;if("equals"===n)return t[r]===a;if("notEquals"===n)return t[r]!==a;if("before"===n||"after"===n){var o=(u=t[r])instanceof Date?u:new Date(u),s=a instanceof Date?a:new Date(a);return"before"===n?o<s:o>s}if("string"==typeof t[r]&&Array.isArray(a)){var u=t[r];if("in"===n)return-1!==a.indexOf(u);if("notIn"===n)return-1===a.indexOf(u)}else if("string"==typeof t[r]&&"string"==typeof a){if(u=t[r],"contains"===n)return-1!==u.indexOf(a);if("notContains"===n)return-1===u.indexOf(a);if("startsWith"===n)return u.startsWith(a);if("endsWith"===n)return u.endsWith(a);if("semverEquals"===n)return 0===(0,i.compareVersions)(u,a);if("semverNotEquals"===n)return 0!==(0,i.compareVersions)(u,a);if("semverGreaterThan"===n)return 1===(0,i.compareVersions)(u,a);if("semverGreaterThanOrEquals"===n)return(0,i.compareVersions)(u,a)>=0;if("semverLessThan"===n)return-1===(0,i.compareVersions)(u,a);if("semverLessThanOrEquals"===n)return(0,i.compareVersions)(u,a)<=0}else if("number"==typeof t[r]&&"number"==typeof a){if(u=t[r],"greaterThan"===n)return u>a;if("greaterThanOrEquals"===n)return u>=a;if("lessThan"===n)return u<a;if("lessThanOrEquals"===n)return u<=a}return!1}t.conditionIsMatched=n,t.allConditionsAreMatched=function e(t,r){return"attribute"in t?n(t,r):"and"in t&&Array.isArray(t.and)?t.and.every((function(t){return e(t,r)})):"or"in t&&Array.isArray(t.or)?t.or.some((function(t){return e(t,r)})):"not"in t&&Array.isArray(t.not)?t.not.every((function(i){return!1===e({and:t.not},r)})):!!Array.isArray(t)&&t.every((function(t){return e(t,r)}))}},913:(e,t)=>{"use strict";function r(e,t){if("string"==typeof e[t]&&"*"!==e[t])try{e[t]=JSON.parse(e[t])}catch(e){console.error("Error parsing JSON",e)}return e}Object.defineProperty(t,"__esModule",{value:!0}),t.DatafileReader=t.parseJsonConditionsIfStringified=void 0,t.parseJsonConditionsIfStringified=r;var i=function(){function e(e){this.schemaVersion=e.schemaVersion,this.revision=e.revision,this.segments=e.segments,this.attributes=e.attributes,this.features=e.features}return e.prototype.getRevision=function(){return this.revision},e.prototype.getSchemaVersion=function(){return this.schemaVersion},e.prototype.getAllAttributes=function(){return this.attributes},e.prototype.getAttribute=function(e){return this.attributes.find((function(t){return t.key===e}))},e.prototype.getSegment=function(e){var t=this.segments.find((function(t){return t.key===e}));if(t)return r(t,"conditions")},e.prototype.getFeature=function(e){var t=this.features.find((function(t){return t.key===e}));if(t)return t},e}();t.DatafileReader=i},186:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=void 0;var r=function(){function e(){this._listeners={}}return e.prototype.addListener=function(e,t){void 0===this._listeners[e]&&(this._listeners[e]=[]),this._listeners[e].push(t)},e.prototype.removeListener=function(e,t){if(void 0!==this._listeners[e]){var r=this._listeners[e].indexOf(t);-1!==r&&this._listeners[e].splice(r,1)}},e.prototype.removeAllListeners=function(e){var t=this;e?this._listeners[e]=[]:Object.keys(this._listeners).forEach((function(e){t._listeners[e]=[]}))},e.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];void 0!==this._listeners[e]&&this._listeners[e].forEach((function(e){e.apply(void 0,t)}))},e}();t.Emitter=r},522:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getBucketedVariableValue=t.getForcedVariableValue=t.getBucketedVariation=t.getForcedVariation=t.getMatchedTrafficAndAllocation=t.getMatchedAllocation=void 0;var i=r(590),n=r(243);function a(e,t){for(var r=0,i=e.allocation;r<i.length;r++){var n=i[r],a=n.range,o=a[0],s=a[1];if(n.range&&o<=t&&s>=t)return n}}function o(e,t,r,n,o){var s;return{matchedTraffic:e.find((function(e){return!!(0,i.allGroupSegmentsAreMatched)("string"==typeof e.segments&&"*"!==e.segments?JSON.parse(e.segments):e.segments,t,n)&&!!(s=a(e,r))})),matchedAllocation:s}}function s(e,t,r){if(e.force)return e.force.find((function(e){return e.conditions?(0,n.allConditionsAreMatched)(e.conditions,t):!!e.segments&&(0,i.allGroupSegmentsAreMatched)(e.segments,t,r)}))}t.getMatchedAllocation=a,t.getMatchedTrafficAndAllocation=o,t.getForcedVariation=function(e,t,r){var i=s(e,t,r);if(i&&i.variation)return e.variations.find((function(e){return e.value===i.variation}))},t.getBucketedVariation=function(e,t,r,i,n){var a=o(e.traffic,t,r,i),s=a.matchedTraffic,u=a.matchedAllocation;if(s){if(s.variation){var f=e.variations.find((function(e){return e.value===s.variation}));if(f)return n.debug("using variation from rule",{featureKey:e.key,variation:f.value,ruleKey:s.key}),f}if(u){var l=u.variation,c=e.variations.find((function(e){return e.value===l}));if(c)return n.debug("matched variation",{featureKey:e.key,variation:c.value,bucketValue:r}),c;n.debug("no matched variation found",{featureKey:e.key,variation:l,bucketValue:r})}else n.debug("no matched allocation found",{featureKey:e.key,bucketValue:r})}else n.debug("no matched rule found",{featureKey:e.key,bucketValue:r})},t.getForcedVariableValue=function(e,t,r,i){var n=s(e,r,i);if(n&&n.variables){var a=n.variables[t.key];return"string"==typeof a&&"json"===t.type?JSON.parse(a):a}},t.getBucketedVariableValue=function(e,t,r,a,s,u){var f,l=o(e.traffic,r,a,s),c=l.matchedTraffic,d=l.matchedAllocation;if(c){var h=t.key;if(c.variables&&void 0!==c.variables[h])return u.debug("using variable from rule",{featureKey:e.key,variableKey:h,bucketValue:a}),c.variables[h];if(d){var g=d.variation,v=e.variations.find((function(e){return e.value===g}));if(v){var y=null===(f=v.variables)||void 0===f?void 0:f.find((function(e){return e.key===h}));if(!y)return u.debug("using default value as variation has no variable",{featureKey:e.key,variableKey:h,variation:g,bucketValue:a}),"json"===t.type?JSON.parse(t.defaultValue):t.defaultValue;if(y.overrides){var p=y.overrides.find((function(e){return e.conditions?(0,n.allConditionsAreMatched)("string"==typeof e.conditions?JSON.parse(e.conditions):e.conditions,r):!!e.segments&&(0,i.allGroupSegmentsAreMatched)("string"==typeof e.segments&&"*"!==e.segments?JSON.parse(e.segments):e.segments,r,s)}));if(p)return u.debug("using override value from variation",{feature:e.key,variableKey:h,variation:g,bucketValue:a}),"json"===t.type?JSON.parse(p.value):p.value}return u.debug("using value from variation",{feature:e.key,variableKey:h,variation:g,bucketValue:a}),"json"===t.type?JSON.parse(y.value):y.value}u.debug("no matched variation found",{feature:e.key,variableKey:h,variation:g,bucketValue:a})}else u.debug("no matched allocation found",{featureKey:e.key,variableKey:h,bucketValue:a})}else u.debug("no matched rule found",{featureKey:e.key,variableKey:t.key,bucketValue:a})}},97:function(e,t,r){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var n=Object.getOwnPropertyDescriptor(t,r);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,n)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||i(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),n(r(725),t),n(r(681),t),n(r(687),t)},681:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createInstance=t.FeaturevisorInstance=t.getValueByType=void 0;var i=r(687),n=r(913),a=r(186),o=r(725),s=r(522),u=".",f={schemaVersion:"1",revision:"unknown",attributes:[],segments:[],features:[]};function l(e,t){return t?t(e):fetch(e).then((function(e){return e.json()}))}function c(e,t){if(void 0!==e)switch(t){case"string":return"string"==typeof e?e:void 0;case"integer":return parseInt(e,10);case"double":return parseFloat(e);case"boolean":return!0===e;case"array":return Array.isArray(e)?e:void 0;case"object":return"object"==typeof e?e:void 0;default:return e}}t.getValueByType=c;var d=function(){function e(e){var t=this;this.bucketKeySeparator=e.bucketKeySeparator||u,this.configureBucketKey=e.configureBucketKey,this.configureBucketValue=e.configureBucketValue,this.datafileUrl=e.datafileUrl,this.handleDatafileFetch=e.handleDatafileFetch,this.initialFeatures=e.initialFeatures,this.interceptAttributes=e.interceptAttributes,this.logger=e.logger||(0,i.createLogger)(),this.refreshInterval=e.refreshInterval,this.stickyFeatures=e.stickyFeatures,this.emitter=new a.Emitter,this.statuses={ready:!1,refreshInProgress:!1},e.onReady&&this.emitter.addListener("ready",e.onReady),e.onRefresh&&this.emitter.addListener("refresh",e.onRefresh),e.onUpdate&&this.emitter.addListener("update",e.onUpdate),e.onActivation&&this.emitter.addListener("activation",e.onActivation);var r=this.emitter.addListener.bind(this.emitter);this.on=r,this.addListener=r;var n=this.emitter.removeListener.bind(this.emitter);if(this.off=n,this.removeListener=n,this.removeAllListeners=this.emitter.removeAllListeners.bind(this.emitter),e.datafileUrl)this.setDatafile(e.datafile||f),l(e.datafileUrl,e.handleDatafileFetch).then((function(e){t.setDatafile(e),t.statuses.ready=!0,t.emitter.emit("ready"),t.refreshInterval&&t.startRefreshing()})).catch((function(e){t.logger.error("failed to fetch datafile",{error:e})}));else{if(!e.datafile)throw new Error("Featurevisor SDK instance cannot be created without both `datafile` and `datafileUrl` options");this.setDatafile(e.datafile),this.statuses.ready=!0,setTimeout((function(){t.emitter.emit("ready")}),0)}}return e.prototype.setDatafile=function(e){try{this.datafileReader=new n.DatafileReader("string"==typeof e?JSON.parse(e):e)}catch(e){this.logger.error("could not parse datafile",{error:e})}},e.prototype.setStickyFeatures=function(e){this.stickyFeatures=e},e.prototype.getRevision=function(){return this.datafileReader.getRevision()},e.prototype.getFeature=function(e){return"string"==typeof e?this.datafileReader.getFeature(e):e},e.prototype.getBucketKey=function(e,t){var r,i,n=e.key;if("string"==typeof e.bucketBy)r="plain",i=[e.bucketBy];else if(Array.isArray(e.bucketBy))r="and",i=e.bucketBy;else{if("object"!=typeof e.bucketBy||!Array.isArray(e.bucketBy.or))throw this.logger.error("invalid bucketBy",{featureKey:n,bucketBy:e.bucketBy}),new Error("invalid bucketBy");r="or",i=e.bucketBy.or}var a=[];i.forEach((function(e){var i=t[e];void 0!==i&&("plain"===r||"and"===r||0===a.length)&&a.push(i)})),a.push(n);var o=a.join(this.bucketKeySeparator);return this.configureBucketKey?this.configureBucketKey(e,t,o):o},e.prototype.getBucketValue=function(e,t){var r=this.getBucketKey(e,t),i=(0,o.getBucketedNumber)(r);return this.configureBucketValue?this.configureBucketValue(e,t,i):i},e.prototype.isReady=function(){return this.statuses.ready},e.prototype.refresh=function(){var e=this;return this.logger.debug("refreshing datafile"),this.statuses.refreshInProgress?this.logger.warn("refresh in progress, skipping"):this.datafileUrl?(this.statuses.refreshInProgress=!0,void l(this.datafileUrl,this.handleDatafileFetch).then((function(t){var r=e.getRevision()!==t.revision;e.setDatafile(t),e.logger.info("refreshed datafile"),e.emitter.emit("refresh"),r&&e.emitter.emit("update"),e.statuses.refreshInProgress=!1})).catch((function(t){e.logger.error("failed to refresh datafile",{error:t}),e.statuses.refreshInProgress=!1}))):this.logger.error("cannot refresh since `datafileUrl` is not provided")},e.prototype.startRefreshing=function(){var e=this;return this.datafileUrl?this.intervalId?this.logger.warn("refreshing has already started"):this.refreshInterval?void(this.intervalId=setInterval((function(){e.refresh()}),1e3*this.refreshInterval)):this.logger.warn("no `refreshInterval` option provided"):this.logger.error("cannot start refreshing since `datafileUrl` is not provided")},e.prototype.stopRefreshing=function(){if(!this.intervalId)return this.logger.warn("refreshing has not started yet");clearInterval(this.intervalId)},e.prototype.getVariation=function(e,t){void 0===t&&(t={});try{var r,i="string"==typeof e?e:e.key;if(this.stickyFeatures&&this.stickyFeatures[i]&&void 0!==(r=this.stickyFeatures[i].variation))return this.logger.debug("using sticky variation",{featureKey:i,variation:r}),r;if(this.statuses&&!this.statuses.ready&&this.initialFeatures&&this.initialFeatures[i]&&void 0!==(r=this.initialFeatures[i].variation))return this.logger.debug("using initial variation",{featureKey:i,variation:r}),r;var n=this.getFeature(e);if(!n)return void this.logger.warn("feature not found in datafile",{featureKey:e});var a=this.interceptAttributes?this.interceptAttributes(t):t,o=(0,s.getForcedVariation)(n,a,this.datafileReader);if(o)return this.logger.debug("forced variation found",{featureKey:e,variation:o.value}),o.value;var u=this.getBucketValue(n,a),f=(0,s.getBucketedVariation)(n,a,u,this.datafileReader,this.logger);return f?f.value:(this.logger.debug("using default variation",{featureKey:e,bucketValue:u,variation:n.defaultVariation}),n.defaultVariation)}catch(t){return void this.logger.error("getVariation",{featureKey:e,error:t})}},e.prototype.getVariationBoolean=function(e,t){return void 0===t&&(t={}),c(this.getVariation(e,t),"boolean")},e.prototype.getVariationString=function(e,t){return void 0===t&&(t={}),c(this.getVariation(e,t),"string")},e.prototype.getVariationInteger=function(e,t){return void 0===t&&(t={}),c(this.getVariation(e,t),"integer")},e.prototype.getVariationDouble=function(e,t){return void 0===t&&(t={}),c(this.getVariation(e,t),"double")},e.prototype.activate=function(e,t){void 0===t&&(t={});try{var r=this.getVariation(e,t);if(void 0===r)return;var i=this.interceptAttributes?this.interceptAttributes(t):t,n={};return this.datafileReader.getAllAttributes().filter((function(e){return!0===e.capture})).forEach((function(e){void 0!==i[e.key]&&(n[e.key]=t[e.key])})),this.emitter.emit("activation",e,r,i,n),r}catch(t){return void this.logger.error("activate",{featureKey:e,error:t})}},e.prototype.activateBoolean=function(e,t){return void 0===t&&(t={}),c(this.activate(e,t),"boolean")},e.prototype.activateString=function(e,t){return void 0===t&&(t={}),c(this.activate(e,t),"string")},e.prototype.activateInteger=function(e,t){return void 0===t&&(t={}),c(this.activate(e,t),"integer")},e.prototype.activateDouble=function(e,t){return void 0===t&&(t={}),c(this.activate(e,t),"double")},e.prototype.getVariable=function(e,t,r){void 0===r&&(r={});try{var i,n="string"==typeof e?e:e.key;if(this.stickyFeatures&&this.stickyFeatures[n]&&this.stickyFeatures[n].variables&&void 0!==(i=this.stickyFeatures[n].variables[t]))return this.logger.debug("using sticky variable",{featureKey:n,variableKey:t}),i;if(this.statuses&&!this.statuses.ready&&this.initialFeatures&&this.initialFeatures[n]&&this.initialFeatures[n].variables&&void 0!==(i=this.initialFeatures[n].variables[t]))return this.logger.debug("using initial variable",{featureKey:n,variableKey:t}),i;var a=this.getFeature(e);if(!a)return void this.logger.warn("feature not found in datafile",{featureKey:e,variableKey:t});var o=Array.isArray(a.variablesSchema)?a.variablesSchema.find((function(e){return e.key===t})):void 0;if(!o)return void this.logger.warn("variable schema not found",{featureKey:e,variableKey:t});var u=this.interceptAttributes?this.interceptAttributes(r):r,f=(0,s.getForcedVariableValue)(a,o,u,this.datafileReader);if(void 0!==f)return this.logger.debug("forced variable value found",{featureKey:e,variableKey:t}),f;var l=this.getBucketValue(a,u);return(0,s.getBucketedVariableValue)(a,o,u,l,this.datafileReader,this.logger)}catch(r){return void this.logger.error("getVariable",{featureKey:e,variableKey:t,error:r})}},e.prototype.getVariableBoolean=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"boolean")},e.prototype.getVariableString=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"string")},e.prototype.getVariableInteger=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"integer")},e.prototype.getVariableDouble=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"double")},e.prototype.getVariableArray=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"array")},e.prototype.getVariableObject=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"object")},e.prototype.getVariableJSON=function(e,t,r){return void 0===r&&(r={}),c(this.getVariable(e,t,r),"json")},e}();t.FeaturevisorInstance=d,t.createInstance=function(e){return new d(e)}},687:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createLogger=t.Logger=t.defaultLogHandler=t.defaultLogLevels=t.loggerPrefix=void 0,t.loggerPrefix="[Featurevisor]",t.defaultLogLevels=["warn","error"],t.defaultLogHandler=function(e,r,i){switch(void 0===i&&(i={}),e){case"debug":console.log(t.loggerPrefix,r,i);case"info":console.info(t.loggerPrefix,r,i);case"warn":console.warn(t.loggerPrefix,r,i);case"error":console.error(t.loggerPrefix,r,i)}};var r=function(){function e(e){this.levels=e.levels,this.handle=e.handler}return e.prototype.setLevels=function(e){this.levels=e},e.prototype.log=function(e,t,r){-1!==this.levels.indexOf(e)&&this.handle(e,t,r)},e.prototype.debug=function(e,t){this.log("debug",e,t)},e.prototype.info=function(e,t){this.log("info",e,t)},e.prototype.warn=function(e,t){this.log("warn",e,t)},e.prototype.error=function(e,t){this.log("error",e,t)},e}();t.Logger=r,t.createLogger=function(e){void 0===e&&(e={});var i=e.levels||t.defaultLogLevels,n=e.handler||t.defaultLogHandler;return new r({levels:i,handler:n})}},590:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.allGroupSegmentsAreMatched=t.segmentIsMatched=void 0;var i=r(243);function n(e,t){return(0,i.allConditionsAreMatched)(e.conditions,t)}t.segmentIsMatched=n,t.allGroupSegmentsAreMatched=function e(t,r,i){if("*"===t)return!0;if("string"==typeof t){var a=i.getSegment(t);return!!a&&n(a,r)}if("object"==typeof t){if("and"in t&&Array.isArray(t.and))return t.and.every((function(t){return e(t,r,i)}));if("or"in t&&Array.isArray(t.or))return t.or.some((function(t){return e(t,r,i)}));if("not"in t&&Array.isArray(t.not))return t.not.every((function(t){return!1===e(t,r,i)}))}return!!Array.isArray(t)&&t.every((function(t){return e(t,r,i)}))}}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var a=t[i]={exports:{}};return e[i].call(a.exports,a,a.exports,r),a.exports}return r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(97)})()));
//# sourceMappingURL=index.js.map

@@ -1,6 +0,5 @@

import { Allocation, Attributes, Traffic, Feature, Variation, VariableValue, RangeTuple } from "@featurevisor/types";
import { Allocation, Attributes, Traffic, Feature, Variation, VariableValue } from "@featurevisor/types";
import { DatafileReader } from "./datafileReader";
import { VariableSchema } from "@featurevisor/types/src";
import { Logger } from "./logger";
export declare function getStartEndFromRange(range: unknown): RangeTuple;
/**

@@ -7,0 +6,0 @@ * Traffic

import { allGroupSegmentsAreMatched } from "./segments";
import { allConditionsAreMatched } from "./conditions";
// @TODO: remove this function in next breaking semver
export function getStartEndFromRange(range) {
if (Array.isArray(range)) {
return range;
}
var rangeObject = range;
return [rangeObject.start, rangeObject.end];
}
/**

@@ -15,17 +7,8 @@ * Traffic

export function getMatchedAllocation(traffic, bucketValue) {
var total = 0; // @TODO: remove it in next breaking semver
var usePercentage = traffic.allocation.length > 0 && typeof traffic.allocation[0].range === "undefined"; // @TODO: remove it in next breaking semver
for (var _i = 0, _a = traffic.allocation; _i < _a.length; _i++) {
var allocation = _a[_i];
var _b = getStartEndFromRange(allocation.range), start = _b[0], end = _b[1];
var _b = allocation.range, start = _b[0], end = _b[1];
if (allocation.range && start <= bucketValue && end >= bucketValue) {
return allocation;
}
// @TODO: remove it in next breaking semver
if (usePercentage) {
total += allocation.percentage || 0;
if (bucketValue <= total) {
return allocation;
}
}
}

@@ -32,0 +15,0 @@ return undefined;

export * from "./bucket";
export * from "./instance";
export * from "./logger";
export { getStartEndFromRange } from "./feature";
export * from "./bucket";
export * from "./instance";
export * from "./logger";
// @TODO: remove this in next breaking semver
export { getStartEndFromRange } from "./feature";
//# sourceMappingURL=index.js.map
{
"name": "@featurevisor/sdk",
"version": "0.28.1",
"version": "0.29.0",
"description": "Featurevisor SDK for Node.js and the browser",

@@ -45,7 +45,7 @@ "main": "dist/index.js",

"dependencies": {
"@featurevisor/types": "^0.28.0",
"@featurevisor/types": "^0.29.0",
"compare-versions": "^6.0.0-rc.1",
"murmurhash": "^2.0.1"
},
"gitHead": "06dbda3e26565df269e9ed9c4b6e8d2f4cab45a6"
"gitHead": "a58d59a7de4df79575589520415b261cae519b1c"
}

@@ -9,4 +9,2 @@ import {

Force,
RangeObject,
RangeTuple,
} from "@featurevisor/types";

@@ -19,13 +17,2 @@ import { DatafileReader } from "./datafileReader";

// @TODO: remove this function in next breaking semver
export function getStartEndFromRange(range: unknown): RangeTuple {
if (Array.isArray(range)) {
return range as RangeTuple;
}
const rangeObject = range as RangeObject;
return [rangeObject.start, rangeObject.end];
}
/**

@@ -38,8 +25,4 @@ * Traffic

): Allocation | undefined {
let total = 0; // @TODO: remove it in next breaking semver
const usePercentage =
traffic.allocation.length > 0 && typeof traffic.allocation[0].range === "undefined"; // @TODO: remove it in next breaking semver
for (const allocation of traffic.allocation) {
const [start, end] = getStartEndFromRange(allocation.range);
const [start, end] = allocation.range;

@@ -49,10 +32,2 @@ if (allocation.range && start <= bucketValue && end >= bucketValue) {

}
// @TODO: remove it in next breaking semver
if (usePercentage) {
total += allocation.percentage || 0;
if (bucketValue <= total) {
return allocation;
}
}
}

@@ -59,0 +34,0 @@

export * from "./bucket";
export * from "./instance";
export * from "./logger";
// @TODO: remove this in next breaking semver
export { getStartEndFromRange } from "./feature";

@@ -66,4 +66,4 @@ import { DatafileContent } from "@featurevisor/types";

allocation: [
{ variation: true, range: { start: 0, end: 100000 } },
{ variation: false, range: { start: 0, end: 0 } },
{ variation: true, range: [0, 100000] },
{ variation: false, range: [0, 0] },
],

@@ -111,4 +111,4 @@ },

allocation: [
{ variation: true, range: { start: 0, end: 100000 } },
{ variation: false, range: { start: 0, end: 0 } },
{ variation: true, range: [0, 100000] },
{ variation: false, range: [0, 0] },
],

@@ -157,4 +157,4 @@ },

allocation: [
{ variation: true, range: { start: 0, end: 100000 } },
{ variation: false, range: { start: 0, end: 0 } },
{ variation: true, range: [0, 100000] },
{ variation: false, range: [0, 0] },
],

@@ -210,4 +210,4 @@ },

allocation: [
{ variation: true, range: { start: 0, end: 100000 } },
{ variation: false, range: { start: 0, end: 0 } },
{ variation: true, range: [0, 100000] },
{ variation: false, range: [0, 0] },
],

@@ -257,4 +257,4 @@ },

allocation: [
{ variation: true, range: { start: 0, end: 100000 } },
{ variation: false, range: { start: 0, end: 0 } },
{ variation: true, range: [0, 100000] },
{ variation: false, range: [0, 0] },
],

@@ -309,4 +309,4 @@ },

allocation: [
{ variation: true, range: { start: 0, end: 100000 } },
{ variation: false, range: { start: 0, end: 0 } },
{ variation: true, range: [0, 100000] },
{ variation: false, range: [0, 0] },
],

@@ -380,4 +380,4 @@ },

allocation: [
{ variation: true, range: { start: 0, end: 100000 } },
{ variation: false, range: { start: 0, end: 0 } },
{ variation: true, range: [0, 100000] },
{ variation: false, range: [0, 0] },
],

@@ -451,4 +451,4 @@ },

allocation: [
{ variation: true, range: { start: 0, end: 100000 } },
{ variation: false, range: { start: 0, end: 0 } },
{ variation: true, range: [0, 100000] },
{ variation: false, range: [0, 0] },
],

@@ -455,0 +455,0 @@ },

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc