@statsig/js-local-overrides 3.26.0 → 3.27.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@statsig/js-local-overrides",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.27.0",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"homepage": "https://github.com/statsig-io/js-client-monorepo",
|
|
6
6
|
"repository": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"directory": "packages/js-local-overrides"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@statsig/client-core": "3.
|
|
12
|
+
"@statsig/client-core": "3.27.0"
|
|
13
13
|
},
|
|
14
14
|
"type": "commonjs",
|
|
15
15
|
"main": "./src/index.js",
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { DynamicConfig, Experiment, FeatureGate, Layer, OverrideAdapter, StatsigUser } from '@statsig/client-core';
|
|
1
|
+
import { DynamicConfig, EvaluationDetails, Experiment, FeatureGate, Layer, OverrideAdapter, ParamStoreConfig, ParameterStore, StatsigUser } from '@statsig/client-core';
|
|
2
2
|
export type OverrideStore = {
|
|
3
3
|
gate: Record<string, boolean>;
|
|
4
4
|
dynamicConfig: Record<string, Record<string, unknown>>;
|
|
5
5
|
experiment: OverrideStore['dynamicConfig'];
|
|
6
6
|
layer: OverrideStore['dynamicConfig'];
|
|
7
|
+
paramStore: Record<string, Record<string, unknown>>;
|
|
7
8
|
};
|
|
8
9
|
export declare class LocalOverrideAdapter implements OverrideAdapter {
|
|
9
10
|
private _overrides;
|
|
@@ -24,9 +25,16 @@ export declare class LocalOverrideAdapter implements OverrideAdapter {
|
|
|
24
25
|
getExperimentOverride(current: Experiment, _user: StatsigUser): Experiment | null;
|
|
25
26
|
overrideLayer(name: string, value: Record<string, unknown>): void;
|
|
26
27
|
removeLayerOverride(name: string): void;
|
|
28
|
+
overrideParamStore(name: string, value: Record<string, unknown>): void;
|
|
29
|
+
removeParamStoreOverride(name: string): void;
|
|
30
|
+
getParamStoreOverride(current: ParameterStore): {
|
|
31
|
+
config: ParamStoreConfig;
|
|
32
|
+
details: EvaluationDetails;
|
|
33
|
+
} | null;
|
|
27
34
|
getAllOverrides(): OverrideStore;
|
|
28
35
|
removeAllOverrides(): void;
|
|
29
36
|
getLayerOverride(current: Layer, _user: StatsigUser): Layer | null;
|
|
30
37
|
private _getConfigOverride;
|
|
31
38
|
private _hasInMemoryOverrides;
|
|
39
|
+
private _inferParamType;
|
|
32
40
|
}
|
|
@@ -18,6 +18,7 @@ function _makeEmptyStore() {
|
|
|
18
18
|
dynamicConfig: {},
|
|
19
19
|
experiment: {},
|
|
20
20
|
layer: {},
|
|
21
|
+
paramStore: {},
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
function _mergeOverrides(currentValues, newValues) {
|
|
@@ -26,6 +27,7 @@ function _mergeOverrides(currentValues, newValues) {
|
|
|
26
27
|
dynamicConfig: Object.assign({}, currentValues.dynamicConfig, newValues.dynamicConfig),
|
|
27
28
|
experiment: Object.assign({}, currentValues.experiment, newValues.experiment),
|
|
28
29
|
layer: Object.assign({}, currentValues.layer, newValues.layer),
|
|
30
|
+
paramStore: Object.assign({}, currentValues.paramStore, newValues.paramStore),
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
class LocalOverrideAdapter {
|
|
@@ -133,6 +135,37 @@ class LocalOverrideAdapter {
|
|
|
133
135
|
delete this._overrides.layer[(0, client_core_1._DJB2)(name)];
|
|
134
136
|
this._saveOverridesToStorage();
|
|
135
137
|
}
|
|
138
|
+
overrideParamStore(name, value) {
|
|
139
|
+
this._overrides.paramStore[name] = value;
|
|
140
|
+
this._overrides.paramStore[(0, client_core_1._DJB2)(name)] = value;
|
|
141
|
+
this._saveOverridesToStorage();
|
|
142
|
+
}
|
|
143
|
+
removeParamStoreOverride(name) {
|
|
144
|
+
this._warnIfStorageNotReady();
|
|
145
|
+
delete this._overrides.paramStore[name];
|
|
146
|
+
delete this._overrides.paramStore[(0, client_core_1._DJB2)(name)];
|
|
147
|
+
this._saveOverridesToStorage();
|
|
148
|
+
}
|
|
149
|
+
getParamStoreOverride(current) {
|
|
150
|
+
var _a;
|
|
151
|
+
const overridden = (_a = this._overrides.paramStore[current.name]) !== null && _a !== void 0 ? _a : this._overrides.paramStore[(0, client_core_1._DJB2)(current.name)];
|
|
152
|
+
if (overridden == null) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
const config = Object.assign({}, (current.__configuration || {}));
|
|
156
|
+
for (const [key, value] of Object.entries(overridden)) {
|
|
157
|
+
const paramType = this._inferParamType(value);
|
|
158
|
+
config[key] = {
|
|
159
|
+
ref_type: 'static',
|
|
160
|
+
param_type: paramType,
|
|
161
|
+
value,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
config,
|
|
166
|
+
details: Object.assign(Object.assign({}, current.details), { reason: LOCAL_OVERRIDE_REASON }),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
136
169
|
getAllOverrides() {
|
|
137
170
|
return JSON.parse(JSON.stringify(this._overrides));
|
|
138
171
|
}
|
|
@@ -161,7 +194,19 @@ class LocalOverrideAdapter {
|
|
|
161
194
|
return (Object.keys(this._overrides.gate).length > 0 ||
|
|
162
195
|
Object.keys(this._overrides.dynamicConfig).length > 0 ||
|
|
163
196
|
Object.keys(this._overrides.experiment).length > 0 ||
|
|
164
|
-
Object.keys(this._overrides.layer).length > 0
|
|
197
|
+
Object.keys(this._overrides.layer).length > 0 ||
|
|
198
|
+
Object.keys(this._overrides.paramStore).length > 0);
|
|
199
|
+
}
|
|
200
|
+
_inferParamType(value) {
|
|
201
|
+
if (typeof value === 'string')
|
|
202
|
+
return 'string';
|
|
203
|
+
if (typeof value === 'boolean')
|
|
204
|
+
return 'boolean';
|
|
205
|
+
if (typeof value === 'number')
|
|
206
|
+
return 'number';
|
|
207
|
+
if (Array.isArray(value))
|
|
208
|
+
return 'array';
|
|
209
|
+
return 'object';
|
|
165
210
|
}
|
|
166
211
|
}
|
|
167
212
|
exports.LocalOverrideAdapter = LocalOverrideAdapter;
|