@flagship.io/react-sdk 3.0.10 → 3.0.11-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.
package/README.md CHANGED
@@ -1,27 +1,27 @@
1
- [![Code coverage](https://github.com/flagship-io/flagship-react-sdk/actions/workflows/workflow.yml/badge.svg)](https://github.com/flagship-io/flagship-react-sdk/actions/workflows/workflow.yml) [![npm version](https://badge.fury.io/js/@flagship.io%2Freact-sdk.svg)](https://badge.fury.io/js/@flagship.io%2Freact-sdk)
2
-
3
- ## About Flagship
4
-
5
-
6
- <img src="https://www.flagship.io/wp-content/uploads/Flagship-horizontal-black-wake-AB.png" alt="drawing" width="150"/>
7
-
8
- [Flagship by AB Tasty](https://www.flagship.io/) is a feature flagging platform for modern engineering and product teams. It eliminates the risks of future releases by separating code deployments from these releases :bulb: With Flagship, you have full control over the release process. You can:
9
-
10
-
11
- - Switch features on or off through remote config.
12
- - Automatically roll-out your features gradually to monitor performance and gather feedback from your most relevant users.
13
- - Roll back any feature should any issues arise while testing in production.
14
- - Segment users by granting access to a feature based on certain user attributes.
15
- - Carry out A/B tests by easily assigning feature variations to groups of users.
16
-
17
- <img src="https://www.flagship.io/wp-content/uploads/demo-setup.png" alt="drawing" width="600"/>
18
-
19
- Flagship also allows you to choose whatever implementation method works for you from our many available SDKs or directly through a REST API. Additionally, our architecture is based on multi-cloud providers that offer high performance and highly-scalable managed services.
20
-
21
- **To learn more:**
22
-
23
- - [Solution overview](https://www.flagship.io/#showvideo) - A 5mn video demo :movie_camera:
24
- - [Documentation](https://docs.developers.flagship.io/) - Our dev portal with guides, how tos, API and SDK references
25
- - [Sign up for a free trial](https://www.flagship.io/sign-up/) - Create your free account
26
- - [Guide to feature flagging](https://www.flagship.io/feature-flags/) - Everyhting you need to know about feature flag related use cases
27
- - [Blog](https://www.flagship.io/blog/) - Additional resources about release management
1
+ [![Code coverage](https://github.com/flagship-io/flagship-react-sdk/actions/workflows/workflow.yml/badge.svg)](https://github.com/flagship-io/flagship-react-sdk/actions/workflows/workflow.yml) [![npm version](https://badge.fury.io/js/@flagship.io%2Freact-sdk.svg)](https://badge.fury.io/js/@flagship.io%2Freact-sdk)
2
+
3
+ ## About Flagship
4
+
5
+
6
+ <img src="https://www.flagship.io/wp-content/uploads/Flagship-horizontal-black-wake-AB.png" alt="drawing" width="150"/>
7
+
8
+ [Flagship by AB Tasty](https://www.flagship.io/) is a feature flagging platform for modern engineering and product teams. It eliminates the risks of future releases by separating code deployments from these releases :bulb: With Flagship, you have full control over the release process. You can:
9
+
10
+
11
+ - Switch features on or off through remote config.
12
+ - Automatically roll-out your features gradually to monitor performance and gather feedback from your most relevant users.
13
+ - Roll back any feature should any issues arise while testing in production.
14
+ - Segment users by granting access to a feature based on certain user attributes.
15
+ - Carry out A/B tests by easily assigning feature variations to groups of users.
16
+
17
+ <img src="https://www.flagship.io/wp-content/uploads/demo-setup.png" alt="drawing" width="600"/>
18
+
19
+ Flagship also allows you to choose whatever implementation method works for you from our many available SDKs or directly through a REST API. Additionally, our architecture is based on multi-cloud providers that offer high performance and highly-scalable managed services.
20
+
21
+ **To learn more:**
22
+
23
+ - [Solution overview](https://www.flagship.io/#showvideo) - A 5mn video demo :movie_camera:
24
+ - [Documentation](https://docs.developers.flagship.io/) - Our dev portal with guides, how tos, API and SDK references
25
+ - [Sign up for a free trial](https://www.flagship.io/sign-up/) - Create your free account
26
+ - [Guide to feature flagging](https://www.flagship.io/feature-flags/) - Everyhting you need to know about feature flag related use cases
27
+ - [Blog](https://www.flagship.io/blog/) - Additional resources about release management
@@ -133,6 +133,8 @@ var _jsSdk = __webpack_require__(/*! @flagship.io/js-sdk */ "@flagship.io/js-sdk
133
133
 
134
134
  var _utils = __webpack_require__(/*! ./utils */ "./src/utils.tsx");
135
135
 
136
+ var _sdkVersion = __webpack_require__(/*! ./sdkVersion */ "./src/sdkVersion.ts");
137
+
136
138
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
137
139
 
138
140
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -305,6 +307,9 @@ const FlagshipProvider = ({
305
307
 
306
308
  case _jsSdk.FlagshipStatus.NOT_INITIALIZED:
307
309
  setState(prev => ({ ...prev,
310
+ status: { ...prev.status,
311
+ isLoading: false
312
+ },
308
313
  config: _jsSdk.Flagship.getConfig()
309
314
  }));
310
315
  break;
@@ -352,7 +357,8 @@ FlagshipProvider.defaultProps = {
352
357
  activateDeduplicationTime: 2,
353
358
  hitDeduplicationTime: 2,
354
359
  fetchNow: true,
355
- language: 1
360
+ language: 1,
361
+ sdkVersion: _sdkVersion.version
356
362
  };
357
363
 
358
364
  /***/ }),
@@ -422,9 +428,9 @@ const fsModificationsSync = args => {
422
428
  });
423
429
  return flags;
424
430
  };
425
- /**
426
- * 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.
427
- * @deprecated use useFsFlag instead
431
+ /**
432
+ * 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.
433
+ * @deprecated use useFsFlag instead
428
434
  */
429
435
 
430
436
 
@@ -446,9 +452,9 @@ const useFsModifications = (params, activateAll) => {
446
452
  activateAll
447
453
  });
448
454
  };
449
- /**
450
- * 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.
451
- * @deprecated use useFsFlag instead
455
+ /**
456
+ * 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.
457
+ * @deprecated use useFsFlag instead
452
458
  */
453
459
 
454
460
 
@@ -503,10 +509,10 @@ const fsModificationInfoSync = args => {
503
509
 
504
510
  return null;
505
511
  };
506
- /**
507
- * Get the campaign modification information value matching the given key.
508
- * @param {string} key key which identify the modification.
509
- * @deprecated use useFsFlag instead
512
+ /**
513
+ * Get the campaign modification information value matching the given key.
514
+ * @param {string} key key which identify the modification.
515
+ * @deprecated use useFsFlag instead
510
516
  */
511
517
 
512
518
 
@@ -538,11 +544,11 @@ const fsActivate = async (params, functionName, visitor, config) => {
538
544
  (0, _utils.logWarn)(config, error.message || error, functionName);
539
545
  }
540
546
  };
541
- /**
542
- * This hook returns a flag object by its key. If no flag match the given key an empty flag will be returned.
543
- * @param key
544
- * @param defaultValue
545
- * @returns
547
+ /**
548
+ * This hook returns a flag object by its key. If no flag match the given key an empty flag will be returned.
549
+ * @param key
550
+ * @param defaultValue
551
+ * @returns
546
552
  */
547
553
 
548
554
 
@@ -560,11 +566,11 @@ const useFsFlag = (key, defaultValue) => {
560
566
 
561
567
  return visitor.getFlag(key, defaultValue);
562
568
  };
563
- /**
564
- * Report this user has seen this modification. Report this user has seen these modifications.
565
- * @param params
566
- * @deprecated use useFsFlag instead
567
- * @returns
569
+ /**
570
+ * Report this user has seen this modification. Report this user has seen these modifications.
571
+ * @param params
572
+ * @deprecated use useFsFlag instead
573
+ * @returns
568
574
  */
569
575
 
570
576
 
@@ -637,8 +643,8 @@ const useFlagship = () => {
637
643
 
638
644
  visitor.unauthenticate();
639
645
  };
640
- /**
641
- * Send a Hit to Flagship servers for reporting.
646
+ /**
647
+ * Send a Hit to Flagship servers for reporting.
642
648
  */
643
649
 
644
650
 
@@ -652,8 +658,8 @@ const useFlagship = () => {
652
658
 
653
659
  return visitor.sendHit(hit);
654
660
  };
655
- /**
656
- * Send a Hit to Flagship servers for reporting.
661
+ /**
662
+ * Send a Hit to Flagship servers for reporting.
657
663
  */
658
664
 
659
665
 
@@ -842,6 +848,24 @@ Object.keys(_FlagshipHooks).forEach(function (key) {
842
848
 
843
849
  /***/ }),
844
850
 
851
+ /***/ "./src/sdkVersion.ts":
852
+ /*!***************************!*\
853
+ !*** ./src/sdkVersion.ts ***!
854
+ \***************************/
855
+ /***/ ((__unused_webpack_module, exports) => {
856
+
857
+
858
+
859
+ Object.defineProperty(exports, "__esModule", ({
860
+ value: true
861
+ }));
862
+ exports.version = void 0;
863
+ // Generated by genversion.
864
+ const version = '3.0.11';
865
+ exports.version = version;
866
+
867
+ /***/ }),
868
+
845
869
  /***/ "./src/utils.tsx":
846
870
  /*!***********************!*\
847
871
  !*** ./src/utils.tsx ***!
@@ -1 +1 @@
1
- {"version":3,"file":"index.node.js","mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;AAEO,MAAMA,IAAN,CAAkC;AAKrCC,EAAAA,WAAW,CAAEC,YAAF,EAAkBC,GAAlB,EAA+BC,SAA/B,EAA4E;AAAA;;AAAA;;AAAA;;AAAA;;AACrF,QAAI,CAACA,SAAL,EAAgB;AACd,0BAAQC,eAASC,SAAT,EAAR,EAA8BC,2BAA9B,EAAgD,SAAhD;AACD;;AACD,SAAKL,YAAL,GAAoBA,YAApB;AACA,SAAKC,GAAL,GAAWA,GAAX;AACA,SAAKK,IAAL,GAAYJ,SAAZ,aAAYA,SAAZ,uBAAYA,SAAS,CAAEK,GAAX,CAAeN,GAAf,CAAZ;AACD;;AAEOO,EAAAA,WAAW,GAAI;AAAA;;AACrB,WAAO,KAAKR,YAAL,KAAsB,IAAtB,IAA8B,KAAKA,YAAL,KAAsBS,SAApD,IAAiE,CAAC,sCAAY,KAAKH,IAAjB,+CAAY,WAAWI,KAAvB,EAA8B,KAAKV,YAAnC,CAAzE;AACD;;AAEDW,EAAAA,QAAQ,GAAO;AACb,QAAI,CAAC,KAAKL,IAAV,EAAgB;AACd,0BAAQH,eAASC,SAAT,EAAR,EAA8BC,2BAA9B,EAAgD,UAAhD;AACA,aAAO,KAAKL,YAAZ;AACD;;AAED,QAAI,KAAKQ,WAAL,EAAJ,EAAwB;AACtB,0BACEL,eAASC,SAAT,EADF,EAEE,oBAAQQ,8BAAR,EAA6B,KAAKX,GAAlC,CAFF,EAGE,UAHF;AAKA,aAAO,KAAKD,YAAZ;AACD;;AACD,WAAO,KAAKM,IAAL,CAAUI,KAAjB;AACD;;AAEDG,EAAAA,MAAM,GAAY;AAChB,QAAI,CAAC,KAAKP,IAAV,EAAgB;AACd,0BAAQH,eAASC,SAAT,EAAR,EAA8BC,2BAA9B,EAAgD,QAAhD;AACA,aAAO,KAAP;AACD;;AACD,WAAO,CAAC,EAAE,KAAKC,IAAL,CAAUQ,UAAV,IAAwB,KAAKR,IAAL,CAAUS,WAAlC,IAAiD,KAAKT,IAAL,CAAUU,gBAA7D,CAAR;AACD;;AAEDC,EAAAA,WAAW,GAAmB;AAC5B,QAAI,CAAC,KAAKX,IAAV,EAAgB;AACd,0BAAQH,eAASC,SAAT,EAAR,EAA8BC,2BAA9B,EAAgD,aAAhD;AACD;;AAED,WAAOa,OAAO,CAACC,OAAR,EAAP;AACD;;AAEW,MAARC,QAAQ,GAAkB;AAC5B,UAAMC,YAAY,GAAG,UAArB;;AACA,QAAI,CAAC,KAAKf,IAAV,EAAgB;AACd,0BAAQH,eAASC,SAAT,EAAR,EAA8BC,2BAA9B,EAAgDgB,YAAhD;AACA,aAAOC,oBAAaC,KAAb,EAAP;AACD;;AACD,QAAI,KAAKf,WAAL,EAAJ,EAAwB;AACtB,0BACEL,eAASC,SAAT,EADF,EAEE,oBAAQoB,kCAAR,EAAiC,KAAKvB,GAAtC,CAFF,EAGEoB,YAHF;AAKA,aAAOC,oBAAaC,KAAb,EAAP;AACD;;AAED,WAAO,IAAID,mBAAJ,CAAiB;AACtBR,MAAAA,UAAU,EAAE,KAAKR,IAAL,CAAUQ,UADA;AAEtBE,MAAAA,gBAAgB,EAAE,KAAKV,IAAL,CAAUU,gBAFN;AAGtBD,MAAAA,WAAW,EAAE,KAAKT,IAAL,CAAUS,WAHD;AAItBU,MAAAA,WAAW,EAAE,CAAC,CAAC,KAAKnB,IAAL,CAAUmB,WAJH;AAKtBC,MAAAA,YAAY,EAAE,KAAKpB,IAAL,CAAUoB,YALF;AAMtBC,MAAAA,IAAI,EAAE,KAAKrB,IAAL,CAAUqB;AANM,KAAjB,CAAP;AAQD;;AA1EoC;;;;;;;;;;;;;;;;;;;ACHzC;;AASA;;AAUA;;;;;;AApBA;AA4HA,MAAMC,QAAiB,GAAG;AACxBC,EAAAA,MAAM,EAAE;AAAEC,IAAAA,SAAS,EAAE,IAAb;AAAmBC,IAAAA,UAAU,EAAE;AAA/B;AADgB,CAA1B;AAIO,MAAMC,eAAe,gBAAG,0BAAyB;AACtDC,EAAAA,KAAK,EAAE,EAAE,GAAGL;AAAL;AAD+C,CAAzB,CAAxB;;;AAIA,MAAMM,gBAAiD,GAAG,CAAC;AAChEC,EAAAA,QADgE;AAEhEC,EAAAA,QAFgE;AAGhEC,EAAAA,KAHgE;AAIhEC,EAAAA,MAJgE;AAKhEC,EAAAA,YALgE;AAMhEC,EAAAA,WANgE;AAOhEC,EAAAA,WAPgE;AAQhEC,EAAAA,UARgE;AAShEC,EAAAA,gBATgE;AAUhEC,EAAAA,qBAVgE;AAWhEC,EAAAA,kBAXgE;AAYhEC,EAAAA,QAZgE;AAahEC,EAAAA,gBAbgE;AAchEC,EAAAA,oBAdgE;AAehEC,EAAAA,gBAfgE;AAgBhEC,EAAAA,4BAhBgE;AAiBhE,KAAGC;AAjB6D,CAAD,KAkBpC;AAC3B,MAAIC,aAAa,GAAG,IAAIC,GAAJ,EAApB;;AACA,MAAIJ,gBAAgB,IAAIA,gBAAgB,CAACK,OAAzC,EAAkD;AAChDL,IAAAA,gBAAgB,CAACK,OAAjB,CAA0BhD,IAAD,IAAU;AACjC8C,MAAAA,aAAa,CAACG,GAAd,CAAkBjD,IAAI,CAACL,GAAvB,EAA4BK,IAA5B;AACD,KAFD;AAGD,GAJD,MAIO,IAAI0C,oBAAoB,IAAIA,oBAAoB,CAACM,OAAjD,EAA0D;AAC/DN,IAAAA,oBAAoB,CAACM,OAArB,CAA8BE,YAAD,IAAkB;AAC7CJ,MAAAA,aAAa,CAACG,GAAd,CAAkBC,YAAY,CAACvD,GAA/B,EAAoCuD,YAApC;AACD,KAFD;AAGD,GAJM,MAIA,IAAIT,gBAAJ,EAAsB;AAC3BK,IAAAA,aAAa,GAAG,0CAA8BL,gBAA9B,CAAhB;AACD;;AAED,QAAM,CAACd,KAAD,EAAQwB,QAAR,IAAoB,qBAAkB,EAAE,GAAG7B,QAAL;AAAewB,IAAAA;AAAf,GAAlB,CAA1B;AACA,QAAM,CAACM,YAAD,EAAeC,eAAf,IAAkC,sBAAxC;AACA,QAAMC,QAAQ,GAAG,oBAAjB;AACAA,EAAAA,QAAQ,CAACC,OAAT,GAAmB5B,KAAnB;AAEA,kCAAoB,MAAM;AACxB,QAAIiB,4BAAJ,EAAkC;AAAA;;AAChC,wBAAAjB,KAAK,CAAC6B,OAAN,kEAAeC,UAAf;AACD;AACF,GAJD,EAIG,CAACL,YAAD,CAJH;AAMA,kCAAoB,MAAM;AACxBM,IAAAA,aAAa,CAAC,IAAD,CAAb;AACD,GAFD,EAEG,CAACC,IAAI,CAACC,SAAL,CAAe1B,WAAf,CAAD,CAFH;AAIA,wBAAU,MAAM;AACd2B,IAAAA,OAAO;AACR,GAFD,EAEG,CAAC9B,KAAD,EAAQC,MAAR,EAAgBC,YAAhB,CAFH;;AAIA,WAAS6B,eAAT,CAA0BC,KAA1B,EAIG;AACD,UAAMC,SAAmB,GAAG;AAC1BvC,MAAAA,UAAU,EAAEsC,KAAK,CAACtC,UADQ;AAE1BD,MAAAA,SAAS,EAAEuC,KAAK,CAACvC,SAFS;AAG1ByC,MAAAA,gBAAgB,EAAE,CAAC,CAACF,KAAK,CAACG,SAHA;AAI1BC,MAAAA,WAAW,EAAE,IAAIC,IAAJ,GAAWC,WAAX;AAJa,KAA5B;AAOAlB,IAAAA,QAAQ,CAAEmB,YAAD,IAAkB;AACzB,UAAI,CAACA,YAAY,CAAC/C,MAAb,CAAoBgD,gBAAzB,EAA2C;AACzCP,QAAAA,SAAS,CAACO,gBAAV,GAA6B,IAAIH,IAAJ,GAAWC,WAAX,EAA7B;AACD;;AAED,aAAO,EACL,GAAGC,YADE;AAELd,QAAAA,OAAO,EAAEO,KAAK,CAACG,SAFV;AAGLpB,QAAAA,aAAa,EAAEiB,KAAK,CAACG,SAAN,CAAgBpB,aAH1B;AAIL0B,QAAAA,MAAM,EAAE3E,gBAASC,SAAT,EAJH;AAKLyB,QAAAA,MAAM,EAAE,EACN,GAAG+C,YAAY,CAAC/C,MADV;AAEN,aAAGyC;AAFG;AALH,OAAP;AAUD,KAfO,CAAR;AAiBA,WAAOA,SAAP;AACD,GA/D0B,CAiE3B;;;AACA,QAAMS,cAAc,GAAG,CAACP,SAAD,EAAqBQ,KAArB,KAAoC;AACzD,QAAIA,KAAJ,EAAW;AACT,2BAAS7E,gBAASC,SAAT,EAAT,EAA+B4E,KAAK,CAACC,OAAN,IAAiBD,KAAhD,EAAuD,SAAvD;AACA;AACD;;AAED,UAAMV,SAAS,GAAGF,eAAe,CAAC;AAChCI,MAAAA,SADgC;AAEhCzC,MAAAA,UAAU,EAAE,IAFoB;AAGhCD,MAAAA,SAAS,EAAE;AAHqB,KAAD,CAAjC;;AAMA,QAAIgB,QAAJ,EAAc;AACZA,MAAAA,QAAQ,CAAC;AACPoC,QAAAA,eAAe,EAAEV,SAAS,CAACpB,aADpB;AAEP0B,QAAAA,MAAM,EAAE3E,gBAASC,SAAT,EAFD;AAGPyB,QAAAA,MAAM,EAAEyC;AAHD,OAAD,CAAR;AAKD;AACF,GAnBD;;AAqBA,QAAMN,aAAa,GAAG,CAACD,UAAU,GAAG,KAAd,KAAwB;AAC5C,QAAI,CAACvB,WAAL,EAAkB;AAChB;AACD;;AAED,UAAMgC,SAAS,GAAGrE,gBAASgF,UAAT,CAAoB;AACpCC,MAAAA,SAAS,EAAE5C,WAAW,CAAC6C,EADa;AAEpCC,MAAAA,OAAO,EAAE9C,WAAW,CAAC8C,OAFe;AAGpCC,MAAAA,eAAe,EAAE/C,WAAW,CAAC+C,eAHO;AAIpCC,MAAAA,YAAY,EAAEhD,WAAW,CAACgD,YAJU;AAKpCzC,MAAAA,gBALoC;AAMpCC,MAAAA,oBANoC;AAOpCC,MAAAA;AAPoC,KAApB,CAAlB;;AAUAuB,IAAAA,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAEiB,EAAX,CAAc,OAAd,EAAwBT,KAAD,IAAW;AAChCD,MAAAA,cAAc,CAACP,SAAD,EAAYQ,KAAZ,CAAd;AACD,KAFD;;AAIA,QAAI,CAAC5C,QAAD,IAAaoC,SAAb,IAA0B,CAACT,UAA/B,EAA2C;AACzCK,MAAAA,eAAe,CAAC;AACdI,QAAAA,SADc;AAEdzC,QAAAA,UAAU,EAAE,IAFE;AAGdD,QAAAA,SAAS,EAAE;AAHG,OAAD,CAAf;AAKD;;AACD,QAAIiC,UAAU,IAAI,CAAC3B,QAAnB,EAA6B;AAC3BoC,MAAAA,SAAS,SAAT,IAAAA,SAAS,WAAT,YAAAA,SAAS,CAAET,UAAX;AACD;AACF,GA7BD;;AA8BA,QAAM2B,aAAa,GAAI7D,MAAD,IAA4B;AAChD,QAAIe,qBAAJ,EAA2B;AACzBA,MAAAA,qBAAqB,CAACf,MAAD,CAArB;AACD;;AAED,YAAQA,MAAR;AACE,WAAK8D,sBAAeC,QAApB;AACE,YAAI/D,MAAM,KAAK8D,sBAAeC,QAA1B,IAAsCnD,WAA1C,EAAuD;AACrDA,UAAAA,WAAW;AACZ;;AACD;;AACF,WAAKkD,sBAAeE,cAApB;AACA,WAAKF,sBAAeG,KAApB;AACE,YAAIpD,UAAJ,EAAgB;AACdA,UAAAA,UAAU;AACX;;AAEDsB,QAAAA,aAAa;AAEb;;AACF,WAAK2B,sBAAeI,eAApB;AACEtC,QAAAA,QAAQ,CAAEuC,IAAD,KAAW,EAAE,GAAGA,IAAL;AAAWlB,UAAAA,MAAM,EAAE3E,gBAASC,SAAT;AAAnB,SAAX,CAAD,CAAR;AACA;AAjBJ;AAmBD,GAxBD;;AA0BA,QAAM6F,uBAAuB,GAAIC,UAAD,IAAsB;AACpD,QAAIrD,kBAAJ,EAAwB;AACtBA,MAAAA,kBAAkB,CAACqD,UAAD,CAAlB;AACD;;AACDvC,IAAAA,eAAe,CAACuC,UAAD,CAAf;AACD,GALD;;AAOA,QAAM/B,OAAO,GAAG,MAAM;AACpBhE,oBAASgG,KAAT,CAAe9D,KAAf,EAAsBC,MAAtB,EAA8B;AAC5BC,MAAAA,YAD4B;AAE5BH,MAAAA,QAF4B;AAG5BQ,MAAAA,qBAAqB,EAAE8C,aAHK;AAI5B7C,MAAAA,kBAAkB,EAAEoD,uBAJQ;AAK5B,SAAG9C;AALyB,KAA9B;AAOD,GARD;;AASA,QAAMiD,aAAa,GAAG,MAAuB;AAC3C,UAAMC,WAAW,GAAG,CAACpE,KAAK,CAAC6B,OAA3B;;AACA,QAAI7B,KAAK,CAACJ,MAAN,CAAaC,SAAb,IAA0Ba,gBAA1B,IAA8C0D,WAA9C,IAA6DjE,QAAjE,EAA2E;AACzE,0BAAO,4DAAGO,gBAAH,CAAP;AACD;;AACD,wBAAO,4DAAGR,QAAH,CAAP;AACD,GAND;;AAOA,sBACE,6BAAC,eAAD,CAAiB,QAAjB;AAA0B,SAAK,EAAE;AAAEF,MAAAA,KAAF;AAASwB,MAAAA;AAAT;AAAjC,KACG2C,aAAa,EADhB,CADF;AAKD,CA7LM;;;AA+LPlE,gBAAgB,CAACoE,YAAjB,GAAgC;AAC9BC,EAAAA,yBAAyB,EAAE,CADG;AAE9BC,EAAAA,oBAAoB,EAAE,CAFQ;AAG9BpE,EAAAA,QAAQ,EAAE,IAHoB;AAI9BqE,EAAAA,QAAQ,EAAE;AAJoB,CAAhC;;;;;;;;;;;;;;;;;;;ACnUA;;AAaA;;AACA;;AACA;;AACA;;AAEA,MAAMC,SAAS,GAAG,CAAChG,KAAD,EAAiBV,YAAjB,KACf,OAAOU,KAAP,KAAiB,QAAjB,IACC,OAAOV,YAAP,KAAwB,QADzB,IAEC2G,KAAK,CAACC,OAAN,CAAclG,KAAd,MAAyBiG,KAAK,CAACC,OAAN,CAAc5G,YAAd,CAF3B,IAGA,OAAOU,KAAP,KAAiB,OAAOV,YAJ1B;;AAMA,MAAM6G,mBAAmB,GAAuBC,IAApB,IAOH;AACvB,QAAM;AAAEhD,IAAAA,OAAF;AAAWiD,IAAAA,MAAX;AAAmBC,IAAAA,WAAnB;AAAgC/E,IAAAA,KAAhC;AAAuCZ,IAAAA,YAAvC;AAAqDyD,IAAAA;AAArD,MAAgEgC,IAAtE;;AACA,MAAIhD,OAAJ,EAAa;AACX,WAAOA,OAAO,CAACmD,oBAAR,CAA6BF,MAA7B,EAAqCC,WAArC,CAAP;AACD;;AAED,QAAME,KAAK,GACT,CAACjF,KAAK,CAACJ,MAAN,CAAaE,UAAd,IACA,CAAC,CAACE,KAAK,CAACmB,aADR,IAEAnB,KAAK,CAACmB,aAAN,CAAoB+D,IAApB,GAA2B,CAH7B;AAIA,QAAMC,KAAwB,GAAG,EAAjC;;AAEA,MAAIF,KAAJ,EAAW;AACTH,IAAAA,MAAM,CAACzD,OAAP,CAAgB+D,IAAD,IAAU;AAAA;;AACvB,YAAM7D,YAAY,2BAAGvB,KAAK,CAACmB,aAAT,yDAAG,qBAAqB7C,GAArB,CAAyB8G,IAAI,CAACpH,GAA9B,CAArB;;AAEA,UAAIuD,YAAY,IAAIkD,SAAS,CAAClD,YAAD,aAACA,YAAD,uBAACA,YAAY,CAAE9C,KAAf,EAAsB2G,IAAI,CAACrH,YAA3B,CAA7B,EAAuE;AACrEoH,QAAAA,KAAK,CAACC,IAAI,CAACpH,GAAN,CAAL,GAAkBuD,YAAY,CAAC9C,KAA/B;AACD,OAFD,MAEO;AACL0G,QAAAA,KAAK,CAACC,IAAI,CAACpH,GAAN,CAAL,GAAkBoH,IAAI,CAACrH,YAAvB;AACD;AACF,KARD;AASA,WAAOoH,KAAP;AACD;;AAED,sBAAQtC,MAAR,EAAgBwC,2BAAhB,EAAkCjG,YAAlC;AACA0F,EAAAA,MAAM,CAACzD,OAAP,CAAgB+D,IAAD,IAAU;AACvBD,IAAAA,KAAK,CAACC,IAAI,CAACpH,GAAN,CAAL,GAAkBoH,IAAI,CAACrH,YAAvB;AACD,GAFD;AAGA,SAAOoH,KAAP;AACD,CArCD;AAuCA;AACA;AACA;AACA;;;AACO,MAAMG,kBAAkB,GAAG,CAChCR,MADgC,EAEhCC,WAFgC,KAGV;AACtB,QAAM;AAAE/E,IAAAA;AAAF,MAAY,uBAAWD,gCAAX,CAAlB;AACA,QAAM;AAAE8B,IAAAA,OAAF;AAAWgB,IAAAA;AAAX,MAAsB7C,KAA5B;AACA,QAAMZ,YAAY,GAAG,oBAArB;AAEA,SAAOwF,mBAAmB,CAAC;AACzBxF,IAAAA,YADyB;AAEzBY,IAAAA,KAFyB;AAGzB6B,IAAAA,OAHyB;AAIzBgB,IAAAA,MAJyB;AAKzBiC,IAAAA,MALyB;AAMzBC,IAAAA;AANyB,GAAD,CAA1B;AAQD,CAhBM;AAkBP;AACA;AACA;AACA;;;;;AACO,MAAMQ,iBAEZ,GAAIT,MAAD,IAAY;AAAA;;AACd,QAAM;AAAE9E,IAAAA;AAAF,MAAY,uBAAWD,gCAAX,CAAlB;AACA,QAAM;AAAE8B,IAAAA,OAAF;AAAWgB,IAAAA;AAAX,MAAsB7C,KAA5B;AACA,QAAMZ,YAAY,GAAG,oBAArB;;AAEA,MAAIyC,OAAJ,EAAa;AACX,WAAOA,OAAO,CAAC2D,mBAAR,CAA4BV,MAA5B,CAAP;AACD;;AAED,QAAMvD,YAAY,4BAAGvB,KAAK,CAACmB,aAAT,0DAAG,sBAAqB7C,GAArB,CAAyBwG,MAAM,CAAC9G,GAAhC,CAArB;;AAEA,MACE,CAACgC,KAAK,CAACJ,MAAN,CAAaE,UAAd,IACAyB,YADA,IAEAkD,SAAS,CAAClD,YAAD,aAACA,YAAD,uBAACA,YAAY,CAAE9C,KAAf,EAAsBqG,MAAM,CAAC/G,YAA7B,CAHX,EAIE;AACA,WAAOwD,YAAY,CAAC9C,KAApB;AACD;;AAED,sBAAQoE,MAAR,EAAgBwC,2BAAhB,EAAkCjG,YAAlC;AACA,SAAO0F,MAAM,CAAC/G,YAAd;AACD,CAvBM;;;;AAyBP,MAAM0H,sBAAsB,GAAIZ,IAAD,IAIzB;AAAA;;AACJ,QAAM;AAAE7G,IAAAA,GAAF;AAAO6D,IAAAA,OAAP;AAAgB7B,IAAAA;AAAhB,MAA0B6E,IAAhC;;AACA,MAAIhD,OAAJ,EAAa;AACX,WAAOA,OAAO,CAAC6D,uBAAR,CAAgC1H,GAAhC,CAAP;AACD;;AACD,QAAMuD,YAAY,4BAAGvB,KAAK,CAACmB,aAAT,0DAAG,sBAAqB7C,GAArB,CAAyBN,GAAzB,CAArB;;AACA,MAAI,CAACgC,KAAK,CAACJ,MAAN,CAAaE,UAAd,IAA4ByB,YAAhC,EAA8C;AAC5C,WAAOA,YAAP;AACD;;AACD,SAAO,IAAP;AACD,CAdD;AAgBA;AACA;AACA;AACA;AACA;;;AACO,MAAMoE,qBAA6D,GACxE3H,GAD2E,IAExE;AACH,QAAM;AAAEgC,IAAAA;AAAF,MAAY,uBAAWD,gCAAX,CAAlB;AACA,QAAM;AAAE8B,IAAAA;AAAF,MAAc7B,KAApB;AACA,SAAOyF,sBAAsB,CAAC;AAAEzH,IAAAA,GAAF;AAAOgC,IAAAA,KAAP;AAAc6B,IAAAA;AAAd,GAAD,CAA7B;AACD,CANM;;;;AAQP,MAAM+D,UAAU,GAAG,OACjBd,MADiB,EAEjB1F,YAFiB,EAGjByC,OAHiB,EAIjBgB,MAJiB,KAKd;AACH,MAAI;AACF,QAAI,CAAChB,OAAL,EAAc;AACZ,0BAAQgB,MAAR,EAAgBzE,2BAAhB,EAAkCgB,YAAlC;AACA;AACD;;AACD,UAAMyC,OAAO,CAACgE,qBAAR,CAA8Bf,MAA9B,CAAN,CALE,CAMF;AACD,GAPD,CAOE,OAAO/B,KAAP,EAAmB;AACnB,wBAAQF,MAAR,EAAgBE,KAAK,CAACC,OAAN,IAAiBD,KAAjC,EAAwC3D,YAAxC;AACD;AACF,CAhBD;AAkBA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAM0G,SAAS,GAAG,CACvB9H,GADuB,EAEvBD,YAFuB,KAGV;AACb,QAAM;AAAEiC,IAAAA;AAAF,MAAY,uBAAWD,gCAAX,CAAlB;AACA,QAAM;AAAE8B,IAAAA;AAAF,MAAc7B,KAApB;;AAEA,MAAI,CAAC6B,OAAL,EAAc;AACZ,WAAO,IAAIhE,UAAJ,CAASE,YAAT,EAAuBC,GAAvB,EAA4BgC,KAAK,CAACmB,aAAlC,CAAP;AACD;;AAED,SAAOU,OAAO,CAACkE,OAAR,CAAgB/H,GAAhB,EAAqBD,YAArB,CAAP;AACD,CAZM;AAcP;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMiI,aAGZ,GAAG,MAAOlB,MAAP,IAAkB;AACpB,QAAM;AAAE9E,IAAAA;AAAF,MAAY,uBAAWD,gCAAX,CAAlB;AACA,QAAM;AAAE8B,IAAAA,OAAF;AAAWgB,IAAAA;AAAX,MAAsB7C,KAA5B;AACA,QAAMZ,YAAY,GAAG,oBAArB;AAEA,QAAMwG,UAAU,CAACd,MAAD,EAAS1F,YAAT,EAAuByC,OAAvB,EAAgCgB,MAAhC,CAAhB;AACD,CATM;;;;AAwGA,MAAMoD,WAAW,GAAG,MAAyB;AAClD,QAAM;AAAEjG,IAAAA;AAAF,MAAY,uBAAWD,gCAAX,CAAlB;AACA,QAAM;AAAE8B,IAAAA,OAAF;AAAWgB,IAAAA;AAAX,MAAsB7C,KAA5B;;AAEA,QAAMkG,eAAe,GAAI7C,OAAD,IAA8C;AACpE,UAAMjE,YAAY,GAAG,eAArB;;AACA,QAAI,CAACyC,OAAL,EAAc;AACZ,2BAASgB,MAAT,EAAiBzE,2BAAjB,EAAmCgB,YAAnC;AACA;AACD;;AACDyC,IAAAA,OAAO,CAACsE,YAAR;AACAtE,IAAAA,OAAO,CAACuE,aAAR,CAAsB/C,OAAtB;AACD,GARD;;AAUA,QAAMgD,cAAc,GAAG,MAAY;AACjC,UAAMjH,YAAY,GAAG,cAArB;;AACA,QAAI,CAACyC,OAAL,EAAc;AACZ,2BAASgB,MAAT,EAAiBzE,2BAAjB,EAAmCgB,YAAnC;AACA;AACD;;AACDyC,IAAAA,OAAO,CAACsE,YAAR;AACD,GAPD;;AASA,QAAMG,cAAc,GAAInD,SAAD,IAA6B;AAClD,UAAM/D,YAAY,GAAG,cAArB;;AACA,QAAI,CAACyC,OAAL,EAAc;AACZ,2BAASgB,MAAT,EAAiBzE,2BAAjB,EAAmCgB,YAAnC;AACA;AACD;;AACDyC,IAAAA,OAAO,CAAC0E,YAAR,CAAqBpD,SAArB;AACD,GAPD;;AASA,QAAMqD,gBAAgB,GAAG,MAAY;AACnC,UAAMpH,YAAY,GAAG,gBAArB;;AACA,QAAI,CAACyC,OAAL,EAAc;AACZ,2BAASgB,MAAT,EAAiBzE,2BAAjB,EAAmCgB,YAAnC;AACA;AACD;;AACDyC,IAAAA,OAAO,CAAC4E,cAAR;AACD,GAPD;AASA;AACF;AACA;;;AACE,QAAMC,SAEL,GAAIC,GAAD,IAAS;AACX,UAAMvH,YAAY,GAAG,SAArB;;AACA,QAAI,CAACyC,OAAL,EAAc;AACZ,2BAASgB,MAAT,EAAiBzE,2BAAjB,EAAmCgB,YAAnC;AACA,aAAOH,OAAO,CAACC,OAAR,EAAP;AACD;;AACD,WAAO2C,OAAO,CAAC+E,OAAR,CAAgBD,GAAhB,CAAP;AACD,GATD;AAWA;AACF;AACA;;;AACE,QAAME,UAEL,GAAIF,GAAD,IAAS;AACX,UAAMvH,YAAY,GAAG,UAArB;;AACA,QAAI,CAACyC,OAAL,EAAc;AACZ,2BAASgB,MAAT,EAAiBzE,2BAAjB,EAAmCgB,YAAnC;AACA,aAAOH,OAAO,CAACC,OAAR,EAAP;AACD;;AACD,WAAO2C,OAAO,CAACiF,QAAR,CAAiBH,GAAjB,CAAP;AACD,GATD;;AAWA,MAAIxF,aAAa,GAAGU,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEkF,qBAAT,EAApB;;AACA,MAAI,CAAC/G,KAAK,CAACJ,MAAN,CAAaE,UAAd,IAA4BE,KAAK,CAACmB,aAAtC,EAAqD;AACnD;AACAA,IAAAA,aAAa,GAAGuD,KAAK,CAACsC,IAAN,CAAWhH,KAAK,CAACmB,aAAjB,EAAgC,CAAC,CAAC8F,IAAD,EAAO7B,IAAP,CAAD,KAAkBA,IAAlD,CAAhB;AACD;;AAED,QAAM8B,oBAGL,GAAG,MAAOpC,MAAP,IAAkB;AACpB,UAAM1F,YAAY,GAAG,sBAArB;AACA,UAAMwG,UAAU,CAACd,MAAD,EAAS1F,YAAT,EAAuByC,OAAvB,EAAgCgB,MAAhC,CAAhB;AACD,GAND;;AAOA,QAAMsE,wBAAwB,GAAG,YAAY;AAC3C,QAAI,CAACtF,OAAL,EAAc;AACZ,0BAAQgB,MAAR,EAAgBzE,2BAAhB,EAAkC,0BAAlC;AACA;AACD;;AACD,UAAMyD,OAAO,CAACsF,wBAAR,EAAN;AACD,GAND;;AAQA,QAAMC,gBAAgB,GAAG,CACvBtC,MADuB,EAEvBC,WAFuB,KAGpB;AACH,UAAM3F,YAAY,GAAG,kBAArB;AACA,WAAOwF,mBAAmB,CAAC;AACzBxF,MAAAA,YADyB;AAEzBY,MAAAA,KAFyB;AAGzB6B,MAAAA,OAHyB;AAIzBgB,MAAAA,MAJyB;AAKzBiC,MAAAA,MALyB;AAMzBC,MAAAA;AANyB,KAAD,CAA1B;AAQD,GAbD;;AAeA,QAAMsC,mBAA2D,GAC/DrJ,GADkE,IAE/D;AACH,WAAOyH,sBAAsB,CAAC;AAAEzH,MAAAA,GAAF;AAAOgC,MAAAA,KAAP;AAAc6B,MAAAA;AAAd,KAAD,CAA7B;AACD,GAJD;;AAMA,WAASkE,OAAT,CAAqB/H,GAArB,EAAkCD,YAAlC,EAA6D;AAC3D,QAAI,CAAC8D,OAAL,EAAc;AACZ,aAAO,IAAIhE,UAAJ,CAASE,YAAT,EAAuBC,GAAvB,EAA4BgC,KAAK,CAACmB,aAAlC,CAAP;AACD;;AACD,WAAOU,OAAO,CAACkE,OAAR,CAAgB/H,GAAhB,EAAqBD,YAArB,CAAP;AACD;;AAED,WAAS+D,UAAT,GAAsC;AACpC,QAAI,CAACD,OAAL,EAAc;AACZ,0BAAQgB,MAAR,EAAgBzE,2BAAhB,EAAkC,YAAlC;AACA,aAAOa,OAAO,CAACC,OAAR,EAAP;AACD;;AACD,WAAO2C,OAAO,CAACC,UAAR,EAAP;AACD;;AAED,WAASwF,UAAT,CAAqB/D,YAArB,EAAkD;AAChD,QAAI,CAAC1B,OAAL,EAAc;AACZ,0BAAQgB,MAAR,EAAgBzE,2BAAhB,EAAkC,YAAlC;AACA;AACD;;AACDyD,IAAAA,OAAO,CAACyF,UAAR,CAAmB/D,YAAnB;AACD;;AAED,SAAO;AACLJ,IAAAA,SAAS,EAAEtB,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAEsB,SADf;AAELoE,IAAAA,WAAW,EAAE1F,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAE0F,WAFjB;AAGLlE,IAAAA,OAAO,EAAE,EAAE,IAAGxB,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEwB,OAAZ;AAAF,KAHJ;AAILE,IAAAA,YAAY,EAAE1B,OAAF,aAAEA,OAAF,uBAAEA,OAAO,CAAE0B,YAJlB;AAKL+D,IAAAA,UALK;AAMLlB,IAAAA,aAAa,EAAEF,eANV;AAOLC,IAAAA,YAAY,EAAEE,cAPT;AAQLE,IAAAA,YAAY,EAAED,cART;AASLG,IAAAA,cAAc,EAAED,gBATX;AAUL5G,IAAAA,MAAM,EAAEI,KAAK,CAACJ,MAVT;AAWLsH,IAAAA,oBAXK;AAYLC,IAAAA,wBAZK;AAaLC,IAAAA,gBAbK;AAcLjG,IAAAA,aAAa,EAAEA,aAAa,IAAI,EAd3B;AAeLlD,IAAAA,SAAS,EAAE,CAAA4D,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAE2F,iBAAT,OAAgC,EAftC;AAgBLH,IAAAA,mBAhBK;AAiBLV,IAAAA,GAAG,EAAE;AACHc,MAAAA,IAAI,EAAEf,SADH;AAEHgB,MAAAA,YAAY,EAAEb;AAFX,KAjBA;AAqBLd,IAAAA,OArBK;AAsBLjE,IAAAA;AAtBK,GAAP;AAwBD,CA9JM;;;;;;;;;;;;;;;;;;ACnSA,MAAM1D,gBAAgB,GAAG,mCAAzB;;AACA,MAAMiH,gBAAgB,GAAG,kDAAzB;;AAEE,MAAM1G,mBAAmB,GAAE,mEAA3B;;AACA,MAAMY,uBAAuB,GAAG,+FAAhC;;;;;;;;;;;;;;;;;ACJT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACFA;;AAMA;;AAEO,SAASoI,QAAT,CACL9E,MADK,EAELG,OAFK,EAGL4E,GAHK,EAIC;AACN,MACE,CAAC/E,MAAD,IACA,CAACA,MAAM,CAACgF,UADR,IAEA,OAAOhF,MAAM,CAACgF,UAAP,CAAkB9E,KAAzB,KAAmC,UAFnC,IAGA,CAACF,MAAM,CAACiF,QAHR,IAIAjF,MAAM,CAACiF,QAAP,GAAkBC,gBAASC,KAL7B,EAME;AACA;AACD;;AAEDnF,EAAAA,MAAM,CAACgF,UAAP,CAAkB9E,KAAlB,CAAwBC,OAAxB,EAAiC4E,GAAjC;AACD;;AAEM,SAASK,OAAT,CACLpF,MADK,EAELG,OAFK,EAGL4E,GAHK,EAIC;AACN,MACE,CAAC/E,MAAD,IACA,CAACA,MAAM,CAACgF,UADR,IAEA,OAAOhF,MAAM,CAACgF,UAAP,CAAkBK,IAAzB,KAAkC,UAFlC,IAGA,CAACrF,MAAM,CAACiF,QAHR,IAIAjF,MAAM,CAACiF,QAAP,GAAkBC,gBAASI,IAL7B,EAME;AACA;AACD;;AACDtF,EAAAA,MAAM,CAACgF,UAAP,CAAkBK,IAAlB,CAAuBlF,OAAvB,EAAgC4E,GAAhC;AACD;;AAEM,SAASQ,OAAT,CACLvF,MADK,EAELG,OAFK,EAGL4E,GAHK,EAIC;AACN,MACE,CAAC/E,MAAD,IACA,CAACA,MAAM,CAACgF,UADR,IAEA,OAAOhF,MAAM,CAACgF,UAAP,CAAkBQ,OAAzB,KAAqC,UAFrC,IAGA,CAACxF,MAAM,CAACiF,QAHR,IAIAjF,MAAM,CAACiF,QAAP,GAAkBC,gBAASO,OAL7B,EAME;AACA;AACD;;AACDzF,EAAAA,MAAM,CAACgF,UAAP,CAAkBQ,OAAlB,CAA0BrF,OAA1B,EAAmC4E,GAAnC;AACD;;AAEM,MAAMW,6BAA6B,GACxCC,SAD2C,IAEb;AAC9B,QAAMrH,aAAa,GAAG,IAAIC,GAAJ,EAAtB;;AACA,MAAI,CAACoH,SAAD,IAAc,CAAC9D,KAAK,CAACC,OAAN,CAAc6D,SAAd,CAAnB,EAA6C;AAC3C,WAAOrH,aAAP;AACD;;AACDqH,EAAAA,SAAS,CAACnH,OAAV,CAAmBoH,QAAD,IAAc;AAC9B,UAAMC,MAAM,GAAGD,QAAQ,CAACE,SAAT,CAAmBxH,aAAnB,CAAiC1C,KAAhD;;AACA,SAAK,MAAMT,GAAX,IAAkB0K,MAAlB,EAA0B;AACxB,YAAMjK,KAAK,GAAGiK,MAAM,CAAC1K,GAAD,CAApB;AACAmD,MAAAA,aAAa,CAACG,GAAd,CAAkBtD,GAAlB,EAAuB;AACrBA,QAAAA,GADqB;AAErBa,QAAAA,UAAU,EAAE4J,QAAQ,CAACrF,EAFA;AAGrBrE,QAAAA,gBAAgB,EAAE0J,QAAQ,CAAC1J,gBAHN;AAIrBD,QAAAA,WAAW,EAAE2J,QAAQ,CAACE,SAAT,CAAmBvF,EAJX;AAKrB5D,QAAAA,WAAW,EAAEiJ,QAAQ,CAACE,SAAT,CAAmBC,SALX;AAMrBnK,QAAAA;AANqB,OAAvB;AAQD;AACF,GAbD;AAcA,SAAO0C,aAAP;AACD,CAtBM;;;;AAwBA,SAAS0H,MAAT,GAA2B;AAChC,SAAO,uCAAuCC,OAAvC,CACL,OADK,EAEL,UAAUC,IAAV,EAAgB;AACd,UAAMC,IAAI,GAAIC,IAAI,CAACC,MAAL,KAAgB,EAAjB,GAAuB,CAApC;AACA,UAAMzK,KAAK,GAAGsK,IAAI,KAAK,GAAT,GAAeC,IAAf,GAAuBA,IAAI,GAAG,GAAR,GAAe,GAAnD;AACA,WAAOvK,KAAK,CAAC0K,QAAN,CAAe,EAAf,CAAP;AACD,GANI,CAAP;AAQD;;AAEM,SAASC,mBAAT,CACLC,MADK,EAELC,IAFK,EAGC;AACN,QAAMC,aAAa,GAAG,mBAAO,IAAP,CAAtB;AAEA,wBAAU,MAAM;AACd,QAAIA,aAAa,CAAC3H,OAAlB,EAA2B;AACzB2H,MAAAA,aAAa,CAAC3H,OAAd,GAAwB,KAAxB;AACA;AACD;;AAED,QAAI,OAAOyH,MAAP,KAAkB,UAAtB,EAAkC;AAChC,aAAOA,MAAM,EAAb;AACD;AACF,GATD,EASGC,IATH;AAUD;;AAEM,SAASE,WAAT,CAAsBC,SAAtB,EAAyC1L,YAAzC,EAAuE;AAC5E,MAAI,OAAO0L,SAAP,KAAqB,OAAO1L,YAAhC,EAA8C;AAC5C,WAAO,KAAP;AACD;;AACD,MAAI,OAAO0L,SAAP,KAAqB,QAArB,IAAiC,OAAO1L,YAAP,KAAwB,QAAzD,IACJ2G,KAAK,CAACC,OAAN,CAAc8E,SAAd,MAA6B/E,KAAK,CAACC,OAAN,CAAc5G,YAAd,CAD7B,EAEE;AACA,WAAO,KAAP;AACD;;AACD,SAAO,IAAP;AACD,EAED;;;AACO,SAAS2L,OAAT,CAAkBC,MAAlB,EAAkC,GAAGlL,KAArC,EAA2D;AAChE,MAAImL,SAAS,GAAGD,MAAhB;;AACA,OAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGpL,KAAK,CAACqL,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;AACrC,UAAME,OAAO,GAAGtL,KAAK,CAACoL,CAAD,CAArB;AACAD,IAAAA,SAAS,GAAGA,SAAS,CAACd,OAAV,CAAkB,IAAIkB,MAAJ,CAAY,MAAKH,CAAE,KAAnB,EAAyB,GAAzB,CAAlB,EAAiDE,OAAjD,CAAZ;AACD;;AACD,SAAOH,SAAP;AACD;;;;;;;;;;ACrID;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UEtBA;UACA;UACA;UACA","sources":["webpack://@flagship.io/react-sdk/./src/Flag.ts","webpack://@flagship.io/react-sdk/./src/FlagshipContext.tsx","webpack://@flagship.io/react-sdk/./src/FlagshipHooks.tsx","webpack://@flagship.io/react-sdk/./src/constants.ts","webpack://@flagship.io/react-sdk/./src/index.tsx","webpack://@flagship.io/react-sdk/./src/utils.tsx","webpack://@flagship.io/react-sdk/external commonjs \"@flagship.io/js-sdk\"","webpack://@flagship.io/react-sdk/external commonjs \"core-js/modules/es.promise.js\"","webpack://@flagship.io/react-sdk/external commonjs \"react\"","webpack://@flagship.io/react-sdk/webpack/bootstrap","webpack://@flagship.io/react-sdk/webpack/before-startup","webpack://@flagship.io/react-sdk/webpack/startup","webpack://@flagship.io/react-sdk/webpack/after-startup"],"sourcesContent":["import Flagship, { FlagDTO, FlagMetadata, IFlag, IFlagMetadata } from '@flagship.io/js-sdk'\nimport { GET_FLAG_CAST_ERROR, GET_METADATA_CAST_ERROR, noVisitorMessage } from './constants'\nimport { hasSameType, logInfo, logWarn, sprintf } from './utils'\n\nexport class Flag<T> implements IFlag<T> {\n private defaultValue:T\n private flagsData: Map<string, FlagDTO> | undefined\n private key: string\n private flag?: FlagDTO\n constructor (defaultValue:T, key: string, flagsData: Map<string, FlagDTO> | undefined) {\n if (!flagsData) {\n logWarn(Flagship.getConfig(), noVisitorMessage, 'GetFlag')\n }\n this.defaultValue = defaultValue\n this.key = key\n this.flag = flagsData?.get(key)\n }\n\n private NotSameType () {\n return this.defaultValue !== null && this.defaultValue !== undefined && !hasSameType(this.flag?.value, this.defaultValue)\n }\n\n getValue (): T {\n if (!this.flag) {\n logWarn(Flagship.getConfig(), noVisitorMessage, 'getValue')\n return this.defaultValue\n }\n\n if (this.NotSameType()) {\n logInfo(\n Flagship.getConfig(),\n sprintf(GET_FLAG_CAST_ERROR, this.key),\n 'getValue'\n )\n return this.defaultValue\n }\n return this.flag.value\n }\n\n exists ():boolean {\n if (!this.flag) {\n logWarn(Flagship.getConfig(), noVisitorMessage, 'exists')\n return false\n }\n return !!(this.flag.campaignId && this.flag.variationId && this.flag.variationGroupId)\n }\n\n userExposed (): Promise<void> {\n if (!this.flag) {\n logWarn(Flagship.getConfig(), noVisitorMessage, 'userExposed')\n }\n\n return Promise.resolve()\n }\n\n get metadata ():IFlagMetadata {\n const functionName = 'metadata'\n if (!this.flag) {\n logWarn(Flagship.getConfig(), noVisitorMessage, functionName)\n return FlagMetadata.Empty()\n }\n if (this.NotSameType()) {\n logInfo(\n Flagship.getConfig(),\n sprintf(GET_METADATA_CAST_ERROR, this.key),\n functionName\n )\n return FlagMetadata.Empty()\n }\n\n return new FlagMetadata({\n campaignId: this.flag.campaignId,\n variationGroupId: this.flag.variationGroupId,\n variationId: this.flag.variationId,\n isReference: !!this.flag.isReference,\n campaignType: this.flag.campaignType as string,\n slug: this.flag.slug\n })\n }\n}\n","// eslint-disable-next-line no-use-before-define\nimport React, {\n useState,\n useEffect,\n ReactNode,\n createContext,\n Dispatch,\n SetStateAction,\n useRef\n} from 'react'\nimport {\n BucketingDTO,\n CampaignDTO,\n FlagDTO,\n Flagship,\n FlagshipStatus,\n IFlagshipConfig,\n primitive,\n Visitor\n} from '@flagship.io/js-sdk'\nimport {\n getModificationsFromCampaigns,\n logError,\n useNonInitialEffect\n} from './utils'\n\nexport interface FsStatus {\n /**\n * Boolean. When true, the SDK is still not ready to render your App otherwise it'll use default modifications.\n */\n isLoading: boolean;\n /**\n * Boolean. true after it has fully finished initialization tasks, false otherwise.\n */\n isSdkReady: boolean;\n\n lastModified?: Date;\n /**\n * Boolean. When true the flagship visitor instance is truthy, false otherwise.\n */\n isVisitorDefined?: boolean;\n /**\n * String or null. The last update date occurred on the flagship visitor instance.\n */\n lastRefresh?: string;\n /**\n * String or null. When null no initialization succeed yet. When string contains stringified date of last successful initialization.\n */\n firstInitSuccess?: string;\n}\nexport interface FsState {\n visitor?: Visitor;\n config?: IFlagshipConfig;\n modifications?: Map<string, FlagDTO>;\n status: FsStatus;\n initialCampaigns?: CampaignDTO[];\n initialModifications?: Map<string, FlagDTO> | FlagDTO[];\n}\n\nexport type VisitorData = {\n id?: string;\n context?: Record<string, primitive>;\n isAuthenticated?: boolean;\n hasConsented?: boolean;\n};\ninterface FsContext {\n state: FsState;\n setState?: Dispatch<SetStateAction<FsState>>;\n}\n\nexport interface FlagshipProviderProps extends IFlagshipConfig {\n /**\n * This is the data to identify the current visitor using your app\n */\n visitorData: VisitorData | null;\n envId: string;\n apiKey: string;\n /**\n * This component will be rendered when Flagship is loading at first initialization only.\n * By default, the value is undefined. It means it will display your app and it might\n * display default modifications value for a very short moment.\n */\n loadingComponent?: ReactNode;\n children?: ReactNode;\n\n /**\n * Callback function called when the SDK starts initialization.\n */\n onInitStart?(): void;\n /**\n * Callback function called when the SDK ends initialization.\n */\n onInitDone?(): void;\n /**\n * Callback function called when the SDK is updated. For example, after a synchronize is triggered or visitor context has changed.\n */\n onUpdate?(params: {\n fsModifications: Map<string, FlagDTO>;\n config: IFlagshipConfig;\n status: FsStatus;\n }): void;\n /**\n * This is an object of the data received when fetching bucketing endpoint.\n * Providing this prop will make bucketing ready to use and the first polling will immediatly check for an update.\n * If the shape of an element is not correct, an error log will give the reason why.\n */\n initialBucketing?: BucketingDTO;\n initialCampaigns?: CampaignDTO[];\n /**\n * This is a set of flag data provided to avoid the SDK to have an empty cache during the first initialization.\n * @deprecated use initialFlagsData instead\n */\n initialModifications?: Map<string, FlagDTO> | FlagDTO[];\n\n /**\n * This is a set of flag data provided to avoid the SDK to have an empty cache during the first initialization.\n */\n initialFlagsData?: Map<string, FlagDTO> | FlagDTO[];\n /**\n * If true, it'll automatically call synchronizeModifications when the bucketing file has updated\n */\n fetchFlagsOnBucketingUpdated?: boolean;\n}\n\nconst initStat: FsState = {\n status: { isLoading: true, isSdkReady: false }\n}\n\nexport const FlagshipContext = createContext<FsContext>({\n state: { ...initStat }\n})\n\nexport const FlagshipProvider: React.FC<FlagshipProviderProps> = ({\n children,\n fetchNow,\n envId,\n apiKey,\n decisionMode,\n visitorData,\n onInitStart,\n onInitDone,\n loadingComponent,\n statusChangedCallback,\n onBucketingUpdated,\n onUpdate,\n initialCampaigns,\n initialModifications,\n initialFlagsData,\n fetchFlagsOnBucketingUpdated,\n ...props\n}: FlagshipProviderProps) => {\n let modifications = new Map<string, FlagDTO>()\n if (initialFlagsData && initialFlagsData.forEach) {\n initialFlagsData.forEach((flag) => {\n modifications.set(flag.key, flag)\n })\n } else if (initialModifications && initialModifications.forEach) {\n initialModifications.forEach((modification) => {\n modifications.set(modification.key, modification)\n })\n } else if (initialCampaigns) {\n modifications = getModificationsFromCampaigns(initialCampaigns)\n }\n\n const [state, setState] = useState<FsState>({ ...initStat, modifications })\n const [lastModified, setLastModified] = useState<Date>()\n const stateRef = useRef<FsState>()\n stateRef.current = state\n\n useNonInitialEffect(() => {\n if (fetchFlagsOnBucketingUpdated) {\n state.visitor?.fetchFlags()\n }\n }, [lastModified])\n\n useNonInitialEffect(() => {\n createVisitor(true)\n }, [JSON.stringify(visitorData)])\n\n useEffect(() => {\n initSdk()\n }, [envId, apiKey, decisionMode])\n\n function initializeState (param: {\n fsVisitor: Visitor;\n isLoading: boolean;\n isSdkReady: boolean;\n }) {\n const newStatus: FsStatus = {\n isSdkReady: param.isSdkReady,\n isLoading: param.isLoading,\n isVisitorDefined: !!param.fsVisitor,\n lastRefresh: new Date().toISOString()\n }\n\n setState((currentState) => {\n if (!currentState.status.firstInitSuccess) {\n newStatus.firstInitSuccess = new Date().toISOString()\n }\n\n return {\n ...currentState,\n visitor: param.fsVisitor,\n modifications: param.fsVisitor.modifications,\n config: Flagship.getConfig(),\n status: {\n ...currentState.status,\n ...newStatus\n }\n }\n })\n\n return newStatus\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const onVisitorReady = (fsVisitor: Visitor, error: any) => {\n if (error) {\n logError(Flagship.getConfig(), error.message || error, 'onReady')\n return\n }\n\n const newStatus = initializeState({\n fsVisitor,\n isSdkReady: true,\n isLoading: false\n })\n\n if (onUpdate) {\n onUpdate({\n fsModifications: fsVisitor.modifications,\n config: Flagship.getConfig(),\n status: newStatus\n })\n }\n }\n\n const createVisitor = (fetchFlags = false) => {\n if (!visitorData) {\n return\n }\n\n const fsVisitor = Flagship.newVisitor({\n visitorId: visitorData.id,\n context: visitorData.context,\n isAuthenticated: visitorData.isAuthenticated,\n hasConsented: visitorData.hasConsented,\n initialCampaigns,\n initialModifications,\n initialFlagsData\n })\n\n fsVisitor?.on('ready', (error) => {\n onVisitorReady(fsVisitor, error)\n })\n\n if (!fetchNow && fsVisitor && !fetchFlags) {\n initializeState({\n fsVisitor,\n isSdkReady: true,\n isLoading: false\n })\n }\n if (fetchFlags && !fetchNow) {\n fsVisitor?.fetchFlags()\n }\n }\n const statusChanged = (status: FlagshipStatus) => {\n if (statusChangedCallback) {\n statusChangedCallback(status)\n }\n\n switch (status) {\n case FlagshipStatus.STARTING:\n if (status === FlagshipStatus.STARTING && onInitStart) {\n onInitStart()\n }\n break\n case FlagshipStatus.READY_PANIC_ON:\n case FlagshipStatus.READY:\n if (onInitDone) {\n onInitDone()\n }\n\n createVisitor()\n\n break\n case FlagshipStatus.NOT_INITIALIZED:\n setState((prev) => ({ ...prev, config: Flagship.getConfig() }))\n break\n }\n }\n\n const onBucketingLastModified = (lastUpdate: Date) => {\n if (onBucketingUpdated) {\n onBucketingUpdated(lastUpdate)\n }\n setLastModified(lastUpdate)\n }\n\n const initSdk = () => {\n Flagship.start(envId, apiKey, {\n decisionMode,\n fetchNow,\n statusChangedCallback: statusChanged,\n onBucketingUpdated: onBucketingLastModified,\n ...props\n })\n }\n const handleDisplay = (): React.ReactNode => {\n const isFirstInit = !state.visitor\n if (state.status.isLoading && loadingComponent && isFirstInit && fetchNow) {\n return <>{loadingComponent}</>\n }\n return <>{children}</>\n }\n return (\n <FlagshipContext.Provider value={{ state, setState }}>\n {handleDisplay()}\n </FlagshipContext.Provider>\n )\n}\n\nFlagshipProvider.defaultProps = {\n activateDeduplicationTime: 2,\n hitDeduplicationTime: 2,\n fetchNow: true,\n language: 1\n}\n","import { useContext } from 'react'\nimport {\n FlagDTO,\n HitAbstract,\n HitShape,\n IFlag,\n IFlagshipConfig,\n IHit,\n Modification,\n modificationsRequested,\n primitive,\n Visitor\n} from '@flagship.io/js-sdk'\nimport { FlagshipContext, FsState, FsStatus } from './FlagshipContext'\nimport { logError, logWarn } from './utils'\nimport { Flag } from './Flag'\nimport { noVisitorDefault, noVisitorMessage } from './constants'\n\nconst checkType = (value: unknown, defaultValue: unknown) =>\n (typeof value === 'object' &&\n typeof defaultValue === 'object' &&\n Array.isArray(value) === Array.isArray(defaultValue)) ||\n typeof value === typeof defaultValue\n\nconst fsModificationsSync = <T extends unknown>(args: {\n functionName: string;\n params: modificationsRequested<T>[];\n activateAll?: boolean;\n state: FsState;\n visitor?: Visitor;\n config?: IFlagshipConfig;\n}): Record<string, T> => {\n const { visitor, params, activateAll, state, functionName, config } = args\n if (visitor) {\n return visitor.getModificationsSync(params, activateAll)\n }\n\n const check =\n !state.status.isSdkReady &&\n !!state.modifications &&\n state.modifications.size > 0\n const flags: Record<string, T> = {}\n\n if (check) {\n params.forEach((item) => {\n const modification = state.modifications?.get(item.key)\n\n if (modification && checkType(modification?.value, item.defaultValue)) {\n flags[item.key] = modification.value\n } else {\n flags[item.key] = item.defaultValue\n }\n })\n return flags\n }\n\n logWarn(config, noVisitorDefault, functionName)\n params.forEach((item) => {\n flags[item.key] = item.defaultValue\n })\n return flags\n}\n\n/**\n * 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.\n * @deprecated use useFsFlag instead\n */\nexport const useFsModifications = <T extends unknown>(\n params: modificationsRequested<T>[],\n activateAll?: boolean\n): Record<string, T> => {\n const { state } = useContext(FlagshipContext)\n const { visitor, config } = state\n const functionName = 'useFsModifications'\n\n return fsModificationsSync({\n functionName,\n state,\n visitor,\n config,\n params,\n activateAll\n })\n}\n\n/**\n * 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.\n * @deprecated use useFsFlag instead\n */\nexport const useFsModification: {\n <T>(params: modificationsRequested<T>): T;\n} = (params) => {\n const { state } = useContext(FlagshipContext)\n const { visitor, config } = state\n const functionName = 'useFsModifications'\n\n if (visitor) {\n return visitor.getModificationSync(params)\n }\n\n const modification = state.modifications?.get(params.key)\n\n if (\n !state.status.isSdkReady &&\n modification &&\n checkType(modification?.value, params.defaultValue)\n ) {\n return modification.value\n }\n\n logWarn(config, noVisitorDefault, functionName)\n return params.defaultValue\n}\n\nconst fsModificationInfoSync = (args: {\n key: string;\n state: FsState;\n visitor?: Visitor;\n}) => {\n const { key, visitor, state } = args\n if (visitor) {\n return visitor.getModificationInfoSync(key)\n }\n const modification = state.modifications?.get(key)\n if (!state.status.isSdkReady && modification) {\n return modification\n }\n return null\n}\n\n/**\n * Get the campaign modification information value matching the given key.\n * @param {string} key key which identify the modification.\n * @deprecated use useFsFlag instead\n */\nexport const useFsModificationInfo: { (key: string): Modification | null } = (\n key: string\n) => {\n const { state } = useContext(FlagshipContext)\n const { visitor } = state\n return fsModificationInfoSync({ key, state, visitor })\n}\n\nconst fsActivate = async (\n params: { key: string }[] | string[],\n functionName: string,\n visitor?: Visitor,\n config?: IFlagshipConfig\n) => {\n try {\n if (!visitor) {\n logWarn(config, noVisitorMessage, functionName)\n return\n }\n await visitor.activateModifications(params)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n logWarn(config, error.message || error, functionName)\n }\n}\n\n/**\n * This hook returns a flag object by its key. If no flag match the given key an empty flag will be returned.\n * @param key\n * @param defaultValue\n * @returns\n */\nexport const useFsFlag = <T extends unknown>(\n key: string,\n defaultValue: T\n): IFlag<T> => {\n const { state } = useContext(FlagshipContext)\n const { visitor } = state\n\n if (!visitor) {\n return new Flag(defaultValue, key, state.modifications)\n }\n\n return visitor.getFlag(key, defaultValue)\n}\n\n/**\n * Report this user has seen this modification. Report this user has seen these modifications.\n * @param params\n * @deprecated use useFsFlag instead\n * @returns\n */\nexport const useFsActivate: {\n (keys: { key: string }[]): Promise<void>;\n (keys: string[]): Promise<void>;\n} = async (params) => {\n const { state } = useContext(FlagshipContext)\n const { visitor, config } = state\n const functionName = 'useFsModifications'\n\n await fsActivate(params, functionName, visitor, config)\n}\n\nexport type UseFlagshipParams<T> = {\n modifications: {\n requested: modificationsRequested<T>[];\n activateAll?: boolean;\n };\n};\n\nexport type UseFlagshipOutput = {\n visitorId?: string;\n anonymousId?: string | null;\n context?: Record<string, primitive>;\n hasConsented?: boolean;\n /**\n * Set if visitor has consented for protected data usage.\n * @param hasConsented True if the visitor has consented false otherwise.\n */\n setConsent: (hasConsented: boolean) => void;\n modifications: Modification[];\n flagsData: FlagDTO[];\n status: FsStatus;\n /**\n *\n * @param params\n * @param activateAll\n * @deprecated use getFlag instead\n */\n getModifications<T>(\n params: modificationsRequested<T>[],\n activateAll?: boolean\n ): Record<string, T>;\n\n /**\n *\n * @param key\n * @deprecated use getFlag instead\n */\n getModificationInfo(key: string): Modification | null;\n\n /**\n * @deprecated use fetchFlags instead\n */\n synchronizeModifications(): Promise<void>;\n /**\n * @deprecated use getFlag instead\n */\n activateModification: {\n (keys: { key: string }[]): Promise<void>;\n (keys: string[]): Promise<void>;\n };\n /**\n * Update the visitor context values, matching the given keys, used for targeting.\n * A new context value associated with this key will be created if there is no previous matching value.\n * Context keys must be String, and values types must be one of the following : Number, Boolean, String.\n * @param context collection of keys, values.\n */\n updateContext(context: Record<string, primitive>): void;\n /**\n * clear the actual visitor context\n */\n clearContext(): void;\n /**\n * Authenticate anonymous visitor\n * @param visitorId\n */\n authenticate(visitorId: string): void;\n /**\n * This function change authenticated Visitor to anonymous visitor\n * @param visitorId\n */\n unauthenticate(): void;\n hit: {\n send: {\n (hit: HitAbstract): Promise<void>;\n (hit: IHit): Promise<void>;\n (hit: HitShape): Promise<void>;\n (hit: HitAbstract | IHit | HitShape): Promise<void>;\n };\n sendMultiple: {\n (hit: HitAbstract[]): Promise<void>;\n (hit: IHit[]): Promise<void>;\n (hit: HitShape[]): Promise<void>;\n (hit: HitAbstract[] | IHit[] | HitShape[]): Promise<void>;\n };\n };\n /**\n * Retrieve a Flag object by its key. If no flag match the given key an empty flag will be returned.\n * @param key flag key\n * @param defaultValue\n */\n getFlag<T>(key: string, defaultValue: T): IFlag<T>;\n fetchFlags: () => Promise<void>;\n};\n\nexport const useFlagship = (): UseFlagshipOutput => {\n const { state } = useContext(FlagshipContext)\n const { visitor, config } = state\n\n const fsUpdateContext = (context: Record<string, primitive>): void => {\n const functionName = 'updateContext'\n if (!visitor) {\n logError(config, noVisitorMessage, functionName)\n return\n }\n visitor.clearContext()\n visitor.updateContext(context)\n }\n\n const fsClearContext = (): void => {\n const functionName = 'cleanContext'\n if (!visitor) {\n logError(config, noVisitorMessage, functionName)\n return\n }\n visitor.clearContext()\n }\n\n const fsAuthenticate = (visitorId: string): void => {\n const functionName = 'authenticate'\n if (!visitor) {\n logError(config, noVisitorMessage, functionName)\n return\n }\n visitor.authenticate(visitorId)\n }\n\n const fsUnauthenticate = (): void => {\n const functionName = 'unauthenticate'\n if (!visitor) {\n logError(config, noVisitorMessage, functionName)\n return\n }\n visitor.unauthenticate()\n }\n\n /**\n * Send a Hit to Flagship servers for reporting.\n */\n const fsSendHit: {\n (hit: HitAbstract | IHit | HitShape): Promise<void>;\n } = (hit) => {\n const functionName = 'sendHit'\n if (!visitor) {\n logError(config, noVisitorMessage, functionName)\n return Promise.resolve()\n }\n return visitor.sendHit(hit)\n }\n\n /**\n * Send a Hit to Flagship servers for reporting.\n */\n const fsSendHits: {\n (hit: HitAbstract[] | IHit[] | HitShape[]): Promise<void>;\n } = (hit) => {\n const functionName = 'sendHits'\n if (!visitor) {\n logError(config, noVisitorMessage, functionName)\n return Promise.resolve()\n }\n return visitor.sendHits(hit)\n }\n\n let modifications = visitor?.getModificationsArray()\n if (!state.status.isSdkReady && state.modifications) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n modifications = Array.from(state.modifications, ([_key, item]) => item)\n }\n\n const activateModification: {\n (keys: { key: string }[]): Promise<void>;\n (keys: string[]): Promise<void>;\n } = async (params) => {\n const functionName = 'activateModification'\n await fsActivate(params, functionName, visitor, config)\n }\n const synchronizeModifications = async () => {\n if (!visitor) {\n logWarn(config, noVisitorMessage, 'synchronizeModifications')\n return\n }\n await visitor.synchronizeModifications()\n }\n\n const getModifications = <T extends unknown>(\n params: modificationsRequested<T>[],\n activateAll?: boolean\n ) => {\n const functionName = 'getModifications'\n return fsModificationsSync({\n functionName,\n state,\n visitor,\n config,\n params,\n activateAll\n })\n }\n\n const getModificationInfo: { (key: string): Modification | null } = (\n key: string\n ) => {\n return fsModificationInfoSync({ key, state, visitor })\n }\n\n function getFlag<T> (key: string, defaultValue: T): IFlag<T> {\n if (!visitor) {\n return new Flag(defaultValue, key, state.modifications)\n }\n return visitor.getFlag(key, defaultValue)\n }\n\n function fetchFlags (): Promise<void> {\n if (!visitor) {\n logWarn(config, noVisitorMessage, 'fetchFlags')\n return Promise.resolve()\n }\n return visitor.fetchFlags()\n }\n\n function setConsent (hasConsented: boolean): void {\n if (!visitor) {\n logWarn(config, noVisitorMessage, 'setConsent')\n return\n }\n visitor.setConsent(hasConsented)\n }\n\n return {\n visitorId: visitor?.visitorId,\n anonymousId: visitor?.anonymousId,\n context: { ...visitor?.context },\n hasConsented: visitor?.hasConsented,\n setConsent,\n updateContext: fsUpdateContext,\n clearContext: fsClearContext,\n authenticate: fsAuthenticate,\n unauthenticate: fsUnauthenticate,\n status: state.status,\n activateModification,\n synchronizeModifications,\n getModifications,\n modifications: modifications || [],\n flagsData: visitor?.getFlagsDataArray() || [],\n getModificationInfo,\n hit: {\n send: fsSendHit,\n sendMultiple: fsSendHits\n },\n getFlag,\n fetchFlags\n }\n}\n","export const noVisitorMessage = 'flagship Visitor not initialized.'\nexport const noVisitorDefault = 'fsVisitor not initialized, returns default value'\n\n export const GET_FLAG_CAST_ERROR ='Flag for key {0} has a different type. Default value is returned.'\n export const GET_METADATA_CAST_ERROR = 'Flag for key {0} has a different type with defaultValue, an empty metadata object is returned'\n","export * from './FlagshipContext'\nexport * from '@flagship.io/js-sdk'\nexport * from './FlagshipHooks'\n","import {\n CampaignDTO,\n IFlagshipConfig,\n LogLevel,\n Modification\n} from '@flagship.io/js-sdk'\nimport { EffectCallback, DependencyList, useEffect, useRef } from 'react'\n\nexport function logError (\n config: IFlagshipConfig | undefined,\n message: string,\n tag: string\n): void {\n if (\n !config ||\n !config.logManager ||\n typeof config.logManager.error !== 'function' ||\n !config.logLevel ||\n config.logLevel < LogLevel.ERROR\n ) {\n return\n }\n\n config.logManager.error(message, tag)\n}\n\nexport function logInfo (\n config: IFlagshipConfig | undefined,\n message: string,\n tag: string\n): void {\n if (\n !config ||\n !config.logManager ||\n typeof config.logManager.info !== 'function' ||\n !config.logLevel ||\n config.logLevel < LogLevel.INFO\n ) {\n return\n }\n config.logManager.info(message, tag)\n}\n\nexport function logWarn (\n config: IFlagshipConfig | undefined,\n message: string,\n tag: string\n): void {\n if (\n !config ||\n !config.logManager ||\n typeof config.logManager.warning !== 'function' ||\n !config.logLevel ||\n config.logLevel < LogLevel.WARNING\n ) {\n return\n }\n config.logManager.warning(message, tag)\n}\n\nexport const getModificationsFromCampaigns = (\n campaigns: Array<CampaignDTO>\n): Map<string, Modification> => {\n const modifications = new Map<string, Modification>()\n if (!campaigns || !Array.isArray(campaigns)) {\n return modifications\n }\n campaigns.forEach((campaign) => {\n const object = campaign.variation.modifications.value\n for (const key in object) {\n const value = object[key]\n modifications.set(key, {\n key,\n campaignId: campaign.id,\n variationGroupId: campaign.variationGroupId,\n variationId: campaign.variation.id,\n isReference: campaign.variation.reference,\n value\n })\n }\n })\n return modifications\n}\n\nexport function uuidV4 (): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\n /[xy]/g,\n function (char) {\n const rand = (Math.random() * 16) | 0\n const value = char === 'x' ? rand : (rand & 0x3) | 0x8\n return value.toString(16)\n }\n )\n}\n\nexport function useNonInitialEffect (\n effect: EffectCallback,\n deps?: DependencyList\n): void {\n const initialRender = useRef(true)\n\n useEffect(() => {\n if (initialRender.current) {\n initialRender.current = false\n return\n }\n\n if (typeof effect === 'function') {\n return effect()\n }\n }, deps)\n}\n\nexport function hasSameType (flagValue:unknown, defaultValue:unknown):boolean {\n if (typeof flagValue !== typeof defaultValue) {\n return false\n }\n if (typeof flagValue === 'object' && typeof defaultValue === 'object' &&\n Array.isArray(flagValue) !== Array.isArray(defaultValue)\n ) {\n return false\n }\n return true\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function sprintf (format: string, ...value: any[]): string {\n let formatted = format\n for (let i = 0; i < value.length; i++) {\n const element = value[i]\n formatted = formatted.replace(new RegExp(`\\\\{${i}\\\\}`, 'g'), element)\n }\n return formatted\n}\n","module.exports = require(\"@flagship.io/js-sdk\");","module.exports = require(\"core-js/modules/es.promise.js\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.tsx\");\n",""],"names":["Flag","constructor","defaultValue","key","flagsData","Flagship","getConfig","noVisitorMessage","flag","get","NotSameType","undefined","value","getValue","GET_FLAG_CAST_ERROR","exists","campaignId","variationId","variationGroupId","userExposed","Promise","resolve","metadata","functionName","FlagMetadata","Empty","GET_METADATA_CAST_ERROR","isReference","campaignType","slug","initStat","status","isLoading","isSdkReady","FlagshipContext","state","FlagshipProvider","children","fetchNow","envId","apiKey","decisionMode","visitorData","onInitStart","onInitDone","loadingComponent","statusChangedCallback","onBucketingUpdated","onUpdate","initialCampaigns","initialModifications","initialFlagsData","fetchFlagsOnBucketingUpdated","props","modifications","Map","forEach","set","modification","setState","lastModified","setLastModified","stateRef","current","visitor","fetchFlags","createVisitor","JSON","stringify","initSdk","initializeState","param","newStatus","isVisitorDefined","fsVisitor","lastRefresh","Date","toISOString","currentState","firstInitSuccess","config","onVisitorReady","error","message","fsModifications","newVisitor","visitorId","id","context","isAuthenticated","hasConsented","on","statusChanged","FlagshipStatus","STARTING","READY_PANIC_ON","READY","NOT_INITIALIZED","prev","onBucketingLastModified","lastUpdate","start","handleDisplay","isFirstInit","defaultProps","activateDeduplicationTime","hitDeduplicationTime","language","checkType","Array","isArray","fsModificationsSync","args","params","activateAll","getModificationsSync","check","size","flags","item","noVisitorDefault","useFsModifications","useFsModification","getModificationSync","fsModificationInfoSync","getModificationInfoSync","useFsModificationInfo","fsActivate","activateModifications","useFsFlag","getFlag","useFsActivate","useFlagship","fsUpdateContext","clearContext","updateContext","fsClearContext","fsAuthenticate","authenticate","fsUnauthenticate","unauthenticate","fsSendHit","hit","sendHit","fsSendHits","sendHits","getModificationsArray","from","_key","activateModification","synchronizeModifications","getModifications","getModificationInfo","setConsent","anonymousId","getFlagsDataArray","send","sendMultiple","logError","tag","logManager","logLevel","LogLevel","ERROR","logInfo","info","INFO","logWarn","warning","WARNING","getModificationsFromCampaigns","campaigns","campaign","object","variation","reference","uuidV4","replace","char","rand","Math","random","toString","useNonInitialEffect","effect","deps","initialRender","hasSameType","flagValue","sprintf","format","formatted","i","length","element","RegExp"],"sourceRoot":""}
1
+ {"version":3,"file":"index.node.js","mappings":"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","sources":["webpack://@flagship.io/react-sdk/./src/Flag.ts","webpack://@flagship.io/react-sdk/./src/FlagshipContext.tsx","webpack://@flagship.io/react-sdk/./src/FlagshipHooks.tsx","webpack://@flagship.io/react-sdk/./src/constants.ts","webpack://@flagship.io/react-sdk/./src/index.tsx","webpack://@flagship.io/react-sdk/./src/sdkVersion.ts","webpack://@flagship.io/react-sdk/./src/utils.tsx","webpack://@flagship.io/react-sdk/external commonjs \"@flagship.io/js-sdk\"","webpack://@flagship.io/react-sdk/external commonjs \"core-js/modules/es.promise.js\"","webpack://@flagship.io/react-sdk/external commonjs \"react\"","webpack://@flagship.io/react-sdk/webpack/bootstrap","webpack://@flagship.io/react-sdk/webpack/before-startup","webpack://@flagship.io/react-sdk/webpack/startup","webpack://@flagship.io/react-sdk/webpack/after-startup"],"sourcesContent":["import Flagship, { FlagDTO, FlagMetadata, IFlag, IFlagMetadata } from '@flagship.io/js-sdk'\r\nimport { GET_FLAG_CAST_ERROR, GET_METADATA_CAST_ERROR, noVisitorMessage } from './constants'\r\nimport { hasSameType, logInfo, logWarn, sprintf } from './utils'\r\n\r\nexport class Flag<T> implements IFlag<T> {\r\n private defaultValue:T\r\n private flagsData: Map<string, FlagDTO> | undefined\r\n private key: string\r\n private flag?: FlagDTO\r\n constructor (defaultValue:T, key: string, flagsData: Map<string, FlagDTO> | undefined) {\r\n if (!flagsData) {\r\n logWarn(Flagship.getConfig(), noVisitorMessage, 'GetFlag')\r\n }\r\n this.defaultValue = defaultValue\r\n this.key = key\r\n this.flag = flagsData?.get(key)\r\n }\r\n\r\n private NotSameType () {\r\n return this.defaultValue !== null && this.defaultValue !== undefined && !hasSameType(this.flag?.value, this.defaultValue)\r\n }\r\n\r\n getValue (): T {\r\n if (!this.flag) {\r\n logWarn(Flagship.getConfig(), noVisitorMessage, 'getValue')\r\n return this.defaultValue\r\n }\r\n\r\n if (this.NotSameType()) {\r\n logInfo(\r\n Flagship.getConfig(),\r\n sprintf(GET_FLAG_CAST_ERROR, this.key),\r\n 'getValue'\r\n )\r\n return this.defaultValue\r\n }\r\n return this.flag.value\r\n }\r\n\r\n exists ():boolean {\r\n if (!this.flag) {\r\n logWarn(Flagship.getConfig(), noVisitorMessage, 'exists')\r\n return false\r\n }\r\n return !!(this.flag.campaignId && this.flag.variationId && this.flag.variationGroupId)\r\n }\r\n\r\n userExposed (): Promise<void> {\r\n if (!this.flag) {\r\n logWarn(Flagship.getConfig(), noVisitorMessage, 'userExposed')\r\n }\r\n\r\n return Promise.resolve()\r\n }\r\n\r\n get metadata ():IFlagMetadata {\r\n const functionName = 'metadata'\r\n if (!this.flag) {\r\n logWarn(Flagship.getConfig(), noVisitorMessage, functionName)\r\n return FlagMetadata.Empty()\r\n }\r\n if (this.NotSameType()) {\r\n logInfo(\r\n Flagship.getConfig(),\r\n sprintf(GET_METADATA_CAST_ERROR, this.key),\r\n functionName\r\n )\r\n return FlagMetadata.Empty()\r\n }\r\n\r\n return new FlagMetadata({\r\n campaignId: this.flag.campaignId,\r\n variationGroupId: this.flag.variationGroupId,\r\n variationId: this.flag.variationId,\r\n isReference: !!this.flag.isReference,\r\n campaignType: this.flag.campaignType as string,\r\n slug: this.flag.slug\r\n })\r\n }\r\n}\r\n","// eslint-disable-next-line no-use-before-define\r\nimport React, {\r\n useState,\r\n useEffect,\r\n ReactNode,\r\n createContext,\r\n Dispatch,\r\n SetStateAction,\r\n useRef\r\n} from 'react'\r\nimport {\r\n BucketingDTO,\r\n CampaignDTO,\r\n FlagDTO,\r\n Flagship,\r\n FlagshipStatus,\r\n IFlagshipConfig,\r\n primitive,\r\n Visitor\r\n} from '@flagship.io/js-sdk'\r\nimport {\r\n getModificationsFromCampaigns,\r\n logError,\r\n useNonInitialEffect\r\n} from './utils'\r\nimport { version as SDK_VERSION } from './sdkVersion'\r\n\r\nexport interface FsStatus {\r\n /**\r\n * Boolean. When true, the SDK is still not ready to render your App otherwise it'll use default modifications.\r\n */\r\n isLoading: boolean;\r\n /**\r\n * Boolean. true after it has fully finished initialization tasks, false otherwise.\r\n */\r\n isSdkReady: boolean;\r\n\r\n lastModified?: Date;\r\n /**\r\n * Boolean. When true the flagship visitor instance is truthy, false otherwise.\r\n */\r\n isVisitorDefined?: boolean;\r\n /**\r\n * String or null. The last update date occurred on the flagship visitor instance.\r\n */\r\n lastRefresh?: string;\r\n /**\r\n * String or null. When null no initialization succeed yet. When string contains stringified date of last successful initialization.\r\n */\r\n firstInitSuccess?: string;\r\n}\r\nexport interface FsState {\r\n visitor?: Visitor;\r\n config?: IFlagshipConfig;\r\n modifications?: Map<string, FlagDTO>;\r\n status: FsStatus;\r\n initialCampaigns?: CampaignDTO[];\r\n initialModifications?: Map<string, FlagDTO> | FlagDTO[];\r\n}\r\n\r\nexport type VisitorData = {\r\n id?: string;\r\n context?: Record<string, primitive>;\r\n isAuthenticated?: boolean;\r\n hasConsented?: boolean;\r\n};\r\ninterface FsContext {\r\n state: FsState;\r\n setState?: Dispatch<SetStateAction<FsState>>;\r\n}\r\n\r\nexport interface FlagshipProviderProps extends IFlagshipConfig {\r\n /**\r\n * This is the data to identify the current visitor using your app\r\n */\r\n visitorData: VisitorData | null;\r\n envId: string;\r\n apiKey: string;\r\n /**\r\n * This component will be rendered when Flagship is loading at first initialization only.\r\n * By default, the value is undefined. It means it will display your app and it might\r\n * display default modifications value for a very short moment.\r\n */\r\n loadingComponent?: ReactNode;\r\n children?: ReactNode;\r\n\r\n /**\r\n * Callback function called when the SDK starts initialization.\r\n */\r\n onInitStart?(): void;\r\n /**\r\n * Callback function called when the SDK ends initialization.\r\n */\r\n onInitDone?(): void;\r\n /**\r\n * Callback function called when the SDK is updated. For example, after a synchronize is triggered or visitor context has changed.\r\n */\r\n onUpdate?(params: {\r\n fsModifications: Map<string, FlagDTO>;\r\n config: IFlagshipConfig;\r\n status: FsStatus;\r\n }): void;\r\n /**\r\n * This is an object of the data received when fetching bucketing endpoint.\r\n * Providing this prop will make bucketing ready to use and the first polling will immediatly check for an update.\r\n * If the shape of an element is not correct, an error log will give the reason why.\r\n */\r\n initialBucketing?: BucketingDTO;\r\n initialCampaigns?: CampaignDTO[];\r\n /**\r\n * This is a set of flag data provided to avoid the SDK to have an empty cache during the first initialization.\r\n * @deprecated use initialFlagsData instead\r\n */\r\n initialModifications?: Map<string, FlagDTO> | FlagDTO[];\r\n\r\n /**\r\n * This is a set of flag data provided to avoid the SDK to have an empty cache during the first initialization.\r\n */\r\n initialFlagsData?: Map<string, FlagDTO> | FlagDTO[];\r\n /**\r\n * If true, it'll automatically call synchronizeModifications when the bucketing file has updated\r\n */\r\n fetchFlagsOnBucketingUpdated?: boolean;\r\n}\r\n\r\nconst initStat: FsState = {\r\n status: { isLoading: true, isSdkReady: false }\r\n}\r\n\r\nexport const FlagshipContext = createContext<FsContext>({\r\n state: { ...initStat }\r\n})\r\n\r\nexport const FlagshipProvider: React.FC<FlagshipProviderProps> = ({\r\n children,\r\n fetchNow,\r\n envId,\r\n apiKey,\r\n decisionMode,\r\n visitorData,\r\n onInitStart,\r\n onInitDone,\r\n loadingComponent,\r\n statusChangedCallback,\r\n onBucketingUpdated,\r\n onUpdate,\r\n initialCampaigns,\r\n initialModifications,\r\n initialFlagsData,\r\n fetchFlagsOnBucketingUpdated,\r\n ...props\r\n}: FlagshipProviderProps) => {\r\n let modifications = new Map<string, FlagDTO>()\r\n if (initialFlagsData && initialFlagsData.forEach) {\r\n initialFlagsData.forEach((flag) => {\r\n modifications.set(flag.key, flag)\r\n })\r\n } else if (initialModifications && initialModifications.forEach) {\r\n initialModifications.forEach((modification) => {\r\n modifications.set(modification.key, modification)\r\n })\r\n } else if (initialCampaigns) {\r\n modifications = getModificationsFromCampaigns(initialCampaigns)\r\n }\r\n\r\n const [state, setState] = useState<FsState>({ ...initStat, modifications })\r\n const [lastModified, setLastModified] = useState<Date>()\r\n const stateRef = useRef<FsState>()\r\n stateRef.current = state\r\n\r\n useNonInitialEffect(() => {\r\n if (fetchFlagsOnBucketingUpdated) {\r\n state.visitor?.fetchFlags()\r\n }\r\n }, [lastModified])\r\n\r\n useNonInitialEffect(() => {\r\n createVisitor(true)\r\n }, [JSON.stringify(visitorData)])\r\n\r\n useEffect(() => {\r\n initSdk()\r\n }, [envId, apiKey, decisionMode])\r\n\r\n function initializeState (param: {\r\n fsVisitor: Visitor;\r\n isLoading: boolean;\r\n isSdkReady: boolean;\r\n }) {\r\n const newStatus: FsStatus = {\r\n isSdkReady: param.isSdkReady,\r\n isLoading: param.isLoading,\r\n isVisitorDefined: !!param.fsVisitor,\r\n lastRefresh: new Date().toISOString()\r\n }\r\n\r\n setState((currentState) => {\r\n if (!currentState.status.firstInitSuccess) {\r\n newStatus.firstInitSuccess = new Date().toISOString()\r\n }\r\n\r\n return {\r\n ...currentState,\r\n visitor: param.fsVisitor,\r\n modifications: param.fsVisitor.modifications,\r\n config: Flagship.getConfig(),\r\n status: {\r\n ...currentState.status,\r\n ...newStatus\r\n }\r\n }\r\n })\r\n\r\n return newStatus\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const onVisitorReady = (fsVisitor: Visitor, error: any) => {\r\n if (error) {\r\n logError(Flagship.getConfig(), error.message || error, 'onReady')\r\n return\r\n }\r\n\r\n const newStatus = initializeState({\r\n fsVisitor,\r\n isSdkReady: true,\r\n isLoading: false\r\n })\r\n\r\n if (onUpdate) {\r\n onUpdate({\r\n fsModifications: fsVisitor.modifications,\r\n config: Flagship.getConfig(),\r\n status: newStatus\r\n })\r\n }\r\n }\r\n\r\n const createVisitor = (fetchFlags = false) => {\r\n if (!visitorData) {\r\n return\r\n }\r\n\r\n const fsVisitor = Flagship.newVisitor({\r\n visitorId: visitorData.id,\r\n context: visitorData.context,\r\n isAuthenticated: visitorData.isAuthenticated,\r\n hasConsented: visitorData.hasConsented,\r\n initialCampaigns,\r\n initialModifications,\r\n initialFlagsData\r\n })\r\n\r\n fsVisitor?.on('ready', (error) => {\r\n onVisitorReady(fsVisitor, error)\r\n })\r\n\r\n if (!fetchNow && fsVisitor && !fetchFlags) {\r\n initializeState({\r\n fsVisitor,\r\n isSdkReady: true,\r\n isLoading: false\r\n })\r\n }\r\n if (fetchFlags && !fetchNow) {\r\n fsVisitor?.fetchFlags()\r\n }\r\n }\r\n const statusChanged = (status: FlagshipStatus) => {\r\n if (statusChangedCallback) {\r\n statusChangedCallback(status)\r\n }\r\n\r\n switch (status) {\r\n case FlagshipStatus.STARTING:\r\n if (status === FlagshipStatus.STARTING && onInitStart) {\r\n onInitStart()\r\n }\r\n break\r\n case FlagshipStatus.READY_PANIC_ON:\r\n case FlagshipStatus.READY:\r\n if (onInitDone) {\r\n onInitDone()\r\n }\r\n\r\n createVisitor()\r\n\r\n break\r\n case FlagshipStatus.NOT_INITIALIZED:\r\n setState((prev) => ({\r\n ...prev,\r\n status: {\r\n ...prev.status,\r\n isLoading: false\r\n },\r\n config: Flagship.getConfig()\r\n }))\r\n break\r\n }\r\n }\r\n\r\n const onBucketingLastModified = (lastUpdate: Date) => {\r\n if (onBucketingUpdated) {\r\n onBucketingUpdated(lastUpdate)\r\n }\r\n setLastModified(lastUpdate)\r\n }\r\n\r\n const initSdk = () => {\r\n Flagship.start(envId, apiKey, {\r\n decisionMode,\r\n fetchNow,\r\n statusChangedCallback: statusChanged,\r\n onBucketingUpdated: onBucketingLastModified,\r\n ...props\r\n })\r\n }\r\n const handleDisplay = (): React.ReactNode => {\r\n const isFirstInit = !state.visitor\r\n if (state.status.isLoading && loadingComponent && isFirstInit && fetchNow) {\r\n return <>{loadingComponent}</>\r\n }\r\n return <>{children}</>\r\n }\r\n return (\r\n <FlagshipContext.Provider value={{ state, setState }}>\r\n {handleDisplay()}\r\n </FlagshipContext.Provider>\r\n )\r\n}\r\n\r\nFlagshipProvider.defaultProps = {\r\n activateDeduplicationTime: 2,\r\n hitDeduplicationTime: 2,\r\n fetchNow: true,\r\n language: 1,\r\n sdkVersion: SDK_VERSION\r\n}\r\n","import { useContext } from 'react'\r\nimport {\r\n FlagDTO,\r\n HitAbstract,\r\n HitShape,\r\n IFlag,\r\n IFlagshipConfig,\r\n IHit,\r\n Modification,\r\n modificationsRequested,\r\n primitive,\r\n Visitor\r\n} from '@flagship.io/js-sdk'\r\nimport { FlagshipContext, FsState, FsStatus } from './FlagshipContext'\r\nimport { logError, logWarn } from './utils'\r\nimport { Flag } from './Flag'\r\nimport { noVisitorDefault, noVisitorMessage } from './constants'\r\n\r\nconst checkType = (value: unknown, defaultValue: unknown) =>\r\n (typeof value === 'object' &&\r\n typeof defaultValue === 'object' &&\r\n Array.isArray(value) === Array.isArray(defaultValue)) ||\r\n typeof value === typeof defaultValue\r\n\r\nconst fsModificationsSync = <T extends unknown>(args: {\r\n functionName: string;\r\n params: modificationsRequested<T>[];\r\n activateAll?: boolean;\r\n state: FsState;\r\n visitor?: Visitor;\r\n config?: IFlagshipConfig;\r\n}): Record<string, T> => {\r\n const { visitor, params, activateAll, state, functionName, config } = args\r\n if (visitor) {\r\n return visitor.getModificationsSync(params, activateAll)\r\n }\r\n\r\n const check =\r\n !state.status.isSdkReady &&\r\n !!state.modifications &&\r\n state.modifications.size > 0\r\n const flags: Record<string, T> = {}\r\n\r\n if (check) {\r\n params.forEach((item) => {\r\n const modification = state.modifications?.get(item.key)\r\n\r\n if (modification && checkType(modification?.value, item.defaultValue)) {\r\n flags[item.key] = modification.value\r\n } else {\r\n flags[item.key] = item.defaultValue\r\n }\r\n })\r\n return flags\r\n }\r\n\r\n logWarn(config, noVisitorDefault, functionName)\r\n params.forEach((item) => {\r\n flags[item.key] = item.defaultValue\r\n })\r\n return flags\r\n}\r\n\r\n/**\r\n * 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.\r\n * @deprecated use useFsFlag instead\r\n */\r\nexport const useFsModifications = <T extends unknown>(\r\n params: modificationsRequested<T>[],\r\n activateAll?: boolean\r\n): Record<string, T> => {\r\n const { state } = useContext(FlagshipContext)\r\n const { visitor, config } = state\r\n const functionName = 'useFsModifications'\r\n\r\n return fsModificationsSync({\r\n functionName,\r\n state,\r\n visitor,\r\n config,\r\n params,\r\n activateAll\r\n })\r\n}\r\n\r\n/**\r\n * 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.\r\n * @deprecated use useFsFlag instead\r\n */\r\nexport const useFsModification: {\r\n <T>(params: modificationsRequested<T>): T;\r\n} = (params) => {\r\n const { state } = useContext(FlagshipContext)\r\n const { visitor, config } = state\r\n const functionName = 'useFsModifications'\r\n\r\n if (visitor) {\r\n return visitor.getModificationSync(params)\r\n }\r\n\r\n const modification = state.modifications?.get(params.key)\r\n\r\n if (\r\n !state.status.isSdkReady &&\r\n modification &&\r\n checkType(modification?.value, params.defaultValue)\r\n ) {\r\n return modification.value\r\n }\r\n\r\n logWarn(config, noVisitorDefault, functionName)\r\n return params.defaultValue\r\n}\r\n\r\nconst fsModificationInfoSync = (args: {\r\n key: string;\r\n state: FsState;\r\n visitor?: Visitor;\r\n}) => {\r\n const { key, visitor, state } = args\r\n if (visitor) {\r\n return visitor.getModificationInfoSync(key)\r\n }\r\n const modification = state.modifications?.get(key)\r\n if (!state.status.isSdkReady && modification) {\r\n return modification\r\n }\r\n return null\r\n}\r\n\r\n/**\r\n * Get the campaign modification information value matching the given key.\r\n * @param {string} key key which identify the modification.\r\n * @deprecated use useFsFlag instead\r\n */\r\nexport const useFsModificationInfo: { (key: string): Modification | null } = (\r\n key: string\r\n) => {\r\n const { state } = useContext(FlagshipContext)\r\n const { visitor } = state\r\n return fsModificationInfoSync({ key, state, visitor })\r\n}\r\n\r\nconst fsActivate = async (\r\n params: { key: string }[] | string[],\r\n functionName: string,\r\n visitor?: Visitor,\r\n config?: IFlagshipConfig\r\n) => {\r\n try {\r\n if (!visitor) {\r\n logWarn(config, noVisitorMessage, functionName)\r\n return\r\n }\r\n await visitor.activateModifications(params)\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n } catch (error: any) {\r\n logWarn(config, error.message || error, functionName)\r\n }\r\n}\r\n\r\n/**\r\n * This hook returns a flag object by its key. If no flag match the given key an empty flag will be returned.\r\n * @param key\r\n * @param defaultValue\r\n * @returns\r\n */\r\nexport const useFsFlag = <T extends unknown>(\r\n key: string,\r\n defaultValue: T\r\n): IFlag<T> => {\r\n const { state } = useContext(FlagshipContext)\r\n const { visitor } = state\r\n\r\n if (!visitor) {\r\n return new Flag(defaultValue, key, state.modifications)\r\n }\r\n\r\n return visitor.getFlag(key, defaultValue)\r\n}\r\n\r\n/**\r\n * Report this user has seen this modification. Report this user has seen these modifications.\r\n * @param params\r\n * @deprecated use useFsFlag instead\r\n * @returns\r\n */\r\nexport const useFsActivate: {\r\n (keys: { key: string }[]): Promise<void>;\r\n (keys: string[]): Promise<void>;\r\n} = async (params) => {\r\n const { state } = useContext(FlagshipContext)\r\n const { visitor, config } = state\r\n const functionName = 'useFsModifications'\r\n\r\n await fsActivate(params, functionName, visitor, config)\r\n}\r\n\r\nexport type UseFlagshipParams<T> = {\r\n modifications: {\r\n requested: modificationsRequested<T>[];\r\n activateAll?: boolean;\r\n };\r\n};\r\n\r\nexport type UseFlagshipOutput = {\r\n visitorId?: string;\r\n anonymousId?: string | null;\r\n context?: Record<string, primitive>;\r\n hasConsented?: boolean;\r\n /**\r\n * Set if visitor has consented for protected data usage.\r\n * @param hasConsented True if the visitor has consented false otherwise.\r\n */\r\n setConsent: (hasConsented: boolean) => void;\r\n modifications: Modification[];\r\n flagsData: FlagDTO[];\r\n status: FsStatus;\r\n /**\r\n *\r\n * @param params\r\n * @param activateAll\r\n * @deprecated use getFlag instead\r\n */\r\n getModifications<T>(\r\n params: modificationsRequested<T>[],\r\n activateAll?: boolean\r\n ): Record<string, T>;\r\n\r\n /**\r\n *\r\n * @param key\r\n * @deprecated use getFlag instead\r\n */\r\n getModificationInfo(key: string): Modification | null;\r\n\r\n /**\r\n * @deprecated use fetchFlags instead\r\n */\r\n synchronizeModifications(): Promise<void>;\r\n /**\r\n * @deprecated use getFlag instead\r\n */\r\n activateModification: {\r\n (keys: { key: string }[]): Promise<void>;\r\n (keys: string[]): Promise<void>;\r\n };\r\n /**\r\n * Update the visitor context values, matching the given keys, used for targeting.\r\n * A new context value associated with this key will be created if there is no previous matching value.\r\n * Context keys must be String, and values types must be one of the following : Number, Boolean, String.\r\n * @param context collection of keys, values.\r\n */\r\n updateContext(context: Record<string, primitive>): void;\r\n /**\r\n * clear the actual visitor context\r\n */\r\n clearContext(): void;\r\n /**\r\n * Authenticate anonymous visitor\r\n * @param visitorId\r\n */\r\n authenticate(visitorId: string): void;\r\n /**\r\n * This function change authenticated Visitor to anonymous visitor\r\n * @param visitorId\r\n */\r\n unauthenticate(): void;\r\n hit: {\r\n send: {\r\n (hit: HitAbstract): Promise<void>;\r\n (hit: IHit): Promise<void>;\r\n (hit: HitShape): Promise<void>;\r\n (hit: HitAbstract | IHit | HitShape): Promise<void>;\r\n };\r\n sendMultiple: {\r\n (hit: HitAbstract[]): Promise<void>;\r\n (hit: IHit[]): Promise<void>;\r\n (hit: HitShape[]): Promise<void>;\r\n (hit: HitAbstract[] | IHit[] | HitShape[]): Promise<void>;\r\n };\r\n };\r\n /**\r\n * Retrieve a Flag object by its key. If no flag match the given key an empty flag will be returned.\r\n * @param key flag key\r\n * @param defaultValue\r\n */\r\n getFlag<T>(key: string, defaultValue: T): IFlag<T>;\r\n fetchFlags: () => Promise<void>;\r\n};\r\n\r\nexport const useFlagship = (): UseFlagshipOutput => {\r\n const { state } = useContext(FlagshipContext)\r\n const { visitor, config } = state\r\n\r\n const fsUpdateContext = (context: Record<string, primitive>): void => {\r\n const functionName = 'updateContext'\r\n if (!visitor) {\r\n logError(config, noVisitorMessage, functionName)\r\n return\r\n }\r\n visitor.clearContext()\r\n visitor.updateContext(context)\r\n }\r\n\r\n const fsClearContext = (): void => {\r\n const functionName = 'cleanContext'\r\n if (!visitor) {\r\n logError(config, noVisitorMessage, functionName)\r\n return\r\n }\r\n visitor.clearContext()\r\n }\r\n\r\n const fsAuthenticate = (visitorId: string): void => {\r\n const functionName = 'authenticate'\r\n if (!visitor) {\r\n logError(config, noVisitorMessage, functionName)\r\n return\r\n }\r\n visitor.authenticate(visitorId)\r\n }\r\n\r\n const fsUnauthenticate = (): void => {\r\n const functionName = 'unauthenticate'\r\n if (!visitor) {\r\n logError(config, noVisitorMessage, functionName)\r\n return\r\n }\r\n visitor.unauthenticate()\r\n }\r\n\r\n /**\r\n * Send a Hit to Flagship servers for reporting.\r\n */\r\n const fsSendHit: {\r\n (hit: HitAbstract | IHit | HitShape): Promise<void>;\r\n } = (hit) => {\r\n const functionName = 'sendHit'\r\n if (!visitor) {\r\n logError(config, noVisitorMessage, functionName)\r\n return Promise.resolve()\r\n }\r\n return visitor.sendHit(hit)\r\n }\r\n\r\n /**\r\n * Send a Hit to Flagship servers for reporting.\r\n */\r\n const fsSendHits: {\r\n (hit: HitAbstract[] | IHit[] | HitShape[]): Promise<void>;\r\n } = (hit) => {\r\n const functionName = 'sendHits'\r\n if (!visitor) {\r\n logError(config, noVisitorMessage, functionName)\r\n return Promise.resolve()\r\n }\r\n return visitor.sendHits(hit)\r\n }\r\n\r\n let modifications = visitor?.getModificationsArray()\r\n if (!state.status.isSdkReady && state.modifications) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n modifications = Array.from(state.modifications, ([_key, item]) => item)\r\n }\r\n\r\n const activateModification: {\r\n (keys: { key: string }[]): Promise<void>;\r\n (keys: string[]): Promise<void>;\r\n } = async (params) => {\r\n const functionName = 'activateModification'\r\n await fsActivate(params, functionName, visitor, config)\r\n }\r\n const synchronizeModifications = async () => {\r\n if (!visitor) {\r\n logWarn(config, noVisitorMessage, 'synchronizeModifications')\r\n return\r\n }\r\n await visitor.synchronizeModifications()\r\n }\r\n\r\n const getModifications = <T extends unknown>(\r\n params: modificationsRequested<T>[],\r\n activateAll?: boolean\r\n ) => {\r\n const functionName = 'getModifications'\r\n return fsModificationsSync({\r\n functionName,\r\n state,\r\n visitor,\r\n config,\r\n params,\r\n activateAll\r\n })\r\n }\r\n\r\n const getModificationInfo: { (key: string): Modification | null } = (\r\n key: string\r\n ) => {\r\n return fsModificationInfoSync({ key, state, visitor })\r\n }\r\n\r\n function getFlag<T> (key: string, defaultValue: T): IFlag<T> {\r\n if (!visitor) {\r\n return new Flag(defaultValue, key, state.modifications)\r\n }\r\n return visitor.getFlag(key, defaultValue)\r\n }\r\n\r\n function fetchFlags (): Promise<void> {\r\n if (!visitor) {\r\n logWarn(config, noVisitorMessage, 'fetchFlags')\r\n return Promise.resolve()\r\n }\r\n return visitor.fetchFlags()\r\n }\r\n\r\n function setConsent (hasConsented: boolean): void {\r\n if (!visitor) {\r\n logWarn(config, noVisitorMessage, 'setConsent')\r\n return\r\n }\r\n visitor.setConsent(hasConsented)\r\n }\r\n\r\n return {\r\n visitorId: visitor?.visitorId,\r\n anonymousId: visitor?.anonymousId,\r\n context: { ...visitor?.context },\r\n hasConsented: visitor?.hasConsented,\r\n setConsent,\r\n updateContext: fsUpdateContext,\r\n clearContext: fsClearContext,\r\n authenticate: fsAuthenticate,\r\n unauthenticate: fsUnauthenticate,\r\n status: state.status,\r\n activateModification,\r\n synchronizeModifications,\r\n getModifications,\r\n modifications: modifications || [],\r\n flagsData: visitor?.getFlagsDataArray() || [],\r\n getModificationInfo,\r\n hit: {\r\n send: fsSendHit,\r\n sendMultiple: fsSendHits\r\n },\r\n getFlag,\r\n fetchFlags\r\n }\r\n}\r\n","export const noVisitorMessage = 'flagship Visitor not initialized.'\r\nexport const noVisitorDefault = 'fsVisitor not initialized, returns default value'\r\n\r\n export const GET_FLAG_CAST_ERROR ='Flag for key {0} has a different type. Default value is returned.'\r\n export const GET_METADATA_CAST_ERROR = 'Flag for key {0} has a different type with defaultValue, an empty metadata object is returned'\r\n","export * from './FlagshipContext'\r\nexport * from '@flagship.io/js-sdk'\r\nexport * from './FlagshipHooks'\r\n","// Generated by genversion.\nexport const version = '3.0.11'\n","import {\r\n CampaignDTO,\r\n IFlagshipConfig,\r\n LogLevel,\r\n Modification\r\n} from '@flagship.io/js-sdk'\r\nimport { EffectCallback, DependencyList, useEffect, useRef } from 'react'\r\n\r\nexport function logError (\r\n config: IFlagshipConfig | undefined,\r\n message: string,\r\n tag: string\r\n): void {\r\n if (\r\n !config ||\r\n !config.logManager ||\r\n typeof config.logManager.error !== 'function' ||\r\n !config.logLevel ||\r\n config.logLevel < LogLevel.ERROR\r\n ) {\r\n return\r\n }\r\n\r\n config.logManager.error(message, tag)\r\n}\r\n\r\nexport function logInfo (\r\n config: IFlagshipConfig | undefined,\r\n message: string,\r\n tag: string\r\n): void {\r\n if (\r\n !config ||\r\n !config.logManager ||\r\n typeof config.logManager.info !== 'function' ||\r\n !config.logLevel ||\r\n config.logLevel < LogLevel.INFO\r\n ) {\r\n return\r\n }\r\n config.logManager.info(message, tag)\r\n}\r\n\r\nexport function logWarn (\r\n config: IFlagshipConfig | undefined,\r\n message: string,\r\n tag: string\r\n): void {\r\n if (\r\n !config ||\r\n !config.logManager ||\r\n typeof config.logManager.warning !== 'function' ||\r\n !config.logLevel ||\r\n config.logLevel < LogLevel.WARNING\r\n ) {\r\n return\r\n }\r\n config.logManager.warning(message, tag)\r\n}\r\n\r\nexport const getModificationsFromCampaigns = (\r\n campaigns: Array<CampaignDTO>\r\n): Map<string, Modification> => {\r\n const modifications = new Map<string, Modification>()\r\n if (!campaigns || !Array.isArray(campaigns)) {\r\n return modifications\r\n }\r\n campaigns.forEach((campaign) => {\r\n const object = campaign.variation.modifications.value\r\n for (const key in object) {\r\n const value = object[key]\r\n modifications.set(key, {\r\n key,\r\n campaignId: campaign.id,\r\n variationGroupId: campaign.variationGroupId,\r\n variationId: campaign.variation.id,\r\n isReference: campaign.variation.reference,\r\n value\r\n })\r\n }\r\n })\r\n return modifications\r\n}\r\n\r\nexport function uuidV4 (): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\r\n /[xy]/g,\r\n function (char) {\r\n const rand = (Math.random() * 16) | 0\r\n const value = char === 'x' ? rand : (rand & 0x3) | 0x8\r\n return value.toString(16)\r\n }\r\n )\r\n}\r\n\r\nexport function useNonInitialEffect (\r\n effect: EffectCallback,\r\n deps?: DependencyList\r\n): void {\r\n const initialRender = useRef(true)\r\n\r\n useEffect(() => {\r\n if (initialRender.current) {\r\n initialRender.current = false\r\n return\r\n }\r\n\r\n if (typeof effect === 'function') {\r\n return effect()\r\n }\r\n }, deps)\r\n}\r\n\r\nexport function hasSameType (flagValue:unknown, defaultValue:unknown):boolean {\r\n if (typeof flagValue !== typeof defaultValue) {\r\n return false\r\n }\r\n if (typeof flagValue === 'object' && typeof defaultValue === 'object' &&\r\n Array.isArray(flagValue) !== Array.isArray(defaultValue)\r\n ) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function sprintf (format: string, ...value: any[]): string {\r\n let formatted = format\r\n for (let i = 0; i < value.length; i++) {\r\n const element = value[i]\r\n formatted = formatted.replace(new RegExp(`\\\\{${i}\\\\}`, 'g'), element)\r\n }\r\n return formatted\r\n}\r\n","module.exports = require(\"@flagship.io/js-sdk\");","module.exports = require(\"core-js/modules/es.promise.js\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.tsx\");\n",""],"names":["Flag","constructor","defaultValue","key","flagsData","Flagship","getConfig","noVisitorMessage","flag","get","NotSameType","undefined","value","getValue","GET_FLAG_CAST_ERROR","exists","campaignId","variationId","variationGroupId","userExposed","Promise","resolve","metadata","functionName","FlagMetadata","Empty","GET_METADATA_CAST_ERROR","isReference","campaignType","slug","initStat","status","isLoading","isSdkReady","FlagshipContext","state","FlagshipProvider","children","fetchNow","envId","apiKey","decisionMode","visitorData","onInitStart","onInitDone","loadingComponent","statusChangedCallback","onBucketingUpdated","onUpdate","initialCampaigns","initialModifications","initialFlagsData","fetchFlagsOnBucketingUpdated","props","modifications","Map","forEach","set","modification","setState","lastModified","setLastModified","stateRef","current","visitor","fetchFlags","createVisitor","JSON","stringify","initSdk","initializeState","param","newStatus","isVisitorDefined","fsVisitor","lastRefresh","Date","toISOString","currentState","firstInitSuccess","config","onVisitorReady","error","message","fsModifications","newVisitor","visitorId","id","context","isAuthenticated","hasConsented","on","statusChanged","FlagshipStatus","STARTING","READY_PANIC_ON","READY","NOT_INITIALIZED","prev","onBucketingLastModified","lastUpdate","start","handleDisplay","isFirstInit","defaultProps","activateDeduplicationTime","hitDeduplicationTime","language","sdkVersion","SDK_VERSION","checkType","Array","isArray","fsModificationsSync","args","params","activateAll","getModificationsSync","check","size","flags","item","noVisitorDefault","useFsModifications","useFsModification","getModificationSync","fsModificationInfoSync","getModificationInfoSync","useFsModificationInfo","fsActivate","activateModifications","useFsFlag","getFlag","useFsActivate","useFlagship","fsUpdateContext","clearContext","updateContext","fsClearContext","fsAuthenticate","authenticate","fsUnauthenticate","unauthenticate","fsSendHit","hit","sendHit","fsSendHits","sendHits","getModificationsArray","from","_key","activateModification","synchronizeModifications","getModifications","getModificationInfo","setConsent","anonymousId","getFlagsDataArray","send","sendMultiple","version","logError","tag","logManager","logLevel","LogLevel","ERROR","logInfo","info","INFO","logWarn","warning","WARNING","getModificationsFromCampaigns","campaigns","campaign","object","variation","reference","uuidV4","replace","char","rand","Math","random","toString","useNonInitialEffect","effect","deps","initialRender","hasSameType","flagValue","sprintf","format","formatted","i","length","element","RegExp"],"sourceRoot":""}
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
File without changes
File without changes
@@ -13,6 +13,7 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  import React, { useState, useEffect, createContext, useRef } from 'react';
14
14
  import { Flagship, FlagshipStatus } from '@flagship.io/js-sdk';
15
15
  import { getModificationsFromCampaigns, logError, useNonInitialEffect } from './utils';
16
+ import { version as SDK_VERSION } from './sdkVersion';
16
17
  const initStat = {
17
18
  status: { isLoading: true, isSdkReady: false }
18
19
  };
@@ -130,7 +131,7 @@ export const FlagshipProvider = (_a) => {
130
131
  createVisitor();
131
132
  break;
132
133
  case FlagshipStatus.NOT_INITIALIZED:
133
- setState((prev) => (Object.assign(Object.assign({}, prev), { config: Flagship.getConfig() })));
134
+ setState((prev) => (Object.assign(Object.assign({}, prev), { status: Object.assign(Object.assign({}, prev.status), { isLoading: false }), config: Flagship.getConfig() })));
134
135
  break;
135
136
  }
136
137
  };
@@ -157,5 +158,6 @@ FlagshipProvider.defaultProps = {
157
158
  activateDeduplicationTime: 2,
158
159
  hitDeduplicationTime: 2,
159
160
  fetchNow: true,
160
- language: 1
161
+ language: 1,
162
+ sdkVersion: SDK_VERSION
161
163
  };
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ export declare const version = "3.0.11";
@@ -0,0 +1,2 @@
1
+ // Generated by genversion.
2
+ export const version = '3.0.11';
File without changes
File without changes
package/package.json CHANGED
@@ -1,102 +1,104 @@
1
- {
2
- "name": "@flagship.io/react-sdk",
3
- "version": "3.0.10",
4
- "license": "Apache-2.0",
5
- "description": "Flagship REACT SDK",
6
- "main": "dist/index.node.js",
7
- "module": "dist/index.js",
8
- "react-native": "dist/index.js",
9
- "types": "dist/index.d.ts",
10
- "files": [
11
- "dist/**/*",
12
- "CONTRIBUTING.md",
13
- "README.md"
14
- ],
15
- "dependencies": {
16
- "@flagship.io/js-sdk": "^3.0.12",
17
- "core-js": "^3.24.1",
18
- "encoding": "^0.1.13"
19
- },
20
- "peerDependencies": {
21
- "react": ">=16.8.0",
22
- "react-dom": ">=16.8.0"
23
- },
24
- "homepage": "https://github.com/flagship-io/flagship-react-sdk",
25
- "repository": {
26
- "type": "git",
27
- "url": "git+https://github.com/flagship-io/flagship-react-sdk.git"
28
- },
29
- "keywords": [
30
- "flagship",
31
- "abtasty",
32
- "react",
33
- "sdk"
34
- ],
35
- "devDependencies": {
36
- "@babel/cli": "^7.14.6",
37
- "@babel/core": "^7.14.6",
38
- "@babel/preset-env": "^7.14.7",
39
- "@babel/preset-react": "^7.14.5",
40
- "@babel/preset-typescript": "^7.14.5",
41
- "@testing-library/jest-dom": "^5.11.4",
42
- "@testing-library/react": "^11.1.0",
43
- "@testing-library/react-hooks": "^7.0.1",
44
- "@testing-library/user-event": "^12.1.10",
45
- "@types/jest": "^26.0.15",
46
- "@types/node": "^12.0.0",
47
- "@types/react": "^17.0.0",
48
- "@types/react-dom": "^17.0.0",
49
- "@typescript-eslint/eslint-plugin": "^4.32.0",
50
- "@typescript-eslint/parser": "^4.32.0",
51
- "babel-loader": "^8.2.2",
52
- "babel-plugin-add-module-exports": "^1.0.4",
53
- "eslint": "^7.32.0",
54
- "eslint-config-standard": "^16.0.3",
55
- "eslint-plugin-import": "^2.24.2",
56
- "eslint-plugin-node": "^11.1.0",
57
- "eslint-plugin-promise": "^5.1.0",
58
- "eslint-plugin-react": "^7.26.0",
59
- "jest": "^27.0.6",
60
- "react": "^17.0.2",
61
- "react-dom": "^17.0.2",
62
- "react-test-renderer": "^17.0.2",
63
- "regenerator-runtime": "^0.13.9",
64
- "terser-webpack-plugin": "^5.2.4",
65
- "ts-jest": "^27.0.3",
66
- "ts-loader": "^9.2.3",
67
- "typescript": "^4.4.3",
68
- "webpack": "^5.44.0",
69
- "webpack-cli": "^4.7.2",
70
- "webpack-merge": "^5.8.0",
71
- "webpack-node-externals": "^3.0.0"
72
- },
73
- "scripts": {
74
- "dev": "tsc --watch",
75
- "test": "jest",
76
- "lint": "eslint . --ext .tsx",
77
- "clean": "rm -rf dist && mkdir dist",
78
- "build:esm": "BABEL_ENV=esm babel src --extensions '.ts,.tsx' --out-dir dist/esm --copy-files",
79
- "build:types": "tsc",
80
- "build:prod": "NODE_ENV=production npm run build",
81
- "prebuild": "npm run clean && tsc",
82
- "build": "webpack"
83
- },
84
- "eslintConfig": {
85
- "extends": [
86
- "react-app",
87
- "react-app/jest"
88
- ]
89
- },
90
- "browserslist": {
91
- "production": [
92
- ">0.2%",
93
- "not dead",
94
- "not op_mini all"
95
- ],
96
- "development": [
97
- "last 1 chrome version",
98
- "last 1 firefox version",
99
- "last 1 safari version"
100
- ]
101
- }
1
+ {
2
+ "name": "@flagship.io/react-sdk",
3
+ "version": "3.0.11-alpha.0",
4
+ "license": "Apache-2.0",
5
+ "description": "Flagship REACT SDK",
6
+ "main": "dist/index.node.js",
7
+ "module": "dist/index.js",
8
+ "react-native": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist/**/*",
12
+ "CONTRIBUTING.md",
13
+ "README.md"
14
+ ],
15
+ "dependencies": {
16
+ "@flagship.io/js-sdk": "^3.0.14",
17
+ "core-js": "^3.24.1",
18
+ "encoding": "^0.1.13"
19
+ },
20
+ "peerDependencies": {
21
+ "react": ">=16.8.0",
22
+ "react-dom": ">=16.8.0"
23
+ },
24
+ "homepage": "https://github.com/flagship-io/flagship-react-sdk",
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/flagship-io/flagship-react-sdk.git"
28
+ },
29
+ "keywords": [
30
+ "flagship",
31
+ "abtasty",
32
+ "react",
33
+ "sdk"
34
+ ],
35
+ "devDependencies": {
36
+ "@babel/cli": "^7.14.6",
37
+ "@babel/core": "^7.14.6",
38
+ "@babel/preset-env": "^7.14.7",
39
+ "@babel/preset-react": "^7.14.5",
40
+ "@babel/preset-typescript": "^7.14.5",
41
+ "@testing-library/jest-dom": "^5.11.4",
42
+ "@testing-library/react": "^11.1.0",
43
+ "@testing-library/react-hooks": "^7.0.1",
44
+ "@testing-library/user-event": "^12.1.10",
45
+ "@types/jest": "^26.0.15",
46
+ "@types/node": "^12.0.0",
47
+ "@types/react": "^17.0.0",
48
+ "@types/react-dom": "^17.0.0",
49
+ "@typescript-eslint/eslint-plugin": "^4.32.0",
50
+ "@typescript-eslint/parser": "^4.32.0",
51
+ "babel-loader": "^8.2.2",
52
+ "babel-plugin-add-module-exports": "^1.0.4",
53
+ "eslint": "^7.32.0",
54
+ "eslint-config-standard": "^16.0.3",
55
+ "eslint-plugin-import": "^2.24.2",
56
+ "eslint-plugin-node": "^11.1.0",
57
+ "eslint-plugin-promise": "^5.1.0",
58
+ "eslint-plugin-react": "^7.26.0",
59
+ "genversion": "^3.1.1",
60
+ "jest": "^27.0.6",
61
+ "react": "^17.0.2",
62
+ "react-dom": "^17.0.2",
63
+ "react-test-renderer": "^17.0.2",
64
+ "regenerator-runtime": "^0.13.9",
65
+ "terser-webpack-plugin": "^5.2.4",
66
+ "ts-jest": "^27.0.3",
67
+ "ts-loader": "^9.2.3",
68
+ "typescript": "^4.4.3",
69
+ "webpack": "^5.44.0",
70
+ "webpack-cli": "^4.7.2",
71
+ "webpack-merge": "^5.8.0",
72
+ "webpack-node-externals": "^3.0.0"
73
+ },
74
+ "scripts": {
75
+ "dev": "tsc --watch",
76
+ "test": "jest",
77
+ "lint": "eslint . --ext .tsx",
78
+ "clean": "rm -rf dist && mkdir dist",
79
+ "generate:version": "genversion --es6 src/sdkVersion.ts",
80
+ "build:esm": "BABEL_ENV=esm babel src --extensions '.ts,.tsx' --out-dir dist/esm --copy-files",
81
+ "build:types": "tsc",
82
+ "build:prod": "NODE_ENV=production npm run build",
83
+ "prebuild": "npm run clean && npm run generate:version && tsc",
84
+ "build": "webpack"
85
+ },
86
+ "eslintConfig": {
87
+ "extends": [
88
+ "react-app",
89
+ "react-app/jest"
90
+ ]
91
+ },
92
+ "browserslist": {
93
+ "production": [
94
+ ">0.2%",
95
+ "not dead",
96
+ "not op_mini all"
97
+ ],
98
+ "development": [
99
+ "last 1 chrome version",
100
+ "last 1 firefox version",
101
+ "last 1 safari version"
102
+ ]
103
+ }
102
104
  }