@kameleoon/javascript-sdk-core 5.0.0 → 5.0.2

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # Change Log
2
2
 
3
+ ## 5.0.2 (2024-11-08)
4
+
5
+ ### Patch Changes
6
+
7
+ - Fixed build issue resulting in potential issues when using any targeting condition with `Exclude` option
8
+
9
+ ## 5.0.1 (2024-11-05)
10
+
11
+ ### Patch Changes
12
+
13
+ - Fixed an issue with the [`Page URL`][Targeting Conditions] and [`Page Title`][Targeting Conditions] targeting conditions, where the condition evaluated all previously visited URLs in the session instead of only the current URL, corresponding to the latest added `PageView`
14
+ NOTE: This change may impact your existing targeting. Please review your targeting conditions to ensure accuracy.
15
+
16
+ [Targeting Conditions]: https://developers.kameleoon.com/feature-management-and-experimentation/using-visit-history-in-feature-flags-and-experiments#benefits-of-calling-getremotevisitordata
17
+
3
18
  ## 5.0.0 (2024-10-03)
4
19
 
5
20
  ### Breaking Changes
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { Ok, Result, Err } from 'ts-res';
2
2
  export { KameleoonClient as KameleoonCore } from './kameleoonClient';
3
- export { IKameleoonClient as IKameleoonCore } from './kameleoonClientInterface';
4
3
  export { KameleoonUtils } from './kameleoonUtils';
4
+ export { IKameleoonClient as IKameleoonCore } from './kameleoonClientInterface';
5
5
  export { KameleoonException, KameleoonError } from './kameleoonError';
6
6
  export { VisitorDataFiltersType, IExternalPRNG } from './utilities';
