@kameleoon/javascript-sdk 2.5.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +313 -0
- package/CHANGELOG_INTERNAL.md +3 -0
- package/README.md +134 -34
- package/dist/constants.d.ts +7 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -0
- package/dist/eventSource.d.ts +5 -3
- package/dist/eventSource.js +1 -1
- package/dist/eventSource.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.d.ts +5 -13
- package/dist/kameleoonClient.js +1 -1
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/requester.js +1 -1
- package/dist/requester.js.map +1 -1
- package/dist/storage.d.ts +4 -3
- package/dist/storage.js +1 -1
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +29 -18
- package/dist/types.js.map +1 -1
- package/dist/visitorCodeManager.d.ts +7 -7
- package/dist/visitorCodeManager.js +1 -1
- package/dist/visitorCodeManager.js.map +1 -1
- package/package.json +6 -5
- package/dist/kameleoonUtils.d.ts +0 -14
- package/dist/kameleoonUtils.js +0 -2
- package/dist/kameleoonUtils.js.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
## 3.0.0 (2024-02-16)
|
|
4
|
+
|
|
5
|
+
### Breaking Changes
|
|
6
|
+
|
|
7
|
+
- Previously deprecated `KameleoonUtils.getVisitorCode()` was removed
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
- Added [External Dependencies](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#external-dependencies) capabilities
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies:
|
|
16
|
+
- @kameleoon/javascript-sdk-core@4.0.0
|
|
17
|
+
|
|
18
|
+
## 2.5.2 (2024-02-07)
|
|
19
|
+
|
|
20
|
+
### Bug fixes
|
|
21
|
+
|
|
22
|
+
- Tracking wasn't sent if consent is required
|
|
23
|
+
|
|
24
|
+
## 2.5.1 (2024-01-29)
|
|
25
|
+
|
|
26
|
+
### Bug fixes
|
|
27
|
+
|
|
28
|
+
- Context binding in [setLegalConsent](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#setlegalconsent) method
|
|
29
|
+
|
|
30
|
+
## 2.5.0 (2024-01-18)
|
|
31
|
+
|
|
32
|
+
### Bug fixes
|
|
33
|
+
|
|
34
|
+
- SDK threw an error reading storage when migrating from older SDK versions
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
- 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
|
|
39
|
+
|
|
40
|
+
## 2.4.1 (2023-12-15)
|
|
41
|
+
|
|
42
|
+
### Bug fixes
|
|
43
|
+
|
|
44
|
+
- Fix nonce for `Conversion` data
|
|
45
|
+
|
|
46
|
+
## 2.4.0 (2023-12-12)
|
|
47
|
+
|
|
48
|
+
### Features
|
|
49
|
+
|
|
50
|
+
- Updated the [getFeatureFlagVariable](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getfeatureflagvariable) method to return an object of type `FeatureFlagVariableType`
|
|
51
|
+
- 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.
|
|
52
|
+
|
|
53
|
+
### Bug fixes
|
|
54
|
+
|
|
55
|
+
- Custom Data mapping identifier wasn't tracked correctly
|
|
56
|
+
|
|
57
|
+
## 2.3.0 (2023-12-11)
|
|
58
|
+
|
|
59
|
+
### Features
|
|
60
|
+
|
|
61
|
+
- [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
|
|
62
|
+
- [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 `{}`)
|
|
63
|
+
|
|
64
|
+
### Bug fixes
|
|
65
|
+
|
|
66
|
+
- Targeting data cleanup caused `TypeError`
|
|
67
|
+
|
|
68
|
+
## 2.2.1 (2023-12-04)
|
|
69
|
+
|
|
70
|
+
### Bug fixes
|
|
71
|
+
|
|
72
|
+
- Client cookie is now set properly
|
|
73
|
+
|
|
74
|
+
## 2.2.0 (2023-11-30)
|
|
75
|
+
|
|
76
|
+
### Features
|
|
77
|
+
|
|
78
|
+
- [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)
|
|
79
|
+
|
|
80
|
+
## 2.1.0 (2023-11-24)
|
|
81
|
+
|
|
82
|
+
### Features
|
|
83
|
+
|
|
84
|
+
- 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).
|
|
85
|
+
|
|
86
|
+
## 2.0.0 (2023-11-16)
|
|
87
|
+
|
|
88
|
+
### Breaking change
|
|
89
|
+
|
|
90
|
+
- SDK stopped the support of the following methods were:
|
|
91
|
+
- `getExperiments`
|
|
92
|
+
- `getVisitorExperiments`
|
|
93
|
+
- `triggerExperiment`
|
|
94
|
+
- Previously deprecated `flushData` method was removed
|
|
95
|
+
- [`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)
|
|
96
|
+
- [`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
|
|
97
|
+
|
|
98
|
+
### Features
|
|
99
|
+
|
|
100
|
+
- New method for retrieving multiple feature flag variables - [`getFeatureFlagVariables`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getfeatureflagvariables)
|
|
101
|
+
- [`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
|
|
102
|
+
- [`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
|
|
103
|
+
- [`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
|
|
104
|
+
- [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)
|
|
105
|
+
- [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)
|
|
106
|
+
- `Browser Cookie`
|
|
107
|
+
- `Application Version`
|
|
108
|
+
- `Operating System`
|
|
109
|
+
- `IP Geolocation`
|
|
110
|
+
- `Segment`
|
|
111
|
+
- `Target Feature Flag`
|
|
112
|
+
- `Previous Page`
|
|
113
|
+
- `Number of Page Views`
|
|
114
|
+
- `Time since First Visit`
|
|
115
|
+
- `Time since Last Visit`
|
|
116
|
+
- `Number of Visits Today`
|
|
117
|
+
- `Total Number of Visits`
|
|
118
|
+
- `New or Returning Visitor`
|
|
119
|
+
- New Kameleoon Data types were introduced:
|
|
120
|
+
- [`ApplicationVersion`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#applicationversion)
|
|
121
|
+
- [`Cookie`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#cookie)
|
|
122
|
+
- [`OperatingSystem`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#operatingsystem)
|
|
123
|
+
- [`GeolocationData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#geolocationdata)
|
|
124
|
+
|
|
125
|
+
### Bug fixes
|
|
126
|
+
|
|
127
|
+
- `SDKParameters` type is now correctly exported from SDK
|
|
128
|
+
- 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
|
|
129
|
+
- [`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)
|
|
130
|
+
|
|
131
|
+
## 1.8.1 (2023-10-20)
|
|
132
|
+
|
|
133
|
+
### Bug fixes
|
|
134
|
+
|
|
135
|
+
- Fix previous version deploy issue
|
|
136
|
+
|
|
137
|
+
## 1.8.0 (2023-10-20)
|
|
138
|
+
|
|
139
|
+
### Features
|
|
140
|
+
|
|
141
|
+
- Added new method [`getVisitorWarehouseAudience`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#getvisitorwarehouseaudience)
|
|
142
|
+
|
|
143
|
+
## 1.7.4 (2023-10-11)
|
|
144
|
+
|
|
145
|
+
### Bug fixes
|
|
146
|
+
|
|
147
|
+
- Storage data parse overhead optimization
|
|
148
|
+
|
|
149
|
+
## 1.7.3 (2023-09-05)
|
|
150
|
+
|
|
151
|
+
### Bug fixes
|
|
152
|
+
|
|
153
|
+
- `UserAgent` was not exported from SDK
|
|
154
|
+
|
|
155
|
+
## 1.7.2 (2023-08-31)
|
|
156
|
+
|
|
157
|
+
### Bug fixes
|
|
158
|
+
|
|
159
|
+
- `Custom Data Condition` now handles index `0` properly
|
|
160
|
+
|
|
161
|
+
## 1.7.1 (2023-08-25)
|
|
162
|
+
|
|
163
|
+
### Bug fixes
|
|
164
|
+
|
|
165
|
+
- Multiple `Real Time Update` connections are no longer created
|
|
166
|
+
- `Custom Data Condition` now handles all exceptions properly
|
|
167
|
+
|
|
168
|
+
## 1.7.0 (2023-08-11)
|
|
169
|
+
|
|
170
|
+
### Bug fixes
|
|
171
|
+
|
|
172
|
+
- Empty Custom Data is now sending activity tracking event
|
|
173
|
+
|
|
174
|
+
### Features
|
|
175
|
+
|
|
176
|
+
- Added [Cross Device Custom Data Synchronization](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#cross-device-custom-data-synchronization) capabilities
|
|
177
|
+
|
|
178
|
+
## 1.6.1 (2023-07-26)
|
|
179
|
+
|
|
180
|
+
### Bug fixes
|
|
181
|
+
|
|
182
|
+
- [`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.
|
|
183
|
+
- Timestamps for offline requests are set correctly.
|
|
184
|
+
|
|
185
|
+
## 1.6.0 (2023-07-21)
|
|
186
|
+
|
|
187
|
+
### Features
|
|
188
|
+
|
|
189
|
+
- `flushData` has been deprecated in favor of [`flush`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#flush).
|
|
190
|
+
- [`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.
|
|
191
|
+
|
|
192
|
+
## 1.5.2 (2023-07-17)
|
|
193
|
+
|
|
194
|
+
### Bug fixes
|
|
195
|
+
|
|
196
|
+
- Typescript `.d.ts` files have proper relative path resolution.
|
|
197
|
+
- Unused tracking parameters are no longer sent.
|
|
198
|
+
- Real-time update events now get the latest configuration.
|
|
199
|
+
|
|
200
|
+
### Features
|
|
201
|
+
|
|
202
|
+
- 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.
|
|
203
|
+
- 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.
|
|
204
|
+
|
|
205
|
+
## 1.5.1 (2023-06-30)
|
|
206
|
+
|
|
207
|
+
### Bug fixes
|
|
208
|
+
|
|
209
|
+
- Tracking data duplications
|
|
210
|
+
|
|
211
|
+
## 1.5.0 (2023-06-28)
|
|
212
|
+
|
|
213
|
+
### Bug fixes
|
|
214
|
+
|
|
215
|
+
- Improve error handling for [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#obtain-custom-data-from-kameleoon-data-api)
|
|
216
|
+
- Visitor code is now validated correctly in every method that uses it.
|
|
217
|
+
- Result bundle is now compatible with systems not using `ESM` and `CommonJS`. It's minimized and uses code splitting for `crypto-js` `sha256` function.
|
|
218
|
+
- Parameter `revenue` for [`Conversion`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#conversion) is now optional.
|
|
219
|
+
- 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`.
|
|
220
|
+
|
|
221
|
+
### Features
|
|
222
|
+
|
|
223
|
+
- 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).
|
|
224
|
+
- [`Browser`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#browser) now has new optional parameter `version`.
|
|
225
|
+
- [`flushData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#flush-tracking-data) `visitorCode` parameter is now optional.
|
|
226
|
+
- Custom data that is marked as `local only` on Kameleoon Platform is now only used for targeting (not flushed with tracking requests).
|
|
227
|
+
- 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)
|
|
228
|
+
|
|
229
|
+
## 1.4.4 (2023-06-01)
|
|
230
|
+
|
|
231
|
+
### Bug fixes
|
|
232
|
+
|
|
233
|
+
- Empty visitor code is no more allowed
|
|
234
|
+
- Incorrect tracking body upon triggering an experiment
|
|
235
|
+
|
|
236
|
+
## 1.4.3 (2023-05-24)
|
|
237
|
+
|
|
238
|
+
### Bug fixes
|
|
239
|
+
|
|
240
|
+
- Fixed issue for sending unique `Nonce` parameter on tracking requests
|
|
241
|
+
|
|
242
|
+
## 1.4.2 (2023-05-21)
|
|
243
|
+
|
|
244
|
+
### Bug fixes
|
|
245
|
+
|
|
246
|
+
- [`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
|
|
247
|
+
|
|
248
|
+
## 1.4.1 (2023-05-20)
|
|
249
|
+
|
|
250
|
+
### Bug fixes
|
|
251
|
+
|
|
252
|
+
- [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#obtain-custom-data-from-kameleoon-data-api) data parse error
|
|
253
|
+
|
|
254
|
+
## 1.4.0 (2023-05-19)
|
|
255
|
+
|
|
256
|
+
### Features
|
|
257
|
+
|
|
258
|
+
- Added method [`getRemoteVisitorData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#obtain-custom-data-from-kameleoon-data-api)
|
|
259
|
+
- Added offline mode for [`initialize`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#initialize-kameleoon-client) method.
|
|
260
|
+
|
|
261
|
+
## 1.3.3 (2023-05-16)
|
|
262
|
+
|
|
263
|
+
### Bug fixes
|
|
264
|
+
|
|
265
|
+
- Initialization throws error
|
|
266
|
+
|
|
267
|
+
## 1.3.2 (2023-04-24)
|
|
268
|
+
|
|
269
|
+
### Bug fixes
|
|
270
|
+
|
|
271
|
+
- Tracking feature flag rule with variation `off` wasn't displayed on result page
|
|
272
|
+
|
|
273
|
+
## 1.3.1 (2023-04-22)
|
|
274
|
+
|
|
275
|
+
### Bug fixes
|
|
276
|
+
|
|
277
|
+
- core dependency fix
|
|
278
|
+
|
|
279
|
+
## 1.3.0 (2023-04-21)
|
|
280
|
+
|
|
281
|
+
### Features
|
|
282
|
+
|
|
283
|
+
- Added method [`getEngineTrackingCode`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#sending-exposure-events-to-external-tools)
|
|
284
|
+
|
|
285
|
+
## 1.2.0 (2023-04-14)
|
|
286
|
+
|
|
287
|
+
### Features
|
|
288
|
+
|
|
289
|
+
- Added method [`getExperimentVariationData`](https://developers.kameleoon.com/feature-management-and-experimentation/web-sdks/js-sdk#get-experiment-variation-data)
|
|
290
|
+
- 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
|
|
291
|
+
- [`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)
|
|
292
|
+
|
|
293
|
+
### Bug fixes
|
|
294
|
+
|
|
295
|
+
- `variationId` is undefined when using feature flag related methods
|
|
296
|
+
|
|
297
|
+
## 1.1.1 (2023-04-05)
|
|
298
|
+
|
|
299
|
+
### Bug fixes
|
|
300
|
+
|
|
301
|
+
- Internal bug fixes
|
|
302
|
+
|
|
303
|
+
## 1.1.0 (2023-03-22)
|
|
304
|
+
|
|
305
|
+
### Features
|
|
306
|
+
|
|
307
|
+
- License changed from `GPL3.0` to `ISC`
|
|
308
|
+
|
|
309
|
+
## 1.0.0 (2023-03-21)
|
|
310
|
+
|
|
311
|
+
### Features
|
|
312
|
+
|
|
313
|
+
- Initial Release
|
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
|
-
- [
|
|
15
|
-
- [
|
|
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
|
-
|
|
35
|
+
## Usage Example
|
|
35
36
|
|
|
36
37
|
```ts
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
##
|
|
52
|
+
## External Dependencies
|
|
45
53
|
|
|
46
|
-
|
|
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
|
-
|
|
50
|
-
|
|
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
|
-
|
|
53
|
-
|
|
112
|
+
const client = new KameleoonClient({
|
|
113
|
+
siteCode: "my_site_code",
|
|
114
|
+
externals: {
|
|
115
|
+
visitorCodeManager: new MyVisitorCodeManager();
|
|
116
|
+
}
|
|
117
|
+
});
|
|
54
118
|
```
|
|
55
119
|
|
|
56
|
-
|
|
120
|
+
### eventSource
|
|
57
121
|
|
|
58
122
|
```ts
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
155
|
+
### storage
|
|
66
156
|
|
|
67
|
-
|
|
157
|
+
```ts
|
|
158
|
+
import { KameleoonClient, IExternalStorage } from '@kameleoon/javascript-sdk';
|
|
68
159
|
|
|
69
|
-
|
|
160
|
+
const storage = new Map();
|
|
70
161
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
//
|
|
76
|
-
|
|
77
|
-
|
|
167
|
+
// - Optionally handle errors
|
|
168
|
+
if (!data) {
|
|
169
|
+
throw new Error("Couldn't read data from myStorage");
|
|
170
|
+
}
|
|
78
171
|
|
|
79
|
-
|
|
172
|
+
return data;
|
|
173
|
+
}
|
|
80
174
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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,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"}
|
package/dist/eventSource.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { IExternalEventSource,
|
|
2
|
-
export declare class
|
|
3
|
-
|
|
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
|
}
|
package/dist/eventSource.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.
|
|
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
|
package/dist/eventSource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventSource.js","names":["
|
|
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
|
|
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","
|
|
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
|
|
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
|
|
9
|
-
|
|
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
|
}
|
package/dist/kameleoonClient.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.KameleoonClient=void 0;var _javascriptSdkCore=require("@kameleoon/javascript-sdk-core"),_requester=require("./requester"),_storage=require("./storage"),_eventSource=require("./eventSource"),_visitorCodeManager=require("./visitorCodeManager");function _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.1"}}}),_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.0"}}}),_defineProperty(this,"domain",void 0),_defineProperty(this,"internalVisitorCodeManager",void 0),_defineProperty(this,"externalVisitorCodeManager",void 0),this.domain=null===c||void 0===c?void 0:c.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","
|
|
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
|
package/dist/requester.js.map
CHANGED
|
@@ -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":"aAAA,IAAAA,kBAAA,CAAAC,OAAA,mCAUwCC,MAAA,CAAAC,cAAA,CAAAC,OAAA,eAAAC,KAAA,MAAAD,OAAA,CAAAE,iBAAA,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,QAAAL,CAAA,CAAAM,CAAA,MAAAC,CAAA,CAAAb,MAAA,CAAAc,IAAA,CAAAR,CAAA,KAAAN,MAAA,CAAAe,qBAAA,MAAAC,CAAA,CAAAhB,MAAA,CAAAe,qBAAA,CAAAT,CAAA,EAAAM,CAAA,GAAAI,CAAA,CAAAA,CAAA,CAAAC,MAAA,UAAAL,CAAA,SAAAZ,MAAA,CAAAkB,wBAAA,CAAAZ,CAAA,CAAAM,CAAA,EAAAO,UAAA,IAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,CAAAG,CAAA,SAAAH,CAAA,UAAAS,cAAAhB,CAAA,UAAAM,CAAA,CAAAC,CAAA,GAAAA,CAAA,CAAAU,SAAA,CAAAC,MAAA,CAAAX,CAAA,GAAAD,CAAA,OAAAW,SAAA,CAAAV,CAAA,KAAAU,SAAA,CAAAV,CAAA,EAAAA,CAAA,GAAAF,OAAA,CAAAX,MAAA,CAAAY,CAAA,MAAAa,OAAA,UAAAZ,CAAA,EAAAa,eAAA,CAAApB,CAAA,CAAAO,CAAA,CAAAD,CAAA,CAAAC,CAAA,KAAAb,MAAA,CAAA2B,yBAAA,CAAA3B,MAAA,CAAA4B,gBAAA,CAAAtB,CAAA,CAAAN,MAAA,CAAA2B,yBAAA,CAAAf,CAAA,GAAAD,OAAA,CAAAX,MAAA,CAAAY,CAAA,GAAAa,OAAA,UAAAZ,CAAA,EAAAb,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAO,CAAA,CAAAb,MAAA,CAAAkB,wBAAA,CAAAN,CAAA,CAAAC,CAAA,YAAAP,CAAA,UAAAuB,oBAAA,wBAAAvB,GAAA,CAAAM,CAAA,CAAAC,CAAA,SAAAb,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAM,CAAA,EAAAT,KAAA,CAAAU,CAAA,CAAAM,UAAA,IAAAW,YAAA,IAAAC,QAAA,MAAAzB,CAAA,CAAAM,CAAA,WAAAA,EAAAN,CAAA,CAAAM,CAAA,CAAAC,CAAA,CAAAmB,CAAA,MAAAC,CAAA,CAAArB,CAAA,EAAAA,CAAA,CAAAF,SAAA,YAAAM,CAAA,CAAAJ,CAAA,CAAAI,CAAA,CAAAkB,CAAA,CAAAlC,MAAA,CAAAmC,MAAA,CAAAF,CAAA,CAAAvB,SAAA,EAAA0B,CAAA,KAAAC,CAAA,CAAAL,CAAA,aAAAM,CAAA,CAAAJ,CAAA,YAAA/B,KAAA,CAAAoC,CAAA,CAAAjC,CAAA,CAAAO,CAAA,CAAAuB,CAAA,IAAAF,CAAA,UAAArB,EAAAP,CAAA,CAAAM,CAAA,CAAAC,CAAA,aAAA2B,IAAA,UAAAC,GAAA,CAAAnC,CAAA,CAAAoC,IAAA,CAAA9B,CAAA,CAAAC,CAAA,SAAAP,CAAA,SAAAkC,IAAA,SAAAC,GAAA,CAAAnC,CAAA,YAAAU,EAAA,YAAAgB,EAAA,YAAAC,EAAA,YAAAC,EAAAtB,CAAA,4BAAAa,OAAA,UAAAZ,CAAA,EAAAP,CAAA,CAAAM,CAAA,CAAAC,CAAA,UAAAP,CAAA,cAAAqC,OAAA,CAAA9B,CAAA,CAAAP,CAAA,eAAA8B,EAAA9B,CAAA,CAAAM,CAAA,WAAAI,EAAAgB,CAAA,CAAAC,CAAA,CAAAC,CAAA,CAAAE,CAAA,MAAAG,CAAA,CAAA1B,CAAA,CAAAP,CAAA,CAAA0B,CAAA,EAAA1B,CAAA,CAAA2B,CAAA,eAAAM,CAAA,CAAAC,IAAA,MAAAI,CAAA,CAAAL,CAAA,CAAAE,GAAA,CAAAI,CAAA,CAAAD,CAAA,CAAAzC,KAAA,QAAA0C,CAAA,YAAAxC,OAAA,CAAAwC,CAAA,GAAAC,CAAA,CAAAJ,IAAA,CAAAG,CAAA,YAAAjC,CAAA,CAAAmC,OAAA,CAAAF,CAAA,CAAAG,OAAA,EAAAC,IAAA,UAAA3C,CAAA,EAAAU,CAAA,QAAAV,CAAA,CAAA4B,CAAA,CAAAE,CAAA,YAAA9B,CAAA,EAAAU,CAAA,SAAAV,CAAA,CAAA4B,CAAA,CAAAE,CAAA,IAAAxB,CAAA,CAAAmC,OAAA,CAAAF,CAAA,EAAAI,IAAA,UAAA3C,CAAA,EAAAsC,CAAA,CAAAzC,KAAA,CAAAG,CAAA,CAAA4B,CAAA,CAAAU,CAAA,YAAAtC,CAAA,SAAAU,CAAA,SAAAV,CAAA,CAAA4B,CAAA,CAAAE,CAAA,IAAAA,CAAA,CAAAG,CAAA,CAAAE,GAAA,MAAAT,CAAA,CAAAM,CAAA,iBAAAnC,KAAA,UAAAA,MAAAG,CAAA,CAAAO,CAAA,WAAAoB,EAAA,aAAArB,CAAA,UAAAA,CAAA,CAAAoB,CAAA,EAAAhB,CAAA,CAAAV,CAAA,CAAAO,CAAA,CAAAD,CAAA,CAAAoB,CAAA,WAAAA,CAAA,CAAAA,CAAA,CAAAA,CAAA,CAAAiB,IAAA,CAAAhB,CAAA,CAAAA,CAAA,EAAAA,CAAA,eAAAM,EAAAjC,CAAA,CAAAM,CAAA,CAAAI,CAAA,MAAAgB,CAAA,kCAAAC,CAAA,CAAAC,CAAA,kBAAAF,CAAA,WAAAkB,KAAA,iDAAAlB,CAAA,eAAAC,CAAA,OAAAC,CAAA,QAAAiB,CAAA,OAAAnC,CAAA,CAAAoC,MAAA,CAAAnB,CAAA,CAAAjB,CAAA,CAAAyB,GAAA,CAAAP,CAAA,QAAAE,CAAA,CAAApB,CAAA,CAAAqC,QAAA,IAAAjB,CAAA,MAAAG,CAAA,CAAAK,CAAA,CAAAR,CAAA,CAAApB,CAAA,KAAAuB,CAAA,KAAAA,CAAA,GAAAe,CAAA,iBAAAf,CAAA,cAAAvB,CAAA,CAAAoC,MAAA,CAAApC,CAAA,CAAAuC,IAAA,CAAAvC,CAAA,CAAAwC,KAAA,CAAAxC,CAAA,CAAAyB,GAAA,mBAAAzB,CAAA,CAAAoC,MAAA,uBAAApB,CAAA,OAAAA,CAAA,aAAAhB,CAAA,CAAAyB,GAAA,CAAAzB,CAAA,CAAAyC,iBAAA,CAAAzC,CAAA,CAAAyB,GAAA,iBAAAzB,CAAA,CAAAoC,MAAA,EAAApC,CAAA,CAAA0C,MAAA,UAAA1C,CAAA,CAAAyB,GAAA,EAAAT,CAAA,iBAAAa,CAAA,CAAAhC,CAAA,CAAAP,CAAA,CAAAM,CAAA,CAAAI,CAAA,gBAAA6B,CAAA,CAAAL,IAAA,KAAAR,CAAA,CAAAhB,CAAA,CAAA2C,IAAA,8BAAAd,CAAA,CAAAJ,GAAA,GAAAa,CAAA,iBAAAnD,KAAA,CAAA0C,CAAA,CAAAJ,GAAA,CAAAkB,IAAA,CAAA3C,CAAA,CAAA2C,IAAA,YAAAd,CAAA,CAAAL,IAAA,GAAAR,CAAA,aAAAhB,CAAA,CAAAoC,MAAA,SAAApC,CAAA,CAAAyB,GAAA,CAAAI,CAAA,CAAAJ,GAAA,aAAAG,EAAAtC,CAAA,CAAAM,CAAA,MAAAI,CAAA,CAAAJ,CAAA,CAAAwC,MAAA,CAAApB,CAAA,CAAA1B,CAAA,CAAAE,QAAA,CAAAQ,CAAA,cAAAgB,CAAA,QAAApB,CAAA,CAAAyC,QAAA,gBAAArC,CAAA,EAAAV,CAAA,CAAAE,QAAA,CAAAoD,MAAA,GAAAhD,CAAA,CAAAwC,MAAA,UAAAxC,CAAA,CAAA6B,GAAA,QAAAG,CAAA,CAAAtC,CAAA,CAAAM,CAAA,YAAAA,CAAA,CAAAwC,MAAA,cAAApC,CAAA,GAAAJ,CAAA,CAAAwC,MAAA,SAAAxC,CAAA,CAAA6B,GAAA,KAAAoB,SAAA,qCAAA7C,CAAA,cAAAsC,CAAA,KAAArB,CAAA,CAAApB,CAAA,CAAAmB,CAAA,CAAA1B,CAAA,CAAAE,QAAA,CAAAI,CAAA,CAAA6B,GAAA,eAAAR,CAAA,CAAAO,IAAA,QAAA5B,CAAA,CAAAwC,MAAA,SAAAxC,CAAA,CAAA6B,GAAA,CAAAR,CAAA,CAAAQ,GAAA,CAAA7B,CAAA,CAAAyC,QAAA,MAAAC,CAAA,KAAApB,CAAA,CAAAD,CAAA,CAAAQ,GAAA,QAAAP,CAAA,CAAAA,CAAA,CAAAyB,IAAA,EAAA/C,CAAA,CAAAN,CAAA,CAAAwD,UAAA,EAAA5B,CAAA,CAAA/B,KAAA,CAAAS,CAAA,CAAAmD,IAAA,CAAAzD,CAAA,CAAA0D,OAAA,YAAApD,CAAA,CAAAwC,MAAA,GAAAxC,CAAA,CAAAwC,MAAA,QAAAxC,CAAA,CAAA6B,GAAA,SAAA7B,CAAA,CAAAyC,QAAA,MAAAC,CAAA,EAAApB,CAAA,EAAAtB,CAAA,CAAAwC,MAAA,SAAAxC,CAAA,CAAA6B,GAAA,KAAAoB,SAAA,qCAAAjD,CAAA,CAAAyC,QAAA,MAAAC,CAAA,WAAAT,EAAAvC,CAAA,MAAAM,CAAA,EAAAqD,MAAA,CAAA3D,CAAA,UAAAA,CAAA,GAAAM,CAAA,CAAAsD,QAAA,CAAA5D,CAAA,UAAAA,CAAA,GAAAM,CAAA,CAAAuD,UAAA,CAAA7D,CAAA,IAAAM,CAAA,CAAAwD,QAAA,CAAA9D,CAAA,UAAA+D,UAAA,CAAAjD,IAAA,CAAAR,CAAA,WAAA0D,EAAAhE,CAAA,MAAAM,CAAA,CAAAN,CAAA,CAAAiE,UAAA,KAAA3D,CAAA,CAAA4B,IAAA,iBAAA5B,CAAA,CAAA6B,GAAA,CAAAnC,CAAA,CAAAiE,UAAA,CAAA3D,CAAA,UAAAyB,EAAA/B,CAAA,OAAA+D,UAAA,GAAAJ,MAAA,UAAA3D,CAAA,CAAAmB,OAAA,CAAAoB,CAAA,YAAA2B,KAAA,cAAAC,EAAAnE,CAAA,KAAAA,CAAA,MAAAM,CAAA,CAAAN,CAAA,CAAAoE,CAAA,KAAA9D,CAAA,QAAAA,CAAA,CAAA8B,IAAA,CAAApC,CAAA,wBAAAA,CAAA,CAAAyD,IAAA,QAAAzD,CAAA,KAAAqE,KAAA,CAAArE,CAAA,CAAAkB,MAAA,OAAAX,CAAA,IAAAG,CAAA,UAAAJ,EAAA,SAAAC,CAAA,CAAAP,CAAA,CAAAkB,MAAA,KAAAsB,CAAA,CAAAJ,IAAA,CAAApC,CAAA,CAAAO,CAAA,SAAAD,CAAA,CAAAT,KAAA,CAAAG,CAAA,CAAAO,CAAA,EAAAD,CAAA,CAAA+C,IAAA,IAAA/C,CAAA,QAAAA,CAAA,CAAAT,KAAA,QAAAS,CAAA,CAAA+C,IAAA,IAAA/C,CAAA,SAAAI,CAAA,CAAA+C,IAAA,CAAA/C,CAAA,SAAA+C,IAAA,CAAAZ,CAAA,WAAAA,EAAA,SAAAhD,KAAA,QAAAwD,IAAA,KAAA9B,mBAAA,SAAAA,CAAA,SAAA+C,CAAA,MAAAA,CAAA,IAAAC,CAAA,CAAA7E,MAAA,CAAAU,SAAA,CAAAoC,CAAA,CAAA+B,CAAA,CAAAC,cAAA,CAAAxC,CAAA,CAAAtC,MAAA,CAAAC,cAAA,WAAAK,CAAA,CAAAM,CAAA,CAAAC,CAAA,EAAAP,CAAA,CAAAM,CAAA,EAAAC,CAAA,CAAAV,KAAA,EAAA4E,CAAA,oBAAAxE,MAAA,CAAAA,MAAA,IAAAmE,CAAA,CAAAK,CAAA,CAAAvE,QAAA,eAAAwE,CAAA,CAAAD,CAAA,CAAAE,aAAA,oBAAAC,CAAA,CAAAH,CAAA,CAAAI,WAAA,sBAAA7E,CAAA,cAAAM,CAAA,EAAAN,CAAA,SAAAA,EAAA,CAAAM,CAAA,CAAAC,CAAA,SAAAP,CAAA,CAAAM,CAAA,EAAAC,CAAA,EAAA+D,CAAA,CAAAQ,IAAA,CAAAxE,CAAA,KAAA0C,CAAA,IAAA+B,CAAA,IAAA/E,CAAA,CAAA+E,CAAA,CAAAX,CAAA,8BAAAY,CAAA,CAAAtF,MAAA,CAAAuF,cAAA,CAAAC,CAAA,CAAAF,CAAA,EAAAA,CAAA,CAAAA,CAAA,CAAAb,CAAA,OAAAe,CAAA,EAAAA,CAAA,GAAAX,CAAA,EAAA/B,CAAA,CAAAJ,IAAA,CAAA8C,CAAA,CAAAd,CAAA,IAAAW,CAAA,CAAAG,CAAA,MAAAC,CAAA,CAAAxD,CAAA,CAAAvB,SAAA,CAAAM,CAAA,CAAAN,SAAA,CAAAV,MAAA,CAAAmC,MAAA,CAAAkD,CAAA,SAAArD,CAAA,CAAAtB,SAAA,CAAAuB,CAAA,CAAAK,CAAA,CAAAmD,CAAA,gBAAAtF,KAAA,CAAA8B,CAAA,CAAAH,YAAA,MAAAQ,CAAA,CAAAL,CAAA,gBAAA9B,KAAA,CAAA6B,CAAA,CAAAF,YAAA,MAAAE,CAAA,CAAA0D,WAAA,CAAApF,CAAA,CAAA2B,CAAA,CAAAiD,CAAA,sBAAAN,CAAA,CAAAe,mBAAA,UAAArF,CAAA,MAAAM,CAAA,oBAAAN,CAAA,EAAAA,CAAA,CAAAG,WAAA,SAAAG,CAAA,GAAAA,CAAA,GAAAoB,CAAA,yBAAApB,CAAA,CAAA8E,WAAA,EAAA9E,CAAA,CAAAgF,IAAA,IAAAhB,CAAA,CAAAiB,IAAA,UAAAjF,CAAA,SAAAZ,MAAA,CAAA8F,cAAA,CAAA9F,MAAA,CAAA8F,cAAA,CAAAlF,CAAA,CAAAqB,CAAA,GAAArB,CAAA,CAAAmF,SAAA,CAAA9D,CAAA,CAAA3B,CAAA,CAAAM,CAAA,CAAAsE,CAAA,uBAAAtE,CAAA,CAAAF,SAAA,CAAAV,MAAA,CAAAmC,MAAA,CAAAsD,CAAA,EAAA7E,CAAA,EAAAgE,CAAA,CAAAoB,KAAA,UAAA1F,CAAA,SAAA0C,OAAA,CAAA1C,CAAA,GAAA4B,CAAA,CAAAE,CAAA,CAAA1B,SAAA,EAAAJ,CAAA,CAAA8B,CAAA,CAAA1B,SAAA,CAAAsE,CAAA,0BAAAJ,CAAA,CAAAqB,aAAA,CAAA7D,CAAA,CAAAwC,CAAA,CAAAsB,KAAA,UAAA5F,CAAA,CAAAO,CAAA,CAAAG,CAAA,CAAAgB,CAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAA,CAAA,CAAAkE,OAAA,MAAAjE,CAAA,KAAAE,CAAA,CAAAxB,CAAA,CAAAN,CAAA,CAAAO,CAAA,CAAAG,CAAA,CAAAgB,CAAA,EAAAC,CAAA,SAAA2C,CAAA,CAAAe,mBAAA,CAAA9E,CAAA,EAAAqB,CAAA,CAAAA,CAAA,CAAA6B,IAAA,GAAAd,IAAA,UAAA3C,CAAA,SAAAA,CAAA,CAAAqD,IAAA,CAAArD,CAAA,CAAAH,KAAA,CAAA+B,CAAA,CAAA6B,IAAA,MAAA7B,CAAA,CAAAuD,CAAA,EAAAnF,CAAA,CAAAmF,CAAA,CAAAP,CAAA,cAAA5E,CAAA,CAAAmF,CAAA,CAAAf,CAAA,0BAAApE,CAAA,CAAAmF,CAAA,oDAAAb,CAAA,CAAA9D,IAAA,UAAAR,CAAA,MAAAM,CAAA,CAAAZ,MAAA,CAAAM,CAAA,EAAAO,CAAA,YAAAG,CAAA,IAAAJ,CAAA,CAAAC,CAAA,CAAAO,IAAA,CAAAJ,CAAA,SAAAH,CAAA,CAAAuF,OAAA,YAAA9F,EAAA,OAAAO,CAAA,CAAAW,MAAA,OAAAR,CAAA,CAAAH,CAAA,CAAAwF,GAAA,MAAArF,CAAA,IAAAJ,CAAA,QAAAN,CAAA,CAAAH,KAAA,CAAAa,CAAA,CAAAV,CAAA,CAAAqD,IAAA,IAAArD,CAAA,QAAAA,CAAA,CAAAqD,IAAA,IAAArD,CAAA,GAAAsE,CAAA,CAAA0B,MAAA,CAAA7B,CAAA,CAAApC,CAAA,CAAA3B,SAAA,EAAAD,WAAA,CAAA4B,CAAA,CAAAmC,KAAA,UAAAA,MAAAlE,CAAA,UAAAiG,IAAA,QAAAxC,IAAA,QAAAR,IAAA,MAAAC,KAAA,aAAAG,IAAA,SAAAN,QAAA,WAAAD,MAAA,aAAAX,GAAA,aAAA4B,UAAA,CAAA5C,OAAA,CAAA6C,CAAA,GAAAhE,CAAA,SAAAM,CAAA,eAAAA,CAAA,CAAA4F,MAAA,KAAA1D,CAAA,CAAAJ,IAAA,MAAA9B,CAAA,IAAA+D,KAAA,EAAA/D,CAAA,CAAA6F,KAAA,YAAA7F,CAAA,WAAA8F,IAAA,UAAAA,KAAA,OAAA/C,IAAA,QAAArD,CAAA,MAAA+D,UAAA,IAAAE,UAAA,cAAAjE,CAAA,CAAAkC,IAAA,OAAAlC,CAAA,CAAAmC,GAAA,aAAAkE,IAAA,EAAAlD,iBAAA,UAAAA,kBAAAnD,CAAA,WAAAM,GAAA,CAAAI,CAAA,SAAAiB,CAAA,CAAAO,IAAA,SAAAP,CAAA,CAAAQ,GAAA,CAAAnC,CAAA,CAAAO,CAAA,CAAAkD,IAAA,CAAAnD,CAAA,CAAAI,CAAA,GAAAH,CAAA,CAAAuC,MAAA,QAAAvC,CAAA,CAAA4B,GAAA,WAAAzB,CAAA,SAAA2C,IAAA,OAAArD,CAAA,SAAAO,CAAA,MAAAG,CAAA,MAAAqD,UAAA,CAAA7C,MAAA,MAAAR,CAAA,GAAAA,CAAA,MAAAgB,CAAA,MAAAqC,UAAA,CAAArD,CAAA,EAAAiB,CAAA,CAAAD,CAAA,CAAAuC,UAAA,aAAAvC,CAAA,CAAAiC,MAAA,QAAArD,CAAA,WAAAoB,CAAA,CAAAiC,MAAA,OAAAsC,IAAA,MAAArE,CAAA,CAAAY,CAAA,CAAAJ,IAAA,CAAAV,CAAA,aAAAI,CAAA,CAAAU,CAAA,CAAAJ,IAAA,CAAAV,CAAA,kBAAAE,CAAA,EAAAE,CAAA,UAAAmE,IAAA,CAAAvE,CAAA,CAAAkC,QAAA,QAAAtD,CAAA,CAAAoB,CAAA,CAAAkC,QAAA,aAAAqC,IAAA,CAAAvE,CAAA,CAAAmC,UAAA,QAAAvD,CAAA,CAAAoB,CAAA,CAAAmC,UAAA,WAAAjC,CAAA,MAAAE,CAAA,WAAAc,KAAA,mDAAAqD,IAAA,CAAAvE,CAAA,CAAAmC,UAAA,QAAAvD,CAAA,CAAAoB,CAAA,CAAAmC,UAAA,eAAAoC,IAAA,CAAAvE,CAAA,CAAAkC,QAAA,QAAAtD,CAAA,CAAAoB,CAAA,CAAAkC,QAAA,QAAAR,MAAA,UAAAA,OAAApD,CAAA,CAAAM,CAAA,UAAAC,CAAA,CAAAG,CAAA,MAAAqD,UAAA,CAAA7C,MAAA,MAAAR,CAAA,GAAAA,CAAA,IAAAH,CAAA,MAAAwD,UAAA,CAAArD,CAAA,EAAAH,CAAA,CAAAoD,MAAA,OAAAsC,IAAA,EAAAzD,CAAA,CAAAJ,IAAA,CAAA7B,CAAA,qBAAA0F,IAAA,CAAA1F,CAAA,CAAAsD,UAAA,MAAAnC,CAAA,CAAAnB,CAAA,OAAAmB,CAAA,aAAA1B,CAAA,eAAAA,CAAA,GAAA0B,CAAA,CAAAiC,MAAA,EAAArD,CAAA,EAAAA,CAAA,EAAAoB,CAAA,CAAAmC,UAAA,GAAAnC,CAAA,WAAAC,CAAA,CAAAD,CAAA,CAAAA,CAAA,CAAAuC,UAAA,WAAAtC,CAAA,CAAAO,IAAA,CAAAlC,CAAA,CAAA2B,CAAA,CAAAQ,GAAA,CAAA7B,CAAA,CAAAoB,CAAA,OAAAoB,MAAA,aAAAW,IAAA,CAAA/B,CAAA,CAAAmC,UAAA,CAAAb,CAAA,OAAAsD,QAAA,CAAA3E,CAAA,GAAA2E,QAAA,UAAAA,SAAAtG,CAAA,CAAAM,CAAA,eAAAN,CAAA,CAAAkC,IAAA,OAAAlC,CAAA,CAAAmC,GAAA,iBAAAnC,CAAA,CAAAkC,IAAA,eAAAlC,CAAA,CAAAkC,IAAA,MAAAuB,IAAA,CAAAzD,CAAA,CAAAmC,GAAA,YAAAnC,CAAA,CAAAkC,IAAA,OAAAmE,IAAA,MAAAlE,GAAA,CAAAnC,CAAA,CAAAmC,GAAA,MAAAW,MAAA,eAAAW,IAAA,mBAAAzD,CAAA,CAAAkC,IAAA,EAAA5B,CAAA,QAAAmD,IAAA,CAAAnD,CAAA,EAAA0C,CAAA,EAAAuD,MAAA,UAAAA,OAAAvG,CAAA,UAAAM,CAAA,CAAAC,CAAA,MAAAwD,UAAA,CAAA7C,MAAA,MAAAX,CAAA,GAAAA,CAAA,IAAAD,CAAA,MAAAyD,UAAA,CAAAxD,CAAA,EAAAD,CAAA,CAAAuD,UAAA,GAAA7D,CAAA,aAAAsG,QAAA,CAAAhG,CAAA,CAAA2D,UAAA,CAAA3D,CAAA,CAAAwD,QAAA,EAAAE,CAAA,CAAA1D,CAAA,EAAA0C,CAAA,EAAAwD,KAAA,UAAAC,OAAAzG,CAAA,UAAAM,CAAA,CAAAC,CAAA,MAAAwD,UAAA,CAAA7C,MAAA,MAAAX,CAAA,GAAAA,CAAA,IAAAD,CAAA,MAAAyD,UAAA,CAAAxD,CAAA,EAAAD,CAAA,CAAAqD,MAAA,GAAA3D,CAAA,MAAAU,CAAA,CAAAJ,CAAA,CAAA2D,UAAA,cAAAvD,CAAA,CAAAwB,IAAA,MAAAR,CAAA,CAAAhB,CAAA,CAAAyB,GAAA,CAAA6B,CAAA,CAAA1D,CAAA,SAAAoB,CAAA,WAAAkB,KAAA,2BAAA8D,aAAA,UAAAA,cAAA1G,CAAA,CAAAM,CAAA,CAAAC,CAAA,cAAAwC,QAAA,EAAA7C,QAAA,CAAAiE,CAAA,CAAAnE,CAAA,EAAAwD,UAAA,CAAAlD,CAAA,CAAAoD,OAAA,CAAAnD,CAAA,gBAAAuC,MAAA,QAAAX,GAAA,SAAAa,CAAA,GAAAsB,CAAA,UAAAqC,mBAAA3G,CAAA,CAAAM,CAAA,CAAAC,CAAA,CAAAG,CAAA,CAAAgB,CAAA,CAAAC,CAAA,CAAAC,CAAA,UAAAE,CAAA,CAAA9B,CAAA,CAAA2B,CAAA,EAAAC,CAAA,EAAAK,CAAA,CAAAH,CAAA,CAAAjC,KAAA,OAAAG,CAAA,cAAAO,CAAA,CAAAP,CAAA,EAAA8B,CAAA,CAAAuB,IAAA,CAAA/C,CAAA,CAAA2B,CAAA,EAAA4D,OAAA,CAAApD,OAAA,CAAAR,CAAA,EAAAU,IAAA,CAAAjC,CAAA,CAAAgB,CAAA,WAAAkF,kBAAA5G,CAAA,wBAAAM,CAAA,MAAAC,CAAA,CAAAU,SAAA,YAAA4E,OAAA,UAAAnF,CAAA,CAAAgB,CAAA,WAAAC,EAAA3B,CAAA,EAAA2G,kBAAA,CAAA7E,CAAA,CAAApB,CAAA,CAAAgB,CAAA,CAAAC,CAAA,CAAAC,CAAA,QAAA5B,CAAA,WAAA4B,EAAA5B,CAAA,EAAA2G,kBAAA,CAAA7E,CAAA,CAAApB,CAAA,CAAAgB,CAAA,CAAAC,CAAA,CAAAC,CAAA,SAAA5B,CAAA,MAAA8B,CAAA,CAAA9B,CAAA,CAAAe,KAAA,CAAAT,CAAA,CAAAC,CAAA,EAAAoB,CAAA,qBAAAkF,gBAAA7G,CAAA,CAAAM,CAAA,OAAAN,CAAA,YAAAM,CAAA,YAAAiD,SAAA,+CAAAuD,kBAAA9G,CAAA,CAAAM,CAAA,UAAAC,CAAA,CAAAG,CAAA,GAAAA,CAAA,CAAAJ,CAAA,CAAAY,MAAA,CAAAR,CAAA,GAAAH,CAAA,CAAAD,CAAA,CAAAI,CAAA,EAAAH,CAAA,CAAAM,UAAA,CAAAN,CAAA,CAAAM,UAAA,KAAAN,CAAA,CAAAiB,YAAA,cAAAjB,CAAA,GAAAA,CAAA,CAAAkB,QAAA,KAAA/B,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAA+G,cAAA,CAAAxG,CAAA,CAAAyG,GAAA,EAAAzG,CAAA,WAAA0G,aAAAjH,CAAA,CAAAM,CAAA,CAAAC,CAAA,SAAAD,CAAA,EAAAwG,iBAAA,CAAA9G,CAAA,CAAAI,SAAA,CAAAE,CAAA,EAAAC,CAAA,EAAAuG,iBAAA,CAAA9G,CAAA,CAAAO,CAAA,EAAAb,MAAA,CAAAC,cAAA,CAAAK,CAAA,cAAAyB,QAAA,MAAAzB,CAAA,UAAAoB,gBAAApB,CAAA,CAAAM,CAAA,CAAAC,CAAA,SAAAD,CAAA,CAAAyG,cAAA,CAAAzG,CAAA,EAAAA,CAAA,IAAAN,CAAA,CAAAN,MAAA,CAAAC,cAAA,CAAAK,CAAA,CAAAM,CAAA,EAAAT,KAAA,CAAAU,CAAA,CAAAM,UAAA,IAAAW,YAAA,IAAAC,QAAA,MAAAzB,CAAA,CAAAM,CAAA,EAAAC,CAAA,CAAAP,CAAA,UAAA+G,eAAA/G,CAAA,MAAAM,CAAA,CAAA4G,YAAA,CAAAlH,CAAA,4BAAAD,OAAA,CAAAO,CAAA,EAAAA,CAAA,CAAAA,CAAA,aAAA4G,aAAAlH,CAAA,CAAAM,CAAA,gBAAAP,OAAA,CAAAC,CAAA,UAAAA,CAAA,QAAAA,CAAA,KAAAO,CAAA,CAAAP,CAAA,CAAAC,MAAA,CAAAkH,WAAA,KAAA5G,CAAA,eAAAG,CAAA,CAAAH,CAAA,CAAA6B,IAAA,CAAApC,CAAA,CAAAM,CAAA,2BAAAP,OAAA,CAAAW,CAAA,SAAAA,CAAA,WAAA6C,SAAA,mEAAAjD,CAAA,CAAA8G,MAAA,CAAAC,MAAA,EAAArH,CAAA,KAE3B,CAAAF,iBAAiB,YAG5B,SAAAE,EAAYsH,CAAe,CAAE,CAAAT,eAAA,MAAA7G,CAAA,EAAAoB,eAAA,wBAC3B,IAAI,CAACkG,OAAO,CAAGA,CACjB,CAAC,OAAAL,YAAA,CAAAjH,CAAA,GAAAgH,GAAA,SAAAnH,KAAA,qBAAAG,EAAA,SAAAM,CAAA,CAAAS,KAAA,MAAAE,SAAA,MAAAX,CAAA,CAAAsG,iBAAA,CAAArF,mBAAA,GAAAgE,IAAA,CAED,SAAAjF,EAAAN,CAAA,MAAAO,CAAA,CAAAG,CAAA,CAAAgB,CAAA,CAAAC,CAAA,CAAAC,CAAA,CAAAE,CAAA,QAAAP,mBAAA,GAAAuD,IAAA,UAAA7C,EAAA3B,CAAA,iBAAAA,CAAA,CAAA2F,IAAA,CAAA3F,CAAA,CAAAmD,IAAA,eACE,CAAA8D,CAAG,CAAAvH,CAAA,CAAHuH,GAAG,CACHC,CAAO,CAAAxH,CAAA,CAAPwH,OAAO,CACPC,CAAI,CAAAzH,CAAA,CAAJyH,IAAI,CAAAnH,CAAA,CAAAmD,IAAA,GAEmBiE,KAAK,CAACH,CAAG,CAAE,CAChCzE,MAAM,CAAE6E,6BAAU,CAACC,IAAI,CACvBJ,OAAO,CAAPA,CAAO,CACPC,IAAI,CAAJA,CACF,CAAC,CAAC,WAJII,CAAQ,CAAAvH,CAAA,CAAA2C,IAAA,EAMV4E,CAAQ,CAACC,EAAE,EAAAxH,CAAA,CAAAmD,IAAA,gBAAAnD,CAAA,CAAA8C,MAAA,qBAINnB,CAAC,CAAG,CAAC,aAAEA,CAAC,CAAG8F,oCAAiB,GAAAzH,CAAA,CAAAmD,IAAA,iBAAAnD,CAAA,CAAAmD,IAAA,IAC7B,GAAI,CAAAoC,OAAO,CAAC,SAACpD,CAAO,QAAK,CAAAuF,UAAU,CAACvF,CAAO,CAAEwF,gCAAa,CAAC,EAAC,gBAAA3H,CAAA,CAAAmD,IAAA,IAEtC,IAAI,CAACyE,WAAW,CAACX,CAAG,CAAE,CAChDzE,MAAM,CAAE6E,6BAAU,CAACC,IAAI,CACvBJ,OAAO,CAAPA,CAAO,CACPC,IAAI,CAAJA,CACF,CAAC,CAAC,YAJIU,CAAa,CAAA7H,CAAA,CAAA2C,IAAA,EAMfkF,CAAa,CAACL,EAAE,EAAAxH,CAAA,CAAAmD,IAAA,iBAAAnD,CAAA,CAAA8C,MAAA,sBATiBnB,CAAC,EAAE,CAAA3B,CAAA,CAAAmD,IAAA,wBAAAnD,CAAA,CAAA8C,MAAA,uCAAA9C,CAAA,CAAA8F,IAAA,MAAA9F,CAAA,OAe3C,UAAAN,CAAA,MAAAgH,GAAA,0BAAAnH,KAAA,qBAAAG,GAAA,CAAAO,CAAA,SAAAD,CAAA,CAAAS,KAAA,MAAAE,SAAA,MAAAX,CAAA,CAAAsG,iBAAA,CAAArF,mBAAA,GAAAgE,IAAA,CAED,SAAAhF,EACEgH,CAAW,CAGXa,CAAqB,MAAA1H,CAAA,CAAAgB,CAAA,CAAAC,CAAA,QAAAJ,mBAAA,GAAAuD,IAAA,UAAAvE,EAAAD,CAAA,iBAAAA,CAAA,CAAA2F,IAAA,CAAA3F,CAAA,CAAAmD,IAAA,SAIf4E,CAAQ,CAAGN,oCAAiB,CAAG,CAAC,CAE7B9F,CAAC,CAAG,CAAC,aAAEA,CAAC,CAAGoG,CAAQ,GAAA/H,CAAA,CAAAmD,IAAA,iBAAAnD,CAAA,CAAA2F,IAAA,GAAA3F,CAAA,CAAAmD,IAAA,GAED,IAAI,CAACyE,WAAW,CAACX,CAAG,CAAE,CAC3CzE,MAAM,CAAE6E,6BAAU,CAACW,GAErB,CAAC,CAAC,WAHIT,CAAQ,CAAAvH,CAAA,CAAA2C,IAAA,EAKV4E,CAAQ,CAACC,EAAE,EAAAxH,CAAA,CAAAmD,IAAA,gBAAAnD,CAAA,CAAA8C,MAAA,UACNyE,CAAQ,CAACU,IAAI,EAAE,SAAAjI,CAAA,CAAAmD,IAAA,wBAAAnD,CAAA,CAAA2F,IAAA,IAAA3F,CAAA,CAAAkI,EAAA,CAAAlI,CAAA,aAGlB,GAAI,CAAAmI,iCAAc,CAACC,qCAAkB,CAACC,mBAAmB,CAAC,SAXtC1G,CAAC,EAAE,CAAA3B,CAAA,CAAAmD,IAAA,wBAAAnD,CAAA,CAAA8C,MAAA,UAe1B,IAAI,2BAAA9C,CAAA,CAAA8F,IAAA,MAAA7F,CAAA,gBACZ,UAAAP,CAAA,MAAAgH,GAAA,iBAAAnH,KAAA,qBAAAG,GAAA,SAAAM,CAAA,CAAAS,KAAA,MAAAE,SAAA,MAAAX,CAAA,CAAAsG,iBAAA,CAAArF,mBAAA,GAAAgE,IAAA,CAED,SAAAjF,EAA2BiH,CAAW,MAAAhH,CAAA,QAAAgB,mBAAA,GAAAuD,IAAA,UAAApE,EAAAJ,CAAA,iBAAAA,CAAA,CAAA2F,IAAA,CAAA3F,CAAA,CAAAmD,IAAA,gBAAAnD,CAAA,CAAAmD,IAAA,GACbiE,KAAK,CAACH,CAAG,CAAE,CAChCzE,MAAM,CAAE6E,6BAAU,CAACW,GACrB,CAAC,CAAC,WAFIT,CAAQ,CAAAvH,CAAA,CAAA2C,IAAA,EAIV4E,CAAQ,CAACC,EAAE,EAAAxH,CAAA,CAAAmD,IAAA,gBAAAnD,CAAA,CAAA8C,MAAA,UACNyE,CAAQ,CAACU,IAAI,EAAE,cAGlB,IAAI,CAAAE,iCAAc,CAACC,qCAAkB,CAACE,UAAU,CAAC,yBAAAtI,CAAA,CAAA8F,IAAA,MAAA9F,CAAA,EACxD,UAAAN,CAAA,MAAAgH,GAAA,eAAAnH,KAAA,qBAAAG,GAAA,CAAAO,CAAA,SAAAD,CAAA,CAAAS,KAAA,MAAAE,SAAA,MAAAX,CAAA,CAAAsG,iBAAA,CAAArF,mBAAA,GAAAgE,IAAA,CAED,SAAAhF,EACEgH,CAAW,CACXsB,CAAmB,MAAAnI,CAAA,CAAAgB,CAAA,CAAAC,CAAA,CAAAC,CAAA,QAAAL,mBAAA,GAAAuD,IAAA,UAAAhD,EAAAvB,CAAA,iBAAAA,CAAA,CAAA0F,IAAA,CAAA1F,CAAA,CAAAkD,IAAA,eAEb,CAAAqF,CAAU,CAAG,GAAI,CAAAC,eAAiB,CAElCC,CAAS,CAAAhI,aAAA,CAAAA,aAAA,IACV6H,CAAM,MACTI,MAAM,CAAEH,CAAU,CAACG,MAAM,GAGrBC,CAAS,CAAGlB,UAAU,CAAC,iBAAM,CAAAc,CAAU,CAACK,KAAK,EAAE,EAAE,IAAI,CAAC7B,OAAO,CAAC,CAAA/G,CAAA,CAAAkD,IAAA,GAE7CiE,KAAK,CAACH,CAAG,CAAEyB,CAAS,CAAC,cAAtC,CAAAnB,CAAQ,CAAAtH,CAAA,CAAA0C,IAAA,CAEdmG,YAAY,CAACF,CAAS,CAAC,CAAA3I,CAAA,CAAA6C,MAAA,UAEhByE,CAAQ,0BAAAtH,CAAA,CAAA6F,IAAA,MAAA7F,CAAA,OAChB,UAAAP,CAAA,OAAAA,CAAA,IAAAJ,OAAA,CAAAE,iBAAA,CAAAA,iBAAA"}
|
|
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
|
|
2
|
-
export declare class
|
|
3
|
-
|
|
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";
|
|
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
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","names":["
|
|
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
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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
|
-
|
|
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 {
|
|
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 {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
|
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":["
|
|
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": "
|
|
3
|
+
"version": "3.0.0",
|
|
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": "
|
|
16
|
+
"deploy": "/bin/bash ../../scripts/deploy.sh javascript-sdk",
|
|
17
17
|
"deploy-nexus": "/bin/bash ../../scripts/deploy_nexus.sh javascript-sdk",
|
|
18
|
-
"
|
|
19
|
-
"update-
|
|
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": "
|
|
38
|
+
"@kameleoon/javascript-sdk-core": "4.0.0"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
40
41
|
"@types/crypto-js": "^4.1.1",
|
package/dist/kameleoonUtils.d.ts
DELETED
|
@@ -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
|
-
}
|
package/dist/kameleoonUtils.js
DELETED
|
@@ -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":"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"}
|