@kameleoon/javascript-sdk 4.5.0 → 4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Change Log
2
2
 
3
+ ## 4.6.0 (2025-02-26)
4
+
5
+ ### Features
6
+
7
+ - Added new parameter `stubMode` to `SDKParameters` for create `KameleoonClient`. This parameter enables a no-operation mode for the client, which is particularly useful for disabling external interactions in controlled environments.
8
+ - Added SDK support for **Mutually Exclusive Groups**. When feature flags are grouped into a **Mutually Exclusive Group**, only one flag in the group will be evaluated at a time. All other flags in the group will automatically return their default variation.
9
+
10
+ ### Patch Changes
11
+
12
+ - Fixed validation for the [`networkDomain`][configurationParameters] parameter.
13
+ - Updated dependencies
14
+ - @kameleoon/javascript-sdk-core@5.6.0
15
+
3
16
  ## 4.5.0 (2025-02-10)
4
17
 
5
18
  ### Features
@@ -8,7 +8,7 @@ export declare class KameleoonClient extends KameleoonCore {
8
8
  private domain?;
9
9
  private internalVisitorCodeManager;
10
10
  private externalVisitorCodeManager;
11
- constructor({ siteCode, configuration, externals, _internals, }: SDKParameters);
11
+ constructor({ siteCode, configuration, externals, _internals, stubMode, }: SDKParameters);
12
12
  /**
13
13
  * @method getVisitorCode - obtains visitor code from the browser cookie, if the visitor code doesn't yet exist generates a random visitor code (or uses a provided default) and sets a new visitor code to cookie
14
14
  * @param {string | undefined} defaultVisitorCode - visitor code to be used in case there is no visitor code in cookies *Note*: if not passed visitor code will be randomly generated
@@ -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");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}=a;const f=(null===e||void 0===e?void 0:e.prng)||new _prng.KameleoonPRNG,g=(null===d||void 0===d?void 0:d.storage)||new _storage.DataStorage,h=(null===d||void 0===d?void 0:d.requester)||new _requester.Requester,i=(null===d||void 0===d?void 0:d.eventSource)||new _eventSource.KameleoonEventSource,j=new _javascriptSdkCore.VisitorCodeManager,k=(null===d||void 0===d?void 0:d.visitorCodeManager)||new _visitorCodeManager.KameleoonVisitorCodeManager,l=(null===e||void 0===e?void 0:e.packageInfo)||{type:_javascriptSdkCore.SdkLanguageType.JAVASCRIPT,version:"4.5.0",isServer:!1},m={externalPRNG:f,externalStorage:g,externalRequester:h,externalEventSource:i,externalVisitorCodeManager:j,externalPackageInfo:l,externalLogger:(null===d||void 0===d?void 0:d.logger)||new _defaultLogger.DefaultLogger};super({siteCode:b,configuration:c,internalConfiguration:{externals:m,settings:{useAbortController:!0}}}),_defineProperty(this,"domain",void 0),_defineProperty(this,"internalVisitorCodeManager",void 0),_defineProperty(this,"externalVisitorCodeManager",void 0);const n=_javascriptSdkCore.Validator.validateDomain(null===c||void 0===c?void 0:c.cookieDomain);this.domain=n.ok?n.data:void 0,this.internalVisitorCodeManager=j,this.externalVisitorCodeManager=k}getVisitorCode(a){_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);return _javascriptSdkCore.KameleoonLogger.info`RETURN KamaleoonClient.getVisitorCode(defaultVisitorCode: ${a}) -> (visitorCode: ${b})`,b}setLegalConsent(a,b){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");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),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.6.0",isServer:!1},n={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};super({siteCode:b,configuration:c,internalConfiguration:{externals:n,settings:{useAbortController:!0}}}),_defineProperty(this,"domain",void 0),_defineProperty(this,"internalVisitorCodeManager",void 0),_defineProperty(this,"externalVisitorCodeManager",void 0);const o=_javascriptSdkCore.Validator.validateDomain(null===c||void 0===c?void 0:c.cookieDomain);this.domain=o.ok?o.data:void 0,this.internalVisitorCodeManager=k,this.externalVisitorCodeManager=l}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);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/types.d.ts CHANGED
@@ -18,12 +18,14 @@ export type ExternalsType = {
18
18
  * @param {Partial<SDKConfigurationType> | undefined} configuration - client's configuration
19
19
  * @param {ExternalsType | undefined} externals - external dependencies
20
20
  * @param {InternalsType | undefined} _internals - internal dependencies used by consumer packages (React/React Native SDK)
21
+ * @param {boolean | undefined} stubMode - When set to true, the client will operate in stub mode and perform no operations. In this mode, all method calls become no-ops, ensuring that no external actions or side effects occur.
21
22
  * */
22
23
  export type SDKParameters = {
23
24
  siteCode: string;
24
25
  configuration?: Partial<SDKConfigurationType>;
25
26
  externals?: ExternalsType;
26
27
  _internals?: InternalsType;
28
+ stubMode?: boolean;
27
29
  };
28
30
  export type SetDataParametersType = {
29
31
  visitorCode: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kameleoon/javascript-sdk",
3
- "version": "4.5.0",
3
+ "version": "4.6.0",
4
4
  "description": "Kameleoon JavaScript SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,7 +38,7 @@
38
38
  ],
39
39
  "license": "ISC",
40
40
  "dependencies": {
41
- "@kameleoon/javascript-sdk-core": "5.5.0"
41
+ "@kameleoon/javascript-sdk-core": "5.6.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/crypto-js": "^4.1.1",