vwo-fme-node-sdk 1.38.0 → 1.40.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +21 -12
- package/dist/VERSION.js +1 -1
- package/dist/client/vwo-fme-javascript-sdk.js +1182 -286
- package/dist/client/vwo-fme-javascript-sdk.js.map +1 -1
- package/dist/client/vwo-fme-javascript-sdk.min.js +3 -3
- package/dist/client/vwo-fme-javascript-sdk.min.js.map +1 -1
- package/dist/esm/VWOBuilder.js +24 -6
- package/dist/esm/VWOBuilder.js.map +1 -1
- package/dist/esm/VWOClient.js +12 -2
- package/dist/esm/VWOClient.js.map +1 -1
- package/dist/esm/api/GetFlag.js +235 -14
- package/dist/esm/api/GetFlag.js.map +1 -1
- package/dist/esm/api/TrackEvent.js +3 -2
- package/dist/esm/api/TrackEvent.js.map +1 -1
- package/dist/esm/constants/index.js +2 -0
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/decorators/StorageDecorator.js +3 -1
- package/dist/esm/decorators/StorageDecorator.js.map +1 -1
- package/dist/esm/enums/EventEnum.js +1 -0
- package/dist/esm/enums/EventEnum.js.map +1 -1
- package/dist/esm/enums/NetworkTransportModeEnum.js +21 -0
- package/dist/esm/enums/NetworkTransportModeEnum.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/models/VWOOptionsModel.js +30 -0
- package/dist/esm/models/VWOOptionsModel.js.map +1 -1
- package/dist/esm/models/browser/BrowserConfigModel.js +17 -0
- package/dist/esm/models/browser/BrowserConfigModel.js.map +1 -0
- package/dist/esm/models/campaign/HoldoutModel.js +81 -0
- package/dist/esm/models/campaign/HoldoutModel.js.map +1 -0
- package/dist/esm/models/schemas/SettingsSchemaValidation.js +17 -1
- package/dist/esm/models/schemas/SettingsSchemaValidation.js.map +1 -1
- package/dist/esm/models/settings/SettingsModel.js +11 -0
- package/dist/esm/models/settings/SettingsModel.js.map +1 -1
- package/dist/esm/models/storage/StorageDataModel.js +8 -0
- package/dist/esm/models/storage/StorageDataModel.js.map +1 -1
- package/dist/esm/packages/network-layer/client/NetworkBrowserClient.js +68 -81
- package/dist/esm/packages/network-layer/client/NetworkBrowserClient.js.map +1 -1
- package/dist/esm/packages/network-layer/manager/NetworkManager.js +3 -6
- package/dist/esm/packages/network-layer/manager/NetworkManager.js.map +1 -1
- package/dist/esm/packages/segmentation-evaluator/core/SegmentationManger.js +5 -1
- package/dist/esm/packages/segmentation-evaluator/core/SegmentationManger.js.map +1 -1
- package/dist/esm/packages/storage/connectors/BrowserStorageConnector.js.map +1 -1
- package/dist/esm/services/BatchEventsQueue.js +3 -2
- package/dist/esm/services/BatchEventsQueue.js.map +1 -1
- package/dist/esm/services/SettingsService.js +3 -2
- package/dist/esm/services/SettingsService.js.map +1 -1
- package/dist/esm/utils/FunctionUtil.js +12 -0
- package/dist/esm/utils/FunctionUtil.js.map +1 -1
- package/dist/esm/utils/GatewayServiceUtil.js +24 -5
- package/dist/esm/utils/GatewayServiceUtil.js.map +1 -1
- package/dist/esm/utils/HoldoutUtil.js +187 -0
- package/dist/esm/utils/HoldoutUtil.js.map +1 -0
- package/dist/esm/utils/ImpressionUtil.js +28 -4
- package/dist/esm/utils/ImpressionUtil.js.map +1 -1
- package/dist/esm/utils/MegUtil.js +52 -23
- package/dist/esm/utils/MegUtil.js.map +1 -1
- package/dist/esm/utils/NetworkUtil.js +37 -8
- package/dist/esm/utils/NetworkUtil.js.map +1 -1
- package/dist/esm/utils/RuleEvaluationUtil.js +5 -8
- package/dist/esm/utils/RuleEvaluationUtil.js.map +1 -1
- package/dist/esm/utils/SDKMetaUtil.js +57 -0
- package/dist/esm/utils/SDKMetaUtil.js.map +1 -0
- package/dist/package.json +2 -2
- package/dist/server/vwo-fme-node-sdk.js +1316 -292
- package/dist/server/vwo-fme-node-sdk.js.map +1 -1
- package/dist/server/vwo-fme-node-sdk.min.js +3 -3
- package/dist/server/vwo-fme-node-sdk.min.js.map +1 -1
- package/dist/server-unpacked/VWOBuilder.js +23 -5
- package/dist/server-unpacked/VWOBuilder.js.map +1 -1
- package/dist/server-unpacked/VWOClient.js +12 -2
- package/dist/server-unpacked/VWOClient.js.map +1 -1
- package/dist/server-unpacked/api/GetFlag.js +367 -126
- package/dist/server-unpacked/api/GetFlag.js.map +1 -1
- package/dist/server-unpacked/api/TrackEvent.js +2 -1
- package/dist/server-unpacked/api/TrackEvent.js.map +1 -1
- package/dist/server-unpacked/constants/index.js +2 -0
- package/dist/server-unpacked/constants/index.js.map +1 -1
- package/dist/server-unpacked/decorators/StorageDecorator.js +3 -1
- package/dist/server-unpacked/decorators/StorageDecorator.js.map +1 -1
- package/dist/server-unpacked/enums/EventEnum.js +1 -0
- package/dist/server-unpacked/enums/EventEnum.js.map +1 -1
- package/dist/server-unpacked/enums/NetworkTransportModeEnum.js +24 -0
- package/dist/server-unpacked/enums/NetworkTransportModeEnum.js.map +1 -0
- package/dist/server-unpacked/index.js +3 -1
- package/dist/server-unpacked/index.js.map +1 -1
- package/dist/server-unpacked/models/VWOOptionsModel.js +32 -0
- package/dist/server-unpacked/models/VWOOptionsModel.js.map +1 -1
- package/dist/server-unpacked/models/browser/BrowserConfigModel.js +18 -0
- package/dist/server-unpacked/models/browser/BrowserConfigModel.js.map +1 -0
- package/dist/server-unpacked/models/campaign/HoldoutModel.js +88 -0
- package/dist/server-unpacked/models/campaign/HoldoutModel.js.map +1 -0
- package/dist/server-unpacked/models/schemas/SettingsSchemaValidation.js +16 -0
- package/dist/server-unpacked/models/schemas/SettingsSchemaValidation.js.map +1 -1
- package/dist/server-unpacked/models/settings/SettingsModel.js +11 -0
- package/dist/server-unpacked/models/settings/SettingsModel.js.map +1 -1
- package/dist/server-unpacked/models/storage/StorageDataModel.js +8 -0
- package/dist/server-unpacked/models/storage/StorageDataModel.js.map +1 -1
- package/dist/server-unpacked/packages/network-layer/client/NetworkBrowserClient.js +69 -81
- package/dist/server-unpacked/packages/network-layer/client/NetworkBrowserClient.js.map +1 -1
- package/dist/server-unpacked/packages/network-layer/manager/NetworkManager.js +4 -6
- package/dist/server-unpacked/packages/network-layer/manager/NetworkManager.js.map +1 -1
- package/dist/server-unpacked/packages/segmentation-evaluator/core/SegmentationManger.js +5 -2
- package/dist/server-unpacked/packages/segmentation-evaluator/core/SegmentationManger.js.map +1 -1
- package/dist/server-unpacked/packages/storage/connectors/BrowserStorageConnector.js.map +1 -1
- package/dist/server-unpacked/services/BatchEventsQueue.js +3 -2
- package/dist/server-unpacked/services/BatchEventsQueue.js.map +1 -1
- package/dist/server-unpacked/services/SettingsService.js +3 -2
- package/dist/server-unpacked/services/SettingsService.js.map +1 -1
- package/dist/server-unpacked/utils/FunctionUtil.js +13 -0
- package/dist/server-unpacked/utils/FunctionUtil.js.map +1 -1
- package/dist/server-unpacked/utils/GatewayServiceUtil.js +25 -5
- package/dist/server-unpacked/utils/GatewayServiceUtil.js.map +1 -1
- package/dist/server-unpacked/utils/HoldoutUtil.js +262 -0
- package/dist/server-unpacked/utils/HoldoutUtil.js.map +1 -0
- package/dist/server-unpacked/utils/ImpressionUtil.js +36 -5
- package/dist/server-unpacked/utils/ImpressionUtil.js.map +1 -1
- package/dist/server-unpacked/utils/MegUtil.js +46 -13
- package/dist/server-unpacked/utils/MegUtil.js.map +1 -1
- package/dist/server-unpacked/utils/NetworkUtil.js +36 -7
- package/dist/server-unpacked/utils/NetworkUtil.js.map +1 -1
- package/dist/server-unpacked/utils/RuleEvaluationUtil.js +19 -21
- package/dist/server-unpacked/utils/RuleEvaluationUtil.js.map +1 -1
- package/dist/server-unpacked/utils/SDKMetaUtil.js +63 -0
- package/dist/server-unpacked/utils/SDKMetaUtil.js.map +1 -0
- package/dist/types/constants/index.d.ts +2 -0
- package/dist/types/enums/EventEnum.d.ts +1 -0
- package/dist/types/enums/NetworkTransportModeEnum.d.ts +19 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/models/VWOOptionsModel.d.ts +25 -0
- package/dist/types/models/browser/BrowserConfigModel.d.ts +21 -0
- package/dist/types/models/campaign/HoldoutModel.d.ts +39 -0
- package/dist/types/models/schemas/SettingsSchemaValidation.d.ts +1 -0
- package/dist/types/models/settings/SettingsModel.d.ts +3 -0
- package/dist/types/models/storage/StorageDataModel.d.ts +4 -0
- package/dist/types/packages/network-layer/client/NetworkBrowserClient.d.ts +10 -2
- package/dist/types/packages/network-layer/manager/NetworkManager.d.ts +2 -0
- package/dist/types/packages/storage/connectors/BrowserStorageConnector.d.ts +2 -0
- package/dist/types/utils/FunctionUtil.d.ts +7 -0
- package/dist/types/utils/GatewayServiceUtil.d.ts +2 -2
- package/dist/types/utils/HoldoutUtil.d.ts +63 -0
- package/dist/types/utils/ImpressionUtil.d.ts +13 -3
- package/dist/types/utils/NetworkUtil.d.ts +19 -0
- package/dist/types/utils/SDKMetaUtil.d.ts +43 -0
- package/lib/VWOBuilder.ts +35 -6
- package/lib/VWOClient.ts +12 -2
- package/lib/api/GetFlag.ts +377 -48
- package/lib/api/TrackEvent.ts +6 -2
- package/lib/constants/index.ts +2 -0
- package/lib/decorators/StorageDecorator.ts +4 -0
- package/lib/enums/EventEnum.ts +1 -0
- package/lib/enums/NetworkTransportModeEnum.ts +19 -0
- package/lib/index.ts +2 -0
- package/lib/models/VWOOptionsModel.ts +46 -0
- package/lib/models/browser/BrowserConfigModel.ts +23 -0
- package/lib/models/campaign/HoldoutModel.ts +95 -0
- package/lib/models/schemas/SettingsSchemaValidation.ts +20 -1
- package/lib/models/settings/SettingsModel.ts +13 -0
- package/lib/models/storage/StorageDataModel.ts +12 -1
- package/lib/packages/network-layer/client/NetworkBrowserClient.ts +82 -84
- package/lib/packages/network-layer/manager/NetworkManager.ts +3 -7
- package/lib/packages/segmentation-evaluator/core/SegmentationManger.ts +7 -1
- package/lib/packages/storage/connectors/BrowserStorageConnector.ts +2 -0
- package/lib/services/BatchEventsQueue.ts +3 -2
- package/lib/services/SettingsService.ts +3 -2
- package/lib/utils/FunctionUtil.ts +13 -0
- package/lib/utils/GatewayServiceUtil.ts +25 -5
- package/lib/utils/HoldoutUtil.ts +254 -0
- package/lib/utils/ImpressionUtil.ts +30 -13
- package/lib/utils/MegUtil.ts +80 -30
- package/lib/utils/NetworkUtil.ts +54 -8
- package/lib/utils/RuleEvaluationUtil.ts +11 -19
- package/lib/utils/SDKMetaUtil.ts +72 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.40.1] - 2026-03-02
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Introduced `SDKMetaUtil` and `sdkMeta` config to allow overriding the default SDK name and version used in events. VWO FE React SDK will consume via it.
|
|
13
|
+
|
|
14
|
+
## [1.40.0] - 2026-02-26
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- Enhanced browser tracking implementation: now uses `navigator.sendBeacon` by default for sending events, falling back to XHR when needed. This behavior is configurable via `browserConfig.networkTransportMode` (`'sendBeacon'` or `'xhr'`).
|
|
19
|
+
- Added `browserConfig` for browser-specific configuration, including `networkTransportMode` and `clientStorage`. `browserConfig.clientStorage` is preferred over the top-level `clientStorage`, with a safe `{}` fallback when neither is provided.
|
|
20
|
+
|
|
21
|
+
Example usage:
|
|
22
|
+
|
|
23
|
+
```javascript
|
|
24
|
+
// Default: use sendBeacon in browser (with XHR fallback)
|
|
25
|
+
const vwoClient = await init({
|
|
26
|
+
accountId: '123456',
|
|
27
|
+
sdkKey: '32-alpha-numeric-sdk-key',
|
|
28
|
+
// browserConfig.networkTransportMode defaults to 'sendBeacon'
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Force XHR for all browser tracking requests
|
|
32
|
+
const vwoClientWithXHR = await init({
|
|
33
|
+
accountId: '123456',
|
|
34
|
+
sdkKey: '32-alpha-numeric-sdk-key',
|
|
35
|
+
browserConfig: {
|
|
36
|
+
networkTransportMode: NetworkTransportMode.XHR,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## [1.39.0] - 2025-02-26
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- Added support for holdout groups to exclude users from features based on segmentation and traffic allocation.
|
|
46
|
+
|
|
8
47
|
## [1.38.0] - 2026-02-16
|
|
9
48
|
|
|
10
49
|
### Added
|
package/README.md
CHANGED
|
@@ -92,7 +92,7 @@ To customize the SDK further, additional parameters can be passed to the `init()
|
|
|
92
92
|
| `pollInterval` | Time interval for fetching updates from VWO servers (in milliseconds). | No | Number | `60000` |
|
|
93
93
|
| `gatewayService` | An object representing configuration for integrating VWO Gateway Service. | No | Object | see [Gateway](#gateway) section |
|
|
94
94
|
| `storage` | Custom storage connector for persisting user decisions and campaign data. | No | Object | See [Storage](#storage) section |
|
|
95
|
-
| `
|
|
95
|
+
| `browserConfig` | Browser-specific configuration, including network transport mode and browser storage options. | No | Object | See [Browser Config](#browser-config) section |
|
|
96
96
|
| `logger` | Toggle log levels for more insights or for debugging purposes. You can also customize your own transport in order to have better control over log messages. | No | Object | See [Logger](#logger) section |
|
|
97
97
|
| `shouldWaitForTrackingCalls` | Ensures tracking calls complete before resolving promises, useful for edge computing environments like Cloudflare Workers | No | Boolean | `true` |
|
|
98
98
|
| `integrations` | A callback function that receives data which can be pushed to any external tool that you need to integrate with. | No | Object | See [Integrations](#integrations) |
|
|
@@ -363,27 +363,36 @@ const vwoClient = await init({
|
|
|
363
363
|
});
|
|
364
364
|
```
|
|
365
365
|
|
|
366
|
-
###
|
|
366
|
+
### Browser Config
|
|
367
367
|
|
|
368
|
-
In browser environments, the SDK automatically uses `localStorage` to persist user data. You can customize this behavior using the `
|
|
368
|
+
In browser environments, the SDK automatically uses `localStorage` to persist user data and `navigator.sendBeacon` to send tracking events (with XHR fallback). You can customize this behavior using the `browserConfig` option, which exposes both `networkTransportMode` and `clientStorage`:
|
|
369
369
|
|
|
370
370
|
```javascript
|
|
371
371
|
const vwoClient = await init({
|
|
372
372
|
accountId: '123456',
|
|
373
373
|
sdkKey: '32-alpha-numeric-sdk-key',
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
374
|
+
browserConfig: {
|
|
375
|
+
// Control how tracking calls are sent from the browser
|
|
376
|
+
// 'sendBeacon' (default) uses navigator.sendBeacon with XHR fallback
|
|
377
|
+
// 'xhr' forces XHR for all tracking requests including retry functionality
|
|
378
|
+
networkTransportMode: 'sendBeacon',
|
|
379
|
+
|
|
380
|
+
// Configure browser storage behavior
|
|
381
|
+
clientStorage: {
|
|
382
|
+
key: 'vwo_data', // defaults to vwo_fme_data
|
|
383
|
+
provider: sessionStorage, // defaults to localStorage
|
|
384
|
+
isDisabled: false, // defaults to false, set to true to disable storage
|
|
385
|
+
},
|
|
378
386
|
},
|
|
379
387
|
});
|
|
380
388
|
```
|
|
381
389
|
|
|
382
|
-
| **
|
|
383
|
-
|
|
|
384
|
-
| `
|
|
385
|
-
| `
|
|
386
|
-
| `
|
|
390
|
+
| **browserConfig Property** | **Description** | **Required** | **Type** | **Default** |
|
|
391
|
+
| -------------------------- | -------------------------------------------------------------------------- | ------------ | -------- | ---------------- |
|
|
392
|
+
| `networkTransportMode` | How tracking events are sent from the browser (`'sendBeacon'` or `'xhr'`). | No | String | `'sendBeacon'` |
|
|
393
|
+
| `clientStorage.key` | Key used to store data in browser storage. | No | String | `'vwo_fme_data'` |
|
|
394
|
+
| `clientStorage.provider` | Storage provider (e.g. `localStorage` or `sessionStorage`). | No | Object | `localStorage` |
|
|
395
|
+
| `clientStorage.isDisabled` | Disable browser storage completely. | No | Boolean | `false` |
|
|
387
396
|
|
|
388
397
|
Note: This feature is only applicable in browser environments. In Node.js environments, you should continue using the `storage` option for custom storage implementations.
|
|
389
398
|
|
package/dist/VERSION.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = { version: "1.
|
|
1
|
+
module.exports = { version: "1.40.1" };
|