@splitsoftware/splitio-commons 2.4.0 → 2.4.2-rc.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/CHANGES.txt +3 -0
- package/cjs/sdkClient/sdkClient.js +1 -0
- package/cjs/sdkFactory/index.js +10 -3
- package/cjs/sync/polling/fetchers/splitChangesFetcher.js +2 -2
- package/esm/sdkClient/sdkClient.js +1 -0
- package/esm/sdkFactory/index.js +10 -3
- package/esm/sync/polling/fetchers/splitChangesFetcher.js +2 -2
- package/package.json +1 -1
- package/src/sdkClient/sdkClient.ts +1 -0
- package/src/sdkFactory/index.ts +13 -3
- package/src/sync/polling/fetchers/splitChangesFetcher.ts +2 -2
package/CHANGES.txt
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
2.4.1 (June 3, 2025)
|
|
2
|
+
- Bugfix - Improved the Proxy fallback to flag spec version 1.2 to handle cases where the Proxy does not return an end-of-stream marker in 400 status code responses.
|
|
3
|
+
|
|
1
4
|
2.4.0 (May 27, 2025)
|
|
2
5
|
- Added support for rule-based segments. These segments determine membership at runtime by evaluating their configured rules against the user attributes provided to the SDK.
|
|
3
6
|
- Added support for feature flag prerequisites. This allows customers to define dependency conditions between flags, which are evaluated before any allowlists or targeting rules.
|
|
@@ -38,6 +38,7 @@ function sdkClientFactory(params, isSharedClient) {
|
|
|
38
38
|
(0, clientInputValidation_1.clientInputValidationDecorator)(settings, (0, client_1.clientFactory)(params), sdkReadinessManager.readinessManager),
|
|
39
39
|
// Sdk destroy
|
|
40
40
|
{
|
|
41
|
+
__ctx: params,
|
|
41
42
|
flush: function () {
|
|
42
43
|
// @TODO define cooldown time
|
|
43
44
|
return __cooldown(__flush, COOLDOWN_TIME_IN_MILLIS);
|
package/cjs/sdkFactory/index.js
CHANGED
|
@@ -87,8 +87,7 @@ function sdkFactory(params) {
|
|
|
87
87
|
initCallbacks.length = 0;
|
|
88
88
|
}
|
|
89
89
|
log.info(constants_1.NEW_FACTORY);
|
|
90
|
-
|
|
91
|
-
return (0, objectAssign_1.objectAssign)({
|
|
90
|
+
var factory = (0, objectAssign_1.objectAssign)({
|
|
92
91
|
// Split evaluation and event tracking engine
|
|
93
92
|
client: clientMethod,
|
|
94
93
|
// Manager API to explore available information
|
|
@@ -102,7 +101,15 @@ function sdkFactory(params) {
|
|
|
102
101
|
destroy: function () {
|
|
103
102
|
hasInit = false;
|
|
104
103
|
return Promise.all(Object.keys(clients).map(function (key) { return clients[key].destroy(); })).then(function () { });
|
|
105
|
-
}
|
|
104
|
+
},
|
|
105
|
+
__ctx: ctx
|
|
106
106
|
}, extraProps && extraProps(ctx), lazyInit ? { init: init } : init());
|
|
107
|
+
// append factory to global
|
|
108
|
+
if (typeof window === 'object') { // @ts-ignore
|
|
109
|
+
// eslint-disable-next-line no-undef
|
|
110
|
+
(window.__HARNESS_FME__ = window.__HARNESS_FME__ || []).push(factory);
|
|
111
|
+
}
|
|
112
|
+
// @ts-ignore
|
|
113
|
+
return factory;
|
|
107
114
|
}
|
|
108
115
|
exports.sdkFactory = sdkFactory;
|
|
@@ -26,9 +26,9 @@ function splitChangesFetcherFactory(fetchSplitChanges, settings, storage) {
|
|
|
26
26
|
settings.sync.flagSpecVersion = constants_1.FLAG_SPEC_VERSION;
|
|
27
27
|
}
|
|
28
28
|
var splitsPromise = fetchSplitChanges(since, noCache, till, settings.sync.flagSpecVersion === constants_1.FLAG_SPEC_VERSION ? rbSince : undefined)
|
|
29
|
-
// Handle proxy error with spec 1.3
|
|
30
29
|
.catch(function (err) {
|
|
31
|
-
|
|
30
|
+
// Handle proxy error with spec 1.3
|
|
31
|
+
if ((!err.statusCode || err.statusCode === 400) && sdkEndpointOverridden(settings) && settings.sync.flagSpecVersion === constants_1.FLAG_SPEC_VERSION) {
|
|
32
32
|
log.error(constants_2.LOG_PREFIX_SYNC_SPLITS + 'Proxy error detected. Retrying with spec 1.2. If you are using Split Proxy, please upgrade to latest version');
|
|
33
33
|
lastProxyCheckTimestamp = Date.now();
|
|
34
34
|
settings.sync.flagSpecVersion = '1.2'; // fallback to 1.2 spec
|
|
@@ -35,6 +35,7 @@ export function sdkClientFactory(params, isSharedClient) {
|
|
|
35
35
|
clientInputValidationDecorator(settings, clientFactory(params), sdkReadinessManager.readinessManager),
|
|
36
36
|
// Sdk destroy
|
|
37
37
|
{
|
|
38
|
+
__ctx: params,
|
|
38
39
|
flush: function () {
|
|
39
40
|
// @TODO define cooldown time
|
|
40
41
|
return __cooldown(__flush, COOLDOWN_TIME_IN_MILLIS);
|
package/esm/sdkFactory/index.js
CHANGED
|
@@ -84,8 +84,7 @@ export function sdkFactory(params) {
|
|
|
84
84
|
initCallbacks.length = 0;
|
|
85
85
|
}
|
|
86
86
|
log.info(NEW_FACTORY);
|
|
87
|
-
|
|
88
|
-
return objectAssign({
|
|
87
|
+
var factory = objectAssign({
|
|
89
88
|
// Split evaluation and event tracking engine
|
|
90
89
|
client: clientMethod,
|
|
91
90
|
// Manager API to explore available information
|
|
@@ -99,6 +98,14 @@ export function sdkFactory(params) {
|
|
|
99
98
|
destroy: function () {
|
|
100
99
|
hasInit = false;
|
|
101
100
|
return Promise.all(Object.keys(clients).map(function (key) { return clients[key].destroy(); })).then(function () { });
|
|
102
|
-
}
|
|
101
|
+
},
|
|
102
|
+
__ctx: ctx
|
|
103
103
|
}, extraProps && extraProps(ctx), lazyInit ? { init: init } : init());
|
|
104
|
+
// append factory to global
|
|
105
|
+
if (typeof window === 'object') { // @ts-ignore
|
|
106
|
+
// eslint-disable-next-line no-undef
|
|
107
|
+
(window.__HARNESS_FME__ = window.__HARNESS_FME__ || []).push(factory);
|
|
108
|
+
}
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
return factory;
|
|
104
111
|
}
|
|
@@ -23,9 +23,9 @@ export function splitChangesFetcherFactory(fetchSplitChanges, settings, storage)
|
|
|
23
23
|
settings.sync.flagSpecVersion = FLAG_SPEC_VERSION;
|
|
24
24
|
}
|
|
25
25
|
var splitsPromise = fetchSplitChanges(since, noCache, till, settings.sync.flagSpecVersion === FLAG_SPEC_VERSION ? rbSince : undefined)
|
|
26
|
-
// Handle proxy error with spec 1.3
|
|
27
26
|
.catch(function (err) {
|
|
28
|
-
|
|
27
|
+
// Handle proxy error with spec 1.3
|
|
28
|
+
if ((!err.statusCode || err.statusCode === 400) && sdkEndpointOverridden(settings) && settings.sync.flagSpecVersion === FLAG_SPEC_VERSION) {
|
|
29
29
|
log.error(LOG_PREFIX_SYNC_SPLITS + 'Proxy error detected. Retrying with spec 1.2. If you are using Split Proxy, please upgrade to latest version');
|
|
30
30
|
lastProxyCheckTimestamp = Date.now();
|
|
31
31
|
settings.sync.flagSpecVersion = '1.2'; // fallback to 1.2 spec
|
package/package.json
CHANGED
package/src/sdkFactory/index.ts
CHANGED
|
@@ -107,8 +107,7 @@ export function sdkFactory(params: ISdkFactoryParams): SplitIO.ISDK | SplitIO.IA
|
|
|
107
107
|
|
|
108
108
|
log.info(NEW_FACTORY);
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
return objectAssign({
|
|
110
|
+
const factory = objectAssign({
|
|
112
111
|
// Split evaluation and event tracking engine
|
|
113
112
|
client: clientMethod,
|
|
114
113
|
|
|
@@ -126,6 +125,17 @@ export function sdkFactory(params: ISdkFactoryParams): SplitIO.ISDK | SplitIO.IA
|
|
|
126
125
|
destroy() {
|
|
127
126
|
hasInit = false;
|
|
128
127
|
return Promise.all(Object.keys(clients).map(key => clients[key].destroy())).then(() => { });
|
|
129
|
-
}
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
__ctx: ctx
|
|
130
131
|
}, extraProps && extraProps(ctx), lazyInit ? { init } : init());
|
|
132
|
+
|
|
133
|
+
// append factory to global
|
|
134
|
+
if (typeof window === 'object') { // @ts-ignore
|
|
135
|
+
// eslint-disable-next-line no-undef
|
|
136
|
+
(window.__HARNESS_FME__ = window.__HARNESS_FME__ || []).push(factory);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// @ts-ignore
|
|
140
|
+
return factory;
|
|
131
141
|
}
|
|
@@ -40,9 +40,9 @@ export function splitChangesFetcherFactory(fetchSplitChanges: IFetchSplitChanges
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
let splitsPromise = fetchSplitChanges(since, noCache, till, settings.sync.flagSpecVersion === FLAG_SPEC_VERSION ? rbSince : undefined)
|
|
43
|
-
// Handle proxy error with spec 1.3
|
|
44
43
|
.catch((err) => {
|
|
45
|
-
|
|
44
|
+
// Handle proxy error with spec 1.3
|
|
45
|
+
if ((!err.statusCode || err.statusCode === 400) && sdkEndpointOverridden(settings) && settings.sync.flagSpecVersion === FLAG_SPEC_VERSION) {
|
|
46
46
|
log.error(LOG_PREFIX_SYNC_SPLITS + 'Proxy error detected. Retrying with spec 1.2. If you are using Split Proxy, please upgrade to latest version');
|
|
47
47
|
lastProxyCheckTimestamp = Date.now();
|
|
48
48
|
settings.sync.flagSpecVersion = '1.2'; // fallback to 1.2 spec
|