@kameleoon/javascript-sdk 4.4.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 +30 -1
- package/dist/kameleoonClient.d.ts +1 -1
- package/dist/kameleoonClient.js +1 -1
- package/dist/types.d.ts +2 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## 4.
|
|
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
|
+
|
|
16
|
+
## 4.5.0 (2025-02-10)
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- Added SDK support for **holdout experiments**. Visitors assigned to a holdout experiment are excluded from all other rollouts and experiments, and consistently receive the default variation. For visitors not in a holdout experiment, the standard evaluation process applies, allowing them to be evaluated for all feature flags as usual. Platform-wide release expected in February 2025.
|
|
21
|
+
- Introduced a new `personalization` parameter to [`RemoteVisitorDataFilter`][getRemoteVisitorData]. Default value of the parameter is `false`.
|
|
22
|
+
- The following targeting conditions are now supported:
|
|
23
|
+
- Exclusive Campaign
|
|
24
|
+
- Experiment
|
|
25
|
+
- Personalization
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- Updated dependencies
|
|
30
|
+
- @kameleoon/javascript-sdk-core@5.5.0
|
|
31
|
+
|
|
32
|
+
## 4.4.0 (2025-01-20)
|
|
4
33
|
|
|
5
34
|
### Features
|
|
6
35
|
|
|
@@ -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
|
package/dist/kameleoonClient.js
CHANGED
|
@@ -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;
|
|
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.
|
|
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.
|
|
41
|
+
"@kameleoon/javascript-sdk-core": "5.6.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/crypto-js": "^4.1.1",
|