@kameleoon/javascript-sdk 3.3.0 → 3.4.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 +16 -0
- package/dist/kameleoonClient.d.ts +6 -6
- package/dist/kameleoonClient.js +1 -1
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/requester.d.ts +3 -8
- package/dist/requester.js +1 -1
- package/dist/requester.js.map +1 -1
- package/dist/storage.d.ts +2 -0
- package/dist/storage.js +1 -1
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.js.map +1 -1
- package/dist/visitorCodeManager.d.ts +0 -1
- package/dist/visitorCodeManager.js +1 -1
- package/dist/visitorCodeManager.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 3.4.0 (2024-06-21)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Added new [`networkDomain`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk/#1-initializing-the-kameleoon-client) parameter in `SDKConfigurationType` for configuring custom network domain for all outgoing requests.
|
|
8
|
+
- [`SDKConfigurationType`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk/#1-initializing-the-kameleoon-client) parameter `domain` was deprecated and will be removed in the next major version. Instead new `cookieDomain` is available.
|
|
9
|
+
- Added new optional [External Dependency](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#external-dependencies) - [Requester](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#requester) for implementing custom network request handler
|
|
10
|
+
- Added new `KameleoonUtils` methods:
|
|
11
|
+
- [`getCookieValue`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getcookievalue) for extracting cookie value from cookie string
|
|
12
|
+
- [`simulateSuccessRequest`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#simulatesuccessrequest) for mocking successful network requests when implementing custom `Requester`
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
- @kameleoon/javascript-sdk-core@4.4.0
|
|
18
|
+
|
|
3
19
|
## 3.3.0 (2024-05-24)
|
|
4
20
|
|
|
5
21
|
### Features
|
|
@@ -8,17 +8,17 @@ 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, }: SDKParameters);
|
|
12
12
|
/**
|
|
13
13
|
* @method initialize - an asynchronous method for KameleoonClient initialization by fetching Kameleoon SDK related data from server or by retrieving data from local source if data is up-to-date or update interval has not been reached
|
|
14
14
|
* @param {boolean | undefined} useCache - optional parameter for activating SDK offline mode, if `true` is passed failed polls will not return error and will use cached data if such data is available, default value is `false`. Note: if offline mode is on, SDK will still try to retrieve the latest data.
|
|
15
15
|
* @returns {Promise<boolean>} Promise resolved into boolean field indicating success or fail
|
|
16
16
|
* @throws `KameleoonError` with one of the following `type` s:
|
|
17
17
|
*
|
|
18
|
-
* - `KameleoonException.StorageWrite` Couldn't update storage data
|
|
18
|
+
* - `KameleoonException.StorageWrite` - Couldn't update storage data
|
|
19
19
|
* - `KameleoonException.StorageRead` - Couldn't read storage data
|
|
20
|
-
* - `KameleoonException.ClientConfiguration` Couldn't retrieve client configuration from Kameleoon Api
|
|
21
|
-
* - `KameleoonException.MaximumRetriesReached` Maximum retries reached, request failed
|
|
20
|
+
* - `KameleoonException.ClientConfiguration` - Couldn't retrieve client configuration from Kameleoon Api
|
|
21
|
+
* - `KameleoonException.MaximumRetriesReached` - Maximum retries reached, request failed
|
|
22
22
|
*/
|
|
23
23
|
initialize(useCache?: boolean): Promise<boolean>;
|
|
24
24
|
/**
|
|
@@ -28,7 +28,7 @@ export declare class KameleoonClient extends KameleoonCore {
|
|
|
28
28
|
* @throws `KameleoonError` with one of the following `type` s:
|
|
29
29
|
*
|
|
30
30
|
* - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded
|
|
31
|
-
* - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
|
|
31
|
+
* - `KameleoonException.VisitorCodeEmpty` - The visitor code is empty
|
|
32
32
|
*/
|
|
33
33
|
getVisitorCode(defaultVisitorCode?: string): string;
|
|
34
34
|
/**
|
|
@@ -41,7 +41,7 @@ export declare class KameleoonClient extends KameleoonCore {
|
|
|
41
41
|
* @throws `KameleoonError` with one of the following `type` s:
|
|
42
42
|
*
|
|
43
43
|
* - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded
|
|
44
|
-
* - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
|
|
44
|
+
* - `KameleoonException.VisitorCodeEmpty` - The visitor code is empty
|
|
45
45
|
*/
|
|
46
46
|
setLegalConsent(visitorCode: string, consent: boolean): void;
|
|
47
47
|
}
|
package/dist/kameleoonClient.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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");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),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===d||void 0===d?void 0:d.storage)||new _storage.DataStorage,g=(null===d||void 0===d?void 0:d.
|
|
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");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),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===d||void 0===d?void 0:d.storage)||new _storage.DataStorage,g=(null===d||void 0===d?void 0:d.requester)||new _requester.Requester,h=(null===d||void 0===d?void 0:d.eventSource)||new _eventSource.KameleoonEventSource,i=new _javascriptSdkCore.VisitorCodeManager,j=(null===d||void 0===d?void 0:d.visitorCodeManager)||new _visitorCodeManager.KameleoonVisitorCodeManager;super({siteCode:b,configuration:c,internalConfiguration:{externalStorage:f,externalRequester:g,externalEventSource:h,externalVisitorCodeManager:i,externalPackageInfo:e||{type:_javascriptSdkCore.SdkLanguageType.JAVASCRIPT,version:"3.4.0"}}}),_defineProperty(this,"domain",void 0),_defineProperty(this,"internalVisitorCodeManager",void 0),_defineProperty(this,"externalVisitorCodeManager",void 0),this.domain=(null===c||void 0===c?void 0:c.cookieDomain)||(null===c||void 0===c?void 0:c.domain),this.internalVisitorCodeManager=i,this.externalVisitorCodeManager=j}async initialize(a){return super.initialize(a)}getVisitorCode(a){return this.internalVisitorCodeManager.getData=a=>this.externalVisitorCodeManager.getData(a),this.internalVisitorCodeManager.setData=a=>{this.externalVisitorCodeManager.setData(_objectSpread(_objectSpread({},a),{},{domain:this.domain}))},this.internalVisitorCodeManager.getVisitorCode(a)}setLegalConsent(a,b){super.setUserConsent({visitorCode:a,consent:b,setData:a=>{this.externalVisitorCodeManager.setData(_objectSpread(_objectSpread({},a),{},{domain:this.domain}))}})}}exports.KameleoonClient=KameleoonClient;
|
|
2
2
|
//# sourceMappingURL=kameleoonClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","KameleoonCore","constructor","a","siteCode","configuration","externals","_internals","storage","DataStorage","
|
|
1
|
+
{"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","KameleoonCore","constructor","a","siteCode","configuration","externals","_internals","storage","DataStorage","requester","Requester","eventSource","KameleoonEventSource","visitorCodeManager","VisitorCodeManager","externalVisitorCodeManager","KameleoonVisitorCodeManager","internalConfiguration","externalStorage","externalRequester","externalEventSource","externalPackageInfo","type","SdkLanguageType","JAVASCRIPT","version","_defineProperty","domain","cookieDomain","internalVisitorCodeManager","initialize","useCache","getVisitorCode","defaultVisitorCode","getData","key","setData","parameters","_objectSpread","setLegalConsent","visitorCode","consent","setUserConsent","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import {\n SdkLanguageType,\n KameleoonCore,\n VisitorCodeManager,\n IVisitorCodeManager,\n SetDataCallbackParametersType,\n} from '@kameleoon/javascript-sdk-core';\nimport { Requester } from './requester';\nimport { DataStorage } from './storage';\nimport { KameleoonEventSource } from './eventSource';\nimport { KameleoonVisitorCodeManager } from './visitorCodeManager';\nimport { IExternalVisitorCodeManager, SDKParameters } from './types';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * */\nexport class KameleoonClient extends KameleoonCore {\n private domain?: string;\n private internalVisitorCodeManager: IVisitorCodeManager;\n private externalVisitorCodeManager: IExternalVisitorCodeManager;\n\n constructor({\n siteCode,\n configuration,\n externals,\n _internals,\n }: SDKParameters) {\n const storage = externals?.storage || new DataStorage();\n const requester = externals?.requester || new Requester();\n const eventSource = externals?.eventSource || new KameleoonEventSource();\n const visitorCodeManager = new VisitorCodeManager();\n const externalVisitorCodeManager =\n externals?.visitorCodeManager || new KameleoonVisitorCodeManager();\n\n super({\n siteCode,\n configuration,\n internalConfiguration: {\n externalStorage: storage,\n externalRequester: requester,\n externalEventSource: eventSource,\n externalVisitorCodeManager: visitorCodeManager,\n externalPackageInfo: _internals || {\n type: SdkLanguageType.JAVASCRIPT,\n version: process.env.npm_package_version as string,\n },\n },\n });\n\n this.domain = configuration?.cookieDomain || configuration?.domain;\n this.internalVisitorCodeManager = visitorCodeManager;\n this.externalVisitorCodeManager = externalVisitorCodeManager;\n }\n\n /**\n * @method initialize - an asynchronous method for KameleoonClient initialization by fetching Kameleoon SDK related data from server or by retrieving data from local source if data is up-to-date or update interval has not been reached\n * @param {boolean | undefined} useCache - optional parameter for activating SDK offline mode, if `true` is passed failed polls will not return error and will use cached data if such data is available, default value is `false`. Note: if offline mode is on, SDK will still try to retrieve the latest data.\n * @returns {Promise<boolean>} Promise resolved into boolean field indicating success or fail\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.StorageWrite` - Couldn't update storage data\n * - `KameleoonException.StorageRead` - Couldn't read storage data\n * - `KameleoonException.ClientConfiguration` - Couldn't retrieve client configuration from Kameleoon Api\n * - `KameleoonException.MaximumRetriesReached` - Maximum retries reached, request failed\n */\n public async initialize(useCache?: boolean): Promise<boolean> {\n return super.initialize(useCache);\n }\n\n /**\n * @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\n * @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\n * @returns {string} result visitor code\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` - The visitor code is empty\n */\n public getVisitorCode(defaultVisitorCode?: string): string {\n this.internalVisitorCodeManager.getData = (key: string) =>\n this.externalVisitorCodeManager.getData(key);\n\n this.internalVisitorCodeManager.setData = (\n parameters: SetDataCallbackParametersType,\n ) => {\n this.externalVisitorCodeManager.setData({\n ...parameters,\n domain: this.domain,\n });\n };\n\n return this.internalVisitorCodeManager.getVisitorCode(defaultVisitorCode);\n }\n\n /**\n * @method setLegalConsent - sets or updates the legal consent status for a visitor identified by their unique visitor code, affecting values in the response cookies based on the consent status\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {boolean} consent - a value representing the legal consent status. - 'true' indicates the\n * visitor has given legal consent. - 'false' indicates the visitor has withdrawn or not\n * provided legal consent.\n * @returns {void}\n * @throws `KameleoonError` with one of the following `type` s:\n *\n * - `KameleoonException.VisitorCodeMaxLength` - The visitor code length was exceeded\n * - `KameleoonException.VisitorCodeEmpty` - The visitor code is empty\n */\n public setLegalConsent(visitorCode: string, consent: boolean): void {\n super.setUserConsent({\n visitorCode,\n consent,\n setData: (parameters: SetDataCallbackParametersType): void => {\n this.externalVisitorCodeManager.setData({\n ...parameters,\n domain: this.domain,\n });\n },\n });\n }\n}\n"],"mappings":"m6CAiBO,KAAM,CAAAA,eAAe,QAAS,CAAAC,gCAAc,CAKjDC,WAAWA,CAAAC,CAAA,CAKO,IALN,CACVC,QAAQ,CAARA,CAAQ,CACRC,aAAa,CAAbA,CAAa,CACbC,SAAS,CAATA,CAAS,CACTC,UAAU,CAAVA,CACa,CAAC,CAAAJ,CAAA,MACR,CAAAK,CAAO,CAAG,QAAAF,CAAS,WAATA,CAAS,QAATA,CAAS,CAAEE,OAAO,GAAI,GAAI,CAAAC,oBAAa,CACjDC,CAAS,CAAG,QAAAJ,CAAS,WAATA,CAAS,QAATA,CAAS,CAAEI,SAAS,GAAI,GAAI,CAAAC,oBAAW,CACnDC,CAAW,CAAG,QAAAN,CAAS,WAATA,CAAS,QAATA,CAAS,CAAEM,WAAW,GAAI,GAAI,CAAAC,iCAAsB,CAClEC,CAAkB,CAAG,GAAI,CAAAC,qCAAoB,CAC7CC,CAA0B,CAC9B,QAAAV,CAAS,WAATA,CAAS,QAATA,CAAS,CAAEQ,kBAAkB,GAAI,GAAI,CAAAG,+CAA6B,CAEpE,KAAK,CAAC,CACJb,QAAQ,CAARA,CAAQ,CACRC,aAAa,CAAbA,CAAa,CACba,qBAAqB,CAAE,CACrBC,eAAe,CAAEX,CAAO,CACxBY,iBAAiB,CAAEV,CAAS,CAC5BW,mBAAmB,CAAET,CAAW,CAChCI,0BAA0B,CAAEF,CAAkB,CAC9CQ,mBAAmB,CAAEf,CAAU,EAAI,CACjCgB,IAAI,CAAEC,kCAAe,CAACC,UAAU,CAChCC,OAAO,QACT,CACF,CACF,CAAC,CAAC,CAAAC,eAAA,uBAAAA,eAAA,2CAAAA,eAAA,2CAEF,IAAI,CAACC,MAAM,CAAG,QAAAvB,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAEwB,YAAY,WAAIxB,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAEuB,MAAM,EAClE,IAAI,CAACE,0BAA0B,CAAGhB,CAAkB,CACpD,IAAI,CAACE,0BAA0B,CAAGA,CACpC,CAaA,KAAa,CAAAe,UAAUA,CAACC,CAAkB,CAAoB,CAC5D,MAAO,MAAK,CAACD,UAAU,CAACC,CAAQ,CAClC,CAWOC,cAAcA,CAACC,CAA2B,CAAU,CAazD,MAZA,KAAI,CAACJ,0BAA0B,CAACK,OAAO,CAAIC,CAAW,EACpD,IAAI,CAACpB,0BAA0B,CAACmB,OAAO,CAACC,CAAG,CAAC,CAE9C,IAAI,CAACN,0BAA0B,CAACO,OAAO,CACrCC,CAAyC,EACtC,CACH,IAAI,CAACtB,0BAA0B,CAACqB,OAAO,CAAAE,aAAA,CAAAA,aAAA,IAClCD,CAAU,MACbV,MAAM,CAAE,IAAI,CAACA,MAAM,EACpB,CACH,CAAC,CAEM,IAAI,CAACE,0BAA0B,CAACG,cAAc,CAACC,CAAkB,CAC1E,CAcOM,eAAeA,CAACC,CAAmB,CAAEC,CAAgB,CAAQ,CAClE,KAAK,CAACC,cAAc,CAAC,CACnBF,WAAW,CAAXA,CAAW,CACXC,OAAO,CAAPA,CAAO,CACPL,OAAO,CAAGC,CAAyC,EAAW,CAC5D,IAAI,CAACtB,0BAA0B,CAACqB,OAAO,CAAAE,aAAA,CAAAA,aAAA,IAClCD,CAAU,MACbV,MAAM,CAAE,IAAI,CAACA,MAAM,EACpB,CACH,CACF,CAAC,CACH,CACF,CAACgB,OAAA,CAAA5C,eAAA,CAAAA,eAAA"}
|
package/dist/requester.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class
|
|
3
|
-
|
|
4
|
-
constructor(timeout: number);
|
|
5
|
-
track({ url, headers, body, }: TrackParametersType): Promise<boolean>;
|
|
6
|
-
getClientConfiguration(url: string, headers: HeadersType): Promise<JSONType>;
|
|
7
|
-
getRemoteData(url: string): Promise<JSONType>;
|
|
8
|
-
private sendRequest;
|
|
1
|
+
import { RequestType, IExternalRequester, KameleoonResponseType, SendRequestParametersType } from '@kameleoon/javascript-sdk-core';
|
|
2
|
+
export declare class Requester implements IExternalRequester {
|
|
3
|
+
sendRequest({ url, parameters, }: SendRequestParametersType<RequestType>): Promise<KameleoonResponseType>;
|
|
9
4
|
}
|
package/dist/requester.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Requester=void 0;class Requester{async sendRequest(a){let{url:b,parameters:c}=a;return await fetch(b,c)}}exports.Requester=Requester;
|
|
2
2
|
//# sourceMappingURL=requester.js.map
|
package/dist/requester.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requester.js","names":["
|
|
1
|
+
{"version":3,"file":"requester.js","names":["Requester","sendRequest","a","url","parameters","fetch","exports"],"sources":["../src/requester.ts"],"sourcesContent":["import {\n RequestType,\n IExternalRequester,\n KameleoonResponseType,\n SendRequestParametersType,\n} from '@kameleoon/javascript-sdk-core';\n\nexport class Requester implements IExternalRequester {\n public async sendRequest({\n url,\n parameters,\n }: SendRequestParametersType<RequestType>): Promise<KameleoonResponseType> {\n return await fetch(url, parameters);\n }\n}\n"],"mappings":"6FAOO,KAAM,CAAAA,SAAwC,CACnD,KAAa,CAAAC,WAAWA,CAAAC,CAAA,CAGmD,IAHlD,CACvBC,GAAG,CAAHA,CAAG,CACHC,UAAU,CAAVA,CACsC,CAAC,CAAAF,CAAA,CACvC,MAAO,MAAM,CAAAG,KAAK,CAACF,CAAG,CAAEC,CAAU,CACpC,CACF,CAACE,OAAA,CAAAN,SAAA,CAAAA,SAAA"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { IExternalStorage } from '@kameleoon/javascript-sdk-core';
|
|
2
2
|
export declare class DataStorage<T> implements IExternalStorage<T> {
|
|
3
|
+
private visitorCodeManager?;
|
|
3
4
|
read(key: string): T | null;
|
|
4
5
|
write(key: string, data: T): void;
|
|
6
|
+
private getEngineConsentData;
|
|
5
7
|
}
|
package/dist/storage.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataStorage=void 0;class DataStorage{read(a){const b=localStorage.getItem(a);return
|
|
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),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;
|
|
2
2
|
//# sourceMappingURL=storage.js.map
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","names":["DataStorage","read","key","data","localStorage","getItem","JSON","parse","write","setItem","stringify","exports"],"sources":["../src/storage.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"storage.js","names":["DataStorage","constructor","_defineProperty","read","key","data","localStorage","getItem","KameleoonStorageKey","ConsentData","engineConsent","getEngineConsentData","JSON","parse","write","setItem","stringify","visitorCodeManager","KameleoonVisitorCodeManager","visitorCode","getData","VisitorCode","b","engineConsentData","value","AB_TESTING","_","exports"],"sources":["../src/storage.ts"],"sourcesContent":["import {\n IExternalStorage,\n KameleoonStorageKey,\n} from '@kameleoon/javascript-sdk-core';\nimport { KameleoonVisitorCodeManager } from './visitorCodeManager';\nimport { EngineConsentDataType } from './types';\n\n// --- Note ---\n// Named `DataStorage` to avoid collision with `Storage` from `window` API\nexport class DataStorage<T> implements IExternalStorage<T> {\n private visitorCodeManager?: KameleoonVisitorCodeManager;\n\n public read(key: string): T | null {\n const data = localStorage.getItem(key);\n\n if (!data) {\n if (key === KameleoonStorageKey.ConsentData) {\n const engineConsent = this.getEngineConsentData();\n\n if (engineConsent) {\n return engineConsent;\n }\n }\n\n return null;\n }\n\n return JSON.parse(data);\n }\n\n public write(key: string, data: T): void {\n localStorage.setItem(key, JSON.stringify(data));\n }\n\n private getEngineConsentData(): T | null {\n if (!this.visitorCodeManager) {\n this.visitorCodeManager = new KameleoonVisitorCodeManager();\n }\n\n const visitorCode = this.visitorCodeManager.getData(\n KameleoonStorageKey.VisitorCode,\n );\n\n if (!visitorCode) {\n return null;\n }\n\n try {\n const engineConsentData = localStorage.getItem('kameleoonLegalConsent');\n\n if (!engineConsentData) {\n return null;\n }\n\n const engineConsent: EngineConsentDataType =\n JSON.parse(engineConsentData);\n\n if (typeof engineConsent?.value?.AB_TESTING === 'boolean') {\n return { [visitorCode]: engineConsent.value.AB_TESTING } as T;\n }\n\n return null;\n } catch (_) {\n return null;\n }\n }\n}\n"],"mappings":"utBASO,KAAM,CAAAA,WAA8C,CAAAC,YAAA,EAAAC,eAAA,mCAGlDC,IAAIA,CAACC,CAAW,CAAY,CACjC,KAAM,CAAAC,CAAI,CAAGC,YAAY,CAACC,OAAO,CAACH,CAAG,CAAC,CAEtC,GAAI,CAACC,CAAI,CAAE,CACT,GAAID,CAAG,GAAKI,sCAAmB,CAACC,WAAW,CAAE,CAC3C,KAAM,CAAAC,CAAa,CAAG,IAAI,CAACC,oBAAoB,CAAC,CAAC,CAEjD,GAAID,CAAa,CACf,MAAO,CAAAA,CAEX,CAEA,MAAO,KACT,CAEA,MAAO,CAAAE,IAAI,CAACC,KAAK,CAACR,CAAI,CACxB,CAEOS,KAAKA,CAACV,CAAW,CAAEC,CAAO,CAAQ,CACvCC,YAAY,CAACS,OAAO,CAACX,CAAG,CAAEQ,IAAI,CAACI,SAAS,CAACX,CAAI,CAAC,CAChD,CAEQM,oBAAoBA,CAAA,CAAa,CAClC,IAAI,CAACM,kBAAkB,GAC1B,IAAI,CAACA,kBAAkB,CAAG,GAAI,CAAAC,+CAA6B,EAG7D,KAAM,CAAAC,CAAW,CAAG,IAAI,CAACF,kBAAkB,CAACG,OAAO,CACjDZ,sCAAmB,CAACa,WACtB,CAAC,CAED,GAAI,CAACF,CAAW,CACd,MAAO,KAAI,CAGb,GAAI,KAAAG,CAAA,CACF,KAAM,CAAAC,CAAiB,CAAGjB,YAAY,CAACC,OAAO,CAAC,uBAAuB,CAAC,CAEvE,GAAI,CAACgB,CAAiB,CACpB,MAAO,KAAI,CAGb,KAAM,CAAAb,CAAoC,CACxCE,IAAI,CAACC,KAAK,CAACU,CAAiB,CAAC,CAAC,MAEgB,SAAS,EAArD,cAAOb,CAAa,WAAbA,CAAa,UAAAY,CAAA,CAAbZ,CAAa,CAAEc,KAAK,YAAAF,CAAA,QAApBA,CAAA,CAAsBG,UAAU,CAAc,CAChD,CAAE,CAACN,CAAW,EAAGT,CAAa,CAACc,KAAK,CAACC,UAAW,CAAC,CAGnD,IACT,CAAE,MAAOC,CAAC,CAAE,CACV,MAAO,KACT,CACF,CACF,CAACC,OAAA,CAAA3B,WAAA,CAAAA,WAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { ExternalPackageInfoType, IExternalEventSource, IExternalStorage, SDKConfigurationType } from '@kameleoon/javascript-sdk-core';
|
|
1
|
+
import { ExternalPackageInfoType, IExternalEventSource, IExternalRequester, IExternalStorage, SDKConfigurationType } from '@kameleoon/javascript-sdk-core';
|
|
2
2
|
/**
|
|
3
3
|
* @param {IExternalStorage | undefined} storage - external storage implementation
|
|
4
4
|
* @param {IExternalEventSource | undefined} eventSource - external event source implementation
|
|
5
5
|
* @param {IExternalVisitorCodeManager | undefined} visitorCodeManager - external visitor code manager implementation
|
|
6
|
+
* @param {IExternalRequester | undefined} requester - external requester implementation
|
|
6
7
|
* */
|
|
7
8
|
export type ExternalsType = {
|
|
8
9
|
storage?: IExternalStorage;
|
|
10
|
+
requester?: IExternalRequester;
|
|
9
11
|
eventSource?: IExternalEventSource;
|
|
10
12
|
visitorCodeManager?: IExternalVisitorCodeManager;
|
|
11
13
|
};
|
|
@@ -31,6 +33,11 @@ export interface IExternalVisitorCodeManager {
|
|
|
31
33
|
getData: (key: string) => string | null;
|
|
32
34
|
setData: (params: SetDataParametersType) => void;
|
|
33
35
|
}
|
|
36
|
+
export type EngineConsentDataType = {
|
|
37
|
+
value?: {
|
|
38
|
+
AB_TESTING?: boolean;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
34
41
|
export type GetResultCookieParametersType = {
|
|
35
42
|
visitorCode: string;
|
|
36
43
|
domain?: string;
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import {\n ExternalPackageInfoType,\n IExternalEventSource,\n IExternalStorage,\n SDKConfigurationType,\n} from '@kameleoon/javascript-sdk-core';\n\n/**\n * @param {IExternalStorage | undefined} storage - external storage implementation\n * @param {IExternalEventSource | undefined} eventSource - external event source implementation\n * @param {IExternalVisitorCodeManager | undefined} visitorCodeManager - external visitor code manager implementation\n * */\nexport type ExternalsType = {\n storage?: IExternalStorage;\n eventSource?: IExternalEventSource;\n visitorCodeManager?: IExternalVisitorCodeManager;\n};\n\n/**\n * @param {string} siteCode - client's siteCode defined on Kameleoon platform\n * @param {Partial<SDKConfigurationType> | undefined} configuration - client's configuration\n * @param {ExternalsType | undefined} externals - external dependencies\n * */\nexport type SDKParameters = {\n siteCode: string;\n configuration?: Partial<SDKConfigurationType>;\n externals?: ExternalsType;\n _internals?: ExternalPackageInfoType;\n};\n\nexport type SetDataParametersType = {\n visitorCode: string;\n key: string;\n domain?: string;\n maxAge: number;\n path: string;\n};\n\nexport interface IExternalVisitorCodeManager {\n getData: (key: string) => string | null;\n setData: (params: SetDataParametersType) => void;\n}\n\nexport type GetResultCookieParametersType = {\n visitorCode: string;\n domain?: string;\n key: string;\n maxAge: number;\n path: string;\n};\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import {\n ExternalPackageInfoType,\n IExternalEventSource,\n IExternalRequester,\n IExternalStorage,\n SDKConfigurationType,\n} from '@kameleoon/javascript-sdk-core';\n\n/**\n * @param {IExternalStorage | undefined} storage - external storage implementation\n * @param {IExternalEventSource | undefined} eventSource - external event source implementation\n * @param {IExternalVisitorCodeManager | undefined} visitorCodeManager - external visitor code manager implementation\n * @param {IExternalRequester | undefined} requester - external requester implementation\n * */\nexport type ExternalsType = {\n storage?: IExternalStorage;\n requester?: IExternalRequester;\n eventSource?: IExternalEventSource;\n visitorCodeManager?: IExternalVisitorCodeManager;\n};\n\n/**\n * @param {string} siteCode - client's siteCode defined on Kameleoon platform\n * @param {Partial<SDKConfigurationType> | undefined} configuration - client's configuration\n * @param {ExternalsType | undefined} externals - external dependencies\n * */\nexport type SDKParameters = {\n siteCode: string;\n configuration?: Partial<SDKConfigurationType>;\n externals?: ExternalsType;\n _internals?: ExternalPackageInfoType;\n};\n\nexport type SetDataParametersType = {\n visitorCode: string;\n key: string;\n domain?: string;\n maxAge: number;\n path: string;\n};\n\nexport interface IExternalVisitorCodeManager {\n getData: (key: string) => string | null;\n setData: (params: SetDataParametersType) => void;\n}\n\nexport type EngineConsentDataType = {\n value?: { AB_TESTING?: boolean };\n};\n\nexport type GetResultCookieParametersType = {\n visitorCode: string;\n domain?: string;\n key: string;\n maxAge: number;\n path: string;\n};\n"],"mappings":""}
|
|
@@ -2,7 +2,6 @@ import { IExternalVisitorCodeManager, SetDataParametersType } from './types';
|
|
|
2
2
|
declare class VisitorCodeManager implements IExternalVisitorCodeManager {
|
|
3
3
|
getData(key: string): string | null;
|
|
4
4
|
setData({ visitorCode, domain, maxAge, key, path, }: SetDataParametersType): void;
|
|
5
|
-
private getCookieVisitorCode;
|
|
6
5
|
private getResultCookie;
|
|
7
6
|
}
|
|
8
7
|
export { VisitorCodeManager as KameleoonVisitorCodeManager };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonVisitorCodeManager=void 0;var _constants=require("./constants"),_javascriptSdkCore=require("@kameleoon/javascript-sdk-core");class VisitorCodeManager{getData(a){const b=document.cookie;return b?_javascriptSdkCore.KameleoonUtils.getCookieValue(b,a):null}setData(a){let{visitorCode:b,domain:c,maxAge:d,key:e,path:f}=a;const g=this.getResultCookie({domain:c,visitorCode:b,key:e,maxAge:d,path:f});document.cookie=g}getResultCookie(a){let{domain:b,visitorCode:c,maxAge:d,key:e,path:f}=a;const g=[e+_constants.CookieParameter.KeyValueDelimiter+c,_constants.CookieParameter.MaxAge+_constants.CookieParameter.KeyValueDelimiter+d,_constants.CookieParameter.Path+_constants.CookieParameter.KeyValueDelimiter+f];return b&&g.push(_constants.CookieParameter.Domain+_constants.CookieParameter.KeyValueDelimiter+b),g.join(_constants.CookieParameter.PairsDelimiter)}}exports.KameleoonVisitorCodeManager=VisitorCodeManager;
|
|
2
2
|
//# sourceMappingURL=visitorCodeManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitorCodeManager.js","names":["
|
|
1
|
+
{"version":3,"file":"visitorCodeManager.js","names":["VisitorCodeManager","getData","key","cookie","document","KameleoonUtils","getCookieValue","setData","a","visitorCode","domain","maxAge","path","resultCookie","getResultCookie","cookieArray","CookieParameter","KeyValueDelimiter","MaxAge","Path","push","Domain","join","PairsDelimiter","exports","KameleoonVisitorCodeManager"],"sources":["../src/visitorCodeManager.ts"],"sourcesContent":["import {\n GetResultCookieParametersType,\n IExternalVisitorCodeManager,\n SetDataParametersType,\n} from './types';\nimport { CookieParameter } from './constants';\nimport { KameleoonUtils } from '@kameleoon/javascript-sdk-core';\n\nclass VisitorCodeManager implements IExternalVisitorCodeManager {\n public getData(key: string): string | null {\n const cookie = document.cookie;\n\n if (cookie) {\n return KameleoonUtils.getCookieValue(cookie, key);\n }\n\n return null;\n }\n\n public setData({\n visitorCode,\n domain,\n maxAge,\n key,\n path,\n }: SetDataParametersType): void {\n const resultCookie = this.getResultCookie({\n domain,\n visitorCode,\n key,\n maxAge,\n path,\n });\n\n document.cookie = resultCookie;\n }\n\n private getResultCookie({\n domain,\n visitorCode,\n maxAge,\n key,\n path,\n }: GetResultCookieParametersType): string {\n const cookieArray = [\n key + CookieParameter.KeyValueDelimiter + visitorCode,\n CookieParameter.MaxAge + CookieParameter.KeyValueDelimiter + maxAge,\n CookieParameter.Path + CookieParameter.KeyValueDelimiter + path,\n ];\n\n if (domain) {\n cookieArray.push(\n CookieParameter.Domain + CookieParameter.KeyValueDelimiter + domain,\n );\n }\n\n return cookieArray.join(CookieParameter.PairsDelimiter);\n }\n}\n\nexport { VisitorCodeManager as KameleoonVisitorCodeManager };\n"],"mappings":"kNAQA,KAAM,CAAAA,kBAA0D,CACvDC,OAAOA,CAACC,CAAW,CAAiB,CACzC,KAAM,CAAAC,CAAM,CAAGC,QAAQ,CAACD,MAAM,CAAC,MAE3B,CAAAA,CAAM,CACDE,iCAAc,CAACC,cAAc,CAACH,CAAM,CAAED,CAAG,CAAC,CAG5C,IACT,CAEOK,OAAOA,CAAAC,CAAA,CAMkB,IANjB,CACbC,WAAW,CAAXA,CAAW,CACXC,MAAM,CAANA,CAAM,CACNC,MAAM,CAANA,CAAM,CACNT,GAAG,CAAHA,CAAG,CACHU,IAAI,CAAJA,CACqB,CAAC,CAAAJ,CAAA,CACtB,KAAM,CAAAK,CAAY,CAAG,IAAI,CAACC,eAAe,CAAC,CACxCJ,MAAM,CAANA,CAAM,CACND,WAAW,CAAXA,CAAW,CACXP,GAAG,CAAHA,CAAG,CACHS,MAAM,CAANA,CAAM,CACNC,IAAI,CAAJA,CACF,CAAC,CAAC,CAEFR,QAAQ,CAACD,MAAM,CAAGU,CACpB,CAEQC,eAAeA,CAAAN,CAAA,CAMmB,IANlB,CACtBE,MAAM,CAANA,CAAM,CACND,WAAW,CAAXA,CAAW,CACXE,MAAM,CAANA,CAAM,CACNT,GAAG,CAAHA,CAAG,CACHU,IAAI,CAAJA,CAC6B,CAAC,CAAAJ,CAAA,CAC9B,KAAM,CAAAO,CAAW,CAAG,CAClBb,CAAG,CAAGc,0BAAe,CAACC,iBAAiB,CAAGR,CAAW,CACrDO,0BAAe,CAACE,MAAM,CAAGF,0BAAe,CAACC,iBAAiB,CAAGN,CAAM,CACnEK,0BAAe,CAACG,IAAI,CAAGH,0BAAe,CAACC,iBAAiB,CAAGL,CAAI,CAChE,CAQD,MANI,CAAAF,CAAM,EACRK,CAAW,CAACK,IAAI,CACdJ,0BAAe,CAACK,MAAM,CAAGL,0BAAe,CAACC,iBAAiB,CAAGP,CAC/D,CAAC,CAGIK,CAAW,CAACO,IAAI,CAACN,0BAAe,CAACO,cAAc,CACxD,CACF,CAACC,OAAA,CAAAC,2BAAA,CAAAzB,kBAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kameleoon/javascript-sdk",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "Kameleoon JavaScript SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
],
|
|
10
10
|
"scripts": {
|
|
11
11
|
"clean": "rimraf dist && rimraf tsconfig.tsbuildinfo",
|
|
12
|
-
"
|
|
12
|
+
"dev": "npm run clean && tsc -w -p tsconfig.watch.json",
|
|
13
13
|
"build": "npm run clean && npm run build:types && npm run build:js",
|
|
14
14
|
"build:types": "tsc --emitDeclarationOnly",
|
|
15
15
|
"build:js": "babel src --out-dir dist --extensions \".ts,.tsx\" --source-maps true",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
],
|
|
36
36
|
"license": "ISC",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@kameleoon/javascript-sdk-core": "4.
|
|
38
|
+
"@kameleoon/javascript-sdk-core": "4.4.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/crypto-js": "^4.1.1",
|