Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit f61c854

Browse files
committed
rebuild
1 parent 72254db commit f61c854

File tree

9 files changed

+225
-104
lines changed

9 files changed

+225
-104
lines changed

packages/js-web-sdk/packages/react-sdk/dist/OptimizelyUserWrapper.d.ts

Lines changed: 0 additions & 41 deletions
This file was deleted.

packages/js-web-sdk/packages/react-sdk/dist/Provider.d.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import * as React from 'react';
22
import { OptimizelySDKWrapper } from '@optimizely/js-web-sdk';
3+
import { UserAttributes, UserWrappedOptimizelySDK } from './createUserWrapper';
34
interface OptimizelyProviderProps {
45
optimizely: OptimizelySDKWrapper;
6+
userId: string;
57
timeout?: number;
8+
userAttributes?: UserAttributes;
69
}
710
interface OptimizelyProviderState {
811
userId: string;
@@ -11,7 +14,7 @@ interface OptimizelyProviderState {
1114
} | undefined;
1215
}
1316
export declare class OptimizelyProvider extends React.Component<OptimizelyProviderProps, OptimizelyProviderState> {
14-
sdkWrapper: OptimizelySDKWrapper;
17+
sdkWrapper: UserWrappedOptimizelySDK;
1518
constructor(props: OptimizelyProviderProps);
1619
render(): JSX.Element;
1720
}
Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
1-
/// <reference path="../../js-web-sdk/src/OptimizelySDK.d.ts" />
2-
import { OptimizelySDKWrapper } from '@optimizely/js-web-sdk';
3-
declare type UserAttributes = {
1+
import { OptimizelySDKWrapper, VariableValuesObject } from '@optimizely/js-web-sdk';
2+
export declare type UserAttributes = {
43
[attribute: string]: any;
54
};
65
declare type EventTags = {
76
[tagKey: string]: boolean | number | string;
87
};
8+
export interface UserWrappedOptimizelySDK extends OptimizelySDKWrapper {
9+
activate(experimentKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): string | null;
10+
getVariation(experimentKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): string | null;
11+
getFeatureVariables(featureKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): VariableValuesObject;
12+
getFeatureVariableString(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): string | null;
13+
getFeatureVariableInteger(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): number | null;
14+
getFeatureVariableBoolean(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): boolean | null;
15+
getFeatureVariableDouble(featureKey: string, variableKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): number | null;
16+
isFeatureEnabled(featureKey: string, overrideUserId?: string, overrideAttributes?: UserAttributes): boolean;
17+
track(eventKey: string, overrideUserId?: string | EventTags, overrideAttributes?: UserAttributes, eventTags?: EventTags): void;
18+
}
919
/**
1020
* Wrapper to memoize the userId / userAttributes around an OptimizelySDKWrapper instance
1121
*
@@ -24,18 +34,5 @@ export declare function createUserWrapper({ instance, userId, userAttributes, }:
2434
instance: OptimizelySDKWrapper;
2535
userId: string;
2636
userAttributes?: UserAttributes;
27-
}): {
28-
activate(experimentKey: string, overrideUserId?: string | undefined, overrideAttributes?: UserAttributes | undefined): string | null;
29-
getVariation(experimentKey: string, overrideUserId?: string | undefined, overrideAttributes?: UserAttributes | undefined): string | null;
30-
getFeatureVariables(featureKey: string, overrideUserId?: string | undefined, overrideAttributes?: UserAttributes | undefined): import("@optimizely/js-web-sdk/lib/Datafile").VariableValuesObject;
31-
getFeatureVariableInteger(featureKey: string, variableKey: string, overrideUserId?: string | undefined, overrideAttributes?: UserAttributes | undefined): number | null;
32-
getFeatureVariableString(featureKey: string, variableKey: string, overrideUserId?: string | undefined, overrideAttributes?: UserAttributes | undefined): string | null;
33-
getFeatureVariableBoolean(featureKey: string, variableKey: string, overrideUserId?: string | undefined, overrideAttributes?: UserAttributes | undefined): boolean | null;
34-
getFeatureVariableDouble(featureKey: string, variableKey: string, overrideUserId?: string | undefined, overrideAttributes?: UserAttributes | undefined): number | null;
35-
isFeatureEnabled(featureKey: string, overrideUserId?: string | undefined, overrideAttributes?: UserAttributes | undefined): boolean;
36-
track(eventKey: string, overrideUserId?: string | EventTags | undefined, overrideAttributes?: UserAttributes | undefined, eventTags?: EventTags | undefined): void;
37-
instance: import("@optimizely/optimizely-sdk").Client;
38-
isInitialized: boolean;
39-
datafile: import("@optimizely/js-web-sdk/lib/Datafile").OptimizelyDatafile | null;
40-
};
37+
}): UserWrappedOptimizelySDK;
4138
export {};

packages/js-web-sdk/packages/react-sdk/dist/react-sdk.browser.umd.js

Lines changed: 68 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1314,22 +1314,85 @@
13141314
var OptimizelyContextConsumer = Consumer;
13151315
var OptimizelyContextProvider = Provider;
13161316

1317+
/**
1318+
* Wrapper to memoize the userId / userAttributes around an OptimizelySDKWrapper instance
1319+
*
1320+
* @param {{
1321+
* instance: OptimizelySDKWrapper
1322+
* userId: string
1323+
* attributes?: UserAttributes
1324+
* }} {
1325+
* instance,
1326+
* userId,
1327+
* attributes,
1328+
* }
1329+
* @returns
1330+
*/
1331+
function createUserWrapper(_a) {
1332+
var instance = _a.instance, userId = _a.userId, userAttributes = _a.userAttributes;
1333+
function getUserIdAndAttributes(overrideUserId, overrideAttributes) {
1334+
var finalUserId = overrideUserId !== undefined ? overrideUserId : userId;
1335+
var finalUserAttributes = overrideAttributes !== undefined ? overrideAttributes : userAttributes;
1336+
return [finalUserId, finalUserAttributes || {}];
1337+
}
1338+
return __assign({}, instance, { activate: function (experimentKey, overrideUserId, overrideAttributes) {
1339+
return instance.activate.apply(instance, [experimentKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes)));
1340+
},
1341+
getVariation: function (experimentKey, overrideUserId, overrideAttributes) {
1342+
return instance.getVariation.apply(instance, [experimentKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes)));
1343+
},
1344+
getFeatureVariables: function (featureKey, overrideUserId, overrideAttributes) {
1345+
return instance.getFeatureVariables.apply(instance, [featureKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes)));
1346+
},
1347+
getFeatureVariableInteger: function (featureKey, variableKey, overrideUserId, overrideAttributes) {
1348+
return instance.getFeatureVariableInteger.apply(instance, [featureKey,
1349+
variableKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes)));
1350+
},
1351+
getFeatureVariableString: function (featureKey, variableKey, overrideUserId, overrideAttributes) {
1352+
return instance.getFeatureVariableString.apply(instance, [featureKey,
1353+
variableKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes)));
1354+
},
1355+
getFeatureVariableBoolean: function (featureKey, variableKey, overrideUserId, overrideAttributes) {
1356+
return instance.getFeatureVariableBoolean.apply(instance, [featureKey,
1357+
variableKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes)));
1358+
},
1359+
getFeatureVariableDouble: function (featureKey, variableKey, overrideUserId, overrideAttributes) {
1360+
return instance.getFeatureVariableDouble.apply(instance, [featureKey,
1361+
variableKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes)));
1362+
},
1363+
isFeatureEnabled: function (featureKey, overrideUserId, overrideAttributes) {
1364+
return instance.isFeatureEnabled.apply(instance, [featureKey].concat(getUserIdAndAttributes(overrideUserId, overrideAttributes)));
1365+
},
1366+
track: function (eventKey, overrideUserId, overrideAttributes, eventTags) {
1367+
if (typeof overrideUserId !== 'undefined' && typeof overrideUserId !== 'string') {
1368+
eventTags = overrideUserId;
1369+
overrideUserId = undefined;
1370+
overrideAttributes = undefined;
1371+
}
1372+
var _a = getUserIdAndAttributes(overrideUserId, overrideAttributes), userId = _a[0], attributes = _a[1];
1373+
return instance.track(eventKey, userId, attributes, eventTags);
1374+
} });
1375+
}
1376+
13171377
var OptimizelyProvider = /** @class */ (function (_super) {
13181378
__extends(OptimizelyProvider, _super);
13191379
function OptimizelyProvider(props) {
13201380
var _this = _super.call(this, props) || this;
1321-
var timeout = props.timeout, optimizely = props.optimizely;
1322-
_this.sdkWrapper = optimizely;
1381+
var optimizely = props.optimizely, userId = props.userId, userAttributes = props.userAttributes;
1382+
console.log('creating wrapper', userId, userAttributes);
1383+
_this.sdkWrapper = createUserWrapper({
1384+
instance: optimizely,
1385+
userId: userId,
1386+
userAttributes: userAttributes,
1387+
});
13231388
return _this;
13241389
}
13251390
OptimizelyProvider.prototype.render = function () {
13261391
var _a = this.props, children = _a.children, timeout = _a.timeout;
13271392
var value = {
13281393
optimizely: this.sdkWrapper,
1394+
timeout: timeout,
13291395
};
1330-
if (timeout !== undefined) {
1331-
value['timeout'] = timeout;
1332-
}
13331396
return (React.createElement(OptimizelyContextProvider, { value: value }, children));
13341397
};
13351398
return OptimizelyProvider;

0 commit comments

Comments
 (0)