@kameleoon/javascript-sdk-core 5.12.1 → 5.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/bundle-cjs-stats.html +4949 -0
- package/dist/bundle-es-stats.html +4949 -0
- package/dist/javascript-sdk-core.cjs.min.js +2 -0
- package/dist/javascript-sdk-core.cjs.min.js.map +1 -0
- package/dist/javascript-sdk-core.es.min.js +2 -0
- package/dist/javascript-sdk-core.es.min.js.map +1 -0
- package/dist/kameleoonClient.d.ts +1 -0
- package/dist/kameleoonClientInterface.d.ts +10 -0
- package/dist/kameleoonData/dataProcessor.d.ts +1 -0
- package/dist/kameleoonData/targetedSegment.d.ts +10 -0
- package/dist/kameleoonData/types.d.ts +18 -6
- package/dist/requester/types.d.ts +1 -1
- package/dist/targeting/types.d.ts +1 -0
- package/package.json +5 -3
- package/dist/cacheManager/cacheManager.js +0 -1
- package/dist/cacheManager/index.js +0 -1
- package/dist/cacheManager/types.js +0 -1
- package/dist/clientConfiguration/clientConfiguration.js +0 -1
- package/dist/clientConfiguration/constants.js +0 -1
- package/dist/clientConfiguration/index.js +0 -1
- package/dist/clientConfiguration/meGroup.js +0 -1
- package/dist/clientConfiguration/types.js +0 -1
- package/dist/clientSettings/clientSettings.js +0 -1
- package/dist/clientSettings/index.js +0 -1
- package/dist/clientSettings/types.js +0 -1
- package/dist/constants.js +0 -1
- package/dist/eventManager/eventManager.js +0 -1
- package/dist/eventManager/index.js +0 -1
- package/dist/eventManager/types.js +0 -1
- package/dist/eventSource/constants.js +0 -1
- package/dist/eventSource/eventSource.js +0 -1
- package/dist/eventSource/index.js +0 -1
- package/dist/eventSource/types.js +0 -1
- package/dist/hasher/hasher.js +0 -1
- package/dist/hasher/index.js +0 -1
- package/dist/hasher/types.js +0 -1
- package/dist/index.js +0 -1
- package/dist/kameleoonClient.js +0 -1
- package/dist/kameleoonClientInterface.js +0 -1
- package/dist/kameleoonData/applicationVersion.js +0 -1
- package/dist/kameleoonData/browser.js +0 -1
- package/dist/kameleoonData/cbScores.js +0 -1
- package/dist/kameleoonData/conversion.js +0 -1
- package/dist/kameleoonData/cookie.js +0 -1
- package/dist/kameleoonData/customData.js +0 -1
- package/dist/kameleoonData/dataManager.js +0 -1
- package/dist/kameleoonData/dataProcessor.js +0 -1
- package/dist/kameleoonData/device.js +0 -1
- package/dist/kameleoonData/geolocation.js +0 -1
- package/dist/kameleoonData/helpers.js +0 -1
- package/dist/kameleoonData/index.js +0 -1
- package/dist/kameleoonData/kameleoonConversionScore.js +0 -1
- package/dist/kameleoonData/operatingSystem.js +0 -1
- package/dist/kameleoonData/pageView.js +0 -1
- package/dist/kameleoonData/personalization.js +0 -1
- package/dist/kameleoonData/staticData.js +0 -1
- package/dist/kameleoonData/types.js +0 -1
- package/dist/kameleoonData/uniqueIdentifier.js +0 -1
- package/dist/kameleoonData/userAgent.js +0 -1
- package/dist/kameleoonData/visitProcessor.js +0 -1
- package/dist/kameleoonData/visitsData.js +0 -1
- package/dist/kameleoonError/constants.js +0 -1
- package/dist/kameleoonError/helpers.js +0 -1
- package/dist/kameleoonError/index.js +0 -1
- package/dist/kameleoonError/kameleoonError.js +0 -1
- package/dist/kameleoonError/types.js +0 -1
- package/dist/kameleoonUtils.js +0 -1
- package/dist/logging/defaultLogger.js +0 -1
- package/dist/logging/index.js +0 -1
- package/dist/logging/kameleoonLogger.js +0 -1
- package/dist/logging/types.js +0 -1
- package/dist/requester/constants.js +0 -1
- package/dist/requester/index.js +0 -1
- package/dist/requester/requester.js +0 -1
- package/dist/requester/types.js +0 -1
- package/dist/requester/urlProvider.js +0 -1
- package/dist/sdkInfoTypes.js +0 -1
- package/dist/storage/constants.js +0 -1
- package/dist/storage/index.js +0 -1
- package/dist/storage/integrityChecker.js +0 -1
- package/dist/storage/storage.js +0 -1
- package/dist/storage/storageCleanupManager.js +0 -1
- package/dist/storage/types.js +0 -1
- package/dist/targeting/conditions/applicationVersion.js +0 -1
- package/dist/targeting/conditions/browser.js +0 -1
- package/dist/targeting/conditions/conditionFactory.js +0 -1
- package/dist/targeting/conditions/conditionFactoryInstance.js +0 -1
- package/dist/targeting/conditions/conversion.js +0 -1
- package/dist/targeting/conditions/conversionLikelihood.js +0 -1
- package/dist/targeting/conditions/cookie.js +0 -1
- package/dist/targeting/conditions/customData.js +0 -1
- package/dist/targeting/conditions/device.js +0 -1
- package/dist/targeting/conditions/exclusiveCampaign.js +0 -1
- package/dist/targeting/conditions/exclusiveExperiment.js +0 -1
- package/dist/targeting/conditions/firstVisit.js +0 -1
- package/dist/targeting/conditions/geolocation.js +0 -1
- package/dist/targeting/conditions/index.js +0 -1
- package/dist/targeting/conditions/lastVisit.js +0 -1
- package/dist/targeting/conditions/newVisitor.js +0 -1
- package/dist/targeting/conditions/operatingSystem.js +0 -1
- package/dist/targeting/conditions/pageTitle.js +0 -1
- package/dist/targeting/conditions/pageUrl.js +0 -1
- package/dist/targeting/conditions/previousPage.js +0 -1
- package/dist/targeting/conditions/sameDayVisits.js +0 -1
- package/dist/targeting/conditions/sdkLanguage.js +0 -1
- package/dist/targeting/conditions/segment.js +0 -1
- package/dist/targeting/conditions/targetExperiment.js +0 -1
- package/dist/targeting/conditions/targetFeatureFlag.js +0 -1
- package/dist/targeting/conditions/targetPersonalization.js +0 -1
- package/dist/targeting/conditions/types.js +0 -1
- package/dist/targeting/conditions/utilities.js +0 -1
- package/dist/targeting/conditions/visitedPages.js +0 -1
- package/dist/targeting/conditions/visitorCode.js +0 -1
- package/dist/targeting/conditions/visits.js +0 -1
- package/dist/targeting/index.js +0 -1
- package/dist/targeting/node.js +0 -1
- package/dist/targeting/tree.js +0 -1
- package/dist/targeting/types.js +0 -1
- package/dist/tracking/bodyProvider.js +0 -1
- package/dist/tracking/constants.js +0 -1
- package/dist/tracking/index.js +0 -1
- package/dist/tracking/tracker.js +0 -1
- package/dist/tracking/types.js +0 -1
- package/dist/types.js +0 -1
- package/dist/utilities/constants.js +0 -1
- package/dist/utilities/index.js +0 -1
- package/dist/utilities/listUtilities.js +0 -1
- package/dist/utilities/parser.js +0 -1
- package/dist/utilities/types.js +0 -1
- package/dist/utilities/utilities.js +0 -1
- package/dist/utilities/validator.js +0 -1
- package/dist/variationConfiguration/index.js +0 -1
- package/dist/variationConfiguration/types.js +0 -1
- package/dist/variationConfiguration/variationConfiguration.js +0 -1
- package/dist/visitorCodeManager/constants.js +0 -1
- package/dist/visitorCodeManager/index.js +0 -1
- package/dist/visitorCodeManager/types.js +0 -1
- package/dist/visitorCodeManager/visitorCodeManager.js +0 -1
package/dist/utilities/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"IExternalPRNG",{enumerable:!0,get:function(){return _types.IExternalPRNG}}),Object.defineProperty(exports,"ListUtilities",{enumerable:!0,get:function(){return _listUtilities.ListUtilities}}),Object.defineProperty(exports,"Order",{enumerable:!0,get:function(){return _types.Order}}),Object.defineProperty(exports,"Parser",{enumerable:!0,get:function(){return _parser.Parser}}),Object.defineProperty(exports,"TimeUnit",{enumerable:!0,get:function(){return _types.TimeUnit}}),Object.defineProperty(exports,"Utilities",{enumerable:!0,get:function(){return _utilities.Utilities}}),Object.defineProperty(exports,"Validator",{enumerable:!0,get:function(){return _validator.Validator}}),Object.defineProperty(exports,"VisitorDataFiltersType",{enumerable:!0,get:function(){return _types.VisitorDataFiltersType}});var _utilities=require("./utilities"),_listUtilities=require("./listUtilities"),_parser=require("./parser"),_validator=require("./validator"),_types=require("./types");
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ListUtilities=void 0;var _types=require("./types"),_constants=require("./constants");class ListUtilities{static insertInOrderedListMutably(a){let{list:b,element:c,order:d}=a;if(!b.includes(c)){const a=b.findIndex(a=>d===_types.Order.Ascending?a>=c:a<=c);-1===a?b.push(c):b.splice(a,0,c)}}static insertVisitInOrderedListMutably(a){let{list:b,visit:c}=a;const d=b.find(a=>"number"==typeof a?a===c.timeStarted:a.timeStarted===c.timeStarted);if(!d){const a=b.findIndex(a=>"number"==typeof a?a>=c.timeStarted:a.timeStarted>=c.timeStarted);-1===a?b.push(c):b.splice(a,0,c),b.length>_constants.VISITOR_VISIT_MAX_LENGTH&&b.splice(0,b.length-_constants.VISITOR_VISIT_MAX_LENGTH)}}}exports.ListUtilities=ListUtilities;
|
package/dist/utilities/parser.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Parser=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_types=require("../types"),_visitProcessor=require("../kameleoonData/visitProcessor"),_constants=require("./constants"),_visitsData=require("../kameleoonData/visitsData");class Parser{static parseFeatureVariable(a){const{key:b,type:c,value:d}=a;switch(c){case _types.VariableType.BOOLEAN:return(0,_tsRes.Ok)({key:b,type:c,value:!!d});case _types.VariableType.JS:case _types.VariableType.CSS:case _types.VariableType.STRING:return(0,_tsRes.Ok)({key:b,type:c,value:d+""});case _types.VariableType.NUMBER:const e=+d;return Number.isNaN(e)?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NumberParse,d+"")):(0,_tsRes.Ok)({key:b,type:c,value:e});case _types.VariableType.JSON:try{const d=JSON.parse(a.value+"");return(0,_tsRes.Ok)({key:b,type:c,value:d})}catch(a){return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.JSONParse,a))}default:(0,_kameleoonError.exhaustCheck)(c)}}static parseVisitorData(a){let{data:b,filters:c,visitorCode:d,dataManager:e,variationConfiguration:f}=a;const g=new _visitProcessor.VisitProcessor({filters:c,dataManager:e,visitorCode:d}),{currentVisit:h,previousVisits:i,kcs:j,cbs:k}=b;if(!(null!==i&&void 0!==i&&i.length)&&!h)return{visitorData:[],storageVisitorData:[],visitsData:new _visitsData.VisitsData([])};h&&(g.processVisit(h),g.processVisitNumber(h,!0)),null===i||void 0===i?void 0:i.forEach(a=>{g.processVisit(a),g.processVisitsData(a),g.processVisitNumber(a,!1)}),g.processKcs(j),g.processCbs(k),g.processMultipleDataTypes();const l=g.processMappingIdentifier(null!==h&&void 0!==h?h:null===i||void 0===i?void 0:i[0]),{visitorData:m,storageVisitorData:n,visitsData:o,experimentData:p}=g.data;return f.updateStoredVariations(d,p),{visitorData:m,storageVisitorData:n,visitsData:o,mappingIdentifier:l}}static parseRegExp(a){if("/"===a[0]){const[_,b,c]=a.split("/");return new RegExp(b,c)}return new RegExp(a)}static parseSecret(a){if(null===a)return"null";const b=a.length;if(b<=_constants.SECRET_VISIBLE_LENGTH)return _constants.HIDDEN_SECRET_CHAR.repeat(b);const c=Math.max(b-_constants.SECRET_VISIBLE_LENGTH,_constants.SECRET_VISIBLE_LENGTH);return a.substring(0,b-c)+_constants.HIDDEN_SECRET_CHAR.repeat(c)}}exports.Parser=Parser;
|
package/dist/utilities/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TimeUnit=exports.Order=void 0;let TimeUnit=exports.TimeUnit=function(a){return a.Minute="MINUTE",a.Hour="HOUR",a.Day="DAY",a.Week="WEEK",a.Month="MONTH",a}({}),Order=exports.Order=function(a){return a.Ascending="asc",a.Descending="desc",a}({});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Utilities=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_types=require("../types"),_types2=require("../kameleoonData/types"),_constants=require("../constants"),_types3=require("../targeting/types"),_types4=require("./types"),_constants2=require("./constants"),_validator=require("./validator"),_logging=require("../logging");function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class Utilities{static getNonce(a){let b="";for(let c=0;c<_constants2.NONCE_LENGTH;c++){const c=a.getRandomNumber(),d=Math.floor(c*_constants2.NONCE_LENGTH);b+=_constants2.HEX_CHARACTERS.charAt(d)}return b}static checkTargeting(a){let{segment:b,visitorCode:c,targetingData:d,experimentId:e,variationConfiguration:f,clientConfiguration:g,packageInfo:h,dataManager:i}=a;if(_logging.KameleoonLogger.debug`CALL: checkTargeting(segment, visitorCode: ${c}, targetingData: ${d}, experimentId: ${e}, variationConfiguration, clientConfiguration, packageInfo, dataManager)`,!b||!b.conditionsData.firstLevel.length){const a=(0,_tsRes.Ok)(!0);return _logging.KameleoonLogger.debug`RETURN checkTargeting(segment, visitorCode: ${c}, targetingData: ${d}, experimentId: ${e}, variationConfiguration, clientConfiguration, packageInfo, dataManager) -> (result: ${a})`,a}if(!f){const a=(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));return _logging.KameleoonLogger.debug`RETURN checkTargeting(segment, visitorCode: ${c}, targetingData: ${d}, experimentId: ${e}, variationConfiguration, clientConfiguration, packageInfo, dataManager) -> (result: ${a})`,a}let j={};const k=f.getStoredVariations(c);k.ok&&(j=k.data);const l=i.getTree(b);let m,n,o;l.hasTargetingType(_types3.TargetingType.SEGMENT)&&(m=i.trees,o=g.segments),l.hasTargetingType(_types3.TargetingType.TARGET_FEATURE_FLAG)&&(n=g.ruleMap);const p=l.evaluate({variationData:j,sdkInfo:h,segments:o,ruleMap:n,trees:m,targetingData:d,experimentId:e,visitorCode:c});return _logging.KameleoonLogger.debug`RETURN checkTargeting(segment, visitorCode: ${c}, targetingData: ${d}, experimentId: ${e}, variationConfiguration, clientConfiguration, packageInfo, dataManager) -> (result: ${p})`,p}static convertTimeUnit(a,b){const c={[_types4.TimeUnit.Minute]:_types.Milliseconds.Minute,[_types4.TimeUnit.Hour]:_types.Milliseconds.Hour,[_types4.TimeUnit.Day]:_types.Milliseconds.Day,[_types4.TimeUnit.Week]:_types.Milliseconds.Week,[_types4.TimeUnit.Month]:_types.Milliseconds.Month};return a/c[b]}static isCustomData(a){return a.data.type===_types2.KameleoonData.CustomData}static updateCache(a){let{hasJsCssVariables:b,cacheManager:c,visitorCode:d,experimentId:e,variationId:f}=a;const g=c.getAliveItem(d),h=g?_objectSpread({},g):{};h[e]={variationId:f,hasJsCssVariables:b,expirationTime:Date.now()+_constants.CACHE_ITEM_LIFETIME*_types.Milliseconds.Second},c.add({key:d,data:h,lifetime:_constants.CACHE_ITEM_LIFETIME})}static getTrackingCode(a,b){let c="window.kameleoonQueue=window.kameleoonQueue||[];";const d=a.getAliveItem(b);if(!d)return c;const e={};return Object.entries(d).forEach(a=>{let[b,{variationId:d,expirationTime:f,hasJsCssVariables:g}]=a;f>Date.now()&&(c+=`window.kameleoonQueue.push(['Experiments.assignVariation',${b},${d},true]);`,c+=`window.kameleoonQueue.push(['Experiments.trigger',${b},${!g}]);`,e[+b]={variationId:d,expirationTime:f,hasJsCssVariables:g})}),a.add({key:b,data:e,lifetime:_constants.CACHE_ITEM_LIFETIME}),c}static compareSemVer(a){let{version:b,compareVersion:c,operator:d}=a;const e=_validator.Validator.validateVersion(b),f=_validator.Validator.validateVersion(c);if(!e.ok)return(0,_tsRes.Err)(e.error);if(!f.ok)return(0,_tsRes.Err)(f.error);const[g,h,i]=e.data,[j,k,l]=f.data,[m,n,o]=[g===j,h===k,i===l];switch(d){case _types3.VersionMatchType.EQUAL:return(0,_tsRes.Ok)(m&&n&&o);case _types3.VersionMatchType.GREATER:return(0,_tsRes.Ok)(g>j||m&&h>k||m&&n&&i>l);case _types3.VersionMatchType.LOWER:return(0,_tsRes.Ok)(g<j||m&&h<k||m&&n&&i<l);default:_logging.KameleoonLogger.error`Unknown version match type: ${d}`,(0,_kameleoonError.exhaustCheck)(d)}}static getVariationByHash(a,b){let c=0;for(const d of a)if(c+=d.exposition,c>=b)return d;return null}}exports.Utilities=Utilities;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Validator=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_constants=require("./constants"),_logging=require("../logging");class Validator{static validateVersion(a){const b=a.split(".").map(a=>parseInt(a,10));for(;3>b.length;)b.push(0);return b.some(a=>isNaN(a))?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.SemanticVersionParse,a)):(0,_tsRes.Ok)(b.slice(0,3))}static validateDomain(a){return a?(a=Validator.checkAndTrimProtocol(a.toLowerCase()),_constants.REGEX_DOMAIN.test(a)||a===_constants.LOCALHOST?(0,_tsRes.Ok)(a):(_logging.KameleoonLogger.error`The top-level domain ${a} is invalid. The value has been set as provided, but it does not meet the required format for proper SDK functionality. Please check the domain for correctness.`,(0,_tsRes.Ok)(a))):(0,_tsRes.Err)()}static validateNetworkDomain(a){return a?(a=Validator.checkAndTrimProtocol(a.toLowerCase()),a=a.replace(/^\.+|\.+$/g,""),_constants.REGEX_DOMAIN.test(a)||a===_constants.LOCALHOST?(0,_tsRes.Ok)(a):(_logging.KameleoonLogger.error`The network domain ${a} is invalid.`,(0,_tsRes.Err)())):(0,_tsRes.Err)()}static checkAndTrimProtocol(a){const b=[_constants.HTTP,_constants.HTTPS];for(const c of b)if(a.startsWith(c)){a=a.substring(c.length),_logging.KameleoonLogger.warning`The domain contains ${c}. Domain after protocol trimming: ${a}`;break}return a}}exports.Validator=Validator;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"FeatureFlagVariationType",{enumerable:!0,get:function(){return _types.FeatureFlagVariationType}}),Object.defineProperty(exports,"VariationConfiguration",{enumerable:!0,get:function(){return _variationConfiguration.VariationConfiguration}});var _variationConfiguration=require("./variationConfiguration"),_types=require("./types");
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VariationConfiguration=void 0;var _tsRes=require("ts-res"),_hasher=require("../hasher"),_kameleoonError=require("../kameleoonError"),_utilities=require("../utilities"),_types=require("../clientConfiguration/types"),_types2=require("../types"),_logging=require("../logging"),_cbScores=require("../kameleoonData/cbScores");function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class VariationConfiguration{constructor(a,b,c,d,e){_defineProperty(this,"storage",void 0),_defineProperty(this,"storageForcedExperimentVariations",void 0),_defineProperty(this,"storageForcedFeatureVariations",void 0),_defineProperty(this,"visitorCodeManager",void 0),_defineProperty(this,"clientConfiguration",void 0),this.storage=a,this.storageForcedExperimentVariations=b,this.storageForcedFeatureVariations=c,this.visitorCodeManager=d,this.clientConfiguration=e,d.setVariationConfiguration(this)}updateDataStatus(a){let{visitorCode:b,experimentIdList:c,status:d}=a;const e=this.storage.read();if(!e.ok)return e;let f=e.data;f[b]||(f[b]={});for(const e of c)f[b][e]=_objectSpread(_objectSpread({},f[b][e]),{},{status:d});return this.storage.write(f)}getUnsentData(a){return this.getVariationData(a,a=>a===_types2.TrackingStatus.Unsent)}getVisitorsWithUnsentData(){_logging.KameleoonLogger.debug`CALL: VariationConfiguration.unsentDataVisitors()`;const a=this.storage.read();if(!a.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.unsentDataVisitors() -> (result: ${a})`,[];const b=[];for(const[c,d]of Object.entries(a.data))Object.values(d).some(a=>a.status===_types2.TrackingStatus.Unsent)&&b.push(c);return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.unsentDataVisitors() -> (visitors: ${b})`,b}getPendingData(a){return this.getVariationData(a,a=>a===_types2.TrackingStatus.Pending)}getStoredVariations(a){const b=this.storage.read();if(!b.ok)return b;const c=b.data[a];return c?(0,_tsRes.Ok)(c):(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.StorageRead,a))}getVariation(a){let{visitorCode:b,visitorIdentifier:c,featureFlag:d,targetingData:e,packageInfo:f,clientConfiguration:g,dataManager:h,track:i=!0,withAssignment:j=!1}=a;_logging.KameleoonLogger.debug`CALL: VariationConfiguration.getVariation(visitorCode: ${b}, visitorIdentifier: ${c}, featureFlag: ${d}, targetingData: ${e}, packageInfo: ${f}, clientConfiguration, dataManager, withAssignment: ${j})`;const{rules:k,featureKey:l,id:m,defaultVariationKey:n}=d;for(const o of k){const{segment:a,experimentId:k,id:p,exposition:q,respoolTime:r,variationByExposition:s}=o,t=this.getForcedExperimentVariation(b,o.experimentId);let u=null;if(t.ok&&(u=t.data,u&&u.forceTargeting)){_logging.KameleoonLogger.info`Visitor ${b} has been forced targeted for ${o}`;const a=this.createAndSaveForcedTargetedVariation(b,d,o,u,i,j);return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getVariation(visitorCode: ${b}, visitorIdentifier: ${c}, featureFlag: ${d}, targetingData: ${e}, packageInfo: ${f}, clientConfiguration, dataManager, withAssignment: ${j}) -> (targetedVariation: ${a})`,(0,_tsRes.Ok)(a)}const v=_utilities.Utilities.checkTargeting({segment:a,visitorCode:b,experimentId:k,targetingData:e,packageInfo:f,clientConfiguration:g,dataManager:h,variationConfiguration:this});if(!v.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getVariation(visitorCode: ${b}, visitorIdentifier: ${c}, featureFlag: ${d}, targetingData: ${e}, packageInfo: ${f}, clientConfiguration, dataManager, withAssignment: ${j}) -> (targetedVariation: ${v})`,v;if(!v.data)continue;if(_logging.KameleoonLogger.info`Visitor ${b} has been targeted for ${o}`,u){const a=this.createAndSaveForcedTargetedVariation(b,d,o,u,i,j);return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getVariation(visitorCode: ${b}, visitorIdentifier: ${c}, featureFlag: ${d}, targetingData: ${e}, packageInfo: ${f}, clientConfiguration, dataManager, withAssignment: ${j}) -> (targetedVariation: ${a})`,(0,_tsRes.Ok)(a)}const w=_hasher.Hasher.getHashDouble({visitorIdentifier:c,respoolTime:r,id:p+""});if(_logging.KameleoonLogger.debug`Calculated ruleHash: ${w} for code: ${c}`,w<=q){let a=this.evaluateCBScores(o,c,e);if(!a){const b=_hasher.Hasher.getHashDouble({visitorIdentifier:c,respoolTime:r,id:k+""});_logging.KameleoonLogger.debug`Calculated variationHash: ${b} for code: ${c}`,a=_utilities.Utilities.getVariationByHash(s,b)}if(a){j&&this.updateStoredVariations(b,{[k]:{variationId:a.variationId,isTargetedRule:o.type===_types.RuleType.TARGETED_DELIVERY,status:i?_types2.TrackingStatus.Unsent:_types2.TrackingStatus.Sent}});const g={variationId:a.variationId,variationKey:a.variationKey,rule:o,featureFlagId:m,featureKey:l,experimentId:k,isTargetedRule:o.type===_types.RuleType.TARGETED_DELIVERY};return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getVariation(visitorCode: ${b}, visitorIdentifier: ${c}, featureFlag: ${d}, targetingData: ${e}, packageInfo: ${f}, clientConfiguration, dataManager, withAssignment: ${j}) -> (targetedVariation: ${g})`,(0,_tsRes.Ok)(g)}}if(o.type===_types.RuleType.TARGETED_DELIVERY){const a={featureKey:l,featureFlagId:m,experimentId:null,variationKey:n,variationId:null,rule:null,isTargetedRule:!0};return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getVariation(visitorCode: ${b}, visitorIdentifier: ${c}, featureFlag: ${d}, targetingData: ${e}, packageInfo: ${f}, clientConfiguration, dataManager, withAssignment: ${j}) -> (targetedVariation: ${a})`,(0,_tsRes.Ok)(a)}}const o={featureKey:l,featureFlagId:m,experimentId:null,variationKey:n,variationId:null,rule:null,isTargetedRule:!1};return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getVariation(visitorCode: ${b}, visitorIdentifier: ${c}, featureFlag: ${d}, targetingData: ${e}, packageInfo: ${f}, clientConfiguration, dataManager, withAssignment: ${j}) -> (targetedVariation: ${o})`,(0,_tsRes.Ok)(o)}createAndSaveForcedTargetedVariation(a,b,c,d,e,f){const g={variationKey:d.varByExp.variationKey,variationId:d.varByExp.variationId,rule:c,featureFlagId:b.id,featureKey:b.featureKey,experimentId:c.experimentId,isTargetedRule:c.type===_types.RuleType.TARGETED_DELIVERY};return f&&this.updateStoredVariations(a,{[c.experimentId]:{variationId:g.variationId,isTargetedRule:c.type===_types.RuleType.TARGETED_DELIVERY,status:e?_types2.TrackingStatus.Unsent:_types2.TrackingStatus.Sent}}),g}updateStoredVariations(a,b){_logging.KameleoonLogger.debug`CALL: VariationConfiguration.updateStoredVariations(visitorCode: ${a}, variationData: ${b})`;const c=this.storage.read();if(!c.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.updateStoredVariations(visitorCode: ${a}, variationData: ${b}) -> (result: ${c})`,c;let d=c.data;for(const c in d[a]||(d[a]={}),b)d[a][c]=b[c];const e=this.storage.write(d);return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.updateStoredVariations(visitorCode: ${a}, variationData: ${b}) -> (resultWrite: ${e})`,e}getVariationData(a,b){const c=this.getStoredVariations(a);if(!c.ok)return[];const d=[];for(const[e,f]of Object.entries(c.data))b(f.status)&&d.push({experimentId:+e,variationId:f.variationId,isTargetedRule:f.isTargetedRule});return d}updateForcedExperimentVariation(a,b,c){_logging.KameleoonLogger.debug`CALL: VariationConfiguration.updateForcedExperimentVariation(visitorCode: ${a}, experimentId: ${b}, forcedExperimentVariation: ${c})`;const d=this.storageForcedExperimentVariations.read();if(!d.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.updateForcedExperimentVariation(visitorCode: ${a}, experimentId: ${b}, forcedExperimentVariation: ${c}) -> (result: ${d})`,d;let e=d.data;e[a]||(e[a]={}),c?e[a][b]=c:delete e[a][b];const f=this.storageForcedExperimentVariations.write(e);return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.updateForcedExperimentVariation(visitorCode: ${a}, experimentId: ${b}, forcedExperimentVariation: ${c}) -> (resultWrite: ${f})`,f}updateForcedFeatureVariations(a,b){_logging.KameleoonLogger.debug`CALL: VariationConfiguration.updateForcedFeatureVariations(visitorCode: ${a}, forcedFeatureVariations: ${b})`;const c=this.storageForcedFeatureVariations.read();if(!c.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.updateForcedFeatureVariations(visitorCode: ${a}, forcedFeatureVariations: ${b}) -> (result: ${c})`,c;let d=c.data;d[0]||(d[0]={}),d[1]||(d[1]={});const e=d[0],f=d[1];e[a]||(e[a]={}),f[a]||(f[a]={}),b.forEach(b=>{const c=b.simulated?f[a]:e[a];c[b.featureKey]=b});const g=this.storageForcedFeatureVariations.write(d);return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.updateForcedFeatureVariations(visitorCode: ${a}, forcedFeatureVariations: ${b}) -> (resultWrite: ${g})`,g}clearSimulatedVariations(a){var b;_logging.KameleoonLogger.debug`CALL: VariationConfiguration.clearSimulatedVariations(visitorCode: ${a})`;const c=this.storageForcedFeatureVariations.read();if(!c.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.clearSimulatedVariations(visitorCode: ${a}) -> (result: ${c})`,c;let d;const e=c.data;return null!==e&&void 0!==e&&null!==(b=e[1])&&void 0!==b&&b[a]?(delete e[1][a],d=this.storageForcedFeatureVariations.write(e)):d=(0,_tsRes.Ok)(),_logging.KameleoonLogger.debug`RETURN: VariationConfiguration.clearSimulatedVariations(visitorCode: ${a}) -> (resultWrite: ${d})`,d}getForcedFeatureVariation(a,b){var c,d,e,f;_logging.KameleoonLogger.debug`CALL: VariationConfiguration.getForcedFeatureVariation(visitorCode: ${a}, featureKey: ${b})`;const g=this.storageForcedFeatureVariations.read();if(!g.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getForcedFeatureVariation(visitorCode: ${a}, featureKey: ${b}) -> (simulatedResult: ${g})`,g;const h=null===(c=g.data[1])||void 0===c||null===(d=c[a])||void 0===d?void 0:d[b];if(h)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getForcedFeatureVariation(visitorCode: ${a}, featureKey: ${b}) -> (simulatedData: ${h})`,(0,_tsRes.Ok)(h);const i=null===(e=g.data[0])||void 0===e||null===(f=e[a])||void 0===f?void 0:f[b];return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getForcedFeatureVariation(visitorCode: ${a}, featureKey: ${b}) -> (forcedData: ${i})`,(0,_tsRes.Ok)(i)}getForcedExperimentVariation(a,b){var c;_logging.KameleoonLogger.debug`CALL: VariationConfiguration.getForcedExperimentVariation(visitorCode: ${a}, experimentId: ${b})`;const d=this.storageForcedExperimentVariations.read();if(!d.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getForcedExperimentVariation(visitorCode: ${a}, experimentId: ${b}) -> (forcedResult: ${d})`,d;const e=null===(c=d.data[a])||void 0===c?void 0:c[b];return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getForcedExperimentVariation(visitorCode: ${a}, experimentId: ${b}) -> (forcedExperiment: ${e})`,(0,_tsRes.Ok)(e)}parseForcedVariationData(a){let b=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1];const c=this.clientConfiguration.featureFlags.get(a.featureKey);if(!c)return _logging.KameleoonLogger.error`Simulated feature flag '${a.featureKey}' not found`,null;let d=null;if(0===a.experimentId)return d={featureKey:a.featureKey,rule:null,varByExp:null,simulated:b},d;for(const e of c.rules){if(a.experimentId!==e.experimentId)continue;const c=e.variationByExposition.find(b=>b.variationId===a.variationId);if(c)return d={featureKey:a.featureKey,rule:{type:e.type,experimentId:e.experimentId},varByExp:{variationKey:c.variationKey,variationId:c.variationId},simulated:b},d}return _logging.KameleoonLogger.error`Simulated variation ${a.variationId} not found`,null}simulatedVariationFromJson(a,b){if(_logging.KameleoonLogger.debug`CALL: VariationConfiguration.simulatedVariationFromJson(featureKey: ${a}, data: ${b})`,!this.isSimulatedVariationJson(b))return null;const c=this.parseForcedVariationData({featureKey:a,variationId:b.varId,experimentId:b.expId},!0);return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.simulatedVariationFromJson(featureKey: ${a}, data: ${b}) -> (forcedVariation: ${c})`,c}isSimulatedVariationJson(a){return a&&("number"==typeof a.expId||null===a.expId)}evaluateCBScores(a,b,c){if(!c||!c.cbScores)return null;_logging.KameleoonLogger.debug`CALL: KameleoonClientImpl.evaluateCBScores(rule: ${a}, targetingData: ${c}, visitorIdentifier: ${b})`;const d=a.experimentId,e=new _cbScores.CBScores(c.cbScores.cbs).getValues().get(d);let f=null;if(void 0!==e){const c=a.variationByExposition,g=e.map(a=>c.filter(b=>a.ids.includes(b.variationId))).find(a=>0<a.length);if(g){let c=0;if(1<g.length){const e=_hasher.Hasher.getHashDouble({visitorIdentifier:b,respoolTime:a.respoolTime,id:d+""});_logging.KameleoonLogger.debug`Calculated cbs hash ${e} for code ${b}`,c=Math.min(Math.floor(e*g.length),g.length-1)}f=g[c]}}return _logging.KameleoonLogger.debug`RETURN: KameleoonClientImpl.evaluateCBScores(rule: ${a}, targetingData: ${c}, visitorIdentifier: ${b}) -> (variation: ${f})`,f}}exports.VariationConfiguration=VariationConfiguration;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ZERO_MAX_AGE=exports.VISITOR_CODE_MAX_LENGTH=exports.VISITOR_CODE_LENGTH=exports.PATH=exports.DEFAULT_MAX_AGE=void 0;const VISITOR_CODE_LENGTH=exports.VISITOR_CODE_LENGTH=16,VISITOR_CODE_MAX_LENGTH=exports.VISITOR_CODE_MAX_LENGTH=255,DEFAULT_MAX_AGE=exports.DEFAULT_MAX_AGE=31536000,ZERO_MAX_AGE=exports.ZERO_MAX_AGE=0,PATH=exports.PATH="/";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var _exportNames={VisitorCodeManager:!0};var _types=require("./types");var _constants=require("./constants");var _visitorCodeManager=require("./visitorCodeManager");Object.defineProperty(exports,"__esModule",{value:!0});Object.defineProperty(exports,"VisitorCodeManager",{enumerable:!0,get:function(){return _visitorCodeManager.VisitorCodeManager}});Object.keys(_types).forEach(function(a){"default"===a||"__esModule"===a||Object.prototype.hasOwnProperty.call(_exportNames,a)||a in exports&&exports[a]===_types[a]||Object.defineProperty(exports,a,{enumerable:!0,get:function(){return _types[a]}})});Object.keys(_constants).forEach(function(a){"default"===a||"__esModule"===a||Object.prototype.hasOwnProperty.call(_exportNames,a)||a in exports&&exports[a]===_constants[a]||Object.defineProperty(exports,a,{enumerable:!0,get:function(){return _constants[a]}})});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorCodeManager=void 0;var _tsRes=require("ts-res"),_storage=require("../storage"),_kameleoonError=require("../kameleoonError"),_constants=require("./constants"),_logging=require("../logging");function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class VisitorCodeManager{constructor(){_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"isConsentRequired",!1),_defineProperty(this,"setDataCallback",void 0),_defineProperty(this,"getDataCallback",void 0)}set consentRequired(a){this.isConsentRequired=a}get consentRequired(){return this.isConsentRequired}set getData(a){this.getDataCallback=a}set setData(a){this.setDataCallback=a}get setData(){if(this.setDataCallback)return this.setDataCallback;throw new Error("Missing setDataCallback!")}validateVisitorCode(a){return 0===a.length?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeEmpty)):a.length>_constants.VISITOR_CODE_MAX_LENGTH?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeMaxLength)):(0,_tsRes.Ok)()}getVisitorCode(a){if(_logging.KameleoonLogger.debug`CALL: VisitorCodeManager.getVisitorCode(defaultVisitorCode: ${a})`,!this.getDataCallback||!this.setDataCallback)throw new Error("Missing getDataCallback or setDataCallback methods in getVisitorCode!");let b;const c=this.getDataCallback(_storage.KameleoonStorageKey.VisitorCode);return c&&(b=c),b||(a?(this.validateVisitorCode(a).throw(),b=a,_logging.KameleoonLogger.debug`Used default visitor code: ${b}`):(b=this.generateVisitorCode(),_logging.KameleoonLogger.debug`Generated new visitor code: ${b}`)),this.processSimulatedVariations(b),this.isConsentRequired||this.setDataCallback({visitorCode:b,key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_constants.DEFAULT_MAX_AGE,path:_constants.PATH}),_logging.KameleoonLogger.debug`RETURN: VisitorCodeManager.getVisitorCode(defaultVisitorCode: ${a}) -> (visitorCode: ${b})`,b}processSimulatedVariations(a){if(this.variationConfiguration){const b=this.getSimulatedVariations(a);try{this.variationConfiguration.clearSimulatedVariations(a).throw(),null!==b&&0<b.length&&this.variationConfiguration.updateForcedFeatureVariations(a,b).throw()}catch(a){a instanceof Error&&_logging.KameleoonLogger.error`Failed to process simulated variations: ${a.message}`}}}getSimulatedVariations(a){_logging.KameleoonLogger.debug`CALL: VisitorCodeManager.getSimulatedVariations(visitorCode: ${a})`;const b=this.getDataCallback(_storage.KameleoonStorageKey.KameleoonSimulationFFData);let c=null;if("string"==typeof b&&0<b.length)try{const a=JSON.parse(decodeURIComponent(b));a&&"object"==typeof a&&(c=Object.entries(a).map(a=>{let[b,c]=a;return this.variationConfiguration.simulatedVariationFromJson(b,c)}).filter(a=>null!==a))}catch(a){a instanceof Error&&_logging.KameleoonLogger.error`Failed to parse simulated variations: ${a.message}`}return _logging.KameleoonLogger.debug`RETURN: VisitorCodeManager.getSimulatedVariations(visitorCode: ${a}) -> (variations: ${c})`,c}generateVisitorCode(){const a="abcdefghijklmnopqrstuvwxyz0123456789",b=[];for(let c=0;c<_constants.VISITOR_CODE_LENGTH;c++)b.push(a[Math.floor(Math.random()*a.length)]);return b.join("")}setVariationConfiguration(a){this.variationConfiguration||(this.variationConfiguration=a)}}exports.VisitorCodeManager=VisitorCodeManager;
|