@kameleoon/javascript-sdk-core 2.10.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cacheManager/cacheManager.js +1 -11
- package/dist/cacheManager/cacheManager.js.map +1 -1
- package/dist/clientConfiguration/clientConfiguration.d.ts +52 -0
- package/dist/clientConfiguration/clientConfiguration.js +2 -0
- package/dist/clientConfiguration/clientConfiguration.js.map +1 -0
- package/dist/clientConfiguration/constants.d.ts +2 -0
- package/dist/clientConfiguration/constants.js +2 -0
- package/dist/clientConfiguration/constants.js.map +1 -0
- package/dist/clientConfiguration/index.d.ts +2 -0
- package/dist/clientConfiguration/index.js +2 -0
- package/dist/clientConfiguration/index.js.map +1 -0
- package/dist/{campaignConfiguration → clientConfiguration}/types.d.ts +12 -53
- package/dist/clientConfiguration/types.js +2 -0
- package/dist/clientConfiguration/types.js.map +1 -0
- package/dist/clientSettings/clientSettings.js +1 -1
- package/dist/clientSettings/clientSettings.js.map +1 -1
- package/dist/constants.d.ts +3 -2
- package/dist/constants.js +1 -4
- package/dist/constants.js.map +1 -1
- package/dist/eventSource/externalEventSource.js +1 -1
- package/dist/eventSource/externalEventSource.js.map +1 -1
- package/dist/hasher/hasher.d.ts +2 -3
- package/dist/hasher/hasher.js +1 -6
- package/dist/hasher/hasher.js.map +1 -1
- package/dist/hasher/types.d.ts +3 -10
- package/dist/hasher/types.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.d.ts +44 -80
- package/dist/kameleoonClient.js +1 -18
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/kameleoonData/applicationVersion.d.ts +26 -0
- package/dist/kameleoonData/applicationVersion.js +2 -0
- package/dist/kameleoonData/applicationVersion.js.map +1 -0
- package/dist/kameleoonData/browser.d.ts +16 -1
- package/dist/kameleoonData/browser.js +1 -17
- package/dist/kameleoonData/browser.js.map +1 -1
- package/dist/kameleoonData/constants.d.ts +4 -0
- package/dist/kameleoonData/constants.js +2 -0
- package/dist/kameleoonData/constants.js.map +1 -0
- package/dist/kameleoonData/conversion.d.ts +14 -1
- package/dist/kameleoonData/conversion.js +1 -13
- package/dist/kameleoonData/conversion.js.map +1 -1
- package/dist/kameleoonData/cookie.d.ts +33 -0
- package/dist/kameleoonData/cookie.js +2 -0
- package/dist/kameleoonData/cookie.js.map +1 -0
- package/dist/kameleoonData/customData.d.ts +14 -1
- package/dist/kameleoonData/customData.js +1 -24
- package/dist/kameleoonData/customData.js.map +1 -1
- package/dist/kameleoonData/dataManager.d.ts +38 -0
- package/dist/kameleoonData/dataManager.js +2 -0
- package/dist/kameleoonData/dataManager.js.map +1 -0
- package/dist/kameleoonData/dataProcessor.d.ts +26 -0
- package/dist/kameleoonData/dataProcessor.js +2 -0
- package/dist/kameleoonData/dataProcessor.js.map +1 -0
- package/dist/kameleoonData/device.d.ts +14 -1
- package/dist/kameleoonData/device.js +1 -13
- package/dist/kameleoonData/device.js.map +1 -1
- package/dist/kameleoonData/geolocation.d.ts +52 -0
- package/dist/kameleoonData/geolocation.js +2 -0
- package/dist/kameleoonData/geolocation.js.map +1 -0
- package/dist/kameleoonData/helpers.d.ts +1 -0
- package/dist/kameleoonData/helpers.js +2 -0
- package/dist/kameleoonData/helpers.js.map +1 -0
- package/dist/kameleoonData/index.d.ts +10 -3
- package/dist/kameleoonData/index.js +1 -1
- package/dist/kameleoonData/index.js.map +1 -1
- package/dist/kameleoonData/operatingSystem.d.ts +34 -0
- package/dist/kameleoonData/operatingSystem.js +2 -0
- package/dist/kameleoonData/operatingSystem.js.map +1 -0
- package/dist/kameleoonData/pageView.d.ts +20 -1
- package/dist/kameleoonData/pageView.js +1 -13
- package/dist/kameleoonData/pageView.js.map +1 -1
- package/dist/kameleoonData/types.d.ts +118 -9
- package/dist/kameleoonData/types.js +1 -14
- package/dist/kameleoonData/types.js.map +1 -1
- package/dist/kameleoonData/userAgent.d.ts +6 -1
- package/dist/kameleoonData/userAgent.js +1 -8
- package/dist/kameleoonData/userAgent.js.map +1 -1
- package/dist/kameleoonData/visitsData.d.ts +34 -0
- package/dist/{variationConfiguration/variation.js → kameleoonData/visitsData.js} +2 -7
- package/dist/kameleoonData/visitsData.js.map +1 -0
- package/dist/kameleoonError/constants.d.ts +5 -4
- package/dist/kameleoonError/constants.js +1 -1
- package/dist/kameleoonError/constants.js.map +1 -1
- package/dist/kameleoonError/kameleoonError.d.ts +5 -4
- package/dist/kameleoonError/kameleoonError.js +1 -4
- package/dist/kameleoonError/kameleoonError.js.map +1 -1
- package/dist/kameleoonError/types.d.ts +8 -3
- package/dist/kameleoonError/types.js +1 -1
- package/dist/kameleoonError/types.js.map +1 -1
- package/dist/kameleoonUtils.js +1 -4
- package/dist/kameleoonUtils.js.map +1 -1
- package/dist/requester/constants.d.ts +2 -1
- package/dist/requester/constants.js +1 -1
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.d.ts +1 -1
- package/dist/requester/index.js +1 -1
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +5 -4
- package/dist/requester/requester.js +1 -1
- package/dist/requester/requester.js.map +1 -1
- package/dist/requester/types.d.ts +73 -8
- package/dist/requester/types.js +1 -1
- package/dist/requester/types.js.map +1 -1
- package/dist/storage/constants.d.ts +1 -0
- package/dist/storage/constants.js +1 -4
- package/dist/storage/constants.js.map +1 -1
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/types.d.ts +5 -8
- package/dist/storage/types.js.map +1 -1
- package/dist/targeting/conditions/applicationVersion.d.ts +10 -0
- package/dist/targeting/conditions/applicationVersion.js +2 -0
- package/dist/targeting/conditions/applicationVersion.js.map +1 -0
- package/dist/targeting/conditions/{browserCondition.d.ts → browser.d.ts} +1 -1
- package/dist/targeting/conditions/browser.js +2 -0
- package/dist/targeting/conditions/browser.js.map +1 -0
- package/dist/targeting/conditions/conditionFactory.js +1 -1
- package/dist/targeting/conditions/conditionFactory.js.map +1 -1
- package/dist/targeting/conditions/{conversionCondition.d.ts → conversion.d.ts} +1 -2
- package/dist/targeting/conditions/conversion.js +2 -0
- package/dist/targeting/conditions/conversion.js.map +1 -0
- package/dist/targeting/conditions/cookie.d.ts +15 -0
- package/dist/targeting/conditions/cookie.js +2 -0
- package/dist/targeting/conditions/cookie.js.map +1 -0
- package/dist/targeting/conditions/{customDataCondition.d.ts → customData.d.ts} +1 -1
- package/dist/targeting/conditions/customData.js +2 -0
- package/dist/targeting/conditions/customData.js.map +1 -0
- package/dist/targeting/conditions/{deviceCondition.d.ts → device.d.ts} +1 -1
- package/dist/targeting/conditions/{targetExperimentCondition.js → device.js} +2 -2
- package/dist/targeting/conditions/device.js.map +1 -0
- package/dist/targeting/conditions/{exclusiveExperimentCondition.d.ts → exclusiveCampaign.d.ts} +2 -2
- package/dist/targeting/conditions/exclusiveCampaign.js +2 -0
- package/dist/targeting/conditions/exclusiveCampaign.js.map +1 -0
- package/dist/targeting/conditions/firstVisit.d.ts +12 -0
- package/dist/targeting/conditions/firstVisit.js +2 -0
- package/dist/targeting/conditions/firstVisit.js.map +1 -0
- package/dist/targeting/conditions/geolocation.d.ts +11 -0
- package/dist/targeting/conditions/geolocation.js +2 -0
- package/dist/targeting/conditions/geolocation.js.map +1 -0
- package/dist/targeting/conditions/index.d.ts +22 -10
- package/dist/targeting/conditions/index.js +1 -1
- package/dist/targeting/conditions/index.js.map +1 -1
- package/dist/targeting/conditions/lastVisit.d.ts +12 -0
- package/dist/targeting/conditions/lastVisit.js +2 -0
- package/dist/targeting/conditions/lastVisit.js.map +1 -0
- package/dist/targeting/conditions/newVisitor.d.ts +9 -0
- package/dist/targeting/conditions/newVisitor.js +2 -0
- package/dist/targeting/conditions/newVisitor.js.map +1 -0
- package/dist/targeting/conditions/operatingSystem.d.ts +9 -0
- package/dist/targeting/conditions/{deviceCondition.js → operatingSystem.js} +2 -2
- package/dist/targeting/conditions/operatingSystem.js.map +1 -0
- package/dist/targeting/conditions/{pageTitleCondition.d.ts → pageTitle.d.ts} +1 -1
- package/dist/targeting/conditions/pageTitle.js +2 -0
- package/dist/targeting/conditions/pageTitle.js.map +1 -0
- package/dist/targeting/conditions/{pageUrlCondition.d.ts → pageUrl.d.ts} +1 -1
- package/dist/targeting/conditions/pageUrl.js +2 -0
- package/dist/targeting/conditions/pageUrl.js.map +1 -0
- package/dist/targeting/conditions/previousPage.d.ts +12 -0
- package/dist/targeting/conditions/previousPage.js +2 -0
- package/dist/targeting/conditions/previousPage.js.map +1 -0
- package/dist/targeting/conditions/sameDayVisits.d.ts +11 -0
- package/dist/targeting/conditions/sameDayVisits.js +2 -0
- package/dist/targeting/conditions/sameDayVisits.js.map +1 -0
- package/dist/targeting/conditions/{sdkLanguageCondition.d.ts → sdkLanguage.d.ts} +1 -4
- package/dist/targeting/conditions/sdkLanguage.js +2 -0
- package/dist/targeting/conditions/sdkLanguage.js.map +1 -0
- package/dist/targeting/conditions/segment.d.ts +9 -0
- package/dist/targeting/conditions/segment.js +2 -0
- package/dist/targeting/conditions/segment.js.map +1 -0
- package/dist/targeting/conditions/targetFeatureFlag.d.ts +11 -0
- package/dist/targeting/conditions/targetFeatureFlag.js +2 -0
- package/dist/targeting/conditions/targetFeatureFlag.js.map +1 -0
- package/dist/targeting/conditions/types.d.ts +20 -13
- package/dist/targeting/conditions/types.js.map +1 -1
- package/dist/targeting/conditions/visitedPages.d.ts +11 -0
- package/dist/targeting/conditions/visitedPages.js +2 -0
- package/dist/targeting/conditions/visitedPages.js.map +1 -0
- package/dist/targeting/conditions/{visitorCodeCondition.d.ts → visitorCode.d.ts} +1 -1
- package/dist/targeting/conditions/visitorCode.js +2 -0
- package/dist/targeting/conditions/visitorCode.js.map +1 -0
- package/dist/targeting/conditions/visits.d.ts +11 -0
- package/dist/targeting/conditions/visits.js +2 -0
- package/dist/targeting/conditions/visits.js.map +1 -0
- package/dist/targeting/index.d.ts +3 -3
- package/dist/targeting/index.js +1 -1
- package/dist/targeting/index.js.map +1 -1
- package/dist/targeting/{targetingNode.d.ts → node.d.ts} +7 -7
- package/dist/targeting/node.js +2 -0
- package/dist/targeting/node.js.map +1 -0
- package/dist/targeting/{targetingTree.d.ts → tree.d.ts} +6 -3
- package/dist/targeting/tree.js +2 -0
- package/dist/targeting/tree.js.map +1 -0
- package/dist/targeting/types.d.ts +30 -8
- package/dist/targeting/types.js +1 -1
- package/dist/targeting/types.js.map +1 -1
- package/dist/types.d.ts +17 -6
- package/dist/types.js +1 -41
- package/dist/types.js.map +1 -1
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/types.d.ts +61 -6
- package/dist/utilities/types.js +1 -1
- package/dist/utilities/types.js.map +1 -1
- package/dist/utilities/utilities.d.ts +24 -11
- package/dist/utilities/utilities.js +1 -1
- package/dist/utilities/utilities.js.map +1 -1
- package/dist/variationConfiguration/index.d.ts +1 -1
- package/dist/variationConfiguration/index.js +1 -1
- package/dist/variationConfiguration/index.js.map +1 -1
- package/dist/variationConfiguration/types.d.ts +5 -12
- package/dist/variationConfiguration/types.js.map +1 -1
- package/dist/variationConfiguration/variationConfiguration.d.ts +13 -21
- package/dist/variationConfiguration/variationConfiguration.js +1 -65
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
- package/package.json +1 -1
- package/dist/campaignConfiguration/campaignConfiguration.d.ts +0 -71
- package/dist/campaignConfiguration/campaignConfiguration.js +0 -24
- package/dist/campaignConfiguration/campaignConfiguration.js.map +0 -1
- package/dist/campaignConfiguration/constants.d.ts +0 -6
- package/dist/campaignConfiguration/constants.js +0 -4
- package/dist/campaignConfiguration/constants.js.map +0 -1
- package/dist/campaignConfiguration/index.d.ts +0 -3
- package/dist/campaignConfiguration/index.js +0 -2
- package/dist/campaignConfiguration/index.js.map +0 -1
- package/dist/campaignConfiguration/types.js +0 -2
- package/dist/campaignConfiguration/types.js.map +0 -1
- package/dist/targeting/conditions/browserCondition.js +0 -2
- package/dist/targeting/conditions/browserCondition.js.map +0 -1
- package/dist/targeting/conditions/conversionCondition.js +0 -4
- package/dist/targeting/conditions/conversionCondition.js.map +0 -1
- package/dist/targeting/conditions/customDataCondition.js +0 -8
- package/dist/targeting/conditions/customDataCondition.js.map +0 -1
- package/dist/targeting/conditions/deviceCondition.js.map +0 -1
- package/dist/targeting/conditions/exclusiveExperimentCondition.js +0 -2
- package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +0 -1
- package/dist/targeting/conditions/pageTitleCondition.js +0 -2
- package/dist/targeting/conditions/pageTitleCondition.js.map +0 -1
- package/dist/targeting/conditions/pageUrlCondition.js +0 -2
- package/dist/targeting/conditions/pageUrlCondition.js.map +0 -1
- package/dist/targeting/conditions/sdkLanguageCondition.js +0 -2
- package/dist/targeting/conditions/sdkLanguageCondition.js.map +0 -1
- package/dist/targeting/conditions/targetExperimentCondition.d.ts +0 -12
- package/dist/targeting/conditions/targetExperimentCondition.js.map +0 -1
- package/dist/targeting/conditions/visitorCodeCondition.js +0 -2
- package/dist/targeting/conditions/visitorCodeCondition.js.map +0 -1
- package/dist/targeting/targetingNode.js +0 -2
- package/dist/targeting/targetingNode.js.map +0 -1
- package/dist/targeting/targetingTree.js +0 -35
- package/dist/targeting/targetingTree.js.map +0 -1
- package/dist/variationConfiguration/variation.d.ts +0 -13
- package/dist/variationConfiguration/variation.js.map +0 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CacheManager } from '../cacheManager';
|
|
2
|
-
import {
|
|
2
|
+
import { ClientConfiguration } from '../clientConfiguration';
|
|
3
|
+
import { DataManager } from '../kameleoonData';
|
|
3
4
|
import { KameleoonVisitorDataType } from '../kameleoonData/types';
|
|
4
5
|
import { Requester } from '../requester';
|
|
5
|
-
import { TrackDataParamsType, TrackExperimentParamsType } from '../requester/types';
|
|
6
|
+
import { GetVisitorDataResultType, TrackDataParamsType, TrackExperimentParamsType } from '../requester/types';
|
|
6
7
|
import { IExternalStorage, OfflineTracking } from '../storage/types';
|
|
7
8
|
import { SegmentType } from '../targeting';
|
|
8
9
|
import { ExternalPackageInfoType, TrackingCacheItemType } from '../types';
|
|
@@ -13,12 +14,35 @@ export type CheckTargetingParametersType = {
|
|
|
13
14
|
visitorCode: string;
|
|
14
15
|
packageInfo: ExternalPackageInfoType;
|
|
15
16
|
targetingData: KameleoonVisitorDataType;
|
|
16
|
-
|
|
17
|
+
clientConfiguration: ClientConfiguration;
|
|
17
18
|
variationConfiguration?: VariationConfiguration;
|
|
19
|
+
dataManager: DataManager;
|
|
20
|
+
};
|
|
21
|
+
export declare enum TimeUnit {
|
|
22
|
+
Minute = "MINUTE",
|
|
23
|
+
Hour = "HOUR",
|
|
24
|
+
Day = "DAY",
|
|
25
|
+
Week = "WEEK",
|
|
26
|
+
Month = "MONTH"
|
|
27
|
+
}
|
|
28
|
+
export declare enum Order {
|
|
29
|
+
Ascending = "asc",
|
|
30
|
+
Descending = "desc"
|
|
31
|
+
}
|
|
32
|
+
export type InsertInOrderedListParametersType = {
|
|
33
|
+
list: number[];
|
|
34
|
+
element: number;
|
|
35
|
+
order: Order;
|
|
36
|
+
};
|
|
37
|
+
export type ParseVisitorDataParametersType = {
|
|
38
|
+
data: GetVisitorDataResultType;
|
|
39
|
+
filters: VisitorDataFiltersType;
|
|
40
|
+
visitorCode: string;
|
|
41
|
+
variationConfiguration: VariationConfiguration;
|
|
18
42
|
};
|
|
19
43
|
export type TrackRuleParametersType = {
|
|
20
44
|
featureFlagVariation: FeatureFlagVariationType;
|
|
21
|
-
|
|
45
|
+
dataManager: DataManager;
|
|
22
46
|
visitorCode: string;
|
|
23
47
|
requester: Requester;
|
|
24
48
|
userAgent?: string;
|
|
@@ -33,13 +57,13 @@ export type ManageCacheParametersType = {
|
|
|
33
57
|
};
|
|
34
58
|
export type TrackDataParametersType = {
|
|
35
59
|
visitorCode: string;
|
|
36
|
-
|
|
60
|
+
dataManager: DataManager;
|
|
37
61
|
requester: Requester;
|
|
38
62
|
isOfflineModeOn?: boolean;
|
|
39
63
|
offlineTrackingStorage: IExternalStorage<OfflineTracking>;
|
|
40
64
|
};
|
|
41
65
|
export type TrackExperimentParametersType = {
|
|
42
|
-
|
|
66
|
+
clientConfiguration: ClientConfiguration;
|
|
43
67
|
visitorCode: string;
|
|
44
68
|
requester: Requester;
|
|
45
69
|
variationId: number;
|
|
@@ -62,3 +86,34 @@ export type DeleteFromOfflineTrackingParametersType = {
|
|
|
62
86
|
timestamps: number[];
|
|
63
87
|
storage: IExternalStorage<OfflineTracking>;
|
|
64
88
|
};
|
|
89
|
+
/**
|
|
90
|
+
* @param {number} visitAmount - Number of visits to retrieve data from. Number between `1` and `25`
|
|
91
|
+
* *Default*: `1`.
|
|
92
|
+
* @param {boolean} customData - If true, custom data will be retrieved.
|
|
93
|
+
* *Default*: `true`.
|
|
94
|
+
* @param {boolean} pageViews - If true, page data will be retrieved.
|
|
95
|
+
* *Default*: `false`.
|
|
96
|
+
* @param {boolean} geolocation - If true, geolocation data will be retrieved.
|
|
97
|
+
* *Default*: `false`.
|
|
98
|
+
* @param {boolean} device - If true, device data will be retrieved.
|
|
99
|
+
* *Default*: `false`.
|
|
100
|
+
* @param {boolean} browser - If true, browser data will be retrieved.
|
|
101
|
+
* *Default*: `false`.
|
|
102
|
+
* @param {boolean} operatingSystem - If true, operating system data will be retrieved.
|
|
103
|
+
* *Default*: `false`.
|
|
104
|
+
* @param {boolean} conversions - If true, conversion data will be retrieved.
|
|
105
|
+
* *Default*: `false`.
|
|
106
|
+
* @param {boolean} experiments - If true, experiment data will be retrieved.
|
|
107
|
+
* *Default*: `false`.
|
|
108
|
+
* */
|
|
109
|
+
export type VisitorDataFiltersType = {
|
|
110
|
+
visitAmount?: number;
|
|
111
|
+
pageViews?: boolean;
|
|
112
|
+
geolocation?: boolean;
|
|
113
|
+
device?: boolean;
|
|
114
|
+
browser?: boolean;
|
|
115
|
+
operatingSystem?: boolean;
|
|
116
|
+
customData?: boolean;
|
|
117
|
+
conversions?: boolean;
|
|
118
|
+
experiments?: boolean;
|
|
119
|
+
};
|
package/dist/utilities/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TimeUnit=exports.Order=void 0;var TimeUnit=function(a){return a.Minute="MINUTE",a.Hour="HOUR",a.Day="DAY",a.Week="WEEK",a.Month="MONTH",a}({});exports.TimeUnit=TimeUnit;var Order=function(a){return a.Ascending="asc",a.Descending="desc",a}({});exports.Order=Order;
|
|
2
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/utilities/types.ts"],"sourcesContent":["import { CacheManager } from 'src/cacheManager';\nimport {
|
|
1
|
+
{"version":3,"file":"types.js","names":["TimeUnit","Minute","Hour","Day","Week","Month","exports","Order","Ascending","Descending"],"sources":["../../src/utilities/types.ts"],"sourcesContent":["import { CacheManager } from 'src/cacheManager';\nimport { ClientConfiguration } from 'src/clientConfiguration';\nimport { DataManager } from 'src/kameleoonData';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { Requester } from 'src/requester';\nimport {\n GetVisitorDataResultType,\n TrackDataParamsType,\n TrackExperimentParamsType,\n} from 'src/requester/types';\nimport { IExternalStorage, OfflineTracking } from 'src/storage/types';\nimport { SegmentType } from 'src/targeting';\nimport { ExternalPackageInfoType, TrackingCacheItemType } from 'src/types';\nimport {\n VariationConfiguration,\n FeatureFlagVariationType,\n} from 'src/variationConfiguration';\n\nexport type CheckTargetingParametersType = {\n segment: SegmentType | null;\n experimentId: number | null;\n visitorCode: string;\n packageInfo: ExternalPackageInfoType;\n targetingData: KameleoonVisitorDataType;\n clientConfiguration: ClientConfiguration;\n variationConfiguration?: VariationConfiguration;\n dataManager: DataManager;\n};\n\nexport enum TimeUnit {\n Minute = 'MINUTE',\n Hour = 'HOUR',\n Day = 'DAY',\n Week = 'WEEK',\n Month = 'MONTH',\n}\n\nexport enum Order {\n Ascending = 'asc',\n Descending = 'desc',\n}\n\nexport type InsertInOrderedListParametersType = {\n list: number[];\n element: number;\n order: Order;\n};\n\nexport type ParseVisitorDataParametersType = {\n data: GetVisitorDataResultType;\n filters: VisitorDataFiltersType;\n visitorCode: string;\n variationConfiguration: VariationConfiguration;\n};\n\nexport type TrackRuleParametersType = {\n featureFlagVariation: FeatureFlagVariationType;\n dataManager: DataManager;\n visitorCode: string;\n requester: Requester;\n userAgent?: string;\n isOfflineModeOn?: boolean;\n offlineTrackingStorage: IExternalStorage<OfflineTracking>;\n};\n\nexport type ManageCacheParametersType = {\n cacheManager: CacheManager<TrackingCacheItemType>;\n visitorCode: string;\n experimentId: number;\n variationId: number;\n};\n\nexport type TrackDataParametersType = {\n visitorCode: string;\n dataManager: DataManager;\n requester: Requester;\n isOfflineModeOn?: boolean;\n offlineTrackingStorage: IExternalStorage<OfflineTracking>;\n};\n\nexport type TrackExperimentParametersType = {\n clientConfiguration: ClientConfiguration;\n visitorCode: string;\n requester: Requester;\n variationId: number;\n experimentId: number;\n isUnallocated: boolean;\n isOfflineModeOn?: boolean;\n offlineTrackingStorage: IExternalStorage<OfflineTracking>;\n};\n\nexport type AddToOfflineTrackingParametersType = {\n item: TrackExperimentParamsType | TrackDataParamsType;\n isExperiment: boolean;\n storage: IExternalStorage<OfflineTracking>;\n onSuccess?: () => void;\n};\n\nexport type SendOfflineTrackingParametersType = {\n storage: IExternalStorage<OfflineTracking>;\n requester: Requester;\n};\n\nexport type DeleteFromOfflineTrackingParametersType = {\n timestamps: number[];\n storage: IExternalStorage<OfflineTracking>;\n};\n\n/**\n * @param {number} visitAmount - Number of visits to retrieve data from. Number between `1` and `25`\n * *Default*: `1`.\n * @param {boolean} customData - If true, custom data will be retrieved.\n * *Default*: `true`.\n * @param {boolean} pageViews - If true, page data will be retrieved.\n * *Default*: `false`.\n * @param {boolean} geolocation - If true, geolocation data will be retrieved.\n * *Default*: `false`.\n * @param {boolean} device - If true, device data will be retrieved.\n * *Default*: `false`.\n * @param {boolean} browser - If true, browser data will be retrieved.\n * *Default*: `false`.\n * @param {boolean} operatingSystem - If true, operating system data will be retrieved.\n * *Default*: `false`.\n * @param {boolean} conversions - If true, conversion data will be retrieved.\n * *Default*: `false`.\n * @param {boolean} experiments - If true, experiment data will be retrieved.\n * *Default*: `false`.\n * */\nexport type VisitorDataFiltersType = {\n visitAmount?: number;\n pageViews?: boolean;\n geolocation?: boolean;\n device?: boolean;\n browser?: boolean;\n operatingSystem?: boolean;\n customData?: boolean;\n conversions?: boolean;\n experiments?: boolean;\n};\n"],"mappings":"6GA6BY,CAAAA,QAAQ,UAARA,CAAQ,QAAR,CAAAA,CAAQ,CAAAC,MAAA,UAARD,CAAQ,CAAAE,IAAA,QAARF,CAAQ,CAAAG,GAAA,OAARH,CAAQ,CAAAI,IAAA,QAARJ,CAAQ,CAAAK,KAAA,SAARL,CAAQ,MAAAM,OAAA,CAAAN,QAAA,CAAAA,QAAA,IAQR,CAAAO,KAAK,UAALA,CAAK,QAAL,CAAAA,CAAK,CAAAC,SAAA,OAALD,CAAK,CAAAE,UAAA,QAALF,CAAK,MAAAD,OAAA,CAAAC,KAAA,CAAAA,KAAA"}
|
|
@@ -1,27 +1,40 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
2
|
import { KameleoonError } from '../kameleoonError';
|
|
3
3
|
import { FeatureVariableResultType, TrackingCacheItemType } from '../types';
|
|
4
|
-
import {
|
|
5
|
-
import { CustomData, KameleoonDataType } from '../kameleoonData';
|
|
4
|
+
import { FeatureVariableType } from '../clientConfiguration';
|
|
5
|
+
import { CustomData, DataManager, KameleoonDataType } from '../kameleoonData';
|
|
6
6
|
import { CacheManager } from '../cacheManager';
|
|
7
|
-
import {
|
|
8
|
-
import { CheckTargetingParametersType, ManageCacheParametersType, TrackDataParametersType, TrackRuleParametersType, SendOfflineTrackingParametersType,
|
|
7
|
+
import { VersionMatchType } from '../targeting';
|
|
8
|
+
import { CheckTargetingParametersType, ManageCacheParametersType, TrackDataParametersType, TrackRuleParametersType, SendOfflineTrackingParametersType, ParseVisitorDataParametersType, InsertInOrderedListParametersType, TimeUnit } from './types';
|
|
9
9
|
export declare class Utilities {
|
|
10
|
-
static checkTargeting({ segment, visitorCode, targetingData, experimentId, variationConfiguration,
|
|
10
|
+
static checkTargeting({ segment, visitorCode, targetingData, experimentId, variationConfiguration, clientConfiguration, packageInfo, dataManager, }: CheckTargetingParametersType): Result<boolean, KameleoonError>;
|
|
11
11
|
static validateVisitorCode(visitorCode: string): Result<void, KameleoonError>;
|
|
12
|
-
static getDataUrl(visitorCode: string,
|
|
13
|
-
static
|
|
12
|
+
static getDataUrl(visitorCode: string, dataManager: DataManager): string;
|
|
13
|
+
static trackFeatureExperiment({ featureFlagVariation, dataManager, visitorCode, requester, isOfflineModeOn, offlineTrackingStorage, }: TrackRuleParametersType): Promise<void>;
|
|
14
|
+
static convertTimeUnit(time: number, timeUnit: TimeUnit): number;
|
|
14
15
|
static parseFeatureVariable(variable: FeatureVariableType): Result<FeatureVariableResultType, KameleoonError>;
|
|
15
|
-
static parseVisitorData(data:
|
|
16
|
+
static parseVisitorData({ data, filters, visitorCode, variationConfiguration, }: ParseVisitorDataParametersType): KameleoonDataType[];
|
|
16
17
|
static parseRegExp(value: string): RegExp;
|
|
17
|
-
static getUserAgent(visitorCode: string,
|
|
18
|
+
static getUserAgent(visitorCode: string, dataManager: DataManager): string | undefined;
|
|
18
19
|
static isCustomData(dataItem: KameleoonDataType): dataItem is CustomData;
|
|
20
|
+
/**
|
|
21
|
+
* Insert element in ordered list, if element already exists in list, does nothing
|
|
22
|
+
* @param list - list to insert element
|
|
23
|
+
* @param element - element to insert
|
|
24
|
+
* @param order - order of list
|
|
25
|
+
*/
|
|
26
|
+
static insertInOrderedListMutably({ list, element, order, }: InsertInOrderedListParametersType): void;
|
|
19
27
|
static updateCache({ cacheManager, visitorCode, experimentId, variationId, }: ManageCacheParametersType): void;
|
|
20
28
|
static getTrackingCode(trackingCache: CacheManager<TrackingCacheItemType>, visitorCode: string): string;
|
|
21
|
-
static trackData({ visitorCode,
|
|
22
|
-
static trackExperiment({ variationId, experimentId, isUnallocated, visitorCode, campaignConfiguration, requester, isOfflineModeOn, offlineTrackingStorage, }: TrackExperimentParametersType): Promise<void>;
|
|
29
|
+
static trackData({ visitorCode, dataManager, requester, isOfflineModeOn, offlineTrackingStorage, }: TrackDataParametersType): Promise<void>;
|
|
23
30
|
static getNonce(): string;
|
|
24
31
|
static sendOfflineTracking({ requester, storage, }: SendOfflineTrackingParametersType): Promise<void>;
|
|
32
|
+
static compareSemVer({ version, compareVersion, operator, }: {
|
|
33
|
+
version: string;
|
|
34
|
+
compareVersion: string;
|
|
35
|
+
operator: VersionMatchType;
|
|
36
|
+
}): Result<boolean, KameleoonError>;
|
|
25
37
|
private static addItemToOfflineTracking;
|
|
26
38
|
private static deleteFromOfflineTracking;
|
|
39
|
+
private static validateVersion;
|
|
27
40
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Utilities=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_types=require("../types"),_kameleoonData=require("../kameleoonData"),_constants=require("../constants"),_constants2=require("./constants"),_excluded=["timestamp","isExperiment"];function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _construct(){return _construct=_isNativeReflectConstruct()?Reflect.construct.bind():function(b,c,d){var e=[null];e.push.apply(e,c);var a=Function.bind.apply(b,e),f=new a;return d&&_setPrototypeOf(f,d.prototype),f},_construct.apply(null,arguments)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Utilities=/*#__PURE__*/function(){function a(){_classCallCheck(this,a)}return _createClass(a,null,[{key:"checkTargeting",value:function checkTargeting(a){var b=a.segment,c=a.visitorCode,d=a.targetingData,e=a.experimentId,f=a.variationConfiguration,g=a.campaignConfiguration,h=a.packageInfo;if(!b||!b.conditionsData.firstLevel.length)return(0,_tsRes.Ok)(!0);if(!f)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));var i={},j=f.getAssignedVariations(c);j.ok&&(i=j.data);var k=g.getTargetingTree(b),l=k.evaluate({variationData:i,sdkInfo:h,targetingData:d,experimentId:e,visitorCode:c});return l}},{key:"validateVisitorCode",value:function validateVisitorCode(a){return 0===a.length?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeEmpty)):a.length>_constants2.VISITOR_CODE_MAX_LENGTH?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeMaxLength)):(0,_tsRes.Ok)()}},{key:"getDataUrl",value:function getDataUrl(a,b){var c=b.getUnsentData(a),d="";if(!c||!c.size)return d;var e,f=_createForOfIteratorHelper(c.values());try{for(f.s();!(e=f.n()).done;){var g=e.value;g.url&&(d+=g.url+"\n")}}catch(a){f.e(a)}finally{f.f()}return d}},{key:"trackRule",value:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;return _regeneratorRuntime().wrap(function r(b){for(;1;)switch(b.prev=b.next){case 0:return c=a.featureFlagVariation,d=a.campaignConfiguration,e=a.visitorCode,f=a.requester,g=a.isOfflineModeOn,h=a.offlineTrackingStorage,i=c.variationId,j=c.rule,k=this.getUserAgent(e,d),l=this.getDataUrl(e,d),m=i||0,n=null===i,o=j?j.experimentId:0,p={visitorCode:e,isUnallocated:n,body:l,experimentId:o,variationId:m,userAgent:k},b.next=10,f.trackExperiment(p);case 10:q=b.sent,q.ok&&d.clearUnsentData(e),!q.ok&&g&&this.addItemToOfflineTracking({item:p,storage:h,isExperiment:!0});case 13:case"end":return b.stop();}},b,this)}));return a}()},{key:"parseFeatureVariable",value:function parseFeatureVariable(a){var b=a.type,c=a.value;switch(b){case _types.VariableType.BOOLEAN:return(0,_tsRes.Ok)({type:b,value:!!c});case _types.VariableType.STRING:return(0,_tsRes.Ok)({type:b,value:c+""});case _types.VariableType.NUMBER:var d=+c;return Number.isNaN(d)?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NumberParse,c+"")):(0,_tsRes.Ok)({type:b,value:d});case _types.VariableType.JSON:try{var e=JSON.parse(a.value+"");return(0,_tsRes.Ok)({type:b,value:e})}catch(a){return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.JSONParse,a))}default:(0,_kameleoonError.exhaustCheck)(b);}}},{key:"parseVisitorData",value:function parseVisitorData(a){var b,c=a.currentVisit,d=a.previousVisits;if(c?b=[c]:d&&(b=d),!b)return[];var e=new Map,f=[],g=_toConsumableArray(b[0].customDataEvents);g.sort(function(c,a){return a.time-c.time});var h,i=_createForOfIteratorHelper(g);try{for(i.s();!(h=i.n()).done;){var j=h.value,k=j.data.index;if(!e.has(k)){e.set(k,!0);var l=Object.keys(j.data.valuesCountMap);f.push(_construct(_kameleoonData.CustomData,[k].concat(l)))}}}catch(a){i.e(a)}finally{i.f()}return f}},{key:"parseRegExp",value:function parseRegExp(a){if("/"===a[0]){var b=a.split("/"),c=_slicedToArray(b,3),d=c[0],e=c[1],f=c[2];return new RegExp(e,f)}return new RegExp(a)}},{key:"getUserAgent",value:function getUserAgent(a,b){var c=b.storedTargetingData[a];if(c){var d=c[_kameleoonData.KameleoonData.UserAgent];if(d)return d.value}}},{key:"isCustomData",value:function isCustomData(a){return a.data.type===_kameleoonData.KameleoonData.CustomData}},{key:"updateCache",value:function updateCache(a){var b=a.cacheManager,c=a.visitorCode,d=a.experimentId,e=a.variationId,f=b.getAliveItem(c),g=f?_objectSpread({},f):{};g[d]={variationId:e,expirationTime:Date.now()+_constants.CACHE_ITEM_LIFETIME*_types.Milliseconds.Second},b.add({key:c,data:g,lifetime:_constants.CACHE_ITEM_LIFETIME})}},{key:"getTrackingCode",value:function getTrackingCode(a,b){var c="window.kameleoonQueue=window.kameleoonQueue||[];",d=a.getAliveItem(b);if(!d)return c;var e={};return Object.entries(d).forEach(function(a){var b=_slicedToArray(a,2),d=b[0],f=b[1],g=f.variationId,h=f.expirationTime;h>Date.now()&&(c+="window.kameleoonQueue.push(['Experiments.assignVariation',".concat(d,",").concat(g,"]);"),c+="window.kameleoonQueue.push(['Experiments.trigger',".concat(d,",true]);"),e[+d]={variationId:g,expirationTime:h})}),a.add({key:b,data:e,lifetime:_constants.CACHE_ITEM_LIFETIME}),c}},{key:"trackData",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l;return _regeneratorRuntime().wrap(function m(b){for(;1;)switch(b.prev=b.next){case 0:return c=a.visitorCode,d=a.campaignConfiguration,e=a.requester,f=a.isOfflineModeOn,g=a.offlineTrackingStorage,b.next=3,this.sendOfflineTracking({requester:e,storage:g});case 3:return h=this.getDataUrl(c,d),i=this.getUserAgent(c,d),j={visitorCode:c,body:h,userAgent:i},b.next=8,e.trackData(j);case 8:k=b.sent,l=function cleanup(){return d.clearUnsentData(c)},k.ok&&l(),!k.ok&&f&&this.addItemToOfflineTracking({item:j,storage:g,isExperiment:!1,onSuccess:l});case 12:case"end":return b.stop();}},b,this)}));return a}()},{key:"trackExperiment",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function o(b){for(;1;)switch(b.prev=b.next){case 0:return c=a.variationId,d=a.experimentId,e=a.isUnallocated,f=a.visitorCode,g=a.campaignConfiguration,h=a.requester,i=a.isOfflineModeOn,j=a.offlineTrackingStorage,k=this.getDataUrl(f,g),l=this.getUserAgent(f,g),m={body:k,visitorCode:f,isUnallocated:e,variationId:c,userAgent:l,experimentId:d},b.next=6,h.trackExperiment(m);case 6:n=b.sent,!n.ok&&i&&this.addItemToOfflineTracking({item:m,storage:j,isExperiment:!0});case 8:case"end":return b.stop();}},b,this)}));return a}()},{key:"getNonce",value:function getNonce(){for(var a,b=_constants2.HEX_CHARACTERS.length,c="",d=0;d<b;d++)a=Math.floor(Math.random()*b),c+=_constants2.HEX_CHARACTERS.substring(a,a+1);return c}},{key:"sendOfflineTracking",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function o(b){for(;1;)switch(b.prev=b.next){case 0:if(c=a.requester,d=a.storage,e=d.read(),!(e.ok&&e.data.requestParameters)){b.next=33;break}f=e.data.requestParameters,g=[],h=_createForOfIteratorHelper(f),b.prev=6,h.s();case 8:if((i=h.n()).done){b.next=24;break}if(j=i.value,k=j.timestamp,l=j.isExperiment,m=_objectWithoutProperties(j,_excluded),n=void 0,!l){b.next=18;break}return b.next=15,c.trackExperiment(m);case 15:n=b.sent,b.next=21;break;case 18:return b.next=20,c.trackData(m);case 20:n=b.sent;case 21:n.ok&&n.data&&g.push(k);case 22:b.next=8;break;case 24:b.next=29;break;case 26:b.prev=26,b.t0=b["catch"](6),h.e(b.t0);case 29:return b.prev=29,h.f(),b.finish(29);case 32:this.deleteFromOfflineTracking({storage:d,timestamps:g});case 33:case"end":return b.stop();}},b,this,[[6,26,29,32]])}));return a}()},{key:"addItemToOfflineTracking",value:function addItemToOfflineTracking(a){var b=a.item,c=a.isExperiment,d=a.storage,e=a.onSuccess,f=d.read(),g=f.ok?f.data:{},h=g.requestParameters,i=_objectSpread(_objectSpread({},b),{},{timestamp:new Date().getTime(),isExperiment:c}),j=h?[].concat(_toConsumableArray(h),[i]):[i],k=d.write({requestParameters:j});k.ok&&e&&e()}},{key:"deleteFromOfflineTracking",value:function deleteFromOfflineTracking(a){var b=a.timestamps,c=a.storage,d=c.read();if(d.ok){var e=d.data.requestParameters,f=null===e||void 0===e?void 0:e.filter(function(a){return!b.includes(a.timestamp)});c.write({requestParameters:f})}}}]),a}();exports.Utilities=Utilities;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Utilities=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_types=require("../types"),_kameleoonData=require("../kameleoonData"),_constants=require("../constants"),_requester=require("../requester"),_targeting=require("../targeting"),_constants2=require("./constants"),_types2=require("./types"),_excluded=["timestamp","isExperiment"];function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _regeneratorRuntime(){"use strict";function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Utilities=function(){function a(){_classCallCheck(this,a)}return _createClass(a,null,[{key:"checkTargeting",value:function checkTargeting(a){var b=a.segment,c=a.visitorCode,d=a.targetingData,e=a.experimentId,f=a.variationConfiguration,g=a.clientConfiguration,h=a.packageInfo,i=a.dataManager;if(!b||!b.conditionsData.firstLevel.length)return(0,_tsRes.Ok)(!0);if(!f)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));var j={},k=f.getStoredVariations(c);k.ok&&(j=k.data);var l=i.getTree(b),m=void 0,n=void 0,o=void 0;l.hasTargetingType(_targeting.TargetingType.SEGMENT)&&(m=i.trees,n=g.segments),l.hasTargetingType(_targeting.TargetingType.TARGET_FEATURE_FLAG)&&(o=g.ruleMap);var p=l.evaluate({variationData:j,sdkInfo:h,segments:n,ruleMap:o,trees:m,targetingData:d,experimentId:e,visitorCode:c});return p}},{key:"validateVisitorCode",value:function validateVisitorCode(a){return 0===a.length?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeEmpty)):a.length>_constants2.VISITOR_CODE_MAX_LENGTH?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeMaxLength)):(0,_tsRes.Ok)()}},{key:"getDataUrl",value:function getDataUrl(b,c){function d(b){b.url&&(f+=b.url+_requester.UrlParameter.Nonce+a.getNonce()+"\n")}var e=c.getUnsentData(b),f="";if(!e||!e.size)return f;var g,h=_createForOfIteratorHelper(e.values());try{for(h.s();!(g=h.n()).done;){var i=g.value;Array.isArray(i)?i.forEach(function(a){return d(a)}):d(i)}}catch(a){h.e(a)}finally{h.f()}return f}},{key:"trackFeatureExperiment",value:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q;return _regeneratorRuntime().wrap(function r(b){for(;1;)switch(b.prev=b.next){case 0:return c=a.featureFlagVariation,d=a.dataManager,e=a.visitorCode,f=a.requester,g=a.isOfflineModeOn,h=a.offlineTrackingStorage,i=c.variationId,j=c.rule,k=this.getUserAgent(e,d),l=this.getDataUrl(e,d),m=i||0,n=null===i,o=j?j.experimentId:0,p={visitorCode:e,isUnallocated:n,body:l,experimentId:o,variationId:m,userAgent:k},b.next=10,f.trackExperiment(p);case 10:q=b.sent,q.ok&&d.clearUnsentData(e),!q.ok&&g&&this.addItemToOfflineTracking({item:p,storage:h,isExperiment:!0});case 13:case"end":return b.stop();}},b,this)}));return a}()},{key:"convertTimeUnit",value:function convertTimeUnit(a,b){var c,d=(c={},_defineProperty(c,_types2.TimeUnit.Minute,_types.Milliseconds.Minute),_defineProperty(c,_types2.TimeUnit.Hour,_types.Milliseconds.Hour),_defineProperty(c,_types2.TimeUnit.Day,_types.Milliseconds.Day),_defineProperty(c,_types2.TimeUnit.Week,_types.Milliseconds.Week),_defineProperty(c,_types2.TimeUnit.Month,_types.Milliseconds.Month),c);return a/d[b]}},{key:"parseFeatureVariable",value:function parseFeatureVariable(a){var b=a.type,c=a.value;switch(b){case _types.VariableType.BOOLEAN:return(0,_tsRes.Ok)({type:b,value:!!c});case _types.VariableType.STRING:return(0,_tsRes.Ok)({type:b,value:c+""});case _types.VariableType.NUMBER:var d=+c;return Number.isNaN(d)?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NumberParse,c+"")):(0,_tsRes.Ok)({type:b,value:d});case _types.VariableType.JSON:try{var e=JSON.parse(a.value+"");return(0,_tsRes.Ok)({type:b,value:e})}catch(a){return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.JSONParse,a))}default:(0,_kameleoonError.exhaustCheck)(b);}}},{key:"parseVisitorData",value:function parseVisitorData(a){var b=a.data,c=a.filters,d=a.visitorCode,e=a.variationConfiguration,f=b.currentVisit,g=b.previousVisits,h=c.browser,j=c.customData,k=c.operatingSystem,l=c.conversions,m=c.device,n=c.geolocation,o=c.experiments,p=c.pageViews,q=c.visitAmount,r=[];if(f&&r.push(f),g&&(r.length&&q&&1<q&&r.push.apply(r,_toConsumableArray(g)),!r.length&&r.push.apply(r,_toConsumableArray(g))),!r)return[];var s=[];if(p){var t=_kameleoonData.PageView._listFromVisits(r);t.length&&s.push.apply(s,_toConsumableArray(t))}if(h){var u=_kameleoonData.Browser._fromVisits(r);u&&s.push(u)}if(o){for(var v,w={},x=r.length-1;0<=x;x--)if(v=r[x],!!v.experimentEvents){var y,z=_createForOfIteratorHelper(v.experimentEvents);try{for(z.s();!(y=z.n()).done;){var A=y.value,B=A.data,C=B.id,D=B.variationId;w[C]=D}}catch(a){z.e(a)}finally{z.f()}}e.updateStoredVariations(d,w)}if(m){var E=_kameleoonData.Device._fromVisits(r);E&&s.push(E)}if(n){var F=_kameleoonData.GeolocationData._fromVisits(r);F&&s.push(F)}if(j&&s.push.apply(s,_toConsumableArray(_kameleoonData.CustomData._listFromVisits(r))),k){var G=_kameleoonData.OperatingSystem._fromVisits(r);G&&s.push(G)}l&&s.push.apply(s,_toConsumableArray(_kameleoonData.Conversion._listFromVisits(r)));var H=_kameleoonData.VisitsData._fromRemoteVisits(r,!!f);return H&&s.push(H),s}},{key:"parseRegExp",value:function parseRegExp(a){if("/"===a[0]){var b=a.split("/"),c=_slicedToArray(b,3),d=c[0],e=c[1],f=c[2];return new RegExp(e,f)}return new RegExp(a)}},{key:"getUserAgent",value:function getUserAgent(a,b){var c=b.storedTargetingData,d=c&&c[a];if(d){var e=d[_kameleoonData.KameleoonData.UserAgent];if(e)return e.value}}},{key:"isCustomData",value:function isCustomData(a){return a.data.type===_kameleoonData.KameleoonData.CustomData}},{key:"insertInOrderedListMutably",value:function insertInOrderedListMutably(a){var b=a.list,c=a.element,d=a.order;if(!b.includes(c)){var e=b.findIndex(function(a){return d===_types2.Order.Ascending?a>=c:a<=c});-1===e?b.push(c):b.splice(e,0,c)}}},{key:"updateCache",value:function updateCache(a){var b=a.cacheManager,c=a.visitorCode,d=a.experimentId,e=a.variationId,f=b.getAliveItem(c),g=f?_objectSpread({},f):{};g[d]={variationId:e,expirationTime:Date.now()+_constants.CACHE_ITEM_LIFETIME*_types.Milliseconds.Second},b.add({key:c,data:g,lifetime:_constants.CACHE_ITEM_LIFETIME})}},{key:"getTrackingCode",value:function getTrackingCode(a,b){var c="window.kameleoonQueue=window.kameleoonQueue||[];",d=a.getAliveItem(b);if(!d)return c;var e={};return Object.entries(d).forEach(function(a){var b=_slicedToArray(a,2),d=b[0],f=b[1],g=f.variationId,h=f.expirationTime;h>Date.now()&&(c+="window.kameleoonQueue.push(['Experiments.assignVariation',".concat(d,",").concat(g,"]);"),c+="window.kameleoonQueue.push(['Experiments.trigger',".concat(d,",true]);"),e[+d]={variationId:g,expirationTime:h})}),a.add({key:b,data:e,lifetime:_constants.CACHE_ITEM_LIFETIME}),c}},{key:"trackData",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l;return _regeneratorRuntime().wrap(function m(b){for(;1;)switch(b.prev=b.next){case 0:return c=a.visitorCode,d=a.dataManager,e=a.requester,f=a.isOfflineModeOn,g=a.offlineTrackingStorage,b.next=3,this.sendOfflineTracking({requester:e,storage:g});case 3:return h=this.getDataUrl(c,d),i=this.getUserAgent(c,d),j={visitorCode:c,body:h,userAgent:i},b.next=8,e.trackData(j);case 8:k=b.sent,l=function cleanup(){return d.clearUnsentData(c)},k.ok&&l(),!k.ok&&f&&this.addItemToOfflineTracking({item:j,storage:g,isExperiment:!1,onSuccess:l});case 12:case"end":return b.stop();}},b,this)}));return a}()},{key:"getNonce",value:function getNonce(){for(var a,b=_constants2.HEX_CHARACTERS.length,c="",d=0;d<b;d++)a=Math.floor(Math.random()*b),c+=_constants2.HEX_CHARACTERS.substring(a,a+1);return c}},{key:"sendOfflineTracking",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function o(b){for(;1;)switch(b.prev=b.next){case 0:if(c=a.requester,d=a.storage,e=d.read(),!(e.ok&&e.data.requestParameters)){b.next=33;break}f=e.data.requestParameters,g=[],h=_createForOfIteratorHelper(f),b.prev=6,h.s();case 8:if((i=h.n()).done){b.next=24;break}if(j=i.value,k=j.timestamp,l=j.isExperiment,m=_objectWithoutProperties(j,_excluded),n=void 0,!l){b.next=18;break}return b.next=15,c.trackExperiment(m);case 15:n=b.sent,b.next=21;break;case 18:return b.next=20,c.trackData(m);case 20:n=b.sent;case 21:n.ok&&n.data&&g.push(k);case 22:b.next=8;break;case 24:b.next=29;break;case 26:b.prev=26,b.t0=b["catch"](6),h.e(b.t0);case 29:return b.prev=29,h.f(),b.finish(29);case 32:this.deleteFromOfflineTracking({storage:d,timestamps:g});case 33:case"end":return b.stop();}},b,this,[[6,26,29,32]])}));return a}()},{key:"compareSemVer",value:function compareSemVer(a){var b=a.version,c=a.compareVersion,d=a.operator,e=this.validateVersion(b),f=this.validateVersion(c);if(!e.ok)return(0,_tsRes.Err)(e.error);if(!f.ok)return(0,_tsRes.Err)(f.error);var g=_slicedToArray(e.data,3),h=g[0],i=g[1],j=g[2],k=_slicedToArray(f.data,3),l=k[0],m=k[1],n=k[2],o=h===l,p=i===m,q=j===n;switch(d){case _targeting.VersionMatchType.EQUAL:return(0,_tsRes.Ok)(o&&p&&q);case _targeting.VersionMatchType.GREATER:return(0,_tsRes.Ok)(h>l||o&&i>m||o&&p&&j>n);case _targeting.VersionMatchType.LOWER:return(0,_tsRes.Ok)(h<l||o&&i<m||o&&p&&j<n);default:(0,_kameleoonError.exhaustCheck)(d);}}},{key:"addItemToOfflineTracking",value:function addItemToOfflineTracking(a){var b=a.item,c=a.isExperiment,d=a.storage,e=a.onSuccess,f=d.read(),g=f.ok?f.data:{},h=g.requestParameters,i=_objectSpread(_objectSpread({},b),{},{timestamp:new Date().getTime(),isExperiment:c}),j=h?[].concat(_toConsumableArray(h),[i]):[i],k=d.write({requestParameters:j});k.ok&&e&&e()}},{key:"deleteFromOfflineTracking",value:function deleteFromOfflineTracking(a){var b=a.timestamps,c=a.storage,d=c.read();if(d.ok){var e=d.data.requestParameters,f=null===e||void 0===e?void 0:e.filter(function(a){return!b.includes(a.timestamp)});c.write({requestParameters:f})}}},{key:"validateVersion",value:function validateVersion(a){for(var b=a.split(".").map(function(a){return parseInt(a,10)});3>b.length;)b.push(0);return b.some(function(a){return isNaN(a)})?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.SemanticVersionParse,a)):(0,_tsRes.Ok)(b.slice(0,3))}}]),a}();exports.Utilities=Utilities;
|
|
2
2
|
//# sourceMappingURL=utilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","names":["a","b","c","Object","defineProperty","value","enumerable","configurable","writable","e","f","prototype","d","g","create","h","m","s","i","type","arg","call","forEach","_invoke","j","k","_typeof","r","resolve","__await","then","Error","o","method","delegate","x","sent","_sent","dispatchException","abrupt","done","iterator","return","TypeError","resultName","next","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","l","completion","reset","n","u","isNaN","length","_regeneratorRuntime","p","q","hasOwnProperty","t","Symbol","v","asyncIterator","w","toStringTag","wrap","y","z","getPrototypeOf","A","B","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","AsyncIterator","async","Promise","keys","reverse","pop","values","prev","charAt","slice","stop","rval","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_createForOfIteratorHelper","Array","isArray","_unsupportedIterableToArray","_arrayLikeToArray","toString","from","test","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_toPrimitive","toPrimitive","String","Number","Utilities","checkTargeting","segment","visitorCode","targetingData","experimentId","variationConfiguration","campaignConfiguration","packageInfo","conditionsData","firstLevel","Ok","Err","KameleoonError","KameleoonException","Initialization","variations","assignedVariationsResult","getAssignedVariations","ok","data","targetingTree","getTargetingTree","result","evaluate","variationData","sdkInfo","validateVisitorCode","VisitorCodeEmpty","VISITOR_CODE_MAX_LENGTH","VisitorCodeMaxLength","getDataUrl","unsentData","getUnsentData","resultUrl","size","item","url","featureFlagVariation","requester","isOfflineModeOn","offlineTrackingStorage","variationId","rule","userAgent","getUserAgent","dataUrl","resultVariationId","isUnallocated","parameters","body","trackExperiment","clearUnsentData","addItemToOfflineTracking","storage","isExperiment","parseFeatureVariable","variable","VariableType","BOOLEAN","STRING","NUMBER","numberValue","NumberParse","JSON","jsonValue","parse","err","JSONParse","exhaustCheck","parseVisitorData","visits","currentVisit","previousVisits","indexMap","Map","resultData","customDataEvents","_toConsumableArray","sort","time","customDataEvent","customDataIndex","index","has","set","valuesCountMap","_construct","CustomData","concat","parseRegExp","split","_slicedToArray","_","expression","flags","RegExp","storedTargetingData","userAgentData","KameleoonData","UserAgent","isCustomData","dataItem","updateCache","cacheManager","cacheData","getAliveItem","newCacheData","_objectSpread","expirationTime","Date","now","CACHE_ITEM_LIFETIME","Milliseconds","Second","add","lifetime","getTrackingCode","trackingCache","resultString","updatedCacheData","entries","sendOfflineTracking","trackData","cleanup","onSuccess","getNonce","randomNumber","hexLength","HEX_CHARACTERS","nonce","Math","floor","random","substring","readResult","read","requestParameters","successfulTimestamps","timestamp","params","_objectWithoutProperties","_excluded","t0","deleteFromOfflineTracking","timestamps","newItem","getTime","newRequestParameters","writeResult","write","newParameters","filter","includes","exports"],"sources":["../../src/utilities/utilities.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport {\n KameleoonError,\n KameleoonException,\n exhaustCheck,\n} from 'src/kameleoonError';\nimport { ExperimentVariationsType } from 'src/storage';\nimport {\n FeatureVariableResultType,\n Milliseconds,\n TrackingCacheItemType,\n VariableType,\n} from 'src/types';\nimport {\n CampaignConfiguration,\n FeatureVariableType,\n JSONType,\n} from 'src/campaignConfiguration';\nimport {\n CustomData,\n KameleoonData,\n KameleoonDataType,\n} from 'src/kameleoonData';\nimport { CACHE_ITEM_LIFETIME } from 'src/constants';\nimport { CacheManager } from 'src/cacheManager';\nimport {\n GetVisitorDataResultType,\n TrackExperimentParamsType,\n TrackDataParamsType,\n VisitType,\n} from 'src/requester';\nimport {\n CheckTargetingParametersType,\n ManageCacheParametersType,\n TrackDataParametersType,\n TrackRuleParametersType,\n AddToOfflineTrackingParametersType,\n SendOfflineTrackingParametersType,\n TrackExperimentParametersType,\n DeleteFromOfflineTrackingParametersType,\n} from './types';\nimport { VISITOR_CODE_MAX_LENGTH, HEX_CHARACTERS } from './constants';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\n\nexport class Utilities {\n static checkTargeting({\n segment,\n visitorCode,\n targetingData,\n experimentId,\n variationConfiguration,\n campaignConfiguration,\n packageInfo,\n }: CheckTargetingParametersType): Result<boolean, KameleoonError> {\n if (!segment || !segment.conditionsData.firstLevel.length) {\n return Ok(true);\n }\n\n if (!variationConfiguration) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n let variations: ExperimentVariationsType = {};\n\n const assignedVariationsResult =\n variationConfiguration.getAssignedVariations(visitorCode);\n\n if (assignedVariationsResult.ok) {\n variations = assignedVariationsResult.data;\n }\n\n const targetingTree = campaignConfiguration.getTargetingTree(segment);\n\n const result = targetingTree.evaluate({\n variationData: variations,\n sdkInfo: packageInfo,\n targetingData,\n experimentId,\n visitorCode,\n });\n\n return result;\n }\n\n static validateVisitorCode(\n visitorCode: string,\n ): Result<void, KameleoonError> {\n if (visitorCode.length === 0) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeEmpty));\n }\n\n if (visitorCode.length > VISITOR_CODE_MAX_LENGTH) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeMaxLength));\n }\n\n return Ok();\n }\n\n static getDataUrl(\n visitorCode: string,\n campaignConfiguration: CampaignConfiguration,\n ): string {\n const unsentData = campaignConfiguration.getUnsentData(visitorCode);\n let resultUrl = '';\n\n if (!unsentData || !unsentData.size) {\n return resultUrl;\n }\n\n for (const item of unsentData.values()) {\n if (item.url) {\n resultUrl += item.url + '\\n';\n }\n }\n\n return resultUrl;\n }\n\n static async trackRule({\n featureFlagVariation,\n campaignConfiguration,\n visitorCode,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n }: TrackRuleParametersType): Promise<void> {\n const { variationId, rule } = featureFlagVariation;\n\n const userAgent = this.getUserAgent(visitorCode, campaignConfiguration);\n\n const dataUrl = this.getDataUrl(visitorCode, campaignConfiguration);\n\n const resultVariationId = variationId || 0;\n const isUnallocated = variationId === null;\n // --- Note ---\n // Experiment id is not needed for unallocated visitors\n // So we just use 0 as a fallback\n const experimentId = rule ? rule.experimentId : 0;\n\n const parameters = {\n visitorCode,\n isUnallocated,\n body: dataUrl,\n experimentId,\n variationId: resultVariationId,\n userAgent,\n };\n\n const result = await requester.trackExperiment(parameters);\n\n if (result.ok) {\n campaignConfiguration.clearUnsentData(visitorCode);\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: true,\n });\n }\n }\n\n static parseFeatureVariable(\n variable: FeatureVariableType,\n ): Result<FeatureVariableResultType, KameleoonError> {\n const { type, value } = variable;\n\n switch (type) {\n case VariableType.BOOLEAN:\n return Ok({\n type,\n value: Boolean(value),\n });\n case VariableType.STRING:\n return Ok({\n type,\n value: String(value),\n });\n case VariableType.NUMBER:\n const numberValue = Number(value);\n\n if (Number.isNaN(numberValue)) {\n return Err(\n new KameleoonError(KameleoonException.NumberParse, String(value)),\n );\n }\n\n return Ok({\n type,\n value: numberValue,\n });\n case VariableType.JSON:\n try {\n const jsonValue: JSONType = JSON.parse(String(variable.value));\n\n return Ok({\n type,\n value: jsonValue,\n });\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.JSONParse, err));\n }\n default:\n exhaustCheck(type);\n }\n }\n\n static parseVisitorData(data: GetVisitorDataResultType): KameleoonDataType[] {\n const { currentVisit, previousVisits } = data;\n\n let visits: [VisitType] | undefined;\n\n if (currentVisit) {\n visits = [currentVisit];\n } else if (previousVisits) {\n visits = previousVisits;\n }\n\n if (!visits) {\n return [];\n }\n\n const indexMap = new Map();\n const resultData: KameleoonDataType[] = [];\n const customDataEvents = [...visits[0].customDataEvents];\n customDataEvents.sort((a, b) => b.time - a.time);\n\n for (const customDataEvent of customDataEvents) {\n const customDataIndex = customDataEvent.data.index;\n\n if (!indexMap.has(customDataIndex)) {\n indexMap.set(customDataIndex, true);\n\n const values = Object.keys(customDataEvent.data.valuesCountMap);\n resultData.push(new CustomData(customDataIndex, ...values));\n }\n }\n\n return resultData;\n }\n\n static parseRegExp(value: string): RegExp {\n if (value[0] === '/') {\n const [_, expression, flags] = value.split('/');\n\n return new RegExp(expression, flags);\n }\n\n return new RegExp(value);\n }\n\n static getUserAgent(\n visitorCode: string,\n campaignConfiguration: CampaignConfiguration,\n ): string | undefined {\n const targetingData: KameleoonVisitorDataType | undefined =\n campaignConfiguration.storedTargetingData[visitorCode];\n\n if (targetingData) {\n const userAgentData = targetingData[KameleoonData.UserAgent];\n\n if (userAgentData) {\n return userAgentData.value;\n }\n }\n\n return undefined;\n }\n\n static isCustomData(dataItem: KameleoonDataType): dataItem is CustomData {\n return dataItem.data.type === KameleoonData.CustomData;\n }\n\n static updateCache({\n cacheManager,\n visitorCode,\n experimentId,\n variationId,\n }: ManageCacheParametersType): void {\n const cacheData = cacheManager.getAliveItem(visitorCode);\n\n const newCacheData = cacheData ? { ...cacheData } : {};\n\n newCacheData[experimentId] = {\n variationId,\n expirationTime: Date.now() + CACHE_ITEM_LIFETIME * Milliseconds.Second,\n };\n\n cacheManager.add({\n key: visitorCode,\n data: newCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n }\n\n static getTrackingCode(\n trackingCache: CacheManager<TrackingCacheItemType>,\n visitorCode: string,\n ): string {\n let resultString = 'window.kameleoonQueue=window.kameleoonQueue||[];';\n\n const cacheData = trackingCache.getAliveItem(visitorCode);\n\n if (!cacheData) {\n return resultString;\n }\n\n const updatedCacheData: TrackingCacheItemType = {};\n\n Object.entries(cacheData).forEach(\n ([experimentId, { variationId, expirationTime }]) => {\n if (expirationTime > Date.now()) {\n resultString += `window.kameleoonQueue.push(['Experiments.assignVariation',${experimentId},${variationId}]);`;\n resultString += `window.kameleoonQueue.push(['Experiments.trigger',${experimentId},true]);`;\n\n updatedCacheData[Number(experimentId)] = {\n variationId,\n expirationTime,\n };\n }\n },\n );\n\n // --- Note ---\n // Cache is updated with only alive experiments\n trackingCache.add({\n key: visitorCode,\n data: updatedCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n\n return resultString;\n }\n\n static async trackData({\n visitorCode,\n campaignConfiguration,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n }: TrackDataParametersType): Promise<void> {\n await this.sendOfflineTracking({\n requester,\n storage: offlineTrackingStorage,\n });\n\n const dataUrl = this.getDataUrl(visitorCode, campaignConfiguration);\n\n const userAgent = this.getUserAgent(visitorCode, campaignConfiguration);\n\n const parameters = {\n visitorCode,\n body: dataUrl,\n userAgent,\n };\n\n const result = await requester.trackData(parameters);\n\n const cleanup = () => campaignConfiguration.clearUnsentData(visitorCode);\n\n if (result.ok) {\n cleanup();\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: false,\n onSuccess: cleanup,\n });\n }\n }\n\n static async trackExperiment({\n variationId,\n experimentId,\n isUnallocated,\n visitorCode,\n campaignConfiguration,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n }: TrackExperimentParametersType): Promise<void> {\n const dataUrl = this.getDataUrl(visitorCode, campaignConfiguration);\n\n const userAgent = this.getUserAgent(visitorCode, campaignConfiguration);\n\n const parameters = {\n body: dataUrl,\n visitorCode,\n isUnallocated,\n variationId,\n userAgent,\n experimentId,\n };\n\n const result = await requester.trackExperiment(parameters);\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: true,\n });\n }\n }\n\n static getNonce(): string {\n const hexLength = HEX_CHARACTERS.length;\n let nonce: string = '';\n\n for (let i = 0; i < hexLength; i++) {\n const randomNumber = Math.floor(Math.random() * hexLength);\n nonce += HEX_CHARACTERS.substring(randomNumber, randomNumber + 1);\n }\n\n return nonce;\n }\n\n static async sendOfflineTracking({\n requester,\n storage,\n }: SendOfflineTrackingParametersType) {\n const readResult = storage.read();\n\n if (readResult.ok && readResult.data.requestParameters) {\n const { requestParameters } = readResult.data;\n const successfulTimestamps: number[] = [];\n\n // --- Note ---\n // `for..of` + `await` is used to make sure that failed requests are sent one by one\n // without risk of getting the same timestamp at the server, which might happen, for example,\n // with `.forEach` or `.map` starting requests in async callbacks at the same time\n for (const parameters of requestParameters) {\n const { timestamp, isExperiment, ...params } = parameters;\n let result: Result<boolean, KameleoonError>;\n\n if (isExperiment) {\n result = await requester.trackExperiment(\n params as TrackExperimentParamsType,\n );\n } else {\n result = await requester.trackData(params as TrackDataParamsType);\n }\n\n result.ok && result.data && successfulTimestamps.push(timestamp);\n }\n\n this.deleteFromOfflineTracking({\n storage,\n timestamps: successfulTimestamps,\n });\n }\n }\n\n private static addItemToOfflineTracking({\n item,\n isExperiment,\n storage,\n onSuccess,\n }: AddToOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n const data = readResult.ok ? readResult.data : {};\n\n const { requestParameters } = data;\n\n const newItem = {\n ...item,\n timestamp: new Date().getTime(),\n isExperiment,\n };\n\n const newRequestParameters = requestParameters\n ? [...requestParameters, newItem]\n : [newItem];\n\n const writeResult = storage.write({\n requestParameters: newRequestParameters,\n });\n\n if (writeResult.ok && onSuccess) {\n onSuccess();\n }\n }\n\n private static deleteFromOfflineTracking({\n timestamps,\n storage,\n }: DeleteFromOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n if (readResult.ok) {\n const { requestParameters } = readResult.data;\n\n const newParameters = requestParameters?.filter(\n (item) => !timestamps.includes(item.timestamp),\n );\n\n storage.write({ requestParameters: newParameters });\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utilities.js","names":["Utilities","a","_classCallCheck","_createClass","key","value","checkTargeting","segment","visitorCode","targetingData","experimentId","variationConfiguration","clientConfiguration","packageInfo","dataManager","conditionsData","firstLevel","length","Ok","Err","KameleoonError","KameleoonException","Initialization","variations","assignedVariationsResult","getStoredVariations","ok","data","targetingTree","getTree","trees","segments","ruleMap","hasTargetingType","TargetingType","SEGMENT","TARGET_FEATURE_FLAG","result","evaluate","variationData","sdkInfo","validateVisitorCode","VisitorCodeEmpty","VISITOR_CODE_MAX_LENGTH","VisitorCodeMaxLength","getDataUrl","updateUrl","url","resultUrl","UrlParameter","Nonce","getNonce","unsentData","getUnsentData","size","g","h","_createForOfIteratorHelper","values","s","n","done","item","Array","isArray","forEach","arrayItem","e","f","b","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","c","d","i","j","k","l","m","o","p","q","wrap","r","prev","next","featureFlagVariation","requester","isOfflineModeOn","offlineTrackingStorage","variationId","rule","userAgent","getUserAgent","dataUrl","resultVariationId","isUnallocated","parameters","body","trackExperiment","sent","clearUnsentData","addItemToOfflineTracking","storage","isExperiment","stop","convertTimeUnit","time","timeUnit","timeMap","_defineProperty","TimeUnit","Minute","Milliseconds","Hour","Day","Week","Month","parseFeatureVariable","variable","type","VariableType","BOOLEAN","STRING","NUMBER","numberValue","Number","isNaN","NumberParse","JSON","jsonValue","parse","err","JSONParse","exhaustCheck","parseVisitorData","filters","currentVisit","previousVisits","browserFilter","browser","customDataFilter","customData","operatingSystemFilter","operatingSystem","conversionsFilter","conversions","deviceFilter","device","geolocationFilter","geolocation","experimentsFilter","experiments","pageViewFilter","pageViews","visitAmount","visits","push","_toConsumableArray","resultData","PageView","_listFromVisits","Browser","_fromVisits","visit","experimentData","experimentEvents","y","z","experimentEvent","B","id","updateStoredVariations","Device","GeolocationData","CustomData","OperatingSystem","Conversion","visitsData","VisitsData","_fromRemoteVisits","parseRegExp","split","_slicedToArray","_","expression","flags","RegExp","storedData","storedTargetingData","userAgentData","KameleoonData","UserAgent","isCustomData","dataItem","insertInOrderedListMutably","list","element","order","includes","index","findIndex","Order","Ascending","splice","updateCache","cacheManager","cacheData","getAliveItem","newCacheData","_objectSpread","expirationTime","Date","now","CACHE_ITEM_LIFETIME","Second","add","lifetime","getTrackingCode","trackingCache","resultString","updatedCacheData","Object","entries","concat","sendOfflineTracking","trackData","cleanup","onSuccess","randomNumber","hexLength","HEX_CHARACTERS","nonce","Math","floor","random","substring","readResult","read","requestParameters","successfulTimestamps","timestamp","params","_objectWithoutProperties","_excluded","t0","finish","deleteFromOfflineTracking","timestamps","compareSemVer","version","compareVersion","operator","versionResult","validateVersion","compareVersionResult","error","major","minor","patch","compareMajor","compareMinor","comparePatch","isMajorEqual","isMinorEqual","isPatchEqual","VersionMatchType","EQUAL","GREATER","LOWER","newItem","getTime","newRequestParameters","writeResult","write","newParameters","filter","versionParts","map","x","parseInt","some","SemanticVersionParse","slice","exports"],"sources":["../../src/utilities/utilities.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport {\n KameleoonError,\n KameleoonException,\n exhaustCheck,\n} from 'src/kameleoonError';\nimport {\n FeatureVariableResultType,\n Milliseconds,\n TrackingCacheItemType,\n VariableType,\n} from 'src/types';\nimport { FeatureVariableType, JSONType } from 'src/clientConfiguration';\nimport {\n Browser,\n Conversion,\n CustomData,\n DataManager,\n Device,\n GeolocationData,\n KameleoonData,\n KameleoonDataType,\n OperatingSystem,\n PageView,\n VisitsData,\n} from 'src/kameleoonData';\nimport { CACHE_ITEM_LIFETIME } from 'src/constants';\nimport { CacheManager } from 'src/cacheManager';\nimport {\n TrackExperimentParamsType,\n TrackDataParamsType,\n VisitType,\n UrlParameter,\n} from 'src/requester';\nimport { VersionMatchType, TargetingType } from 'src/targeting';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { FeatureFlagVariationsType } from 'src/storage/types';\nimport { VISITOR_CODE_MAX_LENGTH, HEX_CHARACTERS } from './constants';\nimport {\n CheckTargetingParametersType,\n ManageCacheParametersType,\n TrackDataParametersType,\n TrackRuleParametersType,\n AddToOfflineTrackingParametersType,\n SendOfflineTrackingParametersType,\n DeleteFromOfflineTrackingParametersType,\n ParseVisitorDataParametersType,\n InsertInOrderedListParametersType,\n Order,\n TimeUnit,\n} from './types';\n\nexport class Utilities {\n static checkTargeting({\n segment,\n visitorCode,\n targetingData,\n experimentId,\n variationConfiguration,\n clientConfiguration,\n packageInfo,\n dataManager,\n }: CheckTargetingParametersType): Result<boolean, KameleoonError> {\n if (!segment || !segment.conditionsData.firstLevel.length) {\n return Ok(true);\n }\n\n if (!variationConfiguration) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n let variations: FeatureFlagVariationsType = {};\n\n const assignedVariationsResult =\n variationConfiguration.getStoredVariations(visitorCode);\n\n if (assignedVariationsResult.ok) {\n variations = assignedVariationsResult.data;\n }\n\n const targetingTree = dataManager.getTree(segment);\n\n let trees = undefined;\n let segments = undefined;\n let ruleMap = undefined;\n\n // --- Note ---\n // Only getting trees and segments targeting type\n if (targetingTree.hasTargetingType(TargetingType.SEGMENT)) {\n trees = dataManager.trees;\n segments = clientConfiguration.segments;\n }\n\n // --- Note ---\n // Only constructing rule map for targeting type\n if (targetingTree.hasTargetingType(TargetingType.TARGET_FEATURE_FLAG)) {\n ruleMap = clientConfiguration.ruleMap;\n }\n\n const result = targetingTree.evaluate({\n variationData: variations,\n sdkInfo: packageInfo,\n segments,\n ruleMap,\n trees,\n targetingData,\n experimentId,\n visitorCode,\n });\n\n return result;\n }\n\n static validateVisitorCode(\n visitorCode: string,\n ): Result<void, KameleoonError> {\n if (visitorCode.length === 0) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeEmpty));\n }\n\n if (visitorCode.length > VISITOR_CODE_MAX_LENGTH) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeMaxLength));\n }\n\n return Ok();\n }\n\n static getDataUrl(visitorCode: string, dataManager: DataManager): string {\n const unsentData = dataManager.getUnsentData(visitorCode);\n let resultUrl = '';\n\n if (!unsentData || !unsentData.size) {\n return resultUrl;\n }\n\n function updateUrl(data: KameleoonDataType): void {\n if (data.url) {\n resultUrl +=\n data.url + UrlParameter.Nonce + Utilities.getNonce() + '\\n';\n }\n }\n\n for (const item of unsentData.values()) {\n if (Array.isArray(item)) {\n item.forEach((arrayItem) => updateUrl(arrayItem));\n } else {\n updateUrl(item);\n }\n }\n\n return resultUrl;\n }\n\n static async trackFeatureExperiment({\n featureFlagVariation,\n dataManager,\n visitorCode,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n }: TrackRuleParametersType): Promise<void> {\n const { variationId, rule } = featureFlagVariation;\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const dataUrl = this.getDataUrl(visitorCode, dataManager);\n\n const resultVariationId = variationId || 0;\n const isUnallocated = variationId === null;\n // --- Note ---\n // Experiment id is not needed for unallocated visitors\n // So we just use 0 as a fallback\n const experimentId = rule ? rule.experimentId : 0;\n\n const parameters = {\n visitorCode,\n isUnallocated,\n body: dataUrl,\n experimentId,\n variationId: resultVariationId,\n userAgent,\n };\n\n const result = await requester.trackExperiment(parameters);\n\n if (result.ok) {\n dataManager.clearUnsentData(visitorCode);\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: true,\n });\n }\n }\n\n static convertTimeUnit(time: number, timeUnit: TimeUnit): number {\n const timeMap = {\n [TimeUnit.Minute]: Milliseconds.Minute,\n [TimeUnit.Hour]: Milliseconds.Hour,\n [TimeUnit.Day]: Milliseconds.Day,\n [TimeUnit.Week]: Milliseconds.Week,\n [TimeUnit.Month]: Milliseconds.Month,\n };\n\n return time / timeMap[timeUnit];\n }\n\n static parseFeatureVariable(\n variable: FeatureVariableType,\n ): Result<FeatureVariableResultType, KameleoonError> {\n const { type, value } = variable;\n\n switch (type) {\n case VariableType.BOOLEAN:\n return Ok({\n type,\n value: Boolean(value),\n });\n case VariableType.STRING:\n return Ok({\n type,\n value: String(value),\n });\n case VariableType.NUMBER:\n const numberValue = Number(value);\n\n if (Number.isNaN(numberValue)) {\n return Err(\n new KameleoonError(KameleoonException.NumberParse, String(value)),\n );\n }\n\n return Ok({\n type,\n value: numberValue,\n });\n case VariableType.JSON:\n try {\n const jsonValue: JSONType = JSON.parse(String(variable.value));\n\n return Ok({\n type,\n value: jsonValue,\n });\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.JSONParse, err));\n }\n default:\n exhaustCheck(type);\n }\n }\n\n static parseVisitorData({\n data,\n filters,\n visitorCode,\n variationConfiguration,\n }: ParseVisitorDataParametersType): KameleoonDataType[] {\n const { currentVisit, previousVisits } = data;\n const {\n browser: browserFilter,\n customData: customDataFilter,\n operatingSystem: operatingSystemFilter,\n conversions: conversionsFilter,\n device: deviceFilter,\n geolocation: geolocationFilter,\n experiments: experimentsFilter,\n pageViews: pageViewFilter,\n visitAmount,\n } = filters;\n\n let visits: VisitType[] = [];\n\n if (currentVisit) {\n visits.push(currentVisit);\n }\n\n if (previousVisits) {\n // --- Note ---\n // We can't know if we have `currentVisit` visit in advance via API (only amount of `previousVisits`)\n // But the current visit is also counted in `visitAmount` so we need to check it here\n if (visits.length && visitAmount && visitAmount > 1) {\n visits.push(...previousVisits);\n }\n\n if (!visits.length) {\n visits.push(...previousVisits);\n }\n }\n\n if (!visits) {\n return [];\n }\n\n const resultData: KameleoonDataType[] = [];\n\n if (pageViewFilter) {\n const pageViews = PageView._listFromVisits(visits);\n\n if (pageViews.length) {\n resultData.push(...pageViews);\n }\n }\n\n // --- Browser ---\n if (browserFilter) {\n const browser = Browser._fromVisits(visits);\n\n if (browser) {\n resultData.push(browser);\n }\n }\n\n // --- Experiments ---\n if (experimentsFilter) {\n const experimentData: FeatureFlagVariationsType = {};\n\n // --- Note ---\n // Going backwards to get the latest experiment data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n\n if (!visit.experimentEvents) {\n continue;\n }\n\n for (const experimentEvent of visit.experimentEvents) {\n const { id, variationId } = experimentEvent.data;\n\n experimentData[id] = variationId;\n }\n }\n\n variationConfiguration.updateStoredVariations(\n visitorCode,\n experimentData,\n );\n }\n\n // --- Device ---\n if (deviceFilter) {\n const device = Device._fromVisits(visits);\n\n if (device) {\n resultData.push(device);\n }\n }\n\n // --- Geolocation ---\n if (geolocationFilter) {\n const geolocation = GeolocationData._fromVisits(visits);\n\n if (geolocation) {\n resultData.push(geolocation);\n }\n }\n\n // --- Custom data ---\n if (customDataFilter) {\n resultData.push(...CustomData._listFromVisits(visits));\n }\n\n // --- Operating system ---\n if (operatingSystemFilter) {\n const operatingSystem = OperatingSystem._fromVisits(visits);\n\n if (operatingSystem) {\n resultData.push(operatingSystem);\n }\n }\n\n // --- Conversions ---\n if (conversionsFilter) {\n resultData.push(...Conversion._listFromVisits(visits));\n }\n\n const visitsData = VisitsData._fromRemoteVisits(\n visits,\n Boolean(currentVisit),\n );\n\n if (visitsData) {\n resultData.push(visitsData);\n }\n\n return resultData;\n }\n\n static parseRegExp(value: string): RegExp {\n if (value[0] === '/') {\n const [_, expression, flags] = value.split('/');\n\n return new RegExp(expression, flags);\n }\n\n return new RegExp(value);\n }\n\n static getUserAgent(\n visitorCode: string,\n dataManager: DataManager,\n ): string | undefined {\n const storedData = dataManager.storedTargetingData;\n\n const targetingData: KameleoonVisitorDataType | undefined =\n storedData && storedData[visitorCode];\n\n if (targetingData) {\n const userAgentData = targetingData[KameleoonData.UserAgent];\n\n if (userAgentData) {\n return userAgentData.value;\n }\n }\n\n return undefined;\n }\n\n static isCustomData(dataItem: KameleoonDataType): dataItem is CustomData {\n return dataItem.data.type === KameleoonData.CustomData;\n }\n\n /**\n * Insert element in ordered list, if element already exists in list, does nothing\n * @param list - list to insert element\n * @param element - element to insert\n * @param order - order of list\n */\n static insertInOrderedListMutably({\n list,\n element,\n order,\n }: InsertInOrderedListParametersType): void {\n if (list.includes(element)) {\n return;\n }\n\n const index = list.findIndex((item) =>\n order === Order.Ascending ? item >= element : item <= element,\n );\n\n if (index === -1) {\n list.push(element);\n } else {\n list.splice(index, 0, element);\n }\n }\n\n static updateCache({\n cacheManager,\n visitorCode,\n experimentId,\n variationId,\n }: ManageCacheParametersType): void {\n const cacheData = cacheManager.getAliveItem(visitorCode);\n\n const newCacheData = cacheData ? { ...cacheData } : {};\n\n newCacheData[experimentId] = {\n variationId,\n expirationTime: Date.now() + CACHE_ITEM_LIFETIME * Milliseconds.Second,\n };\n\n cacheManager.add({\n key: visitorCode,\n data: newCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n }\n\n static getTrackingCode(\n trackingCache: CacheManager<TrackingCacheItemType>,\n visitorCode: string,\n ): string {\n let resultString = 'window.kameleoonQueue=window.kameleoonQueue||[];';\n\n const cacheData = trackingCache.getAliveItem(visitorCode);\n\n if (!cacheData) {\n return resultString;\n }\n\n const updatedCacheData: TrackingCacheItemType = {};\n\n Object.entries(cacheData).forEach(\n ([experimentId, { variationId, expirationTime }]) => {\n if (expirationTime > Date.now()) {\n resultString += `window.kameleoonQueue.push(['Experiments.assignVariation',${experimentId},${variationId}]);`;\n resultString += `window.kameleoonQueue.push(['Experiments.trigger',${experimentId},true]);`;\n\n updatedCacheData[Number(experimentId)] = {\n variationId,\n expirationTime,\n };\n }\n },\n );\n\n // --- Note ---\n // Cache is updated with only alive experiments\n trackingCache.add({\n key: visitorCode,\n data: updatedCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n\n return resultString;\n }\n\n static async trackData({\n visitorCode,\n dataManager,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n }: TrackDataParametersType): Promise<void> {\n await this.sendOfflineTracking({\n requester,\n storage: offlineTrackingStorage,\n });\n\n const dataUrl = this.getDataUrl(visitorCode, dataManager);\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const parameters = {\n visitorCode,\n body: dataUrl,\n userAgent,\n };\n\n const result = await requester.trackData(parameters);\n\n const cleanup = () => dataManager.clearUnsentData(visitorCode);\n\n if (result.ok) {\n cleanup();\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: false,\n onSuccess: cleanup,\n });\n }\n }\n\n static getNonce(): string {\n const hexLength = HEX_CHARACTERS.length;\n let nonce: string = '';\n\n for (let i = 0; i < hexLength; i++) {\n const randomNumber = Math.floor(Math.random() * hexLength);\n nonce += HEX_CHARACTERS.substring(randomNumber, randomNumber + 1);\n }\n\n return nonce;\n }\n\n static async sendOfflineTracking({\n requester,\n storage,\n }: SendOfflineTrackingParametersType) {\n const readResult = storage.read();\n\n if (readResult.ok && readResult.data.requestParameters) {\n const { requestParameters } = readResult.data;\n const successfulTimestamps: number[] = [];\n\n // --- Note ---\n // `for..of` + `await` is used to make sure that failed requests are sent one by one\n // without risk of getting the same timestamp at the server, which might happen, for example,\n // with `.forEach` or `.map` starting requests in async callbacks at the same time\n for (const parameters of requestParameters) {\n const { timestamp, isExperiment, ...params } = parameters;\n let result: Result<boolean, KameleoonError>;\n\n if (isExperiment) {\n result = await requester.trackExperiment(\n params as TrackExperimentParamsType,\n );\n } else {\n result = await requester.trackData(params as TrackDataParamsType);\n }\n\n result.ok && result.data && successfulTimestamps.push(timestamp);\n }\n\n this.deleteFromOfflineTracking({\n storage,\n timestamps: successfulTimestamps,\n });\n }\n }\n\n static compareSemVer({\n version,\n compareVersion,\n operator,\n }: {\n version: string;\n compareVersion: string;\n operator: VersionMatchType;\n }): Result<boolean, KameleoonError> {\n const versionResult = this.validateVersion(version);\n const compareVersionResult = this.validateVersion(compareVersion);\n\n if (!versionResult.ok) {\n return Err(versionResult.error);\n }\n\n if (!compareVersionResult.ok) {\n return Err(compareVersionResult.error);\n }\n\n const [major, minor, patch] = versionResult.data;\n const [compareMajor, compareMinor, comparePatch] =\n compareVersionResult.data;\n\n const [isMajorEqual, isMinorEqual, isPatchEqual] = [\n major === compareMajor,\n minor === compareMinor,\n patch === comparePatch,\n ];\n\n switch (operator) {\n case VersionMatchType.EQUAL:\n return Ok(isMajorEqual && isMinorEqual && isPatchEqual);\n case VersionMatchType.GREATER:\n return Ok(\n major > compareMajor ||\n (isMajorEqual && minor > compareMinor) ||\n (isMajorEqual && isMinorEqual && patch > comparePatch),\n );\n case VersionMatchType.LOWER:\n return Ok(\n major < compareMajor ||\n (isMajorEqual && minor < compareMinor) ||\n (isMajorEqual && isMinorEqual && patch < comparePatch),\n );\n default:\n exhaustCheck(operator);\n }\n }\n\n private static addItemToOfflineTracking({\n item,\n isExperiment,\n storage,\n onSuccess,\n }: AddToOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n const data = readResult.ok ? readResult.data : {};\n\n const { requestParameters } = data;\n\n const newItem = {\n ...item,\n timestamp: new Date().getTime(),\n isExperiment,\n };\n\n const newRequestParameters = requestParameters\n ? [...requestParameters, newItem]\n : [newItem];\n\n const writeResult = storage.write({\n requestParameters: newRequestParameters,\n });\n\n if (writeResult.ok && onSuccess) {\n onSuccess();\n }\n }\n\n private static deleteFromOfflineTracking({\n timestamps,\n storage,\n }: DeleteFromOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n if (readResult.ok) {\n const { requestParameters } = readResult.data;\n\n const newParameters = requestParameters?.filter(\n (item) => !timestamps.includes(item.timestamp),\n );\n\n storage.write({ requestParameters: newParameters });\n }\n }\n\n private static validateVersion(\n version: string,\n ): Result<[number, number, number], KameleoonError> {\n const versionParts = version.split('.').map((x) => parseInt(x, 10));\n\n while (versionParts.length < 3) {\n versionParts.push(0);\n }\n\n if (versionParts.some((item) => isNaN(item))) {\n return Err(\n new KameleoonError(KameleoonException.SemanticVersionParse, version),\n );\n }\n\n return Ok(versionParts.slice(0, 3) as [number, number, number]);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { VariationConfiguration } from './variationConfiguration';
|
|
2
|
-
export {
|
|
2
|
+
export { FeatureFlagVariationType } from './types';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"FeatureFlagVariationType",{enumerable:!0,get:function get(){return _types.FeatureFlagVariationType}}),Object.defineProperty(exports,"VariationConfiguration",{enumerable:!0,get:function get(){return _variationConfiguration.VariationConfiguration}})
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"FeatureFlagVariationType",{enumerable:!0,get:function get(){return _types.FeatureFlagVariationType}}),Object.defineProperty(exports,"VariationConfiguration",{enumerable:!0,get:function get(){return _variationConfiguration.VariationConfiguration}});var _variationConfiguration=require("./variationConfiguration"),_types=require("./types");
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/variationConfiguration/index.ts"],"sourcesContent":["export { VariationConfiguration } from './variationConfiguration';\nexport {
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/variationConfiguration/index.ts"],"sourcesContent":["export { VariationConfiguration } from './variationConfiguration';\nexport { FeatureFlagVariationType } from './types';\n"],"mappings":""}
|
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ClientConfiguration, FeatureFlagType, RuleItemType } from '../clientConfiguration';
|
|
2
|
+
import { DataManager } from '../kameleoonData';
|
|
2
3
|
import { KameleoonVisitorDataType } from '../kameleoonData/types';
|
|
3
4
|
import { ExternalPackageInfoType } from '../types';
|
|
4
|
-
export type VariationType = {
|
|
5
|
-
variationId: number;
|
|
6
|
-
assignmentDate: string;
|
|
7
|
-
};
|
|
8
|
-
export type UpdateStorageParamsType = {
|
|
9
|
-
visitorCode: string;
|
|
10
|
-
experimentId: string;
|
|
11
|
-
variationId: number;
|
|
12
|
-
};
|
|
13
5
|
export type FeatureFlagVariationType = {
|
|
14
6
|
variationKey: string;
|
|
15
7
|
variationId: number | null;
|
|
@@ -18,11 +10,12 @@ export type FeatureFlagVariationType = {
|
|
|
18
10
|
featureKey: string;
|
|
19
11
|
rule: RuleItemType | null;
|
|
20
12
|
};
|
|
21
|
-
export type
|
|
13
|
+
export type GetVariationParametersType = {
|
|
22
14
|
visitorCode: string;
|
|
23
15
|
featureFlag: FeatureFlagType;
|
|
24
16
|
targetingData: KameleoonVisitorDataType;
|
|
25
17
|
withAssignment?: boolean;
|
|
26
18
|
packageInfo: ExternalPackageInfoType;
|
|
27
|
-
|
|
19
|
+
clientConfiguration: ClientConfiguration;
|
|
20
|
+
dataManager: DataManager;
|
|
28
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/variationConfiguration/types.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/variationConfiguration/types.ts"],"sourcesContent":["import {\n ClientConfiguration,\n FeatureFlagType,\n RuleItemType,\n} from 'src/clientConfiguration';\nimport { DataManager } from 'src/kameleoonData';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { ExternalPackageInfoType } from 'src/types';\n\nexport type FeatureFlagVariationType = {\n variationKey: string;\n variationId: number | null;\n experimentId: number | null;\n featureFlagId: number;\n featureKey: string;\n rule: RuleItemType | null;\n};\n\nexport type GetVariationParametersType = {\n visitorCode: string;\n featureFlag: FeatureFlagType;\n targetingData: KameleoonVisitorDataType;\n withAssignment?: boolean;\n packageInfo: ExternalPackageInfoType;\n clientConfiguration: ClientConfiguration;\n dataManager: DataManager;\n};\n"],"mappings":""}
|