@flagship.io/react-sdk 3.2.2-alpha.2 → 3.2.3-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.
@@ -1,2 +1,1060 @@
1
- (()=>{"use strict";var t={443:(t,e,i)=>{i.d(e,{e:()=>l,X:()=>u});var a=i(689),o=i.n(a),n=i(4),s=i(370);const r={status:{isLoading:!0,isSdkReady:!1}},l=(0,a.createContext)({state:{...r}}),u=({children:t,envId:e,apiKey:i,decisionMode:u=n.DecisionMode.DECISION_API,visitorData:d,onInitStart:c,onInitDone:f,loadingComponent:g,statusChangedCallback:v,onBucketingUpdated:y,onUpdate:h,initialCampaigns:p,initialModifications:m,initialFlagsData:C,fetchFlagsOnBucketingUpdated:F,hitDeduplicationTime:M=2,fetchNow:I=!0,language:N=1,sdkVersion:S="3.2.2-alpha.2",...x})=>{let k=new Map;C&&C.forEach?C.forEach((t=>{k.set(t.key,t)})):m&&m.forEach?m.forEach((t=>{k.set(t.key,t)})):p&&(k=(0,s.B$)(p));const[A,V]=(0,a.useState)({...r,modifications:k}),[R,E]=(0,a.useState)();function w(t){const e={isSdkReady:t.isSdkReady,isLoading:t.isLoading,isVisitorDefined:!!t.fsVisitor,lastRefresh:(new Date).toISOString()};return V((i=>(i.status.firstInitSuccess||(e.firstInitSuccess=(new Date).toISOString()),{...i,visitor:t.fsVisitor,modifications:t.fsVisitor.modifications,config:n.Flagship.getConfig(),status:{...i.status,...e}}))),e}(0,a.useRef)().current=A,(0,s.N7)((()=>{var t;F&&(null===(t=A.visitor)||void 0===t||t.fetchFlags())}),[R]),(0,s.N7)((()=>{var t;d&&(!A.visitor||A.visitor.visitorId!==d.id&&(!d.isAuthenticated||d.isAuthenticated&&A.visitor.anonymousId)?b():(d.hasConsented!==A.visitor.hasConsented&&A.visitor.setConsent(null===(t=d.hasConsented)||void 0===t||t),A.visitor.updateContext(d.context),!A.visitor.anonymousId&&d.isAuthenticated&&A.visitor.authenticate(d.id),A.visitor.anonymousId&&!d.isAuthenticated&&A.visitor.unauthenticate(),A.visitor.fetchFlags()))}),[JSON.stringify(d)]),(0,a.useEffect)((()=>{P()}),[e,i,u]);const b=()=>{if(!d)return;const t=n.Flagship.newVisitor({visitorId:d.id,context:d.context,isAuthenticated:d.isAuthenticated,hasConsented:d.hasConsented,initialCampaigns:p,initialModifications:m,initialFlagsData:C});null==t||t.on("ready",(e=>{((t,e)=>{if(e)return void(0,s.H)(n.Flagship.getConfig(),e.message||e,"onReady");const i=w({fsVisitor:t,isSdkReady:!0,isLoading:!1});h&&h({fsModifications:t.modifications,config:n.Flagship.getConfig(),status:i})})(t,e)})),I||w({fsVisitor:t,isSdkReady:!0,isLoading:!1})},L=t=>{switch(v&&v(t),t){case n.FlagshipStatus.STARTING:t===n.FlagshipStatus.STARTING&&c&&c();break;case n.FlagshipStatus.READY_PANIC_ON:case n.FlagshipStatus.READY:f&&f(),b();break;case n.FlagshipStatus.NOT_INITIALIZED:V((t=>({...t,status:{...t.status,isLoading:!1},config:n.Flagship.getConfig()})))}},D=t=>{y&&y(t),E(t)},P=()=>{n.Flagship.start(e,i,{decisionMode:u,fetchNow:I,statusChangedCallback:L,onBucketingUpdated:D,hitDeduplicationTime:M,language:N,sdkVersion:S,...x})};return o().createElement(l.Provider,{value:{state:A,setState:V}},(()=>{const e=!A.visitor;return A.status.isLoading&&g&&e&&I?o().createElement(o().Fragment,null,g):o().createElement(o().Fragment,null,t)})())}},927:(t,e,i)=>{i.d(e,{UM:()=>M,pc:()=>F,Nf:()=>C,nr:()=>y,_X:()=>p,GW:()=>v});var a=i(689),o=i(4),n=i.n(o),s=i(443),r=i(370);const l="flagship Visitor not initialized.",u="fsVisitor not initialized, returns default value";function d(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class c{constructor(t,e,i){d(this,"defaultValue",void 0),d(this,"flagsData",void 0),d(this,"key",void 0),d(this,"flag",void 0),i||(0,r.yN)(n().getConfig(),l,"GetFlag"),this.defaultValue=t,this.key=e,this.flag=null==i?void 0:i.get(e)}NotSameType(){var t;return null!==this.defaultValue&&void 0!==this.defaultValue&&!(0,r.Wi)(null===(t=this.flag)||void 0===t?void 0:t.value,this.defaultValue)}getValue(){return this.flag?this.NotSameType()?((0,r.PN)(n().getConfig(),(0,r.gB)("Flag for key {0} has a different type. Default value is returned.",this.key),"getValue"),this.defaultValue):this.flag.value:((0,r.yN)(n().getConfig(),l,"getValue"),this.defaultValue)}exists(){return this.flag?!!(this.flag.campaignId&&this.flag.variationId&&this.flag.variationGroupId):((0,r.yN)(n().getConfig(),l,"exists"),!1)}userExposed(){return this.flag||(0,r.yN)(n().getConfig(),l,"userExposed"),Promise.resolve()}visitorExposed(){return this.flag||(0,r.yN)(n().getConfig(),l,"visitorExposed"),Promise.resolve()}get metadata(){const t="metadata";return this.flag?this.NotSameType()?((0,r.PN)(n().getConfig(),(0,r.gB)("Flag for key {0} has a different type with defaultValue, an empty metadata object is returned",this.key),t),o.FlagMetadata.Empty()):new o.FlagMetadata({campaignId:this.flag.campaignId,variationGroupId:this.flag.variationGroupId,variationId:this.flag.variationId,isReference:!!this.flag.isReference,campaignType:this.flag.campaignType,slug:this.flag.slug}):((0,r.yN)(n().getConfig(),l,t),o.FlagMetadata.Empty())}}const f=(t,e)=>"object"==typeof t&&"object"==typeof e&&Array.isArray(t)===Array.isArray(e)||typeof t==typeof e,g=t=>{const{visitor:e,params:i,activateAll:a,state:o,functionName:n,config:s}=t;if(e)return e.getModificationsSync(i,a);const l=!o.status.isSdkReady&&!!o.modifications&&o.modifications.size>0,d={};return l?(i.forEach((t=>{var e;const i=null===(e=o.modifications)||void 0===e?void 0:e.get(t.key);i&&f(null==i?void 0:i.value,t.defaultValue)?d[t.key]=i.value:d[t.key]=t.defaultValue})),d):((0,r.yN)(s,u,n),i.forEach((t=>{d[t.key]=t.defaultValue})),d)},v=(t,e)=>{const{state:i}=(0,a.useContext)(s.e),{visitor:o,config:n}=i;return g({functionName:"useFsModifications",state:i,visitor:o,config:n,params:t,activateAll:e})},y=t=>{var e;const{state:i}=(0,a.useContext)(s.e),{visitor:o,config:n}=i;if(o)return o.getModificationSync(t);const l=null===(e=i.modifications)||void 0===e?void 0:e.get(t.key);return!i.status.isSdkReady&&l&&f(null==l?void 0:l.value,t.defaultValue)?l.value:((0,r.yN)(n,u,"useFsModifications"),t.defaultValue)},h=t=>{var e;const{key:i,visitor:a,state:o}=t;if(a)return a.getModificationInfoSync(i);const n=null===(e=o.modifications)||void 0===e?void 0:e.get(i);return!o.status.isSdkReady&&n?n:null},p=t=>{const{state:e}=(0,a.useContext)(s.e),{visitor:i}=e;return h({key:t,state:e,visitor:i})},m=async(t,e,i,a)=>{try{if(!i)return void(0,r.yN)(a,l,e);await i.activateModifications(t)}catch(t){(0,r.yN)(a,t.message||t,e)}},C=(t,e)=>{const{state:i}=(0,a.useContext)(s.e),{visitor:o}=i;return o?o.getFlag(t,e):new c(e,t,i.modifications)},F=async t=>{const{state:e}=(0,a.useContext)(s.e),{visitor:i,config:o}=e;await m(t,"useFsModifications",i,o)},M=()=>{const{state:t}=(0,a.useContext)(s.e),{visitor:e,config:i}=t;let o=null==e?void 0:e.getModificationsArray();return!t.status.isSdkReady&&t.modifications&&(o=Array.from(t.modifications,(([t,e])=>e))),{visitorId:null==e?void 0:e.visitorId,anonymousId:null==e?void 0:e.anonymousId,context:{...null==e?void 0:e.context},hasConsented:null==e?void 0:e.hasConsented,setConsent:function(t){e?e.setConsent(t):(0,r.yN)(i,l,"setConsent")},updateContext:t=>{e?(e.clearContext(),e.updateContext(t)):(0,r.H)(i,l,"updateContext")},clearContext:()=>{e?e.clearContext():(0,r.H)(i,l,"cleanContext")},authenticate:t=>{e?e.authenticate(t):(0,r.H)(i,l,"authenticate")},unauthenticate:()=>{e?e.unauthenticate():(0,r.H)(i,l,"unauthenticate")},status:t.status,activateModification:async t=>{await m(t,"activateModification",e,i)},synchronizeModifications:async()=>{e?await e.synchronizeModifications():(0,r.yN)(i,l,"synchronizeModifications")},getModifications:(a,o)=>g({functionName:"getModifications",state:t,visitor:e,config:i,params:a,activateAll:o}),modifications:o||[],flagsData:(null==e?void 0:e.getFlagsDataArray())||[],getModificationInfo:i=>h({key:i,state:t,visitor:e}),hit:{send:t=>e?e.sendHit(t):((0,r.H)(i,l,"sendHit"),Promise.resolve()),sendMultiple:t=>e?e.sendHits(t):((0,r.H)(i,l,"sendHits"),Promise.resolve())},getFlag:function(i,a){return e?e.getFlag(i,a):new c(a,i,t.modifications)},fetchFlags:function(){return e?e.fetchFlags():((0,r.yN)(i,l,"fetchFlags"),Promise.resolve())},close:async function(){await n().close()}}}},370:(t,e,i)=>{i.d(e,{B$:()=>l,H:()=>n,N7:()=>u,PN:()=>s,Wi:()=>d,gB:()=>c,yN:()=>r});var a=i(4),o=i(689);function n(t,e,i){t&&t.logManager&&"function"==typeof t.logManager.error&&t.logLevel&&!(t.logLevel<a.LogLevel.ERROR)&&t.logManager.error(e,i)}function s(t,e,i){t&&t.logManager&&"function"==typeof t.logManager.info&&t.logLevel&&!(t.logLevel<a.LogLevel.INFO)&&t.logManager.info(e,i)}function r(t,e,i){t&&t.logManager&&"function"==typeof t.logManager.warning&&t.logLevel&&!(t.logLevel<a.LogLevel.WARNING)&&t.logManager.warning(e,i)}const l=t=>{const e=new Map;return t&&Array.isArray(t)?(t.forEach((t=>{const i=t.variation.modifications.value;for(const a in i){const o=i[a];e.set(a,{key:a,campaignId:t.id,variationGroupId:t.variationGroupId,variationId:t.variation.id,isReference:t.variation.reference,value:o})}})),e):e};function u(t,e){const i=(0,o.useRef)(!0);(0,o.useEffect)((()=>{if(!i.current)return"function"==typeof t?t():void 0;i.current=!1}),e)}function d(t,e){return typeof t==typeof e&&("object"!=typeof t||"object"!=typeof e||Array.isArray(t)===Array.isArray(e))}function c(t,...e){let i=t;for(let t=0;t<e.length;t++){const a=e[t];i=i.replace(new RegExp(`\\{${t}\\}`,"g"),a)}return i}},4:t=>{t.exports=require("@flagship.io/js-sdk")},689:t=>{t.exports=require("react")}},e={};function i(a){var o=e[a];if(void 0!==o)return o.exports;var n=e[a]={exports:{}};return t[a](n,n.exports,i),n.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var a in e)i.o(e,a)&&!i.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var a={};(()=>{i.r(a),i.d(a,{FlagshipContext:()=>t.e,FlagshipProvider:()=>t.X,default:()=>s,useFlagship:()=>n.UM,useFsActivate:()=>n.pc,useFsFlag:()=>n.Nf,useFsModification:()=>n.nr,useFsModificationInfo:()=>n._X,useFsModifications:()=>n.GW});var t=i(443),e=i(4),o={};for(const t in e)["default","FlagshipContext","FlagshipProvider"].indexOf(t)<0&&(o[t]=()=>e[t]);i.d(a,o);var n=i(927);const s=t.X})(),module.exports=a})();
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ /******/ var __webpack_modules__ = ({
4
+
5
+ /***/ "./src/Flag.ts":
6
+ /*!*********************!*\
7
+ !*** ./src/Flag.ts ***!
8
+ \*********************/
9
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10
+
11
+ __webpack_require__.r(__webpack_exports__);
12
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13
+ /* harmony export */ "Flag": () => (/* binding */ Flag)
14
+ /* harmony export */ });
15
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @flagship.io/js-sdk */ "@flagship.io/js-sdk");
16
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__);
17
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
18
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "./src/utils.tsx");
19
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+
21
+
22
+
23
+
24
+ class Flag {
25
+ constructor(defaultValue, key, flagsData) {
26
+ _defineProperty(this, "defaultValue", void 0);
27
+
28
+ _defineProperty(this, "flagsData", void 0);
29
+
30
+ _defineProperty(this, "key", void 0);
31
+
32
+ _defineProperty(this, "flag", void 0);
33
+
34
+ if (!flagsData) {
35
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.logWarn)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default().getConfig(), _constants__WEBPACK_IMPORTED_MODULE_2__.noVisitorMessage, 'GetFlag');
36
+ }
37
+
38
+ this.defaultValue = defaultValue;
39
+ this.key = key;
40
+ this.flag = flagsData === null || flagsData === void 0 ? void 0 : flagsData.get(key);
41
+ }
42
+
43
+ NotSameType() {
44
+ var _this$flag;
45
+
46
+ return this.defaultValue !== null && this.defaultValue !== undefined && !(0,_utils__WEBPACK_IMPORTED_MODULE_1__.hasSameType)((_this$flag = this.flag) === null || _this$flag === void 0 ? void 0 : _this$flag.value, this.defaultValue);
47
+ }
48
+
49
+ getValue() {
50
+ if (!this.flag) {
51
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.logWarn)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default().getConfig(), _constants__WEBPACK_IMPORTED_MODULE_2__.noVisitorMessage, 'getValue');
52
+ return this.defaultValue;
53
+ }
54
+
55
+ if (this.NotSameType()) {
56
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.logInfo)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default().getConfig(), (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sprintf)(_constants__WEBPACK_IMPORTED_MODULE_2__.GET_FLAG_CAST_ERROR, this.key), 'getValue');
57
+ return this.defaultValue;
58
+ }
59
+
60
+ return this.flag.value;
61
+ }
62
+
63
+ exists() {
64
+ if (!this.flag) {
65
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.logWarn)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default().getConfig(), _constants__WEBPACK_IMPORTED_MODULE_2__.noVisitorMessage, 'exists');
66
+ return false;
67
+ }
68
+
69
+ return !!(this.flag.campaignId && this.flag.variationId && this.flag.variationGroupId);
70
+ }
71
+
72
+ userExposed() {
73
+ if (!this.flag) {
74
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.logWarn)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default().getConfig(), _constants__WEBPACK_IMPORTED_MODULE_2__.noVisitorMessage, 'userExposed');
75
+ }
76
+
77
+ return Promise.resolve();
78
+ }
79
+
80
+ visitorExposed() {
81
+ if (!this.flag) {
82
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.logWarn)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default().getConfig(), _constants__WEBPACK_IMPORTED_MODULE_2__.noVisitorMessage, 'visitorExposed');
83
+ }
84
+
85
+ return Promise.resolve();
86
+ }
87
+
88
+ get metadata() {
89
+ const functionName = 'metadata';
90
+
91
+ if (!this.flag) {
92
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.logWarn)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default().getConfig(), _constants__WEBPACK_IMPORTED_MODULE_2__.noVisitorMessage, functionName);
93
+ return _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__.FlagMetadata.Empty();
94
+ }
95
+
96
+ if (this.NotSameType()) {
97
+ (0,_utils__WEBPACK_IMPORTED_MODULE_1__.logInfo)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default().getConfig(), (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sprintf)(_constants__WEBPACK_IMPORTED_MODULE_2__.GET_METADATA_CAST_ERROR, this.key), functionName);
98
+ return _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__.FlagMetadata.Empty();
99
+ }
100
+
101
+ return new _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__.FlagMetadata({
102
+ campaignId: this.flag.campaignId,
103
+ variationGroupId: this.flag.variationGroupId,
104
+ variationId: this.flag.variationId,
105
+ isReference: !!this.flag.isReference,
106
+ campaignType: this.flag.campaignType,
107
+ slug: this.flag.slug
108
+ });
109
+ }
110
+
111
+ }
112
+
113
+ /***/ }),
114
+
115
+ /***/ "./src/FlagshipContext.tsx":
116
+ /*!*********************************!*\
117
+ !*** ./src/FlagshipContext.tsx ***!
118
+ \*********************************/
119
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
120
+
121
+ __webpack_require__.r(__webpack_exports__);
122
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
123
+ /* harmony export */ "FlagshipContext": () => (/* binding */ FlagshipContext),
124
+ /* harmony export */ "FlagshipProvider": () => (/* binding */ FlagshipProvider)
125
+ /* harmony export */ });
126
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
127
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
128
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @flagship.io/js-sdk */ "@flagship.io/js-sdk");
129
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__);
130
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./src/utils.tsx");
131
+ /* harmony import */ var _sdkVersion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sdkVersion */ "./src/sdkVersion.ts");
132
+ 'use client'; // eslint-disable-next-line no-use-before-define
133
+
134
+
135
+
136
+
137
+
138
+ const initStat = {
139
+ status: {
140
+ isLoading: true,
141
+ isSdkReady: false
142
+ }
143
+ };
144
+ const FlagshipContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({
145
+ state: { ...initStat
146
+ }
147
+ });
148
+ const FlagshipProvider = ({
149
+ children,
150
+ envId,
151
+ apiKey,
152
+ decisionMode = _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.DecisionMode.DECISION_API,
153
+ visitorData,
154
+ onInitStart,
155
+ onInitDone,
156
+ loadingComponent,
157
+ statusChangedCallback,
158
+ onBucketingUpdated,
159
+ onUpdate,
160
+ initialCampaigns,
161
+ initialModifications,
162
+ initialFlagsData,
163
+ fetchFlagsOnBucketingUpdated,
164
+ hitDeduplicationTime = 2,
165
+ fetchNow = true,
166
+ language = 1,
167
+ sdkVersion = _sdkVersion__WEBPACK_IMPORTED_MODULE_2__.version,
168
+ ...props
169
+ }) => {
170
+ let modifications = new Map();
171
+
172
+ if (initialFlagsData && initialFlagsData.forEach) {
173
+ initialFlagsData.forEach(flag => {
174
+ modifications.set(flag.key, flag);
175
+ });
176
+ } else if (initialModifications && initialModifications.forEach) {
177
+ initialModifications.forEach(modification => {
178
+ modifications.set(modification.key, modification);
179
+ });
180
+ } else if (initialCampaigns) {
181
+ modifications = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getModificationsFromCampaigns)(initialCampaigns);
182
+ }
183
+
184
+ const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({ ...initStat,
185
+ modifications
186
+ });
187
+ const [lastModified, setLastModified] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();
188
+ const stateRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
189
+ stateRef.current = state;
190
+ (0,_utils__WEBPACK_IMPORTED_MODULE_3__.useNonInitialEffect)(() => {
191
+ if (fetchFlagsOnBucketingUpdated) {
192
+ var _state$visitor;
193
+
194
+ (_state$visitor = state.visitor) === null || _state$visitor === void 0 ? void 0 : _state$visitor.fetchFlags();
195
+ }
196
+ }, [lastModified]);
197
+ (0,_utils__WEBPACK_IMPORTED_MODULE_3__.useNonInitialEffect)(() => {
198
+ updateVisitor();
199
+ }, [JSON.stringify(visitorData)]);
200
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
201
+ initSdk();
202
+ }, [envId, apiKey, decisionMode]);
203
+
204
+ function initializeState(param) {
205
+ const newStatus = {
206
+ isSdkReady: param.isSdkReady,
207
+ isLoading: param.isLoading,
208
+ isVisitorDefined: !!param.fsVisitor,
209
+ lastRefresh: new Date().toISOString()
210
+ };
211
+ setState(currentState => {
212
+ if (!currentState.status.firstInitSuccess) {
213
+ newStatus.firstInitSuccess = new Date().toISOString();
214
+ }
215
+
216
+ return { ...currentState,
217
+ visitor: param.fsVisitor,
218
+ modifications: param.fsVisitor.modifications,
219
+ config: _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.Flagship.getConfig(),
220
+ status: { ...currentState.status,
221
+ ...newStatus
222
+ }
223
+ };
224
+ });
225
+ return newStatus;
226
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
227
+
228
+
229
+ const onVisitorReady = (fsVisitor, error) => {
230
+ if (error) {
231
+ (0,_utils__WEBPACK_IMPORTED_MODULE_3__.logError)(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.Flagship.getConfig(), error.message || error, 'onReady');
232
+ return;
233
+ }
234
+
235
+ const newStatus = initializeState({
236
+ fsVisitor,
237
+ isSdkReady: true,
238
+ isLoading: false
239
+ });
240
+
241
+ if (onUpdate) {
242
+ onUpdate({
243
+ fsModifications: fsVisitor.modifications,
244
+ config: _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.Flagship.getConfig(),
245
+ status: newStatus
246
+ });
247
+ }
248
+ };
249
+
250
+ function updateVisitor() {
251
+ if (!visitorData) {
252
+ return;
253
+ }
254
+
255
+ if (!state.visitor || state.visitor.visitorId !== visitorData.id && (!visitorData.isAuthenticated || visitorData.isAuthenticated && state.visitor.anonymousId)) {
256
+ createVisitor();
257
+ return;
258
+ }
259
+
260
+ if (visitorData.hasConsented !== state.visitor.hasConsented) {
261
+ var _visitorData$hasConse;
262
+
263
+ state.visitor.setConsent((_visitorData$hasConse = visitorData.hasConsented) !== null && _visitorData$hasConse !== void 0 ? _visitorData$hasConse : true);
264
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
265
+
266
+
267
+ state.visitor.updateContext(visitorData.context);
268
+
269
+ if (!state.visitor.anonymousId && visitorData.isAuthenticated) {
270
+ state.visitor.authenticate(visitorData.id);
271
+ }
272
+
273
+ if (state.visitor.anonymousId && !visitorData.isAuthenticated) {
274
+ state.visitor.unauthenticate();
275
+ }
276
+
277
+ state.visitor.fetchFlags();
278
+ }
279
+
280
+ const createVisitor = () => {
281
+ if (!visitorData) {
282
+ return;
283
+ }
284
+
285
+ const fsVisitor = _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.Flagship.newVisitor({
286
+ visitorId: visitorData.id,
287
+ context: visitorData.context,
288
+ isAuthenticated: visitorData.isAuthenticated,
289
+ hasConsented: visitorData.hasConsented,
290
+ initialCampaigns,
291
+ initialModifications,
292
+ initialFlagsData
293
+ });
294
+ fsVisitor === null || fsVisitor === void 0 ? void 0 : fsVisitor.on('ready', error => {
295
+ onVisitorReady(fsVisitor, error);
296
+ });
297
+
298
+ if (!fetchNow) {
299
+ initializeState({
300
+ fsVisitor,
301
+ isSdkReady: true,
302
+ isLoading: false
303
+ });
304
+ }
305
+ };
306
+
307
+ const statusChanged = status => {
308
+ if (statusChangedCallback) {
309
+ statusChangedCallback(status);
310
+ }
311
+
312
+ switch (status) {
313
+ case _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.FlagshipStatus.STARTING:
314
+ if (status === _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.FlagshipStatus.STARTING && onInitStart) {
315
+ onInitStart();
316
+ }
317
+
318
+ break;
319
+
320
+ case _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.FlagshipStatus.READY_PANIC_ON:
321
+ case _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.FlagshipStatus.READY:
322
+ if (onInitDone) {
323
+ onInitDone();
324
+ }
325
+
326
+ createVisitor();
327
+ break;
328
+
329
+ case _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.FlagshipStatus.NOT_INITIALIZED:
330
+ setState(prev => ({ ...prev,
331
+ status: { ...prev.status,
332
+ isLoading: false
333
+ },
334
+ config: _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.Flagship.getConfig()
335
+ }));
336
+ break;
337
+ }
338
+ };
339
+
340
+ const onBucketingLastModified = lastUpdate => {
341
+ if (onBucketingUpdated) {
342
+ onBucketingUpdated(lastUpdate);
343
+ }
344
+
345
+ setLastModified(lastUpdate);
346
+ };
347
+
348
+ const initSdk = () => {
349
+ _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__.Flagship.start(envId, apiKey, {
350
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
351
+ decisionMode: decisionMode,
352
+ fetchNow,
353
+ statusChangedCallback: statusChanged,
354
+ onBucketingUpdated: onBucketingLastModified,
355
+ hitDeduplicationTime,
356
+ language,
357
+ sdkVersion,
358
+ fetchFlagsBufferingTime: 5,
359
+ ...props
360
+ });
361
+ };
362
+
363
+ const handleDisplay = () => {
364
+ const isFirstInit = !state.visitor;
365
+
366
+ if (state.status.isLoading && loadingComponent && isFirstInit && fetchNow) {
367
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, loadingComponent);
368
+ }
369
+
370
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, children);
371
+ };
372
+
373
+ return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FlagshipContext.Provider, {
374
+ value: {
375
+ state,
376
+ setState
377
+ }
378
+ }, handleDisplay());
379
+ };
380
+
381
+ /***/ }),
382
+
383
+ /***/ "./src/FlagshipHooks.tsx":
384
+ /*!*******************************!*\
385
+ !*** ./src/FlagshipHooks.tsx ***!
386
+ \*******************************/
387
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
388
+
389
+ __webpack_require__.r(__webpack_exports__);
390
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
391
+ /* harmony export */ "useFlagship": () => (/* binding */ useFlagship),
392
+ /* harmony export */ "useFsActivate": () => (/* binding */ useFsActivate),
393
+ /* harmony export */ "useFsFlag": () => (/* binding */ useFsFlag),
394
+ /* harmony export */ "useFsModification": () => (/* binding */ useFsModification),
395
+ /* harmony export */ "useFsModificationInfo": () => (/* binding */ useFsModificationInfo),
396
+ /* harmony export */ "useFsModifications": () => (/* binding */ useFsModifications)
397
+ /* harmony export */ });
398
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
399
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
400
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @flagship.io/js-sdk */ "@flagship.io/js-sdk");
401
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__);
402
+ /* harmony import */ var _FlagshipContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FlagshipContext */ "./src/FlagshipContext.tsx");
403
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils.tsx");
404
+ /* harmony import */ var _Flag__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Flag */ "./src/Flag.ts");
405
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ "./src/constants.ts");
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+ const checkType = (value, defaultValue) => typeof value === 'object' && typeof defaultValue === 'object' && Array.isArray(value) === Array.isArray(defaultValue) || typeof value === typeof defaultValue;
414
+
415
+ const fsModificationsSync = args => {
416
+ const {
417
+ visitor,
418
+ params,
419
+ activateAll,
420
+ state,
421
+ functionName,
422
+ config
423
+ } = args;
424
+
425
+ if (visitor) {
426
+ return visitor.getModificationsSync(params, activateAll);
427
+ }
428
+
429
+ const check = !state.status.isSdkReady && !!state.modifications && state.modifications.size > 0;
430
+ const flags = {};
431
+
432
+ if (check) {
433
+ params.forEach(item => {
434
+ var _state$modifications;
435
+
436
+ const modification = (_state$modifications = state.modifications) === null || _state$modifications === void 0 ? void 0 : _state$modifications.get(item.key);
437
+
438
+ if (modification && checkType(modification === null || modification === void 0 ? void 0 : modification.value, item.defaultValue)) {
439
+ flags[item.key] = modification.value;
440
+ } else {
441
+ flags[item.key] = item.defaultValue;
442
+ }
443
+ });
444
+ return flags;
445
+ }
446
+
447
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logWarn)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorDefault, functionName);
448
+ params.forEach(item => {
449
+ flags[item.key] = item.defaultValue;
450
+ });
451
+ return flags;
452
+ };
453
+ /**
454
+ * Retrieve a modification value by its key. If no modification match the given key or if the stored value type and default value type do not match, default value will be returned.
455
+ * @deprecated use useFsFlag instead
456
+ */
457
+
458
+
459
+ const useFsModifications = (params, activateAll) => {
460
+ const {
461
+ state
462
+ } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_FlagshipContext__WEBPACK_IMPORTED_MODULE_4__.FlagshipContext);
463
+ const {
464
+ visitor,
465
+ config
466
+ } = state;
467
+ const functionName = 'useFsModifications';
468
+ return fsModificationsSync({
469
+ functionName,
470
+ state,
471
+ visitor,
472
+ config,
473
+ params,
474
+ activateAll
475
+ });
476
+ };
477
+ /**
478
+ * Retrieve a modification value by its key. If no modification match the given key or if the stored value type and default value type do not match, default value will be returned.
479
+ * @deprecated use useFsFlag instead
480
+ */
481
+
482
+ const useFsModification = params => {
483
+ var _state$modifications2;
484
+
485
+ const {
486
+ state
487
+ } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_FlagshipContext__WEBPACK_IMPORTED_MODULE_4__.FlagshipContext);
488
+ const {
489
+ visitor,
490
+ config
491
+ } = state;
492
+ const functionName = 'useFsModifications';
493
+
494
+ if (visitor) {
495
+ return visitor.getModificationSync(params);
496
+ }
497
+
498
+ const modification = (_state$modifications2 = state.modifications) === null || _state$modifications2 === void 0 ? void 0 : _state$modifications2.get(params.key);
499
+
500
+ if (!state.status.isSdkReady && modification && checkType(modification === null || modification === void 0 ? void 0 : modification.value, params.defaultValue)) {
501
+ return modification.value;
502
+ }
503
+
504
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logWarn)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorDefault, functionName);
505
+ return params.defaultValue;
506
+ };
507
+
508
+ const fsModificationInfoSync = args => {
509
+ var _state$modifications3;
510
+
511
+ const {
512
+ key,
513
+ visitor,
514
+ state
515
+ } = args;
516
+
517
+ if (visitor) {
518
+ return visitor.getModificationInfoSync(key);
519
+ }
520
+
521
+ const modification = (_state$modifications3 = state.modifications) === null || _state$modifications3 === void 0 ? void 0 : _state$modifications3.get(key);
522
+
523
+ if (!state.status.isSdkReady && modification) {
524
+ return modification;
525
+ }
526
+
527
+ return null;
528
+ };
529
+ /**
530
+ * Get the campaign modification information value matching the given key.
531
+ * @param {string} key key which identify the modification.
532
+ * @deprecated use useFsFlag instead
533
+ */
534
+
535
+
536
+ const useFsModificationInfo = key => {
537
+ const {
538
+ state
539
+ } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_FlagshipContext__WEBPACK_IMPORTED_MODULE_4__.FlagshipContext);
540
+ const {
541
+ visitor
542
+ } = state;
543
+ return fsModificationInfoSync({
544
+ key,
545
+ state,
546
+ visitor
547
+ });
548
+ };
549
+
550
+ const fsActivate = async (params, functionName, visitor, config) => {
551
+ try {
552
+ if (!visitor) {
553
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logWarn)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, functionName);
554
+ return;
555
+ }
556
+
557
+ await visitor.activateModifications(params); // eslint-disable-next-line @typescript-eslint/no-explicit-any
558
+ } catch (error) {
559
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logWarn)(config, error.message || error, functionName);
560
+ }
561
+ };
562
+ /**
563
+ * This hook returns a flag object by its key. If no flag match the given key an empty flag will be returned.
564
+ * @param key
565
+ * @param defaultValue
566
+ * @returns
567
+ */
568
+
569
+
570
+ const useFsFlag = (key, defaultValue) => {
571
+ const {
572
+ state
573
+ } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_FlagshipContext__WEBPACK_IMPORTED_MODULE_4__.FlagshipContext);
574
+ const {
575
+ visitor
576
+ } = state;
577
+
578
+ if (!visitor) {
579
+ return new _Flag__WEBPACK_IMPORTED_MODULE_5__.Flag(defaultValue, key, state.modifications);
580
+ }
581
+
582
+ return visitor.getFlag(key, defaultValue);
583
+ };
584
+ /**
585
+ * Report this user has seen this modification. Report this user has seen these modifications.
586
+ * @param params
587
+ * @deprecated use useFsFlag instead
588
+ * @returns
589
+ */
590
+
591
+ const useFsActivate = async params => {
592
+ const {
593
+ state
594
+ } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_FlagshipContext__WEBPACK_IMPORTED_MODULE_4__.FlagshipContext);
595
+ const {
596
+ visitor,
597
+ config
598
+ } = state;
599
+ const functionName = 'useFsModifications';
600
+ await fsActivate(params, functionName, visitor, config);
601
+ };
602
+ const useFlagship = () => {
603
+ const {
604
+ state
605
+ } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_FlagshipContext__WEBPACK_IMPORTED_MODULE_4__.FlagshipContext);
606
+ const {
607
+ visitor,
608
+ config
609
+ } = state;
610
+
611
+ const fsUpdateContext = context => {
612
+ const functionName = 'updateContext';
613
+
614
+ if (!visitor) {
615
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logError)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, functionName);
616
+ return;
617
+ }
618
+
619
+ visitor.clearContext();
620
+ visitor.updateContext(context);
621
+ };
622
+
623
+ const fsClearContext = () => {
624
+ const functionName = 'cleanContext';
625
+
626
+ if (!visitor) {
627
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logError)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, functionName);
628
+ return;
629
+ }
630
+
631
+ visitor.clearContext();
632
+ };
633
+
634
+ const fsAuthenticate = visitorId => {
635
+ const functionName = 'authenticate';
636
+
637
+ if (!visitor) {
638
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logError)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, functionName);
639
+ return;
640
+ }
641
+
642
+ visitor.authenticate(visitorId);
643
+ };
644
+
645
+ const fsUnauthenticate = () => {
646
+ const functionName = 'unauthenticate';
647
+
648
+ if (!visitor) {
649
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logError)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, functionName);
650
+ return;
651
+ }
652
+
653
+ visitor.unauthenticate();
654
+ };
655
+ /**
656
+ * Send a Hit to Flagship servers for reporting.
657
+ */
658
+
659
+
660
+ const fsSendHit = hit => {
661
+ const functionName = 'sendHit';
662
+
663
+ if (!visitor) {
664
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logError)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, functionName);
665
+ return Promise.resolve();
666
+ }
667
+
668
+ return visitor.sendHit(hit);
669
+ };
670
+ /**
671
+ * Send a Hit to Flagship servers for reporting.
672
+ */
673
+
674
+
675
+ const fsSendHits = hit => {
676
+ const functionName = 'sendHits';
677
+
678
+ if (!visitor) {
679
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logError)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, functionName);
680
+ return Promise.resolve();
681
+ }
682
+
683
+ return visitor.sendHits(hit);
684
+ };
685
+
686
+ let modifications = visitor === null || visitor === void 0 ? void 0 : visitor.getModificationsArray();
687
+
688
+ if (!state.status.isSdkReady && state.modifications) {
689
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
690
+ modifications = Array.from(state.modifications, ([_key, item]) => item);
691
+ }
692
+
693
+ const activateModification = async params => {
694
+ const functionName = 'activateModification';
695
+ await fsActivate(params, functionName, visitor, config);
696
+ };
697
+
698
+ const synchronizeModifications = async () => {
699
+ if (!visitor) {
700
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logWarn)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, 'synchronizeModifications');
701
+ return;
702
+ }
703
+
704
+ await visitor.synchronizeModifications();
705
+ };
706
+
707
+ const getModifications = (params, activateAll) => {
708
+ const functionName = 'getModifications';
709
+ return fsModificationsSync({
710
+ functionName,
711
+ state,
712
+ visitor,
713
+ config,
714
+ params,
715
+ activateAll
716
+ });
717
+ };
718
+
719
+ const getModificationInfo = key => {
720
+ return fsModificationInfoSync({
721
+ key,
722
+ state,
723
+ visitor
724
+ });
725
+ };
726
+
727
+ function getFlag(key, defaultValue) {
728
+ if (!visitor) {
729
+ return new _Flag__WEBPACK_IMPORTED_MODULE_5__.Flag(defaultValue, key, state.modifications);
730
+ }
731
+
732
+ return visitor.getFlag(key, defaultValue);
733
+ }
734
+
735
+ function fetchFlags() {
736
+ if (!visitor) {
737
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logWarn)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, 'fetchFlags');
738
+ return Promise.resolve();
739
+ }
740
+
741
+ return visitor.fetchFlags();
742
+ }
743
+
744
+ function setConsent(hasConsented) {
745
+ if (!visitor) {
746
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.logWarn)(config, _constants__WEBPACK_IMPORTED_MODULE_3__.noVisitorMessage, 'setConsent');
747
+ return;
748
+ }
749
+
750
+ visitor.setConsent(hasConsented);
751
+ }
752
+
753
+ async function close() {
754
+ await _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1___default().close();
755
+ }
756
+
757
+ return {
758
+ visitorId: visitor === null || visitor === void 0 ? void 0 : visitor.visitorId,
759
+ anonymousId: visitor === null || visitor === void 0 ? void 0 : visitor.anonymousId,
760
+ context: { ...(visitor === null || visitor === void 0 ? void 0 : visitor.context)
761
+ },
762
+ hasConsented: visitor === null || visitor === void 0 ? void 0 : visitor.hasConsented,
763
+ setConsent,
764
+ updateContext: fsUpdateContext,
765
+ clearContext: fsClearContext,
766
+ authenticate: fsAuthenticate,
767
+ unauthenticate: fsUnauthenticate,
768
+ status: state.status,
769
+ activateModification,
770
+ synchronizeModifications,
771
+ getModifications,
772
+ modifications: modifications || [],
773
+ flagsData: (visitor === null || visitor === void 0 ? void 0 : visitor.getFlagsDataArray()) || [],
774
+ getModificationInfo,
775
+ hit: {
776
+ send: fsSendHit,
777
+ sendMultiple: fsSendHits
778
+ },
779
+ getFlag,
780
+ fetchFlags,
781
+ close
782
+ };
783
+ };
784
+
785
+ /***/ }),
786
+
787
+ /***/ "./src/constants.ts":
788
+ /*!**************************!*\
789
+ !*** ./src/constants.ts ***!
790
+ \**************************/
791
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
792
+
793
+ __webpack_require__.r(__webpack_exports__);
794
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
795
+ /* harmony export */ "GET_FLAG_CAST_ERROR": () => (/* binding */ GET_FLAG_CAST_ERROR),
796
+ /* harmony export */ "GET_METADATA_CAST_ERROR": () => (/* binding */ GET_METADATA_CAST_ERROR),
797
+ /* harmony export */ "noVisitorDefault": () => (/* binding */ noVisitorDefault),
798
+ /* harmony export */ "noVisitorMessage": () => (/* binding */ noVisitorMessage)
799
+ /* harmony export */ });
800
+ const noVisitorMessage = 'flagship Visitor not initialized.';
801
+ const noVisitorDefault = 'fsVisitor not initialized, returns default value';
802
+ const GET_FLAG_CAST_ERROR = 'Flag for key {0} has a different type. Default value is returned.';
803
+ const GET_METADATA_CAST_ERROR = 'Flag for key {0} has a different type with defaultValue, an empty metadata object is returned';
804
+
805
+ /***/ }),
806
+
807
+ /***/ "./src/sdkVersion.ts":
808
+ /*!***************************!*\
809
+ !*** ./src/sdkVersion.ts ***!
810
+ \***************************/
811
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
812
+
813
+ __webpack_require__.r(__webpack_exports__);
814
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
815
+ /* harmony export */ "version": () => (/* binding */ version)
816
+ /* harmony export */ });
817
+ // Generated by genversion.
818
+ const version = '3.2.2';
819
+
820
+ /***/ }),
821
+
822
+ /***/ "./src/utils.tsx":
823
+ /*!***********************!*\
824
+ !*** ./src/utils.tsx ***!
825
+ \***********************/
826
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
827
+
828
+ __webpack_require__.r(__webpack_exports__);
829
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
830
+ /* harmony export */ "getModificationsFromCampaigns": () => (/* binding */ getModificationsFromCampaigns),
831
+ /* harmony export */ "hasSameType": () => (/* binding */ hasSameType),
832
+ /* harmony export */ "logError": () => (/* binding */ logError),
833
+ /* harmony export */ "logInfo": () => (/* binding */ logInfo),
834
+ /* harmony export */ "logWarn": () => (/* binding */ logWarn),
835
+ /* harmony export */ "sprintf": () => (/* binding */ sprintf),
836
+ /* harmony export */ "useNonInitialEffect": () => (/* binding */ useNonInitialEffect),
837
+ /* harmony export */ "uuidV4": () => (/* binding */ uuidV4)
838
+ /* harmony export */ });
839
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @flagship.io/js-sdk */ "@flagship.io/js-sdk");
840
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__);
841
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
842
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
843
+ 'use client';
844
+
845
+
846
+
847
+ function logError(config, message, tag) {
848
+ if (!config || !config.logManager || typeof config.logManager.error !== 'function' || !config.logLevel || config.logLevel < _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__.LogLevel.ERROR) {
849
+ return;
850
+ }
851
+
852
+ config.logManager.error(message, tag);
853
+ }
854
+ function logInfo(config, message, tag) {
855
+ if (!config || !config.logManager || typeof config.logManager.info !== 'function' || !config.logLevel || config.logLevel < _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__.LogLevel.INFO) {
856
+ return;
857
+ }
858
+
859
+ config.logManager.info(message, tag);
860
+ }
861
+ function logWarn(config, message, tag) {
862
+ if (!config || !config.logManager || typeof config.logManager.warning !== 'function' || !config.logLevel || config.logLevel < _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_0__.LogLevel.WARNING) {
863
+ return;
864
+ }
865
+
866
+ config.logManager.warning(message, tag);
867
+ }
868
+ const getModificationsFromCampaigns = campaigns => {
869
+ const modifications = new Map();
870
+
871
+ if (!campaigns || !Array.isArray(campaigns)) {
872
+ return modifications;
873
+ }
874
+
875
+ campaigns.forEach(campaign => {
876
+ const object = campaign.variation.modifications.value;
877
+
878
+ for (const key in object) {
879
+ const value = object[key];
880
+ modifications.set(key, {
881
+ key,
882
+ campaignId: campaign.id,
883
+ variationGroupId: campaign.variationGroupId,
884
+ variationId: campaign.variation.id,
885
+ isReference: campaign.variation.reference,
886
+ value
887
+ });
888
+ }
889
+ });
890
+ return modifications;
891
+ };
892
+ function uuidV4() {
893
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (char) {
894
+ const rand = Math.random() * 16 | 0;
895
+ const value = char === 'x' ? rand : rand & 0x3 | 0x8;
896
+ return value.toString(16);
897
+ });
898
+ }
899
+ function useNonInitialEffect(effect, deps) {
900
+ const initialRender = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(true);
901
+ (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
902
+ if (initialRender.current) {
903
+ initialRender.current = false;
904
+ return;
905
+ }
906
+
907
+ if (typeof effect === 'function') {
908
+ return effect();
909
+ }
910
+ }, deps);
911
+ }
912
+ function hasSameType(flagValue, defaultValue) {
913
+ if (typeof flagValue !== typeof defaultValue) {
914
+ return false;
915
+ }
916
+
917
+ if (typeof flagValue === 'object' && typeof defaultValue === 'object' && Array.isArray(flagValue) !== Array.isArray(defaultValue)) {
918
+ return false;
919
+ }
920
+
921
+ return true;
922
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
923
+
924
+ function sprintf(format, ...value) {
925
+ let formatted = format;
926
+
927
+ for (let i = 0; i < value.length; i++) {
928
+ const element = value[i];
929
+ formatted = formatted.replace(new RegExp(`\\{${i}\\}`, 'g'), element);
930
+ }
931
+
932
+ return formatted;
933
+ }
934
+
935
+ /***/ }),
936
+
937
+ /***/ "@flagship.io/js-sdk":
938
+ /*!**************************************!*\
939
+ !*** external "@flagship.io/js-sdk" ***!
940
+ \**************************************/
941
+ /***/ ((module) => {
942
+
943
+ module.exports = require("@flagship.io/js-sdk");
944
+
945
+ /***/ }),
946
+
947
+ /***/ "react":
948
+ /*!************************!*\
949
+ !*** external "react" ***!
950
+ \************************/
951
+ /***/ ((module) => {
952
+
953
+ module.exports = require("react");
954
+
955
+ /***/ })
956
+
957
+ /******/ });
958
+ /************************************************************************/
959
+ /******/ // The module cache
960
+ /******/ var __webpack_module_cache__ = {};
961
+ /******/
962
+ /******/ // The require function
963
+ /******/ function __webpack_require__(moduleId) {
964
+ /******/ // Check if module is in cache
965
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
966
+ /******/ if (cachedModule !== undefined) {
967
+ /******/ return cachedModule.exports;
968
+ /******/ }
969
+ /******/ // Create a new module (and put it into the cache)
970
+ /******/ var module = __webpack_module_cache__[moduleId] = {
971
+ /******/ // no module.id needed
972
+ /******/ // no module.loaded needed
973
+ /******/ exports: {}
974
+ /******/ };
975
+ /******/
976
+ /******/ // Execute the module function
977
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
978
+ /******/
979
+ /******/ // Return the exports of the module
980
+ /******/ return module.exports;
981
+ /******/ }
982
+ /******/
983
+ /************************************************************************/
984
+ /******/ /* webpack/runtime/compat get default export */
985
+ /******/ (() => {
986
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
987
+ /******/ __webpack_require__.n = (module) => {
988
+ /******/ var getter = module && module.__esModule ?
989
+ /******/ () => (module['default']) :
990
+ /******/ () => (module);
991
+ /******/ __webpack_require__.d(getter, { a: getter });
992
+ /******/ return getter;
993
+ /******/ };
994
+ /******/ })();
995
+ /******/
996
+ /******/ /* webpack/runtime/define property getters */
997
+ /******/ (() => {
998
+ /******/ // define getter functions for harmony exports
999
+ /******/ __webpack_require__.d = (exports, definition) => {
1000
+ /******/ for(var key in definition) {
1001
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1002
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1003
+ /******/ }
1004
+ /******/ }
1005
+ /******/ };
1006
+ /******/ })();
1007
+ /******/
1008
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
1009
+ /******/ (() => {
1010
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
1011
+ /******/ })();
1012
+ /******/
1013
+ /******/ /* webpack/runtime/make namespace object */
1014
+ /******/ (() => {
1015
+ /******/ // define __esModule on exports
1016
+ /******/ __webpack_require__.r = (exports) => {
1017
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1018
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1019
+ /******/ }
1020
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
1021
+ /******/ };
1022
+ /******/ })();
1023
+ /******/
1024
+ /************************************************************************/
1025
+ var __webpack_exports__ = {};
1026
+ // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
1027
+ (() => {
1028
+ /*!***********************!*\
1029
+ !*** ./src/index.tsx ***!
1030
+ \***********************/
1031
+ __webpack_require__.r(__webpack_exports__);
1032
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1033
+ /* harmony export */ "FlagshipContext": () => (/* reexport safe */ _FlagshipContext__WEBPACK_IMPORTED_MODULE_0__.FlagshipContext),
1034
+ /* harmony export */ "FlagshipProvider": () => (/* reexport safe */ _FlagshipContext__WEBPACK_IMPORTED_MODULE_0__.FlagshipProvider),
1035
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
1036
+ /* harmony export */ "useFlagship": () => (/* reexport safe */ _FlagshipHooks__WEBPACK_IMPORTED_MODULE_2__.useFlagship),
1037
+ /* harmony export */ "useFsActivate": () => (/* reexport safe */ _FlagshipHooks__WEBPACK_IMPORTED_MODULE_2__.useFsActivate),
1038
+ /* harmony export */ "useFsFlag": () => (/* reexport safe */ _FlagshipHooks__WEBPACK_IMPORTED_MODULE_2__.useFsFlag),
1039
+ /* harmony export */ "useFsModification": () => (/* reexport safe */ _FlagshipHooks__WEBPACK_IMPORTED_MODULE_2__.useFsModification),
1040
+ /* harmony export */ "useFsModificationInfo": () => (/* reexport safe */ _FlagshipHooks__WEBPACK_IMPORTED_MODULE_2__.useFsModificationInfo),
1041
+ /* harmony export */ "useFsModifications": () => (/* reexport safe */ _FlagshipHooks__WEBPACK_IMPORTED_MODULE_2__.useFsModifications)
1042
+ /* harmony export */ });
1043
+ /* harmony import */ var _FlagshipContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./FlagshipContext */ "./src/FlagshipContext.tsx");
1044
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @flagship.io/js-sdk */ "@flagship.io/js-sdk");
1045
+ /* harmony import */ var _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__);
1046
+ /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
1047
+ /* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__) if(["default","FlagshipContext","FlagshipProvider"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _flagship_io_js_sdk__WEBPACK_IMPORTED_MODULE_1__[__WEBPACK_IMPORT_KEY__]
1048
+ /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
1049
+ /* harmony import */ var _FlagshipHooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FlagshipHooks */ "./src/FlagshipHooks.tsx");
1050
+
1051
+
1052
+
1053
+
1054
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_FlagshipContext__WEBPACK_IMPORTED_MODULE_0__.FlagshipProvider);
1055
+ })();
1056
+
1057
+ module.exports = __webpack_exports__;
1058
+ /******/ })()
1059
+ ;
2
1060
  //# sourceMappingURL=index.node.js.map