@kameleoon/javascript-sdk 2.5.2 → 3.0.1

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 ADDED
@@ -0,0 +1,321 @@
1
+ # Change Log
2
+
3
+ ## 3.0.1 (2024-02-21)
4
+
5
+ ### Patch Changes
6
+
7
+ - Added support for additional Data API servers across the world for even faster network requests
8
+ - Updated dependencies
9
+ - @kameleoon/javascript-sdk-core@4.0.1
10
+
11
+ ## 3.0.0 (2024-02-16)
12
+
13
+ ### Breaking Changes
14
+
15
+ - Previously deprecated `KameleoonUtils.getVisitorCode()` was removed
16
+
17
+ ### Features
18
+
19
+ - Added [External Dependencies](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#external-dependencies) capabilities
20
+
21
+ ### Patch Changes
22
+
23
+ - Updated dependencies:
24
+ - @kameleoon/javascript-sdk-core@4.0.0
25
+
26
+ ## 2.5.2 (2024-02-07)
27
+
28
+ ### Bug fixes
29
+
30
+ - Tracking wasn't sent if consent is required
31
+
32
+ ## 2.5.1 (2024-01-29)
33
+
34
+ ### Bug fixes
35
+
36
+ - Context binding in [setLegalConsent](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#setlegalconsent) method
37
+
38
+ ## 2.5.0 (2024-01-18)
39
+
40
+ ### Bug fixes
41
+
42
+ - SDK threw an error reading storage when migrating from older SDK versions
43
+
44
+ ### Features
45
+
46
+ - Added new SDK `configuration` parameter [`requestTimeout`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk/#1-initializing-the-kameleoon-client), which defines maximum time in _milliseconds_ after which any SDK network request will fail
47
+
48
+ ## 2.4.1 (2023-12-15)
49
+
50
+ ### Bug fixes
51
+
52
+ - Fix nonce for `Conversion` data
53
+
54
+ ## 2.4.0 (2023-12-12)
55
+
56
+ ### Features
57
+
58
+ - Updated the [getFeatureFlagVariable](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getfeatureflagvariable) method to return an object of type `FeatureFlagVariableType`
59
+ - Enhanced the [getFeatureFlagVariables](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getfeatureflagvariables) method to include the `key` field in its return value.
60
+
61
+ ### Bug fixes
62
+
63
+ - Custom Data mapping identifier wasn't tracked correctly
64
+
65
+ ## 2.3.0 (2023-12-11)
66
+
67
+ ### Features
68
+
69
+ - [flush](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#flush) and [trackConversion](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#trackConversion) methods now have a new optional parameter `isUniqueIdentifier` used for extra [Kameleoon Cross-device Experimentation](https://developers.kameleoon.com/core-concepts/cross-device-experimentation) capabilities
70
+ - [getVisitorCode](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getvisitorcode) and [setLegalConsent](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#setlegalconsent) methods now have an overload allowing methods to be used without parameters (instead of providing and empty object `{}`)
71
+
72
+ ### Bug fixes
73
+
74
+ - Targeting data cleanup caused `TypeError`
75
+
76
+ ## 2.2.1 (2023-12-04)
77
+
78
+ ### Bug fixes
79
+
80
+ - Client cookie is now set properly
81
+
82
+ ## 2.2.0 (2023-11-30)
83
+
84
+ ### Features
85
+
86
+ - [CustomData session merging](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#using-custom-data-for-session-merging) abilities for [Kameleoon Cross-device Experimentation](https://developers.kameleoon.com/core-concepts/cross-device-experimentation)
87
+
88
+ ## 2.1.0 (2023-11-24)
89
+
90
+ ### Features
91
+
92
+ - Added `setLegalConsent` method to determine the types data Kameleoon includes in tracking requests. This helps you adhere to legal and regulatory requirements while responsibly managing visitor data. You can find more information in the [Consent management policy](https://help.kameleoon.com/consent-management-policy).
93
+
94
+ ## 2.0.0 (2023-11-16)
95
+
96
+ ### Breaking change
97
+
98
+ - SDK stopped the support of the following methods were:
99
+ - `getExperiments`
100
+ - `getVisitorExperiments`
101
+ - `triggerExperiment`
102
+ - Previously deprecated `flushData` method was removed
103
+ - [`KameleoonClient`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#arguments) parameters are now an object with type [`SDKParameters`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#arguments)
104
+ - [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getremotevisitordata) method parameters were changed to an object with type [`RemoteVisitorDataParamsType`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#parameters-11) that has a new `filters` field
105
+
106
+ ### Features
107
+
108
+ - New method for retrieving multiple feature flag variables - [`getFeatureFlagVariables`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getfeatureflagvariables)
109
+ - [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getremotevisitordata) is now capable of retrieving information from up to 25 visits along with some additional visit information configured by new `filters` field
110
+ - [`PageView`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#pageview) data items are now stored by unique URL with timestamps of visits - each visitor can have several `PageView` URLs stored
111
+ - [`Conversion`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#conversion) data items are now stored as a list of conversion for each visitor
112
+ - [Cross Device Synchronization](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#synchronizing-custom-data-across-devices) was improved - [`CustomData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#customdata) with `Visitor` scope is always re-sent with tracking calls allowing seamless synchronization using [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getremotevisitordata)
113
+ - [New targeting conditions](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#list-of-supported-targeting-conditions) are now available (some of them may require [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getremotevisitordata) pre-loaded data)
114
+ - `Browser Cookie`
115
+ - `Application Version`
116
+ - `Operating System`
117
+ - `IP Geolocation`
118
+ - `Segment`
119
+ - `Target Feature Flag`
120
+ - `Previous Page`
121
+ - `Number of Page Views`
122
+ - `Time since First Visit`
123
+ - `Time since Last Visit`
124
+ - `Number of Visits Today`
125
+ - `Total Number of Visits`
126
+ - `New or Returning Visitor`
127
+ - New Kameleoon Data types were introduced:
128
+ - [`ApplicationVersion`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#applicationversion)
129
+ - [`Cookie`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#cookie)
130
+ - [`OperatingSystem`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#operatingsystem)
131
+ - [`GeolocationData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#geolocationdata)
132
+
133
+ ### Bug fixes
134
+
135
+ - `SDKParameters` type is now correctly exported from SDK
136
+ - SDK Polling re-tries mechanism was optimized - SDK will now try to obtain configuration again during the next poll after 3 failed configuration loading attempts
137
+ - [`onConfigurationUpdate`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#onconfigurationupdate) callback now fires on successful configuration update in storage (previously fired after network configuration retrieval)
138
+
139
+ ## 1.8.1 (2023-10-20)
140
+
141
+ ### Bug fixes
142
+
143
+ - Fix previous version deploy issue
144
+
145
+ ## 1.8.0 (2023-10-20)
146
+
147
+ ### Features
148
+
149
+ - Added new method [`getVisitorWarehouseAudience`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getvisitorwarehouseaudience)
150
+
151
+ ## 1.7.4 (2023-10-11)
152
+
153
+ ### Bug fixes
154
+
155
+ - Storage data parse overhead optimization
156
+
157
+ ## 1.7.3 (2023-09-05)
158
+
159
+ ### Bug fixes
160
+
161
+ - `UserAgent` was not exported from SDK
162
+
163
+ ## 1.7.2 (2023-08-31)
164
+
165
+ ### Bug fixes
166
+
167
+ - `Custom Data Condition` now handles index `0` properly
168
+
169
+ ## 1.7.1 (2023-08-25)
170
+
171
+ ### Bug fixes
172
+
173
+ - Multiple `Real Time Update` connections are no longer created
174
+ - `Custom Data Condition` now handles all exceptions properly
175
+
176
+ ## 1.7.0 (2023-08-11)
177
+
178
+ ### Bug fixes
179
+
180
+ - Empty Custom Data is now sending activity tracking event
181
+
182
+ ### Features
183
+
184
+ - Added [Cross Device Custom Data Synchronization](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#cross-device-custom-data-synchronization) capabilities
185
+
186
+ ## 1.6.1 (2023-07-26)
187
+
188
+ ### Bug fixes
189
+
190
+ - [`flush`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#flush) now sends offline tracking requests even if there's no new data to track.
191
+ - Timestamps for offline requests are set correctly.
192
+
193
+ ## 1.6.0 (2023-07-21)
194
+
195
+ ### Features
196
+
197
+ - `flushData` has been deprecated in favor of [`flush`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#flush).
198
+ - [`flush`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#flush) sends failed tracking requests that were stored locally during the offline mode at first and then proceeds with the latest request.
199
+
200
+ ## 1.5.2 (2023-07-17)
201
+
202
+ ### Bug fixes
203
+
204
+ - Typescript `.d.ts` files have proper relative path resolution.
205
+ - Unused tracking parameters are no longer sent.
206
+ - Real-time update events now get the latest configuration.
207
+
208
+ ### Features
209
+
210
+ - When the client is initialized in offline mode, in case of network issues failed tracking requests made by [`flushData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk/#flushdata), [`trackConversion`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk/#trackconversion), [`triggerExperiment`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk/#triggerexperiment), [`getFeatureFlagVariationKey`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk/#getfeatureflagvariationkey) or [`getFeatureFlagVariable`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk/#getfeatureflagvariable) will be sent anew once the client is back online.
211
+ - Minor optimization for checking [targeting conditions](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#list-of-supported-targeting-conditions) of a segment.
212
+
213
+ ## 1.5.1 (2023-06-30)
214
+
215
+ ### Bug fixes
216
+
217
+ - Tracking data duplications
218
+
219
+ ## 1.5.0 (2023-06-28)
220
+
221
+ ### Bug fixes
222
+
223
+ - Improve error handling for [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#obtain-custom-data-from-kameleoon-data-api)
224
+ - Visitor code is now validated correctly in every method that uses it.
225
+ - Result bundle is now compatible with systems not using `ESM` and `CommonJS`. It's minimized and uses code splitting for `crypto-js` `sha256` function.
226
+ - Parameter `revenue` for [`Conversion`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#conversion) is now optional.
227
+ - Each visitor can now only have one type of associated [`Kameleoon Data Type`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#data-types), except for [`CustomData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#customdata), that a visitor can have one per `customDataIndex`.
228
+
229
+ ### Features
230
+
231
+ - New conditions are now supported: `Device`, `Browser`, `SDKLanguage`, `Page Title`, `Page View`, `Visitor Code`, `Conversion`. See the [full list of supported conditions](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#list-of-supported-targeting-conditions).
232
+ - [`Browser`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#browser) now has new optional parameter `version`.
233
+ - [`flushData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#flush-tracking-data) `visitorCode` parameter is now optional.
234
+ - Custom data that is marked as `local only` on Kameleoon Platform is now only used for targeting (not flushed with tracking requests).
235
+ - JavaScript SDK is now available as a single file from the static server, see the [details](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#installation)
236
+
237
+ ## 1.4.4 (2023-06-01)
238
+
239
+ ### Bug fixes
240
+
241
+ - Empty visitor code is no more allowed
242
+ - Incorrect tracking body upon triggering an experiment
243
+
244
+ ## 1.4.3 (2023-05-24)
245
+
246
+ ### Bug fixes
247
+
248
+ - Fixed issue for sending unique `Nonce` parameter on tracking requests
249
+
250
+ ## 1.4.2 (2023-05-21)
251
+
252
+ ### Bug fixes
253
+
254
+ - [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#obtain-custom-data-from-kameleoon-data-api) current visits not being up-to-date
255
+
256
+ ## 1.4.1 (2023-05-20)
257
+
258
+ ### Bug fixes
259
+
260
+ - [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#obtain-custom-data-from-kameleoon-data-api) data parse error
261
+
262
+ ## 1.4.0 (2023-05-19)
263
+
264
+ ### Features
265
+
266
+ - Added method [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#obtain-custom-data-from-kameleoon-data-api)
267
+ - Added offline mode for [`initialize`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#initialize-kameleoon-client) method.
268
+
269
+ ## 1.3.3 (2023-05-16)
270
+
271
+ ### Bug fixes
272
+
273
+ - Initialization throws error
274
+
275
+ ## 1.3.2 (2023-04-24)
276
+
277
+ ### Bug fixes
278
+
279
+ - Tracking feature flag rule with variation `off` wasn't displayed on result page
280
+
281
+ ## 1.3.1 (2023-04-22)
282
+
283
+ ### Bug fixes
284
+
285
+ - core dependency fix
286
+
287
+ ## 1.3.0 (2023-04-21)
288
+
289
+ ### Features
290
+
291
+ - Added method [`getEngineTrackingCode`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#sending-exposure-events-to-external-tools)
292
+
293
+ ## 1.2.0 (2023-04-14)
294
+
295
+ ### Features
296
+
297
+ - Added method [`getExperimentVariationData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#get-experiment-variation-data)
298
+ - Targeting data cleanup interval is now [`optional`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#1-initializing-the-kameleoon-client) and not set by default
299
+ - [`getFeatureFlagVariationKey`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#get-variation-key-for-a-certain-feature-flag), [`getFeatureFlagVariable`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#get-a-variable-of-a-certain-feature-flag), [`isFeatureFlagActive`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#check-if-the-feature-is-active-for-visitor) methods do not check previously allocated variation, rather recalculate it each time. Same methods now send tracking request for any rule type (previously only for `Experementation` rule)
300
+
301
+ ### Bug fixes
302
+
303
+ - `variationId` is undefined when using feature flag related methods
304
+
305
+ ## 1.1.1 (2023-04-05)
306
+
307
+ ### Bug fixes
308
+
309
+ - Internal bug fixes
310
+
311
+ ## 1.1.0 (2023-03-22)
312
+
313
+ ### Features
314
+
315
+ - License changed from `GPL3.0` to `ISC`
316
+
317
+ ## 1.0.0 (2023-03-21)
318
+
319
+ ### Features
320
+
321
+ - Initial Release
@@ -0,0 +1,3 @@
1
+ # Internal Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
package/README.md CHANGED
@@ -11,14 +11,15 @@ This page describes the most basic `KameleoonClient` configuration, for more in-
11
11
 
12
12
  - [Installation](#installation)
13
13
  - [Configuration](#configuration)
14
- - [Using KameleoonClient (Recommended)](#using-kameleoonclient-recommended)
15
- - [Legacy KameleoonUtils Method (Deprecated)](#legacy-kameleoonutils-method-deprecated)
14
+ - [Usage Example](#usage-example)
15
+ - [External Dependencies](#external-dependencies)
16
16
 
17
17
  ## Installation
18
18
 
19
19
  - **npm** - `npm install @kameleoon/javascript-sdk`
20
20
  - **yarn** - `yarn add @kameleoon/javascript-sdk`
21
21
  - **pnpm** - `pnpm add @kameleoon/javascript-sdk`
22
+ - **bun** - `bun install @kameleoon/javascript-sdk`
22
23
 
23
24
  ## Configuration
24
25
 
@@ -31,56 +32,155 @@ import { KameleoonClient } from '@kameleoon/javascript-sdk';
31
32
  const client = new KameleoonClient({ siteCode: 'my_site_code' });
32
33
  ```
33
34
 
34
- 3. Asynchronously initialize client to fetch the configuration from remote server and handle possible errors
35
+ ## Usage Example
35
36
 
36
37
  ```ts
37
- try {
38
- await client.initialize();
39
- } catch (error) {
40
- // Handle error
41
- }
38
+ // -- Wait for the client initialization
39
+ await client.initialize();
40
+
41
+ // -- Generate or obtain a visitor code
42
+ const visitorCode = KameleoonClient.getVisitorCode();
43
+
44
+ // -- Add targeting data
45
+ const customDataIndex = 0;
46
+ client.addData(visitorCode, new CustomData(customDataIndex, 'my_data'));
47
+
48
+ // -- Check if the feature flag is active
49
+ const isActive = client.isFeatureFlagActive(visitorCode, 'my_feature_key');
42
50
  ```
43
51
 
44
- ## Using KameleoonClient (Recommended)
52
+ ## External Dependencies
45
53
 
46
- 1. `KameleoonClient` is ready to go! Fetch the visitor code and add Custom Data:
54
+ JavaScript SDK utilizes certain external dependencies, which are required to be able to use specific APIs.
55
+
56
+ There are several possible external dependencies used by Kameleoon JavaScript SDK, all of them have built-in implementation in SDK but can optionally be implemented by a developer using an SDK.
57
+
58
+ Here is the list of such dependencies:
59
+
60
+ - `visitorCodeManager` is responsible for managing the visitor code and cookies
61
+ - `eventSource` is responsible for Real Time Updates(Streaming) for SDK
62
+ - `storage` is responsible for storing all SDK related data
63
+
64
+ Following is the example implementation for each dependency.
65
+
66
+ ### visitorCodeManager
47
67
 
48
68
  ```ts
49
- const visitorCode = client.getVisitorCode();
50
- const customDataIndex = 0;
69
+ import {
70
+ KameleoonClient,
71
+ IExternalVisitorCodeManager,
72
+ } from '@kameleoon/javascript-sdk';
73
+
74
+ class MyVisitorCodeManager implements IExternalVisitorCodeManager {
75
+ // - Get visitor code from browser cookies
76
+ public getData(key: string): string | null {
77
+ const cookieString = document.cookie;
78
+
79
+ const cookieEntry = cookieString.split(' ;').find((keyValue) => {
80
+ const [cookieKey, cookieValue] = keyValue.split('=');
81
+
82
+ return cookieKey === key && cookieValue !== '';
83
+ });
84
+
85
+ if (cookieEntry) {
86
+ const [_, value] = cookieEntry.split('=');
87
+
88
+ return value;
89
+ }
90
+
91
+ return null;
92
+ }
93
+
94
+ // - Set visitor code back to browser cookies
95
+ public setData({
96
+ visitorCode,
97
+ domain,
98
+ maxAge,
99
+ key,
100
+ path,
101
+ }: SetDataParametersType): void {
102
+ let resultCookie = `${key}=${visitorCode}; Max-Age=${maxAge}; Path=${path}`;
103
+
104
+ if (domain) {
105
+ resultCookie += `; Domain=${domain}`;
106
+ }
107
+
108
+ document.cookie = resultCookie;
109
+ }
110
+ }
51
111
 
52
- // -- Add targeting data
53
- client.addData(visitorCode, new CustomData(customDataIndex, 'my_data'));
112
+ const client = new KameleoonClient({
113
+ siteCode: "my_site_code",
114
+ externals: {
115
+ visitorCodeManager: new MyVisitorCodeManager();
116
+ }
117
+ });
54
118
  ```
55
119
 
56
- 2. Check if a feature is active for a visitor:
120
+ ### eventSource
57
121
 
58
122
  ```ts
59
- const isMyFeatureActive = client.isFeatureFlagActive(
60
- visitorCode,
61
- 'my_feature_key',
62
- );
123
+ import { KameleoonClient, IExternalEventSource } from '@kameleoon/javascript-sdk';
124
+
125
+ class MyEventSource implements IExternalEventSource {
126
+ private eventSource?: EventSource;
127
+
128
+ public open({
129
+ eventType,
130
+ onEvent,
131
+ url,
132
+ }: EventSourceOpenParametersType): void {
133
+ // - Use any suitable EventSource implementation here
134
+ const eventSource = new EventSource(url);
135
+
136
+ this.eventSource = eventSource;
137
+ this.eventSource.addEventListener(eventType, onEvent);
138
+ }
139
+
140
+ public close(): void {
141
+ if (this.eventSource) {
142
+ this.eventSource.close();
143
+ }
144
+ }
145
+ }
146
+
147
+ const client = new KameleoonClient({
148
+ siteCode: "my_site_code",
149
+ externals: {
150
+ eventSource: new MyEventSource();
151
+ }
152
+ });
63
153
  ```
64
154
 
65
- ## Legacy KameleoonUtils Method (Deprecated)
155
+ ### storage
66
156
 
67
- > **Note:** The `getVisitorCode` method from `KameleoonUtils` is deprecated and will be removed in a future release. Use [`getVisitorCode`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#kameleoonclient-getvisitorcode) method from `KameleoonClient` instead.
157
+ ```ts
158
+ import { KameleoonClient, IExternalStorage } from '@kameleoon/javascript-sdk';
68
159
 
69
- 1. Fetch the visitor code and add Custom Data:
160
+ const storage = new Map();
70
161
 
71
- ```ts
72
- const visitorCode = KameleoonUtils.getVisitorCode('www.example.com');
73
- const customDataIndex = 0;
162
+ class MyStorage<T> implements IExternalStorage<T> {
163
+ public read(key: string): T {
164
+ // - Utilize the storage implementation of your choice
165
+ const data = storage.get(key);
74
166
 
75
- // -- Add targeting data
76
- client.addData(visitorCode, new CustomData(customDataIndex, 'my_data'));
77
- ```
167
+ // - Optionally handle errors
168
+ if (!data) {
169
+ throw new Error("Couldn't read data from myStorage");
170
+ }
78
171
 
79
- 2. Check if a feature is active for a visitor:
172
+ return data;
173
+ }
80
174
 
81
- ```ts
82
- const isMyFeatureActive = client.isFeatureFlagActive(
83
- visitorCode,
84
- 'my_feature_key',
85
- );
175
+ public write(key: string, data: T): void {
176
+ storage.set(key, data);
177
+ }
178
+ }
179
+
180
+ const client = new KameleoonClient({
181
+ siteCode: "my_site_code",
182
+ externals: {
183
+ storage: new MyStorage();
184
+ }
185
+ });
86
186
  ```
@@ -0,0 +1,7 @@
1
+ export declare enum CookieParameter {
2
+ PairsDelimiter = "; ",
3
+ KeyValueDelimiter = "=",
4
+ MaxAge = "Max-Age",
5
+ Path = "Path",
6
+ Domain = "Domain"
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CookieParameter=void 0;let CookieParameter=exports.CookieParameter=function(a){return a.PairsDelimiter="; ",a.KeyValueDelimiter="=",a.MaxAge="Max-Age",a.Path="Path",a.Domain="Domain",a}({});
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["CookieParameter","exports","PairsDelimiter","KeyValueDelimiter","MaxAge","Path","Domain"],"sources":["../src/constants.ts"],"sourcesContent":["export enum CookieParameter {\n PairsDelimiter = '; ',\n KeyValueDelimiter = '=',\n MaxAge = 'Max-Age',\n Path = 'Path',\n Domain = 'Domain',\n}\n"],"mappings":"sGAAY,CAAAA,eAAe,CAAAC,OAAA,CAAAD,eAAA,UAAfA,CAAe,QAAf,CAAAA,CAAe,CAAAE,cAAA,MAAfF,CAAe,CAAAG,iBAAA,KAAfH,CAAe,CAAAI,MAAA,WAAfJ,CAAe,CAAAK,IAAA,QAAfL,CAAe,CAAAM,MAAA,UAAfN,CAAe"}
@@ -1,4 +1,6 @@
1
- import { IExternalEventSource, IExternalEventSourceConstructor } from '@kameleoon/javascript-sdk-core';
2
- export declare class EventSourceConstructor implements IExternalEventSourceConstructor {
3
- initialize(url: string): IExternalEventSource;
1
+ import { IExternalEventSource, EventSourceOpenParametersType } from '@kameleoon/javascript-sdk-core';
2
+ export declare class KameleoonEventSource implements IExternalEventSource {
3
+ private eventSource?;
4
+ open({ eventType, onEvent, url, }: EventSourceOpenParametersType): void;
5
+ close(): void;
4
6
  }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.EventSourceConstructor=void 0;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 _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 _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 _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 EventSourceConstructor=function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"initialize",value:function initialize(a){return new ExternalEventSource(a)}}]),a}();exports.EventSourceConstructor=EventSourceConstructor;var ExternalEventSource=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"eventSource",void 0);var c=new EventSource(b);this.eventSource=c}return _createClass(a,[{key:"open",value:function open(a){var b=a.siteCode,c=a.eventType,d=a.onEvent;this.eventSource.addEventListener(c,function(a){var c=JSON.parse(a.data),e=c.siteCode,f=c.ts;b===e&&d(f)})}},{key:"close",value:function close(){this.eventSource.close()}}]),a}();
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonEventSource=void 0;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 KameleoonEventSource{constructor(){_defineProperty(this,"eventSource",void 0)}open(a){let{eventType:b,onEvent:c,url:d}=a;const e=new EventSource(d);this.eventSource=e,this.eventSource.addEventListener(b,c)}close(){this.eventSource&&this.eventSource.close()}}exports.KameleoonEventSource=KameleoonEventSource;
2
2
  //# sourceMappingURL=eventSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventSource.js","names":["EventSourceConstructor","a","_classCallCheck","_createClass","key","value","initialize","url","ExternalEventSource","exports","_defineProperty","eventSource","EventSource","open","siteCode","eventType","onEvent","addEventListener","message","event","JSON","parse","data","eventSiteCode","ts","close"],"sources":["../src/eventSource.ts"],"sourcesContent":["import {\n RealTimeEventType,\n IExternalEventSource,\n EventSourceOpenParametersType,\n IExternalEventSourceConstructor,\n} from '@kameleoon/javascript-sdk-core';\n\nexport class EventSourceConstructor implements IExternalEventSourceConstructor {\n public initialize(url: string): IExternalEventSource {\n return new ExternalEventSource(url);\n }\n}\n\n// --- Note ---\n// - `EventSource` has no dedicated tests because same browser instance\n// is tested thoroughly inside core and would just duplicate tests\n// - Moreover we would have to import some unexposed details like constructed url\n// or the `eventType` from the core\nclass ExternalEventSource implements IExternalEventSource {\n private eventSource: EventSource;\n\n constructor(url: string) {\n const eventSource = new EventSource(url);\n\n this.eventSource = eventSource;\n }\n\n public open({\n siteCode,\n eventType,\n onEvent,\n }: EventSourceOpenParametersType): void {\n this.eventSource.addEventListener(eventType, (message) => {\n const event: RealTimeEventType = JSON.parse(message.data);\n const { siteCode: eventSiteCode, ts } = event;\n\n if (siteCode === eventSiteCode) {\n onEvent(ts);\n }\n });\n }\n\n public close() {\n this.eventSource.close();\n }\n}\n"],"mappings":"s1CAOa,CAAAA,sBAAsB,qBAAAC,EAAA,EAAAC,eAAA,MAAAD,CAAA,SAAAE,YAAA,CAAAF,CAAA,GAAAG,GAAA,cAAAC,KAAA,CACjC,SAAAC,WAAkBC,CAAW,CAAwB,CACnD,MAAO,IAAI,CAAAC,mBAAmB,CAACD,CAAG,CACpC,CAAC,IAAAN,CAAA,IAAAQ,OAAA,CAAAT,sBAAA,CAAAA,sBAAA,IAQG,CAAAQ,mBAAmB,YAGvB,SAAAP,EAAYM,CAAW,CAAE,CAAAL,eAAA,MAAAD,CAAA,EAAAS,eAAA,4BACvB,GAAM,CAAAC,CAAW,CAAG,GAAI,CAAAC,WAAW,CAACL,CAAG,CAAC,CAExC,IAAI,CAACI,WAAW,CAAGA,CACrB,CAAC,OAAAR,YAAA,CAAAF,CAAA,GAAAG,GAAA,QAAAC,KAAA,CAED,SAAAQ,KAAAZ,CAAA,CAIwC,IAHtC,CAAAa,CAAQ,CAAAb,CAAA,CAARa,QAAQ,CACRC,CAAS,CAAAd,CAAA,CAATc,SAAS,CACTC,CAAO,CAAAf,CAAA,CAAPe,OAAO,CAEP,IAAI,CAACL,WAAW,CAACM,gBAAgB,CAACF,CAAS,CAAE,SAACG,CAAO,CAAK,IAClD,CAAAC,CAAwB,CAAGC,IAAI,CAACC,KAAK,CAACH,CAAO,CAACI,IAAI,CAAC,CACvCC,CAAa,CAASJ,CAAK,CAArCL,QAAQ,CAAiBU,CAAE,CAAKL,CAAK,CAAZK,EAAE,CAE/BV,CAAQ,GAAKS,CAAa,EAC5BP,CAAO,CAACQ,CAAE,CAEd,CAAC,CACH,CAAC,GAAApB,GAAA,SAAAC,KAAA,CAED,SAAAoB,MAAA,CAAe,CACb,IAAI,CAACd,WAAW,CAACc,KAAK,EACxB,CAAC,IAAAxB,CAAA"}
1
+ {"version":3,"file":"eventSource.js","names":["KameleoonEventSource","constructor","_defineProperty","open","a","eventType","onEvent","url","eventSource","EventSource","addEventListener","close","exports"],"sources":["../src/eventSource.ts"],"sourcesContent":["import {\n IExternalEventSource,\n EventSourceOpenParametersType,\n} from '@kameleoon/javascript-sdk-core';\n\n// --- Note ---\n// Named `KameleoonEventSource` to avoid collision with native `EventSource`\nexport class KameleoonEventSource implements IExternalEventSource {\n private eventSource?: EventSource;\n\n public open({\n eventType,\n onEvent,\n url,\n }: EventSourceOpenParametersType): void {\n const eventSource = new EventSource(url);\n\n this.eventSource = eventSource;\n this.eventSource.addEventListener(eventType, onEvent);\n }\n\n public close(): void {\n if (this.eventSource) {\n this.eventSource.close();\n }\n }\n}\n"],"mappings":"2mBAOO,KAAM,CAAAA,oBAAqD,CAAAC,YAAA,EAAAC,eAAA,4BAGzDC,IAAIA,CAAAC,CAAA,CAI6B,IAJ5B,CACVC,SAAS,CAATA,CAAS,CACTC,OAAO,CAAPA,CAAO,CACPC,GAAG,CAAHA,CAC6B,CAAC,CAAAH,CAAA,CAC9B,KAAM,CAAAI,CAAW,CAAG,GAAI,CAAAC,WAAW,CAACF,CAAG,CAAC,CAExC,IAAI,CAACC,WAAW,CAAGA,CAAW,CAC9B,IAAI,CAACA,WAAW,CAACE,gBAAgB,CAACL,CAAS,CAAEC,CAAO,CACtD,CAEOK,KAAKA,CAAA,CAAS,CACf,IAAI,CAACH,WAAW,EAClB,IAAI,CAACA,WAAW,CAACG,KAAK,CAAC,CAE3B,CACF,CAACC,OAAA,CAAAZ,oBAAA,CAAAA,oBAAA"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from '@kameleoon/javascript-sdk-core';
2
- export type { SDKParameters } from './types';
2
+ export type { SDKParameters, ExternalsType, SetDataParametersType, IExternalVisitorCodeManager, } from './types';
3
3
  export { KameleoonClient } from './kameleoonClient';
4
- export { KameleoonUtils } from './kameleoonUtils';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var _exportNames={KameleoonClient:!0,KameleoonUtils:!0};var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core");Object.defineProperty(exports,"__esModule",{value:!0});Object.defineProperty(exports,"KameleoonClient",{enumerable:!0,get:function get(){return _kameleoonClient.KameleoonClient}}),Object.defineProperty(exports,"KameleoonUtils",{enumerable:!0,get:function get(){return _kameleoonUtils.KameleoonUtils}});Object.keys(_javascriptSdkCore).forEach(function(a){"default"===a||"__esModule"===a||Object.prototype.hasOwnProperty.call(_exportNames,a)||a in exports&&exports[a]===_javascriptSdkCore[a]||Object.defineProperty(exports,a,{enumerable:!0,get:function get(){return _javascriptSdkCore[a]}})});var _kameleoonClient=require("./kameleoonClient"),_kameleoonUtils=require("./kameleoonUtils");
1
+ "use strict";var _exportNames={KameleoonClient:!0};var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core");var _kameleoonClient=require("./kameleoonClient");Object.defineProperty(exports,"__esModule",{value:!0});Object.defineProperty(exports,"KameleoonClient",{enumerable:!0,get:function(){return _kameleoonClient.KameleoonClient}});Object.keys(_javascriptSdkCore).forEach(function(a){"default"===a||"__esModule"===a||Object.prototype.hasOwnProperty.call(_exportNames,a)||a in exports&&exports[a]===_javascriptSdkCore[a]||Object.defineProperty(exports,a,{enumerable:!0,get:function(){return _javascriptSdkCore[a]}})});
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_javascriptSdkCore","require","Object","defineProperty","exports","value","enumerable","get","_kameleoonClient","KameleoonClient","_kameleoonUtils","KameleoonUtils","keys","forEach","a","prototype","hasOwnProperty","call","_exportNames"],"sources":["../src/index.ts"],"sourcesContent":["export * from '@kameleoon/javascript-sdk-core';\nexport type { SDKParameters } from './types';\nexport { KameleoonClient } from './kameleoonClient';\nexport { KameleoonUtils } from './kameleoonUtils';\n"],"mappings":"qEAAA,IAAAA,kBAAA,CAAAC,OAAA,mCAA+CC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAH,MAAA,CAAAC,cAAA,CAAAC,OAAA,oBAAAE,UAAA,IAAAC,GAAA,UAAAA,IAAA,SAAAC,gBAAA,CAAAC,eAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAC,OAAA,mBAAAE,UAAA,IAAAC,GAAA,UAAAA,IAAA,SAAAG,eAAA,CAAAC,cAAA,IAAAT,MAAA,CAAAU,IAAA,CAAAZ,kBAAA,EAAAa,OAAA,UAAAC,CAAA,cAAAA,CAAA,iBAAAA,CAAA,EAAAZ,MAAA,CAAAa,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,CAAAJ,CAAA,GAAAA,CAAA,IAAAV,OAAA,EAAAA,OAAA,CAAAU,CAAA,IAAAd,kBAAA,CAAAc,CAAA,GAAAZ,MAAA,CAAAC,cAAA,CAAAC,OAAA,CAAAU,CAAA,EAAAR,UAAA,IAAAC,GAAA,UAAAA,IAAA,SAAAP,kBAAA,CAAAc,CAAA,WAAAN,gBAAA,CAAAP,OAAA,sBAAAS,eAAA,CAAAT,OAAA"}
1
+ {"version":3,"file":"index.js","names":["_javascriptSdkCore","require","_kameleoonClient","Object","defineProperty","exports","value","enumerable","get","KameleoonClient","keys","forEach","a","prototype","hasOwnProperty","call","_exportNames"],"sources":["../src/index.ts"],"sourcesContent":["export * from '@kameleoon/javascript-sdk-core';\nexport type {\n SDKParameters,\n ExternalsType,\n SetDataParametersType,\n IExternalVisitorCodeManager,\n} from './types';\nexport { KameleoonClient } from './kameleoonClient';\n"],"mappings":"mDAAA,IAAAA,kBAAA,CAAAC,OAAA,mCAOA,IAAAC,gBAAA,CAAAD,OAAA,sBAAoDE,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAH,MAAA,CAAAC,cAAA,CAAAC,OAAA,oBAAAE,UAAA,IAAAC,GAAA,SAAAA,CAAA,SAAAN,gBAAA,CAAAO,eAAA,IAAAN,MAAA,CAAAO,IAAA,CAAAV,kBAAA,EAAAW,OAAA,UAAAC,CAAA,cAAAA,CAAA,iBAAAA,CAAA,EAAAT,MAAA,CAAAU,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,CAAAJ,CAAA,GAAAA,CAAA,IAAAP,OAAA,EAAAA,OAAA,CAAAO,CAAA,IAAAZ,kBAAA,CAAAY,CAAA,GAAAT,MAAA,CAAAC,cAAA,CAAAC,OAAA,CAAAO,CAAA,EAAAL,UAAA,IAAAC,GAAA,SAAAA,CAAA,SAAAR,kBAAA,CAAAY,CAAA"}
@@ -1,12 +1,14 @@
1
1
  import { KameleoonCore } from '@kameleoon/javascript-sdk-core';
2
- import { SDKParameters, GetVisitorCodeParametersType, SetLegalConsentParametersType } from './types';
2
+ import { SDKParameters } from './types';
3
3
  /**
4
4
  * @class
5
5
  * KameleoonClient - a class for creating kameleoon client instance
6
6
  * */
7
7
  export declare class KameleoonClient extends KameleoonCore {
8
- private visitorCodeHandler;
9
- constructor({ siteCode, configuration }: SDKParameters);
8
+ private domain?;
9
+ private internalVisitorCodeManager;
10
+ private externalVisitorCodeManager;
11
+ constructor({ siteCode, configuration, externals, _internals }: SDKParameters);
10
12
  /**
11
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
12
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.
@@ -29,11 +31,6 @@ export declare class KameleoonClient extends KameleoonCore {
29
31
  * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
30
32
  */
31
33
  getVisitorCode(defaultVisitorCode?: string): string;
32
- /**
33
- * @deprecated This overload signature is deprecated and will be removed in a future version.
34
- * Use getVisitorCode(defaultVisitorCode?: string) instead.
35
- */
36
- getVisitorCode(params: GetVisitorCodeParametersType): string;
37
34
  /**
38
35
  * @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
39
36
  * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length
@@ -47,9 +44,4 @@ export declare class KameleoonClient extends KameleoonCore {
47
44
  * - `KameleoonException.VisitorCodeEmpty` The visitor code is empty
48
45
  */
49
46
  setLegalConsent(visitorCode: string, consent: boolean): void;
50
- /**
51
- * @deprecated This overload signature is deprecated and will be removed in a future version.
52
- * Use setLegalConsent(visitorCode: string, consent: boolean) instead.
53
- */
54
- setLegalConsent(params: SetLegalConsentParametersType): void;
55
47
  }
@@ -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 _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 _regeneratorRuntime(){"use strict";function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}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 _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(a,b,c){var d=_superPropBase(a,b);if(d){var e=Object.getOwnPropertyDescriptor(d,b);return e.get?e.get.call(3>arguments.length?a:c):e.value}},_get.apply(this,arguments)}function _superPropBase(a,b){for(;!Object.prototype.hasOwnProperty.call(a,b)&&(a=_getPrototypeOf(a),null!==a););return a}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function _possibleConstructorReturn(a,b){if(b&&("object"===_typeof(b)||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(a)}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(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 KameleoonClient=function(a){function b(a){var d,e=a.siteCode,f=a.configuration;_classCallCheck(this,b);var g=new _storage.StorageConstructor,h=new _eventSource.EventSourceConstructor,i=new _requester.RequestDispatcher((null===f||void 0===f?void 0:f.requestTimeout)||_javascriptSdkCore.DEFAULT_REQUEST_TIMEOUT),j=new _visitorCodeManager.VisitorCodeManagerConstructor(null===f||void 0===f?void 0:f.domain);return d=c.call(this,{siteCode:e,configuration:f,internalConfiguration:{externalStorage:g,externalEventSource:h,externalVisitorCodeManager:j,externalRequestDispatcher:i,externalPackageInfo:{type:_javascriptSdkCore.SdkLanguageType.JAVASCRIPT,version:"2.5.2"}}}),_defineProperty(_assertThisInitialized(d),"visitorCodeHandler",void 0),d.visitorCodeHandler=j,d}_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"initialize",value:function(){function a(){return c.apply(this,arguments)}var c=_asyncToGenerator(_regeneratorRuntime().mark(function c(a){return _regeneratorRuntime().wrap(function d(c){for(;1;)switch(c.prev=c.next){case 0:return c.abrupt("return",_get(_getPrototypeOf(b.prototype),"initialize",this).call(this,a));case 1:case"end":return c.stop();}},c,this)}));return a}()},{key:"getVisitorCode",value:function getVisitorCode(a){var b;return b="string"==typeof a||"undefined"==typeof a?a:a.defaultVisitorCode,this.visitorCodeHandler.obtainVisitorCode(b)}},{key:"setLegalConsent",value:function setLegalConsent(a,c){var d,e;"string"==typeof a?(d=a,e=c):(d=a.visitorCode,e=a.consent),_get(_getPrototypeOf(b.prototype),"setUserConsent",this).call(this,{visitorCode:d,consent:e,setData:this.visitorCodeHandler.setData.bind(this.visitorCodeHandler)})}}]),b}(_javascriptSdkCore.KameleoonCore);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");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.eventSource)||new _eventSource.KameleoonEventSource,h=(null===d||void 0===d?void 0:d.visitorCodeManager)||new _visitorCodeManager.KameleoonVisitorCodeManager,i=new _javascriptSdkCore.VisitorCodeManager,j=new _requester.RequestDispatcher((null===c||void 0===c?void 0:c.requestTimeout)||_javascriptSdkCore.DEFAULT_REQUEST_TIMEOUT);super({siteCode:b,configuration:c,internalConfiguration:{externalStorage:f,externalEventSource:g,externalVisitorCodeManager:i,externalRequestDispatcher:j,externalPackageInfo:e||{type:_javascriptSdkCore.SdkLanguageType.JAVASCRIPT,version:"3.0.1"}}}),_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.domain,this.internalVisitorCodeManager=i,this.externalVisitorCodeManager=h}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","a","b","d","siteCode","configuration","_classCallCheck","storage","StorageConstructor","eventSource","EventSourceConstructor","requestDispatcher","RequestDispatcher","requestTimeout","DEFAULT_REQUEST_TIMEOUT","visitorCodeManager","VisitorCodeManagerConstructor","domain","c","call","internalConfiguration","externalStorage","externalEventSource","externalVisitorCodeManager","externalRequestDispatcher","externalPackageInfo","type","SdkLanguageType","JAVASCRIPT","version","_defineProperty","_assertThisInitialized","visitorCodeHandler","_inherits","_createSuper","_createClass","key","value","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","useCache","wrap","prev","next","abrupt","_get","_getPrototypeOf","prototype","stop","getVisitorCode","args","defaultCode","defaultVisitorCode","obtainVisitorCode","setLegalConsent","visitorCodeOrParams","consent","visitorCode","consentValue","setData","bind","KameleoonCore","exports"],"sources":["../src/kameleoonClient.ts"],"sourcesContent":["import {\n SdkLanguageType,\n KameleoonCore,\n DEFAULT_REQUEST_TIMEOUT,\n} from '@kameleoon/javascript-sdk-core';\nimport { RequestDispatcher } from './requester';\nimport { StorageConstructor } from './storage';\nimport { EventSourceConstructor } from './eventSource';\nimport {\n SDKParameters,\n GetVisitorCodeParametersType,\n SetLegalConsentParametersType,\n} from './types';\nimport { VisitorCodeManagerConstructor } from './visitorCodeManager';\n\n/**\n * @class\n * KameleoonClient - a class for creating kameleoon client instance\n * */\nexport class KameleoonClient extends KameleoonCore {\n private visitorCodeHandler: VisitorCodeManagerConstructor;\n\n constructor({ siteCode, configuration }: SDKParameters) {\n const storage = new StorageConstructor();\n const eventSource = new EventSourceConstructor();\n const requestDispatcher = new RequestDispatcher(\n configuration?.requestTimeout || DEFAULT_REQUEST_TIMEOUT,\n );\n const visitorCodeManager = new VisitorCodeManagerConstructor(\n configuration?.domain,\n );\n\n super({\n siteCode,\n configuration,\n internalConfiguration: {\n externalStorage: storage,\n externalEventSource: eventSource,\n externalVisitorCodeManager: visitorCodeManager,\n externalRequestDispatcher: requestDispatcher,\n externalPackageInfo: {\n type: SdkLanguageType.JAVASCRIPT,\n version: process.env.npm_package_version as string,\n },\n },\n });\n\n this.visitorCodeHandler = visitorCodeManager;\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 /**\n * @deprecated This overload signature is deprecated and will be removed in a future version.\n * Use getVisitorCode(defaultVisitorCode?: string) instead.\n */\n public getVisitorCode(params: GetVisitorCodeParametersType): string;\n public getVisitorCode(args?: string | GetVisitorCodeParametersType): string {\n let defaultCode: string | undefined;\n\n if (typeof args === 'string' || typeof args === 'undefined') {\n defaultCode = args;\n } else {\n defaultCode = args.defaultVisitorCode;\n }\n\n return this.visitorCodeHandler.obtainVisitorCode(defaultCode);\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 /**\n * @deprecated This overload signature is deprecated and will be removed in a future version.\n * Use setLegalConsent(visitorCode: string, consent: boolean) instead.\n */\n public setLegalConsent(params: SetLegalConsentParametersType): void;\n public setLegalConsent(\n visitorCodeOrParams: string | SetLegalConsentParametersType,\n consent?: boolean,\n ): void {\n let visitorCode: string;\n let consentValue: boolean;\n\n if (typeof visitorCodeOrParams === 'string') {\n visitorCode = visitorCodeOrParams;\n consentValue = consent!;\n } else {\n visitorCode = visitorCodeOrParams.visitorCode;\n consentValue = visitorCodeOrParams.consent;\n }\n\n super.setUserConsent({\n visitorCode,\n consent: consentValue,\n setData: this.visitorCodeHandler.setData.bind(this.visitorCodeHandler),\n });\n }\n}\n"],"mappings":"k0UAmBa,CAAAA,eAAe,UAAAC,CAAA,EAG1B,SAAAC,EAAAD,CAAA,CAAwD,KAAAE,CAAA,CAA1CC,CAAQ,CAAAH,CAAA,CAARG,QAAQ,CAAEC,CAAa,CAAAJ,CAAA,CAAbI,aAAa,CAAAC,eAAA,MAAAJ,CAAA,KAC7B,CAAAK,CAAO,CAAG,GAAI,CAAAC,2BAAoB,CAClCC,CAAW,CAAG,GAAI,CAAAC,mCAAwB,CAC1CC,CAAiB,CAAG,GAAI,CAAAC,4BAAiB,CAC7C,QAAAP,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAEQ,cAAc,GAAIC,0CAAuB,CACzD,CACKC,CAAkB,CAAG,GAAI,CAAAC,iDAA6B,QAC1DX,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAEY,MAAM,CACtB,QAAAd,CAAA,CAAAe,CAAA,CAAAC,IAAA,MAEK,CACJf,QAAQ,CAARA,CAAQ,CACRC,aAAa,CAAbA,CAAa,CACbe,qBAAqB,CAAE,CACrBC,eAAe,CAAEd,CAAO,CACxBe,mBAAmB,CAAEb,CAAW,CAChCc,0BAA0B,CAAER,CAAkB,CAC9CS,yBAAyB,CAAEb,CAAiB,CAC5Cc,mBAAmB,CAAE,CACnBC,IAAI,CAAEC,kCAAe,CAACC,UAAU,CAChCC,OAAO,QACT,CACF,CACF,CAAC,EAAAC,eAAA,CAAAC,sBAAA,CAAA5B,CAAA,+BAEDA,CAAA,CAAK6B,kBAAkB,CAAGjB,CAAkB,CAAAZ,CAC9C,CAAC8B,SAAA,CAAA/B,CAAA,CAAAD,CAAA,MAAAiB,CAAA,CAAAgB,YAAA,CAAAhC,CAAA,SAAAiC,YAAA,CAAAjC,CAAA,GAAAkC,GAAA,cAAAC,KAAA,qBAAApC,EAAA,SAAAiB,CAAA,CAAAoB,KAAA,MAAAC,SAAA,MAAArB,CAAA,CAAAsB,iBAAA,CAAAC,mBAAA,GAAAC,IAAA,CAaD,SAAAxB,EAAwByB,CAAkB,SAAAF,mBAAA,GAAAG,IAAA,UAAAzC,EAAAe,CAAA,iBAAAA,CAAA,CAAA2B,IAAA,CAAA3B,CAAA,CAAA4B,IAAA,gBAAA5B,CAAA,CAAA6B,MAAA,UAAAC,IAAA,CAAAC,eAAA,CAAA/C,CAAA,CAAAgD,SAAA,qBAAA/B,IAAA,MAChBwB,CAAQ,2BAAAzB,CAAA,CAAAiC,IAAA,MAAAjC,CAAA,OACjC,UAAAjB,CAAA,MAAAmC,GAAA,kBAAAC,KAAA,CAiBD,SAAAe,eAAsBC,CAA4C,CAAU,CAC1E,GAAI,CAAAC,CAA+B,CAQnC,MALE,CAAAA,CAAW,CADO,QAAQ,EAAxB,MAAO,CAAAD,CAAiB,EAAoB,WAAW,EAA3B,MAAO,CAAAA,CAAoB,CAC3CA,CAAI,CAEJA,CAAI,CAACE,kBAAkB,CAGhC,IAAI,CAACvB,kBAAkB,CAACwB,iBAAiB,CAACF,CAAW,CAC9D,CAAC,GAAAlB,GAAA,mBAAAC,KAAA,CAoBD,SAAAoB,gBACEC,CAA2D,CAC3DC,CAAiB,CACX,IACF,CAAAC,CAAmB,CACnBC,CAAqB,CAEU,QAAQ,EAAvC,MAAO,CAAAH,CAAgC,EACzCE,CAAW,CAAGF,CAAmB,CACjCG,CAAY,CAAGF,CAAQ,GAEvBC,CAAW,CAAGF,CAAmB,CAACE,WAAW,CAC7CC,CAAY,CAAGH,CAAmB,CAACC,OAAO,EAAAX,IAAA,CAAAC,eAAA,CAAA/C,CAAA,CAAAgD,SAAA,yBAAA/B,IAAA,MAGvB,CACnByC,WAAW,CAAXA,CAAW,CACXD,OAAO,CAAEE,CAAY,CACrBC,OAAO,CAAE,IAAI,CAAC9B,kBAAkB,CAAC8B,OAAO,CAACC,IAAI,CAAC,IAAI,CAAC/B,kBAAkB,CACvE,CAAC,CACH,CAAC,IAAA9B,CAAA,EA/GkC8D,gCAAa,EAAAC,OAAA,CAAAjE,eAAA,CAAAA,eAAA"}
1
+ {"version":3,"file":"kameleoonClient.js","names":["KameleoonClient","KameleoonCore","constructor","a","siteCode","configuration","externals","_internals","storage","DataStorage","eventSource","KameleoonEventSource","externalVisitorCodeManager","visitorCodeManager","KameleoonVisitorCodeManager","VisitorCodeManager","requestDispatcher","RequestDispatcher","requestTimeout","DEFAULT_REQUEST_TIMEOUT","internalConfiguration","externalStorage","externalEventSource","externalRequestDispatcher","externalPackageInfo","type","SdkLanguageType","JAVASCRIPT","version","_defineProperty","domain","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 DEFAULT_REQUEST_TIMEOUT,\n VisitorCodeManager,\n IVisitorCodeManager,\n SetDataCallbackParametersType,\n} from '@kameleoon/javascript-sdk-core';\nimport { RequestDispatcher } 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({ siteCode, configuration, externals, _internals }: SDKParameters) {\n const storage = externals?.storage || new DataStorage();\n const eventSource = externals?.eventSource || new KameleoonEventSource();\n const externalVisitorCodeManager =\n externals?.visitorCodeManager || new KameleoonVisitorCodeManager();\n\n const visitorCodeManager = new VisitorCodeManager();\n const requestDispatcher = new RequestDispatcher(\n configuration?.requestTimeout || DEFAULT_REQUEST_TIMEOUT,\n );\n\n super({\n siteCode,\n configuration,\n internalConfiguration: {\n externalStorage: storage,\n externalEventSource: eventSource,\n externalVisitorCodeManager: visitorCodeManager,\n externalRequestDispatcher: requestDispatcher,\n externalPackageInfo: _internals || {\n type: SdkLanguageType.JAVASCRIPT,\n version: process.env.npm_package_version as string,\n },\n },\n });\n\n this.domain = 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":"m6CAkBO,KAAM,CAAAA,eAAe,QAAS,CAAAC,gCAAc,CAKjDC,WAAWA,CAAAC,CAAA,CAAoE,IAAnE,CAAEC,QAAQ,CAARA,CAAQ,CAAEC,aAAa,CAAbA,CAAa,CAAEC,SAAS,CAATA,CAAS,CAAEC,UAAU,CAAVA,CAA0B,CAAC,CAAAJ,CAAA,MACrE,CAAAK,CAAO,CAAG,QAAAF,CAAS,WAATA,CAAS,QAATA,CAAS,CAAEE,OAAO,GAAI,GAAI,CAAAC,oBAAa,CACjDC,CAAW,CAAG,QAAAJ,CAAS,WAATA,CAAS,QAATA,CAAS,CAAEI,WAAW,GAAI,GAAI,CAAAC,iCAAsB,CAClEC,CAA0B,CAC9B,QAAAN,CAAS,WAATA,CAAS,QAATA,CAAS,CAAEO,kBAAkB,GAAI,GAAI,CAAAC,+CAA6B,CAE9DD,CAAkB,CAAG,GAAI,CAAAE,qCAAoB,CAC7CC,CAAiB,CAAG,GAAI,CAAAC,4BAAiB,CAC7C,QAAAZ,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAEa,cAAc,GAAIC,0CACnC,CAAC,CAED,KAAK,CAAC,CACJf,QAAQ,CAARA,CAAQ,CACRC,aAAa,CAAbA,CAAa,CACbe,qBAAqB,CAAE,CACrBC,eAAe,CAAEb,CAAO,CACxBc,mBAAmB,CAAEZ,CAAW,CAChCE,0BAA0B,CAAEC,CAAkB,CAC9CU,yBAAyB,CAAEP,CAAiB,CAC5CQ,mBAAmB,CAAEjB,CAAU,EAAI,CACjCkB,IAAI,CAAEC,kCAAe,CAACC,UAAU,CAChCC,OAAO,QACT,CACF,CACF,CAAC,CAAC,CAAAC,eAAA,uBAAAA,eAAA,2CAAAA,eAAA,2CAEF,IAAI,CAACC,MAAM,QAAGzB,CAAa,WAAbA,CAAa,QAAbA,CAAa,CAAEyB,MAAM,CACnC,IAAI,CAACC,0BAA0B,CAAGlB,CAAkB,CACpD,IAAI,CAACD,0BAA0B,CAAGA,CACpC,CAaA,KAAa,CAAAoB,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,CAACzB,0BAA0B,CAACwB,OAAO,CAACC,CAAG,CAAC,CAE9C,IAAI,CAACN,0BAA0B,CAACO,OAAO,CACrCC,CAAyC,EACtC,CACH,IAAI,CAAC3B,0BAA0B,CAAC0B,OAAO,CAAAE,aAAA,CAAAA,aAAA,IAClCD,CAAU,MACbT,MAAM,CAAE,IAAI,CAACA,MAAM,EACpB,CACH,CAAC,CAEM,IAAI,CAACC,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,CAAC3B,0BAA0B,CAAC0B,OAAO,CAAAE,aAAA,CAAAA,aAAA,IAClCD,CAAU,MACbT,MAAM,CAAE,IAAI,CAACA,MAAM,EACpB,CACH,CACF,CAAC,CACH,CACF,CAACe,OAAA,CAAA7C,eAAA,CAAAA,eAAA"}
package/dist/requester.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core");Object.defineProperty(exports,"__esModule",{value:!0}),exports.RequestDispatcher=void 0;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 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 _regeneratorRuntime(){"use strict";function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}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 RequestDispatcher=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"timeout",void 0),this.timeout=b}return _createClass(a,[{key:"track",value:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h;return _regeneratorRuntime().wrap(function i(b){for(;1;)switch(b.prev=b.next){case 0:return c=a.url,d=a.headers,e=a.body,b.next=3,fetch(c,{method:_javascriptSdkCore.HttpMethod.Post,headers:d,body:e});case 3:if(f=b.sent,!f.ok){b.next=6;break}return b.abrupt("return",!0);case 6:g=0;case 7:if(!(g<_javascriptSdkCore.NUMBER_OF_RETRIES)){b.next=18;break}return b.next=10,new Promise(function(a){return setTimeout(a,_javascriptSdkCore.RETRIES_DELAY)});case 10:return b.next=12,this.sendRequest(c,{method:_javascriptSdkCore.HttpMethod.Post,headers:d,body:e});case 12:if(h=b.sent,!h.ok){b.next=15;break}return b.abrupt("return",!0);case 15:g++,b.next=7;break;case 18:return b.abrupt("return",!1);case 19:case"end":return b.stop();}},b,this)}));return a}()},{key:"getClientConfiguration",value:function(){function a(a,c){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function c(a,b){var d,e,f;return _regeneratorRuntime().wrap(function c(b){for(;1;)switch(b.prev=b.next){case 0:d=_javascriptSdkCore.NUMBER_OF_RETRIES+1,e=0;case 2:if(!(e<d)){b.next=17;break}return b.prev=3,b.next=6,this.sendRequest(a,{method:_javascriptSdkCore.HttpMethod.Get});case 6:if(f=b.sent,!f.ok){b.next=9;break}return b.abrupt("return",f.json());case 9:b.next=14;break;case 11:throw b.prev=11,b.t0=b["catch"](3),new _javascriptSdkCore.KameleoonError(_javascriptSdkCore.KameleoonException.ClientConfiguration);case 14:e++,b.next=2;break;case 17:return b.abrupt("return",null);case 18:case"end":return b.stop();}},c,this,[[3,11]])}));return a}()},{key:"getRemoteData",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,fetch(a,{method:_javascriptSdkCore.HttpMethod.Get});case 2:if(c=b.sent,!c.ok){b.next=5;break}return b.abrupt("return",c.json());case 5:throw new _javascriptSdkCore.KameleoonError(_javascriptSdkCore.KameleoonException.RemoteData);case 6:case"end":return b.stop();}},b)}));return a}()},{key:"sendRequest",value:function(){function a(a,c){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function c(a,b){var d,e,f,g;return _regeneratorRuntime().wrap(function h(c){for(;1;)switch(c.prev=c.next){case 0:return d=new AbortController,e=_objectSpread(_objectSpread({},b),{},{signal:d.signal}),f=setTimeout(function(){return d.abort()},this.timeout),c.next=5,fetch(a,e);case 5:return g=c.sent,clearTimeout(f),c.abrupt("return",g);case 8:case"end":return c.stop();}},c,this)}));return a}()}]),a}();exports.RequestDispatcher=RequestDispatcher;
1
+ "use strict";var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core");Object.defineProperty(exports,"__esModule",{value:!0}),exports.RequestDispatcher=void 0;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 RequestDispatcher{constructor(a){_defineProperty(this,"timeout",void 0),this.timeout=a}async track(a){let{url:b,headers:c,body:d}=a;const e=await this.sendRequest(b,{method:_javascriptSdkCore.HttpMethod.Post,headers:c,body:d});if(e.ok)return!0;for(let e=0;e<_javascriptSdkCore.NUMBER_OF_RETRIES;e++){await new Promise(a=>setTimeout(a,_javascriptSdkCore.RETRIES_DELAY));const a=await this.sendRequest(b,{method:_javascriptSdkCore.HttpMethod.Post,headers:c,body:d});if(a.ok)return!0}return!1}async getClientConfiguration(a){const b=_javascriptSdkCore.NUMBER_OF_RETRIES+1;for(let c=0;c<b;c++)try{const b=await this.sendRequest(a,{method:_javascriptSdkCore.HttpMethod.Get});if(b.ok)return b.json()}catch(a){throw new _javascriptSdkCore.KameleoonError(_javascriptSdkCore.KameleoonException.ClientConfiguration)}return null}async getRemoteData(a){const b=await this.sendRequest(a,{method:_javascriptSdkCore.HttpMethod.Get});if(b.ok)return b.json();throw new _javascriptSdkCore.KameleoonError(_javascriptSdkCore.KameleoonException.RemoteData)}async sendRequest(a,b){const c=new AbortController,d=_objectSpread(_objectSpread({},b),{},{signal:c.signal}),e=setTimeout(()=>c.abort(),this.timeout),f=await fetch(a,d);return clearTimeout(e),f}}exports.RequestDispatcher=RequestDispatcher;
2
2
  //# sourceMappingURL=requester.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requester.js","names":["_javascriptSdkCore","require","Object","defineProperty","exports","value","RequestDispatcher","_typeof","a","Symbol","iterator","constructor","prototype","ownKeys","b","c","keys","getOwnPropertySymbols","d","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_regeneratorRuntime","configurable","writable","e","f","g","create","h","m","s","i","type","arg","call","_invoke","j","k","r","resolve","__await","then","Error","o","method","delegate","x","sent","_sent","dispatchException","abrupt","done","return","TypeError","resultName","next","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","l","completion","reset","n","u","isNaN","p","q","hasOwnProperty","t","v","asyncIterator","w","toStringTag","wrap","y","z","getPrototypeOf","A","B","displayName","isGeneratorFunction","name","mark","setPrototypeOf","__proto__","awrap","AsyncIterator","async","Promise","reverse","pop","values","prev","charAt","slice","stop","rval","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_toPrimitive","toPrimitive","String","Number","timeout","url","headers","body","fetch","HttpMethod","Post","response","ok","NUMBER_OF_RETRIES","setTimeout","RETRIES_DELAY","sendRequest","retryResponse","_headers","requests","Get","json","t0","KameleoonError","KameleoonException","ClientConfiguration","RemoteData","params","controller","AbortController","allParams","signal","timeoutId","abort","clearTimeout"],"sources":["../src/requester.ts"],"sourcesContent":["import {\n JSONType,\n HttpMethod,\n TrackParametersType,\n IExternalRequestDispatcher,\n KameleoonError,\n KameleoonException,\n HeadersType,\n RETRIES_DELAY,\n NUMBER_OF_RETRIES,\n} from '@kameleoon/javascript-sdk-core';\n\nexport class RequestDispatcher implements IExternalRequestDispatcher {\n private timeout: number;\n\n constructor(timeout: number) {\n this.timeout = timeout;\n }\n\n public async track({\n url,\n headers,\n body,\n }: TrackParametersType): Promise<boolean> {\n const response = await fetch(url, {\n method: HttpMethod.Post,\n headers,\n body,\n });\n\n if (response.ok) {\n return true;\n }\n\n for (let i = 0; i < NUMBER_OF_RETRIES; i++) {\n await new Promise((resolve) => setTimeout(resolve, RETRIES_DELAY));\n\n const retryResponse = await this.sendRequest(url, {\n method: HttpMethod.Post,\n headers,\n body,\n });\n\n if (retryResponse.ok) {\n return true;\n }\n }\n\n return false;\n }\n\n public async getClientConfiguration(\n url: string,\n // --- Note ---\n // https://project.kameleoon.net/issues/25005\n _headers: HeadersType,\n ): Promise<JSONType> {\n // --- Note ---\n // Initial request + NUMBER_OF_RETRIES\n const requests = NUMBER_OF_RETRIES + 1;\n\n for (let i = 0; i < requests; i++) {\n try {\n const response = await this.sendRequest(url, {\n method: HttpMethod.Get,\n // headers\n });\n\n if (response.ok) {\n return response.json();\n }\n } catch (err) {\n throw new KameleoonError(KameleoonException.ClientConfiguration);\n }\n }\n\n return null;\n }\n\n public async getRemoteData(url: string): Promise<JSONType> {\n const response = await fetch(url, {\n method: HttpMethod.Get,\n });\n\n if (response.ok) {\n return response.json();\n }\n\n throw new KameleoonError(KameleoonException.RemoteData);\n }\n\n private async sendRequest(\n url: string,\n params: RequestInit,\n ): Promise<Response> {\n const controller = new AbortController();\n\n const allParams = {\n ...params,\n signal: controller.signal,\n };\n\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n const response = await fetch(url, allParams);\n\n clearTimeout(timeoutId);\n\n return response;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"requester.js","names":["_javascriptSdkCore","require","Object","defineProperty","exports","value","RequestDispatcher","ownKeys","a","b","c","keys","getOwnPropertySymbols","d","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","constructor","timeout","track","url","headers","body","response","sendRequest","method","HttpMethod","Post","ok","i","NUMBER_OF_RETRIES","Promise","resolve","setTimeout","RETRIES_DELAY","retryResponse","getClientConfiguration","requests","Get","json","err","KameleoonError","KameleoonException","ClientConfiguration","getRemoteData","RemoteData","params","controller","AbortController","allParams","signal","timeoutId","abort","fetch","clearTimeout"],"sources":["../src/requester.ts"],"sourcesContent":["import {\n JSONType,\n HttpMethod,\n TrackParametersType,\n IExternalRequestDispatcher,\n KameleoonError,\n KameleoonException,\n HeadersType,\n RETRIES_DELAY,\n NUMBER_OF_RETRIES,\n} from '@kameleoon/javascript-sdk-core';\n\nexport class RequestDispatcher implements IExternalRequestDispatcher {\n private timeout: number;\n\n constructor(timeout: number) {\n this.timeout = timeout;\n }\n\n public async track({\n url,\n headers,\n body,\n }: TrackParametersType): Promise<boolean> {\n const response = await this.sendRequest(url, {\n method: HttpMethod.Post,\n headers,\n body,\n });\n\n if (response.ok) {\n return true;\n }\n\n for (let i = 0; i < NUMBER_OF_RETRIES; i++) {\n await new Promise((resolve) => setTimeout(resolve, RETRIES_DELAY));\n\n const retryResponse = await this.sendRequest(url, {\n method: HttpMethod.Post,\n headers,\n body,\n });\n\n if (retryResponse.ok) {\n return true;\n }\n }\n\n return false;\n }\n\n public async getClientConfiguration(\n url: string,\n // --- Note ---\n // https://project.kameleoon.net/issues/25005\n _headers: HeadersType,\n ): Promise<JSONType> {\n // --- Note ---\n // Initial request + NUMBER_OF_RETRIES\n const requests = NUMBER_OF_RETRIES + 1;\n\n for (let i = 0; i < requests; i++) {\n try {\n const response = await this.sendRequest(url, {\n method: HttpMethod.Get,\n // headers\n });\n\n if (response.ok) {\n return response.json();\n }\n } catch (err) {\n throw new KameleoonError(KameleoonException.ClientConfiguration);\n }\n }\n\n return null;\n }\n\n public async getRemoteData(url: string): Promise<JSONType> {\n const response = await this.sendRequest(url, {\n method: HttpMethod.Get,\n });\n\n if (response.ok) {\n return response.json();\n }\n\n throw new KameleoonError(KameleoonException.RemoteData);\n }\n\n private async sendRequest(\n url: string,\n params: RequestInit,\n ): Promise<Response> {\n const controller = new AbortController();\n\n const allParams = {\n ...params,\n signal: controller.signal,\n };\n\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n const response = await fetch(url, allParams);\n\n clearTimeout(timeoutId);\n\n return response;\n }\n}\n"],"mappings":"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"}
package/dist/storage.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { IExternalStorage, KameleoonStorageKey, IExternalStorageConstructor, StorageDataType } from '@kameleoon/javascript-sdk-core';
2
- export declare class StorageConstructor implements IExternalStorageConstructor {
3
- initialize<T extends StorageDataType>(key: KameleoonStorageKey): IExternalStorage<T>;
1
+ import { IExternalStorage } from '@kameleoon/javascript-sdk-core';
2
+ export declare class DataStorage<T> implements IExternalStorage<T> {
3
+ read(key: string): T | null;
4
+ write(key: string, data: T): void;
4
5
  }
package/dist/storage.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core");Object.defineProperty(exports,"__esModule",{value:!0}),exports.StorageConstructor=void 0;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 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 _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 _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 StorageConstructor=function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"initialize",value:function initialize(a){var b=new Storage(a);return b}}]),a}();exports.StorageConstructor=StorageConstructor;var Storage=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"storageKey",void 0),this.storageKey=b}return _createClass(a,[{key:"key",get:function get(){return this.storageKey}},{key:"read",value:function read(){var a=localStorage.getItem(this.storageKey);if(!a)return(0,_javascriptSdkCore.Err)(new _javascriptSdkCore.KameleoonError(_javascriptSdkCore.KameleoonException.StorageEmpty));try{var b=this.parse(a);return b}catch(a){return(0,_javascriptSdkCore.Err)(new _javascriptSdkCore.KameleoonError(_javascriptSdkCore.KameleoonException.StorageRead,this.storageKey))}}},{key:"write",value:function write(a){try{return localStorage.setItem(this.storageKey,JSON.stringify(a)),(0,_javascriptSdkCore.Ok)()}catch(a){return(0,_javascriptSdkCore.Err)(new _javascriptSdkCore.KameleoonError(_javascriptSdkCore.KameleoonException.StorageWrite,a))}}},{key:"update",value:function update(a){var b=this.read();if(!b.ok)return b.error.type===_javascriptSdkCore.KameleoonException.StorageEmpty?this.write(a):b;var c=_objectSpread(_objectSpread({},b.data),a);return this.write(c)}},{key:"parse",value:function parse(a){var b;try{b=JSON.parse(a)}catch(a){throw new _javascriptSdkCore.KameleoonError(_javascriptSdkCore.KameleoonException.StorageParse,a,this.key)}return(0,_javascriptSdkCore.Ok)(b)}}]),a}();
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DataStorage=void 0;class DataStorage{read(a){const b=localStorage.getItem(a);return b?JSON.parse(b):null}write(a,b){localStorage.setItem(a,JSON.stringify(b))}}exports.DataStorage=DataStorage;
2
2
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","names":["_javascriptSdkCore","require","Object","defineProperty","exports","value","StorageConstructor","_typeof","a","Symbol","iterator","constructor","prototype","ownKeys","b","c","keys","getOwnPropertySymbols","d","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","_classCallCheck","TypeError","_defineProperties","key","_createClass","_toPrimitive","toPrimitive","call","String","Number","initialize","storage","Storage","storageKey","get","read","data","localStorage","getItem","Err","KameleoonError","KameleoonException","StorageEmpty","parsedData","parse","err","StorageRead","write","setItem","JSON","stringify","Ok","StorageWrite","update","result","ok","error","type","newData","StorageParse"],"sources":["../src/storage.ts"],"sourcesContent":["import {\n Ok,\n Err,\n Result,\n KameleoonError,\n IExternalStorage,\n KameleoonException,\n KameleoonStorageKey,\n IExternalStorageConstructor,\n StorageDataType,\n} from '@kameleoon/javascript-sdk-core';\n\nexport class StorageConstructor implements IExternalStorageConstructor {\n public initialize<T extends StorageDataType>(\n key: KameleoonStorageKey,\n ): IExternalStorage<T> {\n const storage = new Storage<T>(key);\n\n return storage;\n }\n}\n\nclass Storage<T> implements IExternalStorage<T> {\n private storageKey: KameleoonStorageKey;\n\n constructor(key: KameleoonStorageKey) {\n this.storageKey = key;\n }\n\n get key(): KameleoonStorageKey {\n return this.storageKey;\n }\n\n public read(): Result<T, KameleoonError> {\n const data = localStorage.getItem(this.storageKey);\n\n if (!data) {\n return Err(new KameleoonError(KameleoonException.StorageEmpty));\n }\n\n try {\n const parsedData = this.parse(data);\n\n return parsedData;\n } catch (err) {\n return Err(\n new KameleoonError(KameleoonException.StorageRead, this.storageKey),\n );\n }\n }\n\n public write(data: T): Result<void, KameleoonError> {\n try {\n localStorage.setItem(this.storageKey, JSON.stringify(data));\n\n return Ok();\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.StorageWrite, err));\n }\n }\n\n public update(data: Partial<T>): Result<void, KameleoonError> {\n const result = this.read();\n\n if (!result.ok) {\n if (result.error.type === KameleoonException.StorageEmpty) {\n return this.write(data as T);\n } else {\n return result;\n }\n }\n\n const newData = {\n ...result.data,\n ...data,\n };\n\n return this.write(newData);\n }\n\n private parse(data: string): Result<T, KameleoonError> {\n let result: T;\n\n try {\n result = JSON.parse(data);\n } catch (err) {\n throw new KameleoonError(KameleoonException.StorageParse, err, this.key);\n }\n\n return Ok(result);\n }\n}\n"],"mappings":"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"}
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 { IExternalStorage } from '@kameleoon/javascript-sdk-core';\n\n// --- Note ---\n// Named `DataStorage` to avoid collision with `Storage` from `window` API\nexport class DataStorage<T> implements IExternalStorage<T> {\n public read(key: string): T | null {\n const data = localStorage.getItem(key);\n\n if (!data) {\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"],"mappings":"+FAIO,KAAM,CAAAA,WAA8C,CAClDC,IAAIA,CAACC,CAAW,CAAY,CACjC,KAAM,CAAAC,CAAI,CAAGC,YAAY,CAACC,OAAO,CAACH,CAAG,CAAC,CAAC,MAElC,CAAAC,CAAI,CAIFG,IAAI,CAACC,KAAK,CAACJ,CAAI,CAAC,CAHd,IAIX,CAEOK,KAAKA,CAACN,CAAW,CAAEC,CAAO,CAAQ,CACvCC,YAAY,CAACK,OAAO,CAACP,CAAG,CAAEI,IAAI,CAACI,SAAS,CAACP,CAAI,CAAC,CAChD,CACF,CAACQ,OAAA,CAAAX,WAAA,CAAAA,WAAA"}
package/dist/types.d.ts CHANGED
@@ -1,29 +1,40 @@
1
- import { SDKConfigurationType } from '@kameleoon/javascript-sdk-core';
1
+ import { ExternalPackageInfoType, IExternalEventSource, IExternalStorage, SDKConfigurationType } from '@kameleoon/javascript-sdk-core';
2
+ /**
3
+ * @param {IExternalStorage | undefined} storage - external storage implementation
4
+ * @param {IExternalEventSource | undefined} eventSource - external event source implementation
5
+ * @param {IExternalVisitorCodeManager | undefined} visitorCodeManager - external visitor code manager implementation
6
+ * */
7
+ export type ExternalsType = {
8
+ storage?: IExternalStorage;
9
+ eventSource?: IExternalEventSource;
10
+ visitorCodeManager?: IExternalVisitorCodeManager;
11
+ };
2
12
  /**
3
13
  * @param {string} siteCode - client's siteCode defined on Kameleoon platform
4
14
  * @param {Partial<SDKConfigurationType> | undefined} configuration - client's configuration
15
+ * @param {ExternalsType | undefined} externals - external dependencies
5
16
  * */
6
17
  export type SDKParameters = {
7
18
  siteCode: string;
8
19
  configuration?: Partial<SDKConfigurationType>;
20
+ externals?: ExternalsType;
21
+ _internals?: ExternalPackageInfoType;
9
22
  };
10
- export type ClientGetVisitorCodeParametersType = {
11
- domain: string;
12
- defaultVisitorCode?: string;
13
- };
14
- /**
15
- * @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
16
- * */
17
- export type GetVisitorCodeParametersType = {
18
- defaultVisitorCode?: string;
23
+ export type SetDataParametersType = {
24
+ visitorCode: string;
25
+ key: string;
26
+ domain?: string;
27
+ maxAge: number;
28
+ path: string;
19
29
  };
20
- /**
21
- * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters
22
- * @param {boolean} consent - a value representing the legal consent status. - 'true' indicates the
23
- * visitor has given legal consent. - 'false' indicates the visitor has withdrawn or not
24
- * provided legal consent.
25
- * */
26
- export type SetLegalConsentParametersType = {
30
+ export interface IExternalVisitorCodeManager {
31
+ getData: (key: string) => string | null;
32
+ setData: (params: SetDataParametersType) => void;
33
+ }
34
+ export type GetResultCookieParametersType = {
27
35
  visitorCode: string;
28
- consent: boolean;
36
+ domain?: string;
37
+ key: string;
38
+ maxAge: number;
39
+ path: string;
29
40
  };
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["import { SDKConfigurationType } from '@kameleoon/javascript-sdk-core';\n\n/**\n * @param {string} siteCode - client's siteCode defined on Kameleoon platform\n * @param {Partial<SDKConfigurationType> | undefined} configuration - client's configuration\n * */\nexport type SDKParameters = {\n siteCode: string;\n configuration?: Partial<SDKConfigurationType>;\n};\n\n// TODO: Below types will be removed soon with new breaking release\nexport type ClientGetVisitorCodeParametersType = {\n domain: string;\n defaultVisitorCode?: string;\n};\n\n/**\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 * */\nexport type GetVisitorCodeParametersType = {\n defaultVisitorCode?: string;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\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 * */\nexport type SetLegalConsentParametersType = {\n visitorCode: string;\n consent: boolean;\n};\n"],"mappings":""}
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,8 +1,8 @@
1
- import { VisitorCodeManager } from '@kameleoon/javascript-sdk-core';
2
- export declare class VisitorCodeManagerConstructor extends VisitorCodeManager {
3
- private domain?;
4
- constructor(domain?: string);
5
- obtainVisitorCode(defaultVisitorCode?: string): string;
6
- getData(): string;
7
- setData(visitorCode: string): void;
1
+ import { IExternalVisitorCodeManager, SetDataParametersType } from './types';
2
+ declare class VisitorCodeManager implements IExternalVisitorCodeManager {
3
+ getData(key: string): string | null;
4
+ setData({ visitorCode, domain, maxAge, key, path, }: SetDataParametersType): void;
5
+ private getCookieVisitorCode;
6
+ private getResultCookie;
8
7
  }
8
+ export { VisitorCodeManager as KameleoonVisitorCodeManager };
@@ -1,2 +1,2 @@
1
- "use strict";var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core");Object.defineProperty(exports,"__esModule",{value:!0}),exports.VisitorCodeManagerConstructor=void 0;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 _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function _possibleConstructorReturn(a,b){if(b&&("object"===_typeof(b)||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(a)}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(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 VisitorCodeManagerConstructor=function(a){function b(a){var d;return _classCallCheck(this,b),d=c.call(this),_defineProperty(_assertThisInitialized(d),"domain",void 0),d.domain=a,d}_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"obtainVisitorCode",value:function obtainVisitorCode(a){return this.getVisitorCode({defaultVisitorCode:a,setData:this.setData.bind(this),getData:this.getData.bind(this)})}},{key:"getData",value:function getData(){var a=document.cookie;if(a){var b=this.getCookieVisitorCode(a);if(b.ok&&b.data)return b.data}return""}},{key:"setData",value:function setData(a){var b=this.getResultCookie({domain:this.domain,visitorCode:a});document.cookie=b}}]),b}(_javascriptSdkCore.VisitorCodeManager);exports.VisitorCodeManagerConstructor=VisitorCodeManagerConstructor;
1
+ "use strict";var _constants=require("./constants");Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonVisitorCodeManager=void 0;class VisitorCodeManager{getData(a){const b=document.cookie;return b?this.getCookieVisitorCode(b,a):""}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}getCookieVisitorCode(a,b){const c=a.split(_constants.CookieParameter.PairsDelimiter).find(a=>{const[c,d]=a.split(_constants.CookieParameter.KeyValueDelimiter);return c===b&&""!==d});if(c){const[a,b]=c.split(_constants.CookieParameter.KeyValueDelimiter);return b}return null}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":["_javascriptSdkCore","require","Object","defineProperty","exports","value","VisitorCodeManagerConstructor","_typeof","a","Symbol","iterator","constructor","prototype","_classCallCheck","b","TypeError","_defineProperties","c","d","length","enumerable","configurable","writable","_toPropertyKey","key","_createClass","_inherits","create","_setPrototypeOf","setPrototypeOf","bind","__proto__","_createSuper","_isNativeReflectConstruct","_getPrototypeOf","e","Reflect","construct","arguments","apply","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","call","getPrototypeOf","_defineProperty","_toPrimitive","toPrimitive","String","Number","domain","obtainVisitorCode","defaultVisitorCode","getVisitorCode","setData","getData","cookie","document","visitorCodeResult","getCookieVisitorCode","ok","data","visitorCode","resultCookie","getResultCookie","VisitorCodeManager"],"sources":["../src/visitorCodeManager.ts"],"sourcesContent":["import { VisitorCodeManager } from '@kameleoon/javascript-sdk-core';\n\nexport class VisitorCodeManagerConstructor extends VisitorCodeManager {\n private domain?: string;\n\n constructor(domain?: string) {\n super();\n\n this.domain = domain;\n }\n\n public obtainVisitorCode(defaultVisitorCode?: string): string {\n return this.getVisitorCode({\n defaultVisitorCode,\n setData: this.setData.bind(this),\n getData: this.getData.bind(this),\n });\n }\n\n public getData(): string {\n const cookie = document.cookie;\n\n if (cookie) {\n const visitorCodeResult = this.getCookieVisitorCode(cookie);\n\n if (visitorCodeResult.ok && visitorCodeResult.data) {\n return visitorCodeResult.data;\n }\n }\n\n return '';\n }\n\n public setData(visitorCode: string): void {\n const resultCookie = this.getResultCookie({\n domain: this.domain,\n visitorCode,\n });\n\n document.cookie = resultCookie;\n }\n}\n"],"mappings":"aAAA,IAAAA,kBAAA,CAAAC,OAAA,mCAAoEC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,6BAAA,iBAAAC,QAAAC,CAAA,mCAAAD,OAAA,oBAAAE,MAAA,mBAAAA,MAAA,CAAAC,QAAA,UAAAF,CAAA,gBAAAA,CAAA,WAAAA,CAAA,SAAAA,CAAA,qBAAAC,MAAA,EAAAD,CAAA,CAAAG,WAAA,GAAAF,MAAA,EAAAD,CAAA,GAAAC,MAAA,CAAAG,SAAA,iBAAAJ,CAAA,EAAAD,OAAA,CAAAC,CAAA,WAAAK,gBAAAL,CAAA,CAAAM,CAAA,OAAAN,CAAA,YAAAM,CAAA,YAAAC,SAAA,+CAAAC,kBAAAR,CAAA,CAAAM,CAAA,UAAAG,CAAA,CAAAC,CAAA,GAAAA,CAAA,CAAAJ,CAAA,CAAAK,MAAA,CAAAD,CAAA,GAAAD,CAAA,CAAAH,CAAA,CAAAI,CAAA,EAAAD,CAAA,CAAAG,UAAA,CAAAH,CAAA,CAAAG,UAAA,KAAAH,CAAA,CAAAI,YAAA,cAAAJ,CAAA,GAAAA,CAAA,CAAAK,QAAA,KAAApB,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAe,cAAA,CAAAN,CAAA,CAAAO,GAAA,EAAAP,CAAA,WAAAQ,aAAAjB,CAAA,CAAAM,CAAA,CAAAG,CAAA,SAAAH,CAAA,EAAAE,iBAAA,CAAAR,CAAA,CAAAI,SAAA,CAAAE,CAAA,EAAAG,CAAA,EAAAD,iBAAA,CAAAR,CAAA,CAAAS,CAAA,EAAAf,MAAA,CAAAC,cAAA,CAAAK,CAAA,cAAAc,QAAA,MAAAd,CAAA,UAAAkB,UAAAlB,CAAA,CAAAM,CAAA,wBAAAA,CAAA,SAAAA,CAAA,WAAAC,SAAA,uDAAAP,CAAA,CAAAI,SAAA,CAAAV,MAAA,CAAAyB,MAAA,CAAAb,CAAA,EAAAA,CAAA,CAAAF,SAAA,EAAAD,WAAA,EAAAN,KAAA,CAAAG,CAAA,CAAAc,QAAA,IAAAD,YAAA,OAAAnB,MAAA,CAAAC,cAAA,CAAAK,CAAA,cAAAc,QAAA,MAAAR,CAAA,EAAAc,eAAA,CAAApB,CAAA,CAAAM,CAAA,WAAAc,gBAAApB,CAAA,CAAAM,CAAA,SAAAc,eAAA,CAAA1B,MAAA,CAAA2B,cAAA,CAAA3B,MAAA,CAAA2B,cAAA,CAAAC,IAAA,YAAAtB,CAAA,CAAAM,CAAA,SAAAN,CAAA,CAAAuB,SAAA,CAAAjB,CAAA,CAAAN,CAAA,EAAAoB,eAAA,CAAApB,CAAA,CAAAM,CAAA,WAAAkB,aAAAxB,CAAA,MAAAM,CAAA,CAAAmB,yBAAA,yBAAAhB,CAAA,CAAAC,CAAA,CAAAgB,eAAA,CAAA1B,CAAA,KAAAM,CAAA,MAAAqB,CAAA,CAAAD,eAAA,OAAAvB,WAAA,CAAAM,CAAA,CAAAmB,OAAA,CAAAC,SAAA,CAAAnB,CAAA,CAAAoB,SAAA,CAAAH,CAAA,OAAAlB,CAAA,CAAAC,CAAA,CAAAqB,KAAA,MAAAD,SAAA,SAAAE,0BAAA,MAAAvB,CAAA,YAAAuB,2BAAAhC,CAAA,CAAAM,CAAA,KAAAA,CAAA,cAAAP,OAAA,CAAAO,CAAA,sBAAAA,CAAA,SAAAA,CAAA,aAAAA,CAAA,WAAAC,SAAA,oEAAA0B,sBAAA,CAAAjC,CAAA,WAAAiC,uBAAAjC,CAAA,cAAAA,CAAA,WAAAkC,cAAA,qEAAAlC,CAAA,UAAAyB,0BAAA,yBAAAG,OAAA,GAAAA,OAAA,CAAAC,SAAA,aAAAD,OAAA,CAAAC,SAAA,CAAAM,IAAA,gCAAAC,KAAA,qBAAAC,OAAA,CAAAjC,SAAA,CAAAkC,OAAA,CAAAC,IAAA,CAAAX,OAAA,CAAAC,SAAA,CAAAQ,OAAA,4BAAArC,CAAA,qBAAA0B,gBAAA1B,CAAA,SAAA0B,eAAA,CAAAhC,MAAA,CAAA2B,cAAA,CAAA3B,MAAA,CAAA8C,cAAA,CAAAlB,IAAA,YAAAtB,CAAA,SAAAA,CAAA,CAAAuB,SAAA,EAAA7B,MAAA,CAAA8C,cAAA,CAAAxC,CAAA,GAAA0B,eAAA,CAAA1B,CAAA,WAAAyC,gBAAAzC,CAAA,CAAAM,CAAA,CAAAG,CAAA,SAAAH,CAAA,CAAAS,cAAA,CAAAT,CAAA,EAAAA,CAAA,IAAAN,CAAA,CAAAN,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAM,CAAA,EAAAT,KAAA,CAAAY,CAAA,CAAAG,UAAA,IAAAC,YAAA,IAAAC,QAAA,MAAAd,CAAA,CAAAM,CAAA,EAAAG,CAAA,CAAAT,CAAA,UAAAe,eAAAf,CAAA,MAAAM,CAAA,CAAAoC,YAAA,CAAA1C,CAAA,4BAAAD,OAAA,CAAAO,CAAA,EAAAA,CAAA,CAAAA,CAAA,aAAAoC,aAAA1C,CAAA,CAAAM,CAAA,gBAAAP,OAAA,CAAAC,CAAA,UAAAA,CAAA,QAAAA,CAAA,KAAAS,CAAA,CAAAT,CAAA,CAAAC,MAAA,CAAA0C,WAAA,KAAAlC,CAAA,eAAAC,CAAA,CAAAD,CAAA,CAAA8B,IAAA,CAAAvC,CAAA,CAAAM,CAAA,2BAAAP,OAAA,CAAAW,CAAA,SAAAA,CAAA,WAAAH,SAAA,mEAAAD,CAAA,CAAAsC,MAAA,CAAAC,MAAA,EAAA7C,CAAA,KAEvD,CAAAF,6BAA6B,UAAAE,CAAA,EAGxC,SAAAM,EAAYwC,CAAe,CAAE,KAAApC,CAAA,QAAAL,eAAA,MAAAC,CAAA,EAAAI,CAAA,CAAAD,CAAA,CAAA8B,IAAA,OAAAE,eAAA,CAAAR,sBAAA,CAAAvB,CAAA,mBAG3BA,CAAA,CAAKoC,MAAM,CAAGA,CAAM,CAAApC,CACtB,CAACQ,SAAA,CAAAZ,CAAA,CAAAN,CAAA,MAAAS,CAAA,CAAAe,YAAA,CAAAlB,CAAA,SAAAW,YAAA,CAAAX,CAAA,GAAAU,GAAA,qBAAAnB,KAAA,CAED,SAAAkD,kBAAyBC,CAA2B,CAAU,CAC5D,MAAO,KAAI,CAACC,cAAc,CAAC,CACzBD,kBAAkB,CAAlBA,CAAkB,CAClBE,OAAO,CAAE,IAAI,CAACA,OAAO,CAAC5B,IAAI,CAAC,IAAI,CAAC,CAChC6B,OAAO,CAAE,IAAI,CAACA,OAAO,CAAC7B,IAAI,CAAC,IAAI,CACjC,CAAC,CACH,CAAC,GAAAN,GAAA,WAAAnB,KAAA,CAED,SAAAsD,QAAA,CAAyB,CACvB,GAAM,CAAAC,CAAM,CAAGC,QAAQ,CAACD,MAAM,CAE9B,GAAIA,CAAM,CAAE,CACV,GAAM,CAAAE,CAAiB,CAAG,IAAI,CAACC,oBAAoB,CAACH,CAAM,CAAC,CAE3D,GAAIE,CAAiB,CAACE,EAAE,EAAIF,CAAiB,CAACG,IAAI,CAChD,MAAO,CAAAH,CAAiB,CAACG,IAE7B,CAEA,MAAO,EACT,CAAC,GAAAzC,GAAA,WAAAnB,KAAA,CAED,SAAAqD,QAAeQ,CAAmB,CAAQ,CACxC,GAAM,CAAAC,CAAY,CAAG,IAAI,CAACC,eAAe,CAAC,CACxCd,MAAM,CAAE,IAAI,CAACA,MAAM,CACnBY,WAAW,CAAXA,CACF,CAAC,CAAC,CAEFL,QAAQ,CAACD,MAAM,CAAGO,CACpB,CAAC,IAAArD,CAAA,EAtCgDuD,qCAAkB,EAAAjE,OAAA,CAAAE,6BAAA,CAAAA,6BAAA"}
1
+ {"version":3,"file":"visitorCodeManager.js","names":["_constants","require","Object","defineProperty","exports","value","KameleoonVisitorCodeManager","VisitorCodeManager","getData","key","cookie","document","getCookieVisitorCode","setData","a","visitorCode","domain","maxAge","path","resultCookie","getResultCookie","cookieKey","cookiePair","split","CookieParameter","PairsDelimiter","find","pair","KeyValueDelimiter","_","cookieArray","MaxAge","Path","push","Domain","join"],"sources":["../src/visitorCodeManager.ts"],"sourcesContent":["import {\n GetResultCookieParametersType,\n IExternalVisitorCodeManager,\n SetDataParametersType,\n} from './types';\nimport { CookieParameter } from './constants';\n\nclass VisitorCodeManager implements IExternalVisitorCodeManager {\n public getData(key: string): string | null {\n const cookie = document.cookie;\n\n if (cookie) {\n return this.getCookieVisitorCode(cookie, key);\n }\n\n return '';\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 getCookieVisitorCode(\n cookie: string,\n cookieKey: string,\n ): string | null {\n const findCookieValue = (pair: string): boolean => {\n const [key, value] = pair.split(CookieParameter.KeyValueDelimiter);\n\n return key === cookieKey && value !== '';\n };\n\n const cookiePair = cookie\n .split(CookieParameter.PairsDelimiter)\n .find(findCookieValue);\n\n if (cookiePair) {\n const [_, value] = cookiePair.split(CookieParameter.KeyValueDelimiter);\n\n return value;\n }\n\n return null;\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":"aAKA,IAAAA,UAAA,CAAAC,OAAA,gBAA8CC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,2BAAA,QAE9C,KAAM,CAAAC,kBAA0D,CACvDC,OAAOA,CAACC,CAAW,CAAiB,CACzC,KAAM,CAAAC,CAAM,CAAGC,QAAQ,CAACD,MAAM,CAAC,MAE3B,CAAAA,CAAM,CACD,IAAI,CAACE,oBAAoB,CAACF,CAAM,CAAED,CAAG,CAAC,CAGxC,EACT,CAEOI,OAAOA,CAAAC,CAAA,CAMkB,IANjB,CACbC,WAAW,CAAXA,CAAW,CACXC,MAAM,CAANA,CAAM,CACNC,MAAM,CAANA,CAAM,CACNR,GAAG,CAAHA,CAAG,CACHS,IAAI,CAAJA,CACqB,CAAC,CAAAJ,CAAA,CACtB,KAAM,CAAAK,CAAY,CAAG,IAAI,CAACC,eAAe,CAAC,CACxCJ,MAAM,CAANA,CAAM,CACND,WAAW,CAAXA,CAAW,CACXN,GAAG,CAAHA,CAAG,CACHQ,MAAM,CAANA,CAAM,CACNC,IAAI,CAAJA,CACF,CAAC,CAAC,CAEFP,QAAQ,CAACD,MAAM,CAAGS,CACpB,CAEQP,oBAAoBA,CAC1BF,CAAc,CACdW,CAAiB,CACF,MAOT,CAAAC,CAAU,CAAGZ,CAAM,CACtBa,KAAK,CAACC,0BAAe,CAACC,cAAc,CAAC,CACrCC,IAAI,CARkBC,CAAY,EAAc,CACjD,KAAM,CAAClB,CAAG,CAAEJ,CAAK,CAAC,CAAGsB,CAAI,CAACJ,KAAK,CAACC,0BAAe,CAACI,iBAAiB,CAAC,CAElE,MAAO,CAAAnB,CAAG,GAAKY,CAAS,EAAc,EAAE,GAAZhB,CAC9B,CAIuB,CAAC,CAExB,GAAIiB,CAAU,CAAE,CACd,KAAM,CAACO,CAAC,CAAExB,CAAK,CAAC,CAAGiB,CAAU,CAACC,KAAK,CAACC,0BAAe,CAACI,iBAAiB,CAAC,CAEtE,MAAO,CAAAvB,CACT,CAEA,MAAO,KACT,CAEQe,eAAeA,CAAAN,CAAA,CAMmB,IANlB,CACtBE,MAAM,CAANA,CAAM,CACND,WAAW,CAAXA,CAAW,CACXE,MAAM,CAANA,CAAM,CACNR,GAAG,CAAHA,CAAG,CACHS,IAAI,CAAJA,CAC6B,CAAC,CAAAJ,CAAA,CAC9B,KAAM,CAAAgB,CAAW,CAAG,CAClBrB,CAAG,CAAGe,0BAAe,CAACI,iBAAiB,CAAGb,CAAW,CACrDS,0BAAe,CAACO,MAAM,CAAGP,0BAAe,CAACI,iBAAiB,CAAGX,CAAM,CACnEO,0BAAe,CAACQ,IAAI,CAAGR,0BAAe,CAACI,iBAAiB,CAAGV,CAAI,CAChE,CAQD,MANI,CAAAF,CAAM,EACRc,CAAW,CAACG,IAAI,CACdT,0BAAe,CAACU,MAAM,CAAGV,0BAAe,CAACI,iBAAiB,CAAGZ,CAC/D,CAAC,CAGIc,CAAW,CAACK,IAAI,CAACX,0BAAe,CAACC,cAAc,CACxD,CACF,CAACrB,OAAA,CAAAE,2BAAA,CAAAC,kBAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kameleoon/javascript-sdk",
3
- "version": "2.5.2",
3
+ "version": "3.0.1",
4
4
  "description": "Kameleoon JavaScript SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,10 +13,11 @@
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",
16
- "deploy": "npm publish --tag latest --access public",
16
+ "deploy": "/bin/bash ../../scripts/deploy.sh javascript-sdk",
17
17
  "deploy-nexus": "/bin/bash ../../scripts/deploy_nexus.sh javascript-sdk",
18
- "release": "/bin/bash ../../scripts/release.sh javascript-sdk",
19
- "update-documentation": "/bin/bash ../../scripts/update_documentation.sh js",
18
+ "update-documentation": "/bin/bash ../../scripts/update_documentation.sh javascript-sdk",
19
+ "update-changelog": "/bin/bash ../../scripts/update_changelog.sh javascript-sdk",
20
+ "symlink": "yarn link",
20
21
  "test": "jest",
21
22
  "test:watch": "jest --watch",
22
23
  "test:coverage": "jest --coverage"
@@ -34,7 +35,7 @@
34
35
  ],
35
36
  "license": "ISC",
36
37
  "dependencies": {
37
- "@kameleoon/javascript-sdk-core": "^3.0.0"
38
+ "@kameleoon/javascript-sdk-core": "4.0.1"
38
39
  },
39
40
  "devDependencies": {
40
41
  "@types/crypto-js": "^4.1.1",
@@ -1,14 +0,0 @@
1
- /**
2
- * @class
3
- * KameleoonUtils - a class with containing a number of static helper methods
4
- * */
5
- export declare class KameleoonUtils {
6
- /**
7
- * @deprecated This method is deprecated and will be removed in a future update. For handling legal consent, please use the `getVisitorCode` method from `KameleoonClient` instead.
8
- * @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
9
- * @param {string} domain domain which cookie belongs to
10
- * @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
11
- * @returns {string} result visitor code
12
- * */
13
- static getVisitorCode(domain: string, defaultVisitorCode?: string): string;
14
- }
@@ -1,2 +0,0 @@
1
- "use strict";var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core");Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonUtils=void 0;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 _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return 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 _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 KAMELEOON_COOKIE_KEY="kameleoonVisitorCode",KameleoonUtilsConstructor=function(){function a(){_classCallCheck(this,a)}return _createClass(a,[{key:"getVisitorCode",value:function getVisitorCode(a){var b=a.domain,c=a.defaultVisitorCode,d=document.cookie,e=this.getCookieVisitorCode(d);if(e.ok&&e.data)return e.data;var f=c||this.generateRandomString(_javascriptSdkCore.VISITOR_CODE_LENGTH),g=this.getResultCookie(b,f);return document.cookie=g,f}},{key:"getCookieVisitorCode",value:function getCookieVisitorCode(a){var b=a.split(_javascriptSdkCore.CookieParameter.PairsDelimiter),c=b.find(function(a){var b=a.split(_javascriptSdkCore.CookieParameter.KeyValueDelimiter),c=_slicedToArray(b,2),d=c[0],e=c[1];return d===KAMELEOON_COOKIE_KEY});if(c){var d=c.split(_javascriptSdkCore.CookieParameter.KeyValueDelimiter),e=_slicedToArray(d,2),f=e[0],g=e[1];return(0,_javascriptSdkCore.Ok)(g)}return(0,_javascriptSdkCore.Err)()}},{key:"generateRandomString",value:function generateRandomString(a){var b="";if(0>a)return b;for(var c=0;c<a;c++)b+="abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(36*Math.random())];return b}},{key:"getResultCookie",value:function getResultCookie(a,b){var c=[KAMELEOON_COOKIE_KEY+_javascriptSdkCore.CookieParameter.KeyValueDelimiter+b,_javascriptSdkCore.CookieParameter.MaxAge+_javascriptSdkCore.CookieParameter.KeyValueDelimiter+31536000,_javascriptSdkCore.CookieParameter.Path+_javascriptSdkCore.CookieParameter.KeyValueDelimiter+"/",_javascriptSdkCore.CookieParameter.Domain+_javascriptSdkCore.CookieParameter.KeyValueDelimiter+a];return c.join(_javascriptSdkCore.CookieParameter.PairsDelimiter)}}]),a}(),KameleoonUtils=function(){function a(){_classCallCheck(this,a)}return _createClass(a,null,[{key:"getVisitorCode",value:function getVisitorCode(a,b){var c=new KameleoonUtilsConstructor;return c.getVisitorCode({domain:a,defaultVisitorCode:b})}}]),a}();exports.KameleoonUtils=KameleoonUtils;
2
- //# sourceMappingURL=kameleoonUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kameleoonUtils.js","names":["_javascriptSdkCore","require","Object","defineProperty","exports","value","KameleoonUtils","_typeof","a","Symbol","iterator","constructor","prototype","_slicedToArray","b","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","_arrayLikeToArray","c","toString","call","slice","name","Array","from","test","length","d","e","f","g","h","i","j","next","done","push","return","isArray","_classCallCheck","_defineProperties","enumerable","configurable","writable","_toPropertyKey","key","_createClass","_toPrimitive","toPrimitive","String","Number","KAMELEOON_COOKIE_KEY","KameleoonUtilsConstructor","getVisitorCode","domain","defaultVisitorCode","cookie","document","visitorCodeResult","getCookieVisitorCode","ok","data","visitorCode","generateRandomString","VISITOR_CODE_LENGTH","resultCookie","getResultCookie","pairs","split","Cookie","PairsDelimiter","pair","find","KeyValueDelimiter","_","Ok","Err","randomString","Math","floor","random","cookieArray","MaxAge","Path","Domain","join","kameleoonUtilsConstructor"],"sources":["../src/kameleoonUtils.ts"],"sourcesContent":["import {\n CookieParameter as Cookie,\n Err,\n Ok,\n Result,\n VISITOR_CODE_LENGTH,\n} from '@kameleoon/javascript-sdk-core';\nimport { ClientGetVisitorCodeParametersType } from './types';\n\nconst KAMELEOON_COOKIE_KEY = 'kameleoonVisitorCode';\n\nclass KameleoonUtilsConstructor {\n public getVisitorCode({\n domain,\n defaultVisitorCode,\n }: ClientGetVisitorCodeParametersType): string {\n const cookie = document.cookie;\n\n const visitorCodeResult = this.getCookieVisitorCode(cookie);\n\n if (visitorCodeResult.ok && visitorCodeResult.data) {\n return visitorCodeResult.data;\n }\n\n const visitorCode =\n defaultVisitorCode || this.generateRandomString(VISITOR_CODE_LENGTH);\n\n const resultCookie = this.getResultCookie(domain, visitorCode);\n\n document.cookie = resultCookie;\n\n return visitorCode;\n }\n\n private getCookieVisitorCode(cookie: string): Result<string, void> {\n const pairs = cookie.split(Cookie.PairsDelimiter);\n const pair = pairs.find((pair) => {\n const [key, _] = pair.split(Cookie.KeyValueDelimiter) as [string, string];\n\n return key === KAMELEOON_COOKIE_KEY;\n });\n\n if (pair) {\n const [_, value] = pair.split(Cookie.KeyValueDelimiter);\n\n return Ok(value);\n }\n\n return Err();\n }\n\n private generateRandomString(length: number): string {\n const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';\n let randomString = '';\n\n if (length < 0) {\n return randomString;\n }\n\n for (let i = 0; i < length; i++) {\n randomString += characters[Math.floor(Math.random() * characters.length)];\n }\n\n return randomString;\n }\n\n private getResultCookie(domain: string, visitorCode: string): string {\n const yearSeconds = 60 * 60 * 24 * 365;\n const cookieArray = [\n KAMELEOON_COOKIE_KEY + Cookie.KeyValueDelimiter + visitorCode,\n Cookie.MaxAge + Cookie.KeyValueDelimiter + yearSeconds,\n Cookie.Path + Cookie.KeyValueDelimiter + '/',\n Cookie.Domain + Cookie.KeyValueDelimiter + domain,\n ];\n\n return cookieArray.join(Cookie.PairsDelimiter);\n }\n}\n\n/**\n * @class\n * KameleoonUtils - a class with containing a number of static helper methods\n * */\nexport class KameleoonUtils {\n /**\n * @deprecated This method is deprecated and will be removed in a future update. For handling legal consent, please use the `getVisitorCode` method from `KameleoonClient` instead.\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} domain domain which cookie belongs to\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 * */\n static getVisitorCode(domain: string, defaultVisitorCode?: string): string {\n const kameleoonUtilsConstructor = new KameleoonUtilsConstructor();\n\n return kameleoonUtilsConstructor.getVisitorCode({\n domain,\n defaultVisitorCode,\n });\n }\n}\n"],"mappings":"aAAA,IAAAA,kBAAA,CAAAC,OAAA,mCAMwCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,cAAA,iBAAAC,QAAAC,CAAA,mCAAAD,OAAA,oBAAAE,MAAA,mBAAAA,MAAA,CAAAC,QAAA,UAAAF,CAAA,gBAAAA,CAAA,WAAAA,CAAA,SAAAA,CAAA,qBAAAC,MAAA,EAAAD,CAAA,CAAAG,WAAA,GAAAF,MAAA,EAAAD,CAAA,GAAAC,MAAA,CAAAG,SAAA,iBAAAJ,CAAA,EAAAD,OAAA,CAAAC,CAAA,WAAAK,eAAAL,CAAA,CAAAM,CAAA,SAAAC,eAAA,CAAAP,CAAA,GAAAQ,qBAAA,CAAAR,CAAA,CAAAM,CAAA,GAAAG,2BAAA,CAAAT,CAAA,CAAAM,CAAA,GAAAI,gBAAA,YAAAA,iBAAA,YAAAC,SAAA,uJAAAF,4BAAAT,CAAA,CAAAM,CAAA,KAAAN,CAAA,sBAAAA,CAAA,QAAAY,iBAAA,CAAAZ,CAAA,CAAAM,CAAA,MAAAO,CAAA,CAAAnB,MAAA,CAAAU,SAAA,CAAAU,QAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAgB,KAAA,wBAAAH,CAAA,EAAAb,CAAA,CAAAG,WAAA,GAAAU,CAAA,CAAAb,CAAA,CAAAG,WAAA,CAAAc,IAAA,UAAAJ,CAAA,UAAAA,CAAA,CAAAK,KAAA,CAAAC,IAAA,CAAAnB,CAAA,gBAAAa,CAAA,6CAAAO,IAAA,CAAAP,CAAA,EAAAD,iBAAA,CAAAZ,CAAA,CAAAM,CAAA,mBAAAM,kBAAAZ,CAAA,CAAAM,CAAA,SAAAA,CAAA,EAAAA,CAAA,CAAAN,CAAA,CAAAqB,MAAA,IAAAf,CAAA,CAAAN,CAAA,CAAAqB,MAAA,UAAAR,CAAA,GAAAS,CAAA,CAAAJ,KAAA,CAAAZ,CAAA,EAAAO,CAAA,CAAAP,CAAA,CAAAO,CAAA,GAAAS,CAAA,CAAAT,CAAA,EAAAb,CAAA,CAAAa,CAAA,SAAAS,CAAA,UAAAd,sBAAAR,CAAA,CAAAM,CAAA,MAAAO,CAAA,OAAAb,CAAA,0BAAAC,MAAA,EAAAD,CAAA,CAAAC,MAAA,CAAAC,QAAA,GAAAF,CAAA,wBAAAa,CAAA,MAAAS,CAAA,CAAAC,CAAA,CAAAC,CAAA,CAAAC,CAAA,CAAAC,CAAA,IAAAC,CAAA,IAAAC,CAAA,WAAAJ,CAAA,EAAAX,CAAA,CAAAA,CAAA,CAAAE,IAAA,CAAAf,CAAA,GAAA6B,IAAA,KAAAvB,CAAA,KAAAZ,MAAA,CAAAmB,CAAA,IAAAA,CAAA,QAAAc,CAAA,gBAAAA,CAAA,EAAAL,CAAA,CAAAE,CAAA,CAAAT,IAAA,CAAAF,CAAA,GAAAiB,IAAA,IAAAJ,CAAA,CAAAK,IAAA,CAAAT,CAAA,CAAAzB,KAAA,EAAA6B,CAAA,CAAAL,MAAA,GAAAf,CAAA,EAAAqB,CAAA,YAAA3B,CAAA,EAAA4B,CAAA,IAAAL,CAAA,CAAAvB,CAAA,iBAAA2B,CAAA,QAAAd,CAAA,CAAAmB,MAAA,GAAAP,CAAA,CAAAZ,CAAA,CAAAmB,MAAA,GAAAtC,MAAA,CAAA+B,CAAA,IAAAA,CAAA,oBAAAG,CAAA,OAAAL,CAAA,SAAAG,CAAA,WAAAnB,gBAAAP,CAAA,KAAAkB,KAAA,CAAAe,OAAA,CAAAjC,CAAA,SAAAA,CAAA,UAAAkC,gBAAAlC,CAAA,CAAAM,CAAA,OAAAN,CAAA,YAAAM,CAAA,YAAAK,SAAA,+CAAAwB,kBAAAnC,CAAA,CAAAM,CAAA,UAAAO,CAAA,CAAAS,CAAA,GAAAA,CAAA,CAAAhB,CAAA,CAAAe,MAAA,CAAAC,CAAA,GAAAT,CAAA,CAAAP,CAAA,CAAAgB,CAAA,EAAAT,CAAA,CAAAuB,UAAA,CAAAvB,CAAA,CAAAuB,UAAA,KAAAvB,CAAA,CAAAwB,YAAA,cAAAxB,CAAA,GAAAA,CAAA,CAAAyB,QAAA,KAAA5C,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAuC,cAAA,CAAA1B,CAAA,CAAA2B,GAAA,EAAA3B,CAAA,WAAA4B,aAAAzC,CAAA,CAAAM,CAAA,CAAAO,CAAA,SAAAP,CAAA,EAAA6B,iBAAA,CAAAnC,CAAA,CAAAI,SAAA,CAAAE,CAAA,EAAAO,CAAA,EAAAsB,iBAAA,CAAAnC,CAAA,CAAAa,CAAA,EAAAnB,MAAA,CAAAC,cAAA,CAAAK,CAAA,cAAAsC,QAAA,MAAAtC,CAAA,UAAAuC,eAAAvC,CAAA,MAAAM,CAAA,CAAAoC,YAAA,CAAA1C,CAAA,4BAAAD,OAAA,CAAAO,CAAA,EAAAA,CAAA,CAAAA,CAAA,aAAAoC,aAAA1C,CAAA,CAAAM,CAAA,gBAAAP,OAAA,CAAAC,CAAA,UAAAA,CAAA,QAAAA,CAAA,KAAAa,CAAA,CAAAb,CAAA,CAAAC,MAAA,CAAA0C,WAAA,KAAA9B,CAAA,eAAAS,CAAA,CAAAT,CAAA,CAAAE,IAAA,CAAAf,CAAA,CAAAM,CAAA,2BAAAP,OAAA,CAAAuB,CAAA,SAAAA,CAAA,WAAAX,SAAA,mEAAAL,CAAA,CAAAsC,MAAA,CAAAC,MAAA,EAAA7C,CAAA,KAGlC,CAAA8C,oBAAoB,CAAG,sBAAsB,CAE7CC,yBAAyB,qBAAA/C,EAAA,EAAAkC,eAAA,MAAAlC,CAAA,SAAAyC,YAAA,CAAAzC,CAAA,GAAAwC,GAAA,kBAAA3C,KAAA,CAC7B,SAAAmD,eAAAhD,CAAA,CAG+C,IAF7C,CAAAiD,CAAM,CAAAjD,CAAA,CAANiD,MAAM,CACNC,CAAkB,CAAAlD,CAAA,CAAlBkD,kBAAkB,CAEZC,CAAM,CAAGC,QAAQ,CAACD,MAAM,CAExBE,CAAiB,CAAG,IAAI,CAACC,oBAAoB,CAACH,CAAM,CAAC,CAE3D,GAAIE,CAAiB,CAACE,EAAE,EAAIF,CAAiB,CAACG,IAAI,CAChD,MAAO,CAAAH,CAAiB,CAACG,IAAI,CAC9B,GAEK,CAAAC,CAAW,CACfP,CAAkB,EAAI,IAAI,CAACQ,oBAAoB,CAACC,sCAAmB,CAAC,CAEhEC,CAAY,CAAG,IAAI,CAACC,eAAe,CAACZ,CAAM,CAAEQ,CAAW,CAAC,CAI9D,MAFA,CAAAL,QAAQ,CAACD,MAAM,CAAGS,CAAY,CAEvBH,CACT,CAAC,GAAAjB,GAAA,wBAAA3C,KAAA,CAED,SAAAyD,qBAA6BH,CAAc,CAAwB,IAC3D,CAAAW,CAAK,CAAGX,CAAM,CAACY,KAAK,CAACC,kCAAM,CAACC,cAAc,CAAC,CAC3CC,CAAI,CAAGJ,CAAK,CAACK,IAAI,CAAC,SAACD,CAAI,CAAK,CAChC,IAAA5D,CAAA,CAAiB4D,CAAI,CAACH,KAAK,CAACC,kCAAM,CAACI,iBAAiB,CAAC,CAAAvD,CAAA,CAAAR,cAAA,CAAAC,CAAA,IAA9CkC,CAAG,CAAA3B,CAAA,IAAEwD,CAAC,CAAAxD,CAAA,IAEb,MAAO,CAAA2B,CAAG,GAAKM,oBACjB,CAAC,CAAC,CAEF,GAAIoB,CAAI,CAAE,CACR,IAAA5C,CAAA,CAAmB4C,CAAI,CAACH,KAAK,CAACC,kCAAM,CAACI,iBAAiB,CAAC,CAAA7C,CAAA,CAAAlB,cAAA,CAAAiB,CAAA,IAAhD+C,CAAC,CAAA9C,CAAA,IAAE1B,CAAK,CAAA0B,CAAA,IAEf,MAAO,GAAA+C,qBAAE,EAACzE,CAAK,CACjB,CAEA,MAAO,GAAA0E,sBAAG,GACZ,CAAC,GAAA/B,GAAA,wBAAA3C,KAAA,CAED,SAAA6D,qBAA6BrC,CAAc,CAAU,IAE/C,CAAAmD,CAAY,CAAG,EAAE,CAErB,GAAa,CAAC,CAAVnD,CAAU,CACZ,MAAO,CAAAmD,CAAY,CAGrB,IAAK,GAAI,CAAA7C,CAAC,CAAG,CAAC,CAAEA,CAAC,CAAGN,CAAM,CAAEM,CAAC,EAAE,CAC7B6C,CAAY,EAAI,uCAAWC,IAAI,CAACC,KAAK,CAAC,GAAAD,IAAI,CAACE,MAAM,EAAsB,CAAC,CAAC,CAG3E,MAAO,CAAAH,CACT,CAAC,GAAAhC,GAAA,mBAAA3C,KAAA,CAED,SAAAgE,gBAAwBZ,CAAc,CAAEQ,CAAmB,CAAU,IAE7D,CAAAmB,CAAW,CAAG,CAClB9B,oBAAoB,CAAGkB,kCAAM,CAACI,iBAAiB,CAAGX,CAAW,CAC7DO,kCAAM,CAACa,MAAM,CAAGb,kCAAM,CAACI,iBAAiB,SAAc,CACtDJ,kCAAM,CAACc,IAAI,CAAGd,kCAAM,CAACI,iBAAiB,CAAG,GAAG,CAC5CJ,kCAAM,CAACe,MAAM,CAAGf,kCAAM,CAACI,iBAAiB,CAAGnB,CAAM,CAClD,CAED,MAAO,CAAA2B,CAAW,CAACI,IAAI,CAAChB,kCAAM,CAACC,cAAc,CAC/C,CAAC,IAAAjE,CAAA,IAOUF,cAAc,qBAAAE,EAAA,EAAAkC,eAAA,MAAAlC,CAAA,SAAAyC,YAAA,CAAAzC,CAAA,QAAAwC,GAAA,kBAAA3C,KAAA,CAQzB,SAAAmD,eAAsBC,CAAc,CAAEC,CAA2B,CAAU,CACzE,GAAM,CAAA+B,CAAyB,CAAG,GAAI,CAAAlC,yBAA2B,CAEjE,MAAO,CAAAkC,CAAyB,CAACjC,cAAc,CAAC,CAC9CC,MAAM,CAANA,CAAM,CACNC,kBAAkB,CAAlBA,CACF,CAAC,CACH,CAAC,IAAAlD,CAAA,IAAAJ,OAAA,CAAAE,cAAA,CAAAA,cAAA"}