@kameleoon/javascript-sdk-core 1.1.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/dist/cacheManager/cacheManager.d.ts +38 -0
  2. package/dist/cacheManager/cacheManager.js +74 -0
  3. package/dist/cacheManager/cacheManager.js.map +1 -0
  4. package/dist/cacheManager/index.d.ts +2 -0
  5. package/dist/cacheManager/index.js +20 -0
  6. package/dist/cacheManager/index.js.map +1 -0
  7. package/dist/cacheManager/types.d.ts +14 -0
  8. package/dist/cacheManager/types.js +6 -0
  9. package/dist/cacheManager/types.js.map +1 -0
  10. package/dist/campaignConfiguration/campaignConfiguration.d.ts +2 -1
  11. package/dist/campaignConfiguration/campaignConfiguration.js +243 -196
  12. package/dist/campaignConfiguration/campaignConfiguration.js.map +1 -1
  13. package/dist/campaignConfiguration/constants.d.ts +3 -3
  14. package/dist/campaignConfiguration/constants.js +22 -16
  15. package/dist/campaignConfiguration/constants.js.map +1 -1
  16. package/dist/campaignConfiguration/index.d.ts +1 -0
  17. package/dist/campaignConfiguration/index.js +85 -6
  18. package/dist/campaignConfiguration/index.js.map +1 -1
  19. package/dist/campaignConfiguration/types.d.ts +7 -3
  20. package/dist/campaignConfiguration/types.js +53 -45
  21. package/dist/campaignConfiguration/types.js.map +1 -1
  22. package/dist/clientSettings/clientSettings.d.ts +1 -1
  23. package/dist/clientSettings/clientSettings.js +28 -21
  24. package/dist/clientSettings/clientSettings.js.map +1 -1
  25. package/dist/clientSettings/index.js +18 -4
  26. package/dist/clientSettings/index.js.map +1 -1
  27. package/dist/clientSettings/types.d.ts +1 -1
  28. package/dist/clientSettings/types.js +4 -1
  29. package/dist/clientSettings/types.js.map +1 -1
  30. package/dist/constants.d.ts +11 -0
  31. package/dist/constants.js +37 -14
  32. package/dist/constants.js.map +1 -1
  33. package/dist/eventSource/constants.js +6 -2
  34. package/dist/eventSource/constants.js.map +1 -1
  35. package/dist/eventSource/externalEventSource.js +28 -20
  36. package/dist/eventSource/externalEventSource.js.map +1 -1
  37. package/dist/eventSource/index.js +49 -6
  38. package/dist/eventSource/index.js.map +1 -1
  39. package/dist/eventSource/types.d.ts +1 -1
  40. package/dist/eventSource/types.js +4 -1
  41. package/dist/eventSource/types.js.map +1 -1
  42. package/dist/hasher/hasher.d.ts +1 -1
  43. package/dist/hasher/hasher.js +37 -26
  44. package/dist/hasher/hasher.js.map +1 -1
  45. package/dist/hasher/index.js +11 -4
  46. package/dist/hasher/index.js.map +1 -1
  47. package/dist/hasher/types.d.ts +1 -1
  48. package/dist/hasher/types.js +4 -1
  49. package/dist/hasher/types.js.map +1 -1
  50. package/dist/index.d.ts +4 -2
  51. package/dist/index.js +309 -28
  52. package/dist/index.js.map +1 -1
  53. package/dist/kameleoonClient.d.ts +32 -19
  54. package/dist/kameleoonClient.js +353 -235
  55. package/dist/kameleoonClient.js.map +1 -1
  56. package/dist/kameleoonData/browser.js +37 -32
  57. package/dist/kameleoonData/browser.js.map +1 -1
  58. package/dist/kameleoonData/constants.js +6 -2
  59. package/dist/kameleoonData/constants.js.map +1 -1
  60. package/dist/kameleoonData/conversion.js +47 -40
  61. package/dist/kameleoonData/conversion.js.map +1 -1
  62. package/dist/kameleoonData/customData.js +62 -58
  63. package/dist/kameleoonData/customData.js.map +1 -1
  64. package/dist/kameleoonData/device.js +37 -32
  65. package/dist/kameleoonData/device.js.map +1 -1
  66. package/dist/kameleoonData/index.js +101 -18
  67. package/dist/kameleoonData/index.js.map +1 -1
  68. package/dist/kameleoonData/nonce.js +25 -13
  69. package/dist/kameleoonData/nonce.js.map +1 -1
  70. package/dist/kameleoonData/pageView.js +52 -44
  71. package/dist/kameleoonData/pageView.js.map +1 -1
  72. package/dist/kameleoonData/types.js +41 -26
  73. package/dist/kameleoonData/types.js.map +1 -1
  74. package/dist/kameleoonData/userAgent.js +33 -24
  75. package/dist/kameleoonData/userAgent.js.map +1 -1
  76. package/dist/kameleoonError/constants.d.ts +1 -1
  77. package/dist/kameleoonError/constants.js +25 -21
  78. package/dist/kameleoonError/constants.js.map +1 -1
  79. package/dist/kameleoonError/helpers.js +6 -4
  80. package/dist/kameleoonError/helpers.js.map +1 -1
  81. package/dist/kameleoonError/index.js +25 -8
  82. package/dist/kameleoonError/index.js.map +1 -1
  83. package/dist/kameleoonError/kameleoonError.d.ts +1 -1
  84. package/dist/kameleoonError/kameleoonError.js +64 -53
  85. package/dist/kameleoonError/kameleoonError.js.map +1 -1
  86. package/dist/kameleoonError/types.d.ts +1 -1
  87. package/dist/kameleoonError/types.js +26 -22
  88. package/dist/kameleoonError/types.js.map +1 -1
  89. package/dist/kameleoonUtils.js +34 -33
  90. package/dist/kameleoonUtils.js.map +1 -1
  91. package/dist/requester/constants.d.ts +6 -7
  92. package/dist/requester/constants.js +58 -45
  93. package/dist/requester/constants.js.map +1 -1
  94. package/dist/requester/index.d.ts +2 -2
  95. package/dist/requester/index.js +67 -8
  96. package/dist/requester/index.js.map +1 -1
  97. package/dist/requester/requester.d.ts +7 -7
  98. package/dist/requester/requester.js +90 -113
  99. package/dist/requester/requester.js.map +1 -1
  100. package/dist/requester/types.d.ts +38 -10
  101. package/dist/requester/types.js +14 -36
  102. package/dist/requester/types.js.map +1 -1
  103. package/dist/storage/constants.js +11 -7
  104. package/dist/storage/constants.js.map +1 -1
  105. package/dist/storage/externalStorage.js +33 -26
  106. package/dist/storage/externalStorage.js.map +1 -1
  107. package/dist/storage/index.js +55 -6
  108. package/dist/storage/index.js.map +1 -1
  109. package/dist/storage/types.js +4 -1
  110. package/dist/storage/types.js.map +1 -1
  111. package/dist/targeting/conditions/conditionFactory.js +24 -19
  112. package/dist/targeting/conditions/conditionFactory.js.map +1 -1
  113. package/dist/targeting/conditions/customDataCondition.js +99 -88
  114. package/dist/targeting/conditions/customDataCondition.js.map +1 -1
  115. package/dist/targeting/conditions/exclusiveExperimentCondition.js +27 -15
  116. package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +1 -1
  117. package/dist/targeting/conditions/index.js +45 -10
  118. package/dist/targeting/conditions/index.js.map +1 -1
  119. package/dist/targeting/conditions/targetExperimentCondition.js +54 -32
  120. package/dist/targeting/conditions/targetExperimentCondition.js.map +1 -1
  121. package/dist/targeting/conditions/types.js +4 -1
  122. package/dist/targeting/conditions/types.js.map +1 -1
  123. package/dist/targeting/index.js +79 -13
  124. package/dist/targeting/index.js.map +1 -1
  125. package/dist/targeting/targetingNode.js +41 -33
  126. package/dist/targeting/targetingNode.js.map +1 -1
  127. package/dist/targeting/targetingTree.js +125 -104
  128. package/dist/targeting/targetingTree.js.map +1 -1
  129. package/dist/targeting/types.js +99 -91
  130. package/dist/targeting/types.js.map +1 -1
  131. package/dist/types.d.ts +34 -2
  132. package/dist/types.js +58 -21
  133. package/dist/types.js.map +1 -1
  134. package/dist/utilities/constants.js +6 -2
  135. package/dist/utilities/constants.js.map +1 -1
  136. package/dist/utilities/index.js +11 -4
  137. package/dist/utilities/index.js.map +1 -1
  138. package/dist/utilities/types.d.ts +9 -1
  139. package/dist/utilities/types.js +4 -1
  140. package/dist/utilities/types.js.map +1 -1
  141. package/dist/utilities/utilities.d.ts +6 -3
  142. package/dist/utilities/utilities.js +171 -105
  143. package/dist/utilities/utilities.js.map +1 -1
  144. package/dist/variationConfiguration/index.js +24 -4
  145. package/dist/variationConfiguration/index.js.map +1 -1
  146. package/dist/variationConfiguration/types.d.ts +1 -1
  147. package/dist/variationConfiguration/types.js +4 -1
  148. package/dist/variationConfiguration/types.js.map +1 -1
  149. package/dist/variationConfiguration/variation.js +35 -28
  150. package/dist/variationConfiguration/variation.js.map +1 -1
  151. package/dist/variationConfiguration/variationConfiguration.d.ts +5 -6
  152. package/dist/variationConfiguration/variationConfiguration.js +263 -230
  153. package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
  154. package/package.json +6 -4
  155. package/dist/hasher/constants.d.ts +0 -1
  156. package/dist/hasher/constants.js +0 -5
  157. package/dist/hasher/constants.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"campaignConfiguration.js","sourceRoot":"","sources":["../../src/campaignConfiguration/campaignConfiguration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"campaignConfiguration.js","names":["_tsRes","require","_constants","_eventSource","_types","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","CampaignConfiguration","constructor","settings","storage","requester","externalClientConfiguration","targetingCleanupInterval","DEFAULT_CAMPAIGN_CONFIGURATION","targetingData","configurationData","lastUpdate","Date","readStorageData","cleanupIntervalMinutes","targetingDataIntervalId","setInterval","cleanupOutdatedTargetingData","Milliseconds","Minute","err","clearInterval","initialize","externalEventSource","shouldUpdate","checkShouldUpdate","updateResult","updateClientConfiguration","ok","configuration","realTimeUpdate","updateConfigurationIntervalId","eventSource","ExternalEventSource","siteCode","updateEventCallback","_timeStamp","configurationUpdateCallback","open","close","bind","updateInterval","Ok","addTargetingData","visitorCode","data","dataItem","lastActivityTime","now","result","updateStorageData","unsentTargetingData","getUnsentData","unsentDataItem","clearUnsentData","onConfigurationUpdate","callback","storedTargetingData","experiments","featureFlags","lastUpdateTime","getTime","updateWindowEdge","currentTime","resultTargetingData","entries","resultValue","item","isDataExpired","SESSION_DURATION","throw","read","kameleoonTargetingData","kameleoonConfiguration","parse","timeStamp","featureFlagConfigurations","clientConfigurationResult","getClientConfiguration","toString","write","exports"],"sources":["../../src/campaignConfiguration/campaignConfiguration.ts"],"sourcesContent":["import { Ok, Result } from 'ts-res';\nimport { KameleoonError } from '../kameleoonError/kameleoonError';\nimport { ClientSettingsType } from '../clientSettings/types';\nimport { DEFAULT_CAMPAIGN_CONFIGURATION, SESSION_DURATION } from './constants';\nimport {\n CampaignConfigurationParametersType,\n ConfigurationDataType,\n ConfigurationType,\n ExperimentItemType,\n FeatureFlagType,\n UnsentTargetingDataType,\n} from './types';\nimport { KameleoonDataType } from '../kameleoonData';\nimport { Requester, GetClientConfigurationResultType } from '../requester';\nimport { TargetingDataItemType, TargetingDataType } from '../targeting';\nimport { IStorage, ClientDataType } from '../storage';\nimport {\n ExternalEventSource,\n IEventSource,\n IExternalEventSourceConstructor,\n} from '../eventSource';\nimport { Milliseconds } from '../types';\n\ninterface ICampaignConfiguration {\n initialize: (\n eventSource: IExternalEventSourceConstructor,\n ) => Promise<Result<void, KameleoonError>>;\n addTargetingData: (\n visitorCode: string,\n ...data: KameleoonDataType[]\n ) => Result<void, KameleoonError>;\n getUnsentData: (visitorCode: string) => KameleoonDataType[];\n clearUnsentData: (visitorCode: string) => void;\n onConfigurationUpdate: (callback: () => void) => void;\n readonly experiments: ExperimentItemType[];\n readonly storedTargetingData: TargetingDataType;\n readonly featureFlags: FeatureFlagType[];\n readonly configuration: ConfigurationType;\n}\n\nexport class CampaignConfiguration implements ICampaignConfiguration {\n private configurationUpdateCallback?: () => void;\n private updateConfigurationIntervalId: NodeJS.Timer | null = null;\n private targetingDataIntervalId: NodeJS.Timer | null = null;\n private unsentTargetingData: UnsentTargetingDataType = {};\n private targetingData: TargetingDataType =\n DEFAULT_CAMPAIGN_CONFIGURATION.targetingData;\n private configurationData: ConfigurationDataType =\n DEFAULT_CAMPAIGN_CONFIGURATION.configurationData;\n private settings: ClientSettingsType;\n private lastUpdate: Date;\n private storage: IStorage<ClientDataType>;\n private requester: Requester;\n private eventSource?: IEventSource;\n private externalClientConfiguration?: GetClientConfigurationResultType;\n\n constructor({\n settings,\n storage,\n requester,\n externalClientConfiguration,\n targetingCleanupInterval,\n }: CampaignConfigurationParametersType) {\n this.requester = requester;\n this.settings = settings;\n this.lastUpdate = new Date();\n this.storage = storage;\n this.readStorageData();\n this.externalClientConfiguration = externalClientConfiguration;\n\n if (targetingCleanupInterval) {\n const cleanupIntervalMinutes =\n targetingCleanupInterval < 0 ? 1 : targetingCleanupInterval;\n\n // --- Note ---\n // We can not make delayed code execution recoverable, as it might lead\n // to targeting data storage size overflow\n try {\n this.targetingDataIntervalId = setInterval(\n () =>\n this.cleanupOutdatedTargetingData.call(this, this.targetingData),\n cleanupIntervalMinutes * Milliseconds.Minute,\n );\n } catch (err) {\n if (this.targetingDataIntervalId) {\n clearInterval(this.targetingDataIntervalId);\n }\n\n throw err;\n }\n }\n }\n\n public async initialize(\n externalEventSource: IExternalEventSourceConstructor,\n ): Promise<Result<void, KameleoonError>> {\n const shouldUpdate = this.checkShouldUpdate();\n\n // --- Initial data fetch ---\n if (shouldUpdate) {\n const updateResult = await this.updateClientConfiguration();\n\n if (!updateResult.ok) {\n return updateResult;\n }\n }\n\n // --- Note ---\n // Interval is cleaned up in case real time update\n // was activated while initialized client already exists\n if (\n this.configurationData.configuration.realTimeUpdate &&\n !this.externalClientConfiguration\n ) {\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n this.eventSource = new ExternalEventSource(\n this.settings.siteCode,\n externalEventSource,\n );\n\n const updateEventCallback = (_timeStamp: number) => {\n this.updateClientConfiguration();\n\n if (this.configurationUpdateCallback) {\n this.configurationUpdateCallback();\n }\n };\n\n this.eventSource.open(updateEventCallback);\n } else {\n // --- Note ---\n // Event Source is cleaned up in case real time update\n // was disabled while initialized client already exists\n if (this.eventSource) {\n this.eventSource.close();\n }\n\n if (this.updateConfigurationIntervalId) {\n clearInterval(this.updateConfigurationIntervalId);\n }\n\n // --- Note ---\n // Same as targeting data interval we don't want to make failed configuration\n // retrieval recoverable\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 return Ok();\n }\n\n public addTargetingData(\n visitorCode: string,\n ...data: KameleoonDataType[]\n ): Result<void, KameleoonError> {\n if (!(visitorCode in this.targetingData)) {\n this.targetingData[visitorCode] = [];\n }\n\n data.forEach((dataItem) => {\n // --- Note ---\n // Previous check excludes the failure possibility\n (this.targetingData[visitorCode] as TargetingDataItemType[]).push({\n data: dataItem.data,\n lastActivityTime: Date.now(),\n });\n });\n\n // --- Note ---\n // `targetingData` should not refresh `lastUpdate` time\n const result = this.updateStorageData(this.lastUpdate);\n\n if (result.ok) {\n data.forEach((dataItem) => {\n if (!this.unsentTargetingData[visitorCode]) {\n this.unsentTargetingData[visitorCode] = [];\n }\n\n this.unsentTargetingData[visitorCode].push(dataItem);\n });\n }\n\n return result;\n }\n\n public getUnsentData(visitorCode: string): KameleoonDataType[] {\n const unsentDataItem = this.unsentTargetingData[visitorCode];\n\n if (!unsentDataItem) {\n return [];\n }\n\n return unsentDataItem;\n }\n\n public clearUnsentData(visitorCode: string): void {\n this.unsentTargetingData[visitorCode] = [];\n }\n\n public onConfigurationUpdate(callback: () => void): void {\n this.configurationUpdateCallback = callback;\n }\n\n get storedTargetingData(): TargetingDataType {\n return this.targetingData;\n }\n\n get experiments(): ExperimentItemType[] {\n return this.configurationData.experiments;\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 private checkShouldUpdate(): boolean {\n const { featureFlags, experiments, configuration } = this.configurationData;\n const { updateInterval } = this.settings;\n\n if (!featureFlags.length && !experiments.length) {\n return true;\n }\n\n if (configuration.realTimeUpdate) {\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 cleanupOutdatedTargetingData(data: TargetingDataType): void {\n const currentTime = Date.now();\n const resultTargetingData: TargetingDataType = { ...data };\n\n for (const [key, value] of Object.entries(resultTargetingData)) {\n if (value) {\n const resultValue = value.filter((item) => {\n const isDataExpired =\n item.lastActivityTime + SESSION_DURATION < currentTime;\n\n return isDataExpired;\n });\n\n resultTargetingData[key] = resultValue;\n } else {\n resultTargetingData[key] = [];\n }\n }\n\n this.targetingData = resultTargetingData;\n // --- Note ---\n // `targetingData` should not refresh `lastUpdate` time\n this.updateStorageData(this.lastUpdate).throw();\n }\n\n private readStorageData(): void {\n const result = this.storage.read();\n\n if (result.ok) {\n const { kameleoonTargetingData, kameleoonConfiguration, lastUpdate } =\n result.data;\n\n this.configurationData = kameleoonConfiguration;\n this.targetingData = kameleoonTargetingData;\n this.lastUpdate = new Date(Date.parse(lastUpdate));\n }\n }\n\n private async updateClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<boolean, KameleoonError>> {\n // --- Note ---\n // if `externalClientConfiguration` is passed, fetching is disabled and passed config is used instead\n if (this.externalClientConfiguration) {\n // --- Note ---\n // `featureFlags` field is omitted (v1)\n // instead `featureFlagConfigurations` is used (v2)\n const { configuration, experiments, featureFlagConfigurations } =\n this.externalClientConfiguration;\n\n this.configurationData = {\n configuration,\n experiments,\n featureFlags: featureFlagConfigurations,\n };\n } else {\n const clientConfigurationResult =\n await this.requester.getClientConfiguration(timeStamp);\n\n if (!clientConfigurationResult.ok) {\n return clientConfigurationResult;\n }\n\n // --- Note ---\n // `featureFlags` field is omitted (v1)\n // instead `featureFlagConfigurations` is used (v2)\n const { configuration, experiments, featureFlagConfigurations } =\n clientConfigurationResult.data;\n\n this.configurationData = {\n configuration,\n experiments,\n featureFlags: featureFlagConfigurations,\n };\n }\n\n const result = this.updateStorageData(new Date());\n\n if (!result.ok) {\n return result;\n }\n\n return Ok(true);\n }\n\n private updateStorageData(lastUpdate: Date): Result<void, KameleoonError> {\n const data: ClientDataType = {\n kameleoonTargetingData: this.targetingData,\n kameleoonConfiguration: this.configurationData,\n lastUpdate: lastUpdate.toString(),\n };\n\n return this.storage.write(data);\n }\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  /**
2
- * @constant default cleanup interval in millisecons
2
+ * @constant default cleanup interval in minutes
3
3
  * */
4
- export declare const CLEANUP_TARGETING_DATA_INTERVAL: number;
4
+ export declare const CLEANUP_TARGETING_DATA_INTERVAL = 30;
5
5
  /**
6
- * @constant default session duration in millisecons
6
+ * @constant default session duration in milliseconds
7
7
  * */
8
8
  export declare const SESSION_DURATION: number;
9
9
  export declare const DEFAULT_CAMPAIGN_CONFIGURATION: {
@@ -1,23 +1,29 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_CAMPAIGN_CONFIGURATION = exports.SESSION_DURATION = exports.CLEANUP_TARGETING_DATA_INTERVAL = void 0;
4
- const types_1 = require("../types");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SESSION_DURATION = exports.DEFAULT_CAMPAIGN_CONFIGURATION = exports.CLEANUP_TARGETING_DATA_INTERVAL = void 0;
7
+ var _types = require("../types");
5
8
  /**
6
- * @constant default cleanup interval in millisecons
9
+ * @constant default cleanup interval in minutes
7
10
  * */
8
- exports.CLEANUP_TARGETING_DATA_INTERVAL = 30 * types_1.Milliseconds.Minute;
11
+ const CLEANUP_TARGETING_DATA_INTERVAL = 30;
9
12
  /**
10
- * @constant default session duration in millisecons
13
+ * @constant default session duration in milliseconds
11
14
  * */
12
- exports.SESSION_DURATION = 30 * types_1.Milliseconds.Minute;
13
- exports.DEFAULT_CAMPAIGN_CONFIGURATION = {
14
- targetingData: {},
15
- configurationData: {
16
- experiments: [],
17
- featureFlags: [],
18
- configuration: {
19
- realTimeUpdate: false,
20
- },
21
- },
15
+ exports.CLEANUP_TARGETING_DATA_INTERVAL = CLEANUP_TARGETING_DATA_INTERVAL;
16
+ const SESSION_DURATION = 30 * _types.Milliseconds.Minute;
17
+ exports.SESSION_DURATION = SESSION_DURATION;
18
+ const DEFAULT_CAMPAIGN_CONFIGURATION = {
19
+ targetingData: {},
20
+ configurationData: {
21
+ experiments: [],
22
+ featureFlags: [],
23
+ configuration: {
24
+ realTimeUpdate: false
25
+ }
26
+ }
22
27
  };
28
+ exports.DEFAULT_CAMPAIGN_CONFIGURATION = DEFAULT_CAMPAIGN_CONFIGURATION;
23
29
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/campaignConfiguration/constants.ts"],"names":[],"mappings":";;;AAAA,oCAAwC;AAExC;;KAEK;AACQ,QAAA,+BAA+B,GAAG,EAAE,GAAG,oBAAY,CAAC,MAAM,CAAC;AACxE;;KAEK;AACQ,QAAA,gBAAgB,GAAG,EAAE,GAAG,oBAAY,CAAC,MAAM,CAAC;AAE5C,QAAA,8BAA8B,GAAG;IAC5C,aAAa,EAAE,EAAE;IACjB,iBAAiB,EAAE;QACjB,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE;YACb,cAAc,EAAE,KAAK;SACtB;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"constants.js","names":["_types","require","CLEANUP_TARGETING_DATA_INTERVAL","exports","SESSION_DURATION","Milliseconds","Minute","DEFAULT_CAMPAIGN_CONFIGURATION","targetingData","configurationData","experiments","featureFlags","configuration","realTimeUpdate"],"sources":["../../src/campaignConfiguration/constants.ts"],"sourcesContent":["import { Milliseconds } from '../types';\n\n/**\n * @constant default cleanup interval in minutes\n * */\nexport const CLEANUP_TARGETING_DATA_INTERVAL = 30;\n/**\n * @constant default session duration in milliseconds\n * */\nexport const SESSION_DURATION = 30 * Milliseconds.Minute;\n\nexport const DEFAULT_CAMPAIGN_CONFIGURATION = {\n targetingData: {},\n configurationData: {\n experiments: [],\n featureFlags: [],\n configuration: {\n realTimeUpdate: false,\n },\n },\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACO,MAAMC,+BAA+B,GAAG,EAAE;AACjD;AACA;AACA;AAFAC,OAAA,CAAAD,+BAAA,GAAAA,+BAAA;AAGO,MAAME,gBAAgB,GAAG,EAAE,GAAGC,mBAAY,CAACC,MAAM;AAACH,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAElD,MAAMG,8BAA8B,GAAG;EAC5CC,aAAa,EAAE,CAAC,CAAC;EACjBC,iBAAiB,EAAE;IACjBC,WAAW,EAAE,EAAE;IACfC,YAAY,EAAE,EAAE;IAChBC,aAAa,EAAE;MACbC,cAAc,EAAE;IAClB;EACF;AACF,CAAC;AAACV,OAAA,CAAAI,8BAAA,GAAAA,8BAAA"}
@@ -1,2 +1,3 @@
1
1
  export { ConfigurationDataType, CampaignConfigurationType, VariationByExpositionType, FeatureVariableType, ExperimentItemType, RespoolTimeType, FeatureFlagType, RuleItemType, JSONValue, RuleType, JSONType, } from './types';
2
2
  export { CampaignConfiguration } from './campaignConfiguration';
3
+ export { CLEANUP_TARGETING_DATA_INTERVAL } from './constants';
@@ -1,8 +1,87 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CampaignConfiguration = exports.RuleType = void 0;
4
- var types_1 = require("./types");
5
- Object.defineProperty(exports, "RuleType", { enumerable: true, get: function () { return types_1.RuleType; } });
6
- var campaignConfiguration_1 = require("./campaignConfiguration");
7
- Object.defineProperty(exports, "CampaignConfiguration", { enumerable: true, get: function () { return campaignConfiguration_1.CampaignConfiguration; } });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CLEANUP_TARGETING_DATA_INTERVAL", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _constants.CLEANUP_TARGETING_DATA_INTERVAL;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "CampaignConfiguration", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _campaignConfiguration.CampaignConfiguration;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "CampaignConfigurationType", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _types.CampaignConfigurationType;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "ConfigurationDataType", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _types.ConfigurationDataType;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "ExperimentItemType", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _types.ExperimentItemType;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "FeatureFlagType", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _types.FeatureFlagType;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "FeatureVariableType", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _types.FeatureVariableType;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "JSONType", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _types.JSONType;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "JSONValue", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _types.JSONValue;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "RespoolTimeType", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _types.RespoolTimeType;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "RuleItemType", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _types.RuleItemType;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "RuleType", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _types.RuleType;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "VariationByExpositionType", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _types.VariationByExpositionType;
82
+ }
83
+ });
84
+ var _types = require("./types");
85
+ var _campaignConfiguration = require("./campaignConfiguration");
86
+ var _constants = require("./constants");
8
87
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/campaignConfiguration/index.ts"],"names":[],"mappings":";;;AAAA,iCAYiB;AAFf,iGAAA,QAAQ,OAAA;AAGV,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","names":["_types","require","_campaignConfiguration","_constants"],"sources":["../../src/campaignConfiguration/index.ts"],"sourcesContent":["export {\n ConfigurationDataType,\n CampaignConfigurationType,\n VariationByExpositionType,\n FeatureVariableType,\n ExperimentItemType,\n RespoolTimeType,\n FeatureFlagType,\n RuleItemType,\n JSONValue,\n RuleType,\n JSONType,\n} from './types';\nexport { CampaignConfiguration } from './campaignConfiguration';\nexport { CLEANUP_TARGETING_DATA_INTERVAL } from './constants';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAaA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA"}
@@ -1,6 +1,6 @@
1
1
  import { ClientSettingsType } from '../clientSettings';
2
2
  import { KameleoonDataType } from '../kameleoonData';
3
- import { Requester } from '../requester';
3
+ import { Requester, GetClientConfigurationResultType } from '../requester';
4
4
  import { ClientDataType, IStorage } from '../storage';
5
5
  import { SegmentType, TargetingDataType } from '../targeting';
6
6
  import { VariableType } from '../types';
@@ -56,7 +56,7 @@ export type ExperimentItemType = {
56
56
  };
57
57
  export type ExperimentVariationType = {
58
58
  id: string;
59
- customJson: JSONType;
59
+ customJson: string;
60
60
  };
61
61
  export type DeviationType = {
62
62
  variationId: string;
@@ -93,9 +93,11 @@ export type FeatureVariableType = {
93
93
  };
94
94
  export type RuleItemType = {
95
95
  type: RuleType;
96
+ id: number;
97
+ respoolTime: number | null;
96
98
  order: number;
97
99
  exposition: number;
98
- experimentId: number | null;
100
+ experimentId: number;
99
101
  variationByExposition: VariationByExpositionType[];
100
102
  segment: SegmentType | null;
101
103
  };
@@ -123,4 +125,6 @@ export type CampaignConfigurationParametersType = {
123
125
  settings: ClientSettingsType;
124
126
  storage: IStorage<ClientDataType>;
125
127
  requester: Requester;
128
+ externalClientConfiguration?: GetClientConfigurationResultType;
129
+ targetingCleanupInterval?: number;
126
130
  };
@@ -1,47 +1,55 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExperimentStatus = exports.FeatureStatus = exports.FeatureFlagSdkLanguageType = exports.RuleType = exports.ExperimentType = void 0;
4
- var ExperimentType;
5
- (function (ExperimentType) {
6
- ExperimentType["CLASSIC"] = "CLASSIC";
7
- ExperimentType["SERVER_SIDE"] = "SERVER_SIDE";
8
- ExperimentType["DEVELOPER"] = "DEVELOPER";
9
- ExperimentType["MVT"] = "MVT";
10
- ExperimentType["HYBRID"] = "HYBRID";
11
- })(ExperimentType = exports.ExperimentType || (exports.ExperimentType = {}));
12
- var RuleType;
13
- (function (RuleType) {
14
- RuleType["PROGRESSIVE_DELIVERY"] = "PROGRESSIVE_DELIVERY";
15
- RuleType["TARGETED_DELIVERY"] = "TARGETED_DELIVERY";
16
- RuleType["EXPERIMENTATION"] = "EXPERIMENTATION";
17
- })(RuleType = exports.RuleType || (exports.RuleType = {}));
18
- var FeatureFlagSdkLanguageType;
19
- (function (FeatureFlagSdkLanguageType) {
20
- FeatureFlagSdkLanguageType["ANDROID"] = "ANDROID";
21
- FeatureFlagSdkLanguageType["SWIFT"] = "SWIFT";
22
- FeatureFlagSdkLanguageType["JAVA"] = "JAVA";
23
- FeatureFlagSdkLanguageType["CSHARP"] = "CSHARP";
24
- FeatureFlagSdkLanguageType["NODEJS"] = "NODEJS";
25
- FeatureFlagSdkLanguageType["PHP"] = "PHP";
26
- FeatureFlagSdkLanguageType["RUBY"] = "RUBY";
27
- FeatureFlagSdkLanguageType["GO"] = "GO";
28
- FeatureFlagSdkLanguageType["FLUTTER"] = "FLUTTER";
29
- FeatureFlagSdkLanguageType["REACTJS"] = "REACTJS";
30
- })(FeatureFlagSdkLanguageType = exports.FeatureFlagSdkLanguageType || (exports.FeatureFlagSdkLanguageType = {}));
31
- var FeatureStatus;
32
- (function (FeatureStatus) {
33
- FeatureStatus["ACTIVATED"] = "ACTIVATED";
34
- FeatureStatus["DEACTIVATED"] = "DEACTIVATED";
35
- FeatureStatus["SCHEDULED"] = "SCHEDULED";
36
- })(FeatureStatus = exports.FeatureStatus || (exports.FeatureStatus = {}));
37
- var ExperimentStatus;
38
- (function (ExperimentStatus) {
39
- ExperimentStatus["DRAFT"] = "DRAFT";
40
- ExperimentStatus["ACTIVE"] = "ACTIVE";
41
- ExperimentStatus["PAUSED"] = "PAUSED";
42
- ExperimentStatus["SCHEDULED"] = "SCHEDULED";
43
- ExperimentStatus["STOPPED"] = "STOPPED";
44
- ExperimentStatus["USED_AS_PERSONALIZATION"] = "USED_AS_PERSONALIZATION";
45
- ExperimentStatus["DEVIATED"] = "DEVIATED";
46
- })(ExperimentStatus = exports.ExperimentStatus || (exports.ExperimentStatus = {}));
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RuleType = exports.FeatureStatus = exports.FeatureFlagSdkLanguageType = exports.ExperimentType = exports.ExperimentStatus = void 0;
7
+ let ExperimentType = /*#__PURE__*/function (ExperimentType) {
8
+ ExperimentType["CLASSIC"] = "CLASSIC";
9
+ ExperimentType["SERVER_SIDE"] = "SERVER_SIDE";
10
+ ExperimentType["DEVELOPER"] = "DEVELOPER";
11
+ ExperimentType["MVT"] = "MVT";
12
+ ExperimentType["HYBRID"] = "HYBRID";
13
+ return ExperimentType;
14
+ }({});
15
+ exports.ExperimentType = ExperimentType;
16
+ let RuleType = /*#__PURE__*/function (RuleType) {
17
+ RuleType["PROGRESSIVE_DELIVERY"] = "PROGRESSIVE_DELIVERY";
18
+ RuleType["TARGETED_DELIVERY"] = "TARGETED_DELIVERY";
19
+ RuleType["EXPERIMENTATION"] = "EXPERIMENTATION";
20
+ return RuleType;
21
+ }({});
22
+ exports.RuleType = RuleType;
23
+ let FeatureFlagSdkLanguageType = /*#__PURE__*/function (FeatureFlagSdkLanguageType) {
24
+ FeatureFlagSdkLanguageType["ANDROID"] = "ANDROID";
25
+ FeatureFlagSdkLanguageType["SWIFT"] = "SWIFT";
26
+ FeatureFlagSdkLanguageType["JAVA"] = "JAVA";
27
+ FeatureFlagSdkLanguageType["CSHARP"] = "CSHARP";
28
+ FeatureFlagSdkLanguageType["NODEJS"] = "NODEJS";
29
+ FeatureFlagSdkLanguageType["PHP"] = "PHP";
30
+ FeatureFlagSdkLanguageType["RUBY"] = "RUBY";
31
+ FeatureFlagSdkLanguageType["GO"] = "GO";
32
+ FeatureFlagSdkLanguageType["FLUTTER"] = "FLUTTER";
33
+ FeatureFlagSdkLanguageType["REACTJS"] = "REACTJS";
34
+ return FeatureFlagSdkLanguageType;
35
+ }({});
36
+ exports.FeatureFlagSdkLanguageType = FeatureFlagSdkLanguageType;
37
+ let FeatureStatus = /*#__PURE__*/function (FeatureStatus) {
38
+ FeatureStatus["ACTIVATED"] = "ACTIVATED";
39
+ FeatureStatus["DEACTIVATED"] = "DEACTIVATED";
40
+ FeatureStatus["SCHEDULED"] = "SCHEDULED";
41
+ return FeatureStatus;
42
+ }({});
43
+ exports.FeatureStatus = FeatureStatus;
44
+ let ExperimentStatus = /*#__PURE__*/function (ExperimentStatus) {
45
+ ExperimentStatus["DRAFT"] = "DRAFT";
46
+ ExperimentStatus["ACTIVE"] = "ACTIVE";
47
+ ExperimentStatus["PAUSED"] = "PAUSED";
48
+ ExperimentStatus["SCHEDULED"] = "SCHEDULED";
49
+ ExperimentStatus["STOPPED"] = "STOPPED";
50
+ ExperimentStatus["USED_AS_PERSONALIZATION"] = "USED_AS_PERSONALIZATION";
51
+ ExperimentStatus["DEVIATED"] = "DEVIATED";
52
+ return ExperimentStatus;
53
+ }({});
54
+ exports.ExperimentStatus = ExperimentStatus;
47
55
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/campaignConfiguration/types.ts"],"names":[],"mappings":";;;AAqBA,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,6CAA2B,CAAA;IAC3B,yCAAuB,CAAA;IACvB,6BAAW,CAAA;IACX,mCAAiB,CAAA;AACnB,CAAC,EANW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAMzB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,yDAA6C,CAAA;IAC7C,mDAAuC,CAAA;IACvC,+CAAmC,CAAA;AACrC,CAAC,EAJW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAInB;AAED,IAAY,0BAWX;AAXD,WAAY,0BAA0B;IACpC,iDAAmB,CAAA;IACnB,6CAAe,CAAA;IACf,2CAAa,CAAA;IACb,+CAAiB,CAAA;IACjB,+CAAiB,CAAA;IACjB,yCAAW,CAAA;IACX,2CAAa,CAAA;IACb,uCAAS,CAAA;IACT,iDAAmB,CAAA;IACnB,iDAAmB,CAAA;AACrB,CAAC,EAXW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAWrC;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,4CAA2B,CAAA;IAC3B,wCAAuB,CAAA;AACzB,CAAC,EAJW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAIxB;AA+BD,IAAY,gBAQX;AARD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,2CAAuB,CAAA;IACvB,uCAAmB,CAAA;IACnB,uEAAmD,CAAA;IACnD,yCAAqB,CAAA;AACvB,CAAC,EARW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAQ3B"}
1
+ {"version":3,"file":"types.js","names":["ExperimentType","exports","RuleType","FeatureFlagSdkLanguageType","FeatureStatus","ExperimentStatus"],"sources":["../../src/campaignConfiguration/types.ts"],"sourcesContent":["import { ClientSettingsType } from '../clientSettings';\nimport { KameleoonDataType } from '../kameleoonData';\nimport { Requester, GetClientConfigurationResultType } from '../requester';\nimport { ClientDataType, IStorage } from '../storage';\nimport { SegmentType, TargetingDataType } from '../targeting';\nimport { VariableType } from '../types';\n\nexport type ScheduleType = {\n dateStart: string;\n dateEnd: string;\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 ExperimentType {\n CLASSIC = 'CLASSIC',\n SERVER_SIDE = 'SERVER_SIDE',\n DEVELOPER = 'DEVELOPER',\n MVT = 'MVT',\n HYBRID = 'HYBRID',\n}\n\nexport enum RuleType {\n PROGRESSIVE_DELIVERY = 'PROGRESSIVE_DELIVERY',\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 type ExperimentItemType = {\n id: string;\n name: string;\n type: ExperimentType;\n siteId: string;\n siteCode: string;\n status: ExperimentStatus;\n siteEnabled: boolean;\n variations: ExperimentVariationType[];\n deviations: DeviationType[];\n respoolTime: RespoolTimeType[];\n segment: SegmentType | null;\n};\n\nexport type ExperimentVariationType = {\n id: string;\n customJson: string;\n};\n\nexport type DeviationType = {\n variationId: string;\n value: number;\n};\n\nexport type RespoolTimeType = {\n variationId: string;\n value: number;\n};\n\nexport enum ExperimentStatus {\n DRAFT = 'DRAFT',\n ACTIVE = 'ACTIVE',\n PAUSED = 'PAUSED',\n SCHEDULED = 'SCHEDULED',\n STOPPED = 'STOPPED',\n USED_AS_PERSONALIZATION = 'USED_AS_PERSONALIZATION',\n DEVIATED = 'DEVIATED',\n}\n\nexport type FeatureFlagType = {\n id: number;\n featureKey: string;\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 VariationByExpositionType = {\n variationKey: string;\n variationId: number | null;\n exposition: number;\n};\n\nexport type ConfigurationDataType = {\n experiments: ExperimentItemType[];\n featureFlags: FeatureFlagType[];\n configuration: ConfigurationType;\n};\n\nexport type ConfigurationType = {\n realTimeUpdate: boolean;\n};\n\nexport type CampaignConfigurationType = {\n targetingData: TargetingDataType;\n configurationData: ConfigurationDataType;\n};\n\nexport type UnsentTargetingDataType = {\n [visitorCode: string]: KameleoonDataType[];\n};\n\nexport type CampaignConfigurationParametersType = {\n settings: ClientSettingsType;\n storage: IStorage<ClientDataType>;\n requester: Requester;\n externalClientConfiguration?: GetClientConfigurationResultType;\n targetingCleanupInterval?: number;\n};\n"],"mappings":";;;;;;IAqBYA,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAAAC,OAAA,CAAAD,cAAA,GAAAA,cAAA;AAAA,IAQdE,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAAAD,OAAA,CAAAC,QAAA,GAAAA,QAAA;AAAA,IAMRC,0BAA0B,0BAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAA1BA,0BAA0B;EAAA,OAA1BA,0BAA0B;AAAA;AAAAF,OAAA,CAAAE,0BAAA,GAAAA,0BAAA;AAAA,IAa1BC,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;AAAAH,OAAA,CAAAG,aAAA,GAAAA,aAAA;AAAA,IAmCbC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAAAJ,OAAA,CAAAI,gBAAA,GAAAA,gBAAA"}
@@ -5,7 +5,7 @@ export interface IClientSettings {
5
5
  }
6
6
  export declare class ClientSettings implements IClientSettings {
7
7
  private updateInterval;
8
- private environment;
8
+ private environment?;
9
9
  private siteCode;
10
10
  constructor(siteCode: string, configuration?: Partial<SDKConfigurationType>);
11
11
  get settings(): ClientSettingsType;
@@ -1,29 +1,36 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.ClientSettings = void 0;
4
- const types_1 = require("../types");
7
+ var _types = require("../types");
8
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
10
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
5
11
  class ClientSettings {
6
- constructor(siteCode, configuration) {
7
- this.updateInterval = 30 * types_1.Milliseconds.Minute;
8
- this.environment = null;
9
- this.siteCode = siteCode;
10
- if (configuration === null || configuration === void 0 ? void 0 : configuration.environment) {
11
- this.environment = configuration.environment;
12
- }
13
- if (configuration === null || configuration === void 0 ? void 0 : configuration.updateInterval) {
14
- if (configuration.updateInterval < 1) {
15
- this.updateInterval = 1 * types_1.Milliseconds.Minute;
16
- }
17
- this.updateInterval = configuration.updateInterval * types_1.Milliseconds.Minute;
18
- }
12
+ constructor(siteCode, configuration) {
13
+ _defineProperty(this, "updateInterval", 30 * _types.Milliseconds.Minute);
14
+ _defineProperty(this, "environment", void 0);
15
+ _defineProperty(this, "siteCode", void 0);
16
+ this.siteCode = siteCode;
17
+ if (configuration?.environment) {
18
+ this.environment = configuration.environment;
19
19
  }
20
- get settings() {
21
- return {
22
- updateInterval: this.updateInterval,
23
- environment: this.environment,
24
- siteCode: this.siteCode,
25
- };
20
+ if (configuration?.updateInterval) {
21
+ if (configuration.updateInterval < 1) {
22
+ this.updateInterval = 1 * _types.Milliseconds.Minute;
23
+ }
24
+ this.updateInterval = configuration.updateInterval * _types.Milliseconds.Minute;
26
25
  }
26
+ }
27
+ get settings() {
28
+ return {
29
+ updateInterval: this.updateInterval,
30
+ environment: this.environment,
31
+ siteCode: this.siteCode
32
+ };
33
+ }
27
34
  }
28
35
  exports.ClientSettings = ClientSettings;
29
36
  //# sourceMappingURL=clientSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientSettings.js","sourceRoot":"","sources":["../../src/clientSettings/clientSettings.ts"],"names":[],"mappings":";;;AAAA,oCAA2E;AAO3E,MAAa,cAAc;IAKzB,YAAY,QAAgB,EAAE,aAA6C;QAJnE,mBAAc,GAAW,EAAE,GAAG,oBAAY,CAAC,MAAM,CAAC;QAClD,gBAAW,GAAuB,IAAI,CAAC;QAI7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,EAAE;YAC9B,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;SAC9C;QAED,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,cAAc,EAAE;YACjC,IAAI,aAAa,CAAC,cAAc,GAAG,CAAC,EAAE;gBACpC,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,oBAAY,CAAC,MAAM,CAAC;aAC/C;YAED,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,GAAG,oBAAY,CAAC,MAAM,CAAC;SAC1E;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF;AA5BD,wCA4BC"}
1
+ {"version":3,"file":"clientSettings.js","names":["_types","require","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","ClientSettings","constructor","siteCode","configuration","Milliseconds","Minute","environment","updateInterval","settings","exports"],"sources":["../../src/clientSettings/clientSettings.ts"],"sourcesContent":["import { Environment, Milliseconds, SDKConfigurationType } from '../types';\nimport { ClientSettingsType } from './types';\n\nexport interface IClientSettings {\n readonly settings: ClientSettingsType;\n}\n\nexport class ClientSettings implements IClientSettings {\n private updateInterval: number = 30 * Milliseconds.Minute;\n private environment?: Environment;\n private siteCode: string;\n\n constructor(siteCode: string, configuration?: Partial<SDKConfigurationType>) {\n this.siteCode = siteCode;\n\n if (configuration?.environment) {\n this.environment = configuration.environment;\n }\n\n if (configuration?.updateInterval) {\n if (configuration.updateInterval < 1) {\n this.updateInterval = 1 * Milliseconds.Minute;\n }\n\n this.updateInterval = configuration.updateInterval * Milliseconds.Minute;\n }\n }\n\n get settings(): ClientSettingsType {\n return {\n updateInterval: this.updateInterval,\n environment: this.environment,\n siteCode: this.siteCode,\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAA2E,SAAAC,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAOpE,MAAMU,cAAc,CAA4B;EAKrDC,WAAWA,CAACC,QAAgB,EAAEC,aAA6C,EAAE;IAAA1B,eAAA,yBAJ5C,EAAE,GAAG2B,mBAAY,CAACC,MAAM;IAAA5B,eAAA;IAAAA,eAAA;IAKvD,IAAI,CAACyB,QAAQ,GAAGA,QAAQ;IAExB,IAAIC,aAAa,EAAEG,WAAW,EAAE;MAC9B,IAAI,CAACA,WAAW,GAAGH,aAAa,CAACG,WAAW;IAC9C;IAEA,IAAIH,aAAa,EAAEI,cAAc,EAAE;MACjC,IAAIJ,aAAa,CAACI,cAAc,GAAG,CAAC,EAAE;QACpC,IAAI,CAACA,cAAc,GAAG,CAAC,GAAGH,mBAAY,CAACC,MAAM;MAC/C;MAEA,IAAI,CAACE,cAAc,GAAGJ,aAAa,CAACI,cAAc,GAAGH,mBAAY,CAACC,MAAM;IAC1E;EACF;EAEA,IAAIG,QAAQA,CAAA,EAAuB;IACjC,OAAO;MACLD,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCD,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BJ,QAAQ,EAAE,IAAI,CAACA;IACjB,CAAC;EACH;AACF;AAACO,OAAA,CAAAT,cAAA,GAAAA,cAAA"}
@@ -1,6 +1,20 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClientSettings = void 0;
4
- var clientSettings_1 = require("./clientSettings");
5
- Object.defineProperty(exports, "ClientSettings", { enumerable: true, get: function () { return clientSettings_1.ClientSettings; } });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ClientSettings", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _clientSettings.ClientSettings;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ClientSettingsType", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _types.ClientSettingsType;
16
+ }
17
+ });
18
+ var _clientSettings = require("./clientSettings");
19
+ var _types = require("./types");
6
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/clientSettings/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","names":["_clientSettings","require","_types"],"sources":["../../src/clientSettings/index.ts"],"sourcesContent":["export { ClientSettings } from './clientSettings';\nexport { ClientSettingsType } from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA"}
@@ -1,6 +1,6 @@
1
1
  import { Environment } from '../types';
2
2
  export type ClientSettingsType = {
3
3
  updateInterval: number;
4
- environment: Environment | null;
4
+ environment?: Environment;
5
5
  siteCode: string;
6
6
  };
@@ -1,3 +1,6 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/clientSettings/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/clientSettings/types.ts"],"sourcesContent":["import { Environment } from '../types';\n\nexport type ClientSettingsType = {\n updateInterval: number;\n environment?: Environment;\n siteCode: string;\n};\n"],"mappings":""}
@@ -2,6 +2,8 @@ export declare const UNALLOCATED_VARIATION_ID = 0;
2
2
  export declare const OFF_VARIATION_KEY = "off";
3
3
  export declare const KAMELEOON_COOKIE_KEY = "kameleoonVisitorCode";
4
4
  export declare const VISITOR_CODE_LENGTH = 16;
5
+ export declare const CACHE_CLEANUP_TIMEOUT = 10;
6
+ export declare const CACHE_ITEM_LIFETIME = 5;
5
7
  export declare enum Cookie {
6
8
  PairsDelimiter = "; ",
7
9
  KeyValueDelimiter = "=",
@@ -9,3 +11,12 @@ export declare enum Cookie {
9
11
  Path = "Path",
10
12
  Domain = "Domain"
11
13
  }
14
+ /**
15
+ * @readonly
16
+ * @enum {string} an Enum of all the possible Kameleoon SDK types
17
+ * */
18
+ export declare enum SDKType {
19
+ NodeJS = "nodejs",
20
+ JavaScript = "javascript",
21
+ React = "react"
22
+ }
package/dist/constants.js CHANGED
@@ -1,16 +1,39 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Cookie = exports.VISITOR_CODE_LENGTH = exports.KAMELEOON_COOKIE_KEY = exports.OFF_VARIATION_KEY = exports.UNALLOCATED_VARIATION_ID = void 0;
4
- exports.UNALLOCATED_VARIATION_ID = 0;
5
- exports.OFF_VARIATION_KEY = 'off';
6
- exports.KAMELEOON_COOKIE_KEY = 'kameleoonVisitorCode';
7
- exports.VISITOR_CODE_LENGTH = 16;
8
- var Cookie;
9
- (function (Cookie) {
10
- Cookie["PairsDelimiter"] = "; ";
11
- Cookie["KeyValueDelimiter"] = "=";
12
- Cookie["MaxAge"] = "MaxAge";
13
- Cookie["Path"] = "Path";
14
- Cookie["Domain"] = "Domain";
15
- })(Cookie = exports.Cookie || (exports.Cookie = {}));
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.VISITOR_CODE_LENGTH = exports.UNALLOCATED_VARIATION_ID = exports.SDKType = exports.OFF_VARIATION_KEY = exports.KAMELEOON_COOKIE_KEY = exports.Cookie = exports.CACHE_ITEM_LIFETIME = exports.CACHE_CLEANUP_TIMEOUT = void 0;
7
+ const UNALLOCATED_VARIATION_ID = 0;
8
+ exports.UNALLOCATED_VARIATION_ID = UNALLOCATED_VARIATION_ID;
9
+ const OFF_VARIATION_KEY = 'off';
10
+ exports.OFF_VARIATION_KEY = OFF_VARIATION_KEY;
11
+ const KAMELEOON_COOKIE_KEY = 'kameleoonVisitorCode';
12
+ exports.KAMELEOON_COOKIE_KEY = KAMELEOON_COOKIE_KEY;
13
+ const VISITOR_CODE_LENGTH = 16;
14
+ exports.VISITOR_CODE_LENGTH = VISITOR_CODE_LENGTH;
15
+ const CACHE_CLEANUP_TIMEOUT = 10;
16
+ exports.CACHE_CLEANUP_TIMEOUT = CACHE_CLEANUP_TIMEOUT;
17
+ const CACHE_ITEM_LIFETIME = 5;
18
+ exports.CACHE_ITEM_LIFETIME = CACHE_ITEM_LIFETIME;
19
+ let Cookie = /*#__PURE__*/function (Cookie) {
20
+ Cookie["PairsDelimiter"] = "; ";
21
+ Cookie["KeyValueDelimiter"] = "=";
22
+ Cookie["MaxAge"] = "MaxAge";
23
+ Cookie["Path"] = "Path";
24
+ Cookie["Domain"] = "Domain";
25
+ return Cookie;
26
+ }({});
27
+ /**
28
+ * @readonly
29
+ * @enum {string} an Enum of all the possible Kameleoon SDK types
30
+ * */
31
+ exports.Cookie = Cookie;
32
+ let SDKType = /*#__PURE__*/function (SDKType) {
33
+ SDKType["NodeJS"] = "nodejs";
34
+ SDKType["JavaScript"] = "javascript";
35
+ SDKType["React"] = "react";
36
+ return SDKType;
37
+ }({});
38
+ exports.SDKType = SDKType;
16
39
  //# sourceMappingURL=constants.js.map