@kameleoon/javascript-sdk-core 5.5.0 → 5.6.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 +17 -0
- package/dist/clientConfiguration/clientConfiguration.d.ts +6 -0
- package/dist/clientConfiguration/clientConfiguration.js +1 -1
- package/dist/clientConfiguration/meGroup.d.ts +7 -0
- package/dist/clientConfiguration/meGroup.js +1 -0
- package/dist/clientConfiguration/types.d.ts +1 -0
- package/dist/clientSettings/clientSettings.js +1 -1
- package/dist/eventSource/eventSource.js +1 -1
- package/dist/hasher/hasher.d.ts +1 -0
- package/dist/hasher/hasher.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/kameleoonClient.d.ts +3 -1
- package/dist/kameleoonClient.js +1 -1
- package/dist/kameleoonData/dataProcessor.d.ts +1 -1
- package/dist/kameleoonData/dataProcessor.js +1 -1
- package/dist/kameleoonData/types.d.ts +2 -1
- package/dist/kameleoonData/visitsData.js +1 -1
- package/dist/requester/types.d.ts +1 -1
- package/dist/requester/urlProvider.js +1 -1
- package/dist/sdkInfoTypes.d.ts +20 -0
- package/dist/sdkInfoTypes.js +1 -0
- package/dist/storage/integrityChecker.js +1 -1
- package/dist/targeting/conditions/applicationVersion.js +1 -1
- package/dist/targeting/conditions/browser.js +1 -1
- package/dist/targeting/conditions/conditionFactory.d.ts +3 -2
- package/dist/targeting/conditions/conditionFactory.js +1 -1
- package/dist/targeting/conditions/conditionFactoryInstance.d.ts +11 -0
- package/dist/targeting/conditions/conditionFactoryInstance.js +1 -0
- package/dist/targeting/conditions/conversion.js +1 -1
- package/dist/targeting/conditions/conversionLikelihood.js +1 -1
- package/dist/targeting/conditions/cookie.js +1 -1
- package/dist/targeting/conditions/customData.d.ts +1 -1
- package/dist/targeting/conditions/customData.js +1 -1
- package/dist/targeting/conditions/device.js +1 -1
- package/dist/targeting/conditions/firstVisit.js +1 -1
- package/dist/targeting/conditions/geolocation.js +1 -1
- package/dist/targeting/conditions/lastVisit.js +1 -1
- package/dist/targeting/conditions/newVisitor.js +1 -1
- package/dist/targeting/conditions/operatingSystem.js +1 -1
- package/dist/targeting/conditions/pageTitle.js +1 -1
- package/dist/targeting/conditions/pageUrl.js +1 -1
- package/dist/targeting/conditions/previousPage.js +1 -1
- package/dist/targeting/conditions/sameDayVisits.js +1 -1
- package/dist/targeting/conditions/targetPersonalization.js +1 -1
- package/dist/targeting/conditions/visitedPages.js +1 -1
- package/dist/targeting/conditions/visits.js +1 -1
- package/dist/targeting/node.d.ts +1 -1
- package/dist/targeting/node.js +1 -1
- package/dist/targeting/types.d.ts +1 -1
- package/dist/types.d.ts +3 -20
- package/dist/types.js +1 -1
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/listUtilities.d.ts +10 -0
- package/dist/utilities/listUtilities.js +1 -0
- package/dist/utilities/types.d.ts +2 -1
- package/dist/utilities/utilities.d.ts +4 -10
- package/dist/utilities/utilities.js +1 -1
- package/dist/utilities/validator.d.ts +2 -0
- package/dist/utilities/validator.js +1 -1
- package/dist/variationConfiguration/types.d.ts +2 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 5.6.1 (2025-03-05)
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Resolved all circular dependencies to improve stability.
|
|
8
|
+
|
|
9
|
+
## 5.6.0 (2025-02-26)
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
- Added new parameter `stubMode` to `SDKParameters` for create `KameleoonClient`. This parameter enables a no-operation mode for the client, which is particularly useful for disabling external interactions in controlled environments.
|
|
14
|
+
- Added SDK support for **Mutually Exclusive Groups**. When feature flags are grouped into a **Mutually Exclusive Group**, only one flag in the group will be evaluated at a time. All other flags in the group will automatically return their default variation.
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Fixed validation for the [`networkDomain`][configurationParameters] parameter.
|
|
19
|
+
|
|
3
20
|
## 5.5.0 (2025-02-10)
|
|
4
21
|
|
|
5
22
|
### Features
|
|
@@ -2,6 +2,7 @@ import { Result } from 'ts-res';
|
|
|
2
2
|
import { KameleoonError } from '../kameleoonError/kameleoonError';
|
|
3
3
|
import { SegmentType } from '../targeting';
|
|
4
4
|
import { ClientConfigurationParametersType, ConfigurationType, ExperimentInfoType, ExperimentType, FeatureFlagType, MappedRuleType } from './types';
|
|
5
|
+
import { MEGroup } from '../clientConfiguration/meGroup';
|
|
5
6
|
interface IClientConfiguration {
|
|
6
7
|
initialize: () => Promise<Result<void, KameleoonError>>;
|
|
7
8
|
readonly featureFlags: Map<string, FeatureFlagType>;
|
|
@@ -10,6 +11,7 @@ interface IClientConfiguration {
|
|
|
10
11
|
readonly ruleMap: Map<number, MappedRuleType>;
|
|
11
12
|
readonly experimentMap: Map<number, ExperimentInfoType>;
|
|
12
13
|
readonly holdout: ExperimentType | null;
|
|
14
|
+
readonly meGroups: Map<string, MEGroup>;
|
|
13
15
|
}
|
|
14
16
|
export declare class ClientConfiguration implements IClientConfiguration {
|
|
15
17
|
private updateConfigurationIntervalId;
|
|
@@ -19,6 +21,7 @@ export declare class ClientConfiguration implements IClientConfiguration {
|
|
|
19
21
|
private isTargetedDeliveryRule;
|
|
20
22
|
private segmentsData;
|
|
21
23
|
private holdoutData;
|
|
24
|
+
private meGroupsData;
|
|
22
25
|
private updateInterval;
|
|
23
26
|
private lastUpdate;
|
|
24
27
|
private storage;
|
|
@@ -41,6 +44,7 @@ export declare class ClientConfiguration implements IClientConfiguration {
|
|
|
41
44
|
get ruleMap(): Map<number, MappedRuleType>;
|
|
42
45
|
get experimentMap(): Map<number, ExperimentInfoType>;
|
|
43
46
|
get holdout(): ExperimentType | null;
|
|
47
|
+
get meGroups(): Map<string, MEGroup>;
|
|
44
48
|
get isConsentRequired(): boolean;
|
|
45
49
|
get hasAnyTargetedDeliveryRule(): boolean;
|
|
46
50
|
private checkShouldUpdate;
|
|
@@ -53,6 +57,8 @@ export declare class ClientConfiguration implements IClientConfiguration {
|
|
|
53
57
|
* @returns `true` if current update type should be toggled (SSE/Polling)
|
|
54
58
|
*/
|
|
55
59
|
private updateClientConfiguration;
|
|
60
|
+
private updateConfigurationData;
|
|
61
|
+
private makeMEGroups;
|
|
56
62
|
private updateStorageData;
|
|
57
63
|
private updateConsentRequired;
|
|
58
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ClientConfiguration=void 0;var _tsRes=require("ts-res"),_types=require("./types"),_eventManager=require("../eventManager"),_constants=require("./constants"),_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 ClientConfiguration{constructor(a){let{updateInterval:b,urlProvider:c,storage:d,requester:e,dataManager:f,eventSource:g,externalVisitorCodeManager:h,eventManager:i}=a;_defineProperty(this,"updateConfigurationIntervalId",null),_defineProperty(this,"updateType",_types.UpdateType.Polling),_defineProperty(this,"configurationData",_constants.DEFAULT_CLIENT_CONFIGURATION),_defineProperty(this,"featureFlagsData",new Map),_defineProperty(this,"isTargetedDeliveryRule",null),_defineProperty(this,"segmentsData",null),_defineProperty(this,"holdoutData",null),_defineProperty(this,"updateInterval",void 0),_defineProperty(this,"lastUpdate",void 0),_defineProperty(this,"storage",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"eventSource",void 0),_defineProperty(this,"mappedRules",null),_defineProperty(this,"mappedExperiments",null),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"visitorCodeManager",void 0),_defineProperty(this,"eventManager",void 0),_defineProperty(this,"urlProvider",void 0),this.urlProvider=c,this.requester=e,this.updateInterval=b,this.lastUpdate=new Date,this.storage=d,this.dataManager=f,this.eventManager=i,this.visitorCodeManager=h,this.eventSource=g}async initialize(){_logging.KameleoonLogger.debug("CALL: ClientConfiguration.initialize()"),this.readStorageData();const a=this.checkShouldUpdate();if(a){const a=await this.updateClientConfiguration();if(!a.ok)return _logging.KameleoonLogger.error("Error occurred during client configuration update"),a;const b=a.data;if(b)return _logging.KameleoonLogger.debug("RETURN: ClientConfiguration.initialize()"),(0,_tsRes.Ok)()}return this.updateType!==_types.UpdateType.RealTime||this.eventSource.isOpen?(this.updateType===_types.UpdateType.Polling&&this.handlePollingUpdates(),_logging.KameleoonLogger.debug("RETURN: ClientConfiguration.initialize()"),(0,_tsRes.Ok)()):(this.handleRealTimeUpdates(),_logging.KameleoonLogger.debug("RETURN: ClientConfiguration.initialize()"),(0,_tsRes.Ok)())}cleanupHandlers(){this.eventSource.isOpen&&this.eventSource.close(),this.updateConfigurationIntervalId&&clearInterval(this.updateConfigurationIntervalId)}handleRealTimeUpdates(){this.cleanupHandlers();const a=a=>{this.updateClientConfiguration(a).then(b=>{b.ok&&this.eventManager.fireEvent(_eventManager.EventType.ConfigurationUpdate,{timestamp:a})})};this.eventSource.open(a),this.eventSource.onError(a=>{_logging.KameleoonLogger.error`Error occurred during real-time update: ${a}. Switching to polling updates while the connection is not restored.`,this.updateType=_types.UpdateType.Polling,this.handlePollingUpdates()})}handlePollingUpdates(){this.cleanupHandlers();try{this.updateConfigurationIntervalId=setInterval(this.updateClientConfiguration.bind(this),this.updateInterval)}catch(a){throw this.updateConfigurationIntervalId&&clearInterval(this.updateConfigurationIntervalId),a}}get featureFlags(){return this.featureFlagsData}get configuration(){return this.configurationData.configuration}get segments(){if(this.segmentsData)return this.segmentsData;const a=new Map;return this.featureFlagsData.forEach(b=>{b.rules.forEach(b=>{b.segment&&!a.has(b.segment.id)&&a.set(b.segment.id,b.segment)})}),this.segmentsData=a,a}get ruleMap(){var a;if(null!==(a=this.mappedRules)&&void 0!==a&&a.size)return this.mappedRules;const b=new Map;for(const a of this.featureFlags.values())for(const c of a.rules){const{id:d,experimentId:e,variationByExposition:f}=c,g=new Map;f.forEach(a=>{let{variationKey:b,variationId:c}=a;"number"==typeof c&&g.set(b,c)}),b.set(d,{featureId:a.id,experimentId:e,variations:g})}return this.mappedRules=b,b}get experimentMap(){var a;if(null!==(a=this.mappedExperiments)&&void 0!==a&&a.size)return this.mappedExperiments;const b=new Map;for(const a of this.featureFlags.values())for(const c of a.rules){const{experimentId:a,variationByExposition:d}=c,e=new Map;d.forEach(a=>{let{variationKey:b,variationId:c}=a;"number"==typeof c&&e.set(b,c)}),b.set(a,{type:c.type,variations:e})}return this.mappedExperiments=b,b}get holdout(){return this.holdoutData}get isConsentRequired(){return this.configuration.consentType===_types.ConsentType.Required}get hasAnyTargetedDeliveryRule(){if(null!==this.isTargetedDeliveryRule)return this.isTargetedDeliveryRule;for(const a of this.featureFlags.values())if(a.environmentEnabled&&a.rules.some(a=>a.type===_types.RuleType.TARGETED_DELIVERY))return!0;return!1}checkShouldUpdate(){const{configuration:a}=this.configurationData;if(this.updateType=a.realTimeUpdate?_types.UpdateType.RealTime:_types.UpdateType.Polling,!this.featureFlags.size)return!0;const b=this.lastUpdate.getTime(),c=Date.now()-this.updateInterval;return b<c}readStorageData(){_logging.KameleoonLogger.debug("CALL: ClientConfiguration.readStorageData()");const a=this.storage.read();if(a.ok){const{data:b,lastUpdate:c}=a.data;this.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ClientConfiguration=void 0;var _tsRes=require("ts-res"),_types=require("./types"),_eventManager=require("../eventManager"),_constants=require("./constants"),_logging=require("../logging"),_meGroup=require("./meGroup");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 ClientConfiguration{constructor(a){let{updateInterval:b,urlProvider:c,storage:d,requester:e,dataManager:f,eventSource:g,externalVisitorCodeManager:h,eventManager:i}=a;_defineProperty(this,"updateConfigurationIntervalId",null),_defineProperty(this,"updateType",_types.UpdateType.Polling),_defineProperty(this,"configurationData",_constants.DEFAULT_CLIENT_CONFIGURATION),_defineProperty(this,"featureFlagsData",new Map),_defineProperty(this,"isTargetedDeliveryRule",null),_defineProperty(this,"segmentsData",null),_defineProperty(this,"holdoutData",null),_defineProperty(this,"meGroupsData",new Map),_defineProperty(this,"updateInterval",void 0),_defineProperty(this,"lastUpdate",void 0),_defineProperty(this,"storage",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"eventSource",void 0),_defineProperty(this,"mappedRules",null),_defineProperty(this,"mappedExperiments",null),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"visitorCodeManager",void 0),_defineProperty(this,"eventManager",void 0),_defineProperty(this,"urlProvider",void 0),this.urlProvider=c,this.requester=e,this.updateInterval=b,this.lastUpdate=new Date,this.storage=d,this.dataManager=f,this.eventManager=i,this.visitorCodeManager=h,this.eventSource=g}async initialize(){_logging.KameleoonLogger.debug("CALL: ClientConfiguration.initialize()"),this.readStorageData();const a=this.checkShouldUpdate();if(a){const a=await this.updateClientConfiguration();if(!a.ok)return _logging.KameleoonLogger.error("Error occurred during client configuration update"),a;const b=a.data;if(b)return _logging.KameleoonLogger.debug("RETURN: ClientConfiguration.initialize()"),(0,_tsRes.Ok)()}return this.updateType!==_types.UpdateType.RealTime||this.eventSource.isOpen?(this.updateType===_types.UpdateType.Polling&&this.handlePollingUpdates(),_logging.KameleoonLogger.debug("RETURN: ClientConfiguration.initialize()"),(0,_tsRes.Ok)()):(this.handleRealTimeUpdates(),_logging.KameleoonLogger.debug("RETURN: ClientConfiguration.initialize()"),(0,_tsRes.Ok)())}cleanupHandlers(){this.eventSource.isOpen&&this.eventSource.close(),this.updateConfigurationIntervalId&&clearInterval(this.updateConfigurationIntervalId)}handleRealTimeUpdates(){this.cleanupHandlers();const a=a=>{this.updateClientConfiguration(a).then(b=>{b.ok&&this.eventManager.fireEvent(_eventManager.EventType.ConfigurationUpdate,{timestamp:a})})};this.eventSource.open(a),this.eventSource.onError(a=>{_logging.KameleoonLogger.error`Error occurred during real-time update: ${a}. Switching to polling updates while the connection is not restored.`,this.updateType=_types.UpdateType.Polling,this.handlePollingUpdates()})}handlePollingUpdates(){this.cleanupHandlers();try{this.updateConfigurationIntervalId=setInterval(this.updateClientConfiguration.bind(this),this.updateInterval)}catch(a){throw this.updateConfigurationIntervalId&&clearInterval(this.updateConfigurationIntervalId),a}}get featureFlags(){return this.featureFlagsData}get configuration(){return this.configurationData.configuration}get segments(){if(this.segmentsData)return this.segmentsData;const a=new Map;return this.featureFlagsData.forEach(b=>{b.rules.forEach(b=>{b.segment&&!a.has(b.segment.id)&&a.set(b.segment.id,b.segment)})}),this.segmentsData=a,a}get ruleMap(){var a;if(null!==(a=this.mappedRules)&&void 0!==a&&a.size)return this.mappedRules;const b=new Map;for(const a of this.featureFlags.values())for(const c of a.rules){const{id:d,experimentId:e,variationByExposition:f}=c,g=new Map;f.forEach(a=>{let{variationKey:b,variationId:c}=a;"number"==typeof c&&g.set(b,c)}),b.set(d,{featureId:a.id,experimentId:e,variations:g})}return this.mappedRules=b,b}get experimentMap(){var a;if(null!==(a=this.mappedExperiments)&&void 0!==a&&a.size)return this.mappedExperiments;const b=new Map;for(const a of this.featureFlags.values())for(const c of a.rules){const{experimentId:a,variationByExposition:d}=c,e=new Map;d.forEach(a=>{let{variationKey:b,variationId:c}=a;"number"==typeof c&&e.set(b,c)}),b.set(a,{type:c.type,variations:e})}return this.mappedExperiments=b,b}get holdout(){return this.holdoutData}get meGroups(){return this.meGroupsData}get isConsentRequired(){return this.configuration.consentType===_types.ConsentType.Required}get hasAnyTargetedDeliveryRule(){if(null!==this.isTargetedDeliveryRule)return this.isTargetedDeliveryRule;for(const a of this.featureFlags.values())if(a.environmentEnabled&&a.rules.some(a=>a.type===_types.RuleType.TARGETED_DELIVERY))return!0;return!1}checkShouldUpdate(){const{configuration:a}=this.configurationData;if(this.updateType=a.realTimeUpdate?_types.UpdateType.RealTime:_types.UpdateType.Polling,!this.featureFlags.size)return!0;const b=this.lastUpdate.getTime(),c=Date.now()-this.updateInterval;return b<c}readStorageData(){_logging.KameleoonLogger.debug("CALL: ClientConfiguration.readStorageData()");const a=this.storage.read();if(a.ok){const{data:b,lastUpdate:c}=a.data;this.updateConfigurationData(b),this.lastUpdate=new Date(Date.parse(c))}_logging.KameleoonLogger.debug`RETURN: ClientConfiguration.readStorageData() -> (result: ${a.ok})`}async updateClientConfiguration(a){var b,c;const d=await this.requester.getClientConfiguration(a);if(!d.ok)return this.featureFlags.size?(_logging.KameleoonLogger.error("Error occurred while updating configuration. Existing configuration will be used as a fallback."),(0,_tsRes.Ok)(!0)):d;this.updateConfigurationData(d.data),this.dataManager.clearTrees(),null===(b=this.mappedRules)||void 0===b?void 0:b.clear(),null===(c=this.experimentMap)||void 0===c?void 0:c.clear(),this.isTargetedDeliveryRule=null,this.segmentsData=null;const e=this.updateStorageData();if(!e.ok)return e;const f=d.data.configuration.realTimeUpdate?_types.UpdateType.RealTime:_types.UpdateType.Polling,g=f!==this.updateType;return g&&(this.updateType=f,_logging.KameleoonLogger.info`Configuration update type was toggled to ${f}`,await this.initialize()),(0,_tsRes.Ok)(g)}updateConfigurationData(a){const{configuration:b,featureFlags:c,customData:d,holdout:e}=a;for(const b of c)this.featureFlagsData.set(b.featureKey,b);null!==d&&void 0!==d&&d.length&&(this.dataManager.customDataIndexes=d),this.meGroupsData=this.makeMEGroups(c),this.holdoutData=null!==e&&void 0!==e?e:null,this.configurationData={configuration:b,customData:d,holdout:e},this.urlProvider.dataApiDomain=a.configuration.dataApiDomain,this.updateConsentRequired()}makeMEGroups(a){const b=new Map;a.forEach(a=>{const c=a.mutuallyExclusiveGroup;if(c){let d=b.get(c);d?d.push(a):b.set(c,[a])}});const c=new Map;return b.forEach((a,b)=>{c.set(b,new _meGroup.MEGroup(a))}),c}updateStorageData(){this.lastUpdate=new Date;const a=_objectSpread(_objectSpread({},this.configurationData),{},{featureFlags:Array.from(this.featureFlags.values())}),b={data:a,lastUpdate:this.lastUpdate.toString()};return this.storage.write(b)}updateConsentRequired(){this.visitorCodeManager.consentRequired=this.isConsentRequired&&!this.hasAnyTargetedDeliveryRule}}exports.ClientConfiguration=ClientConfiguration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MEGroup=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 MEGroup{constructor(a){_defineProperty(this,"_featureFlags",void 0),this._featureFlags=a.slice().sort((a,b)=>a.id-b.id)}getFeatureFlagByHash(a){let b=Math.floor(a*this._featureFlags.length);return b=Math.min(b,this._featureFlags.length-1),this._featureFlags[b]}get featureFlags(){return this._featureFlags}}exports.MEGroup=MEGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ClientSettings=void 0;var _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 ClientSettings{constructor(a,b){_defineProperty(this,"updateInterval",void 0),_defineProperty(this,"environment",void 0),_defineProperty(this,"networkDomain",void 0),_defineProperty(this,"requestTimeout",void 0),_defineProperty(this,"siteCode",void 0),_defineProperty(this,"cleanupInterval",void 0),_defineProperty(this,"trackRetryDelay",void 0),_defineProperty(this,"trackingInterval",void 0),_logging.KameleoonLogger.debug`CALL: new ClientSettings(siteCode: ${a}, configuration: ${b})`,this.siteCode=a,this.environment=this.getEnvironment(b),this.networkDomain=this.getNetworkDomain(b),this.updateInterval=this.getUpdateInterval(b),this.cleanupInterval=this.getCleanupInterval(b),this.requestTimeout=this.getRequestTimeout(b),this.trackingInterval=this.getTrackingInterval(b),this.trackRetryDelay=5*_types.Milliseconds.Second,_logging.KameleoonLogger.debug`RETURN: new ClientSettings(siteCode: ${a}, configuration: ${b})`}getTrackingInterval(a){return"number"==typeof(null===a||void 0===a?void 0:a.trackingInterval)?100>a.trackingInterval?(_logging.KameleoonLogger.warning("Tracking interval must not be shorter than 100 ms. Minimum possible interval was applied."),100):1e3<a.trackingInterval?(_logging.KameleoonLogger.warning("Tracking interval must not be longer than 1000 ms. Maximum possible interval was applied."),1e3):a.trackingInterval:1e3}getEnvironment(a){return null!==a&&void 0!==a&&a.environment?a.environment:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ClientSettings=void 0;var _types=require("../types"),_sdkInfoTypes=require("../sdkInfoTypes"),_logging=require("../logging"),_utilities=require("../utilities");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 ClientSettings{constructor(a,b){_defineProperty(this,"updateInterval",void 0),_defineProperty(this,"environment",void 0),_defineProperty(this,"networkDomain",void 0),_defineProperty(this,"requestTimeout",void 0),_defineProperty(this,"siteCode",void 0),_defineProperty(this,"cleanupInterval",void 0),_defineProperty(this,"trackRetryDelay",void 0),_defineProperty(this,"trackingInterval",void 0),_logging.KameleoonLogger.debug`CALL: new ClientSettings(siteCode: ${a}, configuration: ${b})`,this.siteCode=a,this.environment=this.getEnvironment(b),this.networkDomain=this.getNetworkDomain(b),this.updateInterval=this.getUpdateInterval(b),this.cleanupInterval=this.getCleanupInterval(b),this.requestTimeout=this.getRequestTimeout(b),this.trackingInterval=this.getTrackingInterval(b),this.trackRetryDelay=5*_types.Milliseconds.Second,_logging.KameleoonLogger.debug`RETURN: new ClientSettings(siteCode: ${a}, configuration: ${b})`}getTrackingInterval(a){return"number"==typeof(null===a||void 0===a?void 0:a.trackingInterval)?100>a.trackingInterval?(_logging.KameleoonLogger.warning("Tracking interval must not be shorter than 100 ms. Minimum possible interval was applied."),100):1e3<a.trackingInterval?(_logging.KameleoonLogger.warning("Tracking interval must not be longer than 1000 ms. Maximum possible interval was applied."),1e3):a.trackingInterval:1e3}getEnvironment(a){return null!==a&&void 0!==a&&a.environment?a.environment:_sdkInfoTypes.Environment.Production}getCleanupInterval(a){return"number"==typeof(null===a||void 0===a?void 0:a.targetingDataCleanupInterval)?1>a.targetingDataCleanupInterval?(_logging.KameleoonLogger.warning("Targeting data cleanup interval must not be shorter than 1 minute. Minimum possible interval was applied."),1*_types.Milliseconds.Minute):a.targetingDataCleanupInterval*_types.Milliseconds.Minute:null}getUpdateInterval(a){return"number"==typeof(null===a||void 0===a?void 0:a.updateInterval)?1>a.updateInterval?(_logging.KameleoonLogger.warning("Update interval must not be shorter than 1 minute. Minimum possible interval was applied."),1*_types.Milliseconds.Minute):a.updateInterval*_types.Milliseconds.Minute:60*_types.Milliseconds.Minute}getNetworkDomain(a){const b=_utilities.Validator.validateNetworkDomain(null===a||void 0===a?void 0:a.networkDomain);return b.ok?b.data:null}getRequestTimeout(a){return"number"==typeof(null===a||void 0===a?void 0:a.requestTimeout)?a.requestTimeout:10*_types.Milliseconds.Second}get settings(){return{trackingInterval:this.trackingInterval,trackRetryDelay:this.trackRetryDelay,cleanupInterval:this.cleanupInterval,updateInterval:this.updateInterval,requestTimeout:this.requestTimeout,networkDomain:this.networkDomain,environment:this.environment,siteCode:this.siteCode}}}exports.ClientSettings=ClientSettings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonEventSource=void 0;var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonEventSource=void 0;var _kameleoonLogger=require("../logging/kameleoonLogger"),_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 KameleoonEventSource{constructor(a){let{siteCode:b,externalEventSource:c,urlProvider:d}=a;_defineProperty(this,"eventSource",void 0),_defineProperty(this,"siteCode",void 0),_defineProperty(this,"url",void 0),_defineProperty(this,"isConnectionOpen",void 0),this.url=d.getEventSourceUrl(),this.siteCode=b,this.eventSource=c,this.isConnectionOpen=!1}get isOpen(){return this.isConnectionOpen}open(a){this.eventSource.open({onEvent:this.handleMessage(a),url:this.url,eventType:_constants.REAL_TIME_EVENT}),this.isConnectionOpen=!0,_kameleoonLogger.KameleoonLogger.info`Established a new SSE connection with: ${this.url}`}close(){this.eventSource.close(),this.isConnectionOpen=!1,_kameleoonLogger.KameleoonLogger.info`SSE connection: '${this.url}' was successfully closed`}onError(a){return this.eventSource.onError?void this.eventSource.onError(a):void _kameleoonLogger.KameleoonLogger.warning("EventSource does not have `onError` method provided. Real-time errors won't be handled.")}handleMessage(a){const b=b=>{_kameleoonLogger.KameleoonLogger.debug`Received new message from: ${this.url}`;const c=JSON.parse(b.data),{siteCode:d,ts:e}=c;this.siteCode===d&&a(e)};return b}}exports.KameleoonEventSource=KameleoonEventSource;
|
package/dist/hasher/hasher.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { GetHashDoubleParamsType } from './types';
|
|
2
2
|
export declare class Hasher {
|
|
3
|
+
static getHashDoubleForMEGroup(visitorIdentifier: string, meGroupName: string): number;
|
|
3
4
|
static getHashDouble({ visitorIdentifier, id, respoolTime, }: GetHashDoubleParamsType): number;
|
|
4
5
|
static calculateHash(seed: string): number;
|
|
5
6
|
}
|
package/dist/hasher/hasher.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var _sha=_interopRequireDefault(require("crypto-js/sha256"));Object.defineProperty(exports,"__esModule",{value:!0}),exports.Hasher=void 0;function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}class Hasher{static getHashDouble(a){let{visitorIdentifier:b,id:c,respoolTime:d}=a,e="";return d&&(e+=d+""),this.calculateHash(b+c+e)}static calculateHash(a){const b=(0,_sha.default)(a).toString();return parseInt(b,16)/Math.pow(2,256)}}exports.Hasher=Hasher;
|
|
1
|
+
"use strict";var _sha=_interopRequireDefault(require("crypto-js/sha256"));Object.defineProperty(exports,"__esModule",{value:!0}),exports.Hasher=void 0;function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}class Hasher{static getHashDoubleForMEGroup(a,b){return this.calculateHash(a+b)}static getHashDouble(a){let{visitorIdentifier:b,id:c,respoolTime:d}=a,e="";return d&&(e+=d+""),this.calculateHash(b+c+e)}static calculateHash(a){const b=(0,_sha.default)(a).toString();return parseInt(b,16)/Math.pow(2,256)}}exports.Hasher=Hasher;
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,8 @@ export { KameleoonLogger, LogLevel, IExternalLogger } from './logging';
|
|
|
11
11
|
export { Parser } from './utilities/parser';
|
|
12
12
|
export { SdkLanguageType } from './constants';
|
|
13
13
|
export { JSONType, ConfigurationDataType } from './clientConfiguration';
|
|
14
|
-
export { TrackingStatus,
|
|
14
|
+
export { TrackingStatus, VariableType, InternalsType, FeatureFlagType, JSONVariableType, SDKCoreParameters, NumberVariableType, StringVariableType, BooleanVariableType, SDKConfigurationType, KameleoonVariableType, KameleoonVariationType, FeatureFlagVariableType, TrackConversionParamsType, FeatureVariableResultType, RemoteVisitorDataParamsType, InternalSDKConfigurationType, IsFeatureFlagActiveParamsType, SetDataCallbackParametersType, GetFeatureFlagVariableParamsType, GetVisitorWarehouseAudienceParamsType, SimulateRequestDataType, GetVariationParamsType, GetVariationsParamsType, VariationType, Milliseconds, SetForcedVariationParametersType, } from './types';
|
|
15
|
+
export { Environment, ExternalPackageInfoType } from './sdkInfoTypes';
|
|
15
16
|
export { ApplicationVersion, CustomData, Conversion, Device, Cookie, Browser, UserAgent, DeviceType, CookieType, GeolocationData, GeolocationInfoType, OperatingSystemType, OperatingSystem, BrowserType, PageView, KameleoonData, UniqueIdentifier, KameleoonDataType, PageViewParametersType, ConversionParametersType, ApplicationVersionDataType, } from './kameleoonData';
|
|
16
17
|
export { IExternalEventSource, EventSourceOpenParametersType, } from './eventSource';
|
|
17
18
|
export { Header, HeadersType, HttpMethod, IExternalRequester, RequestParametersType, RequestType, RetryCountType, KameleoonResponseType, SendRequestParametersType, NUMBER_OF_RETRIES, } from './requester';
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ApplicationVersion",{enumerable:!0,get:function(){return _kameleoonData.ApplicationVersion}}),Object.defineProperty(exports,"ApplicationVersionDataType",{enumerable:!0,get:function(){return _kameleoonData.ApplicationVersionDataType}}),Object.defineProperty(exports,"BooleanVariableType",{enumerable:!0,get:function(){return _types.BooleanVariableType}}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function(){return _kameleoonData.Browser}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function(){return _kameleoonData.BrowserType}}),Object.defineProperty(exports,"ConfigurationDataType",{enumerable:!0,get:function(){return _clientConfiguration.ConfigurationDataType}}),Object.defineProperty(exports,"ConfigurationUpdateEventDataType",{enumerable:!0,get:function(){return _eventManager.ConfigurationUpdateEventDataType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function(){return _kameleoonData.Conversion}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function(){return _kameleoonData.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function(){return _kameleoonData.Cookie}}),Object.defineProperty(exports,"CookieType",{enumerable:!0,get:function(){return _kameleoonData.CookieType}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function(){return _kameleoonData.CustomData}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function(){return _kameleoonData.Device}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function(){return _kameleoonData.DeviceType}}),Object.defineProperty(exports,"Environment",{enumerable:!0,get:function(){return _types.Environment}}),Object.defineProperty(exports,"Err",{enumerable:!0,get:function(){return _tsRes.Err}}),Object.defineProperty(exports,"EvaluationEventDataType",{enumerable:!0,get:function(){return _eventManager.EvaluationEventDataType}}),Object.defineProperty(exports,"EventCallbackType",{enumerable:!0,get:function(){return _eventManager.EventCallbackType}}),Object.defineProperty(exports,"EventDataType",{enumerable:!0,get:function(){return _eventManager.EventDataType}}),Object.defineProperty(exports,"EventSourceOpenParametersType",{enumerable:!0,get:function(){return _eventSource.EventSourceOpenParametersType}}),Object.defineProperty(exports,"EventType",{enumerable:!0,get:function(){return _eventManager.EventType}}),Object.defineProperty(exports,"ExternalPackageInfoType",{enumerable:!0,get:function(){return _types.ExternalPackageInfoType}}),Object.defineProperty(exports,"FeatureFlagType",{enumerable:!0,get:function(){return _types.FeatureFlagType}}),Object.defineProperty(exports,"FeatureFlagVariableType",{enumerable:!0,get:function(){return _types.FeatureFlagVariableType}}),Object.defineProperty(exports,"FeatureFlagVariationsType",{enumerable:!0,get:function(){return _storage.FeatureFlagVariationsType}}),Object.defineProperty(exports,"FeatureVariableResultType",{enumerable:!0,get:function(){return _types.FeatureVariableResultType}}),Object.defineProperty(exports,"GeolocationData",{enumerable:!0,get:function(){return _kameleoonData.GeolocationData}}),Object.defineProperty(exports,"GeolocationInfoType",{enumerable:!0,get:function(){return _kameleoonData.GeolocationInfoType}}),Object.defineProperty(exports,"GetFeatureFlagVariableParamsType",{enumerable:!0,get:function(){return _types.GetFeatureFlagVariableParamsType}}),Object.defineProperty(exports,"GetVariationParamsType",{enumerable:!0,get:function(){return _types.GetVariationParamsType}}),Object.defineProperty(exports,"GetVariationsParamsType",{enumerable:!0,get:function(){return _types.GetVariationsParamsType}}),Object.defineProperty(exports,"GetVisitorWarehouseAudienceParamsType",{enumerable:!0,get:function(){return _types.GetVisitorWarehouseAudienceParamsType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function(){return _requester.Header}}),Object.defineProperty(exports,"HeadersType",{enumerable:!0,get:function(){return _requester.HeadersType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return _requester.HttpMethod}}),Object.defineProperty(exports,"IExternalEventSource",{enumerable:!0,get:function(){return _eventSource.IExternalEventSource}}),Object.defineProperty(exports,"IExternalLogger",{enumerable:!0,get:function(){return _logging.IExternalLogger}}),Object.defineProperty(exports,"IExternalPRNG",{enumerable:!0,get:function(){return _utilities.IExternalPRNG}}),Object.defineProperty(exports,"IExternalRequester",{enumerable:!0,get:function(){return _requester.IExternalRequester}}),Object.defineProperty(exports,"IExternalStorage",{enumerable:!0,get:function(){return _storage.IExternalStorage}}),Object.defineProperty(exports,"IKameleoonCore",{enumerable:!0,get:function(){return _kameleoonClientInterface.IKameleoonClient}}),Object.defineProperty(exports,"IVisitorCodeManager",{enumerable:!0,get:function(){return _visitorCodeManager.IVisitorCodeManager}}),Object.defineProperty(exports,"InternalSDKConfigurationType",{enumerable:!0,get:function(){return _types.InternalSDKConfigurationType}}),Object.defineProperty(exports,"InternalsType",{enumerable:!0,get:function(){return _types.InternalsType}}),Object.defineProperty(exports,"IsFeatureFlagActiveParamsType",{enumerable:!0,get:function(){return _types.IsFeatureFlagActiveParamsType}}),Object.defineProperty(exports,"JSONType",{enumerable:!0,get:function(){return _clientConfiguration.JSONType}}),Object.defineProperty(exports,"JSONVariableType",{enumerable:!0,get:function(){return _types.JSONVariableType}}),Object.defineProperty(exports,"KameleoonCore",{enumerable:!0,get:function(){return _kameleoonClient.KameleoonClient}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function(){return _kameleoonData.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function(){return _kameleoonData.KameleoonDataType}}),Object.defineProperty(exports,"KameleoonError",{enumerable:!0,get:function(){return _kameleoonError.KameleoonError}}),Object.defineProperty(exports,"KameleoonException",{enumerable:!0,get:function(){return _kameleoonError.KameleoonException}}),Object.defineProperty(exports,"KameleoonLogger",{enumerable:!0,get:function(){return _logging.KameleoonLogger}}),Object.defineProperty(exports,"KameleoonResponseType",{enumerable:!0,get:function(){return _requester.KameleoonResponseType}}),Object.defineProperty(exports,"KameleoonStorageKey",{enumerable:!0,get:function(){return _storage.KameleoonStorageKey}}),Object.defineProperty(exports,"KameleoonUtils",{enumerable:!0,get:function(){return _kameleoonUtils.KameleoonUtils}}),Object.defineProperty(exports,"KameleoonVariableType",{enumerable:!0,get:function(){return _types.KameleoonVariableType}}),Object.defineProperty(exports,"KameleoonVariationType",{enumerable:!0,get:function(){return _types.KameleoonVariationType}}),Object.defineProperty(exports,"LogLevel",{enumerable:!0,get:function(){return _logging.LogLevel}}),Object.defineProperty(exports,"Milliseconds",{enumerable:!0,get:function(){return _types.Milliseconds}}),Object.defineProperty(exports,"NUMBER_OF_RETRIES",{enumerable:!0,get:function(){return _requester.NUMBER_OF_RETRIES}}),Object.defineProperty(exports,"NumberVariableType",{enumerable:!0,get:function(){return _types.NumberVariableType}}),Object.defineProperty(exports,"Ok",{enumerable:!0,get:function(){return _tsRes.Ok}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function(){return _kameleoonData.OperatingSystem}}),Object.defineProperty(exports,"OperatingSystemType",{enumerable:!0,get:function(){return _kameleoonData.OperatingSystemType}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function(){return _kameleoonData.PageView}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function(){return _kameleoonData.PageViewParametersType}}),Object.defineProperty(exports,"Parser",{enumerable:!0,get:function(){return _parser.Parser}}),Object.defineProperty(exports,"RemoteVisitorDataParamsType",{enumerable:!0,get:function(){return _types.RemoteVisitorDataParamsType}}),Object.defineProperty(exports,"RequestParametersType",{enumerable:!0,get:function(){return _requester.RequestParametersType}}),Object.defineProperty(exports,"RequestType",{enumerable:!0,get:function(){return _requester.RequestType}}),Object.defineProperty(exports,"Result",{enumerable:!0,get:function(){return _tsRes.Result}}),Object.defineProperty(exports,"RetryCountType",{enumerable:!0,get:function(){return _requester.RetryCountType}}),Object.defineProperty(exports,"SDKConfigurationType",{enumerable:!0,get:function(){return _types.SDKConfigurationType}}),Object.defineProperty(exports,"SDKCoreParameters",{enumerable:!0,get:function(){return _types.SDKCoreParameters}}),Object.defineProperty(exports,"SdkLanguageType",{enumerable:!0,get:function(){return _constants.SdkLanguageType}}),Object.defineProperty(exports,"SendRequestParametersType",{enumerable:!0,get:function(){return _requester.SendRequestParametersType}}),Object.defineProperty(exports,"SetDataCallbackParametersType",{enumerable:!0,get:function(){return _types.SetDataCallbackParametersType}}),Object.defineProperty(exports,"SetForcedVariationParametersType",{enumerable:!0,get:function(){return _types.SetForcedVariationParametersType}}),Object.defineProperty(exports,"SimulateRequestDataType",{enumerable:!0,get:function(){return _types.SimulateRequestDataType}}),Object.defineProperty(exports,"StorageDataType",{enumerable:!0,get:function(){return _storage.StorageDataType}}),Object.defineProperty(exports,"StringVariableType",{enumerable:!0,get:function(){return _types.StringVariableType}}),Object.defineProperty(exports,"TrackConversionParamsType",{enumerable:!0,get:function(){return _types.TrackConversionParamsType}}),Object.defineProperty(exports,"TrackingStatus",{enumerable:!0,get:function(){return _types.TrackingStatus}}),Object.defineProperty(exports,"UniqueIdentifier",{enumerable:!0,get:function(){return _kameleoonData.UniqueIdentifier}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function(){return _kameleoonData.UserAgent}}),Object.defineProperty(exports,"VISITOR_CODE_LENGTH",{enumerable:!0,get:function(){return _visitorCodeManager.VISITOR_CODE_LENGTH}}),Object.defineProperty(exports,"Validator",{enumerable:!0,get:function(){return _utilities.Validator}}),Object.defineProperty(exports,"VariableType",{enumerable:!0,get:function(){return _types.VariableType}}),Object.defineProperty(exports,"VariationType",{enumerable:!0,get:function(){return _types.VariationType}}),Object.defineProperty(exports,"VisitorCodeManager",{enumerable:!0,get:function(){return _visitorCodeManager.VisitorCodeManager}}),Object.defineProperty(exports,"VisitorDataFiltersType",{enumerable:!0,get:function(){return _utilities.VisitorDataFiltersType}});var _tsRes=require("ts-res"),_kameleoonClient=require("./kameleoonClient"),_kameleoonUtils=require("./kameleoonUtils"),_kameleoonClientInterface=require("./kameleoonClientInterface"),_kameleoonError=require("./kameleoonError"),_utilities=require("./utilities"),_storage=require("./storage"),_eventManager=require("./eventManager"),_visitorCodeManager=require("./visitorCodeManager"),_logging=require("./logging"),_parser=require("./utilities/parser"),_constants=require("./constants"),_clientConfiguration=require("./clientConfiguration"),_types=require("./types"),_kameleoonData=require("./kameleoonData"),_eventSource=require("./eventSource"),_requester=require("./requester");
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ApplicationVersion",{enumerable:!0,get:function(){return _kameleoonData.ApplicationVersion}}),Object.defineProperty(exports,"ApplicationVersionDataType",{enumerable:!0,get:function(){return _kameleoonData.ApplicationVersionDataType}}),Object.defineProperty(exports,"BooleanVariableType",{enumerable:!0,get:function(){return _types.BooleanVariableType}}),Object.defineProperty(exports,"Browser",{enumerable:!0,get:function(){return _kameleoonData.Browser}}),Object.defineProperty(exports,"BrowserType",{enumerable:!0,get:function(){return _kameleoonData.BrowserType}}),Object.defineProperty(exports,"ConfigurationDataType",{enumerable:!0,get:function(){return _clientConfiguration.ConfigurationDataType}}),Object.defineProperty(exports,"ConfigurationUpdateEventDataType",{enumerable:!0,get:function(){return _eventManager.ConfigurationUpdateEventDataType}}),Object.defineProperty(exports,"Conversion",{enumerable:!0,get:function(){return _kameleoonData.Conversion}}),Object.defineProperty(exports,"ConversionParametersType",{enumerable:!0,get:function(){return _kameleoonData.ConversionParametersType}}),Object.defineProperty(exports,"Cookie",{enumerable:!0,get:function(){return _kameleoonData.Cookie}}),Object.defineProperty(exports,"CookieType",{enumerable:!0,get:function(){return _kameleoonData.CookieType}}),Object.defineProperty(exports,"CustomData",{enumerable:!0,get:function(){return _kameleoonData.CustomData}}),Object.defineProperty(exports,"Device",{enumerable:!0,get:function(){return _kameleoonData.Device}}),Object.defineProperty(exports,"DeviceType",{enumerable:!0,get:function(){return _kameleoonData.DeviceType}}),Object.defineProperty(exports,"Environment",{enumerable:!0,get:function(){return _sdkInfoTypes.Environment}}),Object.defineProperty(exports,"Err",{enumerable:!0,get:function(){return _tsRes.Err}}),Object.defineProperty(exports,"EvaluationEventDataType",{enumerable:!0,get:function(){return _eventManager.EvaluationEventDataType}}),Object.defineProperty(exports,"EventCallbackType",{enumerable:!0,get:function(){return _eventManager.EventCallbackType}}),Object.defineProperty(exports,"EventDataType",{enumerable:!0,get:function(){return _eventManager.EventDataType}}),Object.defineProperty(exports,"EventSourceOpenParametersType",{enumerable:!0,get:function(){return _eventSource.EventSourceOpenParametersType}}),Object.defineProperty(exports,"EventType",{enumerable:!0,get:function(){return _eventManager.EventType}}),Object.defineProperty(exports,"ExternalPackageInfoType",{enumerable:!0,get:function(){return _sdkInfoTypes.ExternalPackageInfoType}}),Object.defineProperty(exports,"FeatureFlagType",{enumerable:!0,get:function(){return _types.FeatureFlagType}}),Object.defineProperty(exports,"FeatureFlagVariableType",{enumerable:!0,get:function(){return _types.FeatureFlagVariableType}}),Object.defineProperty(exports,"FeatureFlagVariationsType",{enumerable:!0,get:function(){return _storage.FeatureFlagVariationsType}}),Object.defineProperty(exports,"FeatureVariableResultType",{enumerable:!0,get:function(){return _types.FeatureVariableResultType}}),Object.defineProperty(exports,"GeolocationData",{enumerable:!0,get:function(){return _kameleoonData.GeolocationData}}),Object.defineProperty(exports,"GeolocationInfoType",{enumerable:!0,get:function(){return _kameleoonData.GeolocationInfoType}}),Object.defineProperty(exports,"GetFeatureFlagVariableParamsType",{enumerable:!0,get:function(){return _types.GetFeatureFlagVariableParamsType}}),Object.defineProperty(exports,"GetVariationParamsType",{enumerable:!0,get:function(){return _types.GetVariationParamsType}}),Object.defineProperty(exports,"GetVariationsParamsType",{enumerable:!0,get:function(){return _types.GetVariationsParamsType}}),Object.defineProperty(exports,"GetVisitorWarehouseAudienceParamsType",{enumerable:!0,get:function(){return _types.GetVisitorWarehouseAudienceParamsType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function(){return _requester.Header}}),Object.defineProperty(exports,"HeadersType",{enumerable:!0,get:function(){return _requester.HeadersType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return _requester.HttpMethod}}),Object.defineProperty(exports,"IExternalEventSource",{enumerable:!0,get:function(){return _eventSource.IExternalEventSource}}),Object.defineProperty(exports,"IExternalLogger",{enumerable:!0,get:function(){return _logging.IExternalLogger}}),Object.defineProperty(exports,"IExternalPRNG",{enumerable:!0,get:function(){return _utilities.IExternalPRNG}}),Object.defineProperty(exports,"IExternalRequester",{enumerable:!0,get:function(){return _requester.IExternalRequester}}),Object.defineProperty(exports,"IExternalStorage",{enumerable:!0,get:function(){return _storage.IExternalStorage}}),Object.defineProperty(exports,"IKameleoonCore",{enumerable:!0,get:function(){return _kameleoonClientInterface.IKameleoonClient}}),Object.defineProperty(exports,"IVisitorCodeManager",{enumerable:!0,get:function(){return _visitorCodeManager.IVisitorCodeManager}}),Object.defineProperty(exports,"InternalSDKConfigurationType",{enumerable:!0,get:function(){return _types.InternalSDKConfigurationType}}),Object.defineProperty(exports,"InternalsType",{enumerable:!0,get:function(){return _types.InternalsType}}),Object.defineProperty(exports,"IsFeatureFlagActiveParamsType",{enumerable:!0,get:function(){return _types.IsFeatureFlagActiveParamsType}}),Object.defineProperty(exports,"JSONType",{enumerable:!0,get:function(){return _clientConfiguration.JSONType}}),Object.defineProperty(exports,"JSONVariableType",{enumerable:!0,get:function(){return _types.JSONVariableType}}),Object.defineProperty(exports,"KameleoonCore",{enumerable:!0,get:function(){return _kameleoonClient.KameleoonClient}}),Object.defineProperty(exports,"KameleoonData",{enumerable:!0,get:function(){return _kameleoonData.KameleoonData}}),Object.defineProperty(exports,"KameleoonDataType",{enumerable:!0,get:function(){return _kameleoonData.KameleoonDataType}}),Object.defineProperty(exports,"KameleoonError",{enumerable:!0,get:function(){return _kameleoonError.KameleoonError}}),Object.defineProperty(exports,"KameleoonException",{enumerable:!0,get:function(){return _kameleoonError.KameleoonException}}),Object.defineProperty(exports,"KameleoonLogger",{enumerable:!0,get:function(){return _logging.KameleoonLogger}}),Object.defineProperty(exports,"KameleoonResponseType",{enumerable:!0,get:function(){return _requester.KameleoonResponseType}}),Object.defineProperty(exports,"KameleoonStorageKey",{enumerable:!0,get:function(){return _storage.KameleoonStorageKey}}),Object.defineProperty(exports,"KameleoonUtils",{enumerable:!0,get:function(){return _kameleoonUtils.KameleoonUtils}}),Object.defineProperty(exports,"KameleoonVariableType",{enumerable:!0,get:function(){return _types.KameleoonVariableType}}),Object.defineProperty(exports,"KameleoonVariationType",{enumerable:!0,get:function(){return _types.KameleoonVariationType}}),Object.defineProperty(exports,"LogLevel",{enumerable:!0,get:function(){return _logging.LogLevel}}),Object.defineProperty(exports,"Milliseconds",{enumerable:!0,get:function(){return _types.Milliseconds}}),Object.defineProperty(exports,"NUMBER_OF_RETRIES",{enumerable:!0,get:function(){return _requester.NUMBER_OF_RETRIES}}),Object.defineProperty(exports,"NumberVariableType",{enumerable:!0,get:function(){return _types.NumberVariableType}}),Object.defineProperty(exports,"Ok",{enumerable:!0,get:function(){return _tsRes.Ok}}),Object.defineProperty(exports,"OperatingSystem",{enumerable:!0,get:function(){return _kameleoonData.OperatingSystem}}),Object.defineProperty(exports,"OperatingSystemType",{enumerable:!0,get:function(){return _kameleoonData.OperatingSystemType}}),Object.defineProperty(exports,"PageView",{enumerable:!0,get:function(){return _kameleoonData.PageView}}),Object.defineProperty(exports,"PageViewParametersType",{enumerable:!0,get:function(){return _kameleoonData.PageViewParametersType}}),Object.defineProperty(exports,"Parser",{enumerable:!0,get:function(){return _parser.Parser}}),Object.defineProperty(exports,"RemoteVisitorDataParamsType",{enumerable:!0,get:function(){return _types.RemoteVisitorDataParamsType}}),Object.defineProperty(exports,"RequestParametersType",{enumerable:!0,get:function(){return _requester.RequestParametersType}}),Object.defineProperty(exports,"RequestType",{enumerable:!0,get:function(){return _requester.RequestType}}),Object.defineProperty(exports,"Result",{enumerable:!0,get:function(){return _tsRes.Result}}),Object.defineProperty(exports,"RetryCountType",{enumerable:!0,get:function(){return _requester.RetryCountType}}),Object.defineProperty(exports,"SDKConfigurationType",{enumerable:!0,get:function(){return _types.SDKConfigurationType}}),Object.defineProperty(exports,"SDKCoreParameters",{enumerable:!0,get:function(){return _types.SDKCoreParameters}}),Object.defineProperty(exports,"SdkLanguageType",{enumerable:!0,get:function(){return _constants.SdkLanguageType}}),Object.defineProperty(exports,"SendRequestParametersType",{enumerable:!0,get:function(){return _requester.SendRequestParametersType}}),Object.defineProperty(exports,"SetDataCallbackParametersType",{enumerable:!0,get:function(){return _types.SetDataCallbackParametersType}}),Object.defineProperty(exports,"SetForcedVariationParametersType",{enumerable:!0,get:function(){return _types.SetForcedVariationParametersType}}),Object.defineProperty(exports,"SimulateRequestDataType",{enumerable:!0,get:function(){return _types.SimulateRequestDataType}}),Object.defineProperty(exports,"StorageDataType",{enumerable:!0,get:function(){return _storage.StorageDataType}}),Object.defineProperty(exports,"StringVariableType",{enumerable:!0,get:function(){return _types.StringVariableType}}),Object.defineProperty(exports,"TrackConversionParamsType",{enumerable:!0,get:function(){return _types.TrackConversionParamsType}}),Object.defineProperty(exports,"TrackingStatus",{enumerable:!0,get:function(){return _types.TrackingStatus}}),Object.defineProperty(exports,"UniqueIdentifier",{enumerable:!0,get:function(){return _kameleoonData.UniqueIdentifier}}),Object.defineProperty(exports,"UserAgent",{enumerable:!0,get:function(){return _kameleoonData.UserAgent}}),Object.defineProperty(exports,"VISITOR_CODE_LENGTH",{enumerable:!0,get:function(){return _visitorCodeManager.VISITOR_CODE_LENGTH}}),Object.defineProperty(exports,"Validator",{enumerable:!0,get:function(){return _utilities.Validator}}),Object.defineProperty(exports,"VariableType",{enumerable:!0,get:function(){return _types.VariableType}}),Object.defineProperty(exports,"VariationType",{enumerable:!0,get:function(){return _types.VariationType}}),Object.defineProperty(exports,"VisitorCodeManager",{enumerable:!0,get:function(){return _visitorCodeManager.VisitorCodeManager}}),Object.defineProperty(exports,"VisitorDataFiltersType",{enumerable:!0,get:function(){return _utilities.VisitorDataFiltersType}});var _tsRes=require("ts-res"),_kameleoonClient=require("./kameleoonClient"),_kameleoonUtils=require("./kameleoonUtils"),_kameleoonClientInterface=require("./kameleoonClientInterface"),_kameleoonError=require("./kameleoonError"),_utilities=require("./utilities"),_storage=require("./storage"),_eventManager=require("./eventManager"),_visitorCodeManager=require("./visitorCodeManager"),_logging=require("./logging"),_parser=require("./utilities/parser"),_constants=require("./constants"),_clientConfiguration=require("./clientConfiguration"),_types=require("./types"),_sdkInfoTypes=require("./sdkInfoTypes"),_kameleoonData=require("./kameleoonData"),_eventSource=require("./eventSource"),_requester=require("./requester");
|
|
@@ -22,10 +22,11 @@ export declare class KameleoonClient implements IKameleoonClient {
|
|
|
22
22
|
private eventManager;
|
|
23
23
|
private tracker;
|
|
24
24
|
private environment;
|
|
25
|
+
protected readonly stubMode?: boolean;
|
|
25
26
|
/**
|
|
26
27
|
* @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core
|
|
27
28
|
*/
|
|
28
|
-
constructor({ siteCode, dependencies, configuration, internalConfiguration, }: SDKCoreParameters);
|
|
29
|
+
constructor({ siteCode, dependencies, configuration, internalConfiguration, stubMode }: SDKCoreParameters);
|
|
29
30
|
initialize(): Promise<boolean>;
|
|
30
31
|
addData(visitorCode: string, ...data: KameleoonDataType[]): void;
|
|
31
32
|
getRemoteVisitorData({ visitorCode, shouldAddData, filters, }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]>;
|
|
@@ -54,6 +55,7 @@ export declare class KameleoonClient implements IKameleoonClient {
|
|
|
54
55
|
private _getFeatureVariables;
|
|
55
56
|
private _getActiveFeatureVariations;
|
|
56
57
|
private _evaluate;
|
|
58
|
+
private _isFFUnrestrictedByMEGroup;
|
|
57
59
|
private _getFeatureVariation;
|
|
58
60
|
private _isVisitorNotInHoldout;
|
|
59
61
|
private _setForcedVariation;
|
package/dist/kameleoonClient.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_clientConfiguration=require("./clientConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_types=require("./types"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager"),_eventManager=require("./eventManager"),_tracking=require("./tracking"),_logging=require("./logging"),_hasher=require("./hasher");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 KameleoonClient{constructor(a){var b;let{siteCode:c,dependencies:d,configuration:e,internalConfiguration:f}=a;_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"clientConfiguration",void 0),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"consentDataStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalPackageInfo",void 0),_defineProperty(this,"initialized",!1),_defineProperty(this,"visitorCodeManager",void 0),_defineProperty(this,"eventManager",void 0),_defineProperty(this,"tracker",void 0),_defineProperty(this,"environment",void 0);const g=null===f||void 0===f?void 0:f.externals.externalLogger;g&&_logging.KameleoonLogger.setLogger(g),_logging.KameleoonLogger.debug`CALL: new KameleoonClient(siteCode: ${c}, dependencies: ${d}, configuration: ${e})`;const{settings:h}=new _clientSettings.ClientSettings(c,e);this.environment=h.environment;const{externalStorage:i,externalEventSource:j,externalPackageInfo:k,externalVisitorCodeManager:l,externalRequester:m,externalPRNG:n}=f.externals,{useAbortController:o}=f.settings,p=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),q=new _storage.DataStorage(i,_storage.KameleoonStorageKey.ClientData),r=new _storage.DataStorage(i,_storage.KameleoonStorageKey.TargetingData),s=new _storage.DataStorage(i,_storage.KameleoonStorageKey.DataInfo),t=new _storage.DataStorage(i,_storage.KameleoonStorageKey.VariationData),u=new _storage.DataStorage(i,_storage.KameleoonStorageKey.ForcedExperimentVariation),v=new _storage.DataStorage(i,_storage.KameleoonStorageKey.ForcedFeatureVariation),w=new _storage.DataStorage(i,_storage.KameleoonStorageKey.ConsentData),x=new _storage.DataStorage(i,_storage.KameleoonStorageKey.TrackingData),y=new _kameleoonData.DataManager({dataStorage:r,infoStorage:s,cleanupInterval:h.cleanupInterval,packageInfo:k}),z=null!==(b=null===d||void 0===d?void 0:d.urlProvider)&&void 0!==b?b:new _requester.UrlProvider;z.initialize({domain:h.networkDomain,siteCode:h.siteCode,packageInfo:k,environment:h.environment});const A=new _requester.Requester({urlProvider:z,useAbortController:o,packageInfo:k,externalRequester:m,requestTimeout:h.requestTimeout,trackRetryDelay:h.trackRetryDelay}),B=new _eventSource.KameleoonEventSource({siteCode:h.siteCode,externalEventSource:j,urlProvider:z}),C=new _eventManager.EventManager,D=new _clientConfiguration.ClientConfiguration({urlProvider:z,storage:q,updateInterval:h.updateInterval,dataManager:y,eventManager:C,requester:A,eventSource:B,externalVisitorCodeManager:l}),E=new _variationConfiguration.VariationConfiguration(t,u,v,l,D),F=new _tracking.Tracker({dataManager:y,trackingStorage:x,variationConfiguration:E,requester:A,trackingInterval:h.trackingInterval,prng:n});this.tracker=F,this.variationConfiguration=E,this.requester=A,this.trackingCache=p,this.dataManager=y,this.clientConfiguration=D,this.externalPackageInfo=k,this.consentDataStorage=w,this.visitorCodeManager=l,this.eventManager=C,null!==h.cleanupInterval&&new _storage.StorageCleanupManager(i,h.cleanupInterval),_logging.KameleoonLogger.debug`RETURN: new KameleoonClient(siteCode: ${c}, dependencies: ${d}, configuration: ${e})`}async initialize(){_logging.KameleoonLogger.info("CALL: KameleoonClient.initialize()");const a=await this.clientConfiguration.initialize();return a.throw(),this.initialized=!0,_logging.KameleoonLogger.info`RETURN: KameleoonClient.initialize() -> (result: ${a.ok})`,a.ok}addData(a){for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];if(_logging.KameleoonLogger.info`CALL: KameleoonClient.addData(visitorCode: ${a}, data: ${c})`,this.visitorCodeManager.validateVisitorCode(a).throw(),!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.dataManager.storeData(a,...c).throw(),_logging.KameleoonLogger.info`RETURN: KameleoonClient.addData(visitorCode: ${a}, data: ${c})`}async getRemoteVisitorData(a){let{visitorCode:b,shouldAddData:c=!0,filters:d=_constants.DEFAULT_VISITOR_DATA_FILTERS}=a;if(_logging.KameleoonLogger.info`CALL: KameleoonClient.getRemoteVisitorData(visitorCode: ${b}, shouldAddData: ${c}, filters: ${d})`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.visitorCodeManager.validateVisitorCode(b).throw();const{previousVisitAmount:e}=d;if("number"==typeof e&&(1>e||25<e))throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitAmount);const f=this.dataManager.isUniqueIdentifier(b),g=await this.requester.getVisitorData({visitorCode:b,filters:d,isMappingIdentifier:f}),h=g.throw(),{visitorData:i,storageVisitorData:j,visitsData:k,mappingIdentifier:l}=_utilities.Parser.parseVisitorData({data:h,filters:d,visitorCode:b,dataManager:this.dataManager,variationConfiguration:this.variationConfiguration});for(const d of j)(c||this.dataManager.isPersistentCustomData(d))&&this.addData(b,d);return k&&c&&this.addData(b,k),null!==d&&void 0!==d&&d.visitorCode&&l&&this.dataManager.setMappingIdentifier(b,l),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getRemoteVisitorData(visitorCode: ${b}, shouldAddData: ${c}, filters: ${d}) -> (visitorData: ${i})`,i}trackConversion(a){let{visitorCode:b,goalId:c,revenue:d}=a;_logging.KameleoonLogger.info`CALL: KameleoonClient.trackConversion(visitorCode: ${b}, goalId: ${c}, revenue: ${d})`,this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b),_logging.KameleoonLogger.info`RETURN: KameleoonClient.trackConversion(visitorCode: ${b}, goalId: ${c}, revenue: ${d})`}flush(a){if(_logging.KameleoonLogger.info`CALL: KameleoonClient.flush(visitorCode: ${a})`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a)return this.visitorCodeManager.validateVisitorCode(a).throw(),this.tracker.scheduleVisitor(a,this._isConsentProvided(a)),void _logging.KameleoonLogger.info`RETURN: KameleoonClient.flush(visitorCode: ${a})`;for(const b of this.dataManager.unsentDataVisitors)this.tracker.scheduleVisitor(b,this._isConsentProvided(b));_logging.KameleoonLogger.info`RETURN: KameleoonClient.flush(visitorCode: ${a})`}getFeatureFlags(){if(_logging.KameleoonLogger.info("CALL: KameleoonClient.getFeatureFlags()"),!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const a=this.clientConfiguration.featureFlags,b=[];return a.forEach(a=>{let{id:c,featureKey:d}=a;b.push({id:c,key:d})}),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getFeatureFlags() -> (FeatureFlags: ${b})`,b}getVisitorFeatureFlags(a){if(_logging.KameleoonLogger.info`CALL: KameleoonClient.getVisitorFeatureFlags(visitorCode: ${a})`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.visitorCodeManager.validateVisitorCode(a).throw();const b=this._getActiveFeatureVariations(a),c=[];return b.forEach(a=>{let{featureFlagId:b,featureKey:d}=a;c.push({id:b,key:d})}),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getVisitorFeatureFlags(visitorCode: ${a}) -> (FeatureFlags: ${c})`,c}getVariation(a){let{visitorCode:b,featureKey:c,track:d=!0}=a;_logging.KameleoonLogger.info`CALL: KameleoonClient.getVariation(visitorCode: ${b}, featureKey: ${c}, track: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw();const e=this._getFeatureVariation({visitorCode:b,featureKey:c,track:d}).throw();return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getVariation(visitorCode: ${b}, featureKey: ${c}, track: ${d}) -> (variation: ${e})`,e}getVariations(a){let{visitorCode:b,onlyActive:c=!1,track:d=!0}=a;_logging.KameleoonLogger.info`CALL: KameleoonClient.getVariations(visitorCode: ${b}, onlyActive: ${c}, track: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw();const e=new Map,f=this.clientConfiguration.featureFlags;for(const g of f.values()){const a=this._getFeatureVariation({visitorCode:b,featureKey:g.featureKey,track:d});a.ok&&(!c||a.data.key!==_constants.OFF_VARIATION_KEY)&&e.set(g.featureKey,a.data)}return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getVariations(visitorCode: ${b}, onlyActive: ${c}, track: ${d}) -> (variations: ${e})`,e}getActiveFeatureFlags(a){if(_logging.KameleoonLogger.info`CALL: KameleoonClient.getActiveFeatureFlags(visitorCode: ${a})`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.visitorCodeManager.validateVisitorCode(a).throw();const b=this._getActiveFeatureVariations(a),c=new Map;return b.forEach(b=>{const{variationKey:d,featureKey:e,variationId:f,experimentId:g}=b;let h=[];null!==f&&null!==g&&(h=this._getFeatureVariables({visitorCode:a,featureKey:e,variationKey:d}));const i=h.map(a=>_utilities.Parser.parseFeatureVariable(a).throw());c.set(b.featureKey,{key:d,id:f,experimentId:g,variables:i})}),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getActiveFeatureFlags(visitorCode: ${a}) -> (FeatureFlags: ${c})`,c}getFeatureFlagVariationKey(a,b){_logging.KameleoonLogger.info`CALL: KameleoonClient.getFeatureFlagVariationKey(visitorCode: ${a}, featureKey: ${b})`,this.visitorCodeManager.validateVisitorCode(a).throw();const{key:c}=this._getFeatureVariation({visitorCode:a,featureKey:b,track:!0}).throw();return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getFeatureFlagVariationKey(visitorCode: ${a}, featureKey: ${b}) -> (variationKey: ${c})`,c}getFeatureFlagVariable(a){let{visitorCode:b,featureKey:c,variableKey:d}=a;_logging.KameleoonLogger.info`CALL: KameleoonClient.getFeatureFlagVariable(visitorCode: ${b}, featureKey: ${c}, variableKey: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw();const{key:e}=this._getFeatureVariation({visitorCode:b,featureKey:c,track:!0}).throw(),f=this._getFeatureVariables({visitorCode:b,featureKey:c,variationKey:e}),g=f.find(a=>a.key===d);if(!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariableNotFound,d,b);const{type:h,value:i}=_utilities.Parser.parseFeatureVariable(g).throw(),j={type:h,value:i};return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getFeatureFlagVariable(visitorCode: ${b}, featureKey: ${c}, variableKey: ${d}) -> (FeatureFlagVariable: ${j})`,j}getFeatureFlagVariables(a,b){_logging.KameleoonLogger.info`CALL: KameleoonClient.getFeatureFlagVariables(visitorCode: ${a}, featureKey: ${b})`,this.visitorCodeManager.validateVisitorCode(a).throw();const{key:c}=this._getFeatureVariation({visitorCode:a,featureKey:b,track:!0}).throw(),d=this._getFeatureVariables({visitorCode:a,featureKey:b,variationKey:c}),e=[];for(const c of d){const a=_utilities.Parser.parseFeatureVariable(c).throw();e.push(a)}return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getFeatureFlagVariables(visitorCode: ${a}, featureKey: ${b}) -> (FeatureFlagVariables: ${e})`,e}isFeatureFlagActive(a,b){let[c,d,e]=["","",!0];"string"==typeof a?(_logging.KameleoonLogger.info`CALL: KameleoonClient.isFeatureFlagActive(visitorCode: ${c}, featureKey: ${d})`,c=a,d=b):(_logging.KameleoonLogger.info`CALL: KameleoonClient.isFeatureFlagActive(visitorCode: ${c}, featureKey: ${d}, track ${e})`,[c,d]=[a.visitorCode,a.featureKey],a.track!==void 0&&(e=a.track)),this.visitorCodeManager.validateVisitorCode(c).throw();try{const{key:a}=this._getFeatureVariation({visitorCode:c,featureKey:d,track:e}).throw(),b=a!==_constants.OFF_VARIATION_KEY;return _logging.KameleoonLogger.info`RETURN: KameleoonClient.isFeatureFlagActive(visitorCode: ${c}, featureKey: ${d}, track: ${e}) -> (isActive: ${b})`,b}catch(a){if(a instanceof _kameleoonError.KameleoonError&&a.type===_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled)return _logging.KameleoonLogger.info`RETURN: KameleoonClient.isFeatureFlagActive(visitorCode: ${c}, featureKey: ${d}, track: ${e}) -> (isActive: false)`,!1;throw a}}async getRemoteData(a){_logging.KameleoonLogger.info`CALL: KameleoonClient.getRemoteData(key: ${a})`;const b=await this.requester.getRemoteData(a);return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getRemoteData(key: ${a}) -> (remoteData: ${b})`,b.throw()}async getVisitorWarehouseAudience(a){let{visitorCode:b,customDataIndex:c,warehouseKey:d}=a;_logging.KameleoonLogger.info`CALL: KameleoonClient.getVisitorWarehouseAudience(visitorCode: ${b}, customDataIndex: ${c}, warehouseKey: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw();const e=await this.getRemoteData(d||b);if(!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData,`No data found for ${d||b} key`);if(!e[_constants.WAREHOUSE_AUDIENCE_KEY]||0===Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]).length)return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getVisitorWarehouseAudience(visitorCode: ${b}, customDataIndex: ${c}, warehouseKey: ${d}) -> (customData: null)`,null;const f=new _kameleoonData.CustomData(c,...Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]));return this.dataManager.storeData(b,f),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getVisitorWarehouseAudience(visitorCode: ${b}, customDataIndex: ${c}, warehouseKey: ${d}) -> (customData: ${f})`,f}onEvent(a,b){if(_logging.KameleoonLogger.info`CALL: KameleoonClient.onEvent(event: ${a}, callback)`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.eventManager.addEventHandler(a,b),_logging.KameleoonLogger.info`RETURN: KameleoonClient.onEvent(event: ${a}, callback)`}getEngineTrackingCode(a){_logging.KameleoonLogger.info`CALL: KameleoonClient.getEngineTrackingCode(visitorCode: ${a})`,this.visitorCodeManager.validateVisitorCode(a).throw();const b=_utilities.Utilities.getTrackingCode(this.trackingCache,a);return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getEngineTrackingCode(visitorCode: ${a}) -> (trackingCode: ${b})`,b}isInitialized(){return _logging.KameleoonLogger.debug`CALL/RETURN: KameleoonClient.isInitialized() -> (initialized: ${this.initialized})`,this.initialized}setLogLevel(a){_logging.KameleoonLogger.setLogLevel(a)}setForcedVariation(a){let{visitorCode:b,experimentId:c,variationKey:d,forceTargeting:e=!0}=a;_logging.KameleoonLogger.info`CALL: KameleoonClient.setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e})`,this.visitorCodeManager.validateVisitorCode(b).throw(),this._setForcedVariation({visitorCode:b,experimentId:c,variationKey:d,forceTargeting:e}).throw(),_logging.KameleoonLogger.info`RETURN: KameleoonClient.setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e})`}setUserConsent(a){let{visitorCode:b,consent:c,setData:d}=a;_logging.KameleoonLogger.info`CALL: KameleoonClient.setUserConsent(visitorCode: ${b}, consent: ${c}, setData: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw(),this.updateConsentData(b,c),c?d({visitorCode:b,key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.DEFAULT_MAX_AGE,path:_visitorCodeManager.PATH}):this.visitorCodeManager.consentRequired&&d({visitorCode:"",key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.ZERO_MAX_AGE,path:_visitorCodeManager.PATH}),_logging.KameleoonLogger.info`RETURN: KameleoonClient.setUserConsent(visitorCode: ${b}, consent: ${c}, setData: ${d})`}updateConsentData(a,b){const c=this.consentDataStorage.read();if(!c.ok)return void(c.error.type===_kameleoonError.KameleoonException.StorageEmpty&&this.consentDataStorage.write({[a]:{consent:b}}));const d=c.data;d[a]={consent:b},this.consentDataStorage.write(d)}_isConsentProvided(a){_logging.KameleoonLogger.debug`CALL: KameleoonClient._isConsentProvided(visitorCode: ${a})`;const{isConsentRequired:b}=this.clientConfiguration,c=this.consentDataStorage.read();let d=!1;if(!b)d=!0;else if(c.ok){const b=c.data[a];d="boolean"==typeof b?b:b&&b.consent}return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._isConsentProvided(visitorCode: ${a}) -> (isConsentProvided: ${d})`,d}_getFeatureVariables(a){let{visitorCode:b,featureKey:c,variationKey:d}=a;_logging.KameleoonLogger.debug`CALL: KameleoonClient._getFeatureVariables(visitorCode: ${b}, featureKey: ${c}, variationKey: ${d})`;const e=this.clientConfiguration.featureFlags,f=e.get(c);if(!f)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,c);const g=f.variations.find(a=>a.key===d);if(!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariationNotFound,d,b);return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._getFeatureVariables(visitorCode: ${b}, featureKey: ${c}, variationKey: ${d}) -> (variables: ${g.variables})`,g.variables}_getActiveFeatureVariations(a){_logging.KameleoonLogger.debug`CALL: KameleoonClient._getActiveFeatureVariations(visitorCode: ${a})`;const b=this.clientConfiguration.featureFlags,c=[];for(const d of b.values()){if(!d.environmentEnabled)continue;const b=this._evaluate({visitorCode:a,featureFlag:d,track:!1,save:!1});b.variationKey!==_constants.OFF_VARIATION_KEY&&c.push({variationKey:b.variationKey,variationId:b.variationId,experimentId:b.experimentId,featureFlagId:d.id,featureKey:d.featureKey,rule:null,isTargetedRule:b.ruleType===_clientConfiguration.RuleType.TARGETED_DELIVERY})}return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._getActiveFeatureVariations(visitorCode: ${a}) -> (activeVariations: ${c})`,c}_evaluate(a){let{visitorCode:b,featureFlag:c,track:d,save:e}=a;_logging.KameleoonLogger.debug`CALL: KameleoonClient._evaluate(visitorCode: ${b}, featureFlag: ${c}, track: ${d}, save: ${e})`;let f,g=null;const h=this.variationConfiguration.getForcedFeatureVariation(b,c.featureKey);if(h.ok&&(g=h.data),g)f=KameleoonClient.EvaluatedExperiment.fromForcedFeatureVariation(c.defaultVariationKey,g);else if(this._isVisitorNotInHoldout(b,d,e)){const a=this.dataManager.getVisitorData(b),g=this.dataManager.getVisitorIdentifier(b),h=this.variationConfiguration.getVariation({visitorCode:b,visitorIdentifier:g,featureFlag:c,track:d,withAssignment:e,targetingData:a,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();f=KameleoonClient.EvaluatedExperiment.fromVariationData(h)}else f=KameleoonClient.EvaluatedExperiment.fromDefaultVariationKey(c.defaultVariationKey);return e&&!f.isSimulated&&null!==f.experimentId&&null!==f.variationId&&this.variationConfiguration.updateStoredVariations(b,{[f.experimentId]:{variationId:f.variationId,isTargetedRule:f.ruleType===_clientConfiguration.RuleType.TARGETED_DELIVERY,status:d?_types.TrackingStatus.Unsent:_types.TrackingStatus.Sent}}),this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:c.featureKey,variation:{key:f.variationKey,experimentId:f.experimentId,id:f.variationId}}),_logging.KameleoonLogger.debug`RETURN: KameleoonClient._evaluate(visitorCode: ${b}, featureFlag: ${c}, track: ${d}, save: ${e}) -> (evalExp: ${f})`,f}_getFeatureVariation(a){let{visitorCode:b,featureKey:c,track:d}=a;if(_logging.KameleoonLogger.debug`CALL: KameleoonClient._getFeatureVariation(visitorCode: ${b}, featureKey: ${c}, track: ${d})`,!this.initialized)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));const e=this.clientConfiguration.featureFlags,f=e.get(c);if(!f)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,c));if(!f.environmentEnabled)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled,f.featureKey,this.environment));const g=this._evaluate({visitorCode:b,featureFlag:f,track:d,save:!0}),{experimentId:h,variationId:i,variationKey:j,isSimulated:k}=g;let l=new Map,m=!1;try{const a=this._getFeatureVariables({visitorCode:b,featureKey:c,variationKey:j});a.forEach(a=>{m||a.type!==_types.VariableType.JS&&a.type!==_types.VariableType.CSS||(m=!0);const b=_utilities.Parser.parseFeatureVariable(a).throw();l.set(a.key,b)})}catch(_){}h&&"number"==typeof i&&!k&&_utilities.Utilities.updateCache({cacheManager:this.trackingCache,hasJsCssVariables:m,visitorCode:b,experimentId:h,variationId:i}),d&&!k&&this.tracker.scheduleVisitor(b,this._isConsentProvided(b));const n={key:j,id:i,experimentId:h,variables:l};return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._getFeatureVariation(visitorCode: ${b}, featureKey: ${c}, track: ${d}) -> (variation: ${n})`,(0,_tsRes.Ok)(n)}_isVisitorNotInHoldout(a,b,c){_logging.KameleoonLogger.debug`CALL: KameleoonClient._isVisitorNotInHoldout(visitorCode: ${a}, track: ${b}, save: ${c})`;let d=!0;const e=this.clientConfiguration.holdout;if(e){const f=this.dataManager.getVisitorIdentifier(a),g=_hasher.Hasher.getHashDouble({visitorIdentifier:f,respoolTime:null,id:e.experimentId+""});_logging.KameleoonLogger.debug`Calculated holdoutHash: ${g} for visitorCode: ${f}`;let h=_utilities.Utilities.getVariationByHash(e.variationByExposition,g);null!==h&&(d=h.variationKey!==_constants.IN_HOLDOUT_VARIATION_KEY,c&&this.variationConfiguration.updateStoredVariations(a,{[e.experimentId]:{variationId:h.variationId,isTargetedRule:!1,status:b?_types.TrackingStatus.Unsent:_types.TrackingStatus.Sent}}))}return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._isVisitorNotInHoldout(visitorCode: ${a}, track: ${b}, save: ${c}) -> (isNotInHoldout: ${d})`,d}_setForcedVariation(a){let{visitorCode:b,experimentId:c,variationKey:d,forceTargeting:e=!0}=a;if(_logging.KameleoonLogger.debug`CALL: KameleoonClient._setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e})`,null===d){const a=this.variationConfiguration.updateForcedExperimentVariation(b,c,null);return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e}) -> (writeResult: ${a})`,a}let f=null,g=null;if(f=this.clientConfiguration.experimentMap.get(c),!f)return _logging.KameleoonLogger.error`Experiment with id ${c} not found for visitor ${b}`,(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagExperimentNotFound,c,b));if(g=f.variations.get(d),void 0===g)return _logging.KameleoonLogger.error`Variation with key ${d} not found in experiment ${f} for visitor ${b}`,(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariationNotFound,d,b));f={type:f.type,experimentId:c},g={variationKey:d,variationId:g};const h=this.variationConfiguration.updateForcedExperimentVariation(b,c,{rule:f,varByExp:g,forceTargeting:e});return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e}) -> (writeResult: ${h})`,h}}exports.KameleoonClient=KameleoonClient,_defineProperty(KameleoonClient,"EvaluatedExperiment",class{static fromForcedFeatureVariation(a,b){var c,d,e;let f=a;return b.varByExp?f=b.varByExp.variationKey:b.rule&&b.rule.type===_clientConfiguration.RuleType.EXPERIMENTATION&&(f=_constants.OFF_VARIATION_KEY),{variationKey:f,variationId:(null===(c=b.varByExp)||void 0===c?void 0:c.variationId)||null,experimentId:(null===(d=b.rule)||void 0===d?void 0:d.experimentId)||null,ruleType:(null===(e=b.rule)||void 0===e?void 0:e.type)||null,isSimulated:b.simulated}}static fromVariationData(a){var b,c;return{variationKey:a.variationKey,variationId:a.variationId,experimentId:a.experimentId,ruleType:null!==(b=null===(c=a.rule)||void 0===c?void 0:c.type)&&void 0!==b?b:null,isSimulated:!1}}static fromDefaultVariationKey(a){return{variationKey:a,variationId:null,experimentId:null,ruleType:null,isSimulated:!1}}});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_clientConfiguration=require("./clientConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_types=require("./types"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager"),_eventManager=require("./eventManager"),_tracking=require("./tracking"),_logging=require("./logging"),_hasher=require("./hasher");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 KameleoonClient{constructor(a){var b;let{siteCode:c,dependencies:d,configuration:e,internalConfiguration:f,stubMode:g}=a;if(_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"clientConfiguration",void 0),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"consentDataStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalPackageInfo",void 0),_defineProperty(this,"initialized",!1),_defineProperty(this,"visitorCodeManager",void 0),_defineProperty(this,"eventManager",void 0),_defineProperty(this,"tracker",void 0),_defineProperty(this,"environment",void 0),_defineProperty(this,"stubMode",void 0),this.stubMode=g,g)return this.variationConfiguration={},this.clientConfiguration={},this.dataManager={},this.consentDataStorage={},this.trackingCache={},this.requester={},this.externalPackageInfo={},this.visitorCodeManager={},this.eventManager={},this.tracker={},void(this.environment="");const h=null===f||void 0===f?void 0:f.externals.externalLogger;h&&_logging.KameleoonLogger.setLogger(h),_logging.KameleoonLogger.debug`CALL: new KameleoonClient(siteCode: ${c}, dependencies: ${d}, configuration: ${e})`;const{settings:i}=new _clientSettings.ClientSettings(c,e);this.environment=i.environment;const{externalStorage:j,externalEventSource:k,externalPackageInfo:l,externalVisitorCodeManager:m,externalRequester:n,externalPRNG:o}=f.externals,{useAbortController:p}=f.settings,q=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),r=new _storage.DataStorage(j,_storage.KameleoonStorageKey.ClientData),s=new _storage.DataStorage(j,_storage.KameleoonStorageKey.TargetingData),t=new _storage.DataStorage(j,_storage.KameleoonStorageKey.DataInfo),u=new _storage.DataStorage(j,_storage.KameleoonStorageKey.VariationData),v=new _storage.DataStorage(j,_storage.KameleoonStorageKey.ForcedExperimentVariation),w=new _storage.DataStorage(j,_storage.KameleoonStorageKey.ForcedFeatureVariation),x=new _storage.DataStorage(j,_storage.KameleoonStorageKey.ConsentData),y=new _storage.DataStorage(j,_storage.KameleoonStorageKey.TrackingData),z=new _kameleoonData.DataManager({dataStorage:s,infoStorage:t,cleanupInterval:i.cleanupInterval,packageInfo:l}),A=null!==(b=null===d||void 0===d?void 0:d.urlProvider)&&void 0!==b?b:new _requester.UrlProvider;A.initialize({domain:i.networkDomain,siteCode:i.siteCode,packageInfo:l,environment:i.environment});const B=new _requester.Requester({urlProvider:A,useAbortController:p,packageInfo:l,externalRequester:n,requestTimeout:i.requestTimeout,trackRetryDelay:i.trackRetryDelay}),C=new _eventSource.KameleoonEventSource({siteCode:i.siteCode,externalEventSource:k,urlProvider:A}),D=new _eventManager.EventManager,E=new _clientConfiguration.ClientConfiguration({urlProvider:A,storage:r,updateInterval:i.updateInterval,dataManager:z,eventManager:D,requester:B,eventSource:C,externalVisitorCodeManager:m}),F=new _variationConfiguration.VariationConfiguration(u,v,w,m,E),G=new _tracking.Tracker({dataManager:z,trackingStorage:y,variationConfiguration:F,requester:B,trackingInterval:i.trackingInterval,prng:o});this.tracker=G,this.variationConfiguration=F,this.requester=B,this.trackingCache=q,this.dataManager=z,this.clientConfiguration=E,this.externalPackageInfo=l,this.consentDataStorage=x,this.visitorCodeManager=m,this.eventManager=D,null!==i.cleanupInterval&&new _storage.StorageCleanupManager(j,i.cleanupInterval),_logging.KameleoonLogger.debug`RETURN: new KameleoonClient(siteCode: ${c}, dependencies: ${d}, configuration: ${e})`}async initialize(){if(this.stubMode)return!1;_logging.KameleoonLogger.info("CALL: KameleoonClient.initialize()");const a=await this.clientConfiguration.initialize();return a.throw(),this.initialized=!0,_logging.KameleoonLogger.info`RETURN: KameleoonClient.initialize() -> (result: ${a.ok})`,a.ok}addData(a){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];if(_logging.KameleoonLogger.info`CALL: KameleoonClient.addData(visitorCode: ${a}, data: ${c})`,this.visitorCodeManager.validateVisitorCode(a).throw(),!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.dataManager.storeData(a,...c).throw(),_logging.KameleoonLogger.info`RETURN: KameleoonClient.addData(visitorCode: ${a}, data: ${c})`}async getRemoteVisitorData(a){let{visitorCode:b,shouldAddData:c=!0,filters:d=_constants.DEFAULT_VISITOR_DATA_FILTERS}=a;if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if(_logging.KameleoonLogger.info`CALL: KameleoonClient.getRemoteVisitorData(visitorCode: ${b}, shouldAddData: ${c}, filters: ${d})`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.visitorCodeManager.validateVisitorCode(b).throw();const{previousVisitAmount:e}=d;if("number"==typeof e&&(1>e||25<e))throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitAmount);const f=this.dataManager.isUniqueIdentifier(b),g=await this.requester.getVisitorData({visitorCode:b,filters:d,isMappingIdentifier:f}),h=g.throw(),{visitorData:i,storageVisitorData:j,visitsData:k,mappingIdentifier:l}=_utilities.Parser.parseVisitorData({data:h,filters:d,visitorCode:b,dataManager:this.dataManager,variationConfiguration:this.variationConfiguration});for(const d of j)(c||this.dataManager.isPersistentCustomData(d))&&this.addData(b,d);return k&&c&&this.addData(b,k),null!==d&&void 0!==d&&d.visitorCode&&l&&this.dataManager.setMappingIdentifier(b,l),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getRemoteVisitorData(visitorCode: ${b}, shouldAddData: ${c}, filters: ${d}) -> (visitorData: ${i})`,i}trackConversion(a){let{visitorCode:b,goalId:c,revenue:d}=a;this.stubMode||(_logging.KameleoonLogger.info`CALL: KameleoonClient.trackConversion(visitorCode: ${b}, goalId: ${c}, revenue: ${d})`,this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b),_logging.KameleoonLogger.info`RETURN: KameleoonClient.trackConversion(visitorCode: ${b}, goalId: ${c}, revenue: ${d})`)}flush(a){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if(_logging.KameleoonLogger.info`CALL: KameleoonClient.flush(visitorCode: ${a})`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a)return this.visitorCodeManager.validateVisitorCode(a).throw(),this.tracker.scheduleVisitor(a,this._isConsentProvided(a)),void _logging.KameleoonLogger.info`RETURN: KameleoonClient.flush(visitorCode: ${a})`;for(const b of this.dataManager.unsentDataVisitors)this.tracker.scheduleVisitor(b,this._isConsentProvided(b));_logging.KameleoonLogger.info`RETURN: KameleoonClient.flush(visitorCode: ${a})`}getFeatureFlags(){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if(_logging.KameleoonLogger.info("CALL: KameleoonClient.getFeatureFlags()"),!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const a=this.clientConfiguration.featureFlags,b=[];return a.forEach(a=>{let{id:c,featureKey:d}=a;b.push({id:c,key:d})}),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getFeatureFlags() -> (FeatureFlags: ${b})`,b}getVisitorFeatureFlags(a){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if(_logging.KameleoonLogger.info`CALL: KameleoonClient.getVisitorFeatureFlags(visitorCode: ${a})`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.visitorCodeManager.validateVisitorCode(a).throw();const b=this._getActiveFeatureVariations(a),c=[];return b.forEach(a=>{let{featureFlagId:b,featureKey:d}=a;c.push({id:b,key:d})}),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getVisitorFeatureFlags(visitorCode: ${a}) -> (FeatureFlags: ${c})`,c}getVariation(a){let{visitorCode:b,featureKey:c,track:d=!0}=a;if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_logging.KameleoonLogger.info`CALL: KameleoonClient.getVariation(visitorCode: ${b}, featureKey: ${c}, track: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw();const e=this._getFeatureVariation({visitorCode:b,featureKey:c,track:d}).throw();return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getVariation(visitorCode: ${b}, featureKey: ${c}, track: ${d}) -> (variation: ${e})`,e}getVariations(a){let{visitorCode:b,onlyActive:c=!1,track:d=!0}=a;if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_logging.KameleoonLogger.info`CALL: KameleoonClient.getVariations(visitorCode: ${b}, onlyActive: ${c}, track: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw();const e=new Map,f=this.clientConfiguration.featureFlags;for(const g of f.values()){const a=this._getFeatureVariation({visitorCode:b,featureKey:g.featureKey,track:d});a.ok&&(!c||a.data.key!==_constants.OFF_VARIATION_KEY)&&e.set(g.featureKey,a.data)}return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getVariations(visitorCode: ${b}, onlyActive: ${c}, track: ${d}) -> (variations: ${e})`,e}getActiveFeatureFlags(a){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if(_logging.KameleoonLogger.info`CALL: KameleoonClient.getActiveFeatureFlags(visitorCode: ${a})`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.visitorCodeManager.validateVisitorCode(a).throw();const b=this._getActiveFeatureVariations(a),c=new Map;return b.forEach(b=>{const{variationKey:d,featureKey:e,variationId:f,experimentId:g}=b;let h=[];null!==f&&null!==g&&(h=this._getFeatureVariables({visitorCode:a,featureKey:e,variationKey:d}));const i=h.map(a=>_utilities.Parser.parseFeatureVariable(a).throw());c.set(b.featureKey,{key:d,id:f,experimentId:g,variables:i})}),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getActiveFeatureFlags(visitorCode: ${a}) -> (FeatureFlags: ${c})`,c}getFeatureFlagVariationKey(a,b){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_logging.KameleoonLogger.info`CALL: KameleoonClient.getFeatureFlagVariationKey(visitorCode: ${a}, featureKey: ${b})`,this.visitorCodeManager.validateVisitorCode(a).throw();const{key:c}=this._getFeatureVariation({visitorCode:a,featureKey:b,track:!0}).throw();return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getFeatureFlagVariationKey(visitorCode: ${a}, featureKey: ${b}) -> (variationKey: ${c})`,c}getFeatureFlagVariable(a){let{visitorCode:b,featureKey:c,variableKey:d}=a;if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_logging.KameleoonLogger.info`CALL: KameleoonClient.getFeatureFlagVariable(visitorCode: ${b}, featureKey: ${c}, variableKey: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw();const{key:e}=this._getFeatureVariation({visitorCode:b,featureKey:c,track:!0}).throw(),f=this._getFeatureVariables({visitorCode:b,featureKey:c,variationKey:e}),g=f.find(a=>a.key===d);if(!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariableNotFound,d,b);const{type:h,value:i}=_utilities.Parser.parseFeatureVariable(g).throw(),j={type:h,value:i};return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getFeatureFlagVariable(visitorCode: ${b}, featureKey: ${c}, variableKey: ${d}) -> (FeatureFlagVariable: ${j})`,j}getFeatureFlagVariables(a,b){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_logging.KameleoonLogger.info`CALL: KameleoonClient.getFeatureFlagVariables(visitorCode: ${a}, featureKey: ${b})`,this.visitorCodeManager.validateVisitorCode(a).throw();const{key:c}=this._getFeatureVariation({visitorCode:a,featureKey:b,track:!0}).throw(),d=this._getFeatureVariables({visitorCode:a,featureKey:b,variationKey:c}),e=[];for(const c of d){const a=_utilities.Parser.parseFeatureVariable(c).throw();e.push(a)}return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getFeatureFlagVariables(visitorCode: ${a}, featureKey: ${b}) -> (FeatureFlagVariables: ${e})`,e}isFeatureFlagActive(a,b){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);let[c,d,e]=["","",!0];"string"==typeof a?(_logging.KameleoonLogger.info`CALL: KameleoonClient.isFeatureFlagActive(visitorCode: ${c}, featureKey: ${d})`,c=a,d=b):(_logging.KameleoonLogger.info`CALL: KameleoonClient.isFeatureFlagActive(visitorCode: ${c}, featureKey: ${d}, track ${e})`,[c,d]=[a.visitorCode,a.featureKey],a.track!==void 0&&(e=a.track)),this.visitorCodeManager.validateVisitorCode(c).throw();try{const{key:a}=this._getFeatureVariation({visitorCode:c,featureKey:d,track:e}).throw(),b=a!==_constants.OFF_VARIATION_KEY;return _logging.KameleoonLogger.info`RETURN: KameleoonClient.isFeatureFlagActive(visitorCode: ${c}, featureKey: ${d}, track: ${e}) -> (isActive: ${b})`,b}catch(a){if(a instanceof _kameleoonError.KameleoonError&&a.type===_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled)return _logging.KameleoonLogger.info`RETURN: KameleoonClient.isFeatureFlagActive(visitorCode: ${c}, featureKey: ${d}, track: ${e}) -> (isActive: false)`,!1;throw a}}async getRemoteData(a){if(this.stubMode)return null;_logging.KameleoonLogger.info`CALL: KameleoonClient.getRemoteData(key: ${a})`;const b=await this.requester.getRemoteData(a);return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getRemoteData(key: ${a}) -> (remoteData: ${b})`,b.throw()}async getVisitorWarehouseAudience(a){let{visitorCode:b,customDataIndex:c,warehouseKey:d}=a;if(this.stubMode)return null;_logging.KameleoonLogger.info`CALL: KameleoonClient.getVisitorWarehouseAudience(visitorCode: ${b}, customDataIndex: ${c}, warehouseKey: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw();const e=await this.getRemoteData(d||b);if(!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData,`No data found for ${d||b} key`);if(!e[_constants.WAREHOUSE_AUDIENCE_KEY]||0===Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]).length)return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getVisitorWarehouseAudience(visitorCode: ${b}, customDataIndex: ${c}, warehouseKey: ${d}) -> (customData: null)`,null;const f=new _kameleoonData.CustomData(c,...Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]));return this.dataManager.storeData(b,f),_logging.KameleoonLogger.info`RETURN: KameleoonClient.getVisitorWarehouseAudience(visitorCode: ${b}, customDataIndex: ${c}, warehouseKey: ${d}) -> (customData: ${f})`,f}onEvent(a,b){if(this.stubMode)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if(_logging.KameleoonLogger.info`CALL: KameleoonClient.onEvent(event: ${a}, callback)`,!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.eventManager.addEventHandler(a,b),_logging.KameleoonLogger.info`RETURN: KameleoonClient.onEvent(event: ${a}, callback)`}getEngineTrackingCode(a){if(this.stubMode)return"";_logging.KameleoonLogger.info`CALL: KameleoonClient.getEngineTrackingCode(visitorCode: ${a})`,this.visitorCodeManager.validateVisitorCode(a).throw();const b=_utilities.Utilities.getTrackingCode(this.trackingCache,a);return _logging.KameleoonLogger.info`RETURN: KameleoonClient.getEngineTrackingCode(visitorCode: ${a}) -> (trackingCode: ${b})`,b}isInitialized(){return _logging.KameleoonLogger.debug`CALL/RETURN: KameleoonClient.isInitialized() -> (initialized: ${this.initialized})`,this.initialized}setLogLevel(a){_logging.KameleoonLogger.setLogLevel(a)}setForcedVariation(a){let{visitorCode:b,experimentId:c,variationKey:d,forceTargeting:e=!0}=a;this.stubMode||(_logging.KameleoonLogger.info`CALL: KameleoonClient.setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e})`,this.visitorCodeManager.validateVisitorCode(b).throw(),this._setForcedVariation({visitorCode:b,experimentId:c,variationKey:d,forceTargeting:e}).throw(),_logging.KameleoonLogger.info`RETURN: KameleoonClient.setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e})`)}setUserConsent(a){let{visitorCode:b,consent:c,setData:d}=a;this.stubMode||(_logging.KameleoonLogger.info`CALL: KameleoonClient.setUserConsent(visitorCode: ${b}, consent: ${c}, setData: ${d})`,this.visitorCodeManager.validateVisitorCode(b).throw(),this.updateConsentData(b,c),c?d({visitorCode:b,key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.DEFAULT_MAX_AGE,path:_visitorCodeManager.PATH}):this.visitorCodeManager.consentRequired&&d({visitorCode:"",key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.ZERO_MAX_AGE,path:_visitorCodeManager.PATH}),_logging.KameleoonLogger.info`RETURN: KameleoonClient.setUserConsent(visitorCode: ${b}, consent: ${c}, setData: ${d})`)}updateConsentData(a,b){const c=this.consentDataStorage.read();if(!c.ok)return void(c.error.type===_kameleoonError.KameleoonException.StorageEmpty&&this.consentDataStorage.write({[a]:{consent:b}}));const d=c.data;d[a]={consent:b},this.consentDataStorage.write(d)}_isConsentProvided(a){_logging.KameleoonLogger.debug`CALL: KameleoonClient._isConsentProvided(visitorCode: ${a})`;const{isConsentRequired:b}=this.clientConfiguration,c=this.consentDataStorage.read();let d=!1;if(!b)d=!0;else if(c.ok){const b=c.data[a];d="boolean"==typeof b?b:b&&b.consent}return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._isConsentProvided(visitorCode: ${a}) -> (isConsentProvided: ${d})`,d}_getFeatureVariables(a){let{visitorCode:b,featureKey:c,variationKey:d}=a;_logging.KameleoonLogger.debug`CALL: KameleoonClient._getFeatureVariables(visitorCode: ${b}, featureKey: ${c}, variationKey: ${d})`;const e=this.clientConfiguration.featureFlags,f=e.get(c);if(!f)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,c);const g=f.variations.find(a=>a.key===d);if(!g)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariationNotFound,d,b);return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._getFeatureVariables(visitorCode: ${b}, featureKey: ${c}, variationKey: ${d}) -> (variables: ${g.variables})`,g.variables}_getActiveFeatureVariations(a){_logging.KameleoonLogger.debug`CALL: KameleoonClient._getActiveFeatureVariations(visitorCode: ${a})`;const b=this.clientConfiguration.featureFlags,c=[];for(const d of b.values()){if(!d.environmentEnabled)continue;const b=this._evaluate({visitorCode:a,featureFlag:d,track:!1,save:!1});b.variationKey!==_constants.OFF_VARIATION_KEY&&c.push({variationKey:b.variationKey,variationId:b.variationId,experimentId:b.experimentId,featureFlagId:d.id,featureKey:d.featureKey,rule:null,isTargetedRule:b.ruleType===_clientConfiguration.RuleType.TARGETED_DELIVERY})}return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._getActiveFeatureVariations(visitorCode: ${a}) -> (activeVariations: ${c})`,c}_evaluate(a){let{visitorCode:b,featureFlag:c,track:d,save:e}=a;_logging.KameleoonLogger.debug`CALL: KameleoonClient._evaluate(visitorCode: ${b}, featureFlag: ${c}, track: ${d}, save: ${e})`;let f,g=null;const h=this.variationConfiguration.getForcedFeatureVariation(b,c.featureKey);if(h.ok&&(g=h.data),g)f=KameleoonClient.EvaluatedExperiment.fromForcedFeatureVariation(c.defaultVariationKey,g);else if(this._isVisitorNotInHoldout(b,d,e)&&this._isFFUnrestrictedByMEGroup(b,c)){const a=this.dataManager.getVisitorData(b),g=this.dataManager.getVisitorIdentifier(b),h=this.variationConfiguration.getVariation({visitorCode:b,visitorIdentifier:g,featureFlag:c,track:d,withAssignment:e,targetingData:a,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();f=KameleoonClient.EvaluatedExperiment.fromVariationData(h)}else f=KameleoonClient.EvaluatedExperiment.fromDefaultVariationKey(c.defaultVariationKey);return e&&!f.isSimulated&&null!==f.experimentId&&null!==f.variationId&&this.variationConfiguration.updateStoredVariations(b,{[f.experimentId]:{variationId:f.variationId,isTargetedRule:f.ruleType===_clientConfiguration.RuleType.TARGETED_DELIVERY,status:d?_types.TrackingStatus.Unsent:_types.TrackingStatus.Sent}}),this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:c.featureKey,variation:{key:f.variationKey,experimentId:f.experimentId,id:f.variationId}}),_logging.KameleoonLogger.debug`RETURN: KameleoonClient._evaluate(visitorCode: ${b}, featureFlag: ${c}, track: ${d}, save: ${e}) -> (evalExp: ${f})`,f}_isFFUnrestrictedByMEGroup(a,b){const c=b.mutuallyExclusiveGroup;if(!c)return!0;_logging.KameleoonLogger.debug`CALL: KameleoonClient._isFFUnrestrictedByMEGroup(visitorCode: ${a}, featureFlag: ${b})`;let d=!0;const e=this.clientConfiguration.meGroups.get(c);if(e){const f=this.dataManager.getVisitorIdentifier(a),g=_hasher.Hasher.getHashDoubleForMEGroup(f,c);_logging.KameleoonLogger.debug`Calculated meGroup hash ${g} for code: '${f}', meGroup: '${c}'`,d=e.getFeatureFlagByHash(g)===b}return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._isFFUnrestrictedByMEGroup(visitorCode: '${a}', featureFlag: ${b}) -> (selected: ${d})`,d}_getFeatureVariation(a){let{visitorCode:b,featureKey:c,track:d}=a;if(_logging.KameleoonLogger.debug`CALL: KameleoonClient._getFeatureVariation(visitorCode: ${b}, featureKey: ${c}, track: ${d})`,!this.initialized)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));const e=this.clientConfiguration.featureFlags,f=e.get(c);if(!f)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,c));if(!f.environmentEnabled)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled,f.featureKey,this.environment));const g=this._evaluate({visitorCode:b,featureFlag:f,track:d,save:!0}),{experimentId:h,variationId:i,variationKey:j,isSimulated:k}=g;let l=new Map,m=!1;try{const a=this._getFeatureVariables({visitorCode:b,featureKey:c,variationKey:j});a.forEach(a=>{m||a.type!==_types.VariableType.JS&&a.type!==_types.VariableType.CSS||(m=!0);const b=_utilities.Parser.parseFeatureVariable(a).throw();l.set(a.key,b)})}catch(_){}h&&"number"==typeof i&&!k&&_utilities.Utilities.updateCache({cacheManager:this.trackingCache,hasJsCssVariables:m,visitorCode:b,experimentId:h,variationId:i}),d&&!k&&this.tracker.scheduleVisitor(b,this._isConsentProvided(b));const n={key:j,id:i,experimentId:h,variables:l};return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._getFeatureVariation(visitorCode: ${b}, featureKey: ${c}, track: ${d}) -> (variation: ${n})`,(0,_tsRes.Ok)(n)}_isVisitorNotInHoldout(a,b,c){const d=this.clientConfiguration.holdout;if(!d)return!0;_logging.KameleoonLogger.debug`CALL: KameleoonClient._isVisitorNotInHoldout(visitorCode: ${a}, track: ${b}, save: ${c})`;let e=!0;const f=this.dataManager.getVisitorIdentifier(a),g=_hasher.Hasher.getHashDouble({visitorIdentifier:f,respoolTime:null,id:d.experimentId+""});_logging.KameleoonLogger.debug`Calculated holdoutHash: ${g} for visitorCode: ${f}`;let h=_utilities.Utilities.getVariationByHash(d.variationByExposition,g);return null!==h&&(e=h.variationKey!==_constants.IN_HOLDOUT_VARIATION_KEY,c&&this.variationConfiguration.updateStoredVariations(a,{[d.experimentId]:{variationId:h.variationId,isTargetedRule:!1,status:b?_types.TrackingStatus.Unsent:_types.TrackingStatus.Sent}})),_logging.KameleoonLogger.debug`RETURN: KameleoonClient._isVisitorNotInHoldout(visitorCode: ${a}, track: ${b}, save: ${c}) -> (isNotInHoldout: ${e})`,e}_setForcedVariation(a){let{visitorCode:b,experimentId:c,variationKey:d,forceTargeting:e=!0}=a;if(_logging.KameleoonLogger.debug`CALL: KameleoonClient._setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e})`,null===d){const a=this.variationConfiguration.updateForcedExperimentVariation(b,c,null);return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e}) -> (writeResult: ${a})`,a}let f=null,g=null;if(f=this.clientConfiguration.experimentMap.get(c),!f)return _logging.KameleoonLogger.error`Experiment with id ${c} not found for visitor ${b}`,(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagExperimentNotFound,c,b));if(g=f.variations.get(d),void 0===g)return _logging.KameleoonLogger.error`Variation with key ${d} not found in experiment ${f} for visitor ${b}`,(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariationNotFound,d,b));f={type:f.type,experimentId:c},g={variationKey:d,variationId:g};const h=this.variationConfiguration.updateForcedExperimentVariation(b,c,{rule:f,varByExp:g,forceTargeting:e});return _logging.KameleoonLogger.debug`RETURN: KameleoonClient._setForcedVariation(visitorCode: '${b}', experimentId: ${c}, variationKey: '${d}', forceTargeting: ${e}) -> (writeResult: ${h})`,h}}exports.KameleoonClient=KameleoonClient,_defineProperty(KameleoonClient,"EvaluatedExperiment",class{static fromForcedFeatureVariation(a,b){var c,d,e;let f=a;return b.varByExp?f=b.varByExp.variationKey:b.rule&&b.rule.type===_clientConfiguration.RuleType.EXPERIMENTATION&&(f=_constants.OFF_VARIATION_KEY),{variationKey:f,variationId:(null===(c=b.varByExp)||void 0===c?void 0:c.variationId)||null,experimentId:(null===(d=b.rule)||void 0===d?void 0:d.experimentId)||null,ruleType:(null===(e=b.rule)||void 0===e?void 0:e.type)||null,isSimulated:b.simulated}}static fromVariationData(a){var b,c;return{variationKey:a.variationKey,variationId:a.variationId,experimentId:a.experimentId,ruleType:null!==(b=null===(c=a.rule)||void 0===c?void 0:c.type)&&void 0!==b?b:null,isSimulated:!1}}static fromDefaultVariationKey(a){return{variationKey:a,variationId:null,experimentId:null,ruleType:null,isSimulated:!1}}});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TargetingDataType } from '../targeting';
|
|
2
2
|
import { DereferenceTargetingDataResultType, MutAddUnsentDataType, MutUpdateDataParametersType, ReferenceParametersType } from './types';
|
|
3
3
|
import { DataInfoType } from '../storage';
|
|
4
|
-
import { ExternalPackageInfoType } from '../
|
|
4
|
+
import { ExternalPackageInfoType } from '../sdkInfoTypes';
|
|
5
5
|
interface IDataProcessor {
|
|
6
6
|
mutUpdateData({ visitorCode, mutData, dataItem, }: MutUpdateDataParametersType): number;
|
|
7
7
|
mutCleanupData(mutData: TargetingDataType, infoData: DataInfoType): number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataProcessor=void 0;var _utilities=require("../utilities"),_types=require("./types");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 DataProcessor{constructor(){let a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:null,b=1<arguments.length?arguments[1]:void 0;_defineProperty(this,"cleanupInterval",void 0),_defineProperty(this,"packageInfo",void 0),this.cleanupInterval=a,this.packageInfo=b}mutUpdateData(a){let{infoData:b,visitorCode:c,mutData:d,dataItem:e}=a,{visitorReference:f,data:g,isReference:h}=this.dereferenceData(d,c);this.packageInfo.isServer&&h&&!d[f]&&(b.mappingIdentifiers&&delete b.mappingIdentifiers[c],delete d[c],f=c);const i=this.cleanupInterval?Date.now()+this.cleanupInterval:0;switch(e.data.type){case _types.KameleoonData.CustomData:{this.updateCustomData({expirationTime:i,customData:e,visitorCode:f,mutData:g});break}case _types.KameleoonData.PageView:{this.updatePageView({expirationTime:i,pageView:e,visitorCode:f,mutData:g});break}case _types.KameleoonData.Conversion:{this.updateConversion({expirationTime:i,conversion:e,visitorCode:f,mutData:g});break}case _types.KameleoonData.VisitsData:{this.updateVisitsData({expirationTime:i,visitsData:e,visitorCode:f,mutData:g});break}case _types.KameleoonData.Personalization:{this.updatePersonalization({expirationTime:i,personalization:e,visitorCode:f,mutData:g});break}default:this.updateCommonData({expirationTime:i,commonData:e,visitorCode:f,mutData:g})}return i}mutCleanupData(a,b){if(!this.cleanupInterval)return null;let c=0;for(const[e,f]of Object.entries(a)){if("string"==typeof f){this.removeReference({mutData:a,visitorCode:e,linkedVisitor:f,infoData:b});continue}let g=0;for(const a of Object.keys(f)){const b=a;let c;switch(b){case _types.KameleoonData.CustomData:case _types.KameleoonData.PageView:case _types.KameleoonData.Conversion:case _types.KameleoonData.Personalization:{c=this.deleteNestedExpiredField(f,b);break}default:c=this.deleteExpiredField(f,b)}(!g||c&&c<g)&&(g=c)}if(!!Object.keys(a[e]).length)(!c||g&&g<c)&&(c=g);else if(delete a[e],this.packageInfo.isServer){var d;null!==(d=b.mappingIdentifiers)&&void 0!==d?d:b.mappingIdentifiers={},delete b.mappingIdentifiers[e]}}return c}mutAddUnsentData(a){let{mutData:b,visitorCode:c,dataType:d}=a;const e=b.unsentData[c];if(!e||!e.length)b.unsentData[c]=[d];else{const a=new Set([...e]);a.add(d),b.unsentData[c]=Array.from(a)}}createReference(a){let{mutData:b,visitorCode:c,linkedVisitor:d}=a;b[d]=c}removeReference(a){let{mutData:b,visitorCode:c,linkedVisitor:d,infoData:e}=a;this.packageInfo.isServer&&!b[d]&&(delete b[c],e.mappingIdentifiers&&delete e.mappingIdentifiers[c])}updatePageView(a){let{visitorCode:b,mutData:c,pageView:d,expirationTime:e}=a;const{data:f}=d,g=c[b]&&_types.KameleoonData.PageView in c[b]&&f.urlAddress in c[b][_types.KameleoonData.PageView],h={expirationTime:e,visitorCode:b,data:c,key:_types.KameleoonData.PageView,nestedKey:f.urlAddress,value:f};if(g){const a=c[b][_types.KameleoonData.PageView][f.urlAddress],d=a.timestamps;for(const a of d){const{time:b}=a;if(f.timestamps.some(a=>{let{time:c}=a;return c===b}))continue;const c=f.timestamps.findIndex(a=>{let{time:c}=a;return c>=b});-1===c?f.timestamps.push(a):f.timestamps.splice(c,0,a)}this.updateNestedField(h)}else this.createNestedField(h)}updateCustomData(a){let{visitorCode:b,customData:c,mutData:d,expirationTime:e}=a;const{data:f}=c,g=d[b]&&_types.KameleoonData.CustomData in d[b],h={expirationTime:e,visitorCode:b,data:d,key:_types.KameleoonData.CustomData,nestedKey:f.index.toString(),value:f};g?this.updateNestedField(h):this.createNestedField(h)}updateConversion(a){let{conversion:b,mutData:c,visitorCode:d,expirationTime:e}=a;const{data:f}=b,g=c[d]&&_types.KameleoonData.Conversion in c[d],h={expirationTime:e,visitorCode:d,data:c,key:_types.KameleoonData.Conversion,nestedKey:f.id.toString(),value:f};g?this.updateNestedField(h):this.createNestedField(h)}updateVisitsData(a){let{visitorCode:b,mutData:c,visitsData:d,expirationTime:e}=a;const{data:f}=d,g=c[b]&&_types.KameleoonData.VisitsData in c[b],h={expirationTime:e,data:c,key:_types.KameleoonData.VisitsData,value:f,visitorCode:b};if(g){const a=c[b][_types.KameleoonData.VisitsData];a.visits.forEach(a=>{
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataProcessor=void 0;var _utilities=require("../utilities"),_listUtilities=require("../utilities/listUtilities"),_types=require("./types");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 DataProcessor{constructor(){let a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:null,b=1<arguments.length?arguments[1]:void 0;_defineProperty(this,"cleanupInterval",void 0),_defineProperty(this,"packageInfo",void 0),this.cleanupInterval=a,this.packageInfo=b}mutUpdateData(a){let{infoData:b,visitorCode:c,mutData:d,dataItem:e}=a,{visitorReference:f,data:g,isReference:h}=this.dereferenceData(d,c);this.packageInfo.isServer&&h&&!d[f]&&(b.mappingIdentifiers&&delete b.mappingIdentifiers[c],delete d[c],f=c);const i=this.cleanupInterval?Date.now()+this.cleanupInterval:0;switch(e.data.type){case _types.KameleoonData.CustomData:{this.updateCustomData({expirationTime:i,customData:e,visitorCode:f,mutData:g});break}case _types.KameleoonData.PageView:{this.updatePageView({expirationTime:i,pageView:e,visitorCode:f,mutData:g});break}case _types.KameleoonData.Conversion:{this.updateConversion({expirationTime:i,conversion:e,visitorCode:f,mutData:g});break}case _types.KameleoonData.VisitsData:{this.updateVisitsData({expirationTime:i,visitsData:e,visitorCode:f,mutData:g});break}case _types.KameleoonData.Personalization:{this.updatePersonalization({expirationTime:i,personalization:e,visitorCode:f,mutData:g});break}default:this.updateCommonData({expirationTime:i,commonData:e,visitorCode:f,mutData:g})}return i}mutCleanupData(a,b){if(!this.cleanupInterval)return null;let c=0;for(const[e,f]of Object.entries(a)){if("string"==typeof f){this.removeReference({mutData:a,visitorCode:e,linkedVisitor:f,infoData:b});continue}let g=0;for(const a of Object.keys(f)){const b=a;let c;switch(b){case _types.KameleoonData.CustomData:case _types.KameleoonData.PageView:case _types.KameleoonData.Conversion:case _types.KameleoonData.Personalization:{c=this.deleteNestedExpiredField(f,b);break}default:c=this.deleteExpiredField(f,b)}(!g||c&&c<g)&&(g=c)}if(!!Object.keys(a[e]).length)(!c||g&&g<c)&&(c=g);else if(delete a[e],this.packageInfo.isServer){var d;null!==(d=b.mappingIdentifiers)&&void 0!==d?d:b.mappingIdentifiers={},delete b.mappingIdentifiers[e]}}return c}mutAddUnsentData(a){let{mutData:b,visitorCode:c,dataType:d}=a;const e=b.unsentData[c];if(!e||!e.length)b.unsentData[c]=[d];else{const a=new Set([...e]);a.add(d),b.unsentData[c]=Array.from(a)}}createReference(a){let{mutData:b,visitorCode:c,linkedVisitor:d}=a;b[d]=c}removeReference(a){let{mutData:b,visitorCode:c,linkedVisitor:d,infoData:e}=a;this.packageInfo.isServer&&!b[d]&&(delete b[c],e.mappingIdentifiers&&delete e.mappingIdentifiers[c])}updatePageView(a){let{visitorCode:b,mutData:c,pageView:d,expirationTime:e}=a;const{data:f}=d,g=c[b]&&_types.KameleoonData.PageView in c[b]&&f.urlAddress in c[b][_types.KameleoonData.PageView],h={expirationTime:e,visitorCode:b,data:c,key:_types.KameleoonData.PageView,nestedKey:f.urlAddress,value:f};if(g){const a=c[b][_types.KameleoonData.PageView][f.urlAddress],d=a.timestamps;for(const a of d){const{time:b}=a;if(f.timestamps.some(a=>{let{time:c}=a;return c===b}))continue;const c=f.timestamps.findIndex(a=>{let{time:c}=a;return c>=b});-1===c?f.timestamps.push(a):f.timestamps.splice(c,0,a)}this.updateNestedField(h)}else this.createNestedField(h)}updateCustomData(a){let{visitorCode:b,customData:c,mutData:d,expirationTime:e}=a;const{data:f}=c,g=d[b]&&_types.KameleoonData.CustomData in d[b],h={expirationTime:e,visitorCode:b,data:d,key:_types.KameleoonData.CustomData,nestedKey:f.index.toString(),value:f};g?this.updateNestedField(h):this.createNestedField(h)}updateConversion(a){let{conversion:b,mutData:c,visitorCode:d,expirationTime:e}=a;const{data:f}=b,g=c[d]&&_types.KameleoonData.Conversion in c[d],h={expirationTime:e,visitorCode:d,data:c,key:_types.KameleoonData.Conversion,nestedKey:f.id.toString(),value:f};g?this.updateNestedField(h):this.createNestedField(h)}updateVisitsData(a){let{visitorCode:b,mutData:c,visitsData:d,expirationTime:e}=a;const{data:f}=d,g=c[b]&&_types.KameleoonData.VisitsData in c[b],h={expirationTime:e,data:c,key:_types.KameleoonData.VisitsData,value:f,visitorCode:b};if(g){const a=c[b][_types.KameleoonData.VisitsData];a.visits.forEach(a=>{_listUtilities.ListUtilities.insertInOrderedListMutably({list:f.visits,element:a,order:_utilities.Order.Ascending})}),this.updateField(_objectSpread(_objectSpread({},h),{},{value:_objectSpread(_objectSpread({},f),{},{visits:f.visits})}))}else this.createField(h)}updatePersonalization(a){let{visitorCode:b,mutData:c,personalization:d,expirationTime:e}=a;const{data:f}=d,g=c[b]&&_types.KameleoonData.Personalization in c[b],h={expirationTime:e,visitorCode:b,data:c,key:_types.KameleoonData.Personalization,nestedKey:f.id.toString(),value:f};g?this.updateNestedField(h):this.createNestedField(h)}updateCommonData(a){let{visitorCode:b,mutData:c,commonData:d,expirationTime:e}=a;const{data:f}=d,g=c[b]&&f.type in c[b],h={expirationTime:e,data:c,key:f.type,visitorCode:b,value:f};g?this.updateField(h):this.createField(h)}dereferenceData(a,b){return"string"==typeof a[b]?{visitorReference:a[b],data:a,isReference:!0}:{visitorReference:b,data:a,isReference:!1}}deleteExpiredField(a,b){if(!a)return 0;const c=b,d=a[c].expirationTime<Date.now();return d?(delete a[c],0):a[c].expirationTime}deleteNestedExpiredField(a,b){if(!a[b])return 0;const c=a[b];let d;for(const[e,f]of Object.entries(c)){if(!f)continue;const a=f.expirationTime<Date.now();a?delete c[e]:(!d||f.expirationTime<d)&&(d=f.expirationTime)}return Object.keys(c).length||delete a[b],d}updateField(a){let{key:b,value:c,data:d,visitorCode:e,expirationTime:f}=a;d[e][b]=_objectSpread(_objectSpread({},c),{},{expirationTime:f})}createField(a){let{key:b,value:c,data:d,visitorCode:e,expirationTime:f}=a;d[e]=_objectSpread(_objectSpread({},d[e]),{},{[b]:_objectSpread(_objectSpread({},c),{},{expirationTime:f})})}updateNestedField(a){let{key:b,nestedKey:c,value:d,data:e,visitorCode:f,expirationTime:g}=a;e[f][b][c]=_objectSpread(_objectSpread({},d),{},{expirationTime:g})}createNestedField(a){var b;let{key:c,nestedKey:d,value:e,data:f,visitorCode:g,expirationTime:h}=a;f[g]=null!==(b=f[g])&&void 0!==b&&b[c]?_objectSpread(_objectSpread({},f[g]),{},{[c]:_objectSpread(_objectSpread({},f[g][c]),{},{[d]:_objectSpread(_objectSpread({},e),{},{expirationTime:h})})}):_objectSpread(_objectSpread({},f[g]),{},{[c]:{[d]:_objectSpread(_objectSpread({},e),{},{expirationTime:h})}})}}exports.DataProcessor=DataProcessor;
|
|
@@ -2,7 +2,8 @@ import { DereferencedTargetingDataType, TargetingDataType, VisitorReference } fr
|
|
|
2
2
|
import { DataInfoType, FeatureFlagVariationsType, IStorage } from '../storage';
|
|
3
3
|
import { Browser, Conversion, Cookie, CustomData, Device, GeolocationData, OperatingSystem, PageView, UserAgent, ApplicationVersion, VisitsData, KameleoonConversionScore, DataManager, UniqueIdentifier } from '../kameleoonData';
|
|
4
4
|
import { VisitorDataFiltersType } from '../utilities';
|
|
5
|
-
import {
|
|
5
|
+
import { TrackingStatus } from '../types';
|
|
6
|
+
import { ExternalPackageInfoType } from '../sdkInfoTypes';
|
|
6
7
|
import { Personalization } from '../kameleoonData/personalization';
|
|
7
8
|
export type FieldParametersType = {
|
|
8
9
|
expirationTime: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitsData=void 0;var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitsData=void 0;var _listUtilities=require("../utilities/listUtilities"),_types=require("../utilities/types"),_types2=require("./types"),_types3=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 VisitsData{constructor(a){_defineProperty(this,"visits",void 0),_defineProperty(this,"status",_types3.TrackingStatus.Sent),this.visits=a}get url(){return""}get data(){return{visits:this.visits,type:_types2.KameleoonData.VisitsData,status:this.status}}get isSent(){return!0}set timestamp(a){_listUtilities.ListUtilities.insertInOrderedListMutably({list:this.visits,element:a,order:_types.Order.Ascending}),this.visits=[...new Set(this.visits)]}}exports.VisitsData=VisitsData;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JSONType } from '../clientConfiguration';
|
|
2
|
-
import { ExternalPackageInfoType } from '../
|
|
2
|
+
import { ExternalPackageInfoType } from '../sdkInfoTypes';
|
|
3
3
|
import { BrowserIndexMap, BrowserType, OperatingSystemType } from '../kameleoonData';
|
|
4
4
|
import { DeviceType, KCSType, OperatingSystemIndexMap } from '../kameleoonData/types';
|
|
5
5
|
import { Header } from './constants';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UrlProvider=void 0;var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UrlProvider=void 0;var _sdkInfoTypes=require("../sdkInfoTypes"),_constants=require("./constants"),_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 UrlProvider{constructor(){_defineProperty(this,"ready",!1),_defineProperty(this,"isCustomDomain",!1),_defineProperty(this,"domains",_constants.DEFAULT_DOMAINS),_defineProperty(this,"siteCode",void 0),_defineProperty(this,"environment",void 0),_defineProperty(this,"packageInfo",void 0)}initialize(a){let{domain:b,siteCode:c,packageInfo:d,environment:e}=a;this.siteCode=c,this.environment=e,this.packageInfo=d,this.ready=!0,this.setDomains(b)}set dataApiDomain(a){if(!this.isCustomDomain)return void(this.domains[_types.UrlType.DataApi]=a);const b=a.split(".")[0],c=this.domains[_types.UrlType.DataApi];this.domains[_types.UrlType.DataApi]=c.replace(/^[^.]+/,b)}getClientConfigurationUrl(a){this.isInitialized();const b=`https://${this.domains[_types.UrlType.ClientConfiguration]}/`,c=this.environment===_sdkInfoTypes.Environment.Production?"":_constants.UrlFirstParameter.Environment+encodeURIComponent(this.environment);let d="";return a&&(c?d=_constants.UrlParameter.Ts+a:d=_constants.UrlFirstParameter.Ts+a),b+this.siteCode+c+d}getEventSourceUrl(){return this.isInitialized(),`https://${this.domains[_types.UrlType.Events]}:8110/${_constants.UrlQuery.Sse}${this.siteCode}`}getRemoteDataUrl(a){return this.isInitialized(),this.getDataApiUrl(_types.DataApiQuery.DataMap)+this.siteCode+_constants.UrlParameter.Key+encodeURI(a)}getVisitorDataUrl(a){let{visitorCode:b,filters:c,isMappingIdentifier:d}=a;this.isInitialized();const{customData:e,previousVisitAmount:f,currentVisit:g,conversions:h,geolocation:i,experiments:j,pageViews:k,device:l,browser:m,operatingSystem:n,kcs:o,personalization:p,visitorCode:q}=c,r=d?_constants.UrlParameter.MappingValue:_constants.UrlParameter.VisitorCode,s=e||q?_constants.UrlParameter.CustomData+!0:"",t=h?_constants.UrlParameter.Conversion+!0:"",u=i?_constants.UrlParameter.Geolocation+!0:"",v=j?_constants.UrlParameter.Experiment+!0:"",w=k?_constants.UrlParameter.Page+!0:"",x=!!(l||m||n)?_constants.UrlParameter.StaticData+!0:"",y=g?_constants.UrlParameter.CurrentVisit+!0:"",z=o?_constants.UrlParameter.Kcs+!0:"",A=p?_constants.UrlParameter.Personalization+!0:"",B="number"==typeof f?_constants.UrlParameter.MaxNumberPreviousVisits+f:_constants.UrlParameter.MaxNumberPreviousVisits+1;return this.getDataApiUrl(_types.DataApiQuery.VisitData)+this.siteCode+r+b+B+s+t+u+v+w+x+y+z+A}getTrackingUrl(a){this.isInitialized();const{type:b,version:c}=this.packageInfo;let d=this.getDataApiUrl(_types.DataApiQuery.VisitEvent)+this.siteCode+_constants.UrlParameter.SdkName+b.toLowerCase()+_constants.UrlParameter.SdkVersion+c;return a&&(d+=_constants.UrlParameter.BodyUa+!0),d}isInitialized(){if(!this.ready)throw new Error("UrlProvider is not initialized")}getDataApiUrl(a){if(!this.domains[_types.UrlType.DataApi])throw new Error("Data API domain is not set");const b=`https://${this.domains[_types.UrlType.DataApi]}`;return a===_types.DataApiQuery.VisitEvent?`${b}/${_constants.UrlTracking.Visit+_constants.UrlQuery.Events}`:a===_types.DataApiQuery.VisitData?`${b}/${_constants.UrlTracking.Visit+_constants.UrlQuery.Visitor}`:a===_types.DataApiQuery.DataMap?`${b}/${_constants.UrlTracking.Map+_constants.UrlQuery.Map}`:void 0}setDomains(a){a&&(this.isCustomDomain=!0,this.domains[_types.UrlType.DataApi]="data."+a,this.domains[_types.UrlType.Events]="events."+a,this.domains[_types.UrlType.ClientConfiguration]="sdk-config."+a)}}exports.UrlProvider=UrlProvider;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SdkLanguageType } from './constants';
|
|
2
|
+
/**
|
|
3
|
+
* @readonly
|
|
4
|
+
* @enum {string} an Enum containing all possible variants of environment, passed as an argument to KameleoonClient `configuration`s `environment` field
|
|
5
|
+
* */
|
|
6
|
+
export declare enum Environment {
|
|
7
|
+
Production = "production",
|
|
8
|
+
Staging = "staging",
|
|
9
|
+
Development = "development"
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @param {SdkLanguageType} type - type of the SDK
|
|
13
|
+
* @param {string} version - version of the package
|
|
14
|
+
* @param {boolean} isServer - flag to indicate if the SDK is running on the server
|
|
15
|
+
* */
|
|
16
|
+
export type ExternalPackageInfoType = {
|
|
17
|
+
type: SdkLanguageType;
|
|
18
|
+
version: string;
|
|
19
|
+
isServer: boolean;
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Environment=void 0;let Environment=exports.Environment=function(a){return a.Production="production",a.Staging="staging",a.Development="development",a}({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.IntegrityChecker=void 0;var _constants=require("./constants"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.IntegrityChecker=void 0;var _constants=require("./constants"),_types=require("../kameleoonData/types"),_kameleoonError=require("../kameleoonError");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 IntegrityChecker{constructor(a){_defineProperty(this,"key",void 0),this.key=a}isDataValid(a){switch(this.key){case _constants.KameleoonStorageKey.ClientData:return this.checkClientDataIntegrity(a);case _constants.KameleoonStorageKey.TargetingData:return this.checkTargetingDataIntegrity(a);case _constants.KameleoonStorageKey.DataInfo:return this.checkDataInfoIntegrity(a);case _constants.KameleoonStorageKey.VariationData:return this.checkVariationDataIntegrity(a);case _constants.KameleoonStorageKey.TrackingData:return this.checkTrackingDataIntegrity(a);default:return!0}}getDefaultData(){switch(this.key){case _constants.KameleoonStorageKey.ClientData:return this.getDefaultClientData();case _constants.KameleoonStorageKey.DataInfo:return{unsentData:{},nextVisitTime:0,mappingIdentifiers:{}};case _constants.KameleoonStorageKey.TrackingData:return{scheduledVisitors:{}};case _constants.KameleoonStorageKey.TargetingData:case _constants.KameleoonStorageKey.VariationData:case _constants.KameleoonStorageKey.ConsentData:return{};case _constants.KameleoonStorageKey.VisitorCode:return"";case _constants.KameleoonStorageKey.KameleoonSimulationFFData:return"";case _constants.KameleoonStorageKey.ForcedExperimentVariation:return{};case _constants.KameleoonStorageKey.ForcedFeatureVariation:return{};default:(0,_kameleoonError.exhaustCheck)(this.key)}}checkTrackingDataIntegrity(a){return this.hasFields(a,["scheduledVisitors"])}checkDataInfoIntegrity(a){return this.hasFields(a,["unsentData","nextVisitTime"])}checkVariationDataIntegrity(a){const b=Object.values(a);if(!b.length)return!0;const c=a=>!this.hasFields(a,["status"])||this.hasFields(a,["isSent"]);for(const d of b)for(const a of Object.values(d))if(c(a))return!1;return!0}checkClientDataIntegrity(a){return this.hasFields(a,Object.keys(_constants.DEFAULT_CLIENT_CONFIGURATION))}checkTargetingDataIntegrity(a){const b=Object.values(a);if(!b.length)return!0;for(const c of b){if("string"==typeof c)continue;const a=a=>!this.hasFields(a,["status"])||this.hasFields(a,["sent"])||this.hasFields(a,["timestampList"]);for(const[b,d]of Object.entries(c)){if(Array.isArray(d))return!1;switch(b){case _types.KameleoonData.PageView:case _types.KameleoonData.Conversion:case _types.KameleoonData.CustomData:{const b=Object.values(d).some(b=>a(b));if(b)return!1;continue}default:if(a(d))return!1}}}return!0}getDefaultClientData(){return _objectSpread(_objectSpread({},_constants.DEFAULT_CLIENT_CONFIGURATION),{},{lastUpdate:new Date().toString()})}hasFields(a,b){const c=Object.keys(a);return!!(c.length&&b.length)&&b.every(a=>c.includes(a))}}exports.IntegrityChecker=IntegrityChecker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ApplicationVersion=void 0;var _tsRes=require("ts-res"),_utilities=require("../../utilities"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ApplicationVersion=void 0;var _tsRes=require("ts-res"),_utilities=require("../../utilities/utilities"),_types=require("../../kameleoonData/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 ApplicationVersion{constructor(a){let{version:b,versionMatchType:c}=a;_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"versionMatchType",void 0),this.conditionValue=b,this.versionMatchType=c}evaluate(a){var b;let{targetingData:c}=a;const d=null===c||void 0===c||null===(b=c[_types.KameleoonData.ApplicationVersion])||void 0===b?void 0:b.version;if(!d||!this.conditionValue||!this.versionMatchType)return(0,_tsRes.Ok)(!1);const e=_utilities.Utilities.compareSemVer({version:d,compareVersion:this.conditionValue,operator:this.versionMatchType});return e.ok?(0,_tsRes.Ok)(e.data):(0,_tsRes.Err)(e.error)}}exports.ApplicationVersion=ApplicationVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Browser=void 0;var _tsRes=require("ts-res"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Browser=void 0;var _tsRes=require("ts-res"),_types=require("../../kameleoonData/types"),_kameleoonError=require("../../kameleoonError"),_types2=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 Browser{constructor(a){let{browser:b,version:c,versionMatchType:d}=a;_defineProperty(this,"browser",void 0),_defineProperty(this,"version",void 0),_defineProperty(this,"versionMatchType",void 0),_defineProperty(this,"error",void 0),this.browser=b,this.version=c,this.versionMatchType=d}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_types.KameleoonData.Browser];if(c){const a=this.checkCondition(c);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(a)}return(0,_tsRes.Ok)(!1)}checkCondition(a){const{browser:b,version:c}=a;if("string"!=typeof this.browser)return!1;if(!this.version)return b===this.browser;if(!this.versionMatchType||"number"!=typeof c)return!1;const d=parseFloat(this.version);switch(isNaN(d)&&(_logging.KameleoonLogger.error`Failed to parse version: ${this.version} in Browser condition`,this.error=new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VersionParse,this.version)),this.versionMatchType){case _types2.VersionMatchType.EQUAL:return b===this.browser&&c===d;case _types2.VersionMatchType.GREATER:return b===this.browser&&c>d;case _types2.VersionMatchType.LOWER:return b===this.browser&&c<d;default:_logging.KameleoonLogger.error`Unexpected comparing operation for Browser condition: ${this.versionMatchType}`,(0,_kameleoonError.exhaustCheck)(this.versionMatchType)}}}exports.Browser=Browser;
|