7
7
  export { FeatureFlagVariationsType, KameleoonStorageKey, IExternalStorage, StorageDataType, } from './storage';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
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,"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,"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,"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,"JSONType",{enumerable:!0,get:function(){return _clientConfiguration.JSONType}}),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,"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,"KameleoonVariationType",{enumerable:!0,get:function(){return _types.KameleoonVariationType}}),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,"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,"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,"SimulateRequestDataType",{enumerable:!0,get:function(){return _types.SimulateRequestDataType}}),Object.defineProperty(exports,"StorageDataType",{enumerable:!0,get:function(){return _storage.StorageDataType}}),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,"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,"VariableType",{enumerable:!0,get:function(){return _types.VariableType}}),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"),_kameleoonClientInterface=require("./kameleoonClientInterface"),_kameleoonUtils=require("./kameleoonUtils"),_kameleoonError=require("./kameleoonError"),_utilities=require("./utilities"),_storage=require("./storage"),_eventManager=require("./eventManager"),_visitorCodeManager=require("./visitorCodeManager"),_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,"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,"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,"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,"JSONType",{enumerable:!0,get:function(){return _clientConfiguration.JSONType}}),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,"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,"KameleoonVariationType",{enumerable:!0,get:function(){return _types.KameleoonVariationType}}),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,"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,"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,"SimulateRequestDataType",{enumerable:!0,get:function(){return _types.SimulateRequestDataType}}),Object.defineProperty(exports,"StorageDataType",{enumerable:!0,get:function(){return _storage.StorageDataType}}),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,"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,"VariableType",{enumerable:!0,get:function(){return _types.VariableType}}),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"),_constants=require("./constants"),_clientConfiguration=require("./clientConfiguration"),_types=require("./types"),_kameleoonData=require("./kameleoonData"),_eventSource=require("./eventSource"),_requester=require("./requester");
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export { Ok, Result, Err } from 'ts-res';\nexport { KameleoonClient as KameleoonCore } from './kameleoonClient';\nexport { IKameleoonClient as IKameleoonCore } from './kameleoonClientInterface';\nexport { KameleoonUtils } from './kameleoonUtils';\nexport { KameleoonException, KameleoonError } from './kameleoonError';\nexport { VisitorDataFiltersType, IExternalPRNG } from './utilities';\nexport {\n FeatureFlagVariationsType,\n KameleoonStorageKey,\n IExternalStorage,\n StorageDataType,\n} from './storage';\nexport {\n EventCallbackType,\n EventDataType,\n EventType,\n EvaluationEventDataType,\n ConfigurationUpdateEventDataType,\n} from './eventManager';\nexport {\n VisitorCodeManager,\n IVisitorCodeManager,\n VISITOR_CODE_LENGTH,\n} from './visitorCodeManager';\nexport { SdkLanguageType } from './constants';\nexport { JSONType, ConfigurationDataType } from './clientConfiguration';\nexport {\n TrackingStatus,\n Environment,\n VariableType,\n InternalsType,\n FeatureFlagType,\n SDKCoreParameters,\n SDKConfigurationType,\n KameleoonVariationType,\n ExternalPackageInfoType,\n FeatureFlagVariableType,\n TrackConversionParamsType,\n FeatureVariableResultType,\n RemoteVisitorDataParamsType,\n InternalSDKConfigurationType,\n SetDataCallbackParametersType,\n GetFeatureFlagVariableParamsType,\n GetVisitorWarehouseAudienceParamsType,\n SimulateRequestDataType,\n Milliseconds,\n} from './types';\nexport {\n ApplicationVersion,\n CustomData,\n Conversion,\n Device,\n Cookie,\n Browser,\n UserAgent,\n DeviceType,\n CookieType,\n GeolocationData,\n GeolocationInfoType,\n OperatingSystemType,\n OperatingSystem,\n BrowserType,\n PageView,\n KameleoonData,\n KameleoonDataType,\n PageViewParametersType,\n ConversionParametersType,\n ApplicationVersionDataType,\n} from './kameleoonData';\nexport {\n IExternalEventSource,\n EventSourceOpenParametersType,\n} from './eventSource';\nexport {\n Header,\n HeadersType,\n HttpMethod,\n IExternalRequester,\n RequestParametersType,\n RequestType,\n RetryCountType,\n KameleoonResponseType,\n SendRequestParametersType,\n NUMBER_OF_RETRIES,\n} from './requester';\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export { Ok, Result, Err } from 'ts-res';\nexport { KameleoonClient as KameleoonCore } from './kameleoonClient';\nexport { KameleoonUtils } from './kameleoonUtils';\nexport { IKameleoonClient as IKameleoonCore } from './kameleoonClientInterface';\nexport { KameleoonException, KameleoonError } from './kameleoonError';\nexport { VisitorDataFiltersType, IExternalPRNG } from './utilities';\nexport {\n FeatureFlagVariationsType,\n KameleoonStorageKey,\n IExternalStorage,\n StorageDataType,\n} from './storage';\nexport {\n EventCallbackType,\n EventDataType,\n EventType,\n EvaluationEventDataType,\n ConfigurationUpdateEventDataType,\n} from './eventManager';\nexport {\n VisitorCodeManager,\n IVisitorCodeManager,\n VISITOR_CODE_LENGTH,\n} from './visitorCodeManager';\nexport { SdkLanguageType } from './constants';\nexport { JSONType, ConfigurationDataType } from './clientConfiguration';\nexport {\n TrackingStatus,\n Environment,\n VariableType,\n InternalsType,\n FeatureFlagType,\n SDKCoreParameters,\n SDKConfigurationType,\n KameleoonVariationType,\n ExternalPackageInfoType,\n FeatureFlagVariableType,\n TrackConversionParamsType,\n FeatureVariableResultType,\n RemoteVisitorDataParamsType,\n InternalSDKConfigurationType,\n SetDataCallbackParametersType,\n GetFeatureFlagVariableParamsType,\n GetVisitorWarehouseAudienceParamsType,\n SimulateRequestDataType,\n Milliseconds,\n} from './types';\nexport {\n ApplicationVersion,\n CustomData,\n Conversion,\n Device,\n Cookie,\n Browser,\n UserAgent,\n DeviceType,\n CookieType,\n GeolocationData,\n GeolocationInfoType,\n OperatingSystemType,\n OperatingSystem,\n BrowserType,\n PageView,\n KameleoonData,\n KameleoonDataType,\n PageViewParametersType,\n ConversionParametersType,\n ApplicationVersionDataType,\n} from './kameleoonData';\nexport {\n IExternalEventSource,\n EventSourceOpenParametersType,\n} from './eventSource';\nexport {\n Header,\n HeadersType,\n HttpMethod,\n IExternalRequester,\n RequestParametersType,\n RequestType,\n RetryCountType,\n KameleoonResponseType,\n SendRequestParametersType,\n NUMBER_OF_RETRIES,\n} from './requester';\n"],"mappings":"","ignoreList":[]}
@@ -1,2 +1,2 @@
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");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){let{siteCode:b,dependencies:c,configuration:d,internalConfiguration:e}=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{settings:f}=new _clientSettings.ClientSettings(b,d);this.environment=f.environment;const{externalStorage:g,externalEventSource:h,externalPackageInfo:i,externalVisitorCodeManager:j,externalRequester:k,externalPRNG:l}=e.externals,{useAbortController:m}=e.settings,n=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),o=new _storage.DataStorage(g,_storage.KameleoonStorageKey.ClientData),p=new _storage.DataStorage(g,_storage.KameleoonStorageKey.TargetingData),q=new _storage.DataStorage(g,_storage.KameleoonStorageKey.DataInfo),r=new _storage.DataStorage(g,_storage.KameleoonStorageKey.VariationData),s=new _storage.DataStorage(g,_storage.KameleoonStorageKey.ConsentData),t=new _storage.DataStorage(g,_storage.KameleoonStorageKey.TrackingData),u=new _kameleoonData.DataManager({dataStorage:p,infoStorage:q,cleanupInterval:f.cleanupInterval}),v=(null===c||void 0===c?void 0:c.urlProvider)??new _requester.UrlProvider;v.initialize({domain:f.networkDomain,siteCode:f.siteCode,packageInfo:i,environment:f.environment});const w=new _requester.Requester({urlProvider:v,useAbortController:m,packageInfo:i,externalRequester:k,requestTimeout:f.requestTimeout,trackRetryDelay:f.trackRetryDelay}),x=new _eventSource.KameleoonEventSource({siteCode:f.siteCode,externalEventSource:h,urlProvider:v}),y=new _eventManager.EventManager,z=new _clientConfiguration.ClientConfiguration({urlProvider:v,storage:o,updateInterval:f.updateInterval,dataManager:u,eventManager:y,requester:w,eventSource:x,externalVisitorCodeManager:j}),A=new _variationConfiguration.VariationConfiguration(r,j),B=new _tracking.Tracker({dataManager:u,trackingStorage:t,variationConfiguration:A,requester:w,trackingInterval:f.trackingInterval,prng:l});this.tracker=B,this.variationConfiguration=A,this.requester=w,this.trackingCache=n,this.dataManager=u,this.clientConfiguration=z,this.externalPackageInfo=i,this.consentDataStorage=s,this.visitorCodeManager=j,this.eventManager=y}async initialize(){const a=await this.clientConfiguration.initialize();return a.throw(),this.initialized=!0,a.ok}addData(a){if(this.visitorCodeManager.validateVisitorCode(a).throw(),!this.initialized)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];this.dataManager.storeData(a,...c).throw()}async getRemoteVisitorData(a){let{visitorCode:b,shouldAddData:c=!0,filters:d=_constants.DEFAULT_VISITOR_DATA_FILTERS}=a;if(!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}=_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),i}trackConversion(a){let{visitorCode:b,goalId:c,revenue:d}=a;this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b)}flush(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a)return this.visitorCodeManager.validateVisitorCode(a).throw(),void this.tracker.scheduleVisitor(a,this._isConsentProvided(a));for(const b of this.dataManager.unsentDataVisitors)this.tracker.scheduleVisitor(b,this._isConsentProvided(b))}getFeatureFlags(){if(!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})}),b}getVisitorFeatureFlags(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this._getActiveFeatureVariations(a),c=[];return b.forEach(a=>{let{featureFlagId:b,featureKey:d}=a;c.push({id:b,key:d})}),c}getActiveFeatureFlags(a){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})}),c}getFeatureFlagVariationKey(a,b){this.visitorCodeManager.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureVariation(a,b).throw();return c}getFeatureFlagVariable(a){let{visitorCode:b,featureKey:c,variableKey:d}=a;this.visitorCodeManager.validateVisitorCode(b).throw();const{variationKey:e}=this._getFeatureVariation(b,c).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();return{type:h,value:i}}getFeatureFlagVariables(a,b){this.visitorCodeManager.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureVariation(a,b).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 e}isFeatureFlagActive(a,b){try{const c=this.getFeatureFlagVariationKey(a,b);return c!==_constants.OFF_VARIATION_KEY}catch(a){if(a instanceof _kameleoonError.KameleoonError&&a.type===_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled)return!1;throw a}}async getRemoteData(a){const b=await this.requester.getRemoteData(a);return b.throw()}async getVisitorWarehouseAudience(a){let{visitorCode:b,customDataIndex:c,warehouseKey:d}=a;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 null;const f=new _kameleoonData.CustomData(c,...Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]));return this.dataManager.storeData(b,f),f}onEvent(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.eventManager.addEventHandler(a,b)}getEngineTrackingCode(a){return this.visitorCodeManager.validateVisitorCode(a).throw(),_utilities.Utilities.getTrackingCode(this.trackingCache,a)}isInitialized(){return this.initialized}setUserConsent(a){let{visitorCode:b,consent:c,setData:d}=a;this.visitorCodeManager.validateVisitorCode(b).throw(),this.consentDataStorage.update({[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})}_isConsentProvided(a){const{isConsentRequired:b}=this.clientConfiguration,c=this.consentDataStorage.read();return!b||c.ok&&c.data[a]}_getFeatureVariables(a){let{visitorCode:b,featureKey:c,variationKey:d}=a;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 g.variables}_getActiveFeatureVariations(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this.clientConfiguration.featureFlags,c=[],d=this.dataManager.getVisitorData(a),e=this.dataManager.getVisitorIdentifier(a);for(const f of b.values()){if(!f.environmentEnabled)continue;const b=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:e,targetingData:d,featureFlag:f,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:f.featureKey,variation:{key:b.variationKey,experimentId:b.experimentId,id:b.variationId}}),b.variationKey!==_constants.OFF_VARIATION_KEY&&c.push(b)}return c}_getFeatureVariation(a,b){if(!this.initialized)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));const c=this.clientConfiguration.featureFlags,d=c.get(b);if(!d)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b));if(!d.environmentEnabled)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled,d.featureKey,this.environment));const e=this.dataManager.getVisitorData(a),f=this.dataManager.getVisitorIdentifier(a),g=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:f,featureFlag:d,withAssignment:!0,targetingData:e,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:b,variation:{key:g.variationKey,experimentId:g.experimentId,id:g.variationId}});const{experimentId:h,variationId:i,variationKey:j}=g;if("number"==typeof i&&"number"==typeof h){let c=!1;try{const d=this._getFeatureVariables({visitorCode:a,featureKey:b,variationKey:j});c=d.some(a=>{let{type:b}=a;return b===_types.VariableType.JS||b===_types.VariableType.CSS})}catch(_){}_utilities.Utilities.updateCache({cacheManager:this.trackingCache,hasJsCssVariables:c,visitorCode:a,experimentId:h,variationId:i})}return this.tracker.scheduleVisitor(a,this._isConsentProvided(a)),(0,_tsRes.Ok)(g)}}exports.KameleoonClient=KameleoonClient;
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");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{settings:g}=new _clientSettings.ClientSettings(c,e);this.environment=g.environment;const{externalStorage:h,externalEventSource:i,externalPackageInfo:j,externalVisitorCodeManager:k,externalRequester:l,externalPRNG:m}=f.externals,{useAbortController:n}=f.settings,o=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),p=new _storage.DataStorage(h,_storage.KameleoonStorageKey.ClientData),q=new _storage.DataStorage(h,_storage.KameleoonStorageKey.TargetingData),r=new _storage.DataStorage(h,_storage.KameleoonStorageKey.DataInfo),s=new _storage.DataStorage(h,_storage.KameleoonStorageKey.VariationData),t=new _storage.DataStorage(h,_storage.KameleoonStorageKey.ConsentData),u=new _storage.DataStorage(h,_storage.KameleoonStorageKey.TrackingData),v=new _kameleoonData.DataManager({dataStorage:q,infoStorage:r,cleanupInterval:g.cleanupInterval}),w=null!==(b=null===d||void 0===d?void 0:d.urlProvider)&&void 0!==b?b:new _requester.UrlProvider;w.initialize({domain:g.networkDomain,siteCode:g.siteCode,packageInfo:j,environment:g.environment});const x=new _requester.Requester({urlProvider:w,useAbortController:n,packageInfo:j,externalRequester:l,requestTimeout:g.requestTimeout,trackRetryDelay:g.trackRetryDelay}),y=new _eventSource.KameleoonEventSource({siteCode:g.siteCode,externalEventSource:i,urlProvider:w}),z=new _eventManager.EventManager,A=new _clientConfiguration.ClientConfiguration({urlProvider:w,storage:p,updateInterval:g.updateInterval,dataManager:v,eventManager:z,requester:x,eventSource:y,externalVisitorCodeManager:k}),B=new _variationConfiguration.VariationConfiguration(s,k),C=new _tracking.Tracker({dataManager:v,trackingStorage:u,variationConfiguration:B,requester:x,trackingInterval:g.trackingInterval,prng:m});this.tracker=C,this.variationConfiguration=B,this.requester=x,this.trackingCache=o,this.dataManager=v,this.clientConfiguration=A,this.externalPackageInfo=j,this.consentDataStorage=t,this.visitorCodeManager=k,this.eventManager=z}async initialize(){const a=await this.clientConfiguration.initialize();return a.throw(),this.initialized=!0,a.ok}addData(a){if(this.visitorCodeManager.validateVisitorCode(a).throw(),!this.initialized)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];this.dataManager.storeData(a,...c).throw()}async getRemoteVisitorData(a){let{visitorCode:b,shouldAddData:c=!0,filters:d=_constants.DEFAULT_VISITOR_DATA_FILTERS}=a;if(!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}=_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),i}trackConversion(a){let{visitorCode:b,goalId:c,revenue:d}=a;this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b)}flush(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a)return this.visitorCodeManager.validateVisitorCode(a).throw(),void this.tracker.scheduleVisitor(a,this._isConsentProvided(a));for(const b of this.dataManager.unsentDataVisitors)this.tracker.scheduleVisitor(b,this._isConsentProvided(b))}getFeatureFlags(){if(!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})}),b}getVisitorFeatureFlags(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this._getActiveFeatureVariations(a),c=[];return b.forEach(a=>{let{featureFlagId:b,featureKey:d}=a;c.push({id:b,key:d})}),c}getActiveFeatureFlags(a){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})}),c}getFeatureFlagVariationKey(a,b){this.visitorCodeManager.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureVariation(a,b).throw();return c}getFeatureFlagVariable(a){let{visitorCode:b,featureKey:c,variableKey:d}=a;this.visitorCodeManager.validateVisitorCode(b).throw();const{variationKey:e}=this._getFeatureVariation(b,c).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();return{type:h,value:i}}getFeatureFlagVariables(a,b){this.visitorCodeManager.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureVariation(a,b).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 e}isFeatureFlagActive(a,b){try{const c=this.getFeatureFlagVariationKey(a,b);return c!==_constants.OFF_VARIATION_KEY}catch(a){if(a instanceof _kameleoonError.KameleoonError&&a.type===_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled)return!1;throw a}}async getRemoteData(a){const b=await this.requester.getRemoteData(a);return b.throw()}async getVisitorWarehouseAudience(a){let{visitorCode:b,customDataIndex:c,warehouseKey:d}=a;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 null;const f=new _kameleoonData.CustomData(c,...Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]));return this.dataManager.storeData(b,f),f}onEvent(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.eventManager.addEventHandler(a,b)}getEngineTrackingCode(a){return this.visitorCodeManager.validateVisitorCode(a).throw(),_utilities.Utilities.getTrackingCode(this.trackingCache,a)}isInitialized(){return this.initialized}setUserConsent(a){let{visitorCode:b,consent:c,setData:d}=a;this.visitorCodeManager.validateVisitorCode(b).throw(),this.consentDataStorage.update({[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})}_isConsentProvided(a){const{isConsentRequired:b}=this.clientConfiguration,c=this.consentDataStorage.read();return!b||c.ok&&c.data[a]}_getFeatureVariables(a){let{visitorCode:b,featureKey:c,variationKey:d}=a;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 g.variables}_getActiveFeatureVariations(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this.clientConfiguration.featureFlags,c=[],d=this.dataManager.getVisitorData(a),e=this.dataManager.getVisitorIdentifier(a);for(const f of b.values()){if(!f.environmentEnabled)continue;const b=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:e,targetingData:d,featureFlag:f,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:f.featureKey,variation:{key:b.variationKey,experimentId:b.experimentId,id:b.variationId}}),b.variationKey!==_constants.OFF_VARIATION_KEY&&c.push(b)}return c}_getFeatureVariation(a,b){if(!this.initialized)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));const c=this.clientConfiguration.featureFlags,d=c.get(b);if(!d)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b));if(!d.environmentEnabled)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled,d.featureKey,this.environment));const e=this.dataManager.getVisitorData(a),f=this.dataManager.getVisitorIdentifier(a),g=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:f,featureFlag:d,withAssignment:!0,targetingData:e,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();this.eventManager.fireEvent(_eventManager.EventType.Evaluation,{featureKey:b,variation:{key:g.variationKey,experimentId:g.experimentId,id:g.variationId}});const{experimentId:h,variationId:i,variationKey:j}=g;if("number"==typeof i&&"number"==typeof h){let c=!1;try{const d=this._getFeatureVariables({visitorCode:a,featureKey:b,variationKey:j});c=d.some(a=>{let{type:b}=a;return b===_types.VariableType.JS||b===_types.VariableType.CSS})}catch(_){}_utilities.Utilities.updateCache({cacheManager:this.trackingCache,hasJsCssVariables:c,visitorCode:a,experimentId:h,variationId:i})}return this.tracker.scheduleVisitor(a,this._isConsentProvided(a)),(0,_tsRes.Ok)(g)}}exports.KameleoonClient=KameleoonClient;
2
2
  //# sourceMappingURL=kameleoonClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","constructor","a","siteCode","dependencies","configuration","internalConfiguration","_defineProperty","settings","clientSettings","ClientSettings","environment","externalStorage","externalEventSource","externalPackageInfo","externalVisitorCodeManager","externalRequester","externalPRNG","externals","useAbortController","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","DataStorage","KameleoonStorageKey","ClientData","targetingDataStorage","TargetingData","dataInfoStorage","DataInfo","variationDataStorage","VariationData","consentDataStorage","ConsentData","trackingStorage","TrackingData","dataManager","DataManager","dataStorage","infoStorage","cleanupInterval","urlProvider","UrlProvider","initialize","domain","networkDomain","packageInfo","requester","Requester","requestTimeout","trackRetryDelay","eventSource","KameleoonEventSource","eventManager","EventManager","clientConfiguration","ClientConfiguration","storage","updateInterval","variationConfiguration","VariationConfiguration","tracker","Tracker","trackingInterval","prng","visitorCodeManager","result","throw","initialized","ok","addData","visitorCode","validateVisitorCode","KameleoonError","KameleoonException","Initialization","b","arguments","length","data","Array","d","storeData","getRemoteVisitorData","shouldAddData","filters","DEFAULT_VISITOR_DATA_FILTERS","previousVisitAmount","VisitAmount","isUniqueIdentifier","getVisitorData","isMappingIdentifier","visitorData","storageVisitorData","visitsData","Parser","parseVisitorData","dataItem","isPersistentCustomData","trackConversion","goalId","revenue","Conversion","flush","scheduleVisitor","_isConsentProvided","visitorCodeKey","unsentDataVisitors","getFeatureFlags","featureFlags","resultFeatureFlags","forEach","id","featureKey","push","key","getVisitorFeatureFlags","activeVariations","_getActiveFeatureVariations","featureFlagId","getActiveFeatureFlags","resultFeatureList","Map","variation","variationKey","variationId","experimentId","variables","_getFeatureVariables","resultVariables","map","variable","parseFeatureVariable","set","getFeatureFlagVariationKey","_getFeatureVariation","getFeatureFlagVariable","variableKey","find","item","FeatureFlagVariableNotFound","type","value","getFeatureFlagVariables","parsedVariable","isFeatureFlagActive","OFF_VARIATION_KEY","err","FeatureFlagEnvironmentDisabled","getRemoteData","remoteData","getVisitorWarehouseAudience","customDataIndex","warehouseKey","RemoteData","WAREHOUSE_AUDIENCE_KEY","Object","keys","customData","CustomData","onEvent","event","callback","addEventHandler","getEngineTrackingCode","Utilities","getTrackingCode","isInitialized","setUserConsent","consent","setData","update","VisitorCode","maxAge","DEFAULT_MAX_AGE","path","PATH","consentRequired","ZERO_MAX_AGE","isConsentRequired","consentDataResult","read","featureFlag","get","FeatureFlagConfigurationNotFound","variations","FeatureFlagVariationNotFound","visitorIdentifier","getVisitorIdentifier","values","environmentEnabled","variationData","getVariation","targetingData","fireEvent","EventType","Evaluation","Err","withAssignment","hasJsCssVariables","some","VariableType","JS","CSS","_","updateCache","cacheManager","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport {\n ClientConfiguration,\n FeatureVariableType,\n JSONType,\n} from './clientConfiguration';\nimport { ClientSettings } from './clientSettings';\nimport {\n CACHE_CLEANUP_TIMEOUT,\n DEFAULT_VISITOR_DATA_FILTERS,\n OFF_VARIATION_KEY,\n} from './constants';\nimport {\n Conversion,\n CustomData,\n DataManager,\n KameleoonDataType,\n} from './kameleoonData';\nimport { WAREHOUSE_AUDIENCE_KEY } from './constants';\nimport { KameleoonError, KameleoonException } from './kameleoonError';\nimport { Requester, UrlProvider } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n DataStorage,\n ConsentDataType,\n IStorage,\n DataInfoType,\n TrackingDataType,\n} from './storage';\nimport {\n TrackConversionParamsType,\n FeatureFlagType,\n GetFeatureFlagVariableParamsType,\n FeatureVariableResultType,\n SDKCoreParameters,\n TrackingCacheItemType,\n ExternalPackageInfoType,\n RemoteVisitorDataParamsType,\n GetVisitorWarehouseAudienceParamsType,\n Environment,\n SetUserConsentParametersType,\n FeatureFlagVariableType,\n KameleoonVariationType,\n GetFeatureVariablesParamsType,\n VariableType,\n} from './types';\nimport { IVisitorCodeManager } from './visitorCodeManager';\nimport { Parser, Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { IKameleoonClient } from './kameleoonClientInterface';\nimport { TargetingDataType } from './targeting';\nimport { KameleoonEventSource } from './eventSource';\nimport { DEFAULT_MAX_AGE, PATH, ZERO_MAX_AGE } from './visitorCodeManager';\nimport { EventCallbackType, EventManager, EventType } from './eventManager';\nimport { Tracker } from './tracking';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * for communicating with Kameleoon JavaScript SDK Core, when new instance is created\n */\nexport class KameleoonClient implements IKameleoonClient {\n private variationConfiguration: VariationConfiguration;\n private clientConfiguration: ClientConfiguration;\n private dataManager: DataManager;\n private consentDataStorage: IStorage<ConsentDataType>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private initialized: boolean = false;\n private visitorCodeManager: IVisitorCodeManager;\n private eventManager: EventManager;\n private tracker: Tracker;\n private environment: Environment;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n dependencies,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n this.environment = clientSettings.environment;\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalVisitorCodeManager,\n externalRequester,\n externalPRNG,\n } = internalConfiguration.externals;\n const { useAbortController } = internalConfiguration.settings;\n const trackingCache = new CacheManager<TrackingCacheItemType>(\n CACHE_CLEANUP_TIMEOUT,\n );\n\n const clientDataStorage = new DataStorage<ClientDataType>(\n externalStorage,\n KameleoonStorageKey.ClientData,\n );\n const targetingDataStorage = new DataStorage<TargetingDataType>(\n externalStorage,\n KameleoonStorageKey.TargetingData,\n );\n const dataInfoStorage = new DataStorage<DataInfoType>(\n externalStorage,\n KameleoonStorageKey.DataInfo,\n );\n const variationDataStorage = new DataStorage<VariationDataType>(\n externalStorage,\n KameleoonStorageKey.VariationData,\n );\n const consentDataStorage = new DataStorage<ConsentDataType>(\n externalStorage,\n KameleoonStorageKey.ConsentData,\n );\n const trackingStorage = new DataStorage<TrackingDataType>(\n externalStorage,\n KameleoonStorageKey.TrackingData,\n );\n\n const dataManager = new DataManager({\n dataStorage: targetingDataStorage,\n infoStorage: dataInfoStorage,\n cleanupInterval: clientSettings.cleanupInterval,\n });\n\n const urlProvider = dependencies?.urlProvider ?? new UrlProvider();\n\n urlProvider.initialize({\n domain: clientSettings.networkDomain,\n siteCode: clientSettings.siteCode,\n packageInfo: externalPackageInfo,\n environment: clientSettings.environment,\n });\n\n const requester = new Requester({\n urlProvider,\n useAbortController,\n packageInfo: externalPackageInfo,\n externalRequester: externalRequester,\n requestTimeout: clientSettings.requestTimeout,\n trackRetryDelay: clientSettings.trackRetryDelay,\n });\n\n const eventSource = new KameleoonEventSource({\n siteCode: clientSettings.siteCode,\n externalEventSource,\n urlProvider,\n });\n\n const eventManager = new EventManager();\n\n const clientConfiguration = new ClientConfiguration({\n urlProvider,\n storage: clientDataStorage,\n updateInterval: clientSettings.updateInterval,\n dataManager,\n eventManager,\n requester,\n eventSource,\n externalVisitorCodeManager,\n });\n\n const variationConfiguration = new VariationConfiguration(\n variationDataStorage,\n externalVisitorCodeManager,\n );\n\n const tracker = new Tracker({\n dataManager,\n trackingStorage,\n\n variationConfiguration,\n requester,\n trackingInterval: clientSettings.trackingInterval,\n prng: externalPRNG,\n });\n\n this.tracker = tracker;\n this.variationConfiguration = variationConfiguration;\n this.requester = requester;\n this.trackingCache = trackingCache;\n this.dataManager = dataManager;\n this.clientConfiguration = clientConfiguration;\n this.externalPackageInfo = externalPackageInfo;\n this.consentDataStorage = consentDataStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n this.eventManager = eventManager;\n }\n\n public async initialize(): Promise<boolean> {\n const result = await this.clientConfiguration.initialize();\n result.throw();\n\n this.initialized = true;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.dataManager.storeData(visitorCode, ...data).throw();\n }\n\n public async getRemoteVisitorData({\n visitorCode,\n shouldAddData = true,\n filters = DEFAULT_VISITOR_DATA_FILTERS,\n }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]> {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { previousVisitAmount } = filters;\n\n if (\n typeof previousVisitAmount === 'number' &&\n (previousVisitAmount < 1 || previousVisitAmount > 25)\n ) {\n throw new KameleoonError(KameleoonException.VisitAmount);\n }\n\n const isUniqueIdentifier = this.dataManager.isUniqueIdentifier(visitorCode);\n\n const result = await this.requester.getVisitorData({\n visitorCode,\n filters,\n isMappingIdentifier: isUniqueIdentifier,\n });\n const data = result.throw();\n\n const { visitorData, storageVisitorData, visitsData } =\n Parser.parseVisitorData({\n data,\n filters,\n visitorCode,\n dataManager: this.dataManager,\n variationConfiguration: this.variationConfiguration,\n });\n\n for (const dataItem of storageVisitorData) {\n if (shouldAddData || this.dataManager.isPersistentCustomData(dataItem)) {\n this.addData(visitorCode, dataItem);\n }\n }\n\n // --- Note ---\n // Data on visits amount and time stamps is not returned to a user\n if (visitsData && shouldAddData) {\n this.addData(visitorCode, visitsData);\n }\n\n return visitorData;\n }\n\n public trackConversion({\n visitorCode,\n goalId,\n revenue,\n }: TrackConversionParamsType): void {\n this.addData(visitorCode, new Conversion({ goalId, revenue }));\n this.flush(visitorCode);\n }\n\n public flush(visitorCode?: string): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n if (typeof visitorCode === 'string') {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n this.tracker.scheduleVisitor(\n visitorCode,\n this._isConsentProvided(visitorCode),\n );\n\n return;\n }\n\n for (const visitorCodeKey of this.dataManager.unsentDataVisitors) {\n this.tracker.scheduleVisitor(\n visitorCodeKey,\n this._isConsentProvided(visitorCodeKey),\n );\n }\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n featureFlags.forEach(({ id, featureKey }) => {\n resultFeatureFlags.push({\n id,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n activeVariations.forEach(({ featureFlagId, featureKey }) => {\n resultFeatureFlags.push({\n id: featureFlagId,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getActiveFeatureFlags(\n visitorCode: string,\n ): Map<string, KameleoonVariationType> {\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureList: Map<string, KameleoonVariationType> = new Map();\n\n activeVariations.forEach((variation) => {\n const { variationKey, featureKey, variationId, experimentId } = variation;\n\n let variables: FeatureVariableType[] = [];\n\n if (variationId !== null && experimentId !== null) {\n variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n }\n\n const resultVariables = variables.map((variable) =>\n Parser.parseFeatureVariable(variable).throw(),\n );\n\n resultFeatureList.set(variation.featureKey, {\n key: variationKey,\n id: variationId,\n experimentId,\n variables: resultVariables,\n });\n });\n\n return resultFeatureList;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureFlagVariableType {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const variable = variables.find((item) => item.key === variableKey);\n\n if (!variable) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariableNotFound,\n variableKey,\n visitorCode,\n );\n }\n\n const { type, value } = Parser.parseFeatureVariable(variable).throw();\n\n return { type, value } as FeatureFlagVariableType;\n }\n\n public getFeatureFlagVariables(\n visitorCode: string,\n featureKey: string,\n ): FeatureVariableResultType[] {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const resultVariables: FeatureVariableResultType[] = [];\n\n for (const variable of variables) {\n const parsedVariable = Parser.parseFeatureVariable(variable).throw();\n resultVariables.push(parsedVariable);\n }\n\n return resultVariables;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n try {\n const variationKey = this.getFeatureFlagVariationKey(\n visitorCode,\n featureKey,\n );\n\n return variationKey !== OFF_VARIATION_KEY;\n } catch (err) {\n if (\n err instanceof KameleoonError &&\n err.type === KameleoonException.FeatureFlagEnvironmentDisabled\n ) {\n return false;\n }\n\n throw err;\n }\n }\n\n public async getRemoteData(key: string): Promise<JSONType> {\n const remoteData = await this.requester.getRemoteData(key);\n\n return remoteData.throw();\n }\n\n public async getVisitorWarehouseAudience({\n visitorCode,\n customDataIndex,\n warehouseKey,\n }: GetVisitorWarehouseAudienceParamsType): Promise<CustomData | null> {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(\n KameleoonException.RemoteData,\n `No data found for ${warehouseKey || visitorCode} key`,\n );\n }\n\n if (\n !data[WAREHOUSE_AUDIENCE_KEY] ||\n Object.keys(data[WAREHOUSE_AUDIENCE_KEY]).length === 0\n ) {\n return null;\n }\n\n const customData = new CustomData(\n customDataIndex,\n ...Object.keys(data[WAREHOUSE_AUDIENCE_KEY]),\n );\n\n this.dataManager.storeData(visitorCode, customData);\n\n return customData;\n }\n\n public onEvent<E extends EventType>(\n event: E,\n callback: EventCallbackType<E>,\n ): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.eventManager.addEventHandler(event, callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n public isInitialized(): boolean {\n return this.initialized;\n }\n\n protected setUserConsent({\n visitorCode,\n consent,\n setData,\n }: SetUserConsentParametersType): void {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n this.consentDataStorage.update({ [visitorCode]: consent });\n\n if (consent) {\n setData({\n visitorCode,\n key: KameleoonStorageKey.VisitorCode,\n maxAge: DEFAULT_MAX_AGE,\n path: PATH,\n });\n } else {\n if (this.visitorCodeManager.consentRequired) {\n setData({\n visitorCode: '',\n key: KameleoonStorageKey.VisitorCode,\n maxAge: ZERO_MAX_AGE,\n path: PATH,\n });\n }\n }\n }\n\n private _isConsentProvided(visitorCode: string): boolean {\n const { isConsentRequired } = this.clientConfiguration;\n const consentDataResult = this.consentDataStorage.read();\n\n return (\n !isConsentRequired ||\n (consentDataResult.ok && consentDataResult.data[visitorCode])\n );\n }\n\n private _getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n }: GetFeatureVariablesParamsType): FeatureVariableType[] {\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n const variation = featureFlag.variations.find(\n (item) => item.key === variationKey,\n );\n\n if (!variation) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariationNotFound,\n variationKey,\n visitorCode,\n );\n }\n\n return variation.variables;\n }\n\n private _getActiveFeatureVariations(\n visitorCode: string,\n ): FeatureFlagVariationType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const activeVariations: FeatureFlagVariationType[] = [];\n\n const visitorData = this.dataManager.getVisitorData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n for (const featureFlag of featureFlags.values()) {\n if (!featureFlag.environmentEnabled) {\n continue;\n }\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n targetingData: visitorData,\n featureFlag,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey: featureFlag.featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n if (variationData.variationKey !== OFF_VARIATION_KEY) {\n activeVariations.push(variationData);\n }\n }\n\n return activeVariations;\n }\n\n private _getFeatureVariation(\n visitorCode: string,\n featureKey: string,\n ): Result<FeatureFlagVariationType, KameleoonError> {\n if (!this.initialized) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n ),\n );\n }\n\n if (!featureFlag.environmentEnabled) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagEnvironmentDisabled,\n featureFlag.featureKey,\n this.environment,\n ),\n );\n }\n\n const visitorData = this.dataManager.getVisitorData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n featureFlag,\n withAssignment: true,\n targetingData: visitorData,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n const { experimentId, variationId, variationKey } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n let hasJsCssVariables = false;\n\n try {\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n\n hasJsCssVariables = variables.some(({ type }) => {\n return type === VariableType.JS || type === VariableType.CSS;\n });\n } catch (_) {}\n\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n hasJsCssVariables,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n this.tracker.scheduleVisitor(\n visitorCode,\n this._isConsentProvided(visitorCode),\n );\n\n return Ok(variationData);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","constructor","a","b","siteCode","dependencies","configuration","internalConfiguration","_defineProperty","settings","clientSettings","ClientSettings","environment","externalStorage","externalEventSource","externalPackageInfo","externalVisitorCodeManager","externalRequester","externalPRNG","externals","useAbortController","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","DataStorage","KameleoonStorageKey","ClientData","targetingDataStorage","TargetingData","dataInfoStorage","DataInfo","variationDataStorage","VariationData","consentDataStorage","ConsentData","trackingStorage","TrackingData","dataManager","DataManager","dataStorage","infoStorage","cleanupInterval","urlProvider","UrlProvider","initialize","domain","networkDomain","packageInfo","requester","Requester","requestTimeout","trackRetryDelay","eventSource","KameleoonEventSource","eventManager","EventManager","clientConfiguration","ClientConfiguration","storage","updateInterval","variationConfiguration","VariationConfiguration","tracker","Tracker","trackingInterval","prng","visitorCodeManager","result","throw","initialized","ok","addData","visitorCode","validateVisitorCode","KameleoonError","KameleoonException","Initialization","arguments","length","data","Array","d","storeData","getRemoteVisitorData","shouldAddData","filters","DEFAULT_VISITOR_DATA_FILTERS","previousVisitAmount","VisitAmount","isUniqueIdentifier","getVisitorData","isMappingIdentifier","visitorData","storageVisitorData","visitsData","Parser","parseVisitorData","dataItem","isPersistentCustomData","trackConversion","goalId","revenue","Conversion","flush","scheduleVisitor","_isConsentProvided","visitorCodeKey","unsentDataVisitors","getFeatureFlags","featureFlags","resultFeatureFlags","forEach","id","featureKey","push","key","getVisitorFeatureFlags","activeVariations","_getActiveFeatureVariations","featureFlagId","getActiveFeatureFlags","resultFeatureList","Map","variation","variationKey","variationId","experimentId","variables","_getFeatureVariables","resultVariables","map","variable","parseFeatureVariable","set","getFeatureFlagVariationKey","_getFeatureVariation","getFeatureFlagVariable","variableKey","find","item","FeatureFlagVariableNotFound","type","value","getFeatureFlagVariables","parsedVariable","isFeatureFlagActive","OFF_VARIATION_KEY","err","FeatureFlagEnvironmentDisabled","getRemoteData","remoteData","getVisitorWarehouseAudience","customDataIndex","warehouseKey","RemoteData","WAREHOUSE_AUDIENCE_KEY","Object","keys","customData","CustomData","onEvent","event","callback","addEventHandler","getEngineTrackingCode","Utilities","getTrackingCode","isInitialized","setUserConsent","consent","setData","update","VisitorCode","maxAge","DEFAULT_MAX_AGE","path","PATH","consentRequired","ZERO_MAX_AGE","isConsentRequired","consentDataResult","read","featureFlag","get","FeatureFlagConfigurationNotFound","variations","FeatureFlagVariationNotFound","visitorIdentifier","getVisitorIdentifier","values","environmentEnabled","variationData","getVariation","targetingData","fireEvent","EventType","Evaluation","Err","withAssignment","hasJsCssVariables","some","VariableType","JS","CSS","_","updateCache","cacheManager","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport {\n ClientConfiguration,\n FeatureVariableType,\n JSONType,\n} from './clientConfiguration';\nimport { ClientSettings } from './clientSettings';\nimport {\n CACHE_CLEANUP_TIMEOUT,\n DEFAULT_VISITOR_DATA_FILTERS,\n OFF_VARIATION_KEY,\n} from './constants';\nimport {\n Conversion,\n CustomData,\n DataManager,\n KameleoonDataType,\n} from './kameleoonData';\nimport { WAREHOUSE_AUDIENCE_KEY } from './constants';\nimport { KameleoonError, KameleoonException } from './kameleoonError';\nimport { Requester, UrlProvider } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n DataStorage,\n ConsentDataType,\n IStorage,\n DataInfoType,\n TrackingDataType,\n} from './storage';\nimport {\n TrackConversionParamsType,\n FeatureFlagType,\n GetFeatureFlagVariableParamsType,\n FeatureVariableResultType,\n SDKCoreParameters,\n TrackingCacheItemType,\n ExternalPackageInfoType,\n RemoteVisitorDataParamsType,\n GetVisitorWarehouseAudienceParamsType,\n Environment,\n SetUserConsentParametersType,\n FeatureFlagVariableType,\n KameleoonVariationType,\n GetFeatureVariablesParamsType,\n VariableType,\n} from './types';\nimport { IVisitorCodeManager } from './visitorCodeManager';\nimport { Parser, Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { IKameleoonClient } from './kameleoonClientInterface';\nimport { TargetingDataType } from './targeting';\nimport { KameleoonEventSource } from './eventSource';\nimport { DEFAULT_MAX_AGE, PATH, ZERO_MAX_AGE } from './visitorCodeManager';\nimport { EventCallbackType, EventManager, EventType } from './eventManager';\nimport { Tracker } from './tracking';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * for communicating with Kameleoon JavaScript SDK Core, when new instance is created\n */\nexport class KameleoonClient implements IKameleoonClient {\n private variationConfiguration: VariationConfiguration;\n private clientConfiguration: ClientConfiguration;\n private dataManager: DataManager;\n private consentDataStorage: IStorage<ConsentDataType>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private initialized: boolean = false;\n private visitorCodeManager: IVisitorCodeManager;\n private eventManager: EventManager;\n private tracker: Tracker;\n private environment: Environment;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n dependencies,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n this.environment = clientSettings.environment;\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalVisitorCodeManager,\n externalRequester,\n externalPRNG,\n } = internalConfiguration.externals;\n const { useAbortController } = internalConfiguration.settings;\n const trackingCache = new CacheManager<TrackingCacheItemType>(\n CACHE_CLEANUP_TIMEOUT,\n );\n\n const clientDataStorage = new DataStorage<ClientDataType>(\n externalStorage,\n KameleoonStorageKey.ClientData,\n );\n const targetingDataStorage = new DataStorage<TargetingDataType>(\n externalStorage,\n KameleoonStorageKey.TargetingData,\n );\n const dataInfoStorage = new DataStorage<DataInfoType>(\n externalStorage,\n KameleoonStorageKey.DataInfo,\n );\n const variationDataStorage = new DataStorage<VariationDataType>(\n externalStorage,\n KameleoonStorageKey.VariationData,\n );\n const consentDataStorage = new DataStorage<ConsentDataType>(\n externalStorage,\n KameleoonStorageKey.ConsentData,\n );\n const trackingStorage = new DataStorage<TrackingDataType>(\n externalStorage,\n KameleoonStorageKey.TrackingData,\n );\n\n const dataManager = new DataManager({\n dataStorage: targetingDataStorage,\n infoStorage: dataInfoStorage,\n cleanupInterval: clientSettings.cleanupInterval,\n });\n\n const urlProvider = dependencies?.urlProvider ?? new UrlProvider();\n\n urlProvider.initialize({\n domain: clientSettings.networkDomain,\n siteCode: clientSettings.siteCode,\n packageInfo: externalPackageInfo,\n environment: clientSettings.environment,\n });\n\n const requester = new Requester({\n urlProvider,\n useAbortController,\n packageInfo: externalPackageInfo,\n externalRequester: externalRequester,\n requestTimeout: clientSettings.requestTimeout,\n trackRetryDelay: clientSettings.trackRetryDelay,\n });\n\n const eventSource = new KameleoonEventSource({\n siteCode: clientSettings.siteCode,\n externalEventSource,\n urlProvider,\n });\n\n const eventManager = new EventManager();\n\n const clientConfiguration = new ClientConfiguration({\n urlProvider,\n storage: clientDataStorage,\n updateInterval: clientSettings.updateInterval,\n dataManager,\n eventManager,\n requester,\n eventSource,\n externalVisitorCodeManager,\n });\n\n const variationConfiguration = new VariationConfiguration(\n variationDataStorage,\n externalVisitorCodeManager,\n );\n\n const tracker = new Tracker({\n dataManager,\n trackingStorage,\n\n variationConfiguration,\n requester,\n trackingInterval: clientSettings.trackingInterval,\n prng: externalPRNG,\n });\n\n this.tracker = tracker;\n this.variationConfiguration = variationConfiguration;\n this.requester = requester;\n this.trackingCache = trackingCache;\n this.dataManager = dataManager;\n this.clientConfiguration = clientConfiguration;\n this.externalPackageInfo = externalPackageInfo;\n this.consentDataStorage = consentDataStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n this.eventManager = eventManager;\n }\n\n public async initialize(): Promise<boolean> {\n const result = await this.clientConfiguration.initialize();\n result.throw();\n\n this.initialized = true;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.dataManager.storeData(visitorCode, ...data).throw();\n }\n\n public async getRemoteVisitorData({\n visitorCode,\n shouldAddData = true,\n filters = DEFAULT_VISITOR_DATA_FILTERS,\n }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]> {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { previousVisitAmount } = filters;\n\n if (\n typeof previousVisitAmount === 'number' &&\n (previousVisitAmount < 1 || previousVisitAmount > 25)\n ) {\n throw new KameleoonError(KameleoonException.VisitAmount);\n }\n\n const isUniqueIdentifier = this.dataManager.isUniqueIdentifier(visitorCode);\n\n const result = await this.requester.getVisitorData({\n visitorCode,\n filters,\n isMappingIdentifier: isUniqueIdentifier,\n });\n const data = result.throw();\n\n const { visitorData, storageVisitorData, visitsData } =\n Parser.parseVisitorData({\n data,\n filters,\n visitorCode,\n dataManager: this.dataManager,\n variationConfiguration: this.variationConfiguration,\n });\n\n for (const dataItem of storageVisitorData) {\n if (shouldAddData || this.dataManager.isPersistentCustomData(dataItem)) {\n this.addData(visitorCode, dataItem);\n }\n }\n\n // --- Note ---\n // Data on visits amount and time stamps is not returned to a user\n if (visitsData && shouldAddData) {\n this.addData(visitorCode, visitsData);\n }\n\n return visitorData;\n }\n\n public trackConversion({\n visitorCode,\n goalId,\n revenue,\n }: TrackConversionParamsType): void {\n this.addData(visitorCode, new Conversion({ goalId, revenue }));\n this.flush(visitorCode);\n }\n\n public flush(visitorCode?: string): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n if (typeof visitorCode === 'string') {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n this.tracker.scheduleVisitor(\n visitorCode,\n this._isConsentProvided(visitorCode),\n );\n\n return;\n }\n\n for (const visitorCodeKey of this.dataManager.unsentDataVisitors) {\n this.tracker.scheduleVisitor(\n visitorCodeKey,\n this._isConsentProvided(visitorCodeKey),\n );\n }\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n featureFlags.forEach(({ id, featureKey }) => {\n resultFeatureFlags.push({\n id,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n activeVariations.forEach(({ featureFlagId, featureKey }) => {\n resultFeatureFlags.push({\n id: featureFlagId,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getActiveFeatureFlags(\n visitorCode: string,\n ): Map<string, KameleoonVariationType> {\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureList: Map<string, KameleoonVariationType> = new Map();\n\n activeVariations.forEach((variation) => {\n const { variationKey, featureKey, variationId, experimentId } = variation;\n\n let variables: FeatureVariableType[] = [];\n\n if (variationId !== null && experimentId !== null) {\n variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n }\n\n const resultVariables = variables.map((variable) =>\n Parser.parseFeatureVariable(variable).throw(),\n );\n\n resultFeatureList.set(variation.featureKey, {\n key: variationKey,\n id: variationId,\n experimentId,\n variables: resultVariables,\n });\n });\n\n return resultFeatureList;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureFlagVariableType {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const variable = variables.find((item) => item.key === variableKey);\n\n if (!variable) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariableNotFound,\n variableKey,\n visitorCode,\n );\n }\n\n const { type, value } = Parser.parseFeatureVariable(variable).throw();\n\n return { type, value } as FeatureFlagVariableType;\n }\n\n public getFeatureFlagVariables(\n visitorCode: string,\n featureKey: string,\n ): FeatureVariableResultType[] {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const resultVariables: FeatureVariableResultType[] = [];\n\n for (const variable of variables) {\n const parsedVariable = Parser.parseFeatureVariable(variable).throw();\n resultVariables.push(parsedVariable);\n }\n\n return resultVariables;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n try {\n const variationKey = this.getFeatureFlagVariationKey(\n visitorCode,\n featureKey,\n );\n\n return variationKey !== OFF_VARIATION_KEY;\n } catch (err) {\n if (\n err instanceof KameleoonError &&\n err.type === KameleoonException.FeatureFlagEnvironmentDisabled\n ) {\n return false;\n }\n\n throw err;\n }\n }\n\n public async getRemoteData(key: string): Promise<JSONType> {\n const remoteData = await this.requester.getRemoteData(key);\n\n return remoteData.throw();\n }\n\n public async getVisitorWarehouseAudience({\n visitorCode,\n customDataIndex,\n warehouseKey,\n }: GetVisitorWarehouseAudienceParamsType): Promise<CustomData | null> {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(\n KameleoonException.RemoteData,\n `No data found for ${warehouseKey || visitorCode} key`,\n );\n }\n\n if (\n !data[WAREHOUSE_AUDIENCE_KEY] ||\n Object.keys(data[WAREHOUSE_AUDIENCE_KEY]).length === 0\n ) {\n return null;\n }\n\n const customData = new CustomData(\n customDataIndex,\n ...Object.keys(data[WAREHOUSE_AUDIENCE_KEY]),\n );\n\n this.dataManager.storeData(visitorCode, customData);\n\n return customData;\n }\n\n public onEvent<E extends EventType>(\n event: E,\n callback: EventCallbackType<E>,\n ): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.eventManager.addEventHandler(event, callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n public isInitialized(): boolean {\n return this.initialized;\n }\n\n protected setUserConsent({\n visitorCode,\n consent,\n setData,\n }: SetUserConsentParametersType): void {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n this.consentDataStorage.update({ [visitorCode]: consent });\n\n if (consent) {\n setData({\n visitorCode,\n key: KameleoonStorageKey.VisitorCode,\n maxAge: DEFAULT_MAX_AGE,\n path: PATH,\n });\n } else {\n if (this.visitorCodeManager.consentRequired) {\n setData({\n visitorCode: '',\n key: KameleoonStorageKey.VisitorCode,\n maxAge: ZERO_MAX_AGE,\n path: PATH,\n });\n }\n }\n }\n\n private _isConsentProvided(visitorCode: string): boolean {\n const { isConsentRequired } = this.clientConfiguration;\n const consentDataResult = this.consentDataStorage.read();\n\n return (\n !isConsentRequired ||\n (consentDataResult.ok && consentDataResult.data[visitorCode])\n );\n }\n\n private _getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n }: GetFeatureVariablesParamsType): FeatureVariableType[] {\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n const variation = featureFlag.variations.find(\n (item) => item.key === variationKey,\n );\n\n if (!variation) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariationNotFound,\n variationKey,\n visitorCode,\n );\n }\n\n return variation.variables;\n }\n\n private _getActiveFeatureVariations(\n visitorCode: string,\n ): FeatureFlagVariationType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const activeVariations: FeatureFlagVariationType[] = [];\n\n const visitorData = this.dataManager.getVisitorData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n for (const featureFlag of featureFlags.values()) {\n if (!featureFlag.environmentEnabled) {\n continue;\n }\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n targetingData: visitorData,\n featureFlag,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey: featureFlag.featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n if (variationData.variationKey !== OFF_VARIATION_KEY) {\n activeVariations.push(variationData);\n }\n }\n\n return activeVariations;\n }\n\n private _getFeatureVariation(\n visitorCode: string,\n featureKey: string,\n ): Result<FeatureFlagVariationType, KameleoonError> {\n if (!this.initialized) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n ),\n );\n }\n\n if (!featureFlag.environmentEnabled) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagEnvironmentDisabled,\n featureFlag.featureKey,\n this.environment,\n ),\n );\n }\n\n const visitorData = this.dataManager.getVisitorData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n featureFlag,\n withAssignment: true,\n targetingData: visitorData,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n const { experimentId, variationId, variationKey } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n let hasJsCssVariables = false;\n\n try {\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n\n hasJsCssVariables = variables.some(({ type }) => {\n return type === VariableType.JS || type === VariableType.CSS;\n });\n } catch (_) {}\n\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n hasJsCssVariables,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n this.tracker.scheduleVisitor(\n visitorCode,\n this._isConsentProvided(visitorCode),\n );\n\n return Ok(variationData);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Browser=void 0;var _requester=require("../requester"),_types=require("./types"),_types2=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 Browser{constructor(a,b){_defineProperty(this,"status",void 0),_defineProperty(this,"browser",void 0),_defineProperty(this,"version",void 0),this.browser=a,this.version=b,this.status=_types2.TrackingStatus.Unsent}get url(){if(!this.browser)return"";const a=this.version?_requester.UrlParameter.BrowserVersion+this.version:"";return _requester.UrlEventType.StaticData+_requester.UrlParameter.Browser+this.browser+_requester.UrlParameter.BrowserIndex+_types.BrowserIndexMap[this.browser]+a}get data(){return{browser:this.browser,type:_types.KameleoonData.Browser,version:this.version,status:this.status}}static _fromRaw(a){const{browser:b,version:c,status:d}=a,e=new Browser(b,c);return e.status=d,e}static _fromVisit(a){if(a.staticDataEvent){const{browser:b,browserIndex:c,browserVersion:d}=a.staticDataEvent.data;if(b||"number"==typeof c){const a=b??_types.BrowserTypeMap[c];return d?new Browser(a,d):new Browser(a)}}}}exports.Browser=Browser;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Browser=void 0;var _requester=require("../requester"),_types=require("./types"),_types2=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 Browser{constructor(a,b){_defineProperty(this,"status",void 0),_defineProperty(this,"browser",void 0),_defineProperty(this,"version",void 0),this.browser=a,this.version=b,this.status=_types2.TrackingStatus.Unsent}get url(){if(!this.browser)return"";const a=this.version?_requester.UrlParameter.BrowserVersion+this.version:"";return _requester.UrlEventType.StaticData+_requester.UrlParameter.Browser+this.browser+_requester.UrlParameter.BrowserIndex+_types.BrowserIndexMap[this.browser]+a}get data(){return{browser:this.browser,type:_types.KameleoonData.Browser,version:this.version,status:this.status}}static _fromRaw(a){const{browser:b,version:c,status:d}=a,e=new Browser(b,c);return e.status=d,e}static _fromVisit(a){if(a.staticDataEvent){const{browser:b,browserIndex:c,browserVersion:d}=a.staticDataEvent.data;if(b||"number"==typeof c){const a=null!==b&&void 0!==b?b:_types.BrowserTypeMap[c];return d?new Browser(a,d):new Browser(a)}}}}exports.Browser=Browser;
