@walkeros/web-destination-optimizely 3.4.0-next-1776749829492
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 +121 -0
- package/dist/dev.d.mts +193 -0
- package/dist/dev.d.ts +193 -0
- package/dist/dev.js +1 -0
- package/dist/dev.js.map +1 -0
- package/dist/dev.mjs +1 -0
- package/dist/dev.mjs.map +1 -0
- package/dist/examples/index.d.mts +152 -0
- package/dist/examples/index.d.ts +152 -0
- package/dist/examples/index.js +228 -0
- package/dist/examples/index.mjs +206 -0
- package/dist/index.browser.js +1 -0
- package/dist/index.d.mts +111 -0
- package/dist/index.d.ts +111 -0
- package/dist/index.es5.js +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -0
- package/dist/walkerOS.json +641 -0
- package/package.json +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function _array_like_to_array(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _array_with_holes(e){if(Array.isArray(e))return e}function _array_without_holes(e){if(Array.isArray(e))return _array_like_to_array(e)}function _assert_this_initialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function asyncGeneratorStep(e,t,r,n,i,o,a){try{var s=e[o](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,i)}function _async_to_generator(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var o=e.apply(t,r);function a(e){asyncGeneratorStep(o,n,i,a,s,"next",e)}function s(e){asyncGeneratorStep(o,n,i,a,s,"throw",e)}a(void 0)})}}function _call_super(e,t,r){return t=_get_prototype_of(t),_possible_constructor_return(e,_is_native_reflect_construct()?Reflect.construct(t,r||[],_get_prototype_of(e).constructor):t.apply(e,r))}function _class_call_check(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _construct(e,t,r){return _construct=_is_native_reflect_construct()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var i=new(Function.bind.apply(e,n));return r&&_set_prototype_of(i,r.prototype),i},_construct.apply(null,arguments)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _create_class(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),e}function _define_property(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _get(e,t,r){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=_super_prop_base(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r||e):i.value}},_get(e,t,r||e)}function _get_prototype_of(e){return _get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_get_prototype_of(e)}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_set_prototype_of(e,t)}function _instanceof(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function _is_native_function(e){return-1!==Function.toString.call(e).indexOf("[native code]")}function _iterable_to_array(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterable_to_array_limit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o=[],a=!0,s=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(s)throw i}}return o}}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){_define_property(e,t,r[t])})}return e}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _object_spread_props(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function _possible_constructor_return(e,t){return!t||"object"!==_type_of(t)&&"function"!=typeof t?_assert_this_initialized(e):t}function _set_prototype_of(e,t){return _set_prototype_of=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},_set_prototype_of(e,t)}function _sliced_to_array(e,t){return _array_with_holes(e)||_iterable_to_array_limit(e,t)||_unsupported_iterable_to_array(e,t)||_non_iterable_rest()}function _super_prop_base(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_get_prototype_of(e)););return e}function _to_consumable_array(e){return _array_without_holes(e)||_iterable_to_array(e)||_unsupported_iterable_to_array(e)||_non_iterable_spread()}function _type_of(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function _unsupported_iterable_to_array(e,t){if(e){if("string"==typeof e)return _array_like_to_array(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_array_like_to_array(e,t):void 0}}function _wrap_native_super(e){var t="function"==typeof Map?new Map:void 0;return _wrap_native_super=function(e){if(null===e||!_is_native_function(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return _construct(e,arguments,_get_prototype_of(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),_set_prototype_of(r,e)},_wrap_native_super(e)}function _is_native_reflect_construct(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(_is_native_reflect_construct=function(){return!!e})()}function _ts_generator(e,t){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),s=Object.defineProperty;return s(a,"next",{value:u(0)}),s(a,"throw",{value:u(1)}),s(a,"return",{value:u(2)}),"function"==typeof Symbol&&s(a,Symbol.iterator,{value:function(){return this}}),a;function u(s){return function(u){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=t.call(e,o)}catch(e){s=[6,e],n=0}finally{r=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,u])}}}var Destination=function(){var e,t=function(e){return Array.isArray(e)},r=function(e){return void 0!==e},n=function(e){return"number"==typeof e&&!Number.isNaN(e)},i=function(e){return"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&!t(e)&&"[object Object]"===Object.prototype.toString.call(e)},o=function(e){return"string"==typeof e},a=function(e){return re(e)?e:void 0},s=function(e,t,r){return function(){for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return _async_to_generator(function(){var n;return _ts_generator(this,function(o){switch(o.label){case 0:return o.trys.push([0,2,4,6]),[4,e.apply(void 0,_to_consumable_array(i))];case 1:case 3:return[2,o.sent()];case 2:return n=o.sent(),t?[4,t(n)]:[2];case 4:return[4,null==r?void 0:r()];case 5:return o.sent(),[7];case 6:return[2]}})})()}},u=function(e){return _async_to_generator(function(e){var n,o,a,u,l,c,d,f,v,h,p,g,y,m=arguments;return _ts_generator(this,function(_){switch(_.label){case 0:if(n=m.length>1&&void 0!==m[1]?m[1]:{},o=m.length>2&&void 0!==m[2]?m[2]:{},!r(e))return[2];u=i(e)&&e.consent||o.consent||(null===(a=o.collector)||void 0===a?void 0:a.consent),l=t(n)?n:[n],c=!0,d=!1,f=void 0,_.label=1;case 1:_.trys.push([1,6,7,8]),v=l[Symbol.iterator](),_.label=2;case 2:return(c=(h=v.next()).done)?[3,5]:(p=h.value,[4,s(ne)(e,p,_object_spread_props(_object_spread({},o),{consent:u}))]);case 3:if(g=_.sent(),r(g))return[2,g];_.label=4;case 4:return c=!0,[3,2];case 5:return[3,8];case 6:return y=_.sent(),d=!0,f=y,[3,8];case 7:try{c||null==v.return||v.return()}finally{if(d)throw f}return[7];case 8:return[2]}})}).apply(this,arguments)},l=function(){return de>ce.length-16&&(le.default.randomFillSync(ce),de=0),ce.slice(de,de+=16)},c=function(e){return"number"==typeof e&&Math.abs(e)<=je},d=function(e,t){if(!e)return{};var r={};return f(e,t,r),r},f=function(e,t,r){e&&e.forEach(function(e){r[e[t]]=e})},v=function(e){return Object.keys(e).map(function(t){return e[t]})},h=function(e){return Object.keys(e).map(function(t){return[t,e[t]]})},p=function(e,t){var r,n=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var u=a.value;if(t(u)){r=u;break}}}catch(e){i=!0,o=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r},g=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var i=0;return e.replace(/%s/g,function(){var e=r[i++],t=void 0===e?"undefined":_type_of(e);return"function"===t?e():"string"===t?e:String(e)})},y=function(e,t){return e.length===t.length&&e.every(function(e,r){return e===t[r]})},m=function(){var e=Rt,t=Rt,r=new Promise(function(r,n){e=r,t=n});return{promise:r,resolve:e,reject:t,then:r.then.bind(r)}},_=function(e,t,r,n){return new(r||(r=Promise))(function(i,o){function a(e){try{u(n.next(e))}catch(e){o(e)}}function s(e){try{u(n.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,_instanceof(t,r)?t:new r(function(e){e(t)})).then(a,s)}u((n=n.apply(e,t||[])).next())})},b=function(e){var t=[],r=e[0];return e.forEach(function(e){if("conversion"===e.type||"impression"===e.type){var r=(i={snapshots:[],visitor_id:(n=e).user.id,attributes:[]},n.user.attributes.forEach(function(e){i.attributes.push({entity_id:e.entityId,key:e.key,type:"custom",value:e.value})}),"boolean"==typeof n.context.botFiltering&&i.attributes.push({entity_id:be,key:be,type:er,value:n.context.botFiltering}),i);"impression"===e.type?r.snapshots.push(function(e){var t,r,n=e.layer,i=e.experiment,o=e.variation,a=e.ruleKey,s=e.flagKey,u=e.ruleType,l=e.enabled,c=e.cmabUuid,d=n?n.id:null;return{decisions:[{campaign_id:d,experiment_id:null!==(t=null==i?void 0:i.id)&&void 0!==t?t:"",variation_id:null!==(r=null==o?void 0:o.id)&&void 0!==r?r:"",metadata:{flag_key:s,rule_key:a,rule_type:u,variation_key:o?o.key:"",enabled:l,cmab_uuid:c}}],events:[{entity_id:d,timestamp:e.timestamp,key:Zt,uuid:e.uuid}]}}(e)):"conversion"===e.type&&r.snapshots.push(function(e){var t=Object.assign({},e.tags);delete t.revenue,delete t.value;var r={entity_id:e.event.id,key:e.event.key,timestamp:e.timestamp,uuid:e.uuid};return e.tags&&(r.tags=e.tags),null!=e.value&&(r.value=e.value),null!=e.revenue&&(r.revenue=e.revenue),{events:[r]}}(e)),t.push(r)}var n,i}),{client_name:r.context.clientName,client_version:r.context.clientVersion,account_id:r.context.accountId,project_id:r.context.projectId,revision:r.context.revision,anonymize_ip:r.context.anonymizeIP,enrich_decisions:!0,visitors:t}},k=function(e){var t,r=(null===(t=e[0])||void 0===t?void 0:t.context.region)||"US";return{url:tr[r]||tr.US,httpVerb:"POST",params:b(e)}},E=function(e){var t,r;return null!==(r=null===(t=e.experiment)||void 0===t?void 0:t.key)&&void 0!==r?r:""},I=function(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.key)&&void 0!==r?r:""},S=function(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.featureEnabled)&&void 0!==r&&r},w=function(e,t,r){return{variationKey:null,enabled:!1,variables:{},ruleKey:null,flagKey:e,userContext:t,reasons:r}},O=function(e){return/^\d+$/.test(e)},x=function(e){var t=e.indexOf("-"),r=e.indexOf("+");return!(t<0)&&(r<0||t<r)},P=function(e){var t=e.indexOf("-"),r=e.indexOf("+");return!(r<0)&&(t<0||r<t)},M=function(e,t){var r=e,n="";if(/\s/.test(e))return null==t||t.warn(Qe,e),null;if(x(e)?(r=e.substring(0,e.indexOf("-")),n=e.substring(e.indexOf("-")+1)):P(e)&&(r=e.substring(0,e.indexOf("+")),n=e.substring(e.indexOf("+")+1)),"string"!=typeof r||"string"!=typeof n)return null;var i=r.split(".").length-1;if(i>2)return null==t||t.warn(Qe,e),null;var o=r.split(".");if(o.length!=i+1)return null==t||t.warn(Qe,e),null;var a=!0,s=!1,u=void 0;try{for(var l,c=o[Symbol.iterator]();!(a=(l=c.next()).done);a=!0){var d=l.value;if(!O(d))return null==t||t.warn(Qe,e),null}}catch(e){s=!0,u=e}finally{try{a||null==c.return||c.return()}finally{if(s)throw u}}return n&&o.push(n),o},R=function(e){return"string"==typeof e||"boolean"==typeof e||De.isNumber(e)},A=function(e,t,r){var n=t.getAttributes(),i=e.value,o=void 0===i?"undefined":_type_of(i),a=e.name,s=n[a],u=void 0===s?"undefined":_type_of(s);return!R(i)||De.isNumber(i)&&!De.isSafeInteger(i)?(null==r||r.warn(Ge,JSON.stringify(e)),null):null===s?(null==r||r.debug(Le,JSON.stringify(e),a),null):R(s)&&o===u?De.isNumber(s)&&!De.isSafeInteger(s)?(null==r||r.warn("45",JSON.stringify(e),a),null):i===s:(null==r||r.warn(We,JSON.stringify(e),u,a),null)},C=function(e,t,r){var n=t.getAttributes(),i=e.name,o=n[i],a=void 0===o?"undefined":_type_of(o),s=e.value;return null!==s&&De.isSafeInteger(s)?null===o?(null==r||r.debug(Le,JSON.stringify(e),i),!1):De.isNumber(o)?!!De.isSafeInteger(o)||(null==r||r.warn("45",JSON.stringify(e),i),!1):(null==r||r.warn(We,JSON.stringify(e),a,i),!1):(null==r||r.warn(Ge,JSON.stringify(e)),!1)},j=function(e,t,r){var n=t.getAttributes(),i=e.name,o=n[i],a=void 0===o?"undefined":_type_of(o),s=e.value;return"string"!=typeof s?(null==r||r.warn(Ge,JSON.stringify(e)),null):null===o?(null==r||r.debug(Le,JSON.stringify(e),i),null):"string"!=typeof o?(null==r||r.warn(We,JSON.stringify(e),a,i),null):function(e,t,r){var n=M(t,r),i=M(e,r);if(!n||!i)return null;for(var o=n.length,a=0;a<i.length;a++){if(o<=a)return x(e)||P(e)?1:-1;if(O(n[a])){var s=parseInt(n[a]),u=parseInt(i[a]);if(s>u)return 1;if(s<u)return-1}else{if(n[a]<i[a])return x(e)&&!x(t)?1:-1;if(n[a]>i[a])return!x(e)&&x(t)?-1:1}}return x(t)&&!x(e)?-1:0}(s,o,r)},D=function(e,t){return t.isQualifiedFor(e.value)},T=function(e){return"string"==typeof e&&""!==e},F=Object.create,N=Object.defineProperty,U=Object.getOwnPropertyDescriptor,V=Object.getOwnPropertyNames,K=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty,q=(e=function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')},"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:function(e,t){return("undefined"!=typeof require?require:e)[t]}}):e),B=function(e,t){return function(){return t||(0,e[V(e)[0]])((t={exports:{}}).exports,t),t.exports}},z=function(e,t){for(var r in t)N(e,r,{get:t[r],enumerable:!0})},H=function(e,t,r,n){if(t&&"object"===(void 0===t?"undefined":_type_of(t))||"function"==typeof t){var i=!0,o=!1,a=void 0;try{for(var s,u=function(){var i=s.value;L.call(e,i)||i===r||N(e,i,{get:function(){return t[i]},enumerable:!(n=U(t,i))||n.enumerable})},l=V(t)[Symbol.iterator]();!(i=(s=l.next()).done);i=!0)u()}catch(e){o=!0,a=e}finally{try{i||null==l.return||l.return()}finally{if(o)throw a}}}return e},J=function(e,t,r){return r=null!=e?F(K(e)):{},H(!t&&e&&e.__esModule?r:N(r,"default",{value:e,enumerable:!0}),e)},G=B({"../../../../node_modules/json-schema/lib/validate.js":function(e,t){var r,n;r=e,n=function(){var e=r;e.Integer={type:"integer"};var t={String:String,Boolean:Boolean,Number:Number,Object:Object,Array:Array,Date:Date};function r(e,t){return r(e,t,{changing:!1})}e.validate=r,e.checkPropertyChange=function(e,t,n){return r(e,t,{changing:n||"property"})};var r=e._validate=function(e,r,n){n||(n={});var i=n.changing;function o(e){return e.type||t[e.name]==e&&e.name.toLowerCase()}var a=[];function s(e,t,r,u){var l;function c(e){a.push({property:r,message:e})}if(r+=r?"number"==typeof u?"["+u+"]":void 0===u?"":"."+u:u,("object"!=(void 0===t?"undefined":_type_of(t))||_instanceof(t,Array))&&(r||"function"!=typeof t)&&(!t||!o(t)))return"function"==typeof t?_instanceof(e,t)||c("is not an instance of the class/constructor "+t.name):t&&c("Invalid schema/property definition "+t),null;function d(e,t){if(e){if(!("string"!=typeof e||"any"==e||("null"==e?null===t:(void 0===t?"undefined":_type_of(t))==e)||_instanceof(t,Array)&&"array"==e||_instanceof(t,Date)&&"date"==e||"integer"==e&&t%1==0))return[{property:r,message:t+" - "+(void 0===t?"undefined":_type_of(t))+" value found, but a "+e+" is required"}];if(_instanceof(e,Array)){for(var n=[],i=0;i<e.length&&(n=d(e[i],t)).length;i++);if(n.length)return n}else if("object"==(void 0===e?"undefined":_type_of(e))){var o=a;a=[],s(t,e,r);var u=a;return a=o,u}}return[]}if(i&&t.readonly&&c("is a readonly field, it can not be changed"),t.extends&&s(e,t.extends,r,u),void 0===e)t.required&&c("is missing and it is required");else if(a=a.concat(d(o(t),e)),t.disallow&&!d(t.disallow,e).length&&c(" disallowed value was matched"),null!==e){if(_instanceof(e,Array)){if(t.items){var f=_instanceof(t.items,Array),v=t.items;for(u=0,l=e.length;u<l;u+=1)f&&(v=t.items[u]),n.coerce&&(e[u]=n.coerce(e[u],v)),a.concat(s(e[u],v,r,u))}t.minItems&&e.length<t.minItems&&c("There must be a minimum of "+t.minItems+" in the array"),t.maxItems&&e.length>t.maxItems&&c("There must be a maximum of "+t.maxItems+" in the array")}else(t.properties||t.additionalProperties)&&a.concat(function(e,t,r,o){if("object"==(void 0===t?"undefined":_type_of(t)))for(var u in("object"!=(void 0===e?"undefined":_type_of(e))||_instanceof(e,Array))&&a.push({property:r,message:"an object is required"}),t)if(t.hasOwnProperty(u)&&"__proto__"!=u&&"constructor"!=u){var l=e.hasOwnProperty(u)?e[u]:void 0;if(void 0===l&&n.existingOnly)continue;var c=t[u];void 0===l&&c.default&&(l=e[u]=c.default),n.coerce&&u in e&&(l=e[u]=n.coerce(l,c)),s(l,c,r,u)}for(u in e){if(e.hasOwnProperty(u)&&("_"!=u.charAt(0)||"_"!=u.charAt(1))&&t&&!t[u]&&!1===o){if(n.filter){delete e[u];continue}a.push({property:r,message:"The property "+u+" is not defined in the schema and the schema does not allow additional properties"})}var d=t&&t[u]&&t[u].requires;d&&!(d in e)&&a.push({property:r,message:"the presence of the property "+u+" requires that "+d+" also be present"}),l=e[u],!o||t&&"object"==(void 0===t?"undefined":_type_of(t))&&u in t||(n.coerce&&(l=e[u]=n.coerce(l,o)),s(l,o,r,u)),!i&&l&&l.$schema&&(a=a.concat(s(l,l.$schema,r,u)))}return a}(e,t.properties,r,t.additionalProperties));if(t.pattern&&"string"==typeof e&&!e.match(t.pattern)&&c("does not match the regex pattern "+t.pattern),t.maxLength&&"string"==typeof e&&e.length>t.maxLength&&c("may only be "+t.maxLength+" characters long"),t.minLength&&"string"==typeof e&&e.length<t.minLength&&c("must be at least "+t.minLength+" characters long"),void 0!==t.minimum&&(void 0===e?"undefined":_type_of(e))==_type_of(t.minimum)&&t.minimum>e&&c("must have a minimum value of "+t.minimum),void 0!==t.maximum&&(void 0===e?"undefined":_type_of(e))==_type_of(t.maximum)&&t.maximum<e&&c("must have a maximum value of "+t.maximum),t.enum){var h,p=t.enum;l=p.length;for(var g=0;g<l;g++)if(p[g]===e){h=1;break}h||c("does not have a value in the enumeration "+p.join(", "))}"number"==typeof t.maxDecimal&&e.toString().match(new RegExp("\\.[0-9]{"+(t.maxDecimal+1)+",}"))&&c("may only have "+t.maxDecimal+" digits of decimal places")}return null}return r&&s(e,r,"",i||""),!i&&e&&e.$schema&&s(e,e.$schema,"",""),{valid:!a.length,errors:a}};return e.mustBeValid=function(e){if(!e.valid)throw new TypeError(e.errors.map(function(e){return"for property "+e.property+": "+e.message}).join(", \n"))},e},"function"==typeof define&&define.amd?define([],function(){return n()}):"object"===(void 0===t?"undefined":_type_of(t))&&t.exports?t.exports=n():r.jsonSchema=n()}}),W=B({"../../../../node_modules/murmurhash/murmurhash.js":function(e,t){!function(){var e=this,r=function(e){return(new TextEncoder).encode(e)};function n(e,t){var n,i,o,a,s,u,l,c;for("string"==typeof e&&(e=r(e)),n=3&e.length,i=e.length-n,o=t,s=3432918353,u=461845907,c=0;c<i;)l=255&e[c]|(255&e[++c])<<8|(255&e[++c])<<16|(255&e[++c])<<24,++c,o=27492+(65535&(a=5*(65535&(o=(o^=l=(65535&(l=(l=(65535&l)*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*u+(((l>>>16)*u&65535)<<16)&4294967295)<<13|o>>>19))+((5*(o>>>16)&65535)<<16)&4294967295))+(((a>>>16)+58964&65535)<<16);switch(l=0,n){case 3:l^=(255&e[c+2])<<16;case 2:l^=(255&e[c+1])<<8;case 1:o^=l=(65535&(l=(l=(65535&(l^=255&e[c]))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<15|l>>>17))*u+(((l>>>16)*u&65535)<<16)&4294967295}return o^=e.length,o=2246822507*(65535&(o^=o>>>16))+((2246822507*(o>>>16)&65535)<<16)&4294967295,o=3266489909*(65535&(o^=o>>>13))+((3266489909*(o>>>16)&65535)<<16)&4294967295,(o^=o>>>16)>>>0}var i=n;if(i.v2=function(e,t){"string"==typeof e&&(e=r(e));for(var n,i=e.length,o=t^i,a=0;i>=4;)n=1540483477*(65535&(n=255&e[a]|(255&e[++a])<<8|(255&e[++a])<<16|(255&e[++a])<<24))+((1540483477*(n>>>16)&65535)<<16),o=1540483477*(65535&o)+((1540483477*(o>>>16)&65535)<<16)^(n=1540483477*(65535&(n^=n>>>24))+((1540483477*(n>>>16)&65535)<<16)),i-=4,++a;switch(i){case 3:o^=(255&e[a+2])<<16;case 2:o^=(255&e[a+1])<<8;case 1:o=1540483477*(65535&(o^=255&e[a]))+((1540483477*(o>>>16)&65535)<<16)}return o=1540483477*(65535&(o^=o>>>13))+((1540483477*(o>>>16)&65535)<<16),(o^=o>>>15)>>>0},i.v3=n,void 0!==t)t.exports=i;else{var o=e.murmur;i.noConflict=function(){return e.murmur=o,i},e.murmur=i}}()}}),Q=B({"../../../../node_modules/@optimizely/optimizely-sdk/node_modules/mimic-response/index.js":function(e,t){var r=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];t.exports=function(e,t){if(t._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");var n=new Set(Object.keys(e).concat(r)),i={},o=!0,a=!1,s=void 0;try{for(var u,l=function(){var r=u.value;if(r in t)return"continue";i[r]={get:function(){var t=e[r];return"function"==typeof t?t.bind(e):t},set:function(t){e[r]=t},enumerable:!0,configurable:!1}},c=n[Symbol.iterator]();!(o=(u=c.next()).done);o=!0)l()}catch(e){a=!0,s=e}finally{try{o||null==c.return||c.return()}finally{if(a)throw s}}return Object.defineProperties(t,i),e.once("aborted",function(){t.destroy(),t.emit("aborted")}),e.once("close",function(){e.complete&&t.readable?t.once("end",function(){t.emit("close")}):t.emit("close")}),t}}}),$=B({"../../../../node_modules/@optimizely/optimizely-sdk/node_modules/decompress-response/index.js":function(e,t){var r=q("stream"),n=r.Transform,i=r.PassThrough,o=q("zlib"),a=Q();t.exports=function(e){var t=(e.headers["content-encoding"]||"").toLowerCase();if(delete e.headers["content-encoding"],!["gzip","deflate","br"].includes(t))return e;var r="br"===t;if(r&&"function"!=typeof o.createBrotliDecompress)return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;var s=!0,u=new n({transform:function(e,t,r){s=!1,r(null,e)},flush:function(e){e()}}),l=new i({autoDestroy:!1,destroy:function(t,r){e.destroy(),r(t)}}),c=r?o.createBrotliDecompress():o.createUnzip();return c.once("error",function(t){!s||e.readable?l.destroy(t):l.end()}),a(e,l),e.pipe(u).pipe(c).pipe(l),l}}}),Y={};z(Y,{DestinationOptimizely:function(){return li},default:function(){return di},destinationOptimizely:function(){return ci}});var X=Object.defineProperty;!function(e,t){for(var r in t)X(e,r,{get:t[r],enumerable:!0})}({},{Level:function(){return ee}});var Z,ee=((Z=ee||{})[Z.ERROR=0]="ERROR",Z[Z.WARN=1]="WARN",Z[Z.INFO=2]="INFO",Z[Z.DEBUG=3]="DEBUG",Z);function te(e){for(var n=arguments.length>2?arguments[2]:void 0,i=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split("."),o=e,a=0;a<i.length;a++){var s=i[a];if("*"===s&&t(o)){var u=i.slice(a+1).join("."),l=[],c=!0,d=!1,f=void 0;try{for(var v,h=o[Symbol.iterator]();!(c=(v=h.next()).done);c=!0){var p=te(v.value,u,n);l.push(p)}}catch(e){d=!0,f=e}finally{try{c||null==h.return||h.return()}finally{if(d)throw f}}return l}if(void 0===(o=_instanceof(o,Object)?o[s]:void 0))break}return r(o)?o:n}function re(e){return function(e){return"boolean"==typeof e}(e)||o(e)||n(e)||!r(e)||t(e)&&e.every(re)||i(e)&&Object.values(e).every(re)}function ne(e,n){return _async_to_generator(function(e,n){var i,l,c,d=arguments;return _ts_generator(this,function(f){return l=(i=d.length>2&&void 0!==d[2]?d[2]:{}).collector,c=i.consent,[2,(t(n)?n:[n]).reduce(function(n,d){return _async_to_generator(function(){var f,v,h,p,g,y,m,_,b,k,E,I,S,w,O,x,P,M,R,A,C;return _ts_generator(this,function(j){switch(j.label){case 0:return[4,n];case 1:return(f=j.sent())?[2,f]:(v=o(d)?{key:d}:d,Object.keys(v).length?(h=v.condition,p=v.consent,g=v.fn,y=v.key,m=v.loop,_=v.map,b=v.set,k=v.validate,E=v.value,(I=h)?[4,s(h)(e,d,l)]:[3,3]):[2]);case 2:I=!j.sent(),j.label=3;case 3:return I?[2]:p&&!function(e){var t=_object_spread({},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}),r={},n=!e||0===Object.keys(e).length;return Object.keys(t).forEach(function(i){t[i]&&(r[i]=!0,e&&e[i]&&(n=!0))}),!!n&&r}(p,c)?[2,E]:(S=r(E)?E:e,g?[4,s(g)(e,d,i)]:[3,5]);case 4:S=j.sent(),j.label=5;case 5:return y&&(S=te(e,y,E)),m?(w=_sliced_to_array(m,2),O=w[0],x=w[1],"this"!==O?[3,6]:(M=[e],[3,8])):[3,11];case 6:return[4,u(e,O,i)];case 7:M=j.sent(),j.label=8;case 8:return t(P=M)?[4,Promise.all(P.map(function(e){return u(e,x,i)}))]:[3,10];case 9:S=j.sent().filter(r),j.label=10;case 10:return[3,17];case 11:return _?[4,Object.entries(_).reduce(function(t,n){var o=_sliced_to_array(n,2),a=o[0],s=o[1];return _async_to_generator(function(){var n,o;return _ts_generator(this,function(l){switch(l.label){case 0:return[4,t];case 1:return n=l.sent(),[4,u(e,s,i)];case 2:return o=l.sent(),[2,(r(o)&&(n[a]=o),n)]}})})()},Promise.resolve({}))]:[3,13];case 12:return S=j.sent(),[3,16];case 13:return(R=b)?[4,Promise.all(b.map(function(t){return ne(e,t,i)}))]:[3,15];case 14:R=S=j.sent(),j.label=15;case 15:j.label=16;case 16:j.label=17;case 17:return(A=k)?[4,s(k)(S)]:[3,19];case 18:A=!j.sent(),j.label=19;case 19:return A&&(S=void 0),C=a(S),[2,r(C)?C:a(E)]}})})()},Promise.resolve(void 0))]})}).apply(this,arguments)}var ie={};z(ie,{DEBUG:function(){return it},DECISION_NOTIFICATION_TYPES:function(){return or},DECISION_SOURCES:function(){return we},ERROR:function(){return st},INFO:function(){return ot},LogLevel:function(){return se},NOTIFICATION_TYPES:function(){return ar},OptimizelyDecideOption:function(){return Dt},WARN:function(){return at},__platforms:function(){return ui},clientEngine:function(){return si},createBatchEventProcessor:function(){return ri},createErrorNotifier:function(){return ft},createForwardingEventProcessor:function(){return ti},createInstance:function(){return oi},createLogger:function(){return lt},createOdpManager:function(){return ni},createPollingProjectConfigManager:function(){return ei},createStaticProjectConfigManager:function(){return Jt},createVuidManager:function(){return ii},eventDispatcher:function(){return Zn},getSendBeaconEventDispatcher:function(){return ai}});for(var oe=[],ae=0;ae<256;++ae)oe.push((ae+256).toString(16).slice(1));var se,ue,le=J(q("crypto")),ce=new Uint8Array(256),de=ce.length,fe={randomUUID:J(q("crypto")).default.randomUUID},ve=function(e,t,r){if(fe.randomUUID&&!t&&!e)return fe.randomUUID();var n=(e=e||{}).random||(e.rng||l)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var i=0;i<16;++i)t[r+i]=n[i];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(oe[e[t+0]]+oe[e[t+1]]+oe[e[t+2]]+oe[e[t+3]]+"-"+oe[e[t+4]]+oe[e[t+5]]+"-"+oe[e[t+6]]+oe[e[t+7]]+"-"+oe[e[t+8]]+oe[e[t+9]]+"-"+oe[e[t+10]]+oe[e[t+11]]+oe[e[t+12]]+oe[e[t+13]]+oe[e[t+14]]+oe[e[t+15]]).toLowerCase()}(n)},he=J(G(),1),pe=J(W(),1),ge=J(q("http"),1),ye=J(q("https"),1),me=J(q("url"),1),_e=J($(),1),be="$opt_bot_filtering",ke="$opt_bucketing_id",Ee="javascript-sdk",Ie="node-sdk",Se="6.3.1",we={FEATURE_TEST:"feature-test",ROLLOUT:"rollout",EXPERIMENT:"experiment",HOLDOUT:"holdout"},Oe="experiment",xe="boolean",Pe="double",Me="integer",Re="string",Ae="json",Ce="Optimizely SDK not configured properly yet.",je=Math.pow(2,53),De={checkArrayEquality:y,currentTimestamp:function(){return Math.round((new Date).getTime())},isSafeInteger:c,keyBy:d,uuid:function(){return ve()},isNumber:function(e){return"number"==typeof e},getTimestamp:function(){return(new Date).getTime()},groupBy:function(e,t){var r={};return e.forEach(function(e){var n=t(e);r[n]=r[n]||[],r[n].push(e)}),v(r)},objectValues:v,objectEntries:h,find:p,sprintf:g},Te=function(){function e(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];var o;return _class_call_check(this,e),(o=_call_super(this,e)).resolved=!1,o.name="OptimizelyError",o.baseMessage=t,o.params=n,Object.setPrototypeOf(o,e.prototype),o}return _inherits(e,_wrap_native_super(Error)),_create_class(e,[{key:"setMessage",value:function(e){this.resolved||(this.message=g.apply(void 0,[e.resolve(this.baseMessage)].concat(_to_consumable_array(this.params))),this.resolved=!0)}}]),e}();!function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warn=2]="Warn",e[e.Error=3]="Error"}(se||(se={}));var Fe,Ne=(_define_property(ue={},se.Debug,"DEBUG"),_define_property(ue,se.Info,"INFO"),_define_property(ue,se.Warn,"WARN"),_define_property(ue,se.Error,"ERROR"),ue),Ue=(_define_property(Fe={},se.Debug,"debug"),_define_property(Fe,se.Info,"info"),_define_property(Fe,se.Warn,"warn"),_define_property(Fe,se.Error,"error"),Fe),Ve=function(){function e(t){_class_call_check(this,e),this.prefix=t||"[OPTIMIZELY]"}return _create_class(e,[{key:"log",value:function(e,t){var r="".concat(this.prefix," - ").concat(Ne[e]," ").concat(this.getTime()," ").concat(t);this.consoleLog(e,r)}},{key:"getTime",value:function(){return(new Date).toISOString()}},{key:"consoleLog",value:function(e,t){(console[Ue[e]]||console.log).call(console,t)}}]),e}(),Ke=function(){function e(t){_class_call_check(this,e),this.prefix="",this.logHandler=t.logHandler,this.infoResolver=t.infoMsgResolver,this.errorResolver=t.errorMsgResolver,this.level=t.level,t.name&&this.setName(t.name)}return _create_class(e,[{key:"child",value:function(t){return new e({logHandler:this.logHandler,infoMsgResolver:this.infoResolver,errorMsgResolver:this.errorResolver,level:this.level,name:t})}},{key:"setName",value:function(e){this.name=e,this.prefix="".concat(e,": ")}},{key:"info",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this.log(se.Info,e,r)}},{key:"debug",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this.log(se.Debug,e,r)}},{key:"warn",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this.log(se.Warn,e,r)}},{key:"error",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this.log(se.Error,e,r)}},{key:"handleLog",value:function(e,t,r){var n=r.length>0?"".concat(this.prefix).concat(g.apply(void 0,[t].concat(_to_consumable_array(r)))):"".concat(this.prefix).concat(t);this.logHandler.log(e,n)}},{key:"log",value:function(e,t,r){if(!(e<this.level)){if(_instanceof(t,Error))return _instanceof(t,Te)&&t.setMessage(this.errorResolver),void this.handleLog(e,t.message,[]);var n=this.errorResolver;if(e<se.Warn){if(!this.infoResolver)return;n=this.infoResolver}var i=n.resolve(t);this.handleLog(e,i,r)}}}]),e}(),Le="30",qe=["Adding Authorization header with Bearer Token",'Audience "%s" evaluated to %s.',"CMAB cache attributes mismatch for user %s and rule %s, fetching new decision.","Cache hit for user %s and rule %s.","Cache miss for user %s and rule %s.",'Starting to evaluate audience "%s" with conditions: %s.','Failed to parse revenue value "%s" from event tags.','Failed to parse event value "%s" from event tags.',"Feature %s is enabled for user %s.","Feature %s is not enabled for user %s.",'Feature "%s" is not enabled for user %s. Returning the default variable value "%s".',"Ignoring CMAB cache for user %s and rule %s.","Invalidating CMAB cache for user %s and rule %s.","Invalid client engine passed: %s. Defaulting to node-sdk.","Provided decide options is not an array. Using default decide options.","Provided default decide options is not an array.","Experiment key %s is not in datafile. It is either invalid, paused, or archived.","Making datafile request to url %s with headers: %s",'Audience condition %s evaluated to UNKNOWN because no value was passed for user attribute "%s".',"Not activating user %s for experiment %s.",'Parsed event value "%s" from event tags.','Parsed revenue value "%s" from event tags.',"Resetting CMAB cache for user %s and rule %s.","Response status code: %s","Saved last modified header value from response: %s",'Saved user profile for user "%s".',"User %s was previously bucketed into variation with ID %s for experiment %s, but no matching variation was found.",'Experiment %s is not in "Running" state. Not activating user.',"Skipping JSON schema validation.","Tracking event %s for user %s.",'Audience condition %s evaluated to UNKNOWN because a null value was passed for user attribute "%s".',"Updated Optimizely config to revision %s (project id %s)","User %s is not in the forced variation map.","No experiment %s mapped to user %s in the forced variation map.","Set variation %s for experiment %s and user %s in the forced variation map.",'User "%s" is not in any variation or rollout rule. Returning default value for variable "%s" of feature flag "%s".','Got variable value "%s" for variable "%s" of feature flag "%s"','BucketingId is valid: "%s"',"Datafile is valid.","Valid user profile service provided.",'Variable "%s" is not used in variation "%s". Returning default value.',"Variation mapped to experiment %s has been removed for user %s."],Be="12",ze="27",He="35",Je="53",Ge="57",We="59",Qe="61",$e=["BucketingID attribute is not a string. Defaulted to userId","CMAB decision fetch failed with status: %s","Error evaluating audience condition of type %s: %s","Datafile fetch request failed with status: %s","Error fetching datafile: %s","Event action invalid.","Event data invalid.","Event key %s is not in datafile.","Event store is full. Not saving event with id %d.","Experiment key %s is not in datafile.","Failed to dispatch events, status: %s","failed to send odp events","Feature key %s is not in datafile.","Provided attributes are in an invalid format.","Unable to generate hash for bucketing ID %s: %s","Invalid CMAB fetch response","Provided Optimizely config is in an invalid format.","Datafile is invalid - property %s: %s","Datafile is invalid because it is malformed.","This version of the JavaScript SDK does not support the given datafile version: %s","Provided event tags are in an invalid format.","Experiment ID %s is not in datafile.","Experiment key %s is not in datafile. It is either invalid, paused, or archived.","Group ID %s is not in datafile.","Provided %s is in an invalid format.","JSON object is not valid.","Provided user ID is in an invalid format.","Provided user profile service instance is in an invalid format: %s.","Provided variation key is in an invalid format.","Integration key missing from datafile. All integrations should include a key.","Notification listener for (%s) threw exception: %s","Not tracking user %s.","No datafile specified. Cannot start optimizely.","No event processor is provided","No JSON object to validate against schema.","No project config available. Failing %s.","No status code in response","No variation key %s defined in datafile for experiment %s.","ODP config is not available.","ODP events should have at least one key-value pair in identifiers.","ODP event send failed.","ODP event manager stopped before it could start","ODP Manager is missing. %s failed.","ODP is not integrated","Only POST requests are supported",'Audience condition %s evaluated to UNKNOWN because the number value for user attribute "%s" is not in the range [-2^53, +2^53].',"Promise value is not allowed in sync operation","Request error","Request timeout","Retry cancelled","sendBeacon failed","%s not running",'unable to bind optimizely.close() to page unload event: "%s"',"Unable to cast value %s to type %s, returning null.","Unable to get VUID - VuidManager is not available","Unable to parse & skipped header item","Provided attribute: %s has an undefined value.","Audience condition %s evaluated to UNKNOWN because the condition value is not supported.","Attribute %s unexpectedly has reserved prefix %s; using attribute ID instead of reserved attribute name.",'Audience condition %s evaluated to UNKNOWN because a value of type "%s" was passed for user attribute "%s".',"Audience condition %s has an unknown condition type. You may need to upgrade to a newer release of the Optimizely SDK.","Audience condition %s uses an unknown match type. You may need to upgrade to a newer release of the Optimizely SDK.","Unrecognized attribute %s provided. Pruning before sending event to Optimizely.","Unrecognized decide option %s provided.","Unsupported protocol: %s","User %s is not in the forced variation map. Cannot remove their forced variation.",'Error while looking up user profile for user ID "%s": %s.','Error while saving user profile for user ID "%s": %s.','Variable with key "%s" associated with feature with key "%s" is not in datafile.','Requested variable type "%s", but variable is of type "%s". Use correct API to retrieve value. Returning None.',"Variation ID %s is not in the datafile."],Ye={resolve:function(e){var t=parseInt(e);return qe[t]||e}},Xe={resolve:function(e){var t=parseInt(e);return $e[t]||e}},Ze={level:se.Debug,infoResolver:Ye,errorResolver:Xe},et={level:se.Info,infoResolver:Ye,errorResolver:Xe},tt={level:se.Warn,errorResolver:Xe},rt={level:se.Error,errorResolver:Xe},nt=Symbol(),it=_define_property({},nt,Ze),ot=_define_property({},nt,et),at=_define_property({},nt,tt),st=_define_property({},nt,rt),ut=Symbol(),lt=function(e){var t=function(e){if(!e||"object"!=(void 0===e?"undefined":_type_of(e))||!e[nt])throw new Error("Invalid level preset");return e[nt]}(e.level),r=t.level,n=t.infoResolver,i=t.errorResolver;return e.logHandler&&function(e){if("object"!=(void 0===e?"undefined":_type_of(e))||"function"!=typeof e.log)throw new Error("Invalid log handler")}(e.logHandler),_define_property({},ut,new Ke({name:"Optimizely",level:r,infoMsgResolver:n,errorMsgResolver:i,logHandler:e.logHandler||new Ve}))},ct=function(){function e(t,r,n){_class_call_check(this,e),this.errorHandler=t,this.messageResolver=r,this.name=n||""}return _create_class(e,[{key:"notify",value:function(e){_instanceof(e,Te)&&e.setMessage(this.messageResolver),this.errorHandler.handleError(e)}},{key:"child",value:function(t){return new e(this.errorHandler,this.messageResolver,t)}}]),e}(),dt=Symbol(),ft=function(e){return function(e){if(!e||"object"!=(void 0===e?"undefined":_type_of(e))||"function"!=typeof e.handleError)throw new Error("Invalid error handler")}(e),_define_property({},dt,new ct(e,Xe))},vt=["and","or","not"];function ht(e,t){if(Array.isArray(e)){var r=e[0],n=e.slice(1);switch("string"==typeof r&&-1===vt.indexOf(r)&&(r="or",n=e),r){case"and":return function(e,t){var r=!1;if(Array.isArray(e)){for(var n=0;n<e.length;n++){var i=ht(e[n],t);if(!1===i)return!1;null===i&&(r=!0)}return!r||null}return null}(n,t);case"not":return function(e,t){if(Array.isArray(e)&&e.length>0){var r=ht(e[0],t);return null===r?null:!r}return null}(n,t);default:return function(e,t){var r=!1;if(Array.isArray(e)){for(var n=0;n<e.length;n++){var i=ht(e[n],t);if(!0===i)return!0;null===i&&(r=!0)}return!!r&&null}return null}(n,t)}}return t(e)}var pt,gt=function(){function e(t,r,n){var i,o;_class_call_check(this,e),this.sdkKey=null!==(i=t.sdkKey)&&void 0!==i?i:"",this.environmentKey=null!==(o=t.environmentKey)&&void 0!==o?o:"",this.attributes=t.attributes,this.audiences=e.getAudiences(t),this.events=t.events,this.revision=t.revision;var a=(t.featureFlags||[]).reduce(function(e,t){return e[t.id]=t.variables,e},{}),s=e.getVariableIdMap(t),u=e.getExperimentsMap(t,a,s,n),l=u.experimentsMapById,c=u.experimentsMapByKey;this.experimentsMap=c,this.featuresMap=e.getFeaturesMap(t,a,l,s),this.datafile=r}return _create_class(e,[{key:"getDatafile",value:function(){return this.datafile}}],[{key:"getAudiences",value:function(e){var t=[],r=[];return(e.typedAudiences||[]).forEach(function(e){t.push({id:e.id,conditions:JSON.stringify(e.conditions),name:e.name}),r.push(e.id)}),(e.audiences||[]).forEach(function(e){-1===r.indexOf(e.id)&&"$opt_dummy_audience"!=e.id&&t.push({id:e.id,conditions:JSON.stringify(e.conditions),name:e.name})}),t}},{key:"getSerializedAudiences",value:function(t,r){var n="";if(t){var i="";t.forEach(function(t){var o="";if(_instanceof(t,Array))o=e.getSerializedAudiences(t,r),o="(".concat(o,")");else if(vt.indexOf(t)>-1)i=t.toUpperCase();else{var a=r[t]?r[t].name:t;n||"NOT"===i?(i=""===i?"OR":i,n=""===n?"".concat(i,' "').concat(r[t].name,'"'):n.concat(" ".concat(i,' "').concat(a,'"'))):n='"'.concat(a,'"')}""!==o&&(""!==n||"NOT"===i?(i=""===i?"OR":i,n=""===n?"".concat(i," ").concat(o):n.concat(" ".concat(i," ").concat(o))):n=n.concat(o))})}return n}},{key:"getExperimentAudiences",value:function(t,r){return t.audienceConditions?e.getSerializedAudiences(t.audienceConditions,r.audiencesById):""}},{key:"mergeFeatureVariables",value:function(e,t,r,n,i){var o=(e[r]||[]).reduce(function(e,t){return e[t.key]={id:t.id,key:t.key,type:t.type,value:t.defaultValue},e},{});return(n||[]).forEach(function(e){var r=t[e.id],n={id:e.id,key:r.key,type:r.type,value:i?e.value:r.defaultValue};o[r.key]=n}),o}},{key:"getVariationsMap",value:function(t,r,n,i){return t.reduce(function(t,o){var a=e.mergeFeatureVariables(r,n,i,o.variables,o.featureEnabled);return t[o.key]={id:o.id,key:o.key,featureEnabled:o.featureEnabled,variablesMap:a},t},{})}},{key:"getVariableIdMap",value:function(e){return(e.featureFlags||[]).reduce(function(e,t){return t.variables.forEach(function(t){e[t.id]=t}),e},{})}},{key:"getDeliveryRules",value:function(t,r,n,i,o){return i.map(function(i){return{id:i.id,key:i.key,audiences:e.getExperimentAudiences(i,t),variationsMap:e.getVariationsMap(i.variations,r,o,n)}})}},{key:"getRolloutExperimentIds",value:function(e){var t=[];return(e||[]).forEach(function(e){e.experiments.forEach(function(e){t.push(e.id)})}),t}},{key:"getExperimentsMap",value:function(t,r,n,i){var o=this.getRolloutExperimentIds(t.rollouts),a={},s={};return(t.experiments||[]).forEach(function(u){if(-1===o.indexOf(u.id)){var l=t.experimentFeatureMap[u.id],c="";l&&l.length>0&&(c=l[0]);var d=e.getVariationsMap(u.variations,r,n,c.toString()),f={id:u.id,key:u.key,audiences:e.getExperimentAudiences(u,t),variationsMap:d};a[u.id]=f,s[u.key]&&i&&i.warn("Duplicate experiment keys found in datafile: ".concat(u.key)),s[u.key]=f}}),{experimentsMapById:a,experimentsMapByKey:s}}},{key:"getExperimentsKeyMap",value:function(e){var t={};for(var r in e){var n=e[r];t[n.key]=n}return t}},{key:"getFeaturesMap",value:function(t,r,n,i){var o={};return t.featureFlags.forEach(function(a){var s={},u=[];a.experimentIds.forEach(function(e){var t=n[e];t&&(s[t.key]=t),u.push(n[e])});var l=(a.variables||[]).reduce(function(e,t){return e[t.key]={id:t.id,key:t.key,type:t.type,value:t.defaultValue},e},{}),c=[],d=t.rolloutIdMap[a.rolloutId];d&&(c=e.getDeliveryRules(t,r,a.id,d.experiments,i)),o[a.key]={id:a.id,key:a.key,experimentRules:u,deliveryRules:c,experimentsMap:s,variablesMap:l}}),o}}]),e}(),yt=["2","3","4"],mt=function(){function e(t,r,n,i){_class_call_check(this,e),this.apiKey=t,this.apiHost=r,this.pixelUrl=n,this.segmentsToCheck=i}return _create_class(e,[{key:"equals",value:function(e){return this.apiHost===e.apiHost&&this.apiKey===e.apiKey&&this.pixelUrl===e.pixelUrl&&y(this.segmentsToCheck,e.segmentsToCheck)}}]),e}(),_t="Running",bt="$opt_",kt=function(e){var t,r,n,i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=(t=e,(i=Object.assign({},t)).audiences=(t.audiences||[]).map(function(e){return Object.assign({},e)}),i.experiments=(t.experiments||[]).map(function(e){return Object.assign({},e)}),i.featureFlags=(t.featureFlags||[]).map(function(e){return Object.assign({},e)}),i.groups=(t.groups||[]).map(function(e){var t=Object.assign({},e);return t.experiments=(e.experiments||[]).map(function(e){return Object.assign({},e)}),t}),i.rollouts=(t.rollouts||[]).map(function(e){var t=Object.assign({},e);return t.experiments=(e.experiments||[]).map(function(e){return Object.assign({},e)}),t}),i.environmentKey=null!==(r=t.environmentKey)&&void 0!==r?r:"",i.sdkKey=null!==(n=t.sdkKey)&&void 0!==n?n:"",i);a.region||(a.region="US"),a.__datafileStr=null===o?JSON.stringify(e):o,(a.audiences||[]).forEach(function(e){e.conditions=JSON.parse(e.conditions)}),a.audiencesById={},f(a.audiences,"id",a.audiencesById),f(a.typedAudiences,"id",a.audiencesById),a.attributes=a.attributes||[],a.attributeKeyMap={},a.attributeIdMap={},a.attributes.forEach(function(e){a.attributeKeyMap[e.key]=e,a.attributeIdMap[e.id]=e}),a.eventKeyMap=d(a.events,"key"),a.groupIdMap=d(a.groups,"id"),Object.keys(a.groupIdMap||{}).forEach(function(e){(a.groupIdMap[e].experiments||[]).forEach(function(t){t.groupId=e,a.experiments.push(t)})}),a.rolloutIdMap=d(a.rollouts||[],"id"),v(a.rolloutIdMap||{}).forEach(function(e){(e.experiments||[]).forEach(function(e){e.isRollout=!0,a.experiments.push(e),e.variationKeyMap=d(e.variations,"key")})});var s=new Set;Object.keys(a.audiencesById).map(function(e){return It(a.audiencesById[e])}).forEach(function(e){e.forEach(function(e){s.add(e)})});var u=Array.from(s),l=!1,c="",g="",y="";return a.integrations&&(a.integrationKeyMap=d(a.integrations,"key"),a.integrations.forEach(function(e){if(!("key"in e))throw new Te("29");"odp"===e.key&&(l=!0,g=g||e.publicKey||"",c=c||e.host||"",y=y||e.pixelUrl||"")})),a.odpIntegrationConfig=l?{integrated:!0,odpConfig:new mt(g,c,y,u)}:{integrated:!1},a.experimentKeyMap=d(a.experiments,"key"),a.experimentIdMap=d(a.experiments,"id"),a.variationIdMap={},a.variationVariableUsageMap={},(a.experiments||[]).forEach(function(e){e.variationKeyMap=d(e.variations,"key"),f(e.variations,"id",a.variationIdMap),v(e.variationKeyMap||{}).forEach(function(e){e.variables&&(a.variationVariableUsageMap[e.id]=d(e.variables,"id"))})}),a.experimentFeatureMap={},a.featureKeyMap=d(a.featureFlags||[],"key"),v(a.featureKeyMap||{}).forEach(function(e){e.variables.forEach(function(e){e.type===Re&&e.subType===Ae&&(e.type=Ae,delete e.subType)}),e.variableKeyMap=d(e.variables,"key"),(e.experimentIds||[]).forEach(function(t){a.experimentFeatureMap[t]?a.experimentFeatureMap[t].push(e.id):a.experimentFeatureMap[t]=[e.id]})}),a.flagRulesMap={},(a.featureFlags||[]).forEach(function(e){var t,r=[];e.experimentIds.forEach(function(e){var t=a.experimentIdMap[e];t&&r.push(t)});var n=a.rolloutIdMap[e.rolloutId];n&&(t=r).push.apply(t,_to_consumable_array(n.experiments)),a.flagRulesMap[e.key]=r}),a.flagVariationsMap={},h(a.flagRulesMap||{}).forEach(function(e){var t=_sliced_to_array(e,2),r=t[0],n=t[1],i=[];n.forEach(function(e){e.variations.forEach(function(e){p(i,function(t){return t.id===e.id})||i.push(e)})}),a.flagVariationsMap[r]=i}),Et(a),a},Et=function(e){e.holdouts=e.holdouts||[],e.holdoutIdMap=d(e.holdouts,"id"),e.globalHoldouts=[],e.includedHoldouts={},e.excludedHoldouts={},e.flagHoldoutsMap={};var t=d(e.featureFlags,"id");e.holdouts.forEach(function(r){r.includedFlags||(r.includedFlags=[]),r.excludedFlags||(r.excludedFlags=[]),r.variationKeyMap=d(r.variations,"key"),f(r.variations,"id",e.variationIdMap),0===r.includedFlags.length?(e.globalHoldouts.push(r),r.excludedFlags.forEach(function(n){var i=t[n];if(i){var o=i.key;e.excludedHoldouts[o]||(e.excludedHoldouts[o]=[]),e.excludedHoldouts[o].push(r)}})):r.includedFlags.forEach(function(n){var i=t[n];if(i){var o=i.key;e.includedHoldouts[o]||(e.includedHoldouts[o]=[]),e.includedHoldouts[o].push(r)}})})},It=function(e){return e.conditions?St(e.conditions):[]},St=function(e){var t,r=[];return["and","or","not"].includes(e)?[]:(Array.isArray(e)?e.forEach(function(e){return(t=r).push.apply(t,_to_consumable_array(St(e)))}):"qualified"===e.match&&r.push(e.value),r)},wt=function(e,t){var r=e.experimentKeyMap[t];if(!r)throw new Te("22",t);return r.status},Ot=function(e,t){if(e.experimentKeyMap.hasOwnProperty(t)){var r=e.experimentKeyMap[t];if(r)return r}throw new Te("9",t)},xt=function(e,t,r){return e&&p(e.flagVariationsMap[t],function(e){return e.key===r})||null},Pt=function(e,t,r){if(e.featureKeyMap.hasOwnProperty(t)){var n=e.featureKeyMap[t];if(n)return n}return null==r||r.error(Be,t),null},Mt=function(e){return!!e.sendFlagDecisions},Rt=function(){},At="%s failed to start, reason: %s",Ct="%s stopped before running";!function(e){e[e.New=0]="New",e[e.Starting=1]="Starting",e[e.Running=2]="Running",e[e.Stopping=3]="Stopping",e[e.Terminated=4]="Terminated",e[e.Failed=5]="Failed"}(pt||(pt={}));var jt,Dt,Tt=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];_class_call_check(this,e),this.disposable=!1,this.state=pt.New,this.startPromise=m(),this.stopPromise=m(),this.startupLogs=t,this.startPromise.promise.catch(function(){}),this.stopPromise.promise.catch(function(){})}return _create_class(e,[{key:"makeDisposable",value:function(){this.disposable=!0}},{key:"setLogger",value:function(e){this.logger=e}},{key:"printStartupLogs",value:function(){var e=!0,t=!1,r=void 0;if(this.logger)try{for(var n,i=this.startupLogs[Symbol.iterator]();!(e=(n=i.next()).done);e=!0){var o,a=n.value,s=a.level,u=a.message,l=a.params,c=Ue[s];(o=this.logger[c]).call.apply(o,[this.logger,u].concat(_to_consumable_array(l)))}}catch(e){t=!0,r=e}finally{try{e||null==i.return||i.return()}finally{if(t)throw r}}}},{key:"onRunning",value:function(){return this.startPromise.promise}},{key:"onTerminated",value:function(){return this.stopPromise.promise}},{key:"getState",value:function(){return this.state}},{key:"isStarting",value:function(){return this.state===pt.Starting}},{key:"isRunning",value:function(){return this.state===pt.Running}},{key:"isNew",value:function(){return this.state===pt.New}},{key:"isDone",value:function(){return[pt.Stopping,pt.Terminated,pt.Failed].includes(this.state)}},{key:"start",value:function(){this.printStartupLogs()}}]),e}(),Ft=function(){function e(){_class_call_check(this,e),this.id=0,this.listeners={}}return _create_class(e,[{key:"on",value:function(e,t){var r,n=this;this.listeners[e]||(this.listeners[e]=new Map);var i=this.id++;return null===(r=this.listeners[e])||void 0===r||r.set(i,t),function(){var t;null===(t=n.listeners[e])||void 0===t||t.delete(i)}}},{key:"emit",value:function(e,t){var r=this.listeners[e];r&&r.forEach(function(e){e(t)})}},{key:"removeListeners",value:function(e){var t;null===(t=this.listeners[e])||void 0===t||t.clear()}},{key:"removeAllListeners",value:function(){this.listeners={}}}]),e}(),Nt=function(e){function t(e){var r;return _class_call_check(this,t),(r=_call_super(this,t)).eventEmitter=new Ft,r.jsonSchemaValidator=e.jsonSchemaValidator,r.datafile=e.datafile,r.datafileManager=e.datafileManager,e.logger&&r.setLogger(e.logger),r}return _inherits(t,e),_create_class(t,[{key:"setLogger",value:function(e){var t;this.logger=e,this.logger.setName("ProjectConfigManager"),null===(t=this.datafileManager)||void 0===t||t.setLogger(e.child())}},{key:"start",value:function(){var e,t,r,n=this;this.isNew()&&(this.state=pt.Starting,this.datafile||this.datafileManager?(this.datafile&&this.handleNewDatafile(this.datafile,!0),null===(e=this.datafileManager)||void 0===e||e.start(),null===(t=this.datafileManager)||void 0===t||t.onUpdate(this.handleNewDatafile.bind(this)),null===(r=this.datafileManager)||void 0===r||r.onRunning().catch(function(e){n.handleDatafileManagerError(e)})):this.handleInitError(new Error("sdkKey or datafile must be provided")))}},{key:"makeDisposable",value:function(){var e;_get(_get_prototype_of(t.prototype),"makeDisposable",this).call(this),null===(e=this.datafileManager)||void 0===e||e.makeDisposable()}},{key:"handleInitError",value:function(e){var t,r;null===(t=this.logger)||void 0===t||t.error(e),this.state=pt.Failed,null===(r=this.datafileManager)||void 0===r||r.stop(),this.startPromise.reject(e),this.stopPromise.reject(e)}},{key:"handleDatafileManagerError",value:function(e){var t;null===(t=this.logger)||void 0===t||t.error(At,"DatafileManager",e.message),this.isStarting()&&this.handleInitError(new Error(g(At,"DatafileManager",e.message)))}},{key:"handleNewDatafile",value:function(e){var t,r,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.isDone())try{var i=function(e){var t,r,n=function(e){if(!e)throw new Te("32");if("string"==typeof e)try{e=JSON.parse(e)}catch(e){throw new Te("18")}if("object"!=(void 0===e?"undefined":_type_of(e))||Array.isArray(e)||null===e)throw new Te("18");if(-1===yt.indexOf(e.version))throw new Te("19",e.version);return e}(e.datafile);e.jsonSchemaValidator?(e.jsonSchemaValidator(n),null===(t=e.logger)||void 0===t||t.info("38")):null===(r=e.logger)||void 0===r||r.info("28");var i=[n];return"string"==typeof e.datafile&&i.push(e.datafile),kt.apply(void 0,_to_consumable_array(i))}({datafile:e,jsonSchemaValidator:this.jsonSchemaValidator,logger:this.logger});this.isStarting()&&(this.state=pt.Running,this.startPromise.resolve()),(null===(t=this.projectConfig)||void 0===t?void 0:t.revision)!==i.revision&&(this.projectConfig=i,this.optimizelyConfig=void 0,this.eventEmitter.emit("update",i))}catch(e){null===(r=this.logger)||void 0===r||r.error(e),(this.isStarting()&&!this.datafileManager||this.isStarting()&&!n)&&this.handleInitError(new Error("got invalid datafile"))}}},{key:"getConfig",value:function(){return this.projectConfig}},{key:"getOptimizelyConfig",value:function(){var e,t,r;return!this.optimizelyConfig&&this.projectConfig&&(this.optimizelyConfig=(e=this.projectConfig,t=this.projectConfig.__datafileStr,r=this.logger,new gt(e,t,r))),this.optimizelyConfig}},{key:"onUpdate",value:function(e){return this.eventEmitter.on("update",e)}},{key:"stop",value:function(){var e=this;if(!this.isDone()){if((this.isNew()||this.isStarting())&&this.startPromise.reject(new Error(g(Ct,"ProjectConfigManager"))),this.state=pt.Stopping,this.eventEmitter.removeAllListeners(),!this.datafileManager)return this.state=pt.Terminated,void this.stopPromise.resolve();this.datafileManager.stop(),this.datafileManager.onTerminated().then(function(){e.state=pt.Terminated,e.stopPromise.resolve()}).catch(function(t){e.state=pt.Failed,e.stopPromise.reject(t)})}}}]),t}(Tt),Ut=function(e){return e>=200&&e<400},Vt=function(e){function t(e){var r;_class_call_check(this,t),r=_call_super(this,t,[e.startupLogs]);var n=e.autoUpdate,i=void 0!==n&&n,o=e.sdkKey,a=e.datafileAccessToken,s=e.customHeaders,u=e.urlTemplate,l=e.cache,c=e.initRetry,d=e.repeater,f=e.requestHandler,v=e.logger;r.cache=l,r.cacheKey="opt-datafile-"+o,r.sdkKey=o,r.datafileAccessToken=a,r.customHeaders=s,r.requestHandler=f,r.emitter=new Ft,r.autoUpdate=i,r.initRetryRemaining=c,r.repeater=d,v&&r.setLogger(v);var h=u||(a?"https://config.optimizely.com/datafiles/auth/%s.json":"https://cdn.optimizely.com/datafiles/%s.json");return r.datafileUrl=g(h,r.sdkKey),r}return _inherits(t,e),_create_class(t,[{key:"setLogger",value:function(e){this.logger=e,this.logger.setName("PollingDatafileManager")}},{key:"onUpdate",value:function(e){return this.emitter.on("update",e)}},{key:"get",value:function(){return this.currentDatafile}},{key:"start",value:function(){this.isNew()&&(_get(_get_prototype_of(t.prototype),"start",this).call(this),this.state=pt.Starting,this.setDatafileFromCacheIfAvailable(),this.repeater.setTask(this.syncDatafile.bind(this)),this.repeater.start(!0))}},{key:"makeDisposable",value:function(){var e;_get(_get_prototype_of(t.prototype),"makeDisposable",this).call(this),this.initRetryRemaining=Math.min(null!==(e=this.initRetryRemaining)&&void 0!==e?e:5,5)}},{key:"stop",value:function(){var e;this.isDone()||((this.isNew()||this.isStarting())&&this.startPromise.reject(new Error(g(Ct,"PollingDatafileManager"))),this.state=pt.Terminated,this.repeater.stop(),null===(e=this.currentRequest)||void 0===e||e.abort(),this.emitter.removeAllListeners(),this.stopPromise.resolve())}},{key:"handleInitFailure",value:function(){this.state=pt.Failed,this.repeater.stop();var e=new Error("Failed to fetch datafile");this.startPromise.reject(e),this.stopPromise.reject(e)}},{key:"handleError",value:function(e){var t,r;this.isDone()||(_instanceof(e,Error)?null===(t=this.logger)||void 0===t||t.error("4",e.message,e):null===(r=this.logger)||void 0===r||r.error("3",e),this.isStarting()&&void 0!==this.initRetryRemaining&&(0===this.initRetryRemaining?this.handleInitFailure():this.initRetryRemaining--))}},{key:"onRequestRejected",value:function(e){return _(this,void 0,void 0,function(){return _ts_generator(this,function(t){return[2,(this.handleError(e),Promise.reject(e))]})})}},{key:"onRequestResolved",value:function(e){return _(this,void 0,void 0,function(){var t;return _ts_generator(this,function(r){return this.isDone()?[2]:(this.saveLastModified(e.headers),Ut(e.statusCode)?((t=this.getDatafileFromResponse(e))&&(this.handleDatafile(t),this.autoUpdate&&!this.disposable||this.repeater.stop()),[2]):[2,(this.handleError(e.statusCode),Promise.reject(new Error))])})})}},{key:"makeDatafileRequest",value:function(){var e,t,r=Object.assign({},this.customHeaders);return this.lastResponseLastModified&&(r["if-modified-since"]=this.lastResponseLastModified),this.datafileAccessToken&&(null===(e=this.logger)||void 0===e||e.debug("0"),r.Authorization="Bearer ".concat(this.datafileAccessToken)),null===(t=this.logger)||void 0===t||t.debug("17",this.datafileUrl,function(){return JSON.stringify(r)}),this.requestHandler.makeRequest(this.datafileUrl,r,"GET")}},{key:"syncDatafile",value:function(){return _(this,void 0,void 0,function(){var e;return _ts_generator(this,function(t){return e=this,[2,(this.currentRequest=this.makeDatafileRequest(),this.currentRequest.responsePromise.then(this.onRequestResolved.bind(this),this.onRequestRejected.bind(this)).finally(function(){return e.currentRequest=void 0}))]})})}},{key:"handleDatafile",value:function(e){var t;this.isDone()||(this.currentDatafile=e,null===(t=this.cache)||void 0===t||t.set(this.cacheKey,e),this.isStarting()&&(this.startPromise.resolve(),this.state=pt.Running),this.emitter.emit("update",e))}},{key:"getDatafileFromResponse",value:function(e){var t;if(null===(t=this.logger)||void 0===t||t.debug("23",e.statusCode),304!==e.statusCode)return e.body}},{key:"saveLastModified",value:function(e){var t,r=e["last-modified"]||e["Last-Modified"];void 0!==r&&(this.lastResponseLastModified=r,null===(t=this.logger)||void 0===t||t.debug("24",this.lastResponseLastModified))}},{key:"setDatafileFromCacheIfAvailable",value:function(){return _(this,void 0,void 0,function(){var e;return _ts_generator(this,function(t){switch(t.label){case 0:if(!this.cache)return[3,4];t.label=1;case 1:return t.trys.push([1,3,,4]),[4,this.cache.get(this.cacheKey)];case 2:return(e=t.sent())&&this.isStarting()&&this.handleDatafile(e),[3,4];case 3:return t.sent(),[3,4];case 4:return[2]}})})}}]),t}(Tt),Kt=function(){function e(t,r,n){_class_call_check(this,e),this.base=t,this.max=r,this.maxJitter=n,this.maxJitter>this.base/2&&(this.maxJitter=this.base/2),this.maxJitter=n,this.current=t}return _create_class(e,[{key:"backoff",value:function(){var e=this.current+this.maxJitter*Math.random();return this.current=Math.min(2*this.current,this.max),e}},{key:"reset",value:function(){this.current=this.base}}]),e}(),Lt=function(){function e(t){_class_call_check(this,e),this.value=t}return _create_class(e,[{key:"backoff",value:function(){return this.value}},{key:"reset",value:function(){}}]),e}(),qt=function(){function e(t,r){_class_call_check(this,e),this.failureCount=0,this.running=!1,this.interval=t,this.backoffController=r}return _create_class(e,[{key:"isRunning",value:function(){return this.running}},{key:"handleSuccess",value:function(){var e;this.failureCount=0,null===(e=this.backoffController)||void 0===e||e.reset(),this.setTimer(this.interval)}},{key:"handleFailure",value:function(){var e,t;this.failureCount++;var r=null!==(t=null===(e=this.backoffController)||void 0===e?void 0:e.backoff())&&void 0!==t?t:this.interval;this.setTimer(r)}},{key:"setTimer",value:function(e){this.running&&(this.timeoutId=setTimeout(this.executeTask.bind(this),e))}},{key:"executeTask",value:function(){this.task&&this.task(this.failureCount).then(this.handleSuccess.bind(this),this.handleFailure.bind(this))}},{key:"start",value:function(e){var t;this.running=!0,e?(t=this.executeTask.bind(this),"function"==typeof queueMicrotask?queueMicrotask(t):Promise.resolve().then(t)):this.setTimer(this.interval)}},{key:"stop",value:function(){this.running=!1,clearInterval(this.timeoutId)}},{key:"reset",value:function(){var e;this.failureCount=0,null===(e=this.backoffController)||void 0===e||e.reset(),this.stop()}},{key:"setTask",value:function(e){this.task=e}}]),e}(),Bt=function(e){var t=[];if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))throw new Error("Invalid store");for(var r=0,n=["set","get","remove","getKeys"];r<n.length;r++){var i=n[r];"function"!=typeof e[i]&&t.push("Invalid store method %s".replace("%s",i))}if(t.length>0)throw new Error(t.join(", "))},zt="Invalid config manager",Ht=Symbol(),Jt=function(e){return _define_property({},Ht,new Nt(e))},Gt=function e(){_class_call_check(this,e),this.operation="sync"},Wt=function e(){_class_call_check(this,e),this.operation="async"},Qt=function(e,t){return _instanceof(e,Gt)?e.getBatched(t):t.map(function(t){return e.get(t)})},$t=function(e,t){return _instanceof(e,Wt)?e.getBatched(t):Promise.all(t.map(function(t){return e.get(t)}))},Yt=function(e){function t(e,r,n,i){var o;return _class_call_check(this,t),(o=_call_super(this,t)).operation="sync",o.store=e,o.prefix=r,o.transformGet=n,o.transformSet=i,o}return _inherits(t,e),_create_class(t,[{key:"addPrefix",value:function(e){return"".concat(this.prefix).concat(e)}},{key:"removePrefix",value:function(e){return e.substring(this.prefix.length)}},{key:"set",value:function(e,t){return this.store.set(this.addPrefix(e),this.transformSet(t))}},{key:"get",value:function(e){var t=this.store.get(this.addPrefix(e));return t?this.transformGet(t):void 0}},{key:"remove",value:function(e){return this.store.remove(this.addPrefix(e))}},{key:"getInternalKeys",value:function(){var e=this;return this.store.getKeys().filter(function(t){return t.startsWith(e.prefix)})}},{key:"getKeys",value:function(){var e=this;return this.getInternalKeys().map(function(t){return e.removePrefix(t)})}},{key:"getBatched",value:function(e){var t=this;return Qt(this.store,e.map(function(e){return t.addPrefix(e)})).map(function(e){return e?t.transformGet(e):void 0})}}]),t}(Gt),Xt=function(){function e(t,r,n,i){_class_call_check(this,e),this.operation="async",this.cache=t,this.prefix=r,this.transformGet=n,this.transformSet=i}return _create_class(e,[{key:"addPrefix",value:function(e){return"".concat(this.prefix).concat(e)}},{key:"removePrefix",value:function(e){return e.substring(this.prefix.length)}},{key:"set",value:function(e,t){return this.cache.set(this.addPrefix(e),this.transformSet(t))}},{key:"get",value:function(e){return _(this,void 0,void 0,function(){var t;return _ts_generator(this,function(r){switch(r.label){case 0:return[4,this.cache.get(this.addPrefix(e))];case 1:return[2,(t=r.sent())?this.transformGet(t):void 0]}})})}},{key:"remove",value:function(e){return this.cache.remove(this.addPrefix(e))}},{key:"getInternalKeys",value:function(){return _(this,void 0,void 0,function(){var e;return _ts_generator(this,function(t){return e=this,[2,this.cache.getKeys().then(function(t){return t.filter(function(t){return t.startsWith(e.prefix)})})]})})}},{key:"getKeys",value:function(){return _(this,void 0,void 0,function(){var e;return _ts_generator(this,function(t){return e=this,[2,this.getInternalKeys().then(function(t){return t.map(function(t){return e.removePrefix(t)})})]})})}},{key:"getBatched",value:function(e){return _(this,void 0,void 0,function(){var t;return _ts_generator(this,function(r){switch(r.label){case 0:return t=this,[4,$t(this.cache,e.map(function(e){return t.addPrefix(e)}))];case 1:return[2,r.sent().map(function(e){return e?t.transformGet(e):void 0})]}})})}}]),e}(),Zt="campaign_activated",er="custom",tr={US:"https://logx.optimizely.com/v1/events",EU:"https://eu.logx.optimizely.com/v1/events"},rr=function(e,t,r,n,i){e().then(function(e){t.resolve(e)}).catch(function(o){var a;if(0!==i)if(r.cancelled)t.reject(new Te("49"));else{var s=null!==(a=null==n?void 0:n.backoff())&&void 0!==a?a:0;setTimeout(function(){rr(e,t,r,n,i=void 0===i?void 0:i-1)},s)}else t.reject(o)})},nr=function(e,t,r){var n=m(),i={cancelled:!1};return rr(e,n,i,t,r),{cancelRetry:function(){i.cancelled=!0},result:n.promise}},ir=function(){function e(){_class_call_check(this,e),this.idSuffixOffset=0}return _create_class(e,[{key:"getId",value:function(){var e=1e4+this.idSuffixOffset;return this.idSuffixOffset=(this.idSuffixOffset+1)%1e4,"".concat(Date.now()).concat(e)}}]),e}(),or={AB_TEST:"ab-test",FEATURE:"feature",FEATURE_TEST:"feature-test",FEATURE_VARIABLE:"feature-variable",ALL_FEATURE_VARIABLES:"all-feature-variables",FLAG:"flag"},ar={ACTIVATE:"ACTIVATE",DECISION:"DECISION",LOG_EVENT:"LOG_EVENT",OPTIMIZELY_CONFIG_UPDATE:"OPTIMIZELY_CONFIG_UPDATE",TRACK:"TRACK"};!function(e){e.BOOLEAN="boolean",e.DOUBLE="double",e.INTEGER="integer",e.STRING="string",e.JSON="json"}(jt||(jt={})),function(e){e.DISABLE_DECISION_EVENT="DISABLE_DECISION_EVENT",e.ENABLED_FLAGS_ONLY="ENABLED_FLAGS_ONLY",e.IGNORE_USER_PROFILE_SERVICE="IGNORE_USER_PROFILE_SERVICE",e.INCLUDE_REASONS="INCLUDE_REASONS",e.EXCLUDE_VARIABLES="EXCLUDE_VARIABLES",e.IGNORE_CMAB_CACHE="IGNORE_CMAB_CACHE",e.RESET_CMAB_CACHE="RESET_CMAB_CACHE",e.INVALIDATE_USER_CMAB_CACHE="INVALIDATE_USER_CMAB_CACHE"}(Dt||(Dt={}));var sr,ur,lr=function(e,t){var r=e.context,n=t.context;return(r.region||"US")===(n.region||"US")&&r.accountId===n.accountId&&r.projectId===n.projectId&&r.clientName===n.clientName&&r.clientVersion===n.clientVersion&&r.revision===n.revision&&r.anonymizeIP===n.anonymizeIP&&r.botFiltering===n.botFiltering},cr=function(e){var t=e.configObj,r=e.userId,n=e.userAttributes,i=e.clientEngine,o=e.clientVersion;return{type:e.type,timestamp:De.currentTimestamp(),uuid:De.uuid(),context:{region:t.region,accountId:t.accountId,projectId:t.projectId,revision:t.revision,clientName:i,clientVersion:o,anonymizeIP:t.anonymizeIP||!1,botFiltering:t.botFiltering},user:{id:r,attributes:dr(t,n)}}},dr=function(e,t,r){if(!t)return[];var n=[];return Object.keys(t).forEach(function(i){var o,a,s,u,l=t[i];if("object"!=(void 0===l?"undefined":_type_of(l))&&void 0!==l&&function(e,t){return"string"==typeof e&&("string"==typeof t||"boolean"==typeof t||De.isNumber(t)&&De.isSafeInteger(t))}(i,l)){var c=(o=i,a=r,s=e.attributeKeyMap[o],u=0===o.indexOf(bt),s?(u&&(null==a||a.warn("58",o,bt)),s.id):u?o:(null==a||a.warn("62",o),null));c&&n.push({entityId:c,key:i,value:l})}}),n},fr=function(e){function t(e){var r,n;return _class_call_check(this,t),(r=_call_super(this,t,[e.startupLogs])).eventQueue=[],r.idGenerator=new ir,r.runningTask=new Map,r.dispatchingEvents=new Map,r.eventEmitter=new Ft,r.eventDispatcher=e.eventDispatcher,r.closingEventDispatcher=e.closingEventDispatcher,r.batchSize=e.batchSize,r.eventStore=e.eventStore,r.retryConfig=e.retryConfig,r.dispatchRepeater=e.dispatchRepeater,r.dispatchRepeater.setTask(function(){return r.flush()}),r.failedEventRepeater=e.failedEventRepeater,null===(n=r.failedEventRepeater)||void 0===n||n.setTask(function(){return r.retryFailedEvents()}),e.logger&&r.setLogger(e.logger),r}return _inherits(t,e),_create_class(t,[{key:"setLogger",value:function(e){this.logger=e,this.logger.setName("BatchEventProcessor")}},{key:"onDispatch",value:function(e){return this.eventEmitter.on("dispatch",e)}},{key:"retryFailedEvents",value:function(){return _(this,void 0,void 0,function(){var e,t,r,n,i,o;return _ts_generator(this,function(a){switch(a.label){case 0:return e=this,this.eventStore?[4,this.eventStore.getKeys()]:[2];case 1:return t=a.sent().filter(function(t){return!e.dispatchingEvents.has(t)&&!e.eventQueue.find(function(e){return e.id===t})}),[4,"sync"===this.eventStore.operation?Qt(this.eventStore,t):$t(this.eventStore,t)];case 2:return r=a.sent(),n=[],r.forEach(function(e){e&&n.push(e)}),0==n.length?[2]:(n.sort(function(e,t){return e.id<t.id?-1:1}),i=[],o=[],n.forEach(function(t){(o.length===e.batchSize||o.length>0&&!lr(o[0].event,t.event))&&(i.push({request:k(o.map(function(e){return e.event})),events:o}),o=[]),o.push(t)}),o.length>0&&i.push({request:k(o.map(function(e){return e.event})),events:o}),i.forEach(function(t){e.dispatchBatch(t,!1)}),[2])}})})}},{key:"createNewBatch",value:function(){if(0!=this.eventQueue.length){var e=[],t=[];return this.eventQueue.forEach(function(r){e.push(r.event),t.push(r)}),this.eventQueue=[],{request:k(e),events:t}}}},{key:"executeDispatch",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return _(this,void 0,void 0,function(){return _ts_generator(this,function(r){return[2,(t&&this.closingEventDispatcher?this.closingEventDispatcher:this.eventDispatcher).dispatchEvent(e).then(function(e){return e.statusCode&&!Ut(e.statusCode)?Promise.reject(new Te("10",e.statusCode)):Promise.resolve(e)})]})})}},{key:"dispatchBatch",value:function(e,t){var r=this,n=e.request,i=e.events;i.forEach(function(e){r.dispatchingEvents.set(e.id,e)});var o=this.retryConfig?nr(function(){return r.executeDispatch(n,t)},this.retryConfig.backoffProvider(),this.retryConfig.maxRetries):{result:this.executeDispatch(n,t),cancelRetry:function(){}};this.eventEmitter.emit("dispatch",n);var a=this.idGenerator.getId();this.runningTask.set(a,o),o.result.then(function(e){return i.forEach(function(e){var t;null===(t=r.eventStore)||void 0===t||t.remove(e.id)}),Promise.resolve()}).catch(function(e){var t;null===(t=r.logger)||void 0===t||t.error(e)}).finally(function(){r.runningTask.delete(a),i.forEach(function(e){return r.dispatchingEvents.delete(e.id)})})}},{key:"flush",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return _(this,void 0,void 0,function(){var t;return _ts_generator(this,function(r){return(t=this.createNewBatch())&&(this.dispatchRepeater.reset(),this.dispatchBatch(t,e)),[2]})})}},{key:"process",value:function(e){var t;return _(this,void 0,void 0,function(){var r,n;return _ts_generator(this,function(i){switch(i.label){case 0:return r=this,this.isRunning()?(n={id:this.idGenerator.getId(),event:e},[4,Promise.resolve(null===(t=this.eventStore)||void 0===t?void 0:t.set(n.id,n)).catch(function(e){var t;null===(t=r.logger)||void 0===t||t.error(e)})]):[2,Promise.reject(new Te("51","BatchEventProcessor"))];case 1:return i.sent(),this.eventQueue.length>0&&!lr(this.eventQueue[0].event,e)&&this.flush(),this.eventQueue.push(n),this.eventQueue.length==this.batchSize?this.flush():this.dispatchRepeater.isRunning()||this.dispatchRepeater.start(),[2]}})})}},{key:"start",value:function(){var e;this.isNew()&&(_get(_get_prototype_of(t.prototype),"start",this).call(this),this.state=pt.Running,this.disposable||null===(e=this.failedEventRepeater)||void 0===e||e.start(),this.retryFailedEvents(),this.startPromise.resolve())}},{key:"makeDisposable",value:function(){var e,r,n;_get(_get_prototype_of(t.prototype),"makeDisposable",this).call(this),this.batchSize=1,this.retryConfig={maxRetries:Math.min(null!==(r=null===(e=this.retryConfig)||void 0===e?void 0:e.maxRetries)&&void 0!==r?r:5,5),backoffProvider:(null===(n=this.retryConfig)||void 0===n?void 0:n.backoffProvider)||function(){return new Kt(200,1e3,500)}}}},{key:"flushImmediately",value:function(){return this.isRunning()?this.flush(!0):Promise.resolve()}},{key:"stop",value:function(){var e,t=this;this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(g(Ct,"BatchEventProcessor"))),this.state=pt.Stopping,this.dispatchRepeater.stop(),null===(e=this.failedEventRepeater)||void 0===e||e.stop(),this.flush(!0),this.runningTask.forEach(function(e){return e.cancelRetry()}),Promise.allSettled(Array.from(this.runningTask.values()).map(function(e){return e.result})).then(function(){t.state=pt.Terminated,t.stopPromise.resolve()}))}}]),t}(Tt),vr=function(){function e(){_class_call_check(this,e),this.waitPromise=Promise.resolve()}return _create_class(e,[{key:"run",value:function(e){var t=this.waitPromise.then(e);return this.waitPromise=t.catch(function(){}),t}}]),e}(),hr="optly_event:",pr=function(e){function t(e){var r;return _class_call_check(this,t),(r=_call_super(this,t)).dispatcher=e,r.eventEmitter=new Ft,r}return _inherits(t,e),_create_class(t,[{key:"process",value:function(e){var t=k([e]),r=this.dispatcher.dispatchEvent(t);return this.eventEmitter.emit("dispatch",t),r}},{key:"start",value:function(){this.isNew()&&(this.state=pt.Running,this.startPromise.resolve())}},{key:"stop",value:function(){this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(g(Ct,"ForwardingEventProcessor"))),this.state=pt.Terminated,this.stopPromise.resolve())}},{key:"onDispatch",value:function(e){return this.eventEmitter.on("dispatch",e)}},{key:"flushImmediately",value:function(){return Promise.resolve()}}]),t}(Tt),gr=Symbol(),yr=function(e){if(!e||"object"!=(void 0===e?"undefined":_type_of(e))||"function"!=typeof e.dispatchEvent)throw new Error("Invalid event dispatcher")},mr=function(e){return _define_property({},gr,e)},_r=function(){function e(t,r){_class_call_check(this,e),this.operation="sync",this.data=new Map,this.maxSize=t,this.ttl=r}return _create_class(e,[{key:"lookup",value:function(e){var t=this.data.get(e);if(t&&(this.data.delete(e),!(t.expiresAt&&t.expiresAt<=Date.now())))return this.data.set(e,t),t.value}},{key:"save",value:function(e,t){if(this.data.delete(e),this.data.size===this.maxSize){var r=this.data.keys().next().value;this.data.delete(r)}this.data.set(e,{value:t,expiresAt:this.ttl?Date.now()+this.ttl:void 0})}},{key:"remove",value:function(e){this.data.delete(e)}},{key:"reset",value:function(){this.data.clear()}},{key:"getKeys",value:function(){return Array.from(this.data.keys())}}]),e}(),br=function(){function e(t,r,n){_class_call_check(this,e),this.requestHandler=t,this.requestGenerator=r,n&&this.setLogger(n)}return _create_class(e,[{key:"setLogger",value:function(e){this.logger=e,this.logger.setName("OdpEventApiManager")}},{key:"sendEvents",value:function(e,t){return _(this,void 0,void 0,function(){var r,n,i,o,a;return _ts_generator(this,function(s){return 0===t.length?[2,{}]:(r=this.requestGenerator(e,t),n=r.method,i=r.endpoint,o=r.headers,a=r.data,[2,this.requestHandler.makeRequest(i,o,n,a).responsePromise])})})}}]),e}(),kr=function(e,t){var r=e.apiHost,n=e.apiKey;return{method:"POST",endpoint:"".concat(r,"/v3/events"),headers:{"Content-Type":"application/json","x-api-key":n},data:JSON.stringify(t,function(e,t){return _instanceof(t,Map)?Object.fromEntries(t):t})}};!function(e){e.VUID="vuid",e.FS_USER_ID="fs_user_id",e.FS_USER_ID_ALIAS="fs-user-id"}(sr||(sr={})),function(e){e.IDENTIFIED="identified",e.INITIALIZED="client_initialized"}(ur||(ur={}));var Er,Ir="fullstack",Sr=function(e){function t(e){var r;return _class_call_check(this,t),(r=_call_super(this,t,[e.startUpLogs])).queue=[],r.apiManager=e.apiManager,r.batchSize=e.batchSize,r.retryConfig=e.retryConfig,r.repeater=e.repeater,r.repeater.setTask(function(){return r.flush()}),r}return _inherits(t,e),_create_class(t,[{key:"setLogger",value:function(e){this.logger=e,this.logger.setName("OdpEventManager"),this.apiManager.setLogger(e.child())}},{key:"executeDispatch",value:function(e,t){return _(this,void 0,void 0,function(){var r,n;return _ts_generator(this,function(i){switch(i.label){case 0:return[4,this.apiManager.sendEvents(e,t)];case 1:return!(r=i.sent()).statusCode||Ut(r.statusCode)?[3,2]:(n=Promise.reject(new Te("10",r.statusCode)),[3,4]);case 2:return[4,Promise.resolve(r)];case 3:n=i.sent(),i.label=4;case 4:return[2,n]}})})}},{key:"flush",value:function(){return _(this,void 0,void 0,function(){var e,t,r;return _ts_generator(this,function(n){return e=this,this.odpIntegrationConfig&&this.odpIntegrationConfig.integrated?(t=this.odpIntegrationConfig.odpConfig,r=this.queue,[2,(this.queue=[],this.repeater.reset(),nr(function(){return e.executeDispatch(t,r)},this.retryConfig.backoffProvider(),this.retryConfig.maxRetries).result.catch(function(t){var r;null===(r=e.logger)||void 0===r||r.error("11",t)}))]):[2]})})}},{key:"start",value:function(){this.isNew()&&(_get(_get_prototype_of(t.prototype),"start",this).call(this),this.odpIntegrationConfig?this.goToRunningState():this.state=pt.Starting)}},{key:"makeDisposable",value:function(){_get(_get_prototype_of(t.prototype),"makeDisposable",this).call(this),this.retryConfig.maxRetries=Math.min(this.retryConfig.maxRetries,5),this.batchSize=1}},{key:"updateConfig",value:function(e){if(!this.isDone())if(this.isNew())this.odpIntegrationConfig=e;else{if(this.isStarting())return this.odpIntegrationConfig=e,void this.goToRunningState();this.flush(),this.odpIntegrationConfig=e}}},{key:"goToRunningState",value:function(){this.state=pt.Running,this.startPromise.resolve()}},{key:"flushImmediately",value:function(){return this.isRunning()?this.flush():Promise.resolve()}},{key:"stop",value:function(){this.isDone()||(this.isNew()&&this.startPromise.reject(new Error(g(Ct,"OdpEventManager"))),this.flush(),this.state=pt.Terminated,this.stopPromise.resolve())}},{key:"sendEvent",value:function(e){var t,r,n,i,o,a;this.isRunning()?(null===(r=this.odpIntegrationConfig)||void 0===r?void 0:r.integrated)?0!==e.identifiers.size?this.isDataValid(e.data)?e.action?(""===e.type&&(e.type=Ir),Array.from(e.identifiers.entries()).forEach(function(t){var r=_sliced_to_array(t,2),n=r[0],i=r[1];sr.FS_USER_ID_ALIAS!==n.toLowerCase()&&sr.FS_USER_ID!==n.toLowerCase()||(e.identifiers.delete(n),e.identifiers.set(sr.FS_USER_ID,i))}),this.processEvent(e)):null===(a=this.logger)||void 0===a||a.error("5"):null===(o=this.logger)||void 0===o||o.error("6"):null===(i=this.logger)||void 0===i||i.error("39"):null===(n=this.logger)||void 0===n||n.error("43"):null===(t=this.logger)||void 0===t||t.error("51","OdpEventManager")}},{key:"isDataValid",value:function(e){var t=["string","number","boolean"];return Array.from(e.values()).reduce(function(e,r){return e&&(null===r||t.includes(void 0===r?"undefined":_type_of(r)))},!0)}},{key:"processEvent",value:function(e){this.queue.push(e),this.queue.length===this.batchSize?this.flush():this.repeater.isRunning()||this.repeater.start()}}]),t}(Tt),wr=function e(t,r,n,i){_class_call_check(this,e),this.type=t,this.action=r,this.identifiers=null!=n?n:new Map,this.data=null!=i?i:new Map},Or=function(e){return e.startsWith("vuid_")&&e.length>5},xr=function(e){function t(e){var r;if(_class_call_check(this,t),(r=_call_super(this,t)).clientEngine=Ee,r.clientVersion=Se,r.segmentManager=e.segmentManager,r.eventManager=e.eventManager,r.configPromise=m(),e.userAgentParser){var n=e.userAgentParser.parseUserAgentInfo(),i=n.os,o=n.device,a={os:i.name,os_version:i.version,device_type:o.type,model:o.model};r.userAgentData=new Map(Object.entries(a).filter(function(e){var t=_sliced_to_array(e,2),r=(t[0],t[1]);return null!=r&&null!=r}))}return e.logger&&r.setLogger(e.logger),r}return _inherits(t,e),_create_class(t,[{key:"setLogger",value:function(e){this.logger=e,this.logger.setName("OdpManager"),this.eventManager.setLogger(e.child()),this.segmentManager.setLogger(e.child())}},{key:"setClientInfo",value:function(e,t){this.clientEngine=e,this.clientVersion=t}},{key:"start",value:function(){var e=this;if(this.isNew()){this.state=pt.Starting,this.eventManager.start();var t=[this.configPromise,this.eventManager.onRunning()];Promise.all(t).then(function(){e.handleStartSuccess()}).catch(function(t){e.handleStartFailure(t)})}}},{key:"makeDisposable",value:function(){_get(_get_prototype_of(t.prototype),"makeDisposable",this).call(this),this.eventManager.makeDisposable()}},{key:"handleStartSuccess",value:function(){this.isDone()||(this.state=pt.Running,this.startPromise.resolve())}},{key:"handleStartFailure",value:function(e){this.isDone()||(this.state=pt.Failed,this.startPromise.reject(e),this.stopPromise.reject(e))}},{key:"flushImmediately",value:function(){return this.isRunning()?this.eventManager.flushImmediately():Promise.resolve()}},{key:"stop",value:function(){var e=this;this.isDone()||(this.isRunning()||this.startPromise.reject(new Error(g(Ct,"OdpManager"))),this.state=pt.Stopping,this.eventManager.stop(),this.eventManager.onTerminated().then(function(){e.state=pt.Terminated,e.stopPromise.resolve()}).catch(function(t){e.state=pt.Failed,e.stopPromise.reject(t)}))}},{key:"updateConfig",value:function(e){return!(this.odpIntegrationConfig&&(t=this.odpIntegrationConfig,r=e,!(t.integrated!==r.integrated||t.integrated&&r.integrated&&!t.odpConfig.equals(r.odpConfig)))||this.isDone()||(this.odpIntegrationConfig=e,this.configPromise.resolve(),this.segmentManager.updateConfig(e),this.eventManager.updateConfig(e),0));var t,r}},{key:"fetchQualifiedSegments",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return _(this,void 0,void 0,function(){return _ts_generator(this,function(r){return[2,Or(e)?this.segmentManager.fetchQualifiedSegments(sr.VUID,e,t):this.segmentManager.fetchQualifiedSegments(sr.FS_USER_ID,e,t)]})})}},{key:"identifyUser",value:function(e,t){var r=new Map,n=e,i=t;!t&&Or(e)&&(i=e,n=void 0),i&&r.set(sr.VUID,i),n&&r.set(sr.FS_USER_ID,n);var o=new wr(Ir,ur.IDENTIFIED,r);this.sendEvent(o)}},{key:"sendEvent",value:function(e){!e.identifiers.has(sr.VUID)&&this.vuid&&e.identifiers.set(sr.VUID,this.vuid),e.data=this.augmentCommonData(e.data),this.eventManager.sendEvent(e)}},{key:"augmentCommonData",value:function(e){var t=new Map(this.userAgentData);return t.set("idempotence_id",ve()),t.set("data_source_type","sdk"),t.set("data_source",this.clientEngine),t.set("data_source_version",this.clientVersion),e.forEach(function(e,r){return t.set(r,e)}),t}},{key:"setVuid",value:function(e){var t=this;this.vuid=e,this.onRunning().then(function(){var e;if(null===(e=t.odpIntegrationConfig)||void 0===e?void 0:e.integrated){var r=new wr(Ir,ur.INITIALIZED);t.sendEvent(r)}})}}]),t}(Tt),Pr={$schema:"http://json-schema.org/draft-04/schema#",title:"Project Config JSON Schema",type:"object",properties:{projectId:{type:"string",required:!0},accountId:{type:"string",required:!0},groups:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},policy:{type:"string",required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},experiments:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0},status:{type:"string",required:!0},layerId:{type:"string",required:!0},variations:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},audienceIds:{type:"array",items:{type:"string"},required:!0},forcedVariations:{type:"object",required:!0}}},required:!0}}},required:!0},experiments:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0},status:{type:"string",required:!0},layerId:{type:"string",required:!0},variations:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},trafficAllocation:{type:"array",items:{type:"object",properties:{entityId:{type:"string",required:!0},endOfRange:{type:"integer",required:!0}}},required:!0},audienceIds:{type:"array",items:{type:"string"},required:!0},forcedVariations:{type:"object",required:!0},cmab:{type:"object",required:!1,properties:{attributes:{type:"array",items:{type:"string"},required:!0}}}}},required:!0},events:{type:"array",items:{type:"object",properties:{key:{type:"string",required:!0},experimentIds:{type:"array",items:{type:"string",required:!0}},id:{type:"string",required:!0}}},required:!0},audiences:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},name:{type:"string",required:!0},conditions:{type:"string",required:!0}}},required:!0},attributes:{type:"array",items:{type:"object",properties:{id:{type:"string",required:!0},key:{type:"string",required:!0}}},required:!0},version:{type:"string",required:!0},revision:{type:"string",required:!0},integrations:{type:"array",items:{type:"object",properties:{key:{type:"string",required:!0},host:{type:"string"},publicKey:{type:"string"},pixelUrl:{type:"string"}}}}}},Mr={$schema:"https://json-schema.org/draft/2019-09/schema",$id:"https://example.com/example.json",title:"ODP Response Schema",type:"object",required:["data"],properties:{data:{title:"The data Schema",type:"object",required:["customer"],properties:{customer:{title:"The customer Schema",type:"object",required:[],properties:{audiences:{title:"The audiences Schema",type:"object",required:["edges"],properties:{edges:{title:"The edges Schema",type:"array",items:{title:"A Schema",type:"object",required:["node"],properties:{node:{title:"The node Schema",type:"object",required:["name","state"],properties:{name:{title:"The name Schema",type:"string",examples:["has_email","has_email_opted_in"]},state:{title:"The state Schema",type:"string",examples:["qualified"]}},examples:[]}},examples:[]},examples:[]}},examples:[]}},examples:[]}},examples:[]},errors:{title:"The errors Schema",type:"array",default:[],items:{title:"A Schema",type:"object",required:["message","locations","extensions"],properties:{message:{title:"The message Schema",type:"string",examples:["Exception while fetching data (/customer) : java.lang.RuntimeException: could not resolve _fs_user_id = asdsdaddddd"]},locations:{title:"The locations Schema",type:"array",items:{title:"A Schema",type:"object",required:["line","column"],properties:{line:{title:"The line Schema",type:"integer",examples:[2]},column:{title:"The column Schema",type:"integer",examples:[3]}},examples:[]},examples:[]},path:{title:"The path Schema",type:"array",items:{title:"A Schema",type:"string",examples:["customer"]},examples:[]},extensions:{title:"The extensions Schema",type:"object",required:["classification"],properties:{classification:{title:"The classification Schema",type:"string",examples:["InvalidIdentifierException"]}},examples:[]}},examples:[]},examples:[]}},examples:[]},Rr=[],Ar="Audience segments fetch failed",Cr=function(){function e(t,r){_class_call_check(this,e),this.toGraphQLJson=function(e,t,r){return['{"query" : "query {customer',"(".concat(e,' : \\"').concat(t,'\\") '),"{audiences","(subset: ["].concat(_to_consumable_array((null==r?void 0:r.map(function(e,t){return'\\"'.concat(e,'\\"').concat(t<r.length-1?",":"")}))||""),[']) {edges {node {name state}}}}}"}']).join("")},this.requestHandler=t,r&&this.setLogger(r)}return _create_class(e,[{key:"setLogger",value:function(e){this.logger=e,this.logger.setName("OdpSegmentApiManager")}},{key:"fetchSegments",value:function(e,t,r,n,i){var o,a,s,u,l,c,d,f,v;return _(this,void 0,void 0,function(){var h,p,g,y,m,_,b,k;return _ts_generator(this,function(E){switch(E.label){case 0:return 0===(null==i?void 0:i.length)?[2,Rr]:(h="".concat(t,"/v3/graphql"),p=this.toGraphQLJson(r,n,i),[4,this.querySegments(e,h,p)]);case 1:return(g=E.sent())?(y=this.parseSegmentsResponseJson(g))?(null===(s=y.errors)||void 0===s?void 0:s.length)>0?(m=y.errors[0].extensions,_=m.code,b=m.classification,[2,("INVALID_IDENTIFIER_EXCEPTION"==_?null===(u=this.logger)||void 0===u||u.error("".concat(Ar," (invalid identifier)")):null===(l=this.logger)||void 0===l||l.error("".concat(Ar," (").concat(b,")")),null)]):[2,(k=null===(f=null===(d=null===(c=null==y?void 0:y.data)||void 0===c?void 0:c.customer)||void 0===d?void 0:d.audiences)||void 0===f?void 0:f.edges)?k.filter(function(e){return"qualified"==e.node.state}).map(function(e){return e.node.name}):(null===(v=this.logger)||void 0===v||v.error("".concat(Ar," (decode error)")),null)]:[2,(null===(a=this.logger)||void 0===a||a.error("".concat(Ar," (decode error)")),null)]:[2,(null===(o=this.logger)||void 0===o||o.error("".concat(Ar," (network error)")),null)]}})})}},{key:"querySegments",value:function(e,t,r){return _(this,void 0,void 0,function(){var n,i,o,a,s;return _ts_generator(this,function(u){switch(u.label){case 0:n=t,i={"Content-Type":"application/json","x-api-key":e},u.label=1;case 1:return u.trys.push([1,3,,4]),[4,this.requestHandler.makeRequest(n,i,"POST",r).responsePromise];case 2:return o=u.sent(),a=o.statusCode,s=o.body,[2,a>=200&&a<300?s:null];case 3:return u.sent(),[2,null];case 4:return[2]}})})}},{key:"parseSegmentsResponseJson",value:function(e){var t={};try{t=JSON.parse(e)}catch(e){return null}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Pr,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if("object"!=(void 0===e?"undefined":_type_of(e))||null===e)throw new Te("34");var n=(0,he.validate)(e,t);if(n.valid)return!0;if(!r)return!1;if(Array.isArray(n.errors))throw new Te("17",n.errors[0].property,n.errors[0].message);throw new Te("25")}(t,Mr,!1)?t:null}}]),e}();!function(e){e.IGNORE_CACHE="IGNORE_CACHE",e.RESET_CACHE="RESET_CACHE"}(Er||(Er={}));var jr=function(){function e(t,r,n){_class_call_check(this,e),this.segmentsCache=t,this.odpSegmentApiManager=r,n&&this.setLogger(n)}return _create_class(e,[{key:"setLogger",value:function(e){this.logger=e,this.logger.setName("OdpSegmentManager"),this.odpSegmentApiManager.setLogger(e.child())}},{key:"fetchQualifiedSegments",value:function(e,t,r){var n,i;return _(this,void 0,void 0,function(){var o,a,s,u,l,c;return _ts_generator(this,function(d){switch(d.label){case 0:return this.odpIntegrationConfig?this.odpIntegrationConfig.integrated?(o=this.odpIntegrationConfig.odpConfig,!(a=o.segmentsToCheck)||a.length<=0?[2,[]]:(s=this.makeCacheKey(e,t),u=null==r?void 0:r.includes(Er.IGNORE_CACHE),(null==r?void 0:r.includes(Er.RESET_CACHE))&&this.segmentsCache.reset(),u?[3,2]:[4,this.segmentsCache.lookup(s)])):[2,(null===(i=this.logger)||void 0===i||i.warn("43"),null)]:[2,(null===(n=this.logger)||void 0===n||n.warn("38"),null)];case 1:if(l=d.sent())return[2,l];d.label=2;case 2:return[4,this.odpSegmentApiManager.fetchSegments(o.apiKey,o.apiHost,e,t,a)];case 3:return[2,((c=d.sent())&&!u&&this.segmentsCache.save(s,c),c)]}})})}},{key:"makeCacheKey",value:function(e,t){return"".concat(e,"-$-").concat(t)}},{key:"updateConfig",value:function(e){this.odpIntegrationConfig=e,this.segmentsCache.reset()}}]),e}(),Dr=Symbol(),Tr=function(e){var t,r=function(e){return e.segmentsCache&&function(e){var t=[];if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))throw new Error("Invalid cache");for(var r=0,n=["save","lookup","reset"];r<n.length;r++){var i=n[r];"function"!=typeof e[i]&&t.push("Invalid cache method %s".replace("%s",i))}if(t.length>0)throw new Error(t.join(", "))}(e.segmentsCache),new jr(e.segmentsCache||(t=e.segmentsCacheSize,r=e.segmentsCacheTimeout,new _r(t||1e4,r||6e5)),new Cr(e.segmentRequestHandler));var t,r}(e),n=new Sr({apiManager:new br((t=e).eventRequestHandler,t.eventRequestGenerator),batchSize:t.eventBatchSize||100,repeater:new qt(t.eventFlushInterval||1e4),retryConfig:{maxRetries:t.eventMaxRetries||2,backoffProvider:function(){return new Kt(t.eventMinBackoff||200,t.eventMaxBackoff||1e3,50)}}});return new xr({segmentManager:r,eventManager:n,userAgentParser:e.userAgentParser})},Fr=Symbol(),Nr=function(){function e(t,r){_class_call_check(this,e),this.logger=t,this.errorNotifier=r}return _create_class(e,[{key:"report",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if("string"==typeof e)return e=_construct(Te,[e].concat(_to_consumable_array(r))),void this.report(e);this.errorNotifier&&this.errorNotifier.notify(e),this.logger&&this.logger.error(e)}},{key:"setLogger",value:function(e){this.logger=e}},{key:"setErrorNotifier",value:function(e){this.errorNotifier=e}}]),e}(),Ur=function(){function e(t){_class_call_check(this,e),this.removerId=1,this.eventEmitter=new Ft,this.removers=new Map,this.errorReporter=new Nr(t.logger,t.errorNotifier)}return _create_class(e,[{key:"addNotificationListener",value:function(e,t){if(!(v(ar).indexOf(e)>-1))return-1;var r=this.removerId++,n=this.eventEmitter.on(e,this.wrapWithErrorReporting(e,t));return this.removers.set(r,n),r}},{key:"wrapWithErrorReporting",value:function(e,t){var r=this;return function(n){try{t(n)}catch(t){var i=_instanceof(t,Error)?t.message:String(t);r.errorReporter.report("30",e,i)}}}},{key:"removeNotificationListener",value:function(e){var t=this.removers.get(e);return!!t&&(t(),!0)}},{key:"clearAllNotificationListeners",value:function(){this.eventEmitter.removeAllListeners()}},{key:"clearNotificationListeners",value:function(e){this.eventEmitter.removeListeners(e)}},{key:"sendNotifications",value:function(e,t){this.eventEmitter.emit(e,t)}}]),e}(),Vr="$opt_null_rule_key",Kr=function(){function e(t){var r=t.optimizely,n=t.userId,i=t.attributes;_class_call_check(this,e),this._qualifiedSegments=null,this.optimizely=r,this.userId=n,this.attributes=Object.assign({},i),this.forcedDecisionsMap={}}return _create_class(e,[{key:"setAttribute",value:function(e,t){this.attributes[e]=t}},{key:"getUserId",value:function(){return this.userId}},{key:"getAttributes",value:function(){return Object.assign({},this.attributes)}},{key:"getOptimizely",value:function(){return this.optimizely}},{key:"qualifiedSegments",get:function(){return this._qualifiedSegments},set:function(e){this._qualifiedSegments=e}},{key:"decide",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this.optimizely.decide(this.cloneUserContext(),e,t)}},{key:"decideAsync",value:function(e,t){return this.optimizely.decideAsync(this.cloneUserContext(),e,t)}},{key:"decideForKeys",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this.optimizely.decideForKeys(this.cloneUserContext(),e,t)}},{key:"decideForKeysAsync",value:function(e,t){return this.optimizely.decideForKeysAsync(this.cloneUserContext(),e,t)}},{key:"decideAll",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return this.optimizely.decideAll(this.cloneUserContext(),e)}},{key:"decideAllAsync",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return this.optimizely.decideAllAsync(this.cloneUserContext(),e)}},{key:"trackEvent",value:function(e,t){this.optimizely.track(e,this.userId,this.attributes,t)}},{key:"setForcedDecision",value:function(e,t){var r,n=e.flagKey,i=null!==(r=e.ruleKey)&&void 0!==r?r:Vr,o={variationKey:t.variationKey};return this.forcedDecisionsMap[n]||(this.forcedDecisionsMap[n]={}),this.forcedDecisionsMap[n][i]=o,!0}},{key:"getForcedDecision",value:function(e){return this.findForcedDecision(e)}},{key:"removeForcedDecision",value:function(e){var t,r=null!==(t=e.ruleKey)&&void 0!==t?t:Vr,n=e.flagKey,i=!1;return this.forcedDecisionsMap.hasOwnProperty(n)&&(this.forcedDecisionsMap[n].hasOwnProperty(r)&&(delete this.forcedDecisionsMap[n][r],i=!0),0===Object.keys(this.forcedDecisionsMap[n]).length&&delete this.forcedDecisionsMap[n]),i}},{key:"removeAllForcedDecisions",value:function(){return this.forcedDecisionsMap={},!0}},{key:"findForcedDecision",value:function(e){var t,r=null!==(t=e.ruleKey)&&void 0!==t?t:Vr,n=e.flagKey;if(this.forcedDecisionsMap.hasOwnProperty(e.flagKey)){var i=this.forcedDecisionsMap[n];if(i.hasOwnProperty(r))return{variationKey:i[r].variationKey}}return null}},{key:"cloneUserContext",value:function(){var t=new e({optimizely:this.getOptimizely(),userId:this.getUserId(),attributes:this.getAttributes()});return Object.keys(this.forcedDecisionsMap).length>0&&(t.forcedDecisionsMap=Object.assign({},this.forcedDecisionsMap)),t._qualifiedSegments=this._qualifiedSegments,t}},{key:"fetchQualifiedSegments",value:function(e){return _(this,void 0,void 0,function(){var t;return _ts_generator(this,function(r){switch(r.label){case 0:return[4,this.optimizely.fetchQualifiedSegments(this.userId,e)];case 1:return t=r.sent(),[2,(this.qualifiedSegments=t,null!==t)]}})})}},{key:"isQualifiedFor",value:function(e){return!!this._qualifiedSegments&&this._qualifiedSegments.indexOf(e)>-1}}]),e}(),Lr=Math.pow(2,32),qr=function(e){try{var t=pe.default.v3(e,1)/Lr;return Math.floor(1e4*t)}catch(t){throw new Te("14",e,t.message)}},Br="User %s is not in any experiment of group %s.",zr="User %s is not in experiment %s of group %s.",Hr="User %s is in experiment %s of group %s.",Jr="Assigned bucket %s to user with bucketing ID %s.",Gr="Bucketed into an invalid variation ID. Returning null.",Wr=function(e){var t,r,n,i,o,a=[],s=e.experimentIdMap[e.experimentId],u=null==s?void 0:s.groupId;if(u){var l=e.groupIdMap[u];if(!l)throw new Te("23",u);if("random"===l.policy){var c=Qr(l,e.bucketingId,e.userId,e.logger);if(null===c)return null===(t=e.logger)||void 0===t||t.info(Br,e.userId,u),a.push([Br,e.userId,u]),{result:null,reasons:a};if(c!==e.experimentId)return null===(r=e.logger)||void 0===r||r.info(zr,e.userId,e.experimentKey,u),a.push([zr,e.userId,e.experimentKey,u]),{result:null,reasons:a};null===(n=e.logger)||void 0===n||n.info(Hr,e.userId,e.experimentKey,u),a.push([Hr,e.userId,e.experimentKey,u])}}var d="".concat(e.bucketingId).concat(e.experimentId),f=qr(d);null===(i=e.logger)||void 0===i||i.debug(Jr,f,e.userId),a.push([Jr,f,e.userId]);var v=$r(f,e.trafficAllocationConfig);return e.validateEntity&&null!==v&&!e.variationIdMap[v]?(v&&(null===(o=e.logger)||void 0===o||o.warn(Gr),a.push([Gr])),{result:null,reasons:a}):{result:v,reasons:a}},Qr=function(e,t,r,n){var i="".concat(t).concat(e.id),o=qr(i);null==n||n.debug(Jr,o,r);var a=e.trafficAllocation;return $r(o,a)},$r=function(e,t){for(var r=0;r<t.length;r++)if(e<t[r].endOfRange)return t[r].entityId;return null},Yr="exact",Xr="exists",Zr="semver_eq",en="semver_ge",tn="semver_gt",rn="semver_le",nn="semver_lt",on="substring",an=[Yr,Xr,"gt","ge","lt","le",on,Zr,nn,rn,tn,en],sn={};sn[Yr]=A,sn[Xr]=function(e,t,r){return null!=t.getAttributes()[e.name]},sn.gt=function(e,t,r){var n=t.getAttributes()[e.name],i=e.value;return C(e,t,r)&&null!==i?n>i:null},sn.ge=function(e,t,r){var n=t.getAttributes()[e.name],i=e.value;return C(e,t,r)&&null!==i?n>=i:null},sn.lt=function(e,t,r){var n=t.getAttributes()[e.name],i=e.value;return C(e,t,r)&&null!==i?n<i:null},sn.le=function(e,t,r){var n=t.getAttributes()[e.name],i=e.value;return C(e,t,r)&&null!==i?n<=i:null},sn[on]=function(e,t,r){var n=t.getAttributes(),i=e.name,o=n[e.name],a=void 0===o?"undefined":_type_of(o),s=e.value;return"string"!=typeof s?(null==r||r.warn(Ge,JSON.stringify(e)),null):null===o?(null==r||r.debug(Le,JSON.stringify(e),i),null):"string"!=typeof o?(null==r||r.warn(We,JSON.stringify(e),a,i),null):-1!==o.indexOf(s)},sn[Zr]=function(e,t,r){var n=j(e,t,r);return null===n?null:0===n},sn[tn]=function(e,t,r){var n=j(e,t,r);return null===n?null:n>0},sn[en]=function(e,t,r){var n=j(e,t,r);return null===n?null:n>=0},sn[nn]=function(e,t,r){var n=j(e,t,r);return null===n?null:n<0},sn[rn]=function(e,t,r){var n=j(e,t,r);return null===n?null:n<=0};var un=function(e){return{evaluate:function(t,r){return function(e,t,r){var n=t.getAttributes(),i=e.match;if(void 0!==i&&-1===an.indexOf(i))return null==r||r.warn(Qe,JSON.stringify(e)),null;var o=e.name;return n.hasOwnProperty(o)||i==Xr?(i&&sn[i]||A)(e,t,r):(null==r||r.debug("18",JSON.stringify(e),o),null)}(t,r,e)}}},ln="qualified",cn=[ln],dn={};dn[ln]=D;var fn=function(e){return{evaluate:function(t,r){return function(e,t,r){var n=e.match;return void 0!==n&&-1===cn.indexOf(n)?(null==r||r.warn(Qe,JSON.stringify(e)),null):(n&&dn[n]||D)(e,t)}(t,r,e)}}},vn=function(){function e(t,r){_class_call_check(this,e),this.logger=r,this.typeToEvaluatorMap=Object.assign(Object.assign({},t),{custom_attribute:un(this.logger),third_party_dimension:fn(this.logger)})}return _create_class(e,[{key:"evaluate",value:function(e,t,r){var n=this;return!e||0===e.length||!!ht(e,function(e){var i,o,a=t[e];if(a){null===(i=n.logger)||void 0===i||i.debug("5",e,JSON.stringify(a.conditions));var s=ht(a.conditions,n.evaluateConditionWithUserAttributes.bind(n,r)),u=null===s?"UNKNOWN":s.toString().toUpperCase();return null===(o=n.logger)||void 0===o||o.debug("1",e,u),s}return null})}},{key:"evaluateConditionWithUserAttributes",value:function(e,t){var r,n,i=this.typeToEvaluatorMap[t.type];if(!i)return null===(r=this.logger)||void 0===r||r.warn("60",JSON.stringify(t)),null;try{return i.evaluate(t,e)}catch(e){null===(n=this.logger)||void 0===n||n.error("2",t.type,e.message)}return null}}]),e}(),hn=function(){function e(t,r){_class_call_check(this,e),this.op=t,this.val=r}return _create_class(e,[{key:"get",value:function(){return this.val}},{key:"then",value:function(t){if("sync"===this.op){var r=t(this.val);return e.of(this.op,r.get())}return e.of(this.op,this.val.then(t))}}],[{key:"of",value:function(t,r){if("sync"===t){if((n=r)&&"function"==typeof n.then)throw new Te("Promise value is not allowed in sync operation");return new e(t,r)}var n;return new e(t,Promise.resolve(r))}}]),e}();hn.all=function(e,t){if("sync"===e){var r=t.map(function(e){return e.get()});return hn.of(e,r)}var n=t.map(function(e){return e.get()});return hn.of(e,Promise.all(n))};var pn,gn="Experiment %s is not running.",yn='Returning previously activated variation "%s" of experiment "%s" for user "%s" from user profile.',mn="User %s does not meet conditions to be in experiment %s.",_n="User %s is in no variation of experiment %s.",bn="User %s is in variation %s of experiment %s.",kn="User %s is forced in variation %s.",En="Variation key %s is not in datafile. Not activating user %s.",In='Evaluating audiences for %s "%s": %s.',Sn="Audiences for %s %s collectively evaluated to %s.",wn="User %s is in rollout of feature %s.",On="User %s is not in rollout of feature %s.",xn="Feature %s is not attached to any experiments.",Pn="User %s does not meet conditions for targeting rule %s.",Mn="User %s not bucketed into targeting rule %s due to traffic allocation. Trying everyone rule.",Rn="User %s bucketed into targeting rule %s.",An="There is no rollout of feature %s.",Cn="Invalid rollout ID %s attached to feature %s",jn="Rollout of feature %s has no experiments",Dn="Experiment key %s is improperly formatted.",Tn="Variation %s is mapped to experiment %s and user %s in the forced variation map.",Fn="User %s meets conditions for targeting rule %s.",Nn="Variation (%s) is mapped to flag (%s), rule (%s) and user (%s) in the forced decision map.",Un="Variation (%s) is mapped to flag (%s) and user (%s) in the forced decision map.",Vn="Invalid variation is mapped to flag (%s), rule (%s) and user (%s) in the forced decision map.",Kn="Invalid variation is mapped to flag (%s) and user (%s) in the forced decision map.",Ln="Failed to fetch CMAB data for experiment %s.",qn="Holdout %s is not running.",Bn="User %s meets conditions for holdout %s.",zn="User %s does not meet conditions for holdout %s.",Hn="User %s is in variation %s of holdout %s.",Jn="User %s is in no holdout variation.",Gn=function(){function e(t){var r,n,i;_class_call_check(this,e),this.logger=t.logger,null===(r=this.logger)||void 0===r||r.setName("DecisionService"),this.audienceEvaluator=(n=t.UNSTABLE_conditionEvaluators,i=this.logger,new vn(n,i)),this.forcedVariationMap={},this.userProfileService=t.userProfileService,this.userProfileServiceAsync=t.userProfileServiceAsync,this.cmabService=t.cmabService}return _create_class(e,[{key:"isCmab",value:function(e){return!!e.cmab}},{key:"resolveVariation",value:function(e,t,r,n,i,o){var a,s,u,l,c,d,f=this,v=n.getUserId(),h=r.key;if(wt(t,h)!==_t)return null===(l=this.logger)||void 0===l||l.info(gn,h),hn.of(e,{result:{},reasons:[[gn,h]]});var p=[],g=this.getForcedVariation(t,h,v);(a=p).push.apply(a,_to_consumable_array(g.reasons));var y=g.result;if(y)return hn.of(e,{result:{variationKey:y},reasons:p});var m=this.getWhitelistedVariation(r,v);(s=p).push.apply(s,_to_consumable_array(m.reasons));var _=m.result;if(_)return hn.of(e,{result:{variationKey:_.key},reasons:p});if(o&&(_=this.getStoredVariation(t,r,v,o.userProfile)))return null===(c=this.logger)||void 0===c||c.info(yn,_.key,h,v),p.push([yn,_.key,h,v]),hn.of(e,{result:{variationKey:_.key},reasons:p});var b=this.checkIfUserIsInAudience(t,r,Oe,n,"");return(u=p).push.apply(u,_to_consumable_array(b.reasons)),b.result?(this.isCmab(r)?this.getDecisionForCmabExperiment(e,t,r,n,i):this.getDecisionFromBucketer(e,t,r,n)).then(function(n){var i,a,s;if((i=p).push.apply(i,_to_consumable_array(n.reasons)),n.error)return hn.of(e,{error:!0,result:{},reasons:p});var u=n.result.variationId;return(_=u?t.variationIdMap[u]:null)?(null===(s=f.logger)||void 0===s||s.info(bn,v,_.key,h),p.push([bn,v,_.key,h]),o&&!f.isCmab(r)&&f.updateUserProfile(r,_,o),hn.of(e,{result:{variationKey:_.key,cmabUuid:n.result.cmabUuid},reasons:p})):(null===(a=f.logger)||void 0===a||a.debug(_n,v,h),p.push([_n,v,h]),hn.of(e,{result:{},reasons:p}))}):(null===(d=this.logger)||void 0===d||d.info(mn,v,h),p.push([mn,v,h]),hn.of(e,{result:{},reasons:p}))}},{key:"getDecisionForCmabExperiment",value:function(e,t,r,n,i){var o=this;if("sync"===e)return hn.of(e,{error:!1,result:{},reasons:[["CMAB is not supported in sync mode."]]});var a=n.getUserId(),s=n.getAttributes(),u=this.getBucketingId(a,s),l=this.buildBucketerParams(t,r,u,a),c=Wr(l);if("$"!==c.result)return hn.of(e,{error:!1,result:{},reasons:c.reasons});var d=this.cmabService.getDecision(t,n,r.id,i).then(function(e){return{error:!1,result:e,reasons:[]}}).catch(function(e){var t;return null===(t=o.logger)||void 0===t||t.error(Ln,r.key),{error:!0,result:{},reasons:[[Ln,r.key]]}});return hn.of(e,d)}},{key:"getDecisionFromBucketer",value:function(e,t,r,n){var i=n.getUserId(),o=n.getAttributes(),a=this.getBucketingId(i,o),s=this.buildBucketerParams(t,r,a,i),u=Wr(s);return hn.of(e,{result:{variationId:u.result||void 0},reasons:u.reasons})}},{key:"getVariation",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=n[Dt.IGNORE_USER_PROFILE_SERVICE]?void 0:{isProfileUpdated:!1,userProfile:this.resolveExperimentBucketMap("sync",r.getUserId(),r.getAttributes()).get()},o=this.resolveVariation("sync",e,t,r,n,i).get();return i&&this.saveUserProfile("sync",r.getUserId(),i),{result:o.result.variationKey||null,reasons:o.reasons}}},{key:"resolveExperimentBucketMap",value:function(e,t){var r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).$opt_experiment_bucket_map||{};return this.getUserProfile(e,t).then(function(t){var n=(null==t?void 0:t.experiment_bucket_map)||{};return hn.of(e,Object.assign(Object.assign({},n),r))})}},{key:"getWhitelistedVariation",value:function(e,t){var r,n,i=[];if(e.forcedVariations&&e.forcedVariations.hasOwnProperty(t)){var o=e.forcedVariations[t];return e.variationKeyMap.hasOwnProperty(o)?(null===(r=this.logger)||void 0===r||r.info(kn,t,o),i.push([kn,t,o]),{result:e.variationKeyMap[o],reasons:i}):(null===(n=this.logger)||void 0===n||n.error(En,o,t),i.push([En,o,t]),{result:null,reasons:i})}return{result:null,reasons:i}}},{key:"checkIfUserIsInAudience",value:function(e,t,r,n,i){var o,a,s=[],u=t.audienceConditions||t.audienceIds,l=e.audiencesById;null===(o=this.logger)||void 0===o||o.debug(In,r,i||t.key,JSON.stringify(u)),s.push([In,r,i||t.key,JSON.stringify(u)]);var c=this.audienceEvaluator.evaluate(u,l,n);return null===(a=this.logger)||void 0===a||a.info(Sn,r,i||t.key,c.toString().toUpperCase()),s.push([Sn,r,i||t.key,c.toString().toUpperCase()]),{result:c,reasons:s}}},{key:"buildBucketerParams",value:function(e,t,r,n){var i=!0,o=t.trafficAllocation;return"cmab"in t&&t.cmab&&(o=[{entityId:"$",endOfRange:t.cmab.trafficAllocation}],i=!1),{bucketingId:r,experimentId:t.id,experimentKey:t.key,experimentIdMap:e.experimentIdMap,experimentKeyMap:e.experimentKeyMap,groupIdMap:e.groupIdMap,logger:this.logger,trafficAllocationConfig:o,userId:n,variationIdMap:e.variationIdMap,validateEntity:i}}},{key:"getVariationForHoldout",value:function(e,t,r){var n,i,o,a,s,u,l,c=r.getUserId(),d=[];if("Running"!==t.status){var f=[qn,t.key];return d.push(f),null===(o=this.logger)||void 0===o||o.info(qn,t.key),{result:{experiment:null,variation:null,decisionSource:we.HOLDOUT},reasons:d}}var v=this.checkIfUserIsInAudience(e,t,Oe,r);if((n=d).push.apply(n,_to_consumable_array(v.reasons)),!v.result){var h=[zn,c,t.key];return d.push(h),null===(a=this.logger)||void 0===a||a.info(zn,c,t.key),{result:{experiment:null,variation:null,decisionSource:we.HOLDOUT},reasons:d}}var p=[Bn,c,t.key];d.push(p),null===(s=this.logger)||void 0===s||s.info(Bn,c,t.key);var g=r.getAttributes(),y=this.getBucketingId(c,g),m=this.buildBucketerParams(e,t,y,c),_=Wr(m);if((i=d).push.apply(i,_to_consumable_array(_.reasons)),_.result){var b=e.variationIdMap[_.result];if(b){var k=[Hn,c,t.key,b.key];return d.push(k),null===(u=this.logger)||void 0===u||u.info(Hn,c,t.key,b.key),{result:{experiment:t,variation:b,decisionSource:we.HOLDOUT},reasons:d}}}var E=[Jn,c];return d.push(E),null===(l=this.logger)||void 0===l||l.info(Jn,c),{result:{experiment:null,variation:null,decisionSource:we.HOLDOUT},reasons:d}}},{key:"getStoredVariation",value:function(e,t,r,n){var i;if(null==n?void 0:n.hasOwnProperty(t.id)){var o=n[t.id],a=o.variation_id;if(e.variationIdMap.hasOwnProperty(a))return e.variationIdMap[o.variation_id];null===(i=this.logger)||void 0===i||i.info("26",r,a,t.key)}return null}},{key:"getUserProfile",value:function(e,t){var r,n=this,i={user_id:t,experiment_bucket_map:{}};if(this.userProfileService){try{return hn.of(e,this.userProfileService.lookup(t))}catch(e){null===(r=this.logger)||void 0===r||r.error("66",t,e.message)}return hn.of(e,i)}return this.userProfileServiceAsync&&"async"===e?hn.of(e,this.userProfileServiceAsync.lookup(t).catch(function(e){var r;return null===(r=n.logger)||void 0===r||r.error("66",t,e.message),i})):hn.of(e,i)}},{key:"updateUserProfile",value:function(e,t,r){r.userProfile&&(r.userProfile[e.id]={variation_id:t.id},r.isProfileUpdated=!0)}},{key:"saveUserProfile",value:function(e,t,r){var n,i,o=this,a=r.userProfile,s=r.isProfileUpdated;if(!a||!s)return hn.of(e,void 0);if("sync"===e&&!this.userProfileService)return hn.of(e,void 0);if(this.userProfileService){try{this.userProfileService.save({user_id:t,experiment_bucket_map:a}),null===(n=this.logger)||void 0===n||n.info("25",t)}catch(e){null===(i=this.logger)||void 0===i||i.error("67",t,e.message)}return hn.of(e,void 0)}return this.userProfileServiceAsync?hn.of(e,this.userProfileServiceAsync.save({user_id:t,experiment_bucket_map:a}).catch(function(e){var r;null===(r=o.logger)||void 0===r||r.error("67",t,e.message)})):hn.of(e,void 0)}},{key:"getVariationsForFeatureList",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.resolveVariationsForFeatureList("sync",e,t,r,n).get()}},{key:"resolveVariationsForFeatureList",value:function(e,t,r,n,i){var o=this,a=n.getUserId(),s=n.getAttributes();return(i[Dt.IGNORE_USER_PROFILE_SERVICE]?hn.of(e,void 0):this.resolveExperimentBucketMap(e,a,s).then(function(t){return hn.of(e,{isProfileUpdated:!1,userProfile:t})})).then(function(s){var u=r.map(function(r){return o.resolveVariationForFlag(e,t,r,n,i,s)}),l=hn.all(e,u);return l.then(function(){return s&&o.saveUserProfile(e,a,s),l})})}},{key:"resolveVariationForFlag",value:function(e,t,r,n,i,o){var a,s=this,u=[],l=this.findValidatedForcedDecision(t,n,r.key);if((a=u).push.apply(a,_to_consumable_array(l.reasons)),l.result)return hn.of(e,{result:{variation:l.result,experiment:null,decisionSource:we.FEATURE_TEST},reasons:u});var c=function(e,t){if(e.flagHoldoutsMap[t])return e.flagHoldoutsMap[t];var r=_to_consumable_array(e.globalHoldouts.filter(function(r){return!(e.excludedHoldouts[t]||[]).includes(r)})).concat(_to_consumable_array(e.includedHoldouts[t]||[]));return e.flagHoldoutsMap[t]=r,r}(t,r.key),d=!0,f=!1,v=void 0;try{for(var h,p=c[Symbol.iterator]();!(d=(h=p.next()).done);d=!0){var g,y=h.value,m=this.getVariationForHoldout(t,y,n);if((g=u).push.apply(g,_to_consumable_array(m.reasons)),m.result.variation)return hn.of(e,{result:m.result,reasons:u})}}catch(e){f=!0,v=e}finally{try{d||null==p.return||p.return()}finally{if(f)throw v}}return this.getVariationForFeatureExperiment(e,t,r,n,i,o).then(function(i){var o,a,l,c;if(i.error||null!==i.result.variation)return hn.of(e,Object.assign(Object.assign({},i),{reasons:_to_consumable_array(u).concat(_to_consumable_array(i.reasons))}));(o=u).push.apply(o,_to_consumable_array(i.reasons));var d=s.getVariationForRollout(t,r,n);(a=u).push.apply(a,_to_consumable_array(d.reasons));var f=d.result,v=n.getUserId();return f.variation?(null===(l=s.logger)||void 0===l||l.debug(wn,v,r.key),u.push([wn,v,r.key])):(null===(c=s.logger)||void 0===c||c.debug(On,v,r.key),u.push([On,v,r.key])),hn.of(e,{result:f,reasons:u})})}},{key:"getVariationForFeature",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.resolveVariationsForFeatureList("sync",e,[t],r,n).get()[0]}},{key:"getVariationForFeatureExperiment",value:function(e,t,r,n,i,o){var a;return 0===r.experimentIds.length?(null===(a=this.logger)||void 0===a||a.debug(xn,r.key),hn.of(e,{result:{experiment:null,variation:null,decisionSource:we.FEATURE_TEST},reasons:[[xn,r.key]]})):this.traverseFeatureExperimentList(e,t,r,0,n,[],i,o)}},{key:"traverseFeatureExperimentList",value:function(e,t,r,n,i,o,a,s){var u=this,l=r.experimentIds;if(n>=l.length)return hn.of(e,{result:{experiment:null,variation:null,decisionSource:we.FEATURE_TEST},reasons:o});var c=function(e,t,r){if(e.experimentIdMap.hasOwnProperty(t)){var n=e.experimentIdMap[t];if(n)return n}return null==r||r.error("21",t),null}(t,l[n],this.logger);return c?this.getVariationFromExperimentRule(e,t,r.key,c,i,a,s).then(function(l){var d;if((d=o).push.apply(d,_to_consumable_array(l.reasons)),l.error)return hn.of(e,{error:!0,result:{experiment:c,variation:null,decisionSource:we.FEATURE_TEST},reasons:o});if(!l.result.variationKey)return u.traverseFeatureExperimentList(e,t,r,n+1,i,o,a,s);var f=l.result.variationKey,v=c.variationKeyMap[f];return v||(v=xt(t,r.key,f)),hn.of(e,{result:{cmabUuid:l.result.cmabUuid,experiment:c,variation:v,decisionSource:we.FEATURE_TEST},reasons:o})}):this.traverseFeatureExperimentList(e,t,r,n+1,i,o,a,s)}},{key:"getVariationForRollout",value:function(e,t,r){var n,i,o,a=[];if(!t.rolloutId)return null===(n=this.logger)||void 0===n||n.debug(An,t.key),a.push([An,t.key]),{result:{experiment:null,variation:null,decisionSource:we.ROLLOUT},reasons:a};var s=e.rolloutIdMap[t.rolloutId];if(!s)return null===(i=this.logger)||void 0===i||i.error(Cn,t.rolloutId,t.key),a.push([Cn,t.rolloutId,t.key]),{result:{experiment:null,variation:null,decisionSource:we.ROLLOUT},reasons:a};var u=s.experiments;if(0===u.length)return null===(o=this.logger)||void 0===o||o.error(jn,t.rolloutId),a.push([jn,t.rolloutId]),{result:{experiment:null,variation:null,decisionSource:we.ROLLOUT},reasons:a};for(var l,c,d,f=0;f<u.length;){var v;if(l=this.getVariationFromDeliveryRule(e,t.key,u,f,r),(v=a).push.apply(v,_to_consumable_array(l.reasons)),d=l.result,c=l.skipToEveryoneElse,d)return{result:{experiment:e.experimentIdMap[u[f].id],variation:d,decisionSource:we.ROLLOUT},reasons:a};f=c?u.length-1:f+1}return{result:{experiment:null,variation:null,decisionSource:we.ROLLOUT},reasons:a}}},{key:"getBucketingId",value:function(e,t){var r,n,i=e;return null!=t&&"object"==(void 0===t?"undefined":_type_of(t))&&t.hasOwnProperty(ke)&&("string"==typeof t[ke]?(i=String(t[ke]),null===(r=this.logger)||void 0===r||r.debug("37",i)):null===(n=this.logger)||void 0===n||n.warn("0")),i}},{key:"findValidatedForcedDecision",value:function(e,t,r,n){var i,o,a,s,u,l=[],c=t.getForcedDecision({flagKey:r,ruleKey:n}),d=null,f=t.getUserId();return e&&c&&(u=c.variationKey,(d=xt(e,r,u))?n?(null===(i=this.logger)||void 0===i||i.info(Nn,u,r,n,f),l.push([Nn,u,r,n,f])):(null===(o=this.logger)||void 0===o||o.info(Un,u,r,f),l.push([Un,u,r,f])):n?(null===(a=this.logger)||void 0===a||a.info(Vn,r,n,f),l.push([Vn,r,n,f])):(null===(s=this.logger)||void 0===s||s.info(Kn,r,f),l.push([Kn,r,f]))),{result:d,reasons:l}}},{key:"removeForcedVariation",value:function(e,t,r){var n;if(!e)throw new Te("26");if(!this.forcedVariationMap.hasOwnProperty(e))throw new Te("65",e);delete this.forcedVariationMap[e][t],null===(n=this.logger)||void 0===n||n.debug("41",r,e)}},{key:"setInForcedVariationMap",value:function(e,t,r){var n;this.forcedVariationMap.hasOwnProperty(e)||(this.forcedVariationMap[e]={}),this.forcedVariationMap[e][t]=r,null===(n=this.logger)||void 0===n||n.debug("34",r,t,e)}},{key:"getForcedVariation",value:function(e,t,r){var n,i,o,a,s,u,l,c=[],d=this.forcedVariationMap[r];if(!d)return null===(n=this.logger)||void 0===n||n.debug("32",r),{result:null,reasons:c};try{var f=Ot(e,t);if(!f.hasOwnProperty("id"))return null===(i=this.logger)||void 0===i||i.error(Dn,t),c.push([Dn,t]),{result:null,reasons:c};l=f.id}catch(h){return null===(o=this.logger)||void 0===o||o.error(h),c.push(h.message),{result:null,reasons:c}}var v=d[l];if(!v)return null===(a=this.logger)||void 0===a||a.debug("33",t,r),{result:null,reasons:c};var h,p,g=(p=v,(h=e).variationIdMap.hasOwnProperty(p)?h.variationIdMap[p].key:null);return g?(null===(s=this.logger)||void 0===s||s.debug(Tn,g,t,r),c.push([Tn,g,t,r])):null===(u=this.logger)||void 0===u||u.debug("33",t,r),{result:g,reasons:c}}},{key:"setForcedVariation",value:function(e,t,r,n){var i,o,a,s,u,l,c;if(null!=n&&!T(n))return null===(i=this.logger)||void 0===i||i.error("28"),!1;try{var d=Ot(e,t);if(!d.hasOwnProperty("id"))return null===(o=this.logger)||void 0===o||o.error(Dn,t),!1;c=d.id}catch(e){return null===(a=this.logger)||void 0===a||a.error(e),!1}if(null==n)try{return this.removeForcedVariation(r,c,t),!0}catch(e){return null===(s=this.logger)||void 0===s||s.error(e),!1}var f=function(e,t,r){var n=e.experimentKeyMap[t];return n.variationKeyMap.hasOwnProperty(r)?n.variationKeyMap[r].id:null}(e,t,n);if(!f)return null===(u=this.logger)||void 0===u||u.error("37",n,t),!1;try{return this.setInForcedVariationMap(r,c,f),!0}catch(e){return null===(l=this.logger)||void 0===l||l.error(e),!1}}},{key:"getVariationFromExperimentRule",value:function(e,t,r,n,i,o,a){var s,u,l=[],c=this.findValidatedForcedDecision(t,i,r,n.key);(s=l).push.apply(s,_to_consumable_array(c.reasons));var d=c.result;return d?hn.of(e,{result:{variationKey:d.key},reasons:l}):this.resolveVariation(e,t,n,i,o,a).then(function(t){return(u=l).push.apply(u,_to_consumable_array(t.reasons)),hn.of(e,{error:t.error,result:t.result,reasons:l})})}},{key:"getVariationFromDeliveryRule",value:function(e,t,r,n,i){var o,a,s,u,l,c,d,f=[],v=!1,h=r[n],p=this.findValidatedForcedDecision(e,i,t,h.key);(o=f).push.apply(o,_to_consumable_array(p.reasons));var g=p.result;if(g)return{result:g,reasons:f,skipToEveryoneElse:v};var y,m,_,b,k,E=i.getUserId(),I=i.getAttributes(),S=this.getBucketingId(E,I),w=n===r.length-1,O=w?"Everyone Else":n+1,x=null,P=this.checkIfUserIsInAudience(e,h,"rule",i,O);return(a=f).push.apply(a,_to_consumable_array(P.reasons)),P.result?(null===(u=this.logger)||void 0===u||u.debug(Fn,E,O),f.push([Fn,E,O]),m=this.buildBucketerParams(e,h,S,E),_=Wr(m),(s=f).push.apply(s,_to_consumable_array(_.reasons)),(y=_.result)&&(k=y,x=(b=e).variationIdMap.hasOwnProperty(k)?b.variationIdMap[k]:null),x?(null===(l=this.logger)||void 0===l||l.debug(Rn,E,O),f.push([Rn,E,O])):w||(null===(c=this.logger)||void 0===c||c.debug(Mn,E,O),f.push([Mn,E,O]),v=!0)):(null===(d=this.logger)||void 0===d||d.debug(Pn,E,O),f.push([Pn,E,O])),{result:x,reasons:f,skipToEveryoneElse:v}}}]),e}(),Wn=function(e){function t(e){var r,n,i,o,a,s,u,l,c,d,f,v;_class_call_check(this,t),(r=_call_super(this,t)).cleanupTasks=new Map,r.nextCleanupTaskId=0;var h=e.clientEngine;h||(null===(n=e.logger)||void 0===n||n.info("13",h),h=Ie),r.clientEngine=h,r.clientVersion=e.clientVersion||Se,r.errorNotifier=e.errorNotifier,r.logger=e.logger,r.projectConfigManager=e.projectConfigManager,r.errorReporter=new Nr(r.logger,r.errorNotifier),r.odpManager=e.odpManager,r.vuidManager=e.vuidManager,r.eventProcessor=e.eventProcessor,e.disposable&&(r.projectConfigManager.makeDisposable(),null===(i=r.eventProcessor)||void 0===i||i.makeDisposable(),null===(o=r.odpManager)||void 0===o||o.makeDisposable()),r.logger&&(r.projectConfigManager.setLogger(r.logger.child()),null===(a=r.eventProcessor)||void 0===a||a.setLogger(r.logger.child()),null===(s=r.odpManager)||void 0===s||s.setLogger(r.logger.child()));var p=null!==(u=e.defaultDecideOptions)&&void 0!==u?u:[];Array.isArray(p)||(null===(l=r.logger)||void 0===l||l.debug("15"),p=[]);var g,y,m,_={};if(p.forEach(function(e){var t;Dt[e]?_[e]=!0:null===(t=r.logger)||void 0===t||t.warn("63",e)}),r.defaultDecideOptions=_,r.projectConfigManager=e.projectConfigManager,r.projectConfigManager.onUpdate(function(e){var t;null===(t=r.logger)||void 0===t||t.info("31",e.revision,e.projectId),r.notificationCenter.sendNotifications(ar.OPTIMIZELY_CONFIG_UPDATE,void 0),r.updateOdpSettings()}),r.eventProcessor=e.eventProcessor,null===(c=r.eventProcessor)||void 0===c||c.onDispatch(function(e){r.notificationCenter.sendNotifications(ar.LOG_EVENT,e)}),r.odpManager=e.odpManager,e.userProfileService)try{(function(e){if("object"==(void 0===e?"undefined":_type_of(e))&&null!==e){if("function"!=typeof e.lookup)throw new Te(ze,"Missing function 'lookup'");if("function"!=typeof e.save)throw new Te(ze,"Missing function 'save'");return!0}throw new Te(ze,"Not an object")})(e.userProfileService)&&(g=e.userProfileService,null===(d=r.logger)||void 0===d||d.info("39"))}catch(m){null===(f=r.logger)||void 0===f||f.warn(m)}return r.decisionService=(y={userProfileService:g,userProfileServiceAsync:e.userProfileServiceAsync||void 0,cmabService:e.cmabService,logger:null===(v=r.logger)||void 0===v?void 0:v.child(),UNSTABLE_conditionEvaluators:e.UNSTABLE_conditionEvaluators},new Gn(y)),r.notificationCenter=(m={logger:r.logger,errorNotifier:r.errorNotifier},new Ur(m)),r.start(),r}return _inherits(t,e),_create_class(t,[{key:"start",value:function(){var e,r,n=this;this.isNew()&&(_get(_get_prototype_of(t.prototype),"start",this).call(this),this.state=pt.Starting,this.projectConfigManager.start(),null===(e=this.eventProcessor)||void 0===e||e.start(),null===(r=this.odpManager)||void 0===r||r.start(),Promise.all([this.projectConfigManager.onRunning(),this.eventProcessor?this.eventProcessor.onRunning():Promise.resolve(),this.odpManager?this.odpManager.onRunning():Promise.resolve(),this.vuidManager?this.vuidManager.initialize():Promise.resolve()]).then(function(){var e,t;n.state=pt.Running,n.startPromise.resolve();var r=null===(e=n.vuidManager)||void 0===e?void 0:e.getVuid();r&&(null===(t=n.odpManager)||void 0===t||t.setVuid(r))}).catch(function(e){n.state=pt.Failed,n.errorReporter.report(e),n.startPromise.reject(e)}))}},{key:"getProjectConfig",value:function(){return this.projectConfigManager.getConfig()||null}},{key:"activate",value:function(e,t,r){var n,i,o;try{var a=this.getProjectConfig();if(!a)return this.errorReporter.report(He,"activate"),null;if(!this.validateInputs({experiment_key:e,user_id:t},r))return this.notActivatingExperiment(e,t);try{var s=this.getVariation(e,t,r);if(null===s)return this.notActivatingExperiment(e,t);if(wt(o=a,e)!==_t)return null===(n=this.logger)||void 0===n||n.debug("27",e),s;var u=Ot(a,e),l={experiment:u,variation:u.variationKeyMap[s],decisionSource:we.EXPERIMENT};return this.sendImpressionEvent(l,"",t,!0,r),s}catch(r){return null===(i=this.logger)||void 0===i||i.info("19",t,e),this.errorReporter.report(r),null}}catch(o){return this.errorReporter.report(o),null}}},{key:"sendImpressionEvent",value:function(e,t,r,n,i){var o;if(this.eventProcessor){var a=this.getProjectConfig();if(a){var s=function(e){var t,r,n=e.configObj,i=e.decisionObj,o=e.userId,a=e.flagKey,s=e.enabled,u=e.userAttributes,l=e.clientEngine,c=e.clientVersion,d=i.decisionSource,f=E(i),v=null!==(r=null===(t=i.experiment)||void 0===t?void 0:t.id)&&void 0!==r?r:null,h=I(i),p=function(e){var t,r;return null!==(r=null===(t=e.variation)||void 0===t?void 0:t.id)&&void 0!==r?r:null}(i),g=i.cmabUuid,y=null!==v?d===we.HOLDOUT?"":function(e,t){var r=e.experimentIdMap[t];if(!r)throw new Te("21",t);return r.layerId}(n,v):null;return Object.assign(Object.assign({},cr({configObj:n,userId:o,userAttributes:u,clientEngine:l,clientVersion:c,type:"impression"})),{layer:{id:y},experiment:{id:v,key:f},variation:{id:p,key:h},ruleKey:f,flagKey:a,ruleType:d,enabled:s,cmabUuid:g})}({decisionObj:e,flagKey:t,enabled:n,userId:r,userAttributes:i,clientEngine:this.clientEngine,clientVersion:this.clientVersion,configObj:a});this.eventProcessor.process(s);var u,l=k([s]),c={experiment:null,holdout:null,userId:r,attributes:i,variation:e.variation,logEvent:l};e.experiment&&(void 0!==(u=e.experiment).status&&Array.isArray(u.includedFlags)&&Array.isArray(u.excludedFlags)?c.holdout=e.experiment:c.experiment=e.experiment),this.notificationCenter.sendNotifications(ar.ACTIVATE,c)}}else null===(o=this.logger)||void 0===o||o.error("33")}},{key:"track",value:function(e,t,r,n){var i,o,a,s,u,l,c;try{if(!this.eventProcessor)return void(null===(i=this.logger)||void 0===i||i.error("33"));var d=this.getProjectConfig();if(!d)return void this.errorReporter.report(He,"track");if(!this.validateInputs({user_id:t,event_key:e},r,n))return;if(c=e,!(l=d).eventKeyMap.hasOwnProperty(c))return null===(o=this.logger)||void 0===o||o.warn("7",e),void(null===(a=this.logger)||void 0===a||a.warn("31",t));var f=function(e,t){var r,n,i=e.configObj,o=e.userId,a=e.userAttributes,s=e.clientEngine,u=e.clientVersion,l=e.eventKey,c=e.eventTags,d=(r=l,(n=i.eventKeyMap[r])?n.id:null),f=c?function(e,t){var r=e.revenue;if(null==r)return null;var n="string"==typeof r?parseInt(r):Math.trunc(r);return isFinite(n)?(null==t||t.info("21",n),n):(null==t||t.info("6",r),null)}(c,t):null,v=c?function(e,t){var r=e.value;if(null==r)return null;var n="string"==typeof r?parseFloat(r):r;return isFinite(n)?(null==t||t.info("20",n),n):(null==t||t.info("7",r),null)}(c,t):null;return Object.assign(Object.assign({},cr({configObj:i,userId:o,userAttributes:a,clientEngine:s,clientVersion:u,type:"conversion"})),{event:{id:d,key:l},revenue:f,value:v,tags:c})}({eventKey:e,eventTags:n=this.filterEmptyValues(n),userId:t,userAttributes:r,clientEngine:this.clientEngine,clientVersion:this.clientVersion,configObj:d},this.logger);null===(s=this.logger)||void 0===s||s.info("29",e,t),this.eventProcessor.process(f);var v=k([f]);this.notificationCenter.sendNotifications(ar.TRACK,{eventKey:e,userId:t,attributes:r,eventTags:n,logEvent:v})}catch(l){this.errorReporter.report(l),null===(u=this.logger)||void 0===u||u.error("31",t)}}},{key:"getVariation",value:function(e,t,r){var n,i,o;try{var a=this.getProjectConfig();if(!a)return this.errorReporter.report(He,"getVariation"),null;try{if(!this.validateInputs({experiment_key:e,user_id:t},r))return null;var s=a.experimentKeyMap[e];if(!s||s.isRollout)return null===(n=this.logger)||void 0===n||n.debug("16",e),null;var u=this.decisionService.getVariation(a,s,this.createInternalUserContext(t,r)).result,l=(i=a,o=s.id,i.experimentFeatureMap.hasOwnProperty(o)?or.FEATURE_TEST:or.AB_TEST);return this.notificationCenter.sendNotifications(ar.DECISION,{type:l,userId:t,attributes:r||{},decisionInfo:{experimentKey:e,variationKey:u}}),u}catch(e){return this.errorReporter.report(e),null}}catch(e){return this.errorReporter.report(e),null}}},{key:"setForcedVariation",value:function(e,t,r){if(!this.validateInputs({experiment_key:e,user_id:t}))return!1;var n=this.getProjectConfig();if(!n)return!1;try{return this.decisionService.setForcedVariation(n,e,t,r)}catch(e){return this.errorReporter.report(e),!1}}},{key:"getForcedVariation",value:function(e,t){if(!this.validateInputs({experiment_key:e,user_id:t}))return null;var r=this.getProjectConfig();if(!r)return null;try{return this.decisionService.getForcedVariation(r,e,t).result}catch(e){return this.errorReporter.report(e),null}}},{key:"validateInputs",value:function(e,t,r){try{if(e.hasOwnProperty("user_id")){var n=e.user_id;if("string"!=typeof n||null===n||"undefined"===n)throw new Te("24","user_id");delete e.user_id}return Object.keys(e).forEach(function(t){if(!T(e[t]))throw new Te("24",t)}),t&&function(e){if("object"!=(void 0===e?"undefined":_type_of(e))||Array.isArray(e)||null===e)throw new Te("13");Object.keys(e).forEach(function(t){if(void 0===e[t])throw new Te("56",t)})}(t),r&&function(e){if("object"!=(void 0===e?"undefined":_type_of(e))||Array.isArray(e)||null===e)throw new Te("20")}(r),!0}catch(e){return this.errorReporter.report(e),!1}}},{key:"notActivatingExperiment",value:function(e,t){var r;return null===(r=this.logger)||void 0===r||r.info("19",t,e),null}},{key:"filterEmptyValues",value:function(e){for(var t in e){var r=t;!e.hasOwnProperty(r)||null!==e[r]&&void 0!==e[r]||delete e[r]}return e}},{key:"isFeatureEnabled",value:function(e,t,r){var n,i;try{var o=this.getProjectConfig();if(!o)return this.errorReporter.report(He,"isFeatureEnabled"),!1;if(!this.validateInputs({feature_key:e,user_id:t},r))return!1;var a=Pt(o,e,this.logger);if(!a)return!1;var s={},u=this.createInternalUserContext(t,r),l=this.decisionService.getVariationForFeature(o,a,u).result,c=l.decisionSource,d=E(l),f=I(l),v=S(l);c!==we.FEATURE_TEST&&c!==we.HOLDOUT||(s={experimentKey:d,variationKey:f}),(c===we.FEATURE_TEST||c===we.HOLDOUT||c===we.ROLLOUT&&Mt(o))&&this.sendImpressionEvent(l,a.key,t,v,r),!0===v?null===(n=this.logger)||void 0===n||n.info("8",e,t):(null===(i=this.logger)||void 0===i||i.info("9",e,t),v=!1);var h={featureKey:e,featureEnabled:v,source:l.decisionSource,sourceInfo:s};return this.notificationCenter.sendNotifications(ar.DECISION,{type:or.FEATURE,userId:t,attributes:r||{},decisionInfo:h}),v}catch(e){return this.errorReporter.report(e),!1}}},{key:"getEnabledFeatures",value:function(e,t){var r=this;try{var n=[],i=this.getProjectConfig();return i?this.validateInputs({user_id:e})?(v(i.featureKeyMap).forEach(function(i){r.isFeatureEnabled(i.key,e,t)&&n.push(i.key)}),n):n:(this.errorReporter.report(He,"getEnabledFeatures"),n)}catch(e){return this.errorReporter.report(e),[]}}},{key:"getFeatureVariable",value:function(e,t,r,n){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,null,r,n):(this.errorReporter.report(He,"getFeatureVariable"),null)}catch(e){return this.errorReporter.report(e),null}}},{key:"getFeatureVariableForType",value:function(e,t,r,n,i){var o;if(!this.validateInputs({feature_key:e,variable_key:t,user_id:n},i))return null;var a=this.getProjectConfig();if(!a)return null;var s=Pt(a,e,this.logger);if(!s)return null;var u,l,c,d,f,v=(u=a,l=e,c=t,d=this.logger,(f=u.featureKeyMap[l])?f.variableKeyMap[c]||(null==d||d.error("68",c,l),null):(null==d||d.error(Be,l),null));if(!v)return null;if(r&&v.type!==r)return null===(o=this.logger)||void 0===o||o.warn("69",r,v.type),null;var h=this.createInternalUserContext(n,i),p=this.decisionService.getVariationForFeature(a,s,h).result,g=S(p),y=this.getFeatureVariableValueFromVariation(e,g,p.variation,v,n),m={};return p.decisionSource===we.FEATURE_TEST&&null!==p.experiment&&null!==p.variation&&(m={experimentKey:p.experiment.key,variationKey:p.variation.key}),this.notificationCenter.sendNotifications(ar.DECISION,{type:or.FEATURE_VARIABLE,userId:n,attributes:i||{},decisionInfo:{featureKey:e,featureEnabled:g,source:p.decisionSource,variableKey:t,variableValue:y,variableType:v.type,sourceInfo:m}}),y}},{key:"getFeatureVariableValueFromVariation",value:function(e,t,r,n,i){var o,a,s,u,l=this.getProjectConfig();if(!l)return null;var c=n.defaultValue;if(null!==r){var d=function(e,t,r,n){if(!t||!r)return null;if(!e.variationVariableUsageMap.hasOwnProperty(r.id))return null==n||n.error("70",r.id),null;var i=e.variationVariableUsageMap[r.id][t.id];return i?i.value:null}(l,n,r,this.logger);null!==d?t?(c=d,null===(o=this.logger)||void 0===o||o.info("36",c,n.key,e)):null===(a=this.logger)||void 0===a||a.info("10",e,i,c):null===(s=this.logger)||void 0===s||s.info("40",n.key,r.key)}else null===(u=this.logger)||void 0===u||u.info("35",i,n.key,e);return function(e,t,r){var n;switch(t){case xe:"true"!==e&&"false"!==e?(null==r||r.error(Je,e,t),n=null):n="true"===e;break;case Me:n=parseInt(e,10),isNaN(n)&&(null==r||r.error(Je,e,t),n=null);break;case Pe:n=parseFloat(e),isNaN(n)&&(null==r||r.error(Je,e,t),n=null);break;case Ae:try{n=JSON.parse(e)}catch(i){null==r||r.error(Je,e,t),n=null}break;default:n=e}return n}(c,n.type,this.logger)}},{key:"getFeatureVariableBoolean",value:function(e,t,r,n){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,xe,r,n):(this.errorReporter.report(He,"getFeatureVariableBoolean"),null)}catch(e){return this.errorReporter.report(e),null}}},{key:"getFeatureVariableDouble",value:function(e,t,r,n){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,Pe,r,n):(this.errorReporter.report(He,"getFeatureVariableDouble"),null)}catch(e){return this.errorReporter.report(e),null}}},{key:"getFeatureVariableInteger",value:function(e,t,r,n){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,Me,r,n):(this.errorReporter.report(He,"getFeatureVariableInteger"),null)}catch(e){return this.errorReporter.report(e),null}}},{key:"getFeatureVariableString",value:function(e,t,r,n){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,Re,r,n):(this.errorReporter.report(He,"getFeatureVariableString"),null)}catch(e){return this.errorReporter.report(e),null}}},{key:"getFeatureVariableJSON",value:function(e,t,r,n){try{return this.getProjectConfig()?this.getFeatureVariableForType(e,t,Ae,r,n):(this.errorReporter.report(He,"getFeatureVariableJSON"),null)}catch(e){return this.errorReporter.report(e),null}}},{key:"getAllFeatureVariables",value:function(e,t,r){var n=this;try{var i=this.getProjectConfig();if(!i)return this.errorReporter.report(He,"getAllFeatureVariables"),null;if(!this.validateInputs({feature_key:e,user_id:t},r))return null;var o=Pt(i,e,this.logger);if(!o)return null;var a=this.createInternalUserContext(t,r),s=this.decisionService.getVariationForFeature(i,o,a).result,u=S(s),l={};o.variables.forEach(function(r){l[r.key]=n.getFeatureVariableValueFromVariation(e,u,s.variation,r,t)});var c={};return s.decisionSource===we.FEATURE_TEST&&null!==s.experiment&&null!==s.variation&&(c={experimentKey:s.experiment.key,variationKey:s.variation.key}),this.notificationCenter.sendNotifications(ar.DECISION,{type:or.ALL_FEATURE_VARIABLES,userId:t,attributes:r||{},decisionInfo:{featureKey:e,featureEnabled:u,source:s.decisionSource,variableValues:l,sourceInfo:c}}),l}catch(e){return this.errorReporter.report(e),null}}},{key:"getOptimizelyConfig",value:function(){try{return this.getProjectConfig()&&this.projectConfigManager.getOptimizelyConfig()||null}catch(e){return this.errorReporter.report(e),null}}},{key:"flushImmediately",value:function(){var e=[];return this.isRunning()?(this.eventProcessor&&e.push(this.eventProcessor.flushImmediately()),this.odpManager&&e.push(this.odpManager.flushImmediately()),Promise.all(e)):Promise.resolve()}},{key:"close",value:function(){return this.stop(),this.onTerminated()}},{key:"stop",value:function(){var e,t,r=this;this.isDone()||(this.isRunning()||this.startPromise.reject(new Error(g(Ct,"Client"))),this.state=pt.Stopping,this.projectConfigManager.stop(),null===(e=this.eventProcessor)||void 0===e||e.stop(),null===(t=this.odpManager)||void 0===t||t.stop(),this.notificationCenter.clearAllNotificationListeners(),this.cleanupTasks.forEach(function(e){return e()}),Promise.all([this.projectConfigManager.onTerminated(),this.eventProcessor?this.eventProcessor.onTerminated():Promise.resolve(),this.odpManager?this.odpManager.onTerminated():Promise.resolve()]).then(function(){r.state=pt.Terminated,r.stopPromise.resolve()}).catch(function(e){r.errorReporter.report(e),r.state=pt.Failed,r.stopPromise.reject(e)}))}},{key:"onReady",value:function(e){var t,r=this;"object"==(void 0===e?"undefined":_type_of(e))&&null!==e&&void 0!==e.timeout&&(t=e.timeout),c(t)||(t=3e4);var n=m(),i=this.nextCleanupTaskId++,o=setTimeout(function(){r.cleanupTasks.delete(i),n.reject(new Error(g("onReady timeout expired after %s ms",t)))},t);return this.cleanupTasks.set(i,function(){clearTimeout(o),n.reject(new Error("Instance closed"))}),Promise.race([this.onRunning().then(function(){clearTimeout(o),r.cleanupTasks.delete(i)}),n])}},{key:"createUserContext",value:function(e,t){var r,n=this,i=null!=e?e:null===(r=this.vuidManager)||void 0===r?void 0:r.getVuid();if(void 0===i||!this.validateInputs({user_id:i}))throw new Error("Invalid identifier");if(!this.validateInputs({},t))throw new Error("Invalid attributes");var o=new Kr({optimizely:this,userId:i,attributes:t});return this.onRunning().then(function(){n.odpManager&&n.isOdpIntegrated()&&n.odpManager.identifyUser(i)}).catch(function(){}),o}},{key:"createInternalUserContext",value:function(e,t){return new Kr({optimizely:this,userId:e,attributes:t})}},{key:"decide",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return this.getProjectConfig()?this.decideForKeys(e,[t],r,!0)[t]:(this.errorReporter.report(He,"decide"),w(t,e,[Ce]))}},{key:"decideAsync",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return _(this,void 0,void 0,function(){return _ts_generator(this,function(n){switch(n.label){case 0:return this.getProjectConfig()?[4,this.decideForKeysAsync(e,[t],r,!0)]:[2,(this.errorReporter.report(He,"decide"),w(t,e,[Ce]))];case 1:return[2,n.sent()[t]]}})})}},{key:"getAllDecideOptions",value:function(e){var t,r=this,n=Object.assign({},this.defaultDecideOptions);return Array.isArray(e)?e.forEach(function(e){var t;Dt[e]?n[e]=!0:null===(t=r.logger)||void 0===t||t.warn("63",e)}):null===(t=this.logger)||void 0===t||t.debug("14"),n}},{key:"generateDecision",value:function(e,t,r,n,i,o){var a,s,u,l,c,d,f,v,h,p,y=this,m=e.getUserId(),_=e.getAttributes(),b=o.featureKeyMap[t],k=r.decisionSource,E=null!==(s=null===(a=r.experiment)||void 0===a?void 0:a.key)&&void 0!==s?s:null,I=null!==(l=null===(u=r.experiment)||void 0===u?void 0:u.id)&&void 0!==l?l:null,w=null!==(d=null===(c=r.variation)||void 0===c?void 0:c.key)&&void 0!==d?d:null,O=null!==(v=null===(f=r.variation)||void 0===f?void 0:f.id)&&void 0!==v?v:null,x=S(r),P={},M=!1;x?null===(h=this.logger)||void 0===h||h.info("8",t,m):null===(p=this.logger)||void 0===p||p.info("9",t,m),i[Dt.EXCLUDE_VARIABLES]||b.variables.forEach(function(e){P[e.key]=y.getFeatureVariableValueFromVariation(t,x,r.variation,e,m)}),!i[Dt.DISABLE_DECISION_EVENT]&&(k===we.FEATURE_TEST||k===we.HOLDOUT||k===we.ROLLOUT&&Mt(o))&&(this.sendImpressionEvent(r,t,m,x,_),M=!0);var R=[];i[Dt.INCLUDE_REASONS]&&(R=n.map(function(e){return g.apply(void 0,[e[0]].concat(_to_consumable_array(e.slice(1))))}));var A={flagKey:t,enabled:x,variationKey:w,ruleKey:E,variables:P,reasons:R,decisionEventDispatched:M,experimentId:I,variationId:O};return this.notificationCenter.sendNotifications(ar.DECISION,{type:or.FLAG,userId:m,attributes:_,decisionInfo:A}),{variationKey:w,enabled:x,variables:P,ruleKey:E,flagKey:t,userContext:e,reasons:R}}},{key:"decideForKeys",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3?arguments[3]:void 0;return this.getDecisionForKeys("sync",e,t,r,n).get()}},{key:"decideForKeysAsync",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3?arguments[3]:void 0;return this.getDecisionForKeys("async",e,t,r,n).get()}},{key:"getDecisionForKeys",value:function(e,t,r){var n,i=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=arguments.length>4?arguments[4]:void 0,s={},u={},l={},c=this.getProjectConfig();if(!c)return this.errorReporter.report(He,"decideForKeys"),hn.of(e,s);if(0===r.length)return hn.of(e,s);var d=this.getAllDecideOptions(o);a&&delete d[Dt.ENABLED_FLAGS_ONLY];var f=[],v=!0,h=!1,p=void 0;try{for(var y,m=r[Symbol.iterator]();!(v=(y=m.next()).done);v=!0){var _=y.value,b=c.featureKeyMap[_];b?f.push(b):(null===(n=this.logger)||void 0===n||n.error(Be,_),s[_]=w(_,t,[g('No flag was found for key "%s".',_)]))}}catch(e){h=!0,p=e}finally{try{v||null==m.return||m.return()}finally{if(h)throw p}}return this.decisionService.resolveVariationsForFeatureList(e,c,f,t,d).then(function(r){for(var n=0;n<f.length;n++){var o=f[n].key,a=r[n];a.error?s[o]=w(o,t,a.reasons.map(function(e){return g.apply(void 0,[e[0]].concat(_to_consumable_array(e.slice(1))))})):(u[o]=a.result,l[o]=a.reasons)}var v=!0,h=!1,p=void 0;try{for(var y,m=f[Symbol.iterator]();!(v=(y=m.next()).done);v=!0){var _=y.value.key;if(!s[_]){var b=i.generateDecision(t,_,u[_],l[_],d,c);d[Dt.ENABLED_FLAGS_ONLY]&&!b.enabled||(s[_]=b)}}}catch(e){h=!0,p=e}finally{try{v||null==m.return||m.return()}finally{if(h)throw p}}return hn.of(e,s)})}},{key:"decideAll",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=this.getProjectConfig();if(!r)return this.errorReporter.report(He,"decideAll"),{};var n=Object.keys(r.featureKeyMap);return this.decideForKeys(e,n,t)}},{key:"decideAllAsync",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return _(this,void 0,void 0,function(){var r,n,i;return _ts_generator(this,function(o){return r={},(n=this.getProjectConfig())?(i=Object.keys(n.featureKeyMap),[2,this.decideForKeysAsync(e,i,t)]):[2,(this.errorReporter.report(He,"decideAll"),r)]})})}},{key:"updateOdpSettings",value:function(){var e=this.getProjectConfig();e&&this.odpManager&&this.odpManager.updateConfig(e.odpIntegrationConfig)}},{key:"sendOdpEvent",value:function(e,t,r,n){var i,o;if(this.odpManager)try{var a=new wr(t||"",e,r,n);this.odpManager.sendEvent(a)}catch(e){null===(o=this.logger)||void 0===o||o.error("40",e)}else null===(i=this.logger)||void 0===i||i.error("42","sendOdpEvent")}},{key:"isOdpIntegrated",value:function(){var e,t,r;return null!==(r=null===(t=null===(e=this.getProjectConfig())||void 0===e?void 0:e.odpIntegrationConfig)||void 0===t?void 0:t.integrated)&&void 0!==r&&r}},{key:"fetchQualifiedSegments",value:function(e,t){var r;return _(this,void 0,void 0,function(){var n;return _ts_generator(this,function(i){switch(i.label){case 0:return this.odpManager?[4,this.odpManager.fetchQualifiedSegments(e,t)]:[3,2];case 1:return n=i.sent(),[3,3];case 2:null===(r=this.logger)||void 0===r||r.error("42","fetchQualifiedSegments"),n=null,i.label=3;case 3:return[2,n]}})})}},{key:"getVuid",value:function(){var e;if(this.vuidManager)return this.vuidManager.getVuid();null===(e=this.logger)||void 0===e||e.error("54")}}]),t}(Tt),Qn=function(){function e(t){_class_call_check(this,e),this.predictionEndpointTemplate="https://prediction.cmab.optimizely.com/predict/%s",this.requestHandler=t.requestHandler,this.retryConfig=t.retryConfig,t.predictionEndpointTemplate&&(this.predictionEndpointTemplate=t.predictionEndpointTemplate)}return _create_class(e,[{key:"fetchDecision",value:function(e,t,r,n){var i,o;return _(this,void 0,void 0,function(){var a,s,u,l;return _ts_generator(this,function(c){switch(c.label){case 0:return a=this,s=g(this.predictionEndpointTemplate,e),u=Object.keys(r).map(function(e){return{id:e,value:r[e],type:"custom_attribute"}}),l={instances:[{visitorId:t,experimentId:e,attributes:u,cmabUUID:n}]},[4,this.retryConfig?nr(function(){return a.doFetch(s,JSON.stringify(l))},null===(o=(i=this.retryConfig).backoffProvider)||void 0===o?void 0:o.call(i),this.retryConfig.maxRetries).result:this.doFetch(s,JSON.stringify(l))];case 1:return[2,c.sent()]}})})}},{key:"doFetch",value:function(e,t){return _(this,void 0,void 0,function(){var r,n;return _ts_generator(this,function(i){switch(i.label){case 0:return[4,this.requestHandler.makeRequest(e,{"Content-Type":"application/json"},"POST",t).responsePromise];case 1:return r=i.sent(),Ut(r.statusCode)?(n=JSON.parse(r.body),[2,this.validateResponse(n)?String(n.predictions[0].variation_id):Promise.reject(new Te("Invalid CMAB fetch response"))]):[2,Promise.reject(new Te("CMAB decision fetch failed with status: %s",r.statusCode))]}})})}},{key:"validateResponse",value:function(e){return e.predictions&&e.predictions.length>0&&e.predictions[0].variation_id}}]),e}(),$n=function(){function e(t){var r;_class_call_check(this,e),this.serializers=Array.from({length:1e3},function(){return new vr}),this.cmabCache=t.cmabCache,this.cmabClient=t.cmabClient,this.logger=t.logger,null===(r=this.logger)||void 0===r||r.setName("CmabService")}return _create_class(e,[{key:"getSerializerIndex",value:function(e,t){var r=this.getCacheKey(e,t),n=pe.default.v3(r);return Math.abs(n)%1e3}},{key:"getDecision",value:function(e,t,r,n){return _(this,void 0,void 0,function(){var i,o;return _ts_generator(this,function(a){return i=this,o=this.getSerializerIndex(t.getUserId(),r),[2,this.serializers[o].run(function(){return i.getDecisionInternal(e,t,r,n)})]})})}},{key:"getDecisionInternal",value:function(e,t,r,n){var i,o,a,s,u,l;return _(this,void 0,void 0,function(){var c,d,f,v,h,p,g;return _ts_generator(this,function(y){switch(y.label){case 0:return c=t.getUserId(),d=this.filterAttributes(e,t,r),n[Dt.IGNORE_CMAB_CACHE]?[2,(null===(i=this.logger)||void 0===i||i.debug("11",c,r),this.fetchDecision(r,c,d))]:(n[Dt.RESET_CMAB_CACHE]&&(null===(o=this.logger)||void 0===o||o.debug("22",c,r),this.cmabCache.reset()),f=this.getCacheKey(c,r),n[Dt.INVALIDATE_USER_CMAB_CACHE]&&(null===(a=this.logger)||void 0===a||a.debug("12",c,r),this.cmabCache.remove(f)),[4,this.cmabCache.lookup(f)]);case 1:if(v=y.sent(),h=JSON.stringify(d,Object.keys(d).sort()),p=String(pe.default.v3(h)),v){if(v.attributesHash===p)return[2,(null===(s=this.logger)||void 0===s||s.debug("3",c,r),{variationId:v.variationId,cmabUuid:v.cmabUuid})];null===(u=this.logger)||void 0===u||u.debug("2",c,r),this.cmabCache.remove(f)}else null===(l=this.logger)||void 0===l||l.debug("4",c,r);return[4,this.fetchDecision(r,c,d)];case 2:return g=y.sent(),[2,(this.cmabCache.save(f,{attributesHash:p,variationId:g.variationId,cmabUuid:g.cmabUuid}),g)]}})})}},{key:"fetchDecision",value:function(e,t,r){return _(this,void 0,void 0,function(){var n,i;return _ts_generator(this,function(o){switch(o.label){case 0:return n=ve(),i={},[4,this.cmabClient.fetchDecision(e,t,r,n)];case 1:return[2,(i.variationId=o.sent(),i.cmabUuid=n,i)]}})})}},{key:"filterAttributes",value:function(e,t,r){var n={},i=t.getAttributes(),o=e.experimentIdMap[r];return o&&o.cmab?(o.cmab.attributeIds.forEach(function(t){var r=e.attributeIdMap[t];i.hasOwnProperty(r.key)&&(n[r.key]=i[r.key])}),n):n}},{key:"getCacheKey",value:function(e,t){return"".concat(e.length,"-").concat(e,"-").concat(t)}}]),e}(),Yn=function(e){var t,r,n,i,o,a,s=e.clientEngine,u=e.clientVersion,l=e.jsonSchemaValidator,c=e.userProfileService,d=e.userProfileServiceAsync,f=e.defaultDecideOptions,v=e.disposable,h=e.requestHandler,p=function(e){if(!e||"object"!=(void 0===e?"undefined":_type_of(e)))throw new Error(zt);if(!e[Ht])throw new Error(zt);return e[Ht]}(e.projectConfigManager),g=function(e){if(e&&"object"==(void 0===e?"undefined":_type_of(e)))return e[gr]}(e.eventProcessor),y=function(e){if(e&&"object"==(void 0===e?"undefined":_type_of(e)))return e[Dr]}(e.odpManager),m=function(e){if(e&&"object"==(void 0===e?"undefined":_type_of(e)))return e[Fr]}(e.vuidManager),_=function(e){if(e&&"object"==(void 0===e?"undefined":_type_of(e)))return e[dt]}(e.errorNotifier),b=function(e){if(e&&"object"==(void 0===e?"undefined":_type_of(e)))return e[ut]}(e.logger),k=new Qn({requestHandler:h,retryConfig:{maxRetries:1,backoffProvider:function(){return new Lt(100)}},predictionEndpointTemplate:null===(t=e.cmab)||void 0===t?void 0:t.predictionEndpointTemplate}),E=(null===(r=e.cmab)||void 0===r?void 0:r.cache)?(n=e.cmab.cache,i=function(e){return JSON.parse(e)},o=function(e,t){if(void 0!==e)return t(e)},a={lookup:function(e){return"sync"===n.operation?o(n.lookup(e),i):n.lookup(e).then(function(e){return o(e,i)})},save:function(e,t){return n.save(e,function(e){return JSON.stringify(e)}(t))}},Object.setPrototypeOf(a,n),a):function(){var t,r,n=(null===(t=e.cmab)||void 0===t?void 0:t.cacheSize)||1e4,i=(null===(r=e.cmab)||void 0===r?void 0:r.cacheTtl)||18e5;return new _r(n,i)}(),I={cmabService:new $n({cmabClient:k,cmabCache:E,logger:null==b?void 0:b.child()}),clientEngine:s||Ee,clientVersion:u||Se,jsonSchemaValidator:l,userProfileService:c,userProfileServiceAsync:d,defaultDecideOptions:f,disposable:v,logger:b,errorNotifier:_,projectConfigManager:p,eventProcessor:g,odpManager:y,vuidManager:m,UNSTABLE_conditionEvaluators:e.UNSTABLE_conditionEvaluators};return new Wn(I)},Xn=function(){function e(){var t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};_class_call_check(this,e),this.logger=r.logger,this.timeout=null!==(t=r.timeout)&&void 0!==t?t:6e4}return _create_class(e,[{key:"makeRequest",value:function(e,t,r,n){var i=me.default.parse(e);if("https:"!==i.protocol&&"http:"!==i.protocol)return{responsePromise:Promise.reject(new Te("64",i.protocol)),abort:function(){}};var o=("https:"===i.protocol?ye.default:ge.default).request(Object.assign(Object.assign({},this.getRequestOptionsFromUrl(i)),{method:r,headers:Object.assign(Object.assign({},t),{"accept-encoding":"gzip,deflate","content-length":String((null==n?void 0:n.length)||0)}),timeout:this.timeout})),a=this.getAbortableRequestFromRequest(o);return n&&o.write(n),o.end(),a}},{key:"getRequestOptionsFromUrl",value:function(e){return{hostname:e.hostname,path:e.path,port:e.port,protocol:e.protocol}}},{key:"createHeadersFromNodeIncomingMessage",value:function(e){var t={};return Object.keys(e.headers).forEach(function(r){var n=e.headers[r];"string"==typeof n?t[r]=n:void 0===n||n.length>0&&(t[r]=n[0])}),t}},{key:"getAbortableRequestFromRequest",value:function(e){var t=this,r=!1;return{abort:function(){r=!0,e.destroy()},responsePromise:new Promise(function(n,i){e.on("timeout",function(){r=!0,e.destroy(),i(new Te("48"))}),e.on("error",function(e){_instanceof(e,Error)?i(e):i("string"==typeof e?new Error(e):new Te("47"))}),e.once("response",function(e){if(!r){var o=(0,_e.default)(e);o.setEncoding("utf8");var a="";o.on("data",function(e){r||(a+=e)}),o.on("end",function(){r||(e.statusCode?n({statusCode:e.statusCode,body:a,headers:t.createHeadersFromNodeIncomingMessage(e)}):i(new Te("36")))})}})})}}}]),e}(),Zn=new(function(){function e(t){_class_call_check(this,e),this.requestHandler=t}return _create_class(e,[{key:"dispatchEvent",value:function(e){return _(this,void 0,void 0,function(){var t;return _ts_generator(this,function(r){return"POST"!==e.httpVerb?[2,Promise.reject(new Te("44"))]:(t=JSON.stringify(e.params),[2,this.requestHandler.makeRequest(e.url,{"content-type":"application/json"},"POST",t).responsePromise])})})}}]),e}())(new Xn),ei=function(e){var t,r={autoUpdate:!0,requestHandler:new Xn};return t=Object.assign(Object.assign({},r),e),_define_property({},Ht,function(e){var t;e.cache&&Bt(e.cache);var r=null!==(t=e.updateInterval)&&void 0!==t?t:3e5,n=new Kt(1e3,r,500),i=new qt(r,n),o=[];r<3e4&&o.push({level:se.Warn,message:"Polling intervals below 30 seconds are not recommended.",params:[]});var a={sdkKey:e.sdkKey,autoUpdate:e.autoUpdate,urlTemplate:e.urlTemplate,datafileAccessToken:e.datafileAccessToken,customHeaders:e.customHeaders,requestHandler:e.requestHandler,cache:e.cache,repeater:i,startupLogs:o},s=new Vt(a);return new Nt({datafile:e.datafile,datafileManager:s,jsonSchemaValidator:e.jsonSchemaValidator})}(t))},ti=function(){var e;return mr((yr(e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Zn),new pr(e)))},ri=function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=r.eventStore?"async"===(t=r.eventStore).operation?new Xt(t,hr,JSON.parse,JSON.stringify):new Yt(t,hr,JSON.parse,JSON.stringify):void 0;return function(e){return mr(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:fr,r=e.eventDispatcher,n=e.closingEventDispatcher,i=e.retryOptions,o=e.eventStore;yr(r),n&&yr(n),o&&Bt(o);var a=i?{maxRetries:i.maxRetries,backoffProvider:function(){var e,t,r=null!==(e=null==i?void 0:i.minBackoff)&&void 0!==e?e:200,n=null!==(t=null==i?void 0:i.maxBackoff)&&void 0!==t?t:1e3;return new Kt(r,n,50)}}:void 0,s=[],u=e.defaultFlushInterval,l=e.defaultBatchSize,c=u;void 0===e.flushInterval||e.flushInterval<=0?s.push({level:se.Warn,message:"Invalid flushInterval %s, defaulting to %s",params:[e.flushInterval,u]}):c=e.flushInterval;var d=l;return void 0===e.batchSize||e.batchSize<=0?s.push({level:se.Warn,message:"Invalid batchSize %s, defaulting to %s",params:[e.batchSize,l]}):d=e.batchSize,new t({eventDispatcher:r,closingEventDispatcher:n,dispatchRepeater:new qt(c),failedEventRepeater:e.failedEventRetryInterval?new qt(e.failedEventRetryInterval):void 0,retryConfig:a,batchSize:d,eventStore:o,startupLogs:s})}(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:fr))}({eventDispatcher:r.eventDispatcher||Zn,closingEventDispatcher:r.closingEventDispatcher,flushInterval:r.flushInterval,batchSize:r.batchSize,defaultFlushInterval:3e4,defaultBatchSize:10,retryOptions:{maxRetries:null!==(e=r.maxRetries)&&void 0!==e?e:2},failedEventRetryInterval:n?2e4:void 0,eventStore:n})},ni=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=new Xn({timeout:t.segmentsApiTimeout||1e4}),n=new Xn({timeout:t.eventApiTimeout||1e4});return e=Object.assign(Object.assign({},t),{segmentRequestHandler:r,eventRequestHandler:n,eventBatchSize:t.eventBatchSize||10,eventFlushInterval:t.eventFlushInterval||1e3,eventRequestGenerator:kr}),_define_property({},Dr,Tr(e))},ii=function(){return _define_property({},Fr,void 0)},oi=function(e){var t=Object.assign(Object.assign({},e),{clientEngine:e.clientEngine||Ie,requestHandler:new Xn});return Yn(t)},ai=function(){},si=Ie,ui=["node"],li={},ci={type:"optimizely",config:{},init:function(e){return _async_to_generator(function(e){var t,r,n,i,o,a,s,u,l,c,d,f,v;return _ts_generator(this,function(h){switch(h.label){case 0:return t=e.config,r=e.env,(null==(s=t.settings)?void 0:s.sdkKey)?(u=function(e){return(null==e?void 0:e.optimizely)?e.optimizely:ie}(r),l=u.createPollingProjectConfigManager({sdkKey:s.sdkKey,autoUpdate:null===(n=s.autoUpdate)||void 0===n||n,updateInterval:null!==(i=s.updateInterval)&&void 0!==i?i:6e4}),c=u.createBatchEventProcessor({batchSize:null!==(o=s.batchSize)&&void 0!==o?o:10,flushInterval:null!==(a=s.flushInterval)&&void 0!==a?a:1e3}),d={projectConfigManager:l,eventProcessor:c},[4,(f=u.createInstance(d)).onReady()]):[2,!1];case 1:return h.sent(),v={client:f},[2,_object_spread_props(_object_spread({},t),{settings:_object_spread_props(_object_spread({},s),{_state:v})})]}})}).apply(this,arguments)},push:function(e,t){return _async_to_generator(function(e,t){var r,a,s,l,c,d,f,v,h,p,g,y,m,_,b,k,E,I,S,w,O,x,P,M,R,A,C;return _ts_generator(this,function(j){switch(j.label){case 0:return r=t.config,a=t.rule,t.env,s=t.collector,l=r.settings||{},c=l._state||{},d=(null==a?void 0:a.settings)||{},c.client?void 0===(f=l.userId)?[3,2]:[4,u(e,f,{collector:s})]:[2];case 1:h=j.sent(),o(h)&&(v=h),j.label=2;case 2:return v?void 0===l.attributes?[3,4]:[4,u(e,l.attributes,{collector:s})]:[2];case 3:g=j.sent(),i(g)&&(p=g),j.label=4;case 4:if(v!==c.lastUserId||!c.userContext){if(!(y=c.client.createUserContext(v,p)))return[2];c.userContext=y,c.lastUserId=v}return(m=c.userContext)?void 0===d.attributes?[3,6]:[4,u(e,d.attributes,{collector:s})]:[2];case 5:if(_=j.sent(),i(_)){b=!0,k=!1,E=void 0;try{for(I=Object.entries(_)[Symbol.iterator]();!(b=(S=I.next()).done);b=!0)w=_sliced_to_array(S.value,2),O=w[0],x=w[1],m.setAttribute(O,x)}catch(e){k=!0,E=e}finally{try{b||null==I.return||I.return()}finally{if(k)throw E}}}j.label=6;case 6:return!0===(null==a?void 0:a.skip)?[3,13]:(P=o(null==a?void 0:a.name)?a.name:e.name,M={},void 0===d.eventTags?[3,8]:[4,u(e,d.eventTags,{collector:s})]);case 7:R=j.sent(),i(R)&&Object.assign(M,R),j.label=8;case 8:return void 0===d.revenue?[3,10]:[4,u(e,d.revenue,{collector:s})];case 9:A=j.sent(),n(A)&&(M.revenue=A),j.label=10;case 10:return void 0===d.value?[3,12]:[4,u(e,d.value,{collector:s})];case 11:C=j.sent(),n(C)&&(M.value=C),j.label=12;case 12:m.trackEvent(P,M),j.label=13;case 13:return l._state=c,[2]}})}).apply(this,arguments)},on:function(e,t){var r,n,i;if("consent"===e&&t.data){var o=null===(r=t.config)||void 0===r?void 0:r.consent;if(o&&0!==Object.keys(o).length){var a=t.data,s=Object.keys(o).every(function(e){return!0===a[e]}),u=null===(i=t.config)||void 0===i||null===(n=i.settings)||void 0===n?void 0:n._state;!s&&(null==u?void 0:u.client)&&(u.client.close(),u.client=void 0,u.userContext=void 0)}}},destroy:function(e){var t=e.config,r=((null==t?void 0:t.settings)||{})._state;(null==r?void 0:r.client)&&(r.client.close(),r.client=void 0,r.userContext=void 0)}},di=ci;return pn=Y,H(N({},"__esModule",{value:!0}),pn)}();
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var t,e=Object.create,n=Object.defineProperty,o=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,a=(t,e,i,a)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let s of r(e))c.call(t,s)||s===i||n(t,s,{get:()=>e[s],enumerable:!(a=o(e,s))||a.enumerable});return t},s={};((t,e)=>{for(var o in e)n(t,o,{get:e[o],enumerable:!0})})(s,{DestinationOptimizely:()=>P,default:()=>z,destinationOptimizely:()=>I}),module.exports=(t=s,a(n({},"__esModule",{value:!0}),t));var l=Object.defineProperty;((t,e)=>{for(var n in e)l(t,n,{get:e[n],enumerable:!0})})({},{Level:()=>f});var u,f=((u=f||{})[u.ERROR=0]="ERROR",u[u.WARN=1]="WARN",u[u.INFO=2]="INFO",u[u.DEBUG=3]="DEBUG",u);function v(t){return Array.isArray(t)}function d(t){return void 0!==t}function y(t){return"number"==typeof t&&!Number.isNaN(t)}function p(t){return"object"==typeof t&&null!==t&&!v(t)&&"[object Object]"===Object.prototype.toString.call(t)}function b(t){return"string"==typeof t}function g(t,e="",n){const o=e.split(".");let r=t;for(let t=0;t<o.length;t++){const e=o[t];if("*"===e&&v(r)){const e=o.slice(t+1).join("."),i=[];for(const t of r){const o=g(t,e,n);i.push(o)}return i}if(r=r instanceof Object?r[e]:void 0,void 0===r)break}return d(r)?r:n}function O(t){return function(t){return"boolean"==typeof t}(t)||b(t)||y(t)||!d(t)||v(t)&&t.every(O)||p(t)&&Object.values(t).every(O)}function m(t){return O(t)?t:void 0}function j(t,e,n){return async function(...o){try{return await t(...o)}catch(t){if(!e)return;return await e(t)}finally{await(null==n?void 0:n())}}}async function w(t,e={},n={}){var o;if(!d(t))return;const r=p(t)&&t.consent||n.consent||(null==(o=n.collector)?void 0:o.consent),i=v(e)?e:[e];for(const e of i){const o=await j(h)(t,e,{...n,consent:r});if(d(o))return o}}async function h(t,e,n={}){const{collector:o,consent:r}=n;return(v(e)?e:[e]).reduce(async(e,i)=>{const c=await e;if(c)return c;const a=b(i)?{key:i}:i;if(!Object.keys(a).length)return;const{condition:s,consent:l,fn:u,key:f,loop:y,map:p,set:O,validate:k,value:P}=a;if(s&&!await j(s)(t,i,o))return;if(l&&!function(t,e={},n={}){const o={...e,...n},r={};let i=!t||0===Object.keys(t).length;return Object.keys(o).forEach(e=>{o[e]&&(r[e]=!0,t&&t[e]&&(i=!0))}),!!i&&r}(l,r))return P;let I=d(P)?P:t;if(u&&(I=await j(u)(t,i,n)),f&&(I=g(t,f,P)),y){const[e,o]=y,r="this"===e?[t]:await w(t,e,n);v(r)&&(I=(await Promise.all(r.map(t=>w(t,o,n)))).filter(d))}else p?I=await Object.entries(p).reduce(async(e,[o,r])=>{const i=await e,c=await w(t,r,n);return d(c)&&(i[o]=c),i},Promise.resolve({})):O&&(I=await Promise.all(O.map(e=>h(t,e,n))));k&&!await j(k)(I)&&(I=void 0);const z=m(I);return d(z)?z:m(P)},Promise.resolve(void 0))}var k=((t,o,r)=>(r=null!=t?e(i(t)):{},a(!o&&t&&t.__esModule?r:n(r,"default",{value:t,enumerable:!0}),t)))(require("@optimizely/optimizely-sdk")),P={};var I={type:"optimizely",config:{},async init({config:t,env:e}){var n,o,r,i;const c=t.settings;if(!(null==c?void 0:c.sdkKey))return!1;const a=function(t){return(null==t?void 0:t.optimizely)?t.optimizely:k}(e),s={projectConfigManager:a.createPollingProjectConfigManager({sdkKey:c.sdkKey,autoUpdate:null==(n=c.autoUpdate)||n,updateInterval:null!=(o=c.updateInterval)?o:6e4}),eventProcessor:a.createBatchEventProcessor({batchSize:null!=(r=c.batchSize)?r:10,flushInterval:null!=(i=c.flushInterval)?i:1e3})},l=a.createInstance(s);await l.onReady();const u={client:l};return{...t,settings:{...c,_state:u}}},async push(t,{config:e,rule:n,env:o,collector:r}){const i=e.settings||{},c=i._state||{},a=(null==n?void 0:n.settings)||{};if(!c.client)return;const s=i.userId;let l,u;if(void 0!==s){const e=await w(t,s,{collector:r});b(e)&&(l=e)}if(!l)return;if(void 0!==i.attributes){const e=await w(t,i.attributes,{collector:r});p(e)&&(u=e)}if(l!==c.lastUserId||!c.userContext){const t=c.client.createUserContext(l,u);if(!t)return;c.userContext=t,c.lastUserId=l}const f=c.userContext;if(f){if(void 0!==a.attributes){const e=await w(t,a.attributes,{collector:r});if(p(e))for(const[t,n]of Object.entries(e))f.setAttribute(t,n)}if(!0!==(null==n?void 0:n.skip)){const e=b(null==n?void 0:n.name)?n.name:t.name,o={};if(void 0!==a.eventTags){const e=await w(t,a.eventTags,{collector:r});p(e)&&Object.assign(o,e)}if(void 0!==a.revenue){const e=await w(t,a.revenue,{collector:r});y(e)&&(o.revenue=e)}if(void 0!==a.value){const e=await w(t,a.value,{collector:r});y(e)&&(o.value=e)}f.trackEvent(e,o)}i._state=c}},on(t,e){var n,o,r;if("consent"!==t||!e.data)return;const i=null==(n=e.config)?void 0:n.consent;if(!i||0===Object.keys(i).length)return;const c=e.data,a=Object.keys(i).every(t=>!0===c[t]),s=null==(r=null==(o=e.config)?void 0:o.settings)?void 0:r._state;!a&&(null==s?void 0:s.client)&&(s.client.close(),s.client=void 0,s.userContext=void 0)},destroy({config:t}){const e=((null==t?void 0:t.settings)||{})._state;(null==e?void 0:e.client)&&(e.client.close(),e.client=void 0,e.userContext=void 0)}},z=I;//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/types/index.ts"],"sourcesContent":["import type { WalkerOS } from '@walkeros/core';\nimport { getMappingValue, isNumber, isObject, isString } from '@walkeros/core';\nimport * as optimizelySDK from '@optimizely/optimizely-sdk';\nimport type {\n Destination,\n Env,\n OptimizelySDK as OptimizelySDKType,\n RuntimeState,\n Settings,\n} from './types';\n\n// Types export\nexport * as DestinationOptimizely from './types';\n\n/**\n * Resolve the Optimizely SDK: use the caller-provided mock when available\n * (tests), otherwise fall back to the real @optimizely/optimizely-sdk.\n */\nfunction getOptimizely(env: Env | undefined): OptimizelySDKType {\n if (env?.optimizely) return env.optimizely;\n return optimizelySDK as unknown as OptimizelySDKType;\n}\n\nexport const destinationOptimizely: Destination = {\n type: 'optimizely',\n\n config: {},\n\n async init({ config, env }) {\n const settings = config.settings;\n if (!settings?.sdkKey) return false;\n\n const sdk = getOptimizely(env as Env | undefined);\n\n const configManager = sdk.createPollingProjectConfigManager({\n sdkKey: settings.sdkKey,\n autoUpdate: settings.autoUpdate ?? true,\n updateInterval: settings.updateInterval ?? 60000,\n });\n\n const eventProcessor = sdk.createBatchEventProcessor({\n batchSize: settings.batchSize ?? 10,\n flushInterval: settings.flushInterval ?? 1000,\n });\n\n const instanceConfig: Record<string, unknown> = {\n projectConfigManager: configManager,\n eventProcessor: eventProcessor,\n };\n\n const client = sdk.createInstance(instanceConfig);\n await client.onReady();\n\n const _state: RuntimeState = { client };\n\n return { ...config, settings: { ...settings, _state } };\n },\n\n async push(event, { config, rule, env, collector }) {\n const settings = (config.settings || {}) as Settings;\n const state: RuntimeState = settings._state || {};\n const mappingSettings = rule?.settings || {};\n\n if (!state.client) return;\n\n // 1. Resolve userId\n const userIdMapping = settings.userId;\n let userId: string | undefined;\n if (userIdMapping !== undefined) {\n const resolved = await getMappingValue(event, userIdMapping, {\n collector,\n });\n if (isString(resolved)) userId = resolved;\n }\n\n // Fallback: no userId means we cannot create a user context\n if (!userId) return;\n\n // 2. Resolve destination-level attributes\n let baseAttributes: Record<string, unknown> | undefined;\n if (settings.attributes !== undefined) {\n const resolved = await getMappingValue(event, settings.attributes, {\n collector,\n });\n if (isObject(resolved)) {\n baseAttributes = resolved as Record<string, unknown>;\n }\n }\n\n // 3. Create or reuse user context\n if (userId !== state.lastUserId || !state.userContext) {\n const userContext = state.client.createUserContext(\n userId,\n baseAttributes,\n );\n if (!userContext) return;\n state.userContext = userContext;\n state.lastUserId = userId;\n }\n\n const userContext = state.userContext;\n if (!userContext) return;\n\n // 4. Per-event attributes via setAttribute\n if (mappingSettings.attributes !== undefined) {\n const resolved = await getMappingValue(\n event,\n mappingSettings.attributes,\n { collector },\n );\n if (isObject(resolved)) {\n for (const [key, value] of Object.entries(\n resolved as Record<string, unknown>,\n )) {\n userContext.setAttribute(key, value);\n }\n }\n }\n\n // 5. Track event (unless skip: true)\n if (rule?.skip !== true) {\n const eventKey = isString(rule?.name) ? rule.name : event.name;\n\n // Build eventTags\n const eventTags: Record<string, unknown> = {};\n\n // Resolve eventTags mapping first (so revenue/value can override)\n if (mappingSettings.eventTags !== undefined) {\n const resolved = await getMappingValue(\n event,\n mappingSettings.eventTags,\n { collector },\n );\n if (isObject(resolved)) {\n Object.assign(eventTags, resolved);\n }\n }\n\n // Revenue (integer, cents)\n if (mappingSettings.revenue !== undefined) {\n const resolved = await getMappingValue(event, mappingSettings.revenue, {\n collector,\n });\n if (isNumber(resolved)) {\n eventTags.revenue = resolved;\n }\n }\n\n // Value (float)\n if (mappingSettings.value !== undefined) {\n const resolved = await getMappingValue(event, mappingSettings.value, {\n collector,\n });\n if (isNumber(resolved)) {\n eventTags.value = resolved;\n }\n }\n\n userContext.trackEvent(eventKey, eventTags);\n }\n\n // Persist state mutations\n settings._state = state;\n },\n\n on(type, context) {\n if (type !== 'consent' || !context.data) return;\n\n const required = context.config?.consent;\n if (!required || Object.keys(required).length === 0) return;\n\n const consent = context.data as WalkerOS.Consent;\n const allGranted = Object.keys(required).every(\n (key) => consent[key] === true,\n );\n\n const state = (context.config?.settings as Settings)?._state;\n if (!allGranted && state?.client) {\n state.client.close();\n state.client = undefined;\n state.userContext = undefined;\n }\n },\n\n destroy({ config }) {\n const settings = (config?.settings || {}) as Settings;\n const state = settings._state;\n if (state?.client) {\n state.client.close();\n state.client = undefined;\n state.userContext = undefined;\n }\n },\n};\n\nexport default destinationOptimizely;\n","import type {\n Mapping as WalkerOSMapping,\n Destination as CoreDestination,\n} from '@walkeros/core';\nimport type { DestinationWeb } from '@walkeros/web-core';\n\n/**\n * Destination-level settings.\n */\nexport interface Settings {\n /** Optimizely Feature Experimentation SDK key. Required. */\n sdkKey: string;\n /** walkerOS mapping value to resolve userId for experiment bucketing. */\n userId?: WalkerOSMapping.Value;\n /** User attributes for audience targeting, applied to every event. */\n attributes?: WalkerOSMapping.Value;\n /** Polling interval for datafile updates in ms. Default: 60000. */\n updateInterval?: number;\n /** Auto-update datafile via polling. Default: true. */\n autoUpdate?: boolean;\n /** Batch event processor: events per batch. Default: 10. */\n batchSize?: number;\n /** Batch event processor: flush interval in ms. Default: 1000. */\n flushInterval?: number;\n /** Skip ODP manager initialization. Default: true. */\n skipOdp?: boolean;\n /** Runtime state -- not user-facing. Mutated by init/push. */\n _state?: RuntimeState;\n}\n\nexport interface RuntimeState {\n /** The Optimizely client instance (typed as OptimizelyClient). */\n client?: OptimizelyClient;\n /** Cached user context. Recreated when userId changes. */\n userContext?: OptimizelyUserContext;\n /** Last resolved userId to detect identity changes. */\n lastUserId?: string;\n}\n\nexport type InitSettings = Partial<Settings>;\n\n/**\n * Per-rule mapping settings.\n */\nexport interface Mapping {\n /** Override event key sent to Optimizely. If omitted, event.name is used. */\n eventKey?: string;\n /** Revenue mapping. Resolves to integer (cents). Passed as eventTags.revenue. */\n revenue?: WalkerOSMapping.Value;\n /** Numeric value mapping. Resolves to float. Passed as eventTags.value. */\n value?: WalkerOSMapping.Value;\n /** Additional event tags. Resolves to Record<string, unknown>. */\n eventTags?: WalkerOSMapping.Value;\n /** Per-event user attributes override. Merged onto user context for this event. */\n attributes?: WalkerOSMapping.Value;\n}\n\n/**\n * OptimizelyClient -- the subset of the Optimizely SDK client the destination\n * actually uses. Tests provide a mock via env.optimizely.\n */\nexport interface OptimizelyClient {\n onReady: () => Promise<{ success: boolean }>;\n createUserContext: (\n userId: string,\n attributes?: Record<string, unknown>,\n ) => OptimizelyUserContext | null;\n close: () => void;\n}\n\n/**\n * OptimizelyUserContext -- user context methods the destination calls.\n */\nexport interface OptimizelyUserContext {\n trackEvent: (eventKey: string, eventTags?: Record<string, unknown>) => void;\n setAttribute: (key: string, value: unknown) => void;\n}\n\n/**\n * OptimizelySDK -- factory functions the destination imports from the SDK.\n * Tests provide this via env.optimizely to avoid importing the real SDK.\n */\nexport interface OptimizelySDK {\n createInstance: (config: Record<string, unknown>) => OptimizelyClient;\n createPollingProjectConfigManager: (\n config: Record<string, unknown>,\n ) => unknown;\n createBatchEventProcessor: (config: Record<string, unknown>) => unknown;\n}\n\n/**\n * Env -- optional SDK override. Production leaves env.optimizely undefined\n * and the destination falls back to the real @optimizely/optimizely-sdk\n * import. Tests provide a mock via env.optimizely.\n */\nexport interface Env extends DestinationWeb.Env {\n optimizely?: OptimizelySDK;\n}\n\nexport type Types = CoreDestination.Types<Settings, Mapping, Env, InitSettings>;\n\nexport type Destination = DestinationWeb.Destination<Types>;\nexport type Config = DestinationWeb.Config<Types>;\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,oBAA+B;;;ACF/B;;;ADkBA,SAAS,cAAc,KAAyC;AAC9D,MAAI,2BAAK,WAAY,QAAO,IAAI;AAChC,SAAO;AACT;AAEO,IAAM,wBAAqC;AAAA,EAChD,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG;AA5B9B;AA6BI,UAAM,WAAW,OAAO;AACxB,QAAI,EAAC,qCAAU,QAAQ,QAAO;AAE9B,UAAM,MAAM,cAAc,GAAsB;AAEhD,UAAM,gBAAgB,IAAI,kCAAkC;AAAA,MAC1D,QAAQ,SAAS;AAAA,MACjB,aAAY,cAAS,eAAT,YAAuB;AAAA,MACnC,iBAAgB,cAAS,mBAAT,YAA2B;AAAA,IAC7C,CAAC;AAED,UAAM,iBAAiB,IAAI,0BAA0B;AAAA,MACnD,YAAW,cAAS,cAAT,YAAsB;AAAA,MACjC,gBAAe,cAAS,kBAAT,YAA0B;AAAA,IAC3C,CAAC;AAED,UAAM,iBAA0C;AAAA,MAC9C,sBAAsB;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,eAAe,cAAc;AAChD,UAAM,OAAO,QAAQ;AAErB,UAAM,SAAuB,EAAE,OAAO;AAEtC,WAAO,EAAE,GAAG,QAAQ,UAAU,EAAE,GAAG,UAAU,OAAO,EAAE;AAAA,EACxD;AAAA,EAEA,MAAM,KAAK,OAAO,EAAE,QAAQ,MAAM,KAAK,UAAU,GAAG;AAClD,UAAM,WAAY,OAAO,YAAY,CAAC;AACtC,UAAM,QAAsB,SAAS,UAAU,CAAC;AAChD,UAAM,mBAAkB,6BAAM,aAAY,CAAC;AAE3C,QAAI,CAAC,MAAM,OAAQ;AAGnB,UAAM,gBAAgB,SAAS;AAC/B,QAAI;AACJ,QAAI,kBAAkB,QAAW;AAC/B,YAAM,WAAW,MAAM,GAAgB,OAAO,eAAe;AAAA,QAC3D;AAAA,MACF,CAAC;AACD,UAAI,GAAS,QAAQ,EAAG,UAAS;AAAA,IACnC;AAGA,QAAI,CAAC,OAAQ;AAGb,QAAI;AACJ,QAAI,SAAS,eAAe,QAAW;AACrC,YAAM,WAAW,MAAM,GAAgB,OAAO,SAAS,YAAY;AAAA,QACjE;AAAA,MACF,CAAC;AACD,UAAI,EAAS,QAAQ,GAAG;AACtB,yBAAiB;AAAA,MACnB;AAAA,IACF;AAGA,QAAI,WAAW,MAAM,cAAc,CAAC,MAAM,aAAa;AACrD,YAAMA,eAAc,MAAM,OAAO;AAAA,QAC/B;AAAA,QACA;AAAA,MACF;AACA,UAAI,CAACA,aAAa;AAClB,YAAM,cAAcA;AACpB,YAAM,aAAa;AAAA,IACrB;AAEA,UAAM,cAAc,MAAM;AAC1B,QAAI,CAAC,YAAa;AAGlB,QAAI,gBAAgB,eAAe,QAAW;AAC5C,YAAM,WAAW,MAAM;AAAA,QACrB;AAAA,QACA,gBAAgB;AAAA,QAChB,EAAE,UAAU;AAAA,MACd;AACA,UAAI,EAAS,QAAQ,GAAG;AACtB,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO;AAAA,UAChC;AAAA,QACF,GAAG;AACD,sBAAY,aAAa,KAAK,KAAK;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAGA,SAAI,6BAAM,UAAS,MAAM;AACvB,YAAM,WAAW,GAAS,6BAAM,IAAI,IAAI,KAAK,OAAO,MAAM;AAG1D,YAAM,YAAqC,CAAC;AAG5C,UAAI,gBAAgB,cAAc,QAAW;AAC3C,cAAM,WAAW,MAAM;AAAA,UACrB;AAAA,UACA,gBAAgB;AAAA,UAChB,EAAE,UAAU;AAAA,QACd;AACA,YAAI,EAAS,QAAQ,GAAG;AACtB,iBAAO,OAAO,WAAW,QAAQ;AAAA,QACnC;AAAA,MACF;AAGA,UAAI,gBAAgB,YAAY,QAAW;AACzC,cAAM,WAAW,MAAM,GAAgB,OAAO,gBAAgB,SAAS;AAAA,UACrE;AAAA,QACF,CAAC;AACD,YAAI,EAAS,QAAQ,GAAG;AACtB,oBAAU,UAAU;AAAA,QACtB;AAAA,MACF;AAGA,UAAI,gBAAgB,UAAU,QAAW;AACvC,cAAM,WAAW,MAAM,GAAgB,OAAO,gBAAgB,OAAO;AAAA,UACnE;AAAA,QACF,CAAC;AACD,YAAI,EAAS,QAAQ,GAAG;AACtB,oBAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAEA,kBAAY,WAAW,UAAU,SAAS;AAAA,IAC5C;AAGA,aAAS,SAAS;AAAA,EACpB;AAAA,EAEA,GAAG,MAAM,SAAS;AArKpB;AAsKI,QAAI,SAAS,aAAa,CAAC,QAAQ,KAAM;AAEzC,UAAM,YAAW,aAAQ,WAAR,mBAAgB;AACjC,QAAI,CAAC,YAAY,OAAO,KAAK,QAAQ,EAAE,WAAW,EAAG;AAErD,UAAM,UAAU,QAAQ;AACxB,UAAM,aAAa,OAAO,KAAK,QAAQ,EAAE;AAAA,MACvC,CAAC,QAAQ,QAAQ,GAAG,MAAM;AAAA,IAC5B;AAEA,UAAM,SAAS,mBAAQ,WAAR,mBAAgB,aAAhB,mBAAuC;AACtD,QAAI,CAAC,eAAc,+BAAO,SAAQ;AAChC,YAAM,OAAO,MAAM;AACnB,YAAM,SAAS;AACf,YAAM,cAAc;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,QAAQ,EAAE,OAAO,GAAG;AAClB,UAAM,YAAY,iCAAQ,aAAY,CAAC;AACvC,UAAM,QAAQ,SAAS;AACvB,QAAI,+BAAO,QAAQ;AACjB,YAAM,OAAO,MAAM;AACnB,YAAM,SAAS;AACf,YAAM,cAAc;AAAA,IACtB;AAAA,EACF;AACF;AAEA,IAAO,gBAAQ;","names":["userContext"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var t=Object.defineProperty;((e,n)=>{for(var o in n)t(e,o,{get:n[o],enumerable:!0})})({},{Level:()=>n});var e,n=((e=n||{})[e.ERROR=0]="ERROR",e[e.WARN=1]="WARN",e[e.INFO=2]="INFO",e[e.DEBUG=3]="DEBUG",e);function o(t){return Array.isArray(t)}function i(t){return void 0!==t}function r(t){return"number"==typeof t&&!Number.isNaN(t)}function c(t){return"object"==typeof t&&null!==t&&!o(t)&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return"string"==typeof t}function s(t,e="",n){const r=e.split(".");let c=t;for(let t=0;t<r.length;t++){const e=r[t];if("*"===e&&o(c)){const e=r.slice(t+1).join("."),o=[];for(const t of c){const i=s(t,e,n);o.push(i)}return o}if(c=c instanceof Object?c[e]:void 0,void 0===c)break}return i(c)?c:n}function l(t){return function(t){return"boolean"==typeof t}(t)||a(t)||r(t)||!i(t)||o(t)&&t.every(l)||c(t)&&Object.values(t).every(l)}function u(t){return l(t)?t:void 0}function f(t,e,n){return async function(...o){try{return await t(...o)}catch(t){if(!e)return;return await e(t)}finally{await(null==n?void 0:n())}}}async function v(t,e={},n={}){var r;if(!i(t))return;const a=c(t)&&t.consent||n.consent||(null==(r=n.collector)?void 0:r.consent),s=o(e)?e:[e];for(const e of s){const o=await f(d)(t,e,{...n,consent:a});if(i(o))return o}}async function d(t,e,n={}){const{collector:r,consent:c}=n;return(o(e)?e:[e]).reduce(async(e,l)=>{const y=await e;if(y)return y;const p=a(l)?{key:l}:l;if(!Object.keys(p).length)return;const{condition:b,consent:g,fn:m,key:w,loop:j,map:O,set:h,validate:k,value:I}=p;if(b&&!await f(b)(t,l,r))return;if(g&&!function(t,e={},n={}){const o={...e,...n},i={};let r=!t||0===Object.keys(t).length;return Object.keys(o).forEach(e=>{o[e]&&(i[e]=!0,t&&t[e]&&(r=!0))}),!!r&&i}(g,c))return I;let P=i(I)?I:t;if(m&&(P=await f(m)(t,l,n)),w&&(P=s(t,w,I)),j){const[e,r]=j,c="this"===e?[t]:await v(t,e,n);o(c)&&(P=(await Promise.all(c.map(t=>v(t,r,n)))).filter(i))}else O?P=await Object.entries(O).reduce(async(e,[o,r])=>{const c=await e,a=await v(t,r,n);return i(a)&&(c[o]=a),c},Promise.resolve({})):h&&(P=await Promise.all(h.map(e=>d(t,e,n))));k&&!await f(k)(P)&&(P=void 0);const R=u(P);return i(R)?R:u(I)},Promise.resolve(void 0))}import*as y from"@optimizely/optimizely-sdk";var p={};var b={type:"optimizely",config:{},async init({config:t,env:e}){var n,o,i,r;const c=t.settings;if(!(null==c?void 0:c.sdkKey))return!1;const a=function(t){return(null==t?void 0:t.optimizely)?t.optimizely:y}(e),s={projectConfigManager:a.createPollingProjectConfigManager({sdkKey:c.sdkKey,autoUpdate:null==(n=c.autoUpdate)||n,updateInterval:null!=(o=c.updateInterval)?o:6e4}),eventProcessor:a.createBatchEventProcessor({batchSize:null!=(i=c.batchSize)?i:10,flushInterval:null!=(r=c.flushInterval)?r:1e3})},l=a.createInstance(s);await l.onReady();const u={client:l};return{...t,settings:{...c,_state:u}}},async push(t,{config:e,rule:n,env:o,collector:i}){const s=e.settings||{},l=s._state||{},u=(null==n?void 0:n.settings)||{};if(!l.client)return;const f=s.userId;let d,y;if(void 0!==f){const e=await v(t,f,{collector:i});a(e)&&(d=e)}if(!d)return;if(void 0!==s.attributes){const e=await v(t,s.attributes,{collector:i});c(e)&&(y=e)}if(d!==l.lastUserId||!l.userContext){const t=l.client.createUserContext(d,y);if(!t)return;l.userContext=t,l.lastUserId=d}const p=l.userContext;if(p){if(void 0!==u.attributes){const e=await v(t,u.attributes,{collector:i});if(c(e))for(const[t,n]of Object.entries(e))p.setAttribute(t,n)}if(!0!==(null==n?void 0:n.skip)){const e=a(null==n?void 0:n.name)?n.name:t.name,o={};if(void 0!==u.eventTags){const e=await v(t,u.eventTags,{collector:i});c(e)&&Object.assign(o,e)}if(void 0!==u.revenue){const e=await v(t,u.revenue,{collector:i});r(e)&&(o.revenue=e)}if(void 0!==u.value){const e=await v(t,u.value,{collector:i});r(e)&&(o.value=e)}p.trackEvent(e,o)}s._state=l}},on(t,e){var n,o,i;if("consent"!==t||!e.data)return;const r=null==(n=e.config)?void 0:n.consent;if(!r||0===Object.keys(r).length)return;const c=e.data,a=Object.keys(r).every(t=>!0===c[t]),s=null==(i=null==(o=e.config)?void 0:o.settings)?void 0:i._state;!a&&(null==s?void 0:s.client)&&(s.client.close(),s.client=void 0,s.userContext=void 0)},destroy({config:t}){const e=((null==t?void 0:t.settings)||{})._state;(null==e?void 0:e.client)&&(e.client.close(),e.client=void 0,e.userContext=void 0)}},g=b;export{p as DestinationOptimizely,g as default,b as destinationOptimizely};//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/types/index.ts"],"sourcesContent":["import type { WalkerOS } from '@walkeros/core';\nimport { getMappingValue, isNumber, isObject, isString } from '@walkeros/core';\nimport * as optimizelySDK from '@optimizely/optimizely-sdk';\nimport type {\n Destination,\n Env,\n OptimizelySDK as OptimizelySDKType,\n RuntimeState,\n Settings,\n} from './types';\n\n// Types export\nexport * as DestinationOptimizely from './types';\n\n/**\n * Resolve the Optimizely SDK: use the caller-provided mock when available\n * (tests), otherwise fall back to the real @optimizely/optimizely-sdk.\n */\nfunction getOptimizely(env: Env | undefined): OptimizelySDKType {\n if (env?.optimizely) return env.optimizely;\n return optimizelySDK as unknown as OptimizelySDKType;\n}\n\nexport const destinationOptimizely: Destination = {\n type: 'optimizely',\n\n config: {},\n\n async init({ config, env }) {\n const settings = config.settings;\n if (!settings?.sdkKey) return false;\n\n const sdk = getOptimizely(env as Env | undefined);\n\n const configManager = sdk.createPollingProjectConfigManager({\n sdkKey: settings.sdkKey,\n autoUpdate: settings.autoUpdate ?? true,\n updateInterval: settings.updateInterval ?? 60000,\n });\n\n const eventProcessor = sdk.createBatchEventProcessor({\n batchSize: settings.batchSize ?? 10,\n flushInterval: settings.flushInterval ?? 1000,\n });\n\n const instanceConfig: Record<string, unknown> = {\n projectConfigManager: configManager,\n eventProcessor: eventProcessor,\n };\n\n const client = sdk.createInstance(instanceConfig);\n await client.onReady();\n\n const _state: RuntimeState = { client };\n\n return { ...config, settings: { ...settings, _state } };\n },\n\n async push(event, { config, rule, env, collector }) {\n const settings = (config.settings || {}) as Settings;\n const state: RuntimeState = settings._state || {};\n const mappingSettings = rule?.settings || {};\n\n if (!state.client) return;\n\n // 1. Resolve userId\n const userIdMapping = settings.userId;\n let userId: string | undefined;\n if (userIdMapping !== undefined) {\n const resolved = await getMappingValue(event, userIdMapping, {\n collector,\n });\n if (isString(resolved)) userId = resolved;\n }\n\n // Fallback: no userId means we cannot create a user context\n if (!userId) return;\n\n // 2. Resolve destination-level attributes\n let baseAttributes: Record<string, unknown> | undefined;\n if (settings.attributes !== undefined) {\n const resolved = await getMappingValue(event, settings.attributes, {\n collector,\n });\n if (isObject(resolved)) {\n baseAttributes = resolved as Record<string, unknown>;\n }\n }\n\n // 3. Create or reuse user context\n if (userId !== state.lastUserId || !state.userContext) {\n const userContext = state.client.createUserContext(\n userId,\n baseAttributes,\n );\n if (!userContext) return;\n state.userContext = userContext;\n state.lastUserId = userId;\n }\n\n const userContext = state.userContext;\n if (!userContext) return;\n\n // 4. Per-event attributes via setAttribute\n if (mappingSettings.attributes !== undefined) {\n const resolved = await getMappingValue(\n event,\n mappingSettings.attributes,\n { collector },\n );\n if (isObject(resolved)) {\n for (const [key, value] of Object.entries(\n resolved as Record<string, unknown>,\n )) {\n userContext.setAttribute(key, value);\n }\n }\n }\n\n // 5. Track event (unless skip: true)\n if (rule?.skip !== true) {\n const eventKey = isString(rule?.name) ? rule.name : event.name;\n\n // Build eventTags\n const eventTags: Record<string, unknown> = {};\n\n // Resolve eventTags mapping first (so revenue/value can override)\n if (mappingSettings.eventTags !== undefined) {\n const resolved = await getMappingValue(\n event,\n mappingSettings.eventTags,\n { collector },\n );\n if (isObject(resolved)) {\n Object.assign(eventTags, resolved);\n }\n }\n\n // Revenue (integer, cents)\n if (mappingSettings.revenue !== undefined) {\n const resolved = await getMappingValue(event, mappingSettings.revenue, {\n collector,\n });\n if (isNumber(resolved)) {\n eventTags.revenue = resolved;\n }\n }\n\n // Value (float)\n if (mappingSettings.value !== undefined) {\n const resolved = await getMappingValue(event, mappingSettings.value, {\n collector,\n });\n if (isNumber(resolved)) {\n eventTags.value = resolved;\n }\n }\n\n userContext.trackEvent(eventKey, eventTags);\n }\n\n // Persist state mutations\n settings._state = state;\n },\n\n on(type, context) {\n if (type !== 'consent' || !context.data) return;\n\n const required = context.config?.consent;\n if (!required || Object.keys(required).length === 0) return;\n\n const consent = context.data as WalkerOS.Consent;\n const allGranted = Object.keys(required).every(\n (key) => consent[key] === true,\n );\n\n const state = (context.config?.settings as Settings)?._state;\n if (!allGranted && state?.client) {\n state.client.close();\n state.client = undefined;\n state.userContext = undefined;\n }\n },\n\n destroy({ config }) {\n const settings = (config?.settings || {}) as Settings;\n const state = settings._state;\n if (state?.client) {\n state.client.close();\n state.client = undefined;\n state.userContext = undefined;\n }\n },\n};\n\nexport default destinationOptimizely;\n","import type {\n Mapping as WalkerOSMapping,\n Destination as CoreDestination,\n} from '@walkeros/core';\nimport type { DestinationWeb } from '@walkeros/web-core';\n\n/**\n * Destination-level settings.\n */\nexport interface Settings {\n /** Optimizely Feature Experimentation SDK key. Required. */\n sdkKey: string;\n /** walkerOS mapping value to resolve userId for experiment bucketing. */\n userId?: WalkerOSMapping.Value;\n /** User attributes for audience targeting, applied to every event. */\n attributes?: WalkerOSMapping.Value;\n /** Polling interval for datafile updates in ms. Default: 60000. */\n updateInterval?: number;\n /** Auto-update datafile via polling. Default: true. */\n autoUpdate?: boolean;\n /** Batch event processor: events per batch. Default: 10. */\n batchSize?: number;\n /** Batch event processor: flush interval in ms. Default: 1000. */\n flushInterval?: number;\n /** Skip ODP manager initialization. Default: true. */\n skipOdp?: boolean;\n /** Runtime state -- not user-facing. Mutated by init/push. */\n _state?: RuntimeState;\n}\n\nexport interface RuntimeState {\n /** The Optimizely client instance (typed as OptimizelyClient). */\n client?: OptimizelyClient;\n /** Cached user context. Recreated when userId changes. */\n userContext?: OptimizelyUserContext;\n /** Last resolved userId to detect identity changes. */\n lastUserId?: string;\n}\n\nexport type InitSettings = Partial<Settings>;\n\n/**\n * Per-rule mapping settings.\n */\nexport interface Mapping {\n /** Override event key sent to Optimizely. If omitted, event.name is used. */\n eventKey?: string;\n /** Revenue mapping. Resolves to integer (cents). Passed as eventTags.revenue. */\n revenue?: WalkerOSMapping.Value;\n /** Numeric value mapping. Resolves to float. Passed as eventTags.value. */\n value?: WalkerOSMapping.Value;\n /** Additional event tags. Resolves to Record<string, unknown>. */\n eventTags?: WalkerOSMapping.Value;\n /** Per-event user attributes override. Merged onto user context for this event. */\n attributes?: WalkerOSMapping.Value;\n}\n\n/**\n * OptimizelyClient -- the subset of the Optimizely SDK client the destination\n * actually uses. Tests provide a mock via env.optimizely.\n */\nexport interface OptimizelyClient {\n onReady: () => Promise<{ success: boolean }>;\n createUserContext: (\n userId: string,\n attributes?: Record<string, unknown>,\n ) => OptimizelyUserContext | null;\n close: () => void;\n}\n\n/**\n * OptimizelyUserContext -- user context methods the destination calls.\n */\nexport interface OptimizelyUserContext {\n trackEvent: (eventKey: string, eventTags?: Record<string, unknown>) => void;\n setAttribute: (key: string, value: unknown) => void;\n}\n\n/**\n * OptimizelySDK -- factory functions the destination imports from the SDK.\n * Tests provide this via env.optimizely to avoid importing the real SDK.\n */\nexport interface OptimizelySDK {\n createInstance: (config: Record<string, unknown>) => OptimizelyClient;\n createPollingProjectConfigManager: (\n config: Record<string, unknown>,\n ) => unknown;\n createBatchEventProcessor: (config: Record<string, unknown>) => unknown;\n}\n\n/**\n * Env -- optional SDK override. Production leaves env.optimizely undefined\n * and the destination falls back to the real @optimizely/optimizely-sdk\n * import. Tests provide a mock via env.optimizely.\n */\nexport interface Env extends DestinationWeb.Env {\n optimizely?: OptimizelySDK;\n}\n\nexport type Types = CoreDestination.Types<Settings, Mapping, Env, InitSettings>;\n\nexport type Destination = DestinationWeb.Destination<Types>;\nexport type Config = DestinationWeb.Config<Types>;\n\nexport type Rule = WalkerOSMapping.Rule<Mapping>;\nexport type Rules = WalkerOSMapping.Rules<Rule>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,YAAY,mBAAmB;;;ACF/B;;;ADkBA,SAAS,cAAc,KAAyC;AAC9D,MAAI,2BAAK,WAAY,QAAO,IAAI;AAChC,SAAO;AACT;AAEO,IAAM,wBAAqC;AAAA,EAChD,MAAM;AAAA,EAEN,QAAQ,CAAC;AAAA,EAET,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG;AA5B9B;AA6BI,UAAM,WAAW,OAAO;AACxB,QAAI,EAAC,qCAAU,QAAQ,QAAO;AAE9B,UAAM,MAAM,cAAc,GAAsB;AAEhD,UAAM,gBAAgB,IAAI,kCAAkC;AAAA,MAC1D,QAAQ,SAAS;AAAA,MACjB,aAAY,cAAS,eAAT,YAAuB;AAAA,MACnC,iBAAgB,cAAS,mBAAT,YAA2B;AAAA,IAC7C,CAAC;AAED,UAAM,iBAAiB,IAAI,0BAA0B;AAAA,MACnD,YAAW,cAAS,cAAT,YAAsB;AAAA,MACjC,gBAAe,cAAS,kBAAT,YAA0B;AAAA,IAC3C,CAAC;AAED,UAAM,iBAA0C;AAAA,MAC9C,sBAAsB;AAAA,MACtB;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,eAAe,cAAc;AAChD,UAAM,OAAO,QAAQ;AAErB,UAAM,SAAuB,EAAE,OAAO;AAEtC,WAAO,EAAE,GAAG,QAAQ,UAAU,EAAE,GAAG,UAAU,OAAO,EAAE;AAAA,EACxD;AAAA,EAEA,MAAM,KAAK,OAAO,EAAE,QAAQ,MAAM,KAAK,UAAU,GAAG;AAClD,UAAM,WAAY,OAAO,YAAY,CAAC;AACtC,UAAM,QAAsB,SAAS,UAAU,CAAC;AAChD,UAAM,mBAAkB,6BAAM,aAAY,CAAC;AAE3C,QAAI,CAAC,MAAM,OAAQ;AAGnB,UAAM,gBAAgB,SAAS;AAC/B,QAAI;AACJ,QAAI,kBAAkB,QAAW;AAC/B,YAAM,WAAW,MAAM,GAAgB,OAAO,eAAe;AAAA,QAC3D;AAAA,MACF,CAAC;AACD,UAAI,GAAS,QAAQ,EAAG,UAAS;AAAA,IACnC;AAGA,QAAI,CAAC,OAAQ;AAGb,QAAI;AACJ,QAAI,SAAS,eAAe,QAAW;AACrC,YAAM,WAAW,MAAM,GAAgB,OAAO,SAAS,YAAY;AAAA,QACjE;AAAA,MACF,CAAC;AACD,UAAI,EAAS,QAAQ,GAAG;AACtB,yBAAiB;AAAA,MACnB;AAAA,IACF;AAGA,QAAI,WAAW,MAAM,cAAc,CAAC,MAAM,aAAa;AACrD,YAAMA,eAAc,MAAM,OAAO;AAAA,QAC/B;AAAA,QACA;AAAA,MACF;AACA,UAAI,CAACA,aAAa;AAClB,YAAM,cAAcA;AACpB,YAAM,aAAa;AAAA,IACrB;AAEA,UAAM,cAAc,MAAM;AAC1B,QAAI,CAAC,YAAa;AAGlB,QAAI,gBAAgB,eAAe,QAAW;AAC5C,YAAM,WAAW,MAAM;AAAA,QACrB;AAAA,QACA,gBAAgB;AAAA,QAChB,EAAE,UAAU;AAAA,MACd;AACA,UAAI,EAAS,QAAQ,GAAG;AACtB,mBAAW,CAAC,KAAK,KAAK,KAAK,OAAO;AAAA,UAChC;AAAA,QACF,GAAG;AACD,sBAAY,aAAa,KAAK,KAAK;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAGA,SAAI,6BAAM,UAAS,MAAM;AACvB,YAAM,WAAW,GAAS,6BAAM,IAAI,IAAI,KAAK,OAAO,MAAM;AAG1D,YAAM,YAAqC,CAAC;AAG5C,UAAI,gBAAgB,cAAc,QAAW;AAC3C,cAAM,WAAW,MAAM;AAAA,UACrB;AAAA,UACA,gBAAgB;AAAA,UAChB,EAAE,UAAU;AAAA,QACd;AACA,YAAI,EAAS,QAAQ,GAAG;AACtB,iBAAO,OAAO,WAAW,QAAQ;AAAA,QACnC;AAAA,MACF;AAGA,UAAI,gBAAgB,YAAY,QAAW;AACzC,cAAM,WAAW,MAAM,GAAgB,OAAO,gBAAgB,SAAS;AAAA,UACrE;AAAA,QACF,CAAC;AACD,YAAI,EAAS,QAAQ,GAAG;AACtB,oBAAU,UAAU;AAAA,QACtB;AAAA,MACF;AAGA,UAAI,gBAAgB,UAAU,QAAW;AACvC,cAAM,WAAW,MAAM,GAAgB,OAAO,gBAAgB,OAAO;AAAA,UACnE;AAAA,QACF,CAAC;AACD,YAAI,EAAS,QAAQ,GAAG;AACtB,oBAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAEA,kBAAY,WAAW,UAAU,SAAS;AAAA,IAC5C;AAGA,aAAS,SAAS;AAAA,EACpB;AAAA,EAEA,GAAG,MAAM,SAAS;AArKpB;AAsKI,QAAI,SAAS,aAAa,CAAC,QAAQ,KAAM;AAEzC,UAAM,YAAW,aAAQ,WAAR,mBAAgB;AACjC,QAAI,CAAC,YAAY,OAAO,KAAK,QAAQ,EAAE,WAAW,EAAG;AAErD,UAAM,UAAU,QAAQ;AACxB,UAAM,aAAa,OAAO,KAAK,QAAQ,EAAE;AAAA,MACvC,CAAC,QAAQ,QAAQ,GAAG,MAAM;AAAA,IAC5B;AAEA,UAAM,SAAS,mBAAQ,WAAR,mBAAgB,aAAhB,mBAAuC;AACtD,QAAI,CAAC,eAAc,+BAAO,SAAQ;AAChC,YAAM,OAAO,MAAM;AACnB,YAAM,SAAS;AACf,YAAM,cAAc;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,QAAQ,EAAE,OAAO,GAAG;AAClB,UAAM,YAAY,iCAAQ,aAAY,CAAC;AACvC,UAAM,QAAQ,SAAS;AACvB,QAAI,+BAAO,QAAQ;AACjB,YAAM,OAAO,MAAM;AACnB,YAAM,SAAS;AACf,YAAM,cAAc;AAAA,IACtB;AAAA,EACF;AACF;AAEA,IAAO,gBAAQ;","names":["userContext"]}
|