@flagship.io/react-sdk 3.0.1 → 3.0.2-alpha.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.
Files changed (53) hide show
  1. package/dist/FlagshipContext.d.ts +99 -0
  2. package/dist/FlagshipContext.js +312 -0
  3. package/dist/FlagshipContext.js.map +1 -0
  4. package/dist/FlagshipErrorBoundary.d.ts +34 -0
  5. package/dist/FlagshipErrorBoundary.js +95 -0
  6. package/dist/FlagshipErrorBoundary.js.map +1 -0
  7. package/dist/FlagshipHooks.d.ts +33 -0
  8. package/dist/FlagshipHooks.js +198 -0
  9. package/dist/FlagshipHooks.js.map +1 -0
  10. package/dist/components/ReactErrorBoundaryContainer/index.d.ts +10 -0
  11. package/dist/components/ReactErrorBoundaryContainer/index.js +65 -0
  12. package/dist/components/ReactErrorBoundaryContainer/index.js.map +1 -0
  13. package/dist/{types/index.d.ts → index.d.ts} +0 -1
  14. package/dist/index.js +14 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/lib/loggerHelper.d.ts +5 -0
  17. package/dist/lib/loggerHelper.js +14 -0
  18. package/dist/lib/loggerHelper.js.map +1 -0
  19. package/dist/lib/utils.d.ts +1 -0
  20. package/dist/lib/utils.js +7 -0
  21. package/dist/lib/utils.js.map +1 -0
  22. package/dist/setupTests.d.ts +1 -0
  23. package/dist/setupTests.js +9 -0
  24. package/dist/setupTests.js.map +1 -0
  25. package/dist/tests/mock/apiAnswers/oneModifInMoreThanOneCampaign.d.ts +3 -0
  26. package/dist/tests/mock/apiAnswers/oneModifInMoreThanOneCampaign.js +51 -0
  27. package/dist/tests/mock/apiAnswers/oneModifInMoreThanOneCampaign.js.map +1 -0
  28. package/dist/tests/mock/env.d.ts +5 -0
  29. package/dist/tests/mock/env.js +8 -0
  30. package/dist/tests/mock/env.js.map +1 -0
  31. package/dist/tests/mock/index.d.ts +74 -0
  32. package/dist/tests/mock/index.js +90 -0
  33. package/dist/tests/mock/index.js.map +1 -0
  34. package/package.json +3 -3
  35. package/dist/es/Flag.js +0 -36
  36. package/dist/es/FlagshipContext.js +0 -229
  37. package/dist/es/FlagshipHooks.js +0 -372
  38. package/dist/es/constants.js +0 -2
  39. package/dist/es/index.js +0 -3
  40. package/dist/es/utils.js +0 -77
  41. package/dist/esm/Flag.js +0 -55
  42. package/dist/esm/FlagshipContext.js +0 -253
  43. package/dist/esm/FlagshipHooks.js +0 -474
  44. package/dist/esm/constants.js +0 -2
  45. package/dist/esm/index.js +0 -3
  46. package/dist/esm/utils.js +0 -77
  47. package/dist/index.browser.js +0 -2
  48. package/dist/index.browser.js.map +0 -1
  49. package/dist/types/Flag.d.ts +0 -9
  50. package/dist/types/FlagshipContext.d.ts +0 -97
  51. package/dist/types/FlagshipHooks.d.ts +0 -130
  52. package/dist/types/constants.d.ts +0 -2
  53. package/dist/types/utils.d.ts +0 -9
