@kameleoon/javascript-sdk-core 2.4.5 → 2.5.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 +3 -65
- package/dist/cacheManager/cacheManager.js.map +1 -1
- package/dist/cacheManager/index.js +1 -19
- package/dist/cacheManager/index.js.map +1 -1
- package/dist/cacheManager/types.js +1 -5
- package/dist/campaignConfiguration/campaignConfiguration.d.ts +7 -5
- package/dist/campaignConfiguration/campaignConfiguration.js +9 -283
- package/dist/campaignConfiguration/campaignConfiguration.js.map +1 -1
- package/dist/campaignConfiguration/constants.d.ts +2 -10
- package/dist/campaignConfiguration/constants.js +2 -21
- package/dist/campaignConfiguration/constants.js.map +1 -1
- package/dist/campaignConfiguration/index.js +1 -86
- package/dist/campaignConfiguration/index.js.map +1 -1
- package/dist/campaignConfiguration/types.d.ts +7 -6
- package/dist/campaignConfiguration/types.js +1 -54
- package/dist/campaignConfiguration/types.js.map +1 -1
- package/dist/clientSettings/clientSettings.d.ts +1 -1
- package/dist/clientSettings/clientSettings.js +1 -35
- package/dist/clientSettings/clientSettings.js.map +1 -1
- package/dist/clientSettings/index.js +1 -19
- package/dist/clientSettings/index.js.map +1 -1
- package/dist/clientSettings/types.d.ts +1 -1
- package/dist/clientSettings/types.js +1 -5
- package/dist/clientSettings/types.js.map +1 -1
- package/dist/constants.d.ts +13 -4
- package/dist/constants.js +2 -36
- package/dist/constants.js.map +1 -1
- package/dist/eventSource/constants.js +1 -8
- package/dist/eventSource/constants.js.map +1 -1
- package/dist/eventSource/externalEventSource.js +1 -33
- package/dist/eventSource/externalEventSource.js.map +1 -1
- package/dist/eventSource/index.js +1 -50
- package/dist/eventSource/index.js.map +1 -1
- package/dist/eventSource/types.js +1 -5
- package/dist/hasher/hasher.js +6 -44
- package/dist/hasher/hasher.js.map +1 -1
- package/dist/hasher/index.js +1 -12
- package/dist/hasher/index.js.map +1 -1
- package/dist/hasher/types.d.ts +1 -1
- package/dist/hasher/types.js +1 -5
- package/dist/hasher/types.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -310
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.d.ts +16 -4
- package/dist/kameleoonClient.js +10 -384
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/kameleoonData/browser.d.ts +8 -3
- package/dist/kameleoonData/browser.js +9 -40
- package/dist/kameleoonData/browser.js.map +1 -1
- package/dist/kameleoonData/conversion.d.ts +2 -2
- package/dist/kameleoonData/conversion.js +5 -50
- package/dist/kameleoonData/conversion.js.map +1 -1
- package/dist/kameleoonData/customData.d.ts +2 -2
- package/dist/kameleoonData/customData.js +5 -55
- package/dist/kameleoonData/customData.js.map +1 -1
- package/dist/kameleoonData/device.d.ts +2 -2
- package/dist/kameleoonData/device.js +5 -40
- package/dist/kameleoonData/device.js.map +1 -1
- package/dist/kameleoonData/index.d.ts +1 -1
- package/dist/kameleoonData/index.js +1 -102
- package/dist/kameleoonData/index.js.map +1 -1
- package/dist/kameleoonData/pageView.d.ts +2 -2
- package/dist/kameleoonData/pageView.js +5 -56
- package/dist/kameleoonData/pageView.js.map +1 -1
- package/dist/kameleoonData/types.d.ts +44 -27
- package/dist/kameleoonData/types.js +6 -42
- package/dist/kameleoonData/types.js.map +1 -1
- package/dist/kameleoonData/userAgent.d.ts +2 -2
- package/dist/kameleoonData/userAgent.js +4 -37
- package/dist/kameleoonData/userAgent.js.map +1 -1
- package/dist/kameleoonError/constants.d.ts +4 -2
- package/dist/kameleoonError/constants.js +1 -31
- package/dist/kameleoonError/constants.js.map +1 -1
- package/dist/kameleoonError/helpers.js +1 -9
- package/dist/kameleoonError/helpers.js.map +1 -1
- package/dist/kameleoonError/index.js +1 -26
- package/dist/kameleoonError/index.js.map +1 -1
- package/dist/kameleoonError/kameleoonError.d.ts +3 -3
- package/dist/kameleoonError/kameleoonError.js +2 -75
- package/dist/kameleoonError/kameleoonError.js.map +1 -1
- package/dist/kameleoonError/types.d.ts +2 -0
- package/dist/kameleoonError/types.js +1 -31
- package/dist/kameleoonError/types.js.map +1 -1
- package/dist/kameleoonUtils.js +2 -44
- package/dist/kameleoonUtils.js.map +1 -1
- package/dist/requester/constants.js +4 -73
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.js +1 -80
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +4 -5
- package/dist/requester/requester.js +1 -106
- package/dist/requester/requester.js.map +1 -1
- package/dist/requester/types.d.ts +8 -7
- package/dist/requester/types.js +1 -16
- package/dist/requester/types.js.map +1 -1
- package/dist/storage/constants.js +2 -15
- package/dist/storage/constants.js.map +1 -1
- package/dist/storage/externalStorage.d.ts +1 -1
- package/dist/storage/externalStorage.js +1 -40
- package/dist/storage/externalStorage.js.map +1 -1
- package/dist/storage/index.js +1 -56
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/types.d.ts +4 -4
- package/dist/storage/types.js +1 -5
- package/dist/storage/types.js.map +1 -1
- package/dist/targeting/conditions/browserCondition.d.ts +13 -0
- package/dist/targeting/conditions/browserCondition.js +2 -0
- package/dist/targeting/conditions/browserCondition.js.map +1 -0
- package/dist/targeting/conditions/conditionFactory.d.ts +1 -1
- package/dist/targeting/conditions/conditionFactory.js +1 -30
- package/dist/targeting/conditions/conditionFactory.js.map +1 -1
- package/dist/targeting/conditions/conversionCondition.d.ts +10 -0
- package/dist/targeting/conditions/conversionCondition.js +4 -0
- package/dist/targeting/conditions/conversionCondition.js.map +1 -0
- package/dist/targeting/conditions/customDataCondition.d.ts +5 -7
- package/dist/targeting/conditions/customDataCondition.js +7 -109
- package/dist/targeting/conditions/customDataCondition.js.map +1 -1
- package/dist/targeting/conditions/deviceCondition.d.ts +9 -0
- package/dist/targeting/conditions/deviceCondition.js +2 -0
- package/dist/targeting/conditions/deviceCondition.js.map +1 -0
- package/dist/targeting/conditions/exclusiveExperimentCondition.d.ts +3 -5
- package/dist/targeting/conditions/exclusiveExperimentCondition.js +1 -32
- package/dist/targeting/conditions/exclusiveExperimentCondition.js.map +1 -1
- package/dist/targeting/conditions/index.d.ts +7 -0
- package/dist/targeting/conditions/index.js +1 -46
- package/dist/targeting/conditions/index.js.map +1 -1
- package/dist/targeting/conditions/pageTitleCondition.d.ts +11 -0
- package/dist/targeting/conditions/pageTitleCondition.js +2 -0
- package/dist/targeting/conditions/pageTitleCondition.js.map +1 -0
- package/dist/targeting/conditions/pageUrlCondition.d.ts +11 -0
- package/dist/targeting/conditions/pageUrlCondition.js +2 -0
- package/dist/targeting/conditions/pageUrlCondition.js.map +1 -0
- package/dist/targeting/conditions/sdkLanguageCondition.d.ts +15 -0
- package/dist/targeting/conditions/sdkLanguageCondition.js +2 -0
- package/dist/targeting/conditions/sdkLanguageCondition.js.map +1 -0
- package/dist/targeting/conditions/targetExperimentCondition.d.ts +3 -4
- package/dist/targeting/conditions/targetExperimentCondition.js +1 -63
- package/dist/targeting/conditions/targetExperimentCondition.js.map +1 -1
- package/dist/targeting/conditions/types.d.ts +25 -6
- package/dist/targeting/conditions/types.js +1 -5
- package/dist/targeting/conditions/types.js.map +1 -1
- package/dist/targeting/conditions/visitorCodeCondition.d.ts +11 -0
- package/dist/targeting/conditions/visitorCodeCondition.js +2 -0
- package/dist/targeting/conditions/visitorCodeCondition.js.map +1 -0
- package/dist/targeting/index.d.ts +2 -2
- package/dist/targeting/index.js +1 -80
- package/dist/targeting/index.js.map +1 -1
- package/dist/targeting/targetingNode.d.ts +3 -1
- package/dist/targeting/targetingNode.js +1 -47
- package/dist/targeting/targetingNode.js.map +1 -1
- package/dist/targeting/targetingTree.d.ts +3 -1
- package/dist/targeting/targetingTree.js +34 -135
- package/dist/targeting/targetingTree.js.map +1 -1
- package/dist/targeting/types.d.ts +24 -9
- package/dist/targeting/types.js +1 -100
- package/dist/targeting/types.js.map +1 -1
- package/dist/types.d.ts +9 -4
- package/dist/types.js +12 -41
- package/dist/types.js.map +1 -1
- package/dist/utilities/constants.d.ts +1 -0
- package/dist/utilities/constants.js +1 -8
- package/dist/utilities/constants.js.map +1 -1
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.js +1 -12
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/types.d.ts +14 -7
- package/dist/utilities/types.js +1 -5
- package/dist/utilities/types.js.map +1 -1
- package/dist/utilities/utilities.d.ts +12 -8
- package/dist/utilities/utilities.js +1 -216
- package/dist/utilities/utilities.js.map +1 -1
- package/dist/variationConfiguration/index.js +1 -25
- package/dist/variationConfiguration/index.js.map +1 -1
- package/dist/variationConfiguration/types.d.ts +5 -3
- package/dist/variationConfiguration/types.js +1 -5
- package/dist/variationConfiguration/types.js.map +1 -1
- package/dist/variationConfiguration/variation.d.ts +1 -1
- package/dist/variationConfiguration/variation.js +6 -44
- package/dist/variationConfiguration/variation.js.map +1 -1
- package/dist/variationConfiguration/variationConfiguration.d.ts +4 -4
- package/dist/variationConfiguration/variationConfiguration.js +65 -290
- package/dist/variationConfiguration/variationConfiguration.js.map +1 -1
- package/package.json +1 -1
- package/dist/kameleoonData/constants.d.ts +0 -1
- package/dist/kameleoonData/constants.js +0 -9
- package/dist/kameleoonData/constants.js.map +0 -1
- package/dist/kameleoonData/nonce.d.ts +0 -5
- package/dist/kameleoonData/nonce.js +0 -32
- package/dist/kameleoonData/nonce.js.map +0 -1
|
@@ -1,48 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.TargetingNode = void 0;
|
|
7
|
-
var _conditions = require("./conditions");
|
|
8
|
-
var _types = require("./types");
|
|
9
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
11
|
-
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
12
|
-
class TargetingNode {
|
|
13
|
-
constructor(value, left, right) {
|
|
14
|
-
_defineProperty(this, "nodeValue", void 0);
|
|
15
|
-
_defineProperty(this, "nodeError", void 0);
|
|
16
|
-
_defineProperty(this, "leftChild", void 0);
|
|
17
|
-
_defineProperty(this, "rightChild", void 0);
|
|
18
|
-
if (this.isOperator(value)) {
|
|
19
|
-
this.nodeValue = value;
|
|
20
|
-
} else {
|
|
21
|
-
const result = _conditions.ConditionFactory.createCondition(value);
|
|
22
|
-
if (result.ok) {
|
|
23
|
-
this.nodeValue = result.data;
|
|
24
|
-
} else {
|
|
25
|
-
this.nodeError = result.error;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
this.leftChild = left;
|
|
29
|
-
this.rightChild = right;
|
|
30
|
-
}
|
|
31
|
-
get value() {
|
|
32
|
-
return this.nodeValue;
|
|
33
|
-
}
|
|
34
|
-
get error() {
|
|
35
|
-
return this.nodeError;
|
|
36
|
-
}
|
|
37
|
-
get left() {
|
|
38
|
-
return this.leftChild;
|
|
39
|
-
}
|
|
40
|
-
get right() {
|
|
41
|
-
return this.rightChild;
|
|
42
|
-
}
|
|
43
|
-
isOperator(value) {
|
|
44
|
-
return value === _types.Operator.And || value === _types.Operator.Or;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.TargetingNode = TargetingNode;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetingNode=void 0;var _conditions=require("./conditions"),_types=require("./types");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 _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 _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||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 TargetingNode=/*#__PURE__*/function(){function a(b,c,d){if(_classCallCheck(this,a),_defineProperty(this,"nodeValue",void 0),_defineProperty(this,"nodeError",void 0),_defineProperty(this,"leftChild",void 0),_defineProperty(this,"rightChild",void 0),_defineProperty(this,"inverseResult",!1),this.isOperator(b))this.nodeValue=b;else{var e,f=_conditions.ConditionFactory.createCondition(b);this.inverseResult=null!==(e=b.isInclude)&&void 0!==e&&!e,f.ok?this.nodeValue=f.data:this.nodeError=f.error}this.leftChild=c,this.rightChild=d}return _createClass(a,[{key:"value",get:function get(){return this.nodeValue}},{key:"error",get:function get(){return this.nodeError}},{key:"left",get:function get(){return this.leftChild}},{key:"right",get:function get(){return this.rightChild}},{key:"inverse",get:function get(){return this.inverseResult}},{key:"isOperator",value:function isOperator(a){return a===_types.Operator.And||a===_types.Operator.Or}}]),a}();exports.TargetingNode=TargetingNode;
|
|
48
2
|
//# sourceMappingURL=targetingNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targetingNode.js","names":["
|
|
1
|
+
{"version":3,"file":"targetingNode.js","names":["TargetingNode","a","value","left","right","_classCallCheck","_defineProperty","isOperator","nodeValue","e","result","ConditionFactory","createCondition","inverseResult","isInclude","ok","data","nodeError","error","leftChild","rightChild","_createClass","key","get","Operator","And","Or","exports"],"sources":["../../src/targeting/targetingNode.ts"],"sourcesContent":["import { KameleoonError } from 'src/kameleoonError';\nimport { ConditionFactory, ConditionDataType } from './conditions';\nimport { NodeValueType, Operator } from './types';\n\nexport interface ITargetingNode {\n readonly value?: NodeValueType;\n readonly left?: ITargetingNode;\n readonly right?: ITargetingNode;\n readonly error?: KameleoonError;\n}\n\nexport class TargetingNode implements ITargetingNode {\n private nodeValue?: NodeValueType;\n private nodeError?: KameleoonError;\n private leftChild?: ITargetingNode;\n private rightChild?: ITargetingNode;\n private inverseResult: boolean = false;\n\n constructor(\n value: ConditionDataType | Operator,\n left?: ITargetingNode,\n right?: ITargetingNode,\n ) {\n if (this.isOperator(value)) {\n this.nodeValue = value;\n } else {\n const result = ConditionFactory.createCondition(value);\n this.inverseResult = !(value.isInclude ?? true);\n\n if (result.ok) {\n this.nodeValue = result.data;\n } else {\n this.nodeError = result.error;\n }\n }\n\n this.leftChild = left;\n this.rightChild = right;\n }\n\n get value(): NodeValueType | undefined {\n return this.nodeValue;\n }\n\n get error(): KameleoonError | undefined {\n return this.nodeError;\n }\n\n get left(): ITargetingNode | undefined {\n return this.leftChild;\n }\n\n get right(): ITargetingNode | undefined {\n return this.rightChild;\n }\n\n get inverse(): boolean {\n return this.inverseResult;\n }\n\n private isOperator(value: ConditionDataType | Operator): value is Operator {\n return value === Operator.And || value === Operator.Or;\n }\n}\n"],"mappings":"+4CAWa,CAAAA,aAAa,yBAOxB,SAAAC,EACEC,CAAmC,CACnCC,CAAqB,CACrBC,CAAsB,CACtB,CACA,GAAAC,eAAA,MAAAJ,CAAA,EAAAK,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,0BAAAA,eAAA,2BAAAA,eAAA,0BAAI,IAAI,CAACC,UAAU,CAACL,CAAK,CAAC,CACxB,IAAI,CAACM,SAAS,CAAGN,CAAK,KACjB,KAAAO,CAAA,CACCC,CAAM,CAAGC,4BAAgB,CAACC,eAAe,CAACV,CAAK,CAAC,CACtD,IAAI,CAACW,aAAa,SAAAJ,CAAA,CAAKP,CAAK,CAACY,SAAS,YAAAL,CAAA,GAAAA,CAAS,CAE3CC,CAAM,CAACK,EAAE,CACX,IAAI,CAACP,SAAS,CAAGE,CAAM,CAACM,IAAI,CAE5B,IAAI,CAACC,SAAS,CAAGP,CAAM,CAACQ,KAE5B,CAEA,IAAI,CAACC,SAAS,CAAGhB,CAAI,CACrB,IAAI,CAACiB,UAAU,CAAGhB,CACpB,CAAC,OAAAiB,YAAA,CAAApB,CAAA,GAAAqB,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAAuC,CACrC,MAAO,KAAI,CAACf,SACd,CAAC,GAAAc,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAAwC,CACtC,MAAO,KAAI,CAACN,SACd,CAAC,GAAAK,GAAA,QAAAC,GAAA,CAED,SAAAA,IAAA,CAAuC,CACrC,MAAO,KAAI,CAACJ,SACd,CAAC,GAAAG,GAAA,SAAAC,GAAA,CAED,SAAAA,IAAA,CAAwC,CACtC,MAAO,KAAI,CAACH,UACd,CAAC,GAAAE,GAAA,WAAAC,GAAA,CAED,SAAAA,IAAA,CAAuB,CACrB,MAAO,KAAI,CAACV,aACd,CAAC,GAAAS,GAAA,cAAApB,KAAA,CAED,SAAAK,WAAmBL,CAAmC,CAAqB,CACzE,MAAO,CAAAA,CAAK,GAAKsB,eAAQ,CAACC,GAAG,EAAIvB,CAAK,GAAKsB,eAAQ,CAACE,EACtD,CAAC,IAAAzB,CAAA,IAAA0B,OAAA,CAAA3B,aAAA,CAAAA,aAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Result } from 'ts-res';
|
|
2
|
-
import { KameleoonError } from '
|
|
2
|
+
import { KameleoonError } from 'src/kameleoonError';
|
|
3
3
|
import { EvaluationDataType, SegmentType } from './types';
|
|
4
4
|
interface ITargetingTree {
|
|
5
5
|
evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;
|
|
@@ -12,6 +12,8 @@ export declare class TargetingTree implements ITargetingTree {
|
|
|
12
12
|
private evaluateNode;
|
|
13
13
|
private isLeafNode;
|
|
14
14
|
private isNonLeafNode;
|
|
15
|
+
private buildTree;
|
|
15
16
|
private flattenSegment;
|
|
17
|
+
private convertOperators;
|
|
16
18
|
}
|
|
17
19
|
export {};
|
|
@@ -1,136 +1,35 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
// {type: Condition.Less, value: 30},
|
|
36
|
-
// ]`
|
|
37
|
-
//
|
|
38
|
-
// After the first iteration we have node like this:
|
|
39
|
-
// AND
|
|
40
|
-
// / \
|
|
41
|
-
// <30 >20
|
|
42
|
-
//
|
|
43
|
-
// After the second iteration tree looks as follows:
|
|
44
|
-
// OR
|
|
45
|
-
// / \
|
|
46
|
-
// AND <10
|
|
47
|
-
// / \
|
|
48
|
-
// <30 >20
|
|
49
|
-
// As you can see Leaf Nodes contain conditions and Non-Leaf Nodes contain logical operators
|
|
50
|
-
for (const operator of operators) {
|
|
51
|
-
const left = nodes.shift();
|
|
52
|
-
const right = nodes.shift();
|
|
53
|
-
nodes.unshift(new _targetingNode.TargetingNode(operator, left, right));
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// --- Note ---
|
|
57
|
-
// It's guaranteed that only one root node will remain after iterations
|
|
58
|
-
// (as soon as the backend `operators-conditions` relation doesn't change)
|
|
59
|
-
this.tree = nodes[0];
|
|
60
|
-
}
|
|
61
|
-
evaluate(data) {
|
|
62
|
-
const result = this.evaluateNode(this.tree, data);
|
|
63
|
-
if (this.error) {
|
|
64
|
-
return (0, _tsRes.Err)(this.error);
|
|
65
|
-
}
|
|
66
|
-
return (0, _tsRes.Ok)(result);
|
|
67
|
-
}
|
|
68
|
-
evaluateNode(node, data) {
|
|
69
|
-
if (this.isLeafNode(node)) {
|
|
70
|
-
if (node.error) {
|
|
71
|
-
// --- Note ---
|
|
72
|
-
// Non-existing condition should not break targeting tree
|
|
73
|
-
// instead it should be treated as `false` condition
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
const result = node.value.evaluate(data);
|
|
77
|
-
if (!result.ok) {
|
|
78
|
-
this.error = result.error;
|
|
79
|
-
return false;
|
|
80
|
-
}
|
|
81
|
-
return result.data;
|
|
82
|
-
}
|
|
83
|
-
if (this.isNonLeafNode(node)) {
|
|
84
|
-
switch (node.value) {
|
|
85
|
-
case _types.Operator.And:
|
|
86
|
-
{
|
|
87
|
-
return this.evaluateNode(node.left, data) && this.evaluateNode(node.right, data);
|
|
88
|
-
}
|
|
89
|
-
case _types.Operator.Or:
|
|
90
|
-
{
|
|
91
|
-
return this.evaluateNode(node.left, data) || this.evaluateNode(node.right, data);
|
|
92
|
-
}
|
|
93
|
-
default:
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
isLeafNode(node) {
|
|
100
|
-
return !Boolean(node.left && node.right);
|
|
101
|
-
}
|
|
102
|
-
isNonLeafNode(node) {
|
|
103
|
-
return Boolean(node.left && node.right && (node.value === _types.Operator.Or || node.value === _types.Operator.And));
|
|
104
|
-
}
|
|
105
|
-
flattenSegment(segment) {
|
|
106
|
-
const {
|
|
107
|
-
firstLevel: conditions,
|
|
108
|
-
firstLevelOrOperators: operators
|
|
109
|
-
} = segment.conditionsData;
|
|
110
|
-
const resultOperators = [...operators];
|
|
111
|
-
const resultConditions = [];
|
|
112
|
-
conditions.forEach(condition => {
|
|
113
|
-
const {
|
|
114
|
-
conditions: conditionList,
|
|
115
|
-
orOperators
|
|
116
|
-
} = condition;
|
|
117
|
-
|
|
118
|
-
// --- Note ---
|
|
119
|
-
// if `condition` has nested conditions and operators in it, they go to the
|
|
120
|
-
// beginning of list, otherwise we just add it to the end
|
|
121
|
-
if (orOperators.length) {
|
|
122
|
-
orOperators.forEach(item => resultOperators.unshift(item));
|
|
123
|
-
conditionList.forEach(item => resultConditions.unshift(item));
|
|
124
|
-
} else {
|
|
125
|
-
conditionList.forEach(item => resultConditions.push(item));
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
const convertedOperators = resultOperators.map(operator => operator ? _types.Operator.Or : _types.Operator.And);
|
|
129
|
-
return {
|
|
130
|
-
conditions: resultConditions,
|
|
131
|
-
operators: convertedOperators
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
exports.TargetingTree = TargetingTree;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TargetingTree=void 0;var _tsRes=require("ts-res"),_targetingNode=require("./targetingNode"),_types=require("./types");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 _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 _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||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 TargetingTree=/*#__PURE__*/function(){function a(b){var c=this;_classCallCheck(this,a),_defineProperty(this,"tree",void 0),_defineProperty(this,"error",null);var d=this.flattenSegment(b),e=d.nestedConditions,f=d.topLevelOperators,g=e.map(function(a){var b=a.conditions,d=a.operators,e=b.map(function(a){return new _targetingNode.TargetingNode(a)});return c.buildTree(e,d)});// --- Note ---
|
|
2
|
+
// - Targeting tree is built bottom-up, it's the only way to both get the consistent logic
|
|
3
|
+
// (grouping nested conditions) and have human readable tree representation.
|
|
4
|
+
// - Here is an example of how tree is built (we use strict complete binary tree)
|
|
5
|
+
// Let's say we have such a condition `value < 10 || value > 20 && value < 30`
|
|
6
|
+
// Following is pseudo code for building tree:
|
|
7
|
+
//
|
|
8
|
+
// `const operators = [Operator.Or, Operator.And]`
|
|
9
|
+
// `const conditions = [
|
|
10
|
+
// {type: Condition.Less, value: 10},
|
|
11
|
+
// {type: Condition.Greater, value: 20},
|
|
12
|
+
// {type: Condition.Less, value: 30},
|
|
13
|
+
// ]`
|
|
14
|
+
//
|
|
15
|
+
// After the first iteration we have node like this:
|
|
16
|
+
// AND
|
|
17
|
+
// / \
|
|
18
|
+
// <30 >20
|
|
19
|
+
//
|
|
20
|
+
// After the second iteration tree looks as follows:
|
|
21
|
+
// OR
|
|
22
|
+
// / \
|
|
23
|
+
// AND <10
|
|
24
|
+
// / \
|
|
25
|
+
// <30 >20
|
|
26
|
+
//
|
|
27
|
+
// As you can see Leaf Nodes contain conditions and Non-Leaf Nodes contain logical operators
|
|
28
|
+
this.tree=this.buildTree(g,f)}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=this.evaluateNode(this.tree,a);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(b)}},{key:"evaluateNode",value:function evaluateNode(a,b){if(this.isLeafNode(a)){if(a.error)// --- Note ---
|
|
29
|
+
// Non-existing condition should not break targeting tree
|
|
30
|
+
// instead it should be treated as `false` condition
|
|
31
|
+
return!1;var c=a.value.evaluate(b);return c.ok?a.inverse?!c.data:c.data:(this.error=c.error,!1)}if(this.isNonLeafNode(a))switch(a.value){case _types.Operator.And:return this.evaluateNode(a.left,b)&&this.evaluateNode(a.right,b);case _types.Operator.Or:return this.evaluateNode(a.left,b)||this.evaluateNode(a.right,b);default:}return!1}},{key:"isLeafNode",value:function isLeafNode(a){return!!!(a.left&&a.right)}},{key:"isNonLeafNode",value:function isNonLeafNode(a){return!!(a.left&&a.right&&(a.value===_types.Operator.Or||a.value===_types.Operator.And))}// --- Note ---
|
|
32
|
+
// This method mutates `nodes` array
|
|
33
|
+
// It's done for the sake of performance
|
|
34
|
+
},{key:"buildTree",value:function buildTree(a,b){if(1===a.length)return a[0];var c,d=_createForOfIteratorHelper(b);try{for(d.s();!(c=d.n()).done;){var e=c.value,f=a.shift(),g=a.shift(),h=new _targetingNode.TargetingNode(e,f,g);a.unshift(h)}}catch(a){d.e(a)}finally{d.f()}return a[0]}},{key:"flattenSegment",value:function flattenSegment(a){var b=this,c=a.conditionsData,d=c.firstLevel,e=c.firstLevelOrOperators,f=[];return d.forEach(function(a){var c=a.conditions,d=a.orOperators,e={operators:b.convertOperators(d),conditions:c};f.push(e)}),{topLevelOperators:this.convertOperators(e),nestedConditions:f}}},{key:"convertOperators",value:function convertOperators(a){return a.map(function(a){return a?_types.Operator.Or:_types.Operator.And})}}]),a}();exports.TargetingTree=TargetingTree;
|
|
136
35
|
//# sourceMappingURL=targetingTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targetingTree.js","names":["
|
|
1
|
+
{"version":3,"file":"targetingTree.js","names":["TargetingTree","a","segment","c","_classCallCheck","_defineProperty","d","flattenSegment","nestedConditions","topLevelOperators","nestedNodes","map","conditions","operators","nodes","condition","TargetingNode","buildTree","tree","_createClass","key","value","evaluate","data","result","evaluateNode","error","Err","Ok","node","isLeafNode","ok","inverse","isNonLeafNode","Operator","And","left","right","Or","length","_createForOfIteratorHelper","s","n","done","operator","shift","newNode","unshift","e","f","b","conditionsData","firstLevel","firstLevelOrOperators","forEach","conditionList","orOperators","group","convertOperators","push","exports"],"sources":["../../src/targeting/targetingTree.ts"],"sourcesContent":["import { Result, Ok, Err } from 'ts-res';\nimport { KameleoonError } from 'src/kameleoonError';\nimport { ITargetingNode, TargetingNode } from './targetingNode';\nimport {\n EvaluationDataType,\n GroupedSegmentsType,\n LeafNodeType,\n NestedConditionGroupType,\n NonLeafNodeType,\n Operator,\n SegmentType,\n} from './types';\n\ninterface ITargetingTree {\n evaluate: (data: EvaluationDataType) => Result<boolean, KameleoonError>;\n}\n\nexport class TargetingTree implements ITargetingTree {\n private tree: TargetingNode;\n private error: KameleoonError | null = null;\n\n constructor(segment: SegmentType) {\n const { nestedConditions, topLevelOperators } =\n this.flattenSegment(segment);\n\n // --- Note ---\n // - Targeting tree is built bottom-up, it's the only way to both get the consistent logic\n // (grouping nested conditions) and have human readable tree representation.\n // - Here is an example of how tree is built (we use strict complete binary tree)\n // Let's say we have such a condition `value < 10 || value > 20 && value < 30`\n // Following is pseudo code for building tree:\n //\n // `const operators = [Operator.Or, Operator.And]`\n // `const conditions = [\n // {type: Condition.Less, value: 10},\n // {type: Condition.Greater, value: 20},\n // {type: Condition.Less, value: 30},\n // ]`\n //\n // After the first iteration we have node like this:\n // AND\n // / \\\n // <30 >20\n //\n // After the second iteration tree looks as follows:\n // OR\n // / \\\n // AND <10\n // / \\\n // <30 >20\n //\n // As you can see Leaf Nodes contain conditions and Non-Leaf Nodes contain logical operators\n const nestedNodes = nestedConditions.map(({ conditions, operators }) => {\n const nodes = conditions.map((condition) => new TargetingNode(condition));\n\n return this.buildTree(nodes, operators);\n });\n\n this.tree = this.buildTree(nestedNodes, topLevelOperators);\n }\n\n public evaluate(data: EvaluationDataType): Result<boolean, KameleoonError> {\n const result = this.evaluateNode(this.tree, data);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n\n private evaluateNode(node: TargetingNode, data: EvaluationDataType): boolean {\n if (this.isLeafNode(node)) {\n if (node.error) {\n // --- Note ---\n // Non-existing condition should not break targeting tree\n // instead it should be treated as `false` condition\n return false;\n }\n\n const result = node.value.evaluate(data);\n\n if (!result.ok) {\n this.error = result.error;\n\n return false;\n }\n\n return node.inverse ? !result.data : result.data;\n }\n\n if (this.isNonLeafNode(node)) {\n switch (node.value) {\n case Operator.And: {\n return (\n this.evaluateNode(node.left, data) &&\n this.evaluateNode(node.right, data)\n );\n }\n case Operator.Or: {\n return (\n this.evaluateNode(node.left, data) ||\n this.evaluateNode(node.right, data)\n );\n }\n default:\n break;\n }\n }\n\n return false;\n }\n\n private isLeafNode(node: ITargetingNode): node is LeafNodeType {\n return !Boolean(node.left && node.right);\n }\n\n private isNonLeafNode(node: ITargetingNode): node is NonLeafNodeType {\n return Boolean(\n node.left &&\n node.right &&\n (node.value === Operator.Or || node.value === Operator.And),\n );\n }\n\n // --- Note ---\n // This method mutates `nodes` array\n // It's done for the sake of performance\n private buildTree(\n nodes: TargetingNode[],\n operators: Operator[],\n ): TargetingNode {\n if (nodes.length === 1) {\n return nodes[0];\n }\n\n for (const operator of operators) {\n const left = nodes.shift();\n const right = nodes.shift();\n\n const newNode = new TargetingNode(operator, left, right);\n nodes.unshift(newNode);\n }\n\n return nodes[0];\n }\n\n private flattenSegment(segment: SegmentType): GroupedSegmentsType {\n const { firstLevel: conditions, firstLevelOrOperators: operators } =\n segment.conditionsData;\n\n const nestedConditions: NestedConditionGroupType[] = [];\n\n conditions.forEach((condition) => {\n const { conditions: conditionList, orOperators } = condition;\n\n const group = {\n operators: this.convertOperators(orOperators),\n conditions: conditionList,\n };\n\n nestedConditions.push(group);\n });\n\n return {\n topLevelOperators: this.convertOperators(operators),\n nestedConditions,\n };\n }\n\n private convertOperators(operators: boolean[]): Operator[] {\n return operators.map((operator) => (operator ? Operator.Or : Operator.And));\n }\n}\n"],"mappings":"6jFAiBa,CAAAA,aAAa,yBAIxB,SAAAC,EAAYC,CAAoB,CAAE,KAAAC,CAAA,MAAAC,eAAA,MAAAH,CAAA,EAAAI,eAAA,qBAAAA,eAAA,cAFK,IAAI,MAAAC,CAAA,CAIvC,IAAI,CAACC,cAAc,CAACL,CAAO,CAAC,CADtBM,CAAgB,CAAAF,CAAA,CAAhBE,gBAAgB,CAAEC,CAAiB,CAAAH,CAAA,CAAjBG,iBAAiB,CA8BrCC,CAAW,CAAGF,CAAgB,CAACG,GAAG,CAAC,SAAAV,CAAA,CAA+B,IAA5B,CAAAW,CAAU,CAAAX,CAAA,CAAVW,UAAU,CAAEC,CAAS,CAAAZ,CAAA,CAATY,SAAS,CACzDC,CAAK,CAAGF,CAAU,CAACD,GAAG,CAAC,SAACI,CAAS,QAAK,IAAI,CAAAC,4BAAa,CAACD,CAAS,CAAC,EAAC,CAEzE,MAAO,CAAAZ,CAAI,CAACc,SAAS,CAACH,CAAK,CAAED,CAAS,CACxC,CAAC,CAAC,CA/BF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA,IAAI,CAACK,IAAI,CAAG,IAAI,CAACD,SAAS,CAACP,CAAW,CAAED,CAAiB,CAC3D,CAAC,OAAAU,YAAA,CAAAlB,CAAA,GAAAmB,GAAA,YAAAC,KAAA,CAED,SAAAC,SAAgBC,CAAwB,CAAmC,CACzE,GAAM,CAAAC,CAAM,CAAG,IAAI,CAACC,YAAY,CAAC,IAAI,CAACP,IAAI,CAAEK,CAAI,CAAC,CAAC,MAE9C,KAAI,CAACG,KAAK,CACL,GAAAC,UAAG,EAAC,IAAI,CAACD,KAAK,CAAC,CAGjB,GAAAE,SAAE,EAACJ,CAAM,CAClB,CAAC,GAAAJ,GAAA,gBAAAC,KAAA,CAED,SAAAI,aAAqBI,CAAmB,CAAEN,CAAwB,CAAW,CAC3E,GAAI,IAAI,CAACO,UAAU,CAACD,CAAI,CAAC,CAAE,CACzB,GAAIA,CAAI,CAACH,KAAK,CACZ;AACA;AACA;AACA,SAGF,GAAM,CAAAF,CAAM,CAAGK,CAAI,CAACR,KAAK,CAACC,QAAQ,CAACC,CAAI,CAAC,CAAC,MAEpC,CAAAC,CAAM,CAACO,EAAE,CAMPF,CAAI,CAACG,OAAO,CAAG,CAACR,CAAM,CAACD,IAAI,CAAGC,CAAM,CAACD,IAAI,EAL9C,IAAI,CAACG,KAAK,CAAGF,CAAM,CAACE,KAAK,IAM7B,CAEA,GAAI,IAAI,CAACO,aAAa,CAACJ,CAAI,CAAC,CAC1B,OAAQA,CAAI,CAACR,KAAK,EAChB,IAAK,CAAAa,eAAQ,CAACC,GAAG,CACf,MACE,KAAI,CAACV,YAAY,CAACI,CAAI,CAACO,IAAI,CAAEb,CAAI,CAAC,EAClC,IAAI,CAACE,YAAY,CAACI,CAAI,CAACQ,KAAK,CAAEd,CAAI,CAAC,CAGvC,IAAK,CAAAW,eAAQ,CAACI,EAAE,CACd,MACE,KAAI,CAACb,YAAY,CAACI,CAAI,CAACO,IAAI,CAAEb,CAAI,CAAC,EAClC,IAAI,CAACE,YAAY,CAACI,CAAI,CAACQ,KAAK,CAAEd,CAAI,CAAC,CAGvC,QACQ,CAIZ,QACF,CAAC,GAAAH,GAAA,cAAAC,KAAA,CAED,SAAAS,WAAmBD,CAAoB,CAAwB,CAC7D,MAAO,IAASA,CAAI,CAACO,IAAI,EAAIP,CAAI,CAACQ,KAAK,CACzC,CAAC,GAAAjB,GAAA,iBAAAC,KAAA,CAED,SAAAY,cAAsBJ,CAAoB,CAA2B,CACnE,SACEA,CAAI,CAACO,IAAI,EACPP,CAAI,CAACQ,KAAK,GACTR,CAAI,CAACR,KAAK,GAAKa,eAAQ,CAACI,EAAE,EAAIT,CAAI,CAACR,KAAK,GAAKa,eAAQ,CAACC,GAAG,CAAC,CAEjE,CAEA;AACA;AACA;AAAA,GAAAf,GAAA,aAAAC,KAAA,CACA,SAAAJ,UACEH,CAAsB,CACtBD,CAAqB,CACN,CACf,GAAqB,CAAC,GAAlBC,CAAK,CAACyB,MAAY,CACpB,MAAO,CAAAzB,CAAK,CAAC,CAAC,CAAC,CAChB,IAAAX,CAAA,CAAAG,CAAA,CAAAkC,0BAAA,CAEsB3B,CAAS,MAAhC,IAAAP,CAAA,CAAAmC,CAAA,KAAAtC,CAAA,CAAAG,CAAA,CAAAoC,CAAA,IAAAC,IAAA,EAAkC,IAAvB,CAAAC,CAAQ,CAAAzC,CAAA,CAAAkB,KAAA,CACXe,CAAI,CAAGtB,CAAK,CAAC+B,KAAK,EAAE,CACpBR,CAAK,CAAGvB,CAAK,CAAC+B,KAAK,EAAE,CAErBC,CAAO,CAAG,GAAI,CAAA9B,4BAAa,CAAC4B,CAAQ,CAAER,CAAI,CAAEC,CAAK,CAAC,CACxDvB,CAAK,CAACiC,OAAO,CAACD,CAAO,CACvB,CAAC,OAAA7C,CAAA,EAAAK,CAAA,CAAA0C,CAAA,CAAA/C,CAAA,UAAAK,CAAA,CAAA2C,CAAA,GAED,MAAO,CAAAnC,CAAK,CAAC,CAAC,CAChB,CAAC,GAAAM,GAAA,kBAAAC,KAAA,CAED,SAAAd,eAAuBL,CAAoB,CAAuB,KAAAgD,CAAA,MAAA/C,CAAA,CAE9DD,CAAO,CAACiD,cAAc,CADJvC,CAAU,CAAAT,CAAA,CAAtBiD,UAAU,CAAqCvC,CAAS,CAAAV,CAAA,CAAhCkD,qBAAqB,CAG/C7C,CAA4C,CAAG,EAAE,CAavD,MAXA,CAAAI,CAAU,CAAC0C,OAAO,CAAC,SAACvC,CAAS,CAAK,IACZ,CAAAwC,CAAa,CAAkBxC,CAAS,CAApDH,UAAU,CAAiB4C,CAAW,CAAKzC,CAAS,CAAzByC,WAAW,CAExCC,CAAK,CAAG,CACZ5C,SAAS,CAAEqC,CAAI,CAACQ,gBAAgB,CAACF,CAAW,CAAC,CAC7C5C,UAAU,CAAE2C,CACd,CAAC,CAED/C,CAAgB,CAACmD,IAAI,CAACF,CAAK,CAC7B,CAAC,CAAC,CAEK,CACLhD,iBAAiB,CAAE,IAAI,CAACiD,gBAAgB,CAAC7C,CAAS,CAAC,CACnDL,gBAAgB,CAAhBA,CACF,CACF,CAAC,GAAAY,GAAA,oBAAAC,KAAA,CAED,SAAAqC,iBAAyB7C,CAAoB,CAAc,CACzD,MAAO,CAAAA,CAAS,CAACF,GAAG,CAAC,SAACiC,CAAQ,QAAM,CAAAA,CAAQ,CAAGV,eAAQ,CAACI,EAAE,CAAGJ,eAAQ,CAACC,GAAG,CAAC,CAC5E,CAAC,IAAAlC,CAAA,IAAA2D,OAAA,CAAA5D,aAAA,CAAAA,aAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ExperimentVariationsType } from '
|
|
1
|
+
import { KameleoonVisitorDataType } from 'src/kameleoonData/types';
|
|
2
|
+
import { ExperimentVariationsType } from 'src/storage';
|
|
3
|
+
import { ExternalPackageInfoType } from 'src/types';
|
|
3
4
|
import { ConditionDataType, ConditionType } from './conditions';
|
|
4
5
|
import { TargetingNode } from './targetingNode';
|
|
5
6
|
export declare enum Operator {
|
|
@@ -29,21 +30,23 @@ export type SegmentType = {
|
|
|
29
30
|
firstLevel: ConditionLevelType[];
|
|
30
31
|
};
|
|
31
32
|
};
|
|
32
|
-
export type
|
|
33
|
-
conditions: ConditionDataType[];
|
|
33
|
+
export type NestedConditionGroupType = {
|
|
34
34
|
operators: Operator[];
|
|
35
|
+
conditions: ConditionDataType[];
|
|
35
36
|
};
|
|
36
|
-
export type
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
export type GroupedSegmentsType = {
|
|
38
|
+
topLevelOperators: Operator[];
|
|
39
|
+
nestedConditions: NestedConditionGroupType[];
|
|
39
40
|
};
|
|
40
41
|
export type TargetingDataType = {
|
|
41
|
-
[visitorCode: string]:
|
|
42
|
+
[visitorCode: string]: KameleoonVisitorDataType;
|
|
42
43
|
};
|
|
43
44
|
export type EvaluationDataType = {
|
|
44
|
-
targetingData
|
|
45
|
+
targetingData?: KameleoonVisitorDataType;
|
|
45
46
|
variationData: ExperimentVariationsType;
|
|
47
|
+
sdkInfo: ExternalPackageInfoType;
|
|
46
48
|
experimentId: number | null;
|
|
49
|
+
visitorCode: string;
|
|
47
50
|
};
|
|
48
51
|
export declare enum MatchTypeCustomData {
|
|
49
52
|
TRUE = "TRUE",
|
|
@@ -66,6 +69,16 @@ export declare enum MatchTypeTest {
|
|
|
66
69
|
TEST = "TEST",
|
|
67
70
|
PERSO = "PERSO"
|
|
68
71
|
}
|
|
72
|
+
export declare enum MatchType {
|
|
73
|
+
EXACT = "EXACT",
|
|
74
|
+
CONTAINS = "CONTAINS",
|
|
75
|
+
REGULAR_EXPRESSION = "REGULAR_EXPRESSION"
|
|
76
|
+
}
|
|
77
|
+
export declare enum VersionMatchType {
|
|
78
|
+
GREATER = "GREATER",
|
|
79
|
+
EQUAL = "EQUAL",
|
|
80
|
+
LOWER = "LOWER"
|
|
81
|
+
}
|
|
69
82
|
export declare enum TargetingType {
|
|
70
83
|
PAGE_URL = "PAGE_URL",
|
|
71
84
|
PAGE_TITLE = "PAGE_TITLE",
|
|
@@ -91,6 +104,8 @@ export declare enum TargetingType {
|
|
|
91
104
|
SAME_DAY_VISITS = "SAME_DAY_VISITS",
|
|
92
105
|
VISITS = "VISITS",
|
|
93
106
|
VISITS_BY_PAGE = "VISITS_BY_PAGE",
|
|
107
|
+
VISITOR_CODE = "VISITOR_CODE",
|
|
108
|
+
SDK_LANGUAGE = "SDK_LANGUAGE",
|
|
94
109
|
INTERNAL_SEARCH_KEYWORDS = "INTERNAL_SEARCH_KEYWORDS",
|
|
95
110
|
TABS_ON_SITE = "TABS_ON_SITE",
|
|
96
111
|
CONVERSION_PROBABILITY = "CONVERSION_PROBABILITY",
|
package/dist/targeting/types.js
CHANGED
|
@@ -1,101 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.TargetingType = exports.Operator = exports.MatchTypeVariation = exports.MatchTypeTest = exports.MatchTypeCustomData = void 0;
|
|
7
|
-
let Operator = /*#__PURE__*/function (Operator) {
|
|
8
|
-
Operator["And"] = "AND";
|
|
9
|
-
Operator["Or"] = "OR";
|
|
10
|
-
return Operator;
|
|
11
|
-
}({});
|
|
12
|
-
exports.Operator = Operator;
|
|
13
|
-
let MatchTypeCustomData = /*#__PURE__*/function (MatchTypeCustomData) {
|
|
14
|
-
MatchTypeCustomData["TRUE"] = "TRUE";
|
|
15
|
-
MatchTypeCustomData["FALSE"] = "FALSE";
|
|
16
|
-
MatchTypeCustomData["EXACT"] = "EXACT";
|
|
17
|
-
MatchTypeCustomData["CONTAINS"] = "CONTAINS";
|
|
18
|
-
MatchTypeCustomData["REGULAR_EXPRESSION"] = "REGULAR_EXPRESSION";
|
|
19
|
-
MatchTypeCustomData["EQUAL"] = "EQUAL";
|
|
20
|
-
MatchTypeCustomData["LOWER"] = "LOWER";
|
|
21
|
-
MatchTypeCustomData["GREATER"] = "GREATER";
|
|
22
|
-
MatchTypeCustomData["UNDEFINED"] = "UNDEFINED";
|
|
23
|
-
MatchTypeCustomData["AMONG_VALUES"] = "AMONG_VALUES";
|
|
24
|
-
return MatchTypeCustomData;
|
|
25
|
-
}({});
|
|
26
|
-
exports.MatchTypeCustomData = MatchTypeCustomData;
|
|
27
|
-
let MatchTypeVariation = /*#__PURE__*/function (MatchTypeVariation) {
|
|
28
|
-
MatchTypeVariation["ANY"] = "ANY";
|
|
29
|
-
MatchTypeVariation["EXACT"] = "EXACT";
|
|
30
|
-
return MatchTypeVariation;
|
|
31
|
-
}({});
|
|
32
|
-
exports.MatchTypeVariation = MatchTypeVariation;
|
|
33
|
-
let MatchTypeTest = /*#__PURE__*/function (MatchTypeTest) {
|
|
34
|
-
MatchTypeTest["ALL"] = "ALL";
|
|
35
|
-
MatchTypeTest["TEST"] = "TEST";
|
|
36
|
-
MatchTypeTest["PERSO"] = "PERSO";
|
|
37
|
-
return MatchTypeTest;
|
|
38
|
-
}({});
|
|
39
|
-
exports.MatchTypeTest = MatchTypeTest;
|
|
40
|
-
let TargetingType = /*#__PURE__*/function (TargetingType) {
|
|
41
|
-
TargetingType["PAGE_URL"] = "PAGE_URL";
|
|
42
|
-
TargetingType["PAGE_TITLE"] = "PAGE_TITLE";
|
|
43
|
-
TargetingType["LANDING_PAGE"] = "LANDING_PAGE";
|
|
44
|
-
TargetingType["ORIGIN"] = "ORIGIN";
|
|
45
|
-
TargetingType["ORIGIN_TYPE"] = "ORIGIN_TYPE";
|
|
46
|
-
TargetingType["REFERRERS"] = "REFERRERS";
|
|
47
|
-
TargetingType["NEW_VISITORS"] = "NEW_VISITORS";
|
|
48
|
-
TargetingType["INTERESTS"] = "INTERESTS";
|
|
49
|
-
TargetingType["BROWSER_LANGUAGE"] = "BROWSER_LANGUAGE";
|
|
50
|
-
TargetingType["GEOLOCATION"] = "GEOLOCATION";
|
|
51
|
-
TargetingType["DEVICE_TYPE"] = "DEVICE_TYPE";
|
|
52
|
-
TargetingType["SCREEN_DIMENSION"] = "SCREEN_DIMENSION";
|
|
53
|
-
TargetingType["VISITOR_IP"] = "VISITOR_IP";
|
|
54
|
-
TargetingType["AD_BLOCKER"] = "AD_BLOCKER";
|
|
55
|
-
TargetingType["PREVIOUS_PAGE"] = "PREVIOUS_PAGE";
|
|
56
|
-
TargetingType["KEY_PAGES"] = "KEY_PAGES";
|
|
57
|
-
TargetingType["PAGE_VIEWS"] = "PAGE_VIEWS";
|
|
58
|
-
TargetingType["FIRST_VISIT"] = "FIRST_VISIT";
|
|
59
|
-
TargetingType["LAST_VISIT"] = "LAST_VISIT";
|
|
60
|
-
TargetingType["ACTIVE_SESSION"] = "ACTIVE_SESSION";
|
|
61
|
-
TargetingType["TIME_SINCE_PAGE_LOAD"] = "TIME_SINCE_PAGE_LOAD";
|
|
62
|
-
TargetingType["SAME_DAY_VISITS"] = "SAME_DAY_VISITS";
|
|
63
|
-
TargetingType["VISITS"] = "VISITS";
|
|
64
|
-
TargetingType["VISITS_BY_PAGE"] = "VISITS_BY_PAGE";
|
|
65
|
-
TargetingType["INTERNAL_SEARCH_KEYWORDS"] = "INTERNAL_SEARCH_KEYWORDS";
|
|
66
|
-
TargetingType["TABS_ON_SITE"] = "TABS_ON_SITE";
|
|
67
|
-
TargetingType["CONVERSION_PROBABILITY"] = "CONVERSION_PROBABILITY";
|
|
68
|
-
TargetingType["HEAT_SLICE"] = "HEAT_SLICE";
|
|
69
|
-
TargetingType["SKY_STATUS"] = "SKY_STATUS";
|
|
70
|
-
TargetingType["TEMPERATURE"] = "TEMPERATURE";
|
|
71
|
-
TargetingType["DAY_NIGHT"] = "DAY_NIGHT";
|
|
72
|
-
TargetingType["FORECAST_SKY_STATUS"] = "FORECAST_SKY_STATUS";
|
|
73
|
-
TargetingType["FORECAST_TEMPERATURE"] = "FORECAST_TEMPERATURE";
|
|
74
|
-
TargetingType["DAY_OF_WEEK"] = "DAY_OF_WEEK";
|
|
75
|
-
TargetingType["TIME_RANGE"] = "TIME_RANGE";
|
|
76
|
-
TargetingType["HOUR_MINUTE_RANGE"] = "HOUR_MINUTE_RANGE";
|
|
77
|
-
TargetingType["JS_CODE"] = "JS_CODE";
|
|
78
|
-
TargetingType["COOKIE"] = "COOKIE";
|
|
79
|
-
TargetingType["EVENT"] = "EVENT";
|
|
80
|
-
TargetingType["BROWSER"] = "BROWSER";
|
|
81
|
-
TargetingType["OPERATING_SYSTEM"] = "OPERATING_SYSTEM";
|
|
82
|
-
TargetingType["DOM_ELEMENT"] = "DOM_ELEMENT";
|
|
83
|
-
TargetingType["MOUSE_OUT"] = "MOUSE_OUT";
|
|
84
|
-
TargetingType["TARGET_EXPERIMENT"] = "TARGET_EXPERIMENT";
|
|
85
|
-
TargetingType["TARGET_PERSONALIZATION"] = "TARGET_PERSONALIZATION";
|
|
86
|
-
TargetingType["EXCLUSIVE_EXPERIMENT"] = "EXCLUSIVE_EXPERIMENT";
|
|
87
|
-
TargetingType["CONVERSIONS"] = "CONVERSIONS";
|
|
88
|
-
TargetingType["CUSTOM_DATUM"] = "CUSTOM_DATUM";
|
|
89
|
-
TargetingType["YSANCE_SEGMENT"] = "YSANCE_SEGMENT";
|
|
90
|
-
TargetingType["YSANCE_ATTRIBUT"] = "YSANCE_ATTRIBUT";
|
|
91
|
-
TargetingType["TEALIUM_BADGE"] = "TEALIUM_BADGE";
|
|
92
|
-
TargetingType["TEALIUM_AUDIENCE"] = "TEALIUM_AUDIENCE";
|
|
93
|
-
TargetingType["PRICE_OF_DISPLAYED_PAGE"] = "PRICE_OF_DISPLAYED_PAGE";
|
|
94
|
-
TargetingType["NUMBER_OF_VISITED_PAGES"] = "NUMBER_OF_VISITED_PAGES";
|
|
95
|
-
TargetingType["VISITED_PAGES"] = "VISITED_PAGES";
|
|
96
|
-
TargetingType["CUSTOM"] = "CUSTOM";
|
|
97
|
-
TargetingType["EXPLICIT_TRIGGER"] = "EXPLICIT_TRIGGER";
|
|
98
|
-
return TargetingType;
|
|
99
|
-
}({});
|
|
100
|
-
exports.TargetingType = TargetingType;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VersionMatchType=exports.TargetingType=exports.Operator=exports.MatchTypeVariation=exports.MatchTypeTest=exports.MatchTypeCustomData=exports.MatchType=void 0;var Operator=/*#__PURE__*/function(a){return a.And="AND",a.Or="OR",a}({});exports.Operator=Operator;var MatchTypeCustomData=/*#__PURE__*/function(a){return a.TRUE="TRUE",a.FALSE="FALSE",a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a.EQUAL="EQUAL",a.LOWER="LOWER",a.GREATER="GREATER",a.UNDEFINED="UNDEFINED",a.AMONG_VALUES="AMONG_VALUES",a}({});exports.MatchTypeCustomData=MatchTypeCustomData;var MatchTypeVariation=/*#__PURE__*/function(a){return a.ANY="ANY",a.EXACT="EXACT",a}({});exports.MatchTypeVariation=MatchTypeVariation;var MatchTypeTest=/*#__PURE__*/function(a){return a.ALL="ALL",a.TEST="TEST",a.PERSO="PERSO",a}({});exports.MatchTypeTest=MatchTypeTest;var MatchType=/*#__PURE__*/function(a){return a.EXACT="EXACT",a.CONTAINS="CONTAINS",a.REGULAR_EXPRESSION="REGULAR_EXPRESSION",a}({});exports.MatchType=MatchType;var VersionMatchType=/*#__PURE__*/function(a){return a.GREATER="GREATER",a.EQUAL="EQUAL",a.LOWER="LOWER",a}({});exports.VersionMatchType=VersionMatchType;var TargetingType=/*#__PURE__*/function(a){return a.PAGE_URL="PAGE_URL",a.PAGE_TITLE="PAGE_TITLE",a.LANDING_PAGE="LANDING_PAGE",a.ORIGIN="ORIGIN",a.ORIGIN_TYPE="ORIGIN_TYPE",a.REFERRERS="REFERRERS",a.NEW_VISITORS="NEW_VISITORS",a.INTERESTS="INTERESTS",a.BROWSER_LANGUAGE="BROWSER_LANGUAGE",a.GEOLOCATION="GEOLOCATION",a.DEVICE_TYPE="DEVICE_TYPE",a.SCREEN_DIMENSION="SCREEN_DIMENSION",a.VISITOR_IP="VISITOR_IP",a.AD_BLOCKER="AD_BLOCKER",a.PREVIOUS_PAGE="PREVIOUS_PAGE",a.KEY_PAGES="KEY_PAGES",a.PAGE_VIEWS="PAGE_VIEWS",a.FIRST_VISIT="FIRST_VISIT",a.LAST_VISIT="LAST_VISIT",a.ACTIVE_SESSION="ACTIVE_SESSION",a.TIME_SINCE_PAGE_LOAD="TIME_SINCE_PAGE_LOAD",a.SAME_DAY_VISITS="SAME_DAY_VISITS",a.VISITS="VISITS",a.VISITS_BY_PAGE="VISITS_BY_PAGE",a.VISITOR_CODE="VISITOR_CODE",a.SDK_LANGUAGE="SDK_LANGUAGE",a.INTERNAL_SEARCH_KEYWORDS="INTERNAL_SEARCH_KEYWORDS",a.TABS_ON_SITE="TABS_ON_SITE",a.CONVERSION_PROBABILITY="CONVERSION_PROBABILITY",a.HEAT_SLICE="HEAT_SLICE",a.SKY_STATUS="SKY_STATUS",a.TEMPERATURE="TEMPERATURE",a.DAY_NIGHT="DAY_NIGHT",a.FORECAST_SKY_STATUS="FORECAST_SKY_STATUS",a.FORECAST_TEMPERATURE="FORECAST_TEMPERATURE",a.DAY_OF_WEEK="DAY_OF_WEEK",a.TIME_RANGE="TIME_RANGE",a.HOUR_MINUTE_RANGE="HOUR_MINUTE_RANGE",a.JS_CODE="JS_CODE",a.COOKIE="COOKIE",a.EVENT="EVENT",a.BROWSER="BROWSER",a.OPERATING_SYSTEM="OPERATING_SYSTEM",a.DOM_ELEMENT="DOM_ELEMENT",a.MOUSE_OUT="MOUSE_OUT",a.TARGET_EXPERIMENT="TARGET_EXPERIMENT",a.TARGET_PERSONALIZATION="TARGET_PERSONALIZATION",a.EXCLUSIVE_EXPERIMENT="EXCLUSIVE_EXPERIMENT",a.CONVERSIONS="CONVERSIONS",a.CUSTOM_DATUM="CUSTOM_DATUM",a.YSANCE_SEGMENT="YSANCE_SEGMENT",a.YSANCE_ATTRIBUT="YSANCE_ATTRIBUT",a.TEALIUM_BADGE="TEALIUM_BADGE",a.TEALIUM_AUDIENCE="TEALIUM_AUDIENCE",a.PRICE_OF_DISPLAYED_PAGE="PRICE_OF_DISPLAYED_PAGE",a.NUMBER_OF_VISITED_PAGES="NUMBER_OF_VISITED_PAGES",a.VISITED_PAGES="VISITED_PAGES",a.CUSTOM="CUSTOM",a.EXPLICIT_TRIGGER="EXPLICIT_TRIGGER",a}({});exports.TargetingType=TargetingType;
|
|
101
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["Operator","exports","MatchTypeCustomData","MatchTypeVariation","MatchTypeTest","TargetingType"],"sources":["../../src/targeting/types.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"types.js","names":["Operator","And","Or","exports","MatchTypeCustomData","TRUE","FALSE","EXACT","CONTAINS","REGULAR_EXPRESSION","EQUAL","LOWER","GREATER","UNDEFINED","AMONG_VALUES","MatchTypeVariation","ANY","MatchTypeTest","ALL","TEST","PERSO","MatchType","VersionMatchType","TargetingType","PAGE_URL","PAGE_TITLE","LANDING_PAGE","ORIGIN","ORIGIN_TYPE","REFERRERS","NEW_VISITORS","INTERESTS","BROWSER_LANGUAGE","GEOLOCATION","DEVICE_TYPE","SCREEN_DIMENSION","VISITOR_IP","AD_BLOCKER","PREVIOUS_PAGE","KEY_PAGES","PAGE_VIEWS","FIRST_VISIT","LAST_VISIT","ACTIVE_SESSION","TIME_SINCE_PAGE_LOAD","SAME_DAY_VISITS","VISITS","VISITS_BY_PAGE","VISITOR_CODE","SDK_LANGUAGE","INTERNAL_SEARCH_KEYWORDS","TABS_ON_SITE","CONVERSION_PROBABILITY","HEAT_SLICE","SKY_STATUS","TEMPERATURE","DAY_NIGHT","FORECAST_SKY_STATUS","FORECAST_TEMPERATURE","DAY_OF_WEEK","TIME_RANGE","HOUR_MINUTE_RANGE","JS_CODE","COOKIE","EVENT","BROWSER","OPERATING_SYSTEM","DOM_ELEMENT","MOUSE_OUT","TARGET_EXPERIMENT","TARGET_PERSONALIZATION","EXCLUSIVE_EXPERIMENT","CONVERSIONS","CUSTOM_DATUM","YSANCE_SEGMENT","YSANCE_ATTRIBUT","TEALIUM_BADGE","TEALIUM_AUDIENCE","PRICE_OF_DISPLAYED_PAGE","NUMBER_OF_VISITED_PAGES","VISITED_PAGES","CUSTOM","EXPLICIT_TRIGGER"],"sources":["../../src/targeting/types.ts"],"sourcesContent":["import { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { ExperimentVariationsType } from 'src/storage';\nimport { ExternalPackageInfoType } from 'src/types';\nimport { ConditionDataType, ConditionType } from './conditions';\nimport { TargetingNode } from './targetingNode';\n\nexport enum Operator {\n And = 'AND',\n Or = 'OR',\n}\n\nexport type NonLeafNodeType = {\n left: TargetingNode;\n right: TargetingNode;\n value: Operator;\n};\n\nexport type LeafNodeType = {\n left: undefined;\n right: undefined;\n value: ConditionType;\n};\n\nexport type NodeValueType = ConditionType | Operator;\n\nexport type ConditionLevelType = {\n orOperators: boolean[];\n conditions: ConditionDataType[];\n};\n\nexport type SegmentType = {\n id: string;\n name: string;\n conditionsData: {\n firstLevelOrOperators: boolean[];\n firstLevel: ConditionLevelType[];\n };\n};\n\nexport type NestedConditionGroupType = {\n operators: Operator[];\n conditions: ConditionDataType[];\n};\n\nexport type GroupedSegmentsType = {\n topLevelOperators: Operator[];\n nestedConditions: NestedConditionGroupType[];\n};\n\nexport type TargetingDataType = {\n [visitorCode: string]: KameleoonVisitorDataType;\n};\n\nexport type EvaluationDataType = {\n targetingData?: KameleoonVisitorDataType;\n variationData: ExperimentVariationsType;\n sdkInfo: ExternalPackageInfoType;\n experimentId: number | null;\n visitorCode: string;\n};\n\nexport enum MatchTypeCustomData {\n TRUE = 'TRUE',\n FALSE = 'FALSE',\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n GREATER = 'GREATER',\n UNDEFINED = 'UNDEFINED',\n AMONG_VALUES = 'AMONG_VALUES',\n}\n\nexport enum MatchTypeVariation {\n ANY = 'ANY',\n EXACT = 'EXACT',\n}\n\nexport enum MatchTypeTest {\n ALL = 'ALL',\n TEST = 'TEST',\n PERSO = 'PERSO',\n}\n\nexport enum MatchType {\n EXACT = 'EXACT',\n CONTAINS = 'CONTAINS',\n REGULAR_EXPRESSION = 'REGULAR_EXPRESSION',\n}\n\nexport enum VersionMatchType {\n GREATER = 'GREATER',\n EQUAL = 'EQUAL',\n LOWER = 'LOWER',\n}\n\nexport enum TargetingType {\n PAGE_URL = 'PAGE_URL',\n PAGE_TITLE = 'PAGE_TITLE',\n LANDING_PAGE = 'LANDING_PAGE',\n ORIGIN = 'ORIGIN',\n ORIGIN_TYPE = 'ORIGIN_TYPE',\n REFERRERS = 'REFERRERS',\n NEW_VISITORS = 'NEW_VISITORS',\n INTERESTS = 'INTERESTS',\n BROWSER_LANGUAGE = 'BROWSER_LANGUAGE',\n GEOLOCATION = 'GEOLOCATION',\n DEVICE_TYPE = 'DEVICE_TYPE',\n SCREEN_DIMENSION = 'SCREEN_DIMENSION',\n VISITOR_IP = 'VISITOR_IP',\n AD_BLOCKER = 'AD_BLOCKER',\n PREVIOUS_PAGE = 'PREVIOUS_PAGE',\n KEY_PAGES = 'KEY_PAGES',\n PAGE_VIEWS = 'PAGE_VIEWS',\n FIRST_VISIT = 'FIRST_VISIT',\n LAST_VISIT = 'LAST_VISIT',\n ACTIVE_SESSION = 'ACTIVE_SESSION',\n TIME_SINCE_PAGE_LOAD = 'TIME_SINCE_PAGE_LOAD',\n SAME_DAY_VISITS = 'SAME_DAY_VISITS',\n VISITS = 'VISITS',\n VISITS_BY_PAGE = 'VISITS_BY_PAGE',\n VISITOR_CODE = 'VISITOR_CODE',\n SDK_LANGUAGE = 'SDK_LANGUAGE',\n INTERNAL_SEARCH_KEYWORDS = 'INTERNAL_SEARCH_KEYWORDS',\n TABS_ON_SITE = 'TABS_ON_SITE',\n CONVERSION_PROBABILITY = 'CONVERSION_PROBABILITY',\n HEAT_SLICE = 'HEAT_SLICE',\n SKY_STATUS = 'SKY_STATUS',\n TEMPERATURE = 'TEMPERATURE',\n DAY_NIGHT = 'DAY_NIGHT',\n FORECAST_SKY_STATUS = 'FORECAST_SKY_STATUS',\n FORECAST_TEMPERATURE = 'FORECAST_TEMPERATURE',\n DAY_OF_WEEK = 'DAY_OF_WEEK',\n TIME_RANGE = 'TIME_RANGE',\n HOUR_MINUTE_RANGE = 'HOUR_MINUTE_RANGE',\n JS_CODE = 'JS_CODE',\n COOKIE = 'COOKIE',\n EVENT = 'EVENT',\n BROWSER = 'BROWSER',\n OPERATING_SYSTEM = 'OPERATING_SYSTEM',\n DOM_ELEMENT = 'DOM_ELEMENT',\n MOUSE_OUT = 'MOUSE_OUT',\n TARGET_EXPERIMENT = 'TARGET_EXPERIMENT',\n TARGET_PERSONALIZATION = 'TARGET_PERSONALIZATION',\n EXCLUSIVE_EXPERIMENT = 'EXCLUSIVE_EXPERIMENT',\n CONVERSIONS = 'CONVERSIONS',\n CUSTOM_DATUM = 'CUSTOM_DATUM',\n YSANCE_SEGMENT = 'YSANCE_SEGMENT',\n YSANCE_ATTRIBUT = 'YSANCE_ATTRIBUT',\n TEALIUM_BADGE = 'TEALIUM_BADGE',\n TEALIUM_AUDIENCE = 'TEALIUM_AUDIENCE',\n PRICE_OF_DISPLAYED_PAGE = 'PRICE_OF_DISPLAYED_PAGE',\n NUMBER_OF_VISITED_PAGES = 'NUMBER_OF_VISITED_PAGES',\n VISITED_PAGES = 'VISITED_PAGES',\n CUSTOM = 'CUSTOM',\n EXPLICIT_TRIGGER = 'EXPLICIT_TRIGGER',\n}\n"],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { IncomingMessage, ServerResponse } from 'http';
|
|
3
3
|
import { JSONType } from './campaignConfiguration/types';
|
|
4
|
-
import {
|
|
4
|
+
import { SdkLanguageType } from './constants';
|
|
5
5
|
import { IExternalEventSourceConstructor } from './eventSource';
|
|
6
6
|
import { IExternalStorageConstructor } from './storage';
|
|
7
7
|
import { IExternalRequestDispatcher, GetClientConfigurationResultType } from './requester';
|
|
@@ -35,11 +35,11 @@ export type SDKCoreParameters = {
|
|
|
35
35
|
internalConfiguration: InternalSDKConfigurationType;
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
|
-
* @param {
|
|
38
|
+
* @param {SdkLanguageType} type - type of the SDK
|
|
39
39
|
* @param {string} version - version of the package
|
|
40
40
|
* */
|
|
41
41
|
export type ExternalPackageInfoType = {
|
|
42
|
-
type:
|
|
42
|
+
type: SdkLanguageType;
|
|
43
43
|
version: string;
|
|
44
44
|
};
|
|
45
45
|
/**
|
|
@@ -101,10 +101,15 @@ export declare enum Milliseconds {
|
|
|
101
101
|
Minute = 60000,
|
|
102
102
|
Hour = 3600000
|
|
103
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters
|
|
106
|
+
* @param {number} goalId - an id of a goal to track
|
|
107
|
+
* @param {number | undefined} revenue - an optional parameter for revenue, default value is `0`
|
|
108
|
+
* */
|
|
104
109
|
export type TrackConversionParamsType = {
|
|
105
110
|
visitorCode: string;
|
|
106
111
|
goalId: number;
|
|
107
|
-
revenue
|
|
112
|
+
revenue?: number;
|
|
108
113
|
};
|
|
109
114
|
export type ExperimentType = {
|
|
110
115
|
id: number;
|