@kameleoon/javascript-sdk-core 2.10.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cacheManager/cacheManager.js +1 -11
- package/dist/cacheManager/cacheManager.js.map +1 -1
- package/dist/clientConfiguration/clientConfiguration.d.ts +52 -0
- package/dist/clientConfiguration/clientConfiguration.js +2 -0
- package/dist/clientConfiguration/clientConfiguration.js.map +1 -0
- package/dist/clientConfiguration/constants.d.ts +2 -0
- package/dist/clientConfiguration/constants.js +2 -0
- package/dist/clientConfiguration/constants.js.map +1 -0
- package/dist/clientConfiguration/index.d.ts +2 -0
- package/dist/clientConfiguration/index.js +2 -0
- package/dist/clientConfiguration/index.js.map +1 -0
- package/dist/{campaignConfiguration → clientConfiguration}/types.d.ts +12 -53
- package/dist/clientConfiguration/types.js +2 -0
- package/dist/clientConfiguration/types.js.map +1 -0
- package/dist/clientSettings/clientSettings.js +1 -1
- package/dist/clientSettings/clientSettings.js.map +1 -1
- package/dist/constants.d.ts +3 -2
- package/dist/constants.js +1 -4
- package/dist/constants.js.map +1 -1
- package/dist/eventSource/externalEventSource.js +1 -1
- package/dist/eventSource/externalEventSource.js.map +1 -1
- package/dist/hasher/hasher.d.ts +2 -3
- package/dist/hasher/hasher.js +1 -6
- package/dist/hasher/hasher.js.map +1 -1
- package/dist/hasher/types.d.ts +3 -10
- package/dist/hasher/types.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.d.ts +44 -80
- package/dist/kameleoonClient.js +1 -18
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/kameleoonData/applicationVersion.d.ts +26 -0
- package/dist/kameleoonData/applicationVersion.js +2 -0
- package/dist/kameleoonData/applicationVersion.js.map +1 -0
- package/dist/kameleoonData/browser.d.ts +16 -1
- package/dist/kameleoonData/browser.js +1 -17
- package/dist/kameleoonData/browser.js.map +1 -1
- package/dist/kameleoonData/constants.d.ts +4 -0
- package/dist/kameleoonData/constants.js +2 -0
- package/dist/kameleoonData/constants.js.map +1 -0
- package/dist/kameleoonData/conversion.d.ts +14 -1
- package/dist/kameleoonData/conversion.js +1 -13
- package/dist/kameleoonData/conversion.js.map +1 -1
- package/dist/kameleoonData/cookie.d.ts +33 -0
- package/dist/kameleoonData/cookie.js +2 -0
- package/dist/kameleoonData/cookie.js.map +1 -0
- package/dist/kameleoonData/customData.d.ts +14 -1
- package/dist/kameleoonData/customData.js +1 -24
- package/dist/kameleoonData/customData.js.map +1 -1
- package/dist/kameleoonData/dataManager.d.ts +38 -0
- package/dist/kameleoonData/dataManager.js +2 -0
- package/dist/kameleoonData/dataManager.js.map +1 -0
- package/dist/kameleoonData/dataProcessor.d.ts +26 -0
- package/dist/kameleoonData/dataProcessor.js +2 -0
- package/dist/kameleoonData/dataProcessor.js.map +1 -0
- package/dist/kameleoonData/device.d.ts +14 -1
- package/dist/kameleoonData/device.js +1 -13
- package/dist/kameleoonData/device.js.map +1 -1
- package/dist/kameleoonData/geolocation.d.ts +52 -0
- package/dist/kameleoonData/geolocation.js +2 -0
- package/dist/kameleoonData/geolocation.js.map +1 -0
- package/dist/kameleoonData/helpers.d.ts +1 -0
- package/dist/kameleoonData/helpers.js +2 -0
- package/dist/kameleoonData/helpers.js.map +1 -0
- package/dist/kameleoonData/index.d.ts +10 -3
- package/dist/kameleoonData/index.js +1 -1
- package/dist/kameleoonData/index.js.map +1 -1
- package/dist/kameleoonData/operatingSystem.d.ts +34 -0
- package/dist/kameleoonData/operatingSystem.js +2 -0
- package/dist/kameleoonData/operatingSystem.js.map +1 -0
- package/dist/kameleoonData/pageView.d.ts +20 -1
- package/dist/kameleoonData/pageView.js +1 -13
- package/dist/kameleoonData/pageView.js.map +1 -1
- package/dist/kameleoonData/types.d.ts +118 -9
- package/dist/kameleoonData/types.js +1 -14
- package/dist/kameleoonData/types.js.map +1 -1
- package/dist/kameleoonData/userAgent.d.ts +6 -1
- package/dist/kameleoonData/userAgent.js +1 -8
- package/dist/kameleoonData/userAgent.js.map +1 -1
- package/dist/kameleoonData/visitsData.d.ts +34 -0
- package/dist/{variationConfiguration/variation.js → kameleoonData/visitsData.js} +2 -7
- package/dist/kameleoonData/visitsData.js.map +1 -0
- package/dist/kameleoonError/constants.d.ts +5 -4
- package/dist/kameleoonError/constants.js +1 -1
- package/dist/kameleoonError/constants.js.map +1 -1
- package/dist/kameleoonError/kameleoonError.d.ts +5 -4
- package/dist/kameleoonError/kameleoonError.js +1 -4
- package/dist/kameleoonError/kameleoonError.js.map +1 -1
- package/dist/kameleoonError/types.d.ts +8 -3
- package/dist/kameleoonError/types.js +1 -1
- package/dist/kameleoonError/types.js.map +1 -1
- package/dist/kameleoonUtils.js +1 -4
- package/dist/kameleoonUtils.js.map +1 -1
- package/dist/requester/constants.d.ts +2 -1
- package/dist/requester/constants.js +1 -1
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.d.ts +1 -1
- package/dist/requester/index.js +1 -1
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +5 -4
- package/dist/requester/requester.js +1 -1
- package/dist/requester/requester.js.map +1 -1
- package/dist/requester/types.d.ts +73 -8
- package/dist/requester/types.js +1 -1
- package/dist/requester/types.js.map +1 -1
- package/dist/storage/constants.d.ts +1 -0
- package/dist/storage/constants.js +1 -4
- package/dist/storage/constants.js.map +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/types.d.ts +5 -8
- package/dist/storage/types.js.map +1 -1
- package/dist/targeting/conditions/applicationVersion.d.ts +10 -0
- package/dist/targeting/conditions/applicationVersion.js +2 -0
- package/dist/targeting/conditions/applicationVersion.js.map +1 -0
- package/dist/targeting/conditions/{browserCondition.d.ts → browser.d.ts} +1 -1
- package/dist/targeting/conditions/browser.js +2 -0
- package/dist/targeting/conditions/browser.js.map +1 -0
- package/dist/targeting/conditions/conditionFactory.js +1 -1
- package/dist/targeting/conditions/conditionFactory.js.map +1 -1
- package/dist/targeting/conditions/{conversionCondition.d.ts → conversion.d.ts} +1 -2
- package/dist/targeting/conditions/conversion.js +2 -0
- package/dist/targeting/conditions/conversion.js.map +1 -0
- package/dist/targeting/conditions/cookie.d.ts +15 -0
- package/dist/targeting/conditions/cookie.js +2 -0
- package/dist/targeting/conditions/cookie.js.map +1 -0
- package/dist/targeting/conditions/{customDataCondition.d.ts → customData.d.ts} +1 -1
- package/dist/targeting/conditions/customData.js +2 -0
- package/dist/targeting/conditions/customData.js.map +1 -0
- package/dist/targeting/conditions/{deviceCondition.d.ts → device.d.ts} +1 -1
- package/dist/targeting/conditions/{targetExperimentCondition.js → device.js} +2 -2
- package/dist/targeting/conditions/device.js.map +1 -0
- package/dist/targeting/conditions/{exclusiveExperimentCondition.d.ts → exclusiveCampaign.d.ts} +2 -2
- package/dist/targeting/conditions/exclusiveCampaign.js +2 -0
- package/dist/targeting/conditions/exclusiveCampaign.js.map +1 -0
- package/dist/targeting/conditions/firstVisit.d.ts +12 -0
- package/dist/targeting/conditions/firstVisit.js +2 -0
- package/dist/targeting/conditions/firstVisit.js.map +1 -0
- package/dist/targeting/conditions/geolocation.d.ts +11 -0
- package/dist/targeting/conditions/geolocation.js +2 -0
- package/dist/targeting/conditions/geolocation.js.map +1 -0
- package/dist/targeting/conditions/index.d.ts +22 -10
- package/dist/targeting/conditions/index.js +1 -1
- package/dist/targeting/conditions/index.js.map +1 -1
- package/dist/targeting/conditions/lastVisit.d.ts +12 -0
- package/dist/targeting/conditions/lastVisit.js +2 -0
- package/dist/targeting/conditions/lastVisit.js.map +1 -0
- package/dist/targeting/conditions/newVisitor.d.ts +9 -0
- package/dist/targeting/conditions/newVisitor.js +2 -0
- package/dist/targeting/conditions/newVisitor.js.map +1 -0
- package/dist/targeting/conditions/operatingSystem.d.ts +9 -0
- package/dist/targeting/conditions/{deviceCondition.js → operatingSystem.js} +2 -2
- package/dist/targeting/conditions/operatingSystem.js.map +1 -0
- package/dist/targeting/conditions/{pageTitleCondition.d.ts → pageTitle.d.ts} +1 -1
- package/dist/targeting/conditions/pageTitle.js +2 -0
- package/dist/targeting/conditions/pageTitle.js.map +1 -0
- package/dist/targeting/conditions/{pageUrlCondition.d.ts → pageUrl.d.ts} +1 -1
- package/dist/targeting/conditions/pageUrl.js +2 -0
- package/dist/targeting/conditions/pageUrl.js.map +1 -0
- package/dist/targeting/conditions/previousPage.d.ts +12 -0
- package/dist/targeting/conditions/previousPage.js +2 -0
- package/dist/targeting/conditions/previousPage.js.map +1 -0
- package/dist/targeting/conditions/sameDayVisits.d.ts +11 -0
- package/dist/targeting/conditions/sameDayVisits.js +2 -0
- package/dist/targeting/conditions/sameDayVisits.js.map +1 -0
- package/dist/targeting/conditions/{sdkLanguageCondition.d.ts → sdkLanguage.d.ts} +1 -4
- package/dist/targeting/conditions/sdkLanguage.js +2 -0
- package/dist/targeting/conditions/sdkLanguage.js.map +1 -0
- package/dist/targeting/conditions/segment.d.ts +9 -0
- package/dist/targeting/conditions/segment.js +2 -0
- package/dist/targeting/conditions/segment.js.map +1 -0
- package/dist/targeting/conditions/targetFeatureFlag.d.ts +11 -0
- package/dist/targeting/conditions/targetFeatureFlag.js +2 -0
- package/dist/targeting/conditions/targetFeatureFlag.js.map +1 -0
- package/dist/targeting/conditions/types.d.ts +20 -13
- package/dist/targeting/conditions/types.js.map +1 -1
- package/dist/targeting/conditions/visitedPages.d.ts +11 -0
- package/dist/targeting/conditions/visitedPages.js +2 -0
- package/dist/targeting/conditions/visitedPages.js.map +1 -0
- package/dist/targeting/conditions/{visitorCodeCondition.d.ts → visitorCode.d.ts} +1 -1
- package/dist/targeting/conditions/visitorCode.js +2 -0
- package/dist/targeting/conditions/visitorCode.js.map +1 -0
- package/dist/targeting/conditions/visits.d.ts +11 -0
- package/dist/targeting/conditions/visits.js +2 -0
- package/dist/targeting/conditions/visits.js.map +1 -0
- package/dist/targeting/index.d.ts +3 -3
- package/dist/targeting/index.js +1 -1
- package/dist/targeting/index.js.map +1 -1
- package/dist/targeting/{targetingNode.d.ts → node.d.ts} +7 -7
- package/dist/targeting/node.js +2 -0
- package/dist/targeting/node.js.map +1 -0
- package/dist/targeting/{targetingTree.d.ts → tree.d.ts} +6 -3
- package/dist/targeting/tree.js +2 -0
- package/dist/targeting/tree.js.map +1 -0
- package/dist/targeting/types.d.ts +30 -8
- package/dist/targeting/types.js +1 -1
- package/dist/targeting/types.js.map +1 -1
- package/dist/types.d.ts +17 -6
- package/dist/types.js +1 -41
- package/dist/types.js.map +1 -1
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/types.d.ts +61 -6
- package/dist/utilities/types.js +1 -1
- package/dist/utilities/types.js.map +1 -1
- package/dist/utilities/utilities.d.ts +24 -11
- package/dist/utilities/utilities.js +1 -1
- package/dist/utilities/utilities.js.map +1 -1
- package/dist/variationConfiguration/index.d.ts +1 -1
- package/dist/variationConfiguration/index.js +1 -1
- package/dist/variationConfiguration/index.js.map +1 -1
- package/dist/variationConfiguration/types.d.ts +5 -12
- package/dist/variationConfiguration/types.js.map +1 -1
- package/dist/variationConfiguration/variationConfiguration.d.ts +13 -21
- package/dist/variationConfiguration/variationConfiguration.js +1 -65
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
- package/package.json +1 -1
- package/dist/campaignConfiguration/campaignConfiguration.d.ts +0 -71
- package/dist/campaignConfiguration/campaignConfiguration.js +0 -24
- package/dist/campaignConfiguration/campaignConfiguration.js.map +0 -1
- package/dist/campaignConfiguration/constants.d.ts +0 -6
- package/dist/campaignConfiguration/constants.js +0 -4
- package/dist/campaignConfiguration/constants.js.map +0 -1
- package/dist/campaignConfiguration/index.d.ts +0 -3
- package/dist/campaignConfiguration/index.js +0 -2
- package/dist/campaignConfiguration/index.js.map +0 -1
- package/dist/campaignConfiguration/types.js +0 -2
- package/dist/campaignConfiguration/types.js.map +0 -1
- package/dist/targeting/conditions/browserCondition.js +0 -2
- package/dist/targeting/conditions/browserCondition.js.map +0 -1
- package/dist/targeting/conditions/conversionCondition.js +0 -4
- package/dist/targeting/conditions/conversionCondition.js.map +0 -1
- package/dist/targeting/conditions/customDataCondition.js +0 -8
- package/dist/targeting/conditions/customDataCondition.js.map +0 -1
- package/dist/targeting/conditions/deviceCondition.js.map +0 -1
- package/dist/targeting/conditions/exclusiveExperimentCondition.js +0 -2
- package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +0 -1
- package/dist/targeting/conditions/pageTitleCondition.js +0 -2
- package/dist/targeting/conditions/pageTitleCondition.js.map +0 -1
- package/dist/targeting/conditions/pageUrlCondition.js +0 -2
- package/dist/targeting/conditions/pageUrlCondition.js.map +0 -1
- package/dist/targeting/conditions/sdkLanguageCondition.js +0 -2
- package/dist/targeting/conditions/sdkLanguageCondition.js.map +0 -1
- package/dist/targeting/conditions/targetExperimentCondition.d.ts +0 -12
- package/dist/targeting/conditions/targetExperimentCondition.js.map +0 -1
- package/dist/targeting/conditions/visitorCodeCondition.js +0 -2
- package/dist/targeting/conditions/visitorCodeCondition.js.map +0 -1
- package/dist/targeting/targetingNode.js +0 -2
- package/dist/targeting/targetingNode.js.map +0 -1
- package/dist/targeting/targetingTree.js +0 -35
- package/dist/targeting/targetingTree.js.map +0 -1
- package/dist/variationConfiguration/variation.d.ts +0 -13
- package/dist/variationConfiguration/variation.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonClient.js","names":["a","b","c","Object","defineProperty","value","enumerable","configurable","writable","e","f","prototype","d","g","create","h","m","s","i","type","arg","call","forEach","_invoke","j","k","_typeof","r","resolve","__await","then","Error","o","method","delegate","x","sent","_sent","dispatchException","abrupt","done","iterator","return","TypeError","resultName","next","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","l","completion","reset","n","u","isNaN","length","_regeneratorRuntime","p","q","hasOwnProperty","t","Symbol","v","asyncIterator","w","toStringTag","wrap","y","z","getPrototypeOf","A","B","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","AsyncIterator","async","Promise","keys","reverse","pop","values","prev","charAt","slice","stop","rval","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_defineProperty","_toPrimitive","toPrimitive","String","Number","KameleoonClient","siteCode","configuration","internalConfiguration","ClientSettings","clientSettings","settings","externalStorage","externalEventSource","externalPackageInfo","externalRequestDispatcher","externalClientConfiguration","requester","Requester","environment","packageInfo","requestDispatcher","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","initialize","KameleoonStorageKey","ClientData","variationDataStorage","VariationData","offlineTrackingStorage","OfflineTracking","campaignConfiguration","CampaignConfiguration","storage","targetingCleanupInterval","targetingDataCleanupInterval","useCache","result","throw","variationConfiguration","VariationConfiguration","experiments","isOfflineModeOn","ok","addData","visitorCode","Utilities","validateVisitorCode","KameleoonError","KameleoonException","Initialization","data","Array","addTargetingData","concat","shouldAddData","getVisitorData","visitorData","parseVisitorData","_createForOfIteratorHelper","dataItem","isPersistentCustomData","triggerExperiment","experimentId","experiment","find","item","id","ExperimentConfigurationNotFound","targetingData","storedTargetingData","variationId","UNALLOCATED_VARIATION_ID","targetingResult","checkTargeting","segment","getAssociatedVariationId","else","error","NotAllocated","trackExperiment","isUnallocated","NotTargeted","updateCache","cacheManager","trackConversion","goalId","revenue","Conversion","flush","trackData","unsentDataVisitors","sendOfflineTracking","visitorCodeKey","flushData","getExperiments","map","getVisitorExperiments","isActive","experimentVariations","getAssignedVariations","experimentVariation","variationResult","getExperimentVariation","getExperimentVariationData","variation","variations","JSON","parse","customJson","err","JSONParse","VariationNotFound","getFeatureFlags","featureFlags","featureKey","getVisitorFeatureFlags","resultFeatureFlags","featureFlag","variationData","getFeatureFlagVariation","variationKey","OFF_VARIATION_KEY","featureFlagId","getFeatureFlagVariationKey","_getFeatureFlagVariation","getFeatureFlagVariable","variableKey","FeatureFlagConfigurationNotFound","variable","variables","FeatureFlagVariableNotFound","featureVariable","parseFeatureVariable","isFeatureFlagActive","getRemoteData","remoteData","customDataIndex","warehouseKey","RemoteData","WAREHOUSE_AUDIENCE_KEY","customData","_construct","CustomData","_toConsumableArray","onConfigurationUpdate","callback","getEngineTrackingCode","getTrackingCode","Err","withAssignment","trackRule","featureFlagVariation","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport { CampaignConfiguration, JSONType } from './campaignConfiguration';\nimport { ClientSettings } from './clientSettings';\nimport {\n CACHE_CLEANUP_TIMEOUT,\n OFF_VARIATION_KEY,\n UNALLOCATED_VARIATION_ID,\n WAREHOUSE_AUDIENCE_KEY,\n} from './constants';\nimport { Conversion, CustomData, KameleoonDataType } from './kameleoonData';\nimport { KameleoonError, KameleoonException } from './kameleoonError';\nimport { Requester } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n} from './storage';\nimport {\n TrackConversionParamsType,\n ExperimentType,\n FeatureFlagType,\n GetFeatureFlagVariableParamsType,\n FeatureVariableResultType,\n SDKCoreParameters,\n TrackingCacheItemType,\n ExternalPackageInfoType,\n GetVisitorWarehouseAudienceParamsType,\n} from './types';\nimport { Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { IExternalStorage, OfflineTracking } from './storage/types';\n\n/**\n * @interface an interface of KameleoonClient instance\n */\nexport interface IKameleoonClient {\n /**\n * @method initialize - an asynchronous method for KameleoonClient initialization by fetching Kameleoon SDK related data from server or by retrieving data from local source if data is up-to-date or update interval has not been reached\n * @param {boolean | undefined} useCache - optional parameter for activating SDK offline mode, if `true` is passed failed polls will not return error and will use cached data if such data is available, default value is `false`. Note: if offline mode is on, SDK will still try to retrieve the latest data.\n * @returns {Promise<boolean>} Promise resolved into boolean field indicating success or fail\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.StorageWrite` Couldn't update storage data\n * - `KameleoonException.ClientConfiguration` Couldn't retrieve client configuration from Kameleoon Api\n * - `KameleoonException.MaximumRetriesReached` Maximum retries reached, request failed\n */\n initialize(useCache?: boolean): Promise<boolean>;\n initialize(): Promise<boolean>;\n /**\n * @method addData - method for adding targeting data to the storage so that other methods could decide whether the current visitor is targeted or not. Note: userAgent data will not be stored in storage like other data, and it will be sent with every tracking request for bot filtration.\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {KameleoonDataType[]} kameleoonData - number of instances of any type of `KameleoonData`, can be added solely in array or as a sequential arguments\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.StorageWrite` Couldn't update storage data\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n */\n addData: (visitorCode: string, ...data: KameleoonDataType[]) => void;\n /**\n * @method getRemoteVisitorData - an asynchronous method for retrieving custom data for the latest visit of `visitorCode` from Kameleoon Data API and optionally adding it to the storage so that other methods could decide whether the current visitor is targeted or not.\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {boolean | undefined} shouldAddData - optional parameter for adding retrieved data to the storage like `addData` method does, default value is `true`\n * @returns {KameleoonDataType[]} promise resolved to an array of `KameleoonData` instances, only includes custom data\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.RemoteData` - Couldn't retrieve data from Kameleoon server\n */\n getRemoteVisitorData: (\n visitorCode: string,\n shouldAddData?: boolean,\n ) => Promise<KameleoonDataType[]>;\n /**\n * @method triggerExperiment - triggers experiment by assigning the variation to the user with `visitorCode`, if the variation is already assigned just returns it's id. Note: returned id `0` indicates default variation. At the same time sends tracking request.\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {number} experimentId - id of experiment running for the current visitor\n * @returns {number} associated variationId which is successfully searched/assigned\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.ExperimentConfigurationNotFound` No configuration found for provided `experimentId`\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.StorageRead` Couldn't find associated experiment by provided `experimentId` and `visitorCode` inside the storage\n * - `KameleoonException.NotTargeted` Current visitor is not targeted\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n */\n triggerExperiment: (visitorCode: string, experimentId: number) => number;\n /**\n * @method trackConversion - creates and adds `Conversion` data to the visitor with specified parameters and executes `flush`. Note: it's a helper method for the quick and convenient conversion tracking, however creating and adding `Conversion` manually allows more flexible `Conversion` with `negative` parameter\n * @param {TrackConversionParamsType} conversionParameters - `visitorCode`, `goalId` and `revenue` parameters for data tracking\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.StorageWrite` Couldn't update storage data\n */\n trackConversion: ({\n visitorCode,\n goalId,\n revenue,\n }: TrackConversionParamsType) => void;\n /**\n * @method flush - takes visitor associated kameleoon data and sends the data tracking request with collected data,\n * sent data is removed from `KameleoonClient` instance but not from the storage for correct targeting checks. If no visitor is passed,\n * then data for all visitors is sent and removed from `KameleoonClient` instance. Moreover, regardless of visitor code input\n * the method first attemps to send all previously failed tracking requests which were stored locally during the offline mode.\n * @param {string | undefined} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n */\n flush: (visitorCode: string) => void;\n /**\n * @deprecated Use flush method instead.\n */\n flushData: (visitorCode: string) => void;\n /**\n * @method getExperiments - returns a list of experiments stored in the client configuration\n * @returns {ExperimentType[]} a list of all experiments items with `id` and `name` fields\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n */\n getExperiments: () => ExperimentType[];\n /**\n * @method getVisitorExperiments - returns a list of experiments that the visitor with `visitorCode` is targeted by and that are *active* for the visitor (visitor will have one of the variations allocated if the experiment will be triggered).\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {boolean | undefined} isAllocated - boolean value indicating that only experiments *allocated* for visitor will be returned. Default value is `true`\n * @returns {ExperimentType[]} a list of all experiments items with `id` and `name` fields\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n */\n getVisitorExperiments: (\n visitorCode: string,\n isAllocated?: boolean,\n ) => ExperimentType[];\n /**\n * @method getExperimentVariationData - returns variation data in JSON format for the variation with `variationId`\n * @param {number} variationId - id of variation\n * @returns {JSONType} variation data in JSON format\n * @throws `KameleoonError` with one of the following `type` s:\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n * - `KameleoonException.JSONParse` - Couldn't pass JSON value\n * - `KameleoonException.VariationNotFound` - No variation found for provided `variationId`\n */\n getExperimentVariationData: (variationId: number) => JSONType | null;\n /**\n * @method getFeatureFlags - returns a list of feature flags stored in the client configuration\n * @returns {FeatureFlagType[]} a list of all feature flags items with `id` and `key` fields\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n */\n getFeatureFlags: () => FeatureFlagType[];\n /**\n * @method getVisitorFeatureFlags - returns a list of feature flags that the visitor with `visitorCode` that is targeted by and that are *active* for the visitor (visitor will have one of the variations allocated).\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @returns {FeatureFlagType[]} a list of all feature flags items with `id` and `key` fields\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n * - `KameleoonException.NotTargeted` - Current visitor is not targeted\n */\n getVisitorFeatureFlags: (visitorCode: string) => FeatureFlagType[];\n /**\n * @method isFeatureFlagActive - returns a boolean indicating whether the visitor with `visitorCode` has `featureKey` active for him, this method includes targeting check, finding the according variation exposed to the visitor and saving it to storage along with sending tracking request\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {string} featureKey - a unique key for feature flag\n * @returns {boolean} a boolean indicator of whether the feature flag with `featureKey` is active for visitor with `visitorCode`\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n * - `KameleoonException.FeatureFlagConfigurationNotFound` - No feature flag was found for provided `visitorCode` and `featureKey`\n * - `KameleoonException.DataInconsistency` - Allocated variation was found but there is no feature flag with according `featureKey`.\n * - `KameleoonException.NotTargeted` - Current visitor is not targeted\n */\n isFeatureFlagActive: (visitorCode: string, featureKey: string) => boolean;\n /**\n * @method getFeatureFlagVariationKey - returns variation key for the visitor under `visitorCode` in the found feature flag, this method includes targeting check, finding the according variation exposed to the visitor and saving it to storage along with sending tracking request\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {string} featureKey - a unique key for feature flag\n * @returns {string} a string containing variable key for the allocated feature flag variation for the provided visitor\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n * - `KameleoonException.FeatureFlagConfigurationNotFound` - No feature flag was found for provided `visitorCode` and `featureKey`\n * - `KameleoonException.NotTargeted` - Current visitor is not targeted\n */\n getFeatureFlagVariationKey: (\n visitorCode: string,\n featureKey: string,\n ) => string;\n /**\n * @method getFeatureFlagVariable - returns a variable for the visitor under `visitorCode` in the found feature flag, this method includes targeting check, finding the according variation exposed to the visitor and saving it to storage along with sending tracking request\n * @param {GetFeatureFlagVariableParamsType} parameters - an object with parameters of a type `GetFeatureFlagVariableParamsType`, see the type for details.\n * @returns {FeatureVariableResultType} a variable object containing `type` and `value` fields, `type` can be checked against `FeatureVariableType` enum, if the `type` is `FeatureVariableType.BOOLEAN` then the `value` type will be `boolean` and so on.\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n * - `KameleoonException.FeatureFlagConfigurationNotFound` - No feature flag was found for provided `visitorCode` and `featureKey`\n * - `KameleoonException.FeatureFlagVariableNotFound` - No feature variable was found for provided `visitorCode` and `variableKey`\n * - `KameleoonException.NotTargeted` - Current visitor is not targeted\n * - `KameleoonException.JSONParse` - Couldn't pass JSON value\n * - `KameleoonException.NumberParse` - Couldn't pass Number value\n */\n getFeatureFlagVariable: ({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType) => FeatureVariableResultType;\n /**\n * @method getRemoteData - returns a data which is stored for specified siteCode on a remote Kameleoon server.\n * @param {string} key - unique key that the data you try to get is associated with.\n * @returns {JSONType} - promise with retrieving data for specific key.\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.RemoteData` - Couldn't retrieve data from Kameleoon server\n */\n getRemoteData: (key: string) => Promise<JSONType>;\n /**\n * @method getVisitorWarehouseAudience - an async method that returns a `CustomData` instance, containing data associated with a visitor's warehouse audiences\n * which is stored for specified visitorCode on a remote Kameleoon server.\n * Retrieved data will be added to storage under the specified `customDataIndex`\n * @param {GetVisitorWarehouseAudienceParamsType} parameters - an object with parameters of a type `GetVisitorWarehouseAudienceParamsType`, see the type for details.\n * @returns {Promise<CustomData | null>} `Promise` containing an instance of `CustomData` containing data associated with a visitor's warehouse audiences or `null` if the data was retrieved successfully but nothing was found under the specified `warehouseKey`\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` - The visitor code is empty\n * - `KameleoonException.RemoteData` - Couldn't retrieve data from Kameleoon server\n */\n getVisitorWarehouseAudience: ({\n visitorCode,\n customDataIndex,\n warehouseKey,\n }: GetVisitorWarehouseAudienceParamsType) => Promise<CustomData | null>;\n /**\n * @method getEngineTrackingCode - returns Kameleoon tracking code for the current visitor. Tracking code is built of the experiments that were triggered and feature flag variations that were assigned during the last 5 seconds\n * See [Kameleoon Automation API](https://developers.kameleoon.com/apis/activation-api-js/api-reference#trigger-1) for the details\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @returns {string} Kameleoon tracking code\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n */\n getEngineTrackingCode: (visitorCode: string) => string;\n /**\n * @method onConfigurationUpdate - fires a callback on client configuration update. Note: this method only works for server sent events of real time update.\n * @param {() => void} callback - callback function with no parameters that will be called upon configuration update\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n */\n onConfigurationUpdate: (callback: () => void) => void;\n}\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 campaignConfiguration: CampaignConfiguration;\n private variationDataStorage: IExternalStorage<VariationDataType>;\n private offlineTrackingStorage: IExternalStorage<OfflineTracking>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private isOfflineModeOn?: boolean;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalRequestDispatcher,\n externalClientConfiguration,\n } = internalConfiguration;\n const requester = new Requester({\n siteCode,\n environment: clientSettings.environment,\n packageInfo: externalPackageInfo,\n requestDispatcher: externalRequestDispatcher,\n });\n const trackingCache = new CacheManager<TrackingCacheItemType>(\n CACHE_CLEANUP_TIMEOUT,\n );\n\n const clientDataStorage = externalStorage.initialize<ClientDataType>(\n KameleoonStorageKey.ClientData,\n );\n const variationDataStorage = externalStorage.initialize<VariationDataType>(\n KameleoonStorageKey.VariationData,\n );\n const offlineTrackingStorage = externalStorage.initialize<OfflineTracking>(\n KameleoonStorageKey.OfflineTracking,\n );\n\n const campaignConfiguration = new CampaignConfiguration({\n settings: clientSettings,\n storage: clientDataStorage,\n requester,\n externalClientConfiguration,\n targetingCleanupInterval: configuration?.targetingDataCleanupInterval,\n offlineTrackingStorage,\n externalEventSource,\n });\n\n this.requester = requester;\n this.trackingCache = trackingCache;\n this.campaignConfiguration = campaignConfiguration;\n this.variationDataStorage = variationDataStorage;\n this.externalPackageInfo = externalPackageInfo;\n this.offlineTrackingStorage = offlineTrackingStorage;\n }\n\n public async initialize(useCache?: boolean): Promise<boolean> {\n const result = await this.campaignConfiguration.initialize(useCache);\n result.throw();\n\n const variationConfiguration = new VariationConfiguration(\n this.campaignConfiguration.experiments,\n this.variationDataStorage,\n );\n\n this.variationConfiguration = variationConfiguration;\n\n this.isOfflineModeOn = useCache;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n if (!this.campaignConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.campaignConfiguration.addTargetingData(visitorCode, ...data).throw();\n }\n\n public async getRemoteVisitorData(\n visitorCode: string,\n shouldAddData = true,\n ): Promise<KameleoonDataType[]> {\n const result = await this.requester.getVisitorData(visitorCode);\n const data = result.throw();\n\n const visitorData = Utilities.parseVisitorData(data);\n\n for (const dataItem of visitorData) {\n if (\n shouldAddData ||\n this.campaignConfiguration.isPersistentCustomData(dataItem)\n ) {\n this.addData(visitorCode, dataItem);\n }\n }\n\n return visitorData;\n }\n\n public triggerExperiment(visitorCode: string, experimentId: number): number {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n if (!this.campaignConfiguration || !this.variationConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const experiment = this.campaignConfiguration.experiments.find(\n (item) => item.id === String(experimentId),\n );\n\n if (!experiment) {\n throw new KameleoonError(\n KameleoonException.ExperimentConfigurationNotFound,\n experimentId,\n visitorCode,\n );\n }\n\n const targetingData =\n this.campaignConfiguration.storedTargetingData[visitorCode];\n\n let variationId = UNALLOCATED_VARIATION_ID;\n\n const targetingResult = Utilities.checkTargeting({\n visitorCode,\n experimentId,\n targetingData,\n segment: experiment.segment,\n campaignConfiguration: this.campaignConfiguration,\n variationConfiguration: this.variationConfiguration,\n packageInfo: this.externalPackageInfo,\n }).throw();\n\n variationId = this.variationConfiguration\n .getAssociatedVariationId(visitorCode, experimentId)\n .else((error) => {\n if (error.type === KameleoonException.NotAllocated) {\n Utilities.trackExperiment({\n requester: this.requester,\n campaignConfiguration: this.campaignConfiguration,\n isUnallocated: true,\n variationId,\n visitorCode,\n experimentId,\n isOfflineModeOn: this.isOfflineModeOn,\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n\n return UNALLOCATED_VARIATION_ID;\n }\n\n throw error;\n });\n\n Utilities.trackExperiment({\n requester: this.requester,\n campaignConfiguration: this.campaignConfiguration,\n isUnallocated: false,\n variationId,\n visitorCode,\n experimentId,\n isOfflineModeOn: this.isOfflineModeOn,\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n\n if (!targetingResult) {\n throw new KameleoonError(KameleoonException.NotTargeted, visitorCode);\n }\n\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n visitorCode,\n experimentId,\n variationId,\n });\n\n return variationId;\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.campaignConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n if (typeof visitorCode === 'string') {\n Utilities.validateVisitorCode(visitorCode).throw();\n }\n\n if (visitorCode) {\n Utilities.trackData({\n visitorCode,\n campaignConfiguration: this.campaignConfiguration,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n return;\n }\n\n // --- Note ---\n // `Utilities.trackData` executes `Utilities.sendOfflineTracking` asynchronously at first, but\n // we need to execute `Utilities.sendOfflineTracking` even if calling `Utilities.trackData` is skipped\n // due to lack of unsent data\n if (!this.campaignConfiguration.unsentDataVisitors.length) {\n Utilities.sendOfflineTracking({\n requester: this.requester,\n storage: this.offlineTrackingStorage,\n });\n return;\n }\n\n for (const visitorCodeKey of this.campaignConfiguration\n .unsentDataVisitors) {\n Utilities.trackData({\n visitorCode: visitorCodeKey,\n campaignConfiguration: this.campaignConfiguration,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n }\n }\n\n public flushData(visitorCode?: string): void {\n this.flush(visitorCode);\n }\n\n public getExperiments(): ExperimentType[] {\n if (!this.campaignConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n return this.campaignConfiguration.experiments.map(({ id, name }) => ({\n id: Number(id),\n name,\n }));\n }\n\n public getVisitorExperiments(\n visitorCode: string,\n isActive = true,\n ): ExperimentType[] {\n if (!this.variationConfiguration || !this.campaignConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const experiments = this.campaignConfiguration.experiments;\n const result: ExperimentType[] = [];\n\n const targetingData =\n this.campaignConfiguration.storedTargetingData[visitorCode];\n\n for (const experiment of experiments) {\n const { id, name, segment } = experiment;\n\n const targetingResult = Utilities.checkTargeting({\n targetingData,\n visitorCode,\n segment,\n variationConfiguration: this.variationConfiguration,\n campaignConfiguration: this.campaignConfiguration,\n experimentId: Number(id),\n packageInfo: this.externalPackageInfo,\n }).throw();\n\n if (!targetingResult) {\n continue;\n }\n\n // -- If `isActive=false` then return every experiment\n if (!isActive) {\n result.push({ id: Number(id), name });\n continue;\n }\n\n // -- Else first check if there are saved variations for the experiment\n // if there is at least one than it's active\n const experimentVariations =\n this.variationConfiguration.getAssignedVariations(visitorCode);\n\n if (experimentVariations.ok) {\n const experimentVariation = experimentVariations.data[experiment.id];\n\n if (experimentVariation) {\n result.push({ id: Number(id), name });\n continue;\n }\n }\n\n // -- Second check if the experiment will have an allocated variation upon triggering\n // if yes than it's active\n const variationResult =\n this.variationConfiguration.getExperimentVariation(\n visitorCode,\n experiment,\n );\n\n if (variationResult.ok) {\n result.push({ id: Number(id), name });\n }\n }\n\n return result;\n }\n\n public getExperimentVariationData(variationId: number): JSONType {\n if (!this.campaignConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const experiments = this.campaignConfiguration.experiments;\n\n for (const experiment of experiments) {\n const variation = experiment.variations.find(\n (item) => item.id === String(variationId),\n );\n\n if (variation) {\n try {\n return JSON.parse(variation.customJson);\n } catch (err) {\n throw new KameleoonError(KameleoonException.JSONParse, err);\n }\n }\n }\n\n throw new KameleoonError(KameleoonException.VariationNotFound);\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.campaignConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n return this.campaignConfiguration.featureFlags.map(\n ({ id, featureKey }) => ({ id, key: featureKey }),\n );\n }\n\n public getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[] {\n if (!this.variationConfiguration || !this.campaignConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.campaignConfiguration.featureFlags;\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n const targetingData =\n this.campaignConfiguration.storedTargetingData[visitorCode];\n\n for (const featureFlag of featureFlags) {\n const variationData = this.variationConfiguration\n .getFeatureFlagVariation({\n visitorCode,\n targetingData,\n featureFlag,\n campaignConfiguration: this.campaignConfiguration,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n if (variationData.variationKey !== OFF_VARIATION_KEY) {\n const { featureFlagId, featureKey } = variationData;\n\n resultFeatureFlags.push({ id: featureFlagId, key: featureKey });\n }\n }\n\n return resultFeatureFlags;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureVariableResultType {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n // --- Note ---\n // `_getFeatureFlagVariation` already checks `campaignConfiguration` initialization\n const featureFlags = (this.campaignConfiguration as CampaignConfiguration)\n .featureFlags;\n\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n visitorCode,\n );\n }\n\n const variable = featureFlag.variations\n .find((item) => item.key === variationKey)\n ?.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 featureVariable = Utilities.parseFeatureVariable(variable).throw();\n\n return featureVariable;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n const variationKey = this.getFeatureFlagVariationKey(\n visitorCode,\n featureKey,\n );\n\n return variationKey !== OFF_VARIATION_KEY;\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 Utilities.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(KameleoonException.RemoteData);\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.campaignConfiguration.addTargetingData(visitorCode, customData);\n\n return customData;\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n if (!this.campaignConfiguration) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.campaignConfiguration.onConfigurationUpdate(callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n private _getFeatureFlagVariation(\n visitorCode: string,\n featureKey: string,\n ): Result<FeatureFlagVariationType, KameleoonError> {\n if (!this.variationConfiguration || !this.campaignConfiguration) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n const featureFlags = this.campaignConfiguration.featureFlags;\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n visitorCode,\n ),\n );\n }\n\n const targetingData =\n this.campaignConfiguration.storedTargetingData[visitorCode];\n\n const variationData = this.variationConfiguration\n .getFeatureFlagVariation({\n visitorCode,\n featureFlag,\n targetingData,\n withAssignment: true,\n campaignConfiguration: this.campaignConfiguration,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n const { experimentId, variationId } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n Utilities.trackRule({\n visitorCode,\n requester: this.requester,\n featureFlagVariation: variationData,\n campaignConfiguration: this.campaignConfiguration,\n isOfflineModeOn: this.isOfflineModeOn,\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n\n return Ok(variationData);\n }\n}\n"],"mappings":"0rGACA,6JAAAA,GAAA,CAAAC,CAAA,CAAAC,CAAA,SAAAC,MAAA,CAAAC,cAAA,CAAAJ,CAAA,CAAAC,CAAA,EAAAI,KAAA,CAAAH,CAAA,CAAAI,UAAA,IAAAC,YAAA,IAAAC,QAAA,MAAAR,CAAA,CAAAC,CAAA,WAAAA,EAAAD,CAAA,CAAAC,CAAA,CAAAC,CAAA,CAAAO,CAAA,MAAAC,CAAA,CAAAT,CAAA,EAAAA,CAAA,CAAAU,SAAA,YAAAC,CAAA,CAAAX,CAAA,CAAAW,CAAA,CAAAC,CAAA,CAAAV,MAAA,CAAAW,MAAA,CAAAJ,CAAA,CAAAC,SAAA,EAAAI,CAAA,KAAAC,CAAA,CAAAP,CAAA,aAAAQ,CAAA,CAAAJ,CAAA,YAAAR,KAAA,CAAAa,CAAA,CAAAlB,CAAA,CAAAE,CAAA,CAAAa,CAAA,IAAAF,CAAA,UAAAX,EAAAF,CAAA,CAAAC,CAAA,CAAAC,CAAA,aAAAiB,IAAA,UAAAC,GAAA,CAAApB,CAAA,CAAAqB,IAAA,CAAApB,CAAA,CAAAC,CAAA,SAAAF,CAAA,SAAAmB,IAAA,SAAAC,GAAA,CAAApB,CAAA,YAAAY,EAAA,YAAAH,EAAA,YAAAC,EAAA,YAAAG,EAAAZ,CAAA,4BAAAqB,OAAA,UAAApB,CAAA,EAAAF,CAAA,CAAAC,CAAA,CAAAC,CAAA,UAAAF,CAAA,cAAAuB,OAAA,CAAArB,CAAA,CAAAF,CAAA,eAAAe,EAAAf,CAAA,CAAAC,CAAA,WAAAW,EAAAH,CAAA,CAAAC,CAAA,CAAAG,CAAA,CAAAE,CAAA,MAAAG,CAAA,CAAAhB,CAAA,CAAAF,CAAA,CAAAS,CAAA,EAAAT,CAAA,CAAAU,CAAA,eAAAQ,CAAA,CAAAC,IAAA,MAAAK,CAAA,CAAAN,CAAA,CAAAE,GAAA,CAAAK,CAAA,CAAAD,CAAA,CAAAnB,KAAA,QAAAoB,CAAA,YAAAC,OAAA,CAAAD,CAAA,GAAAE,CAAA,CAAAN,IAAA,CAAAI,CAAA,YAAAxB,CAAA,CAAA2B,OAAA,CAAAH,CAAA,CAAAI,OAAA,EAAAC,IAAA,UAAA9B,CAAA,EAAAY,CAAA,QAAAZ,CAAA,CAAAa,CAAA,CAAAE,CAAA,YAAAf,CAAA,EAAAY,CAAA,SAAAZ,CAAA,CAAAa,CAAA,CAAAE,CAAA,IAAAd,CAAA,CAAA2B,OAAA,CAAAH,CAAA,EAAAK,IAAA,UAAA9B,CAAA,EAAAwB,CAAA,CAAAnB,KAAA,CAAAL,CAAA,CAAAa,CAAA,CAAAW,CAAA,YAAAxB,CAAA,SAAAY,CAAA,SAAAZ,CAAA,CAAAa,CAAA,CAAAE,CAAA,IAAAA,CAAA,CAAAG,CAAA,CAAAE,GAAA,MAAAX,CAAA,CAAAQ,CAAA,iBAAAZ,KAAA,UAAAA,MAAAL,CAAA,CAAAE,CAAA,WAAAQ,EAAA,aAAAT,CAAA,UAAAA,CAAA,CAAAQ,CAAA,EAAAG,CAAA,CAAAZ,CAAA,CAAAE,CAAA,CAAAD,CAAA,CAAAQ,CAAA,WAAAA,CAAA,CAAAA,CAAA,CAAAA,CAAA,CAAAqB,IAAA,CAAApB,CAAA,CAAAA,CAAA,EAAAA,CAAA,eAAAQ,EAAAlB,CAAA,CAAAC,CAAA,CAAAW,CAAA,MAAAH,CAAA,kCAAAC,CAAA,CAAAG,CAAA,kBAAAJ,CAAA,WAAAsB,KAAA,iDAAAtB,CAAA,eAAAC,CAAA,OAAAG,CAAA,QAAAmB,CAAA,OAAApB,CAAA,CAAAqB,MAAA,CAAAvB,CAAA,CAAAE,CAAA,CAAAQ,GAAA,CAAAP,CAAA,QAAAE,CAAA,CAAAH,CAAA,CAAAsB,QAAA,IAAAnB,CAAA,MAAAG,CAAA,CAAAM,CAAA,CAAAT,CAAA,CAAAH,CAAA,KAAAM,CAAA,KAAAA,CAAA,GAAAiB,CAAA,iBAAAjB,CAAA,cAAAN,CAAA,CAAAqB,MAAA,CAAArB,CAAA,CAAAwB,IAAA,CAAAxB,CAAA,CAAAyB,KAAA,CAAAzB,CAAA,CAAAQ,GAAA,mBAAAR,CAAA,CAAAqB,MAAA,uBAAAxB,CAAA,OAAAA,CAAA,aAAAG,CAAA,CAAAQ,GAAA,CAAAR,CAAA,CAAA0B,iBAAA,CAAA1B,CAAA,CAAAQ,GAAA,iBAAAR,CAAA,CAAAqB,MAAA,EAAArB,CAAA,CAAA2B,MAAA,UAAA3B,CAAA,CAAAQ,GAAA,EAAAX,CAAA,iBAAAgB,CAAA,CAAAvB,CAAA,CAAAF,CAAA,CAAAC,CAAA,CAAAW,CAAA,gBAAAa,CAAA,CAAAN,IAAA,KAAAV,CAAA,CAAAG,CAAA,CAAA4B,IAAA,8BAAAf,CAAA,CAAAL,GAAA,GAAAe,CAAA,iBAAA9B,KAAA,CAAAoB,CAAA,CAAAL,GAAA,CAAAoB,IAAA,CAAA5B,CAAA,CAAA4B,IAAA,YAAAf,CAAA,CAAAN,IAAA,GAAAV,CAAA,aAAAG,CAAA,CAAAqB,MAAA,SAAArB,CAAA,CAAAQ,GAAA,CAAAK,CAAA,CAAAL,GAAA,aAAAI,EAAAxB,CAAA,CAAAC,CAAA,MAAAW,CAAA,CAAAX,CAAA,CAAAgC,MAAA,CAAAxB,CAAA,CAAAT,CAAA,CAAAyC,QAAA,CAAA7B,CAAA,cAAAH,CAAA,QAAAR,CAAA,CAAAiC,QAAA,gBAAAtB,CAAA,EAAAZ,CAAA,CAAAyC,QAAA,CAAAC,MAAA,GAAAzC,CAAA,CAAAgC,MAAA,UAAAhC,CAAA,CAAAmB,GAAA,QAAAI,CAAA,CAAAxB,CAAA,CAAAC,CAAA,YAAAA,CAAA,CAAAgC,MAAA,cAAArB,CAAA,GAAAX,CAAA,CAAAgC,MAAA,SAAAhC,CAAA,CAAAmB,GAAA,KAAAuB,SAAA,qCAAA/B,CAAA,cAAAuB,CAAA,KAAAzB,CAAA,CAAAR,CAAA,CAAAO,CAAA,CAAAT,CAAA,CAAAyC,QAAA,CAAAxC,CAAA,CAAAmB,GAAA,eAAAV,CAAA,CAAAS,IAAA,QAAAlB,CAAA,CAAAgC,MAAA,SAAAhC,CAAA,CAAAmB,GAAA,CAAAV,CAAA,CAAAU,GAAA,CAAAnB,CAAA,CAAAiC,QAAA,MAAAC,CAAA,KAAAtB,CAAA,CAAAH,CAAA,CAAAU,GAAA,QAAAP,CAAA,CAAAA,CAAA,CAAA2B,IAAA,EAAAvC,CAAA,CAAAD,CAAA,CAAA4C,UAAA,EAAA/B,CAAA,CAAAR,KAAA,CAAAJ,CAAA,CAAA4C,IAAA,CAAA7C,CAAA,CAAA8C,OAAA,YAAA7C,CAAA,CAAAgC,MAAA,GAAAhC,CAAA,CAAAgC,MAAA,QAAAhC,CAAA,CAAAmB,GAAA,SAAAnB,CAAA,CAAAiC,QAAA,MAAAC,CAAA,EAAAtB,CAAA,EAAAZ,CAAA,CAAAgC,MAAA,SAAAhC,CAAA,CAAAmB,GAAA,KAAAuB,SAAA,qCAAA1C,CAAA,CAAAiC,QAAA,MAAAC,CAAA,WAAAV,EAAAzB,CAAA,MAAAC,CAAA,EAAA8C,MAAA,CAAA/C,CAAA,UAAAA,CAAA,GAAAC,CAAA,CAAA+C,QAAA,CAAAhD,CAAA,UAAAA,CAAA,GAAAC,CAAA,CAAAgD,UAAA,CAAAjD,CAAA,IAAAC,CAAA,CAAAiD,QAAA,CAAAlD,CAAA,UAAAmD,UAAA,CAAAC,IAAA,CAAAnD,CAAA,WAAAoD,EAAArD,CAAA,MAAAC,CAAA,CAAAD,CAAA,CAAAsD,UAAA,KAAArD,CAAA,CAAAkB,IAAA,iBAAAlB,CAAA,CAAAmB,GAAA,CAAApB,CAAA,CAAAsD,UAAA,CAAArD,CAAA,UAAAe,EAAAhB,CAAA,OAAAmD,UAAA,GAAAJ,MAAA,UAAA/C,CAAA,CAAAsB,OAAA,CAAAG,CAAA,YAAA8B,KAAA,cAAAC,EAAAxD,CAAA,KAAAA,CAAA,MAAAC,CAAA,CAAAD,CAAA,CAAAyD,CAAA,KAAAxD,CAAA,QAAAA,CAAA,CAAAoB,IAAA,CAAArB,CAAA,wBAAAA,CAAA,CAAA6C,IAAA,QAAA7C,CAAA,KAAA0D,KAAA,CAAA1D,CAAA,CAAA2D,MAAA,OAAAzD,CAAA,IAAAU,CAAA,UAAAX,EAAA,SAAAC,CAAA,CAAAF,CAAA,CAAA2D,MAAA,KAAAhC,CAAA,CAAAN,IAAA,CAAArB,CAAA,CAAAE,CAAA,SAAAD,CAAA,CAAAI,KAAA,CAAAL,CAAA,CAAAE,CAAA,EAAAD,CAAA,CAAAuC,IAAA,IAAAvC,CAAA,QAAAA,CAAA,CAAAI,KAAA,QAAAJ,CAAA,CAAAuC,IAAA,IAAAvC,CAAA,SAAAW,CAAA,CAAAiC,IAAA,CAAAjC,CAAA,SAAAiC,IAAA,CAAAb,CAAA,WAAAA,EAAA,SAAA3B,KAAA,QAAAmC,IAAA,KAAAoB,mBAAA,SAAAA,CAAA,SAAAC,CAAA,MAAAA,CAAA,IAAAC,CAAA,CAAA3D,MAAA,CAAAQ,SAAA,CAAAgB,CAAA,CAAAmC,CAAA,CAAAC,cAAA,CAAA9C,CAAA,CAAAd,MAAA,CAAAC,cAAA,WAAAJ,CAAA,CAAAC,CAAA,CAAAC,CAAA,EAAAF,CAAA,CAAAC,CAAA,EAAAC,CAAA,CAAAG,KAAA,EAAA2D,CAAA,oBAAAC,MAAA,CAAAA,MAAA,IAAAR,CAAA,CAAAO,CAAA,CAAAvB,QAAA,eAAAyB,CAAA,CAAAF,CAAA,CAAAG,aAAA,oBAAAC,CAAA,CAAAJ,CAAA,CAAAK,WAAA,sBAAArE,CAAA,cAAAC,CAAA,EAAAD,CAAA,SAAAA,EAAA,CAAAC,CAAA,CAAAC,CAAA,SAAAF,CAAA,CAAAC,CAAA,EAAAC,CAAA,EAAA2D,CAAA,CAAAS,IAAA,CAAArE,CAAA,KAAAkC,CAAA,IAAAoC,CAAA,IAAAvE,CAAA,CAAAuE,CAAA,CAAAd,CAAA,8BAAAe,CAAA,CAAArE,MAAA,CAAAsE,cAAA,CAAAC,CAAA,CAAAF,CAAA,EAAAA,CAAA,CAAAA,CAAA,CAAAhB,CAAA,OAAAkB,CAAA,EAAAA,CAAA,GAAAZ,CAAA,EAAAnC,CAAA,CAAAN,IAAA,CAAAqD,CAAA,CAAAjB,CAAA,IAAAc,CAAA,CAAAG,CAAA,MAAAC,CAAA,CAAAjE,CAAA,CAAAC,SAAA,CAAAC,CAAA,CAAAD,SAAA,CAAAR,MAAA,CAAAW,MAAA,CAAAyD,CAAA,SAAA9D,CAAA,CAAAE,SAAA,CAAAD,CAAA,CAAAO,CAAA,CAAA0D,CAAA,gBAAAtE,KAAA,CAAAK,CAAA,CAAAH,YAAA,MAAAU,CAAA,CAAAP,CAAA,gBAAAL,KAAA,CAAAI,CAAA,CAAAF,YAAA,MAAAE,CAAA,CAAAmE,WAAA,CAAA5E,CAAA,CAAAU,CAAA,CAAA0D,CAAA,sBAAAP,CAAA,CAAAgB,mBAAA,UAAA7E,CAAA,MAAAC,CAAA,oBAAAD,CAAA,EAAAA,CAAA,CAAA8E,WAAA,SAAA7E,CAAA,GAAAA,CAAA,GAAAQ,CAAA,yBAAAR,CAAA,CAAA2E,WAAA,EAAA3E,CAAA,CAAA8E,IAAA,IAAAlB,CAAA,CAAAmB,IAAA,UAAA/E,CAAA,SAAAE,MAAA,CAAA8E,cAAA,CAAA9E,MAAA,CAAA8E,cAAA,CAAAhF,CAAA,CAAAS,CAAA,GAAAT,CAAA,CAAAiF,SAAA,CAAAxE,CAAA,CAAAV,CAAA,CAAAC,CAAA,CAAAmE,CAAA,uBAAAnE,CAAA,CAAAU,SAAA,CAAAR,MAAA,CAAAW,MAAA,CAAA6D,CAAA,EAAA1E,CAAA,EAAA4D,CAAA,CAAAsB,KAAA,UAAAnF,CAAA,SAAA6B,OAAA,CAAA7B,CAAA,GAAAa,CAAA,CAAAE,CAAA,CAAAJ,SAAA,EAAAX,CAAA,CAAAe,CAAA,CAAAJ,SAAA,CAAAuD,CAAA,0BAAAL,CAAA,CAAAuB,aAAA,CAAArE,CAAA,CAAA8C,CAAA,CAAAwB,KAAA,UAAArF,CAAA,CAAAE,CAAA,CAAAU,CAAA,CAAAH,CAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAA,CAAA,CAAA4E,OAAA,MAAAzE,CAAA,KAAAE,CAAA,CAAAd,CAAA,CAAAD,CAAA,CAAAE,CAAA,CAAAU,CAAA,CAAAH,CAAA,EAAAC,CAAA,SAAAmD,CAAA,CAAAgB,mBAAA,CAAA3E,CAAA,EAAAW,CAAA,CAAAA,CAAA,CAAAgC,IAAA,GAAAf,IAAA,UAAA9B,CAAA,SAAAA,CAAA,CAAAwC,IAAA,CAAAxC,CAAA,CAAAK,KAAA,CAAAQ,CAAA,CAAAgC,IAAA,MAAAhC,CAAA,CAAA8D,CAAA,EAAA3E,CAAA,CAAA2E,CAAA,CAAAP,CAAA,cAAApE,CAAA,CAAA2E,CAAA,CAAAlB,CAAA,0BAAAzD,CAAA,CAAA2E,CAAA,oDAAAd,CAAA,CAAA0B,IAAA,UAAAvF,CAAA,MAAAC,CAAA,CAAAE,MAAA,CAAAH,CAAA,EAAAE,CAAA,YAAAU,CAAA,IAAAX,CAAA,CAAAC,CAAA,CAAAkD,IAAA,CAAAxC,CAAA,SAAAV,CAAA,CAAAsF,OAAA,YAAAxF,EAAA,OAAAE,CAAA,CAAAyD,MAAA,OAAA/C,CAAA,CAAAV,CAAA,CAAAuF,GAAA,MAAA7E,CAAA,IAAAX,CAAA,QAAAD,CAAA,CAAAK,KAAA,CAAAO,CAAA,CAAAZ,CAAA,CAAAwC,IAAA,IAAAxC,CAAA,QAAAA,CAAA,CAAAwC,IAAA,IAAAxC,CAAA,GAAA6D,CAAA,CAAA6B,MAAA,CAAAlC,CAAA,CAAAxC,CAAA,CAAAL,SAAA,EAAAmE,WAAA,CAAA9D,CAAA,CAAAuC,KAAA,UAAAA,MAAAvD,CAAA,UAAA2F,IAAA,QAAA9C,IAAA,QAAAT,IAAA,MAAAC,KAAA,aAAAG,IAAA,SAAAN,QAAA,WAAAD,MAAA,aAAAb,GAAA,aAAA+B,UAAA,CAAA7B,OAAA,CAAA+B,CAAA,GAAArD,CAAA,SAAAC,CAAA,eAAAA,CAAA,CAAA2F,MAAA,KAAAjE,CAAA,CAAAN,IAAA,MAAApB,CAAA,IAAAyD,KAAA,EAAAzD,CAAA,CAAA4F,KAAA,YAAA5F,CAAA,WAAA6F,IAAA,UAAAA,KAAA,OAAAtD,IAAA,QAAAxC,CAAA,MAAAmD,UAAA,IAAAG,UAAA,cAAAtD,CAAA,CAAAmB,IAAA,OAAAnB,CAAA,CAAAoB,GAAA,aAAA2E,IAAA,EAAAzD,iBAAA,UAAAA,kBAAAtC,CAAA,WAAAC,GAAA,CAAAW,CAAA,SAAAF,CAAA,CAAAS,IAAA,SAAAT,CAAA,CAAAU,GAAA,CAAApB,CAAA,CAAAE,CAAA,CAAA2C,IAAA,CAAA5C,CAAA,CAAAW,CAAA,GAAAV,CAAA,CAAA+B,MAAA,QAAA/B,CAAA,CAAAkB,GAAA,WAAAR,CAAA,SAAA4B,IAAA,OAAAxC,CAAA,SAAAE,CAAA,MAAAU,CAAA,MAAAuC,UAAA,CAAAQ,MAAA,MAAA/C,CAAA,GAAAA,CAAA,MAAAH,CAAA,MAAA0C,UAAA,CAAAvC,CAAA,EAAAF,CAAA,CAAAD,CAAA,CAAA6C,UAAA,aAAA7C,CAAA,CAAAsC,MAAA,QAAA9C,CAAA,WAAAQ,CAAA,CAAAsC,MAAA,OAAA4C,IAAA,MAAA9E,CAAA,CAAAc,CAAA,CAAAN,IAAA,CAAAZ,CAAA,aAAAM,CAAA,CAAAY,CAAA,CAAAN,IAAA,CAAAZ,CAAA,kBAAAI,CAAA,EAAAE,CAAA,UAAA4E,IAAA,CAAAlF,CAAA,CAAAuC,QAAA,QAAA/C,CAAA,CAAAQ,CAAA,CAAAuC,QAAA,aAAA2C,IAAA,CAAAlF,CAAA,CAAAwC,UAAA,QAAAhD,CAAA,CAAAQ,CAAA,CAAAwC,UAAA,WAAApC,CAAA,MAAAE,CAAA,WAAAgB,KAAA,mDAAA4D,IAAA,CAAAlF,CAAA,CAAAwC,UAAA,QAAAhD,CAAA,CAAAQ,CAAA,CAAAwC,UAAA,eAAA0C,IAAA,CAAAlF,CAAA,CAAAuC,QAAA,QAAA/C,CAAA,CAAAQ,CAAA,CAAAuC,QAAA,QAAAT,MAAA,UAAAA,OAAAvC,CAAA,CAAAC,CAAA,UAAAC,CAAA,CAAAU,CAAA,MAAAuC,UAAA,CAAAQ,MAAA,MAAA/C,CAAA,GAAAA,CAAA,IAAAV,CAAA,MAAAiD,UAAA,CAAAvC,CAAA,EAAAV,CAAA,CAAA6C,MAAA,OAAA4C,IAAA,EAAAhE,CAAA,CAAAN,IAAA,CAAAnB,CAAA,qBAAAyF,IAAA,CAAAzF,CAAA,CAAA+C,UAAA,MAAAxC,CAAA,CAAAP,CAAA,OAAAO,CAAA,aAAAT,CAAA,eAAAA,CAAA,GAAAS,CAAA,CAAAsC,MAAA,EAAA9C,CAAA,EAAAA,CAAA,EAAAQ,CAAA,CAAAwC,UAAA,GAAAxC,CAAA,WAAAC,CAAA,CAAAD,CAAA,CAAAA,CAAA,CAAA6C,UAAA,WAAA5C,CAAA,CAAAS,IAAA,CAAAnB,CAAA,CAAAU,CAAA,CAAAU,GAAA,CAAAnB,CAAA,CAAAQ,CAAA,OAAAwB,MAAA,aAAAY,IAAA,CAAApC,CAAA,CAAAwC,UAAA,CAAAd,CAAA,OAAA6D,QAAA,CAAAtF,CAAA,GAAAsF,QAAA,UAAAA,SAAAhG,CAAA,CAAAC,CAAA,eAAAD,CAAA,CAAAmB,IAAA,OAAAnB,CAAA,CAAAoB,GAAA,iBAAApB,CAAA,CAAAmB,IAAA,eAAAnB,CAAA,CAAAmB,IAAA,MAAA0B,IAAA,CAAA7C,CAAA,CAAAoB,GAAA,YAAApB,CAAA,CAAAmB,IAAA,OAAA4E,IAAA,MAAA3E,GAAA,CAAApB,CAAA,CAAAoB,GAAA,MAAAa,MAAA,eAAAY,IAAA,mBAAA7C,CAAA,CAAAmB,IAAA,EAAAlB,CAAA,QAAA4C,IAAA,CAAA5C,CAAA,EAAAkC,CAAA,EAAA8D,MAAA,UAAAA,OAAAjG,CAAA,UAAAC,CAAA,CAAAC,CAAA,MAAAiD,UAAA,CAAAQ,MAAA,MAAAzD,CAAA,GAAAA,CAAA,IAAAD,CAAA,MAAAkD,UAAA,CAAAjD,CAAA,EAAAD,CAAA,CAAAgD,UAAA,GAAAjD,CAAA,aAAAgG,QAAA,CAAA/F,CAAA,CAAAqD,UAAA,CAAArD,CAAA,CAAAiD,QAAA,EAAAG,CAAA,CAAApD,CAAA,EAAAkC,CAAA,EAAA+D,KAAA,UAAAC,OAAAnG,CAAA,UAAAC,CAAA,CAAAC,CAAA,MAAAiD,UAAA,CAAAQ,MAAA,MAAAzD,CAAA,GAAAA,CAAA,IAAAD,CAAA,MAAAkD,UAAA,CAAAjD,CAAA,EAAAD,CAAA,CAAA8C,MAAA,GAAA/C,CAAA,MAAAY,CAAA,CAAAX,CAAA,CAAAqD,UAAA,cAAA1C,CAAA,CAAAO,IAAA,MAAAV,CAAA,CAAAG,CAAA,CAAAQ,GAAA,CAAAiC,CAAA,CAAApD,CAAA,SAAAQ,CAAA,WAAAsB,KAAA,2BAAAqE,aAAA,UAAAA,cAAApG,CAAA,CAAAC,CAAA,CAAAC,CAAA,cAAAgC,QAAA,EAAAO,QAAA,CAAAe,CAAA,CAAAxD,CAAA,EAAA4C,UAAA,CAAA3C,CAAA,CAAA6C,OAAA,CAAA5C,CAAA,gBAAA+B,MAAA,QAAAb,GAAA,SAAAe,CAAA,GAAA0B,CAAA,UAAAwC,mBAAArG,CAAA,CAAAC,CAAA,CAAAC,CAAA,CAAAU,CAAA,CAAAH,CAAA,CAAAC,CAAA,CAAAG,CAAA,UAAAE,CAAA,CAAAf,CAAA,CAAAU,CAAA,EAAAG,CAAA,EAAAK,CAAA,CAAAH,CAAA,CAAAV,KAAA,OAAAL,CAAA,cAAAE,CAAA,CAAAF,CAAA,EAAAe,CAAA,CAAAyB,IAAA,CAAAvC,CAAA,CAAAiB,CAAA,EAAAoE,OAAA,CAAA1D,OAAA,CAAAV,CAAA,EAAAY,IAAA,CAAAlB,CAAA,CAAAH,CAAA,WAAA6F,kBAAAtG,CAAA,wBAAAC,CAAA,MAAAC,CAAA,CAAAqG,SAAA,YAAAjB,OAAA,UAAA1E,CAAA,CAAAH,CAAA,WAAAC,EAAAV,CAAA,EAAAqG,kBAAA,CAAAtF,CAAA,CAAAH,CAAA,CAAAH,CAAA,CAAAC,CAAA,CAAAG,CAAA,QAAAb,CAAA,WAAAa,EAAAb,CAAA,EAAAqG,kBAAA,CAAAtF,CAAA,CAAAH,CAAA,CAAAH,CAAA,CAAAC,CAAA,CAAAG,CAAA,SAAAb,CAAA,MAAAe,CAAA,CAAAf,CAAA,CAAAwG,KAAA,CAAAvG,CAAA,CAAAC,CAAA,EAAAQ,CAAA,qBAAA+F,gBAAAzG,CAAA,CAAAC,CAAA,OAAAD,CAAA,YAAAC,CAAA,YAAA0C,SAAA,+CAAA+D,kBAAA1G,CAAA,CAAAC,CAAA,UAAAC,CAAA,CAAAU,CAAA,GAAAA,CAAA,CAAAX,CAAA,CAAA0D,MAAA,CAAA/C,CAAA,GAAAV,CAAA,CAAAD,CAAA,CAAAW,CAAA,EAAAV,CAAA,CAAAI,UAAA,CAAAJ,CAAA,CAAAI,UAAA,KAAAJ,CAAA,CAAAK,YAAA,cAAAL,CAAA,GAAAA,CAAA,CAAAM,QAAA,KAAAL,MAAA,CAAAC,cAAA,CAAAJ,CAAA,CAAA2G,cAAA,CAAAzG,CAAA,CAAA0G,GAAA,EAAA1G,CAAA,WAAA2G,aAAA7G,CAAA,CAAAC,CAAA,CAAAC,CAAA,SAAAD,CAAA,EAAAyG,iBAAA,CAAA1G,CAAA,CAAAW,SAAA,CAAAV,CAAA,EAAAC,CAAA,EAAAwG,iBAAA,CAAA1G,CAAA,CAAAE,CAAA,EAAAC,MAAA,CAAAC,cAAA,CAAAJ,CAAA,cAAAQ,QAAA,MAAAR,CAAA,UAAA8G,gBAAA9G,CAAA,CAAAC,CAAA,CAAAC,CAAA,SAAAD,CAAA,CAAA0G,cAAA,CAAA1G,CAAA,EAAAA,CAAA,IAAAD,CAAA,CAAAG,MAAA,CAAAC,cAAA,CAAAJ,CAAA,CAAAC,CAAA,EAAAI,KAAA,CAAAH,CAAA,CAAAI,UAAA,IAAAC,YAAA,IAAAC,QAAA,MAAAR,CAAA,CAAAC,CAAA,EAAAC,CAAA,CAAAF,CAAA,UAAA2G,eAAA3G,CAAA,MAAAC,CAAA,CAAA8G,YAAA,CAAA/G,CAAA,4BAAA0B,OAAA,CAAAzB,CAAA,EAAAA,CAAA,CAAAA,CAAA,aAAA8G,aAAA/G,CAAA,CAAAC,CAAA,gBAAAyB,OAAA,CAAA1B,CAAA,UAAAA,CAAA,QAAAA,CAAA,KAAAE,CAAA,CAAAF,CAAA,CAAAiE,MAAA,CAAA+C,WAAA,KAAA9G,CAAA,eAAAU,CAAA,CAAAV,CAAA,CAAAmB,IAAA,CAAArB,CAAA,CAAAC,CAAA,2BAAAyB,OAAA,CAAAd,CAAA,SAAAA,CAAA,WAAA+B,SAAA,mEAAA1C,CAAA,CAAAgH,MAAA,CAAAC,MAAA,EAAAlH,CAAA,EA0RA;AACA;AACA;AACA;AACA,GAJA,GAKa,CAAAmH,eAAe,yBAU1B;AACF;AACA,KACE,SAAAnH,EAAAC,CAAA,CAIsB,IAHpB,CAAAmH,CAAQ,CAAAnH,CAAA,CAARmH,QAAQ,CACRC,CAAa,CAAApH,CAAA,CAAboH,aAAa,CACbC,CAAqB,CAAArH,CAAA,CAArBqH,qBAAqB,CAAAb,eAAA,MAAAzG,CAAA,EAAA8G,eAAA,uCAAAA,eAAA,sCAAAA,eAAA,qCAAAA,eAAA,uCAAAA,eAAA,8BAAAA,eAAA,0BAAAA,eAAA,oCAAAA,eAAA,oCAAApG,CAAA,CAEgB,GAAI,CAAA6G,8BAAc,CACrDH,CAAQ,CACRC,CAAa,CACd,CAHiBG,CAAc,CAAA9G,CAAA,CAAxB+G,QAAQ,CAKdC,CAAe,CAKbJ,CAAqB,CALvBI,eAAe,CACfC,CAAmB,CAIjBL,CAAqB,CAJvBK,mBAAmB,CACnBC,CAAmB,CAGjBN,CAAqB,CAHvBM,mBAAmB,CACnBC,CAAyB,CAEvBP,CAAqB,CAFvBO,yBAAyB,CACzBC,CAA2B,CACzBR,CAAqB,CADvBQ,2BAA2B,CAEvBC,CAAS,CAAG,GAAI,CAAAC,oBAAS,CAAC,CAC9BZ,QAAQ,CAARA,CAAQ,CACRa,WAAW,CAAET,CAAc,CAACS,WAAW,CACvCC,WAAW,CAAEN,CAAmB,CAChCO,iBAAiB,CAAEN,CACrB,CAAC,CAAC,CACIO,CAAa,CAAG,GAAI,CAAAC,0BAAY,CACpCC,gCAAqB,CACtB,CAEKC,CAAiB,CAAGb,CAAe,CAACc,UAAU,CAClDC,4BAAmB,CAACC,UAAU,CAC/B,CACKC,CAAoB,CAAGjB,CAAe,CAACc,UAAU,CACrDC,4BAAmB,CAACG,aAAa,CAClC,CACKC,CAAsB,CAAGnB,CAAe,CAACc,UAAU,CACvDC,4BAAmB,CAACK,eAAe,CACpC,CAEKC,CAAqB,CAAG,GAAI,CAAAC,4CAAqB,CAAC,CACtDvB,QAAQ,CAAED,CAAc,CACxByB,OAAO,CAAEV,CAAiB,CAC1BR,SAAS,CAATA,CAAS,CACTD,2BAA2B,CAA3BA,CAA2B,CAC3BoB,wBAAwB,QAAE7B,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAE8B,4BAA4B,CACrEN,sBAAsB,CAAtBA,CAAsB,CACtBlB,mBAAmB,CAAnBA,CACF,CAAC,CAAC,CAEF,IAAI,CAACI,SAAS,CAAGA,CAAS,CAC1B,IAAI,CAACK,aAAa,CAAGA,CAAa,CAClC,IAAI,CAACW,qBAAqB,CAAGA,CAAqB,CAClD,IAAI,CAACJ,oBAAoB,CAAGA,CAAoB,CAChD,IAAI,CAACf,mBAAmB,CAAGA,CAAmB,CAC9C,IAAI,CAACiB,sBAAsB,CAAGA,CAChC,CAAC,OAAAhC,YAAA,CAAA7G,CAAA,GAAA4G,GAAA,cAAAvG,KAAA,qBAAAL,EAAA,SAAAC,CAAA,CAAAuG,KAAA,MAAAD,SAAA,MAAAtG,CAAA,CAAAqG,iBAAA,cAAA1C,mBAAA,GAAAoB,IAAA,CAED,SAAA/E,EAAwBmJ,CAAkB,MAAAlJ,CAAA,CAAAU,CAAA,QAAAgD,mBAAA,GAAAU,IAAA,UAAA7D,EAAAR,CAAA,iBAAAA,CAAA,CAAA0F,IAAA,CAAA1F,CAAA,CAAA4C,IAAA,gBAAA5C,CAAA,CAAA4C,IAAA,GACnB,IAAI,CAACkG,qBAAqB,CAACP,UAAU,CAACY,CAAQ,CAAC,cAA9D,CAAAC,CAAM,CAAApJ,CAAA,CAAAmC,IAAA,CACZiH,CAAM,CAACC,KAAK,EAAE,CAERC,CAAsB,CAAG,GAAI,CAAAC,8CAAsB,CACvD,IAAI,CAACT,qBAAqB,CAACU,WAAW,CACtC,IAAI,CAACd,oBAAoB,CAC1B,CAED,IAAI,CAACY,sBAAsB,CAAGA,CAAsB,CAEpD,IAAI,CAACG,eAAe,CAAGN,CAAQ,CAAAnJ,CAAA,CAAAsC,MAAA,UAExB8G,CAAM,CAACM,EAAE,0BAAA1J,CAAA,CAAA6F,IAAA,MAAA7F,CAAA,OACjB,UAAAD,CAAA,MAAA4G,GAAA,WAAAvG,KAAA,CAED,SAAAuJ,QAAeC,CAAmB,CAAsC,KAAA5J,CAAA,CAGtE,GAFA6J,oBAAS,CAACC,mBAAmB,CAACF,CAAW,CAAC,CAACP,KAAK,EAAE,CAE9C,CAAC,IAAI,CAACP,qBAAqB,CAC7B,KAAM,IAAI,CAAAiB,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAC5D,QAAAhK,CAAA,CAAAqG,SAAA,CAAA5C,MAAA,CALoCwG,CAAI,CAAAC,KAAA,GAAAlK,CAAA,CAAAA,CAAA,MAAAO,CAAA,GAAAA,CAAA,CAAAP,CAAA,CAAAO,CAAA,GAAJ0J,CAAI,CAAA1J,CAAA,IAAA8F,SAAA,CAAA9F,CAAA,EAOzC,CAAAR,CAAA,KAAI,CAAC8I,qBAAqB,EAACsB,gBAAgB,CAAA7D,KAAA,CAAAvG,CAAA,EAAC4J,CAAW,EAAAS,MAAA,CAAKH,CAAI,EAAC,CAACb,KAAK,EACzE,CAAC,GAAA1C,GAAA,wBAAAvG,KAAA,qBAAAL,GAAA,SAAAC,CAAA,CAAAuG,KAAA,MAAAD,SAAA,MAAAtG,CAAA,CAAAqG,iBAAA,cAAA1C,mBAAA,GAAAoB,IAAA,CAED,SAAA/E,EACE4J,CAAmB,MAAA3J,CAAA,CAAAU,CAAA,CAAAH,CAAA,CAAAC,CAAA,CAAAG,CAAA,CAAAE,CAAA,CAAAG,CAAA,CAAAM,CAAA,CAAA+E,SAAA,QAAA3C,mBAAA,GAAAU,IAAA,UAAA7C,EAAAxB,CAAA,iBAAAA,CAAA,CAAA0F,IAAA,CAAA1F,CAAA,CAAA4C,IAAA,eACnB,CAAA0H,CAAa,KAAA/I,CAAA,CAAAmC,MAAA,WAAAnC,CAAA,MAAAA,CAAA,IAAAvB,CAAA,CAAA4C,IAAA,GAEQ,IAAI,CAACkF,SAAS,CAACyC,cAAc,CAACX,CAAW,CAAC,QAAzDR,CAAM,CAAApJ,CAAA,CAAAmC,IAAA,CACN+H,CAAI,CAAGd,CAAM,CAACC,KAAK,EAAE,CAErBmB,CAAW,CAAGX,oBAAS,CAACY,gBAAgB,CAACP,CAAI,CAAC,CAAAtJ,CAAA,CAAA8J,0BAAA,CAE7BF,CAAW,MAAlC,IAAA5J,CAAA,CAAAI,CAAA,KAAAF,CAAA,CAAAF,CAAA,CAAA2C,CAAA,IAAAhB,IAAA,EAAWoI,CAAQ,CAAA7J,CAAA,CAAAV,KAAA,EAEfkK,CAAa,EACb,IAAI,CAACxB,qBAAqB,CAAC8B,sBAAsB,CAACD,CAAQ,CAAC,GAE3D,IAAI,CAAChB,OAAO,CAACC,CAAW,CAAEe,CAAQ,CAErC,OAAA5K,CAAA,EAAAa,CAAA,CAAAJ,CAAA,CAAAT,CAAA,UAAAa,CAAA,CAAAH,CAAA,UAAAT,CAAA,CAAAsC,MAAA,UAEMkI,CAAW,0BAAAxK,CAAA,CAAA6F,IAAA,MAAA7F,CAAA,OACnB,UAAAD,CAAA,MAAA4G,GAAA,qBAAAvG,KAAA,CAED,SAAAyK,kBAAyBjB,CAAmB,CAAEkB,CAAoB,CAAU,KAAA7K,CAAA,MAG1E,GAFA4J,oBAAS,CAACC,mBAAmB,CAACF,CAAW,CAAC,CAACP,KAAK,EAAE,CAE9C,CAAC,IAAI,CAACP,qBAAqB,EAAI,CAAC,IAAI,CAACQ,sBAAsB,CAC7D,KAAM,IAAI,CAAAS,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAG7D,GAAM,CAAAc,CAAU,CAAG,IAAI,CAACjC,qBAAqB,CAACU,WAAW,CAACwB,IAAI,CAC5D,SAACC,CAAI,QAAK,CAAAA,CAAI,CAACC,EAAE,GAAYJ,CAAY,GAAC,EAC3C,CAED,GAAI,CAACC,CAAU,CACb,KAAM,IAAI,CAAAhB,8BAAc,CACtBC,kCAAkB,CAACmB,+BAA+B,CAClDL,CAAY,CACZlB,CAAW,CACZ,CACF,GAEK,CAAAwB,CAAa,CACjB,IAAI,CAACtC,qBAAqB,CAACuC,mBAAmB,CAACzB,CAAW,CAAC,CAEzD0B,CAAW,CAAGC,mCAAwB,CAEpCC,CAAe,CAAG3B,oBAAS,CAAC4B,cAAc,CAAC,CAC/C7B,WAAW,CAAXA,CAAW,CACXkB,YAAY,CAAZA,CAAY,CACZM,aAAa,CAAbA,CAAa,CACbM,OAAO,CAAEX,CAAU,CAACW,OAAO,CAC3B5C,qBAAqB,CAAE,IAAI,CAACA,qBAAqB,CACjDQ,sBAAsB,CAAE,IAAI,CAACA,sBAAsB,CACnDrB,WAAW,CAAE,IAAI,CAACN,mBACpB,CAAC,CAAC,CAAC0B,KAAK,EAAE,CAkCV,GAhCAiC,CAAW,CAAG,IAAI,CAAChC,sBAAsB,CACtCqC,wBAAwB,CAAC/B,CAAW,CAAEkB,CAAY,CAAC,CACnDc,IAAI,CAAC,SAACC,CAAK,CAAK,CACf,GAAIA,CAAK,CAAC3K,IAAI,GAAK8I,kCAAkB,CAAC8B,YAAY,CAYhD,MAXA,CAAAjC,oBAAS,CAACkC,eAAe,CAAC,CACxBjE,SAAS,CAAE7H,CAAI,CAAC6H,SAAS,CACzBgB,qBAAqB,CAAE7I,CAAI,CAAC6I,qBAAqB,CACjDkD,aAAa,GAAM,CACnBV,WAAW,CAAXA,CAAW,CACX1B,WAAW,CAAXA,CAAW,CACXkB,YAAY,CAAZA,CAAY,CACZrB,eAAe,CAAExJ,CAAI,CAACwJ,eAAe,CACrCb,sBAAsB,CAAE3I,CAAI,CAAC2I,sBAC/B,CAAC,CAAC,CAEK2C,mCAAwB,CAGjC,KAAM,CAAAM,CACR,CAAC,CAAC,CAEJhC,oBAAS,CAACkC,eAAe,CAAC,CACxBjE,SAAS,CAAE,IAAI,CAACA,SAAS,CACzBgB,qBAAqB,CAAE,IAAI,CAACA,qBAAqB,CACjDkD,aAAa,GAAO,CACpBV,WAAW,CAAXA,CAAW,CACX1B,WAAW,CAAXA,CAAW,CACXkB,YAAY,CAAZA,CAAY,CACZrB,eAAe,CAAE,IAAI,CAACA,eAAe,CACrCb,sBAAsB,CAAE,IAAI,CAACA,sBAC/B,CAAC,CAAC,CAEE,CAAC4C,CAAe,CAClB,KAAM,IAAI,CAAAzB,8BAAc,CAACC,kCAAkB,CAACiC,WAAW,CAAErC,CAAW,CAAC,CAUvE,MAPA,CAAAC,oBAAS,CAACqC,WAAW,CAAC,CACpBC,YAAY,CAAE,IAAI,CAAChE,aAAa,CAChCyB,WAAW,CAAXA,CAAW,CACXkB,YAAY,CAAZA,CAAY,CACZQ,WAAW,CAAXA,CACF,CAAC,CAAC,CAEKA,CACT,CAAC,GAAA3E,GAAA,mBAAAvG,KAAA,CAED,SAAAgM,gBAAArM,CAAA,CAIoC,IAHlC,CAAA6J,CAAW,CAAA7J,CAAA,CAAX6J,WAAW,CACXyC,CAAM,CAAAtM,CAAA,CAANsM,MAAM,CACNC,CAAO,CAAAvM,CAAA,CAAPuM,OAAO,CAEP,IAAI,CAAC3C,OAAO,CAACC,CAAW,CAAE,GAAI,CAAA2C,yBAAU,CAAC,CAAEF,MAAM,CAANA,CAAM,CAAEC,OAAO,CAAPA,CAAQ,CAAC,CAAC,CAAC,CAC9D,IAAI,CAACE,KAAK,CAAC5C,CAAW,CACxB,CAAC,GAAAjD,GAAA,SAAAvG,KAAA,CAED,SAAAoM,MAAa5C,CAAoB,CAAQ,CACvC,GAAI,CAAC,IAAI,CAACd,qBAAqB,CAC7B,KAAM,IAAI,CAAAiB,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAO7D,GAJ2B,QAAQ,EAA/B,MAAO,CAAAL,CAAwB,EACjCC,oBAAS,CAACC,mBAAmB,CAACF,CAAW,CAAC,CAACP,KAAK,EAAE,CAGhDO,CAAW,CAQb,WAPA,CAAAC,oBAAS,CAAC4C,SAAS,CAAC,CAClB7C,WAAW,CAAXA,CAAW,CACXd,qBAAqB,CAAE,IAAI,CAACA,qBAAqB,CACjDhB,SAAS,CAAE,IAAI,CAACA,SAAS,CACzB2B,eAAe,CAAE,IAAI,CAACA,eAAe,CACrCb,sBAAsB,CAAE,IAAI,CAACA,sBAC/B,CAAC,CAAC,CAIJ;AACA;AACA;AACA;AACA,GAAI,CAAC,IAAI,CAACE,qBAAqB,CAAC4D,kBAAkB,CAAChJ,MAAM,CAKvD,WAJA,CAAAmG,oBAAS,CAAC8C,mBAAmB,CAAC,CAC5B7E,SAAS,CAAE,IAAI,CAACA,SAAS,CACzBkB,OAAO,CAAE,IAAI,CAACJ,sBAChB,CAAC,CAAC,CAEH,IAAA5I,CAAA,CAAAC,CAAA,CAAAyK,0BAAA,CAE4B,IAAI,CAAC5B,qBAAqB,CACpD4D,kBAAkB,MADrB,IAAAzM,CAAA,CAAAe,CAAA,KAAAhB,CAAA,CAAAC,CAAA,CAAAsD,CAAA,IAAAhB,IAAA,EACuB,IADZ,CAAAqK,CAAc,CAAA5M,CAAA,CAAAI,KAAA,CAEvByJ,oBAAS,CAAC4C,SAAS,CAAC,CAClB7C,WAAW,CAAEgD,CAAc,CAC3B9D,qBAAqB,CAAE,IAAI,CAACA,qBAAqB,CACjDhB,SAAS,CAAE,IAAI,CAACA,SAAS,CACzB2B,eAAe,CAAE,IAAI,CAACA,eAAe,CACrCb,sBAAsB,CAAE,IAAI,CAACA,sBAC/B,CAAC,CACH,CAAC,OAAA7I,CAAA,EAAAE,CAAA,CAAAO,CAAA,CAAAT,CAAA,UAAAE,CAAA,CAAAQ,CAAA,GACH,CAAC,GAAAkG,GAAA,aAAAvG,KAAA,CAED,SAAAyM,UAAiBjD,CAAoB,CAAQ,CAC3C,IAAI,CAAC4C,KAAK,CAAC5C,CAAW,CACxB,CAAC,GAAAjD,GAAA,kBAAAvG,KAAA,CAED,SAAA0M,eAAA,CAA0C,CACxC,GAAI,CAAC,IAAI,CAAChE,qBAAqB,CAC7B,KAAM,IAAI,CAAAiB,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAG7D,MAAO,KAAI,CAACnB,qBAAqB,CAACU,WAAW,CAACuD,GAAG,CAAC,SAAAhN,CAAA,KAAG,CAAAmL,CAAE,CAAAnL,CAAA,CAAFmL,EAAE,CAAEpG,CAAI,CAAA/E,CAAA,CAAJ+E,IAAI,OAAQ,CACnEoG,EAAE,EAASA,CAAG,CACdpG,IAAI,CAAJA,CACF,CAAC,CAAC,CACJ,CAAC,GAAA6B,GAAA,yBAAAvG,KAAA,CAED,SAAA4M,sBACEpD,CAAmB,CAED,IADlB,CAAAqD,CAAQ,KAAA3G,SAAA,CAAA5C,MAAA,WAAA4C,SAAA,MAAAA,SAAA,IAER,GAAI,CAAC,IAAI,CAACgD,sBAAsB,EAAI,CAAC,IAAI,CAACR,qBAAqB,CAC7D,KAAM,IAAI,CAAAiB,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAG7DJ,oBAAS,CAACC,mBAAmB,CAACF,CAAW,CAAC,CAACP,KAAK,EAAE,KAAApJ,CAAA,CAE5CuJ,CAAW,CAAG,IAAI,CAACV,qBAAqB,CAACU,WAAW,CACpDJ,CAAwB,CAAG,EAAE,CAE7BgC,CAAa,CACjB,IAAI,CAACtC,qBAAqB,CAACuC,mBAAmB,CAACzB,CAAW,CAAC,CAAAhJ,CAAA,CAAA8J,0BAAA,CAEpClB,CAAW,MAApC,IAAA5I,CAAA,CAAAI,CAAA,KAAAf,CAAA,CAAAW,CAAA,CAAA2C,CAAA,IAAAhB,IAAA,EAAsC,IAA3B,CAAAwI,CAAU,CAAA9K,CAAA,CAAAG,KAAA,CACX8K,CAAE,CAAoBH,CAAU,CAAhCG,EAAE,CAAEpG,CAAI,CAAciG,CAAU,CAA5BjG,IAAI,CAAE4G,CAAO,CAAKX,CAAU,CAAtBW,OAAO,CAEnBF,CAAe,CAAG3B,oBAAS,CAAC4B,cAAc,CAAC,CAC/CL,aAAa,CAAbA,CAAa,CACbxB,WAAW,CAAXA,CAAW,CACX8B,OAAO,CAAPA,CAAO,CACPpC,sBAAsB,CAAE,IAAI,CAACA,sBAAsB,CACnDR,qBAAqB,CAAE,IAAI,CAACA,qBAAqB,CACjDgC,YAAY,EAASI,CAAG,CACxBjD,WAAW,CAAE,IAAI,CAACN,mBACpB,CAAC,CAAC,CAAC0B,KAAK,EAAE,CAEV,GAAKmC,CAAe,EAIpB;AACA,GAAI,CAACyB,CAAQ,CAAE,CACb7D,CAAM,CAACjG,IAAI,CAAC,CAAE+H,EAAE,EAASA,CAAG,CAAEpG,IAAI,CAAJA,CAAK,CAAC,CAAC,CACrC,QACF,CAEA;AACA;AACA,GAAM,CAAAoI,CAAoB,CACxB,IAAI,CAAC5D,sBAAsB,CAAC6D,qBAAqB,CAACvD,CAAW,CAAC,CAEhE,GAAIsD,CAAoB,CAACxD,EAAE,CAAE,CAC3B,GAAM,CAAA0D,CAAmB,CAAGF,CAAoB,CAAChD,IAAI,CAACa,CAAU,CAACG,EAAE,CAAC,CAEpE,GAAIkC,CAAmB,CAAE,CACvBhE,CAAM,CAACjG,IAAI,CAAC,CAAE+H,EAAE,EAASA,CAAG,CAAEpG,IAAI,CAAJA,CAAK,CAAC,CAAC,CACrC,QACF,CACF,CAEA;AACA;AACA,GAAM,CAAAuI,CAAe,CACnB,IAAI,CAAC/D,sBAAsB,CAACgE,sBAAsB,CAChD1D,CAAW,CACXmB,CAAU,CACX,CAECsC,CAAe,CAAC3D,EAAE,EACpBN,CAAM,CAACjG,IAAI,CAAC,CAAE+H,EAAE,EAASA,CAAG,CAAEpG,IAAI,CAAJA,CAAK,CAAC,CAAC,CAEzC,CAAC,OAAA/E,CAAA,EAAAa,CAAA,CAAAJ,CAAA,CAAAT,CAAA,UAAAa,CAAA,CAAAH,CAAA,GAED,MAAO,CAAA2I,CACT,CAAC,GAAAzC,GAAA,8BAAAvG,KAAA,CAED,SAAAmN,2BAAkCjC,CAAmB,CAAY,CAC/D,GAAI,CAAC,IAAI,CAACxC,qBAAqB,CAC7B,KAAM,IAAI,CAAAiB,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAC5D,IAAAjK,CAAA,CAEKwJ,CAAW,CAAG,IAAI,CAACV,qBAAqB,CAACU,WAAW,CAAA7I,CAAA,CAAA+J,0BAAA,CAEjClB,CAAW,MAApC,IAAA7I,CAAA,CAAAK,CAAA,KAAAhB,CAAA,CAAAW,CAAA,CAAA4C,CAAA,IAAAhB,IAAA,EAAsC,IAA3B,CAAAwI,CAAU,CAAA/K,CAAA,CAAAI,KAAA,CACboN,CAAS,CAAGzC,CAAU,CAAC0C,UAAU,CAACzC,IAAI,CAC1C,SAACC,CAAI,QAAK,CAAAA,CAAI,CAACC,EAAE,GAAYI,CAAW,GAAC,EAC1C,CAED,GAAIkC,CAAS,CACX,GAAI,CACF,MAAO,CAAAE,IAAI,CAACC,KAAK,CAACH,CAAS,CAACI,UAAU,CACxC,CAAE,MAAOC,CAAG,CAAE,CACZ,KAAM,IAAI,CAAA9D,8BAAc,CAACC,kCAAkB,CAAC8D,SAAS,CAAED,CAAG,CAC5D,CAEJ,CAAC,OAAA9N,CAAA,EAAAY,CAAA,CAAAH,CAAA,CAAAT,CAAA,UAAAY,CAAA,CAAAF,CAAA,GAED,KAAM,IAAI,CAAAsJ,8BAAc,CAACC,kCAAkB,CAAC+D,iBAAiB,CAC/D,CAAC,GAAApH,GAAA,mBAAAvG,KAAA,CAED,SAAA4N,gBAAA,CAA4C,CAC1C,GAAI,CAAC,IAAI,CAAClF,qBAAqB,CAC7B,KAAM,IAAI,CAAAiB,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAG7D,MAAO,KAAI,CAACnB,qBAAqB,CAACmF,YAAY,CAAClB,GAAG,CAChD,SAAAhN,CAAA,KAAG,CAAAmL,CAAE,CAAAnL,CAAA,CAAFmL,EAAE,CAAEgD,CAAU,CAAAnO,CAAA,CAAVmO,UAAU,OAAQ,CAAEhD,EAAE,CAAFA,CAAE,CAAEvE,GAAG,CAAEuH,CAAW,CAAC,CAAC,CAErD,CAAC,GAAAvH,GAAA,0BAAAvG,KAAA,CAED,SAAA+N,uBAA8BvE,CAAmB,CAAqB,CACpE,GAAI,CAAC,IAAI,CAACN,sBAAsB,EAAI,CAAC,IAAI,CAACR,qBAAqB,CAC7D,KAAM,IAAI,CAAAiB,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAC5D,IAAAjK,CAAA,CAEKiO,CAAY,CAAG,IAAI,CAACnF,qBAAqB,CAACmF,YAAY,CACtDG,CAAqC,CAAG,EAAE,CAE1ChD,CAAa,CACjB,IAAI,CAACtC,qBAAqB,CAACuC,mBAAmB,CAACzB,CAAW,CAAC,CAAAnJ,CAAA,CAAAiK,0BAAA,CAEnCuD,CAAY,MAAtC,IAAAxN,CAAA,CAAAO,CAAA,KAAAhB,CAAA,CAAAS,CAAA,CAAA8C,CAAA,IAAAhB,IAAA,EAAwC,IAA7B,CAAA8L,CAAW,CAAArO,CAAA,CAAAI,KAAA,CACdkO,CAAa,CAAG,IAAI,CAAChF,sBAAsB,CAC9CiF,uBAAuB,CAAC,CACvB3E,WAAW,CAAXA,CAAW,CACXwB,aAAa,CAAbA,CAAa,CACbiD,WAAW,CAAXA,CAAW,CACXvF,qBAAqB,CAAE,IAAI,CAACA,qBAAqB,CACjDb,WAAW,CAAE,IAAI,CAACN,mBACpB,CAAC,CAAC,CACD0B,KAAK,EAAE,CAEV,GAAIiF,CAAa,CAACE,YAAY,GAAKC,4BAAiB,CAAE,CACpD,GAAQ,CAAAC,CAAa,CAAiBJ,CAAa,CAA3CI,aAAa,CAAER,CAAU,CAAKI,CAAa,CAA5BJ,UAAU,CAEjCE,CAAkB,CAACjL,IAAI,CAAC,CAAE+H,EAAE,CAAEwD,CAAa,CAAE/H,GAAG,CAAEuH,CAAW,CAAC,CAChE,CACF,CAAC,OAAAnO,CAAA,EAAAU,CAAA,CAAAD,CAAA,CAAAT,CAAA,UAAAU,CAAA,CAAAA,CAAA,GAED,MAAO,CAAA2N,CACT,CAAC,GAAAzH,GAAA,8BAAAvG,KAAA,CAED,SAAAuO,2BACE/E,CAAmB,CACnBsE,CAAkB,CACV,CACRrE,oBAAS,CAACC,mBAAmB,CAACF,CAAW,CAAC,CAACP,KAAK,EAAE,CAElD,IAAApJ,CAAA,CAAyB,IAAI,CAAC2O,wBAAwB,CACpDhF,CAAW,CACXsE,CAAU,CACX,CAAC7E,KAAK,EAAE,CAHDmF,CAAY,CAAAvO,CAAA,CAAZuO,YAAY,CAKpB,MAAO,CAAAA,CACT,CAAC,GAAA7H,GAAA,0BAAAvG,KAAA,CAED,SAAAyO,uBAAA9O,CAAA,CAIgE,KAAAC,CAAA,CAH9D4J,CAAW,CAAA7J,CAAA,CAAX6J,WAAW,CACXsE,CAAU,CAAAnO,CAAA,CAAVmO,UAAU,CACVY,CAAW,CAAA/O,CAAA,CAAX+O,WAAW,CAEXjF,oBAAS,CAACC,mBAAmB,CAACF,CAAW,CAAC,CAACP,KAAK,EAAE,KAAA5I,CAAA,CAEzB,IAAI,CAACmO,wBAAwB,CACpDhF,CAAW,CACXsE,CAAU,CACX,CAAC7E,KAAK,EAAE,CAHDmF,CAAY,CAAA/N,CAAA,CAAZ+N,YAAY,CAOdP,CAAY,CAAI,IAAI,CAACnF,qBAAqB,CAC7CmF,YAAY,CAETI,CAAW,CAAGJ,CAAY,CAACjD,IAAI,CACnC,SAACC,CAAI,QAAK,CAAAA,CAAI,CAACiD,UAAU,GAAKA,CAAU,EACzC,CAPD;AACA;AAQA,GAAI,CAACG,CAAW,CACd,KAAM,IAAI,CAAAtE,8BAAc,CACtBC,kCAAkB,CAAC+E,gCAAgC,CACnDb,CAAU,CACVtE,CAAW,CACZ,CAGH,GAAM,CAAAoF,CAAQ,SAAAhP,CAAA,CAAGqO,CAAW,CAACZ,UAAU,CACpCzC,IAAI,CAAC,SAACC,CAAI,QAAK,CAAAA,CAAI,CAACtE,GAAG,GAAK6H,CAAY,EAAC,YAAAxO,CAAA,QAD3BA,CAAA,CAEbiP,SAAS,CAACjE,IAAI,CAAC,SAACC,CAAI,QAAK,CAAAA,CAAI,CAACtE,GAAG,GAAKmI,CAAW,EAAC,CAEtD,GAAI,CAACE,CAAQ,CACX,KAAM,IAAI,CAAAjF,8BAAc,CACtBC,kCAAkB,CAACkF,2BAA2B,CAC9CJ,CAAW,CACXlF,CAAW,CACZ,CAGH,GAAM,CAAAuF,CAAe,CAAGtF,oBAAS,CAACuF,oBAAoB,CAACJ,CAAQ,CAAC,CAAC3F,KAAK,EAAE,CAExE,MAAO,CAAA8F,CACT,CAAC,GAAAxI,GAAA,uBAAAvG,KAAA,CAED,SAAAiP,oBAA2BzF,CAAmB,CAAEsE,CAAkB,CAAW,CAC3E,GAAM,CAAAM,CAAY,CAAG,IAAI,CAACG,0BAA0B,CAClD/E,CAAW,CACXsE,CAAU,CACX,CAED,MAAO,CAAAM,CAAY,GAAKC,4BAC1B,CAAC,GAAA9H,GAAA,iBAAAvG,KAAA,qBAAAL,GAAA,SAAAC,CAAA,CAAAuG,KAAA,MAAAD,SAAA,MAAAtG,CAAA,CAAAqG,iBAAA,cAAA1C,mBAAA,GAAAoB,IAAA,CAED,SAAA/E,EAA2B2G,CAAW,MAAA1G,CAAA,QAAA0D,mBAAA,GAAAU,IAAA,UAAA1D,EAAAX,CAAA,iBAAAA,CAAA,CAAA0F,IAAA,CAAA1F,CAAA,CAAA4C,IAAA,gBAAA5C,CAAA,CAAA4C,IAAA,GACX,IAAI,CAACkF,SAAS,CAACwH,aAAa,CAAC3I,CAAG,CAAC,cAApD,CAAA4I,CAAU,CAAAvP,CAAA,CAAAmC,IAAA,CAAAnC,CAAA,CAAAsC,MAAA,UAETiN,CAAU,CAAClG,KAAK,EAAE,0BAAArJ,CAAA,CAAA6F,IAAA,MAAA7F,CAAA,OAC1B,UAAAD,CAAA,MAAA4G,GAAA,+BAAAvG,KAAA,qBAAAL,GAAA,SAAAC,CAAA,CAAAuG,KAAA,MAAAD,SAAA,MAAAtG,CAAA,CAAAqG,iBAAA,cAAA1C,mBAAA,GAAAoB,IAAA,CAED,SAAA/E,EAAAD,CAAA,MAAAE,CAAA,CAAAU,CAAA,CAAAH,CAAA,CAAAC,CAAA,CAAAG,CAAA,QAAA+C,mBAAA,GAAAU,IAAA,UAAAvD,EAAAd,CAAA,iBAAAA,CAAA,CAAA0F,IAAA,CAAA1F,CAAA,CAAA4C,IAAA,eACE,CAAAgH,CAAW,CAAA7J,CAAA,CAAX6J,WAAW,CACX4F,CAAe,CAAAzP,CAAA,CAAfyP,eAAe,CACfC,CAAY,CAAA1P,CAAA,CAAZ0P,YAAY,CAEZ5F,oBAAS,CAACC,mBAAmB,CAACF,CAAW,CAAC,CAACP,KAAK,EAAE,CAAArJ,CAAA,CAAA4C,IAAA,GAE/B,IAAI,CAAC0M,aAAa,CAACG,CAAY,EAAI7F,CAAW,CAAC,WAA5DM,CAAI,CAAAlK,CAAA,CAAAmC,IAAA,CAEL+H,CAAI,EAAAlK,CAAA,CAAA4C,IAAA,cACD,IAAI,CAAAmH,8BAAc,CAACC,kCAAkB,CAAC0F,UAAU,CAAC,WAItDxF,CAAI,CAACyF,iCAAsB,CAAC,EACwB,CAAC,GAAtDzP,MAAM,CAACoF,IAAI,CAAC4E,CAAI,CAACyF,iCAAsB,CAAC,CAAC,CAACjM,MAAY,EAAA1D,CAAA,CAAA4C,IAAA,gBAAA5C,CAAA,CAAAsC,MAAA,UAE/C,IAAI,eAGP,CAAAsN,CAAU,CAAAC,UAAA,CAAOC,yBAAU,EAC/BN,CAAe,EAAAnF,MAAA,CAAA0F,kBAAA,CACZ7P,MAAM,CAACoF,IAAI,CAAC4E,CAAI,CAACyF,iCAAsB,CAAC,CAAC,IAG9C,IAAI,CAAC7G,qBAAqB,CAACsB,gBAAgB,CAACR,CAAW,CAAEgG,CAAU,CAAC,CAAA5P,CAAA,CAAAsC,MAAA,UAE7DsN,CAAU,2BAAA5P,CAAA,CAAA6F,IAAA,MAAA7F,CAAA,OAClB,UAAAD,CAAA,MAAA4G,GAAA,yBAAAvG,KAAA,CAED,SAAA4P,sBAA6BC,CAAoB,CAAQ,CACvD,GAAI,CAAC,IAAI,CAACnH,qBAAqB,CAC7B,KAAM,IAAI,CAAAiB,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAG7D,IAAI,CAACnB,qBAAqB,CAACkH,qBAAqB,CAACC,CAAQ,CAC3D,CAAC,GAAAtJ,GAAA,yBAAAvG,KAAA,CAED,SAAA8P,sBAA6BtG,CAAmB,CAAU,CAGxD,MAFA,CAAAC,oBAAS,CAACC,mBAAmB,CAACF,CAAW,CAAC,CAACP,KAAK,EAAE,CAE3CQ,oBAAS,CAACsG,eAAe,CAAC,IAAI,CAAChI,aAAa,CAAEyB,CAAW,CAClE,CAAC,GAAAjD,GAAA,4BAAAvG,KAAA,CAED,SAAAwO,yBACEhF,CAAmB,CACnBsE,CAAkB,CACgC,CAClD,GAAI,CAAC,IAAI,CAAC5E,sBAAsB,EAAI,CAAC,IAAI,CAACR,qBAAqB,CAC7D,MAAO,GAAAsH,UAAG,EAAC,GAAI,CAAArG,8BAAc,CAACC,kCAAkB,CAACC,cAAc,CAAC,CAAC,CAClE,GAEK,CAAAgE,CAAY,CAAG,IAAI,CAACnF,qBAAqB,CAACmF,YAAY,CACtDI,CAAW,CAAGJ,CAAY,CAACjD,IAAI,CACnC,SAACC,CAAI,QAAK,CAAAA,CAAI,CAACiD,UAAU,GAAKA,CAAU,EACzC,CAED,GAAI,CAACG,CAAW,CACd,MAAO,GAAA+B,UAAG,EACR,GAAI,CAAArG,8BAAc,CAChBC,kCAAkB,CAAC+E,gCAAgC,CACnDb,CAAU,CACVtE,CAAW,CACZ,CACF,CACF,GAEK,CAAAwB,CAAa,CACjB,IAAI,CAACtC,qBAAqB,CAACuC,mBAAmB,CAACzB,CAAW,CAAC,CAEvD0E,CAAa,CAAG,IAAI,CAAChF,sBAAsB,CAC9CiF,uBAAuB,CAAC,CACvB3E,WAAW,CAAXA,CAAW,CACXyE,WAAW,CAAXA,CAAW,CACXjD,aAAa,CAAbA,CAAa,CACbiF,cAAc,GAAM,CACpBvH,qBAAqB,CAAE,IAAI,CAACA,qBAAqB,CACjDb,WAAW,CAAE,IAAI,CAACN,mBACpB,CAAC,CAAC,CACD0B,KAAK,EAAE,CAEFyB,CAAY,CAAkBwD,CAAa,CAA3CxD,YAAY,CAAEQ,CAAW,CAAKgD,CAAa,CAA7BhD,WAAW,CAoBjC,MAlB2B,QAAQ,EAA/B,MAAO,CAAAA,CAAwB,EAA4B,QAAQ,EAAhC,MAAO,CAAAR,CAAyB,EACrEjB,oBAAS,CAACqC,WAAW,CAAC,CACpBC,YAAY,CAAE,IAAI,CAAChE,aAAa,CAChCyB,WAAW,CAAXA,CAAW,CACXkB,YAAY,CAAZA,CAAY,CACZQ,WAAW,CAAXA,CACF,CAAC,CAAC,CAGJzB,oBAAS,CAACyG,SAAS,CAAC,CAClB1G,WAAW,CAAXA,CAAW,CACX9B,SAAS,CAAE,IAAI,CAACA,SAAS,CACzByI,oBAAoB,CAAEjC,CAAa,CACnCxF,qBAAqB,CAAE,IAAI,CAACA,qBAAqB,CACjDW,eAAe,CAAE,IAAI,CAACA,eAAe,CACrCb,sBAAsB,CAAE,IAAI,CAACA,sBAC/B,CAAC,CAAC,CAEK,GAAA4H,SAAE,EAAClC,CAAa,CACzB,CAAC,IAAAvO,CAAA,IAAA0Q,OAAA,CAAAvJ,eAAA,CAAAA,eAAA"}
|
|
1
|
+
{"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","a","b","siteCode","configuration","internalConfiguration","_classCallCheck","_defineProperty","f","ClientSettings","clientSettings","settings","externalStorage","externalEventSource","externalPackageInfo","externalRequestDispatcher","externalClientConfiguration","requester","Requester","environment","packageInfo","requestDispatcher","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","initialize","KameleoonStorageKey","ClientData","targetingDataStorage","TargetingData","variationDataStorage","VariationData","offlineTrackingStorage","OfflineTracking","dataManager","DataManager","storage","targetingCleanupInterval","targetingDataCleanupInterval","clientConfiguration","ClientConfiguration","variationConfiguration","VariationConfiguration","_createClass","key","value","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","useCache","c","wrap","d","prev","next","result","sent","throw","isOfflineModeOn","initialized","abrupt","ok","stop","addData","visitorCode","Utilities","validateVisitorCode","KameleoonError","KameleoonException","Initialization","length","data","Array","e","concat","g","h","i","j","k","l","m","n","o","shouldAddData","filters","DEFAULT_VISITOR_DATA_FILTERS","visitAmount","VisitAmount","getVisitorData","visitorData","parseVisitorData","_createForOfIteratorHelper","s","done","dataItem","isPersistentCustomData","trackConversion","goalId","revenue","Conversion","flush","trackData","unsentDataVisitors","sendOfflineTracking","visitorCodeKey","getFeatureFlags","featureFlags","map","id","featureKey","getVisitorFeatureFlags","resultFeatureFlags","targetingData","storedTargetingData","featureFlag","variationData","getVariation","variationKey","OFF_VARIATION_KEY","featureFlagId","push","getFeatureFlagVariationKey","_getFeatureFlagVariation","getFeatureFlagVariable","variableKey","find","item","FeatureFlagConfigurationNotFound","variable","variations","variables","FeatureFlagVariableNotFound","featureVariable","parseFeatureVariable","getFeatureFlagVariables","variation","FeatureFlagVariationNotFound","parsedVariable","isFeatureFlagActive","getRemoteData","remoteData","customDataIndex","warehouseKey","RemoteData","WAREHOUSE_AUDIENCE_KEY","Object","keys","customData","_construct","CustomData","_toConsumableArray","onConfigurationUpdate","callback","getEngineTrackingCode","getTrackingCode","Err","withAssignment","experimentId","variationId","updateCache","cacheManager","trackFeatureExperiment","featureFlagVariation","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport { ClientConfiguration, JSONType } 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 } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n} from './storage';\nimport {\n TrackConversionParamsType,\n FeatureFlagType,\n GetFeatureFlagVariableParamsType,\n FeatureVariableResultType,\n SDKCoreParameters,\n TrackingCacheItemType,\n ExternalPackageInfoType,\n RemoteVisitorDataParamsType,\n GetVisitorWarehouseAudienceParamsType,\n} from './types';\nimport { Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { IExternalStorage, OfflineTracking } from './storage/types';\nimport { TargetingDataType } from './targeting';\n\n/**\n * @interface an interface of KameleoonClient instance\n */\nexport interface IKameleoonClient {\n /**\n * @method initialize - an asynchronous method for KameleoonClient initialization by fetching Kameleoon SDK related data from server or by retrieving data from local source if data is up-to-date or update interval has not been reached\n * @param {boolean | undefined} useCache - optional parameter for activating SDK offline mode, if `true` is passed failed polls will not return error and will use cached data if such data is available, default value is `false`. Note: if offline mode is on, SDK will still try to retrieve the latest data.\n * @returns {Promise<boolean>} Promise resolved into boolean field indicating success or fail\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.StorageWrite` Couldn't update storage data\n * - `KameleoonException.ClientConfiguration` Couldn't retrieve client configuration from Kameleoon Api\n * - `KameleoonException.MaximumRetriesReached` Maximum retries reached, request failed\n */\n initialize(useCache?: boolean): Promise<boolean>;\n initialize(): Promise<boolean>;\n /**\n * @method addData - method for adding targeting data to the storage so that other methods could decide whether the current visitor is targeted or not. Note: userAgent data will not be stored in storage like other data, and it will be sent with every tracking request for bot filtration.\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {KameleoonDataType[]} kameleoonData - number of instances of any type of `KameleoonData`, can be added solely in array or as a sequential arguments\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.StorageWrite` Couldn't update storage data\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n */\n addData: (visitorCode: string, ...data: KameleoonDataType[]) => void;\n /**\n * @method getRemoteVisitorData - an asynchronous method for retrieving KameleoonData from Data API and optionally adding it to the storage so that other methods could decide whether the current visitor is targeted or not.\n * @param {RemoteVisitorDataParamsType} remoteVisitorDataParameters - `visitorCode`, `shouldAddData` and `filters` parameters\n * @returns {KameleoonDataType[]} promise resolved to an array of `KameleoonData` instances, only includes custom data\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.RemoteData` - Couldn't retrieve data from Kameleoon server\n * - `KameleoonException.VisitAmount` - Visit amount must be a number between 1 and 25\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n */\n getRemoteVisitorData: ({\n visitorCode,\n shouldAddData,\n filters,\n }: RemoteVisitorDataParamsType) => Promise<KameleoonDataType[]>;\n /**\n * @method trackConversion - creates and adds `Conversion` data to the visitor with specified parameters and executes `flush`. Note: it's a helper method for the quick and convenient conversion tracking, however creating and adding `Conversion` manually allows more flexible `Conversion` with `negative` parameter\n * @param {TrackConversionParamsType} conversionParameters - `visitorCode`, `goalId` and `revenue` parameters for data tracking\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.StorageWrite` Couldn't update storage data\n */\n trackConversion: ({\n visitorCode,\n goalId,\n revenue,\n }: TrackConversionParamsType) => void;\n /**\n * @method flush - takes visitor associated kameleoon data and sends the data tracking request with collected data,\n * sent data is removed from `KameleoonClient` instance but not from the storage for correct targeting checks. If no visitor is passed,\n * then data for all visitors is sent and removed from `KameleoonClient` instance. Moreover, regardless of visitor code input\n * the method first attempts to send all previously failed tracking requests which were stored locally during the offline mode.\n * @param {string | undefined} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n */\n flush: (visitorCode: string) => void;\n /**\n * @method getFeatureFlags - returns a list of feature flags stored in the client configuration\n * @returns {FeatureFlagType[]} a list of all feature flags items with `id` and `key` fields\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n */\n getFeatureFlags: () => FeatureFlagType[];\n /**\n * @method getVisitorFeatureFlags - returns a list of feature flags that the visitor with `visitorCode` that is targeted by and that are *active* for the visitor (visitor will have one of the variations allocated).\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @returns {FeatureFlagType[]} a list of all feature flags items with `id` and `key` fields\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before `initialize` was done for `kameleoonClient`\n * - `KameleoonException.StorageRead` - Couldn't read storage data\n * - `KameleoonException.NotTargeted` - Current visitor is not targeted\n */\n getVisitorFeatureFlags: (visitorCode: string) => FeatureFlagType[];\n /**\n * @method isFeatureFlagActive - returns a boolean indicating whether the visitor with `visitorCode` has `featureKey` active for him, this method includes targeting check, finding the according variation exposed to the visitor and saving it to storage along with sending tracking request\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {string} featureKey - a unique key for feature flag\n * @returns {boolean} a boolean indicator of whether the feature flag with `featureKey` is active for visitor with `visitorCode`\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n * - `KameleoonException.FeatureFlagConfigurationNotFound` - No feature flag was found for provided `featureKey`\n * - `KameleoonException.DataInconsistency` - Allocated variation was found but there is no feature flag with according `featureKey`.\n * - `KameleoonException.NotTargeted` - Current visitor is not targeted\n */\n isFeatureFlagActive: (visitorCode: string, featureKey: string) => boolean;\n /**\n * @method getFeatureFlagVariationKey - returns variation key for the visitor under `visitorCode` in the found feature flag, this method includes targeting check, finding the according variation exposed to the visitor and saving it to storage along with sending tracking request\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {string} featureKey - a unique key for feature flag\n * @returns {string} a string containing variable key for the allocated feature flag variation for the provided visitor\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n * - `KameleoonException.FeatureFlagConfigurationNotFound` - No feature flag was found for provided `featureKey`\n * - `KameleoonException.NotTargeted` - Current visitor is not targeted\n */\n getFeatureFlagVariationKey: (\n visitorCode: string,\n featureKey: string,\n ) => string;\n /**\n * @method getFeatureFlagVariable - returns a variable for the visitor under `visitorCode` in the found feature flag, this method includes targeting check, finding the according variation exposed to the visitor and saving it to storage along with sending tracking request\n * @param {GetFeatureFlagVariableParamsType} parameters - an object with parameters of a type `GetFeatureFlagVariableParamsType`, see the type for details.\n * @returns {FeatureVariableResultType} a variable object containing `type` and `value` fields. You can check the `type` field against `FeatureVariableType` enum. For example, if the `type` is `FeatureVariableType.BOOLEAN` then `value` will be a `boolean` type.\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n * - `KameleoonException.FeatureFlagConfigurationNotFound` - No feature flag was found for provided `featureKey`\n * - `KameleoonException.FeatureFlagVariableNotFound` - No feature variable was found for provided `visitorCode` and `variableKey`\n * - `KameleoonException.NotTargeted` - Current visitor is not targeted\n * - `KameleoonException.JSONParse` - Couldn't parse JSON value\n * - `KameleoonException.NumberParse` - Couldn't parse Number value\n */\n getFeatureFlagVariable: ({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType) => FeatureVariableResultType;\n /**\n * @method getFeatureFlagVariables - returns a list of variables for the visitor under `visitorCode` in the found feature flag, this method includes targeting check, finding the according variation exposed to the visitor and saving it to storage along with sending tracking request\n * @param {string} visitorCode - a unique visitor identifier, shouldn't exceed 255 characters\n * @param {string} featureKey - a unique key for feature flag\n * @returns {FeatureVariableResultType[]} a list of variable objects containing `type` and `value` fields. You can check the `type` field against `FeatureVariableType` enum. For example, if the `type` is `FeatureVariableType.BOOLEAN` then `value` will be a `boolean` type.\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n * - `KameleoonException.FeatureFlagConfigurationNotFound` - No feature flag was found for provided `featureKey`\n * - `KameleoonException.FeatureFlagVariationNotFound` - No feature variation was found for provided `visitorCode` and `variationKey`\n * - `KameleoonException.JSONParse` - Couldn't parse JSON value\n * - `KameleoonException.NumberParse` - Couldn't parse Number value\n */\n getFeatureFlagVariables: (\n visitorCode: string,\n featureKey: string,\n ) => FeatureVariableResultType[];\n /**\n * @method getRemoteData - returns a data which is stored for specified siteCode on a remote Kameleoon server.\n * @param {string} key - unique key that the data you try to get is associated with.\n * @returns {JSONType} - promise with retrieving data for specific key.\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.RemoteData` - Couldn't retrieve data from Kameleoon server\n */\n getRemoteData: (key: string) => Promise<JSONType>;\n /**\n * @method getVisitorWarehouseAudience - an async method that returns a `CustomData` instance, containing data associated with a visitor's warehouse audiences\n * which is stored for specified visitorCode on a remote Kameleoon server.\n * Retrieved data will be added to storage under the specified `customDataIndex`\n * @param {GetVisitorWarehouseAudienceParamsType} parameters - an object with parameters of a type `GetVisitorWarehouseAudienceParamsType`, see the type for details.\n * @returns {Promise<CustomData | null>} `Promise` containing an instance of `CustomData` containing data associated with a visitor's warehouse audiences or `null` if the data was retrieved successfully but nothing was found under the specified `warehouseKey`\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` - The visitor code is empty\n * - `KameleoonException.RemoteData` - Couldn't retrieve data from Kameleoon server\n */\n getVisitorWarehouseAudience: ({\n visitorCode,\n customDataIndex,\n warehouseKey,\n }: GetVisitorWarehouseAudienceParamsType) => Promise<CustomData | null>;\n /**\n * @method getEngineTrackingCode - returns Kameleoon tracking code for the current visitor. Tracking code is built of the experiments that were triggered and feature flag variations that were assigned during the last 5 seconds\n * See [Kameleoon Automation API](https://developers.kameleoon.com/apis/activation-api-js/api-reference#trigger-1) for the details\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @returns {string} Kameleoon tracking code\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty\n */\n getEngineTrackingCode: (visitorCode: string) => string;\n /**\n * @method onConfigurationUpdate - fires a callback on client configuration update. Note: this method only works for server sent events of real time update.\n * @param {() => void} callback - callback function with no parameters that will be called upon configuration update\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.Initialization` - Method was executed before the `kameleoonClient` completed it's `initialize` call\n */\n onConfigurationUpdate: (callback: () => void) => void;\n}\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 offlineTrackingStorage: IExternalStorage<OfflineTracking>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private isOfflineModeOn?: boolean;\n private initialized: boolean = false;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalRequestDispatcher,\n externalClientConfiguration,\n } = internalConfiguration;\n const requester = new Requester({\n siteCode,\n environment: clientSettings.environment,\n packageInfo: externalPackageInfo,\n requestDispatcher: externalRequestDispatcher,\n });\n const trackingCache = new CacheManager<TrackingCacheItemType>(\n CACHE_CLEANUP_TIMEOUT,\n );\n\n const clientDataStorage = externalStorage.initialize<ClientDataType>(\n KameleoonStorageKey.ClientData,\n );\n const targetingDataStorage = externalStorage.initialize<TargetingDataType>(\n KameleoonStorageKey.TargetingData,\n );\n const variationDataStorage = externalStorage.initialize<VariationDataType>(\n KameleoonStorageKey.VariationData,\n );\n const offlineTrackingStorage = externalStorage.initialize<OfflineTracking>(\n KameleoonStorageKey.OfflineTracking,\n );\n\n const dataManager = new DataManager({\n storage: targetingDataStorage,\n targetingCleanupInterval: configuration?.targetingDataCleanupInterval,\n });\n\n const clientConfiguration = new ClientConfiguration({\n settings: clientSettings,\n storage: clientDataStorage,\n dataManager,\n requester,\n externalClientConfiguration,\n offlineTrackingStorage,\n externalEventSource,\n });\n\n const variationConfiguration = new VariationConfiguration(\n variationDataStorage,\n );\n\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.offlineTrackingStorage = offlineTrackingStorage;\n }\n\n public async initialize(useCache?: boolean): Promise<boolean> {\n const result = await this.clientConfiguration.initialize(useCache);\n result.throw();\n\n this.isOfflineModeOn = useCache;\n this.initialized = true;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.dataManager.addData(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 Utilities.validateVisitorCode(visitorCode).throw();\n\n const { visitAmount } = filters;\n\n if (\n typeof visitAmount === 'number' &&\n (visitAmount < 1 || visitAmount > 25)\n ) {\n throw new KameleoonError(KameleoonException.VisitAmount);\n }\n\n const result = await this.requester.getVisitorData(visitorCode, filters);\n const data = result.throw();\n\n const visitorData = Utilities.parseVisitorData({\n data,\n filters,\n visitorCode,\n variationConfiguration: this.variationConfiguration,\n });\n\n for (const dataItem of visitorData) {\n if (shouldAddData || this.dataManager.isPersistentCustomData(dataItem)) {\n this.addData(visitorCode, dataItem);\n }\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 Utilities.validateVisitorCode(visitorCode).throw();\n }\n\n if (visitorCode) {\n Utilities.trackData({\n visitorCode,\n dataManager: this.dataManager,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n return;\n }\n\n // --- Note ---\n // `Utilities.trackData` executes `Utilities.sendOfflineTracking` asynchronously at first, but\n // we need to execute `Utilities.sendOfflineTracking` even if calling `Utilities.trackData` is skipped\n // due to lack of unsent data\n if (!this.dataManager.unsentDataVisitors.length) {\n Utilities.sendOfflineTracking({\n requester: this.requester,\n storage: this.offlineTrackingStorage,\n });\n return;\n }\n\n for (const visitorCodeKey of this.dataManager.unsentDataVisitors) {\n Utilities.trackData({\n visitorCode: visitorCodeKey,\n dataManager: this.dataManager,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n }\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n return this.clientConfiguration.featureFlags.map(({ id, featureKey }) => ({\n id,\n key: featureKey,\n }));\n }\n\n public getVisitorFeatureFlags(visitorCode: string): 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 const targetingData = this.dataManager.storedTargetingData[visitorCode];\n\n for (const featureFlag of featureFlags) {\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n targetingData,\n featureFlag,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n if (variationData.variationKey !== OFF_VARIATION_KEY) {\n const { featureFlagId, featureKey } = variationData;\n\n resultFeatureFlags.push({ id: featureFlagId, key: featureKey });\n }\n }\n\n return resultFeatureFlags;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureVariableResultType {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const featureFlags = this.clientConfiguration.featureFlags;\n\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n\n const variable = featureFlag.variations\n .find((item) => item.key === variationKey)\n ?.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 featureVariable = Utilities.parseFeatureVariable(variable).throw();\n\n return featureVariable;\n }\n\n public getFeatureFlagVariables(\n visitorCode: string,\n featureKey: string,\n ): FeatureVariableResultType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const featureFlags = this.clientConfiguration.featureFlags;\n\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\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 const variables: FeatureVariableResultType[] = [];\n\n for (const variable of variation.variables) {\n const parsedVariable = Utilities.parseFeatureVariable(variable).throw();\n variables.push(parsedVariable);\n }\n\n return variables;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n const variationKey = this.getFeatureFlagVariationKey(\n visitorCode,\n featureKey,\n );\n\n return variationKey !== OFF_VARIATION_KEY;\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 Utilities.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(KameleoonException.RemoteData);\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.addData(visitorCode, customData);\n\n return customData;\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.clientConfiguration.onConfigurationUpdate(callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n private _getFeatureFlagVariation(\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.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n ),\n );\n }\n\n const targetingData = this.dataManager.storedTargetingData[visitorCode];\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n featureFlag,\n targetingData,\n withAssignment: true,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n const { experimentId, variationId } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n Utilities.trackFeatureExperiment({\n visitorCode,\n requester: this.requester,\n featureFlagVariation: variationData,\n dataManager: this.dataManager,\n isOfflineModeOn: this.isOfflineModeOn,\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n\n return Ok(variationData);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { IKameleoonData, ApplicationVersionDataType } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* @class
|
|
4
|
+
* ApplicationVersion - a class for creating an instance for app version
|
|
5
|
+
* */
|
|
6
|
+
export declare class ApplicationVersion implements IKameleoonData {
|
|
7
|
+
private version;
|
|
8
|
+
private sent;
|
|
9
|
+
/**
|
|
10
|
+
* @param {string} version - version of mobile application
|
|
11
|
+
* */
|
|
12
|
+
constructor(version: string);
|
|
13
|
+
/**
|
|
14
|
+
* @property url - url for the current data type used for events tracking
|
|
15
|
+
* */
|
|
16
|
+
get url(): string;
|
|
17
|
+
/**
|
|
18
|
+
* @property data - data of the current class instance
|
|
19
|
+
* */
|
|
20
|
+
get data(): ApplicationVersionDataType;
|
|
21
|
+
/**
|
|
22
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
23
|
+
* */
|
|
24
|
+
get isSent(): boolean;
|
|
25
|
+
set isSent(value: boolean);
|
|
26
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var _types=require("./types");Object.defineProperty(exports,"__esModule",{value:!0}),exports.ApplicationVersion=void 0;function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),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)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){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)}var ApplicationVersion=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"version",void 0),_defineProperty(this,"sent",void 0),this.version=b,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){return""}},{key:"data",get:function get(){return{version:this.version,type:_types.KameleoonData.ApplicationVersion,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}]),a}();exports.ApplicationVersion=ApplicationVersion;
|
|
2
|
+
//# sourceMappingURL=applicationVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applicationVersion.js","names":["_types","require","Object","defineProperty","exports","value","ApplicationVersion","_typeof","a","Symbol","iterator","constructor","prototype","_classCallCheck","b","TypeError","_defineProperties","c","d","length","enumerable","configurable","writable","_toPropertyKey","key","_createClass","_defineProperty","_toPrimitive","toPrimitive","call","String","Number","version","sent","get","type","KameleoonData","set"],"sources":["../../src/kameleoonData/applicationVersion.ts"],"sourcesContent":["import {\n IKameleoonData,\n KameleoonData,\n ApplicationVersionDataType,\n} from './types';\n\n/**\n * @class\n * ApplicationVersion - a class for creating an instance for app version\n * */\nexport class ApplicationVersion implements IKameleoonData {\n private version: string;\n private sent: boolean;\n\n /**\n * @param {string} version - version of mobile application\n * */\n constructor(version: string) {\n this.version = version;\n this.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n return '';\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): ApplicationVersionDataType {\n return {\n version: this.version,\n type: KameleoonData.ApplicationVersion,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VisitType } from '../requester';
|
|
1
2
|
import { BrowserDataType, BrowserType, IKameleoonData } from './types';
|
|
2
3
|
/**
|
|
3
4
|
* @class
|
|
@@ -5,14 +6,16 @@ import { BrowserDataType, BrowserType, IKameleoonData } from './types';
|
|
|
5
6
|
* */
|
|
6
7
|
export declare class Browser implements IKameleoonData {
|
|
7
8
|
private browser;
|
|
8
|
-
private nonce;
|
|
9
9
|
private version?;
|
|
10
|
+
private sent;
|
|
10
11
|
/**
|
|
11
12
|
* @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`
|
|
12
13
|
* @param {number | undefined} version - version of the browser, floating point number represents major and minor version of the browser
|
|
13
14
|
* @example
|
|
15
|
+
* ```ts
|
|
14
16
|
* const browser = new Browser(BrowserType.Chrome, 86);
|
|
15
17
|
* const browser = new Browser(BrowserType.Safari, 14.1);
|
|
18
|
+
* ```
|
|
16
19
|
* */
|
|
17
20
|
constructor(browser: BrowserType, version?: number);
|
|
18
21
|
/**
|
|
@@ -23,4 +26,16 @@ export declare class Browser implements IKameleoonData {
|
|
|
23
26
|
* @property data - data of the current class instance
|
|
24
27
|
* */
|
|
25
28
|
get data(): BrowserDataType;
|
|
29
|
+
/**
|
|
30
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
31
|
+
* */
|
|
32
|
+
get isSent(): boolean;
|
|
33
|
+
set isSent(value: boolean);
|
|
34
|
+
/**
|
|
35
|
+
* @private
|
|
36
|
+
* @method _fromVisits - an internal method for creating an instance of Browser class from a list of visits
|
|
37
|
+
* @param {VisitType[]} visits - a list of visits
|
|
38
|
+
* @returns {Browser | undefined} an instance of Browser class or undefined if browser can not be found among visits
|
|
39
|
+
* */
|
|
40
|
+
static _fromVisits(visits: VisitType[]): Browser | undefined;
|
|
26
41
|
}
|
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Browser=void 0;var _requester=require("../requester"),
|
|
2
|
-
* @class
|
|
3
|
-
* Browser - a class for creating an instance for browser of a certain type
|
|
4
|
-
* */var Browser=/*#__PURE__*/function(){/**
|
|
5
|
-
* @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`
|
|
6
|
-
* @param {number | undefined} version - version of the browser, floating point number represents major and minor version of the browser
|
|
7
|
-
* @example
|
|
8
|
-
* const browser = new Browser(BrowserType.Chrome, 86);
|
|
9
|
-
* const browser = new Browser(BrowserType.Safari, 14.1);
|
|
10
|
-
* */function a(b,c){_classCallCheck(this,a),_defineProperty(this,"browser",void 0),_defineProperty(this,"nonce",void 0),_defineProperty(this,"version",void 0),this.browser=b,this.version=c,this.nonce=_utilities.Utilities.getNonce()}/**
|
|
11
|
-
* @property url - url for the current data type used for events tracking
|
|
12
|
-
* */return _createClass(a,[{key:"url",get:function get(){// --- Note ---
|
|
13
|
-
// If SDK is used in vanilla JS codebase, then you're also able to create an instance
|
|
14
|
-
// with no required data, we don't want send anything to tracking in that case
|
|
15
|
-
if(!this.browser)return"";var a=this.version?_requester.UrlParameter.BrowserVersion+this.version:"";return _requester.UrlEventType.StaticData+_requester.UrlParameter.BrowserIndex+_types.BrowserIndexMap[this.browser]+a+_requester.UrlParameter.Nonce+this.nonce}/**
|
|
16
|
-
* @property data - data of the current class instance
|
|
17
|
-
* */},{key:"data",get:function get(){return{browser:this.browser,type:_types.KameleoonData.Browser,version:this.version,nonce:this.nonce}}}]),a}();exports.Browser=Browser;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Browser=void 0;var _requester=require("../requester"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),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)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){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)}var Browser=function(){function a(b,c){_classCallCheck(this,a),_defineProperty(this,"browser",void 0),_defineProperty(this,"version",void 0),_defineProperty(this,"sent",void 0),this.browser=b,this.version=c,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){if(!this.browser)return"";var 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}},{key:"data",get:function get(){return{browser:this.browser,type:_types.KameleoonData.Browser,version:this.version,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}],[{key:"_fromVisits",value:function _fromVisits(b){for(var c,d={},e=b.length-1;0<=e;e--)if(c=b[e],!!c.staticDataEvent){var f=c.staticDataEvent.data,g=f.browser,h=f.browserIndex,j=f.browserVersion;(g||null!==h)&&(d={browserType:g,browserIndex:h,browserVersion:j})}var k=d,l=k.browserType,m=k.browserIndex,n=k.browserVersion;if(l||"number"==typeof m){var o=l?l:_types.BrowserTypeMap[m];return n?new a(o,n):new a(o)}}}]),a}();exports.Browser=Browser;
|
|
18
2
|
//# sourceMappingURL=browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","names":["Browser","a","browser","version","_classCallCheck","_defineProperty","
|
|
1
|
+
{"version":3,"file":"browser.js","names":["Browser","a","browser","version","_classCallCheck","_defineProperty","sent","_createClass","key","get","browserVersion","UrlParameter","BrowserVersion","UrlEventType","StaticData","BrowserIndex","BrowserIndexMap","type","KameleoonData","set","value","_fromVisits","visits","visit","browserData","i","length","staticDataEvent","f","data","browserType","browserIndex","k","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';\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 private browser: BrowserType;\n private version?: number;\n private sent: boolean;\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.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\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 /**\n * @property data - data of the current class instance\n * */\n get data(): BrowserDataType {\n return {\n browser: this.browser,\n type: KameleoonData.Browser,\n version: this.version,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n\n /**\n * @private\n * @method _fromVisits - an internal method for creating an instance of Browser class from a list of visits\n * @param {VisitType[]} visits - a list of visits\n * @returns {Browser | undefined} an instance of Browser class or undefined if browser can not be found among visits\n * */\n public static _fromVisits(visits: VisitType[]): Browser | undefined {\n let browserData: {\n browserType?: BrowserType | null;\n browserIndex?: number | null;\n browserVersion?: number | null;\n } = {};\n\n // --- Note ---\n // Going backwards to get the latest visit data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n if (!visit.staticDataEvent) {\n continue;\n }\n\n const {\n browser: browserType,\n browserIndex,\n browserVersion,\n } = visit.staticDataEvent.data;\n\n if (browserType || browserIndex !== null) {\n browserData = { browserType, browserIndex, browserVersion };\n }\n }\n\n const { browserType, browserIndex, browserVersion } = browserData;\n\n if (browserType || typeof browserIndex === 'number') {\n const browser = browserType\n ? browserType\n : 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}\n"],"mappings":"w4CAca,CAAAA,OAAO,YAclB,SAAAC,EAAYC,CAAoB,CAAEC,CAAgB,CAAE,CAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,wBAAAA,eAAA,wBAAAA,eAAA,qBAClD,IAAI,CAACH,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACG,IAAI,GACX,CAAC,OAAAC,YAAA,CAAAN,CAAA,GAAAO,GAAA,OAAAC,GAAA,CAKD,SAAAA,IAAA,CAAkB,CAIhB,GAAI,CAAC,IAAI,CAACP,OAAO,CACf,MAAO,EAAE,CAGX,GAAM,CAAAQ,CAAc,CAAG,IAAI,CAACP,OAAO,CAC/BQ,uBAAY,CAACC,cAAc,CAAG,IAAI,CAACT,OAAO,CAC1C,EAAE,CAEN,MACE,CAAAU,uBAAY,CAACC,UAAU,CACvBH,uBAAY,CAACX,OAAO,CACpB,IAAI,CAACE,OAAO,CACZS,uBAAY,CAACI,YAAY,CACzBC,sBAAe,CAAC,IAAI,CAACd,OAAO,CAAC,CAC7BQ,CAEJ,CAAC,GAAAF,GAAA,QAAAC,GAAA,CAKD,SAAAA,IAAA,CAA4B,CAC1B,MAAO,CACLP,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBe,IAAI,CAAEC,oBAAa,CAAClB,OAAO,CAC3BG,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBG,IAAI,CAAE,IAAI,CAACA,IACb,CACF,CAAC,GAAAE,GAAA,UAAAC,GAAA,CAKD,SAAAA,IAAA,CAAsB,CACpB,MAAO,KAAI,CAACH,IACd,CAAC,CAAAa,GAAA,CAED,SAAAA,IAAWC,CAAc,CAAE,CACzB,IAAI,CAACd,IAAI,CAAGc,CACd,CAAC,KAAAZ,GAAA,eAAAY,KAAA,CAQD,SAAAC,YAA0BC,CAAmB,CAAuB,CASlE,OACQ,CAAAC,CAAK,CATTC,CAIH,CAAG,CAAC,CAAC,CAIGC,CAAC,CAAGH,CAAM,CAACI,MAAM,CAAG,CAAC,CAAO,CAAC,EAAND,CAAM,CAAEA,CAAC,EAAE,CAEzC,GADMF,CAAK,CAAGD,CAAM,CAACG,CAAC,CAAC,EACnB,CAACF,CAAK,CAACI,eAAe,EAI1B,IAAAC,CAAA,CAIIL,CAAK,CAACI,eAAe,CAACE,IAAI,CAHnBC,CAAW,CAAAF,CAAA,CAApB1B,OAAO,CACP6B,CAAY,CAAAH,CAAA,CAAZG,YAAY,CACZrB,CAAc,CAAAkB,CAAA,CAAdlB,cAAc,CACe,CAE3BoB,CAAW,EAAqB,IAAI,GAArBC,CAAqB,IACtCP,CAAW,CAAG,CAAEM,WAAW,CAAXA,CAAW,CAAEC,YAAY,CAAZA,CAAY,CAAErB,cAAc,CAAdA,CAAe,CAAC,EAI/D,IAAAsB,CAAA,CAAsDR,CAAW,CAAzDM,CAAW,CAAAE,CAAA,CAAXF,WAAW,CAAEC,CAAY,CAAAC,CAAA,CAAZD,YAAY,CAAErB,CAAc,CAAAsB,CAAA,CAAdtB,cAAc,CAEjD,GAAIoB,CAAW,EAA4B,QAAQ,EAAhC,MAAO,CAAAC,CAAyB,CAAE,CACnD,GAAM,CAAA7B,CAAO,CAAG4B,CAAW,CACvBA,CAAW,CACXG,qBAAc,CAACF,CAAY,CAAW,CAAC,MAEvC,CAAArB,CAAc,CACT,GAAI,CAAAV,CAAO,CAACE,CAAO,CAAEQ,CAAc,CAAC,CAEpC,GAAI,CAAAV,CAAO,CAACE,CAAO,CAE9B,CACF,CAAC,IAAAD,CAAA,IAAAiC,OAAA,CAAAlC,OAAA,CAAAA,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":["DEFAULT_CLEANUP_INTERVAL","exports"],"sources":["../../src/kameleoonData/constants.ts"],"sourcesContent":["/**\n * @constant default cleanup interval in minutes\n * */\nexport const DEFAULT_CLEANUP_INTERVAL = 30;\n"],"mappings":"4GAGO,GAAM,CAAAA,wBAAwB,CAAG,EAAE,CAACC,OAAA,CAAAD,wBAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VisitType } from '../requester';
|
|
1
2
|
import { ConversionDataType, ConversionParametersType, IKameleoonData } from './types';
|
|
2
3
|
/**
|
|
3
4
|
* @class
|
|
@@ -7,7 +8,7 @@ export declare class Conversion implements IKameleoonData {
|
|
|
7
8
|
private goalId;
|
|
8
9
|
private revenue;
|
|
9
10
|
private negative;
|
|
10
|
-
private
|
|
11
|
+
private sent;
|
|
11
12
|
/**
|
|
12
13
|
* @param {ConversionParametersType} conversionParameters - an object with conversion parameters
|
|
13
14
|
* */
|
|
@@ -20,4 +21,16 @@ export declare class Conversion implements IKameleoonData {
|
|
|
20
21
|
* @property data - data of the current class instance
|
|
21
22
|
* */
|
|
22
23
|
get data(): ConversionDataType;
|
|
24
|
+
/**
|
|
25
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
26
|
+
* */
|
|
27
|
+
get isSent(): boolean;
|
|
28
|
+
set isSent(value: boolean);
|
|
29
|
+
/**
|
|
30
|
+
* @private
|
|
31
|
+
* @method _listFromVisits - an internal method for creating a list of Conversion instances
|
|
32
|
+
* @param {VisitType[]} visits - a list of visits
|
|
33
|
+
* @returns {Conversion[]} a list of Conversion instances
|
|
34
|
+
* */
|
|
35
|
+
static _listFromVisits(visits: VisitType[]): Conversion[];
|
|
23
36
|
}
|
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Conversion=void 0;var _requester=require("../requester"),
|
|
2
|
-
* @class
|
|
3
|
-
* Conversion - a class for creating an instance for conversion tracking
|
|
4
|
-
* */var Conversion=/*#__PURE__*/function(){/**
|
|
5
|
-
* @param {ConversionParametersType} conversionParameters - an object with conversion parameters
|
|
6
|
-
* */function a(b){var c=b.goalId,d=b.revenue,e=void 0===d?0:d,f=b.negative;_classCallCheck(this,a),_defineProperty(this,"goalId",void 0),_defineProperty(this,"revenue",void 0),_defineProperty(this,"negative",void 0),_defineProperty(this,"nonce",void 0),this.goalId=c,this.revenue=e,this.negative=void 0!==f&&f,this.nonce=_utilities.Utilities.getNonce()}/**
|
|
7
|
-
* @property url - url for the current data type used for events tracking
|
|
8
|
-
* */return _createClass(a,[{key:"url",get:function get(){// --- Note ---
|
|
9
|
-
// If SDK is used in vanilla JS codebase, then you're also able to create an instance
|
|
10
|
-
// with no required data, we don't want send anything to tracking in that case
|
|
11
|
-
return this.goalId?_requester.UrlEventType.Conversion+_requester.UrlParameter.GoalId+(this.goalId+"")+_requester.UrlParameter.Revenue+(this.revenue+"")+_requester.UrlParameter.Negative+(this.negative+"")+_requester.UrlParameter.Nonce+this.nonce:""}/**
|
|
12
|
-
* @property data - data of the current class instance
|
|
13
|
-
* */},{key:"data",get:function get(){return{goalId:this.goalId,revenue:this.revenue,negative:this.negative,type:_types.KameleoonData.Conversion,nonce:this.nonce}}}]),a}();exports.Conversion=Conversion;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Conversion=void 0;var _requester=require("../requester"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),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)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){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)}var Conversion=function(){function a(b){var c=b.goalId,d=b.revenue,e=void 0===d?0:d,f=b.negative;_classCallCheck(this,a),_defineProperty(this,"goalId",void 0),_defineProperty(this,"revenue",void 0),_defineProperty(this,"negative",void 0),_defineProperty(this,"sent",void 0),this.goalId=c,this.revenue=e,this.negative=void 0!==f&&f,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){return this.goalId?_requester.UrlEventType.Conversion+_requester.UrlParameter.GoalId+(this.goalId+"")+_requester.UrlParameter.Revenue+(this.revenue+"")+_requester.UrlParameter.Negative+(this.negative+""):""}},{key:"data",get:function get(){return{goalId:this.goalId,revenue:this.revenue,negative:this.negative,type:_types.KameleoonData.Conversion,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}],[{key:"_listFromVisits",value:function _listFromVisits(b){var c,d=[],e=new Map,f=_createForOfIteratorHelper(b);try{for(f.s();!(c=f.n()).done;){var g=c.value;if(g.conversionEvents){var h,i=g.conversionEvents,j=_createForOfIteratorHelper(i);try{for(j.s();!(h=j.n()).done;){var k=h.value,l=k.data.goalId;if(!e.has(l)){e.set(l,!0);var m=new a({goalId:l});m.isSent=!0,d.push(m)}}}catch(a){j.e(a)}finally{j.f()}}}}catch(a){f.e(a)}finally{f.f()}return d}}]),a}();exports.Conversion=Conversion;
|
|
14
2
|
//# sourceMappingURL=conversion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.js","names":["Conversion","a","b","goalId","d","revenue","f","negative","_classCallCheck","_defineProperty","
|
|
1
|
+
{"version":3,"file":"conversion.js","names":["Conversion","a","b","goalId","d","revenue","f","negative","_classCallCheck","_defineProperty","sent","_createClass","key","get","UrlEventType","UrlParameter","GoalId","Revenue","Negative","type","KameleoonData","set","value","_listFromVisits","visits","c","resultConversions","goalIdMap","Map","_createForOfIteratorHelper","s","n","done","visit","conversionEvents","h","j","conversionEvent","data","has","conversion","isSent","push","e","exports"],"sources":["../../src/kameleoonData/conversion.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n ConversionDataType,\n ConversionParametersType,\n IKameleoonData,\n KameleoonData,\n} from './types';\n\n/**\n * @class\n * Conversion - a class for creating an instance for conversion tracking\n * */\nexport class Conversion implements IKameleoonData {\n private goalId: number;\n private revenue: number;\n private negative: boolean;\n private sent: boolean;\n\n /**\n * @param {ConversionParametersType} conversionParameters - an object with conversion parameters\n * */\n constructor({\n goalId,\n revenue = 0,\n negative = false,\n }: ConversionParametersType) {\n this.goalId = goalId;\n this.revenue = revenue;\n this.negative = negative;\n this.sent = false;\n }\n\n /**\n * @property url - url for the current data type used for events tracking\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.goalId) {\n return '';\n }\n\n return (\n UrlEventType.Conversion +\n UrlParameter.GoalId +\n String(this.goalId) +\n UrlParameter.Revenue +\n String(this.revenue) +\n UrlParameter.Negative +\n String(this.negative)\n );\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): ConversionDataType {\n return {\n goalId: this.goalId,\n revenue: this.revenue,\n negative: this.negative,\n type: KameleoonData.Conversion,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n\n /**\n * @private\n * @method _listFromVisits - an internal method for creating a list of Conversion instances\n * @param {VisitType[]} visits - a list of visits\n * @returns {Conversion[]} a list of Conversion instances\n * */\n public static _listFromVisits(visits: VisitType[]): Conversion[] {\n const resultConversions: Conversion[] = [];\n const goalIdMap = new Map();\n\n for (const visit of visits) {\n if (!visit.conversionEvents) {\n continue;\n }\n\n const conversionEvents = visit.conversionEvents;\n\n for (const conversionEvent of conversionEvents) {\n const { goalId } = conversionEvent.data;\n\n // --- Note ---\n // - We only take unique `goalId`s as and don't use `revenue` and `negative`\n // because we only utilize it for Conversion Condition and don't re-sent this data tracking\n // not to break server `revenue` calculations and not to cause extra conversions\n // - Moreover conversion is marked as sent, so the visitor won't be converted again just\n // by pulling visits data\n if (!goalIdMap.has(goalId)) {\n goalIdMap.set(goalId, true);\n\n const conversion = new Conversion({ goalId });\n conversion.isSent = true;\n\n resultConversions.push(conversion);\n }\n }\n }\n\n return resultConversions;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CookieDataType, CookieType, IKameleoonData } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* @class
|
|
4
|
+
* Cookie - a class for creating an instance for defining user's cookie
|
|
5
|
+
* */
|
|
6
|
+
export declare class Cookie implements IKameleoonData {
|
|
7
|
+
private cookie;
|
|
8
|
+
private sent;
|
|
9
|
+
/**
|
|
10
|
+
* @param {CookieType[]} cookie - a list of cookies
|
|
11
|
+
* */
|
|
12
|
+
constructor(cookie: CookieType[]);
|
|
13
|
+
/**
|
|
14
|
+
* @method fromString - a static method for creating an instance of `Cookie` from a string
|
|
15
|
+
* @param {string} cookieString - a string containing a list of cookies
|
|
16
|
+
* @throws {KameleoonError} throws an error if the string is not valid cookie
|
|
17
|
+
* @returns {Cookie} an instance of `Cookie`
|
|
18
|
+
* */
|
|
19
|
+
static fromString(cookieString: string): Cookie;
|
|
20
|
+
/**
|
|
21
|
+
* @property url - url for the current data type used for events tracking
|
|
22
|
+
* */
|
|
23
|
+
get url(): string;
|
|
24
|
+
/**
|
|
25
|
+
* @property data - data of the current class instance
|
|
26
|
+
* */
|
|
27
|
+
get data(): CookieDataType;
|
|
28
|
+
/**
|
|
29
|
+
* @property isSent - signifying if the data was sent already tracked
|
|
30
|
+
* */
|
|
31
|
+
get isSent(): boolean;
|
|
32
|
+
set isSent(value: boolean);
|
|
33
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Cookie=void 0;var _kameleoonError=require("../kameleoonError"),_types=require("./types");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),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)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){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)}var Cookie=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"cookie",void 0),_defineProperty(this,"sent",void 0),this.cookie=b,this.sent=!1}return _createClass(a,[{key:"url",get:function get(){return""}},{key:"data",get:function get(){return{cookie:this.cookie,type:_types.KameleoonData.Cookie,sent:this.sent}}},{key:"isSent",get:function get(){return this.sent},set:function set(a){this.sent=a}}],[{key:"fromString",value:function fromString(b){if(!b)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.CookieParse,"Cookie string can't be empty");var c=b.split(";"),d=c.map(function(a){var b=a.trim().split("="),c=_slicedToArray(b,2),d=c[0],e=c[1];if(!d||!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.CookieParse,"Cookie string is not valid");return{key:d,value:e}});return new a(d)}}]),a}();exports.Cookie=Cookie;
|
|
2
|
+
//# sourceMappingURL=cookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie.js","names":["Cookie","a","cookie","_classCallCheck","_defineProperty","sent","_createClass","key","get","type","KameleoonData","set","value","fromString","cookieString","KameleoonError","KameleoonException","CookieParse","pairs","split","map","item","b","trim","c","_slicedToArray","exports"],"sources":["../../src/kameleoonData/cookie.ts"],"sourcesContent":["import { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport {\n CookieDataType,\n CookieType,\n IKameleoonData,\n KameleoonData,\n} from './types';\n\n/**\n * @class\n * Cookie - a class for creating an instance for defining user's cookie\n * */\nexport class Cookie implements IKameleoonData {\n private cookie: CookieType[];\n private sent: boolean;\n\n /**\n * @param {CookieType[]} cookie - a list of cookies\n * */\n constructor(cookie: CookieType[]) {\n this.cookie = cookie;\n this.sent = false;\n }\n\n /**\n * @method fromString - a static method for creating an instance of `Cookie` from a string\n * @param {string} cookieString - a string containing a list of cookies\n * @throws {KameleoonError} throws an error if the string is not valid cookie\n * @returns {Cookie} an instance of `Cookie`\n * */\n static fromString(cookieString: string): Cookie {\n if (!cookieString) {\n throw new KameleoonError(\n KameleoonException.CookieParse,\n \"Cookie string can't be empty\",\n );\n }\n\n const pairs = cookieString.split(';');\n\n const cookie = pairs.map((item) => {\n const [key, value] = item.trim().split('=');\n\n if (!key || !value) {\n throw new KameleoonError(\n KameleoonException.CookieParse,\n 'Cookie string is not valid',\n );\n }\n\n return { key, value };\n });\n\n return new Cookie(cookie);\n }\n\n /**\n * @property url - url for the current data type used for events tracking\n * */\n get url(): string {\n return '';\n }\n\n /**\n * @property data - data of the current class instance\n * */\n get data(): CookieDataType {\n return {\n cookie: this.cookie,\n type: KameleoonData.Cookie,\n sent: this.sent,\n };\n }\n\n /**\n * @property isSent - signifying if the data was sent already tracked\n * */\n get isSent(): boolean {\n return this.sent;\n }\n\n set isSent(value: boolean) {\n this.sent = value;\n }\n}\n"],"mappings":"8nFAYa,CAAAA,MAAM,YAOjB,SAAAC,EAAYC,CAAoB,CAAE,CAAAC,eAAA,MAAAF,CAAA,EAAAG,eAAA,uBAAAA,eAAA,qBAChC,IAAI,CAACF,MAAM,CAAGA,CAAM,CACpB,IAAI,CAACG,IAAI,GACX,CAAC,OAAAC,YAAA,CAAAL,CAAA,GAAAM,GAAA,OAAAC,GAAA,CAqCD,SAAAA,IAAA,CAAkB,CAChB,MAAO,EACT,CAAC,GAAAD,GAAA,QAAAC,GAAA,CAKD,SAAAA,IAAA,CAA2B,CACzB,MAAO,CACLN,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBO,IAAI,CAAEC,oBAAa,CAACV,MAAM,CAC1BK,IAAI,CAAE,IAAI,CAACA,IACb,CACF,CAAC,GAAAE,GAAA,UAAAC,GAAA,CAKD,SAAAA,IAAA,CAAsB,CACpB,MAAO,KAAI,CAACH,IACd,CAAC,CAAAM,GAAA,CAED,SAAAA,IAAWC,CAAc,CAAE,CACzB,IAAI,CAACP,IAAI,CAAGO,CACd,CAAC,KAAAL,GAAA,cAAAK,KAAA,CArDD,SAAAC,WAAkBC,CAAoB,CAAU,CAC9C,GAAI,CAACA,CAAY,CACf,KAAM,IAAI,CAAAC,8BAAc,CACtBC,kCAAkB,CAACC,WAAW,CAC9B,8BAA8B,CAC/B,CACF,GAEK,CAAAC,CAAK,CAAGJ,CAAY,CAACK,KAAK,CAAC,GAAG,CAAC,CAE/BjB,CAAM,CAAGgB,CAAK,CAACE,GAAG,CAAC,SAACC,CAAI,CAAK,CACjC,IAAAC,CAAA,CAAqBD,CAAI,CAACE,IAAI,EAAE,CAACJ,KAAK,CAAC,GAAG,CAAC,CAAAK,CAAA,CAAAC,cAAA,CAAAH,CAAA,IAApCf,CAAG,CAAAiB,CAAA,IAAEZ,CAAK,CAAAY,CAAA,IAEjB,GAAI,CAACjB,CAAG,EAAI,CAACK,CAAK,CAChB,KAAM,IAAI,CAAAG,8BAAc,CACtBC,kCAAkB,CAACC,WAAW,CAC9B,4BAA4B,CAC7B,CAGH,MAAO,CAAEV,GAAG,CAAHA,CAAG,CAAEK,KAAK,CAALA,CAAM,CACtB,CAAC,CAAC,CAEF,MAAO,IAAI,CAAAZ,CAAM,CAACE,CAAM,CAC1B,CAAC,IAAAD,CAAA,IAAAyB,OAAA,CAAA1B,MAAA,CAAAA,MAAA"}
|