@kameleoon/javascript-sdk-core 5.0.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -1
- package/dist/cacheManager/cacheManager.js +1 -2
- package/dist/cacheManager/index.js +1 -2
- package/dist/cacheManager/types.js +1 -2
- package/dist/clientConfiguration/clientConfiguration.js +1 -2
- package/dist/clientConfiguration/constants.js +1 -2
- package/dist/clientConfiguration/index.js +1 -2
- package/dist/clientConfiguration/types.js +1 -2
- package/dist/clientSettings/clientSettings.js +1 -2
- package/dist/clientSettings/index.js +1 -2
- package/dist/clientSettings/types.js +1 -2
- package/dist/constants.js +1 -2
- package/dist/eventManager/eventManager.js +1 -2
- package/dist/eventManager/index.js +1 -2
- package/dist/eventManager/types.js +1 -2
- package/dist/eventSource/constants.js +1 -2
- package/dist/eventSource/eventSource.js +1 -2
- package/dist/eventSource/index.js +1 -2
- package/dist/eventSource/types.js +1 -2
- package/dist/hasher/hasher.js +1 -2
- package/dist/hasher/index.js +1 -2
- package/dist/hasher/types.js +1 -2
- package/dist/index.d.ts +6 -4
- package/dist/index.js +1 -2
- package/dist/kameleoonClient.d.ts +6 -1
- package/dist/kameleoonClient.js +1 -2
- package/dist/kameleoonClientInterface.d.ts +68 -20
- package/dist/kameleoonClientInterface.js +1 -2
- package/dist/kameleoonData/applicationVersion.js +1 -2
- package/dist/kameleoonData/browser.js +1 -2
- package/dist/kameleoonData/conversion.js +1 -2
- package/dist/kameleoonData/cookie.js +1 -2
- package/dist/kameleoonData/customData.js +1 -2
- package/dist/kameleoonData/dataManager.js +1 -2
- package/dist/kameleoonData/dataProcessor.js +1 -2
- package/dist/kameleoonData/device.js +1 -2
- package/dist/kameleoonData/geolocation.js +1 -2
- package/dist/kameleoonData/helpers.js +1 -2
- package/dist/kameleoonData/index.js +1 -2
- package/dist/kameleoonData/kameleoonConversionScore.js +1 -2
- package/dist/kameleoonData/operatingSystem.js +1 -2
- package/dist/kameleoonData/pageView.js +1 -2
- package/dist/kameleoonData/types.js +1 -2
- package/dist/kameleoonData/uniqueIdentifier.js +1 -2
- package/dist/kameleoonData/userAgent.js +1 -2
- package/dist/kameleoonData/visitProcessor.js +1 -2
- package/dist/kameleoonData/visitsData.js +1 -2
- package/dist/kameleoonError/constants.d.ts +0 -1
- package/dist/kameleoonError/constants.js +1 -2
- package/dist/kameleoonError/helpers.js +1 -2
- package/dist/kameleoonError/index.js +1 -2
- package/dist/kameleoonError/kameleoonError.d.ts +0 -1
- package/dist/kameleoonError/kameleoonError.js +1 -2
- package/dist/kameleoonError/types.d.ts +0 -1
- package/dist/kameleoonError/types.js +1 -2
- package/dist/kameleoonUtils.js +1 -2
- package/dist/logging/defaultLogger.d.ts +14 -0
- package/dist/logging/defaultLogger.js +1 -0
- package/dist/logging/index.d.ts +3 -0
- package/dist/logging/index.js +1 -0
- package/dist/logging/kameleoonLogger.d.ts +14 -0
- package/dist/logging/kameleoonLogger.js +1 -0
- package/dist/logging/types.d.ts +36 -0
- package/dist/logging/types.js +1 -0
- package/dist/requester/constants.js +1 -2
- package/dist/requester/index.js +1 -2
- package/dist/requester/requester.js +1 -2
- package/dist/requester/types.js +1 -2
- package/dist/requester/urlProvider.js +1 -2
- package/dist/storage/constants.js +1 -2
- package/dist/storage/index.js +1 -2
- package/dist/storage/integrityChecker.js +1 -2
- package/dist/storage/storage.js +1 -2
- package/dist/storage/types.js +1 -2
- package/dist/targeting/conditions/applicationVersion.js +1 -2
- package/dist/targeting/conditions/browser.js +1 -2
- package/dist/targeting/conditions/conditionFactory.js +1 -2
- package/dist/targeting/conditions/conversion.js +1 -2
- package/dist/targeting/conditions/conversionLikelihood.js +1 -2
- package/dist/targeting/conditions/cookie.js +1 -2
- package/dist/targeting/conditions/customData.js +1 -2
- package/dist/targeting/conditions/device.js +1 -2
- package/dist/targeting/conditions/exclusiveCampaign.js +1 -2
- package/dist/targeting/conditions/firstVisit.js +1 -2
- package/dist/targeting/conditions/geolocation.js +1 -2
- package/dist/targeting/conditions/index.js +1 -2
- package/dist/targeting/conditions/lastVisit.js +1 -2
- package/dist/targeting/conditions/newVisitor.js +1 -2
- package/dist/targeting/conditions/operatingSystem.js +1 -2
- package/dist/targeting/conditions/pageTitle.js +1 -2
- package/dist/targeting/conditions/pageUrl.js +1 -2
- package/dist/targeting/conditions/previousPage.js +1 -2
- package/dist/targeting/conditions/sameDayVisits.js +1 -2
- package/dist/targeting/conditions/sdkLanguage.js +1 -2
- package/dist/targeting/conditions/segment.js +1 -2
- package/dist/targeting/conditions/targetFeatureFlag.js +1 -2
- package/dist/targeting/conditions/types.js +1 -2
- package/dist/targeting/conditions/utilities.js +1 -2
- package/dist/targeting/conditions/visitedPages.js +1 -2
- package/dist/targeting/conditions/visitorCode.js +1 -2
- package/dist/targeting/conditions/visits.js +1 -2
- package/dist/targeting/index.js +1 -2
- package/dist/targeting/node.js +1 -2
- package/dist/targeting/tree.js +1 -2
- package/dist/targeting/types.js +1 -2
- package/dist/tracking/bodyProvider.js +1 -2
- package/dist/tracking/constants.js +1 -2
- package/dist/tracking/index.js +1 -2
- package/dist/tracking/tracker.js +1 -2
- package/dist/tracking/types.js +1 -2
- package/dist/types.d.ts +52 -0
- package/dist/types.js +1 -2
- package/dist/utilities/constants.d.ts +5 -0
- package/dist/utilities/constants.js +1 -2
- package/dist/utilities/index.js +1 -2
- package/dist/utilities/parser.d.ts +1 -0
- package/dist/utilities/parser.js +1 -2
- package/dist/utilities/types.js +1 -2
- package/dist/utilities/utilities.js +1 -2
- package/dist/utilities/validator.d.ts +1 -0
- package/dist/utilities/validator.js +1 -2
- package/dist/variationConfiguration/index.js +1 -2
- package/dist/variationConfiguration/types.d.ts +1 -0
- package/dist/variationConfiguration/types.js +1 -2
- package/dist/variationConfiguration/variationConfiguration.d.ts +1 -1
- package/dist/variationConfiguration/variationConfiguration.js +1 -2
- package/dist/visitorCodeManager/constants.js +1 -2
- package/dist/visitorCodeManager/index.js +1 -2
- package/dist/visitorCodeManager/types.js +1 -2
- package/dist/visitorCodeManager/visitorCodeManager.js +1 -2
- package/package.json +5 -3
- package/dist/cacheManager/cacheManager.js.map +0 -1
- package/dist/cacheManager/index.js.map +0 -1
- package/dist/cacheManager/types.js.map +0 -1
- package/dist/clientConfiguration/clientConfiguration.js.map +0 -1
- package/dist/clientConfiguration/constants.js.map +0 -1
- package/dist/clientConfiguration/index.js.map +0 -1
- package/dist/clientConfiguration/types.js.map +0 -1
- package/dist/clientSettings/clientSettings.js.map +0 -1
- package/dist/clientSettings/index.js.map +0 -1
- package/dist/clientSettings/types.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/eventManager/eventManager.js.map +0 -1
- package/dist/eventManager/index.js.map +0 -1
- package/dist/eventManager/types.js.map +0 -1
- package/dist/eventSource/constants.js.map +0 -1
- package/dist/eventSource/eventSource.js.map +0 -1
- package/dist/eventSource/index.js.map +0 -1
- package/dist/eventSource/types.js.map +0 -1
- package/dist/hasher/hasher.js.map +0 -1
- package/dist/hasher/index.js.map +0 -1
- package/dist/hasher/types.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/kameleoonClient.js.map +0 -1
- package/dist/kameleoonClientInterface.js.map +0 -1
- package/dist/kameleoonData/applicationVersion.js.map +0 -1
- package/dist/kameleoonData/browser.js.map +0 -1
- package/dist/kameleoonData/conversion.js.map +0 -1
- package/dist/kameleoonData/cookie.js.map +0 -1
- package/dist/kameleoonData/customData.js.map +0 -1
- package/dist/kameleoonData/dataManager.js.map +0 -1
- package/dist/kameleoonData/dataProcessor.js.map +0 -1
- package/dist/kameleoonData/device.js.map +0 -1
- package/dist/kameleoonData/geolocation.js.map +0 -1
- package/dist/kameleoonData/helpers.js.map +0 -1
- package/dist/kameleoonData/index.js.map +0 -1
- package/dist/kameleoonData/kameleoonConversionScore.js.map +0 -1
- package/dist/kameleoonData/operatingSystem.js.map +0 -1
- package/dist/kameleoonData/pageView.js.map +0 -1
- package/dist/kameleoonData/types.js.map +0 -1
- package/dist/kameleoonData/uniqueIdentifier.js.map +0 -1
- package/dist/kameleoonData/userAgent.js.map +0 -1
- package/dist/kameleoonData/visitProcessor.js.map +0 -1
- package/dist/kameleoonData/visitsData.js.map +0 -1
- package/dist/kameleoonError/constants.js.map +0 -1
- package/dist/kameleoonError/helpers.js.map +0 -1
- package/dist/kameleoonError/index.js.map +0 -1
- package/dist/kameleoonError/kameleoonError.js.map +0 -1
- package/dist/kameleoonError/types.js.map +0 -1
- package/dist/kameleoonUtils.js.map +0 -1
- package/dist/requester/constants.js.map +0 -1
- package/dist/requester/index.js.map +0 -1
- package/dist/requester/requester.js.map +0 -1
- package/dist/requester/types.js.map +0 -1
- package/dist/requester/urlProvider.js.map +0 -1
- package/dist/storage/constants.js.map +0 -1
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/integrityChecker.js.map +0 -1
- package/dist/storage/storage.js.map +0 -1
- package/dist/storage/types.js.map +0 -1
- package/dist/targeting/conditions/applicationVersion.js.map +0 -1
- package/dist/targeting/conditions/browser.js.map +0 -1
- package/dist/targeting/conditions/conditionFactory.js.map +0 -1
- package/dist/targeting/conditions/conversion.js.map +0 -1
- package/dist/targeting/conditions/conversionLikelihood.js.map +0 -1
- package/dist/targeting/conditions/cookie.js.map +0 -1
- package/dist/targeting/conditions/customData.js.map +0 -1
- package/dist/targeting/conditions/device.js.map +0 -1
- package/dist/targeting/conditions/exclusiveCampaign.js.map +0 -1
- package/dist/targeting/conditions/firstVisit.js.map +0 -1
- package/dist/targeting/conditions/geolocation.js.map +0 -1
- package/dist/targeting/conditions/index.js.map +0 -1
- package/dist/targeting/conditions/lastVisit.js.map +0 -1
- package/dist/targeting/conditions/newVisitor.js.map +0 -1
- package/dist/targeting/conditions/operatingSystem.js.map +0 -1
- package/dist/targeting/conditions/pageTitle.js.map +0 -1
- package/dist/targeting/conditions/pageUrl.js.map +0 -1
- package/dist/targeting/conditions/previousPage.js.map +0 -1
- package/dist/targeting/conditions/sameDayVisits.js.map +0 -1
- package/dist/targeting/conditions/sdkLanguage.js.map +0 -1
- package/dist/targeting/conditions/segment.js.map +0 -1
- package/dist/targeting/conditions/targetFeatureFlag.js.map +0 -1
- package/dist/targeting/conditions/types.js.map +0 -1
- package/dist/targeting/conditions/utilities.js.map +0 -1
- package/dist/targeting/conditions/visitedPages.js.map +0 -1
- package/dist/targeting/conditions/visitorCode.js.map +0 -1
- package/dist/targeting/conditions/visits.js.map +0 -1
- package/dist/targeting/index.js.map +0 -1
- package/dist/targeting/node.js.map +0 -1
- package/dist/targeting/tree.js.map +0 -1
- package/dist/targeting/types.js.map +0 -1
- package/dist/tracking/bodyProvider.js.map +0 -1
- package/dist/tracking/constants.js.map +0 -1
- package/dist/tracking/index.js.map +0 -1
- package/dist/tracking/tracker.js.map +0 -1
- package/dist/tracking/types.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utilities/constants.js.map +0 -1
- package/dist/utilities/index.js.map +0 -1
- package/dist/utilities/parser.js.map +0 -1
- package/dist/utilities/types.js.map +0 -1
- package/dist/utilities/utilities.js.map +0 -1
- package/dist/utilities/validator.js.map +0 -1
- package/dist/variationConfiguration/index.js.map +0 -1
- package/dist/variationConfiguration/types.js.map +0 -1
- package/dist/variationConfiguration/variationConfiguration.js.map +0 -1
- package/dist/visitorCodeManager/constants.js.map +0 -1
- package/dist/visitorCodeManager/index.js.map +0 -1
- package/dist/visitorCodeManager/types.js.map +0 -1
- package/dist/visitorCodeManager/visitorCodeManager.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientConfiguration.js","names":["ClientConfiguration","constructor","a","updateInterval","urlProvider","storage","requester","dataManager","eventSource","externalVisitorCodeManager","eventManager","_defineProperty","UpdateType","Polling","DEFAULT_CLIENT_CONFIGURATION","Map","lastUpdate","Date","visitorCodeManager","initialize","readStorageData","shouldUpdate","checkShouldUpdate","updateResult","updateClientConfiguration","ok","isUpdateTypeToggled","data","Ok","updateType","RealTime","isOpen","handlePollingUpdates","handleRealTimeUpdates","cleanupHandlers","close","updateConfigurationIntervalId","clearInterval","updateEventCallback","timestamp","then","fireEvent","EventType","ConfigurationUpdate","open","setInterval","bind","err","featureFlags","featureFlagsData","configuration","configurationData","segments","segmentsData","forEach","flag","rules","rule","segment","has","id","set","ruleMap","mappedRules","size","featureFlag","values","experimentId","variationByExposition","variationMap","variationKey","variationId","featureId","variations","isConsentRequired","consentType","ConsentType","Required","hasAnyTargetedDeliveryRule","isTargetedDeliveryRule","environmentEnabled","some","type","RuleType","TARGETED_DELIVERY","realTimeUpdate","lastUpdateTime","getTime","updateWindowEdge","now","result","read","dataApiDomain","customData","length","customDataIndexes","featureKey","parse","b","clientConfigurationResult","getClientConfiguration","clearTrees","clear","updateStorageData","toggleUpdateType","consentRequired","_objectSpread","Array","from","toString","write","exports"],"sources":["../../src/clientConfiguration/clientConfiguration.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError/kameleoonError';\nimport { DataManager } from 'src/kameleoonData';\nimport { Requester } from 'src/requester';\nimport { SegmentType } from 'src/targeting';\nimport { ClientDataType } from 'src/storage';\nimport { IEventSource } from 'src/eventSource';\nimport {\n ClientConfigurationDataType,\n ClientConfigurationParametersType,\n ConfigurationType,\n ConsentType,\n FeatureFlagType,\n MappedRuleType,\n RuleType,\n UpdateType,\n} from './types';\nimport { IStorage } from 'src/storage/types';\nimport { IVisitorCodeManager } from 'src/visitorCodeManager';\nimport { EventManager, EventType } from 'src/eventManager';\nimport { IUrlProvider } from 'src/requester/urlProvider';\nimport { DEFAULT_CLIENT_CONFIGURATION } from './constants';\n\ninterface IClientConfiguration {\n initialize: () => Promise<Result<void, KameleoonError>>;\n readonly featureFlags: Map<string, FeatureFlagType>;\n readonly configuration: ConfigurationType;\n readonly segments: Map<string, SegmentType>;\n readonly ruleMap: Map<number, MappedRuleType>;\n}\n\nexport class ClientConfiguration implements IClientConfiguration {\n private updateConfigurationIntervalId: NodeJS.Timeout | null = null;\n private updateType: UpdateType = UpdateType.Polling;\n private configurationData: ClientConfigurationDataType =\n DEFAULT_CLIENT_CONFIGURATION;\n private featureFlagsData: Map<string, FeatureFlagType> = new Map();\n private isTargetedDeliveryRule: boolean | null = null;\n private segmentsData: Map<string, SegmentType> | null = null;\n private updateInterval: number;\n private lastUpdate: Date;\n private storage: IStorage<ClientDataType>;\n private requester: Requester;\n private eventSource: IEventSource;\n private mappedRules: Map<number, MappedRuleType> | null = null;\n private dataManager: DataManager;\n private visitorCodeManager: IVisitorCodeManager;\n private eventManager: EventManager;\n private urlProvider: IUrlProvider;\n\n constructor({\n updateInterval,\n urlProvider,\n storage,\n requester,\n dataManager,\n eventSource,\n externalVisitorCodeManager,\n eventManager,\n }: ClientConfigurationParametersType) {\n this.urlProvider = urlProvider;\n this.requester = requester;\n this.updateInterval = updateInterval;\n this.lastUpdate = new Date();\n this.storage = storage;\n this.dataManager = dataManager;\n this.eventManager = eventManager;\n this.visitorCodeManager = externalVisitorCodeManager;\n this.eventSource = eventSource;\n }\n\n public async initialize(): Promise<Result<void, KameleoonError>> {\n this.readStorageData();\n\n const shouldUpdate = this.checkShouldUpdate();\n\n if (shouldUpdate) {\n const updateResult = await this.updateClientConfiguration();\n\n if (!updateResult.ok) {\n return updateResult;\n }\n\n // --- Note ---\n // If update type is being toggled `initialize` will be called again\n // so we don't need to continue execution here\n const isUpdateTypeToggled = updateResult.data;\n\n if (isUpdateTypeToggled) {\n return Ok();\n }\n }\n\n if (this.updateType === UpdateType.RealTime && !this.eventSource.isOpen) {\n this.updateType = UpdateType.Polling;\n this.handleRealTimeUpdates();\n\n return Ok();\n }\n\n if (this.updateType === UpdateType.Polling) {\n this.handlePollingUpdates();\n }\n\n return Ok();\n }\n\n private cleanupHandlers(): void {\n if (this.eventSource.isOpen) {\n this.eventSource.close();\n }\n\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n }\n\n private handleRealTimeUpdates(): void {\n this.cleanupHandlers();\n\n const updateEventCallback = (timestamp: number) => {\n this.updateClientConfiguration(timestamp).then((updateResult) => {\n if (updateResult.ok) {\n this.eventManager.fireEvent(EventType.ConfigurationUpdate, {\n timestamp,\n });\n }\n });\n };\n\n this.eventSource.open(updateEventCallback);\n }\n\n private handlePollingUpdates(): void {\n // --- Note ---\n // If `initialize` is called again the interval will be cleared\n // so theoretically we will constantly defer config update\n // but `this.lastUpdate` with `checkShouldUpdate` will prevent that\n this.cleanupHandlers();\n\n // --- Note ---\n // Error Handling is for `setInterval` emergency cleanup\n try {\n this.updateConfigurationIntervalId = setInterval(\n this.updateClientConfiguration.bind(this),\n this.updateInterval,\n );\n } catch (err) {\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n throw err;\n }\n }\n\n get featureFlags(): Map<string, FeatureFlagType> {\n return this.featureFlagsData;\n }\n\n get configuration(): ConfigurationType {\n return this.configurationData.configuration;\n }\n\n get segments(): Map<string, SegmentType> {\n if (this.segmentsData) {\n return this.segmentsData;\n }\n\n const segmentsData = new Map<string, SegmentType>();\n\n this.featureFlagsData.forEach((flag) => {\n flag.rules.forEach((rule) => {\n if (rule.segment && !segmentsData.has(rule.segment.id)) {\n segmentsData.set(rule.segment.id, rule.segment);\n }\n });\n });\n\n this.segmentsData = segmentsData;\n\n return segmentsData;\n }\n\n get ruleMap(): Map<number, MappedRuleType> {\n if (this.mappedRules?.size) {\n return this.mappedRules;\n }\n\n const mappedRules = new Map<number, MappedRuleType>();\n\n for (const featureFlag of this.featureFlags.values()) {\n for (const rule of featureFlag.rules) {\n const { id, experimentId, variationByExposition } = rule;\n const variationMap = new Map<string, number>();\n\n variationByExposition.forEach(({ variationKey, variationId }) => {\n if (typeof variationId === 'number') {\n variationMap.set(variationKey, variationId);\n }\n });\n\n mappedRules.set(id, {\n featureId: featureFlag.id,\n experimentId,\n variations: variationMap,\n });\n }\n }\n\n this.mappedRules = mappedRules;\n\n return mappedRules;\n }\n\n get isConsentRequired(): boolean {\n return this.configuration.consentType === ConsentType.Required;\n }\n\n get hasAnyTargetedDeliveryRule(): boolean {\n if (this.isTargetedDeliveryRule !== null) {\n return this.isTargetedDeliveryRule;\n }\n\n for (const featureFlag of this.featureFlags.values()) {\n if (\n featureFlag.environmentEnabled &&\n featureFlag.rules.some(\n (rule) => rule.type === RuleType.TARGETED_DELIVERY,\n )\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n private checkShouldUpdate(): boolean {\n const { configuration } = this.configurationData;\n\n this.updateType = configuration.realTimeUpdate\n ? UpdateType.RealTime\n : UpdateType.Polling;\n\n if (!this.featureFlags.size) {\n return true;\n }\n\n const lastUpdateTime = this.lastUpdate.getTime();\n const updateWindowEdge = Date.now() - this.updateInterval;\n\n return lastUpdateTime < updateWindowEdge;\n }\n\n private readStorageData(): void {\n const result = this.storage.read();\n\n if (result.ok) {\n const { data, lastUpdate } = result.data;\n\n this.urlProvider.dataApiDomain = data.configuration.dataApiDomain;\n\n const { featureFlags, customData } = data;\n\n if (customData?.length) {\n this.dataManager.customDataIndexes = customData;\n }\n\n for (const featureFlag of featureFlags) {\n this.featureFlagsData.set(featureFlag.featureKey, featureFlag);\n }\n\n this.configurationData = data;\n this.lastUpdate = new Date(Date.parse(lastUpdate));\n }\n }\n\n /**\n * Updates client configuration\n *\n * @param timeStamp - timestamp for real-time configuration update\n *\n * @returns `true` if current update type should be toggled (SSE/Polling)\n */\n private async updateClientConfiguration(\n timestamp?: number,\n ): Promise<Result<boolean, KameleoonError>> {\n const clientConfigurationResult =\n await this.requester.getClientConfiguration(timestamp);\n\n if (!clientConfigurationResult.ok) {\n if (this.featureFlags.size) {\n // TODO: the case of silent fail should be logged when logging is implemented\n return Ok(true);\n }\n\n return clientConfigurationResult;\n }\n\n const { configuration, customData, featureFlags } =\n clientConfigurationResult.data;\n\n this.configurationData = { configuration, customData };\n\n for (const featureFlag of featureFlags) {\n this.featureFlagsData.set(featureFlag.featureKey, featureFlag);\n }\n\n if (customData?.length) {\n this.dataManager.customDataIndexes = customData;\n }\n\n this.dataManager.clearTrees();\n this.mappedRules?.clear();\n this.isTargetedDeliveryRule = null;\n this.segmentsData = null;\n\n const result = this.updateStorageData();\n\n if (!result.ok) {\n return result;\n }\n\n const updateType = configuration.realTimeUpdate\n ? UpdateType.RealTime\n : UpdateType.Polling;\n\n const toggleUpdateType = updateType !== this.updateType;\n\n if (toggleUpdateType) {\n this.updateType = updateType;\n await this.initialize();\n }\n\n // --- Note ---\n // According to GDPR policy we should set visitorCode if legal consent isn't required\n // or we have at least one Targeted Delivery rule in configuration\n const consentRequired =\n this.isConsentRequired && !this.hasAnyTargetedDeliveryRule;\n this.visitorCodeManager.consentRequired = consentRequired;\n\n return Ok(toggleUpdateType);\n }\n\n private updateStorageData(): Result<void, KameleoonError> {\n this.lastUpdate = new Date();\n\n const configurationData = {\n ...this.configurationData,\n featureFlags: Array.from(this.featureFlags.values()),\n };\n\n const data: ClientDataType = {\n data: configurationData,\n lastUpdate: this.lastUpdate.toString(),\n };\n\n this.urlProvider.dataApiDomain =\n this.configurationData.configuration.dataApiDomain;\n\n return this.storage.write(data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["_types","require","Object","defineProperty","exports","value","DEFAULT_CONFIGURATION_DATA","DEFAULT_CLIENT_CONFIGURATION","customData","configuration","realTimeUpdate","consentType","ConsentType","NotRequired","dataApiDomain","featureFlags"],"sources":["../../src/clientConfiguration/constants.ts"],"sourcesContent":["import {\n ClientConfigurationDataType,\n ConfigurationDataType,\n} from 'src/clientConfiguration';\nimport { ConsentType } from './types';\n\nexport const DEFAULT_CONFIGURATION_DATA: ClientConfigurationDataType = {\n customData: [],\n configuration: {\n realTimeUpdate: false,\n consentType: ConsentType.NotRequired,\n dataApiDomain: 'data.kameleoon.io',\n },\n};\n\nexport const DEFAULT_CLIENT_CONFIGURATION: ConfigurationDataType = {\n customData: [],\n featureFlags: [],\n configuration: {\n realTimeUpdate: false,\n consentType: ConsentType.NotRequired,\n dataApiDomain: 'data.kameleoon.io',\n },\n};\n"],"mappings":"aAIA,IAAAA,MAAA,CAAAC,OAAA,YAAsCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,0BAAA,CAAAF,OAAA,CAAAG,4BAAA,aAEzB,CAAAD,0BAAuD,CAAAF,OAAA,CAAAE,0BAAA,CAAG,CACrEE,UAAU,CAAE,EAAE,CACdC,aAAa,CAAE,CACbC,cAAc,GAAO,CACrBC,WAAW,CAAEC,kBAAW,CAACC,WAAW,CACpCC,aAAa,CAAE,mBACjB,CACF,CAAC,CAEYP,4BAAmD,CAAAH,OAAA,CAAAG,4BAAA,CAAG,CACjEC,UAAU,CAAE,EAAE,CACdO,YAAY,CAAE,EAAE,CAChBN,aAAa,CAAE,CACbC,cAAc,GAAO,CACrBC,WAAW,CAAEC,kBAAW,CAACC,WAAW,CACpCC,aAAa,CAAE,mBACjB,CACF,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/clientConfiguration/index.ts"],"sourcesContent":["export {\n ConfigurationDataType,\n CustomDataConfigurationType,\n ClientConfigurationDataType,\n CustomDataScope,\n VariationByExpositionType,\n FeatureVariableType,\n FeatureFlagType,\n ConsentType,\n RuleItemType,\n JSONValue,\n RuleType,\n JSONType,\n} from './types';\nexport { ClientConfiguration } from './clientConfiguration';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["UpdateType","exports","Polling","RealTime","RuleType","TARGETED_DELIVERY","EXPERIMENTATION","FeatureFlagSdkLanguageType","ANDROID","SWIFT","JAVA","CSHARP","NODEJS","PHP","RUBY","GO","FLUTTER","REACTJS","FeatureStatus","ACTIVATED","DEACTIVATED","SCHEDULED","CustomDataScope","Visit","Visitor","Page","ConsentType","Required","NotRequired"],"sources":["../../src/clientConfiguration/types.ts"],"sourcesContent":["import { IEventSource } from 'src/eventSource';\nimport { DataManager } from 'src/kameleoonData';\nimport { Requester } from 'src/requester';\nimport { IVisitorCodeManager } from 'src/visitorCodeManager';\nimport { ClientDataType, IStorage } from 'src/storage';\nimport { SegmentType } from 'src/targeting';\nimport { VariableType } from 'src/types';\nimport { EventManager } from 'src/eventManager';\nimport { IUrlProvider } from 'src/requester/urlProvider';\n\nexport type ScheduleType = {\n dateStart: string;\n dateEnd: string;\n};\n\nexport enum UpdateType {\n Polling,\n RealTime,\n}\n\nexport type JSONValue =\n | string\n | number\n | boolean\n | { [x: string]: JSONValue }\n | JSONValue[];\n\nexport type JSONType = Record<string | number | symbol, JSONValue> | null;\n\nexport enum RuleType {\n TARGETED_DELIVERY = 'TARGETED_DELIVERY',\n EXPERIMENTATION = 'EXPERIMENTATION',\n}\n\nexport enum FeatureFlagSdkLanguageType {\n ANDROID = 'ANDROID',\n SWIFT = 'SWIFT',\n JAVA = 'JAVA',\n CSHARP = 'CSHARP',\n NODEJS = 'NODEJS',\n PHP = 'PHP',\n RUBY = 'RUBY',\n GO = 'GO',\n FLUTTER = 'FLUTTER',\n REACTJS = 'REACTJS',\n}\n\nexport enum FeatureStatus {\n ACTIVATED = 'ACTIVATED',\n DEACTIVATED = 'DEACTIVATED',\n SCHEDULED = 'SCHEDULED',\n}\n\nexport enum CustomDataScope {\n Visit = 'VISIT',\n Visitor = 'VISITOR',\n Page = 'Page',\n}\n\nexport enum ConsentType {\n Required = 'REQUIRED',\n NotRequired = 'NOT_REQUIRED',\n}\n\nexport type DeviationType = {\n variationId: string;\n value: number;\n};\n\nexport type FeatureFlagType = {\n id: number;\n featureKey: string;\n environmentEnabled: boolean;\n variations: FeatureVariationType[];\n defaultVariationKey: string;\n rules: RuleItemType[];\n};\n\nexport type FeatureVariationType = {\n key: string;\n variables: FeatureVariableType[];\n};\n\nexport type FeatureVariableType = {\n key: string;\n type: VariableType;\n value: string | number | boolean;\n};\n\nexport type RuleItemType = {\n type: RuleType;\n id: number;\n respoolTime: number | null;\n order: number;\n exposition: number;\n experimentId: number;\n variationByExposition: VariationByExpositionType[];\n segment: SegmentType | null;\n};\n\nexport type MappedRuleType = {\n experimentId: number;\n featureId: number;\n // --- Note ---\n // Map<variationKey, variationId>\n variations: Map<string, number>;\n};\n\nexport type VariationByExpositionType = {\n variationKey: string;\n variationId: number;\n exposition: number;\n};\n\nexport type ConfigurationDataType = {\n featureFlags: FeatureFlagType[];\n configuration: ConfigurationType;\n customData: CustomDataConfigurationType[];\n};\n\nexport type ClientConfigurationDataType = Omit<\n ConfigurationDataType,\n 'featureFlags'\n>;\n\nexport type CustomDataConfigurationType = {\n index: number;\n localOnly: boolean;\n isMappingIdentifier: boolean;\n scope: CustomDataScope;\n};\n\nexport type ConfigurationType = {\n realTimeUpdate: boolean;\n consentType: ConsentType;\n dataApiDomain: string;\n};\n\nexport type ClientConfigurationParametersType = {\n urlProvider: IUrlProvider;\n updateInterval: number;\n storage: IStorage<ClientDataType>;\n dataManager: DataManager;\n requester: Requester;\n eventSource: IEventSource;\n eventManager: EventManager;\n externalVisitorCodeManager: IVisitorCodeManager;\n};\n"],"mappings":"uNAeY,CAAAA,UAAU,CAAAC,OAAA,CAAAD,UAAA,UAAVA,CAAU,QAAV,CAAAA,CAAU,CAAVA,CAAU,CAAAE,OAAA,cAAVF,CAAU,CAAVA,CAAU,CAAAG,QAAA,eAAVH,CAAU,MAcVI,QAAQ,CAAAH,OAAA,CAAAG,QAAA,UAARA,CAAQ,QAAR,CAAAA,CAAQ,CAAAC,iBAAA,qBAARD,CAAQ,CAAAE,eAAA,mBAARF,CAAQ,MAKRG,0BAA0B,CAAAN,OAAA,CAAAM,0BAAA,UAA1BA,CAA0B,QAA1B,CAAAA,CAA0B,CAAAC,OAAA,WAA1BD,CAA0B,CAAAE,KAAA,SAA1BF,CAA0B,CAAAG,IAAA,QAA1BH,CAA0B,CAAAI,MAAA,UAA1BJ,CAA0B,CAAAK,MAAA,UAA1BL,CAA0B,CAAAM,GAAA,OAA1BN,CAA0B,CAAAO,IAAA,QAA1BP,CAA0B,CAAAQ,EAAA,MAA1BR,CAA0B,CAAAS,OAAA,WAA1BT,CAA0B,CAAAU,OAAA,WAA1BV,CAA0B,MAa1BW,aAAa,CAAAjB,OAAA,CAAAiB,aAAA,UAAbA,CAAa,QAAb,CAAAA,CAAa,CAAAC,SAAA,aAAbD,CAAa,CAAAE,WAAA,eAAbF,CAAa,CAAAG,SAAA,aAAbH,CAAa,MAMbI,eAAe,CAAArB,OAAA,CAAAqB,eAAA,UAAfA,CAAe,QAAf,CAAAA,CAAe,CAAAC,KAAA,SAAfD,CAAe,CAAAE,OAAA,WAAfF,CAAe,CAAAG,IAAA,QAAfH,CAAe,MAMfI,WAAW,CAAAzB,OAAA,CAAAyB,WAAA,UAAXA,CAAW,QAAX,CAAAA,CAAW,CAAAC,QAAA,YAAXD,CAAW,CAAAE,WAAA,gBAAXF,CAAW","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clientSettings.js","names":["_types","require","Object","defineProperty","exports","value","ClientSettings","_defineProperty","a","b","c","_toPropertyKey","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","d","call","TypeError","String","Number","constructor","siteCode","configuration","environment","getEnvironment","networkDomain","getNetworkDomain","updateInterval","getUpdateInterval","cleanupInterval","getCleanupInterval","requestTimeout","getRequestTimeout","trackingInterval","getTrackingInterval","trackRetryDelay","Milliseconds","Second","Environment","Production","targetingDataCleanupInterval","Minute","parts","split","length","settings"],"sources":["../../src/clientSettings/clientSettings.ts"],"sourcesContent":["import { Environment, Milliseconds, SDKConfigurationType } from 'src/types';\nimport { ClientSettingsType } from './types';\n\nexport interface IClientSettings {\n readonly settings: ClientSettingsType;\n}\n\nexport class ClientSettings implements IClientSettings {\n private updateInterval: number;\n private environment: Environment;\n private networkDomain: string | null;\n private requestTimeout: number;\n private siteCode: string;\n private cleanupInterval: number | null;\n private trackRetryDelay: number;\n private trackingInterval: number;\n\n constructor(siteCode: string, configuration?: Partial<SDKConfigurationType>) {\n this.siteCode = siteCode;\n\n this.environment = this.getEnvironment(configuration);\n this.networkDomain = this.getNetworkDomain(configuration);\n this.updateInterval = this.getUpdateInterval(configuration);\n this.cleanupInterval = this.getCleanupInterval(configuration);\n this.requestTimeout = this.getRequestTimeout(configuration);\n this.trackingInterval = this.getTrackingInterval(configuration);\n\n this.trackRetryDelay = 5 * Milliseconds.Second;\n }\n\n private getTrackingInterval(\n configuration?: Partial<SDKConfigurationType>,\n ): number {\n if (typeof configuration?.trackingInterval === 'number') {\n if (configuration.trackingInterval < 100) {\n return 100;\n }\n\n if (configuration.trackingInterval > 1_000) {\n return 1_000;\n }\n\n return configuration.trackingInterval;\n }\n\n return 1_000;\n }\n\n private getEnvironment(\n configuration?: Partial<SDKConfigurationType>,\n ): Environment {\n if (configuration?.environment) {\n return configuration.environment;\n }\n\n return Environment.Production;\n }\n\n private getCleanupInterval(\n configuration?: Partial<SDKConfigurationType>,\n ): number | null {\n if (typeof configuration?.targetingDataCleanupInterval === 'number') {\n if (configuration.targetingDataCleanupInterval < 1) {\n return 1 * Milliseconds.Minute;\n }\n\n return configuration.targetingDataCleanupInterval * Milliseconds.Minute;\n }\n\n return null;\n }\n\n private getUpdateInterval(\n configuration?: Partial<SDKConfigurationType>,\n ): number {\n if (typeof configuration?.updateInterval === 'number') {\n if (configuration.updateInterval < 1) {\n return 1 * Milliseconds.Minute;\n }\n\n return configuration.updateInterval * Milliseconds.Minute;\n }\n\n return 60 * Milliseconds.Minute;\n }\n\n private getNetworkDomain(\n configuration?: Partial<SDKConfigurationType>,\n ): string | null {\n if (configuration?.networkDomain) {\n const parts = configuration.networkDomain.split('.');\n\n if (parts.length !== 2) {\n return null;\n }\n\n return configuration.networkDomain;\n }\n\n return null;\n }\n\n private getRequestTimeout(\n configuration?: Partial<SDKConfigurationType>,\n ): number {\n if (typeof configuration?.requestTimeout === 'number') {\n return configuration.requestTimeout;\n }\n\n return 10 * Milliseconds.Second;\n }\n\n get settings(): ClientSettingsType {\n return {\n trackRetryDelay: this.trackRetryDelay,\n cleanupInterval: this.cleanupInterval,\n updateInterval: this.updateInterval,\n requestTimeout: this.requestTimeout,\n networkDomain: this.networkDomain,\n trackingInterval: this.trackingInterval,\n environment: this.environment,\n siteCode: this.siteCode,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/clientSettings/index.ts"],"sourcesContent":["export { ClientSettings } from './clientSettings';\nexport { ClientSettingsType } from './types';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/clientSettings/types.ts"],"sourcesContent":["import { Environment } from 'src/types';\n\nexport type ClientSettingsType = {\n updateInterval: number;\n environment: Environment;\n siteCode: string;\n cleanupInterval: number | null;\n networkDomain: string | null;\n requestTimeout: number;\n trackRetryDelay: number;\n trackingInterval: number;\n};\n"],"mappings":"","ignoreList":[]}
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["OFF_VARIATION_KEY","exports","WAREHOUSE_AUDIENCE_KEY","CACHE_CLEANUP_TIMEOUT","CACHE_ITEM_LIFETIME","SdkLanguageType","ANDROID","IOS","JAVA","CSHARP","NODEJS","PHP","RUBY","GO","FLUTTER","REACT","PYTHON","JAVASCRIPT","RUST","DEFAULT_VISITOR_DATA_FILTERS","previousVisitAmount","currentVisit","customData","pageViews","geolocation","device","browser","operatingSystem","conversions","experiments","kcs"],"sources":["../src/constants.ts"],"sourcesContent":["import { VisitorDataFiltersType } from './utilities/types';\n\nexport const OFF_VARIATION_KEY = 'off';\nexport const WAREHOUSE_AUDIENCE_KEY = 'warehouseAudiences';\nexport const CACHE_CLEANUP_TIMEOUT = 10;\nexport const CACHE_ITEM_LIFETIME = 5;\n\n/**\n * @readonly\n * @enum {string} an Enum of all the possible Kameleoon SDK types\n * */\nexport enum SdkLanguageType {\n ANDROID = 'ANDROID',\n IOS = 'IOS',\n JAVA = 'JAVA',\n CSHARP = 'CSHARP',\n NODEJS = 'NODEJS',\n PHP = 'PHP',\n RUBY = 'RUBY',\n GO = 'GO',\n FLUTTER = 'FLUTTER',\n REACT = 'REACT',\n PYTHON = 'PYTHON',\n JAVASCRIPT = 'JAVASCRIPT',\n RUST = 'RUST',\n}\n\nexport const DEFAULT_VISITOR_DATA_FILTERS: VisitorDataFiltersType = {\n previousVisitAmount: 1,\n currentVisit: true,\n customData: true,\n pageViews: false,\n geolocation: false,\n device: false,\n browser: false,\n operatingSystem: false,\n conversions: false,\n experiments: false,\n kcs: false,\n};\n"],"mappings":"gQAEa,CAAAA,iBAAiB,CAAAC,OAAA,CAAAD,iBAAA,CAAG,KAAK,CACzBE,sBAAsB,CAAAD,OAAA,CAAAC,sBAAA,CAAG,oBAAoB,CAC7CC,qBAAqB,CAAAF,OAAA,CAAAE,qBAAA,CAAG,EAAE,CAC1BC,mBAAmB,CAAAH,OAAA,CAAAG,mBAAA,CAAG,CAAC,IAMxB,CAAAC,eAAe,CAAAJ,OAAA,CAAAI,eAAA,UAAfA,CAAe,QAAf,CAAAA,CAAe,CAAAC,OAAA,WAAfD,CAAe,CAAAE,GAAA,OAAfF,CAAe,CAAAG,IAAA,QAAfH,CAAe,CAAAI,MAAA,UAAfJ,CAAe,CAAAK,MAAA,UAAfL,CAAe,CAAAM,GAAA,OAAfN,CAAe,CAAAO,IAAA,QAAfP,CAAe,CAAAQ,EAAA,MAAfR,CAAe,CAAAS,OAAA,WAAfT,CAAe,CAAAU,KAAA,SAAfV,CAAe,CAAAW,MAAA,UAAfX,CAAe,CAAAY,UAAA,cAAfZ,CAAe,CAAAa,IAAA,QAAfb,CAAe,MAgBpB,KAAM,CAAAc,4BAAoD,CAAAlB,OAAA,CAAAkB,4BAAA,CAAG,CAClEC,mBAAmB,CAAE,CAAC,CACtBC,YAAY,GAAM,CAClBC,UAAU,GAAM,CAChBC,SAAS,GAAO,CAChBC,WAAW,GAAO,CAClBC,MAAM,GAAO,CACbC,OAAO,GAAO,CACdC,eAAe,GAAO,CACtBC,WAAW,GAAO,CAClBC,WAAW,GAAO,CAClBC,GAAG,GACL,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eventManager.js","names":["EventManager","constructor","_defineProperty","addEventHandler","eventType","callback","eventHandlers","Map","set","fireEvent","data","c","eventHandler","get","exports"],"sources":["../../src/eventManager/eventManager.ts"],"sourcesContent":["import { EventCallbackType, EventDataType, EventType } from './types';\n\ninterface IEventManager<E extends EventType = EventType> {\n addEventHandler(eventType: E, callback: EventCallbackType<E>): void;\n fireEvent(eventType: E, data: EventDataType[E]): void;\n}\n\nexport class EventManager implements IEventManager {\n private eventHandlers?: Map<EventType, EventCallbackType<EventType>>;\n\n public addEventHandler<E extends EventType>(\n eventType: E,\n callback: EventCallbackType<E>,\n ): void {\n if (!this.eventHandlers) {\n this.eventHandlers = new Map();\n }\n\n this.eventHandlers.set(eventType, callback as EventCallbackType<EventType>);\n }\n\n public fireEvent<E extends EventType>(\n eventType: E,\n data: EventDataType[E],\n ): void {\n const eventHandler = this.eventHandlers?.get(eventType);\n\n if (eventHandler && data) {\n eventHandler(data);\n }\n }\n}\n"],"mappings":"imBAOO,KAAM,CAAAA,YAAsC,CAAAC,YAAA,EAAAC,eAAA,8BAG1CC,eAAeA,CACpBC,CAAY,CACZC,CAA8B,CACxB,CACD,IAAI,CAACC,aAAa,GACrB,IAAI,CAACA,aAAa,CAAG,GAAI,CAAAC,GAAK,EAGhC,IAAI,CAACD,aAAa,CAACE,GAAG,CAACJ,CAAS,CAAEC,CAAwC,CAC5E,CAEOI,SAASA,CACdL,CAAY,CACZM,CAAsB,CAChB,KAAAC,CAAA,CACN,KAAM,CAAAC,CAAY,SAAAD,CAAA,CAAG,IAAI,CAACL,aAAa,YAAAK,CAAA,QAAlBA,CAAA,CAAoBE,GAAG,CAACT,CAAS,CAAC,CAEnDQ,CAAY,EAAIF,CAAI,EACtBE,CAAY,CAACF,CAAI,CAErB,CACF,CAACI,OAAA,CAAAd,YAAA,CAAAA,YAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/eventManager/index.ts"],"sourcesContent":["export { EventManager } from './eventManager';\nexport {\n EventType,\n EventDataType,\n EventCallbackType,\n EvaluationEventDataType,\n ConfigurationUpdateEventDataType,\n} from './types';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["EventType","exports","Evaluation","ConfigurationUpdate"],"sources":["../../src/eventManager/types.ts"],"sourcesContent":["/**\n * @readonly\n * @enum {string} an Enum containing all possible variants of event types\n * */\nexport enum EventType {\n Evaluation = 'evaluation',\n ConfigurationUpdate = 'configurationUpdate',\n}\n\n/**\n * @type EvaluationEventDataType - object containing information about the evaluation event data\n * */\nexport type EvaluationEventDataType = {\n featureKey: string;\n variation: {\n experimentId: number | null;\n id: number | null;\n key: string;\n };\n};\n\n/**\n * @type ConfigurationUpdateEventDataType - object containing information about the configuration update event data\n * */\nexport type ConfigurationUpdateEventDataType = {\n timestamp: number;\n};\n\n/**\n * @type EventDataType - mapped type containing the link between `EventType` and the corresponding data type\n * */\nexport type EventDataType = {\n [EventType.Evaluation]: EvaluationEventDataType;\n [EventType.ConfigurationUpdate]: ConfigurationUpdateEventDataType;\n};\n\n/**\n * @type EventCallbackType - a function that takes `EventDataType<EventType>` as an argument and returns `void`\n * */\nexport type EventCallbackType<E extends EventType> = (\n eventData: EventDataType[E],\n) => void;\n"],"mappings":"gGAIY,CAAAA,SAAS,CAAAC,OAAA,CAAAD,SAAA,UAATA,CAAS,QAAT,CAAAA,CAAS,CAAAE,UAAA,cAATF,CAAS,CAAAG,mBAAA,uBAATH,CAAS","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["REAL_TIME_EVENT","exports"],"sources":["../../src/eventSource/constants.ts"],"sourcesContent":["export const REAL_TIME_EVENT = 'configuration-update-event';\n"],"mappings":"mGAAO,KAAM,CAAAA,eAAe,CAAAC,OAAA,CAAAD,eAAA,CAAG,4BAA4B","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eventSource.js","names":["_constants","require","Object","defineProperty","exports","value","KameleoonEventSource","_defineProperty","a","b","c","_toPropertyKey","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","d","call","TypeError","String","Number","constructor","siteCode","externalEventSource","urlProvider","url","getEventSourceUrl","eventSource","isConnectionOpen","isOpen","open","onEvent","handleMessage","eventType","REAL_TIME_EVENT","close","onMessage","message","event","JSON","parse","data","eventSiteCode","ts"],"sources":["../../src/eventSource/eventSource.ts"],"sourcesContent":["import { REAL_TIME_EVENT } from './constants';\nimport {\n EventHandlerType,\n EventSourceParametersType,\n IExternalEventSource,\n RealTimeEventType,\n} from './types';\n\nexport interface IEventSource {\n readonly isOpen: boolean;\n open: (onEvent: EventHandlerType) => void;\n close: () => void;\n}\n\n// --- Note ---\n// Named `KameleoonEventSource` to avoid collision with native `EventSource`\nexport class KameleoonEventSource implements IEventSource {\n private eventSource: IExternalEventSource;\n private siteCode: string;\n private url: string;\n private isConnectionOpen: boolean;\n\n constructor({\n siteCode,\n externalEventSource,\n urlProvider,\n }: EventSourceParametersType) {\n this.url = urlProvider.getEventSourceUrl();\n this.siteCode = siteCode;\n this.eventSource = externalEventSource;\n this.isConnectionOpen = false;\n }\n\n get isOpen(): boolean {\n return this.isConnectionOpen;\n }\n\n public open(onEvent: EventHandlerType): void {\n this.eventSource.open({\n onEvent: this.handleMessage(onEvent),\n url: this.url,\n eventType: REAL_TIME_EVENT,\n });\n this.isConnectionOpen = true;\n }\n\n public close(): void {\n this.eventSource.close();\n this.isConnectionOpen = false;\n }\n\n private handleMessage(\n onEvent: EventHandlerType,\n ): (message: MessageEvent) => void {\n const onMessage = (message: MessageEvent): void => {\n const event: RealTimeEventType = JSON.parse(message.data);\n const { siteCode: eventSiteCode, ts } = event;\n\n if (this.siteCode === eventSiteCode) {\n onEvent(ts);\n }\n };\n\n return onMessage;\n }\n}\n"],"mappings":"aAAA,IAAAA,UAAA,CAAAC,OAAA,gBAA8CC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,oBAAA,iBAAAC,gBAAAC,CAAA,CAAAC,CAAA,CAAAC,CAAA,SAAAD,CAAA,CAAAE,cAAA,CAAAF,CAAA,KAAAD,CAAA,CAAAN,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAC,CAAA,EAAAJ,KAAA,CAAAK,CAAA,CAAAE,UAAA,IAAAC,YAAA,IAAAC,QAAA,MAAAN,CAAA,CAAAC,CAAA,EAAAC,CAAA,CAAAF,CAAA,UAAAG,eAAAH,CAAA,MAAAC,CAAA,CAAAM,YAAA,CAAAP,CAAA,kCAAAC,CAAA,CAAAA,CAAA,CAAAA,CAAA,aAAAM,aAAAP,CAAA,CAAAC,CAAA,sBAAAD,CAAA,GAAAA,CAAA,QAAAA,CAAA,KAAAE,CAAA,CAAAF,CAAA,CAAAQ,MAAA,CAAAC,WAAA,cAAAP,CAAA,MAAAQ,CAAA,CAAAR,CAAA,CAAAS,IAAA,CAAAX,CAAA,CAAAC,CAAA,iCAAAS,CAAA,QAAAA,CAAA,WAAAE,SAAA,mEAAAX,CAAA,CAAAY,MAAA,CAAAC,MAAA,EAAAd,CAAA,EAgBvC,KAAM,CAAAF,oBAA6C,CAMxDiB,WAAWA,CAAAf,CAAA,CAImB,IAJlB,CACVgB,QAAQ,CAARA,CAAQ,CACRC,mBAAmB,CAAnBA,CAAmB,CACnBC,WAAW,CAAXA,CACyB,CAAC,CAAAlB,CAAA,CAAAD,eAAA,4BAAAA,eAAA,yBAAAA,eAAA,oBAAAA,eAAA,iCAC1B,IAAI,CAACoB,GAAG,CAAGD,CAAW,CAACE,iBAAiB,CAAC,CAAC,CAC1C,IAAI,CAACJ,QAAQ,CAAGA,CAAQ,CACxB,IAAI,CAACK,WAAW,CAAGJ,CAAmB,CACtC,IAAI,CAACK,gBAAgB,GACvB,CAEA,GAAI,CAAAC,MAAMA,CAAA,CAAY,CACpB,MAAO,KAAI,CAACD,gBACd,CAEOE,IAAIA,CAACC,CAAyB,CAAQ,CAC3C,IAAI,CAACJ,WAAW,CAACG,IAAI,CAAC,CACpBC,OAAO,CAAE,IAAI,CAACC,aAAa,CAACD,CAAO,CAAC,CACpCN,GAAG,CAAE,IAAI,CAACA,GAAG,CACbQ,SAAS,CAAEC,0BACb,CAAC,CAAC,CACF,IAAI,CAACN,gBAAgB,GACvB,CAEOO,KAAKA,CAAA,CAAS,CACnB,IAAI,CAACR,WAAW,CAACQ,KAAK,CAAC,CAAC,CACxB,IAAI,CAACP,gBAAgB,GACvB,CAEQI,aAAaA,CACnBD,CAAyB,CACQ,CACjC,KAAM,CAAAK,CAAS,CAAIC,CAAqB,EAAW,MAC3C,CAAAC,CAAwB,CAAGC,IAAI,CAACC,KAAK,CAACH,CAAO,CAACI,IAAI,CAAC,CACnD,CAAEnB,QAAQ,CAAEoB,CAAa,CAAEC,EAAE,CAAFA,CAAG,CAAC,CAAGL,CAAK,CAEzC,IAAI,CAAChB,QAAQ,GAAKoB,CAAa,EACjCX,CAAO,CAACY,CAAE,CAEd,CAAC,CAED,MAAO,CAAAP,CACT,CACF,CAAClC,OAAA,CAAAE,oBAAA,CAAAA,oBAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/eventSource/index.ts"],"sourcesContent":["export {\n EventSourceOpenParametersType,\n IExternalEventSource,\n RealTimeEventType,\n} from './types';\nexport { KameleoonEventSource, IEventSource } from './eventSource';\nexport { REAL_TIME_EVENT } from './constants';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/eventSource/types.ts"],"sourcesContent":["import { IUrlProvider } from 'src/requester';\n\n/**\n * @param {number} timestamp - timestamp of when the event has happened\n * */\nexport type EventHandlerType = (timestamp: number) => void;\n\n/**\n * @param {string} url - url of server sent event server which will be pasted by consumer\n * @param {string} eventType - type of event to be listened for\n * @param {(message: MessageEvent) => void} onEvent - callback to be executed when event fired\n * */\nexport type EventSourceOpenParametersType = {\n url: string;\n eventType: string;\n onEvent: (message: MessageEvent) => void;\n};\n\n/**\n * @interface an interface of External Event Source which will be used in server sent events operations\n * */\nexport interface IExternalEventSource {\n /**\n * @method open - opens event source live connection\n * @param {OpenEventSourceParamsType} parameters - parameters to be passed to the event source\n * */\n open: ({ url, eventType, onEvent }: EventSourceOpenParametersType) => void;\n /**\n * @method close - closes event source live connection\n * */\n close: () => void;\n}\n\n/**\n * @param {string} siteCode - site code from the event\n * @param {number} ts - timestamp of when the event has happened\n * */\nexport type RealTimeEventType = {\n siteCode: string;\n ts: number;\n};\n\nexport type EventSourceParametersType = {\n siteCode: string;\n urlProvider: IUrlProvider;\n externalEventSource: IExternalEventSource;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hasher.js","names":["_sha","_interopRequireDefault","require","Object","defineProperty","exports","value","Hasher","a","__esModule","default","getHashDouble","visitorIdentifier","id","respoolTime","suffix","calculateHash","seed","hashDigest","sha256","toString","parseInt","Math","pow"],"sources":["../../src/hasher/hasher.ts"],"sourcesContent":["import sha256 from 'crypto-js/sha256';\nimport { GetHashDoubleParamsType } from './types';\n\nexport class Hasher {\n static getHashDouble({\n visitorIdentifier,\n id,\n respoolTime,\n }: GetHashDoubleParamsType): number {\n let suffix = '';\n\n if (respoolTime) {\n suffix += String(respoolTime);\n }\n\n return this.calculateHash(visitorIdentifier + id + suffix);\n }\n\n // --- Note ---\n // `hashDouble` is a seeded pseudo-random number between 0 and 1\n // used for deciding what variation to assign\n // `calculateHash` algorithm is consistent between every SDK\n // and will always provide same pseudo-random value for the same input parameters\n static calculateHash(seed: string): number {\n const hashDigest = sha256(seed).toString();\n\n return parseInt(hashDigest, 16) / Math.pow(2, 256);\n }\n}\n"],"mappings":"aAAA,IAAAA,IAAA,CAAAC,sBAAA,CAAAC,OAAA,sBAAsCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,MAAA,iBAAAN,uBAAAO,CAAA,SAAAA,CAAA,EAAAA,CAAA,CAAAC,UAAA,CAAAD,CAAA,EAAAE,OAAA,CAAAF,CAAA,EAG/B,KAAM,CAAAD,MAAO,CAClB,MAAO,CAAAI,aAAaA,CAAAH,CAAA,CAIgB,IAJf,CACnBI,iBAAiB,CAAjBA,CAAiB,CACjBC,EAAE,CAAFA,CAAE,CACFC,WAAW,CAAXA,CACuB,CAAC,CAAAN,CAAA,CACpBO,CAAM,CAAG,EAAE,CAMf,MAJI,CAAAD,CAAW,GACbC,CAAM,EAAWD,CAAW,GAAC,EAGxB,IAAI,CAACE,aAAa,CAACJ,CAAiB,CAAGC,CAAE,CAAGE,CAAM,CAC3D,CAOA,MAAO,CAAAC,aAAaA,CAACC,CAAY,CAAU,CACzC,KAAM,CAAAC,CAAU,CAAG,GAAAC,YAAM,EAACF,CAAI,CAAC,CAACG,QAAQ,CAAC,CAAC,CAE1C,MAAO,CAAAC,QAAQ,CAACH,CAAU,CAAE,EAAE,CAAC,CAAGI,IAAI,CAACC,GAAG,CAAC,CAAC,CAAE,GAAG,CACnD,CACF,CAAClB,OAAA,CAAAE,MAAA,CAAAA,MAAA","ignoreList":[]}
|
package/dist/hasher/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_hasher","require","Object","defineProperty","exports","value","enumerable","get","Hasher"],"sources":["../../src/hasher/index.ts"],"sourcesContent":["export { Hasher } from './hasher';\n"],"mappings":"aAAA,IAAAA,OAAA,CAAAC,OAAA,aAAkCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAH,MAAA,CAAAC,cAAA,CAAAC,OAAA,WAAAE,UAAA,IAAAC,GAAA,SAAAA,CAAA,SAAAP,OAAA,CAAAQ,MAAA","ignoreList":[]}
|
package/dist/hasher/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/hasher/types.ts"],"sourcesContent":["export type GetHashDoubleParamsType = {\n respoolTime: number | null;\n visitorIdentifier: string;\n id: string;\n};\n"],"mappings":"","ignoreList":[]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export { Ok, Result, Err } from 'ts-res';\nexport { KameleoonClient as KameleoonCore } from './kameleoonClient';\nexport { IKameleoonClient as IKameleoonCore } from './kameleoonClientInterface';\nexport { KameleoonUtils } from './kameleoonUtils';\nexport { KameleoonException, KameleoonError } from './kameleoonError';\nexport { VisitorDataFiltersType, IExternalPRNG } from './utilities';\nexport {\n FeatureFlagVariationsType,\n KameleoonStorageKey,\n IExternalStorage,\n StorageDataType,\n} from './storage';\nexport {\n EventCallbackType,\n EventDataType,\n EventType,\n EvaluationEventDataType,\n ConfigurationUpdateEventDataType,\n} from './eventManager';\nexport {\n VisitorCodeManager,\n IVisitorCodeManager,\n VISITOR_CODE_LENGTH,\n} from './visitorCodeManager';\nexport { SdkLanguageType } from './constants';\nexport { JSONType, ConfigurationDataType } from './clientConfiguration';\nexport {\n TrackingStatus,\n Environment,\n VariableType,\n InternalsType,\n FeatureFlagType,\n SDKCoreParameters,\n SDKConfigurationType,\n KameleoonVariationType,\n ExternalPackageInfoType,\n FeatureFlagVariableType,\n TrackConversionParamsType,\n FeatureVariableResultType,\n RemoteVisitorDataParamsType,\n InternalSDKConfigurationType,\n SetDataCallbackParametersType,\n GetFeatureFlagVariableParamsType,\n GetVisitorWarehouseAudienceParamsType,\n SimulateRequestDataType,\n Milliseconds,\n} from './types';\nexport {\n ApplicationVersion,\n CustomData,\n Conversion,\n Device,\n Cookie,\n Browser,\n UserAgent,\n DeviceType,\n CookieType,\n GeolocationData,\n GeolocationInfoType,\n OperatingSystemType,\n OperatingSystem,\n BrowserType,\n PageView,\n KameleoonData,\n KameleoonDataType,\n PageViewParametersType,\n ConversionParametersType,\n ApplicationVersionDataType,\n} from './kameleoonData';\nexport {\n IExternalEventSource,\n EventSourceOpenParametersType,\n} from './eventSource';\nexport {\n Header,\n HeadersType,\n HttpMethod,\n IExternalRequester,\n RequestParametersType,\n RequestType,\n RetryCountType,\n KameleoonResponseType,\n SendRequestParametersType,\n NUMBER_OF_RETRIES,\n} from './requester';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","constructor","a","siteCode","dependencies","configuration","internalConfiguration","_defineProperty","settings","clientSettings","ClientSettings","environment","externalStorage","externalEventSource","externalPackageInfo","externalVisitorCodeManager","externalRequester","externalPRNG","externals","useAbortController","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","DataStorage","KameleoonStorageKey","ClientData","targetingDataStorage","TargetingData","dataInfoStorage","DataInfo","variationDataStorage","VariationData","consentDataStorage","ConsentData","trackingStorage","TrackingData","dataManager","DataManager","dataStorage","infoStorage","cleanupInterval","urlProvider","UrlProvider","initialize","domain","networkDomain","packageInfo","requester","Requester","requestTimeout","trackRetryDelay","eventSource","KameleoonEventSource","eventManager","EventManager","clientConfiguration","ClientConfiguration","storage","updateInterval","variationConfiguration","VariationConfiguration","tracker","Tracker","trackingInterval","prng","visitorCodeManager","result","throw","initialized","ok","addData","visitorCode","validateVisitorCode","KameleoonError","KameleoonException","Initialization","b","arguments","length","data","Array","d","storeData","getRemoteVisitorData","shouldAddData","filters","DEFAULT_VISITOR_DATA_FILTERS","previousVisitAmount","VisitAmount","isUniqueIdentifier","getVisitorData","isMappingIdentifier","visitorData","storageVisitorData","visitsData","Parser","parseVisitorData","dataItem","isPersistentCustomData","trackConversion","goalId","revenue","Conversion","flush","scheduleVisitor","_isConsentProvided","visitorCodeKey","unsentDataVisitors","getFeatureFlags","featureFlags","resultFeatureFlags","forEach","id","featureKey","push","key","getVisitorFeatureFlags","activeVariations","_getActiveFeatureVariations","featureFlagId","getActiveFeatureFlags","resultFeatureList","Map","variation","variationKey","variationId","experimentId","variables","_getFeatureVariables","resultVariables","map","variable","parseFeatureVariable","set","getFeatureFlagVariationKey","_getFeatureVariation","getFeatureFlagVariable","variableKey","find","item","FeatureFlagVariableNotFound","type","value","getFeatureFlagVariables","parsedVariable","isFeatureFlagActive","OFF_VARIATION_KEY","err","FeatureFlagEnvironmentDisabled","getRemoteData","remoteData","getVisitorWarehouseAudience","customDataIndex","warehouseKey","RemoteData","WAREHOUSE_AUDIENCE_KEY","Object","keys","customData","CustomData","onEvent","event","callback","addEventHandler","getEngineTrackingCode","Utilities","getTrackingCode","isInitialized","setUserConsent","consent","setData","update","VisitorCode","maxAge","DEFAULT_MAX_AGE","path","PATH","consentRequired","ZERO_MAX_AGE","isConsentRequired","consentDataResult","read","featureFlag","get","FeatureFlagConfigurationNotFound","variations","FeatureFlagVariationNotFound","visitorIdentifier","getVisitorIdentifier","values","environmentEnabled","variationData","getVariation","targetingData","fireEvent","EventType","Evaluation","Err","withAssignment","hasJsCssVariables","some","VariableType","JS","CSS","_","updateCache","cacheManager","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport {\n ClientConfiguration,\n FeatureVariableType,\n JSONType,\n} from './clientConfiguration';\nimport { ClientSettings } from './clientSettings';\nimport {\n CACHE_CLEANUP_TIMEOUT,\n DEFAULT_VISITOR_DATA_FILTERS,\n OFF_VARIATION_KEY,\n} from './constants';\nimport {\n Conversion,\n CustomData,\n DataManager,\n KameleoonDataType,\n} from './kameleoonData';\nimport { WAREHOUSE_AUDIENCE_KEY } from './constants';\nimport { KameleoonError, KameleoonException } from './kameleoonError';\nimport { Requester, UrlProvider } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n DataStorage,\n ConsentDataType,\n IStorage,\n DataInfoType,\n TrackingDataType,\n} from './storage';\nimport {\n TrackConversionParamsType,\n FeatureFlagType,\n GetFeatureFlagVariableParamsType,\n FeatureVariableResultType,\n SDKCoreParameters,\n TrackingCacheItemType,\n ExternalPackageInfoType,\n RemoteVisitorDataParamsType,\n GetVisitorWarehouseAudienceParamsType,\n Environment,\n SetUserConsentParametersType,\n FeatureFlagVariableType,\n KameleoonVariationType,\n GetFeatureVariablesParamsType,\n VariableType,\n} from './types';\nimport { IVisitorCodeManager } from './visitorCodeManager';\nimport { Parser, Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { IKameleoonClient } from './kameleoonClientInterface';\nimport { TargetingDataType } from './targeting';\nimport { KameleoonEventSource } from './eventSource';\nimport { DEFAULT_MAX_AGE, PATH, ZERO_MAX_AGE } from './visitorCodeManager';\nimport { EventCallbackType, EventManager, EventType } from './eventManager';\nimport { Tracker } from './tracking';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * for communicating with Kameleoon JavaScript SDK Core, when new instance is created\n */\nexport class KameleoonClient implements IKameleoonClient {\n private variationConfiguration: VariationConfiguration;\n private clientConfiguration: ClientConfiguration;\n private dataManager: DataManager;\n private consentDataStorage: IStorage<ConsentDataType>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private initialized: boolean = false;\n private visitorCodeManager: IVisitorCodeManager;\n private eventManager: EventManager;\n private tracker: Tracker;\n private environment: Environment;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n dependencies,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n this.environment = clientSettings.environment;\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalVisitorCodeManager,\n externalRequester,\n externalPRNG,\n } = internalConfiguration.externals;\n const { useAbortController } = internalConfiguration.settings;\n const trackingCache = new CacheManager<TrackingCacheItemType>(\n CACHE_CLEANUP_TIMEOUT,\n );\n\n const clientDataStorage = new DataStorage<ClientDataType>(\n externalStorage,\n KameleoonStorageKey.ClientData,\n );\n const targetingDataStorage = new DataStorage<TargetingDataType>(\n externalStorage,\n KameleoonStorageKey.TargetingData,\n );\n const dataInfoStorage = new DataStorage<DataInfoType>(\n externalStorage,\n KameleoonStorageKey.DataInfo,\n );\n const variationDataStorage = new DataStorage<VariationDataType>(\n externalStorage,\n KameleoonStorageKey.VariationData,\n );\n const consentDataStorage = new DataStorage<ConsentDataType>(\n externalStorage,\n KameleoonStorageKey.ConsentData,\n );\n const trackingStorage = new DataStorage<TrackingDataType>(\n externalStorage,\n KameleoonStorageKey.TrackingData,\n );\n\n const dataManager = new DataManager({\n dataStorage: targetingDataStorage,\n infoStorage: dataInfoStorage,\n cleanupInterval: clientSettings.cleanupInterval,\n });\n\n const urlProvider = dependencies?.urlProvider ?? new UrlProvider();\n\n urlProvider.initialize({\n domain: clientSettings.networkDomain,\n siteCode: clientSettings.siteCode,\n packageInfo: externalPackageInfo,\n environment: clientSettings.environment,\n });\n\n const requester = new Requester({\n urlProvider,\n useAbortController,\n packageInfo: externalPackageInfo,\n externalRequester: externalRequester,\n requestTimeout: clientSettings.requestTimeout,\n trackRetryDelay: clientSettings.trackRetryDelay,\n });\n\n const eventSource = new KameleoonEventSource({\n siteCode: clientSettings.siteCode,\n externalEventSource,\n urlProvider,\n });\n\n const eventManager = new EventManager();\n\n const clientConfiguration = new ClientConfiguration({\n urlProvider,\n storage: clientDataStorage,\n updateInterval: clientSettings.updateInterval,\n dataManager,\n eventManager,\n requester,\n eventSource,\n externalVisitorCodeManager,\n });\n\n const variationConfiguration = new VariationConfiguration(\n variationDataStorage,\n externalVisitorCodeManager,\n );\n\n const tracker = new Tracker({\n dataManager,\n trackingStorage,\n\n variationConfiguration,\n requester,\n trackingInterval: clientSettings.trackingInterval,\n prng: externalPRNG,\n });\n\n this.tracker = tracker;\n this.variationConfiguration = variationConfiguration;\n this.requester = requester;\n this.trackingCache = trackingCache;\n this.dataManager = dataManager;\n this.clientConfiguration = clientConfiguration;\n this.externalPackageInfo = externalPackageInfo;\n this.consentDataStorage = consentDataStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n this.eventManager = eventManager;\n }\n\n public async initialize(): Promise<boolean> {\n const result = await this.clientConfiguration.initialize();\n result.throw();\n\n this.initialized = true;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.dataManager.storeData(visitorCode, ...data).throw();\n }\n\n public async getRemoteVisitorData({\n visitorCode,\n shouldAddData = true,\n filters = DEFAULT_VISITOR_DATA_FILTERS,\n }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]> {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { previousVisitAmount } = filters;\n\n if (\n typeof previousVisitAmount === 'number' &&\n (previousVisitAmount < 1 || previousVisitAmount > 25)\n ) {\n throw new KameleoonError(KameleoonException.VisitAmount);\n }\n\n const isUniqueIdentifier = this.dataManager.isUniqueIdentifier(visitorCode);\n\n const result = await this.requester.getVisitorData({\n visitorCode,\n filters,\n isMappingIdentifier: isUniqueIdentifier,\n });\n const data = result.throw();\n\n const { visitorData, storageVisitorData, visitsData } =\n Parser.parseVisitorData({\n data,\n filters,\n visitorCode,\n dataManager: this.dataManager,\n variationConfiguration: this.variationConfiguration,\n });\n\n for (const dataItem of storageVisitorData) {\n if (shouldAddData || this.dataManager.isPersistentCustomData(dataItem)) {\n this.addData(visitorCode, dataItem);\n }\n }\n\n // --- Note ---\n // Data on visits amount and time stamps is not returned to a user\n if (visitsData && shouldAddData) {\n this.addData(visitorCode, visitsData);\n }\n\n return visitorData;\n }\n\n public trackConversion({\n visitorCode,\n goalId,\n revenue,\n }: TrackConversionParamsType): void {\n this.addData(visitorCode, new Conversion({ goalId, revenue }));\n this.flush(visitorCode);\n }\n\n public flush(visitorCode?: string): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n if (typeof visitorCode === 'string') {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n this.tracker.scheduleVisitor(\n visitorCode,\n this._isConsentProvided(visitorCode),\n );\n\n return;\n }\n\n for (const visitorCodeKey of this.dataManager.unsentDataVisitors) {\n this.tracker.scheduleVisitor(\n visitorCodeKey,\n this._isConsentProvided(visitorCodeKey),\n );\n }\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n featureFlags.forEach(({ id, featureKey }) => {\n resultFeatureFlags.push({\n id,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n activeVariations.forEach(({ featureFlagId, featureKey }) => {\n resultFeatureFlags.push({\n id: featureFlagId,\n key: featureKey,\n });\n });\n\n return resultFeatureFlags;\n }\n\n public getActiveFeatureFlags(\n visitorCode: string,\n ): Map<string, KameleoonVariationType> {\n const activeVariations = this._getActiveFeatureVariations(visitorCode);\n const resultFeatureList: Map<string, KameleoonVariationType> = new Map();\n\n activeVariations.forEach((variation) => {\n const { variationKey, featureKey, variationId, experimentId } = variation;\n\n let variables: FeatureVariableType[] = [];\n\n if (variationId !== null && experimentId !== null) {\n variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n }\n\n const resultVariables = variables.map((variable) =>\n Parser.parseFeatureVariable(variable).throw(),\n );\n\n resultFeatureList.set(variation.featureKey, {\n key: variationKey,\n id: variationId,\n experimentId,\n variables: resultVariables,\n });\n });\n\n return resultFeatureList;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureFlagVariableType {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const variable = variables.find((item) => item.key === variableKey);\n\n if (!variable) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariableNotFound,\n variableKey,\n visitorCode,\n );\n }\n\n const { type, value } = Parser.parseFeatureVariable(variable).throw();\n\n return { type, value } as FeatureFlagVariableType;\n }\n\n public getFeatureFlagVariables(\n visitorCode: string,\n featureKey: string,\n ): FeatureVariableResultType[] {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n const resultVariables: FeatureVariableResultType[] = [];\n\n for (const variable of variables) {\n const parsedVariable = Parser.parseFeatureVariable(variable).throw();\n resultVariables.push(parsedVariable);\n }\n\n return resultVariables;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n try {\n const variationKey = this.getFeatureFlagVariationKey(\n visitorCode,\n featureKey,\n );\n\n return variationKey !== OFF_VARIATION_KEY;\n } catch (err) {\n if (\n err instanceof KameleoonError &&\n err.type === KameleoonException.FeatureFlagEnvironmentDisabled\n ) {\n return false;\n }\n\n throw err;\n }\n }\n\n public async getRemoteData(key: string): Promise<JSONType> {\n const remoteData = await this.requester.getRemoteData(key);\n\n return remoteData.throw();\n }\n\n public async getVisitorWarehouseAudience({\n visitorCode,\n customDataIndex,\n warehouseKey,\n }: GetVisitorWarehouseAudienceParamsType): Promise<CustomData | null> {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(\n KameleoonException.RemoteData,\n `No data found for ${warehouseKey || visitorCode} key`,\n );\n }\n\n if (\n !data[WAREHOUSE_AUDIENCE_KEY] ||\n Object.keys(data[WAREHOUSE_AUDIENCE_KEY]).length === 0\n ) {\n return null;\n }\n\n const customData = new CustomData(\n customDataIndex,\n ...Object.keys(data[WAREHOUSE_AUDIENCE_KEY]),\n );\n\n this.dataManager.storeData(visitorCode, customData);\n\n return customData;\n }\n\n public onEvent<E extends EventType>(\n event: E,\n callback: EventCallbackType<E>,\n ): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.eventManager.addEventHandler(event, callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n public isInitialized(): boolean {\n return this.initialized;\n }\n\n protected setUserConsent({\n visitorCode,\n consent,\n setData,\n }: SetUserConsentParametersType): void {\n this.visitorCodeManager.validateVisitorCode(visitorCode).throw();\n\n this.consentDataStorage.update({ [visitorCode]: consent });\n\n if (consent) {\n setData({\n visitorCode,\n key: KameleoonStorageKey.VisitorCode,\n maxAge: DEFAULT_MAX_AGE,\n path: PATH,\n });\n } else {\n if (this.visitorCodeManager.consentRequired) {\n setData({\n visitorCode: '',\n key: KameleoonStorageKey.VisitorCode,\n maxAge: ZERO_MAX_AGE,\n path: PATH,\n });\n }\n }\n }\n\n private _isConsentProvided(visitorCode: string): boolean {\n const { isConsentRequired } = this.clientConfiguration;\n const consentDataResult = this.consentDataStorage.read();\n\n return (\n !isConsentRequired ||\n (consentDataResult.ok && consentDataResult.data[visitorCode])\n );\n }\n\n private _getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n }: GetFeatureVariablesParamsType): FeatureVariableType[] {\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n const variation = featureFlag.variations.find(\n (item) => item.key === variationKey,\n );\n\n if (!variation) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariationNotFound,\n variationKey,\n visitorCode,\n );\n }\n\n return variation.variables;\n }\n\n private _getActiveFeatureVariations(\n visitorCode: string,\n ): FeatureFlagVariationType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const activeVariations: FeatureFlagVariationType[] = [];\n\n const visitorData = this.dataManager.getVisitorData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n for (const featureFlag of featureFlags.values()) {\n if (!featureFlag.environmentEnabled) {\n continue;\n }\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n targetingData: visitorData,\n featureFlag,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey: featureFlag.featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n if (variationData.variationKey !== OFF_VARIATION_KEY) {\n activeVariations.push(variationData);\n }\n }\n\n return activeVariations;\n }\n\n private _getFeatureVariation(\n visitorCode: string,\n featureKey: string,\n ): Result<FeatureFlagVariationType, KameleoonError> {\n if (!this.initialized) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.get(featureKey);\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n ),\n );\n }\n\n if (!featureFlag.environmentEnabled) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagEnvironmentDisabled,\n featureFlag.featureKey,\n this.environment,\n ),\n );\n }\n\n const visitorData = this.dataManager.getVisitorData(visitorCode);\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n featureFlag,\n withAssignment: true,\n targetingData: visitorData,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n this.eventManager.fireEvent(EventType.Evaluation, {\n featureKey,\n variation: {\n key: variationData.variationKey,\n experimentId: variationData.experimentId,\n id: variationData.variationId,\n },\n });\n\n const { experimentId, variationId, variationKey } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n let hasJsCssVariables = false;\n\n try {\n const variables = this._getFeatureVariables({\n visitorCode,\n featureKey,\n variationKey,\n });\n\n hasJsCssVariables = variables.some(({ type }) => {\n return type === VariableType.JS || type === VariableType.CSS;\n });\n } catch (_) {}\n\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n hasJsCssVariables,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n this.tracker.scheduleVisitor(\n visitorCode,\n this._isConsentProvided(visitorCode),\n );\n\n return Ok(variationData);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonClientInterface.js","names":[],"sources":["../src/kameleoonClientInterface.ts"],"sourcesContent":["import { JSONType } from './clientConfiguration';\nimport { EventCallbackType, EventType } from './eventManager';\nimport { CustomData, KameleoonDataType } from './kameleoonData';\nimport {\n FeatureFlagType,\n FeatureFlagVariableType,\n FeatureVariableResultType,\n GetFeatureFlagVariableParamsType,\n GetVisitorWarehouseAudienceParamsType,\n KameleoonVariationType,\n RemoteVisitorDataParamsType,\n TrackConversionParamsType,\n} from './types';\n\n/**\n * @interface an interface of KameleoonClient instance\n */\nexport interface IKameleoonClient {\n /**\n * @deprecated - this overload is deprecated and will be removed in the future, data caching is now done automatically\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 *\n * Triggered Events: `EventType.ConfigurationUpdate` (On each successful configuration update while using Real Time Update)\n *\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(): Promise<boolean>;\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 *\n * Triggered Events: `EventType.ConfigurationUpdate` (On each successful configuration update while using Real Time Update)\n *\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(): 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 *\n * Note: This method **doesn't send** tracking data\n *\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 *\n * Note: This method **doesn't send** tracking data\n * Triggered Events: `EventType.Evaluation` (For each feature flag evaluated)\n *\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 getActiveFeatureFlags - method collecting all active feature flags information including it's variation and variables for the visitor\n *\n * Note: This method **doesn't send** tracking data\n * Triggered Events: `EventType.Evaluation` (For each feature flag evaluated)\n *\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @returns {Map<string, KameleoonVariationType>} a map of feature flags with `featureKey` as a key and `KameleoonVariationType` as a value\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.JSONParse` - Couldn't parse JSON value\n * - `KameleoonException.NumberParse` - Couldn't parse Number value\n */\n getActiveFeatureFlags: (\n visitorCode: string,\n ) => Map<string, KameleoonVariationType>;\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 *\n * Note: This method **sends** tracking data\n * Triggered Events: `EventType.Evaluation`\n *\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 *\n * Note: This method **sends** tracking data\n * Triggered Events: `EventType.Evaluation`\n *\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.FeatureFlagEnvironmentDisabled` - The feature flag is disabled for the current environment\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 *\n * Note: This method **sends** tracking data\n * Triggered Events: `EventType.Evaluation`\n *\n * @param {GetFeatureFlagVariableParamsType} parameters - an object with parameters of a type `GetFeatureFlagVariableParamsType`, see the type for details.\n * @returns {FeatureFlagVariableType} a variable object containing `type` and `value` fields. You can check the `type` field against `VariableType` enum. For example, if the `type` is `VariableType.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.FeatureFlagEnvironmentDisabled` - The feature flag is disabled for the current environment\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) => FeatureFlagVariableType;\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 *\n * Note: This method **sends** tracking data\n * Triggered Events: `EventType.Evaluation`\n *\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 `key`, `type` and `value` fields. You can check the `type` field against `VariableType` enum. For example, if the `type` is `VariableType.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.FeatureFlagEnvironmentDisabled` - The feature flag is disabled for the current environment\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 onEvent - fires a callback on a specified Kameleoon `EventType`. Each event can only have one according callback.\n *\n * Note: SDK methods are marked with the `EventType` they trigger if any.\n *\n * @param {EventCallbackType<EventType>} callback - callback function with parameters that will be called upon event\n *\n * Parameter type depends on the `EventType` passed:\n * - `EventType.Evaluation` - `EvaluationEventDataType`\n * - `EventType.ConfigurationUpdate` - `ConfigurationUpdateEventDataType`\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 onEvent: <E extends EventType>(\n event: E,\n callback: EventCallbackType<E>,\n ) => void;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"applicationVersion.js","names":["ApplicationVersion","constructor","version","_defineProperty","status","TrackingStatus","Sent","url","data","type","KameleoonData","exports"],"sources":["../../src/kameleoonData/applicationVersion.ts"],"sourcesContent":["import { TrackingStatus } from 'src/types';\nimport {\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 public status: TrackingStatus;\n\n private version: string;\n\n /**\n * @param {string} version - version of mobile application\n * */\n constructor(version: string) {\n this.version = version;\n this.status = TrackingStatus.Sent;\n }\n\n get url(): string {\n return '';\n }\n\n get data(): ApplicationVersionDataType {\n return {\n version: this.version,\n type: KameleoonData.ApplicationVersion,\n status: this.status,\n };\n }\n}\n"],"mappings":"iqBAWO,KAAM,CAAAA,kBAA6C,CAQxDC,WAAWA,CAACC,CAAe,CAAE,CAAAC,eAAA,uBAAAA,eAAA,wBAC3B,IAAI,CAACD,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACE,MAAM,CAAGC,qBAAc,CAACC,IAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,CAChB,MAAO,EACT,CAEA,GAAI,CAAAC,IAAIA,CAAA,CAA+B,CACrC,MAAO,CACLN,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBO,IAAI,CAAEC,qBAAa,CAACV,kBAAkB,CACtCI,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CACF,CAACO,OAAA,CAAAX,kBAAA,CAAAA,kBAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","names":["Browser","constructor","browser","version","_defineProperty","status","TrackingStatus","Unsent","url","browserVersion","UrlParameter","BrowserVersion","UrlEventType","StaticData","BrowserIndex","BrowserIndexMap","data","type","KameleoonData","_fromRaw","browserType","_fromVisit","visit","staticDataEvent","browserIndex","BrowserTypeMap","exports"],"sources":["../../src/kameleoonData/browser.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n BrowserDataType,\n BrowserType,\n BrowserIndexMap,\n IKameleoonData,\n KameleoonData,\n BrowserTypeMap,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * Browser - a class for creating an instance for browser of a certain type\n * */\nexport class Browser implements IKameleoonData {\n public status: TrackingStatus;\n\n private browser: BrowserType;\n private version?: number;\n\n /**\n * @param {BrowserType} browser - one of the browser types available for data, if browser can not be found in a list, it can be marked as `BrowserType.Other`\n * @param {number | undefined} version - version of the browser, floating point number represents major and minor version of the browser\n * @example\n * ```ts\n * const browser = new Browser(BrowserType.Chrome, 86);\n * const browser = new Browser(BrowserType.Safari, 14.1);\n * ```\n * */\n constructor(browser: BrowserType, version?: number) {\n this.browser = browser;\n this.version = version;\n this.status = TrackingStatus.Unsent;\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.browser) {\n return '';\n }\n\n const browserVersion = this.version\n ? UrlParameter.BrowserVersion + this.version\n : '';\n\n return (\n UrlEventType.StaticData +\n UrlParameter.Browser +\n this.browser +\n UrlParameter.BrowserIndex +\n BrowserIndexMap[this.browser] +\n browserVersion\n );\n }\n\n get data(): BrowserDataType {\n return {\n browser: this.browser,\n type: KameleoonData.Browser,\n version: this.version,\n status: this.status,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a Browser instance from raw data\n * @param {BrowserDataType} data - a raw data\n * @return {Browser} a Browser instance\n * */\n public static _fromRaw(data: BrowserDataType): Browser {\n const { browser: browserType, version, status } = data;\n const browser = new Browser(browserType, version);\n\n browser.status = status;\n\n return browser;\n }\n\n /**\n * @private\n * @method _fromVisit - an internal method for creating an instance of Browser class from a visit\n * @param {VisitType} visit - a visit\n * @returns {Browser | undefined} an instance of Browser class or undefined if browser can not be found among visits\n * */\n public static _fromVisit(visit: VisitType): Browser | undefined {\n if (!visit.staticDataEvent) {\n return undefined;\n }\n\n const {\n browser: browserType,\n browserIndex,\n browserVersion,\n } = visit.staticDataEvent.data;\n\n if (browserType || typeof browserIndex === 'number') {\n const browser = browserType ?? BrowserTypeMap[browserIndex as number];\n\n if (browserVersion) {\n return new Browser(browser, browserVersion);\n } else {\n return new Browser(browser);\n }\n }\n\n return undefined;\n }\n}\n"],"mappings":"yrBAeO,KAAM,CAAAA,OAAkC,CAe7CC,WAAWA,CAACC,CAAoB,CAAEC,CAAgB,CAAE,CAAAC,eAAA,uBAAAA,eAAA,wBAAAA,eAAA,wBAClD,IAAI,CAACF,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,MAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,CAIhB,GAAI,CAAC,IAAI,CAACN,OAAO,CACf,MAAO,EAAE,CAGX,KAAM,CAAAO,CAAc,CAAG,IAAI,CAACN,OAAO,CAC/BO,uBAAY,CAACC,cAAc,CAAG,IAAI,CAACR,OAAO,CAC1C,EAAE,CAEN,MACE,CAAAS,uBAAY,CAACC,UAAU,CACvBH,uBAAY,CAACV,OAAO,CACpB,IAAI,CAACE,OAAO,CACZQ,uBAAY,CAACI,YAAY,CACzBC,sBAAe,CAAC,IAAI,CAACb,OAAO,CAAC,CAC7BO,CAEJ,CAEA,GAAI,CAAAO,IAAIA,CAAA,CAAoB,CAC1B,MAAO,CACLd,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBe,IAAI,CAAEC,oBAAa,CAAClB,OAAO,CAC3BG,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBE,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CAQA,MAAc,CAAAc,QAAQA,CAACH,CAAqB,CAAW,MAC/C,CAAEd,OAAO,CAAEkB,CAAW,CAAEjB,OAAO,CAAPA,CAAO,CAAEE,MAAM,CAANA,CAAO,CAAC,CAAGW,CAAI,CAChDd,CAAO,CAAG,GAAI,CAAAF,OAAO,CAACoB,CAAW,CAAEjB,CAAO,CAAC,CAIjD,MAFA,CAAAD,CAAO,CAACG,MAAM,CAAGA,CAAM,CAEhBH,CACT,CAQA,MAAc,CAAAmB,UAAUA,CAACC,CAAgB,CAAuB,CAC9D,GAAKA,CAAK,CAACC,eAAe,EAI1B,KAAM,CACJrB,OAAO,CAAEkB,CAAW,CACpBI,YAAY,CAAZA,CAAY,CACZf,cAAc,CAAdA,CACF,CAAC,CAAGa,CAAK,CAACC,eAAe,CAACP,IAAI,CAE9B,GAAII,CAAW,EAA4B,QAAQ,EAAhC,MAAO,CAAAI,CAAyB,CAAE,CACnD,KAAM,CAAAtB,CAAO,CAAGkB,CAAW,EAAIK,qBAAc,CAACD,CAAY,CAAW,CAAC,MAElE,CAAAf,CAAc,CACT,GAAI,CAAAT,OAAO,CAACE,CAAO,CAAEO,CAAc,CAAC,CAEpC,GAAI,CAAAT,OAAO,CAACE,CAAO,CAE9B,CAAC,CAGH,CACF,CAACwB,OAAA,CAAA1B,OAAA,CAAAA,OAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.js","names":["Conversion","constructor","a","goalId","revenue","negative","_defineProperty","status","TrackingStatus","Unsent","id","Math","floor","random","_id","_nonce","nonce","url","UrlEventType","UrlParameter","GoalId","Revenue","Negative","data","type","KameleoonData","_fromRaw","conversion","_listFromVisit","visit","b","c","conversions","conversionEvents","length","conversionEvent","Sent","push","_updateFromVisit","dataMap","has","set","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';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * Conversion - a class for creating an instance for conversion tracking\n * */\nexport class Conversion implements IKameleoonData {\n public status: TrackingStatus;\n\n private goalId: number;\n private revenue: number;\n private negative: boolean;\n private id: number;\n private nonce: string | undefined;\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.status = TrackingStatus.Unsent;\n this.id = Math.floor(Math.random() * 1_000_000);\n }\n\n set _id(id: number) {\n this.id = id;\n }\n\n set _nonce(nonce: string) {\n this.nonce = nonce;\n }\n\n get url(): string {\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 get data(): ConversionDataType {\n return {\n goalId: this.goalId,\n nonce: this.nonce,\n revenue: this.revenue,\n negative: this.negative,\n type: KameleoonData.Conversion,\n status: this.status,\n id: this.id,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a Conversion instance from raw data\n * @param {ConversionDataType} data - a raw data\n * @return {Conversion} a Conversion instance\n * */\n public static _fromRaw(data: ConversionDataType): Conversion {\n const { goalId, revenue, negative, status, id, nonce } = data;\n const conversion = new Conversion({ goalId, revenue, negative });\n\n conversion._id = id;\n conversion.status = status;\n\n if (nonce) {\n conversion._nonce = nonce;\n }\n\n return conversion;\n }\n\n /**\n * @private\n * @method _listFromVisit - an internal method for returning a list of all Conversion instances\n * @param {VisitType} visit - a visits\n * @return {Conversion[]} - a list of Conversion instances\n * */\n public static _listFromVisit(visit: VisitType): Conversion[] {\n const conversions: Conversion[] = [];\n\n if (!visit.conversionEvents?.length) {\n return [];\n }\n\n if (visit.conversionEvents?.length) {\n for (const conversionEvent of visit.conversionEvents) {\n const { goalId, revenue, negative } = conversionEvent.data;\n const conversion = new Conversion({ goalId, revenue, negative });\n\n // --- Note ---\n // Conversion is marked as sent, so the visitor won't be converted again just\n // by pulling visits data\n conversion.status = TrackingStatus.Sent;\n conversions.push(conversion);\n }\n }\n\n return conversions;\n }\n\n /**\n * @private\n * @method _updateFromVisit - an internal method for updating a list of Conversion instances with only goalId\n * @param {VisitType} visit - a visits\n * @param {Map<number, Conversion>} dataMap - a map of Conversion instances\n * */\n public static _updateFromVisit(\n visit: VisitType,\n dataMap: Map<number, Conversion>,\n ): void {\n if (visit.conversionEvents?.length) {\n for (const conversionEvent of visit.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 (!dataMap.has(goalId)) {\n const conversion = new Conversion({ goalId });\n\n conversion.status = TrackingStatus.Sent;\n dataMap.set(goalId, conversion);\n }\n }\n }\n }\n}\n"],"mappings":"4rBAaO,KAAM,CAAAA,UAAqC,CAYhDC,WAAWA,CAAAC,CAAA,CAIkB,IAJjB,CACVC,MAAM,CAANA,CAAM,CACNC,OAAO,CAAPA,CAAO,CAAG,CAAC,CACXC,QAAQ,CAARA,CAAQ,GACgB,CAAC,CAAAH,CAAA,CAAAI,eAAA,uBAAAA,eAAA,uBAAAA,eAAA,wBAAAA,eAAA,yBAAAA,eAAA,mBAAAA,eAAA,sBACzB,IAAI,CAACH,MAAM,CAAGA,CAAM,CACpB,IAAI,CAACC,OAAO,CAAGA,CAAO,CACtB,IAAI,CAACC,QAAQ,CAAGA,CAAQ,CACxB,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,MAAM,CACnC,IAAI,CAACC,EAAE,CAAGC,IAAI,CAACC,KAAK,CAAiB,GAAS,CAAzBD,IAAI,CAACE,MAAM,CAAC,CAAa,CAChD,CAEA,GAAI,CAAAC,GAAGA,CAACJ,CAAU,CAAE,CAClB,IAAI,CAACA,EAAE,CAAGA,CACZ,CAEA,GAAI,CAAAK,MAAMA,CAACC,CAAa,CAAE,CACxB,IAAI,CAACA,KAAK,CAAGA,CACf,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,CAChB,MACE,CAAAC,uBAAY,CAAClB,UAAU,CACvBmB,uBAAY,CAACC,MAAM,EACZ,IAAI,CAACjB,MAAM,IAAC,CACnBgB,uBAAY,CAACE,OAAO,EACb,IAAI,CAACjB,OAAO,IAAC,CACpBe,uBAAY,CAACG,QAAQ,EACd,IAAI,CAACjB,QAAQ,IAExB,CAEA,GAAI,CAAAkB,IAAIA,CAAA,CAAuB,CAC7B,MAAO,CACLpB,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBa,KAAK,CAAE,IAAI,CAACA,KAAK,CACjBZ,OAAO,CAAE,IAAI,CAACA,OAAO,CACrBC,QAAQ,CAAE,IAAI,CAACA,QAAQ,CACvBmB,IAAI,CAAEC,oBAAa,CAACzB,UAAU,CAC9BO,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBG,EAAE,CAAE,IAAI,CAACA,EACX,CACF,CAQA,MAAc,CAAAgB,QAAQA,CAACH,CAAwB,CAAc,MACrD,CAAEpB,MAAM,CAANA,CAAM,CAAEC,OAAO,CAAPA,CAAO,CAAEC,QAAQ,CAARA,CAAQ,CAAEE,MAAM,CAANA,CAAM,CAAEG,EAAE,CAAFA,CAAE,CAAEM,KAAK,CAALA,CAAM,CAAC,CAAGO,CAAI,CACvDI,CAAU,CAAG,GAAI,CAAA3B,UAAU,CAAC,CAAEG,MAAM,CAANA,CAAM,CAAEC,OAAO,CAAPA,CAAO,CAAEC,QAAQ,CAARA,CAAS,CAAC,CAAC,CAShE,MAPA,CAAAsB,CAAU,CAACb,GAAG,CAAGJ,CAAE,CACnBiB,CAAU,CAACpB,MAAM,CAAGA,CAAM,CAEtBS,CAAK,GACPW,CAAU,CAACZ,MAAM,CAAGC,CAAK,EAGpBW,CACT,CAQA,MAAc,CAAAC,cAAcA,CAACC,CAAgB,CAAgB,KAAAC,CAAA,CAAAC,CAAA,CAC3D,KAAM,CAAAC,CAAyB,CAAG,EAAE,CAEpC,GAAI,UAAAF,CAAA,CAACD,CAAK,CAACI,gBAAgB,YAAAH,CAAA,EAAtBA,CAAA,CAAwBI,MAAM,EACjC,MAAO,EAAE,CAGX,WAAAH,CAAA,CAAIF,CAAK,CAACI,gBAAgB,YAAAF,CAAA,EAAtBA,CAAA,CAAwBG,MAAM,CAChC,IAAK,KAAM,CAAAC,CAAe,GAAI,CAAAN,CAAK,CAACI,gBAAgB,CAAE,MAC9C,CAAE9B,MAAM,CAANA,CAAM,CAAEC,OAAO,CAAPA,CAAO,CAAEC,QAAQ,CAARA,CAAS,CAAC,CAAG8B,CAAe,CAACZ,IAAI,CACpDI,CAAU,CAAG,GAAI,CAAA3B,UAAU,CAAC,CAAEG,MAAM,CAANA,CAAM,CAAEC,OAAO,CAAPA,CAAO,CAAEC,QAAQ,CAARA,CAAS,CAAC,CAAC,CAKhEsB,CAAU,CAACpB,MAAM,CAAGC,sBAAc,CAAC4B,IAAI,CACvCJ,CAAW,CAACK,IAAI,CAACV,CAAU,CAC7B,CAGF,MAAO,CAAAK,CACT,CAQA,MAAc,CAAAM,gBAAgBA,CAC5BT,CAAgB,CAChBU,CAAgC,CAC1B,KAAAR,CAAA,CACN,WAAAA,CAAA,CAAIF,CAAK,CAACI,gBAAgB,YAAAF,CAAA,EAAtBA,CAAA,CAAwBG,MAAM,CAChC,IAAK,KAAM,CAAAC,CAAe,GAAI,CAAAN,CAAK,CAACI,gBAAgB,CAAE,CACpD,KAAM,CAAE9B,MAAM,CAANA,CAAO,CAAC,CAAGgC,CAAe,CAACZ,IAAI,CAQvC,GAAI,CAACgB,CAAO,CAACC,GAAG,CAACrC,CAAM,CAAC,CAAE,CACxB,KAAM,CAAAwB,CAAU,CAAG,GAAI,CAAA3B,UAAU,CAAC,CAAEG,MAAM,CAANA,CAAO,CAAC,CAAC,CAE7CwB,CAAU,CAACpB,MAAM,CAAGC,sBAAc,CAAC4B,IAAI,CACvCG,CAAO,CAACE,GAAG,CAACtC,CAAM,CAAEwB,CAAU,CAChC,CACF,CAEJ,CACF,CAACe,OAAA,CAAA1C,UAAA,CAAAA,UAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cookie.js","names":["Cookie","constructor","cookie","_defineProperty","status","TrackingStatus","Sent","fromString","cookieString","KameleoonError","KameleoonException","CookieParse","pairs","split","map","item","key","value","trim","url","data","type","KameleoonData","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';\nimport { TrackingStatus } from 'src/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 public status: TrackingStatus;\n\n private cookie: CookieType[];\n\n /**\n * @param {CookieType[]} cookie - a list of cookies\n * */\n constructor(cookie: CookieType[]) {\n this.cookie = cookie;\n this.status = TrackingStatus.Sent;\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 get url(): string {\n return '';\n }\n\n get data(): CookieDataType {\n return {\n cookie: this.cookie,\n type: KameleoonData.Cookie,\n status: this.status,\n };\n }\n}\n"],"mappings":"ksBAaO,KAAM,CAAAA,MAAiC,CAQ5CC,WAAWA,CAACC,CAAoB,CAAE,CAAAC,eAAA,uBAAAA,eAAA,uBAChC,IAAI,CAACD,MAAM,CAAGA,CAAM,CACpB,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,IAC/B,CAQA,MAAO,CAAAC,UAAUA,CAACC,CAAoB,CAAU,CAC9C,GAAI,CAACA,CAAY,CACf,KAAM,IAAI,CAAAC,8BAAc,CACtBC,kCAAkB,CAACC,WAAW,CAC9B,8BACF,CAAC,CACF,KAEK,CAAAC,CAAK,CAAGJ,CAAY,CAACK,KAAK,CAAC,GAAG,CAAC,CAE/BX,CAAM,CAAGU,CAAK,CAACE,GAAG,CAAEC,CAAI,EAAK,CACjC,KAAM,CAACC,CAAG,CAAEC,CAAK,CAAC,CAAGF,CAAI,CAACG,IAAI,CAAC,CAAC,CAACL,KAAK,CAAC,GAAG,CAAC,CAE3C,GAAI,CAACG,CAAG,EAAI,CAACC,CAAK,CAChB,KAAM,IAAI,CAAAR,8BAAc,CACtBC,kCAAkB,CAACC,WAAW,CAC9B,4BACF,CAAC,CAGH,MAAO,CAAEK,GAAG,CAAHA,CAAG,CAAEC,KAAK,CAALA,CAAM,CACtB,CAAC,CAAC,CAEF,MAAO,IAAI,CAAAjB,MAAM,CAACE,CAAM,CAC1B,CAEA,GAAI,CAAAiB,GAAGA,CAAA,CAAW,CAChB,MAAO,EACT,CAEA,GAAI,CAAAC,IAAIA,CAAA,CAAmB,CACzB,MAAO,CACLlB,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBmB,IAAI,CAAEC,oBAAa,CAACtB,MAAM,CAC1BI,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CACF,CAACmB,OAAA,CAAAvB,MAAA,CAAAA,MAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"customData.js","names":["CustomData","constructor","index","_defineProperty","b","arguments","length","value","Array","d","_status","TrackingStatus","Unsent","isIdentifier","url","uniqueValues","Set","resultValue","forEach","Object","keys","identifierParameter","UrlParameter","MappingIdentifier","UrlEventType","Index","ValuesCountMap","encodeURIComponent","JSON","stringify","Overwrite","data","type","KameleoonData","status","_isMappingIdentifier","_fromRaw","customData","_updateFromVisit","visit","dataMap","c","customDataEvents","i","valuesCountMap","has","set","exports"],"sources":["../../src/kameleoonData/customData.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport { CustomDataType, IKameleoonData, KameleoonData } from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * CustomData - a class for creating an instance for user's custom data\n * */\nexport class CustomData implements IKameleoonData {\n private _status: TrackingStatus;\n private index: number;\n private value: string[];\n private isIdentifier: boolean;\n\n /**\n * @param {number} index - an index of custom data to be stored under in a state, an index of custom data can be specified in `Advanced Tools` section of Kameleoon Application\n * @param {string[]} value - custom value to store under the specified id, value can be anything but has to be stringified to match the `string` type. *Note* value is variadic parameter and can be used as follows\n * @example\n * ```ts\n * // - Single value\n * const customData = new CustomData(0, 'value_1');\n * // - Variadic number of values\n * const customData = new CustomData(0, 'value_1', 'value_2', 'value_3');\n * // - Array of values\n * const values = ['value_1', 'value_2', 'value_3'];\n * const customData = new CustomData(0, ...values);\n * ```\n * */\n constructor(index: number, ...value: string[]) {\n this.index = index;\n this.value = value;\n this._status = TrackingStatus.Unsent;\n this.isIdentifier = false;\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (typeof this.index !== 'number') {\n return '';\n }\n\n const uniqueValues = [...new Set(this.value)];\n let resultValue: Record<string, 1> = {};\n\n // --- Note ---\n // Final value should look like this `{ \"value_1\": 1, \"value_2\": 1, \"value_3\": 1}`\n // With no duplicates\n uniqueValues.forEach((value) => {\n resultValue[value] = 1;\n });\n\n if (!Object.keys(resultValue).length) {\n return '';\n }\n\n let identifierParameter = '';\n\n if (this.isIdentifier) {\n identifierParameter = UrlParameter.MappingIdentifier + String(true);\n }\n\n return (\n UrlEventType.CustomData +\n UrlParameter.Index +\n this.index +\n UrlParameter.ValuesCountMap +\n encodeURIComponent(JSON.stringify(resultValue)) +\n UrlParameter.Overwrite +\n String(true) +\n identifierParameter\n );\n }\n\n get data(): CustomDataType {\n return {\n index: this.index,\n value: this.value,\n type: KameleoonData.CustomData,\n isIdentifier: this.isIdentifier,\n status: this.status,\n };\n }\n\n get status(): TrackingStatus {\n if (this._isMappingIdentifier) {\n return TrackingStatus.Unsent;\n }\n\n return this._status;\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a CustomData instance from raw data\n * @param {CustomDataType} data - a raw data\n * @return {CustomData} a CustomData instance\n * */\n public static _fromRaw(data: CustomDataType): CustomData {\n const { index, value, status, isIdentifier } = data;\n const customData = new CustomData(index, ...value);\n\n customData.status = status;\n customData._isMappingIdentifier = isIdentifier;\n\n return customData;\n }\n\n /**\n * @property isMappingIdentifier - signifying if the data is a mapping identifier\n * @private\n * */\n set _isMappingIdentifier(value: boolean) {\n this.isIdentifier = value;\n }\n\n set status(status: TrackingStatus) {\n this._status = status;\n }\n\n /**\n * @private\n * @method _updateFromVisit - an internal method for updating a list of custom data from a visit\n * @param {VisitType} visit - a visit\n * */\n public static _updateFromVisit(\n visit: VisitType,\n dataMap: Map<number, CustomData>,\n ): void {\n if (visit.customDataEvents?.length) {\n for (let i = visit.customDataEvents.length - 1; i >= 0; i--) {\n const { index, valuesCountMap } = visit.customDataEvents[i].data;\n\n if (!dataMap.has(index)) {\n dataMap.set(\n index,\n new CustomData(index, ...Object.keys(valuesCountMap)),\n );\n }\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataManager.js","names":["DataManager","constructor","a","dataStorage","infoStorage","cleanupInterval","_defineProperty","Map","Set","dataProcessor","DataProcessor","cleanupCallback","cleanupData","cleanupIntervalId","setInterval","err","clearInterval","getUnsentData","visitorCode","infoResult","read","ok","infoData","data","targetingData","getVisitorData","unsentData","unsentDataKeys","isNextVisit","nextVisitTime","Date","now","filter","status","key","cdIndex","persistentCustomDataIndexes","has","includes","TrackingStatus","Unsent","VISIT_DURATION","write","getDataFromRaw","getPendingData","Pending","resultData","Object","entries","KameleoonData","CustomData","customData","values","index","customDataItem","_fromRaw","push","Conversion","conversion","PageView","pageView","pageViewItem","GeolocationData","geolocationData","geolocationItem","Browser","browserData","browserItem","Device","deviceData","deviceItem","OperatingSystem","osData","osItem","storeTrackedData","storeData","kameleoonData","forEach","b","type","delete","hasPersistentCustomData","some","mappingIdentifierCustomDataIndex","add","Array","from","length","firstParameter","result","f","arguments","secondParameter","h","mutUpdateTargetingData","getTree","segment","targetingTrees","id","get","targetingTree","Tree","set","clearTrees","clear","isPersistentCustomData","dataItem","size","Utilities","isCustomData","isUniqueIdentifier","uniqueIdentifier","UniqueIdentifier","value","getVisitorIdentifier","customDataValue","isIdentifier","storageData","visitorReference","dereferenceData","getVisitorStoredDataTypes","keys","getLinkedVisitor","visitorData","processCustomData","mutData","expirationTime","mutUpdateData","nextCleanup","nextDataCleanup","mutAddUnsentData","dataType","nextCleanupTime","mutCleanupData","isDataValid","_isMappingIdentifier","createReference","linkedVisitor","localCustomDataIndexes","Sent","unsentDataVisitors","identifierCustomDataIndex","trees","storedCustomDataIndexes","indexes","customDataIndexes","customDataLocalOnlyIndexes","localOnly","scope","CustomDataScope","Visitor","find","isMappingIdentifier","exports"],"sources":["../../src/kameleoonData/dataManager.ts"],"sourcesContent":["import { Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { SegmentType, TargetingDataType, Tree } from 'src/targeting';\nimport { DataProcessor } from './dataProcessor';\nimport { CustomData } from './customData';\nimport {\n BrowserDataType,\n CustomDataType,\n DataFilterType,\n DataManagerParametersType,\n DeviceDataType,\n GeolocationDataType,\n KameleoonData,\n KameleoonDataType,\n KameleoonVisitorDataType,\n MutUpdateTargetingDataParametersType,\n OperatingSystemDataType,\n PageViewDataType,\n ProcessCustomDataManagerParametersType,\n VisitorsDataType,\n} from './types';\nimport { IStorage, VISIT_DURATION } from 'src/storage';\nimport {\n CustomDataConfigurationType,\n CustomDataScope,\n} from 'src/clientConfiguration';\nimport { Utilities } from 'src/utilities';\nimport { DataInfoType } from 'src/storage/types';\nimport { Conversion } from './conversion';\nimport { PageView } from './pageView';\nimport { Browser } from './browser';\nimport { Device } from './device';\nimport { GeolocationData } from './geolocation';\nimport { TrackingStatus } from 'src/types';\nimport { OperatingSystem } from './operatingSystem';\n\ninterface IDataManager {\n storeData(data: VisitorsDataType): Result<void, KameleoonError>;\n storeTrackedData(data: VisitorsDataType): void;\n getTree(segment: SegmentType): Tree;\n clearTrees(): void;\n isPersistentCustomData(dataItem: KameleoonDataType): dataItem is CustomData;\n isUniqueIdentifier(visitorCode: string): boolean;\n getLinkedVisitor(visitorCode: string, index: number | null): string | null;\n getVisitorData(visitorCode: string): KameleoonVisitorDataType | undefined;\n getVisitorIdentifier(visitorCode: string): string;\n getPendingData(visitorCode: string): KameleoonDataType[];\n getUnsentData(visitorCode: string): KameleoonDataType[];\n getVisitorStoredDataTypes(visitorCode: string): Set<KameleoonData>;\n readonly identifierCustomDataIndex: number | null;\n readonly storedCustomDataIndexes: Set<number>;\n readonly trees: Map<string, Tree>;\n readonly unsentDataVisitors: string[];\n}\n\nexport class DataManager implements IDataManager {\n private dataStorage: IStorage<TargetingDataType>;\n private infoStorage: IStorage<DataInfoType>;\n private dataProcessor: DataProcessor;\n private targetingTrees: Map<string, Tree> = new Map();\n private mappingIdentifierCustomDataIndex: number | null = null;\n private persistentCustomDataIndexes: Set<number> = new Set();\n private localCustomDataIndexes: Set<number> = new Set();\n private cleanupIntervalId: NodeJS.Timeout | null = null;\n\n constructor({\n dataStorage,\n infoStorage,\n cleanupInterval,\n }: DataManagerParametersType) {\n this.dataStorage = dataStorage;\n this.infoStorage = infoStorage;\n this.dataProcessor = new DataProcessor(cleanupInterval);\n\n if (cleanupInterval) {\n const cleanupCallback = () => {\n this.cleanupData();\n };\n\n // --- Note ---\n // We can not make delayed code execution recoverable, as it might lead\n // to targeting data storage size overflow\n try {\n this.cleanupIntervalId = setInterval(cleanupCallback, cleanupInterval);\n } catch (err) {\n if (this.cleanupIntervalId) {\n clearInterval(this.cleanupIntervalId);\n }\n\n throw err;\n }\n }\n }\n\n public getUnsentData(visitorCode: string): KameleoonDataType[] {\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return [];\n }\n\n const infoData = infoResult.data;\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!infoData.unsentData[visitorCode] || !targetingData) {\n return [];\n }\n\n const unsentDataKeys = infoData.unsentData[visitorCode];\n const isNextVisit = infoData.nextVisitTime <= Date.now();\n\n const filter: DataFilterType = ({ status, key, cdIndex }) => {\n if (typeof cdIndex === 'number') {\n // --- Note ---\n // Persistent CustomData is mandatory for sending each time\n // but only once per visit\n if (this.persistentCustomDataIndexes.has(cdIndex) && isNextVisit) {\n return true;\n }\n }\n\n return unsentDataKeys.includes(key) && status === TrackingStatus.Unsent;\n };\n\n if (isNextVisit) {\n infoData.nextVisitTime = Date.now() + VISIT_DURATION;\n this.infoStorage.write(infoData);\n }\n\n return this.getDataFromRaw(targetingData, filter);\n }\n\n public getPendingData(visitorCode: string): KameleoonDataType[] {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return [];\n }\n\n const filter: DataFilterType = ({ status }) =>\n status === TrackingStatus.Pending;\n\n return this.getDataFromRaw(targetingData, filter);\n }\n\n private getDataFromRaw(\n targetingData: KameleoonVisitorDataType,\n filter: DataFilterType,\n ): KameleoonDataType[] {\n const resultData: KameleoonDataType[] = [];\n\n for (const [key, data] of Object.entries(targetingData)) {\n if (!data) {\n continue;\n }\n\n switch (key) {\n case KameleoonData.CustomData: {\n for (const customData of Object.values(data)) {\n if (!customData) {\n continue;\n }\n\n const { status, index } = customData;\n\n if (filter({ status, key, cdIndex: index })) {\n const customDataItem = CustomData._fromRaw(customData);\n resultData.push(customDataItem);\n }\n }\n\n break;\n }\n case KameleoonData.Conversion: {\n for (const conversion of Object.values(data)) {\n if (!conversion) {\n continue;\n }\n\n if (filter({ status: conversion.status, key })) {\n const customDataItem = Conversion._fromRaw(conversion);\n resultData.push(customDataItem);\n }\n }\n\n break;\n }\n case KameleoonData.PageView: {\n const pageViewData = data as { [key: string]: PageViewDataType };\n\n for (const pageView of Object.values(pageViewData)) {\n if (filter({ status: pageView.status, key })) {\n const pageViewItem = PageView._fromRaw(pageView);\n resultData.push(pageViewItem);\n }\n }\n\n break;\n }\n case KameleoonData.GeolocationData: {\n const geolocationData = data as GeolocationDataType;\n\n if (!data) {\n continue;\n }\n\n if (filter({ status: geolocationData.status, key })) {\n const geolocationItem = GeolocationData._fromRaw(geolocationData);\n resultData.push(geolocationItem);\n }\n\n break;\n }\n case KameleoonData.Browser: {\n const browserData = data as BrowserDataType;\n\n if (filter({ status: browserData.status, key })) {\n const browserItem = Browser._fromRaw(browserData);\n resultData.push(browserItem);\n }\n\n break;\n }\n case KameleoonData.Device: {\n const deviceData = data as DeviceDataType;\n\n if (filter({ status: deviceData.status, key })) {\n const deviceItem = Device._fromRaw(deviceData);\n resultData.push(deviceItem);\n }\n\n break;\n }\n case KameleoonData.OperatingSystem: {\n const osData = data as OperatingSystemDataType;\n\n if (filter({ status: osData.status, key })) {\n const osItem = OperatingSystem._fromRaw(osData);\n resultData.push(osItem);\n }\n }\n }\n }\n\n return resultData;\n }\n\n public storeTrackedData(data: VisitorsDataType): void {\n this.storeData(data);\n\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return;\n }\n\n const unsentData = infoResult.data.unsentData;\n\n for (const [visitorCode, kameleoonData] of Object.entries(data)) {\n if (!unsentData[visitorCode]) {\n return;\n }\n\n const unsentDataKeys = new Set(unsentData[visitorCode]);\n\n kameleoonData.forEach(({ data }) => {\n if (unsentDataKeys.has(data.type)) {\n unsentDataKeys.delete(data.type);\n }\n });\n\n const hasPersistentCustomData = kameleoonData.some(({ data }) => {\n if (data.type !== KameleoonData.CustomData) {\n return false;\n }\n\n const { index } = data as CustomDataType;\n\n return (\n this.persistentCustomDataIndexes.has(index) ||\n this.mappingIdentifierCustomDataIndex === index\n );\n });\n\n if (hasPersistentCustomData) {\n unsentDataKeys.add(KameleoonData.CustomData);\n }\n\n unsentData[visitorCode] = Array.from(unsentDataKeys);\n\n if (!unsentData[visitorCode].length) {\n delete unsentData[visitorCode];\n }\n }\n\n this.infoStorage.write(infoResult.data);\n }\n\n public storeData(data: VisitorsDataType): Result<void, KameleoonError>;\n public storeData(\n visitorCode: string,\n ...data: KameleoonDataType[]\n ): Result<void, KameleoonError>;\n public storeData(\n firstParameter: VisitorsDataType | string,\n ...secondParameter: KameleoonDataType[]\n ): Result<void, KameleoonError> {\n const result = this.dataStorage.read();\n const infoResult = this.infoStorage.read();\n\n if (!result.ok) {\n return result;\n }\n\n if (!infoResult.ok) {\n return infoResult;\n }\n\n const targetingData = result.data;\n const infoData = infoResult.data;\n\n if (typeof firstParameter === 'string') {\n this.mutUpdateTargetingData({\n infoData,\n targetingData,\n visitorCode: firstParameter,\n kameleoonData: secondParameter!,\n });\n } else {\n for (const [visitorCode, kameleoonData] of Object.entries(\n firstParameter,\n )) {\n this.mutUpdateTargetingData({\n infoData,\n targetingData,\n visitorCode,\n kameleoonData,\n });\n }\n }\n\n this.cleanupData();\n this.infoStorage.write(infoResult.data);\n\n return this.dataStorage.write(targetingData);\n }\n\n public getTree(segment: SegmentType): Tree {\n if (this.targetingTrees.has(segment.id)) {\n return this.targetingTrees.get(segment.id)!;\n }\n\n const targetingTree = new Tree(segment);\n this.targetingTrees.set(segment.id, targetingTree);\n\n return targetingTree;\n }\n\n public clearTrees(): void {\n this.targetingTrees.clear();\n }\n\n public isPersistentCustomData(\n dataItem: KameleoonDataType,\n ): dataItem is CustomData {\n if (!this.persistentCustomDataIndexes.size) {\n return false;\n }\n\n if (Utilities.isCustomData(dataItem)) {\n return this.persistentCustomDataIndexes.has(dataItem.data.index);\n }\n\n return false;\n }\n\n public isUniqueIdentifier(visitorCode: string): boolean {\n const targetingData = this.getVisitorData(visitorCode);\n const uniqueIdentifier = targetingData?.[KameleoonData.UniqueIdentifier];\n\n return uniqueIdentifier?.value ?? false;\n }\n\n public getVisitorIdentifier(visitorCode: string): string {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return visitorCode;\n }\n\n const customData = targetingData[KameleoonData.CustomData];\n\n if (!customData || this.mappingIdentifierCustomDataIndex === null) {\n return visitorCode;\n }\n\n const customDataValue = customData[this.mappingIdentifierCustomDataIndex];\n\n if (customDataValue && customDataValue.isIdentifier) {\n return customDataValue.value[0];\n }\n\n return visitorCode;\n }\n\n public getVisitorData(\n visitorCode: string,\n ): KameleoonVisitorDataType | undefined {\n this.cleanupData();\n\n const storageData = this.dataStorage.read();\n\n if (!storageData.ok) {\n return undefined;\n }\n\n const { visitorReference, data } = this.dataProcessor.dereferenceData(\n storageData.data,\n visitorCode,\n );\n\n return data[visitorReference];\n }\n\n public getVisitorStoredDataTypes(visitorCode: string): Set<KameleoonData> {\n const targetingData = this.getVisitorData(visitorCode);\n\n if (!targetingData) {\n return new Set();\n }\n\n return new Set(Object.keys(targetingData) as KameleoonData[]);\n }\n\n public getLinkedVisitor(visitorCode: string): string | null {\n const storageData = this.dataStorage.read();\n\n if (!storageData.ok) {\n return null;\n }\n\n if (typeof storageData.data[visitorCode] === 'string') {\n return storageData.data[visitorCode] as string;\n }\n\n if (this.mappingIdentifierCustomDataIndex === null) {\n return null;\n }\n\n const visitorData = storageData.data[\n visitorCode\n ] as KameleoonVisitorDataType;\n\n if (!visitorData) {\n return null;\n }\n\n const customData = visitorData[KameleoonData.CustomData];\n\n if (customData && customData[this.mappingIdentifierCustomDataIndex]) {\n return (\n customData[this.mappingIdentifierCustomDataIndex] as CustomDataType\n ).value[0];\n }\n\n return null;\n }\n\n private mutUpdateTargetingData({\n infoData,\n visitorCode,\n kameleoonData,\n targetingData,\n }: MutUpdateTargetingDataParametersType) {\n for (const dataItem of kameleoonData) {\n if (dataItem.data.type === KameleoonData.CustomData) {\n this.processCustomData({\n customData: dataItem as CustomData,\n mutData: targetingData,\n visitorCode,\n });\n }\n\n const expirationTime = this.dataProcessor.mutUpdateData({\n visitorCode,\n mutData: targetingData,\n dataItem,\n });\n\n const nextCleanup = infoData.nextDataCleanup;\n\n if (!nextCleanup || (nextCleanup && expirationTime < nextCleanup)) {\n infoData.nextDataCleanup = expirationTime;\n }\n\n if (dataItem.data.status === TrackingStatus.Unsent) {\n this.dataProcessor.mutAddUnsentData({\n mutData: infoData,\n visitorCode,\n dataType: dataItem.data.type,\n });\n }\n }\n }\n\n private cleanupData(): void {\n const result = this.dataStorage.read();\n const infoResult = this.infoStorage.read();\n\n if (!result.ok || !infoResult.ok) {\n return;\n }\n\n const data = result.data;\n const infoData = infoResult.data;\n\n const nextCleanup = infoData.nextDataCleanup;\n\n if (nextCleanup && nextCleanup < Date.now()) {\n const nextCleanupTime = this.dataProcessor.mutCleanupData(data);\n\n infoData.nextDataCleanup = nextCleanupTime || undefined;\n\n this.infoStorage.write(infoData);\n this.dataStorage.write(data);\n }\n }\n\n private processCustomData({\n mutData,\n customData,\n visitorCode,\n }: ProcessCustomDataManagerParametersType): void {\n const { data } = customData;\n\n const isDataValid = Boolean(data.value.length && data.value[0].length);\n\n if (this.mappingIdentifierCustomDataIndex === data.index && isDataValid) {\n customData._isMappingIdentifier = true;\n\n if (visitorCode !== data.value[0]) {\n // --- Note ---\n // Associate linked visitor codes\n this.dataProcessor.createReference({\n mutData,\n visitorCode,\n linkedVisitor: data.value[0],\n });\n }\n }\n\n if (this.localCustomDataIndexes.has(data.index)) {\n customData.status = TrackingStatus.Sent;\n }\n }\n\n get unsentDataVisitors(): string[] {\n const infoResult = this.infoStorage.read();\n\n if (!infoResult.ok) {\n return [];\n }\n\n return Object.keys(infoResult.data.unsentData);\n }\n\n get identifierCustomDataIndex(): number | null {\n return this.mappingIdentifierCustomDataIndex;\n }\n\n get trees(): Map<string, Tree> {\n return this.targetingTrees;\n }\n\n get storedCustomDataIndexes(): Set<number> {\n const result = this.dataStorage.read();\n\n if (!result.ok) {\n return new Set();\n }\n\n const targetingData = result.data;\n\n if (!(KameleoonData.CustomData in targetingData)) {\n return new Set();\n }\n\n const indexes = new Set<number>();\n\n for (const index in Object.keys(targetingData[KameleoonData.CustomData])) {\n indexes.add(Number(index));\n }\n\n return indexes;\n }\n\n set customDataIndexes(customData: CustomDataConfigurationType[]) {\n const [customDataLocalOnlyIndexes, persistentCustomDataIndexes]: Array<\n number[]\n > = [[], []];\n\n customData.forEach((customData) => {\n if (customData.localOnly) {\n customDataLocalOnlyIndexes.push(customData.index);\n }\n\n if (customData.scope === CustomDataScope.Visitor) {\n persistentCustomDataIndexes.push(customData.index);\n }\n });\n\n this.mappingIdentifierCustomDataIndex =\n customData.find((customData) => customData.isMappingIdentifier)?.index ||\n null;\n\n this.localCustomDataIndexes = new Set(customDataLocalOnlyIndexes);\n this.persistentCustomDataIndexes = new Set(persistentCustomDataIndexes);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataProcessor.js","names":["DataProcessor","constructor","cleanupInterval","arguments","length","_defineProperty","mutUpdateData","a","visitorCode","mutData","dataItem","visitorReference","data","dereferenceData","expirationTime","Date","now","type","KameleoonData","CustomData","updateCustomData","customData","PageView","updatePageView","pageView","Conversion","updateConversion","conversion","VisitsData","updateVisitsData","visitsData","updateCommonData","commonData","mutCleanupData","nextCleanupTime","Object","entries","removeReference","linkedVisitor","closestCleanupTime","key","keys","dataKey","time","deleteNestedExpiredField","deleteExpiredField","mutAddUnsentData","dataType","unsentData","set","Set","add","Array","from","createReference","isExist","urlAddress","parameters","nestedKey","value","existingData","existingTimestamps","timestamps","existingTimestamp","existingTime","some","index","findIndex","push","splice","updateNestedField","createNestedField","toString","id","existingVisits","visits","forEach","visit","Utilities","insertInOrderedListMutably","list","element","order","Order","Ascending","updateField","_objectSpread","createField","isExpired","b","exports"],"sources":["../../src/kameleoonData/dataProcessor.ts"],"sourcesContent":["import {\n DereferencedTargetingDataType,\n TargetingDataType,\n VisitorReference,\n} from 'src/targeting';\nimport { Utilities, Order } from 'src/utilities';\nimport {\n DereferenceTargetingDataResultType,\n ExistingDataType,\n ExistingNestedDataType,\n FieldParametersType,\n KameleoonData,\n KameleoonVisitorDataType,\n MutAddUnsentDataType,\n MutUpdateDataParametersType,\n NestedFieldParametersType,\n ReferenceParametersType,\n UpdateCommonDataParametersType,\n UpdateConversionParametersType,\n UpdateCustomDataParametersType,\n UpdatePageViewParametersType,\n UpdateVisitsDataParametersType,\n} from './types';\nimport { CustomData } from './customData';\nimport { VisitsData } from './visitsData';\nimport { Conversion } from './conversion';\nimport { PageView } from './pageView';\n\ninterface IDataProcessor {\n mutUpdateData({\n visitorCode,\n mutData,\n dataItem,\n }: MutUpdateDataParametersType): number;\n mutCleanupData(mutData: TargetingDataType): number | null;\n createReference({\n mutData,\n visitorCode,\n linkedVisitor,\n }: ReferenceParametersType): void;\n dereferenceData(\n data: TargetingDataType,\n visitorCode: string,\n ): DereferenceTargetingDataResultType;\n mutAddUnsentData({\n mutData,\n visitorCode,\n dataType,\n }: MutAddUnsentDataType): void;\n}\n\nexport class DataProcessor implements IDataProcessor {\n private cleanupInterval: number | null;\n\n constructor(cleanupInterval: number | null = null) {\n this.cleanupInterval = cleanupInterval;\n }\n\n public mutUpdateData({\n visitorCode,\n mutData,\n dataItem,\n }: MutUpdateDataParametersType): number {\n const { visitorReference, data } = this.dereferenceData(\n mutData,\n visitorCode,\n );\n\n const expirationTime = this.cleanupInterval\n ? Date.now() + this.cleanupInterval\n : 0;\n\n switch (dataItem.data.type) {\n case KameleoonData.CustomData: {\n this.updateCustomData({\n expirationTime,\n customData: dataItem as CustomData,\n visitorCode: visitorReference,\n mutData: data,\n });\n\n break;\n }\n case KameleoonData.PageView: {\n this.updatePageView({\n expirationTime,\n pageView: dataItem as PageView,\n visitorCode: visitorReference,\n mutData: data,\n });\n\n break;\n }\n case KameleoonData.Conversion: {\n this.updateConversion({\n expirationTime,\n conversion: dataItem as Conversion,\n visitorCode: visitorReference,\n mutData: data,\n });\n\n break;\n }\n case KameleoonData.VisitsData: {\n this.updateVisitsData({\n expirationTime,\n visitsData: dataItem as VisitsData,\n visitorCode: visitorReference,\n mutData: data,\n });\n break;\n }\n default: {\n this.updateCommonData({\n expirationTime,\n commonData: dataItem,\n visitorCode: visitorReference,\n mutData: data,\n });\n }\n }\n\n return expirationTime;\n }\n\n public mutCleanupData(mutData: TargetingDataType): number | null {\n if (!this.cleanupInterval) {\n return null;\n }\n\n let nextCleanupTime = 0;\n\n for (const [visitorCode, data] of Object.entries(mutData)) {\n if (typeof data === 'string') {\n this.removeReference({\n mutData,\n visitorCode,\n linkedVisitor: data,\n });\n\n continue;\n }\n\n let closestCleanupTime = 0;\n\n for (const key of Object.keys(data)) {\n const dataKey = key as KameleoonData;\n\n let time;\n\n switch (dataKey) {\n case KameleoonData.CustomData:\n case KameleoonData.PageView:\n case KameleoonData.Conversion: {\n time = this.deleteNestedExpiredField(data, dataKey);\n break;\n }\n default: {\n time = this.deleteExpiredField(data, dataKey);\n }\n }\n\n if (!closestCleanupTime || (time && time < closestCleanupTime)) {\n closestCleanupTime = time;\n }\n }\n\n if (!Object.keys(mutData[visitorCode]).length) {\n delete mutData[visitorCode];\n } else {\n if (\n !nextCleanupTime ||\n (closestCleanupTime && closestCleanupTime < nextCleanupTime)\n ) {\n nextCleanupTime = closestCleanupTime;\n }\n }\n }\n\n return nextCleanupTime;\n }\n\n public mutAddUnsentData({\n mutData,\n visitorCode,\n dataType,\n }: MutAddUnsentDataType): void {\n const unsentData = mutData.unsentData[visitorCode];\n\n if (!unsentData || !unsentData.length) {\n mutData.unsentData[visitorCode] = [dataType];\n } else {\n const set = new Set([...unsentData]);\n set.add(dataType);\n\n mutData.unsentData[visitorCode] = Array.from(set);\n }\n }\n\n public createReference({\n mutData,\n visitorCode,\n linkedVisitor,\n }: ReferenceParametersType): void {\n // --- Note ---\n // Provided(linked) visitor is now pointing to the visitor code\n mutData[linkedVisitor] = visitorCode;\n }\n\n public removeReference({\n mutData,\n visitorCode,\n linkedVisitor,\n }: ReferenceParametersType): void {\n if (!mutData[linkedVisitor]) {\n delete mutData[visitorCode];\n }\n }\n\n private updatePageView({\n visitorCode,\n mutData,\n pageView,\n expirationTime,\n }: UpdatePageViewParametersType): void {\n const { data } = pageView;\n\n const isExist =\n mutData[visitorCode] &&\n KameleoonData.PageView in mutData[visitorCode] &&\n data.urlAddress in mutData[visitorCode][KameleoonData.PageView]!;\n\n const parameters: NestedFieldParametersType = {\n expirationTime,\n visitorCode,\n data: mutData,\n key: KameleoonData.PageView,\n nestedKey: data.urlAddress,\n value: data,\n };\n\n if (isExist) {\n const existingData =\n mutData[visitorCode][KameleoonData.PageView]![data.urlAddress];\n const existingTimestamps = existingData.timestamps;\n\n // --- Note ---\n // Merging existing timestamps with added\n for (const existingTimestamp of existingTimestamps) {\n const { time: existingTime } = existingTimestamp;\n\n if (data.timestamps.some(({ time }) => time === existingTime)) {\n continue;\n }\n\n const index = data.timestamps.findIndex(\n ({ time }) => time >= existingTime,\n );\n\n if (index === -1) {\n data.timestamps.push(existingTimestamp);\n } else {\n data.timestamps.splice(index, 0, existingTimestamp);\n }\n }\n\n this.updateNestedField(parameters);\n } else {\n this.createNestedField(parameters);\n }\n }\n\n private updateCustomData({\n visitorCode,\n customData,\n mutData,\n expirationTime,\n }: UpdateCustomDataParametersType): void {\n const { data } = customData;\n const isExist =\n mutData[visitorCode] && KameleoonData.CustomData in mutData[visitorCode];\n\n const parameters: NestedFieldParametersType = {\n expirationTime,\n visitorCode,\n data: mutData,\n key: KameleoonData.CustomData,\n nestedKey: data.index.toString(),\n value: data,\n };\n\n if (isExist) {\n this.updateNestedField(parameters);\n } else {\n this.createNestedField(parameters);\n }\n }\n\n private updateConversion({\n conversion,\n mutData,\n visitorCode,\n expirationTime,\n }: UpdateConversionParametersType): void {\n const { data } = conversion;\n const isExist =\n mutData[visitorCode] && KameleoonData.Conversion in mutData[visitorCode];\n\n const parameters: NestedFieldParametersType = {\n expirationTime,\n visitorCode,\n data: mutData,\n key: KameleoonData.Conversion,\n nestedKey: data.id.toString(),\n value: data,\n };\n\n if (isExist) {\n this.updateNestedField(parameters);\n } else {\n this.createNestedField(parameters);\n }\n }\n\n private updateVisitsData({\n visitorCode,\n mutData,\n visitsData,\n expirationTime,\n }: UpdateVisitsDataParametersType): void {\n const { data } = visitsData;\n const isExist =\n mutData[visitorCode] && KameleoonData.VisitsData in mutData[visitorCode];\n\n const parameters: FieldParametersType = {\n expirationTime,\n data: mutData,\n key: KameleoonData.VisitsData,\n value: data,\n visitorCode,\n };\n\n if (isExist) {\n const existingVisits = mutData[visitorCode][KameleoonData.VisitsData]!;\n\n // --- Note ---\n // We are preserving the order of visits\n existingVisits.visits.forEach((visit) => {\n Utilities.insertInOrderedListMutably({\n list: data.visits,\n element: visit,\n order: Order.Ascending,\n });\n });\n\n this.updateField({\n ...parameters,\n value: {\n ...data,\n visits: data.visits,\n },\n });\n } else {\n this.createField(parameters);\n }\n }\n\n private updateCommonData({\n visitorCode,\n mutData,\n commonData,\n expirationTime,\n }: UpdateCommonDataParametersType): void {\n const { data } = commonData;\n const isExist = mutData[visitorCode] && data.type in mutData[visitorCode];\n\n const parameters: FieldParametersType = {\n expirationTime,\n data: mutData,\n key: data.type,\n visitorCode,\n value: data as FieldParametersType['value'],\n };\n\n if (isExist) {\n this.updateField(parameters);\n } else {\n this.createField(parameters);\n }\n }\n\n public dereferenceData(\n data: TargetingDataType,\n visitorCode: string,\n ): DereferenceTargetingDataResultType {\n // --- Note ---\n // Visitor reference can not point to another visitor reference\n if (typeof data[visitorCode] === 'string') {\n return {\n visitorReference: data[visitorCode] as VisitorReference,\n data: data as DereferencedTargetingDataType,\n };\n }\n\n return {\n visitorReference: visitorCode,\n data: data as DereferencedTargetingDataType,\n };\n }\n\n private deleteExpiredField(\n data: Omit<\n KameleoonVisitorDataType,\n | KameleoonData.Conversion\n | KameleoonData.CustomData\n | KameleoonData.PageView\n >,\n key: KameleoonData,\n ): number {\n if (!data) {\n return 0;\n }\n\n const dataKey = key as keyof typeof data;\n const isExpired = data[dataKey]!.expirationTime < Date.now();\n\n if (!isExpired) {\n return data[dataKey]!.expirationTime;\n }\n\n delete data[dataKey];\n\n return 0;\n }\n\n private deleteNestedExpiredField(\n data: KameleoonVisitorDataType,\n key: KameleoonData,\n ): number {\n if (!data[key]) {\n return 0;\n }\n\n const existingData = data[key] as ExistingNestedDataType;\n\n let closestCleanupTime;\n\n for (const [nestedKey, value] of Object.entries(existingData)) {\n if (!value) {\n continue;\n }\n\n const isExpired = value.expirationTime < Date.now();\n\n if (isExpired) {\n delete existingData[nestedKey];\n } else {\n if (!closestCleanupTime || value.expirationTime < closestCleanupTime) {\n closestCleanupTime = value.expirationTime;\n }\n }\n }\n\n if (!Object.keys(existingData).length) {\n delete data[key];\n }\n\n return closestCleanupTime;\n }\n\n private updateField({\n key,\n value,\n data,\n visitorCode,\n expirationTime,\n }: FieldParametersType): void {\n (data[visitorCode][key] as ExistingDataType<typeof key>) = {\n ...value,\n expirationTime,\n };\n }\n\n private createField({\n key,\n value,\n data,\n visitorCode,\n expirationTime,\n }: FieldParametersType): void {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: { ...value, expirationTime },\n };\n }\n\n private updateNestedField({\n key,\n nestedKey,\n value,\n data,\n visitorCode,\n expirationTime,\n }: NestedFieldParametersType): void {\n (data[visitorCode][key] as ExistingNestedDataType)[nestedKey] = {\n ...value,\n expirationTime,\n };\n }\n\n private createNestedField({\n key,\n nestedKey,\n value,\n data,\n visitorCode,\n expirationTime,\n }: NestedFieldParametersType): void {\n if (!data[visitorCode]?.[key]) {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: {\n [nestedKey]: { ...value, expirationTime },\n },\n };\n } else {\n data[visitorCode] = {\n ...data[visitorCode],\n [key]: {\n ...data[visitorCode][key],\n [nestedKey]: { ...value, expirationTime },\n },\n };\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","names":["Device","constructor","device","_defineProperty","status","TrackingStatus","Unsent","url","UrlEventType","StaticData","UrlParameter","DeviceType","data","type","KameleoonData","_fromRaw","deviceType","_fromVisit","visit","b","staticDataEvent","exports"],"sources":["../../src/kameleoonData/device.ts"],"sourcesContent":["import { UrlEventType, UrlParameter, VisitType } from 'src/requester';\nimport {\n DeviceDataType,\n DeviceType,\n IKameleoonData,\n KameleoonData,\n} from './types';\nimport { TrackingStatus } from 'src/types';\n\n/**\n * @class\n * Device - a class for creating an instance for device of a certain type\n * */\nexport class Device implements IKameleoonData {\n public status: TrackingStatus;\n\n private device: DeviceType;\n\n /**\n * @param {DeviceType} device - one of the available device types from `DeviceType` enum\n * */\n constructor(device: DeviceType) {\n this.device = device;\n this.status = TrackingStatus.Unsent;\n }\n\n get url(): string {\n // --- Note ---\n // If SDK is used in vanilla JS codebase, then you're also able to create an instance\n // with no required data, we don't want send anything to tracking in that case\n if (!this.device) {\n return '';\n }\n\n return UrlEventType.StaticData + UrlParameter.DeviceType + this.device;\n }\n\n get data(): DeviceDataType {\n return {\n device: this.device,\n type: KameleoonData.Device,\n status: this.status,\n };\n }\n\n /**\n * @private\n * @method _fromRaw - an internal method for creating a Device instance from raw data\n * @param {DeviceDataType} data - a raw data\n * @return {Device} a Device instance\n * */\n public static _fromRaw(data: DeviceDataType): Device {\n const { device: deviceType, status } = data;\n const device = new Device(deviceType);\n\n device.status = status;\n\n return device;\n }\n\n /**\n * @private\n * @method _fromVisit - an internal method for creating an instance of Device class from a visit\n * @param {VisitType} visit - a visit\n * @returns {Device | undefined} an instance of Device class or undefined if browser can not be found among visits\n * */\n public static _fromVisit(visit: VisitType): Device | undefined {\n if (visit.staticDataEvent?.data.deviceType) {\n return new Device(visit.staticDataEvent.data.deviceType);\n }\n\n return undefined;\n }\n}\n"],"mappings":"wrBAaO,KAAM,CAAAA,MAAiC,CAQ5CC,WAAWA,CAACC,CAAkB,CAAE,CAAAC,eAAA,uBAAAA,eAAA,uBAC9B,IAAI,CAACD,MAAM,CAAGA,CAAM,CACpB,IAAI,CAACE,MAAM,CAAGC,sBAAc,CAACC,MAC/B,CAEA,GAAI,CAAAC,GAAGA,CAAA,CAAW,OAIX,KAAI,CAACL,MAAM,CAITM,uBAAY,CAACC,UAAU,CAAGC,uBAAY,CAACC,UAAU,CAAG,IAAI,CAACT,MAAM,CAH7D,EAIX,CAEA,GAAI,CAAAU,IAAIA,CAAA,CAAmB,CACzB,MAAO,CACLV,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBW,IAAI,CAAEC,oBAAa,CAACd,MAAM,CAC1BI,MAAM,CAAE,IAAI,CAACA,MACf,CACF,CAQA,MAAc,CAAAW,QAAQA,CAACH,CAAoB,CAAU,MAC7C,CAAEV,MAAM,CAAEc,CAAU,CAAEZ,MAAM,CAANA,CAAO,CAAC,CAAGQ,CAAI,CACrCV,CAAM,CAAG,GAAI,CAAAF,MAAM,CAACgB,CAAU,CAAC,CAIrC,MAFA,CAAAd,CAAM,CAACE,MAAM,CAAGA,CAAM,CAEfF,CACT,CAQA,MAAc,CAAAe,UAAUA,CAACC,CAAgB,CAAsB,KAAAC,CAAA,gBAAAA,CAAA,CACzDD,CAAK,CAACE,eAAe,YAAAD,CAAA,EAArBA,CAAA,CAAuBP,IAAI,CAACI,UAAU,CACjC,GAAI,CAAAhB,MAAM,CAACkB,CAAK,CAACE,eAAe,CAACR,IAAI,CAACI,UAAU,CAAC,OAI5D,CACF,CAACK,OAAA,CAAArB,MAAA,CAAAA,MAAA","ignoreList":[]}
|