@kameleoon/javascript-sdk-core 2.8.1 → 2.8.2
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CustomDataCondition=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_kameleoonError=require("../../kameleoonError"),_utilities=require("../../utilities"),_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 CustomDataCondition=/*#__PURE__*/function(){function a(b){var c=b.customDataIndex,d=b.valueMatchType,e=b.value;_classCallCheck(this,a),_defineProperty(this,"customDataIndex",void 0),_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"error",void 0),this.customDataIndex=c?+c:null,this.matchType=d,this.conditionValue=e}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData;if(this.customDataIndex){var c,d=null===b||void 0===b||null===(c=b[_kameleoonData.KameleoonData.CustomData])||void 0===c?void 0:c[this.customDataIndex];if(d){var e=d.value,f=this.checkCondition(e);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(f)}}return(0,_tsRes.Ok)(this.matchType===_types.MatchTypeCustomData.UNDEFINED)}},{key:"checkCondition",value:function checkCondition(a){var b=this;if("string"!=typeof this.conditionValue&&this.matchType!==_types.MatchTypeCustomData.TRUE&&this.matchType!==_types.MatchTypeCustomData.FALSE)return!1;// --- Note ---
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CustomDataCondition=void 0;var _tsRes=require("ts-res"),_kameleoonData=require("../../kameleoonData"),_kameleoonError=require("../../kameleoonError"),_utilities=require("../../utilities"),_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 CustomDataCondition=/*#__PURE__*/function(){function a(b){var c=b.customDataIndex,d=b.valueMatchType,e=b.value;_classCallCheck(this,a),_defineProperty(this,"customDataIndex",void 0),_defineProperty(this,"matchType",void 0),_defineProperty(this,"conditionValue",void 0),_defineProperty(this,"error",void 0),this.customDataIndex=c?+c:null,this.matchType=d,this.conditionValue=e}return _createClass(a,[{key:"evaluate",value:function evaluate(a){var b=a.targetingData;if("number"==typeof this.customDataIndex){var c,d=null===b||void 0===b||null===(c=b[_kameleoonData.KameleoonData.CustomData])||void 0===c?void 0:c[this.customDataIndex];if(d){var e=d.value,f=this.checkCondition(e);return this.error?(0,_tsRes.Err)(this.error):(0,_tsRes.Ok)(f)}}return(0,_tsRes.Ok)(this.matchType===_types.MatchTypeCustomData.UNDEFINED)}},{key:"checkCondition",value:function checkCondition(a){var b=this;if("string"!=typeof this.conditionValue&&this.matchType!==_types.MatchTypeCustomData.TRUE&&this.matchType!==_types.MatchTypeCustomData.FALSE)return!1;// --- Note ---
|
|
2
2
|
// `MatchTypeCustomData.TRUE` and `MatchTypeCustomData.FALSE` do not use condition value
|
|
3
3
|
// so we can safely assume that `this.conditionValue` is a string at this point
|
|
4
4
|
var c=this.conditionValue;// --- Note ---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customDataCondition.js","names":["CustomDataCondition","a","b","customDataIndex","valueMatchType","value","_classCallCheck","_defineProperty","matchType","conditionValue","_createClass","key","evaluate","targetingData","c","customData","KameleoonData","CustomData","customDataValue","result","checkCondition","error","Err","Ok","MatchTypeCustomData","UNDEFINED","TRUE","FALSE","AMONG_VALUES","parseArray","ok","resultData","Set","data","Array","isArray","some","has","includes","CONTAINS","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","LOWER","EQUAL","GREATER","toLowerCase","JSON","parse","err","KameleoonError","KameleoonException","AmongValuesCheck","exports"],"sources":["../../../src/targeting/conditions/customDataCondition.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CustomDataType, KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { EvaluationDataType, MatchTypeCustomData } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class CustomDataCondition implements ICondition {\n private customDataIndex: number | null;\n private matchType?: MatchTypeCustomData | null;\n private conditionValue?: string | null;\n private error?: KameleoonError;\n\n constructor({ customDataIndex, valueMatchType, value }: ConditionDataType) {\n this.customDataIndex = customDataIndex ? Number(customDataIndex) : null;\n this.matchType = valueMatchType;\n this.conditionValue = value;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n if (this.customDataIndex) {\n const customData =\n targetingData?.[KameleoonData.CustomData]?.[this.customDataIndex];\n\n if (customData) {\n const { value: customDataValue } = customData;\n const result = this.checkCondition(customDataValue);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n }\n\n return Ok(this.matchType === MatchTypeCustomData.UNDEFINED);\n }\n\n private checkCondition(customDataValue: CustomDataType['value']): boolean {\n if (\n typeof this.conditionValue !== 'string' &&\n this.matchType !== MatchTypeCustomData.TRUE &&\n this.matchType !== MatchTypeCustomData.FALSE\n ) {\n return false;\n }\n\n // --- Note ---\n // `MatchTypeCustomData.TRUE` and `MatchTypeCustomData.FALSE` do not use condition value\n // so we can safely assume that `this.conditionValue` is a string at this point\n const conditionValue = this.conditionValue as string;\n\n // --- Note ---\n // `AMONG_VALUES` is checked separately to avoid recursion overhead\n // for `JSON.parse` inside `this.parseArray`\n if (this.matchType === MatchTypeCustomData.AMONG_VALUES) {\n const result = this.parseArray(conditionValue);\n\n if (!result.ok) {\n this.error = result.error;\n\n return false;\n }\n\n const resultData = new Set(result.data);\n\n return Array.isArray(customDataValue)\n ? customDataValue.some((value) => resultData.has(value))\n : result.data.includes(customDataValue);\n }\n\n if (Array.isArray(customDataValue)) {\n return customDataValue.some((value) => this.checkCondition(value));\n }\n\n switch (this.matchType) {\n case MatchTypeCustomData.CONTAINS:\n return customDataValue.includes(conditionValue);\n case MatchTypeCustomData.EXACT:\n return customDataValue === this.conditionValue;\n case MatchTypeCustomData.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(conditionValue).test(customDataValue);\n case MatchTypeCustomData.LOWER:\n return Number(customDataValue) < Number(this.conditionValue);\n case MatchTypeCustomData.EQUAL:\n return Number(customDataValue) === Number(this.conditionValue);\n case MatchTypeCustomData.GREATER:\n return Number(customDataValue) > Number(this.conditionValue);\n case MatchTypeCustomData.TRUE:\n return customDataValue.toLowerCase() === 'true';\n case MatchTypeCustomData.FALSE:\n return customDataValue.toLowerCase() === 'false';\n default:\n return false;\n }\n }\n\n private parseArray(value: string): Result<string[], KameleoonError> {\n try {\n const result = JSON.parse(value);\n\n if (Array.isArray(result)) {\n return Ok(result);\n }\n } catch (err) {\n return Err(\n new KameleoonError(KameleoonException.AmongValuesCheck, err, value),\n );\n }\n\n return Ok([]);\n }\n}\n"],"mappings":"+gDAOa,CAAAA,mBAAmB,yBAM9B,SAAAC,EAAAC,CAAA,CAA2E,IAA7D,CAAAC,CAAe,CAAAD,CAAA,CAAfC,eAAe,CAAEC,CAAc,CAAAF,CAAA,CAAdE,cAAc,CAAEC,CAAK,CAAAH,CAAA,CAALG,KAAK,CAAAC,eAAA,MAAAL,CAAA,EAAAM,eAAA,gCAAAA,eAAA,0BAAAA,eAAA,+BAAAA,eAAA,sBAClD,IAAI,CAACJ,eAAe,CAAGA,CAAe,EAAUA,CAAe,CAAI,IAAI,CACvE,IAAI,CAACK,SAAS,CAAGJ,CAAc,CAC/B,IAAI,CAACK,cAAc,CAAGJ,CACxB,CAAC,OAAAK,YAAA,CAAAT,CAAA,GAAAU,GAAA,YAAAN,KAAA,CAED,SAAAO,SAAAX,CAAA,CAEwD,IADtD,CAAAY,CAAa,CAAAZ,CAAA,CAAbY,aAAa,CAEb,
|
|
1
|
+
{"version":3,"file":"customDataCondition.js","names":["CustomDataCondition","a","b","customDataIndex","valueMatchType","value","_classCallCheck","_defineProperty","matchType","conditionValue","_createClass","key","evaluate","targetingData","c","customData","KameleoonData","CustomData","customDataValue","result","checkCondition","error","Err","Ok","MatchTypeCustomData","UNDEFINED","TRUE","FALSE","AMONG_VALUES","parseArray","ok","resultData","Set","data","Array","isArray","some","has","includes","CONTAINS","EXACT","REGULAR_EXPRESSION","Utilities","parseRegExp","test","LOWER","EQUAL","GREATER","toLowerCase","JSON","parse","err","KameleoonError","KameleoonException","AmongValuesCheck","exports"],"sources":["../../../src/targeting/conditions/customDataCondition.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { CustomDataType, KameleoonData } from 'src/kameleoonData';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { Utilities } from 'src/utilities';\nimport { EvaluationDataType, MatchTypeCustomData } from 'src/targeting/types';\nimport { ConditionDataType, ICondition } from './types';\n\nexport class CustomDataCondition implements ICondition {\n private customDataIndex: number | null;\n private matchType?: MatchTypeCustomData | null;\n private conditionValue?: string | null;\n private error?: KameleoonError;\n\n constructor({ customDataIndex, valueMatchType, value }: ConditionDataType) {\n this.customDataIndex = customDataIndex ? Number(customDataIndex) : null;\n this.matchType = valueMatchType;\n this.conditionValue = value;\n }\n\n public evaluate({\n targetingData,\n }: EvaluationDataType): Result<boolean, KameleoonError> {\n if (typeof this.customDataIndex === 'number') {\n const customData =\n targetingData?.[KameleoonData.CustomData]?.[this.customDataIndex];\n\n if (customData) {\n const { value: customDataValue } = customData;\n const result = this.checkCondition(customDataValue);\n\n if (this.error) {\n return Err(this.error);\n }\n\n return Ok(result);\n }\n }\n\n return Ok(this.matchType === MatchTypeCustomData.UNDEFINED);\n }\n\n private checkCondition(customDataValue: CustomDataType['value']): boolean {\n if (\n typeof this.conditionValue !== 'string' &&\n this.matchType !== MatchTypeCustomData.TRUE &&\n this.matchType !== MatchTypeCustomData.FALSE\n ) {\n return false;\n }\n\n // --- Note ---\n // `MatchTypeCustomData.TRUE` and `MatchTypeCustomData.FALSE` do not use condition value\n // so we can safely assume that `this.conditionValue` is a string at this point\n const conditionValue = this.conditionValue as string;\n\n // --- Note ---\n // `AMONG_VALUES` is checked separately to avoid recursion overhead\n // for `JSON.parse` inside `this.parseArray`\n if (this.matchType === MatchTypeCustomData.AMONG_VALUES) {\n const result = this.parseArray(conditionValue);\n\n if (!result.ok) {\n this.error = result.error;\n\n return false;\n }\n\n const resultData = new Set(result.data);\n\n return Array.isArray(customDataValue)\n ? customDataValue.some((value) => resultData.has(value))\n : result.data.includes(customDataValue);\n }\n\n if (Array.isArray(customDataValue)) {\n return customDataValue.some((value) => this.checkCondition(value));\n }\n\n switch (this.matchType) {\n case MatchTypeCustomData.CONTAINS:\n return customDataValue.includes(conditionValue);\n case MatchTypeCustomData.EXACT:\n return customDataValue === this.conditionValue;\n case MatchTypeCustomData.REGULAR_EXPRESSION:\n return Utilities.parseRegExp(conditionValue).test(customDataValue);\n case MatchTypeCustomData.LOWER:\n return Number(customDataValue) < Number(this.conditionValue);\n case MatchTypeCustomData.EQUAL:\n return Number(customDataValue) === Number(this.conditionValue);\n case MatchTypeCustomData.GREATER:\n return Number(customDataValue) > Number(this.conditionValue);\n case MatchTypeCustomData.TRUE:\n return customDataValue.toLowerCase() === 'true';\n case MatchTypeCustomData.FALSE:\n return customDataValue.toLowerCase() === 'false';\n default:\n return false;\n }\n }\n\n private parseArray(value: string): Result<string[], KameleoonError> {\n try {\n const result = JSON.parse(value);\n\n if (Array.isArray(result)) {\n return Ok(result);\n }\n } catch (err) {\n return Err(\n new KameleoonError(KameleoonException.AmongValuesCheck, err, value),\n );\n }\n\n return Ok([]);\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kameleoon/javascript-sdk-core",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.2",
|
|
4
4
|
"description": "Kameleoon JS SDK Core",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"@types/crypto-js": "^4.1.1",
|
|
45
45
|
"@types/jest": "^27.0.2",
|
|
46
46
|
"@types/node": "^14.17.5",
|
|
47
|
-
"@types/node-fetch": "^2.6.
|
|
47
|
+
"@types/node-fetch": "^2.6.4",
|
|
48
48
|
"jest": "^27.3.1",
|
|
49
|
-
"node-fetch": "2.
|
|
49
|
+
"node-fetch": "2.7.0",
|
|
50
50
|
"ts-jest": "^27.0.7",
|
|
51
51
|
"tsc-alias": "^1.8.7"
|
|
52
52
|
}
|