@kameleoon/javascript-sdk-core 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/clientConfiguration/clientConfiguration.js +1 -1
- package/dist/clientConfiguration/clientConfiguration.js.map +1 -1
- package/dist/clientConfiguration/constants.js +1 -1
- package/dist/clientConfiguration/constants.js.map +1 -1
- package/dist/clientConfiguration/types.d.ts +1 -1
- package/dist/clientConfiguration/types.js.map +1 -1
- package/dist/kameleoonClient.js +1 -1
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/requester/constants.d.ts +1 -3
- package/dist/requester/constants.js +1 -1
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.d.ts +1 -1
- package/dist/requester/index.js +1 -1
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +0 -3
- package/dist/requester/requester.js +1 -1
- package/dist/requester/requester.js.map +1 -1
- package/dist/requester/types.d.ts +11 -1
- package/dist/requester/types.js +1 -1
- package/dist/requester/types.js.map +1 -1
- package/dist/requester/urlProvider.d.ts +18 -0
- package/dist/requester/urlProvider.js +2 -0
- package/dist/requester/urlProvider.js.map +1 -0
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ClientConfiguration=void 0;var _tsRes=require("ts-res"),_constants=require("./constants"),_types=require("./types"),_utilities=require("../utilities");function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class ClientConfiguration{constructor(a){let{settings:b,storage:c,requester:d,dataManager:e,externalClientConfiguration:f,offlineTrackingStorage:g,eventSource:h,externalVisitorCodeManager:i}=a;_defineProperty(this,"configurationUpdateCallback",void 0),_defineProperty(this,"updateConfigurationIntervalId",null),_defineProperty(this,"updateType",_types.UpdateType.Idle),_defineProperty(this,"configurationData",_constants.DEFAULT_CONFIGURATION_DATA),_defineProperty(this,"settings",void 0),_defineProperty(this,"lastUpdate",void 0),_defineProperty(this,"storage",void 0),_defineProperty(this,"offlineTrackingStorage",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"eventSource",void 0),_defineProperty(this,"externalClientConfiguration",void 0),_defineProperty(this,"mappedRules",new Map),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"visitorCodeManager",void 0),this.requester=d,this.settings=b,this.lastUpdate=new Date,this.storage=c,this.dataManager=e,this.externalClientConfiguration=f,this.offlineTrackingStorage=g,this.visitorCodeManager=i,this.eventSource=h}async initialize(){this.readStorageData();const a=!!this.externalClientConfiguration,b=this.checkShouldUpdate(a);if(b){const a=await this.updateClientConfiguration();if(!a.ok)return a;const b=a.data;if(b)return(0,_tsRes.Ok)()}return a?(this.handleExternalUpdates(),(0,_tsRes.Ok)()):this.updateType!==_types.UpdateType.RealTime||this.eventSource.isOpen?(this.updateType===_types.UpdateType.Polling&&this.handlePollingUpdates(),(0,_tsRes.Ok)()):(this.updateType=_types.UpdateType.Idle,this.handleRealTimeUpdates(),(0,_tsRes.Ok)())}cleanupHandlers(){this.eventSource.isOpen&&this.eventSource.close(),this.updateConfigurationIntervalId&&clearInterval(this.updateConfigurationIntervalId)}handleExternalUpdates(){this.cleanupHandlers(),this.configurationData=this.externalClientConfiguration}handleRealTimeUpdates(){this.cleanupHandlers();const a=a=>{this.updateClientConfiguration(a).then(a=>{a.ok&&this.configurationUpdateCallback&&this.configurationUpdateCallback()})};this.eventSource.open(a)}handlePollingUpdates(){this.cleanupHandlers();try{this.updateConfigurationIntervalId=setInterval(this.updateClientConfiguration.bind(this),this.settings.updateInterval)}catch(a){throw this.updateConfigurationIntervalId&&clearInterval(this.updateConfigurationIntervalId),a}}onConfigurationUpdate(a){this.configurationUpdateCallback=a}get featureFlags(){return this.configurationData.featureFlags}get configuration(){return this.configurationData.configuration}get segments(){const a=new Map;return this.featureFlags.forEach(b=>{b.rules.forEach(b=>{b.segment&&!a.has(b.segment.id)&&a.set(b.segment.id,b.segment)})}),a}get ruleMap(){if(this.mappedRules.size)return this.mappedRules;const a=new Map;for(const b of this.featureFlags)for(const c of b.rules){const{id:d,experimentId:e,variationByExposition:f}=c,g=new Map;f.forEach(a=>{let{variationKey:b,variationId:c}=a;"number"==typeof c&&g.set(b,c)}),a.set(d,{featureId:b.id,experimentId:e,variations:g})}return this.mappedRules=a,a}get isConsentRequired(){return this.configuration.consentType===_types.ConsentType.Required}get hasAnyTargetedDeliveryRule(){return this.featureFlags.some(a=>a.environmentEnabled&&a.rules.some(a=>a.type===_types.RuleType.TARGETED_DELIVERY))}checkIntegrity(a){if(!a)return!1;const b=Object.keys(a);if(!b.length)return!1;const c=Object.keys(_constants.DEFAULT_CONFIGURATION_DATA);return b.sort().join()===c.sort().join()}checkShouldUpdate(){let a=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0];const{featureFlags:b,configuration:c}=this.configurationData,{updateInterval:d}=this.settings;if(a)return this.updateType=_types.UpdateType.Idle,!1;if(this.updateType=c.realTimeUpdate?_types.UpdateType.RealTime:_types.UpdateType.Polling,!b.length)return!0;const e=this.lastUpdate.getTime(),f=Date.now()-d;return e<f}readStorageData(){const a=this.storage.read();if(a.ok){const{data:b,lastUpdate:c}=a.data,d=this.checkIntegrity(b);d?(this.configurationData=b,this.lastUpdate=new Date(Date.parse(c))):(this.storage.write({data:_constants.DEFAULT_CONFIGURATION_DATA,lastUpdate:this.lastUpdate.toString()}),this.configurationData=_constants.DEFAULT_CONFIGURATION_DATA)}}async updateClientConfiguration(a){const b=await this.requester.getClientConfiguration(a);if(!b.ok){const{featureFlags:a}=this.configurationData;return a.length?(0,_tsRes.Ok)(!0):b}_utilities.Utilities.sendOfflineTracking({storage:this.offlineTrackingStorage,requester:this.requester});const{configuration:c,customData:d}=b.data;this.configurationData=b.data,null!==d&&void 0!==d&&d.length&&(this.dataManager.customDataIndexes=d),this.dataManager.clearTrees(),this.mappedRules.clear();const e=this.updateStorageData();if(!e.ok)return e;const f=c.realTimeUpdate?_types.UpdateType.RealTime:_types.UpdateType.Polling,g=f!==this.updateType;g&&(this.updateType=f,await this.initialize());const h=this.isConsentRequired&&!this.hasAnyTargetedDeliveryRule;return this.visitorCodeManager.consentRequired=h,(0,_tsRes.Ok)(g)}updateStorageData(){this.lastUpdate=new Date;const a={data:this.configurationData,lastUpdate:this.lastUpdate.toString()};return this.storage.write(a)}}exports.ClientConfiguration=ClientConfiguration;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ClientConfiguration=void 0;var _tsRes=require("ts-res"),_constants=require("./constants"),_types=require("./types"),_utilities=require("../utilities"),_urlProvider=require("../requester/urlProvider");function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class ClientConfiguration{constructor(a){let{settings:b,storage:c,requester:d,dataManager:e,externalClientConfiguration:f,offlineTrackingStorage:g,eventSource:h,externalVisitorCodeManager:i}=a;_defineProperty(this,"configurationUpdateCallback",void 0),_defineProperty(this,"updateConfigurationIntervalId",null),_defineProperty(this,"updateType",_types.UpdateType.Idle),_defineProperty(this,"configurationData",_constants.DEFAULT_CONFIGURATION_DATA),_defineProperty(this,"settings",void 0),_defineProperty(this,"lastUpdate",void 0),_defineProperty(this,"storage",void 0),_defineProperty(this,"offlineTrackingStorage",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"eventSource",void 0),_defineProperty(this,"externalClientConfiguration",void 0),_defineProperty(this,"mappedRules",new Map),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"visitorCodeManager",void 0),this.requester=d,this.settings=b,this.lastUpdate=new Date,this.storage=c,this.dataManager=e,this.externalClientConfiguration=f,this.offlineTrackingStorage=g,this.visitorCodeManager=i,this.eventSource=h}async initialize(){this.readStorageData();const a=!!this.externalClientConfiguration,b=this.checkShouldUpdate(a);if(b){const a=await this.updateClientConfiguration();if(!a.ok)return a;const b=a.data;if(b)return(0,_tsRes.Ok)()}return a?(this.handleExternalUpdates(),(0,_tsRes.Ok)()):this.updateType!==_types.UpdateType.RealTime||this.eventSource.isOpen?(this.updateType===_types.UpdateType.Polling&&this.handlePollingUpdates(),(0,_tsRes.Ok)()):(this.updateType=_types.UpdateType.Idle,this.handleRealTimeUpdates(),(0,_tsRes.Ok)())}cleanupHandlers(){this.eventSource.isOpen&&this.eventSource.close(),this.updateConfigurationIntervalId&&clearInterval(this.updateConfigurationIntervalId)}handleExternalUpdates(){this.cleanupHandlers(),this.configurationData=this.externalClientConfiguration}handleRealTimeUpdates(){this.cleanupHandlers();const a=a=>{this.updateClientConfiguration(a).then(a=>{a.ok&&this.configurationUpdateCallback&&this.configurationUpdateCallback()})};this.eventSource.open(a)}handlePollingUpdates(){this.cleanupHandlers();try{this.updateConfigurationIntervalId=setInterval(this.updateClientConfiguration.bind(this),this.settings.updateInterval)}catch(a){throw this.updateConfigurationIntervalId&&clearInterval(this.updateConfigurationIntervalId),a}}onConfigurationUpdate(a){this.configurationUpdateCallback=a}get featureFlags(){return this.configurationData.featureFlags}get configuration(){return this.configurationData.configuration}get segments(){const a=new Map;return this.featureFlags.forEach(b=>{b.rules.forEach(b=>{b.segment&&!a.has(b.segment.id)&&a.set(b.segment.id,b.segment)})}),a}get ruleMap(){if(this.mappedRules.size)return this.mappedRules;const a=new Map;for(const b of this.featureFlags)for(const c of b.rules){const{id:d,experimentId:e,variationByExposition:f}=c,g=new Map;f.forEach(a=>{let{variationKey:b,variationId:c}=a;"number"==typeof c&&g.set(b,c)}),a.set(d,{featureId:b.id,experimentId:e,variations:g})}return this.mappedRules=a,a}get isConsentRequired(){return this.configuration.consentType===_types.ConsentType.Required}get hasAnyTargetedDeliveryRule(){return this.featureFlags.some(a=>a.environmentEnabled&&a.rules.some(a=>a.type===_types.RuleType.TARGETED_DELIVERY))}checkIntegrity(a){if(!a)return!1;const b=Object.keys(a);if(!b.length)return!1;const c=Object.keys(_constants.DEFAULT_CONFIGURATION_DATA);return b.sort().join()===c.sort().join()}checkShouldUpdate(){let a=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0];const{featureFlags:b,configuration:c}=this.configurationData,{updateInterval:d}=this.settings;if(a)return this.updateType=_types.UpdateType.Idle,!1;if(this.updateType=c.realTimeUpdate?_types.UpdateType.RealTime:_types.UpdateType.Polling,!b.length)return!0;const e=this.lastUpdate.getTime(),f=Date.now()-d;return e<f}readStorageData(){const a=this.storage.read();if(a.ok){const{data:b,lastUpdate:c}=a.data,d=this.checkIntegrity(b);d?(_urlProvider.UrlProvider.setDataApiDomain(b.configuration.dataApiDomain),this.configurationData=b,this.lastUpdate=new Date(Date.parse(c))):(_urlProvider.UrlProvider.setDataApiDomain(_constants.DEFAULT_CONFIGURATION_DATA.configuration.dataApiDomain),this.storage.write({data:_constants.DEFAULT_CONFIGURATION_DATA,lastUpdate:this.lastUpdate.toString()}),this.configurationData=_constants.DEFAULT_CONFIGURATION_DATA)}}async updateClientConfiguration(a){const b=await this.requester.getClientConfiguration(a);if(!b.ok){const{featureFlags:a}=this.configurationData;return a.length?(0,_tsRes.Ok)(!0):b}_utilities.Utilities.sendOfflineTracking({storage:this.offlineTrackingStorage,requester:this.requester});const{configuration:c,customData:d}=b.data;this.configurationData=b.data,null!==d&&void 0!==d&&d.length&&(this.dataManager.customDataIndexes=d),this.dataManager.clearTrees(),this.mappedRules.clear();const e=this.updateStorageData();if(!e.ok)return e;const f=c.realTimeUpdate?_types.UpdateType.RealTime:_types.UpdateType.Polling,g=f!==this.updateType;g&&(this.updateType=f,await this.initialize());const h=this.isConsentRequired&&!this.hasAnyTargetedDeliveryRule;return this.visitorCodeManager.consentRequired=h,(0,_tsRes.Ok)(g)}updateStorageData(){this.lastUpdate=new Date;const a={data:this.configurationData,lastUpdate:this.lastUpdate.toString()};return _urlProvider.UrlProvider.setDataApiDomain(this.configurationData.configuration.dataApiDomain),this.storage.write(a)}}exports.ClientConfiguration=ClientConfiguration;
|
|
2
2
|
//# sourceMappingURL=clientConfiguration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientConfiguration.js","names":["ClientConfiguration","constructor","a","settings","storage","requester","dataManager","externalClientConfiguration","offlineTrackingStorage","eventSource","externalVisitorCodeManager","_defineProperty","UpdateType","Idle","DEFAULT_CONFIGURATION_DATA","Map","lastUpdate","Date","visitorCodeManager","initialize","readStorageData","isExternalConfiguration","shouldUpdate","checkShouldUpdate","updateResult","updateClientConfiguration","ok","isUpdateTypeToggled","data","Ok","handleExternalUpdates","updateType","RealTime","isOpen","Polling","handlePollingUpdates","handleRealTimeUpdates","cleanupHandlers","close","updateConfigurationIntervalId","clearInterval","configurationData","updateEventCallback","timestamp","then","configurationUpdateCallback","open","setInterval","bind","updateInterval","err","onConfigurationUpdate","callback","featureFlags","configuration","segments","forEach","flag","rules","rule","segment","has","id","set","ruleMap","mappedRules","size","featureFlag","experimentId","variationByExposition","variationMap","variationKey","variationId","featureId","variations","isConsentRequired","consentType","ConsentType","Required","hasAnyTargetedDeliveryRule","some","environmentEnabled","type","RuleType","TARGETED_DELIVERY","checkIntegrity","fields","Object","keys","length","requiredFields","sort","join","skipChecks","arguments","realTimeUpdate","lastUpdateTime","getTime","updateWindowEdge","now","result","read","isStorageValid","parse","write","toString","clientConfigurationResult","getClientConfiguration","Utilities","sendOfflineTracking","customData","customDataIndexes","clearTrees","clear","updateStorageData","toggleUpdateType","consentRequired","exports"],"sources":["../../src/clientConfiguration/clientConfiguration.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError/kameleoonError';\nimport { ClientSettingsType } from 'src/clientSettings/types';\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 { DEFAULT_CONFIGURATION_DATA } from './constants';\nimport {\n ClientConfigurationParametersType,\n ConfigurationDataType,\n ConfigurationType,\n ConsentType,\n FeatureFlagType,\n MappedRuleType,\n RuleType,\n UpdateType,\n} from './types';\nimport { Utilities } from 'src/utilities';\nimport { IStorage, OfflineTracking } from 'src/storage/types';\nimport { IVisitorCodeManager } from 'src/visitorCodeManager';\n\ninterface IClientConfiguration {\n initialize: (useCache?: boolean) => Promise<Result<void, KameleoonError>>;\n onConfigurationUpdate: (callback: () => void) => void;\n readonly featureFlags: 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 configurationUpdateCallback?: () => void;\n private updateConfigurationIntervalId: NodeJS.Timer | null = null;\n private updateType: UpdateType = UpdateType.Idle;\n private configurationData: ConfigurationDataType = DEFAULT_CONFIGURATION_DATA;\n private settings: ClientSettingsType;\n private lastUpdate: Date;\n private storage: IStorage<ClientDataType>;\n private offlineTrackingStorage: IStorage<OfflineTracking>;\n private requester: Requester;\n private eventSource: IEventSource;\n private externalClientConfiguration?: ConfigurationDataType;\n private mappedRules: Map<number, MappedRuleType> = new Map();\n private dataManager: DataManager;\n private visitorCodeManager: IVisitorCodeManager;\n\n constructor({\n settings,\n storage,\n requester,\n dataManager,\n externalClientConfiguration,\n offlineTrackingStorage,\n eventSource,\n externalVisitorCodeManager,\n }: ClientConfigurationParametersType) {\n this.requester = requester;\n this.settings = settings;\n this.lastUpdate = new Date();\n this.storage = storage;\n this.dataManager = dataManager;\n this.externalClientConfiguration = externalClientConfiguration;\n this.offlineTrackingStorage = offlineTrackingStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n this.eventSource = eventSource;\n }\n\n public async initialize(): Promise<Result<void, KameleoonError>> {\n this.readStorageData();\n\n const isExternalConfiguration = Boolean(this.externalClientConfiguration);\n const shouldUpdate = this.checkShouldUpdate(isExternalConfiguration);\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 (isExternalConfiguration) {\n this.handleExternalUpdates();\n\n return Ok();\n }\n\n if (this.updateType === UpdateType.RealTime && !this.eventSource.isOpen) {\n this.updateType = UpdateType.Idle;\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 handleExternalUpdates(): void {\n this.cleanupHandlers();\n\n this.configurationData = this.externalClientConfiguration!;\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 && this.configurationUpdateCallback) {\n this.configurationUpdateCallback();\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.settings.updateInterval,\n );\n } catch (err) {\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n throw err;\n }\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n this.configurationUpdateCallback = callback;\n }\n\n get featureFlags(): FeatureFlagType[] {\n return this.configurationData.featureFlags;\n }\n\n get configuration(): ConfigurationType {\n return this.configurationData.configuration;\n }\n\n get segments(): Map<string, SegmentType> {\n const segments = new Map();\n\n this.featureFlags.forEach((flag) => {\n flag.rules.forEach((rule) => {\n if (rule.segment && !segments.has(rule.segment.id)) {\n segments.set(rule.segment.id, rule.segment);\n }\n });\n });\n\n return segments;\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) {\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 return this.featureFlags.some(\n (featureFlag) =>\n featureFlag.environmentEnabled &&\n featureFlag.rules.some(\n (rule) => rule.type === RuleType.TARGETED_DELIVERY,\n ),\n );\n }\n\n // --- Note ---\n // Integrity check covers most of the migration scenarios\n // however in the future it will be changed to a dedicate migration\n // block that can handle all versions migrations\n private checkIntegrity(data: ConfigurationDataType | undefined): boolean {\n if (!data) {\n return false;\n }\n\n const fields = Object.keys(data);\n\n if (!fields.length) {\n return false;\n }\n\n const requiredFields = Object.keys(DEFAULT_CONFIGURATION_DATA);\n\n return fields.sort().join() === requiredFields.sort().join();\n }\n\n private checkShouldUpdate(skipChecks = false): boolean {\n const { featureFlags, configuration } = this.configurationData;\n const { updateInterval } = this.settings;\n\n // --- Note ---\n // Following `updateType` logic is done for client side\n // edge cases where we have previous campaigns on storage already, but we still want\n // to initialize SSE/Polling after page reload\n if (skipChecks) {\n this.updateType = UpdateType.Idle;\n\n return false;\n }\n\n this.updateType = configuration.realTimeUpdate\n ? UpdateType.RealTime\n : UpdateType.Polling;\n\n if (!featureFlags.length) {\n return true;\n }\n\n const lastUpdateTime = this.lastUpdate.getTime();\n const updateWindowEdge = Date.now() - 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 const isStorageValid = this.checkIntegrity(data);\n\n // --- Note ---\n // Cleaning up storage if it's not valid for migration purposes\n if (!isStorageValid) {\n this.storage.write({\n data: DEFAULT_CONFIGURATION_DATA,\n lastUpdate: this.lastUpdate.toString(),\n });\n\n this.configurationData = DEFAULT_CONFIGURATION_DATA;\n } else {\n this.configurationData = data;\n this.lastUpdate = new Date(Date.parse(lastUpdate));\n }\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 const { featureFlags } = this.configurationData;\n\n if (featureFlags.length) {\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 Utilities.sendOfflineTracking({\n storage: this.offlineTrackingStorage,\n requester: this.requester,\n });\n\n const { configuration, customData } = clientConfigurationResult.data;\n\n this.configurationData = clientConfigurationResult.data;\n\n if (customData?.length) {\n this.dataManager.customDataIndexes = customData;\n }\n\n this.dataManager.clearTrees();\n this.mappedRules.clear();\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 // Regarding 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 data: ClientDataType = {\n data: this.configurationData,\n lastUpdate: this.lastUpdate.toString(),\n };\n\n return this.storage.write(data);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clientConfiguration.js","names":["ClientConfiguration","constructor","a","settings","storage","requester","dataManager","externalClientConfiguration","offlineTrackingStorage","eventSource","externalVisitorCodeManager","_defineProperty","UpdateType","Idle","DEFAULT_CONFIGURATION_DATA","Map","lastUpdate","Date","visitorCodeManager","initialize","readStorageData","isExternalConfiguration","shouldUpdate","checkShouldUpdate","updateResult","updateClientConfiguration","ok","isUpdateTypeToggled","data","Ok","handleExternalUpdates","updateType","RealTime","isOpen","Polling","handlePollingUpdates","handleRealTimeUpdates","cleanupHandlers","close","updateConfigurationIntervalId","clearInterval","configurationData","updateEventCallback","timestamp","then","configurationUpdateCallback","open","setInterval","bind","updateInterval","err","onConfigurationUpdate","callback","featureFlags","configuration","segments","forEach","flag","rules","rule","segment","has","id","set","ruleMap","mappedRules","size","featureFlag","experimentId","variationByExposition","variationMap","variationKey","variationId","featureId","variations","isConsentRequired","consentType","ConsentType","Required","hasAnyTargetedDeliveryRule","some","environmentEnabled","type","RuleType","TARGETED_DELIVERY","checkIntegrity","fields","Object","keys","length","requiredFields","sort","join","skipChecks","arguments","realTimeUpdate","lastUpdateTime","getTime","updateWindowEdge","now","result","read","isStorageValid","UrlProvider","setDataApiDomain","dataApiDomain","parse","write","toString","clientConfigurationResult","getClientConfiguration","Utilities","sendOfflineTracking","customData","customDataIndexes","clearTrees","clear","updateStorageData","toggleUpdateType","consentRequired","exports"],"sources":["../../src/clientConfiguration/clientConfiguration.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError/kameleoonError';\nimport { ClientSettingsType } from 'src/clientSettings/types';\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 { DEFAULT_CONFIGURATION_DATA } from './constants';\nimport {\n ClientConfigurationParametersType,\n ConfigurationDataType,\n ConfigurationType,\n ConsentType,\n FeatureFlagType,\n MappedRuleType,\n RuleType,\n UpdateType,\n} from './types';\nimport { Utilities } from 'src/utilities';\nimport { IStorage, OfflineTracking } from 'src/storage/types';\nimport { IVisitorCodeManager } from 'src/visitorCodeManager';\nimport { UrlProvider } from 'src/requester/urlProvider';\n\ninterface IClientConfiguration {\n initialize: (useCache?: boolean) => Promise<Result<void, KameleoonError>>;\n onConfigurationUpdate: (callback: () => void) => void;\n readonly featureFlags: 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 configurationUpdateCallback?: () => void;\n private updateConfigurationIntervalId: NodeJS.Timer | null = null;\n private updateType: UpdateType = UpdateType.Idle;\n private configurationData: ConfigurationDataType = DEFAULT_CONFIGURATION_DATA;\n private settings: ClientSettingsType;\n private lastUpdate: Date;\n private storage: IStorage<ClientDataType>;\n private offlineTrackingStorage: IStorage<OfflineTracking>;\n private requester: Requester;\n private eventSource: IEventSource;\n private externalClientConfiguration?: ConfigurationDataType;\n private mappedRules: Map<number, MappedRuleType> = new Map();\n private dataManager: DataManager;\n private visitorCodeManager: IVisitorCodeManager;\n\n constructor({\n settings,\n storage,\n requester,\n dataManager,\n externalClientConfiguration,\n offlineTrackingStorage,\n eventSource,\n externalVisitorCodeManager,\n }: ClientConfigurationParametersType) {\n this.requester = requester;\n this.settings = settings;\n this.lastUpdate = new Date();\n this.storage = storage;\n this.dataManager = dataManager;\n this.externalClientConfiguration = externalClientConfiguration;\n this.offlineTrackingStorage = offlineTrackingStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n this.eventSource = eventSource;\n }\n\n public async initialize(): Promise<Result<void, KameleoonError>> {\n this.readStorageData();\n\n const isExternalConfiguration = Boolean(this.externalClientConfiguration);\n const shouldUpdate = this.checkShouldUpdate(isExternalConfiguration);\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 (isExternalConfiguration) {\n this.handleExternalUpdates();\n\n return Ok();\n }\n\n if (this.updateType === UpdateType.RealTime && !this.eventSource.isOpen) {\n this.updateType = UpdateType.Idle;\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 handleExternalUpdates(): void {\n this.cleanupHandlers();\n\n this.configurationData = this.externalClientConfiguration!;\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 && this.configurationUpdateCallback) {\n this.configurationUpdateCallback();\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.settings.updateInterval,\n );\n } catch (err) {\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n throw err;\n }\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n this.configurationUpdateCallback = callback;\n }\n\n get featureFlags(): FeatureFlagType[] {\n return this.configurationData.featureFlags;\n }\n\n get configuration(): ConfigurationType {\n return this.configurationData.configuration;\n }\n\n get segments(): Map<string, SegmentType> {\n const segments = new Map();\n\n this.featureFlags.forEach((flag) => {\n flag.rules.forEach((rule) => {\n if (rule.segment && !segments.has(rule.segment.id)) {\n segments.set(rule.segment.id, rule.segment);\n }\n });\n });\n\n return segments;\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) {\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 return this.featureFlags.some(\n (featureFlag) =>\n featureFlag.environmentEnabled &&\n featureFlag.rules.some(\n (rule) => rule.type === RuleType.TARGETED_DELIVERY,\n ),\n );\n }\n\n // --- Note ---\n // Integrity check covers most of the migration scenarios\n // however in the future it will be changed to a dedicate migration\n // block that can handle all versions migrations\n private checkIntegrity(data: ConfigurationDataType | undefined): boolean {\n if (!data) {\n return false;\n }\n\n const fields = Object.keys(data);\n\n if (!fields.length) {\n return false;\n }\n\n const requiredFields = Object.keys(DEFAULT_CONFIGURATION_DATA);\n\n return fields.sort().join() === requiredFields.sort().join();\n }\n\n private checkShouldUpdate(skipChecks = false): boolean {\n const { featureFlags, configuration } = this.configurationData;\n const { updateInterval } = this.settings;\n\n // --- Note ---\n // Following `updateType` logic is done for client side\n // edge cases where we have previous campaigns on storage already, but we still want\n // to initialize SSE/Polling after page reload\n if (skipChecks) {\n this.updateType = UpdateType.Idle;\n\n return false;\n }\n\n this.updateType = configuration.realTimeUpdate\n ? UpdateType.RealTime\n : UpdateType.Polling;\n\n if (!featureFlags.length) {\n return true;\n }\n\n const lastUpdateTime = this.lastUpdate.getTime();\n const updateWindowEdge = Date.now() - 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 const isStorageValid = this.checkIntegrity(data);\n\n // --- Note ---\n // Cleaning up storage if it's not valid for migration purposes\n if (!isStorageValid) {\n UrlProvider.setDataApiDomain(\n DEFAULT_CONFIGURATION_DATA.configuration.dataApiDomain,\n );\n\n this.storage.write({\n data: DEFAULT_CONFIGURATION_DATA,\n lastUpdate: this.lastUpdate.toString(),\n });\n\n this.configurationData = DEFAULT_CONFIGURATION_DATA;\n } else {\n UrlProvider.setDataApiDomain(data.configuration.dataApiDomain);\n\n this.configurationData = data;\n this.lastUpdate = new Date(Date.parse(lastUpdate));\n }\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 const { featureFlags } = this.configurationData;\n\n if (featureFlags.length) {\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 Utilities.sendOfflineTracking({\n storage: this.offlineTrackingStorage,\n requester: this.requester,\n });\n\n const { configuration, customData } = clientConfigurationResult.data;\n\n this.configurationData = clientConfigurationResult.data;\n\n if (customData?.length) {\n this.dataManager.customDataIndexes = customData;\n }\n\n this.dataManager.clearTrees();\n this.mappedRules.clear();\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 // Regarding 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 data: ClientDataType = {\n data: this.configurationData,\n lastUpdate: this.lastUpdate.toString(),\n };\n\n UrlProvider.setDataApiDomain(\n this.configurationData.configuration.dataApiDomain,\n );\n\n return this.storage.write(data);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_CONFIGURATION_DATA=void 0;var _types=require("./types"),_requester=require("../requester");const DEFAULT_CONFIGURATION_DATA=exports.DEFAULT_CONFIGURATION_DATA={featureFlags:[],customData:[],configuration:{realTimeUpdate:!1,consentType:_types.ConsentType.NotRequired,dataApiDomain:_requester.DATA_API_DOMAIN}};
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["
|
|
1
|
+
{"version":3,"file":"constants.js","names":["DEFAULT_CONFIGURATION_DATA","exports","featureFlags","customData","configuration","realTimeUpdate","consentType","ConsentType","NotRequired","dataApiDomain","DATA_API_DOMAIN"],"sources":["../../src/clientConfiguration/constants.ts"],"sourcesContent":["import { ConfigurationDataType } from 'src/clientConfiguration';\nimport { ConsentType } from './types';\nimport { DATA_API_DOMAIN } from 'src/requester';\n\nexport const DEFAULT_CONFIGURATION_DATA: ConfigurationDataType = {\n featureFlags: [],\n customData: [],\n configuration: {\n realTimeUpdate: false,\n consentType: ConsentType.NotRequired,\n dataApiDomain: DATA_API_DOMAIN,\n },\n};\n"],"mappings":"+KAIO,KAAM,CAAAA,0BAAiD,CAAAC,OAAA,CAAAD,0BAAA,CAAG,CAC/DE,YAAY,CAAE,EAAE,CAChBC,UAAU,CAAE,EAAE,CACdC,aAAa,CAAE,CACbC,cAAc,GAAO,CACrBC,WAAW,CAAEC,kBAAW,CAACC,WAAW,CACpCC,aAAa,CAAEC,0BACjB,CACF,CAAC"}
|
|
@@ -103,8 +103,8 @@ export type CustomDataConfigurationType = {
|
|
|
103
103
|
};
|
|
104
104
|
export type ConfigurationType = {
|
|
105
105
|
realTimeUpdate: boolean;
|
|
106
|
-
projectEnabled: boolean;
|
|
107
106
|
consentType: ConsentType;
|
|
107
|
+
dataApiDomain: string;
|
|
108
108
|
};
|
|
109
109
|
export type ClientConfigurationParametersType = {
|
|
110
110
|
settings: ClientSettingsType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["UpdateType","exports","Polling","RealTime","Idle","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 { ClientSettingsType } from 'src/clientSettings';\nimport { IEventSource } from 'src/eventSource';\nimport { DataManager } from 'src/kameleoonData';\nimport { Requester } from 'src/requester';\nimport { IVisitorCodeManager
|
|
1
|
+
{"version":3,"file":"types.js","names":["UpdateType","exports","Polling","RealTime","Idle","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 { ClientSettingsType } from 'src/clientSettings';\nimport { IEventSource } from 'src/eventSource';\nimport { DataManager } from 'src/kameleoonData';\nimport { Requester } from 'src/requester';\nimport { IVisitorCodeManager } from 'src/visitorCodeManager';\nimport { ClientDataType, IStorage, OfflineTracking } from 'src/storage';\nimport { SegmentType } from 'src/targeting';\nimport { VariableType } from 'src/types';\n\nexport type ScheduleType = {\n dateStart: string;\n dateEnd: string;\n};\n\nexport enum UpdateType {\n Polling,\n RealTime,\n Idle,\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 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 settings: ClientSettingsType;\n storage: IStorage<ClientDataType>;\n dataManager: DataManager;\n requester: Requester;\n eventSource: IEventSource;\n offlineTrackingStorage: IStorage<OfflineTracking>;\n externalClientConfiguration?: ConfigurationDataType;\n externalVisitorCodeManager: IVisitorCodeManager;\n};\n"],"mappings":"uNAcY,CAAAA,UAAU,CAAAC,OAAA,CAAAD,UAAA,UAAVA,CAAU,QAAV,CAAAA,CAAU,CAAVA,CAAU,CAAAE,OAAA,cAAVF,CAAU,CAAVA,CAAU,CAAAG,QAAA,eAAVH,CAAU,CAAVA,CAAU,CAAAI,IAAA,WAAVJ,CAAU,MAeVK,QAAQ,CAAAJ,OAAA,CAAAI,QAAA,UAARA,CAAQ,QAAR,CAAAA,CAAQ,CAAAC,iBAAA,qBAARD,CAAQ,CAAAE,eAAA,mBAARF,CAAQ,MAKRG,0BAA0B,CAAAP,OAAA,CAAAO,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,CAAAlB,OAAA,CAAAkB,aAAA,UAAbA,CAAa,QAAb,CAAAA,CAAa,CAAAC,SAAA,aAAbD,CAAa,CAAAE,WAAA,eAAbF,CAAa,CAAAG,SAAA,aAAbH,CAAa,MAMbI,eAAe,CAAAtB,OAAA,CAAAsB,eAAA,UAAfA,CAAe,QAAf,CAAAA,CAAe,CAAAC,KAAA,SAAfD,CAAe,CAAAE,OAAA,WAAfF,CAAe,CAAAG,IAAA,QAAfH,CAAe,MAMfI,WAAW,CAAA1B,OAAA,CAAA0B,WAAA,UAAXA,CAAW,QAAX,CAAAA,CAAW,CAAAC,QAAA,YAAXD,CAAW,CAAAE,WAAA,gBAAXF,CAAW"}
|
package/dist/kameleoonClient.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_clientConfiguration=require("./clientConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_types=require("./types"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager");function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class KameleoonClient{constructor(a){let{siteCode:b,configuration:c,internalConfiguration:d}=a;_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"clientConfiguration",void 0),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"offlineTrackingStorage",void 0),_defineProperty(this,"consentDataStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalPackageInfo",void 0),_defineProperty(this,"isOfflineModeOn",void 0),_defineProperty(this,"initialized",!1),_defineProperty(this,"environment",void 0),_defineProperty(this,"visitorCodeManager",void 0);const{settings:e}=new _clientSettings.ClientSettings(b,c);this.environment=e.environment;const{externalStorage:f,externalEventSource:g,externalPackageInfo:h,externalVisitorCodeManager:i,externalRequestDispatcher:j,externalClientConfiguration:k}=d,l=new _requester.Requester({siteCode:b,environment:e.environment,packageInfo:h,requestDispatcher:j}),m=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),n=new _storage.DataStorage(f,_storage.KameleoonStorageKey.ClientData),o=new _storage.DataStorage(f,_storage.KameleoonStorageKey.TargetingData),p=new _storage.DataStorage(f,_storage.KameleoonStorageKey.VariationData),q=new _storage.DataStorage(f,_storage.KameleoonStorageKey.OfflineTracking),r=new _storage.DataStorage(f,_storage.KameleoonStorageKey.ConsentData),s=new _kameleoonData.DataManager({storage:o,targetingCleanupInterval:null===c||void 0===c?void 0:c.targetingDataCleanupInterval}),t=new _eventSource.KameleoonEventSource(e.siteCode,g),u=new _clientConfiguration.ClientConfiguration({settings:e,storage:n,dataManager:s,requester:l,externalClientConfiguration:k,offlineTrackingStorage:q,eventSource:t,externalVisitorCodeManager:i}),v=new _variationConfiguration.VariationConfiguration(p);this.variationConfiguration=v,this.requester=l,this.trackingCache=m,this.dataManager=s,this.clientConfiguration=u,this.externalPackageInfo=h,this.offlineTrackingStorage=q,this.consentDataStorage=r,this.visitorCodeManager=i}async initialize(a){const b=await this.clientConfiguration.initialize();return b.throw(),this.isOfflineModeOn=a,this.initialized=!0,b.ok}addData(a){if(_utilities.Utilities.validateVisitorCode(a).throw(),!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];this.dataManager.addData(a,...c).throw()}async getRemoteVisitorData(a){let{visitorCode:b,shouldAddData:c=!0,filters:d=_constants.DEFAULT_VISITOR_DATA_FILTERS}=a;if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_utilities.Utilities.validateVisitorCode(b).throw();const{previousVisitAmount:e}=d;if("number"==typeof e&&(1>e||25<e))throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitAmount);const f=await this.requester.getVisitorData(b,d),g=f.throw(),{visitorData:h,visitsData:i}=_utilities.Utilities.parseVisitorData({data:g,filters:d,visitorCode:b,variationConfiguration:this.variationConfiguration});for(const d of h)(c||this.dataManager.isPersistentCustomData(d))&&this.addData(b,d);return i&&c&&this.addData(b,i),h}trackConversion(a){let{visitorCode:b,goalId:c,revenue:d,isUniqueIdentifier:e}=a;this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b,e)}flush(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a&&_utilities.Utilities.validateVisitorCode(a).throw(),a)return void _utilities.Utilities.trackData({visitorCode:a,isMappingIdentifier:b,dataManager:this.dataManager,requester:this.requester,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(a),offlineTrackingStorage:this.offlineTrackingStorage});if(!this.dataManager.unsentDataVisitors.length)return void _utilities.Utilities.sendOfflineTracking({requester:this.requester,storage:this.offlineTrackingStorage});for(const c of this.dataManager.unsentDataVisitors)_utilities.Utilities.trackData({visitorCode:c,dataManager:this.dataManager,requester:this.requester,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(c),offlineTrackingStorage:this.offlineTrackingStorage})}getFeatureFlags(){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);return this.clientConfiguration.featureFlags.map(a=>{let{id:b,featureKey:c}=a;return{id:b,key:c}})}getVisitorFeatureFlags(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this.clientConfiguration.featureFlags,c=[],d=this.dataManager.storedTargetingData[a],e=this.dataManager.getVisitorIdentifier(a);for(const f of b){const b=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:e,targetingData:d,featureFlag:f,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();if(b.variationKey!==_constants.OFF_VARIATION_KEY&&f.environmentEnabled){const{featureFlagId:a,featureKey:d}=b;c.push({id:a,key:d})}}return c}getFeatureFlagVariationKey(a,b){_utilities.Utilities.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureFlagVariation(a,b).throw();return c}getFeatureFlagVariable(a){var b;let{visitorCode:c,featureKey:d,variableKey:e}=a;_utilities.Utilities.validateVisitorCode(c).throw();const{variationKey:f}=this._getFeatureFlagVariation(c,d).throw(),g=this.clientConfiguration.featureFlags,h=g.find(a=>a.featureKey===d);if(!h)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,d);const i=null===(b=h.variations.find(a=>a.key===f))||void 0===b?void 0:b.variables.find(a=>a.key===e);if(!i)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariableNotFound,e,c);const{type:j,value:k}=_utilities.Utilities.parseFeatureVariable(i).throw();return{type:j,value:k}}getFeatureFlagVariables(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_utilities.Utilities.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureFlagVariation(a,b).throw(),d=this.clientConfiguration.featureFlags,e=d.find(a=>a.featureKey===b);if(!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b);const f=e.variations.find(a=>a.key===c);if(!f)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariationNotFound,c,a);const g=[];for(const c of f.variables){const a=_utilities.Utilities.parseFeatureVariable(c).throw();g.push(a)}return g}isFeatureFlagActive(a,b){try{const c=this.getFeatureFlagVariationKey(a,b);return c!==_constants.OFF_VARIATION_KEY}catch(a){if(a instanceof _kameleoonError.KameleoonError&&a.type===_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled)return!1;throw a}}async getRemoteData(a){const b=await this.requester.getRemoteData(a);return b.throw()}async getVisitorWarehouseAudience(a){let{visitorCode:b,customDataIndex:c,warehouseKey:d}=a;_utilities.Utilities.validateVisitorCode(b).throw();const e=await this.getRemoteData(d||b);if(!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData);if(!e[_constants.WAREHOUSE_AUDIENCE_KEY]||0===Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]).length)return null;const f=new _kameleoonData.CustomData(c,...Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]));return this.dataManager.addData(b,f),f}onConfigurationUpdate(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.clientConfiguration.onConfigurationUpdate(a)}getEngineTrackingCode(a){return _utilities.Utilities.validateVisitorCode(a).throw(),_utilities.Utilities.getTrackingCode(this.trackingCache,a)}setUserConsent(a){let{visitorCode:b,consent:c,setData:d}=a;_utilities.Utilities.validateVisitorCode(b).throw(),this.consentDataStorage.update({[b]:c}),c?d({visitorCode:b,key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.DEFAULT_MAX_AGE,path:_visitorCodeManager.PATH}):this.visitorCodeManager.consentRequired&&d({visitorCode:"",key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.ZERO_MAX_AGE,path:_visitorCodeManager.PATH})}_isConsentProvided(a){const{isConsentRequired:b}=this.clientConfiguration,c=this.consentDataStorage.read();return!b||c.ok&&c.data[a]}_getFeatureFlagVariation(a,b){if(!this.initialized)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));const c=this.clientConfiguration.featureFlags,d=c.find(a=>a.featureKey===b);if(!d)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b));if(!d.environmentEnabled)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled,d.featureKey,this.environment||_types.Environment.Production));const e=this.dataManager.storedTargetingData[a],f=this.dataManager.getVisitorIdentifier(a),g=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:f,featureFlag:d,targetingData:e,withAssignment:!0,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw(),{experimentId:h,variationId:i}=g;return"number"==typeof i&&"number"==typeof h&&_utilities.Utilities.updateCache({cacheManager:this.trackingCache,visitorCode:a,experimentId:h,variationId:i}),_utilities.Utilities.trackFeatureExperiment({visitorCode:a,requester:this.requester,featureFlagVariation:g,dataManager:this.dataManager,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(a),offlineTrackingStorage:this.offlineTrackingStorage,variationConfiguration:this.variationConfiguration}),(0,_tsRes.Ok)(g)}}exports.KameleoonClient=KameleoonClient;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _tsRes=require("ts-res"),_cacheManager=require("./cacheManager"),_clientConfiguration=require("./clientConfiguration"),_clientSettings=require("./clientSettings"),_constants=require("./constants"),_kameleoonData=require("./kameleoonData"),_kameleoonError=require("./kameleoonError"),_requester=require("./requester"),_storage=require("./storage"),_types=require("./types"),_utilities=require("./utilities"),_variationConfiguration=require("./variationConfiguration"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager");function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class KameleoonClient{constructor(a){let{siteCode:b,configuration:c,internalConfiguration:d}=a;_defineProperty(this,"variationConfiguration",void 0),_defineProperty(this,"clientConfiguration",void 0),_defineProperty(this,"dataManager",void 0),_defineProperty(this,"offlineTrackingStorage",void 0),_defineProperty(this,"consentDataStorage",void 0),_defineProperty(this,"trackingCache",void 0),_defineProperty(this,"requester",void 0),_defineProperty(this,"externalPackageInfo",void 0),_defineProperty(this,"isOfflineModeOn",void 0),_defineProperty(this,"initialized",!1),_defineProperty(this,"environment",void 0),_defineProperty(this,"visitorCodeManager",void 0);const{settings:e}=new _clientSettings.ClientSettings(b,c);this.environment=e.environment;const{externalStorage:f,externalEventSource:g,externalPackageInfo:h,externalVisitorCodeManager:i,externalRequestDispatcher:j,externalClientConfiguration:k}=d,l=new _cacheManager.CacheManager(_constants.CACHE_CLEANUP_TIMEOUT),m=new _storage.DataStorage(f,_storage.KameleoonStorageKey.ClientData),n=new _storage.DataStorage(f,_storage.KameleoonStorageKey.TargetingData),o=new _storage.DataStorage(f,_storage.KameleoonStorageKey.VariationData),p=new _storage.DataStorage(f,_storage.KameleoonStorageKey.OfflineTracking),q=new _storage.DataStorage(f,_storage.KameleoonStorageKey.ConsentData),r=new _kameleoonData.DataManager({storage:n,targetingCleanupInterval:null===c||void 0===c?void 0:c.targetingDataCleanupInterval}),s=new _eventSource.KameleoonEventSource(e.siteCode,g),t=new _requester.Requester({siteCode:b,environment:e.environment,packageInfo:h,requestDispatcher:j}),u=new _clientConfiguration.ClientConfiguration({settings:e,storage:m,dataManager:r,requester:t,externalClientConfiguration:k,offlineTrackingStorage:p,eventSource:s,externalVisitorCodeManager:i}),v=new _variationConfiguration.VariationConfiguration(o);this.variationConfiguration=v,this.requester=t,this.trackingCache=l,this.dataManager=r,this.clientConfiguration=u,this.externalPackageInfo=h,this.offlineTrackingStorage=p,this.consentDataStorage=q,this.visitorCodeManager=i}async initialize(a){const b=await this.clientConfiguration.initialize();return b.throw(),this.isOfflineModeOn=a,this.initialized=!0,b.ok}addData(a){if(_utilities.Utilities.validateVisitorCode(a).throw(),!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);for(var b=arguments.length,c=Array(1<b?b-1:0),d=1;d<b;d++)c[d-1]=arguments[d];this.dataManager.addData(a,...c).throw()}async getRemoteVisitorData(a){let{visitorCode:b,shouldAddData:c=!0,filters:d=_constants.DEFAULT_VISITOR_DATA_FILTERS}=a;if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_utilities.Utilities.validateVisitorCode(b).throw();const{previousVisitAmount:e}=d;if("number"==typeof e&&(1>e||25<e))throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitAmount);const f=await this.requester.getVisitorData(b,d),g=f.throw(),{visitorData:h,visitsData:i}=_utilities.Utilities.parseVisitorData({data:g,filters:d,visitorCode:b,variationConfiguration:this.variationConfiguration});for(const d of h)(c||this.dataManager.isPersistentCustomData(d))&&this.addData(b,d);return i&&c&&this.addData(b,i),h}trackConversion(a){let{visitorCode:b,goalId:c,revenue:d,isUniqueIdentifier:e}=a;this.addData(b,new _kameleoonData.Conversion({goalId:c,revenue:d})),this.flush(b,e)}flush(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);if("string"==typeof a&&_utilities.Utilities.validateVisitorCode(a).throw(),a)return void _utilities.Utilities.trackData({visitorCode:a,isMappingIdentifier:b,dataManager:this.dataManager,requester:this.requester,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(a),offlineTrackingStorage:this.offlineTrackingStorage});if(!this.dataManager.unsentDataVisitors.length)return void _utilities.Utilities.sendOfflineTracking({requester:this.requester,storage:this.offlineTrackingStorage});for(const c of this.dataManager.unsentDataVisitors)_utilities.Utilities.trackData({visitorCode:c,dataManager:this.dataManager,requester:this.requester,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(c),offlineTrackingStorage:this.offlineTrackingStorage})}getFeatureFlags(){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);return this.clientConfiguration.featureFlags.map(a=>{let{id:b,featureKey:c}=a;return{id:b,key:c}})}getVisitorFeatureFlags(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);const b=this.clientConfiguration.featureFlags,c=[],d=this.dataManager.storedTargetingData[a],e=this.dataManager.getVisitorIdentifier(a);for(const f of b){const b=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:e,targetingData:d,featureFlag:f,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw();if(b.variationKey!==_constants.OFF_VARIATION_KEY&&f.environmentEnabled){const{featureFlagId:a,featureKey:d}=b;c.push({id:a,key:d})}}return c}getFeatureFlagVariationKey(a,b){_utilities.Utilities.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureFlagVariation(a,b).throw();return c}getFeatureFlagVariable(a){var b;let{visitorCode:c,featureKey:d,variableKey:e}=a;_utilities.Utilities.validateVisitorCode(c).throw();const{variationKey:f}=this._getFeatureFlagVariation(c,d).throw(),g=this.clientConfiguration.featureFlags,h=g.find(a=>a.featureKey===d);if(!h)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,d);const i=null===(b=h.variations.find(a=>a.key===f))||void 0===b?void 0:b.variables.find(a=>a.key===e);if(!i)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariableNotFound,e,c);const{type:j,value:k}=_utilities.Utilities.parseFeatureVariable(i).throw();return{type:j,value:k}}getFeatureFlagVariables(a,b){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);_utilities.Utilities.validateVisitorCode(a).throw();const{variationKey:c}=this._getFeatureFlagVariation(a,b).throw(),d=this.clientConfiguration.featureFlags,e=d.find(a=>a.featureKey===b);if(!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b);const f=e.variations.find(a=>a.key===c);if(!f)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagVariationNotFound,c,a);const g=[];for(const c of f.variables){const a=_utilities.Utilities.parseFeatureVariable(c).throw();g.push(a)}return g}isFeatureFlagActive(a,b){try{const c=this.getFeatureFlagVariationKey(a,b);return c!==_constants.OFF_VARIATION_KEY}catch(a){if(a instanceof _kameleoonError.KameleoonError&&a.type===_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled)return!1;throw a}}async getRemoteData(a){const b=await this.requester.getRemoteData(a);return b.throw()}async getVisitorWarehouseAudience(a){let{visitorCode:b,customDataIndex:c,warehouseKey:d}=a;_utilities.Utilities.validateVisitorCode(b).throw();const e=await this.getRemoteData(d||b);if(!e)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.RemoteData);if(!e[_constants.WAREHOUSE_AUDIENCE_KEY]||0===Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]).length)return null;const f=new _kameleoonData.CustomData(c,...Object.keys(e[_constants.WAREHOUSE_AUDIENCE_KEY]));return this.dataManager.addData(b,f),f}onConfigurationUpdate(a){if(!this.initialized)throw new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization);this.clientConfiguration.onConfigurationUpdate(a)}getEngineTrackingCode(a){return _utilities.Utilities.validateVisitorCode(a).throw(),_utilities.Utilities.getTrackingCode(this.trackingCache,a)}setUserConsent(a){let{visitorCode:b,consent:c,setData:d}=a;_utilities.Utilities.validateVisitorCode(b).throw(),this.consentDataStorage.update({[b]:c}),c?d({visitorCode:b,key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.DEFAULT_MAX_AGE,path:_visitorCodeManager.PATH}):this.visitorCodeManager.consentRequired&&d({visitorCode:"",key:_storage.KameleoonStorageKey.VisitorCode,maxAge:_visitorCodeManager.ZERO_MAX_AGE,path:_visitorCodeManager.PATH})}_isConsentProvided(a){const{isConsentRequired:b}=this.clientConfiguration,c=this.consentDataStorage.read();return!b||c.ok&&c.data[a]}_getFeatureFlagVariation(a,b){if(!this.initialized)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));const c=this.clientConfiguration.featureFlags,d=c.find(a=>a.featureKey===b);if(!d)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagConfigurationNotFound,b));if(!d.environmentEnabled)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.FeatureFlagEnvironmentDisabled,d.featureKey,this.environment||_types.Environment.Production));const e=this.dataManager.storedTargetingData[a],f=this.dataManager.getVisitorIdentifier(a),g=this.variationConfiguration.getVariation({visitorCode:a,visitorIdentifier:f,featureFlag:d,targetingData:e,withAssignment:!0,clientConfiguration:this.clientConfiguration,dataManager:this.dataManager,packageInfo:this.externalPackageInfo}).throw(),{experimentId:h,variationId:i}=g;return"number"==typeof i&&"number"==typeof h&&_utilities.Utilities.updateCache({cacheManager:this.trackingCache,visitorCode:a,experimentId:h,variationId:i}),_utilities.Utilities.trackFeatureExperiment({visitorCode:a,requester:this.requester,featureFlagVariation:g,dataManager:this.dataManager,isOfflineModeOn:this.isOfflineModeOn,isConsentProvided:this._isConsentProvided(a),offlineTrackingStorage:this.offlineTrackingStorage,variationConfiguration:this.variationConfiguration}),(0,_tsRes.Ok)(g)}}exports.KameleoonClient=KameleoonClient;
|
|
2
2
|
//# sourceMappingURL=kameleoonClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","constructor","a","siteCode","configuration","internalConfiguration","_defineProperty","settings","clientSettings","ClientSettings","environment","externalStorage","externalEventSource","externalPackageInfo","externalVisitorCodeManager","externalRequestDispatcher","externalClientConfiguration","requester","Requester","packageInfo","requestDispatcher","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","DataStorage","KameleoonStorageKey","ClientData","targetingDataStorage","TargetingData","variationDataStorage","VariationData","offlineTrackingStorage","OfflineTracking","consentDataStorage","ConsentData","dataManager","DataManager","storage","targetingCleanupInterval","targetingDataCleanupInterval","eventSource","KameleoonEventSource","clientConfiguration","ClientConfiguration","variationConfiguration","VariationConfiguration","visitorCodeManager","initialize","useCache","result","throw","isOfflineModeOn","initialized","ok","addData","visitorCode","Utilities","validateVisitorCode","KameleoonError","KameleoonException","Initialization","b","arguments","length","data","Array","d","getRemoteVisitorData","shouldAddData","filters","DEFAULT_VISITOR_DATA_FILTERS","previousVisitAmount","VisitAmount","getVisitorData","visitorData","visitsData","parseVisitorData","dataItem","isPersistentCustomData","trackConversion","goalId","revenue","isUniqueIdentifier","Conversion","flush","trackData","isMappingIdentifier","isConsentProvided","_isConsentProvided","unsentDataVisitors","sendOfflineTracking","visitorCodeKey","getFeatureFlags","featureFlags","map","id","featureKey","key","getVisitorFeatureFlags","resultFeatureFlags","targetingData","storedTargetingData","visitorIdentifier","getVisitorIdentifier","featureFlag","variationData","getVariation","variationKey","OFF_VARIATION_KEY","environmentEnabled","featureFlagId","push","getFeatureFlagVariationKey","_getFeatureFlagVariation","getFeatureFlagVariable","variableKey","find","item","FeatureFlagConfigurationNotFound","variable","variations","variables","FeatureFlagVariableNotFound","type","value","parseFeatureVariable","getFeatureFlagVariables","variation","FeatureFlagVariationNotFound","parsedVariable","isFeatureFlagActive","err","FeatureFlagEnvironmentDisabled","getRemoteData","remoteData","getVisitorWarehouseAudience","customDataIndex","warehouseKey","RemoteData","WAREHOUSE_AUDIENCE_KEY","Object","keys","customData","CustomData","onConfigurationUpdate","callback","getEngineTrackingCode","getTrackingCode","setUserConsent","consent","setData","update","VisitorCode","maxAge","DEFAULT_MAX_AGE","path","PATH","consentRequired","ZERO_MAX_AGE","isConsentRequired","consentDataResult","read","Err","Environment","Production","withAssignment","experimentId","variationId","updateCache","cacheManager","trackFeatureExperiment","featureFlagVariation","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport { ClientConfiguration, JSONType } from './clientConfiguration';\nimport { ClientSettings } from './clientSettings';\nimport {\n CACHE_CLEANUP_TIMEOUT,\n DEFAULT_VISITOR_DATA_FILTERS,\n OFF_VARIATION_KEY,\n} from './constants';\nimport {\n Conversion,\n CustomData,\n DataManager,\n KameleoonDataType,\n} from './kameleoonData';\nimport { WAREHOUSE_AUDIENCE_KEY } from './constants';\nimport { KameleoonError, KameleoonException } from './kameleoonError';\nimport { Requester } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n DataStorage,\n ConsentDataType,\n IStorage,\n OfflineTracking,\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} from './types';\nimport { IVisitorCodeManager } from './visitorCodeManager';\nimport { Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { TargetingDataType } from './targeting';\nimport { KameleoonEventSource } from './eventSource';\nimport { IKameleoonClient } from './kameleoonClientInterface';\nimport { DEFAULT_MAX_AGE, PATH, ZERO_MAX_AGE } from './visitorCodeManager';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * for communicating with Kameleoon JavaScript SDK Core, when new instance is created\n */\nexport class KameleoonClient implements IKameleoonClient {\n private variationConfiguration: VariationConfiguration;\n private clientConfiguration: ClientConfiguration;\n private dataManager: DataManager;\n private offlineTrackingStorage: IStorage<OfflineTracking>;\n private consentDataStorage: IStorage<ConsentDataType>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private isOfflineModeOn?: boolean;\n private initialized: boolean = false;\n private environment?: Environment;\n private visitorCodeManager: IVisitorCodeManager;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n this.environment = clientSettings.environment;\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalVisitorCodeManager,\n externalRequestDispatcher,\n externalClientConfiguration,\n } = internalConfiguration;\n const requester = new Requester({\n siteCode,\n environment: clientSettings.environment,\n packageInfo: externalPackageInfo,\n requestDispatcher: externalRequestDispatcher,\n });\n const trackingCache = new CacheManager<TrackingCacheItemType>(\n CACHE_CLEANUP_TIMEOUT,\n );\n\n const clientDataStorage = new DataStorage<ClientDataType>(\n externalStorage,\n KameleoonStorageKey.ClientData,\n );\n const targetingDataStorage = new DataStorage<TargetingDataType>(\n externalStorage,\n KameleoonStorageKey.TargetingData,\n );\n const variationDataStorage = new DataStorage<VariationDataType>(\n externalStorage,\n KameleoonStorageKey.VariationData,\n );\n const offlineTrackingStorage = new DataStorage<OfflineTracking>(\n externalStorage,\n KameleoonStorageKey.OfflineTracking,\n );\n const consentDataStorage = new DataStorage<ConsentDataType>(\n externalStorage,\n KameleoonStorageKey.ConsentData,\n );\n\n const dataManager = new DataManager({\n storage: targetingDataStorage,\n targetingCleanupInterval: configuration?.targetingDataCleanupInterval,\n });\n\n const eventSource = new KameleoonEventSource(\n clientSettings.siteCode,\n externalEventSource,\n );\n\n const clientConfiguration = new ClientConfiguration({\n settings: clientSettings,\n storage: clientDataStorage,\n dataManager,\n requester,\n externalClientConfiguration,\n offlineTrackingStorage,\n eventSource,\n externalVisitorCodeManager,\n });\n\n const variationConfiguration = new VariationConfiguration(\n variationDataStorage,\n );\n\n this.variationConfiguration = variationConfiguration;\n this.requester = requester;\n this.trackingCache = trackingCache;\n this.dataManager = dataManager;\n this.clientConfiguration = clientConfiguration;\n this.externalPackageInfo = externalPackageInfo;\n this.offlineTrackingStorage = offlineTrackingStorage;\n this.consentDataStorage = consentDataStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n }\n\n public async initialize(useCache?: boolean): Promise<boolean> {\n const result = await this.clientConfiguration.initialize();\n result.throw();\n\n this.isOfflineModeOn = useCache;\n this.initialized = true;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.dataManager.addData(visitorCode, ...data).throw();\n }\n\n public async getRemoteVisitorData({\n visitorCode,\n shouldAddData = true,\n filters = DEFAULT_VISITOR_DATA_FILTERS,\n }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]> {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { 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 result = await this.requester.getVisitorData(visitorCode, filters);\n const data = result.throw();\n\n const { visitorData, visitsData } = Utilities.parseVisitorData({\n data,\n filters,\n visitorCode,\n variationConfiguration: this.variationConfiguration,\n });\n\n for (const dataItem of visitorData) {\n if (shouldAddData || this.dataManager.isPersistentCustomData(dataItem)) {\n this.addData(visitorCode, dataItem);\n }\n }\n\n // --- 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 isUniqueIdentifier,\n }: TrackConversionParamsType): void {\n this.addData(visitorCode, new Conversion({ goalId, revenue }));\n this.flush(visitorCode, isUniqueIdentifier);\n }\n\n public flush(visitorCode?: string, isUniqueIdentifier?: boolean): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n if (typeof visitorCode === 'string') {\n Utilities.validateVisitorCode(visitorCode).throw();\n }\n\n if (visitorCode) {\n Utilities.trackData({\n visitorCode,\n isMappingIdentifier: isUniqueIdentifier,\n dataManager: this.dataManager,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCode),\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n return;\n }\n\n // --- Note ---\n // `Utilities.trackData` executes `Utilities.sendOfflineTracking` asynchronously at first, but\n // we need to execute `Utilities.sendOfflineTracking` even if calling `Utilities.trackData` is skipped\n // due to lack of unsent data\n if (!this.dataManager.unsentDataVisitors.length) {\n Utilities.sendOfflineTracking({\n requester: this.requester,\n storage: this.offlineTrackingStorage,\n });\n return;\n }\n\n for (const visitorCodeKey of this.dataManager.unsentDataVisitors) {\n Utilities.trackData({\n visitorCode: visitorCodeKey,\n dataManager: this.dataManager,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCodeKey),\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n }\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n return this.clientConfiguration.featureFlags.map(({ id, featureKey }) => ({\n id,\n key: featureKey,\n }));\n }\n\n public getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n const targetingData = this.dataManager.storedTargetingData[visitorCode];\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n for (const featureFlag of featureFlags) {\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n targetingData,\n featureFlag,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n if (\n variationData.variationKey !== OFF_VARIATION_KEY &&\n featureFlag.environmentEnabled\n ) {\n const { featureFlagId, featureKey } = variationData;\n\n resultFeatureFlags.push({ id: featureFlagId, key: featureKey });\n }\n }\n\n return resultFeatureFlags;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureFlagVariableType {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const featureFlags = this.clientConfiguration.featureFlags;\n\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n\n const variable = featureFlag.variations\n .find((item) => item.key === variationKey)\n ?.variables.find((item) => item.key === variableKey);\n\n if (!variable) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariableNotFound,\n variableKey,\n visitorCode,\n );\n }\n\n const { type, value } = Utilities.parseFeatureVariable(variable).throw();\n\n return { type, value } as FeatureFlagVariableType;\n }\n\n public getFeatureFlagVariables(\n visitorCode: string,\n featureKey: string,\n ): FeatureVariableResultType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const featureFlags = this.clientConfiguration.featureFlags;\n\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n\n const variation = featureFlag.variations.find(\n (item) => item.key === variationKey,\n );\n\n if (!variation) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariationNotFound,\n variationKey,\n visitorCode,\n );\n }\n\n const variables: FeatureVariableResultType[] = [];\n\n for (const variable of variation.variables) {\n const parsedVariable = Utilities.parseFeatureVariable(variable).throw();\n variables.push(parsedVariable);\n }\n\n return variables;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n 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 Utilities.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(KameleoonException.RemoteData);\n }\n\n if (\n !data[WAREHOUSE_AUDIENCE_KEY] ||\n Object.keys(data[WAREHOUSE_AUDIENCE_KEY]).length === 0\n ) {\n return null;\n }\n\n const customData = new CustomData(\n customDataIndex,\n ...Object.keys(data[WAREHOUSE_AUDIENCE_KEY]),\n );\n\n this.dataManager.addData(visitorCode, customData);\n\n return customData;\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.clientConfiguration.onConfigurationUpdate(callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n protected setUserConsent({\n visitorCode,\n consent,\n setData,\n }: SetUserConsentParametersType): void {\n Utilities.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 _getFeatureFlagVariation(\n visitorCode: string,\n featureKey: string,\n ): Result<FeatureFlagVariationType, KameleoonError> {\n if (!this.initialized) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n ),\n );\n }\n\n if (!featureFlag.environmentEnabled) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagEnvironmentDisabled,\n featureFlag.featureKey,\n this.environment || Environment.Production,\n ),\n );\n }\n\n const targetingData = this.dataManager.storedTargetingData[visitorCode];\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n featureFlag,\n targetingData,\n withAssignment: true,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n const { experimentId, variationId } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n Utilities.trackFeatureExperiment({\n visitorCode,\n requester: this.requester,\n featureFlagVariation: variationData,\n dataManager: this.dataManager,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCode),\n offlineTrackingStorage: this.offlineTrackingStorage,\n variationConfiguration: this.variationConfiguration,\n });\n\n return Ok(variationData);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","constructor","a","siteCode","configuration","internalConfiguration","_defineProperty","settings","clientSettings","ClientSettings","environment","externalStorage","externalEventSource","externalPackageInfo","externalVisitorCodeManager","externalRequestDispatcher","externalClientConfiguration","trackingCache","CacheManager","CACHE_CLEANUP_TIMEOUT","clientDataStorage","DataStorage","KameleoonStorageKey","ClientData","targetingDataStorage","TargetingData","variationDataStorage","VariationData","offlineTrackingStorage","OfflineTracking","consentDataStorage","ConsentData","dataManager","DataManager","storage","targetingCleanupInterval","targetingDataCleanupInterval","eventSource","KameleoonEventSource","requester","Requester","packageInfo","requestDispatcher","clientConfiguration","ClientConfiguration","variationConfiguration","VariationConfiguration","visitorCodeManager","initialize","useCache","result","throw","isOfflineModeOn","initialized","ok","addData","visitorCode","Utilities","validateVisitorCode","KameleoonError","KameleoonException","Initialization","b","arguments","length","data","Array","d","getRemoteVisitorData","shouldAddData","filters","DEFAULT_VISITOR_DATA_FILTERS","previousVisitAmount","VisitAmount","getVisitorData","visitorData","visitsData","parseVisitorData","dataItem","isPersistentCustomData","trackConversion","goalId","revenue","isUniqueIdentifier","Conversion","flush","trackData","isMappingIdentifier","isConsentProvided","_isConsentProvided","unsentDataVisitors","sendOfflineTracking","visitorCodeKey","getFeatureFlags","featureFlags","map","id","featureKey","key","getVisitorFeatureFlags","resultFeatureFlags","targetingData","storedTargetingData","visitorIdentifier","getVisitorIdentifier","featureFlag","variationData","getVariation","variationKey","OFF_VARIATION_KEY","environmentEnabled","featureFlagId","push","getFeatureFlagVariationKey","_getFeatureFlagVariation","getFeatureFlagVariable","variableKey","find","item","FeatureFlagConfigurationNotFound","variable","variations","variables","FeatureFlagVariableNotFound","type","value","parseFeatureVariable","getFeatureFlagVariables","variation","FeatureFlagVariationNotFound","parsedVariable","isFeatureFlagActive","err","FeatureFlagEnvironmentDisabled","getRemoteData","remoteData","getVisitorWarehouseAudience","customDataIndex","warehouseKey","RemoteData","WAREHOUSE_AUDIENCE_KEY","Object","keys","customData","CustomData","onConfigurationUpdate","callback","getEngineTrackingCode","getTrackingCode","setUserConsent","consent","setData","update","VisitorCode","maxAge","DEFAULT_MAX_AGE","path","PATH","consentRequired","ZERO_MAX_AGE","isConsentRequired","consentDataResult","read","Err","Environment","Production","withAssignment","experimentId","variationId","updateCache","cacheManager","trackFeatureExperiment","featureFlagVariation","Ok","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CacheManager } from './cacheManager';\nimport { ClientConfiguration, JSONType } from './clientConfiguration';\nimport { ClientSettings } from './clientSettings';\nimport {\n CACHE_CLEANUP_TIMEOUT,\n DEFAULT_VISITOR_DATA_FILTERS,\n OFF_VARIATION_KEY,\n} from './constants';\nimport {\n Conversion,\n CustomData,\n DataManager,\n KameleoonDataType,\n} from './kameleoonData';\nimport { WAREHOUSE_AUDIENCE_KEY } from './constants';\nimport { KameleoonError, KameleoonException } from './kameleoonError';\nimport { Requester } from './requester';\nimport {\n ClientDataType,\n KameleoonStorageKey,\n VariationDataType,\n DataStorage,\n ConsentDataType,\n IStorage,\n OfflineTracking,\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} from './types';\nimport { IVisitorCodeManager } from './visitorCodeManager';\nimport { Utilities } from './utilities';\nimport {\n FeatureFlagVariationType,\n VariationConfiguration,\n} from './variationConfiguration';\nimport { TargetingDataType } from './targeting';\nimport { KameleoonEventSource } from './eventSource';\nimport { IKameleoonClient } from './kameleoonClientInterface';\nimport { DEFAULT_MAX_AGE, PATH, ZERO_MAX_AGE } from './visitorCodeManager';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * for communicating with Kameleoon JavaScript SDK Core, when new instance is created\n */\nexport class KameleoonClient implements IKameleoonClient {\n private variationConfiguration: VariationConfiguration;\n private clientConfiguration: ClientConfiguration;\n private dataManager: DataManager;\n private offlineTrackingStorage: IStorage<OfflineTracking>;\n private consentDataStorage: IStorage<ConsentDataType>;\n private trackingCache: CacheManager<TrackingCacheItemType>;\n private requester: Requester;\n private externalPackageInfo: ExternalPackageInfoType;\n private isOfflineModeOn?: boolean;\n private initialized: boolean = false;\n private environment?: Environment;\n private visitorCodeManager: IVisitorCodeManager;\n\n /**\n * @param {SDKCoreParameters} sdkCoreParameters - parameters for initializing sdk core\n */\n constructor({\n siteCode,\n configuration,\n internalConfiguration,\n }: SDKCoreParameters) {\n const { settings: clientSettings } = new ClientSettings(\n siteCode,\n configuration,\n );\n this.environment = clientSettings.environment;\n const {\n externalStorage,\n externalEventSource,\n externalPackageInfo,\n externalVisitorCodeManager,\n externalRequestDispatcher,\n externalClientConfiguration,\n } = internalConfiguration;\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 variationDataStorage = new DataStorage<VariationDataType>(\n externalStorage,\n KameleoonStorageKey.VariationData,\n );\n const offlineTrackingStorage = new DataStorage<OfflineTracking>(\n externalStorage,\n KameleoonStorageKey.OfflineTracking,\n );\n const consentDataStorage = new DataStorage<ConsentDataType>(\n externalStorage,\n KameleoonStorageKey.ConsentData,\n );\n\n const dataManager = new DataManager({\n storage: targetingDataStorage,\n targetingCleanupInterval: configuration?.targetingDataCleanupInterval,\n });\n\n const eventSource = new KameleoonEventSource(\n clientSettings.siteCode,\n externalEventSource,\n );\n\n const requester = new Requester({\n siteCode,\n environment: clientSettings.environment,\n packageInfo: externalPackageInfo,\n requestDispatcher: externalRequestDispatcher,\n });\n\n const clientConfiguration = new ClientConfiguration({\n settings: clientSettings,\n storage: clientDataStorage,\n dataManager,\n requester,\n externalClientConfiguration,\n offlineTrackingStorage,\n eventSource,\n externalVisitorCodeManager,\n });\n\n const variationConfiguration = new VariationConfiguration(\n variationDataStorage,\n );\n\n this.variationConfiguration = variationConfiguration;\n this.requester = requester;\n this.trackingCache = trackingCache;\n this.dataManager = dataManager;\n this.clientConfiguration = clientConfiguration;\n this.externalPackageInfo = externalPackageInfo;\n this.offlineTrackingStorage = offlineTrackingStorage;\n this.consentDataStorage = consentDataStorage;\n this.visitorCodeManager = externalVisitorCodeManager;\n }\n\n public async initialize(useCache?: boolean): Promise<boolean> {\n const result = await this.clientConfiguration.initialize();\n result.throw();\n\n this.isOfflineModeOn = useCache;\n this.initialized = true;\n\n return result.ok;\n }\n\n public addData(visitorCode: string, ...data: KameleoonDataType[]): void {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.dataManager.addData(visitorCode, ...data).throw();\n }\n\n public async getRemoteVisitorData({\n visitorCode,\n shouldAddData = true,\n filters = DEFAULT_VISITOR_DATA_FILTERS,\n }: RemoteVisitorDataParamsType): Promise<KameleoonDataType[]> {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { 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 result = await this.requester.getVisitorData(visitorCode, filters);\n const data = result.throw();\n\n const { visitorData, visitsData } = Utilities.parseVisitorData({\n data,\n filters,\n visitorCode,\n variationConfiguration: this.variationConfiguration,\n });\n\n for (const dataItem of visitorData) {\n if (shouldAddData || this.dataManager.isPersistentCustomData(dataItem)) {\n this.addData(visitorCode, dataItem);\n }\n }\n\n // --- 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 isUniqueIdentifier,\n }: TrackConversionParamsType): void {\n this.addData(visitorCode, new Conversion({ goalId, revenue }));\n this.flush(visitorCode, isUniqueIdentifier);\n }\n\n public flush(visitorCode?: string, isUniqueIdentifier?: boolean): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n if (typeof visitorCode === 'string') {\n Utilities.validateVisitorCode(visitorCode).throw();\n }\n\n if (visitorCode) {\n Utilities.trackData({\n visitorCode,\n isMappingIdentifier: isUniqueIdentifier,\n dataManager: this.dataManager,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCode),\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n return;\n }\n\n // --- Note ---\n // `Utilities.trackData` executes `Utilities.sendOfflineTracking` asynchronously at first, but\n // we need to execute `Utilities.sendOfflineTracking` even if calling `Utilities.trackData` is skipped\n // due to lack of unsent data\n if (!this.dataManager.unsentDataVisitors.length) {\n Utilities.sendOfflineTracking({\n requester: this.requester,\n storage: this.offlineTrackingStorage,\n });\n return;\n }\n\n for (const visitorCodeKey of this.dataManager.unsentDataVisitors) {\n Utilities.trackData({\n visitorCode: visitorCodeKey,\n dataManager: this.dataManager,\n requester: this.requester,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCodeKey),\n offlineTrackingStorage: this.offlineTrackingStorage,\n });\n }\n }\n\n public getFeatureFlags(): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n return this.clientConfiguration.featureFlags.map(({ id, featureKey }) => ({\n id,\n key: featureKey,\n }));\n }\n\n public getVisitorFeatureFlags(visitorCode: string): FeatureFlagType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const resultFeatureFlags: FeatureFlagType[] = [];\n\n const targetingData = this.dataManager.storedTargetingData[visitorCode];\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n for (const featureFlag of featureFlags) {\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n targetingData,\n featureFlag,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n if (\n variationData.variationKey !== OFF_VARIATION_KEY &&\n featureFlag.environmentEnabled\n ) {\n const { featureFlagId, featureKey } = variationData;\n\n resultFeatureFlags.push({ id: featureFlagId, key: featureKey });\n }\n }\n\n return resultFeatureFlags;\n }\n\n public getFeatureFlagVariationKey(\n visitorCode: string,\n featureKey: string,\n ): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n return variationKey;\n }\n\n public getFeatureFlagVariable({\n visitorCode,\n featureKey,\n variableKey,\n }: GetFeatureFlagVariableParamsType): FeatureFlagVariableType {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const featureFlags = this.clientConfiguration.featureFlags;\n\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n\n const variable = featureFlag.variations\n .find((item) => item.key === variationKey)\n ?.variables.find((item) => item.key === variableKey);\n\n if (!variable) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariableNotFound,\n variableKey,\n visitorCode,\n );\n }\n\n const { type, value } = Utilities.parseFeatureVariable(variable).throw();\n\n return { type, value } as FeatureFlagVariableType;\n }\n\n public getFeatureFlagVariables(\n visitorCode: string,\n featureKey: string,\n ): FeatureVariableResultType[] {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n Utilities.validateVisitorCode(visitorCode).throw();\n\n const { variationKey } = this._getFeatureFlagVariation(\n visitorCode,\n featureKey,\n ).throw();\n\n const featureFlags = this.clientConfiguration.featureFlags;\n\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n );\n }\n\n const variation = featureFlag.variations.find(\n (item) => item.key === variationKey,\n );\n\n if (!variation) {\n throw new KameleoonError(\n KameleoonException.FeatureFlagVariationNotFound,\n variationKey,\n visitorCode,\n );\n }\n\n const variables: FeatureVariableResultType[] = [];\n\n for (const variable of variation.variables) {\n const parsedVariable = Utilities.parseFeatureVariable(variable).throw();\n variables.push(parsedVariable);\n }\n\n return variables;\n }\n\n public isFeatureFlagActive(visitorCode: string, featureKey: string): boolean {\n 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 Utilities.validateVisitorCode(visitorCode).throw();\n\n const data = await this.getRemoteData(warehouseKey || visitorCode);\n\n if (!data) {\n throw new KameleoonError(KameleoonException.RemoteData);\n }\n\n if (\n !data[WAREHOUSE_AUDIENCE_KEY] ||\n Object.keys(data[WAREHOUSE_AUDIENCE_KEY]).length === 0\n ) {\n return null;\n }\n\n const customData = new CustomData(\n customDataIndex,\n ...Object.keys(data[WAREHOUSE_AUDIENCE_KEY]),\n );\n\n this.dataManager.addData(visitorCode, customData);\n\n return customData;\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n if (!this.initialized) {\n throw new KameleoonError(KameleoonException.Initialization);\n }\n\n this.clientConfiguration.onConfigurationUpdate(callback);\n }\n\n public getEngineTrackingCode(visitorCode: string): string {\n Utilities.validateVisitorCode(visitorCode).throw();\n\n return Utilities.getTrackingCode(this.trackingCache, visitorCode);\n }\n\n protected setUserConsent({\n visitorCode,\n consent,\n setData,\n }: SetUserConsentParametersType): void {\n Utilities.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 _getFeatureFlagVariation(\n visitorCode: string,\n featureKey: string,\n ): Result<FeatureFlagVariationType, KameleoonError> {\n if (!this.initialized) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n const featureFlags = this.clientConfiguration.featureFlags;\n const featureFlag = featureFlags.find(\n (item) => item.featureKey === featureKey,\n );\n\n if (!featureFlag) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagConfigurationNotFound,\n featureKey,\n ),\n );\n }\n\n if (!featureFlag.environmentEnabled) {\n return Err(\n new KameleoonError(\n KameleoonException.FeatureFlagEnvironmentDisabled,\n featureFlag.featureKey,\n this.environment || Environment.Production,\n ),\n );\n }\n\n const targetingData = this.dataManager.storedTargetingData[visitorCode];\n const visitorIdentifier =\n this.dataManager.getVisitorIdentifier(visitorCode);\n\n const variationData = this.variationConfiguration\n .getVariation({\n visitorCode,\n visitorIdentifier,\n featureFlag,\n targetingData,\n withAssignment: true,\n clientConfiguration: this.clientConfiguration,\n dataManager: this.dataManager,\n packageInfo: this.externalPackageInfo,\n })\n .throw();\n\n const { experimentId, variationId } = variationData;\n\n if (typeof variationId === 'number' && typeof experimentId === 'number') {\n Utilities.updateCache({\n cacheManager: this.trackingCache,\n visitorCode,\n experimentId,\n variationId,\n });\n }\n\n Utilities.trackFeatureExperiment({\n visitorCode,\n requester: this.requester,\n featureFlagVariation: variationData,\n dataManager: this.dataManager,\n isOfflineModeOn: this.isOfflineModeOn,\n isConsentProvided: this._isConsentProvided(visitorCode),\n offlineTrackingStorage: this.offlineTrackingStorage,\n variationConfiguration: this.variationConfiguration,\n });\n\n return Ok(variationData);\n }\n}\n"],"mappings":"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"}
|
|
@@ -15,10 +15,8 @@ export declare const UrlParameter: StrictParameterRecord<ParameterType>;
|
|
|
15
15
|
export declare const UrlFirstParameter: StrictFirstParameterRecord<ParameterType>;
|
|
16
16
|
export declare const UrlQuery: StrictQueryRecord<QueryType>;
|
|
17
17
|
export declare const UrlTracking: StrictTrackingRecord<TrackingType>;
|
|
18
|
+
export declare const DATA_API_DOMAIN = "data.kameleoon";
|
|
18
19
|
export declare const URL: {
|
|
19
20
|
SERVER_SENT_EVENTS: string;
|
|
20
21
|
CLIENT_CONFIGURATION: string;
|
|
21
|
-
VISIT_EVENT: string;
|
|
22
|
-
VISIT_DATA: string;
|
|
23
|
-
DATA_MAP: string;
|
|
24
22
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var _types=require("../types");Object.defineProperty(exports,"__esModule",{value:!0}),exports.UrlTracking=exports.UrlQuery=exports.UrlParameter=exports.UrlFirstParameter=exports.UrlEventType=exports.URL=exports.RETRIES_DELAY=exports.NUMBER_OF_RETRIES=exports.Header=exports.DEFAULT_REQUEST_TIMEOUT=void 0;const DEFAULT_REQUEST_TIMEOUT=exports.DEFAULT_REQUEST_TIMEOUT=10*_types.Milliseconds.Second,RETRIES_DELAY=exports.RETRIES_DELAY=5*_types.Milliseconds.Second,NUMBER_OF_RETRIES=exports.NUMBER_OF_RETRIES=3;let Header=exports.Header=function(a){return a.UserAgent="User-Agent",a.ContentType="Content-Type",a.SdkVersion="X-Kameleoon-SDK-Version",a.SdkType="X-Kameleoon-SDK-Type",a.Authorization="Authorization",a.AcceptEncoding="Accept-Encoding",a}({});const UrlEventType=exports.UrlEventType={CustomData:"eventType=customData",StaticData:"eventType=staticData",Page:"eventType=page",Conversion:"eventType=conversion",Activity:"eventType=activity",Experiment:"eventType=experiment",Geolocation:"eventType=geolocation"},UrlParameter=exports.UrlParameter={Title:"&title=",ReferrersIndices:"&referrersIndices=",Negative:"&negative=",Revenue:"&revenue=",Overwrite:"&overwrite=",Index:"&index=",BrowserIndex:"&browserIndex=",BrowserVersion:"&browserVersion=",Href:"&href=",DeviceType:"&deviceType=",SiteCode:"&siteCode=",GoalId:"&goalId=",VisitorCode:"&visitorCode=",VariationId:"&variationId=",Ts:"&ts=",Key:"&key=",SdkName:"&sdkName=",SdkVersion:"&sdkVersion=",ValuesCountMap:"&valuesCountMap=",Nonce:"&nonce=",Id:"&id=",CustomData:"&customData=",CurrentVisit:"¤tVisit=",MaxNumberPreviousVisits:"&maxNumberPreviousVisits=",Os:"&os=",OsIndex:"&osIndex=",Country:"&country=",City:"&city=",Region:"®ion=",Latitude:"&latitude=",Longitude:"&longitude=",PostalCode:"&postalCode=",Conversion:"&conversion=",StaticData:"&staticData=",Geolocation:"&geolocation=",Page:"&page=",Experiment:"&experiment=",Browser:"&browser=",Environment:"&environment=",MappingIdentifier:"&mappingIdentifier=",MappingValue:"&mappingValue="},UrlFirstParameter=exports.UrlFirstParameter={CustomData:"?customData=",StaticData:"?staticData=",Page:"?page=",Conversion:"?conversion=",Geolocation:"?geolocation=",Experiment:"?experiment=",ValuesCountMap:"?valuesCountMap=",Id:"?id=",Nonce:"?nonce=",Country:"?country=",Environment:"?environment=",City:"?city=",Region:"?region=",Latitude:"?latitude=",Longitude:"?longitude=",PostalCode:"?postalCode=",SdkName:"?sdkName=",SdkVersion:"?sdkVersion=",BrowserIndex:"?browserIndex=",BrowserVersion:"?browserVersion=",SiteCode:"?siteCode=",VisitorCode:"?visitorCode=",CurrentVisit:"?currentVisit=",MaxNumberPreviousVisits:"?maxNumberPreviousVisits=",Negative:"?negative=",Revenue:"?revenue=",Title:"?title=",Os:"?os=",OsIndex:"?osIndex=",Browser:"?browser=",ReferrersIndices:"?referrersIndices=",Overwrite:"?overwrite=",Index:"?index=",Href:"?href=",VariationId:"?variationId=",DeviceType:"?deviceType=",GoalId:"?goalId=",Ts:"?ts=",Key:"?key=",MappingIdentifier:"?mappingIdentifier=",MappingValue:"?mappingValue="},UrlQuery=exports.UrlQuery={Sse:"sse?siteCode=",Map:"map?siteCode=",Events:"events?siteCode=",Visitor:"visitor?siteCode="},UrlTracking=exports.UrlTracking={Visit:"visit/",Map:"map/"},
|
|
1
|
+
"use strict";var _types=require("../types");Object.defineProperty(exports,"__esModule",{value:!0}),exports.UrlTracking=exports.UrlQuery=exports.UrlParameter=exports.UrlFirstParameter=exports.UrlEventType=exports.URL=exports.RETRIES_DELAY=exports.NUMBER_OF_RETRIES=exports.Header=exports.DEFAULT_REQUEST_TIMEOUT=exports.DATA_API_DOMAIN=void 0;const DEFAULT_REQUEST_TIMEOUT=exports.DEFAULT_REQUEST_TIMEOUT=10*_types.Milliseconds.Second,RETRIES_DELAY=exports.RETRIES_DELAY=5*_types.Milliseconds.Second,NUMBER_OF_RETRIES=exports.NUMBER_OF_RETRIES=3;let Header=exports.Header=function(a){return a.UserAgent="User-Agent",a.ContentType="Content-Type",a.SdkVersion="X-Kameleoon-SDK-Version",a.SdkType="X-Kameleoon-SDK-Type",a.Authorization="Authorization",a.AcceptEncoding="Accept-Encoding",a}({});const UrlEventType=exports.UrlEventType={CustomData:"eventType=customData",StaticData:"eventType=staticData",Page:"eventType=page",Conversion:"eventType=conversion",Activity:"eventType=activity",Experiment:"eventType=experiment",Geolocation:"eventType=geolocation"},UrlParameter=exports.UrlParameter={Title:"&title=",ReferrersIndices:"&referrersIndices=",Negative:"&negative=",Revenue:"&revenue=",Overwrite:"&overwrite=",Index:"&index=",BrowserIndex:"&browserIndex=",BrowserVersion:"&browserVersion=",Href:"&href=",DeviceType:"&deviceType=",SiteCode:"&siteCode=",GoalId:"&goalId=",VisitorCode:"&visitorCode=",VariationId:"&variationId=",Ts:"&ts=",Key:"&key=",SdkName:"&sdkName=",SdkVersion:"&sdkVersion=",ValuesCountMap:"&valuesCountMap=",Nonce:"&nonce=",Id:"&id=",CustomData:"&customData=",CurrentVisit:"¤tVisit=",MaxNumberPreviousVisits:"&maxNumberPreviousVisits=",Os:"&os=",OsIndex:"&osIndex=",Country:"&country=",City:"&city=",Region:"®ion=",Latitude:"&latitude=",Longitude:"&longitude=",PostalCode:"&postalCode=",Conversion:"&conversion=",StaticData:"&staticData=",Geolocation:"&geolocation=",Page:"&page=",Experiment:"&experiment=",Browser:"&browser=",Environment:"&environment=",MappingIdentifier:"&mappingIdentifier=",MappingValue:"&mappingValue="},UrlFirstParameter=exports.UrlFirstParameter={CustomData:"?customData=",StaticData:"?staticData=",Page:"?page=",Conversion:"?conversion=",Geolocation:"?geolocation=",Experiment:"?experiment=",ValuesCountMap:"?valuesCountMap=",Id:"?id=",Nonce:"?nonce=",Country:"?country=",Environment:"?environment=",City:"?city=",Region:"?region=",Latitude:"?latitude=",Longitude:"?longitude=",PostalCode:"?postalCode=",SdkName:"?sdkName=",SdkVersion:"?sdkVersion=",BrowserIndex:"?browserIndex=",BrowserVersion:"?browserVersion=",SiteCode:"?siteCode=",VisitorCode:"?visitorCode=",CurrentVisit:"?currentVisit=",MaxNumberPreviousVisits:"?maxNumberPreviousVisits=",Negative:"?negative=",Revenue:"?revenue=",Title:"?title=",Os:"?os=",OsIndex:"?osIndex=",Browser:"?browser=",ReferrersIndices:"?referrersIndices=",Overwrite:"?overwrite=",Index:"?index=",Href:"?href=",VariationId:"?variationId=",DeviceType:"?deviceType=",GoalId:"?goalId=",Ts:"?ts=",Key:"?key=",MappingIdentifier:"?mappingIdentifier=",MappingValue:"?mappingValue="},UrlQuery=exports.UrlQuery={Sse:"sse?siteCode=",Map:"map?siteCode=",Events:"events?siteCode=",Visitor:"visitor?siteCode="},UrlTracking=exports.UrlTracking={Visit:"visit/",Map:"map/"},DATA_API_DOMAIN=exports.DATA_API_DOMAIN="data.kameleoon",URL=exports.URL={SERVER_SENT_EVENTS:"https://events.kameleoon.com:8110/",CLIENT_CONFIGURATION:"https://sdk-config.kameleoon.eu/"};
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["_types","require","Object","defineProperty","exports","value","UrlTracking","UrlQuery","UrlParameter","UrlFirstParameter","UrlEventType","URL","RETRIES_DELAY","NUMBER_OF_RETRIES","Header","DEFAULT_REQUEST_TIMEOUT","Milliseconds","Second","UserAgent","ContentType","SdkVersion","SdkType","Authorization","AcceptEncoding","CustomData","StaticData","Page","Conversion","Activity","Experiment","Geolocation","Title","ReferrersIndices","Negative","Revenue","Overwrite","Index","BrowserIndex","BrowserVersion","Href","DeviceType","SiteCode","GoalId","VisitorCode","VariationId","Ts","Key","SdkName","ValuesCountMap","Nonce","Id","CurrentVisit","MaxNumberPreviousVisits","Os","OsIndex","Country","City","Region","Latitude","Longitude","PostalCode","Browser","Environment","MappingIdentifier","MappingValue","Sse","Map","Events","Visitor","Visit","
|
|
1
|
+
{"version":3,"file":"constants.js","names":["_types","require","Object","defineProperty","exports","value","UrlTracking","UrlQuery","UrlParameter","UrlFirstParameter","UrlEventType","URL","RETRIES_DELAY","NUMBER_OF_RETRIES","Header","DEFAULT_REQUEST_TIMEOUT","DATA_API_DOMAIN","Milliseconds","Second","UserAgent","ContentType","SdkVersion","SdkType","Authorization","AcceptEncoding","CustomData","StaticData","Page","Conversion","Activity","Experiment","Geolocation","Title","ReferrersIndices","Negative","Revenue","Overwrite","Index","BrowserIndex","BrowserVersion","Href","DeviceType","SiteCode","GoalId","VisitorCode","VariationId","Ts","Key","SdkName","ValuesCountMap","Nonce","Id","CurrentVisit","MaxNumberPreviousVisits","Os","OsIndex","Country","City","Region","Latitude","Longitude","PostalCode","Browser","Environment","MappingIdentifier","MappingValue","Sse","Map","Events","Visitor","Visit","SERVER_SENT_EVENTS","CLIENT_CONFIGURATION"],"sources":["../../src/requester/constants.ts"],"sourcesContent":["import { Milliseconds } from 'src/types';\nimport {\n EventType,\n ParameterType,\n QueryType,\n StrictEventTypeRecord,\n StrictFirstParameterRecord,\n StrictParameterRecord,\n StrictQueryRecord,\n StrictTrackingRecord,\n TrackingType,\n} from './types';\n\nexport const DEFAULT_REQUEST_TIMEOUT = 10 * Milliseconds.Second;\nexport const RETRIES_DELAY = 5 * Milliseconds.Second;\nexport const NUMBER_OF_RETRIES = 3;\n\nexport enum Header {\n UserAgent = 'User-Agent',\n ContentType = 'Content-Type',\n SdkVersion = 'X-Kameleoon-SDK-Version',\n SdkType = 'X-Kameleoon-SDK-Type',\n Authorization = 'Authorization',\n AcceptEncoding = 'Accept-Encoding',\n}\n\nexport const UrlEventType: StrictEventTypeRecord<EventType> = {\n CustomData: 'eventType=customData',\n StaticData: 'eventType=staticData',\n Page: 'eventType=page',\n Conversion: 'eventType=conversion',\n Activity: 'eventType=activity',\n Experiment: 'eventType=experiment',\n Geolocation: 'eventType=geolocation',\n};\nexport const UrlParameter: StrictParameterRecord<ParameterType> = {\n Title: '&title=',\n ReferrersIndices: '&referrersIndices=',\n Negative: '&negative=',\n Revenue: '&revenue=',\n Overwrite: '&overwrite=',\n Index: '&index=',\n BrowserIndex: '&browserIndex=',\n BrowserVersion: '&browserVersion=',\n Href: '&href=',\n DeviceType: '&deviceType=',\n SiteCode: '&siteCode=',\n GoalId: '&goalId=',\n VisitorCode: '&visitorCode=',\n VariationId: '&variationId=',\n Ts: '&ts=',\n Key: '&key=',\n SdkName: '&sdkName=',\n SdkVersion: '&sdkVersion=',\n ValuesCountMap: '&valuesCountMap=',\n Nonce: '&nonce=',\n Id: '&id=',\n CustomData: '&customData=',\n CurrentVisit: '¤tVisit=',\n MaxNumberPreviousVisits: '&maxNumberPreviousVisits=',\n Os: '&os=',\n OsIndex: '&osIndex=',\n Country: '&country=',\n City: '&city=',\n Region: '®ion=',\n Latitude: '&latitude=',\n Longitude: '&longitude=',\n PostalCode: '&postalCode=',\n Conversion: '&conversion=',\n StaticData: '&staticData=',\n Geolocation: '&geolocation=',\n Page: '&page=',\n Experiment: '&experiment=',\n Browser: '&browser=',\n Environment: '&environment=',\n MappingIdentifier: '&mappingIdentifier=',\n MappingValue: '&mappingValue=',\n};\nexport const UrlFirstParameter: StrictFirstParameterRecord<ParameterType> = {\n CustomData: '?customData=',\n StaticData: '?staticData=',\n Page: '?page=',\n Conversion: '?conversion=',\n Geolocation: '?geolocation=',\n Experiment: '?experiment=',\n ValuesCountMap: '?valuesCountMap=',\n Id: '?id=',\n Nonce: '?nonce=',\n Country: '?country=',\n Environment: '?environment=',\n City: '?city=',\n Region: '?region=',\n Latitude: '?latitude=',\n Longitude: '?longitude=',\n PostalCode: '?postalCode=',\n SdkName: '?sdkName=',\n SdkVersion: '?sdkVersion=',\n BrowserIndex: '?browserIndex=',\n BrowserVersion: '?browserVersion=',\n SiteCode: '?siteCode=',\n VisitorCode: '?visitorCode=',\n CurrentVisit: '?currentVisit=',\n MaxNumberPreviousVisits: '?maxNumberPreviousVisits=',\n Negative: '?negative=',\n Revenue: '?revenue=',\n Title: '?title=',\n Os: '?os=',\n OsIndex: '?osIndex=',\n Browser: '?browser=',\n ReferrersIndices: '?referrersIndices=',\n Overwrite: '?overwrite=',\n Index: '?index=',\n Href: '?href=',\n VariationId: '?variationId=',\n DeviceType: '?deviceType=',\n GoalId: '?goalId=',\n Ts: '?ts=',\n Key: '?key=',\n MappingIdentifier: '?mappingIdentifier=',\n MappingValue: '?mappingValue=',\n};\nexport const UrlQuery: StrictQueryRecord<QueryType> = {\n Sse: 'sse?siteCode=',\n Map: 'map?siteCode=',\n Events: 'events?siteCode=',\n Visitor: 'visitor?siteCode=',\n};\nexport const UrlTracking: StrictTrackingRecord<TrackingType> = {\n Visit: 'visit/',\n Map: 'map/',\n};\nexport const DATA_API_DOMAIN = 'data.kameleoon';\n\nexport const URL = {\n SERVER_SENT_EVENTS: 'https://events.kameleoon.com:8110/',\n CLIENT_CONFIGURATION: 'https://sdk-config.kameleoon.eu/',\n};\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { Requester } from './requester';
|
|
2
|
-
export { URL, DEFAULT_REQUEST_TIMEOUT, NUMBER_OF_RETRIES, RETRIES_DELAY, UrlQuery, UrlEventType, UrlParameter, UrlFirstParameter, Header, } from './constants';
|
|
2
|
+
export { URL, DEFAULT_REQUEST_TIMEOUT, NUMBER_OF_RETRIES, DATA_API_DOMAIN, RETRIES_DELAY, UrlQuery, UrlEventType, UrlParameter, UrlFirstParameter, Header, } from './constants';
|
|
3
3
|
export { HttpMethod, HeadersType, VisitType, TrackParametersType, StaticDataEventType, TrackExperimentParamsType, TrackDataParamsType, IExternalRequestDispatcher, GetVisitorDataResultType, } from './types';
|
package/dist/requester/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DEFAULT_REQUEST_TIMEOUT",{enumerable:!0,get:function(){return _constants.DEFAULT_REQUEST_TIMEOUT}}),Object.defineProperty(exports,"GetVisitorDataResultType",{enumerable:!0,get:function(){return _types.GetVisitorDataResultType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function(){return _constants.Header}}),Object.defineProperty(exports,"HeadersType",{enumerable:!0,get:function(){return _types.HeadersType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return _types.HttpMethod}}),Object.defineProperty(exports,"IExternalRequestDispatcher",{enumerable:!0,get:function(){return _types.IExternalRequestDispatcher}}),Object.defineProperty(exports,"NUMBER_OF_RETRIES",{enumerable:!0,get:function(){return _constants.NUMBER_OF_RETRIES}}),Object.defineProperty(exports,"RETRIES_DELAY",{enumerable:!0,get:function(){return _constants.RETRIES_DELAY}}),Object.defineProperty(exports,"Requester",{enumerable:!0,get:function(){return _requester.Requester}}),Object.defineProperty(exports,"StaticDataEventType",{enumerable:!0,get:function(){return _types.StaticDataEventType}}),Object.defineProperty(exports,"TrackDataParamsType",{enumerable:!0,get:function(){return _types.TrackDataParamsType}}),Object.defineProperty(exports,"TrackExperimentParamsType",{enumerable:!0,get:function(){return _types.TrackExperimentParamsType}}),Object.defineProperty(exports,"TrackParametersType",{enumerable:!0,get:function(){return _types.TrackParametersType}}),Object.defineProperty(exports,"URL",{enumerable:!0,get:function(){return _constants.URL}}),Object.defineProperty(exports,"UrlEventType",{enumerable:!0,get:function(){return _constants.UrlEventType}}),Object.defineProperty(exports,"UrlFirstParameter",{enumerable:!0,get:function(){return _constants.UrlFirstParameter}}),Object.defineProperty(exports,"UrlParameter",{enumerable:!0,get:function(){return _constants.UrlParameter}}),Object.defineProperty(exports,"UrlQuery",{enumerable:!0,get:function(){return _constants.UrlQuery}}),Object.defineProperty(exports,"VisitType",{enumerable:!0,get:function(){return _types.VisitType}});var _requester=require("./requester"),_constants=require("./constants"),_types=require("./types");
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"DATA_API_DOMAIN",{enumerable:!0,get:function(){return _constants.DATA_API_DOMAIN}}),Object.defineProperty(exports,"DEFAULT_REQUEST_TIMEOUT",{enumerable:!0,get:function(){return _constants.DEFAULT_REQUEST_TIMEOUT}}),Object.defineProperty(exports,"GetVisitorDataResultType",{enumerable:!0,get:function(){return _types.GetVisitorDataResultType}}),Object.defineProperty(exports,"Header",{enumerable:!0,get:function(){return _constants.Header}}),Object.defineProperty(exports,"HeadersType",{enumerable:!0,get:function(){return _types.HeadersType}}),Object.defineProperty(exports,"HttpMethod",{enumerable:!0,get:function(){return _types.HttpMethod}}),Object.defineProperty(exports,"IExternalRequestDispatcher",{enumerable:!0,get:function(){return _types.IExternalRequestDispatcher}}),Object.defineProperty(exports,"NUMBER_OF_RETRIES",{enumerable:!0,get:function(){return _constants.NUMBER_OF_RETRIES}}),Object.defineProperty(exports,"RETRIES_DELAY",{enumerable:!0,get:function(){return _constants.RETRIES_DELAY}}),Object.defineProperty(exports,"Requester",{enumerable:!0,get:function(){return _requester.Requester}}),Object.defineProperty(exports,"StaticDataEventType",{enumerable:!0,get:function(){return _types.StaticDataEventType}}),Object.defineProperty(exports,"TrackDataParamsType",{enumerable:!0,get:function(){return _types.TrackDataParamsType}}),Object.defineProperty(exports,"TrackExperimentParamsType",{enumerable:!0,get:function(){return _types.TrackExperimentParamsType}}),Object.defineProperty(exports,"TrackParametersType",{enumerable:!0,get:function(){return _types.TrackParametersType}}),Object.defineProperty(exports,"URL",{enumerable:!0,get:function(){return _constants.URL}}),Object.defineProperty(exports,"UrlEventType",{enumerable:!0,get:function(){return _constants.UrlEventType}}),Object.defineProperty(exports,"UrlFirstParameter",{enumerable:!0,get:function(){return _constants.UrlFirstParameter}}),Object.defineProperty(exports,"UrlParameter",{enumerable:!0,get:function(){return _constants.UrlParameter}}),Object.defineProperty(exports,"UrlQuery",{enumerable:!0,get:function(){return _constants.UrlQuery}}),Object.defineProperty(exports,"VisitType",{enumerable:!0,get:function(){return _types.VisitType}});var _requester=require("./requester"),_constants=require("./constants"),_types=require("./types");
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/requester/index.ts"],"sourcesContent":["export { Requester } from './requester';\nexport {\n URL,\n DEFAULT_REQUEST_TIMEOUT,\n NUMBER_OF_RETRIES,\n RETRIES_DELAY,\n UrlQuery,\n UrlEventType,\n UrlParameter,\n UrlFirstParameter,\n Header,\n} from './constants';\nexport {\n HttpMethod,\n HeadersType,\n VisitType,\n TrackParametersType,\n StaticDataEventType,\n TrackExperimentParamsType,\n TrackDataParamsType,\n IExternalRequestDispatcher,\n GetVisitorDataResultType,\n} from './types';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/requester/index.ts"],"sourcesContent":["export { Requester } from './requester';\nexport {\n URL,\n DEFAULT_REQUEST_TIMEOUT,\n NUMBER_OF_RETRIES,\n DATA_API_DOMAIN,\n RETRIES_DELAY,\n UrlQuery,\n UrlEventType,\n UrlParameter,\n UrlFirstParameter,\n Header,\n} from './constants';\nexport {\n HttpMethod,\n HeadersType,\n VisitType,\n TrackParametersType,\n StaticDataEventType,\n TrackExperimentParamsType,\n TrackDataParamsType,\n IExternalRequestDispatcher,\n GetVisitorDataResultType,\n} from './types';\n"],"mappings":""}
|
|
@@ -10,8 +10,6 @@ export interface IRequester {
|
|
|
10
10
|
trackExperiment: ({ visitorCode, dataUrl, variationDataUrl, isUnallocated, isTargetedRule, userAgent, }: TrackExperimentParamsType) => Promise<Result<boolean, void>>;
|
|
11
11
|
}
|
|
12
12
|
export declare class Requester implements IRequester {
|
|
13
|
-
private siteCode;
|
|
14
|
-
private environment?;
|
|
15
13
|
private requestDispatcher;
|
|
16
14
|
private packageInfo;
|
|
17
15
|
constructor({ siteCode, environment, packageInfo, requestDispatcher, }: RequesterParamsType);
|
|
@@ -20,5 +18,4 @@ export declare class Requester implements IRequester {
|
|
|
20
18
|
getVisitorData(visitorCode: string, filters: VisitorDataFiltersType): Promise<Result<GetVisitorDataResultType, KameleoonError>>;
|
|
21
19
|
trackExperiment({ visitorCode, dataUrl, variationDataUrl, userAgent, isUnallocated, }: TrackExperimentParamsType): Promise<Result<boolean, void>>;
|
|
22
20
|
trackData({ visitorCode, body, userAgent, isMappingIdentifier, }: TrackDataParamsType): Promise<Result<boolean, void>>;
|
|
23
|
-
private getTrackingUrl;
|
|
24
21
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Requester=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_utilities=require("../utilities"),_constants=require("./constants");function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class Requester{constructor(a){let{siteCode:b,environment:c,packageInfo:d,requestDispatcher:e}=a;_defineProperty(this,"
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Requester=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_utilities=require("../utilities"),_constants=require("./constants"),_urlProvider=require("./urlProvider");function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class Requester{constructor(a){let{siteCode:b,environment:c,packageInfo:d,requestDispatcher:e}=a;_defineProperty(this,"requestDispatcher",void 0),_defineProperty(this,"packageInfo",void 0),this.requestDispatcher=e,this.packageInfo=d,_urlProvider.UrlProvider.initialize({siteCode:b,packageInfo:d,environment:c})}async getClientConfiguration(a){const b=_urlProvider.UrlProvider.getClientConfigurationUrl(a),c={[_constants.Header.SdkType]:this.packageInfo.type.toLowerCase(),[_constants.Header.SdkVersion]:this.packageInfo.version};try{const a=await this.requestDispatcher.getClientConfiguration(b,c);return a?(0,_tsRes.Ok)(a):(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.MaximumRetriesReached))}catch(a){return(0,_tsRes.Err)(a)}}async getRemoteData(a){const b=_urlProvider.UrlProvider.getRemoteDataUrl(a);try{const a=await this.requestDispatcher.getRemoteData(b);return(0,_tsRes.Ok)(a)}catch(a){return(0,_tsRes.Err)(a)}}async getVisitorData(a,b){const c=_urlProvider.UrlProvider.getVisitorDataUrl(a,b);try{const a=await this.requestDispatcher.getRemoteData(c);return(0,_tsRes.Ok)(a)}catch(a){return(0,_tsRes.Err)(a)}}async trackExperiment(a){let{visitorCode:b,dataUrl:c,variationDataUrl:d,userAgent:e,isUnallocated:f}=a;const g=_urlProvider.UrlProvider.getTrackingUrl(b),h=c?"":_constants.UrlEventType.Activity+_constants.UrlParameter.Nonce+_utilities.Utilities.getNonce(),i=f?h:d,j=i?c+"\n"+i:c,k=e?{[_constants.Header.UserAgent]:e}:void 0;try{const a=await this.requestDispatcher.track({url:g,headers:k,body:j});return(0,_tsRes.Ok)(a)}catch(a){return(0,_tsRes.Err)()}}async trackData(a){let{visitorCode:b,body:c,userAgent:d,isMappingIdentifier:e}=a;const f=_urlProvider.UrlProvider.getTrackingUrl(b,e),g=c||_constants.UrlEventType.Activity+_constants.UrlParameter.Nonce+_utilities.Utilities.getNonce(),h=d?{[_constants.Header.UserAgent]:d}:void 0;try{const a=await this.requestDispatcher.track({url:f,headers:h,body:g});return(0,_tsRes.Ok)(a)}catch(a){return(0,_tsRes.Err)()}}}exports.Requester=Requester;
|
|
2
2
|
//# sourceMappingURL=requester.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requester.js","names":["Requester","constructor","a","siteCode","environment","packageInfo","requestDispatcher","_defineProperty","getClientConfiguration","timeStamp","environmentParam","UrlFirstParameter","Environment","timeStampParam","UrlParameter","Ts","requestUrl","URL","CLIENT_CONFIGURATION","headers","Header","SdkType","type","toLowerCase","SdkVersion","version","response","Ok","Err","KameleoonError","KameleoonException","MaximumRetriesReached","error","getRemoteData","key","DATA_MAP","Key","encodeURI","getVisitorData","visitorCode","filters","customData","previousVisitAmount","currentVisit","conversions","geolocation","experiments","pageViews","device","browser","operatingSystem","customDataParameter","CustomData","conversionsParameter","Conversion","geolocationParameter","Geolocation","experimentsParameter","Experiment","pageViewsParameter","Page","staticDataParameter","StaticData","currentVisitParameter","CurrentVisit","VISIT_DATA","VisitorCode","MaxNumberPreviousVisits","trackExperiment","dataUrl","variationDataUrl","userAgent","isUnallocated","url","getTrackingUrl","unallocatedAddition","UrlEventType","Activity","Nonce","Utilities","getNonce","bodyAddition","extendedBody","UserAgent","track","body","_","trackData","isMappingIdentifier","requestBody","versionWithCore","encodeURIComponent","concat","identifierParameter","MappingValue","VISIT_EVENT","SdkName","exports"],"sources":["../../src/requester/requester.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { Environment, ExternalPackageInfoType } from 'src/types';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { ConfigurationDataType, JSONType } from 'src/clientConfiguration';\nimport { Utilities, VisitorDataFiltersType } from 'src/utilities';\nimport {\n URL,\n UrlParameter,\n Header,\n UrlEventType,\n UrlFirstParameter,\n} from './constants';\nimport {\n RequesterParamsType,\n TrackDataParamsType,\n IExternalRequestDispatcher,\n GetVisitorDataResultType,\n TrackExperimentParamsType,\n HeadersType,\n} from './types';\n\nexport interface IRequester {\n getClientConfiguration: () => Promise<\n Result<ConfigurationDataType, KameleoonError>\n >;\n getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;\n trackData: ({\n visitorCode,\n body,\n userAgent,\n }: TrackDataParamsType) => Promise<Result<boolean, void>>;\n trackExperiment: ({\n visitorCode,\n dataUrl,\n variationDataUrl,\n isUnallocated,\n isTargetedRule,\n userAgent,\n }: TrackExperimentParamsType) => Promise<Result<boolean, void>>;\n}\n\nexport class Requester implements IRequester {\n private siteCode: string;\n private environment?: Environment;\n private requestDispatcher: IExternalRequestDispatcher;\n private packageInfo: ExternalPackageInfoType;\n\n constructor({\n siteCode,\n environment,\n packageInfo,\n requestDispatcher,\n }: RequesterParamsType) {\n this.requestDispatcher = requestDispatcher;\n this.siteCode = siteCode;\n this.environment = environment;\n this.packageInfo = packageInfo;\n }\n\n public async getClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<ConfigurationDataType, KameleoonError>> {\n const environmentParam = this.environment\n ? UrlFirstParameter.Environment + this.environment\n : '';\n let timeStampParam = '';\n\n if (timeStamp) {\n if (environmentParam) {\n timeStampParam = UrlParameter.Ts + timeStamp;\n } else {\n timeStampParam = UrlFirstParameter.Ts + timeStamp;\n }\n }\n\n const requestUrl =\n URL.CLIENT_CONFIGURATION +\n this.siteCode +\n environmentParam +\n timeStampParam;\n\n const headers: HeadersType = {\n [Header.SdkType]: this.packageInfo.type.toLowerCase(),\n [Header.SdkVersion]: this.packageInfo.version,\n };\n\n try {\n const response = await this.requestDispatcher.getClientConfiguration(\n requestUrl,\n headers,\n );\n\n if (response) {\n return Ok(response as ConfigurationDataType);\n }\n\n return Err(new KameleoonError(KameleoonException.MaximumRetriesReached));\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getRemoteData(\n key: string,\n ): Promise<Result<JSONType, KameleoonError>> {\n const requestUrl: string =\n URL.DATA_MAP + this.siteCode + UrlParameter.Key + encodeURI(key);\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getVisitorData(\n visitorCode: string,\n filters: VisitorDataFiltersType,\n ): Promise<Result<GetVisitorDataResultType, KameleoonError>> {\n const {\n customData,\n previousVisitAmount,\n currentVisit,\n conversions,\n geolocation,\n experiments,\n pageViews,\n device,\n browser,\n operatingSystem,\n } = filters;\n\n const customDataParameter = customData\n ? UrlParameter.CustomData + true\n : '';\n const conversionsParameter = conversions\n ? UrlParameter.Conversion + true\n : '';\n const geolocationParameter = geolocation\n ? UrlParameter.Geolocation + true\n : '';\n const experimentsParameter = experiments\n ? UrlParameter.Experiment + true\n : '';\n const pageViewsParameter = pageViews ? UrlParameter.Page + true : '';\n const staticDataParameter = Boolean(device || browser || operatingSystem)\n ? UrlParameter.StaticData + true\n : '';\n const currentVisitParameter = currentVisit\n ? UrlParameter.CurrentVisit + true\n : '';\n\n const requestUrl: string =\n URL.VISIT_DATA +\n this.siteCode +\n UrlParameter.VisitorCode +\n visitorCode +\n UrlParameter.MaxNumberPreviousVisits +\n previousVisitAmount +\n customDataParameter +\n conversionsParameter +\n geolocationParameter +\n experimentsParameter +\n pageViewsParameter +\n staticDataParameter +\n currentVisitParameter;\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response as GetVisitorDataResultType);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async trackExperiment({\n visitorCode,\n dataUrl,\n variationDataUrl,\n userAgent,\n isUnallocated,\n }: TrackExperimentParamsType): Promise<Result<boolean, void>> {\n const url = this.getTrackingUrl(visitorCode);\n\n const unallocatedAddition = !dataUrl\n ? UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce()\n : '';\n\n const bodyAddition = isUnallocated ? unallocatedAddition : variationDataUrl;\n\n const extendedBody = bodyAddition ? dataUrl + '\\n' + bodyAddition : dataUrl;\n\n const headers: HeadersType | undefined = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: extendedBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n\n public async trackData({\n visitorCode,\n body,\n userAgent,\n isMappingIdentifier,\n }: TrackDataParamsType): Promise<Result<boolean, void>> {\n const url = this.getTrackingUrl(visitorCode, isMappingIdentifier);\n\n const requestBody =\n body || UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce();\n\n const headers = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: requestBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n\n private getTrackingUrl(\n visitorCode: string,\n isMappingIdentifier?: boolean,\n ): string {\n const { type, version } = this.packageInfo;\n\n const versionWithCore = encodeURIComponent(\n `${version}/${process.env.npm_package_version}`,\n );\n\n const identifierParameter = isMappingIdentifier\n ? UrlParameter.MappingValue\n : UrlParameter.VisitorCode;\n\n return (\n URL.VISIT_EVENT +\n this.siteCode +\n identifierParameter +\n visitorCode +\n UrlParameter.SdkName +\n type.toLowerCase() +\n UrlParameter.SdkVersion +\n versionWithCore\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requester.js","names":["Requester","constructor","a","siteCode","environment","packageInfo","requestDispatcher","_defineProperty","UrlProvider","initialize","getClientConfiguration","timeStamp","requestUrl","getClientConfigurationUrl","headers","Header","SdkType","type","toLowerCase","SdkVersion","version","response","Ok","Err","KameleoonError","KameleoonException","MaximumRetriesReached","error","getRemoteData","key","getRemoteDataUrl","getVisitorData","visitorCode","filters","getVisitorDataUrl","trackExperiment","dataUrl","variationDataUrl","userAgent","isUnallocated","url","getTrackingUrl","unallocatedAddition","UrlEventType","Activity","UrlParameter","Nonce","Utilities","getNonce","bodyAddition","extendedBody","UserAgent","track","body","_","trackData","isMappingIdentifier","requestBody","exports"],"sources":["../../src/requester/requester.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { ConfigurationDataType, JSONType } from 'src/clientConfiguration';\nimport { Utilities, VisitorDataFiltersType } from 'src/utilities';\nimport { UrlParameter, Header, UrlEventType } from './constants';\nimport {\n RequesterParamsType,\n TrackDataParamsType,\n IExternalRequestDispatcher,\n GetVisitorDataResultType,\n TrackExperimentParamsType,\n HeadersType,\n} from './types';\nimport { UrlProvider } from './urlProvider';\n\nexport interface IRequester {\n getClientConfiguration: () => Promise<\n Result<ConfigurationDataType, KameleoonError>\n >;\n getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;\n trackData: ({\n visitorCode,\n body,\n userAgent,\n }: TrackDataParamsType) => Promise<Result<boolean, void>>;\n trackExperiment: ({\n visitorCode,\n dataUrl,\n variationDataUrl,\n isUnallocated,\n isTargetedRule,\n userAgent,\n }: TrackExperimentParamsType) => Promise<Result<boolean, void>>;\n}\n\nexport class Requester implements IRequester {\n private requestDispatcher: IExternalRequestDispatcher;\n private packageInfo: ExternalPackageInfoType;\n\n constructor({\n siteCode,\n environment,\n packageInfo,\n requestDispatcher,\n }: RequesterParamsType) {\n this.requestDispatcher = requestDispatcher;\n this.packageInfo = packageInfo;\n\n UrlProvider.initialize({ siteCode, packageInfo, environment });\n }\n\n public async getClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<ConfigurationDataType, KameleoonError>> {\n const requestUrl = UrlProvider.getClientConfigurationUrl(timeStamp);\n\n const headers: HeadersType = {\n [Header.SdkType]: this.packageInfo.type.toLowerCase(),\n [Header.SdkVersion]: this.packageInfo.version,\n };\n\n try {\n const response = await this.requestDispatcher.getClientConfiguration(\n requestUrl,\n headers,\n );\n\n if (response) {\n return Ok(response as ConfigurationDataType);\n }\n\n return Err(new KameleoonError(KameleoonException.MaximumRetriesReached));\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getRemoteData(\n key: string,\n ): Promise<Result<JSONType, KameleoonError>> {\n const requestUrl = UrlProvider.getRemoteDataUrl(key);\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getVisitorData(\n visitorCode: string,\n filters: VisitorDataFiltersType,\n ): Promise<Result<GetVisitorDataResultType, KameleoonError>> {\n const requestUrl = UrlProvider.getVisitorDataUrl(visitorCode, filters);\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response as GetVisitorDataResultType);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async trackExperiment({\n visitorCode,\n dataUrl,\n variationDataUrl,\n userAgent,\n isUnallocated,\n }: TrackExperimentParamsType): Promise<Result<boolean, void>> {\n const url = UrlProvider.getTrackingUrl(visitorCode);\n\n const unallocatedAddition = !dataUrl\n ? UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce()\n : '';\n\n const bodyAddition = isUnallocated ? unallocatedAddition : variationDataUrl;\n\n const extendedBody = bodyAddition ? dataUrl + '\\n' + bodyAddition : dataUrl;\n\n const headers: HeadersType | undefined = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: extendedBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n\n public async trackData({\n visitorCode,\n body,\n userAgent,\n isMappingIdentifier,\n }: TrackDataParamsType): Promise<Result<boolean, void>> {\n const url = UrlProvider.getTrackingUrl(visitorCode, isMappingIdentifier);\n\n const requestBody =\n body || UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce();\n\n const headers = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: requestBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { JSONType } from '../clientConfiguration';
|
|
2
2
|
import { Environment, ExternalPackageInfoType } from '../types';
|
|
3
3
|
import { BrowserIndexMap, BrowserType, OperatingSystemType } from '../kameleoonData';
|
|
4
|
-
import { Header } from './constants';
|
|
5
4
|
import { DeviceType, OperatingSystemIndexMap } from '../kameleoonData/types';
|
|
5
|
+
import { Header } from './constants';
|
|
6
|
+
export type UrlProviderInitializeParamsType = {
|
|
7
|
+
siteCode: string;
|
|
8
|
+
packageInfo: ExternalPackageInfoType;
|
|
9
|
+
environment?: Environment;
|
|
10
|
+
};
|
|
6
11
|
export type RequesterParamsType = {
|
|
7
12
|
siteCode: string;
|
|
8
13
|
environment?: Environment;
|
|
@@ -115,6 +120,11 @@ export declare enum HttpMethod {
|
|
|
115
120
|
Get = "GET",
|
|
116
121
|
Post = "POST"
|
|
117
122
|
}
|
|
123
|
+
export declare enum DataApiQuery {
|
|
124
|
+
VisitEvent = 0,
|
|
125
|
+
VisitData = 1,
|
|
126
|
+
DataMap = 2
|
|
127
|
+
}
|
|
118
128
|
declare const EVENT_TYPE_KEYS: readonly ["customData", "staticData", "page", "conversion", "geolocation", "activity", "experiment"];
|
|
119
129
|
declare const PARAMETER_KEYS: readonly ["valuesCountMap", "mappingValue", "id", "nonce", "country", "environment", "city", "region", "latitude", "geolocation", "longitude", "mappingIdentifier", "postalCode", "sdkName", "sdkVersion", "browserIndex", "browserVersion", "siteCode", "visitorCode", "currentVisit", "maxNumberPreviousVisits", "customData", "negative", "revenue", "title", "os", "conversion", "staticData", "osIndex", "browser", "referrersIndices", "overwrite", "index", "href", "experiment", "page", "variationId", "deviceType", "goalId", "ts", "key"];
|
|
120
130
|
declare const TRACKING_KEYS: readonly ["visit", "map"];
|
package/dist/requester/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.HttpMethod=void 0;let HttpMethod=exports.HttpMethod=function(a){return a.Get="GET",a.Post="POST",a}({});const EVENT_TYPE_KEYS=["customData","staticData","page","conversion","geolocation","activity","experiment"],PARAMETER_KEYS=["valuesCountMap","mappingValue","id","nonce","country","environment","city","region","latitude","geolocation","longitude","mappingIdentifier","postalCode","sdkName","sdkVersion","browserIndex","browserVersion","siteCode","visitorCode","currentVisit","maxNumberPreviousVisits","customData","negative","revenue","title","os","conversion","staticData","osIndex","browser","referrersIndices","overwrite","index","href","experiment","page","variationId","deviceType","goalId","ts","key"],TRACKING_KEYS=["visit","map"],QUERY_KEYS=["sse","visitor","map","events"];
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.HttpMethod=exports.DataApiQuery=void 0;let HttpMethod=exports.HttpMethod=function(a){return a.Get="GET",a.Post="POST",a}({}),DataApiQuery=exports.DataApiQuery=function(a){return a[a.VisitEvent=0]="VisitEvent",a[a.VisitData=1]="VisitData",a[a.DataMap=2]="DataMap",a}({});const EVENT_TYPE_KEYS=["customData","staticData","page","conversion","geolocation","activity","experiment"],PARAMETER_KEYS=["valuesCountMap","mappingValue","id","nonce","country","environment","city","region","latitude","geolocation","longitude","mappingIdentifier","postalCode","sdkName","sdkVersion","browserIndex","browserVersion","siteCode","visitorCode","currentVisit","maxNumberPreviousVisits","customData","negative","revenue","title","os","conversion","staticData","osIndex","browser","referrersIndices","overwrite","index","href","experiment","page","variationId","deviceType","goalId","ts","key"],TRACKING_KEYS=["visit","map"],QUERY_KEYS=["sse","visitor","map","events"];
|
|
2
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["HttpMethod","exports","Get","Post","EVENT_TYPE_KEYS","PARAMETER_KEYS","TRACKING_KEYS","QUERY_KEYS"],"sources":["../../src/requester/types.ts"],"sourcesContent":["import { JSONType } from 'src/clientConfiguration';\nimport { Environment, ExternalPackageInfoType } from 'src/types';\nimport {\n BrowserIndexMap,\n BrowserType,\n OperatingSystemType,\n} from 'src/kameleoonData';\nimport {
|
|
1
|
+
{"version":3,"file":"types.js","names":["HttpMethod","exports","Get","Post","DataApiQuery","VisitEvent","VisitData","DataMap","EVENT_TYPE_KEYS","PARAMETER_KEYS","TRACKING_KEYS","QUERY_KEYS"],"sources":["../../src/requester/types.ts"],"sourcesContent":["import { JSONType } from 'src/clientConfiguration';\nimport { Environment, ExternalPackageInfoType } from 'src/types';\nimport {\n BrowserIndexMap,\n BrowserType,\n OperatingSystemType,\n} from 'src/kameleoonData';\nimport { DeviceType, OperatingSystemIndexMap } from 'src/kameleoonData/types';\nimport { Header } from './constants';\n\nexport type UrlProviderInitializeParamsType = {\n siteCode: string;\n packageInfo: ExternalPackageInfoType;\n environment?: Environment;\n};\n\nexport type RequesterParamsType = {\n siteCode: string;\n environment?: Environment;\n packageInfo: ExternalPackageInfoType;\n requestDispatcher: IExternalRequestDispatcher;\n};\n\nexport type TrackExperimentParamsType = {\n dataUrl: string;\n variationDataUrl: string;\n visitorCode: string;\n isUnallocated: boolean;\n userAgent?: string;\n isTargetedRule?: boolean;\n};\n\nexport type TrackDataParamsType = {\n visitorCode: string;\n body: string;\n userAgent?: string;\n isMappingIdentifier?: boolean;\n};\n\ntype EventDataType = {\n sdk?: {\n name: string;\n version: string;\n };\n itp: boolean;\n time: number;\n};\n\ntype CustomDataEventType = {\n data: {\n index: number;\n valuesCountMap: {\n [value: string]: number;\n };\n overwrite: boolean;\n mappingIdentifier: boolean;\n };\n} & EventDataType;\n\ntype ExperimentEventType = {\n data: {\n id: number;\n variationId: number;\n };\n} & EventDataType;\n\ntype ConversionEventType = {\n data: {\n goalId: number;\n revenue: number;\n negative: boolean;\n };\n} & EventDataType;\n\ntype BrowserIndexType = (typeof BrowserIndexMap)[BrowserType];\ntype OperatingSystemIndexType =\n (typeof OperatingSystemIndexMap)[OperatingSystemType];\n\nexport type PageEventType = {\n data: {\n href: string;\n canonicalHref: string | null;\n title: string;\n keyPagesIndices: number[] | [null];\n referrerHref: string | null;\n referrersIndices: number[] | [null];\n };\n} & EventDataType;\n\nexport type GeolocationEventType = {\n data: {\n country: string;\n region: string | null;\n city: string | null;\n postalCode: string | null;\n latitude: number | null;\n longitude: number | null;\n };\n} & EventDataType;\n\nexport type StaticDataEventType = {\n data: {\n visitNumber: number;\n timeSincePreviousVisit: number;\n firstReferrerHref: string | null;\n browser: BrowserType | null;\n browserIndex: BrowserIndexType | null;\n browserVersion: number | null;\n os: OperatingSystemType | null;\n osIndex: OperatingSystemIndexType | null;\n windowWidth: number | null;\n windowHeight: number | null;\n screenWidth: number | null;\n screenHeight: number | null;\n timeZoneId: string | null;\n localeLanguageTag: string | null;\n deviceType: DeviceType | null;\n mappingIdentifier: string | null;\n };\n} & EventDataType;\n\nexport type VisitType = {\n siteCode: string;\n visitorCode: string;\n timeStarted: number;\n customDataEvents?: CustomDataEventType[];\n experimentEvents?: ExperimentEventType[];\n conversionEvents?: ConversionEventType[];\n geolocationEvents?: GeolocationEventType[];\n staticDataEvent?: StaticDataEventType;\n pageEvents?: PageEventType[];\n};\n\nexport type GetVisitorDataResultType = {\n previousVisits?: VisitType[];\n currentVisit?: VisitType;\n};\n\nexport enum HttpMethod {\n Get = 'GET',\n Post = 'POST',\n}\n\nexport enum DataApiQuery {\n VisitEvent,\n VisitData,\n DataMap,\n}\n\nconst EVENT_TYPE_KEYS = [\n 'customData',\n 'staticData',\n 'page',\n 'conversion',\n 'geolocation',\n 'activity',\n 'experiment',\n] as const;\nconst PARAMETER_KEYS = [\n 'valuesCountMap',\n 'mappingValue',\n 'id',\n 'nonce',\n 'country',\n 'environment',\n 'city',\n 'region',\n 'latitude',\n 'geolocation',\n 'longitude',\n 'mappingIdentifier',\n 'postalCode',\n 'sdkName',\n 'sdkVersion',\n 'browserIndex',\n 'browserVersion',\n 'siteCode',\n 'visitorCode',\n 'currentVisit',\n 'maxNumberPreviousVisits',\n 'customData',\n 'negative',\n 'revenue',\n 'title',\n 'os',\n 'conversion',\n 'staticData',\n 'osIndex',\n 'browser',\n 'referrersIndices',\n 'overwrite',\n 'index',\n 'href',\n 'experiment',\n 'page',\n 'variationId',\n 'deviceType',\n 'goalId',\n 'ts',\n 'key',\n] as const;\nconst TRACKING_KEYS = ['visit', 'map'] as const;\nconst QUERY_KEYS = ['sse', 'visitor', 'map', 'events'] as const;\n\nexport type TrackingType = Record<\n Capitalize<(typeof TRACKING_KEYS)[number]>,\n string\n>;\nexport type QueryType = Record<Capitalize<(typeof QUERY_KEYS)[number]>, string>;\nexport type ParameterType = Record<\n Capitalize<(typeof PARAMETER_KEYS)[number]>,\n string\n>;\nexport type EventType = Record<\n Capitalize<(typeof EVENT_TYPE_KEYS)[number]>,\n string\n>;\n\nexport type StrictTrackingRecord<T> = {\n [K in keyof T]: `${Uncapitalize<K & string>}/`;\n};\nexport type StrictQueryRecord<T> = {\n [K in keyof T]: `${Uncapitalize<K & string>}?siteCode=`;\n};\nexport type StrictEventTypeRecord<T> = {\n [K in keyof T]: `eventType=${Uncapitalize<K & string>}`;\n};\nexport type StrictParameterRecord<T> = {\n [K in keyof T]: `&${Uncapitalize<K & string>}=`;\n};\nexport type StrictFirstParameterRecord<T> = {\n [K in keyof T]: `?${Uncapitalize<K & string>}=`;\n};\n\n/**\n * @type HeadersType - a type of headers available in the request\n * */\nexport type HeadersType = Partial<Record<Header, string>>;\n\nexport type TrackParametersType = {\n url: string;\n headers?: HeadersType;\n body: string;\n};\n\n/**\n * @interface an interface of External Request Dispatcher which will be used to perform requests.\n * */\nexport interface IExternalRequestDispatcher {\n /**\n * @method track - send a track request\n * @param {TrackParametersType} parameters - track parameters\n * */\n track: (params: TrackParametersType) => Promise<boolean>;\n /**\n * @method getClientConfiguration - get client configuration\n * @param {string} url - url address\n * @param {HeadersType} headers - headers\n * */\n getClientConfiguration: (\n url: string,\n headers: HeadersType,\n ) => Promise<JSONType>;\n /**\n * @method getRemoteData - get data from remote server of Kameleoon\n * @param {string} url - url address\n * */\n getRemoteData: (url: string) => Promise<JSONType>;\n}\n"],"mappings":"sHA0IY,CAAAA,UAAU,CAAAC,OAAA,CAAAD,UAAA,UAAVA,CAAU,QAAV,CAAAA,CAAU,CAAAE,GAAA,OAAVF,CAAU,CAAAG,IAAA,QAAVH,CAAU,MAKVI,YAAY,CAAAH,OAAA,CAAAG,YAAA,UAAZA,CAAY,QAAZ,CAAAA,CAAY,CAAZA,CAAY,CAAAC,UAAA,iBAAZD,CAAY,CAAZA,CAAY,CAAAE,SAAA,gBAAZF,CAAY,CAAZA,CAAY,CAAAG,OAAA,cAAZH,CAAY,WAMlB,CAAAI,eAAe,CAAG,CACtB,YAAY,CACZ,YAAY,CACZ,MAAM,CACN,YAAY,CACZ,aAAa,CACb,UAAU,CACV,YAAY,CACJ,CACJC,cAAc,CAAG,CACrB,gBAAgB,CAChB,cAAc,CACd,IAAI,CACJ,OAAO,CACP,SAAS,CACT,aAAa,CACb,MAAM,CACN,QAAQ,CACR,UAAU,CACV,aAAa,CACb,WAAW,CACX,mBAAmB,CACnB,YAAY,CACZ,SAAS,CACT,YAAY,CACZ,cAAc,CACd,gBAAgB,CAChB,UAAU,CACV,aAAa,CACb,cAAc,CACd,yBAAyB,CACzB,YAAY,CACZ,UAAU,CACV,SAAS,CACT,OAAO,CACP,IAAI,CACJ,YAAY,CACZ,YAAY,CACZ,SAAS,CACT,SAAS,CACT,kBAAkB,CAClB,WAAW,CACX,OAAO,CACP,MAAM,CACN,YAAY,CACZ,MAAM,CACN,aAAa,CACb,YAAY,CACZ,QAAQ,CACR,IAAI,CACJ,KAAK,CACG,CACJC,aAAa,CAAG,CAAC,OAAO,CAAE,KAAK,CAAU,CACzCC,UAAU,CAAG,CAAC,KAAK,CAAE,SAAS,CAAE,KAAK,CAAE,QAAQ,CAAU"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { VisitorDataFiltersType } from '../utilities';
|
|
2
|
+
import { UrlProviderInitializeParamsType } from './types';
|
|
3
|
+
export declare class UrlProvider {
|
|
4
|
+
private static siteCode;
|
|
5
|
+
private static environment?;
|
|
6
|
+
private static ready;
|
|
7
|
+
private static packageInfo;
|
|
8
|
+
private static dataApiDomain;
|
|
9
|
+
static dataApiTopLevelDomain: string;
|
|
10
|
+
static initialize({ siteCode, packageInfo, environment, }: UrlProviderInitializeParamsType): void;
|
|
11
|
+
static setDataApiDomain(domain: string): void;
|
|
12
|
+
static getClientConfigurationUrl(timeStamp?: number): string;
|
|
13
|
+
static getRemoteDataUrl(key: string): string;
|
|
14
|
+
static getVisitorDataUrl(visitorCode: string, filters: VisitorDataFiltersType): string;
|
|
15
|
+
static getTrackingUrl(visitorCode: string, isMappingIdentifier?: boolean): string;
|
|
16
|
+
private static isInitialized;
|
|
17
|
+
private static getDataApiUrl;
|
|
18
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UrlProvider=void 0;var _constants=require("./constants"),_types=require("./types");function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==typeof b?b:b+""}function _toPrimitive(a,b){if("object"!=typeof a||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=typeof d)return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}class UrlProvider{static initialize(a){let{siteCode:b,packageInfo:c,environment:d}=a;this.siteCode=b,this.environment=d,this.packageInfo=c,this.ready=!0}static setDataApiDomain(a){this.dataApiDomain=a.split(".").slice(0,-1).join(".")}static getClientConfigurationUrl(a){this.isInitialized();const b=this.environment?_constants.UrlFirstParameter.Environment+this.environment:"";let c="";return a&&(b?c=_constants.UrlParameter.Ts+a:c=_constants.UrlFirstParameter.Ts+a),_constants.URL.CLIENT_CONFIGURATION+this.siteCode+b+c}static getRemoteDataUrl(a){return this.isInitialized(),this.getDataApiUrl(_types.DataApiQuery.DataMap)+this.siteCode+_constants.UrlParameter.Key+encodeURI(a)}static getVisitorDataUrl(a,b){const{customData:c,previousVisitAmount:d,currentVisit:e,conversions:f,geolocation:g,experiments:h,pageViews:i,device:j,browser:k,operatingSystem:l}=b,m=c?_constants.UrlParameter.CustomData+!0:"",n=f?_constants.UrlParameter.Conversion+!0:"",o=g?_constants.UrlParameter.Geolocation+!0:"",p=h?_constants.UrlParameter.Experiment+!0:"",q=i?_constants.UrlParameter.Page+!0:"",r=!!(j||k||l)?_constants.UrlParameter.StaticData+!0:"",s=e?_constants.UrlParameter.CurrentVisit+!0:"";return this.getDataApiUrl(_types.DataApiQuery.VisitData)+this.siteCode+_constants.UrlParameter.VisitorCode+a+_constants.UrlParameter.MaxNumberPreviousVisits+d+m+n+o+p+q+r+s}static getTrackingUrl(a,b){this.isInitialized();const{type:c,version:d}=this.packageInfo,e=encodeURIComponent("".concat(d,"/").concat("4.0.1")),f=b?_constants.UrlParameter.MappingValue:_constants.UrlParameter.VisitorCode;return this.getDataApiUrl(_types.DataApiQuery.VisitEvent)+this.siteCode+f+a+_constants.UrlParameter.SdkName+c.toLowerCase()+_constants.UrlParameter.SdkVersion+e}static isInitialized(){if(!this.ready)throw new Error("UrlProvider is not initialized")}static getDataApiUrl(a){const b="https://".concat(this.dataApiDomain).concat(this.dataApiTopLevelDomain);return a===_types.DataApiQuery.VisitEvent?"".concat(b,"/").concat(_constants.UrlTracking.Visit+_constants.UrlQuery.Events):a===_types.DataApiQuery.VisitData?"".concat(b,"/").concat(_constants.UrlTracking.Visit+_constants.UrlQuery.Visitor):a===_types.DataApiQuery.DataMap?"".concat(b,"/").concat(_constants.UrlTracking.Map+_constants.UrlQuery.Map):void 0}}exports.UrlProvider=UrlProvider,_defineProperty(UrlProvider,"siteCode",void 0),_defineProperty(UrlProvider,"environment",void 0),_defineProperty(UrlProvider,"ready",!1),_defineProperty(UrlProvider,"packageInfo",void 0),_defineProperty(UrlProvider,"dataApiDomain","data.kameleoon"),_defineProperty(UrlProvider,"dataApiTopLevelDomain",".io");
|
|
2
|
+
//# sourceMappingURL=urlProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlProvider.js","names":["UrlProvider","initialize","a","siteCode","packageInfo","environment","ready","setDataApiDomain","domain","dataApiDomain","split","slice","join","getClientConfigurationUrl","timeStamp","isInitialized","environmentParam","UrlFirstParameter","Environment","timeStampParam","UrlParameter","Ts","URL","CLIENT_CONFIGURATION","getRemoteDataUrl","key","getDataApiUrl","DataApiQuery","DataMap","Key","encodeURI","getVisitorDataUrl","visitorCode","filters","customData","previousVisitAmount","currentVisit","conversions","geolocation","experiments","pageViews","device","browser","operatingSystem","customDataParameter","CustomData","conversionsParameter","Conversion","geolocationParameter","Geolocation","experimentsParameter","Experiment","pageViewsParameter","Page","staticDataParameter","StaticData","currentVisitParameter","CurrentVisit","VisitData","VisitorCode","MaxNumberPreviousVisits","getTrackingUrl","isMappingIdentifier","type","version","versionWithCore","encodeURIComponent","concat","identifierParameter","MappingValue","VisitEvent","SdkName","toLowerCase","SdkVersion","Error","query","dataApiTopLevelDomain","UrlTracking","Visit","UrlQuery","Events","Visitor","Map","exports","_defineProperty"],"sources":["../../src/requester/urlProvider.ts"],"sourcesContent":["import { Environment, ExternalPackageInfoType } from 'src/types';\nimport { VisitorDataFiltersType } from 'src/utilities';\nimport {\n UrlFirstParameter,\n UrlParameter,\n URL,\n UrlTracking,\n UrlQuery,\n} from './constants';\nimport { DataApiQuery, UrlProviderInitializeParamsType } from './types';\n\n// TODO: To be removed in favour of `DependencyManager`\n// which will use protected `KameleoonClient` method to be able to mock every dependency\n// for tests\nexport class UrlProvider {\n private static siteCode: string;\n private static environment?: Environment;\n private static ready = false;\n private static packageInfo: ExternalPackageInfoType;\n private static dataApiDomain = 'data.kameleoon';\n\n public static dataApiTopLevelDomain = '.io';\n\n public static initialize({\n siteCode,\n packageInfo,\n environment,\n }: UrlProviderInitializeParamsType): void {\n this.siteCode = siteCode;\n this.environment = environment;\n this.packageInfo = packageInfo;\n this.ready = true;\n }\n\n public static setDataApiDomain(domain: string): void {\n this.dataApiDomain = domain.split('.').slice(0, -1).join('.');\n }\n\n public static getClientConfigurationUrl(timeStamp?: number): string {\n this.isInitialized();\n\n const environmentParam = this.environment\n ? UrlFirstParameter.Environment + this.environment\n : '';\n let timeStampParam = '';\n\n if (timeStamp) {\n if (environmentParam) {\n timeStampParam = UrlParameter.Ts + timeStamp;\n } else {\n timeStampParam = UrlFirstParameter.Ts + timeStamp;\n }\n }\n\n return (\n URL.CLIENT_CONFIGURATION +\n this.siteCode +\n environmentParam +\n timeStampParam\n );\n }\n\n public static getRemoteDataUrl(key: string): string {\n this.isInitialized();\n\n return (\n this.getDataApiUrl(DataApiQuery.DataMap) +\n this.siteCode +\n UrlParameter.Key +\n encodeURI(key)\n );\n }\n\n public static getVisitorDataUrl(\n visitorCode: string,\n filters: VisitorDataFiltersType,\n ): string {\n const {\n customData,\n previousVisitAmount,\n currentVisit,\n conversions,\n geolocation,\n experiments,\n pageViews,\n device,\n browser,\n operatingSystem,\n } = filters;\n\n const customDataParameter = customData\n ? UrlParameter.CustomData + true\n : '';\n const conversionsParameter = conversions\n ? UrlParameter.Conversion + true\n : '';\n const geolocationParameter = geolocation\n ? UrlParameter.Geolocation + true\n : '';\n const experimentsParameter = experiments\n ? UrlParameter.Experiment + true\n : '';\n const pageViewsParameter = pageViews ? UrlParameter.Page + true : '';\n const staticDataParameter = Boolean(device || browser || operatingSystem)\n ? UrlParameter.StaticData + true\n : '';\n const currentVisitParameter = currentVisit\n ? UrlParameter.CurrentVisit + true\n : '';\n\n return (\n this.getDataApiUrl(DataApiQuery.VisitData) +\n this.siteCode +\n UrlParameter.VisitorCode +\n visitorCode +\n UrlParameter.MaxNumberPreviousVisits +\n previousVisitAmount +\n customDataParameter +\n conversionsParameter +\n geolocationParameter +\n experimentsParameter +\n pageViewsParameter +\n staticDataParameter +\n currentVisitParameter\n );\n }\n\n public static getTrackingUrl(\n visitorCode: string,\n isMappingIdentifier?: boolean,\n ): string {\n this.isInitialized();\n\n const { type, version } = this.packageInfo;\n\n const versionWithCore = encodeURIComponent(\n `${version}/${process.env.npm_package_version}`,\n );\n\n const identifierParameter = isMappingIdentifier\n ? UrlParameter.MappingValue\n : UrlParameter.VisitorCode;\n\n return (\n this.getDataApiUrl(DataApiQuery.VisitEvent) +\n this.siteCode +\n identifierParameter +\n visitorCode +\n UrlParameter.SdkName +\n type.toLowerCase() +\n UrlParameter.SdkVersion +\n versionWithCore\n );\n }\n\n private static isInitialized(): void {\n if (!this.ready) {\n throw new Error('UrlProvider is not initialized');\n }\n }\n\n private static getDataApiUrl(query: DataApiQuery): string {\n const domain = `https://${this.dataApiDomain}${this.dataApiTopLevelDomain}`;\n\n switch (query) {\n case DataApiQuery.VisitEvent:\n return `${domain}/${UrlTracking.Visit + UrlQuery.Events}`;\n case DataApiQuery.VisitData:\n return `${domain}/${UrlTracking.Visit + UrlQuery.Visitor}`;\n case DataApiQuery.DataMap:\n return `${domain}/${UrlTracking.Map + UrlQuery.Map}`;\n }\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kameleoon/javascript-sdk-core",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"description": "Kameleoon JS SDK Core",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -17,11 +17,15 @@
|
|
|
17
17
|
"deploy-nexus": "/bin/bash ../../scripts/deploy_nexus.sh javascript-sdk-core",
|
|
18
18
|
"update-changelog": "/bin/bash ../../scripts/update_changelog.sh javascript-sdk-core",
|
|
19
19
|
"symlink": "yarn link",
|
|
20
|
-
"test": "
|
|
20
|
+
"test": "jest",
|
|
21
21
|
"test:watch": "jest --watch",
|
|
22
22
|
"test:coverage": "jest --coverage"
|
|
23
23
|
},
|
|
24
24
|
"homepage": "https://developers.kameleoon.com/react-js-sdk.html",
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public",
|
|
27
|
+
"cache": "cache/.npm"
|
|
28
|
+
},
|
|
25
29
|
"keywords": [
|
|
26
30
|
"kameleoon",
|
|
27
31
|
"core",
|