@@ -0,0 +1,99 @@
1
+ import React, { SetStateAction, Dispatch } from 'react';
2
+ import { FlagshipSdkConfig, FlagshipVisitorContext, IFlagshipVisitor, SaveCacheArgs, DecisionApiCampaign, PostFlagshipApiCallback, BucketingApiResponse, IFlagship } from '@flagship.io/js-sdk';
3
+ import { FsLogger } from '@flagship.io/js-sdk-logs';
4
+ import { HandleErrorBoundaryDisplay } from './FlagshipErrorBoundary';
5
+ export declare type FsStatus = {
6
+ isLoading: boolean;
7
+ isSdkReady: boolean;
8
+ isVisitorDefined: boolean;
9
+ hasError: boolean;
10
+ lastRefresh: string | null;
11
+ firstInitSuccess: string | null;
12
+ };
13
+ export declare type FsState = {
14
+ fsSdk: IFlagship | null;
15
+ fsVisitor: IFlagshipVisitor | null;
16
+ fsModifications: DecisionApiCampaign[] | null;
17
+ status: FsStatus;
18
+ log: FsLogger | null;
19
+ private: {
20
+ previousFetchedModifications: undefined | DecisionApiCampaign[];
21
+ };
22
+ };
23
+ export interface FlagshipReactSdkConfig extends FlagshipSdkConfig {
24
+ fetchNow?: boolean;
25
+ pollingInterval?: number | null;
26
+ activateNow?: boolean;
27
+ enableConsoleLogs?: boolean;
28
+ decisionMode?: 'API' | 'Bucketing';
29
+ nodeEnv?: string;
30
+ enableClientCache?: boolean;
31
+ flagshipApi?: string;
32
+ apiKey?: string | null;
33
+ initialModifications?: DecisionApiCampaign[] | null;
34
+ initialBucketing?: BucketingApiResponse | null;
35
+ timeout?: number;
36
+ enableErrorLayout?: boolean;
37
+ enableSafeMode?: boolean;
38
+ internal?: {
39
+ react?: {};
40
+ reactNative?: {
41
+ httpCallback?: PostFlagshipApiCallback;
42
+ };
43
+ };
44
+ }
45
+ export declare const initState: FsState;
46
+ export declare type BucketingSuccessArgs = {
47
+ status: string;
48
+ payload: BucketingApiResponse;
49
+ };
50
+ export declare type FsContext = {
51
+ hasError: boolean;
52
+ state: FsState;
53
+ setState: Dispatch<SetStateAction<FsState>> | null;
54
+ };
55
+ declare const FlagshipContext: React.Context<FsContext>;
56
+ export declare type FsOnUpdateArguments = {
57
+ fsModifications: DecisionApiCampaign[] | null;
58
+ config: FlagshipReactSdkConfig;
59
+ status: FsStatus;
60
+ };
61
+ export declare type FsOnUpdate = (data: FsOnUpdateArguments, visitor: IFlagshipVisitor | null) => void;
62
+ interface FlagshipProviderProps {
63
+ children: React.ReactNode;
64
+ loadingComponent?: React.ReactNode;
65
+ envId: string;
66
+ visitorData: {
67
+ id: string;
68
+ context?: FlagshipVisitorContext;
69
+ isAuthenticated?: boolean;
70
+ };
71
+ reactNative?: {
72
+ handleErrorDisplay: HandleErrorBoundaryDisplay;
73
+ httpCallback: PostFlagshipApiCallback;
74
+ };
75
+ fetchNow?: boolean;
76
+ decisionMode?: 'API' | 'Bucketing';
77
+ pollingInterval?: number | null;
78
+ activateNow?: boolean;
79
+ enableConsoleLogs?: boolean;
80
+ enableErrorLayout?: boolean;
81
+ enableSafeMode?: boolean;
82
+ enableClientCache?: boolean;
83
+ nodeEnv?: string;
84
+ timeout?: number;
85
+ flagshipApi?: string;
86
+ apiKey?: string | null;
87
+ initialModifications?: DecisionApiCampaign[];
88
+ initialBucketing?: BucketingApiResponse;
89
+ onInitStart?(): void;
90
+ onInitDone?(): void;
91
+ onBucketingSuccess?(data: BucketingSuccessArgs): void;
92
+ onBucketingFail?(error: Error): void;
93
+ onSavingModificationsInCache?(args: SaveCacheArgs): void;
94
+ onUpdate?: FsOnUpdate;
95
+ }
96
+ export declare const FlagshipProvider: React.SFC<FlagshipProviderProps>;
97
+ export declare const FlagshipConsumer: React.Consumer<FsContext>;
98
+ export default FlagshipContext;
99
+ export declare const useFlagshipContext: () => any;
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __rest = (this && this.__rest) || function (s, e) {
33
+ var t = {};
34
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
35
+ t[p] = s[p];
36
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
37
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
38
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
39
+ t[p[i]] = s[p[i]];
40
+ }
41
+ return t;
42
+ };
43
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
44
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
45
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
46
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
47
+ r[k] = a[j];
48
+ return r;
49
+ };
50
+ var __importDefault = (this && this.__importDefault) || function (mod) {
51
+ return (mod && mod.__esModule) ? mod : { "default": mod };
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.useFlagshipContext = exports.FlagshipConsumer = exports.FlagshipProvider = exports.initState = void 0;
55
+ var react_1 = __importStar(require("react"));
56
+ var js_sdk_1 = __importDefault(require("@flagship.io/js-sdk"));
57
+ var use_ssr_1 = __importDefault(require("use-ssr"));
58
+ var loggerHelper_1 = __importDefault(require("./lib/loggerHelper"));
59
+ var FlagshipErrorBoundary_1 = __importDefault(require("./FlagshipErrorBoundary"));
60
+ var utils_1 = require("./lib/utils");
61
+ exports.initState = {
62
+ fsSdk: null,
63
+ fsVisitor: null,
64
+ log: null,
65
+ fsModifications: null,
66
+ status: {
67
+ isLoading: true,
68
+ isSdkReady: false,
69
+ isVisitorDefined: false,
70
+ firstInitSuccess: null,
71
+ lastRefresh: null,
72
+ hasError: false
73
+ },
74
+ private: {
75
+ previousFetchedModifications: undefined
76
+ }
77
+ };
78
+ var FlagshipContext = react_1.default.createContext({ state: __assign({}, exports.initState), setState: null, hasError: false });
79
+ exports.FlagshipProvider = function (_a) {
80
+ var children = _a.children, reactNative = _a.reactNative, envId = _a.envId, visitorData = _a.visitorData, loadingComponent = _a.loadingComponent, initialModifications = _a.initialModifications, initialBucketing = _a.initialBucketing, onSavingModificationsInCache = _a.onSavingModificationsInCache, onInitStart = _a.onInitStart, onInitDone = _a.onInitDone, onBucketingSuccess = _a.onBucketingSuccess, onBucketingFail = _a.onBucketingFail, onUpdate = _a.onUpdate, timeout = _a.timeout, fetchNow = _a.fetchNow, activateNow = _a.activateNow, enableConsoleLogs = _a.enableConsoleLogs, enableErrorLayout = _a.enableErrorLayout, enableSafeMode = _a.enableSafeMode, enableClientCache = _a.enableClientCache, nodeEnv = _a.nodeEnv, flagshipApi = _a.flagshipApi, apiKey = _a.apiKey, decisionMode = _a.decisionMode, pollingInterval = _a.pollingInterval;
81
+ var id = visitorData === null || visitorData === void 0 ? void 0 : visitorData.id;
82
+ var context = visitorData === null || visitorData === void 0 ? void 0 : visitorData.context;
83
+ var isAuthenticated = (visitorData === null || visitorData === void 0 ? void 0 : visitorData.isAuthenticated) || false;
84
+ var previousIsAuthenticated = react_1.useRef(isAuthenticated);
85
+ var isFirstRun = react_1.useRef(true);
86
+ var _b = use_ssr_1.default(), isBrowser = _b.isBrowser, isServer = _b.isServer, isNative = _b.isNative;
87
+ var isJest = utils_1.areWeTestingWithJest();
88
+ var extractConfiguration = function () { return ({
89
+ fetchNow: typeof fetchNow !== 'boolean' ? true : fetchNow,
90
+ decisionMode: decisionMode || 'API',
91
+ pollingInterval: pollingInterval || null,
92
+ activateNow: typeof activateNow !== 'boolean' ? false : activateNow,
93
+ timeout: typeof timeout !== 'number' ? undefined : timeout,
94
+ enableConsoleLogs: typeof enableConsoleLogs !== 'boolean' ? false : enableConsoleLogs,
95
+ enableErrorLayout: typeof enableErrorLayout !== 'boolean' ? false : enableErrorLayout,
96
+ enableSafeMode: typeof enableSafeMode !== 'boolean' ? false : enableSafeMode,
97
+ enableClientCache: typeof enableClientCache !== 'boolean' ? true : enableClientCache,
98
+ nodeEnv: nodeEnv || 'production',
99
+ initialBucketing: initialBucketing || null,
100
+ flagshipApi: flagshipApi,
101
+ apiKey: apiKey
102
+ }); };
103
+ var configuration = extractConfiguration();
104
+ var _c = react_1.useState(__assign(__assign({}, exports.initState), { log: loggerHelper_1.default.getLogger(configuration), config: configuration, private: __assign(__assign({}, exports.initState.private), { previousFetchedModifications: initialModifications }) })), state = _c[0], setState = _c[1];
105
+ var _d = react_1.useState({ hasError: false, error: null }), errorData = _d[0], setError = _d[1];
106
+ var handleError = function (error) {
107
+ state.log.fatal("error: " + error.stack);
108
+ setError({ error: error, hasError: !!error });
109
+ };
110
+ var _e = state.status, isLoading = _e.isLoading, isVisitorDefined = _e.isVisitorDefined, firstInitSuccess = _e.firstInitSuccess, lastRefresh = _e.lastRefresh, fsVisitor = state.fsVisitor;
111
+ var tryCatchCallback = function (callback) {
112
+ try {
113
+ callback();
114
+ }
115
+ catch (error) {
116
+ state.log.fatal("error: " + error.stack);
117
+ setError({ error: error, hasError: true });
118
+ }
119
+ };
120
+ var computeConfig = function () {
121
+ var sdkConfig = {
122
+ internal: {
123
+ react: {},
124
+ reactNative: {
125
+ httpCallback: reactNative === null || reactNative === void 0 ? void 0 : reactNative.httpCallback
126
+ }
127
+ }
128
+ };
129
+ if (Array.isArray(state.private.previousFetchedModifications)) {
130
+ return __assign(__assign(__assign({}, configuration), sdkConfig), { initialModifications: __spreadArrays(state.private.previousFetchedModifications) });
131
+ }
132
+ if (state.private.previousFetchedModifications) {
133
+ state.log.warn('initialModifications props is not correctly set and has been ignored, please check the documentation.');
134
+ }
135
+ return __assign(__assign({}, configuration), sdkConfig);
136
+ };
137
+ var computedConfig = computeConfig();
138
+ var handleErrorDisplay = reactNative === null || reactNative === void 0 ? void 0 : reactNative.handleErrorDisplay;
139
+ var initSdk = function (previousBucketing) {
140
+ var theApiKey = computedConfig.apiKey, otherComputedConfig = __rest(computedConfig, ["apiKey"]);
141
+ return js_sdk_1.default.start(envId, theApiKey, __assign(__assign({}, otherComputedConfig), { fetchNow: isServer ? false : otherComputedConfig.fetchNow, initialBucketing: computedConfig.initialBucketing === null ? previousBucketing : computedConfig.initialBucketing }));
142
+ };
143
+ var checkIfVisitorShouldBeNew = function (fsSdk) {
144
+ var _a, _b, _c;
145
+ if ((state === null || state === void 0 ? void 0 : state.fsVisitor) && state.fsVisitor.envId === fsSdk.envId && state.fsVisitor.id === id) {
146
+ if (state.fsVisitor.context !== context) {
147
+ state.log.debug("update visitor after re-render, but context is different (old vs new): vContext (" + JSON.stringify((_a = state.fsVisitor) === null || _a === void 0 ? void 0 : _a.context) + " vs " + JSON.stringify(context) + ")");
148
+ }
149
+ else {
150
+ state.log.debug("update visitor after re-render");
151
+ }
152
+ return false;
153
+ }
154
+ if (state === null || state === void 0 ? void 0 : state.fsVisitor) {
155
+ state.log.debug("unable to update visitor after re-render because of strong update (old vs new): envId (" + ((_b = state.fsVisitor) === null || _b === void 0 ? void 0 : _b.envId) + " vs " + fsSdk.envId + ") or vId (" + ((_c = state.fsVisitor) === null || _c === void 0 ? void 0 : _c.id) + " vs " + id + ")");
156
+ }
157
+ return true;
158
+ };
159
+ var postInitSdkForClientSide = function (fsSdk) {
160
+ fsSdk.eventEmitter.on('bucketPollingSuccess', function (_a) {
161
+ var status = _a.status, payload = _a.payload;
162
+ if (onBucketingSuccess) {
163
+ onBucketingSuccess({ status: status.toString(), payload: payload });
164
+ }
165
+ });
166
+ fsSdk.eventEmitter.on('bucketPollingFailed', function (error) {
167
+ if (onBucketingFail) {
168
+ onBucketingFail(error);
169
+ }
170
+ });
171
+ if (onInitStart && !isVisitorDefined) {
172
+ tryCatchCallback(onInitStart);
173
+ }
174
+ var newVisitorDetected = checkIfVisitorShouldBeNew(fsSdk);
175
+ var visitorInstance = newVisitorDetected
176
+ ? fsSdk.newVisitor(id, context)
177
+ : fsSdk.updateVisitor(state.fsVisitor, { context: context });
178
+ setState(function (s) { return (__assign(__assign({}, s), { status: __assign(__assign({}, s.status), { isVisitorDefined: !!visitorInstance, isLoading: true }), fsVisitor: visitorInstance, fsModifications: visitorInstance.fetchedModifications || null, fsSdk: fsSdk })); });
179
+ visitorInstance.on('ready', function (readyData) {
180
+ var withError = readyData.withError;
181
+ setState(function (s) { return (__assign(__assign({}, s), { status: __assign(__assign({}, s.status), { isVisitorDefined: !!visitorInstance, isLoading: false, lastRefresh: new Date().toISOString(), hasError: withError, firstInitSuccess: (!newVisitorDetected && s.status.firstInitSuccess) || new Date().toISOString() }), fsVisitor: visitorInstance, fsSdk: fsSdk, fsModifications: visitorInstance.fetchedModifications || null, private: {
182
+ previousFetchedModifications: visitorInstance.fetchedModifications || undefined
183
+ } })); });
184
+ });
185
+ visitorInstance.on('saveCache', function (args) {
186
+ if (onSavingModificationsInCache) {
187
+ tryCatchCallback(function () { return onSavingModificationsInCache(args); });
188
+ }
189
+ });
190
+ };
191
+ if (!isJest && isServer && !isVisitorDefined) {
192
+ state.log.debug("SDK run on server side detected.");
193
+ var fsSdk_1 = initSdk();
194
+ var visitorInstance_1 = fsSdk_1.newVisitor(id, context);
195
+ setState(function (s) { return (__assign(__assign({}, s), { status: __assign(__assign({}, s.status), { isVisitorDefined: !!visitorInstance_1 }), fsVisitor: visitorInstance_1, fsModifications: visitorInstance_1.fetchedModifications || null, fsSdk: fsSdk_1 })); });
196
+ }
197
+ else if ((isJest || isNative || isBrowser) && !isVisitorDefined && firstInitSuccess === null) {
198
+ var fsSdk = initSdk();
199
+ postInitSdkForClientSide(fsSdk);
200
+ }
201
+ var updateVisitorIfIdentityChanged = function () {
202
+ var isBeingAuthenticated = previousIsAuthenticated.current === false && isAuthenticated === true;
203
+ var isBeingAnonymous = previousIsAuthenticated.current === true && isAuthenticated === false;
204
+ var hasVisitorIdentityChange = isBeingAnonymous || isBeingAuthenticated;
205
+ var updateVisitorAndStatus = function (fsV, isLoadingValue) {
206
+ setState(function (s) { return (__assign(__assign({}, s), { fsModifications: fsV.fetchedModifications, status: __assign(__assign({}, s.status), { isLoading: isLoadingValue }), fsVisitor: fsV })); });
207
+ };
208
+ if (!fsVisitor) {
209
+ handleError(new Error('Trying to change the anonymous status of visitor that has not been initialized or does not exist.'));
210
+ }
211
+ else {
212
+ if (hasVisitorIdentityChange) {
213
+ fsVisitor.updateContext(context || {});
214
+ }
215
+ if (isBeingAnonymous) {
216
+ if (!fsVisitor.anonymousId) {
217
+ fsVisitor.anonymousId = id;
218
+ }
219
+ fsVisitor.unauthenticate(id).then(function () { return updateVisitorAndStatus(fsVisitor, false); });
220
+ }
221
+ else if (isBeingAuthenticated) {
222
+ fsVisitor.authenticate(id).then(function () { return updateVisitorAndStatus(fsVisitor, false); });
223
+ }
224
+ if (hasVisitorIdentityChange) {
225
+ updateVisitorAndStatus(fsVisitor, true);
226
+ }
227
+ }
228
+ previousIsAuthenticated.current = isAuthenticated;
229
+ return hasVisitorIdentityChange;
230
+ };
231
+ react_1.useEffect(function () {
232
+ var _a;
233
+ if (isFirstRun.current) {
234
+ isFirstRun.current = false;
235
+ return;
236
+ }
237
+ if (!id && !errorData.hasError) {
238
+ var errorMsg = 'No visitor id found. Make sure you\'ve set in prop something like this: visitorData={{id: "MY_VISITOR_ID_VALUE"}} inside the FlagshipProvider component.';
239
+ handleError(new Error(errorMsg));
240
+ return;
241
+ }
242
+ if (isServer) {
243
+ state.log.warn("useEffect triggered in a server environment, SDK stopped.");
244
+ return;
245
+ }
246
+ var previousBucketing = null;
247
+ var isVisitorIdentityChanged = updateVisitorIfIdentityChanged();
248
+ if (isVisitorIdentityChanged) {
249
+ return;
250
+ }
251
+ if (state.fsSdk && state.fsSdk.config.decisionMode === 'Bucketing') {
252
+ state.fsSdk.stopBucketingPolling();
253
+ state.log.info('Bucketing automatically stopped because a setting props from FlagshipProvider has changed. Bucketing will restart automatically if decisionMode is still "Bucketing"');
254
+ state.fsSdk.eventEmitter.removeAllListeners();
255
+ previousBucketing = ((_a = state.fsSdk.bucket) === null || _a === void 0 ? void 0 : _a.data) || null;
256
+ }
257
+ var fsSdk = initSdk(previousBucketing);
258
+ postInitSdkForClientSide(fsSdk);
259
+ }, [envId, id, isAuthenticated, JSON.stringify(configuration) + JSON.stringify(context)]);
260
+ react_1.useEffect(function () {
261
+ var isSdkReady = state.status.isVisitorDefined && state.status.firstInitSuccess !== null;
262
+ if (onUpdate) {
263
+ tryCatchCallback(function () {
264
+ var _a;
265
+ onUpdate({
266
+ status: __assign(__assign({}, state.status), { isSdkReady: isSdkReady }),
267
+ fsModifications: state.fsModifications,
268
+ config: __assign(__assign({}, state.config), (_a = state.fsVisitor) === null || _a === void 0 ? void 0 : _a.config)
269
+ }, state.fsVisitor);
270
+ });
271
+ }
272
+ }, [state === null || state === void 0 ? void 0 : state.config, state === null || state === void 0 ? void 0 : state.fsModifications, state.status]);
273
+ react_1.useEffect(function () {
274
+ if (onInitDone && !!firstInitSuccess && firstInitSuccess === lastRefresh && !isLoading) {
275
+ tryCatchCallback(onInitDone);
276
+ }
277
+ }, [state === null || state === void 0 ? void 0 : state.status]);
278
+ var handleDisplay = function () {
279
+ var isFirstInit = !fsVisitor || !firstInitSuccess;
280
+ if (isLoading && loadingComponent && isFirstInit && fetchNow) {
281
+ return react_1.default.createElement(react_1.default.Fragment, null, loadingComponent);
282
+ }
283
+ return react_1.default.createElement(react_1.default.Fragment, null, children);
284
+ };
285
+ return (react_1.default.createElement(FlagshipContext.Provider, { value: { state: state, setState: setState, hasError: errorData.hasError } }, enableSafeMode ? (react_1.default.createElement(FlagshipErrorBoundary_1.default, { customerChildren: children, onError: handleError, error: errorData.error, sdkSettings: configuration, handleDisplay: handleErrorDisplay, log: state.log }, handleDisplay())) : (handleDisplay())));
286
+ };
287
+ exports.FlagshipProvider.defaultProps = {
288
+ loadingComponent: undefined,
289
+ fetchNow: true,
290
+ activateNow: false,
291
+ decisionMode: 'API',
292
+ pollingInterval: undefined,
293
+ enableConsoleLogs: false,
294
+ enableErrorLayout: false,
295
+ enableSafeMode: false,
296
+ nodeEnv: 'production',
297
+ flagshipApi: undefined,
298
+ apiKey: undefined,
299
+ initialModifications: undefined,
300
+ onInitStart: function () {
301
+ },
302
+ onInitDone: function () {
303
+ },
304
+ onSavingModificationsInCache: function () {
305
+ },
306
+ onUpdate: function () {
307
+ }
308
+ };
309
+ exports.FlagshipConsumer = FlagshipContext.Consumer;
310
+ exports.default = FlagshipContext;
311
+ exports.useFlagshipContext = function () { return react_1.useContext(FlagshipContext); };
312
+ //# sourceMappingURL=FlagshipContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlagshipContext.js","sourceRoot":"","sources":["../src/FlagshipContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import React, { ErrorInfo } from 'react';
2
+ import { FsLogger } from '@flagship.io/js-sdk-logs';
3
+ import { FlagshipReactSdkConfig } from './FlagshipContext';
4
+ declare type State = {
5
+ error: Error | null;
6
+ errorInfo: ErrorInfo | null;
7
+ isCollapse: boolean;
8
+ };
9
+ export declare type HandleErrorBoundaryDisplay = (props: {
10
+ debugMode: boolean;
11
+ children: React.ReactNode;
12
+ isCollapse: boolean;
13
+ error: Error | null;
14
+ onClickCollapse(): void;
15
+ }) => React.ReactNode;
16
+ declare type Props = {
17
+ children: React.ReactNode;
18
+ handleDisplay?: HandleErrorBoundaryDisplay;
19
+ customerChildren: React.ReactNode;
20
+ onError(error: Error): void;
21
+ error: Error | null;
22
+ sdkSettings: FlagshipReactSdkConfig;
23
+ log: FsLogger;
24
+ };
25
+ declare class FlagshipErrorBoundary extends React.Component<Props, State> {
26
+ constructor(props: Props);
27
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
28
+ static getDerivedStateFromError(error: Error): {
29
+ error: Error;
30
+ };
31
+ componentDidUpdate(prevProps: Props, prevState: State): void;
32
+ render(): React.ReactNode;
33
+ }
34
+ export default FlagshipErrorBoundary;
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ var __assign = (this && this.__assign) || function () {
16
+ __assign = Object.assign || function(t) {
17
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
18
+ s = arguments[i];
19
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
20
+ t[p] = s[p];
21
+ }
22
+ return t;
23
+ };
24
+ return __assign.apply(this, arguments);
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ var react_1 = __importDefault(require("react"));
31
+ var ReactErrorBoundaryContainer_1 = __importDefault(require("./components/ReactErrorBoundaryContainer"));
32
+ var FlagshipErrorBoundary = (function (_super) {
33
+ __extends(FlagshipErrorBoundary, _super);
34
+ function FlagshipErrorBoundary(props) {
35
+ var _this = _super.call(this, props) || this;
36
+ _this.state = {
37
+ error: _this.props.error,
38
+ errorInfo: null,
39
+ isCollapse: false
40
+ };
41
+ return _this;
42
+ }
43
+ FlagshipErrorBoundary.prototype.componentDidCatch = function (error, errorInfo) {
44
+ var isSafeModeEnabled = this.props.sdkSettings.enableSafeMode;
45
+ if (isSafeModeEnabled) {
46
+ this.props.log.fatal("An error occurred. The SDK is switching into safe mode:\n" + error.stack);
47
+ this.setState({
48
+ error: error,
49
+ errorInfo: errorInfo
50
+ });
51
+ }
52
+ };
53
+ FlagshipErrorBoundary.getDerivedStateFromError = function (error) {
54
+ return {
55
+ error: error
56
+ };
57
+ };
58
+ FlagshipErrorBoundary.prototype.componentDidUpdate = function (prevProps, prevState) {
59
+ var isSafeModeEnabled = this.props.sdkSettings.enableSafeMode;
60
+ if (isSafeModeEnabled) {
61
+ if (this.state.error !== prevState.error) {
62
+ this.props.onError(this.state.error);
63
+ }
64
+ if (this.props.error !== prevProps.error) {
65
+ this.props.log.fatal("An error occurred. The SDK is switching into safe mode:\n" + this.props.error.stack);
66
+ }
67
+ }
68
+ };
69
+ FlagshipErrorBoundary.prototype.render = function () {
70
+ var _this = this;
71
+ var _a = this.state, error = _a.error, isCollapse = _a.isCollapse;
72
+ var _b = this.props, children = _b.children, handleDisplay = _b.handleDisplay, customerChildren = _b.customerChildren, errorProp = _b.error, _c = _b.sdkSettings, nodeEnv = _c.nodeEnv, enableErrorLayout = _c.enableErrorLayout, enableSafeMode = _c.enableSafeMode;
73
+ if (enableSafeMode && (errorProp || error)) {
74
+ var errorCopy = errorProp || error;
75
+ if (handleDisplay) {
76
+ return handleDisplay({
77
+ children: children,
78
+ debugMode: nodeEnv !== 'production' && !!enableErrorLayout,
79
+ isCollapse: isCollapse,
80
+ error: errorCopy,
81
+ onClickCollapse: function () {
82
+ _this.setState(__assign(__assign({}, _this.state), { isCollapse: !isCollapse }));
83
+ }
84
+ });
85
+ }
86
+ return (react_1.default.createElement(ReactErrorBoundaryContainer_1.default, { debugMode: nodeEnv !== 'production' && !!enableErrorLayout, isCollapse: isCollapse, error: errorCopy, onClickCollapse: function () {
87
+ _this.setState(__assign(__assign({}, _this.state), { isCollapse: !isCollapse }));
88
+ } }, customerChildren));
89
+ }
90
+ return children;
91
+ };
92
+ return FlagshipErrorBoundary;
93
+ }(react_1.default.Component));
94
+ exports.default = FlagshipErrorBoundary;
95
+ //# sourceMappingURL=FlagshipErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlagshipErrorBoundary.js","sourceRoot":"","sources":["../src/FlagshipErrorBoundary.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { FsModifsRequestedList, GetModificationsOutput, GetModificationInfoOutput, HitShape } from '@flagship.io/js-sdk';
2
+ import { FsStatus } from './FlagshipContext';
3
+ declare type ModificationKeys = Array<string>;
4
+ declare type UseFsActivateOutput = void;
5
+ declare type UseFsModificationsOutput = GetModificationsOutput;
6
+ export declare const useFsActivate: (modificationKeys: ModificationKeys, applyEffectScope?: any[]) => UseFsActivateOutput;
7
+ export declare const useFsModifications: (modificationsRequested: FsModifsRequestedList, activateAllModifications?: boolean) => UseFsModificationsOutput;
8
+ export declare type UseFlagshipParams = {
9
+ modifications: {
10
+ requested: FsModifsRequestedList;
11
+ activateAll?: boolean;
12
+ };
13
+ };
14
+ export declare type UseFlagshipOutput = {
15
+ modifications: GetModificationsOutput;
16
+ getModificationInfo: (key: string) => Promise<null | GetModificationInfoOutput>;
17
+ synchronizeModifications(activate: boolean): Promise<number>;
18
+ startBucketingPolling(): {
19
+ success: boolean;
20
+ reason?: string;
21
+ };
22
+ stopBucketingPolling(): {
23
+ success: boolean;
24
+ reason?: string;
25
+ };
26
+ status: FsStatus;
27
+ hit: {
28
+ send(hit: HitShape): void;
29
+ sendMultiple(hits: HitShape[]): void;
30
+ };
31
+ };
32
+ export declare const useFlagship: (options?: UseFlagshipParams | undefined) => UseFlagshipOutput;
33
+ export {};