@kameleoon/javascript-sdk-core 2.5.0 → 2.6.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/campaignConfiguration/campaignConfiguration.d.ts +14 -9
- package/dist/campaignConfiguration/campaignConfiguration.js +4 -4
- package/dist/campaignConfiguration/campaignConfiguration.js.map +1 -1
- package/dist/campaignConfiguration/constants.d.ts +1 -1
- package/dist/campaignConfiguration/types.d.ts +9 -7
- package/dist/campaignConfiguration/types.js.map +1 -1
- package/dist/clientSettings/clientSettings.d.ts +1 -1
- package/dist/clientSettings/types.d.ts +1 -1
- package/dist/hasher/types.d.ts +1 -1
- package/dist/kameleoonClient.d.ts +2 -0
- package/dist/kameleoonClient.js +4 -4
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/kameleoonData/browser.js +4 -1
- package/dist/kameleoonData/browser.js.map +1 -1
- package/dist/kameleoonData/conversion.js +4 -1
- package/dist/kameleoonData/conversion.js.map +1 -1
- package/dist/kameleoonData/customData.js +4 -1
- package/dist/kameleoonData/customData.js.map +1 -1
- package/dist/kameleoonData/device.js +4 -1
- package/dist/kameleoonData/device.js.map +1 -1
- package/dist/kameleoonData/pageView.d.ts +0 -1
- package/dist/kameleoonData/pageView.js +5 -2
- package/dist/kameleoonData/pageView.js.map +1 -1
- package/dist/kameleoonError/constants.d.ts +2 -2
- package/dist/kameleoonError/kameleoonError.d.ts +2 -2
- package/dist/requester/constants.js +1 -4
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.d.ts +2 -2
- package/dist/requester/index.js +1 -1
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +6 -6
- package/dist/requester/requester.js +1 -1
- package/dist/requester/requester.js.map +1 -1
- package/dist/requester/types.d.ts +2 -4
- package/dist/requester/types.js.map +1 -1
- package/dist/storage/constants.d.ts +2 -1
- package/dist/storage/constants.js +1 -1
- package/dist/storage/constants.js.map +1 -1
- package/dist/storage/externalStorage.d.ts +1 -1
- package/dist/storage/types.d.ts +14 -5
- package/dist/storage/types.js.map +1 -1
- package/dist/targeting/conditions/browserCondition.d.ts +2 -2
- package/dist/targeting/conditions/conditionFactory.d.ts +1 -1
- package/dist/targeting/conditions/conversionCondition.d.ts +2 -2
- package/dist/targeting/conditions/customDataCondition.d.ts +2 -2
- package/dist/targeting/conditions/deviceCondition.d.ts +2 -2
- package/dist/targeting/conditions/exclusiveExperimentCondition.d.ts +2 -2
- package/dist/targeting/conditions/pageTitleCondition.d.ts +2 -2
- package/dist/targeting/conditions/pageUrlCondition.d.ts +2 -2
- package/dist/targeting/conditions/sdkLanguageCondition.d.ts +2 -2
- package/dist/targeting/conditions/targetExperimentCondition.d.ts +2 -2
- package/dist/targeting/conditions/types.d.ts +4 -4
- package/dist/targeting/conditions/visitorCodeCondition.d.ts +2 -2
- package/dist/targeting/targetingNode.d.ts +1 -1
- package/dist/targeting/targetingTree.d.ts +1 -1
- package/dist/targeting/types.d.ts +3 -3
- package/dist/utilities/types.d.ts +40 -9
- package/dist/utilities/types.js.map +1 -1
- package/dist/utilities/utilities.d.ts +14 -10
- package/dist/utilities/utilities.js +1 -1
- package/dist/utilities/utilities.js.map +1 -1
- package/dist/variationConfiguration/types.d.ts +4 -3
- package/dist/variationConfiguration/types.js.map +1 -1
- package/dist/variationConfiguration/variation.d.ts +1 -1
- package/dist/variationConfiguration/variationConfiguration.d.ts +4 -4
- package/dist/variationConfiguration/variationConfiguration.js +3 -3
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
- package/package.json +4 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
|
-
import { KameleoonError } from '
|
|
3
|
-
import { EvaluationDataType } from '
|
|
2
|
+
import { KameleoonError } from '../../kameleoonError';
|
|
3
|
+
import { EvaluationDataType } from '../../targeting/types';
|
|
4
4
|
import { ConditionDataType, ICondition } from './types';
|
|
5
5
|
export declare class SdkLanguageCondition implements ICondition {
|
|
6
6
|
private sdkLanguage?;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
|
-
import { KameleoonError } from '
|
|
3
|
-
import { EvaluationDataType } from '
|
|
2
|
+
import { KameleoonError } from '../../kameleoonError';
|
|
3
|
+
import { EvaluationDataType } from '../../targeting/types';
|
|
4
4
|
import { ConditionDataType, ICondition } from './types';
|
|
5
5
|
export declare class TargetExperimentCondition implements ICondition {
|
|
6
6
|
private experimentId?;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
|
-
import { SdkLanguageType } from '
|
|
3
|
-
import { BrowserType, DeviceType } from '
|
|
4
|
-
import { KameleoonError } from '
|
|
5
|
-
import { EvaluationDataType, MatchType, MatchTypeCustomData, MatchTypeTest, MatchTypeVariation, TargetingType, VersionMatchType } from '
|
|
2
|
+
import { SdkLanguageType } from '../../constants';
|
|
3
|
+
import { BrowserType, DeviceType } from '../../kameleoonData';
|
|
4
|
+
import { KameleoonError } from '../../kameleoonError';
|
|
5
|
+
import { EvaluationDataType, MatchType, MatchTypeCustomData, MatchTypeTest, MatchTypeVariation, TargetingType, VersionMatchType } from '../../targeting/types';
|
|
6
6
|
import { BrowserCondition } from './browserCondition';
|
|
7
7
|
import { ConversionCondition } from './conversionCondition';
|
|
8
8
|
import { CustomDataCondition } from './customDataCondition';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
|
-
import { KameleoonError } from '
|
|
3
|
-
import { EvaluationDataType } from '
|
|
2
|
+
import { KameleoonError } from '../../kameleoonError';
|
|
3
|
+
import { EvaluationDataType } from '../../targeting/types';
|
|
4
4
|
import { ConditionDataType, ICondition } from './types';
|
|
5
5
|
export declare class VisitorCodeCondition implements ICondition {
|
|
6
6
|
private matchType?;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
|
-
import { KameleoonError } from '
|
|
2
|
+
import { KameleoonError } from '../kameleoonError';
|
|
3
3
|
import { EvaluationDataType, SegmentType } from './types';
|
|
4
4
|
interface ITargetingTree {
|
|
5
5
|
evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { KameleoonVisitorDataType } from '
|
|
2
|
-
import { ExperimentVariationsType } from '
|
|
3
|
-
import { ExternalPackageInfoType } from '
|
|
1
|
+
import { KameleoonVisitorDataType } from '../kameleoonData/types';
|
|
2
|
+
import { ExperimentVariationsType } from '../storage';
|
|
3
|
+
import { ExternalPackageInfoType } from '../types';
|
|
4
4
|
import { ConditionDataType, ConditionType } from './conditions';
|
|
5
5
|
import { TargetingNode } from './targetingNode';
|
|
6
6
|
export declare enum Operator {
|
|
@@ -1,24 +1,29 @@
|
|
|
1
|
-
import { CacheManager } from '
|
|
2
|
-
import { CampaignConfiguration } from '
|
|
3
|
-
import { KameleoonVisitorDataType } from '
|
|
4
|
-
import { Requester } from '
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
1
|
+
import { CacheManager } from '../cacheManager';
|
|
2
|
+
import { CampaignConfiguration } from '../campaignConfiguration';
|
|
3
|
+
import { KameleoonVisitorDataType } from '../kameleoonData/types';
|
|
4
|
+
import { Requester } from '../requester';
|
|
5
|
+
import { TrackDataParamsType, TrackExperimentParamsType } from '../requester/types';
|
|
6
|
+
import { IStorage, OfflineTracking } from '../storage/types';
|
|
7
|
+
import { SegmentType } from '../targeting';
|
|
8
|
+
import { ExternalPackageInfoType, TrackingCacheItemType } from '../types';
|
|
9
|
+
import { VariationConfiguration, FeatureFlagVariationType } from '../variationConfiguration';
|
|
10
|
+
export type CheckTargetingParametersType = {
|
|
9
11
|
segment: SegmentType | null;
|
|
10
12
|
experimentId: number | null;
|
|
11
13
|
visitorCode: string;
|
|
12
14
|
packageInfo: ExternalPackageInfoType;
|
|
13
15
|
targetingData: KameleoonVisitorDataType;
|
|
16
|
+
campaignConfiguration: CampaignConfiguration;
|
|
14
17
|
variationConfiguration?: VariationConfiguration;
|
|
15
18
|
};
|
|
16
|
-
export type
|
|
19
|
+
export type TrackRuleParametersType = {
|
|
17
20
|
featureFlagVariation: FeatureFlagVariationType;
|
|
18
21
|
campaignConfiguration: CampaignConfiguration;
|
|
19
22
|
visitorCode: string;
|
|
20
23
|
requester: Requester;
|
|
21
24
|
userAgent?: string;
|
|
25
|
+
isOfflineModeOn?: boolean;
|
|
26
|
+
offlineTrackingStorage: IStorage<OfflineTracking>;
|
|
22
27
|
};
|
|
23
28
|
export type ManageCacheParametersType = {
|
|
24
29
|
cacheManager: CacheManager<TrackingCacheItemType>;
|
|
@@ -30,4 +35,30 @@ export type TrackDataParametersType = {
|
|
|
30
35
|
visitorCode: string;
|
|
31
36
|
campaignConfiguration: CampaignConfiguration;
|
|
32
37
|
requester: Requester;
|
|
38
|
+
isOfflineModeOn?: boolean;
|
|
39
|
+
offlineTrackingStorage: IStorage<OfflineTracking>;
|
|
40
|
+
};
|
|
41
|
+
export type TrackExperimentParametersType = {
|
|
42
|
+
campaignConfiguration: CampaignConfiguration;
|
|
43
|
+
visitorCode: string;
|
|
44
|
+
requester: Requester;
|
|
45
|
+
variationId: number;
|
|
46
|
+
experimentId: number;
|
|
47
|
+
isUnallocated: boolean;
|
|
48
|
+
isOfflineModeOn?: boolean;
|
|
49
|
+
offlineTrackingStorage: IStorage<OfflineTracking>;
|
|
50
|
+
};
|
|
51
|
+
export type AddToOfflineTrackingParametersType = {
|
|
52
|
+
item: TrackExperimentParamsType | TrackDataParamsType;
|
|
53
|
+
isExperiment: boolean;
|
|
54
|
+
storage: IStorage<OfflineTracking>;
|
|
55
|
+
onSuccess?: () => void;
|
|
56
|
+
};
|
|
57
|
+
export type SendOfflineTrackingParametersType = {
|
|
58
|
+
storage: IStorage<OfflineTracking>;
|
|
59
|
+
requester: Requester;
|
|
60
|
+
};
|
|
61
|
+
export type DeleteFromOfflineTrackingParametersType = {
|
|
62
|
+
timestamps: number[];
|
|
63
|
+
storage: IStorage<OfflineTracking>;
|
|
33
64
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/utilities/types.ts"],"sourcesContent":["import { CacheManager } from 'src/cacheManager';\nimport { CampaignConfiguration } from 'src/campaignConfiguration';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { Requester } from 'src/requester';\nimport { SegmentType } from 'src/targeting';\nimport { ExternalPackageInfoType, TrackingCacheItemType } from 'src/types';\nimport {\n VariationConfiguration,\n FeatureFlagVariationType,\n} from 'src/variationConfiguration';\n\nexport type
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/utilities/types.ts"],"sourcesContent":["import { CacheManager } from 'src/cacheManager';\nimport { CampaignConfiguration } from 'src/campaignConfiguration';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { Requester } from 'src/requester';\nimport {\n TrackDataParamsType,\n TrackExperimentParamsType,\n} from 'src/requester/types';\nimport { IStorage, 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 campaignConfiguration: CampaignConfiguration;\n variationConfiguration?: VariationConfiguration;\n};\n\nexport type TrackRuleParametersType = {\n featureFlagVariation: FeatureFlagVariationType;\n campaignConfiguration: CampaignConfiguration;\n visitorCode: string;\n requester: Requester;\n userAgent?: string;\n isOfflineModeOn?: boolean;\n offlineTrackingStorage: IStorage<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 campaignConfiguration: CampaignConfiguration;\n requester: Requester;\n isOfflineModeOn?: boolean;\n offlineTrackingStorage: IStorage<OfflineTracking>;\n};\n\nexport type TrackExperimentParametersType = {\n campaignConfiguration: CampaignConfiguration;\n visitorCode: string;\n requester: Requester;\n variationId: number;\n experimentId: number;\n isUnallocated: boolean;\n isOfflineModeOn?: boolean;\n offlineTrackingStorage: IStorage<OfflineTracking>;\n};\n\nexport type AddToOfflineTrackingParametersType = {\n item: TrackExperimentParamsType | TrackDataParamsType;\n isExperiment: boolean;\n storage: IStorage<OfflineTracking>;\n onSuccess?: () => void;\n};\n\nexport type SendOfflineTrackingParametersType = {\n storage: IStorage<OfflineTracking>;\n requester: Requester;\n};\n\nexport type DeleteFromOfflineTrackingParametersType = {\n timestamps: number[];\n storage: IStorage<OfflineTracking>;\n};\n"],"mappings":""}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
|
-
import { KameleoonError } from '
|
|
3
|
-
import { FeatureVariableResultType, TrackingCacheItemType } from '
|
|
4
|
-
import { CampaignConfiguration, FeatureVariableType } from '
|
|
5
|
-
import { CustomData, KameleoonDataType } from '
|
|
6
|
-
import { CacheManager } from '
|
|
7
|
-
import { GetVisitorDataResultType } from '
|
|
8
|
-
import {
|
|
2
|
+
import { KameleoonError } from '../kameleoonError';
|
|
3
|
+
import { FeatureVariableResultType, TrackingCacheItemType } from '../types';
|
|
4
|
+
import { CampaignConfiguration, FeatureVariableType } from '../campaignConfiguration';
|
|
5
|
+
import { CustomData, KameleoonDataType } from '../kameleoonData';
|
|
6
|
+
import { CacheManager } from '../cacheManager';
|
|
7
|
+
import { GetVisitorDataResultType } from '../requester';
|
|
8
|
+
import { CheckTargetingParametersType, ManageCacheParametersType, TrackDataParametersType, TrackRuleParametersType, SendOfflineTrackingParametersType, TrackExperimentParametersType } from './types';
|
|
9
9
|
export declare class Utilities {
|
|
10
|
-
static checkTargeting({ segment, visitorCode, targetingData, experimentId, variationConfiguration, packageInfo, }:
|
|
10
|
+
static checkTargeting({ segment, visitorCode, targetingData, experimentId, variationConfiguration, campaignConfiguration, packageInfo, }: CheckTargetingParametersType): Result<boolean, KameleoonError>;
|
|
11
11
|
static validateVisitorCode(visitorCode: string): Result<void, KameleoonError>;
|
|
12
12
|
static getDataUrl(visitorCode: string, campaignConfiguration: CampaignConfiguration): string;
|
|
13
|
-
static trackRule({ featureFlagVariation, campaignConfiguration, visitorCode, requester,
|
|
13
|
+
static trackRule({ featureFlagVariation, campaignConfiguration, visitorCode, requester, isOfflineModeOn, offlineTrackingStorage, }: TrackRuleParametersType): Promise<void>;
|
|
14
14
|
static parseFeatureVariable(variable: FeatureVariableType): Result<FeatureVariableResultType, KameleoonError>;
|
|
15
15
|
static parseVisitorData(data: GetVisitorDataResultType): KameleoonDataType[];
|
|
16
16
|
static parseRegExp(value: string): RegExp;
|
|
@@ -18,6 +18,10 @@ export declare class Utilities {
|
|
|
18
18
|
static isCustomData(dataItem: KameleoonDataType): dataItem is CustomData;
|
|
19
19
|
static updateCache({ cacheManager, visitorCode, experimentId, variationId, }: ManageCacheParametersType): void;
|
|
20
20
|
static getTrackingCode(trackingCache: CacheManager<TrackingCacheItemType>, visitorCode: string): string;
|
|
21
|
-
static trackData({ visitorCode, campaignConfiguration, requester, }: TrackDataParametersType): void
|
|
21
|
+
static trackData({ visitorCode, campaignConfiguration, requester, isOfflineModeOn, offlineTrackingStorage, }: TrackDataParametersType): Promise<void>;
|
|
22
|
+
static trackExperiment({ variationId, experimentId, isUnallocated, visitorCode, campaignConfiguration, requester, isOfflineModeOn, offlineTrackingStorage, }: TrackExperimentParametersType): Promise<void>;
|
|
22
23
|
static getNonce(): string;
|
|
24
|
+
static sendOfflineTracking({ requester, storage, }: SendOfflineTrackingParametersType): void;
|
|
25
|
+
private static addItemToOfflineTracking;
|
|
26
|
+
private static deleteFromOfflineTracking;
|
|
23
27
|
}
|
|
@@ -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"),_targeting=require("../targeting"),_kameleoonData=require("../kameleoonData"),_constants=require("../constants"),_constants2=require("./constants");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 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 _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 _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 _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 _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 _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.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 h={},i=f.getAssignedVariations(c);i.ok&&(h=i.data);var j=new _targeting.TargetingTree(b),k=j.evaluate({variationData:h,sdkInfo:g,targetingData:d,experimentId:e,visitorCode:c});return k}},{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);return c.map(function(a){return a.url}).join("\n")}},{key:"trackRule",value:function trackRule(a){var b=a.featureFlagVariation,c=a.campaignConfiguration,d=a.visitorCode,e=a.requester,f=a.userAgent,g=b.variationId,h=b.rule,i=this.getDataUrl(d,c),j=h?h.experimentId:0;e.trackExperiment({visitorCode:d,isUnallocated:null===g,body:i,callback:function callback(){c.clearUnsentData(d)},experimentId:j,variationId:g||0,userAgent:f})}},{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 trackData(a){var b=a.visitorCode,c=a.campaignConfiguration,d=a.requester,e=this.getDataUrl(b,c),f=this.getUserAgent(b,c);d.trackData({visitorCode:b,body:e,userAgent:f,callback:function callback(){c.clearUnsentData(b)}})}},{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}}]),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"),_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,h=this.getDataUrl(c,d),i=this.getUserAgent(c,d),j={visitorCode:c,body:h,userAgent:i},b.next=6,e.trackData(j);case 6: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 10: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 sendOfflineTracking(a){var b=this,c=a.requester,d=a.storage,e=d.read();if(e.ok&&e.data.requestParameters){var f=e.data.requestParameters,g=[],h=f.map(/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var d,e,f,h;return _regeneratorRuntime().wrap(function i(b){for(;1;)switch(b.prev=b.next){case 0:if(d=a.timestamp,e=a.isExperiment,f=_objectWithoutProperties(a,_excluded),!e){b.next=7;break}return b.next=4,c.trackExperiment(f);case 4:h=b.sent,b.next=10;break;case 7:return b.next=9,c.trackData(f);case 9:h=b.sent;case 10:h.ok&&h.data&&g.push(d);case 11:case"end":return b.stop();}},b)}));return function(b){return a.apply(this,arguments)}}());Promise.allSettled(h).then(function(){return b.deleteFromOfflineTracking({storage:d,timestamps:g})})}}},{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;
|
|
2
2
|
//# sourceMappingURL=utilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","names":["Utilities","a","_classCallCheck","_createClass","key","value","checkTargeting","segment","visitorCode","targetingData","experimentId","variationConfiguration","packageInfo","conditionsData","firstLevel","length","Ok","Err","KameleoonError","KameleoonException","Initialization","variations","assignedVariationsResult","getAssignedVariations","ok","data","targetingTree","TargetingTree","result","evaluate","variationData","sdkInfo","validateVisitorCode","VisitorCodeEmpty","VISITOR_CODE_MAX_LENGTH","VisitorCodeMaxLength","getDataUrl","campaignConfiguration","unsentData","getUnsentData","map","item","url","join","trackRule","featureFlagVariation","requester","userAgent","variationId","rule","dataUrl","trackExperiment","isUnallocated","body","callback","clearUnsentData","parseFeatureVariable","variable","type","VariableType","BOOLEAN","STRING","NUMBER","numberValue","Number","isNaN","NumberParse","JSON","jsonValue","parse","err","JSONParse","exhaustCheck","parseVisitorData","visits","currentVisit","previousVisits","indexMap","Map","resultData","customDataEvents","_toConsumableArray","sort","b","time","h","i","_createForOfIteratorHelper","s","n","done","customDataEvent","customDataIndex","index","has","set","values","Object","keys","valuesCountMap","push","_construct","CustomData","concat","e","f","parseRegExp","split","c","_slicedToArray","_","expression","flags","RegExp","getUserAgent","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","forEach","trackData","getNonce","randomNumber","hexLength","HEX_CHARACTERS","nonce","Math","floor","random","substring","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 { TargetingTree } from 'src/targeting';\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 { GetVisitorDataResultType, VisitType } from 'src/requester';\nimport {\n CheckTargetingParamsType,\n ManageCacheParametersType,\n TrackDataParametersType,\n TrackRuleParamsType,\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 packageInfo,\n }: CheckTargetingParamsType): 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 = new TargetingTree(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\n return unsentData.map((item) => item.url).join('\\n');\n }\n\n static trackRule({\n featureFlagVariation,\n campaignConfiguration,\n visitorCode,\n requester,\n userAgent,\n }: TrackRuleParamsType): void {\n const { variationId, rule } = featureFlagVariation;\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 callback = () => {\n campaignConfiguration.clearUnsentData(visitorCode);\n };\n\n requester.trackExperiment({\n visitorCode,\n isUnallocated,\n body: dataUrl,\n callback,\n experimentId,\n variationId: resultVariationId,\n userAgent,\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 trackData({\n visitorCode,\n campaignConfiguration,\n requester,\n }: TrackDataParametersType): void {\n const dataUrl = this.getDataUrl(visitorCode, campaignConfiguration);\n\n const userAgent = this.getUserAgent(visitorCode, campaignConfiguration);\n\n const callback = () => {\n campaignConfiguration.clearUnsentData(visitorCode);\n };\n\n requester.trackData({ visitorCode, body: dataUrl, userAgent, callback });\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"],"mappings":"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"}
|
|
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","trackData","cleanup","onSuccess","getNonce","randomNumber","hexLength","HEX_CHARACTERS","nonce","Math","floor","random","substring","sendOfflineTracking","readResult","read","requestParameters","successfulTimestamps","requests","map","timestamp","params","_objectWithoutProperties","_excluded","allSettled","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 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 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 const requests = requestParameters.map(async (parameters) => {\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 Promise.allSettled(requests).then(() =>\n this.deleteFromOfflineTracking({\n storage,\n timestamps: successfulTimestamps,\n }),\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,6 +1,6 @@
|
|
|
1
|
-
import { FeatureFlagType, RuleItemType } from '
|
|
2
|
-
import { KameleoonVisitorDataType } from '
|
|
3
|
-
import { ExternalPackageInfoType } from '
|
|
1
|
+
import { CampaignConfiguration, FeatureFlagType, RuleItemType } from '../campaignConfiguration';
|
|
2
|
+
import { KameleoonVisitorDataType } from '../kameleoonData/types';
|
|
3
|
+
import { ExternalPackageInfoType } from '../types';
|
|
4
4
|
export type VariationType = {
|
|
5
5
|
variationId: number;
|
|
6
6
|
assignmentDate: string;
|
|
@@ -24,4 +24,5 @@ export type GetFeatureFlagVariationParametersType = {
|
|
|
24
24
|
targetingData: KameleoonVisitorDataType;
|
|
25
25
|
withAssignment?: boolean;
|
|
26
26
|
packageInfo: ExternalPackageInfoType;
|
|
27
|
+
campaignConfiguration: CampaignConfiguration;
|
|
27
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/variationConfiguration/types.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/variationConfiguration/types.ts"],"sourcesContent":["import {\n CampaignConfiguration,\n FeatureFlagType,\n RuleItemType,\n} from 'src/campaignConfiguration';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { ExternalPackageInfoType } from 'src/types';\n\nexport type VariationType = {\n variationId: number;\n assignmentDate: string;\n};\n\nexport type UpdateStorageParamsType = {\n visitorCode: string;\n experimentId: string;\n variationId: number;\n};\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 GetFeatureFlagVariationParametersType = {\n visitorCode: string;\n featureFlag: FeatureFlagType;\n targetingData: KameleoonVisitorDataType;\n withAssignment?: boolean;\n packageInfo: ExternalPackageInfoType;\n campaignConfiguration: CampaignConfiguration;\n};\n"],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
|
-
import { ExperimentItemType } from '
|
|
3
|
-
import { KameleoonError } from '
|
|
4
|
-
import { IStorage, VariationDataType, ExperimentVariationsType } from '
|
|
2
|
+
import { ExperimentItemType } from '../campaignConfiguration';
|
|
3
|
+
import { KameleoonError } from '../kameleoonError';
|
|
4
|
+
import { IStorage, VariationDataType, ExperimentVariationsType } from '../storage';
|
|
5
5
|
import { FeatureFlagVariationType, GetFeatureFlagVariationParametersType } from './types';
|
|
6
6
|
interface IVariationConfiguration {
|
|
7
7
|
/**
|
|
@@ -27,7 +27,7 @@ export declare class VariationConfiguration implements IVariationConfiguration {
|
|
|
27
27
|
constructor(experiments: ExperimentItemType[], externalStorage: IStorage<VariationDataType>);
|
|
28
28
|
getAssociatedVariationId: (visitorCode: string, experimentId: number) => Result<number, KameleoonError>;
|
|
29
29
|
getAssignedVariations(visitorCode: string): Result<ExperimentVariationsType, KameleoonError>;
|
|
30
|
-
getFeatureFlagVariation({ visitorCode, featureFlag, targetingData, packageInfo, withAssignment, }: GetFeatureFlagVariationParametersType): Result<FeatureFlagVariationType, KameleoonError>;
|
|
30
|
+
getFeatureFlagVariation({ visitorCode, featureFlag, targetingData, packageInfo, campaignConfiguration, withAssignment, }: GetFeatureFlagVariationParametersType): Result<FeatureFlagVariationType, KameleoonError>;
|
|
31
31
|
getExperimentVariation(visitorCode: string, experiment: ExperimentItemType): Result<number, KameleoonError>;
|
|
32
32
|
private assignVariation;
|
|
33
33
|
private updateStorageData;
|
|
@@ -12,12 +12,12 @@ var c=d.experiments.find(function(a){return a.id===b+""});return c?d.assignVaria
|
|
|
12
12
|
// if (variation.isValid(experiment?.respoolTime)) {
|
|
13
13
|
// return Ok(variation.id);
|
|
14
14
|
// }
|
|
15
|
-
}),this.experiments=b,this.storage=c}return _createClass(a,[{key:"getAssignedVariations",value:function getAssignedVariations(a){var b=this.storage.read();if(!b.ok)return b;var c=b.data[a];return c?(0,_tsRes.Ok)(c):(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.StorageRead,a))}},{key:"getFeatureFlagVariation",value:function getFeatureFlagVariation(a){var b=a.visitorCode,c=a.featureFlag,d=a.targetingData,e=a.packageInfo,f=a.
|
|
15
|
+
}),this.experiments=b,this.storage=c}return _createClass(a,[{key:"getAssignedVariations",value:function getAssignedVariations(a){var b=this.storage.read();if(!b.ok)return b;var c=b.data[a];return c?(0,_tsRes.Ok)(c):(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.StorageRead,a))}},{key:"getFeatureFlagVariation",value:function getFeatureFlagVariation(a){var b=a.visitorCode,c=a.featureFlag,d=a.targetingData,e=a.packageInfo,f=a.campaignConfiguration,g=a.withAssignment,h=_utilities.Utilities.validateVisitorCode(b);if(!h.ok)return(0,_tsRes.Err)(h.error);var i,j=c.rules,k=c.featureKey,l=c.id,m=c.defaultVariationKey,n=_createForOfIteratorHelper(j);try{for(n.s();!(i=n.n()).done;){var o=i.value,p=o.segment,q=o.experimentId,r=o.id,s=o.exposition,t=o.respoolTime,u=o.variationByExposition,v=_utilities.Utilities.checkTargeting({segment:p,visitorCode:b,experimentId:q,targetingData:d,packageInfo:e,campaignConfiguration:f,variationConfiguration:this});if(!v.ok)return v;if(v.data){// --- Note ---
|
|
16
16
|
// Calculate new variation (and assign it if `withAssignment` is `true`)
|
|
17
17
|
// First the the exposed rule is calculated and then the variation inside of it
|
|
18
|
-
var
|
|
18
|
+
var w=_hasher.Hasher.obtainFeatureFlagHashDouble({visitorCode:b,respoolTime:t,campaignId:r+""});if(w<=s){var x,y=0,z=_hasher.Hasher.obtainFeatureFlagHashDouble({visitorCode:b,respoolTime:t,campaignId:q+""}),A=_createForOfIteratorHelper(u);try{for(A.s();!(x=A.n()).done;){var B=x.value;if(y+=B.exposition,z<=y){o.type===_types.RuleType.EXPERIMENTATION&&void 0!==g&&g&&this.updateStorageData({visitorCode:b,experimentId:q+"",// --- Note ---
|
|
19
19
|
// For `RuleType.EXPERIMENTATION` `variationId` can not be null
|
|
20
|
-
variationId:
|
|
20
|
+
variationId:B.variationId});var C=B.exposition,D=_objectWithoutProperties(B,_excluded);return(0,_tsRes.Ok)(_objectSpread(_objectSpread({},D),{},{rule:o,featureFlagId:l,featureKey:k,experimentId:q}))}}}catch(a){A.e(a)}finally{A.f()}}if(o.type===_types.RuleType.TARGETED_DELIVERY)break}}}catch(a){n.e(a)}finally{n.f()}return(0,_tsRes.Ok)({featureKey:k,featureFlagId:l,experimentId:null,variationKey:m,variationId:null,rule:null})}},{key:"getExperimentVariation",value:function getExperimentVariation(a,b){var c,d=b.id,e=b.respoolTime,f=b.deviations,g=_hasher.Hasher.obtainExperimentHashDouble({visitorCode:a,campaignId:d,respoolTime:e}),h=!0,i=0,j=0,k=_createForOfIteratorHelper(f);try{for(k.s();!(c=k.n()).done;){var l=c.value;if(i+=l.value,i>=g){h=!1,"origin"!==l.variationId&&(j=+l.variationId);break}}}catch(a){k.e(a)}finally{k.f()}return h?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NotAllocated,a)):(0,_tsRes.Ok)(j)}},{key:"assignVariation",value:function assignVariation(a,b){var c=this.getExperimentVariation(a,b);if(!c.ok)return c;var d=this.updateStorageData({visitorCode:a,experimentId:b.id,variationId:c.data});return d.ok?(0,_tsRes.Ok)(c.data):d}},{key:"updateStorageData",value:function updateStorageData(a){var b=a.visitorCode,c=a.experimentId,d=a.variationId,e=this.storage.read();if(!e.ok&&e.error.type===_kameleoonError.KameleoonException.StorageParse)// --- Note ---
|
|
21
21
|
// If there is a parsing error we return error
|
|
22
22
|
// But if there is `LocalStorageRead` error it means that
|
|
23
23
|
// data was read successfully and it's empty, which is not problem
|