@kameleoon/javascript-sdk 4.10.0 → 4.11.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/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Change Log
2
2
 
3
+ ## 4.11.0 (2025-06-27)
4
+
5
+ ### Features
6
+
7
+ - Added support for using a Custom Data value for traffic bucketing instead of the default visitor code. [Learn More](https://help.kameleoon.com/create-feature-flag/#Advanced_Flag_Settings).
8
+ - Added support for **304 (Not Modified)** responses from the SDK config service to avoid redundant updates and reduce traffic when the configuration hasn't changed.
9
+ - Added new optional parameter `instant` to the [`flush`][flush] method, allowing data to be sent to the server immediately without waiting for the next scheduled flush cycle.
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+ - @kameleoon/javascript-sdk-core@5.11.0
15
+
16
+ ## 4.10.1 (2025-06-26)
17
+
18
+ ### Patch Changes
19
+
20
+ - Fixed synchronization of the **visitor's legal consent** with the Kameleoon Engine (`engine.js`) when the SDK was initialized before the consent value was set.
21
+ - Fixed a potential error: `Cannot read property 'createCondition' of undefined`, which could occur due to differences in how various JavaScript bundlers or module loaders handle dependency initialization timing.
22
+ - Updated dependencies
23
+ - @kameleoon/javascript-sdk-core@5.10.1
24
+
3
25
  ## 4.10.0 (2025-05-26)
4
26
 
5
27
  ### Features
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core"),_requester=require("./requester"),_storage=require("./storage"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager"),_prng=require("./prng"),_defaultLogger=require("./defaultLogger"),_visitorActivity=require("./visitorActivity"),_constants=require("./constants"),_dataManager=require("./dataManager");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))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||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){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)}class KameleoonClient extends _javascriptSdkCore.KameleoonCore{constructor(a){let{siteCode:b,configuration:c,externals:d,_internals:e,stubMode:f}=a;if(f)return super({siteCode:b,internalConfiguration:{},stubMode:f}),_defineProperty(this,"domain",void 0),_defineProperty(this,"internalVisitorCodeManager",void 0),_defineProperty(this,"externalVisitorCodeManager",void 0),_defineProperty(this,"customDataManager",void 0),this.internalVisitorCodeManager={},void(this.externalVisitorCodeManager={});const g=(null===e||void 0===e?void 0:e.prng)||new _prng.KameleoonPRNG,h=(null===d||void 0===d?void 0:d.storage)||new _storage.DataStorage,i=(null===d||void 0===d?void 0:d.requester)||new _requester.Requester,j=(null===d||void 0===d?void 0:d.eventSource)||new _eventSource.KameleoonEventSource,k=new _javascriptSdkCore.VisitorCodeManager,l=(null===d||void 0===d?void 0:d.visitorCodeManager)||new _visitorCodeManager.KameleoonVisitorCodeManager,m=(null===e||void 0===e?void 0:e.packageInfo)||{type:_javascriptSdkCore.SdkLanguageType.JAVASCRIPT,version:"4.10.0",isServer:!1},n=new _javascriptSdkCore.DataStorage(h,_javascriptSdkCore.KameleoonStorageKey.TargetingData),o=new _javascriptSdkCore.DataStorage(h,_javascriptSdkCore.KameleoonStorageKey.DataInfo),p=new _dataManager.ClientDataManager({dataStorage:n,infoStorage:o,cleanupInterval:0,packageInfo:m}),q={externalPRNG:g,externalStorage:h,externalRequester:i,externalEventSource:j,externalVisitorCodeManager:k,externalPackageInfo:m,externalLogger:(null===d||void 0===d?void 0:d.logger)||new _defaultLogger.DefaultLogger,customDataManager:p};super({siteCode:b,configuration:c,internalConfiguration:{externals:q,settings:{useAbortController:!0}}}),_defineProperty(this,"domain",void 0),_defineProperty(this,"internalVisitorCodeManager",void 0),_defineProperty(this,"externalVisitorCodeManager",void 0),_defineProperty(this,"customDataManager",void 0);const r=_javascriptSdkCore.Validator.validateDomain(null===c||void 0===c?void 0:c.cookieDomain);this.domain=r.ok?r.data:void 0,this.internalVisitorCodeManager=k,this.externalVisitorCodeManager=l;new _visitorActivity.VisitorActivityManager(p,this.tracker,a=>this._isConsentProvided(a),_constants.ACTIVITY_INTERVAL);this.customDataManager=p}getVisitorCode(a){if(this.stubMode)return"";_javascriptSdkCore.KameleoonLogger.info`CALL KamaleoonClient.getVisitorCode(defaultVisitorCode: ${a})`,this.internalVisitorCodeManager.getData=a=>this.externalVisitorCodeManager.getData(a),this.internalVisitorCodeManager.setData=a=>{this.externalVisitorCodeManager.setData(_objectSpread(_objectSpread({},a),{},{domain:this.domain}))};const b=this.internalVisitorCodeManager.getVisitorCode(a);if(this.initialized){var c;null===(c=this.customDataManager)||void 0===c?void 0:c.checkVisitor(b)}return _javascriptSdkCore.KameleoonLogger.info`RETURN KamaleoonClient.getVisitorCode(defaultVisitorCode: ${a}) -> (visitorCode: ${b})`,b}setLegalConsent(a,b){this.stubMode||super.setUserConsent({visitorCode:a,consent:b,setData:a=>{this.externalVisitorCodeManager.setData(_objectSpread(_objectSpread({},a),{},{domain:this.domain}))}})}}exports.KameleoonClient=KameleoonClient;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core"),_requester=require("./requester"),_storage=require("./storage"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager"),_prng=require("./prng"),_defaultLogger=require("./defaultLogger"),_visitorActivity=require("./visitorActivity"),_constants=require("./constants"),_dataManager=require("./dataManager");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))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||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){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)}class KameleoonClient extends _javascriptSdkCore.KameleoonCore{constructor(a){let{siteCode:b,configuration:c,externals:d,_internals:e,stubMode:f}=a;if(f)return super({siteCode:b,internalConfiguration:{},stubMode:f}),_defineProperty(this,"domain",void 0),_defineProperty(this,"internalVisitorCodeManager",void 0),_defineProperty(this,"externalVisitorCodeManager",void 0),_defineProperty(this,"customDataManager",void 0),this.internalVisitorCodeManager={},void(this.externalVisitorCodeManager={});const g=(null===e||void 0===e?void 0:e.prng)||new _prng.KameleoonPRNG,h=(null===d||void 0===d?void 0:d.storage)||new _storage.DataStorage,i=(null===d||void 0===d?void 0:d.requester)||new _requester.Requester,j=(null===d||void 0===d?void 0:d.eventSource)||new _eventSource.KameleoonEventSource,k=new _javascriptSdkCore.VisitorCodeManager,l=(null===d||void 0===d?void 0:d.visitorCodeManager)||new _visitorCodeManager.KameleoonVisitorCodeManager,m=(null===e||void 0===e?void 0:e.packageInfo)||{type:_javascriptSdkCore.SdkLanguageType.JAVASCRIPT,version:"4.11.0",isServer:!1},n=new _javascriptSdkCore.DataStorage(h,_javascriptSdkCore.KameleoonStorageKey.TargetingData),o=new _javascriptSdkCore.DataStorage(h,_javascriptSdkCore.KameleoonStorageKey.DataInfo),p=new _dataManager.ClientDataManager({dataStorage:n,infoStorage:o,cleanupInterval:0,packageInfo:m}),q={externalPRNG:g,externalStorage:h,externalRequester:i,externalEventSource:j,externalVisitorCodeManager:k,externalPackageInfo:m,externalLogger:(null===d||void 0===d?void 0:d.logger)||new _defaultLogger.DefaultLogger,customDataManager:p};super({siteCode:b,configuration:c,internalConfiguration:{externals:q,settings:{useAbortController:!0}}}),_defineProperty(this,"domain",void 0),_defineProperty(this,"internalVisitorCodeManager",void 0),_defineProperty(this,"externalVisitorCodeManager",void 0),_defineProperty(this,"customDataManager",void 0);const r=_javascriptSdkCore.Validator.validateDomain(null===c||void 0===c?void 0:c.cookieDomain);this.domain=r.ok?r.data:void 0,this.internalVisitorCodeManager=k,this.externalVisitorCodeManager=l;new _visitorActivity.VisitorActivityManager(p,this.tracker,a=>this._isConsentProvided(a),_constants.ACTIVITY_INTERVAL);this.customDataManager=p}getVisitorCode(a){if(this.stubMode)return"";_javascriptSdkCore.KameleoonLogger.info`CALL KamaleoonClient.getVisitorCode(defaultVisitorCode: ${a})`,this.internalVisitorCodeManager.getData=a=>this.externalVisitorCodeManager.getData(a),this.internalVisitorCodeManager.setData=a=>{this.externalVisitorCodeManager.setData(_objectSpread(_objectSpread({},a),{},{domain:this.domain}))};const b=this.internalVisitorCodeManager.getVisitorCode(a);if(this.initialized){var c;null===(c=this.customDataManager)||void 0===c?void 0:c.checkVisitor(b)}return _javascriptSdkCore.KameleoonLogger.info`RETURN KamaleoonClient.getVisitorCode(defaultVisitorCode: ${a}) -> (visitorCode: ${b})`,b}setLegalConsent(a,b){this.stubMode||super.setUserConsent({visitorCode:a,consent:b,setData:a=>{this.externalVisitorCodeManager.setData(_objectSpread(_objectSpread({},a),{},{domain:this.domain}))}})}}exports.KameleoonClient=KameleoonClient;
package/dist/storage.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataStorage=void 0;var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core"),_visitorCodeManager=require("./visitorCodeManager");function _defineProperty(a,b,c){return(b=_toPropertyKey(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||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){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)}class DataStorage{constructor(){_defineProperty(this,"visitorCodeManager",void 0)}read(a){const b=localStorage.getItem(a);if(!b){if(a===_javascriptSdkCore.KameleoonStorageKey.ConsentData){const a=this.getEngineConsentData();if(a)return a}return null}return JSON.parse(b)}write(a,b){localStorage.setItem(a,JSON.stringify(b))}getEngineConsentData(){this.visitorCodeManager||(this.visitorCodeManager=new _visitorCodeManager.KameleoonVisitorCodeManager);const a=this.visitorCodeManager.getData(_javascriptSdkCore.KameleoonStorageKey.VisitorCode);if(!a)return null;try{var b;const c=localStorage.getItem("kameleoonLegalConsent");if(!c)return null;const d=JSON.parse(c);return"boolean"==typeof(null===d||void 0===d||null===(b=d.value)||void 0===b?void 0:b.AB_TESTING)?{[a]:d.value.AB_TESTING}:null}catch(_){return null}}}exports.DataStorage=DataStorage;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataStorage=void 0;var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core"),_visitorCodeManager=require("./visitorCodeManager");function _defineProperty(a,b,c){return(b=_toPropertyKey(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||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){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)}class DataStorage{constructor(){_defineProperty(this,"visitorCodeManager",void 0)}read(a){const b=localStorage.getItem(a);return a!==_javascriptSdkCore.KameleoonStorageKey.ConsentData||b&&"{}"!==b?b?JSON.parse(b):null:this.getEngineConsentData()}write(a,b){localStorage.setItem(a,JSON.stringify(b))}getEngineConsentData(){this.visitorCodeManager||(this.visitorCodeManager=new _visitorCodeManager.KameleoonVisitorCodeManager);const a=this.visitorCodeManager.getData(_javascriptSdkCore.KameleoonStorageKey.VisitorCode);if(!a)return null;try{var b;const c=localStorage.getItem("kameleoonLegalConsent");if(!c)return null;const d=JSON.parse(c);return"boolean"==typeof(null===d||void 0===d||null===(b=d.value)||void 0===b?void 0:b.AB_TESTING)?{[a]:d.value.AB_TESTING}:null}catch(_){return null}}}exports.DataStorage=DataStorage;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kameleoon/javascript-sdk",
3
- "version": "4.10.0",
3
+ "version": "4.11.0",
4
4
  "description": "Kameleoon JavaScript SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  "license": "ISC",
41
41
  "dependencies": {
42
- "@kameleoon/javascript-sdk-core": "5.10.0"
42
+ "@kameleoon/javascript-sdk-core": "5.11.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/crypto-js": "^4.1.1",