2
2
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","names":["Browser","constructor","browser","version","_defineProperty","status","TrackingStatus","Unsent","url","browserVersion","UrlParameter","BrowserVersion","UrlEventType","StaticData","BrowserIndex","BrowserIndexMap","data","type","KameleoonData","_fromRaw","browserType","_fromVisit","visit","staticDataEvent","browserIndex","BrowserTypeMap","exports"],"sources":["../../src/kameleoonData/browser.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n BrowserDataType,\n BrowserType,\n BrowserIndexMap,\n IKameleoonData,\n KameleoonData,\n BrowserTypeMap,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * Browser - a class for creating an instance for browser of a certain type\n * */\nexport class Browser implements IKameleoonData {\n public status: TrackingStatus;\n\n private browser: BrowserType;\n private version?: number;\n\n /**\n * @param {BrowserType} browser - one of the browser types available for data, if browser can not be found in a list, it can be marked as `BrowserType.Other`\n * @param {number | undefined} version - version of the browser, floating point number represents major and minor version of the browser\n * @example\n * ```ts\n * const browser = new Browser(BrowserType.Chrome, 86);\n * const browser = new Browser(BrowserType.Safari, 14.1);\n * ```\n * */\n constructor(browser: BrowserType, version?: number) {\n this.browser = browser;\n this.version = version;\n this.status = TrackingStatus.Unsent;\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.browser) {\n return '';\n }\n\n const browserVersion = this.version\n ? UrlParameter.BrowserVersion + this.version\n : '';\n\n return (\n UrlEventType.StaticData +\n UrlParameter.Browser +\n this.browser +\n UrlParameter.BrowserIndex +\n BrowserIndexMap[this.browser] +\n browserVersion\n );\n }\n\n get data(): BrowserDataType {\n return {\n browser: this.browser,\n type: KameleoonData.Browser,\n version: this.version,\n status: this.status,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a Browser instance from raw data\n * @param {BrowserDataType} data - a raw data\n * @return {Browser} a Browser instance\n * */\n public static _fromRaw(data: BrowserDataType): Browser {\n const { browser: browserType, version, status } = data;\n const browser = new Browser(browserType, version);\n\n browser.status = status;\n\n return browser;\n }\n\n /**\n * @private\n * @method _fromVisit - an internal method for creating an instance of Browser class from a visit\n * @param {VisitType} visit - a visit\n * @returns {Browser | undefined} an instance of Browser class or undefined if browser can not be found among visits\n * */\n public static _fromVisit(visit: VisitType): Browser | undefined {\n if (!visit.staticDataEvent) {\n return undefined;\n }\n\n const {\n browser: browserType,\n browserIndex,\n browserVersion,\n } = visit.staticDataEvent.data;\n\n if (browserType || typeof browserIndex === 'number') {\n const browser = browserType ?? BrowserTypeMap[browserIndex as number];\n\n if (browserVersion) {\n return new Browser(browser, browserVersion);\n } else {\n return new Browser(browser);\n }\n }\n\n return undefined;\n }\n}\n"],"mappings":"yrBAeO,KAAM,CAAAA,OAAkC,CAe7CC,WAAWA,CAACC,CAAoB,CAAEC,CAAgB,CAAE,CAAAC,eAAA,uBAAAA,eAAA,wBAAAA,eAAA,wBAClD,IAAI,CAACF,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,MAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,CAIhB,GAAI,CAAC,IAAI,CAACN,OAAO,CACf,MAAO,EAAE,CAGX,KAAM,CAAAO,CAAc,CAAG,IAAI,CAACN,OAAO,CAC/BO,uBAAY,CAACC,cAAc,CAAG,IAAI,CAACR,OAAO,CAC1C,EAAE,CAEN,MACE,CAAAS,uBAAY,CAACC,UAAU,CACvBH,uBAAY,CAACV,OAAO,CACpB,IAAI,CAACE,OAAO,CACZQ,uBAAY,CAACI,YAAY,CACzBC,sBAAe,CAAC,IAAI,CAACb,OAAO,CAAC,CAC7BO,CAEJ,CAEA,GAAI,CAAAO,IAAIA,CAAA,CAAoB,CAC1B,MAAO,CACLd,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBe,IAAI,CAAEC,oBAAa,CAAClB,OAAO,CAC3BG,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBE,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CAQA,MAAc,CAAAc,QAAQA,CAACH,CAAqB,CAAW,MAC/C,CAAEd,OAAO,CAAEkB,CAAW,CAAEjB,OAAO,CAAPA,CAAO,CAAEE,MAAM,CAANA,CAAO,CAAC,CAAGW,CAAI,CAChDd,CAAO,CAAG,GAAI,CAAAF,OAAO,CAACoB,CAAW,CAAEjB,CAAO,CAAC,CAIjD,MAFA,CAAAD,CAAO,CAACG,MAAM,CAAGA,CAAM,CAEhBH,CACT,CAQA,MAAc,CAAAmB,UAAUA,CAACC,CAAgB,CAAuB,CAC9D,GAAKA,CAAK,CAACC,eAAe,EAI1B,KAAM,CACJrB,OAAO,CAAEkB,CAAW,CACpBI,YAAY,CAAZA,CAAY,CACZf,cAAc,CAAdA,CACF,CAAC,CAAGa,CAAK,CAACC,eAAe,CAACP,IAAI,CAE9B,GAAII,CAAW,EAA4B,QAAQ,EAAhC,MAAO,CAAAI,CAAyB,CAAE,CACnD,KAAM,CAAAtB,CAAO,CAAGkB,CAAW,EAAIK,qBAAc,CAACD,CAAY,CAAW,CAAC,MAElE,CAAAf,CAAc,CACT,GAAI,CAAAT,OAAO,CAACE,CAAO,CAAEO,CAAc,CAAC,CAEpC,GAAI,CAAAT,OAAO,CAACE,CAAO,CAE9B,CAAC,CAGH,CACF,CAACwB,OAAA,CAAA1B,OAAA,CAAAA,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"browser.js","names":["Browser","constructor","browser","version","_defineProperty","status","TrackingStatus","Unsent","url","browserVersion","UrlParameter","BrowserVersion","UrlEventType","StaticData","BrowserIndex","BrowserIndexMap","data","type","KameleoonData","_fromRaw","browserType","_fromVisit","visit","staticDataEvent","browserIndex","BrowserTypeMap","exports"],"sources":["../../src/kameleoonData/browser.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n BrowserDataType,\n BrowserType,\n BrowserIndexMap,\n IKameleoonData,\n KameleoonData,\n BrowserTypeMap,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * Browser - a class for creating an instance for browser of a certain type\n * */\nexport class Browser implements IKameleoonData {\n public status: TrackingStatus;\n\n private browser: BrowserType;\n private version?: number;\n\n /**\n * @param {BrowserType} browser - one of the browser types available for data, if browser can not be found in a list, it can be marked as `BrowserType.Other`\n * @param {number | undefined} version - version of the browser, floating point number represents major and minor version of the browser\n * @example\n * ```ts\n * const browser = new Browser(BrowserType.Chrome, 86);\n * const browser = new Browser(BrowserType.Safari, 14.1);\n * ```\n * */\n constructor(browser: BrowserType, version?: number) {\n this.browser = browser;\n this.version = version;\n this.status = TrackingStatus.Unsent;\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.browser) {\n return '';\n }\n\n const browserVersion = this.version\n ? UrlParameter.BrowserVersion + this.version\n : '';\n\n return (\n UrlEventType.StaticData +\n UrlParameter.Browser +\n this.browser +\n UrlParameter.BrowserIndex +\n BrowserIndexMap[this.browser] +\n browserVersion\n );\n }\n\n get data(): BrowserDataType {\n return {\n browser: this.browser,\n type: KameleoonData.Browser,\n version: this.version,\n status: this.status,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a Browser instance from raw data\n * @param {BrowserDataType} data - a raw data\n * @return {Browser} a Browser instance\n * */\n public static _fromRaw(data: BrowserDataType): Browser {\n const { browser: browserType, version, status } = data;\n const browser = new Browser(browserType, version);\n\n browser.status = status;\n\n return browser;\n }\n\n /**\n * @private\n * @method _fromVisit - an internal method for creating an instance of Browser class from a visit\n * @param {VisitType} visit - a visit\n * @returns {Browser | undefined} an instance of Browser class or undefined if browser can not be found among visits\n * */\n public static _fromVisit(visit: VisitType): Browser | undefined {\n if (!visit.staticDataEvent) {\n return undefined;\n }\n\n const {\n browser: browserType,\n browserIndex,\n browserVersion,\n } = visit.staticDataEvent.data;\n\n if (browserType || typeof browserIndex === 'number') {\n const browser = browserType ?? BrowserTypeMap[browserIndex as number];\n\n if (browserVersion) {\n return new Browser(browser, browserVersion);\n } else {\n return new Browser(browser);\n }\n }\n\n return undefined;\n }\n}\n"],"mappings":"yrBAeO,KAAM,CAAAA,OAAkC,CAe7CC,WAAWA,CAACC,CAAoB,CAAEC,CAAgB,CAAE,CAAAC,eAAA,uBAAAA,eAAA,wBAAAA,eAAA,wBAClD,IAAI,CAACF,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,MAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,CAIhB,GAAI,CAAC,IAAI,CAACN,OAAO,CACf,MAAO,EAAE,CAGX,KAAM,CAAAO,CAAc,CAAG,IAAI,CAACN,OAAO,CAC/BO,uBAAY,CAACC,cAAc,CAAG,IAAI,CAACR,OAAO,CAC1C,EAAE,CAEN,MACE,CAAAS,uBAAY,CAACC,UAAU,CACvBH,uBAAY,CAACV,OAAO,CACpB,IAAI,CAACE,OAAO,CACZQ,uBAAY,CAACI,YAAY,CACzBC,sBAAe,CAAC,IAAI,CAACb,OAAO,CAAC,CAC7BO,CAEJ,CAEA,GAAI,CAAAO,IAAIA,CAAA,CAAoB,CAC1B,MAAO,CACLd,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBe,IAAI,CAAEC,oBAAa,CAAClB,OAAO,CAC3BG,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBE,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CAQA,MAAc,CAAAc,QAAQA,CAACH,CAAqB,CAAW,MAC/C,CAAEd,OAAO,CAAEkB,CAAW,CAAEjB,OAAO,CAAPA,CAAO,CAAEE,MAAM,CAANA,CAAO,CAAC,CAAGW,CAAI,CAChDd,CAAO,CAAG,GAAI,CAAAF,OAAO,CAACoB,CAAW,CAAEjB,CAAO,CAAC,CAIjD,MAFA,CAAAD,CAAO,CAACG,MAAM,CAAGA,CAAM,CAEhBH,CACT,CAQA,MAAc,CAAAmB,UAAUA,CAACC,CAAgB,CAAuB,CAC9D,GAAKA,CAAK,CAACC,eAAe,EAI1B,KAAM,CACJrB,OAAO,CAAEkB,CAAW,CACpBI,YAAY,CAAZA,CAAY,CACZf,cAAc,CAAdA,CACF,CAAC,CAAGa,CAAK,CAACC,eAAe,CAACP,IAAI,CAE9B,GAAII,CAAW,EAA4B,QAAQ,EAAhC,MAAO,CAAAI,CAAyB,CAAE,CACnD,KAAM,CAAAtB,CAAO,QAAGkB,CAAW,WAAXA,CAAW,CAAXA,CAAW,CAAIK,qBAAc,CAACD,CAAY,CAAW,CAAC,MAElE,CAAAf,CAAc,CACT,GAAI,CAAAT,OAAO,CAACE,CAAO,CAAEO,CAAc,CAAC,CAEpC,GAAI,CAAAT,OAAO,CAACE,CAAO,CAE9B,CAAC,CAGH,CACF,CAACwB,OAAA,CAAA1B,OAAA,CAAAA,OAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataManager=void 0;var _targeting=require("../targeting"),_dataProcessor=require("./dataProcessor"),_customData=require("./customData"),_types=require("./types"),_storage=require("../storage"),_clientConfiguration=require("../clientConfiguration"),_utilities=require("../utilities"),_conversion=require("./conversion"),_pageView=require("./pageView"),_browser=require("./browser"),_device=require("./device"),_geolocation=require("./geolocation"),_types2=require("../types"),_operatingSystem=require("./operatingSystem");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 DataManager{constructor(a){let{dataStorage:b,infoStorage:c,cleanupInterval:d}=a;if(_defineProperty(this,"dataStorage",void 0),_defineProperty(this,"infoStorage",void 0),_defineProperty(this,"dataProcessor",void 0),_defineProperty(this,"targetingTrees",new Map),_defineProperty(this,"mappingIdentifierCustomDataIndex",null),_defineProperty(this,"persistentCustomDataIndexes",new Set),_defineProperty(this,"localCustomDataIndexes",new Set),_defineProperty(this,"cleanupIntervalId",null),this.dataStorage=b,this.infoStorage=c,this.dataProcessor=new _dataProcessor.DataProcessor(d),d){const a=()=>{this.cleanupData()};try{this.cleanupIntervalId=setInterval(a,d)}catch(a){throw this.cleanupIntervalId&&clearInterval(this.cleanupIntervalId),a}}}getUnsentData(a){const b=this.infoStorage.read();if(!b.ok)return[];const c=b.data,d=this.getVisitorData(a);if(!c.unsentData[a]||!d)return[];const e=c.unsentData[a],f=c.nextVisitTime<=Date.now(),g=a=>{let{status:b,key:c,cdIndex:d}=a;return!!("number"==typeof d&&this.persistentCustomDataIndexes.has(d)&&f)||e.includes(c)&&b===_types2.TrackingStatus.Unsent};return f&&(c.nextVisitTime=Date.now()+_storage.VISIT_DURATION,this.infoStorage.write(c)),this.getDataFromRaw(d,g)}getPendingData(a){const b=this.getVisitorData(a);if(!b)return[];return this.getDataFromRaw(b,a=>{let{status:b}=a;return b===_types2.TrackingStatus.Pending})}getDataFromRaw(a,b){const c=[];for(const[d,e]of Object.entries(a))if(e)switch(d){case _types.KameleoonData.CustomData:{for(const a of Object.values(e)){if(!a)continue;const{status:e,index:f}=a;if(b({status:e,key:d,cdIndex:f})){const b=_customData.CustomData._fromRaw(a);c.push(b)}}break}case _types.KameleoonData.Conversion:{for(const a of Object.values(e))if(a&&b({status:a.status,key:d})){const b=_conversion.Conversion._fromRaw(a);c.push(b)}break}case _types.KameleoonData.PageView:{for(const a of Object.values(e))if(b({status:a.status,key:d})){const b=_pageView.PageView._fromRaw(a);c.push(b)}break}case _types.KameleoonData.GeolocationData:{const a=e;if(!e)continue;if(b({status:a.status,key:d})){const b=_geolocation.GeolocationData._fromRaw(a);c.push(b)}break}case _types.KameleoonData.Browser:{const a=e;if(b({status:a.status,key:d})){const b=_browser.Browser._fromRaw(a);c.push(b)}break}case _types.KameleoonData.Device:{const a=e;if(b({status:a.status,key:d})){const b=_device.Device._fromRaw(a);c.push(b)}break}case _types.KameleoonData.OperatingSystem:{const a=e;if(b({status:a.status,key:d})){const b=_operatingSystem.OperatingSystem._fromRaw(a);c.push(b)}}}return c}storeTrackedData(a){this.storeData(a);const b=this.infoStorage.read();if(b.ok){const c=b.data.unsentData;for(const[b,d]of Object.entries(a)){if(!c[b])return;const a=new Set(c[b]);d.forEach(b=>{let{data:c}=b;a.has(c.type)&&a.delete(c.type)});const e=d.some(a=>{let{data:b}=a;if(b.type!==_types.KameleoonData.CustomData)return!1;const{index:c}=b;return this.persistentCustomDataIndexes.has(c)||this.mappingIdentifierCustomDataIndex===c});e&&a.add(_types.KameleoonData.CustomData),c[b]=Array.from(a),c[b].length||delete c[b]}this.infoStorage.write(b.data)}}storeData(a){const b=this.dataStorage.read(),c=this.infoStorage.read();if(!b.ok)return b;if(!c.ok)return c;const d=b.data,e=c.data;if("string"==typeof a){for(var f=arguments.length,g=Array(1<f?f-1:0),h=1;h<f;h++)g[h-1]=arguments[h];this.mutUpdateTargetingData({infoData:e,targetingData:d,visitorCode:a,kameleoonData:g})}else for(const[b,c]of Object.entries(a))this.mutUpdateTargetingData({infoData:e,targetingData:d,visitorCode:b,kameleoonData:c});return this.cleanupData(),this.infoStorage.write(c.data),this.dataStorage.write(d)}getTree(a){if(this.targetingTrees.has(a.id))return this.targetingTrees.get(a.id);const b=new _targeting.Tree(a);return this.targetingTrees.set(a.id,b),b}clearTrees(){this.targetingTrees.clear()}isPersistentCustomData(a){return!!this.persistentCustomDataIndexes.size&&!!_utilities.Utilities.isCustomData(a)&&this.persistentCustomDataIndexes.has(a.data.index)}isUniqueIdentifier(a){const b=this.getVisitorData(a),c=null===b||void 0===b?void 0:b[_types.KameleoonData.UniqueIdentifier];return(null===c||void 0===c?void 0:c.value)??!1}getVisitorIdentifier(a){const b=this.getVisitorData(a);if(!b)return a;const c=b[_types.KameleoonData.CustomData];if(!c||null===this.mappingIdentifierCustomDataIndex)return a;const d=c[this.mappingIdentifierCustomDataIndex];return d&&d.isIdentifier?d.value[0]:a}getVisitorData(a){this.cleanupData();const b=this.dataStorage.read();if(b.ok){const{visitorReference:c,data:d}=this.dataProcessor.dereferenceData(b.data,a);return d[c]}}getVisitorStoredDataTypes(a){const b=this.getVisitorData(a);return b?new Set(Object.keys(b)):new Set}getLinkedVisitor(a){const b=this.dataStorage.read();if(!b.ok)return null;if("string"==typeof b.data[a])return b.data[a];if(null===this.mappingIdentifierCustomDataIndex)return null;const c=b.data[a];if(!c)return null;const d=c[_types.KameleoonData.CustomData];return d&&d[this.mappingIdentifierCustomDataIndex]?d[this.mappingIdentifierCustomDataIndex].value[0]:null}mutUpdateTargetingData(a){let{infoData:b,visitorCode:c,kameleoonData:d,targetingData:e}=a;for(const f of d){f.data.type===_types.KameleoonData.CustomData&&this.processCustomData({customData:f,mutData:e,visitorCode:c});const a=this.dataProcessor.mutUpdateData({visitorCode:c,mutData:e,dataItem:f}),d=b.nextDataCleanup;(!d||d&&a<d)&&(b.nextDataCleanup=a),f.data.status===_types2.TrackingStatus.Unsent&&this.dataProcessor.mutAddUnsentData({mutData:b,visitorCode:c,dataType:f.data.type})}}cleanupData(){const a=this.dataStorage.read(),b=this.infoStorage.read();if(!a.ok||!b.ok)return;const c=a.data,d=b.data,e=d.nextDataCleanup;if(e&&e<Date.now()){const a=this.dataProcessor.mutCleanupData(c);d.nextDataCleanup=a||void 0,this.infoStorage.write(d),this.dataStorage.write(c)}}processCustomData(a){let{mutData:b,customData:c,visitorCode:d}=a;const{data:e}=c,f=!!(e.value.length&&e.value[0].length);this.mappingIdentifierCustomDataIndex===e.index&&f&&(c._isMappingIdentifier=!0,d!==e.value[0]&&this.dataProcessor.createReference({mutData:b,visitorCode:d,linkedVisitor:e.value[0]})),this.localCustomDataIndexes.has(e.index)&&(c.status=_types2.TrackingStatus.Sent)}get unsentDataVisitors(){const a=this.infoStorage.read();return a.ok?Object.keys(a.data.unsentData):[]}get identifierCustomDataIndex(){return this.mappingIdentifierCustomDataIndex}get trees(){return this.targetingTrees}get storedCustomDataIndexes(){const a=this.dataStorage.read();if(!a.ok)return new Set;const b=a.data;if(!(_types.KameleoonData.CustomData in b))return new Set;const c=new Set;for(const a in Object.keys(b[_types.KameleoonData.CustomData]))c.add(+a);return c}set customDataIndexes(a){var b;const[c,d]=[[],[]];a.forEach(a=>{a.localOnly&&c.push(a.index),a.scope===_clientConfiguration.CustomDataScope.Visitor&&d.push(a.index)}),this.mappingIdentifierCustomDataIndex=(null===(b=a.find(a=>a.isMappingIdentifier))||void 0===b?void 0:b.index)||null,this.localCustomDataIndexes=new Set(c),this.persistentCustomDataIndexes=new Set(d)}}exports.DataManager=DataManager;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataManager=void 0;var _targeting=require("../targeting"),_dataProcessor=require("./dataProcessor"),_customData=require("./customData"),_types=require("./types"),_storage=require("../storage"),_clientConfiguration=require("../clientConfiguration"),_utilities=require("../utilities"),_conversion=require("./conversion"),_pageView=require("./pageView"),_browser=require("./browser"),_device=require("./device"),_geolocation=require("./geolocation"),_types2=require("../types"),_operatingSystem=require("./operatingSystem");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 DataManager{constructor(a){let{dataStorage:b,infoStorage:c,cleanupInterval:d}=a;if(_defineProperty(this,"dataStorage",void 0),_defineProperty(this,"infoStorage",void 0),_defineProperty(this,"dataProcessor",void 0),_defineProperty(this,"targetingTrees",new Map),_defineProperty(this,"mappingIdentifierCustomDataIndex",null),_defineProperty(this,"persistentCustomDataIndexes",new Set),_defineProperty(this,"localCustomDataIndexes",new Set),_defineProperty(this,"cleanupIntervalId",null),this.dataStorage=b,this.infoStorage=c,this.dataProcessor=new _dataProcessor.DataProcessor(d),d){const a=()=>{this.cleanupData()};try{this.cleanupIntervalId=setInterval(a,d)}catch(a){throw this.cleanupIntervalId&&clearInterval(this.cleanupIntervalId),a}}}getUnsentData(a){const b=this.infoStorage.read();if(!b.ok)return[];const c=b.data,d=this.getVisitorData(a);if(!c.unsentData[a]||!d)return[];const e=c.unsentData[a],f=c.nextVisitTime<=Date.now(),g=a=>{let{status:b,key:c,cdIndex:d}=a;return!!("number"==typeof d&&this.persistentCustomDataIndexes.has(d)&&f)||e.includes(c)&&b===_types2.TrackingStatus.Unsent};return f&&(c.nextVisitTime=Date.now()+_storage.VISIT_DURATION,this.infoStorage.write(c)),this.getDataFromRaw(d,g)}getPendingData(a){const b=this.getVisitorData(a);if(!b)return[];return this.getDataFromRaw(b,a=>{let{status:b}=a;return b===_types2.TrackingStatus.Pending})}getDataFromRaw(a,b){const c=[];for(const[d,e]of Object.entries(a))if(e)switch(d){case _types.KameleoonData.CustomData:{for(const a of Object.values(e)){if(!a)continue;const{status:e,index:f}=a;if(b({status:e,key:d,cdIndex:f})){const b=_customData.CustomData._fromRaw(a);c.push(b)}}break}case _types.KameleoonData.Conversion:{for(const a of Object.values(e))if(a&&b({status:a.status,key:d})){const b=_conversion.Conversion._fromRaw(a);c.push(b)}break}case _types.KameleoonData.PageView:{for(const a of Object.values(e))if(b({status:a.status,key:d})){const b=_pageView.PageView._fromRaw(a);c.push(b)}break}case _types.KameleoonData.GeolocationData:{const a=e;if(!e)continue;if(b({status:a.status,key:d})){const b=_geolocation.GeolocationData._fromRaw(a);c.push(b)}break}case _types.KameleoonData.Browser:{const a=e;if(b({status:a.status,key:d})){const b=_browser.Browser._fromRaw(a);c.push(b)}break}case _types.KameleoonData.Device:{const a=e;if(b({status:a.status,key:d})){const b=_device.Device._fromRaw(a);c.push(b)}break}case _types.KameleoonData.OperatingSystem:{const a=e;if(b({status:a.status,key:d})){const b=_operatingSystem.OperatingSystem._fromRaw(a);c.push(b)}}}return c}storeTrackedData(a){this.storeData(a);const b=this.infoStorage.read();if(b.ok){const c=b.data.unsentData;for(const[b,d]of Object.entries(a)){if(!c[b])return;const a=new Set(c[b]);d.forEach(b=>{let{data:c}=b;a.has(c.type)&&a.delete(c.type)});const e=d.some(a=>{let{data:b}=a;if(b.type!==_types.KameleoonData.CustomData)return!1;const{index:c}=b;return this.persistentCustomDataIndexes.has(c)||this.mappingIdentifierCustomDataIndex===c});e&&a.add(_types.KameleoonData.CustomData),c[b]=Array.from(a),c[b].length||delete c[b]}this.infoStorage.write(b.data)}}storeData(a){const b=this.dataStorage.read(),c=this.infoStorage.read();if(!b.ok)return b;if(!c.ok)return c;const d=b.data,e=c.data;if("string"==typeof a){for(var f=arguments.length,g=Array(1<f?f-1:0),h=1;h<f;h++)g[h-1]=arguments[h];this.mutUpdateTargetingData({infoData:e,targetingData:d,visitorCode:a,kameleoonData:g})}else for(const[b,c]of Object.entries(a))this.mutUpdateTargetingData({infoData:e,targetingData:d,visitorCode:b,kameleoonData:c});return this.cleanupData(),this.infoStorage.write(c.data),this.dataStorage.write(d)}getTree(a){if(this.targetingTrees.has(a.id))return this.targetingTrees.get(a.id);const b=new _targeting.Tree(a);return this.targetingTrees.set(a.id,b),b}clearTrees(){this.targetingTrees.clear()}isPersistentCustomData(a){return!!this.persistentCustomDataIndexes.size&&!!_utilities.Utilities.isCustomData(a)&&this.persistentCustomDataIndexes.has(a.data.index)}isUniqueIdentifier(a){var b;const c=this.getVisitorData(a),d=null===c||void 0===c?void 0:c[_types.KameleoonData.UniqueIdentifier];return!(null===(b=null===d||void 0===d?void 0:d.value)||void 0===b)&&b}getVisitorIdentifier(a){const b=this.getVisitorData(a);if(!b)return a;const c=b[_types.KameleoonData.CustomData];if(!c||null===this.mappingIdentifierCustomDataIndex)return a;const d=c[this.mappingIdentifierCustomDataIndex];return d&&d.isIdentifier?d.value[0]:a}getVisitorData(a){this.cleanupData();const b=this.dataStorage.read();if(b.ok){const{visitorReference:c,data:d}=this.dataProcessor.dereferenceData(b.data,a);return d[c]}}getVisitorStoredDataTypes(a){const b=this.getVisitorData(a);return b?new Set(Object.keys(b)):new Set}getLinkedVisitor(a){const b=this.dataStorage.read();if(!b.ok)return null;if("string"==typeof b.data[a])return b.data[a];if(null===this.mappingIdentifierCustomDataIndex)return null;const c=b.data[a];if(!c)return null;const d=c[_types.KameleoonData.CustomData];return d&&d[this.mappingIdentifierCustomDataIndex]?d[this.mappingIdentifierCustomDataIndex].value[0]:null}mutUpdateTargetingData(a){let{infoData:b,visitorCode:c,kameleoonData:d,targetingData:e}=a;for(const f of d){f.data.type===_types.KameleoonData.CustomData&&this.processCustomData({customData:f,mutData:e,visitorCode:c});const a=this.dataProcessor.mutUpdateData({visitorCode:c,mutData:e,dataItem:f}),d=b.nextDataCleanup;(!d||d&&a<d)&&(b.nextDataCleanup=a),f.data.status===_types2.TrackingStatus.Unsent&&this.dataProcessor.mutAddUnsentData({mutData:b,visitorCode:c,dataType:f.data.type})}}cleanupData(){const a=this.dataStorage.read(),b=this.infoStorage.read();if(!a.ok||!b.ok)return;const c=a.data,d=b.data,e=d.nextDataCleanup;if(e&&e<Date.now()){const a=this.dataProcessor.mutCleanupData(c);d.nextDataCleanup=a||void 0,this.infoStorage.write(d),this.dataStorage.write(c)}}processCustomData(a){let{mutData:b,customData:c,visitorCode:d}=a;const{data:e}=c,f=!!(e.value.length&&e.value[0].length);this.mappingIdentifierCustomDataIndex===e.index&&f&&(c._isMappingIdentifier=!0,d!==e.value[0]&&this.dataProcessor.createReference({mutData:b,visitorCode:d,linkedVisitor:e.value[0]})),this.localCustomDataIndexes.has(e.index)&&(c.status=_types2.TrackingStatus.Sent)}get unsentDataVisitors(){const a=this.infoStorage.read();return a.ok?Object.keys(a.data.unsentData):[]}get identifierCustomDataIndex(){return this.mappingIdentifierCustomDataIndex}get trees(){return this.targetingTrees}get storedCustomDataIndexes(){const a=this.dataStorage.read();if(!a.ok)return new Set;const b=a.data;if(!(_types.KameleoonData.CustomData in b))return new Set;const c=new Set;for(const a in Object.keys(b[_types.KameleoonData.CustomData]))c.add(+a);return c}set customDataIndexes(a){var b;const[c,d]=[[],[]];a.forEach(a=>{a.localOnly&&c.push(a.index),a.scope===_clientConfiguration.CustomDataScope.Visitor&&d.push(a.index)}),this.mappingIdentifierCustomDataIndex=(null===(b=a.find(a=>a.isMappingIdentifier))||void 0===b?void 0:b.index)||null,this.localCustomDataIndexes=new Set(c),this.persistentCustomDataIndexes=new Set(d)}}exports.DataManager=DataManager;
2
2
  //# sourceMappingURL=dataManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataManager.js","names":["DataManager","constructor","a","dataStorage","infoStorage","cleanupInterval","_defineProperty","Map","Set","dataProcessor","DataProcessor","cleanupCallback","cleanupData","cleanupIntervalId","setInterval","err","clearInterval","getUnsentData","visitorCode","infoResult","read","ok","infoData","data","targetingData","getVisitorData","unsentData","unsentDataKeys","isNextVisit","nextVisitTime","Date","now","filter","status","key","cdIndex","persistentCustomDataIndexes","has","includes","TrackingStatus","Unsent","VISIT_DURATION","write","getDataFromRaw","getPendingData","Pending","resultData","Object","entries","KameleoonData","CustomData","customData","values","index","customDataItem","_fromRaw","push","Conversion","conversion","PageView","pageView","pageViewItem","GeolocationData","geolocationData","geolocationItem","Browser","browserData","browserItem","Device","deviceData","deviceItem","OperatingSystem","osData","osItem","storeTrackedData","storeData","kameleoonData","forEach","b","type","delete","hasPersistentCustomData","some","mappingIdentifierCustomDataIndex","add","Array","from","length","firstParameter","result","f","arguments","secondParameter","h","mutUpdateTargetingData","getTree","segment","targetingTrees","id","get","targetingTree","Tree","set","clearTrees","clear","isPersistentCustomData","dataItem","size","Utilities","isCustomData","isUniqueIdentifier","uniqueIdentifier","UniqueIdentifier","value","getVisitorIdentifier","customDataValue","isIdentifier","storageData","visitorReference","dereferenceData","getVisitorStoredDataTypes","keys","getLinkedVisitor","visitorData","processCustomData","mutData","expirationTime","mutUpdateData","nextCleanup","nextDataCleanup","mutAddUnsentData","dataType","nextCleanupTime","mutCleanupData","isDataValid","_isMappingIdentifier","createReference","linkedVisitor","localCustomDataIndexes","Sent","unsentDataVisitors","identifierCustomDataIndex","trees","storedCustomDataIndexes","indexes","customDataIndexes","customDataLocalOnlyIndexes","localOnly","scope","CustomDataScope","Visitor","find","isMappingIdentifier","exports"],"sources":["../../src/kameleoonData/dataManager.ts"],"sourcesContent":["import { Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { SegmentType, TargetingDataType, Tree } from 'src/targeting';\nimport { DataProcessor } from './dataProcessor';\nimport { CustomData } from './customData';\nimport {\n BrowserDataType,\n CustomDataType,\n DataFilterType,\n DataManagerParametersType,\n DeviceDataType,\n GeolocationDataType,\n KameleoonData,\n KameleoonDataType,\n KameleoonVisitorDataType,\n MutUpdateTargetingDataParametersType,\n OperatingSystemDataType,\n PageViewDataType,\n ProcessCustomDataManagerParametersType,\n VisitorsDataType,\n} from './types';\nimport { IStorage, VISIT_DURATION } from 'src/storage';\nimport {\n CustomDataConfigurationType,\n CustomDataScope,\n} from 'src/clientConfiguration';\nimport { Utilities } from 'src/utilities';\nimport { DataInfoType } from 'src/storage/types';\nimport { Conversion } from './conversion';\nimport { PageView } from './pageView';\nimport { Browser } from './browser';\nimport { Device } from './device';\nimport { GeolocationData } from './geolocation';\nimport { TrackingStatus } from 'src/types';\nimport { OperatingSystem } from './operatingSystem';\n\ninterface IDataManager {\n storeData(data: VisitorsDataType): Result<void, KameleoonError>;\n storeTrackedData(data: VisitorsDataType): void;\n getTree(segment: SegmentType): Tree;\n clearTrees(): void;\n isPersistentCustomData(dataItem: KameleoonDataType): dataItem is CustomData;\n isUniqueIdentifier(visitorCode: string): boolean;\n getLinkedVisitor(visitorCode: string, index: number | null): string | null;\n getVisitorData(visitorCode: string): KameleoonVisitorDataType | undefined;\n getVisitorIdentifier(visitorCode: string): string;\n getPendingData(visitorCode: string): KameleoonDataType[];\n getUnsentData(visitorCode: string): KameleoonDataType[];\n getVisitorStoredDataTypes(visitorCode: string): Set<KameleoonData>;\n readonly identifierCustomDataIndex: number | null;\n readonly storedCustomDataIndexes: Set<number>;\n readonly trees: Map<string, Tree>;\n readonly unsentDataVisitors: string[];\n}\n\nexport class DataManager implements IDataManager {\n private dataStorage: IStorage<TargetingDataType>;\n private infoStorage: IStorage<DataInfoType>;\n private dataProcessor: DataProcessor;\n private targetingTrees: Map<string, Tree> = new Map();\n private mappingIdentifierCustomDataIndex: number | null = null;\n private persistentCustomDataIndexes: Set<number> = new Set();\n private localCustomDataIndexes: Set<number> = new Set();\n private cleanupIntervalId: NodeJS.Timeout | null = null;\n\n constructor({\n dataStorage,\n infoStorage,\n cleanupInterval,\n }: DataManagerParametersType) {\n this.dataStorage = dataStorage;\n this.infoStorage = infoStorage;\n this.dataProcessor = new DataProcessor(cleanupInterval);\n\n if (cleanupInterval) {\n const cleanupCallback = () => {\n this.cleanupData();\n };\n\n // --- Note ---\n // We can not make delayed code execution recoverable, as it might lead\n // to targeting data storage size overflow\n try {\n this.cleanupIntervalId = setInterval(cleanupCallback, cleanupInterval);\n } catch (err) {\n if (this.cleanupIntervalId) {\n clearInterval(this.cleanupIntervalId);\n }\n\n throw err;\n }\n }\n }\n\n public getUnsentData(visitorCode: string): KameleoonDataType[] {\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return [];\n }\n\n const infoData = infoResult.data;\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!infoData.unsentData[visitorCode] || !targetingData) {\n return [];\n }\n\n const unsentDataKeys = infoData.unsentData[visitorCode];\n const isNextVisit = infoData.nextVisitTime <= Date.now();\n\n const filter: DataFilterType = ({ status, key, cdIndex }) => {\n if (typeof cdIndex === 'number') {\n // --- Note ---\n // Persistent CustomData is mandatory for sending each time\n // but only once per visit\n if (this.persistentCustomDataIndexes.has(cdIndex) && isNextVisit) {\n return true;\n }\n }\n\n return unsentDataKeys.includes(key) && status === TrackingStatus.Unsent;\n };\n\n if (isNextVisit) {\n infoData.nextVisitTime = Date.now() + VISIT_DURATION;\n this.infoStorage.write(infoData);\n }\n\n return this.getDataFromRaw(targetingData, filter);\n }\n\n public getPendingData(visitorCode: string): KameleoonDataType[] {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return [];\n }\n\n const filter: DataFilterType = ({ status }) =>\n status === TrackingStatus.Pending;\n\n return this.getDataFromRaw(targetingData, filter);\n }\n\n private getDataFromRaw(\n targetingData: KameleoonVisitorDataType,\n filter: DataFilterType,\n ): KameleoonDataType[] {\n const resultData: KameleoonDataType[] = [];\n\n for (const [key, data] of Object.entries(targetingData)) {\n if (!data) {\n continue;\n }\n\n switch (key) {\n case KameleoonData.CustomData: {\n for (const customData of Object.values(data)) {\n if (!customData) {\n continue;\n }\n\n const { status, index } = customData;\n\n if (filter({ status, key, cdIndex: index })) {\n const customDataItem = CustomData._fromRaw(customData);\n resultData.push(customDataItem);\n }\n }\n\n break;\n }\n case KameleoonData.Conversion: {\n for (const conversion of Object.values(data)) {\n if (!conversion) {\n continue;\n }\n\n if (filter({ status: conversion.status, key })) {\n const customDataItem = Conversion._fromRaw(conversion);\n resultData.push(customDataItem);\n }\n }\n\n break;\n }\n case KameleoonData.PageView: {\n const pageViewData = data as { [key: string]: PageViewDataType };\n\n for (const pageView of Object.values(pageViewData)) {\n if (filter({ status: pageView.status, key })) {\n const pageViewItem = PageView._fromRaw(pageView);\n resultData.push(pageViewItem);\n }\n }\n\n break;\n }\n case KameleoonData.GeolocationData: {\n const geolocationData = data as GeolocationDataType;\n\n if (!data) {\n continue;\n }\n\n if (filter({ status: geolocationData.status, key })) {\n const geolocationItem = GeolocationData._fromRaw(geolocationData);\n resultData.push(geolocationItem);\n }\n\n break;\n }\n case KameleoonData.Browser: {\n const browserData = data as BrowserDataType;\n\n if (filter({ status: browserData.status, key })) {\n const browserItem = Browser._fromRaw(browserData);\n resultData.push(browserItem);\n }\n\n break;\n }\n case KameleoonData.Device: {\n const deviceData = data as DeviceDataType;\n\n if (filter({ status: deviceData.status, key })) {\n const deviceItem = Device._fromRaw(deviceData);\n resultData.push(deviceItem);\n }\n\n break;\n }\n case KameleoonData.OperatingSystem: {\n const osData = data as OperatingSystemDataType;\n\n if (filter({ status: osData.status, key })) {\n const osItem = OperatingSystem._fromRaw(osData);\n resultData.push(osItem);\n }\n }\n }\n }\n\n return resultData;\n }\n\n public storeTrackedData(data: VisitorsDataType): void {\n this.storeData(data);\n\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return;\n }\n\n const unsentData = infoResult.data.unsentData;\n\n for (const [visitorCode, kameleoonData] of Object.entries(data)) {\n if (!unsentData[visitorCode]) {\n return;\n }\n\n const unsentDataKeys = new Set(unsentData[visitorCode]);\n\n kameleoonData.forEach(({ data }) => {\n if (unsentDataKeys.has(data.type)) {\n unsentDataKeys.delete(data.type);\n }\n });\n\n const hasPersistentCustomData = kameleoonData.some(({ data }) => {\n if (data.type !== KameleoonData.CustomData) {\n return false;\n }\n\n const { index } = data as CustomDataType;\n\n return (\n this.persistentCustomDataIndexes.has(index) ||\n this.mappingIdentifierCustomDataIndex === index\n );\n });\n\n if (hasPersistentCustomData) {\n unsentDataKeys.add(KameleoonData.CustomData);\n }\n\n unsentData[visitorCode] = Array.from(unsentDataKeys);\n\n if (!unsentData[visitorCode].length) {\n delete unsentData[visitorCode];\n }\n }\n\n this.infoStorage.write(infoResult.data);\n }\n\n public storeData(data: VisitorsDataType): Result<void, KameleoonError>;\n public storeData(\n visitorCode: string,\n ...data: KameleoonDataType[]\n ): Result<void, KameleoonError>;\n public storeData(\n firstParameter: VisitorsDataType | string,\n ...secondParameter: KameleoonDataType[]\n ): Result<void, KameleoonError> {\n const result = this.dataStorage.read();\n const infoResult = this.infoStorage.read();\n\n if (!result.ok) {\n return result;\n }\n\n if (!infoResult.ok) {\n return infoResult;\n }\n\n const targetingData = result.data;\n const infoData = infoResult.data;\n\n if (typeof firstParameter === 'string') {\n this.mutUpdateTargetingData({\n infoData,\n targetingData,\n visitorCode: firstParameter,\n kameleoonData: secondParameter!,\n });\n } else {\n for (const [visitorCode, kameleoonData] of Object.entries(\n firstParameter,\n )) {\n this.mutUpdateTargetingData({\n infoData,\n targetingData,\n visitorCode,\n kameleoonData,\n });\n }\n }\n\n this.cleanupData();\n this.infoStorage.write(infoResult.data);\n\n return this.dataStorage.write(targetingData);\n }\n\n public getTree(segment: SegmentType): Tree {\n if (this.targetingTrees.has(segment.id)) {\n return this.targetingTrees.get(segment.id)!;\n }\n\n const targetingTree = new Tree(segment);\n this.targetingTrees.set(segment.id, targetingTree);\n\n return targetingTree;\n }\n\n public clearTrees(): void {\n this.targetingTrees.clear();\n }\n\n public isPersistentCustomData(\n dataItem: KameleoonDataType,\n ): dataItem is CustomData {\n if (!this.persistentCustomDataIndexes.size) {\n return false;\n }\n\n if (Utilities.isCustomData(dataItem)) {\n return this.persistentCustomDataIndexes.has(dataItem.data.index);\n }\n\n return false;\n }\n\n public isUniqueIdentifier(visitorCode: string): boolean {\n const targetingData = this.getVisitorData(visitorCode);\n const uniqueIdentifier = targetingData?.[KameleoonData.UniqueIdentifier];\n\n return uniqueIdentifier?.value ?? false;\n }\n\n public getVisitorIdentifier(visitorCode: string): string {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return visitorCode;\n }\n\n const customData = targetingData[KameleoonData.CustomData];\n\n if (!customData || this.mappingIdentifierCustomDataIndex === null) {\n return visitorCode;\n }\n\n const customDataValue = customData[this.mappingIdentifierCustomDataIndex];\n\n if (customDataValue && customDataValue.isIdentifier) {\n return customDataValue.value[0];\n }\n\n return visitorCode;\n }\n\n public getVisitorData(\n visitorCode: string,\n ): KameleoonVisitorDataType | undefined {\n this.cleanupData();\n\n const storageData = this.dataStorage.read();\n\n if (!storageData.ok) {\n return undefined;\n }\n\n const { visitorReference, data } = this.dataProcessor.dereferenceData(\n storageData.data,\n visitorCode,\n );\n\n return data[visitorReference];\n }\n\n public getVisitorStoredDataTypes(visitorCode: string): Set<KameleoonData> {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return new Set();\n }\n\n return new Set(Object.keys(targetingData) as KameleoonData[]);\n }\n\n public getLinkedVisitor(visitorCode: string): string | null {\n const storageData = this.dataStorage.read();\n\n if (!storageData.ok) {\n return null;\n }\n\n if (typeof storageData.data[visitorCode] === 'string') {\n return storageData.data[visitorCode] as string;\n }\n\n if (this.mappingIdentifierCustomDataIndex === null) {\n return null;\n }\n\n const visitorData = storageData.data[\n visitorCode\n ] as KameleoonVisitorDataType;\n\n if (!visitorData) {\n return null;\n }\n\n const customData = visitorData[KameleoonData.CustomData];\n\n if (customData && customData[this.mappingIdentifierCustomDataIndex]) {\n return (\n customData[this.mappingIdentifierCustomDataIndex] as CustomDataType\n ).value[0];\n }\n\n return null;\n }\n\n private mutUpdateTargetingData({\n infoData,\n visitorCode,\n kameleoonData,\n targetingData,\n }: MutUpdateTargetingDataParametersType) {\n for (const dataItem of kameleoonData) {\n if (dataItem.data.type === KameleoonData.CustomData) {\n this.processCustomData({\n customData: dataItem as CustomData,\n mutData: targetingData,\n visitorCode,\n });\n }\n\n const expirationTime = this.dataProcessor.mutUpdateData({\n visitorCode,\n mutData: targetingData,\n dataItem,\n });\n\n const nextCleanup = infoData.nextDataCleanup;\n\n if (!nextCleanup || (nextCleanup && expirationTime < nextCleanup)) {\n infoData.nextDataCleanup = expirationTime;\n }\n\n if (dataItem.data.status === TrackingStatus.Unsent) {\n this.dataProcessor.mutAddUnsentData({\n mutData: infoData,\n visitorCode,\n dataType: dataItem.data.type,\n });\n }\n }\n }\n\n private cleanupData(): void {\n const result = this.dataStorage.read();\n const infoResult = this.infoStorage.read();\n\n if (!result.ok || !infoResult.ok) {\n return;\n }\n\n const data = result.data;\n const infoData = infoResult.data;\n\n const nextCleanup = infoData.nextDataCleanup;\n\n if (nextCleanup && nextCleanup < Date.now()) {\n const nextCleanupTime = this.dataProcessor.mutCleanupData(data);\n\n infoData.nextDataCleanup = nextCleanupTime || undefined;\n\n this.infoStorage.write(infoData);\n this.dataStorage.write(data);\n }\n }\n\n private processCustomData({\n mutData,\n customData,\n visitorCode,\n }: ProcessCustomDataManagerParametersType): void {\n const { data } = customData;\n\n const isDataValid = Boolean(data.value.length && data.value[0].length);\n\n if (this.mappingIdentifierCustomDataIndex === data.index && isDataValid) {\n customData._isMappingIdentifier = true;\n\n if (visitorCode !== data.value[0]) {\n // --- Note ---\n // Associate linked visitor codes\n this.dataProcessor.createReference({\n mutData,\n visitorCode,\n linkedVisitor: data.value[0],\n });\n }\n }\n\n if (this.localCustomDataIndexes.has(data.index)) {\n customData.status = TrackingStatus.Sent;\n }\n }\n\n get unsentDataVisitors(): string[] {\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return [];\n }\n\n return Object.keys(infoResult.data.unsentData);\n }\n\n get identifierCustomDataIndex(): number | null {\n return this.mappingIdentifierCustomDataIndex;\n }\n\n get trees(): Map<string, Tree> {\n return this.targetingTrees;\n }\n\n get storedCustomDataIndexes(): Set<number> {\n const result = this.dataStorage.read();\n\n if (!result.ok) {\n return new Set();\n }\n\n const targetingData = result.data;\n\n if (!(KameleoonData.CustomData in targetingData)) {\n return new Set();\n }\n\n const indexes = new Set<number>();\n\n for (const index in Object.keys(targetingData[KameleoonData.CustomData])) {\n indexes.add(Number(index));\n }\n\n return indexes;\n }\n\n set customDataIndexes(customData: CustomDataConfigurationType[]) {\n const [customDataLocalOnlyIndexes, persistentCustomDataIndexes]: Array<\n number[]\n > = [[], []];\n\n customData.forEach((customData) => {\n if (customData.localOnly) {\n customDataLocalOnlyIndexes.push(customData.index);\n }\n\n if (customData.scope === CustomDataScope.Visitor) {\n persistentCustomDataIndexes.push(customData.index);\n }\n });\n\n this.mappingIdentifierCustomDataIndex =\n customData.find((customData) => customData.isMappingIdentifier)?.index ||\n null;\n\n this.localCustomDataIndexes = new Set(customDataLocalOnlyIndexes);\n this.persistentCustomDataIndexes = new Set(persistentCustomDataIndexes);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"dataManager.js","names":["DataManager","constructor","a","dataStorage","infoStorage","cleanupInterval","_defineProperty","Map","Set","dataProcessor","DataProcessor","cleanupCallback","cleanupData","cleanupIntervalId","setInterval","err","clearInterval","getUnsentData","visitorCode","infoResult","read","ok","infoData","data","targetingData","getVisitorData","unsentData","unsentDataKeys","isNextVisit","nextVisitTime","Date","now","filter","status","key","cdIndex","persistentCustomDataIndexes","has","includes","TrackingStatus","Unsent","VISIT_DURATION","write","getDataFromRaw","getPendingData","Pending","resultData","Object","entries","KameleoonData","CustomData","customData","values","index","customDataItem","_fromRaw","push","Conversion","conversion","PageView","pageView","pageViewItem","GeolocationData","geolocationData","geolocationItem","Browser","browserData","browserItem","Device","deviceData","deviceItem","OperatingSystem","osData","osItem","storeTrackedData","storeData","kameleoonData","forEach","b","type","delete","hasPersistentCustomData","some","mappingIdentifierCustomDataIndex","add","Array","from","length","firstParameter","result","f","arguments","secondParameter","h","mutUpdateTargetingData","getTree","segment","targetingTrees","id","get","targetingTree","Tree","set","clearTrees","clear","isPersistentCustomData","dataItem","size","Utilities","isCustomData","isUniqueIdentifier","uniqueIdentifier","UniqueIdentifier","value","getVisitorIdentifier","customDataValue","isIdentifier","storageData","visitorReference","dereferenceData","getVisitorStoredDataTypes","keys","getLinkedVisitor","visitorData","processCustomData","mutData","expirationTime","mutUpdateData","nextCleanup","nextDataCleanup","mutAddUnsentData","dataType","nextCleanupTime","mutCleanupData","isDataValid","_isMappingIdentifier","createReference","linkedVisitor","localCustomDataIndexes","Sent","unsentDataVisitors","identifierCustomDataIndex","trees","storedCustomDataIndexes","indexes","customDataIndexes","customDataLocalOnlyIndexes","localOnly","scope","CustomDataScope","Visitor","find","isMappingIdentifier","exports"],"sources":["../../src/kameleoonData/dataManager.ts"],"sourcesContent":["import { Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { SegmentType, TargetingDataType, Tree } from 'src/targeting';\nimport { DataProcessor } from './dataProcessor';\nimport { CustomData } from './customData';\nimport {\n BrowserDataType,\n CustomDataType,\n DataFilterType,\n DataManagerParametersType,\n DeviceDataType,\n GeolocationDataType,\n KameleoonData,\n KameleoonDataType,\n KameleoonVisitorDataType,\n MutUpdateTargetingDataParametersType,\n OperatingSystemDataType,\n PageViewDataType,\n ProcessCustomDataManagerParametersType,\n VisitorsDataType,\n} from './types';\nimport { IStorage, VISIT_DURATION } from 'src/storage';\nimport {\n CustomDataConfigurationType,\n CustomDataScope,\n} from 'src/clientConfiguration';\nimport { Utilities } from 'src/utilities';\nimport { DataInfoType } from 'src/storage/types';\nimport { Conversion } from './conversion';\nimport { PageView } from './pageView';\nimport { Browser } from './browser';\nimport { Device } from './device';\nimport { GeolocationData } from './geolocation';\nimport { TrackingStatus } from 'src/types';\nimport { OperatingSystem } from './operatingSystem';\n\ninterface IDataManager {\n storeData(data: VisitorsDataType): Result<void, KameleoonError>;\n storeTrackedData(data: VisitorsDataType): void;\n getTree(segment: SegmentType): Tree;\n clearTrees(): void;\n isPersistentCustomData(dataItem: KameleoonDataType): dataItem is CustomData;\n isUniqueIdentifier(visitorCode: string): boolean;\n getLinkedVisitor(visitorCode: string, index: number | null): string | null;\n getVisitorData(visitorCode: string): KameleoonVisitorDataType | undefined;\n getVisitorIdentifier(visitorCode: string): string;\n getPendingData(visitorCode: string): KameleoonDataType[];\n getUnsentData(visitorCode: string): KameleoonDataType[];\n getVisitorStoredDataTypes(visitorCode: string): Set<KameleoonData>;\n readonly identifierCustomDataIndex: number | null;\n readonly storedCustomDataIndexes: Set<number>;\n readonly trees: Map<string, Tree>;\n readonly unsentDataVisitors: string[];\n}\n\nexport class DataManager implements IDataManager {\n private dataStorage: IStorage<TargetingDataType>;\n private infoStorage: IStorage<DataInfoType>;\n private dataProcessor: DataProcessor;\n private targetingTrees: Map<string, Tree> = new Map();\n private mappingIdentifierCustomDataIndex: number | null = null;\n private persistentCustomDataIndexes: Set<number> = new Set();\n private localCustomDataIndexes: Set<number> = new Set();\n private cleanupIntervalId: NodeJS.Timeout | null = null;\n\n constructor({\n dataStorage,\n infoStorage,\n cleanupInterval,\n }: DataManagerParametersType) {\n this.dataStorage = dataStorage;\n this.infoStorage = infoStorage;\n this.dataProcessor = new DataProcessor(cleanupInterval);\n\n if (cleanupInterval) {\n const cleanupCallback = () => {\n this.cleanupData();\n };\n\n // --- Note ---\n // We can not make delayed code execution recoverable, as it might lead\n // to targeting data storage size overflow\n try {\n this.cleanupIntervalId = setInterval(cleanupCallback, cleanupInterval);\n } catch (err) {\n if (this.cleanupIntervalId) {\n clearInterval(this.cleanupIntervalId);\n }\n\n throw err;\n }\n }\n }\n\n public getUnsentData(visitorCode: string): KameleoonDataType[] {\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return [];\n }\n\n const infoData = infoResult.data;\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!infoData.unsentData[visitorCode] || !targetingData) {\n return [];\n }\n\n const unsentDataKeys = infoData.unsentData[visitorCode];\n const isNextVisit = infoData.nextVisitTime <= Date.now();\n\n const filter: DataFilterType = ({ status, key, cdIndex }) => {\n if (typeof cdIndex === 'number') {\n // --- Note ---\n // Persistent CustomData is mandatory for sending each time\n // but only once per visit\n if (this.persistentCustomDataIndexes.has(cdIndex) && isNextVisit) {\n return true;\n }\n }\n\n return unsentDataKeys.includes(key) && status === TrackingStatus.Unsent;\n };\n\n if (isNextVisit) {\n infoData.nextVisitTime = Date.now() + VISIT_DURATION;\n this.infoStorage.write(infoData);\n }\n\n return this.getDataFromRaw(targetingData, filter);\n }\n\n public getPendingData(visitorCode: string): KameleoonDataType[] {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return [];\n }\n\n const filter: DataFilterType = ({ status }) =>\n status === TrackingStatus.Pending;\n\n return this.getDataFromRaw(targetingData, filter);\n }\n\n private getDataFromRaw(\n targetingData: KameleoonVisitorDataType,\n filter: DataFilterType,\n ): KameleoonDataType[] {\n const resultData: KameleoonDataType[] = [];\n\n for (const [key, data] of Object.entries(targetingData)) {\n if (!data) {\n continue;\n }\n\n switch (key) {\n case KameleoonData.CustomData: {\n for (const customData of Object.values(data)) {\n if (!customData) {\n continue;\n }\n\n const { status, index } = customData;\n\n if (filter({ status, key, cdIndex: index })) {\n const customDataItem = CustomData._fromRaw(customData);\n resultData.push(customDataItem);\n }\n }\n\n break;\n }\n case KameleoonData.Conversion: {\n for (const conversion of Object.values(data)) {\n if (!conversion) {\n continue;\n }\n\n if (filter({ status: conversion.status, key })) {\n const customDataItem = Conversion._fromRaw(conversion);\n resultData.push(customDataItem);\n }\n }\n\n break;\n }\n case KameleoonData.PageView: {\n const pageViewData = data as { [key: string]: PageViewDataType };\n\n for (const pageView of Object.values(pageViewData)) {\n if (filter({ status: pageView.status, key })) {\n const pageViewItem = PageView._fromRaw(pageView);\n resultData.push(pageViewItem);\n }\n }\n\n break;\n }\n case KameleoonData.GeolocationData: {\n const geolocationData = data as GeolocationDataType;\n\n if (!data) {\n continue;\n }\n\n if (filter({ status: geolocationData.status, key })) {\n const geolocationItem = GeolocationData._fromRaw(geolocationData);\n resultData.push(geolocationItem);\n }\n\n break;\n }\n case KameleoonData.Browser: {\n const browserData = data as BrowserDataType;\n\n if (filter({ status: browserData.status, key })) {\n const browserItem = Browser._fromRaw(browserData);\n resultData.push(browserItem);\n }\n\n break;\n }\n case KameleoonData.Device: {\n const deviceData = data as DeviceDataType;\n\n if (filter({ status: deviceData.status, key })) {\n const deviceItem = Device._fromRaw(deviceData);\n resultData.push(deviceItem);\n }\n\n break;\n }\n case KameleoonData.OperatingSystem: {\n const osData = data as OperatingSystemDataType;\n\n if (filter({ status: osData.status, key })) {\n const osItem = OperatingSystem._fromRaw(osData);\n resultData.push(osItem);\n }\n }\n }\n }\n\n return resultData;\n }\n\n public storeTrackedData(data: VisitorsDataType): void {\n this.storeData(data);\n\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return;\n }\n\n const unsentData = infoResult.data.unsentData;\n\n for (const [visitorCode, kameleoonData] of Object.entries(data)) {\n if (!unsentData[visitorCode]) {\n return;\n }\n\n const unsentDataKeys = new Set(unsentData[visitorCode]);\n\n kameleoonData.forEach(({ data }) => {\n if (unsentDataKeys.has(data.type)) {\n unsentDataKeys.delete(data.type);\n }\n });\n\n const hasPersistentCustomData = kameleoonData.some(({ data }) => {\n if (data.type !== KameleoonData.CustomData) {\n return false;\n }\n\n const { index } = data as CustomDataType;\n\n return (\n this.persistentCustomDataIndexes.has(index) ||\n this.mappingIdentifierCustomDataIndex === index\n );\n });\n\n if (hasPersistentCustomData) {\n unsentDataKeys.add(KameleoonData.CustomData);\n }\n\n unsentData[visitorCode] = Array.from(unsentDataKeys);\n\n if (!unsentData[visitorCode].length) {\n delete unsentData[visitorCode];\n }\n }\n\n this.infoStorage.write(infoResult.data);\n }\n\n public storeData(data: VisitorsDataType): Result<void, KameleoonError>;\n public storeData(\n visitorCode: string,\n ...data: KameleoonDataType[]\n ): Result<void, KameleoonError>;\n public storeData(\n firstParameter: VisitorsDataType | string,\n ...secondParameter: KameleoonDataType[]\n ): Result<void, KameleoonError> {\n const result = this.dataStorage.read();\n const infoResult = this.infoStorage.read();\n\n if (!result.ok) {\n return result;\n }\n\n if (!infoResult.ok) {\n return infoResult;\n }\n\n const targetingData = result.data;\n const infoData = infoResult.data;\n\n if (typeof firstParameter === 'string') {\n this.mutUpdateTargetingData({\n infoData,\n targetingData,\n visitorCode: firstParameter,\n kameleoonData: secondParameter!,\n });\n } else {\n for (const [visitorCode, kameleoonData] of Object.entries(\n firstParameter,\n )) {\n this.mutUpdateTargetingData({\n infoData,\n targetingData,\n visitorCode,\n kameleoonData,\n });\n }\n }\n\n this.cleanupData();\n this.infoStorage.write(infoResult.data);\n\n return this.dataStorage.write(targetingData);\n }\n\n public getTree(segment: SegmentType): Tree {\n if (this.targetingTrees.has(segment.id)) {\n return this.targetingTrees.get(segment.id)!;\n }\n\n const targetingTree = new Tree(segment);\n this.targetingTrees.set(segment.id, targetingTree);\n\n return targetingTree;\n }\n\n public clearTrees(): void {\n this.targetingTrees.clear();\n }\n\n public isPersistentCustomData(\n dataItem: KameleoonDataType,\n ): dataItem is CustomData {\n if (!this.persistentCustomDataIndexes.size) {\n return false;\n }\n\n if (Utilities.isCustomData(dataItem)) {\n return this.persistentCustomDataIndexes.has(dataItem.data.index);\n }\n\n return false;\n }\n\n public isUniqueIdentifier(visitorCode: string): boolean {\n const targetingData = this.getVisitorData(visitorCode);\n const uniqueIdentifier = targetingData?.[KameleoonData.UniqueIdentifier];\n\n return uniqueIdentifier?.value ?? false;\n }\n\n public getVisitorIdentifier(visitorCode: string): string {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return visitorCode;\n }\n\n const customData = targetingData[KameleoonData.CustomData];\n\n if (!customData || this.mappingIdentifierCustomDataIndex === null) {\n return visitorCode;\n }\n\n const customDataValue = customData[this.mappingIdentifierCustomDataIndex];\n\n if (customDataValue && customDataValue.isIdentifier) {\n return customDataValue.value[0];\n }\n\n return visitorCode;\n }\n\n public getVisitorData(\n visitorCode: string,\n ): KameleoonVisitorDataType | undefined {\n this.cleanupData();\n\n const storageData = this.dataStorage.read();\n\n if (!storageData.ok) {\n return undefined;\n }\n\n const { visitorReference, data } = this.dataProcessor.dereferenceData(\n storageData.data,\n visitorCode,\n );\n\n return data[visitorReference];\n }\n\n public getVisitorStoredDataTypes(visitorCode: string): Set<KameleoonData> {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return new Set();\n }\n\n return new Set(Object.keys(targetingData) as KameleoonData[]);\n }\n\n public getLinkedVisitor(visitorCode: string): string | null {\n const storageData = this.dataStorage.read();\n\n if (!storageData.ok) {\n return null;\n }\n\n if (typeof storageData.data[visitorCode] === 'string') {\n return storageData.data[visitorCode] as string;\n }\n\n if (this.mappingIdentifierCustomDataIndex === null) {\n return null;\n }\n\n const visitorData = storageData.data[\n visitorCode\n ] as KameleoonVisitorDataType;\n\n if (!visitorData) {\n return null;\n }\n\n const customData = visitorData[KameleoonData.CustomData];\n\n if (customData && customData[this.mappingIdentifierCustomDataIndex]) {\n return (\n customData[this.mappingIdentifierCustomDataIndex] as CustomDataType\n ).value[0];\n }\n\n return null;\n }\n\n private mutUpdateTargetingData({\n infoData,\n visitorCode,\n kameleoonData,\n targetingData,\n }: MutUpdateTargetingDataParametersType) {\n for (const dataItem of kameleoonData) {\n if (dataItem.data.type === KameleoonData.CustomData) {\n this.processCustomData({\n customData: dataItem as CustomData,\n mutData: targetingData,\n visitorCode,\n });\n }\n\n const expirationTime = this.dataProcessor.mutUpdateData({\n visitorCode,\n mutData: targetingData,\n dataItem,\n });\n\n const nextCleanup = infoData.nextDataCleanup;\n\n if (!nextCleanup || (nextCleanup && expirationTime < nextCleanup)) {\n infoData.nextDataCleanup = expirationTime;\n }\n\n if (dataItem.data.status === TrackingStatus.Unsent) {\n this.dataProcessor.mutAddUnsentData({\n mutData: infoData,\n visitorCode,\n dataType: dataItem.data.type,\n });\n }\n }\n }\n\n private cleanupData(): void {\n const result = this.dataStorage.read();\n const infoResult = this.infoStorage.read();\n\n if (!result.ok || !infoResult.ok) {\n return;\n }\n\n const data = result.data;\n const infoData = infoResult.data;\n\n const nextCleanup = infoData.nextDataCleanup;\n\n if (nextCleanup && nextCleanup < Date.now()) {\n const nextCleanupTime = this.dataProcessor.mutCleanupData(data);\n\n infoData.nextDataCleanup = nextCleanupTime || undefined;\n\n this.infoStorage.write(infoData);\n this.dataStorage.write(data);\n }\n }\n\n private processCustomData({\n mutData,\n customData,\n visitorCode,\n }: ProcessCustomDataManagerParametersType): void {\n const { data } = customData;\n\n const isDataValid = Boolean(data.value.length && data.value[0].length);\n\n if (this.mappingIdentifierCustomDataIndex === data.index && isDataValid) {\n customData._isMappingIdentifier = true;\n\n if (visitorCode !== data.value[0]) {\n // --- Note ---\n // Associate linked visitor codes\n this.dataProcessor.createReference({\n mutData,\n visitorCode,\n linkedVisitor: data.value[0],\n });\n }\n }\n\n if (this.localCustomDataIndexes.has(data.index)) {\n customData.status = TrackingStatus.Sent;\n }\n }\n\n get unsentDataVisitors(): string[] {\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return [];\n }\n\n return Object.keys(infoResult.data.unsentData);\n }\n\n get identifierCustomDataIndex(): number | null {\n return this.mappingIdentifierCustomDataIndex;\n }\n\n get trees(): Map<string, Tree> {\n return this.targetingTrees;\n }\n\n get storedCustomDataIndexes(): Set<number> {\n const result = this.dataStorage.read();\n\n if (!result.ok) {\n return new Set();\n }\n\n const targetingData = result.data;\n\n if (!(KameleoonData.CustomData in targetingData)) {\n return new Set();\n }\n\n const indexes = new Set<number>();\n\n for (const index in Object.keys(targetingData[KameleoonData.CustomData])) {\n indexes.add(Number(index));\n }\n\n return indexes;\n }\n\n set customDataIndexes(customData: CustomDataConfigurationType[]) {\n const [customDataLocalOnlyIndexes, persistentCustomDataIndexes]: Array<\n number[]\n > = [[], []];\n\n customData.forEach((customData) => {\n if (customData.localOnly) {\n customDataLocalOnlyIndexes.push(customData.index);\n }\n\n if (customData.scope === CustomDataScope.Visitor) {\n persistentCustomDataIndexes.push(customData.index);\n }\n });\n\n this.mappingIdentifierCustomDataIndex =\n customData.find((customData) => customData.isMappingIdentifier)?.index ||\n null;\n\n this.localCustomDataIndexes = new Set(customDataLocalOnlyIndexes);\n this.persistentCustomDataIndexes = new Set(persistentCustomDataIndexes);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.OperatingSystem=void 0;var _requester=require("../requester"),_types=require("./types"),_types2=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 OperatingSystem{constructor(a){_defineProperty(this,"operatingSystem",void 0),_defineProperty(this,"status",void 0),this.operatingSystem=a,this.status=_types2.TrackingStatus.Unsent}get url(){return this.operatingSystem?_requester.UrlEventType.StaticData+_requester.UrlParameter.Os+this.operatingSystem+_requester.UrlParameter.OsIndex+_types.OperatingSystemIndexMap[this.operatingSystem]:""}get data(){return{operatingSystem:this.operatingSystem,type:_types.KameleoonData.OperatingSystem,status:this.status}}static _fromRaw(a){const{operatingSystem:b,status:c}=a,d=new OperatingSystem(b);return d.status=c,d}static _fromVisit(a){if(a.staticDataEvent){const{os:b,osIndex:c}=a.staticDataEvent.data;if(b||"number"==typeof c){const a=b??_types.OperatingSystemTypeMap[c];return new OperatingSystem(a)}}}}exports.OperatingSystem=OperatingSystem;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.OperatingSystem=void 0;var _requester=require("../requester"),_types=require("./types"),_types2=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 OperatingSystem{constructor(a){_defineProperty(this,"operatingSystem",void 0),_defineProperty(this,"status",void 0),this.operatingSystem=a,this.status=_types2.TrackingStatus.Unsent}get url(){return this.operatingSystem?_requester.UrlEventType.StaticData+_requester.UrlParameter.Os+this.operatingSystem+_requester.UrlParameter.OsIndex+_types.OperatingSystemIndexMap[this.operatingSystem]:""}get data(){return{operatingSystem:this.operatingSystem,type:_types.KameleoonData.OperatingSystem,status:this.status}}static _fromRaw(a){const{operatingSystem:b,status:c}=a,d=new OperatingSystem(b);return d.status=c,d}static _fromVisit(a){if(a.staticDataEvent){const{os:b,osIndex:c}=a.staticDataEvent.data;if(b||"number"==typeof c){const a=null!==b&&void 0!==b?b:_types.OperatingSystemTypeMap[c];return new OperatingSystem(a)}}}}exports.OperatingSystem=OperatingSystem;
2
2
  //# sourceMappingURL=operatingSystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operatingSystem.js","names":["OperatingSystem","constructor","operatingSystem","_defineProperty","status","TrackingStatus","Unsent","url","UrlEventType","StaticData","UrlParameter","Os","OsIndex","OperatingSystemIndexMap","data","type","KameleoonData","_fromRaw","os","_fromVisit","visit","staticDataEvent","operatingSystemType","osIndex","OperatingSystemTypeMap","exports"],"sources":["../../src/kameleoonData/operatingSystem.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n IKameleoonData,\n KameleoonData,\n OperatingSystemDataType,\n OperatingSystemIndexMap,\n OperatingSystemType,\n OperatingSystemTypeMap,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * OperatingSystem - a class for creating an instance for Operating System of a certain type\n * */\nexport class OperatingSystem implements IKameleoonData {\n private operatingSystem: OperatingSystemType;\n public status: TrackingStatus;\n\n /**\n * @param {OperatingSystemType} operatingSystem - one of the available operating system types from `OperatingSystemType` enum\n * */\n constructor(operatingSystem: OperatingSystemType) {\n this.operatingSystem = operatingSystem;\n this.status = TrackingStatus.Unsent;\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.operatingSystem) {\n return '';\n }\n\n return (\n UrlEventType.StaticData +\n UrlParameter.Os +\n this.operatingSystem +\n UrlParameter.OsIndex +\n OperatingSystemIndexMap[this.operatingSystem]\n );\n }\n\n get data(): OperatingSystemDataType {\n return {\n operatingSystem: this.operatingSystem,\n type: KameleoonData.OperatingSystem,\n status: this.status,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - a static method for creating an instance of OperatingSystem class from raw data\n * @param {OperatingSystemDataType} data - a raw data\n * @returns {OperatingSystem} an instance of OperatingSystem class\n * */\n public static _fromRaw(data: OperatingSystemDataType): OperatingSystem {\n const { operatingSystem, status } = data;\n const os = new OperatingSystem(operatingSystem);\n\n os.status = status;\n\n return os;\n }\n\n /**\n * @private\n * @method _fromVisit - a static method for creating an instance of OperatingSystem class from a visit\n * @param {VisitType} visit - a visit\n * @returns {OperatingSystem | undefined} an instance of OperatingSystem class or undefined\n * */\n public static _fromVisit(visit: VisitType): OperatingSystem | undefined {\n if (!visit.staticDataEvent) {\n return undefined;\n }\n\n const { os: operatingSystemType, osIndex } = visit.staticDataEvent.data;\n\n if (operatingSystemType || typeof osIndex === 'number') {\n const operatingSystem =\n operatingSystemType ?? OperatingSystemTypeMap[osIndex as number];\n\n return new OperatingSystem(operatingSystem);\n }\n\n return undefined;\n }\n}\n"],"mappings":"isBAeO,KAAM,CAAAA,eAA0C,CAOrDC,WAAWA,CAACC,CAAoC,CAAE,CAAAC,eAAA,gCAAAA,eAAA,uBAChD,IAAI,CAACD,eAAe,CAAGA,CAAe,CACtC,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,MAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,OAIX,KAAI,CAACL,eAAe,CAKvBM,uBAAY,CAACC,UAAU,CACvBC,uBAAY,CAACC,EAAE,CACf,IAAI,CAACT,eAAe,CACpBQ,uBAAY,CAACE,OAAO,CACpBC,8BAAuB,CAAC,IAAI,CAACX,eAAe,CAAC,CARtC,EAUX,CAEA,GAAI,CAAAY,IAAIA,CAAA,CAA4B,CAClC,MAAO,CACLZ,eAAe,CAAE,IAAI,CAACA,eAAe,CACrCa,IAAI,CAAEC,oBAAa,CAAChB,eAAe,CACnCI,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CAQA,MAAc,CAAAa,QAAQA,CAACH,CAA6B,CAAmB,MAC/D,CAAEZ,eAAe,CAAfA,CAAe,CAAEE,MAAM,CAANA,CAAO,CAAC,CAAGU,CAAI,CAClCI,CAAE,CAAG,GAAI,CAAAlB,eAAe,CAACE,CAAe,CAAC,CAI/C,MAFA,CAAAgB,CAAE,CAACd,MAAM,CAAGA,CAAM,CAEXc,CACT,CAQA,MAAc,CAAAC,UAAUA,CAACC,CAAgB,CAA+B,CACtE,GAAKA,CAAK,CAACC,eAAe,EAI1B,KAAM,CAAEH,EAAE,CAAEI,CAAmB,CAAEC,OAAO,CAAPA,CAAQ,CAAC,CAAGH,CAAK,CAACC,eAAe,CAACP,IAAI,CAEvE,GAAIQ,CAAmB,EAAuB,QAAQ,EAA3B,MAAO,CAAAC,CAAoB,CAAE,CACtD,KAAM,CAAArB,CAAe,CACnBoB,CAAmB,EAAIE,6BAAsB,CAACD,CAAO,CAAW,CAElE,MAAO,IAAI,CAAAvB,eAAe,CAACE,CAAe,CAC5C,CAAC,CAGH,CACF,CAACuB,OAAA,CAAAzB,eAAA,CAAAA,eAAA","ignoreList":[]}
1
+ {"version":3,"file":"operatingSystem.js","names":["OperatingSystem","constructor","operatingSystem","_defineProperty","status","TrackingStatus","Unsent","url","UrlEventType","StaticData","UrlParameter","Os","OsIndex","OperatingSystemIndexMap","data","type","KameleoonData","_fromRaw","os","_fromVisit","visit","staticDataEvent","operatingSystemType","osIndex","OperatingSystemTypeMap","exports"],"sources":["../../src/kameleoonData/operatingSystem.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n IKameleoonData,\n KameleoonData,\n OperatingSystemDataType,\n OperatingSystemIndexMap,\n OperatingSystemType,\n OperatingSystemTypeMap,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * OperatingSystem - a class for creating an instance for Operating System of a certain type\n * */\nexport class OperatingSystem implements IKameleoonData {\n private operatingSystem: OperatingSystemType;\n public status: TrackingStatus;\n\n /**\n * @param {OperatingSystemType} operatingSystem - one of the available operating system types from `OperatingSystemType` enum\n * */\n constructor(operatingSystem: OperatingSystemType) {\n this.operatingSystem = operatingSystem;\n this.status = TrackingStatus.Unsent;\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.operatingSystem) {\n return '';\n }\n\n return (\n UrlEventType.StaticData +\n UrlParameter.Os +\n this.operatingSystem +\n UrlParameter.OsIndex +\n OperatingSystemIndexMap[this.operatingSystem]\n );\n }\n\n get data(): OperatingSystemDataType {\n return {\n operatingSystem: this.operatingSystem,\n type: KameleoonData.OperatingSystem,\n status: this.status,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - a static method for creating an instance of OperatingSystem class from raw data\n * @param {OperatingSystemDataType} data - a raw data\n * @returns {OperatingSystem} an instance of OperatingSystem class\n * */\n public static _fromRaw(data: OperatingSystemDataType): OperatingSystem {\n const { operatingSystem, status } = data;\n const os = new OperatingSystem(operatingSystem);\n\n os.status = status;\n\n return os;\n }\n\n /**\n * @private\n * @method _fromVisit - a static method for creating an instance of OperatingSystem class from a visit\n * @param {VisitType} visit - a visit\n * @returns {OperatingSystem | undefined} an instance of OperatingSystem class or undefined\n * */\n public static _fromVisit(visit: VisitType): OperatingSystem | undefined {\n if (!visit.staticDataEvent) {\n return undefined;\n }\n\n const { os: operatingSystemType, osIndex } = visit.staticDataEvent.data;\n\n if (operatingSystemType || typeof osIndex === 'number') {\n const operatingSystem =\n operatingSystemType ?? OperatingSystemTypeMap[osIndex as number];\n\n return new OperatingSystem(operatingSystem);\n }\n\n return undefined;\n }\n}\n"],"mappings":"isBAeO,KAAM,CAAAA,eAA0C,CAOrDC,WAAWA,CAACC,CAAoC,CAAE,CAAAC,eAAA,gCAAAA,eAAA,uBAChD,IAAI,CAACD,eAAe,CAAGA,CAAe,CACtC,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,MAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,OAIX,KAAI,CAACL,eAAe,CAKvBM,uBAAY,CAACC,UAAU,CACvBC,uBAAY,CAACC,EAAE,CACf,IAAI,CAACT,eAAe,CACpBQ,uBAAY,CAACE,OAAO,CACpBC,8BAAuB,CAAC,IAAI,CAACX,eAAe,CAAC,CARtC,EAUX,CAEA,GAAI,CAAAY,IAAIA,CAAA,CAA4B,CAClC,MAAO,CACLZ,eAAe,CAAE,IAAI,CAACA,eAAe,CACrCa,IAAI,CAAEC,oBAAa,CAAChB,eAAe,CACnCI,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CAQA,MAAc,CAAAa,QAAQA,CAACH,CAA6B,CAAmB,MAC/D,CAAEZ,eAAe,CAAfA,CAAe,CAAEE,MAAM,CAANA,CAAO,CAAC,CAAGU,CAAI,CAClCI,CAAE,CAAG,GAAI,CAAAlB,eAAe,CAACE,CAAe,CAAC,CAI/C,MAFA,CAAAgB,CAAE,CAACd,MAAM,CAAGA,CAAM,CAEXc,CACT,CAQA,MAAc,CAAAC,UAAUA,CAACC,CAAgB,CAA+B,CACtE,GAAKA,CAAK,CAACC,eAAe,EAI1B,KAAM,CAAEH,EAAE,CAAEI,CAAmB,CAAEC,OAAO,CAAPA,CAAQ,CAAC,CAAGH,CAAK,CAACC,eAAe,CAACP,IAAI,CAEvE,GAAIQ,CAAmB,EAAuB,QAAQ,EAA3B,MAAO,CAAAC,CAAoB,CAAE,CACtD,KAAM,CAAArB,CAAe,QACnBoB,CAAmB,WAAnBA,CAAmB,CAAnBA,CAAmB,CAAIE,6BAAsB,CAACD,CAAO,CAAW,CAElE,MAAO,IAAI,CAAAvB,eAAe,CAACE,CAAe,CAC5C,CAAC,CAGH,CACF,CAACuB,OAAA,CAAAzB,eAAA,CAAAA,eAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Cookie=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_kameleoonError=require("../../kameleoonError"),_types=require("../types"),_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 Cookie{constructor(a){let{name:b,value:c,nameMatchType:d,valueMatchType:e}=a;_defineProperty(this,"cookie",void 0),_defineProperty(this,"keyMatchType",void 0),_defineProperty(this,"valueMatchType",void 0),this.cookie={key:b??void 0,value:c??void 0},this.keyMatchType=d,this.valueMatchType=e}evaluate(a){var b;let{targetingData:c}=a;const d=!this.cookie.key&&!this.cookie.value,e=!!this.valueMatchType&&!!this.keyMatchType;if(d||!e)return(0,_tsRes.Ok)(!1);const f=this.extractCookie(),g=(null===c||void 0===c||null===(b=c[_kameleoonData.KameleoonData.Cookie])||void 0===b?void 0:b.cookie)||[];return(0,_tsRes.Ok)(f.some(a=>this.checkCondition(a))||g.some(a=>this.checkCondition(a)))}extractCookie(){return"undefined"!=typeof document&&document.cookie?_kameleoonData.Cookie.fromString(document.cookie).data.cookie:[]}checkCondition(a){const b=this.keyMatchType,{key:c,value:d}=a;if(b===_types.NameMatchType.OPTIONAL){const a=this.cookie;return!!this.isOptionalCookie(a)&&this.compareCookieValue(d,a.value)}const{key:e,value:f}=this.cookie;let g;return b===_types.NameMatchType.EXACT?g=c===e:b===_types.NameMatchType.CONTAINS?g=c.includes(e):b===_types.NameMatchType.REGULAR_EXPRESSION?g=_utilities.Parser.parseRegExp(e).test(c):(0,_kameleoonError.exhaustCheck)(b),g&&this.compareCookieValue(d,f)}compareCookieValue(a,b){const c=this.valueMatchType;return c===_types.ValueMatchType.EXACT?a===b:c===_types.ValueMatchType.CONTAINS?a.includes(b):!(c!==_types.ValueMatchType.REGULAR_EXPRESSION)&&_utilities.Parser.parseRegExp(b).test(a)}isOptionalCookie(a){const{value:b}=a;return"undefined"!=typeof b}}exports.Cookie=Cookie;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Cookie=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_kameleoonError=require("../../kameleoonError"),_types=require("../types"),_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 Cookie{constructor(a){let{name:b,value:c,nameMatchType:d,valueMatchType:e}=a;_defineProperty(this,"cookie",void 0),_defineProperty(this,"keyMatchType",void 0),_defineProperty(this,"valueMatchType",void 0),this.cookie={key:null!==b&&void 0!==b?b:void 0,value:null!==c&&void 0!==c?c:void 0},this.keyMatchType=d,this.valueMatchType=e}evaluate(a){var b;let{targetingData:c}=a;const d=!this.cookie.key&&!this.cookie.value,e=!!this.valueMatchType&&!!this.keyMatchType;if(d||!e)return(0,_tsRes.Ok)(!1);const f=this.extractCookie(),g=(null===c||void 0===c||null===(b=c[_kameleoonData.KameleoonData.Cookie])||void 0===b?void 0:b.cookie)||[];return(0,_tsRes.Ok)(f.some(a=>this.checkCondition(a))||g.some(a=>this.checkCondition(a)))}extractCookie(){return"undefined"!=typeof document&&document.cookie?_kameleoonData.Cookie.fromString(document.cookie).data.cookie:[]}checkCondition(a){const b=this.keyMatchType,{key:c,value:d}=a;if(b===_types.NameMatchType.OPTIONAL){const a=this.cookie;return!!this.isOptionalCookie(a)&&this.compareCookieValue(d,a.value)}const{key:e,value:f}=this.cookie;let g;return b===_types.NameMatchType.EXACT?g=c===e:b===_types.NameMatchType.CONTAINS?g=c.includes(e):b===_types.NameMatchType.REGULAR_EXPRESSION?g=_utilities.Parser.parseRegExp(e).test(c):(0,_kameleoonError.exhaustCheck)(b),g&&this.compareCookieValue(d,f)}compareCookieValue(a,b){const c=this.valueMatchType;return c===_types.ValueMatchType.EXACT?a===b:c===_types.ValueMatchType.CONTAINS?a.includes(b):!(c!==_types.ValueMatchType.REGULAR_EXPRESSION)&&_utilities.Parser.parseRegExp(b).test(a)}isOptionalCookie(a){const{value:b}=a;return"undefined"!=typeof b}}exports.Cookie=Cookie;
2
2
  //# sourceMappingURL=cookie.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookie.js","names":["Cookie","constructor","a","name","value","nameMatchType","valueMatchType","_defineProperty","cookie","key","keyMatchType","evaluate","b","targetingData","isEmptyCookie","isValidMatchType","Ok","extractedCookie","extractCookie","cookieData","KameleoonData","some","pair","checkCondition","document","CookieData","fromString","data","dataCookie","cookieMatchType","NameMatchType","OPTIONAL","conditionCookie","isOptionalCookie","compareCookieValue","compareKey","compareValue","keyMatch","EXACT","CONTAINS","includes","REGULAR_EXPRESSION","Parser","parseRegExp","test","exhaustCheck","ValueMatchType","exports"],"sources":["../../../src/targeting/conditions/cookie.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { Cookie as CookieData, KameleoonData } from 'src/kameleoonData';\nimport { exhaustCheck, KameleoonError } from 'src/kameleoonError';\nimport {\n EvaluationDataType,\n NameMatchType,\n ValueMatchType,\n} from 'src/targeting/types';\nimport { CookieType, OptionalCookieType } from 'src/kameleoonData/types';\nimport { Parser } from 'src/utilities';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class Cookie implements ICondition {\n private cookie: Partial<CookieType>;\n private keyMatchType?: NameMatchType | null;\n private valueMatchType?: ValueMatchType | null;\n\n constructor({\n name,\n value,\n nameMatchType,\n valueMatchType,\n }: ConditionDataType) {\n this.cookie = {\n key: name ?? undefined,\n value: value ?? undefined,\n };\n this.keyMatchType = nameMatchType;\n this.valueMatchType = valueMatchType;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const isEmptyCookie = !this.cookie.key && !this.cookie.value;\n const isValidMatchType =\n Boolean(this.valueMatchType) && Boolean(this.keyMatchType);\n\n if (isEmptyCookie || !isValidMatchType) {\n return Ok(false);\n }\n\n const extractedCookie = this.extractCookie();\n const cookieData = targetingData?.[KameleoonData.Cookie]?.cookie || [];\n\n return Ok(\n extractedCookie.some((pair) => this.checkCondition(pair)) ||\n cookieData.some((pair) => this.checkCondition(pair)),\n );\n }\n\n private extractCookie(): CookieType[] {\n if (typeof document !== 'undefined' && document.cookie) {\n return CookieData.fromString(document.cookie).data.cookie;\n }\n\n return [];\n }\n\n private checkCondition(dataCookie: CookieType): boolean {\n const cookieMatchType = this.keyMatchType!;\n const { key, value } = dataCookie;\n\n if (cookieMatchType === NameMatchType.OPTIONAL) {\n const conditionCookie = this.cookie;\n\n return this.isOptionalCookie(conditionCookie)\n ? this.compareCookieValue(value, conditionCookie.value)\n : false;\n }\n\n const { key: compareKey, value: compareValue } = this.cookie as CookieType;\n\n let keyMatch: boolean;\n\n switch (cookieMatchType) {\n case NameMatchType.EXACT:\n keyMatch = key === compareKey;\n break;\n case NameMatchType.CONTAINS:\n keyMatch = key.includes(compareKey);\n break;\n case NameMatchType.REGULAR_EXPRESSION:\n keyMatch = Parser.parseRegExp(compareKey).test(key);\n break;\n default:\n exhaustCheck(cookieMatchType);\n }\n\n return keyMatch && this.compareCookieValue(value, compareValue);\n }\n\n private compareCookieValue(value: string, compareValue: string): boolean {\n const valueMatchType = this.valueMatchType!;\n\n switch (valueMatchType) {\n case ValueMatchType.EXACT:\n return value === compareValue;\n case ValueMatchType.CONTAINS:\n return value.includes(compareValue);\n case ValueMatchType.REGULAR_EXPRESSION:\n return Parser.parseRegExp(compareValue).test(value);\n default:\n return false;\n }\n }\n\n private isOptionalCookie(\n cookie: Partial<CookieType>,\n ): cookie is OptionalCookieType {\n const { value } = cookie;\n\n return typeof value !== 'undefined';\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"cookie.js","names":["Cookie","constructor","a","name","value","nameMatchType","valueMatchType","_defineProperty","cookie","key","keyMatchType","evaluate","b","targetingData","isEmptyCookie","isValidMatchType","Ok","extractedCookie","extractCookie","cookieData","KameleoonData","some","pair","checkCondition","document","CookieData","fromString","data","dataCookie","cookieMatchType","NameMatchType","OPTIONAL","conditionCookie","isOptionalCookie","compareCookieValue","compareKey","compareValue","keyMatch","EXACT","CONTAINS","includes","REGULAR_EXPRESSION","Parser","parseRegExp","test","exhaustCheck","ValueMatchType","exports"],"sources":["../../../src/targeting/conditions/cookie.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { Cookie as CookieData, KameleoonData } from 'src/kameleoonData';\nimport { exhaustCheck, KameleoonError } from 'src/kameleoonError';\nimport {\n EvaluationDataType,\n NameMatchType,\n ValueMatchType,\n} from 'src/targeting/types';\nimport { CookieType, OptionalCookieType } from 'src/kameleoonData/types';\nimport { Parser } from 'src/utilities';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class Cookie implements ICondition {\n private cookie: Partial<CookieType>;\n private keyMatchType?: NameMatchType | null;\n private valueMatchType?: ValueMatchType | null;\n\n constructor({\n name,\n value,\n nameMatchType,\n valueMatchType,\n }: ConditionDataType) {\n this.cookie = {\n key: name ?? undefined,\n value: value ?? undefined,\n };\n this.keyMatchType = nameMatchType;\n this.valueMatchType = valueMatchType;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const isEmptyCookie = !this.cookie.key && !this.cookie.value;\n const isValidMatchType =\n Boolean(this.valueMatchType) && Boolean(this.keyMatchType);\n\n if (isEmptyCookie || !isValidMatchType) {\n return Ok(false);\n }\n\n const extractedCookie = this.extractCookie();\n const cookieData = targetingData?.[KameleoonData.Cookie]?.cookie || [];\n\n return Ok(\n extractedCookie.some((pair) => this.checkCondition(pair)) ||\n cookieData.some((pair) => this.checkCondition(pair)),\n );\n }\n\n private extractCookie(): CookieType[] {\n if (typeof document !== 'undefined' && document.cookie) {\n return CookieData.fromString(document.cookie).data.cookie;\n }\n\n return [];\n }\n\n private checkCondition(dataCookie: CookieType): boolean {\n const cookieMatchType = this.keyMatchType!;\n const { key, value } = dataCookie;\n\n if (cookieMatchType === NameMatchType.OPTIONAL) {\n const conditionCookie = this.cookie;\n\n return this.isOptionalCookie(conditionCookie)\n ? this.compareCookieValue(value, conditionCookie.value)\n : false;\n }\n\n const { key: compareKey, value: compareValue } = this.cookie as CookieType;\n\n let keyMatch: boolean;\n\n switch (cookieMatchType) {\n case NameMatchType.EXACT:\n keyMatch = key === compareKey;\n break;\n case NameMatchType.CONTAINS:\n keyMatch = key.includes(compareKey);\n break;\n case NameMatchType.REGULAR_EXPRESSION:\n keyMatch = Parser.parseRegExp(compareKey).test(key);\n break;\n default:\n exhaustCheck(cookieMatchType);\n }\n\n return keyMatch && this.compareCookieValue(value, compareValue);\n }\n\n private compareCookieValue(value: string, compareValue: string): boolean {\n const valueMatchType = this.valueMatchType!;\n\n switch (valueMatchType) {\n case ValueMatchType.EXACT:\n return value === compareValue;\n case ValueMatchType.CONTAINS:\n return value.includes(compareValue);\n case ValueMatchType.REGULAR_EXPRESSION:\n return Parser.parseRegExp(compareValue).test(value);\n default:\n return false;\n }\n }\n\n private isOptionalCookie(\n cookie: Partial<CookieType>,\n ): cookie is OptionalCookieType {\n const { value } = cookie;\n\n return typeof value !== 'undefined';\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageTitle=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_utilities=require("../../utilities"),_types=require("../types");function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class PageTitle{constructor(a){let{matchType:b,title:c}=a;_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=b,this.conditionValue=c}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];return c?(0,_tsRes.Ok)(Object.values(c).some(a=>this.checkCondition(a.title))):(0,_tsRes.Ok)(!1)}checkCondition(a){if(!this.matchType||!this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.CONTAINS:return a.includes(this.conditionValue);case _types.MatchType.EXACT:return a===this.conditionValue;case _types.MatchType.REGULAR_EXPRESSION:return _utilities.Parser.parseRegExp(this.conditionValue).test(a);default:return!1}}}exports.PageTitle=PageTitle;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageTitle=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_utilities=require("../../utilities"),_types=require("../types"),_utilities2=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 PageTitle{constructor(a){let{matchType:b,title:c}=a;_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=b,this.conditionValue=c}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];if(!c)return(0,_tsRes.Ok)(!1);const d=_utilities2.PageUtils.getLatest(c);return(0,_tsRes.Ok)(this.checkCondition(d.title))}checkCondition(a){if(!this.matchType||!this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.CONTAINS:return a.includes(this.conditionValue);case _types.MatchType.EXACT:return a===this.conditionValue;case _types.MatchType.REGULAR_EXPRESSION:return _utilities.Parser.parseRegExp(this.conditionValue).test(a);default:return!1}}}exports.PageTitle=PageTitle;
2
2
  //# sourceMappingURL=pageTitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pageTitle.js","names":["PageTitle","constructor","a","matchType","title","_defineProperty","conditionValue","evaluate","targetingData","pageViewData","KameleoonData","PageView","Ok","Object","values","some","data","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Parser","parseRegExp","test","exports"],"sources":["../../../src/targeting/conditions/pageTitle.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Parser } from 'src/utilities';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class PageTitle implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: string | null;\n\n constructor({ matchType, title }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = title;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const pageViewData = targetingData?.[KameleoonData.PageView];\n\n if (pageViewData) {\n return Ok(\n Object.values(pageViewData).some((data) => {\n return this.checkCondition(data.title);\n }),\n );\n }\n\n return Ok(false);\n }\n\n private checkCondition(title: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return title.includes(this.conditionValue);\n case MatchType.EXACT:\n return title === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Parser.parseRegExp(this.conditionValue).test(title);\n default:\n return false;\n }\n }\n}\n"],"mappings":"0uBAOO,KAAM,CAAAA,SAAgC,CAI3CC,WAAWA,CAAAC,CAAA,CAA0C,IAAzC,CAAEC,SAAS,CAATA,CAAS,CAAEC,KAAK,CAALA,CAAyB,CAAC,CAAAF,CAAA,CAAAG,eAAA,0BAAAA,eAAA,+BACjD,IAAI,CAACF,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACG,cAAc,CAAGF,CACxB,CAEOG,QAAQA,CAAAL,CAAA,CAEyC,IAFxC,CACdM,aAAa,CAAbA,CACkB,CAAC,CAAAN,CAAA,CACnB,KAAM,CAAAO,CAAY,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,CAAC,MAEzD,CAAAF,CAAY,CACP,GAAAG,SAAE,EACPC,MAAM,CAACC,MAAM,CAACL,CAAY,CAAC,CAACM,IAAI,CAAEC,CAAI,EAC7B,IAAI,CAACC,cAAc,CAACD,CAAI,CAACZ,KAAK,CACtC,CACH,CAAC,CAGI,GAAAQ,SAAE,IAAM,CACjB,CAEQK,cAAcA,CAACb,CAAa,CAAW,CAC7C,GAAI,CAAC,IAAI,CAACD,SAAS,EAAI,CAAC,IAAI,CAACG,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACH,SAAS,EACpB,IAAK,CAAAe,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAf,CAAK,CAACgB,QAAQ,CAAC,IAAI,CAACd,cAAc,CAAC,CAC5C,IAAK,CAAAY,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAjB,CAAK,GAAK,IAAI,CAACE,cAAc,CACtC,IAAK,CAAAY,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,iBAAM,CAACC,WAAW,CAAC,IAAI,CAAClB,cAAc,CAAC,CAACmB,IAAI,CAACrB,CAAK,CAAC,CAC5D,QACE,QACJ,CACF,CACF,CAACsB,OAAA,CAAA1B,SAAA,CAAAA,SAAA","ignoreList":[]}
1
+ {"version":3,"file":"pageTitle.js","names":["PageTitle","constructor","a","matchType","title","_defineProperty","conditionValue","evaluate","targetingData","pageViewData","KameleoonData","PageView","Ok","latestPageView","PageUtils","getLatest","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Parser","parseRegExp","test","exports"],"sources":["../../../src/targeting/conditions/pageTitle.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Parser } from 'src/utilities';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\nimport { PageUtils } from './utilities';\n\nexport class PageTitle implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: string | null;\n\n constructor({ matchType, title }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = title;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const pageViewData = targetingData?.[KameleoonData.PageView];\n\n if (!pageViewData) {\n return Ok(false);\n }\n\n const latestPageView = PageUtils.getLatest(pageViewData);\n\n return Ok(this.checkCondition(latestPageView.title));\n }\n\n private checkCondition(title: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return title.includes(this.conditionValue);\n case MatchType.EXACT:\n return title === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Parser.parseRegExp(this.conditionValue).test(title);\n default:\n return false;\n }\n }\n}\n"],"mappings":"6wBAQO,KAAM,CAAAA,SAAgC,CAI3CC,WAAWA,CAAAC,CAAA,CAA0C,IAAzC,CAAEC,SAAS,CAATA,CAAS,CAAEC,KAAK,CAALA,CAAyB,CAAC,CAAAF,CAAA,CAAAG,eAAA,0BAAAA,eAAA,+BACjD,IAAI,CAACF,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACG,cAAc,CAAGF,CACxB,CAEOG,QAAQA,CAAAL,CAAA,CAEyC,IAFxC,CACdM,aAAa,CAAbA,CACkB,CAAC,CAAAN,CAAA,CACnB,KAAM,CAAAO,CAAY,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,CAE5D,GAAI,CAACF,CAAY,CACf,MAAO,GAAAG,SAAE,IAAM,CAAC,CAGlB,KAAM,CAAAC,CAAc,CAAGC,qBAAS,CAACC,SAAS,CAACN,CAAY,CAAC,CAExD,MAAO,GAAAG,SAAE,EAAC,IAAI,CAACI,cAAc,CAACH,CAAc,CAACT,KAAK,CAAC,CACrD,CAEQY,cAAcA,CAACZ,CAAa,CAAW,CAC7C,GAAI,CAAC,IAAI,CAACD,SAAS,EAAI,CAAC,IAAI,CAACG,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACH,SAAS,EACpB,IAAK,CAAAc,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAd,CAAK,CAACe,QAAQ,CAAC,IAAI,CAACb,cAAc,CAAC,CAC5C,IAAK,CAAAW,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAhB,CAAK,GAAK,IAAI,CAACE,cAAc,CACtC,IAAK,CAAAW,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,iBAAM,CAACC,WAAW,CAAC,IAAI,CAACjB,cAAc,CAAC,CAACkB,IAAI,CAACpB,CAAK,CAAC,CAC5D,QACE,QACJ,CACF,CACF,CAACqB,OAAA,CAAAzB,SAAA,CAAAA,SAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageUrl=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_utilities=require("../../utilities"),_types=require("../types");function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class PageUrl{constructor(a){let{matchType:b,url:c}=a;_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=b,this.conditionValue=c}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];return c?(0,_tsRes.Ok)(Object.keys(c).some(a=>this.checkCondition(a))):(0,_tsRes.Ok)(!1)}checkCondition(a){if(!this.matchType||!this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.CONTAINS:return a.includes(this.conditionValue);case _types.MatchType.EXACT:return a===this.conditionValue;case _types.MatchType.REGULAR_EXPRESSION:return _utilities.Parser.parseRegExp(this.conditionValue).test(a);default:return!1}}}exports.PageUrl=PageUrl;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageUrl=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_utilities=require("../../utilities"),_types=require("../types"),_utilities2=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 PageUrl{constructor(a){let{matchType:b,url:c}=a;_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),this.matchType=b,this.conditionValue=c}evaluate(a){let{targetingData:b}=a;const c=null===b||void 0===b?void 0:b[_kameleoonData.KameleoonData.PageView];if(!c)return(0,_tsRes.Ok)(!1);const d=_utilities2.PageUtils.getLatest(c);return(0,_tsRes.Ok)(this.checkCondition(d.urlAddress))}checkCondition(a){if(!this.matchType||!this.conditionValue)return!1;switch(this.matchType){case _types.MatchType.CONTAINS:return a.includes(this.conditionValue);case _types.MatchType.EXACT:return a===this.conditionValue;case _types.MatchType.REGULAR_EXPRESSION:return _utilities.Parser.parseRegExp(this.conditionValue).test(a);default:return!1}}}exports.PageUrl=PageUrl;
2
2
  //# sourceMappingURL=pageUrl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pageUrl.js","names":["PageUrl","constructor","a","matchType","url","_defineProperty","conditionValue","evaluate","targetingData","pageViewData","KameleoonData","PageView","Ok","Object","keys","some","checkCondition","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Parser","parseRegExp","test","exports"],"sources":["../../../src/targeting/conditions/pageUrl.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Parser } from 'src/utilities';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class PageUrl implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: string | null;\n\n constructor({ matchType, url }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = url;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const pageViewData = targetingData?.[KameleoonData.PageView];\n\n if (pageViewData) {\n return Ok(\n Object.keys(pageViewData).some((url) => this.checkCondition(url)),\n );\n }\n\n return Ok(false);\n }\n\n private checkCondition(url: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return url.includes(this.conditionValue);\n case MatchType.EXACT:\n return url === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Parser.parseRegExp(this.conditionValue).test(url);\n default:\n return false;\n }\n }\n}\n"],"mappings":"wuBAOO,KAAM,CAAAA,OAA8B,CAIzCC,WAAWA,CAAAC,CAAA,CAAwC,IAAvC,CAAEC,SAAS,CAATA,CAAS,CAAEC,GAAG,CAAHA,CAAuB,CAAC,CAAAF,CAAA,CAAAG,eAAA,0BAAAA,eAAA,+BAC/C,IAAI,CAACF,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACG,cAAc,CAAGF,CACxB,CAEOG,QAAQA,CAAAL,CAAA,CAEyC,IAFxC,CACdM,aAAa,CAAbA,CACkB,CAAC,CAAAN,CAAA,CACnB,KAAM,CAAAO,CAAY,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,CAAC,MAEzD,CAAAF,CAAY,CACP,GAAAG,SAAE,EACPC,MAAM,CAACC,IAAI,CAACL,CAAY,CAAC,CAACM,IAAI,CAAEX,CAAG,EAAK,IAAI,CAACY,cAAc,CAACZ,CAAG,CAAC,CAClE,CAAC,CAGI,GAAAQ,SAAE,IAAM,CACjB,CAEQI,cAAcA,CAACZ,CAAW,CAAW,CAC3C,GAAI,CAAC,IAAI,CAACD,SAAS,EAAI,CAAC,IAAI,CAACG,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACH,SAAS,EACpB,IAAK,CAAAc,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAd,CAAG,CAACe,QAAQ,CAAC,IAAI,CAACb,cAAc,CAAC,CAC1C,IAAK,CAAAW,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAhB,CAAG,GAAK,IAAI,CAACE,cAAc,CACpC,IAAK,CAAAW,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,iBAAM,CAACC,WAAW,CAAC,IAAI,CAACjB,cAAc,CAAC,CAACkB,IAAI,CAACpB,CAAG,CAAC,CAC1D,QACE,QACJ,CACF,CACF,CAACqB,OAAA,CAAAzB,OAAA,CAAAA,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"pageUrl.js","names":["PageUrl","constructor","a","matchType","url","_defineProperty","conditionValue","evaluate","targetingData","pageViewData","KameleoonData","PageView","Ok","latestPageView","PageUtils","getLatest","checkCondition","urlAddress","MatchType","CONTAINS","includes","EXACT","REGULAR_EXPRESSION","Parser","parseRegExp","test","exports"],"sources":["../../../src/targeting/conditions/pageUrl.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { Parser } from 'src/utilities';\nimport { EvaluationDataType, MatchType } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\nimport { PageUtils } from './utilities';\n\nexport class PageUrl implements ICondition {\n private matchType?: MatchType | null;\n private conditionValue?: string | null;\n\n constructor({ matchType, url }: ConditionDataType) {\n this.matchType = matchType;\n this.conditionValue = url;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n const pageViewData = targetingData?.[KameleoonData.PageView];\n\n if (!pageViewData) {\n return Ok(false);\n }\n\n const latestPageView = PageUtils.getLatest(pageViewData);\n\n return Ok(this.checkCondition(latestPageView.urlAddress));\n }\n\n private checkCondition(url: string): boolean {\n if (!this.matchType || !this.conditionValue) {\n return false;\n }\n\n switch (this.matchType) {\n case MatchType.CONTAINS:\n return url.includes(this.conditionValue);\n case MatchType.EXACT:\n return url === this.conditionValue;\n case MatchType.REGULAR_EXPRESSION:\n return Parser.parseRegExp(this.conditionValue).test(url);\n default:\n return false;\n }\n }\n}\n"],"mappings":"2wBAQO,KAAM,CAAAA,OAA8B,CAIzCC,WAAWA,CAAAC,CAAA,CAAwC,IAAvC,CAAEC,SAAS,CAATA,CAAS,CAAEC,GAAG,CAAHA,CAAuB,CAAC,CAAAF,CAAA,CAAAG,eAAA,0BAAAA,eAAA,+BAC/C,IAAI,CAACF,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACG,cAAc,CAAGF,CACxB,CAEOG,QAAQA,CAAAL,CAAA,CAEyC,IAFxC,CACdM,aAAa,CAAbA,CACkB,CAAC,CAAAN,CAAA,CACnB,KAAM,CAAAO,CAAY,QAAGD,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAGE,4BAAa,CAACC,QAAQ,CAAC,CAE5D,GAAI,CAACF,CAAY,CACf,MAAO,GAAAG,SAAE,IAAM,CAAC,CAGlB,KAAM,CAAAC,CAAc,CAAGC,qBAAS,CAACC,SAAS,CAACN,CAAY,CAAC,CAExD,MAAO,GAAAG,SAAE,EAAC,IAAI,CAACI,cAAc,CAACH,CAAc,CAACI,UAAU,CAAC,CAC1D,CAEQD,cAAcA,CAACZ,CAAW,CAAW,CAC3C,GAAI,CAAC,IAAI,CAACD,SAAS,EAAI,CAAC,IAAI,CAACG,cAAc,CACzC,SAGF,OAAQ,IAAI,CAACH,SAAS,EACpB,IAAK,CAAAe,gBAAS,CAACC,QAAQ,CACrB,MAAO,CAAAf,CAAG,CAACgB,QAAQ,CAAC,IAAI,CAACd,cAAc,CAAC,CAC1C,IAAK,CAAAY,gBAAS,CAACG,KAAK,CAClB,MAAO,CAAAjB,CAAG,GAAK,IAAI,CAACE,cAAc,CACpC,IAAK,CAAAY,gBAAS,CAACI,kBAAkB,CAC/B,MAAO,CAAAC,iBAAM,CAACC,WAAW,CAAC,IAAI,CAAClB,cAAc,CAAC,CAACmB,IAAI,CAACrB,CAAG,CAAC,CAC1D,QACE,QACJ,CACF,CACF,CAACsB,OAAA,CAAA1B,OAAA,CAAAA,OAAA","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import { PageViewDataType } from '../../kameleoonData';
2
+ import { KameleoonData, KameleoonVisitorDataType } from '../../kameleoonData/types';
3
+ export declare class PageUtils {
4
+ static getLatest(pageViewData: NonNullable<KameleoonVisitorDataType[KameleoonData.PageView]>): PageViewDataType;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PageUtils=void 0;class PageUtils{static getLatest(a){return Object.values(a).reduce((a,b)=>a.timestamps[a.timestamps.length-1].time>b.timestamps[b.timestamps.length-1].time?a:b)}}exports.PageUtils=PageUtils;
2
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.js","names":["PageUtils","getLatest","pageViewData","Object","values","reduce","latest","current","timestamps","length","time","exports"],"sources":["../../../src/targeting/conditions/utilities.ts"],"sourcesContent":["import { PageViewDataType } from 'src/kameleoonData';\nimport {\n KameleoonData,\n KameleoonVisitorDataType,\n} from 'src/kameleoonData/types';\n\nexport class PageUtils {\n public static getLatest(\n pageViewData: NonNullable<KameleoonVisitorDataType[KameleoonData.PageView]>,\n ): PageViewDataType {\n return Object.values(pageViewData).reduce((latest, current) =>\n latest.timestamps[latest.timestamps.length - 1].time >\n current.timestamps[current.timestamps.length - 1].time\n ? latest\n : current,\n );\n }\n}\n"],"mappings":"6FAMO,KAAM,CAAAA,SAAU,CACrB,MAAc,CAAAC,SAASA,CACrBC,CAA2E,CACzD,CAClB,MAAO,CAAAC,MAAM,CAACC,MAAM,CAACF,CAAY,CAAC,CAACG,MAAM,CAAC,CAACC,CAAM,CAAEC,CAAO,GACxDD,CAAM,CAACE,UAAU,CAACF,CAAM,CAACE,UAAU,CAACC,MAAM,CAAG,CAAC,CAAC,CAACC,IAAI,CACpDH,CAAO,CAACC,UAAU,CAACD,CAAO,CAACC,UAAU,CAACC,MAAM,CAAG,CAAC,CAAC,CAACC,IAAI,CAClDJ,CAAM,CACNC,CACN,CACF,CACF,CAACI,OAAA,CAAAX,SAAA,CAAAA,SAAA","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Node=void 0;var _conditions=require("./conditions"),_types=require("./types");function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class Node{constructor(a,b,c){if(_defineProperty(this,"nodeValue",void 0),_defineProperty(this,"nodeError",void 0),_defineProperty(this,"leftChild",void 0),_defineProperty(this,"rightChild",void 0),_defineProperty(this,"inverseResult",!1),this.isOperator(a))this.nodeValue=a;else{const b=_conditions.ConditionFactory.createCondition(a);this.inverseResult=!a.isInclude&&0,b.ok?this.nodeValue=b.data:this.nodeError=b.error}this.leftChild=b,this.rightChild=c}get value(){return this.nodeValue}get error(){return this.nodeError}get left(){return this.leftChild}get right(){return this.rightChild}get inverse(){return this.inverseResult}isOperator(a){return a===_types.Operator.And||a===_types.Operator.Or}}exports.Node=Node;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Node=void 0;var _conditions=require("./conditions"),_types=require("./types");function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class Node{constructor(a,b,c){if(_defineProperty(this,"nodeValue",void 0),_defineProperty(this,"nodeError",void 0),_defineProperty(this,"leftChild",void 0),_defineProperty(this,"rightChild",void 0),_defineProperty(this,"inverseResult",!1),this.isOperator(a))this.nodeValue=a;else{var d;const b=_conditions.ConditionFactory.createCondition(a);this.inverseResult=null!==(d=a.isInclude)&&void 0!==d&&!d,b.ok?this.nodeValue=b.data:this.nodeError=b.error}this.leftChild=b,this.rightChild=c}get value(){return this.nodeValue}get error(){return this.nodeError}get left(){return this.leftChild}get right(){return this.rightChild}get inverse(){return this.inverseResult}isOperator(a){return a===_types.Operator.And||a===_types.Operator.Or}}exports.Node=Node;
2
2
  //# sourceMappingURL=node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","names":["Node","constructor","value","left","right","_defineProperty","isOperator","nodeValue","result","ConditionFactory","createCondition","inverseResult","isInclude","ok","data","nodeError","error","leftChild","rightChild","inverse","Operator","And","Or","exports"],"sources":["../../src/targeting/node.ts"],"sourcesContent":["import { KameleoonError } from 'src/kameleoonError';\nimport { ConditionFactory, ConditionDataType } from './conditions';\nimport { NodeValueType, Operator } from './types';\n\nexport interface INode {\n readonly value?: NodeValueType;\n readonly left?: INode;\n readonly right?: INode;\n readonly error?: KameleoonError;\n}\n\nexport class Node implements INode {\n private nodeValue?: NodeValueType;\n private nodeError?: KameleoonError;\n private leftChild?: INode;\n private rightChild?: INode;\n private inverseResult: boolean = false;\n\n constructor(\n value: ConditionDataType | Operator,\n left?: INode,\n right?: INode,\n ) {\n if (this.isOperator(value)) {\n this.nodeValue = value;\n } else {\n const result = ConditionFactory.createCondition(value);\n this.inverseResult = !(value.isInclude ?? true);\n\n if (result.ok) {\n this.nodeValue = result.data;\n } else {\n this.nodeError = result.error;\n }\n }\n\n this.leftChild = left;\n this.rightChild = right;\n }\n\n get value(): NodeValueType | undefined {\n return this.nodeValue;\n }\n\n get error(): KameleoonError | undefined {\n return this.nodeError;\n }\n\n get left(): INode | undefined {\n return this.leftChild;\n }\n\n get right(): INode | undefined {\n return this.rightChild;\n }\n\n get inverse(): boolean {\n return this.inverseResult;\n }\n\n private isOperator(value: ConditionDataType | Operator): value is Operator {\n return value === Operator.And || value === Operator.Or;\n }\n}\n"],"mappings":"2pBAWO,KAAM,CAAAA,IAAsB,CAOjCC,WAAWA,CACTC,CAAmC,CACnCC,CAAY,CACZC,CAAa,CACb,CACA,GAAAC,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,2BAAAA,eAAA,0BAAI,IAAI,CAACC,UAAU,CAACJ,CAAK,CAAC,CACxB,IAAI,CAACK,SAAS,CAAGL,CAAK,KACjB,CACL,KAAM,CAAAM,CAAM,CAAGC,4BAAgB,CAACC,eAAe,CAACR,CAAK,CAAC,CACtD,IAAI,CAACS,aAAa,CAAK,CAAAT,CAAK,CAACU,SAAS,GAAS,CAE3CJ,CAAM,CAACK,EAAE,CACX,IAAI,CAACN,SAAS,CAAGC,CAAM,CAACM,IAAI,CAE5B,IAAI,CAACC,SAAS,CAAGP,CAAM,CAACQ,KAE5B,CAEA,IAAI,CAACC,SAAS,CAAGd,CAAI,CACrB,IAAI,CAACe,UAAU,CAAGd,CACpB,CAEA,GAAI,CAAAF,KAAKA,CAAA,CAA8B,CACrC,MAAO,KAAI,CAACK,SACd,CAEA,GAAI,CAAAS,KAAKA,CAAA,CAA+B,CACtC,MAAO,KAAI,CAACD,SACd,CAEA,GAAI,CAAAZ,IAAIA,CAAA,CAAsB,CAC5B,MAAO,KAAI,CAACc,SACd,CAEA,GAAI,CAAAb,KAAKA,CAAA,CAAsB,CAC7B,MAAO,KAAI,CAACc,UACd,CAEA,GAAI,CAAAC,OAAOA,CAAA,CAAY,CACrB,MAAO,KAAI,CAACR,aACd,CAEQL,UAAUA,CAACJ,CAAmC,CAAqB,CACzE,MAAO,CAAAA,CAAK,GAAKkB,eAAQ,CAACC,GAAG,EAAInB,CAAK,GAAKkB,eAAQ,CAACE,EACtD,CACF,CAACC,OAAA,CAAAvB,IAAA,CAAAA,IAAA","ignoreList":[]}
1
+ {"version":3,"file":"node.js","names":["Node","constructor","value","left","right","_defineProperty","isOperator","nodeValue","d","result","ConditionFactory","createCondition","inverseResult","isInclude","ok","data","nodeError","error","leftChild","rightChild","inverse","Operator","And","Or","exports"],"sources":["../../src/targeting/node.ts"],"sourcesContent":["import { KameleoonError } from 'src/kameleoonError';\nimport { ConditionFactory, ConditionDataType } from './conditions';\nimport { NodeValueType, Operator } from './types';\n\nexport interface INode {\n readonly value?: NodeValueType;\n readonly left?: INode;\n readonly right?: INode;\n readonly error?: KameleoonError;\n}\n\nexport class Node implements INode {\n private nodeValue?: NodeValueType;\n private nodeError?: KameleoonError;\n private leftChild?: INode;\n private rightChild?: INode;\n private inverseResult: boolean = false;\n\n constructor(\n value: ConditionDataType | Operator,\n left?: INode,\n right?: INode,\n ) {\n if (this.isOperator(value)) {\n this.nodeValue = value;\n } else {\n const result = ConditionFactory.createCondition(value);\n this.inverseResult = !(value.isInclude ?? true);\n\n if (result.ok) {\n this.nodeValue = result.data;\n } else {\n this.nodeError = result.error;\n }\n }\n\n this.leftChild = left;\n this.rightChild = right;\n }\n\n get value(): NodeValueType | undefined {\n return this.nodeValue;\n }\n\n get error(): KameleoonError | undefined {\n return this.nodeError;\n }\n\n get left(): INode | undefined {\n return this.leftChild;\n }\n\n get right(): INode | undefined {\n return this.rightChild;\n }\n\n get inverse(): boolean {\n return this.inverseResult;\n }\n\n private isOperator(value: ConditionDataType | Operator): value is Operator {\n return value === Operator.And || value === Operator.Or;\n }\n}\n"],"mappings":"2pBAWO,KAAM,CAAAA,IAAsB,CAOjCC,WAAWA,CACTC,CAAmC,CACnCC,CAAY,CACZC,CAAa,CACb,CACA,GAAAC,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,2BAAAA,eAAA,0BAAI,IAAI,CAACC,UAAU,CAACJ,CAAK,CAAC,CACxB,IAAI,CAACK,SAAS,CAAGL,CAAK,KACjB,KAAAM,CAAA,CACL,KAAM,CAAAC,CAAM,CAAGC,4BAAgB,CAACC,eAAe,CAACT,CAAK,CAAC,CACtD,IAAI,CAACU,aAAa,SAAAJ,CAAA,CAAKN,CAAK,CAACW,SAAS,YAAAL,CAAA,GAAAA,CAAS,CAE3CC,CAAM,CAACK,EAAE,CACX,IAAI,CAACP,SAAS,CAAGE,CAAM,CAACM,IAAI,CAE5B,IAAI,CAACC,SAAS,CAAGP,CAAM,CAACQ,KAE5B,CAEA,IAAI,CAACC,SAAS,CAAGf,CAAI,CACrB,IAAI,CAACgB,UAAU,CAAGf,CACpB,CAEA,GAAI,CAAAF,KAAKA,CAAA,CAA8B,CACrC,MAAO,KAAI,CAACK,SACd,CAEA,GAAI,CAAAU,KAAKA,CAAA,CAA+B,CACtC,MAAO,KAAI,CAACD,SACd,CAEA,GAAI,CAAAb,IAAIA,CAAA,CAAsB,CAC5B,MAAO,KAAI,CAACe,SACd,CAEA,GAAI,CAAAd,KAAKA,CAAA,CAAsB,CAC7B,MAAO,KAAI,CAACe,UACd,CAEA,GAAI,CAAAC,OAAOA,CAAA,CAAY,CACrB,MAAO,KAAI,CAACR,aACd,CAEQN,UAAUA,CAACJ,CAAmC,CAAqB,CACzE,MAAO,CAAAA,CAAK,GAAKmB,eAAQ,CAACC,GAAG,EAAIpB,CAAK,GAAKmB,eAAQ,CAACE,EACtD,CACF,CAACC,OAAA,CAAAxB,IAAA,CAAAA,IAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kameleoon/javascript-sdk-core",
3
- "version": "5.0.0",
3
+ "version": "5.0.2",
4
4
  "description": "Kameleoon JS SDK Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "crypto-js": "^4.1.1",
41
- "ts-res": "^1.2.1"
41
+ "ts-res": "^1.3.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/crypto-js": "^4.1.1",