@kameleoon/javascript-sdk-core 5.0.2 → 5.1.1
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 +51 -0
- package/dist/cacheManager/cacheManager.js +1 -2
- package/dist/cacheManager/index.js +1 -2
- package/dist/cacheManager/types.js +1 -2
- package/dist/clientConfiguration/clientConfiguration.js +1 -2
- package/dist/clientConfiguration/constants.js +1 -2
- package/dist/clientConfiguration/index.js +1 -2
- package/dist/clientConfiguration/types.js +1 -2
- package/dist/clientSettings/clientSettings.js +1 -2
- package/dist/clientSettings/index.js +1 -2
- package/dist/clientSettings/types.js +1 -2
- package/dist/constants.js +1 -2
- package/dist/eventManager/eventManager.js +1 -2
- package/dist/eventManager/index.js +1 -2
- package/dist/eventManager/types.js +1 -2
- package/dist/eventSource/constants.js +1 -2
- package/dist/eventSource/eventSource.d.ts +2 -0
- package/dist/eventSource/eventSource.js +1 -2
- package/dist/eventSource/index.js +1 -2
- package/dist/eventSource/types.d.ts +4 -0
- package/dist/eventSource/types.js +1 -2
- package/dist/hasher/hasher.js +1 -2
- package/dist/hasher/index.js +1 -2
- package/dist/hasher/types.js +1 -2
- package/dist/index.d.ts +5 -3
- package/dist/index.js +1 -2
- package/dist/kameleoonClient.d.ts +6 -1
- package/dist/kameleoonClient.js +1 -2
- package/dist/kameleoonClientInterface.d.ts +68 -20
- package/dist/kameleoonClientInterface.js +1 -2
- package/dist/kameleoonData/applicationVersion.js +1 -2
- package/dist/kameleoonData/browser.js +1 -2
- package/dist/kameleoonData/conversion.js +1 -2
- package/dist/kameleoonData/cookie.js +1 -2
- package/dist/kameleoonData/customData.js +1 -2
- package/dist/kameleoonData/dataManager.js +1 -2
- package/dist/kameleoonData/dataProcessor.js +1 -2
- package/dist/kameleoonData/device.js +1 -2
- package/dist/kameleoonData/geolocation.js +1 -2
- package/dist/kameleoonData/helpers.js +1 -2
- package/dist/kameleoonData/index.js +1 -2
- package/dist/kameleoonData/kameleoonConversionScore.js +1 -2
- package/dist/kameleoonData/operatingSystem.js +1 -2
- package/dist/kameleoonData/pageView.js +1 -2
- package/dist/kameleoonData/types.js +1 -2
- package/dist/kameleoonData/uniqueIdentifier.js +1 -2
- package/dist/kameleoonData/userAgent.js +1 -2
- package/dist/kameleoonData/visitProcessor.js +1 -2
- package/dist/kameleoonData/visitsData.js +1 -2
- package/dist/kameleoonError/constants.d.ts +0 -1
- package/dist/kameleoonError/constants.js +1 -2
- package/dist/kameleoonError/helpers.js +1 -2
- package/dist/kameleoonError/index.js +1 -2
- package/dist/kameleoonError/kameleoonError.d.ts +0 -1
- package/dist/kameleoonError/kameleoonError.js +1 -2
- package/dist/kameleoonError/types.d.ts +0 -1
- package/dist/kameleoonError/types.js +1 -2
- package/dist/kameleoonUtils.js +1 -2
- package/dist/logging/defaultLogger.d.ts +14 -0
- package/dist/logging/defaultLogger.js +1 -0
- package/dist/logging/index.d.ts +3 -0
- package/dist/logging/index.js +1 -0
- package/dist/logging/kameleoonLogger.d.ts +14 -0
- package/dist/logging/kameleoonLogger.js +1 -0
- package/dist/logging/types.d.ts +36 -0
- package/dist/logging/types.js +1 -0
- package/dist/requester/constants.js +1 -2
- package/dist/requester/index.js +1 -2
- package/dist/requester/requester.js +1 -2
- package/dist/requester/types.js +1 -2
- package/dist/requester/urlProvider.js +1 -2
- package/dist/storage/constants.js +1 -2
- package/dist/storage/index.js +1 -2
- package/dist/storage/integrityChecker.js +1 -2
- package/dist/storage/storage.js +1 -2
- package/dist/storage/types.js +1 -2
- package/dist/targeting/conditions/applicationVersion.js +1 -2
- package/dist/targeting/conditions/browser.js +1 -2
- package/dist/targeting/conditions/conditionFactory.js +1 -2
- package/dist/targeting/conditions/conversion.js +1 -2
- package/dist/targeting/conditions/conversionLikelihood.js +1 -2
- package/dist/targeting/conditions/cookie.js +1 -2
- package/dist/targeting/conditions/customData.js +1 -2
- package/dist/targeting/conditions/device.js +1 -2
- package/dist/targeting/conditions/exclusiveCampaign.js +1 -2
- package/dist/targeting/conditions/firstVisit.js +1 -2
- package/dist/targeting/conditions/geolocation.js +1 -2
- package/dist/targeting/conditions/index.js +1 -2
- package/dist/targeting/conditions/lastVisit.js +1 -2
- package/dist/targeting/conditions/newVisitor.js +1 -2
- package/dist/targeting/conditions/operatingSystem.js +1 -2
- package/dist/targeting/conditions/pageTitle.js +1 -2
- package/dist/targeting/conditions/pageUrl.js +1 -2
- package/dist/targeting/conditions/previousPage.js +1 -2
- package/dist/targeting/conditions/sameDayVisits.js +1 -2
- package/dist/targeting/conditions/sdkLanguage.js +1 -2
- package/dist/targeting/conditions/segment.js +1 -2
- package/dist/targeting/conditions/targetFeatureFlag.js +1 -2
- package/dist/targeting/conditions/types.js +1 -2
- package/dist/targeting/conditions/utilities.js +1 -2
- package/dist/targeting/conditions/visitedPages.js +1 -2
- package/dist/targeting/conditions/visitorCode.js +1 -2
- package/dist/targeting/conditions/visits.js +1 -2
- package/dist/targeting/index.js +1 -2
- package/dist/targeting/node.js +1 -2
- package/dist/targeting/tree.js +1 -2
- package/dist/targeting/types.js +1 -2
- package/dist/tracking/bodyProvider.js +1 -2
- package/dist/tracking/constants.js +1 -2
- package/dist/tracking/index.js +1 -2
- package/dist/tracking/tracker.js +1 -2
- package/dist/tracking/types.js +1 -2
- package/dist/types.d.ts +52 -0
- package/dist/types.js +1 -2
- package/dist/utilities/constants.d.ts +5 -0
- package/dist/utilities/constants.js +1 -2
- package/dist/utilities/index.js +1 -2
- package/dist/utilities/parser.d.ts +1 -0
- package/dist/utilities/parser.js +1 -2
- package/dist/utilities/types.js +1 -2
- package/dist/utilities/utilities.js +1 -2
- package/dist/utilities/validator.d.ts +1 -0
- package/dist/utilities/validator.js +1 -2
- package/dist/variationConfiguration/index.js +1 -2
- package/dist/variationConfiguration/types.d.ts +1 -0
- package/dist/variationConfiguration/types.js +1 -2
- package/dist/variationConfiguration/variationConfiguration.d.ts +1 -1
- package/dist/variationConfiguration/variationConfiguration.js +1 -2
- package/dist/visitorCodeManager/constants.js +1 -2
- package/dist/visitorCodeManager/index.js +1 -2
- package/dist/visitorCodeManager/types.js +1 -2
- package/dist/visitorCodeManager/visitorCodeManager.js +1 -2
- package/package.json +4 -2
- package/dist/cacheManager/cacheManager.js.map +0 -1
- package/dist/cacheManager/index.js.map +0 -1
- package/dist/cacheManager/types.js.map +0 -1
- package/dist/clientConfiguration/clientConfiguration.js.map +0 -1
- package/dist/clientConfiguration/constants.js.map +0 -1
- package/dist/clientConfiguration/index.js.map +0 -1
- package/dist/clientConfiguration/types.js.map +0 -1
- package/dist/clientSettings/clientSettings.js.map +0 -1
- package/dist/clientSettings/index.js.map +0 -1
- package/dist/clientSettings/types.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/eventManager/eventManager.js.map +0 -1
- package/dist/eventManager/index.js.map +0 -1
- package/dist/eventManager/types.js.map +0 -1
- package/dist/eventSource/constants.js.map +0 -1
- package/dist/eventSource/eventSource.js.map +0 -1
- package/dist/eventSource/index.js.map +0 -1
- package/dist/eventSource/types.js.map +0 -1
- package/dist/hasher/hasher.js.map +0 -1
- package/dist/hasher/index.js.map +0 -1
- package/dist/hasher/types.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/kameleoonClient.js.map +0 -1
- package/dist/kameleoonClientInterface.js.map +0 -1
- package/dist/kameleoonData/applicationVersion.js.map +0 -1
- package/dist/kameleoonData/browser.js.map +0 -1
- package/dist/kameleoonData/conversion.js.map +0 -1
- package/dist/kameleoonData/cookie.js.map +0 -1
- package/dist/kameleoonData/customData.js.map +0 -1
- package/dist/kameleoonData/dataManager.js.map +0 -1
- package/dist/kameleoonData/dataProcessor.js.map +0 -1
- package/dist/kameleoonData/device.js.map +0 -1
- package/dist/kameleoonData/geolocation.js.map +0 -1
- package/dist/kameleoonData/helpers.js.map +0 -1
- package/dist/kameleoonData/index.js.map +0 -1
- package/dist/kameleoonData/kameleoonConversionScore.js.map +0 -1
- package/dist/kameleoonData/operatingSystem.js.map +0 -1
- package/dist/kameleoonData/pageView.js.map +0 -1
- package/dist/kameleoonData/types.js.map +0 -1
- package/dist/kameleoonData/uniqueIdentifier.js.map +0 -1
- package/dist/kameleoonData/userAgent.js.map +0 -1
- package/dist/kameleoonData/visitProcessor.js.map +0 -1
- package/dist/kameleoonData/visitsData.js.map +0 -1
- package/dist/kameleoonError/constants.js.map +0 -1
- package/dist/kameleoonError/helpers.js.map +0 -1
- package/dist/kameleoonError/index.js.map +0 -1
- package/dist/kameleoonError/kameleoonError.js.map +0 -1
- package/dist/kameleoonError/types.js.map +0 -1
- package/dist/kameleoonUtils.js.map +0 -1
- package/dist/requester/constants.js.map +0 -1
- package/dist/requester/index.js.map +0 -1
- package/dist/requester/requester.js.map +0 -1
- package/dist/requester/types.js.map +0 -1
- package/dist/requester/urlProvider.js.map +0 -1
- package/dist/storage/constants.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/integrityChecker.js.map +0 -1
- package/dist/storage/storage.js.map +0 -1
- package/dist/storage/types.js.map +0 -1
- package/dist/targeting/conditions/applicationVersion.js.map +0 -1
- package/dist/targeting/conditions/browser.js.map +0 -1
- package/dist/targeting/conditions/conditionFactory.js.map +0 -1
- package/dist/targeting/conditions/conversion.js.map +0 -1
- package/dist/targeting/conditions/conversionLikelihood.js.map +0 -1
- package/dist/targeting/conditions/cookie.js.map +0 -1
- package/dist/targeting/conditions/customData.js.map +0 -1
- package/dist/targeting/conditions/device.js.map +0 -1
- package/dist/targeting/conditions/exclusiveCampaign.js.map +0 -1
- package/dist/targeting/conditions/firstVisit.js.map +0 -1
- package/dist/targeting/conditions/geolocation.js.map +0 -1
- package/dist/targeting/conditions/index.js.map +0 -1
- package/dist/targeting/conditions/lastVisit.js.map +0 -1
- package/dist/targeting/conditions/newVisitor.js.map +0 -1
- package/dist/targeting/conditions/operatingSystem.js.map +0 -1
- package/dist/targeting/conditions/pageTitle.js.map +0 -1
- package/dist/targeting/conditions/pageUrl.js.map +0 -1
- package/dist/targeting/conditions/previousPage.js.map +0 -1
- package/dist/targeting/conditions/sameDayVisits.js.map +0 -1
- package/dist/targeting/conditions/sdkLanguage.js.map +0 -1
- package/dist/targeting/conditions/segment.js.map +0 -1
- package/dist/targeting/conditions/targetFeatureFlag.js.map +0 -1
- package/dist/targeting/conditions/types.js.map +0 -1
- package/dist/targeting/conditions/utilities.js.map +0 -1
- package/dist/targeting/conditions/visitedPages.js.map +0 -1
- package/dist/targeting/conditions/visitorCode.js.map +0 -1
- package/dist/targeting/conditions/visits.js.map +0 -1
- package/dist/targeting/index.js.map +0 -1
- package/dist/targeting/node.js.map +0 -1
- package/dist/targeting/tree.js.map +0 -1
- package/dist/targeting/types.js.map +0 -1
- package/dist/tracking/bodyProvider.js.map +0 -1
- package/dist/tracking/constants.js.map +0 -1
- package/dist/tracking/index.js.map +0 -1
- package/dist/tracking/tracker.js.map +0 -1
- package/dist/tracking/types.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utilities/constants.js.map +0 -1
- package/dist/utilities/index.js.map +0 -1
- package/dist/utilities/parser.js.map +0 -1
- package/dist/utilities/types.js.map +0 -1
- package/dist/utilities/utilities.js.map +0 -1
- package/dist/utilities/validator.js.map +0 -1
- package/dist/variationConfiguration/index.js.map +0 -1
- package/dist/variationConfiguration/types.js.map +0 -1
- package/dist/variationConfiguration/variationConfiguration.js.map +0 -1
- package/dist/visitorCodeManager/constants.js.map +0 -1
- package/dist/visitorCodeManager/index.js.map +0 -1
- package/dist/visitorCodeManager/types.js.map +0 -1
- package/dist/visitorCodeManager/visitorCodeManager.js.map +0 -1
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Segment=void 0;var _tsRes=require("ts-res"),_tree=require("../tree");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 Segment{constructor(a){let{segmentId:b}=a;_defineProperty(this,"segmentId",void 0),this.segmentId=b}evaluate(a){const{segments:b,trees:c}=a;if(!this.segmentId)return(0,_tsRes.Ok)(!1);const d=null===b||void 0===b?void 0:b.get(this.segmentId.toString());if(!d)return(0,_tsRes.Ok)(!1);const e=null===c||void 0===c?void 0:c.get(this.segmentId.toString());return e?e.evaluate(a):new _tree.Tree(d).evaluate(a)}}exports.Segment=Segment;
|
|
2
|
-
//# sourceMappingURL=segment.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Segment=void 0;var _tsRes=require("ts-res"),_tree=require("../tree");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 Segment{constructor(a){let{segmentId:b}=a;_defineProperty(this,"segmentId",void 0),this.segmentId=b}evaluate(a){const{segments:b,trees:c}=a;if(!this.segmentId)return(0,_tsRes.Ok)(!1);const d=null===b||void 0===b?void 0:b.get(this.segmentId.toString());if(!d)return(0,_tsRes.Ok)(!1);const e=null===c||void 0===c?void 0:c.get(this.segmentId.toString());return e?e.evaluate(a):new _tree.Tree(d).evaluate(a)}}exports.Segment=Segment;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";var _tsRes=require("ts-res");Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetFeatureFlag=void 0;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 TargetFeatureFlag{constructor(a){let{featureFlagId:b,variationKey:c,ruleId:d}=a;_defineProperty(this,"featureId",void 0),_defineProperty(this,"ruleId",void 0),_defineProperty(this,"variationKey",void 0),this.featureId=b,this.ruleId=d,this.variationKey=c}evaluate(a){let{variationData:b,ruleMap:c}=a;if(!this.featureId||!c)return(0,_tsRes.Ok)(!1);if(this.featureId&&!this.ruleId&&!this.variationKey){for(const[_,a]of c){var d;const{featureId:c,experimentId:e}=a;if(c===this.featureId&&"number"==typeof(null===(d=b[e])||void 0===d?void 0:d.variationId))return(0,_tsRes.Ok)(!0)}return(0,_tsRes.Ok)(!1)}if(this.featureId&&this.ruleId){var e;const a=c.get(this.ruleId);if(!a)return(0,_tsRes.Ok)(!1);const{experimentId:d,variations:g}=a;if(this.variationKey){var f;const a=g.get(this.variationKey);return(0,_tsRes.Ok)(!!a&&(null===(f=b[d])||void 0===f?void 0:f.variationId)===a)}return(0,_tsRes.Ok)(null!==(e=b[a.experimentId])&&void 0!==e&&e.variationId)}if(this.featureId&&!this.ruleId&&this.variationKey)for(const[_,a]of c){const{featureId:c,experimentId:d,variations:e}=a;if(c===this.featureId&&e.has(this.variationKey)){var g;const a=e.get(this.variationKey);return(0,_tsRes.Ok)(!!a&&(null===(g=b[d])||void 0===g?void 0:g.variationId)===a)}}return(0,_tsRes.Ok)(!1)}}exports.TargetFeatureFlag=TargetFeatureFlag;
|
|
2
|
-
//# sourceMappingURL=targetFeatureFlag.js.map
|
|
1
|
+
"use strict";var _tsRes=require("ts-res");Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetFeatureFlag=void 0;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 TargetFeatureFlag{constructor(a){let{featureFlagId:b,variationKey:c,ruleId:d}=a;_defineProperty(this,"featureId",void 0),_defineProperty(this,"ruleId",void 0),_defineProperty(this,"variationKey",void 0),this.featureId=b,this.ruleId=d,this.variationKey=c}evaluate(a){let{variationData:b,ruleMap:c}=a;if(!this.featureId||!c)return(0,_tsRes.Ok)(!1);if(this.featureId&&!this.ruleId&&!this.variationKey){for(const[_,a]of c){var d;const{featureId:c,experimentId:e}=a;if(c===this.featureId&&"number"==typeof(null===(d=b[e])||void 0===d?void 0:d.variationId))return(0,_tsRes.Ok)(!0)}return(0,_tsRes.Ok)(!1)}if(this.featureId&&this.ruleId){var e;const a=c.get(this.ruleId);if(!a)return(0,_tsRes.Ok)(!1);const{experimentId:d,variations:g}=a;if(this.variationKey){var f;const a=g.get(this.variationKey);return(0,_tsRes.Ok)(!!a&&(null===(f=b[d])||void 0===f?void 0:f.variationId)===a)}return(0,_tsRes.Ok)(null!==(e=b[a.experimentId])&&void 0!==e&&e.variationId)}if(this.featureId&&!this.ruleId&&this.variationKey)for(const[_,a]of c){const{featureId:c,experimentId:d,variations:e}=a;if(c===this.featureId&&e.has(this.variationKey)){var g;const a=e.get(this.variationKey);return(0,_tsRes.Ok)(!!a&&(null===(g=b[d])||void 0===g?void 0:g.variationId)===a)}}return(0,_tsRes.Ok)(!1)}}exports.TargetFeatureFlag=TargetFeatureFlag;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageUtils=void 0;class PageUtils{static getLatest(a){return Object.values(a).reduce((a,b)=>a.timestamps[a.timestamps.length-1].time>b.timestamps[b.timestamps.length-1].time?a:b)}}exports.PageUtils=PageUtils;
|
|
2
|
-
//# sourceMappingURL=utilities.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageUtils=void 0;class PageUtils{static getLatest(a){return Object.values(a).reduce((a,b)=>a.timestamps[a.timestamps.length-1].time>b.timestamps[b.timestamps.length-1].time?a:b)}}exports.PageUtils=PageUtils;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitedPages=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_types=require("../types");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 VisitedPages{constructor(a){let{matchType:b,pageCount:c}=a;_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"matchType",void 0),this.matchType=b,this.conditionValue=c}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];if(!c)return(0,_tsRes.Ok)(!1);let d=0;return Object.values(c).forEach(a=>{d+=a.timestamps.length}),(0,_tsRes.Ok)(this.checkCondition(d))}checkCondition(a){if(!this.matchType||"number"!=typeof this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.EQUAL:return a===this.conditionValue;case _types.MatchType.GREATER:return a>this.conditionValue;case _types.MatchType.LOWER:return a<this.conditionValue;default:return
|
|
2
|
-
//# sourceMappingURL=visitedPages.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitedPages=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_types=require("../types"),_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 VisitedPages{constructor(a){let{matchType:b,pageCount:c}=a;_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"matchType",void 0),this.matchType=b,this.conditionValue=c}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];if(!c)return(0,_tsRes.Ok)(!1);let d=0;return Object.values(c).forEach(a=>{d+=a.timestamps.length}),(0,_tsRes.Ok)(this.checkCondition(d))}checkCondition(a){if(!this.matchType||"number"!=typeof this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.EQUAL:return a===this.conditionValue;case _types.MatchType.GREATER:return a>this.conditionValue;case _types.MatchType.LOWER:return a<this.conditionValue;default:return _logging.KameleoonLogger.error`Unexpected comparing operation for VisitedPages condition: ${this.matchType}`,!1}}}exports.VisitedPages=VisitedPages;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorCode=void 0;var _tsRes=require("ts-res"),_utilities=require("../../utilities"),_types=require("../types");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 VisitorCode{constructor(a){let{visitorCode:b,matchType:c}=a;_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=c,this.conditionValue=b}evaluate(a){let{visitorCode:b}=a;return(0,_tsRes.Ok)(this.checkCondition(b))}checkCondition(a){if(!this.matchType||!this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.CONTAINS:return a.includes(this.conditionValue);case _types.MatchType.EXACT:return a===this.conditionValue;case _types.MatchType.REGULAR_EXPRESSION:return _utilities.Parser.parseRegExp(this.conditionValue).test(a);default:return
|
|
2
|
-
//# sourceMappingURL=visitorCode.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorCode=void 0;var _tsRes=require("ts-res"),_utilities=require("../../utilities"),_types=require("../types"),_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 VisitorCode{constructor(a){let{visitorCode:b,matchType:c}=a;_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=c,this.conditionValue=b}evaluate(a){let{visitorCode:b}=a;return(0,_tsRes.Ok)(this.checkCondition(b))}checkCondition(a){if(!this.matchType||!this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.CONTAINS:return a.includes(this.conditionValue);case _types.MatchType.EXACT:return a===this.conditionValue;case _types.MatchType.REGULAR_EXPRESSION:return _utilities.Parser.parseRegExp(this.conditionValue).test(a);default:return _logging.KameleoonLogger.error`Unexpected comparing operation for VisitorCode condition: ${this.matchType}`,!1}}}exports.VisitorCode=VisitorCode;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Visits=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_types=require("../types");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 Visits{constructor(a){let{matchType:b,visitCount:c}=a;_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=b,this.conditionValue=c}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.VisitsData];if(!c)return(0,_tsRes.Ok)(!1);const d=c.visits.length+1;return(0,_tsRes.Ok)(this.checkCondition(d))}checkCondition(a){if(!this.matchType||"number"!=typeof this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.EQUAL:return a===this.conditionValue;case _types.MatchType.GREATER:return a>this.conditionValue;case _types.MatchType.LOWER:return a<this.conditionValue;default:return
|
|
2
|
-
//# sourceMappingURL=visits.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Visits=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_types=require("../types"),_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 Visits{constructor(a){let{matchType:b,visitCount:c}=a;_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=b,this.conditionValue=c}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.VisitsData];if(!c)return(0,_tsRes.Ok)(!1);const d=c.visits.length+1;return(0,_tsRes.Ok)(this.checkCondition(d))}checkCondition(a){if(!this.matchType||"number"!=typeof this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.EQUAL:return a===this.conditionValue;case _types.MatchType.GREATER:return a>this.conditionValue;case _types.MatchType.LOWER:return a<this.conditionValue;default:return _logging.KameleoonLogger.error`Unexpected comparing operation for Visits condition: ${this.matchType}`,!1}}}exports.Visits=Visits;
|
package/dist/targeting/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function(){return _conditions.Browser}}),Object.defineProperty(exports,"ConditionFactory",{enumerable:!0,get:function(){return _conditions.ConditionFactory}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function(){return _conditions.Conversion}}),Object.defineProperty(exports,"ConversionLikelihood",{enumerable:!0,get:function(){return _conditions.ConversionLikelihood}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function(){return _conditions.Cookie}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function(){return _conditions.CustomData}}),Object.defineProperty(exports,"DereferencedTargetingDataType",{enumerable:!0,get:function(){return _types.DereferencedTargetingDataType}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function(){return _conditions.Device}}),Object.defineProperty(exports,"EvaluationDataType",{enumerable:!0,get:function(){return _types.EvaluationDataType}}),Object.defineProperty(exports,"ExclusiveCampaign",{enumerable:!0,get:function(){return _conditions.ExclusiveCampaign}}),Object.defineProperty(exports,"FirstVisit",{enumerable:!0,get:function(){return _conditions.FirstVisit}}),Object.defineProperty(exports,"GeolocationCondition",{enumerable:!0,get:function(){return _conditions.GeolocationCondition}}),Object.defineProperty(exports,"LastVisit",{enumerable:!0,get:function(){return _conditions.LastVisit}}),Object.defineProperty(exports,"MatchType",{enumerable:!0,get:function(){return _types.MatchType}}),Object.defineProperty(exports,"MatchTypeVariation",{enumerable:!0,get:function(){return _types.MatchTypeVariation}}),Object.defineProperty(exports,"NewVisitor",{enumerable:!0,get:function(){return _conditions.NewVisitor}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function(){return _conditions.OperatingSystem}}),Object.defineProperty(exports,"Operator",{enumerable:!0,get:function(){return _types.Operator}}),Object.defineProperty(exports,"PageTitle",{enumerable:!0,get:function(){return _conditions.PageTitle}}),Object.defineProperty(exports,"PageUrl",{enumerable:!0,get:function(){return _conditions.PageUrl}}),Object.defineProperty(exports,"PreviousPage",{enumerable:!0,get:function(){return _conditions.PreviousPage}}),Object.defineProperty(exports,"SameDayVisits",{enumerable:!0,get:function(){return _conditions.SameDayVisits}}),Object.defineProperty(exports,"SdkLanguage",{enumerable:!0,get:function(){return _conditions.SdkLanguage}}),Object.defineProperty(exports,"Segment",{enumerable:!0,get:function(){return _conditions.Segment}}),Object.defineProperty(exports,"SegmentType",{enumerable:!0,get:function(){return _types.SegmentType}}),Object.defineProperty(exports,"TargetFeatureFlag",{enumerable:!0,get:function(){return _conditions.TargetFeatureFlag}}),Object.defineProperty(exports,"TargetingDataType",{enumerable:!0,get:function(){return _types.TargetingDataType}}),Object.defineProperty(exports,"TargetingType",{enumerable:!0,get:function(){return _types.TargetingType}}),Object.defineProperty(exports,"Tree",{enumerable:!0,get:function(){return _tree.Tree}}),Object.defineProperty(exports,"ValueMatchType",{enumerable:!0,get:function(){return _types.ValueMatchType}}),Object.defineProperty(exports,"VersionMatchType",{enumerable:!0,get:function(){return _types.VersionMatchType}}),Object.defineProperty(exports,"VisitedPages",{enumerable:!0,get:function(){return _conditions.VisitedPages}}),Object.defineProperty(exports,"VisitorCode",{enumerable:!0,get:function(){return _conditions.VisitorCode}}),Object.defineProperty(exports,"VisitorReference",{enumerable:!0,get:function(){return _types.VisitorReference}}),Object.defineProperty(exports,"Visits",{enumerable:!0,get:function(){return _conditions.Visits}});var _tree=require("./tree"),_types=require("./types"),_conditions=require("./conditions");
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function(){return _conditions.Browser}}),Object.defineProperty(exports,"ConditionFactory",{enumerable:!0,get:function(){return _conditions.ConditionFactory}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function(){return _conditions.Conversion}}),Object.defineProperty(exports,"ConversionLikelihood",{enumerable:!0,get:function(){return _conditions.ConversionLikelihood}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function(){return _conditions.Cookie}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function(){return _conditions.CustomData}}),Object.defineProperty(exports,"DereferencedTargetingDataType",{enumerable:!0,get:function(){return _types.DereferencedTargetingDataType}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function(){return _conditions.Device}}),Object.defineProperty(exports,"EvaluationDataType",{enumerable:!0,get:function(){return _types.EvaluationDataType}}),Object.defineProperty(exports,"ExclusiveCampaign",{enumerable:!0,get:function(){return _conditions.ExclusiveCampaign}}),Object.defineProperty(exports,"FirstVisit",{enumerable:!0,get:function(){return _conditions.FirstVisit}}),Object.defineProperty(exports,"GeolocationCondition",{enumerable:!0,get:function(){return _conditions.GeolocationCondition}}),Object.defineProperty(exports,"LastVisit",{enumerable:!0,get:function(){return _conditions.LastVisit}}),Object.defineProperty(exports,"MatchType",{enumerable:!0,get:function(){return _types.MatchType}}),Object.defineProperty(exports,"MatchTypeVariation",{enumerable:!0,get:function(){return _types.MatchTypeVariation}}),Object.defineProperty(exports,"NewVisitor",{enumerable:!0,get:function(){return _conditions.NewVisitor}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function(){return _conditions.OperatingSystem}}),Object.defineProperty(exports,"Operator",{enumerable:!0,get:function(){return _types.Operator}}),Object.defineProperty(exports,"PageTitle",{enumerable:!0,get:function(){return _conditions.PageTitle}}),Object.defineProperty(exports,"PageUrl",{enumerable:!0,get:function(){return _conditions.PageUrl}}),Object.defineProperty(exports,"PreviousPage",{enumerable:!0,get:function(){return _conditions.PreviousPage}}),Object.defineProperty(exports,"SameDayVisits",{enumerable:!0,get:function(){return _conditions.SameDayVisits}}),Object.defineProperty(exports,"SdkLanguage",{enumerable:!0,get:function(){return _conditions.SdkLanguage}}),Object.defineProperty(exports,"Segment",{enumerable:!0,get:function(){return _conditions.Segment}}),Object.defineProperty(exports,"SegmentType",{enumerable:!0,get:function(){return _types.SegmentType}}),Object.defineProperty(exports,"TargetFeatureFlag",{enumerable:!0,get:function(){return _conditions.TargetFeatureFlag}}),Object.defineProperty(exports,"TargetingDataType",{enumerable:!0,get:function(){return _types.TargetingDataType}}),Object.defineProperty(exports,"TargetingType",{enumerable:!0,get:function(){return _types.TargetingType}}),Object.defineProperty(exports,"Tree",{enumerable:!0,get:function(){return _tree.Tree}}),Object.defineProperty(exports,"ValueMatchType",{enumerable:!0,get:function(){return _types.ValueMatchType}}),Object.defineProperty(exports,"VersionMatchType",{enumerable:!0,get:function(){return _types.VersionMatchType}}),Object.defineProperty(exports,"VisitedPages",{enumerable:!0,get:function(){return _conditions.VisitedPages}}),Object.defineProperty(exports,"VisitorCode",{enumerable:!0,get:function(){return _conditions.VisitorCode}}),Object.defineProperty(exports,"VisitorReference",{enumerable:!0,get:function(){return _types.VisitorReference}}),Object.defineProperty(exports,"Visits",{enumerable:!0,get:function(){return _conditions.Visits}});var _tree=require("./tree"),_types=require("./types"),_conditions=require("./conditions");
|
package/dist/targeting/node.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Node=void 0;var _conditions=require("./conditions"),_types=require("./types");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 Node{constructor(a,b,c){if(_defineProperty(this,"nodeValue",void 0),_defineProperty(this,"nodeError",void 0),_defineProperty(this,"leftChild",void 0),_defineProperty(this,"rightChild",void 0),_defineProperty(this,"inverseResult",!1),this.isOperator(a))this.nodeValue=a;else{var d;const b=_conditions.ConditionFactory.createCondition(a);this.inverseResult=null!==(d=a.isInclude)&&void 0!==d&&!d,b.ok?this.nodeValue=b.data:this.nodeError=b.error}this.leftChild=b,this.rightChild=c}get value(){return this.nodeValue}get error(){return this.nodeError}get left(){return this.leftChild}get right(){return this.rightChild}get inverse(){return this.inverseResult}isOperator(a){return a===_types.Operator.And||a===_types.Operator.Or}}exports.Node=Node;
|
|
2
|
-
//# sourceMappingURL=node.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Node=void 0;var _conditions=require("./conditions"),_types=require("./types");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 Node{constructor(a,b,c){if(_defineProperty(this,"nodeValue",void 0),_defineProperty(this,"nodeError",void 0),_defineProperty(this,"leftChild",void 0),_defineProperty(this,"rightChild",void 0),_defineProperty(this,"inverseResult",!1),this.isOperator(a))this.nodeValue=a;else{var d;const b=_conditions.ConditionFactory.createCondition(a);this.inverseResult=null!==(d=a.isInclude)&&void 0!==d&&!d,b.ok?this.nodeValue=b.data:this.nodeError=b.error}this.leftChild=b,this.rightChild=c}get value(){return this.nodeValue}get error(){return this.nodeError}get left(){return this.leftChild}get right(){return this.rightChild}get inverse(){return this.inverseResult}isOperator(a){return a===_types.Operator.And||a===_types.Operator.Or}}exports.Node=Node;
|
package/dist/targeting/tree.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Tree=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_node=require("./node"),_types=require("./types");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 Tree{constructor(a){_defineProperty(this,"tree",void 0),_defineProperty(this,"error",null),_defineProperty(this,"targetingTypes",new Set)
|
|
2
|
-
//# sourceMappingURL=tree.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Tree=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_node=require("./node"),_types=require("./types"),_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 Tree{constructor(a){_defineProperty(this,"tree",void 0),_defineProperty(this,"error",null),_defineProperty(this,"targetingTypes",new Set),_logging.KameleoonLogger.debug`CALL: new Tree(segment: ${a})`;const{nestedConditions:b,topLevelOperators:c}=this.flattenSegment(a),d=b.map(a=>{let{conditions:b,operators:c}=a;const d=b.map(a=>(this.targetingTypes.add(a.targetingType),new _node.Node(a)));return this.buildTree(d,c)});this.tree=this.buildTree(d,c),_logging.KameleoonLogger.debug`RETURN: new Tree(segment: ${a})`}evaluate(a){const b=this.evaluateNode(this.tree,a);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(b)}hasTargetingType(a){return this.targetingTypes.has(a)}evaluateNode(a,b){if(this.isLeafNode(a)){if(a.error)return a.error.type===_kameleoonError.KameleoonException.TargetingCondition;const c=a.value.evaluate(b);return c.ok?a.inverse?!c.data:c.data:(this.error=c.error,!1)}if(this.isNonLeafNode(a))switch(a.value){case _types.Operator.And:return this.evaluateNode(a.left,b)&&this.evaluateNode(a.right,b);case _types.Operator.Or:return this.evaluateNode(a.left,b)||this.evaluateNode(a.right,b);default:}return!1}isLeafNode(a){return!!!(a.left&&a.right)}isNonLeafNode(a){return!!(a.left&&a.right&&(a.value===_types.Operator.Or||a.value===_types.Operator.And))}buildTree(a,b){if(1===a.length)return a[0];for(const c of b){const b=a.shift(),d=a.shift(),e=new _node.Node(c,b,d);a.unshift(e)}return a[0]}flattenSegment(a){const{firstLevel:b,firstLevelOrOperators:c}=a.conditionsData,d=[];return b.forEach(a=>{const{conditions:b,orOperators:c}=a,e={operators:this.convertOperators(c),conditions:b};d.push(e)}),{topLevelOperators:this.convertOperators(c),nestedConditions:d}}convertOperators(a){return a.map(a=>a?_types.Operator.Or:_types.Operator.And)}}exports.Tree=Tree;
|
package/dist/targeting/types.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorType=exports.VersionMatchType=exports.ValueMatchType=exports.TargetingType=exports.Operator=exports.NameMatchType=exports.MatchTypeVariation=exports.MatchTypeTest=exports.MatchType=void 0;let Operator=exports.Operator=function(a){return a.And="AND",a.Or="OR",a}({}),ValueMatchType=exports.ValueMatchType=function(a){return a.TRUE="TRUE",a.FALSE="FALSE",a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.EQUAL="EQUAL",a.LOWER="LOWER",a.GREATER="GREATER",a.UNDEFINED="UNDEFINED",a.AMONG_VALUES="AMONG_VALUES",a.RANGE="RANGE",a}({}),VisitorType=exports.VisitorType=function(a){return a.NEW="NEW",a.RETURNING="RETURNING",a}({}),MatchTypeVariation=exports.MatchTypeVariation=function(a){return a.ANY="ANY",a.EXACT="EXACT",a}({}),MatchTypeTest=exports.MatchTypeTest=function(a){return a.ALL="ALL",a.TEST="TEST",a.PERSO="PERSO",a}({}),MatchType=exports.MatchType=function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({}),VersionMatchType=exports.VersionMatchType=function(a){return a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({}),NameMatchType=exports.NameMatchType=function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.OPTIONAL="OPTIONAL",a}({}),TargetingType=exports.TargetingType=function(a){return a.PAGE_URL="PAGE_URL",a.PAGE_TITLE="PAGE_TITLE",a.LANDING_PAGE="LANDING_PAGE",a.ORIGIN="ORIGIN",a.ORIGIN_TYPE="ORIGIN_TYPE",a.REFERRERS="REFERRERS",a.NEW_VISITORS="NEW_VISITORS",a.INTERESTS="INTERESTS",a.BROWSER_LANGUAGE="BROWSER_LANGUAGE",a.GEOLOCATION="GEOLOCATION",a.DEVICE_TYPE="DEVICE_TYPE",a.SCREEN_DIMENSION="SCREEN_DIMENSION",a.VISITOR_IP="VISITOR_IP",a.AD_BLOCKER="AD_BLOCKER",a.PREVIOUS_PAGE="PREVIOUS_PAGE",a.KEY_PAGES="KEY_PAGES",a.PAGE_VIEWS="PAGE_VIEWS",a.FIRST_VISIT="FIRST_VISIT",a.LAST_VISIT="LAST_VISIT",a.ACTIVE_SESSION="ACTIVE_SESSION",a.TIME_SINCE_PAGE_LOAD="TIME_SINCE_PAGE_LOAD",a.SAME_DAY_VISITS="SAME_DAY_VISITS",a.VISITS="VISITS",a.VISITS_BY_PAGE="VISITS_BY_PAGE",a.VISITOR_CODE="VISITOR_CODE",a.SDK_LANGUAGE="SDK_LANGUAGE",a.INTERNAL_SEARCH_KEYWORDS="INTERNAL_SEARCH_KEYWORDS",a.TABS_ON_SITE="TABS_ON_SITE",a.CONVERSION_PROBABILITY="CONVERSION_PROBABILITY",a.HEAT_SLICE="HEAT_SLICE",a.SKY_STATUS="SKY_STATUS",a.TEMPERATURE="TEMPERATURE",a.DAY_NIGHT="DAY_NIGHT",a.FORECAST_SKY_STATUS="FORECAST_SKY_STATUS",a.FORECAST_TEMPERATURE="FORECAST_TEMPERATURE",a.DAY_OF_WEEK="DAY_OF_WEEK",a.TIME_RANGE="TIME_RANGE",a.HOUR_MINUTE_RANGE="HOUR_MINUTE_RANGE",a.JS_CODE="JS_CODE",a.COOKIE="COOKIE",a.EVENT="EVENT",a.BROWSER="BROWSER",a.OPERATING_SYSTEM="OPERATING_SYSTEM",a.DOM_ELEMENT="DOM_ELEMENT",a.MOUSE_OUT="MOUSE_OUT",a.TARGET_EXPERIMENT="TARGET_EXPERIMENT",a.TARGET_FEATURE_FLAG="TARGET_FEATURE_FLAG",a.TARGET_PERSONALIZATION="TARGET_PERSONALIZATION",a.EXCLUSIVE_EXPERIMENT="EXCLUSIVE_EXPERIMENT",a.EXCLUSIVE_FEATURE_FLAG="EXCLUSIVE_FEATURE_FLAG",a.CONVERSIONS="CONVERSIONS",a.CUSTOM_DATUM="CUSTOM_DATUM",a.YSANCE_SEGMENT="YSANCE_SEGMENT",a.SEGMENT="SEGMENT",a.YSANCE_ATTRIBUT="YSANCE_ATTRIBUT",a.TEALIUM_BADGE="TEALIUM_BADGE",a.TEALIUM_AUDIENCE="TEALIUM_AUDIENCE",a.PRICE_OF_DISPLAYED_PAGE="PRICE_OF_DISPLAYED_PAGE",a.NUMBER_OF_VISITED_PAGES="NUMBER_OF_VISITED_PAGES",a.VISITED_PAGES="VISITED_PAGES",a.CUSTOM="CUSTOM",a.EXPLICIT_TRIGGER="EXPLICIT_TRIGGER",a.APPLICATION_VERSION="APPLICATION_VERSION",a}({});
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorType=exports.VersionMatchType=exports.ValueMatchType=exports.TargetingType=exports.Operator=exports.NameMatchType=exports.MatchTypeVariation=exports.MatchTypeTest=exports.MatchType=void 0;let Operator=exports.Operator=function(a){return a.And="AND",a.Or="OR",a}({}),ValueMatchType=exports.ValueMatchType=function(a){return a.TRUE="TRUE",a.FALSE="FALSE",a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.EQUAL="EQUAL",a.LOWER="LOWER",a.GREATER="GREATER",a.UNDEFINED="UNDEFINED",a.AMONG_VALUES="AMONG_VALUES",a.RANGE="RANGE",a}({}),VisitorType=exports.VisitorType=function(a){return a.NEW="NEW",a.RETURNING="RETURNING",a}({}),MatchTypeVariation=exports.MatchTypeVariation=function(a){return a.ANY="ANY",a.EXACT="EXACT",a}({}),MatchTypeTest=exports.MatchTypeTest=function(a){return a.ALL="ALL",a.TEST="TEST",a.PERSO="PERSO",a}({}),MatchType=exports.MatchType=function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({}),VersionMatchType=exports.VersionMatchType=function(a){return a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({}),NameMatchType=exports.NameMatchType=function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.OPTIONAL="OPTIONAL",a}({}),TargetingType=exports.TargetingType=function(a){return a.PAGE_URL="PAGE_URL",a.PAGE_TITLE="PAGE_TITLE",a.LANDING_PAGE="LANDING_PAGE",a.ORIGIN="ORIGIN",a.ORIGIN_TYPE="ORIGIN_TYPE",a.REFERRERS="REFERRERS",a.NEW_VISITORS="NEW_VISITORS",a.INTERESTS="INTERESTS",a.BROWSER_LANGUAGE="BROWSER_LANGUAGE",a.GEOLOCATION="GEOLOCATION",a.DEVICE_TYPE="DEVICE_TYPE",a.SCREEN_DIMENSION="SCREEN_DIMENSION",a.VISITOR_IP="VISITOR_IP",a.AD_BLOCKER="AD_BLOCKER",a.PREVIOUS_PAGE="PREVIOUS_PAGE",a.KEY_PAGES="KEY_PAGES",a.PAGE_VIEWS="PAGE_VIEWS",a.FIRST_VISIT="FIRST_VISIT",a.LAST_VISIT="LAST_VISIT",a.ACTIVE_SESSION="ACTIVE_SESSION",a.TIME_SINCE_PAGE_LOAD="TIME_SINCE_PAGE_LOAD",a.SAME_DAY_VISITS="SAME_DAY_VISITS",a.VISITS="VISITS",a.VISITS_BY_PAGE="VISITS_BY_PAGE",a.VISITOR_CODE="VISITOR_CODE",a.SDK_LANGUAGE="SDK_LANGUAGE",a.INTERNAL_SEARCH_KEYWORDS="INTERNAL_SEARCH_KEYWORDS",a.TABS_ON_SITE="TABS_ON_SITE",a.CONVERSION_PROBABILITY="CONVERSION_PROBABILITY",a.HEAT_SLICE="HEAT_SLICE",a.SKY_STATUS="SKY_STATUS",a.TEMPERATURE="TEMPERATURE",a.DAY_NIGHT="DAY_NIGHT",a.FORECAST_SKY_STATUS="FORECAST_SKY_STATUS",a.FORECAST_TEMPERATURE="FORECAST_TEMPERATURE",a.DAY_OF_WEEK="DAY_OF_WEEK",a.TIME_RANGE="TIME_RANGE",a.HOUR_MINUTE_RANGE="HOUR_MINUTE_RANGE",a.JS_CODE="JS_CODE",a.COOKIE="COOKIE",a.EVENT="EVENT",a.BROWSER="BROWSER",a.OPERATING_SYSTEM="OPERATING_SYSTEM",a.DOM_ELEMENT="DOM_ELEMENT",a.MOUSE_OUT="MOUSE_OUT",a.TARGET_EXPERIMENT="TARGET_EXPERIMENT",a.TARGET_FEATURE_FLAG="TARGET_FEATURE_FLAG",a.TARGET_PERSONALIZATION="TARGET_PERSONALIZATION",a.EXCLUSIVE_EXPERIMENT="EXCLUSIVE_EXPERIMENT",a.EXCLUSIVE_FEATURE_FLAG="EXCLUSIVE_FEATURE_FLAG",a.CONVERSIONS="CONVERSIONS",a.CUSTOM_DATUM="CUSTOM_DATUM",a.YSANCE_SEGMENT="YSANCE_SEGMENT",a.SEGMENT="SEGMENT",a.YSANCE_ATTRIBUT="YSANCE_ATTRIBUT",a.TEALIUM_BADGE="TEALIUM_BADGE",a.TEALIUM_AUDIENCE="TEALIUM_AUDIENCE",a.PRICE_OF_DISPLAYED_PAGE="PRICE_OF_DISPLAYED_PAGE",a.NUMBER_OF_VISITED_PAGES="NUMBER_OF_VISITED_PAGES",a.VISITED_PAGES="VISITED_PAGES",a.CUSTOM="CUSTOM",a.EXPLICIT_TRIGGER="EXPLICIT_TRIGGER",a.APPLICATION_VERSION="APPLICATION_VERSION",a}({});
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BodyProvider=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../kameleoonData"),_requester=require("../requester"),_utilities=require("../utilities"),_constants=require("./constants");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 BodyProvider{constructor(a){_defineProperty(this,"prng",void 0),_defineProperty(this,"currentSize",0),_defineProperty(this,"resultBody",[]),_defineProperty(this,"hasUserAgent",!1),_defineProperty(this,"trackingVisitors",{}),this.prng=a}getTrackingBody(){const a={body:this.resultBody.join("\n"),hasUserAgent:this.hasUserAgent};return this.cleanup(),a}addData(a){let{visitorCode:b,variationData:c,visitorData:d,userAgent:e,isConsentProvided:f,isMappingIdentifier:g}=a;const h=[],i=this.getVariationDataLines(c),j=this.getVisitorDataLines(d);return h.push(...j,...i),this.addVisitorTrackingLines({visitorCode:b,lines:h,userAgent:e,isConsentProvided:f,isMappingIdentifier:g})}getVisitorDataLines(a){const b=[];for(const c of a){let a;if(c.data.type===_kameleoonData.KameleoonData.Conversion||c.data.type===_kameleoonData.KameleoonData.PageView){const b=c.data.nonce;b?a=b:(a=_utilities.Utilities.getNonce(this.prng),c.data.nonce=a)}a||(a=_utilities.Utilities.getNonce(this.prng)),b.push(c.url+_requester.UrlParameter.Nonce+a)}return b}getVariationDataLines(a){const b=[];return a.forEach(a=>{b.push(_requester.UrlEventType.Experiment+_requester.UrlParameter.Id+a.experimentId+_requester.UrlParameter.VariationId+a.variationId+_requester.UrlParameter.Nonce+_utilities.Utilities.getNonce(this.prng))}),b}prepareVisitorBody(a){const b=this.trackingVisitors[a];if(!b)return(0,_tsRes.Err)();const{lines:c,userAgent:d,isMappingIdentifier:e,isConsentProvided:f}=b,g=this.getIdentifier(a,e);if(c.length)c.forEach((a,b)=>{c[b]=a+g})
|
|
2
|
-
//# sourceMappingURL=bodyProvider.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BodyProvider=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../kameleoonData"),_requester=require("../requester"),_utilities=require("../utilities"),_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 BodyProvider{constructor(a){_defineProperty(this,"prng",void 0),_defineProperty(this,"currentSize",0),_defineProperty(this,"resultBody",[]),_defineProperty(this,"hasUserAgent",!1),_defineProperty(this,"trackingVisitors",{}),this.prng=a}getTrackingBody(){const a={body:this.resultBody.join("\n"),hasUserAgent:this.hasUserAgent};return this.cleanup(),a}addData(a){let{visitorCode:b,variationData:c,visitorData:d,userAgent:e,isConsentProvided:f,isMappingIdentifier:g}=a;const h=[],i=this.getVariationDataLines(c),j=this.getVisitorDataLines(d);return h.push(...j,...i),this.addVisitorTrackingLines({visitorCode:b,lines:h,userAgent:e,isConsentProvided:f,isMappingIdentifier:g})}getVisitorDataLines(a){const b=[];for(const c of a){let a;if(c.data.type===_kameleoonData.KameleoonData.Conversion||c.data.type===_kameleoonData.KameleoonData.PageView){const b=c.data.nonce;b?a=b:(a=_utilities.Utilities.getNonce(this.prng),c.data.nonce=a)}a||(a=_utilities.Utilities.getNonce(this.prng)),b.push(c.url+_requester.UrlParameter.Nonce+a)}return b}getVariationDataLines(a){const b=[];return a.forEach(a=>{b.push(_requester.UrlEventType.Experiment+_requester.UrlParameter.Id+a.experimentId+_requester.UrlParameter.VariationId+a.variationId+_requester.UrlParameter.Nonce+_utilities.Utilities.getNonce(this.prng))}),b}prepareVisitorBody(a){const b=this.trackingVisitors[a];if(!b)return(0,_tsRes.Err)();const{lines:c,userAgent:d,isMappingIdentifier:e,isConsentProvided:f}=b,g=this.getIdentifier(a,e);if(c.length)c.forEach((a,b)=>{c[b]=a+g}),_logging.KameleoonLogger.debug`Sending tracking request for unsent data ${c} of visitor ${a} with given (or not required) consent ${f}`;else if(f){const b=this.getActivityLine();c.push(b+g),_logging.KameleoonLogger.debug`Sending tracking request for activity of visitor ${a} with given consent`}else _logging.KameleoonLogger.debug`No data to send for visitor ${a} with no consent`;d&&c.length&&(c[0]+=_requester.UrlParameter.UserAgent+d,this.hasUserAgent=!0);const h=this.checkSize(c);return h.ok&&this.resultBody.push(...c),h}cleanup(){this.currentSize=0,this.resultBody=[],this.hasUserAgent=!1,this.trackingVisitors={}}checkSize(a){let b=0;return(b+=a.reduce((a,b)=>a+b.length*_constants.SYMBOL_SIZE,0),b+this.currentSize>_constants.MAX_BODY_SIZE)?(0,_tsRes.Err)():(this.currentSize+=b,(0,_tsRes.Ok)())}addVisitorTrackingLines(a){let{visitorCode:b,lines:c,userAgent:d,isConsentProvided:e,isMappingIdentifier:f}=a;return this.trackingVisitors[b]?(d&&(this.trackingVisitors[b].userAgent=d),this.trackingVisitors[b].lines.push(...c)):this.trackingVisitors[b]={isMappingIdentifier:f,isConsentProvided:e,userAgent:d,lines:c},this.prepareVisitorBody(b)}getActivityLine(){return _requester.UrlEventType.Activity+_requester.UrlParameter.Nonce+_utilities.Utilities.getNonce(this.prng)}getIdentifier(a,b){const c=b?_requester.UrlParameter.MappingValue:_requester.UrlParameter.VisitorCode;return c+a}}exports.BodyProvider=BodyProvider;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SYMBOL_SIZE=exports.MAX_BODY_SIZE=void 0;var Byte=function(a){return a[a.Kb=1000]="Kb",a[a.Mb=1e3*a.Kb]="Mb",a[a.Gb=1e3*a.Mb]="Gb",a}(Byte||{});const MAX_BODY_SIZE=exports.MAX_BODY_SIZE=10*Byte.Mb,SYMBOL_SIZE=exports.SYMBOL_SIZE=4;
|
|
2
|
-
//# sourceMappingURL=constants.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SYMBOL_SIZE=exports.MAX_BODY_SIZE=void 0;var Byte=function(a){return a[a.Kb=1000]="Kb",a[a.Mb=1e3*a.Kb]="Mb",a[a.Gb=1e3*a.Mb]="Gb",a}(Byte||{});const MAX_BODY_SIZE=exports.MAX_BODY_SIZE=10*Byte.Mb,SYMBOL_SIZE=exports.SYMBOL_SIZE=4;
|
package/dist/tracking/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";var _tracker=require("./tracker");Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Tracker",{enumerable:!0,get:function(){return _tracker.Tracker}});
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";var _tracker=require("./tracker");Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Tracker",{enumerable:!0,get:function(){return _tracker.Tracker}});
|
package/dist/tracking/tracker.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Tracker=void 0;var _kameleoonData=require("../kameleoonData"),_types=require("../types"),_bodyProvider=require("./bodyProvider");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 Tracker{constructor(a){let{dataManager:b,trackingStorage:c,variationConfiguration:d,trackingInterval:e,requester:f,prng:g}=a;_defineProperty(this,"dataManager",void 0),_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"bodyProvider",void 0),_defineProperty(this,"intervalId",null),_defineProperty(this,"trackingStorage",void 0),this.dataManager=b,this.trackingStorage=c,this.variationConfiguration=d,this.requester=f,this.bodyProvider=new _bodyProvider.BodyProvider(g);try{this.intervalId=setInterval(()=>{this.sendData()},e)}catch(a){throw this.intervalId&&clearInterval(this.intervalId),a}}scheduleVisitor(a,b){this.trackingStorage.read().and(c=>{c.scheduledVisitors[a]={isConsentProvided:b},this.trackingStorage.write(c)})}checkIsIdentifier(a){const b=this.dataManager.isUniqueIdentifier(a);let c=!1;if(b){const b=this.dataManager.getLinkedVisitor(a),d=this.dataManager.identifierCustomDataIndex;b||"number"!=typeof d?c=!0:this.dataManager.storeData(a,new _kameleoonData.CustomData(d,a))}return c}getUserAgent(a){const b=this.dataManager.getVisitorData(a);if(b){const a=b[_kameleoonData.KameleoonData.UserAgent];if(a)return a.value}}async sendData(){const a={},b=this.trackingStorage.read();if(!b.ok)return;const{scheduledVisitors:c}=b.data,d=[];for(const[b,{isConsentProvided:e}]of Object.entries(c)){const c=this.checkIsIdentifier(b),f=this.getUserAgent(b),g=this.getUnsentVisitorData(b,e),h=this.getUnsentVariationData(b,e),i=this.bodyProvider.addData({visitorCode:b,variationData:h,visitorData:g,userAgent:f,isConsentProvided:e,isMappingIdentifier:c});if(i.ok)a[b]={visitorData:g,variationData:h},d.push(b);else break}const{body:e,hasUserAgent:f}=this.bodyProvider.getTrackingBody();if(e){const b=await this.requester.track(e,f);b.ok?(this.updateDataStatus(a,_types.TrackingStatus.Sent),d.forEach(a=>{delete c[a]}),this.trackingStorage.write({scheduledVisitors:c})):this.updateDataStatus(a,_types.TrackingStatus.Unsent)}}updateDataStatus(a,b){let c={};for(const[d,{visitorData:e,variationData:f}]of Object.entries(a)){c[d]=e.map(a=>(a.status=b,a));const a=f.map(a=>a.experimentId+"");this.variationConfiguration.updateDataStatus({visitorCode:d,experimentIdList:a,status:b})}b===_types.TrackingStatus.Sent?this.dataManager.storeTrackedData(c):this.dataManager.storeData(c)}getUnsentVisitorData(a,b){const c=this.dataManager.getUnsentData(a),d=[];if(!c.length)return[];for(const e of c)e.url&&(e.data.type===_kameleoonData.KameleoonData.Conversion||b)&&d.push(e);if(d.length){const b=d.map(a=>(a.status=_types.TrackingStatus.Pending,a));this.dataManager.storeTrackedData({[a]:b})}return d}getUnsentVariationData(a,b){const c=this.variationConfiguration.getUnsentData(a),d=new Set;if(!c.length)return[];const e=c.filter(a=>{const c=a.isTargetedRule||b;return c&&d.add(a.experimentId+""),c});return this.variationConfiguration.updateDataStatus({visitorCode:a,experimentIdList:Array.from(d),status:_types.TrackingStatus.Pending}),e}}exports.Tracker=Tracker;
|
|
2
|
-
//# sourceMappingURL=tracker.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Tracker=void 0;var _kameleoonData=require("../kameleoonData"),_types=require("../types"),_bodyProvider=require("./bodyProvider"),_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 Tracker{constructor(a){let{dataManager:b,trackingStorage:c,variationConfiguration:d,trackingInterval:e,requester:f,prng:g}=a;_defineProperty(this,"dataManager",void 0),_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"bodyProvider",void 0),_defineProperty(this,"intervalId",null),_defineProperty(this,"trackingStorage",void 0),_logging.KameleoonLogger.debug`CALL: new Tracker(dataManager, trackingStorage, variationConfiguration, trackingInterval: ${e}, requester, prng)`,this.dataManager=b,this.trackingStorage=c,this.variationConfiguration=d,this.requester=f,this.bodyProvider=new _bodyProvider.BodyProvider(g);try{this.intervalId=setInterval(()=>{this.sendData()},e)}catch(a){throw this.intervalId&&clearInterval(this.intervalId),a}_logging.KameleoonLogger.debug`RETURN: new Tracker(dataManager, trackingStorage, variationConfiguration, trackingInterval: ${e}, requester, prng)`}scheduleVisitor(a,b){_logging.KameleoonLogger.debug`CALL: Tracker.scheduleVisitor(visitorCode: ${a}, isConsentProvided: ${b})`,this.trackingStorage.read().and(c=>{c.scheduledVisitors[a]={isConsentProvided:b},this.trackingStorage.write(c)}),_logging.KameleoonLogger.debug`RETURN: Tracker.scheduleVisitor(visitorCode: ${a}, isConsentProvided: ${b})`}checkIsIdentifier(a){const b=this.dataManager.isUniqueIdentifier(a);let c=!1;if(b){const b=this.dataManager.getLinkedVisitor(a),d=this.dataManager.identifierCustomDataIndex;b||"number"!=typeof d?c=!0:this.dataManager.storeData(a,new _kameleoonData.CustomData(d,a))}return c}getUserAgent(a){const b=this.dataManager.getVisitorData(a);if(b){const a=b[_kameleoonData.KameleoonData.UserAgent];if(a)return a.value}}async sendData(){const a={},b=this.trackingStorage.read();if(!b.ok)return;const{scheduledVisitors:c}=b.data,d=[];for(const[b,{isConsentProvided:e}]of Object.entries(c)){const c=this.checkIsIdentifier(b),f=this.getUserAgent(b),g=this.getUnsentVisitorData(b,e),h=this.getUnsentVariationData(b,e),i=this.bodyProvider.addData({visitorCode:b,variationData:h,visitorData:g,userAgent:f,isConsentProvided:e,isMappingIdentifier:c});if(i.ok)a[b]={visitorData:g,variationData:h},d.push(b);else{_logging.KameleoonLogger.warning("Visitor data to be tracked exceeded the request size limit. Some visitor data is kept to be sent later. If it is not caused by the peak load, decreasing the tracking interval is recommended.");break}}const{body:e,hasUserAgent:f}=this.bodyProvider.getTrackingBody();if(e){const b=await this.requester.track(e,f);b.ok?(_logging.KameleoonLogger.info`Successful request for tracking visitors: ${d}, data: ${a}`,this.updateDataStatus(a,_types.TrackingStatus.Sent),d.forEach(a=>{delete c[a]}),this.trackingStorage.write({scheduledVisitors:c})):(_logging.KameleoonLogger.error("Tracking request failed"),_logging.KameleoonLogger.info`Failed request for tracking visitors: ${d}, data: ${a}`,this.updateDataStatus(a,_types.TrackingStatus.Unsent))}}updateDataStatus(a,b){let c={};for(const[d,{visitorData:e,variationData:f}]of Object.entries(a)){c[d]=e.map(a=>(a.status=b,a));const a=f.map(a=>a.experimentId+"");this.variationConfiguration.updateDataStatus({visitorCode:d,experimentIdList:a,status:b})}b===_types.TrackingStatus.Sent?this.dataManager.storeTrackedData(c):this.dataManager.storeData(c)}getUnsentVisitorData(a,b){const c=this.dataManager.getUnsentData(a),d=[];if(!c.length)return[];for(const e of c)e.url&&(e.data.type===_kameleoonData.KameleoonData.Conversion||b)&&d.push(e);if(d.length){const b=d.map(a=>(a.status=_types.TrackingStatus.Pending,a));this.dataManager.storeTrackedData({[a]:b})}return d}getUnsentVariationData(a,b){const c=this.variationConfiguration.getUnsentData(a),d=new Set;if(!c.length)return[];const e=c.filter(a=>{const c=a.isTargetedRule||b;return c&&d.add(a.experimentId+""),c});return this.variationConfiguration.updateDataStatus({visitorCode:a,experimentIdList:Array.from(d),status:_types.TrackingStatus.Pending}),e}}exports.Tracker=Tracker;
|
package/dist/tracking/types.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
package/dist/types.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { IExternalRequester, IUrlProvider, RequestType } from './requester';
|
|
|
5
5
|
import { IExternalStorage } from './storage';
|
|
6
6
|
import { IExternalPRNG, VisitorDataFiltersType } from './utilities';
|
|
7
7
|
import { IVisitorCodeManager } from './visitorCodeManager';
|
|
8
|
+
import { IExternalLogger } from './logging';
|
|
8
9
|
/**
|
|
9
10
|
* @param {number} updateInterval - update interval in _minutes_ for sdk configuration, minimum value is 1 minute
|
|
10
11
|
* @defaultvalue 60
|
|
@@ -75,6 +76,7 @@ export type InternalsType = {
|
|
|
75
76
|
* @param {ExternalPackageInfoType} externalPackageInfo - external package info, used to get package version and name
|
|
76
77
|
* @param {IExternalRequester} externalRequester - external requester , used to track or get data
|
|
77
78
|
* @param {IVisitorCodeManager} externalVisitorCodeManager - external visitor code manager, used to get or generate visitor code
|
|
79
|
+
* @param {IExternalLogger | undefined} logger - external logger implementation
|
|
78
80
|
* */
|
|
79
81
|
export type ExternalsType = {
|
|
80
82
|
externalStorage: IExternalStorage;
|
|
@@ -83,6 +85,7 @@ export type ExternalsType = {
|
|
|
83
85
|
externalPackageInfo: ExternalPackageInfoType;
|
|
84
86
|
externalRequester: IExternalRequester;
|
|
85
87
|
externalPRNG: IExternalPRNG;
|
|
88
|
+
externalLogger?: IExternalLogger;
|
|
86
89
|
};
|
|
87
90
|
/**
|
|
88
91
|
* @param {boolean} useAbortController - a flag to enable or disable usage of `AbortController` for requests allowing for `requestTimeout` to be respected
|
|
@@ -199,6 +202,17 @@ export type RemoteVisitorDataParamsType = {
|
|
|
199
202
|
shouldAddData?: boolean;
|
|
200
203
|
filters?: VisitorDataFiltersType;
|
|
201
204
|
};
|
|
205
|
+
/**
|
|
206
|
+
* @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters
|
|
207
|
+
* @param {string} featureKey - key of the feature flag to look for, can be found on Kameleoon Platform
|
|
208
|
+
* @param {boolean | undefined} track - a flag to enable or disable tracking request
|
|
209
|
+
* @defaultvalue `true`
|
|
210
|
+
* */
|
|
211
|
+
export type IsFeatureFlagActiveParamsType = {
|
|
212
|
+
visitorCode: string;
|
|
213
|
+
featureKey: string;
|
|
214
|
+
track?: boolean;
|
|
215
|
+
};
|
|
202
216
|
export type GetFeatureVariablesParamsType = {
|
|
203
217
|
visitorCode: string;
|
|
204
218
|
featureKey: string;
|
|
@@ -225,6 +239,16 @@ export type KameleoonVariationType = {
|
|
|
225
239
|
experimentId: number | null;
|
|
226
240
|
variables: KameleoonVariableType[];
|
|
227
241
|
};
|
|
242
|
+
/**
|
|
243
|
+
* @type `VariationType` - an object containing information about the variation and its variables
|
|
244
|
+
* @param {string} key - key of the variation
|
|
245
|
+
* @param {number | null} id - id of the variation or `null` if the visitor hit default variation
|
|
246
|
+
* @param {number | null} experimentId - id of the experiment or `null` if the visitor hit default variation
|
|
247
|
+
* @param {Map<string, KameleoonVariableType>} variables - map of variables for the variation, where key is the variable key and value is the variable object
|
|
248
|
+
* */
|
|
249
|
+
export type VariationType = Omit<KameleoonVariationType, 'variables'> & {
|
|
250
|
+
variables: Map<string, KameleoonVariableType>;
|
|
251
|
+
};
|
|
228
252
|
/**
|
|
229
253
|
* @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters
|
|
230
254
|
* @param {string} featureKey - key of the feature flag to look for, can be found on Kameleoon Platform
|
|
@@ -246,6 +270,29 @@ export type GetVisitorWarehouseAudienceParamsType = {
|
|
|
246
270
|
customDataIndex: number;
|
|
247
271
|
warehouseKey?: string;
|
|
248
272
|
};
|
|
273
|
+
/**
|
|
274
|
+
* @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters
|
|
275
|
+
* @param {string} featureKey - key of the feature flag to look for, can be found on Kameleoon Platform
|
|
276
|
+
* @param {boolean | undefined} track - a flag to enable or disable tracking request
|
|
277
|
+
* @defaultvalue `true`
|
|
278
|
+
* */
|
|
279
|
+
export type GetVariationParamsType = {
|
|
280
|
+
visitorCode: string;
|
|
281
|
+
featureKey: string;
|
|
282
|
+
track?: boolean;
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters
|
|
286
|
+
* @param {boolean | undefined} onlyActive - an indicator to get only active variations
|
|
287
|
+
* @defaultvalue `false`
|
|
288
|
+
* @param {boolean | undefined} track - a flag to enable or disable tracking request
|
|
289
|
+
* @defaultvalue `true`
|
|
290
|
+
* */
|
|
291
|
+
export type GetVariationsParamsType = {
|
|
292
|
+
visitorCode: string;
|
|
293
|
+
onlyActive?: boolean;
|
|
294
|
+
track?: boolean;
|
|
295
|
+
};
|
|
249
296
|
export type WarehouseAudienceType = {
|
|
250
297
|
warehouseAudiences: Record<string, unknown>;
|
|
251
298
|
};
|
|
@@ -262,6 +309,11 @@ export type SetDataCallbackParametersType = {
|
|
|
262
309
|
path: string;
|
|
263
310
|
key: string;
|
|
264
311
|
};
|
|
312
|
+
export type GetFeatureVariationParametersType = {
|
|
313
|
+
visitorCode: string;
|
|
314
|
+
featureKey: string;
|
|
315
|
+
track: boolean;
|
|
316
|
+
};
|
|
265
317
|
/**
|
|
266
318
|
* @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters
|
|
267
319
|
* @param {boolean} consent - a value representing the legal consent status. - 'true' indicates the
|
package/dist/types.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";var _requester=require("./requester");Object.defineProperty(exports,"__esModule",{value:!0}),exports.VariableType=exports.TrackingStatus=exports.Milliseconds=exports.Environment=void 0;let Environment=exports.Environment=function(a){return a.Production="production",a.Staging="staging",a.Development="development",a}({}),VariableType=exports.VariableType=function(a){return a.BOOLEAN="BOOLEAN",a.NUMBER="NUMBER",a.STRING="STRING",a.JSON="JSON",a.JS="JS",a.CSS="CSS",a}({}),TrackingStatus=exports.TrackingStatus=function(a){return a.Sent="sent",a.Unsent="unsent",a.Pending="pending",a}({}),Milliseconds=exports.Milliseconds=function(a){return a[a.Second=1000]="Second",a[a.Minute=60*a.Second]="Minute",a[a.Hour=60*a.Minute]="Hour",a[a.Day=24*a.Hour]="Day",a[a.Week=7*a.Day]="Week",a[a.Month=30*a.Day]="Month",a}({});
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
1
|
+
"use strict";var _requester=require("./requester");Object.defineProperty(exports,"__esModule",{value:!0}),exports.VariableType=exports.TrackingStatus=exports.Milliseconds=exports.Environment=void 0;let Environment=exports.Environment=function(a){return a.Production="production",a.Staging="staging",a.Development="development",a}({}),VariableType=exports.VariableType=function(a){return a.BOOLEAN="BOOLEAN",a.NUMBER="NUMBER",a.STRING="STRING",a.JSON="JSON",a.JS="JS",a.CSS="CSS",a}({}),TrackingStatus=exports.TrackingStatus=function(a){return a.Sent="sent",a.Unsent="unsent",a.Pending="pending",a}({}),Milliseconds=exports.Milliseconds=function(a){return a[a.Second=1000]="Second",a[a.Minute=60*a.Second]="Minute",a[a.Hour=60*a.Minute]="Hour",a[a.Day=24*a.Hour]="Day",a[a.Week=7*a.Day]="Week",a[a.Month=30*a.Day]="Month",a}({});
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
export declare const HEX_CHARACTERS = "0123456789ABCDEF";
|
|
2
2
|
export declare const NONCE_LENGTH = 16;
|
|
3
|
+
export declare const HTTP = "http://";
|
|
4
|
+
export declare const HTTPS = "https://";
|
|
5
|
+
export declare const REGEX_DOMAIN: RegExp;
|
|
6
|
+
export declare const HIDDEN_SECRET_CHAR = "*";
|
|
7
|
+
export declare const SECRET_VISIBLE_LENGTH = 4;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.NONCE_LENGTH=exports.HEX_CHARACTERS=void 0;const HEX_CHARACTERS=exports.HEX_CHARACTERS="0123456789ABCDEF",NONCE_LENGTH=exports.NONCE_LENGTH=16;
|
|
2
|
-
//# sourceMappingURL=constants.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SECRET_VISIBLE_LENGTH=exports.REGEX_DOMAIN=exports.NONCE_LENGTH=exports.HTTPS=exports.HTTP=exports.HIDDEN_SECRET_CHAR=exports.HEX_CHARACTERS=void 0;const HEX_CHARACTERS=exports.HEX_CHARACTERS="0123456789ABCDEF",NONCE_LENGTH=exports.NONCE_LENGTH=16,HTTP=exports.HTTP="http://",HTTPS=exports.HTTPS="https://",REGEX_DOMAIN=exports.REGEX_DOMAIN=/^(\.?(([a-zA-Z\d][a-zA-Z\d-]*[a-zA-Z\d])|[a-zA-Z\d]))(\.(([a-zA-Z\d][a-zA-Z\d-]*[a-zA-Z\d])|[a-zA-Z\d])){1,126}$/,HIDDEN_SECRET_CHAR=exports.HIDDEN_SECRET_CHAR="*",SECRET_VISIBLE_LENGTH=exports.SECRET_VISIBLE_LENGTH=4;
|
package/dist/utilities/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"IExternalPRNG",{enumerable:!0,get:function(){return _types.IExternalPRNG}}),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"),_parser=require("./parser"),_validator=require("./validator"),_types=require("./types");
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"IExternalPRNG",{enumerable:!0,get:function(){return _types.IExternalPRNG}}),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"),_parser=require("./parser"),_validator=require("./validator"),_types=require("./types");
|
|
@@ -7,4 +7,5 @@ export declare class Parser {
|
|
|
7
7
|
static parseFeatureVariable(variable: FeatureVariableType): Result<FeatureVariableResultType, KameleoonError>;
|
|
8
8
|
static parseVisitorData({ data, filters, visitorCode, dataManager, variationConfiguration, }: ParseVisitorDataParametersType): ParseVisitorDataResultType;
|
|
9
9
|
static parseRegExp(value: string): RegExp;
|
|
10
|
+
static parseSecret(secret: string | null): string;
|
|
10
11
|
}
|
package/dist/utilities/parser.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
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");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}=b;let k=[];if(h&&k.push(h),i&&k.push(...i),!k.length)return{visitorData:[],storageVisitorData:[]};k.forEach(a=>{g.processVisit(a)}),g.processKcs(j),g.processMultipleDataTypes();const{visitorData:l,storageVisitorData:m,visitsData:n,experimentData:o}=g.data;return f.updateStoredVariations(d,o),{visitorData:l,storageVisitorData:m,visitsData:n}}static parseRegExp(a){if("/"===a[0]){const[_,b,c]=a.split("/");return new RegExp(b,c)}return new RegExp(a)}}exports.Parser=Parser;
|
|
2
|
-
//# sourceMappingURL=parser.js.map
|
|
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");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}=b;let k=[];if(h&&k.push(h),i&&k.push(...i),!k.length)return{visitorData:[],storageVisitorData:[]};k.forEach(a=>{g.processVisit(a)}),g.processKcs(j),g.processMultipleDataTypes();const{visitorData:l,storageVisitorData:m,visitsData:n,experimentData:o}=g.data;return f.updateStoredVariations(d,o),{visitorData:l,storageVisitorData:m,visitsData:n}}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
CHANGED
|
@@ -1,2 +1 @@
|
|
|
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}({});
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
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,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Utilities=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_types=require("../types"),_kameleoonData=require("../kameleoonData"),_constants=require("../constants"),_targeting=require("../targeting"),_types2=require("./types"),_constants2=require("./constants"),_validator=require("./validator");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(
|
|
2
|
-
//# sourceMappingURL=utilities.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Utilities=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_types=require("../types"),_kameleoonData=require("../kameleoonData"),_constants=require("../constants"),_targeting=require("../targeting"),_types2=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(_targeting.TargetingType.SEGMENT)&&(m=i.trees,o=g.segments),l.hasTargetingType(_targeting.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={[_types2.TimeUnit.Minute]:_types.Milliseconds.Minute,[_types2.TimeUnit.Hour]:_types.Milliseconds.Hour,[_types2.TimeUnit.Day]:_types.Milliseconds.Day,[_types2.TimeUnit.Week]:_types.Milliseconds.Week,[_types2.TimeUnit.Month]:_types.Milliseconds.Month};return a/c[b]}static isCustomData(a){return a.data.type===_kameleoonData.KameleoonData.CustomData}static insertInOrderedListMutably(a){let{list:b,element:c,order:d}=a;if(!b.includes(c)){const a=b.findIndex(a=>d===_types2.Order.Ascending?a>=c:a<=c);-1===a?b.push(c):b.splice(a,0,c)}}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 _targeting.VersionMatchType.EQUAL:return(0,_tsRes.Ok)(m&&n&&o);case _targeting.VersionMatchType.GREATER:return(0,_tsRes.Ok)(g>j||m&&h>k||m&&n&&i>l);case _targeting.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)}}}exports.Utilities=Utilities;
|
|
@@ -2,4 +2,5 @@ import { Result } from 'ts-res';
|
|
|
2
2
|
import { KameleoonError } from '../kameleoonError';
|
|
3
3
|
export declare class Validator {
|
|
4
4
|
static validateVersion(version: string): Result<[number, number, number], KameleoonError>;
|
|
5
|
+
static validateDomain(domain: string | undefined): Result<string, void>;
|
|
5
6
|
}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Validator=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError");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))}}exports.Validator=Validator;
|
|
2
|
-
//# sourceMappingURL=validator.js.map
|
|
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){if(!a)return(0,_tsRes.Err)();a=a.toLowerCase();const b=[_constants.HTTP,_constants.HTTPS];for(const c of b)if(a.startsWith(c)){a=a.substring(c.length),_logging.KameleoonLogger.warning`The top-level domain contains ${c}. Domain after protocol trimming: ${a}`;break}return _constants.REGEX_DOMAIN.test(a)?(0,_tsRes.Ok)(a):(_logging.KameleoonLogger.error`The top-level domain ${a} is invalid.`,(0,_tsRes.Err)())}}exports.Validator=Validator;
|
|
@@ -1,2 +1 @@
|
|
|
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");
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
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,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -38,7 +38,7 @@ export declare class VariationConfiguration implements IVariationConfiguration {
|
|
|
38
38
|
getUnsentData(visitorCode: string): BaseVariationDataType[];
|
|
39
39
|
getPendingData(visitorCode: string): BaseVariationDataType[];
|
|
40
40
|
getStoredVariations(visitorCode: string): Result<FeatureFlagVariationsType, KameleoonError>;
|
|
41
|
-
getVariation({ visitorCode, visitorIdentifier, featureFlag, targetingData, packageInfo, clientConfiguration, dataManager, withAssignment, }: GetVariationParametersType): Result<FeatureFlagVariationType, KameleoonError>;
|
|
41
|
+
getVariation({ visitorCode, visitorIdentifier, featureFlag, targetingData, packageInfo, clientConfiguration, dataManager, track, withAssignment, }: GetVariationParametersType): Result<FeatureFlagVariationType, KameleoonError>;
|
|
42
42
|
updateStoredVariations(visitorCode: string, variationData: FeatureFlagVariationsType): Result<void, KameleoonError>;
|
|
43
43
|
private getVariationData;
|
|
44
44
|
}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";const _excluded=["exposition"];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");function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],b.includes(c)||{}.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c={};for(var d in a)if({}.hasOwnProperty.call(a,d)){if(b.includes(d))continue;c[d]=a[d]}return c}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){_defineProperty(this,"storage",void 0),_defineProperty(this,"visitorCodeManager",void 0),this.storage=a,this.visitorCodeManager=b}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)}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,
|
|
2
|
-
//# sourceMappingURL=variationConfiguration.js.map
|
|
1
|
+
"use strict";const _excluded=["exposition"];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");function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],b.includes(c)||{}.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c={};for(var d in a)if({}.hasOwnProperty.call(a,d)){if(b.includes(d))continue;c[d]=a[d]}return c}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){_defineProperty(this,"storage",void 0),_defineProperty(this,"visitorCodeManager",void 0),this.storage=a,this.visitorCodeManager=b}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)}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 k=this.visitorCodeManager.validateVisitorCode(b);if(!k.ok)return(0,_tsRes.Err)(k.error);const{rules:l,featureKey:m,id:n,defaultVariationKey:o}=d;for(const k of l){const{segment:a,experimentId:l,id:p,exposition:q,respoolTime:r,variationByExposition:s}=k,t=_utilities.Utilities.checkTargeting({segment:a,visitorCode:b,experimentId:l,targetingData:e,packageInfo:f,clientConfiguration:g,dataManager:h,variationConfiguration:this});if(!t.ok)return _logging.KameleoonLogger.debug`RETURN: VariationConfiguration.getVariation(visitorCode: ${b}, visitorIdentifier: ${c}, featureFlag: ${d}, targetingData: ${e}, packageInfo: ${f}, clientConfiguration, dataManager, withAssignment: ${j}) -> (targetedVariation: ${t})`,t;if(!t.data)continue;_logging.KameleoonLogger.info`Visitor ${b} has been targeted for ${k}`;const u=_hasher.Hasher.getHashDouble({visitorIdentifier:c,respoolTime:r,id:p+""});if(_logging.KameleoonLogger.debug`Calculated ruleHash: ${u} for visitorCode: ${b}`,u<=q){let a=0;const g=_hasher.Hasher.getHashDouble({visitorIdentifier:c,respoolTime:r,id:l+""});_logging.KameleoonLogger.debug`Calculated variationHash: ${g} for visitorCode: ${b}`;for(const h of s)if(a+=h.exposition,g<=a){j&&this.updateStoredVariations(b,{[l]:{variationId:h.variationId,isTargetedRule:k.type===_types.RuleType.TARGETED_DELIVERY,status:i?_types2.TrackingStatus.Unsent:_types2.TrackingStatus.Sent}});const{exposition:a}=h,g=_objectWithoutProperties(h,_excluded),o=_objectSpread(_objectSpread({},g),{},{rule:k,featureFlagId:n,featureKey:m,experimentId:l,isTargetedRule:k.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: ${o})`,(0,_tsRes.Ok)(o)}}if(k.type===_types.RuleType.TARGETED_DELIVERY){const a={featureKey:m,featureFlagId:n,experimentId:null,variationKey:o,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 p={featureKey:m,featureFlagId:n,experimentId:null,variationKey:o,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: ${p})`,(0,_tsRes.Ok)(p)}updateStoredVariations(a,b){const c=this.storage.read();if(!c.ok)return c;let d=c.data;return d[a]?d[a]=_objectSpread(_objectSpread({},d[a]),b):d=_objectSpread(_objectSpread({},d),{},{[a]:_objectSpread({},b)}),this.storage.write(d)}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}}exports.VariationConfiguration=VariationConfiguration;
|
|
@@ -1,2 +1 @@
|
|
|
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="/";
|
|
2
|
-
//# sourceMappingURL=constants.js.map
|
|
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,2 +1 @@
|
|
|
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]}})});
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
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,2 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
@@ -1,2 +1 @@
|
|
|
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");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,"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(
|
|
2
|
-
//# sourceMappingURL=visitorCodeManager.js.map
|
|
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,"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.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}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("")}}exports.VisitorCodeManager=VisitorCodeManager;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kameleoon/javascript-sdk-core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.1.1",
|
|
4
4
|
"description": "Kameleoon JS SDK Core",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
"clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
|
|
12
12
|
"dev": "npm run clean && tsc -w -p tsconfig.watch.json",
|
|
13
13
|
"build": "npm run clean && npm run build:types && npm run build:js",
|
|
14
|
+
"build:test": "npm run clean && npm run build:js-source-maps",
|
|
14
15
|
"build:types": "tsc --emitDeclarationOnly && tsc-alias",
|
|
15
|
-
"build:js": "babel src --out-dir dist --extensions \".ts,.tsx\"
|
|
16
|
+
"build:js": "babel src --out-dir dist --extensions \".ts,.tsx\"",
|
|
17
|
+
"build:js-source-maps": "babel src --out-dir dist --extensions \".ts,.tsx\" --source-maps true",
|
|
16
18
|
"deploy": "/bin/bash ../../scripts/deploy.sh javascript-sdk-core",
|
|
17
19
|
"deploy-nexus": "/bin/bash ../../scripts/deploy_nexus.sh javascript-sdk-core",
|
|
18
20
|
"update-changelog": "/bin/bash ../../scripts/update_changelog.sh javascript-sdk-core",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cacheManager.js","names":["_types","require","Object","defineProperty","exports","value","CacheManager","_defineProperty","a","b","c","_toPropertyKey","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","d","call","TypeError","String","Number","constructor","cleanupTimeout","Map","Milliseconds","Second","add","key","data","lifetime","intervalId","activate","expirationTime","cacheItem","Date","now","cacheMap","set","getAliveItem","get","delete","setInterval","item","size","cleanupInterval","clearInterval"],"sources":["../../src/cacheManager/cacheManager.ts"],"sourcesContent":["import { Milliseconds } from 'src/types';\nimport { AddParametersType, CacheItemType } from './types';\n\ninterface ICacheManager<T> {\n /**\n * Add item to cache\n * @param {AddParametersType<T>} parameters - parameters for adding new item cache\n * @returns {void}\n */\n add({ key, data, lifetime }: AddParametersType<T>): void;\n /**\n * Get item that is not expired from cache\n * @param {string} key - key of item\n * @returns {T} an item that is not expired\n */\n getAliveItem(key: string): T | null;\n}\n\n/**\n * @class\n * CacheManager - a class for managing cache\n */\nexport class CacheManager<T> implements ICacheManager<T> {\n private cacheMap = new Map<string, CacheItemType<T>>();\n private intervalId: NodeJS.Timeout | null = null;\n private cleanupTimeout: number;\n\n /**\n * @param {number} cleanupTimeout - timeout for cleaning cache in seconds\n * generic type `T` is a type of data that will be stored in cache\n * @example\n * ```typescript\n * const cacheManager = new CacheManager<number>(60);\n * ```\n */\n constructor(cleanupTimeout: number) {\n this.cleanupTimeout = cleanupTimeout * Milliseconds.Second;\n }\n\n public add({ key, data, lifetime }: AddParametersType<T>): void {\n if (this.intervalId === null) {\n this.activate();\n }\n\n const expirationTime = lifetime * Milliseconds.Second;\n\n const cacheItem: CacheItemType<T> = {\n data,\n expirationTime: Date.now() + expirationTime,\n };\n\n this.cacheMap.set(key, cacheItem);\n }\n\n public getAliveItem(key: string): T | null {\n const cacheItem = this.cacheMap.get(key);\n\n if (cacheItem && cacheItem.expirationTime >= Date.now()) {\n return cacheItem.data;\n }\n\n cacheItem && this.cacheMap.delete(key);\n\n return null;\n }\n\n private activate(): void {\n this.intervalId = setInterval(() => {\n const now = Date.now();\n\n for (const [key, item] of this.cacheMap) {\n if (item.expirationTime < now) {\n this.cacheMap.delete(key);\n }\n }\n\n if (!this.cacheMap.size) {\n this.cleanupInterval();\n }\n }, this.cleanupTimeout);\n }\n\n private cleanupInterval(): void {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n }\n}\n"],"mappings":"aAAA,IAAAA,MAAA,CAAAC,OAAA,aAAyCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,YAAA,iBAAAC,gBAAAC,CAAA,CAAAC,CAAA,CAAAC,CAAA,SAAAD,CAAA,CAAAE,cAAA,CAAAF,CAAA,KAAAD,CAAA,CAAAN,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAC,CAAA,EAAAJ,KAAA,CAAAK,CAAA,CAAAE,UAAA,IAAAC,YAAA,IAAAC,QAAA,MAAAN,CAAA,CAAAC,CAAA,EAAAC,CAAA,CAAAF,CAAA,UAAAG,eAAAH,CAAA,MAAAC,CAAA,CAAAM,YAAA,CAAAP,CAAA,kCAAAC,CAAA,CAAAA,CAAA,CAAAA,CAAA,aAAAM,aAAAP,CAAA,CAAAC,CAAA,sBAAAD,CAAA,GAAAA,CAAA,QAAAA,CAAA,KAAAE,CAAA,CAAAF,CAAA,CAAAQ,MAAA,CAAAC,WAAA,cAAAP,CAAA,MAAAQ,CAAA,CAAAR,CAAA,CAAAS,IAAA,CAAAX,CAAA,CAAAC,CAAA,iCAAAS,CAAA,QAAAA,CAAA,WAAAE,SAAA,mEAAAX,CAAA,CAAAY,MAAA,CAAAC,MAAA,EAAAd,CAAA,EAsBlC,KAAM,CAAAF,YAA4C,CAavDiB,WAAWA,CAACC,CAAsB,CAAE,CAAAjB,eAAA,iBAZjB,GAAI,CAAAkB,GAA+B,EAAAlB,eAAA,mBACV,IAAI,EAAAA,eAAA,+BAY9C,IAAI,CAACiB,cAAc,CAAGA,CAAc,CAAGE,mBAAY,CAACC,MACtD,CAEOC,GAAGA,CAAApB,CAAA,CAAsD,IAArD,CAAEqB,GAAG,CAAHA,CAAG,CAAEC,IAAI,CAAJA,CAAI,CAAEC,QAAQ,CAARA,CAA+B,CAAC,CAAAvB,CAAA,CAC9B,IAAI,GAAxB,IAAI,CAACwB,UAAmB,EAC1B,IAAI,CAACC,QAAQ,CAAC,CAAC,MAGX,CAAAC,CAAc,CAAGH,CAAQ,CAAGL,mBAAY,CAACC,MAAM,CAE/CQ,CAA2B,CAAG,CAClCL,IAAI,CAAJA,CAAI,CACJI,cAAc,CAAEE,IAAI,CAACC,GAAG,CAAC,CAAC,CAAGH,CAC/B,CAAC,CAED,IAAI,CAACI,QAAQ,CAACC,GAAG,CAACV,CAAG,CAAEM,CAAS,CAClC,CAEOK,YAAYA,CAACX,CAAW,CAAY,CACzC,KAAM,CAAAM,CAAS,CAAG,IAAI,CAACG,QAAQ,CAACG,GAAG,CAACZ,CAAG,CAAC,CAAC,MAErC,CAAAM,CAAS,EAAIA,CAAS,CAACD,cAAc,EAAIE,IAAI,CAACC,GAAG,CAAC,CAAC,CAC9CF,CAAS,CAACL,IAAI,EAGvBK,CAAS,EAAI,IAAI,CAACG,QAAQ,CAACI,MAAM,CAACb,CAAG,CAAC,CAE/B,IAAI,CACb,CAEQI,QAAQA,CAAA,CAAS,CACvB,IAAI,CAACD,UAAU,CAAGW,WAAW,CAAC,IAAM,CAClC,KAAM,CAAAN,CAAG,CAAGD,IAAI,CAACC,GAAG,CAAC,CAAC,CAEtB,IAAK,KAAM,CAACR,CAAG,CAAEe,CAAI,CAAC,EAAI,KAAI,CAACN,QAAQ,CACjCM,CAAI,CAACV,cAAc,CAAGG,CAAG,EAC3B,IAAI,CAACC,QAAQ,CAACI,MAAM,CAACb,CAAG,CAAC,CAIxB,IAAI,CAACS,QAAQ,CAACO,IAAI,EACrB,IAAI,CAACC,eAAe,CAAC,CAEzB,CAAC,CAAE,IAAI,CAACtB,cAAc,CACxB,CAEQsB,eAAeA,CAAA,CAAS,CAC1B,IAAI,CAACd,UAAU,GACjBe,aAAa,CAAC,IAAI,CAACf,UAAU,CAAC,CAC9B,IAAI,CAACA,UAAU,CAAG,IAAI,CAE1B,CACF,CAAC5B,OAAA,CAAAE,YAAA,CAAAA,YAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/cacheManager/index.ts"],"sourcesContent":["export { CacheManager } from './cacheManager';\nexport { AddParametersType } from './types';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/cacheManager/types.ts"],"sourcesContent":["/**\n * @param {string} key - key for adding new item cache, key must be unique otherwise the item will be overwritten\n * @param {T} data - data for adding new item cache\n * @param {number} lifetime - lifetime for adding new item cache in seconds\n */\nexport type AddParametersType<T> = {\n key: string;\n data: T;\n lifetime: number;\n};\n\nexport type CacheItemType<T> = {\n data: T;\n expirationTime: number;\n};\n"],"mappings":"","ignoreList":[]}
|