@lectra/ld-react-feature-flags
Version:
Integrate Launch Darkly in your React app in a breeze
557 lines (503 loc) • 86.7 kB
JavaScript
import React, { Component } from 'react';
import PropTypes from 'prop-types';
function _typeof$1(o) {
"@babel/helpers - typeof";
return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof$1(o);
}
function _classCallCheck(a, n) {
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
}
function toPrimitive(t, r) {
if ("object" != _typeof$1(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof$1(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function toPropertyKey(t) {
var i = toPrimitive(t, "string");
return "symbol" == _typeof$1(i) ? i : i + "";
}
function _defineProperties(e, r) {
for (var t = 0; t < r.length; t++) {
var o = r[t];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);
}
}
function _createClass(e, r, t) {
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
writable: !1
}), e;
}
function _assertThisInitialized(e) {
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return e;
}
function _possibleConstructorReturn(t, e) {
if (e && ("object" == _typeof$1(e) || "function" == typeof e)) return e;
if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
return _assertThisInitialized(t);
}
function _getPrototypeOf(t) {
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
return t.__proto__ || Object.getPrototypeOf(t);
}, _getPrototypeOf(t);
}
function _setPrototypeOf(t, e) {
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
return t.__proto__ = e, t;
}, _setPrototypeOf(t, e);
}
function _inherits(t, e) {
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
t.prototype = Object.create(e && e.prototype, {
constructor: {
value: t,
writable: !0,
configurable: !0
}
}), Object.defineProperty(t, "prototype", {
writable: !1
}), e && _setPrototypeOf(t, e);
}
function _defineProperty(e, r, t) {
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
var FlagsContext = /*#__PURE__*/React.createContext();
var camelize = function camelize(str) {
return str.replace(/\W+(.)/g, function (match, chr) {
return chr.toUpperCase();
});
};
function _callSuper$2(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct$2() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function _isNativeReflectConstruct() { return !!t; })(); }
var FlagsConsumer = /*#__PURE__*/function (_Component) {
function FlagsConsumer() {
var _this;
_classCallCheck(this, FlagsConsumer);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _callSuper$2(this, FlagsConsumer, [].concat(args));
_defineProperty(_this, "renderChildrenOrRenderOn", function (featureProps, children, renderOn) {
if (renderOn) {
return renderOn(featureProps);
}
if (children && _typeof$1(children)) {
return /*#__PURE__*/React.cloneElement(children, {
flag: featureProps
});
}
return React.Fragment;
});
return _this;
}
_inherits(FlagsConsumer, _Component);
return _createClass(FlagsConsumer, [{
key: "render",
value: function render() {
var _this2 = this;
var _this$props = this.props,
flag = _this$props.flag,
children = _this$props.children,
renderOn = _this$props.renderOn,
fallbackRender = _this$props.fallbackRender;
return /*#__PURE__*/React.createElement(FlagsContext.Consumer, null, function (ldClient) {
var flagValue = ldClient.variation(flag, false);
var featureProps = _defineProperty({}, camelize(flag), flagValue);
return function () {
if (flagValue === true) {
return _this2.renderChildrenOrRenderOn(featureProps, children, renderOn);
}
if (flagValue === false) {
return fallbackRender ? fallbackRender(featureProps) : null;
}
if (typeof flagValue !== 'boolean') {
return _this2.renderChildrenOrRenderOn(featureProps, children, renderOn);
}
return null;
}();
});
}
}]);
}(Component);
_defineProperty(FlagsConsumer, "propTypes", {
children: PropTypes.any,
flag: PropTypes.string.isRequired,
renderOn: PropTypes.func,
fallbackRender: PropTypes.func
});
_defineProperty(FlagsConsumer, "defaultProps", {
renderOn: undefined,
fallbackRender: undefined
});
function asyncGeneratorStep(n, t, e, r, o, a, c) {
try {
var i = n[a](c),
u = i.value;
} catch (n) {
return void e(n);
}
i.done ? t(u) : Promise.resolve(u).then(r, o);
}
function _asyncToGenerator(n) {
return function () {
var t = this,
e = arguments;
return new Promise(function (r, o) {
var a = n.apply(t, e);
function _next(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
}
function _throw(n) {
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
}
_next(void 0);
});
};
}
function getDefaultExportFromCjs (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
var regeneratorRuntime$1 = {exports: {}};
var OverloadYield = {exports: {}};
(function (module) {
function _OverloadYield(e, d) {
this.v = e, this.k = d;
}
module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (OverloadYield));
var OverloadYieldExports = OverloadYield.exports;
var regenerator$1 = {exports: {}};
var regeneratorDefine = {exports: {}};
(function (module) {
function _regeneratorDefine(e, r, n, t) {
var i = Object.defineProperty;
try {
i({}, "", {});
} catch (e) {
i = 0;
}
module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {
function o(r, n) {
_regeneratorDefine(e, r, function (e) {
return this._invoke(r, n, e);
});
}
r ? i ? i(e, r, {
value: n,
enumerable: !t,
configurable: !t,
writable: !t
}) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
}, module.exports.__esModule = true, module.exports["default"] = module.exports, _regeneratorDefine(e, r, n, t);
}
module.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regeneratorDefine));
var regeneratorDefineExports = regeneratorDefine.exports;
(function (module) {
var regeneratorDefine = regeneratorDefineExports;
function _regenerator() {
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
var e,
t,
r = "function" == typeof Symbol ? Symbol : {},
n = r.iterator || "@@iterator",
o = r.toStringTag || "@@toStringTag";
function i(r, n, o, i) {
var c = n && n.prototype instanceof Generator ? n : Generator,
u = Object.create(c.prototype);
return regeneratorDefine(u, "_invoke", function (r, n, o) {
var i,
c,
u,
f = 0,
p = o || [],
y = !1,
G = {
p: 0,
n: 0,
v: e,
a: d,
f: d.bind(e, 4),
d: function d(t, r) {
return i = t, c = 0, u = e, G.n = r, a;
}
};
function d(r, n) {
for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
var o,
i = p[t],
d = G.p,
l = i[2];
r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
}
if (o || r > 1) return a;
throw y = !0, n;
}
return function (o, p, l) {
if (f > 1) throw TypeError("Generator is already running");
for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
try {
if (f = 2, i) {
if (c || (o = "next"), t = i[o]) {
if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
if (!t.done) return t;
u = t.value, c < 2 && (c = 0);
} else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
i = e;
} else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
} catch (t) {
i = e, c = 1, u = t;
} finally {
f = 1;
}
}
return {
value: t,
done: y
};
};
}(r, o, i), !0), u;
}
var a = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
t = Object.getPrototypeOf;
var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {
return this;
}), t),
u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
function f(e) {
return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), regeneratorDefine(u), regeneratorDefine(u, o, "Generator"), regeneratorDefine(u, n, function () {
return this;
}), regeneratorDefine(u, "toString", function () {
return "[object Generator]";
}), (module.exports = _regenerator = function _regenerator() {
return {
w: i,
m: f
};
}, module.exports.__esModule = true, module.exports["default"] = module.exports)();
}
module.exports = _regenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regenerator$1));
var regeneratorExports = regenerator$1.exports;
var regeneratorAsync = {exports: {}};
var regeneratorAsyncGen = {exports: {}};
var regeneratorAsyncIterator = {exports: {}};
(function (module) {
var OverloadYield = OverloadYieldExports;
var regeneratorDefine = regeneratorDefineExports;
function AsyncIterator(t, e) {
function n(r, o, i, f) {
try {
var c = t[r](o),
u = c.value;
return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {
n("next", t, i, f);
}, function (t) {
n("throw", t, i, f);
}) : e.resolve(u).then(function (t) {
c.value = t, i(c);
}, function (t) {
return n("throw", t, i, f);
});
} catch (t) {
f(t);
}
}
var r;
this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () {
return this;
})), regeneratorDefine(this, "_invoke", function (t, o, i) {
function f() {
return new e(function (e, r) {
n(t, i, e, r);
});
}
return r = r ? r.then(f, f) : f();
}, !0);
}
module.exports = AsyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regeneratorAsyncIterator));
var regeneratorAsyncIteratorExports = regeneratorAsyncIterator.exports;
(function (module) {
var regenerator = regeneratorExports;
var regeneratorAsyncIterator = regeneratorAsyncIteratorExports;
function _regeneratorAsyncGen(r, e, t, o, n) {
return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);
}
module.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regeneratorAsyncGen));
var regeneratorAsyncGenExports = regeneratorAsyncGen.exports;
(function (module) {
var regeneratorAsyncGen = regeneratorAsyncGenExports;
function _regeneratorAsync(n, e, r, t, o) {
var a = regeneratorAsyncGen(n, e, r, t, o);
return a.next().then(function (n) {
return n.done ? n.value : a.next();
});
}
module.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regeneratorAsync));
var regeneratorAsyncExports = regeneratorAsync.exports;
var regeneratorKeys = {exports: {}};
(function (module) {
function _regeneratorKeys(e) {
var n = Object(e),
r = [];
for (var t in n) r.unshift(t);
return function e() {
for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;
return e.done = !0, e;
};
}
module.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regeneratorKeys));
var regeneratorKeysExports = regeneratorKeys.exports;
var regeneratorValues = {exports: {}};
var _typeof = {exports: {}};
(function (module) {
function _typeof(o) {
"@babel/helpers - typeof";
return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o);
}
module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (_typeof));
var _typeofExports = _typeof.exports;
(function (module) {
var _typeof = _typeofExports["default"];
function _regeneratorValues(e) {
if (null != e) {
var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"],
r = 0;
if (t) return t.call(e);
if ("function" == typeof e.next) return e;
if (!isNaN(e.length)) return {
next: function next() {
return e && r >= e.length && (e = void 0), {
value: e && e[r++],
done: !e
};
}
};
}
throw new TypeError(_typeof(e) + " is not iterable");
}
module.exports = _regeneratorValues, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regeneratorValues));
var regeneratorValuesExports = regeneratorValues.exports;
(function (module) {
var OverloadYield = OverloadYieldExports;
var regenerator = regeneratorExports;
var regeneratorAsync = regeneratorAsyncExports;
var regeneratorAsyncGen = regeneratorAsyncGenExports;
var regeneratorAsyncIterator = regeneratorAsyncIteratorExports;
var regeneratorKeys = regeneratorKeysExports;
var regeneratorValues = regeneratorValuesExports;
function _regeneratorRuntime() {
var r = regenerator(),
e = r.m(_regeneratorRuntime),
t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;
function n(r) {
var e = "function" == typeof r && r.constructor;
return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name));
}
var o = {
"throw": 1,
"return": 2,
"break": 3,
"continue": 3
};
function a(r) {
var e, t;
return function (n) {
e || (e = {
stop: function stop() {
return t(n.a, 2);
},
"catch": function _catch() {
return n.v;
},
abrupt: function abrupt(r, e) {
return t(n.a, o[r], e);
},
delegateYield: function delegateYield(r, o, a) {
return e.resultName = o, t(n.d, regeneratorValues(r), a);
},
finish: function finish(r) {
return t(n.f, r);
}
}, t = function t(r, _t, o) {
n.p = e.prev, n.n = e.next;
try {
return r(_t, o);
} finally {
e.next = n.n;
}
}), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;
try {
return r.call(this, e);
} finally {
n.p = e.prev, n.n = e.next;
}
};
}
return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
return {
wrap: function wrap(e, t, n, o) {
return r.w(a(e), t, n, o && o.reverse());
},
isGeneratorFunction: n,
mark: r.m,
awrap: function awrap(r, e) {
return new OverloadYield(r, e);
},
AsyncIterator: regeneratorAsyncIterator,
async: function async(r, e, t, o, u) {
return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);
},
keys: regeneratorKeys,
values: regeneratorValues
};
}, module.exports.__esModule = true, module.exports["default"] = module.exports)();
}
module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
} (regeneratorRuntime$1));
var regeneratorRuntimeExports = regeneratorRuntime$1.exports;
// TODO(Babel 8): Remove this file.
var runtime = regeneratorRuntimeExports();
var regenerator = runtime;
// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
try {
regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
if (typeof globalThis === "object") {
globalThis.regeneratorRuntime = runtime;
} else {
Function("r", "regeneratorRuntime = r")(runtime);
}
}
var _regeneratorRuntime = /*@__PURE__*/getDefaultExportFromCjs(regenerator);
function e(e){function t(e,t){Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.message=e,this.code=t;}return t.prototype=new Error,t.prototype.name=e,t.prototype.constructor=t,t}const t=e("LaunchDarklyUnexpectedResponseError"),n=e("LaunchDarklyInvalidEnvironmentIdError"),r=e("LaunchDarklyInvalidUserError"),o=e("LaunchDarklyInvalidEventKeyError"),i=e("LaunchDarklyInvalidArgumentError"),a=e("LaunchDarklyFlagFetchError");for(var s={LDUnexpectedResponseError:t,LDInvalidEnvironmentIdError:n,LDInvalidUserError:r,LDInvalidEventKeyError:o,LDInvalidArgumentError:i,LDInvalidDataError:e("LaunchDarklyInvalidDataError"),LDFlagFetchError:a,LDTimeoutError:e("LaunchDarklyTimeoutError"),isHttpErrorRecoverable:function(e){return !(e>=400&&e<500)||(400===e||408===e||429===e)}},c=function(e){var t=m(e),n=t[0],r=t[1];return 3*(n+r)/4-r},u=function(e){var t,n,r=m(e),o=r[0],i=r[1],a=new g(function(e,t,n){return 3*(t+n)/4-n}(0,o,i)),s=0,c=i>0?o-4:o;for(n=0;n<c;n+=4)t=f[e.charCodeAt(n)]<<18|f[e.charCodeAt(n+1)]<<12|f[e.charCodeAt(n+2)]<<6|f[e.charCodeAt(n+3)],a[s++]=t>>16&255,a[s++]=t>>8&255,a[s++]=255&t;2===i&&(t=f[e.charCodeAt(n)]<<2|f[e.charCodeAt(n+1)]>>4,a[s++]=255&t);1===i&&(t=f[e.charCodeAt(n)]<<10|f[e.charCodeAt(n+1)]<<4|f[e.charCodeAt(n+2)]>>2,a[s++]=t>>8&255,a[s++]=255&t);return a},l=function(e){for(var t,n=e.length,r=n%3,o=[],i=16383,a=0,s=n-r;a<s;a+=i)o.push(y(e,a,a+i>s?s:a+i));1===r?(t=e[n-1],o.push(d[t>>2]+d[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],o.push(d[t>>10]+d[t>>4&63]+d[t<<2&63]+"="));return o.join("")},d=[],f=[],g="undefined"!=typeof Uint8Array?Uint8Array:Array,v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=0;p<64;++p)d[p]=v[p],f[v.charCodeAt(p)]=p;function m(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return -1===n&&(n=t),[n,n===t?0:4-n%4]}function h(e){return d[e>>18&63]+d[e>>12&63]+d[e>>6&63]+d[63&e]}function y(e,t,n){for(var r,o=[],i=t;i<n;i+=3)r=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(255&e[i+2]),o.push(h(r));return o.join("")}f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63;var w={byteLength:c,toByteArray:u,fromByteArray:l},b=Array.isArray,k=Object.keys,E=Object.prototype.hasOwnProperty,D=function e(t,n){if(t===n)return !0;if(t&&n&&"object"==typeof t&&"object"==typeof n){var r,o,i,a=b(t),s=b(n);if(a&&s){if((o=t.length)!=n.length)return !1;for(r=o;0!==r--;)if(!e(t[r],n[r]))return !1;return !0}if(a!=s)return !1;var c=t instanceof Date,u=n instanceof Date;if(c!=u)return !1;if(c&&u)return t.getTime()==n.getTime();var l=t instanceof RegExp,d=n instanceof RegExp;if(l!=d)return !1;if(l&&d)return t.toString()==n.toString();var f=k(t);if((o=f.length)!==k(n).length)return !1;for(r=o;0!==r--;)if(!E.call(n,f[r]))return !1;for(r=o;0!==r--;)if(!e(t[i=f[r]],n[i]))return !1;return !0}return t!=t&&n!=n};const x=["key","ip","country","email","firstName","lastName","avatar","name"];function O(e){const t=unescape(encodeURIComponent(e));return w.fromByteArray(function(e){const t=[];for(let n=0;n<e.length;n++)t.push(e.charCodeAt(n));return t}(t))}function C(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var P,S={appendUrlPath:function(e,t){return (e.endsWith("/")?e.substring(0,e.length-1):e)+(t.startsWith("/")?"":"/")+t},base64URLEncode:function(e){return O(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")},btoa:O,clone:function(e){return JSON.parse(JSON.stringify(e))},deepEquals:function(e,t){return D(e,t)},extend:function(...e){return e.reduce((e,t)=>({...e,...t}),{})},getLDUserAgentString:function(e){const t=e.version||"?";return e.userAgent+"/"+t},objectHasOwnProperty:C,onNextTick:function(e){setTimeout(e,0);},sanitizeContext:function(e){if(!e)return e;let t;return null!==e.kind&&void 0!==e.kind||x.forEach(n=>{const r=e[n];void 0!==r&&"string"!=typeof r&&(t=t||{...e},t[n]=String(r));}),t||e},transformValuesToVersionedValues:function(e){const t={};for(const n in e)C(e,n)&&(t[n]={value:e[n],version:0});return t},transformVersionedValuesToValues:function(e){const t={};for(const n in e)C(e,n)&&(t[n]=e[n].value);return t},wrapPromiseCallback:function(e,t){const n=e.then(e=>(t&&setTimeout(()=>{t(null,e);},0),e),e=>{if(!t)return Promise.reject(e);setTimeout(()=>{t(e,null);},0);});return t?void 0:n},once:function(e){let t,n=!1;return function(...r){return n||(n=!0,t=e.apply(this,r)),t}}},I=new Uint8Array(16);function T(){if(!P&&!(P="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return P(I)}var F=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function L(e){return "string"==typeof e&&F.test(e)}for(var U,A,j=[],R=0;R<256;++R)j.push((R+256).toString(16).substr(1));function N(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(j[e[t+0]]+j[e[t+1]]+j[e[t+2]]+j[e[t+3]]+"-"+j[e[t+4]]+j[e[t+5]]+"-"+j[e[t+6]]+j[e[t+7]]+"-"+j[e[t+8]]+j[e[t+9]]+"-"+j[e[t+10]]+j[e[t+11]]+j[e[t+12]]+j[e[t+13]]+j[e[t+14]]+j[e[t+15]]).toLowerCase();if(!L(n))throw TypeError("Stringified UUID is invalid");return n}var $=0,V=0;function H(e){if(!L(e))throw TypeError("Invalid UUID");var t,n=new Uint8Array(16);return n[0]=(t=parseInt(e.slice(0,8),16))>>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n[4]=(t=parseInt(e.slice(9,13),16))>>>8,n[5]=255&t,n[6]=(t=parseInt(e.slice(14,18),16))>>>8,n[7]=255&t,n[8]=(t=parseInt(e.slice(19,23),16))>>>8,n[9]=255&t,n[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=255&t,n}function M(e,t,n){function r(e,r,o,i){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],n=0;n<e.length;++n)t.push(e.charCodeAt(n));return t}(e)),"string"==typeof r&&(r=H(r)),16!==r.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var a=new Uint8Array(16+e.length);if(a.set(r),a.set(e,r.length),(a=n(a))[6]=15&a[6]|t,a[8]=63&a[8]|128,o){i=i||0;for(var s=0;s<16;++s)o[i+s]=a[s];return o}return N(a)}try{r.name=e;}catch(e){}return r.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",r.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",r}function q(e){return 14+(e+64>>>9<<4)+1}function z(e,t){var n=(65535&e)+(65535&t);return (e>>16)+(t>>16)+(n>>16)<<16|65535&n}function K(e,t,n,r,o,i){return z((a=z(z(t,e),z(r,i)))<<(s=o)|a>>>32-s,n);var a,s;}function _(e,t,n,r,o,i,a){return K(t&n|~t&r,e,t,o,i,a)}function J(e,t,n,r,o,i,a){return K(t&r|n&~r,e,t,o,i,a)}function B(e,t,n,r,o,i,a){return K(t^n^r,e,t,o,i,a)}function W(e,t,n,r,o,i,a){return K(n^(t|~r),e,t,o,i,a)}var G=M("v3",48,function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var n=0;n<t.length;++n)e[n]=t.charCodeAt(n);}return function(e){for(var t=[],n=32*e.length,r="0123456789abcdef",o=0;o<n;o+=8){var i=e[o>>5]>>>o%32&255,a=parseInt(r.charAt(i>>>4&15)+r.charAt(15&i),16);t.push(a);}return t}(function(e,t){e[t>>5]|=128<<t%32,e[q(t)-1]=t;for(var n=1732584193,r=-271733879,o=-1732584194,i=271733878,a=0;a<e.length;a+=16){var s=n,c=r,u=o,l=i;n=_(n,r,o,i,e[a],7,-680876936),i=_(i,n,r,o,e[a+1],12,-389564586),o=_(o,i,n,r,e[a+2],17,606105819),r=_(r,o,i,n,e[a+3],22,-1044525330),n=_(n,r,o,i,e[a+4],7,-176418897),i=_(i,n,r,o,e[a+5],12,1200080426),o=_(o,i,n,r,e[a+6],17,-1473231341),r=_(r,o,i,n,e[a+7],22,-45705983),n=_(n,r,o,i,e[a+8],7,1770035416),i=_(i,n,r,o,e[a+9],12,-1958414417),o=_(o,i,n,r,e[a+10],17,-42063),r=_(r,o,i,n,e[a+11],22,-1990404162),n=_(n,r,o,i,e[a+12],7,1804603682),i=_(i,n,r,o,e[a+13],12,-40341101),o=_(o,i,n,r,e[a+14],17,-1502002290),n=J(n,r=_(r,o,i,n,e[a+15],22,1236535329),o,i,e[a+1],5,-165796510),i=J(i,n,r,o,e[a+6],9,-1069501632),o=J(o,i,n,r,e[a+11],14,643717713),r=J(r,o,i,n,e[a],20,-373897302),n=J(n,r,o,i,e[a+5],5,-701558691),i=J(i,n,r,o,e[a+10],9,38016083),o=J(o,i,n,r,e[a+15],14,-660478335),r=J(r,o,i,n,e[a+4],20,-405537848),n=J(n,r,o,i,e[a+9],5,568446438),i=J(i,n,r,o,e[a+14],9,-1019803690),o=J(o,i,n,r,e[a+3],14,-187363961),r=J(r,o,i,n,e[a+8],20,1163531501),n=J(n,r,o,i,e[a+13],5,-1444681467),i=J(i,n,r,o,e[a+2],9,-51403784),o=J(o,i,n,r,e[a+7],14,1735328473),n=B(n,r=J(r,o,i,n,e[a+12],20,-1926607734),o,i,e[a+5],4,-378558),i=B(i,n,r,o,e[a+8],11,-2022574463),o=B(o,i,n,r,e[a+11],16,1839030562),r=B(r,o,i,n,e[a+14],23,-35309556),n=B(n,r,o,i,e[a+1],4,-1530992060),i=B(i,n,r,o,e[a+4],11,1272893353),o=B(o,i,n,r,e[a+7],16,-155497632),r=B(r,o,i,n,e[a+10],23,-1094730640),n=B(n,r,o,i,e[a+13],4,681279174),i=B(i,n,r,o,e[a],11,-358537222),o=B(o,i,n,r,e[a+3],16,-722521979),r=B(r,o,i,n,e[a+6],23,76029189),n=B(n,r,o,i,e[a+9],4,-640364487),i=B(i,n,r,o,e[a+12],11,-421815835),o=B(o,i,n,r,e[a+15],16,530742520),n=W(n,r=B(r,o,i,n,e[a+2],23,-995338651),o,i,e[a],6,-198630844),i=W(i,n,r,o,e[a+7],10,1126891415),o=W(o,i,n,r,e[a+14],15,-1416354905),r=W(r,o,i,n,e[a+5],21,-57434055),n=W(n,r,o,i,e[a+12],6,1700485571),i=W(i,n,r,o,e[a+3],10,-1894986606),o=W(o,i,n,r,e[a+10],15,-1051523),r=W(r,o,i,n,e[a+1],21,-2054922799),n=W(n,r,o,i,e[a+8],6,1873313359),i=W(i,n,r,o,e[a+15],10,-30611744),o=W(o,i,n,r,e[a+6],15,-1560198380),r=W(r,o,i,n,e[a+13],21,1309151649),n=W(n,r,o,i,e[a+4],6,-145523070),i=W(i,n,r,o,e[a+11],10,-1120210379),o=W(o,i,n,r,e[a+2],15,718787259),r=W(r,o,i,n,e[a+9],21,-343485551),n=z(n,s),r=z(r,c),o=z(o,u),i=z(i,l);}return [n,r,o,i]}(function(e){if(0===e.length)return [];for(var t=8*e.length,n=new Uint32Array(q(t)),r=0;r<t;r+=8)n[r>>5]|=(255&e[r/8])<<r%32;return n}(e),8*e.length))}),X=G;function Q(e,t,n,r){switch(e){case 0:return t&n^~t&r;case 1:case 3:return t^n^r;case 2:return t&n^t&r^n&r}}function Y(e,t){return e<<t|e>>>32-t}var Z=M("v5",80,function(e){var t=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var r=unescape(encodeURIComponent(e));e=[];for(var o=0;o<r.length;++o)e.push(r.charCodeAt(o));}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var i=e.length/4+2,a=Math.ceil(i/16),s=new Array(a),c=0;c<a;++c){for(var u=new Uint32Array(16),l=0;l<16;++l)u[l]=e[64*c+4*l]<<24|e[64*c+4*l+1]<<16|e[64*c+4*l+2]<<8|e[64*c+4*l+3];s[c]=u;}s[a-1][14]=8*(e.length-1)/Math.pow(2,32),s[a-1][14]=Math.floor(s[a-1][14]),s[a-1][15]=8*(e.length-1)&4294967295;for(var d=0;d<a;++d){for(var f=new Uint32Array(80),g=0;g<16;++g)f[g]=s[d][g];for(var v=16;v<80;++v)f[v]=Y(f[v-3]^f[v-8]^f[v-14]^f[v-16],1);for(var p=n[0],m=n[1],h=n[2],y=n[3],w=n[4],b=0;b<80;++b){var k=Math.floor(b/20),E=Y(p,5)+Q(k,m,h,y)+w+t[k]+f[b]>>>0;w=y,y=h,h=Y(m,30)>>>0,m=p,p=E;}n[0]=n[0]+p>>>0,n[1]=n[1]+m>>>0,n[2]=n[2]+h>>>0,n[3]=n[3]+y>>>0,n[4]=n[4]+w>>>0;}return [n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]}),ee=Z;var te=Object.freeze({__proto__:null,v1:function(e,t,n){var r=t&&n||0,o=t||new Array(16),i=(e=e||{}).node||U,a=void 0!==e.clockseq?e.clockseq:A;if(null==i||null==a){var s=e.random||(e.rng||T)();null==i&&(i=U=[1|s[0],s[1],s[2],s[3],s[4],s[5]]),null==a&&(a=A=16383&(s[6]<<8|s[7]));}var c=void 0!==e.msecs?e.msecs:Date.now(),u=void 0!==e.nsecs?e.nsecs:V+1,l=c-$+(u-V)/1e4;if(l<0&&void 0===e.clockseq&&(a=a+1&16383),(l<0||c>$)&&void 0===e.nsecs&&(u=0),u>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");$=c,V=u,A=a;var d=(1e4*(268435455&(c+=122192928e5))+u)%4294967296;o[r++]=d>>>24&255,o[r++]=d>>>16&255,o[r++]=d>>>8&255,o[r++]=255&d;var f=c/4294967296*1e4&268435455;o[r++]=f>>>8&255,o[r++]=255&f,o[r++]=f>>>24&15|16,o[r++]=f>>>16&255,o[r++]=a>>>8|128,o[r++]=255&a;for(var g=0;g<6;++g)o[r+g]=i[g];return t||N(o)},v3:X,v4:function(e,t,n){var r=(e=e||{}).random||(e.rng||T)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var o=0;o<16;++o)t[n+o]=r[o];return t}return N(r)},v5:ee,NIL:"00000000-0000-0000-0000-000000000000",version:function(e){if(!L(e))throw TypeError("Invalid UUID");return parseInt(e.substr(14,1),16)},validate:L,stringify:N,parse:H});const ne=["debug","info","warn","error","none"];var re={commonBasicLogger:function(e,t){if(e&&e.destination&&"function"!=typeof e.destination)throw new Error("destination for basicLogger was set to a non-function");function n(e){return function(t){console&&console[e]&&console[e].call(console,t);}}const r=e&&e.destination?[e.destination,e.destination,e.destination,e.destination]:[n("log"),n("info"),n("warn"),n("error")],o=!(!e||!e.destination),i=e&&void 0!==e.prefix&&null!==e.prefix?e.prefix:"[LaunchDarkly] ";let a=1;if(e&&e.level)for(let t=0;t<ne.length;t++)ne[t]===e.level&&(a=t);function s(e,n,a){if(a.length<1)return;let s;const c=o?n+": "+i:i;if(1!==a.length&&t){const e=[...a];e[0]=c+e[0],s=t(...e);}else s=c+a[0];try{r[e](s);}catch(e){console&&console.log&&console.log("[LaunchDarkly] Configured logger's "+n+" method threw an exception: "+e);}}const c={};for(let e=0;e<ne.length;e++){const t=ne[e];if("none"!==t)if(e<a)c[t]=()=>{};else {const n=e;c[t]=function(){s(n,t,arguments);};}}return c},validateLogger:function(e){ne.forEach(t=>{if("none"!==t&&(!e[t]||"function"!=typeof e[t]))throw new Error("Provided logger instance must support logger."+t+"(...) method")});}};function oe(e){return e&&e.message?e.message:"string"==typeof e||e instanceof String?e:JSON.stringify(e)}const ie=" Please see https://docs.launchdarkly.com/sdk/client-side/javascript#initialize-the-client for instructions on SDK initialization.";var ae={bootstrapInvalid:function(){return "LaunchDarkly bootstrap data is not available because the back end could not read the flags."},bootstrapOldFormat:function(){return "LaunchDarkly client was initialized with bootstrap data that did not include flag metadata. Events may not be sent correctly."+ie},clientInitialized:function(){return "LaunchDarkly client initialized"},clientNotReady:function(){return "LaunchDarkly client is not ready"},debugEnqueueingEvent:function(e){return 'enqueueing "'+e+'" event'},debugPostingDiagnosticEvent:function(e){return "sending diagnostic event ("+e.kind+")"},debugPostingEvents:function(e){return "sending "+e+" events"},debugStreamDelete:function(e){return 'received streaming deletion for flag "'+e+'"'},debugStreamDeleteIgnored:function(e){return 'received streaming deletion for flag "'+e+'" but ignored due to version check'},debugStreamPatch:function(e){return 'received streaming update for flag "'+e+'"'},debugStreamPatchIgnored:function(e){return 'received streaming update for flag "'+e+'" but ignored due to version check'},debugStreamPing:function(){return "received ping message from stream"},debugPolling:function(e){return "polling for feature flags at "+e},debugStreamPut:function(){return "received streaming update for all flags"},deprecated:function(e,t){return t?'"'+e+'" is deprecated, please use "'+t+'"':'"'+e+'" is deprecated'},environmentNotFound:function(){return "Environment not found. Double check that you specified a valid environment/client-side ID."+ie},environmentNotSpecified:function(){return "No environment/client-side ID was specified."+ie},errorFetchingFlags:function(e){return "Error fetching flag settings: "+oe(e)},eventCapacityExceeded:function(){return "Exceeded event queue capacity. Increase capacity to avoid dropping events."},eventWithoutContext:function(){return "Be sure to call `identify` in the LaunchDarkly client: https://docs.launchdarkly.com/sdk/features/identify#javascript"},httpErrorMessage:function(e,t,n){return "Received error "+e+(401===e?" (invalid SDK key)":"")+" for "+t+" - "+(s.isHttpErrorRecoverable(e)?n:"giving up permanently")},httpUnavailable:function(){return "Cannot make HTTP requests in this environment."+ie},identifyDisabled:function(){return "identify() has no effect here; it must be called on the main client instance"},inspectorMethodError:(e,t)=>`an inspector: "${t}" of type: "${e}" generated an exception`,invalidContentType:function(e){return 'Expected application/json content type but got "'+e+'"'},invalidData:function(){return "Invalid data received from LaunchDarkly; connection may have been interrupted"},invalidInspector:(e,t)=>`an inspector: "${t}" of an invalid type (${e}) was configured`,invalidKey:function(){return "Event key must be a string"},invalidMetricValue:e=>`The track function was called with a non-numeric "metricValue" (${e}), only numeric metric values are supported.`,invalidContext:function(){return "Invalid context specified."+ie},invalidTagValue:e=>`Config option "${e}" must only contain letters, numbers, ., _ or -.`,localStorageUnavailable:function(e){return "local storage is unavailable: "+oe(e)},networkError:e=>"network error"+(e?" ("+e+")":""),optionBelowMinimum:(e,t,n)=>'Config option "'+e+'" was set to '+t+", changing to minimum value of "+n,streamClosing:function(){return "Closing stream connection"},streamConnecting:function(e){return "Opening stream connection to "+e},streamError:function(e,t){return "Error on stream connection: "+oe(e)+", will continue retrying after "+t+" milliseconds."},tagValueTooLong:e=>`Value of "${e}" was longer than 64 characters and was discarded.`,unknownCustomEventKey:function(e){return 'Custom event "'+e+'" does not exist'},unknownOption:e=>'Ignoring unknown config option "'+e+'"',contextNotSpecified:function(){return "No context specified."+ie},unrecoverableStreamError:e=>`Error on stream connection ${oe(e)}, giving up permanently`,wrongOptionType:(e,t,n)=>'Config option "'+e+'" should be of type '+t+", got "+n+", using default value",wrongOptionTypeBoolean:(e,t)=>'Config option "'+e+'" should be a boolean, got '+t+", converting to boolean"};const{validateLogger:se}=re,ce={baseUrl:{default:"https://app.launchdarkly.com"},streamUrl:{default:"https://clientstream.launchdarkly.com"},eventsUrl:{default:"https://events.launchdarkly.com"},sendEvents:{default:!0},streaming:{type:"boolean"},sendLDHeaders:{default:!0},requestHeaderTransform:{type:"function"},sendEventsOnlyForVariation:{default:!1},useReport:{default:!1},evaluationReasons:{default:!1},eventCapacity:{default:100,minimum:1},flushInterval:{default:2e3,minimum:2e3},samplingInterval:{default:0,minimum:0},streamReconnectDelay:{default:1e3,minimum:0},allAttributesPrivate:{default:!1},privateAttributes:{default:[]},bootstrap:{type:"string|object"},diagnosticRecordingInterval:{default:9e5,minimum:2e3},diagnosticOptOut:{default:!1},wrapperName:{type:"string"},wrapperVersion:{type:"string"},stateProvider:{type:"object"},application:{validator:function(e,t,n){const r={};t.id&&(r.id=de(`${e}.id`,t.id,n));t.version&&(r.version=de(`${e}.version`,t.version,n));return r}},inspectors:{default:[]},hooks:{default:[]},plugins:{default:[]}},ue=/^(\w|\.|-)+$/;function le(e){return e&&e.replace(/\/+$/,"")}function de(e,t,n){if("string"==typeof t&&t.match(ue)){if(!(t.length>64))return t;n.warn(ae.tagValueTooLong(e));}else n.warn(ae.invalidTagValue(e));}var fe={baseOptionDefs:ce,validate:function(e,t,n,r){const o=S.extend({logger:{default:r}},ce,n),i={};function a(e){S.onNextTick(()=>{t&&t.maybeReportError(new s.LDInvalidArgumentError(e));});}let c=S.extend({},e||{});return function(e){const t=e;Object.keys(i).forEach(e=>{if(void 0!==t[e]){const n=i[e];r&&r.warn(ae.deprecated(e,n)),n&&(void 0===t[n]&&(t[n]=t[e]),delete t[e]);}});}(c),c=function(e){const t=S.extend({},e);return Object.keys(o).forEach(e=>{void 0!==t[e]&&null!==t[e]||(t[e]=o[e]&&o[e].default);}),t}(c),c=function(e){const t=S.extend({},e),n=e=>{if(null===e)return "any";if(void 0===e)return;if(Array.isArray(e))return "array";const t=typeof e;return "boolean"===t||"string"===t||"number"===t||"function"===t?t:"object"};return Object.keys(e).forEach(i=>{const s=e[i];if(null!=s){const c=o[i];if(void 0===c)a(ae.unknownOption(i));else {const o=c.type||n(c.default),u=c.validator;if(u){const n=u(i,e[i],r);void 0!==n?t[i]=n:delete t[i];}else if("any"!==o){const e=o.split("|"),r=n(s);e.indexOf(r)<0?"boolean"===o?(t[i]=!!s,a(ae.wrongOptionTypeBoolean(i,r))):(a(ae.wrongOptionType(i,o,r)),t[i]=c.default):"number"===r&&void 0!==c.minimum&&s<c.minimum&&(a(ae.optionBelowMinimum(i,s,c.minimum)),t[i]=c.minimum);}}}}),t.baseUrl=le(t.baseUrl),t.streamUrl=le(t.streamUrl),t.eventsUrl=le(t.eventsUrl),t}(c),se(c.logger),c},getTags:function(e){const t={};return e&&(e.application&&void 0!==e.application.id&&null!==e.application.id&&(t["application-id"]=[e.application.id]),e.application&&void 0!==e.application.version&&null!==e.application.id&&(t["application-version"]=[e.application.version])),t}};const{getLDUserAgentString:ge}=S;var ve={getLDHeaders:function(e,t){if(t&&!t.sendLDHeaders)return {};const n={};n[e.userAgentHeaderName||"User-Agent"]=ge(e),t&&t.wrapperName&&(n["X-LaunchDarkly-Wrapper"]=t.wrapperVersion?t.wrapperName+"/"+t.wrapperVersion:t.wrapperName);const r=fe.getTags(t),o=Object.keys(r);return o.length&&(n["x-launchdarkly-tags"]=o.sort().map(e=>Array.isArray(r[e])?r[e].sort().map(t=>`${e}/${t}`):[`${e}/${r[e]}`]).reduce((e,t)=>e.concat(t),[]).join(" ")),n},transformHeaders:function(e,t){return t&&t.requestHeaderTransform?t.requestHeaderTransform({...e}):e}};const{v1:pe}=te,{getLDHeaders:me,transformHeaders:he}=ve;var ye=function(e,t,n){const r=S.extend({"Content-Type":"application/json"},me(e,n)),o={};return o.sendEvents=(t,o,i)=>{if(!e.httpRequest)return Promise.resolve();const a=JSON.stringify(t),c=i?null:pe();return function t(u){const l=i?r:S.extend({},r,{"X-LaunchDarkly-Event-Schema":"4","X-LaunchDarkly-Payload-ID":c});return e.httpRequest("POST",o,he(l,n),a).promise.then(e=>{if(e)return e.status>=400&&s.isHttpErrorRecoverable(e.status)&&u?t(!1):function(e){const t={status:e.status},n=e.header("date");if(n){const e=Date.parse(n);e&&(t.serverTime=e);}return t}(e)}).catch(()=>u?t(!1):Promise.reject())}(!0).catch(()=>{})},o};var we=function e(t,n=[]){if(null===t||"object"!=typeof t)return JSON.stringify(t);if(n.includes(t))throw new Error("Cycle detected");if(Array.isArray(t)){return `[${t.map(r=>e(r,[...n,t])).map(e=>void 0===e?"null":e).join(",")}]`}return `{${Object.keys(t).sort().map(r=>{const o=e(t[r],[...n,t]);if(void 0!==o)return `${JSON.stringify(r)}:${o}`}).filter(e=>void 0!==e).join(",")}}`};const{commonBasicLogger:be}=re;function ke(e){return "string"==typeof e&&"kind"!==e&&e.match(/^(\w|\.|-)+$/)}function Ee(e){return e.includes("%")||e.includes(":")?e.replace(/%/g,"%25").replace(/:/g,"%3A"):e}var De={checkContext:function(e,t){if(e){if(t&&(void 0===e.kind||null===e.kind))return void 0!==e.key&&null!==e.key;const n=e.key,r=void 0===e.kind?"user":e.kind,o=ke(r),i="multi"===r||null!=n&&""!==n;if("multi"===r){const t=Object.keys(e).filter(e=>"kind"!==e);return i&&t.every(e=>ke(e))&&t.every(t=>{const n=e[t].key;return null!=n&&""!==n})}return i&&o}return !1},getContextKeys:function(e,t=be()){if(!e)return;const n={},{kind:r,key:o}=e;switch(r){case void 0:n.user=`${o}`;break;case"multi":Object.entries(e).filter(([e])=>"kind"!==e).forEach(([e,t])=>{t&&t.key&&(n[e]=t.key);});break;case null:t.warn(`null is not a valid context kind: ${e}`);break;case"":t.warn(`'' is not a valid context kind: ${e}`);break;default:n[r]=`${o}`;}return n},getContextKinds:function(e){return e?null===e.kind||void 0===e.kind?["user"]:"multi"!==e.kind?[e.kind]:Object.keys(e).filter(e=>"kind"!==e):[]},getCanonicalKey:function(e){if(e){if((void 0===e.kind||null===e.kind||"user"===e.kind)&&e.key)return e.key;if("multi"!==e.kind&&e.key)return `${e.kind}:${Ee(e.key)}`;if("multi"===e.kind)return Object.keys(e).sort().filter(e=>"kind"!==e).map(t=>`${t}:${Ee(e[t].key)}`).join(":")}}};const{getContextKinds:xe}=De;var Oe=function(){const e={};let t=0,n=0,r={},o={};return e.summarizeEvent=e=>{if("feature"===e.kind){const i=e.key+":"+(null!==e.variation&&void 0!==e.variation?e.variation:"")+":"+(null!==e.version&&void 0!==e.version?e.version:""),a=r[i];let s=o[e.key];s||(s=new Set,o[e.key]=s),function(e){return e.context?xe(e.context):e.contextKeys?Object.keys(e.contextKeys):[]}(e).forEach(e=>s.add(e)),a?a.count=a.count+1:r[i]={count:1,key:e.key,version:e.version,variation:e.variation,value:e.value,default:e.default},(0===t||e.creationDate<t)&&(t=e.creationDate),e.creationDate>n&&(n=e.creationDate);}},e.getSummary=()=>{const e={};let i=!0;for(const t of Object.values(r)){let n=e[t.key];n||(n={default:t.default,counters:[],contextKinds:[...o[t.key]]},e[t.key]=n);const r={value:t.value,count:t.count};void 0!==t.variation&&null!==t.variation&&(r.variation=t.variation),void 0!==t.version&&null!==t.version?r.version=t.version:r.unknown=!0,n.counters.push(r),i=!1;}return i?null:{startDate:t,endDate:n,features:e,kind:"summary"}},e.clearSummary=()=>{t=0,n=0,r={},o={};},e};var Ce=function(e){let t={},n={};return {summarizeEvent:function(e){if("feature"===e.kind){const r=we(e.context);if(!r)return;let o=t[r];o||(t[r]=Oe(),o=t[r],n[r]=e.context),o.summarizeEvent(e);}},getSummaries:function(){const r=t,o=n;return t={},n={},Object.entries(r).map(([t,n])=>{const r=n.getSummary();return r.context=e.filter(o[t]),r})}}};function Pe(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Se(e){return (e.startsWith("/")?e.substring(1):e).split("/").map(e=>e.indexOf("~")>=0?e.replace(/~1/g,"/").replace(/~0/g,"~"):e)}function Ie(e){return !e.startsWith("/")}function Te(e,t){const n=Ie(e),r=Ie(t);if(n&&r)return e===t;if(n){const n=Se(t);return 1===n.length&&e===n[0]}if(r){const n=Se(e);return 1===n.length&&t===n[0]}return e===t}function Fe(e){return `/${Pe(e)}`}var Le={cloneExcluding:function(e,t){const n=[],r={},o=[];for(n.push(...Object.keys(e).map(t=>({key:t,ptr:Fe(t),source:e,parent:r,visited:[e]})));n.length;){const e=n.pop();if(t.some(t=>Te(t,e.ptr)))o.push(e.ptr);else {const t=e.source[e.key];if(null===t)e.parent[e.key]=t;else if(Array.isArray(t))e.parent[e.key]=[...t];else if("object"==typeof t){if(e.visited.includes(t))continue;e.parent[e.key]={},n.push(...Object.keys(t).map(n=>{return {key:n,ptr:(r=e.ptr,o=Pe(n),`${r}/${o}`),source:t,parent:e.parent[e.key],visited:[...e.visited,t]};var r,o;}));}else e.parent[e.key]=t;}}return {cloned:r,excluded:o.sort()}},compare:Te,literalToReference:Fe};var Ue=function(e){const t={},n=e.allAttributesPrivate,r=e.privateAttributes||[],o=["key","kind","_meta","anonymous"],i=["name","ip","firstName","lastName","email","avatar","country"],a=(e,t)=>{if("object"!=typeof e||null===e||Array.isArray(e))return;const{cloned:i,excluded:a}=Le.cloneExcluding(e,((e,t)=>(n||t&&e.anonymous?Object.keys(e):[...r,...e._meta&&e._meta.privateAttributes||[]]).filter(e=>!o.some(t=>Le.compare(e,t))))(e,t));return i.key=String(i.key),a.length&&(i._meta||(i._meta={}),i._meta.redactedAttributes=a),i._meta&&(delete i._meta.privateAttributes,0===Object.keys(i._meta).length&&delete i._meta),void 0!==i.anonymous&&(i.anonymous=!!i.anonymous),i};return t.filter=(e,t=!1)=>void 0===e.kind||null===e.kind?a((e=>{const t={...e.custom||{},kind:"user",key:e.key};void 0!==e.anonymous&&(t.anonymous=!!e.anonymous);for(const n of i)delete t[n],void 0!==e[n]&&null!==e[n]&&(t[n]=String(e[n]));return void 0!==e.privateAttributeNames&&null!==e.privateAttributeNames&&(t._meta=t._meta||{},t._meta.privateAttributes=e.privateAttributeNames.map(e=>e.startsWith("/")?Le.literalToReference(e):e)),t})(e),t):"multi"===e.kind?((e,t)=>{const n={kind:e.kind},r=Object.keys(e);for(const o of r)if("kind"!==o){const r=a(e[o],t);r&&(n[o]=r);}return n})(e,t):a(e,t),t};const{getContextKeys:Ae}=De;var je=function(e,t,n,r=null,o=null,i=null){const a={},c=i||ye(e,n,t),u=S.appendUrlPath(t.eventsUrl,"/events/bulk/"+n),l=Ue(t),d=Ce(l),f=t.samplingInterval,g=t.eventCapacity,v=t.flushInterval,p=t.logger;let m,h=[],y=0,w=!1,b=!1;function k(){return 0===f||0===Math.floor(Math.random()*f)}function E(e){const t=S.extend({},e);return "identify"===e.kind||"feature"===e.kind||"custom"===e.kind?t.context=l.filter(e.context):(t.contextKeys=Ae(e.context,p),delete t.context),"feature"===e.kind&&(delete t.trackEvents,delete t.debugEventsUntilDate),t}function D(e){h.length<g?(h.push(e),b=!1):(b||(b=!0,p.warn(ae.eventCapacityExceeded())),r&&r.incrementDroppedEvents());}return a.enqueue=function(e){if(w)return;let t=!1,n=!1;var r;if(d.summarizeEvent(e),"feature"===e.kind?k()&&(t=!!e.trackEvents,n=!!(r=e).debugEventsUntilDate&&r.debugEventsUntilDate>y&&r.debugEventsUntilDate>(new Date).getTime()):t=k(),t&&D(E(e)),n){const t=S.extend({},e,{kind:"debug"});t.context=l.filter(t.context),delete t.trackEvents,delete t.debugEventsUntilDate,D(t);}},a.flush=async function(){if(w)return Promise.resolve();const e=h;return d.getSummaries().forEach(t=>{Object.keys(t.features).length&&e.push(t);}),r&&r.setEventsInLastBatch(e.length),0===e.length?Promise.resolve():(h=[],p.debug(ae.debugPostingEvents(e.length)),c.sendEvents(e,u).then(e=>{e&&(e.serverTime&&(y=e.serverTime),s.isHttpErrorRecoverable(e.status)||(w=!0),e.status>=400&&S.onNextTick(()=>{o.maybeReportError(new s.LDUnexpectedResponseError(ae.httpErrorMessage(e.status,"event posting","some events were dropped")));}));}))},a.start=function(){const e=()=>{a.flush(),m=setTimeout(e,v);};m=setTimeout(e,v);},a.stop=function(){clearTimeout(m);},a};var Re=function(e){const t={},n={};return t.on=function(e,t,r){n[e]=n[e]||[],n[e]=n[e].concat({handler:t,context:r});},t.off=function(e,t,r){if(n[e])for(let o=0;o<n[e].length;o++)n[e][o].handler===t&&n[e][o].context===r&&(n[e]=n[e].slice(0,o).concat(n[e].slice(o+1)));},t.emit=function(e){if(!n[e])return;const t=n[e].slice(0);for(let e=0;e<t.length;e++)t[e].handler.apply(t[e].context,Array.prototype.slice.call(arguments,1));},t.getEvents=function(){return Object.keys(n)},t.getEventListenerCount=function(e){return n[e]?n[e].length:0},t.maybeReportError=function(t){t&&(n["error"]?this.emit("error",t):(e||console).error(t.message));},t};const Ne="ready",$e="initialized",Ve="failed";var He=function(e){let t=!1,n=!1,r=null,o=null;const i=new Promise(t=>{const n=()=>{e.off(Ne,n),t();};e.on(Ne,n);}).catch(()=>{});return {getInitializationPromise:()=>o||(t?Promise.resolve():n?Promise.reject(r):(o=new Promise((t,n)=>{const r=()=>{e.off($e,r),t();},o=t=>{e.off(Ve,o),n(t);};e.on($e,r),e.on(Ve,o);}),o)),getReadyPromise:()=>i,signalSuccess:()=>{t||n||(t=!0,e.emit($e),e.emit(Ne));},signalFailure:o=>{t||n||(n=!0,r=o,e.emit(Ve,o),e.emit(Ne)),e.maybeReportError(o);}}};var Me=function(e,t,n,r){const o={};function i(){let e="";const o=r.getContext();return o&&(e=n||S.btoa(JSON.stringify(o))),"ld:"+t+":"+e}return o.loadFlags=()=>e.get(i()).then(e=>{if(null==e)return null;try{let t=JSON.parse(e);if(t){const e=t.$schema;void 0===e||e<1?t=S.transformValuesToVersionedValues(t):delete t.$schema;}return t}catch(e){return o.clearFlags().then(()=>null)}}),o.saveFlags=t=>{const n=S.extend({},t,{$schema:1});return e.set(i(),JSON.stringify(n))},o.clearFlags=()=>e.clear(i()),o};var qe=function(e,t){const n={};le