@ninetailed/experience.js 4.3.0-beta.2 → 5.0.0-beta.2

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/index.cjs CHANGED
@@ -12,8 +12,6 @@ var Analytics__default = /*#__PURE__*/_interopDefaultLegacy(Analytics);
12
12
 
13
13
  const HAS_SEEN_EXPERIENCE = 'has_seen_experience';
14
14
  const HAS_SEEN_COMPONENT = 'has_seen_component';
15
- const HAS_SEEN_ELEMENT = 'has_seen_element';
16
- const PAGE_HIDDEN = 'page_hidden';
17
15
 
18
16
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
19
17
 
@@ -611,9 +609,9 @@ var inspectSource$3 = store$1.inspectSource;
611
609
  var global$d = global$k;
612
610
  var isCallable$d = isCallable$k;
613
611
 
614
- var WeakMap$2 = global$d.WeakMap;
612
+ var WeakMap$1 = global$d.WeakMap;
615
613
 
616
- var weakMapBasicDetection = isCallable$d(WeakMap$2) && /native code/.test(String(WeakMap$2));
614
+ var weakMapBasicDetection = isCallable$d(WeakMap$1) && /native code/.test(String(WeakMap$1));
617
615
 
618
616
  var shared$1 = shared$3.exports;
619
617
  var uid = uid$2;
@@ -637,7 +635,7 @@ var hiddenKeys$3 = hiddenKeys$4;
637
635
 
638
636
  var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
639
637
  var TypeError$2 = global$c.TypeError;
640
- var WeakMap$1 = global$c.WeakMap;
638
+ var WeakMap = global$c.WeakMap;
641
639
  var set$1, get, has;
642
640
 
643
641
  var enforce = function (it) {
@@ -654,7 +652,7 @@ var getterFor = function (TYPE) {
654
652
  };
655
653
 
656
654
  if (NATIVE_WEAK_MAP || shared.state) {
657
- var store = shared.state || (shared.state = new WeakMap$1());
655
+ var store = shared.state || (shared.state = new WeakMap());
658
656
  /* eslint-disable no-self-assign -- prototype methods protection */
659
657
  store.get = store.get;
660
658
  store.has = store.has;
@@ -2526,18 +2524,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
2526
2524
  PERFORMANCE OF THIS SOFTWARE.
2527
2525
  ***************************************************************************** */
2528
2526
 
2529
- function __rest(s, e) {
2530
- var t = {};
2531
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
2532
- t[p] = s[p];
2533
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
2534
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2535
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
2536
- t[p[i]] = s[p[i]];
2537
- }
2538
- return t;
2539
- }
2540
-
2541
2527
  function __awaiter(thisArg, _arguments, P, generator) {
2542
2528
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2543
2529
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -2593,6 +2579,7 @@ const LEGACY_ANONYMOUS_ID = '__anon_id';
2593
2579
  const ANONYMOUS_ID = '__nt_anonymous_id__';
2594
2580
  const DEBUG_FLAG = '__nt_debug__';
2595
2581
  const PROFILE_FALLBACK_CACHE = '__nt_profile__';
2582
+ const EXPERIENCES_FALLBACK_CACHE = '__nt_experiences__';
2596
2583
  const PROFILE_CHANGE = 'profile-change';
2597
2584
  const PROFILE_RESET = 'profile-reset';
2598
2585
  const CONSENT = '__nt-consent__';
@@ -2621,7 +2608,10 @@ const ninetailedPlugin = ({
2621
2608
  }
2622
2609
  try {
2623
2610
  const anonymousId = _instance.storage.getItem(ANONYMOUS_ID);
2624
- const profile = yield apiClient.upsertProfile({
2611
+ const {
2612
+ profile,
2613
+ experiences
2614
+ } = yield apiClient.upsertProfile({
2625
2615
  profileId: anonymousId,
2626
2616
  events
2627
2617
  }, {
@@ -2630,10 +2620,13 @@ const ninetailedPlugin = ({
2630
2620
  });
2631
2621
  _instance.storage.setItem(ANONYMOUS_ID, profile.id);
2632
2622
  _instance.storage.setItem(PROFILE_FALLBACK_CACHE, profile);
2623
+ _instance.storage.setItem(EXPERIENCES_FALLBACK_CACHE, experiences);
2633
2624
  experience_jsShared.logger.debug('Profile from api: ', profile);
2625
+ experience_jsShared.logger.debug('Experiences from api: ', experiences);
2634
2626
  _instance.dispatch({
2635
2627
  type: PROFILE_CHANGE,
2636
- profile
2628
+ profile,
2629
+ experiences
2637
2630
  });
2638
2631
  yield delay(20);
2639
2632
  return {
@@ -2642,27 +2635,27 @@ const ninetailedPlugin = ({
2642
2635
  } catch (error) {
2643
2636
  experience_jsShared.logger.debug('An error occurred during flushing the events: ', error);
2644
2637
  const fallbackProfile = _instance.storage.getItem(PROFILE_FALLBACK_CACHE);
2638
+ const fallbackExperiences = _instance.storage.getItem(EXPERIENCES_FALLBACK_CACHE) || [];
2645
2639
  if (fallbackProfile) {
2646
2640
  experience_jsShared.logger.debug('Found a fallback profile - will use this.');
2647
2641
  _instance.dispatch({
2648
2642
  type: PROFILE_CHANGE,
2649
- profile: fallbackProfile
2643
+ profile: fallbackProfile,
2644
+ experiences: fallbackExperiences
2650
2645
  });
2651
- return {
2652
- success: false
2653
- };
2654
2646
  } else {
2655
2647
  experience_jsShared.logger.debug('No fallback profile found - setting profile to null.');
2656
2648
  _instance.dispatch({
2657
2649
  type: PROFILE_CHANGE,
2658
2650
  // TODO is it a good idea to set the profile to null?
2659
2651
  profile: null,
2652
+ experiences: fallbackExperiences,
2660
2653
  error
2661
2654
  });
2662
- return {
2663
- success: false
2664
- };
2665
2655
  }
2656
+ return {
2657
+ success: false
2658
+ };
2666
2659
  }
2667
2660
  });
2668
2661
  const enqueueEvent = event => __awaiter(void 0, void 0, void 0, function* () {
@@ -2761,7 +2754,7 @@ const ninetailedPlugin = ({
2761
2754
  abort,
2762
2755
  payload
2763
2756
  }) => {
2764
- if (![ANONYMOUS_ID, DEBUG_FLAG, PROFILE_FALLBACK_CACHE, CONSENT].includes(payload.key)) {
2757
+ if (![ANONYMOUS_ID, DEBUG_FLAG, PROFILE_FALLBACK_CACHE, EXPERIENCES_FALLBACK_CACHE, CONSENT].includes(payload.key)) {
2765
2758
  return abort();
2766
2759
  }
2767
2760
  return payload;
@@ -2776,6 +2769,7 @@ const ninetailedPlugin = ({
2776
2769
  });
2777
2770
  instance.storage.removeItem(ANONYMOUS_ID);
2778
2771
  instance.storage.removeItem(PROFILE_FALLBACK_CACHE);
2772
+ instance.storage.removeItem(EXPERIENCES_FALLBACK_CACHE);
2779
2773
  experience_jsShared.logger.debug('Removed old profile data from localstorage.');
2780
2774
  yield ninetailed.track('nt_reset');
2781
2775
  experience_jsShared.logger.info('Profile reset successful.');
@@ -2856,115 +2850,6 @@ if (NOT_GENERIC || INCORRECT_NAME) {
2856
2850
  }, { unsafe: true });
2857
2851
  }
2858
2852
 
2859
- var classof = classofRaw$2;
2860
-
2861
- // `IsArray` abstract operation
2862
- // https://tc39.es/ecma262/#sec-isarray
2863
- // eslint-disable-next-line es/no-array-isarray -- safe
2864
- var isArray$2 = Array.isArray || function isArray(argument) {
2865
- return classof(argument) == 'Array';
2866
- };
2867
-
2868
- var $TypeError$1 = TypeError;
2869
- var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991
2870
-
2871
- var doesNotExceedSafeInteger$1 = function (it) {
2872
- if (it > MAX_SAFE_INTEGER) throw $TypeError$1('Maximum allowed index exceeded');
2873
- return it;
2874
- };
2875
-
2876
- var isArray$1 = isArray$2;
2877
- var lengthOfArrayLike$2 = lengthOfArrayLike$5;
2878
- var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1;
2879
- var bind = functionBindContext;
2880
-
2881
- // `FlattenIntoArray` abstract operation
2882
- // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
2883
- var flattenIntoArray$1 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
2884
- var targetIndex = start;
2885
- var sourceIndex = 0;
2886
- var mapFn = mapper ? bind(mapper, thisArg) : false;
2887
- var element, elementLen;
2888
-
2889
- while (sourceIndex < sourceLen) {
2890
- if (sourceIndex in source) {
2891
- element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
2892
-
2893
- if (depth > 0 && isArray$1(element)) {
2894
- elementLen = lengthOfArrayLike$2(element);
2895
- targetIndex = flattenIntoArray$1(target, original, element, elementLen, targetIndex, depth - 1) - 1;
2896
- } else {
2897
- doesNotExceedSafeInteger(targetIndex + 1);
2898
- target[targetIndex] = element;
2899
- }
2900
-
2901
- targetIndex++;
2902
- }
2903
- sourceIndex++;
2904
- }
2905
- return targetIndex;
2906
- };
2907
-
2908
- var flattenIntoArray_1 = flattenIntoArray$1;
2909
-
2910
- var isArray = isArray$2;
2911
- var isConstructor = isConstructor$2;
2912
- var isObject$1 = isObject$a;
2913
- var wellKnownSymbol$3 = wellKnownSymbol$h;
2914
-
2915
- var SPECIES = wellKnownSymbol$3('species');
2916
- var $Array = Array;
2917
-
2918
- // a part of `ArraySpeciesCreate` abstract operation
2919
- // https://tc39.es/ecma262/#sec-arrayspeciescreate
2920
- var arraySpeciesConstructor$1 = function (originalArray) {
2921
- var C;
2922
- if (isArray(originalArray)) {
2923
- C = originalArray.constructor;
2924
- // cross-realm fallback
2925
- if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
2926
- else if (isObject$1(C)) {
2927
- C = C[SPECIES];
2928
- if (C === null) C = undefined;
2929
- }
2930
- } return C === undefined ? $Array : C;
2931
- };
2932
-
2933
- var arraySpeciesConstructor = arraySpeciesConstructor$1;
2934
-
2935
- // `ArraySpeciesCreate` abstract operation
2936
- // https://tc39.es/ecma262/#sec-arrayspeciescreate
2937
- var arraySpeciesCreate$1 = function (originalArray, length) {
2938
- return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
2939
- };
2940
-
2941
- var $$3 = _export;
2942
- var flattenIntoArray = flattenIntoArray_1;
2943
- var toObject$2 = toObject$5;
2944
- var lengthOfArrayLike$1 = lengthOfArrayLike$5;
2945
- var toIntegerOrInfinity = toIntegerOrInfinity$3;
2946
- var arraySpeciesCreate = arraySpeciesCreate$1;
2947
-
2948
- // `Array.prototype.flat` method
2949
- // https://tc39.es/ecma262/#sec-array.prototype.flat
2950
- $$3({ target: 'Array', proto: true }, {
2951
- flat: function flat(/* depthArg = 1 */) {
2952
- var depthArg = arguments.length ? arguments[0] : undefined;
2953
- var O = toObject$2(this);
2954
- var sourceLen = lengthOfArrayLike$1(O);
2955
- var A = arraySpeciesCreate(O, 0);
2956
- A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));
2957
- return A;
2958
- }
2959
- });
2960
-
2961
- // this method was added to unscopables after implementation
2962
- // in popular engines, so it's moved to a separate module
2963
- var addToUnscopables$1 = addToUnscopables$3;
2964
-
2965
- // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
2966
- addToUnscopables$1('flat');
2967
-
2968
2853
  var fails$3 = fails$h;
2969
2854
 
2970
2855
  var correctPrototypeGetter = !fails$3(function () {
@@ -2976,7 +2861,7 @@ var correctPrototypeGetter = !fails$3(function () {
2976
2861
 
2977
2862
  var hasOwn = hasOwnProperty_1;
2978
2863
  var isCallable$2 = isCallable$k;
2979
- var toObject$1 = toObject$5;
2864
+ var toObject$2 = toObject$5;
2980
2865
  var sharedKey = sharedKey$3;
2981
2866
  var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter;
2982
2867
 
@@ -2988,7 +2873,7 @@ var ObjectPrototype = $Object.prototype;
2988
2873
  // https://tc39.es/ecma262/#sec-object.getprototypeof
2989
2874
  // eslint-disable-next-line es/no-object-getprototypeof -- safe
2990
2875
  var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {
2991
- var object = toObject$1(O);
2876
+ var object = toObject$2(O);
2992
2877
  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
2993
2878
  var constructor = object.constructor;
2994
2879
  if (isCallable$2(constructor) && object instanceof constructor) {
@@ -2998,12 +2883,12 @@ var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : f
2998
2883
 
2999
2884
  var fails$2 = fails$h;
3000
2885
  var isCallable$1 = isCallable$k;
3001
- var isObject = isObject$a;
2886
+ var isObject$1 = isObject$a;
3002
2887
  var getPrototypeOf$1 = objectGetPrototypeOf;
3003
2888
  var defineBuiltIn$1 = defineBuiltIn$6;
3004
- var wellKnownSymbol$2 = wellKnownSymbol$h;
2889
+ var wellKnownSymbol$3 = wellKnownSymbol$h;
3005
2890
 
3006
- var ITERATOR$3 = wellKnownSymbol$2('iterator');
2891
+ var ITERATOR$3 = wellKnownSymbol$3('iterator');
3007
2892
  var BUGGY_SAFARI_ITERATORS$1 = false;
3008
2893
 
3009
2894
  // `%IteratorPrototype%` object
@@ -3021,7 +2906,7 @@ if ([].keys) {
3021
2906
  }
3022
2907
  }
3023
2908
 
3024
- var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype$2) || fails$2(function () {
2909
+ var NEW_ITERATOR_PROTOTYPE = !isObject$1(IteratorPrototype$2) || fails$2(function () {
3025
2910
  var test = {};
3026
2911
  // FF44- legacy iterators case
3027
2912
  return IteratorPrototype$2[ITERATOR$3].call(test) !== test;
@@ -3058,7 +2943,7 @@ var iteratorCreateConstructor = function (IteratorConstructor, NAME, next, ENUME
3058
2943
  return IteratorConstructor;
3059
2944
  };
3060
2945
 
3061
- var $$2 = _export;
2946
+ var $$3 = _export;
3062
2947
  var call = functionCall;
3063
2948
  var FunctionName = functionName;
3064
2949
  var isCallable = isCallable$k;
@@ -3068,7 +2953,7 @@ var setPrototypeOf = objectSetPrototypeOf;
3068
2953
  var setToStringTag = setToStringTag$3;
3069
2954
  var createNonEnumerableProperty$1 = createNonEnumerableProperty$4;
3070
2955
  var defineBuiltIn = defineBuiltIn$6;
3071
- var wellKnownSymbol$1 = wellKnownSymbol$h;
2956
+ var wellKnownSymbol$2 = wellKnownSymbol$h;
3072
2957
  var Iterators$1 = iterators;
3073
2958
  var IteratorsCore = iteratorsCore;
3074
2959
 
@@ -3076,7 +2961,7 @@ var PROPER_FUNCTION_NAME = FunctionName.PROPER;
3076
2961
  var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
3077
2962
  var IteratorPrototype = IteratorsCore.IteratorPrototype;
3078
2963
  var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
3079
- var ITERATOR$2 = wellKnownSymbol$1('iterator');
2964
+ var ITERATOR$2 = wellKnownSymbol$2('iterator');
3080
2965
  var KEYS = 'keys';
3081
2966
  var VALUES = 'values';
3082
2967
  var ENTRIES = 'entries';
@@ -3143,7 +3028,7 @@ var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAUL
3143
3028
  if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
3144
3029
  defineBuiltIn(IterablePrototype, KEY, methods[KEY]);
3145
3030
  }
3146
- } else $$2({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
3031
+ } else $$3({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
3147
3032
  }
3148
3033
 
3149
3034
  // define iterator
@@ -3162,7 +3047,7 @@ var createIterResultObject$1 = function (value, done) {
3162
3047
  };
3163
3048
 
3164
3049
  var toIndexedObject = toIndexedObject$5;
3165
- var addToUnscopables = addToUnscopables$3;
3050
+ var addToUnscopables$1 = addToUnscopables$3;
3166
3051
  var Iterators = iterators;
3167
3052
  var InternalStateModule = internalState;
3168
3053
  var defineProperty = objectDefineProperty.f;
@@ -3213,9 +3098,9 @@ var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind)
3213
3098
  var values = Iterators.Arguments = Iterators.Array;
3214
3099
 
3215
3100
  // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
3216
- addToUnscopables('keys');
3217
- addToUnscopables('values');
3218
- addToUnscopables('entries');
3101
+ addToUnscopables$1('keys');
3102
+ addToUnscopables$1('values');
3103
+ addToUnscopables$1('entries');
3219
3104
 
3220
3105
  // V8 ~ Chrome 45- bug
3221
3106
  if (DESCRIPTORS && values.name !== 'values') try {
@@ -3271,10 +3156,10 @@ var DOMIterables = domIterables;
3271
3156
  var DOMTokenListPrototype = domTokenListPrototype;
3272
3157
  var ArrayIteratorMethods = es_array_iterator;
3273
3158
  var createNonEnumerableProperty = createNonEnumerableProperty$4;
3274
- var wellKnownSymbol = wellKnownSymbol$h;
3159
+ var wellKnownSymbol$1 = wellKnownSymbol$h;
3275
3160
 
3276
- var ITERATOR$1 = wellKnownSymbol('iterator');
3277
- var TO_STRING_TAG = wellKnownSymbol('toStringTag');
3161
+ var ITERATOR$1 = wellKnownSymbol$1('iterator');
3162
+ var TO_STRING_TAG = wellKnownSymbol$1('toStringTag');
3278
3163
  var ArrayValues = ArrayIteratorMethods.values;
3279
3164
 
3280
3165
  var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
@@ -3305,59 +3190,119 @@ for (var COLLECTION_NAME in DOMIterables) {
3305
3190
 
3306
3191
  handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
3307
3192
 
3308
- class ElementSeenObserver {
3309
- constructor(_options) {
3310
- this._options = _options;
3311
- this._elementDelays = new WeakMap();
3312
- this._intersectionTimers = new WeakMap();
3313
- if (typeof IntersectionObserver !== 'undefined') {
3314
- this._intersectionObserver = new IntersectionObserver(this.onIntersection.bind(this));
3315
- }
3316
- }
3317
- onIntersection(entries) {
3318
- entries.forEach(entry => {
3319
- const {
3320
- isIntersecting,
3321
- target
3322
- } = entry;
3323
- if (isIntersecting) {
3324
- const delay = this._elementDelays.get(target);
3325
- const timeOut = window.setTimeout(() => {
3326
- this._options.onElementSeen(target);
3327
- }, delay);
3328
- this._intersectionTimers.set(target, timeOut);
3193
+ var classof = classofRaw$2;
3194
+
3195
+ // `IsArray` abstract operation
3196
+ // https://tc39.es/ecma262/#sec-isarray
3197
+ // eslint-disable-next-line es/no-array-isarray -- safe
3198
+ var isArray$2 = Array.isArray || function isArray(argument) {
3199
+ return classof(argument) == 'Array';
3200
+ };
3201
+
3202
+ var $TypeError$1 = TypeError;
3203
+ var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991
3204
+
3205
+ var doesNotExceedSafeInteger$1 = function (it) {
3206
+ if (it > MAX_SAFE_INTEGER) throw $TypeError$1('Maximum allowed index exceeded');
3207
+ return it;
3208
+ };
3209
+
3210
+ var isArray$1 = isArray$2;
3211
+ var lengthOfArrayLike$2 = lengthOfArrayLike$5;
3212
+ var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1;
3213
+ var bind = functionBindContext;
3214
+
3215
+ // `FlattenIntoArray` abstract operation
3216
+ // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
3217
+ var flattenIntoArray$1 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
3218
+ var targetIndex = start;
3219
+ var sourceIndex = 0;
3220
+ var mapFn = mapper ? bind(mapper, thisArg) : false;
3221
+ var element, elementLen;
3222
+
3223
+ while (sourceIndex < sourceLen) {
3224
+ if (sourceIndex in source) {
3225
+ element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
3226
+
3227
+ if (depth > 0 && isArray$1(element)) {
3228
+ elementLen = lengthOfArrayLike$2(element);
3229
+ targetIndex = flattenIntoArray$1(target, original, element, elementLen, targetIndex, depth - 1) - 1;
3329
3230
  } else {
3330
- const timeOut = this._intersectionTimers.get(target);
3331
- if (typeof timeOut !== 'undefined') {
3332
- window.clearTimeout(timeOut);
3333
- }
3231
+ doesNotExceedSafeInteger(targetIndex + 1);
3232
+ target[targetIndex] = element;
3334
3233
  }
3335
- });
3336
- }
3337
- observe(element, options) {
3338
- var _a, _b;
3339
- this._elementDelays.set(element, (_a = options === null || options === void 0 ? void 0 : options.delay) !== null && _a !== void 0 ? _a : 2000);
3340
- (_b = this._intersectionObserver) === null || _b === void 0 ? void 0 : _b.observe(element);
3341
- }
3342
- unobserve(element) {
3343
- var _a;
3344
- (_a = this._intersectionObserver) === null || _a === void 0 ? void 0 : _a.unobserve(element);
3234
+
3235
+ targetIndex++;
3236
+ }
3237
+ sourceIndex++;
3345
3238
  }
3346
- }
3239
+ return targetIndex;
3240
+ };
3241
+
3242
+ var flattenIntoArray_1 = flattenIntoArray$1;
3243
+
3244
+ var isArray = isArray$2;
3245
+ var isConstructor = isConstructor$2;
3246
+ var isObject = isObject$a;
3247
+ var wellKnownSymbol = wellKnownSymbol$h;
3248
+
3249
+ var SPECIES = wellKnownSymbol('species');
3250
+ var $Array = Array;
3347
3251
 
3348
- const acceptsCredentials = plugin => {
3349
- return typeof plugin === 'object' && plugin !== null && 'setCredentials' in plugin && typeof plugin.setCredentials === 'function';
3252
+ // a part of `ArraySpeciesCreate` abstract operation
3253
+ // https://tc39.es/ecma262/#sec-arrayspeciescreate
3254
+ var arraySpeciesConstructor$1 = function (originalArray) {
3255
+ var C;
3256
+ if (isArray(originalArray)) {
3257
+ C = originalArray.constructor;
3258
+ // cross-realm fallback
3259
+ if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
3260
+ else if (isObject(C)) {
3261
+ C = C[SPECIES];
3262
+ if (C === null) C = undefined;
3263
+ }
3264
+ } return C === undefined ? $Array : C;
3350
3265
  };
3351
3266
 
3352
- const isInterestedInHiddenPage = arg => {
3353
- return typeof arg === 'object' && arg !== null && PAGE_HIDDEN in arg && typeof arg[PAGE_HIDDEN] === 'function';
3267
+ var arraySpeciesConstructor = arraySpeciesConstructor$1;
3268
+
3269
+ // `ArraySpeciesCreate` abstract operation
3270
+ // https://tc39.es/ecma262/#sec-arrayspeciescreate
3271
+ var arraySpeciesCreate$1 = function (originalArray, length) {
3272
+ return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
3354
3273
  };
3355
3274
 
3275
+ var $$2 = _export;
3276
+ var flattenIntoArray = flattenIntoArray_1;
3277
+ var toObject$1 = toObject$5;
3278
+ var lengthOfArrayLike$1 = lengthOfArrayLike$5;
3279
+ var toIntegerOrInfinity = toIntegerOrInfinity$3;
3280
+ var arraySpeciesCreate = arraySpeciesCreate$1;
3281
+
3282
+ // `Array.prototype.flat` method
3283
+ // https://tc39.es/ecma262/#sec-array.prototype.flat
3284
+ $$2({ target: 'Array', proto: true }, {
3285
+ flat: function flat(/* depthArg = 1 */) {
3286
+ var depthArg = arguments.length ? arguments[0] : undefined;
3287
+ var O = toObject$1(this);
3288
+ var sourceLen = lengthOfArrayLike$1(O);
3289
+ var A = arraySpeciesCreate(O, 0);
3290
+ A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));
3291
+ return A;
3292
+ }
3293
+ });
3294
+
3295
+ // this method was added to unscopables after implementation
3296
+ // in popular engines, so it's moved to a separate module
3297
+ var addToUnscopables = addToUnscopables$3;
3298
+
3299
+ // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
3300
+ addToUnscopables('flat');
3301
+
3356
3302
  class Ninetailed {
3357
3303
  constructor(ninetailedApiClientInstanceOrOptions, {
3358
3304
  plugins,
3359
3305
  url,
3360
- profile,
3361
3306
  locale,
3362
3307
  requestTimeout,
3363
3308
  onLog,
@@ -3408,28 +3353,6 @@ class Ninetailed {
3408
3353
  type: HAS_SEEN_EXPERIENCE
3409
3354
  }));
3410
3355
  };
3411
- this.observeElement = (payload, options) => {
3412
- const {
3413
- element
3414
- } = payload,
3415
- remaingPayload = __rest(payload, ["element"]);
3416
- this.observedElements.set(element, remaingPayload);
3417
- this.elementSeenObserver.observe(element, options);
3418
- };
3419
- this.unobserveElement = element => {
3420
- this.observedElements.delete(element);
3421
- this.elementSeenObserver.unobserve(element);
3422
- };
3423
- this.onElementSeen = element => {
3424
- const payload = this.observedElements.get(element);
3425
- if (typeof payload !== 'undefined') {
3426
- this.instance.dispatch(Object.assign(Object.assign({
3427
- element
3428
- }, payload), {
3429
- type: HAS_SEEN_ELEMENT
3430
- }));
3431
- }
3432
- };
3433
3356
  this.identify = (uid, traits, options) => __awaiter(this, void 0, void 0, function* () {
3434
3357
  try {
3435
3358
  const result = experience_jsShared.Traits.default({}).safeParse(traits);
@@ -3468,12 +3391,14 @@ class Ninetailed {
3468
3391
  cb(Object.assign(Object.assign({}, this._profileState), {
3469
3392
  status: 'error',
3470
3393
  profile: payload.profile,
3394
+ experiences: payload.experiences,
3471
3395
  error: payload.error
3472
3396
  }));
3473
3397
  } else {
3474
3398
  cb(Object.assign(Object.assign({}, this._profileState), {
3475
3399
  status: 'success',
3476
3400
  profile: payload.profile,
3401
+ experiences: payload.experiences,
3477
3402
  error: null
3478
3403
  }));
3479
3404
  }
@@ -3497,18 +3422,6 @@ class Ninetailed {
3497
3422
  this.onIsInitialized(resolve);
3498
3423
  });
3499
3424
  };
3500
- this.onVisibilityChange = () => {
3501
- if (typeof document === 'undefined') {
3502
- return;
3503
- }
3504
- document.addEventListener('visibilitychange', () => {
3505
- if (document.visibilityState === 'hidden') {
3506
- this.instance.dispatch({
3507
- type: PAGE_HIDDEN
3508
- });
3509
- }
3510
- });
3511
- };
3512
3425
  if (ninetailedApiClientInstanceOrOptions instanceof experience_jsShared.NinetailedApiClient) {
3513
3426
  this.apiClient = ninetailedApiClientInstanceOrOptions;
3514
3427
  } else {
@@ -3526,30 +3439,22 @@ class Ninetailed {
3526
3439
  preview
3527
3440
  });
3528
3441
  }
3529
- this.plugins = (plugins !== null && plugins !== void 0 ? plugins : []).flat();
3530
- this.plugins.forEach(plugin => {
3531
- if (acceptsCredentials(plugin) && this.clientId && this.environment) {
3532
- plugin.setCredentials({
3442
+ this.plugins = [...(plugins || []).map(plugin => {
3443
+ if ('setCredentials' in plugin && typeof plugin['setCredentials'] === 'function') {
3444
+ plugin['setCredentials']({
3533
3445
  clientId: this.clientId,
3534
3446
  environment: this.environment
3535
3447
  });
3536
3448
  }
3537
- });
3538
- if (profile) {
3539
- this._profileState = {
3540
- status: 'success',
3541
- profile,
3542
- error: null,
3543
- from: 'hydrated'
3544
- };
3545
- } else {
3546
- this._profileState = {
3547
- status: 'loading',
3548
- profile: null,
3549
- error: null,
3550
- from: 'api'
3551
- };
3552
- }
3449
+ return plugin;
3450
+ }).flat()];
3451
+ this._profileState = {
3452
+ status: 'loading',
3453
+ profile: null,
3454
+ experiences: null,
3455
+ error: null,
3456
+ from: 'api'
3457
+ };
3553
3458
  if (typeof onLog === 'function') {
3554
3459
  experience_jsShared.logger.addSink(new experience_jsShared.OnLogLogSink(onLog));
3555
3460
  }
@@ -3559,7 +3464,6 @@ class Ninetailed {
3559
3464
  this.logger = experience_jsShared.logger;
3560
3465
  this.eventQueue = ninetailedPlugin({
3561
3466
  apiClient: this.apiClient,
3562
- profile,
3563
3467
  locale,
3564
3468
  requestTimeout,
3565
3469
  ninetailed: this
@@ -3578,18 +3482,11 @@ class Ninetailed {
3578
3482
  this._profileState = profileState;
3579
3483
  if (typeof window !== 'undefined') {
3580
3484
  window.ninetailed = Object.assign({}, window.ninetailed, {
3581
- profile: this.profileState.profile
3485
+ profile: this.profileState.profile,
3486
+ experiences: this.profileState.experiences
3582
3487
  });
3583
3488
  }
3584
3489
  });
3585
- this.observedElements = new WeakMap();
3586
- this.elementSeenObserver = new ElementSeenObserver({
3587
- onElementSeen: this.onElementSeen.bind(this)
3588
- });
3589
- const hasPluginsInterestedInHiddenPage = this.plugins.some(isInterestedInHiddenPage);
3590
- if (hasPluginsInterestedInHiddenPage) {
3591
- this.onVisibilityChange();
3592
- }
3593
3490
  this.registerWindowHandlers();
3594
3491
  }
3595
3492
  get profileState() {
@@ -4016,9 +3913,9 @@ Object.defineProperty(exports, 'selectExperienceBaselineWithVariants', {
4016
3913
  enumerable: true,
4017
3914
  get: function () { return experience_jsShared.selectBaselineWithVariants; }
4018
3915
  });
4019
- Object.defineProperty(exports, 'selectExperienceVariant', {
3916
+ Object.defineProperty(exports, 'selectExperienceVariantClientSide', {
4020
3917
  enumerable: true,
4021
- get: function () { return experience_jsShared.selectVariant; }
3918
+ get: function () { return experience_jsShared.selectVariantClientSide; }
4022
3919
  });
4023
3920
  Object.defineProperty(exports, 'selectExperienceVariants', {
4024
3921
  enumerable: true,
@@ -4032,14 +3929,13 @@ exports.ANONYMOUS_ID = ANONYMOUS_ID;
4032
3929
  exports.CONSENT = CONSENT;
4033
3930
  exports.DEBUG_FLAG = DEBUG_FLAG;
4034
3931
  exports.EMPTY_MERGE_ID = EMPTY_MERGE_ID;
3932
+ exports.EXPERIENCES_FALLBACK_CACHE = EXPERIENCES_FALLBACK_CACHE;
4035
3933
  exports.HAS_SEEN_COMPONENT = HAS_SEEN_COMPONENT;
4036
- exports.HAS_SEEN_ELEMENT = HAS_SEEN_ELEMENT;
4037
3934
  exports.HAS_SEEN_EXPERIENCE = HAS_SEEN_EXPERIENCE;
4038
3935
  exports.LEGACY_ANONYMOUS_ID = LEGACY_ANONYMOUS_ID;
4039
3936
  exports.Ninetailed = Ninetailed;
4040
3937
  exports.NinetailedPlugin = NinetailedPlugin;
4041
3938
  exports.OnChangeEmitter = OnChangeEmitter;
4042
- exports.PAGE_HIDDEN = PAGE_HIDDEN;
4043
3939
  exports.PLUGIN_NAME = PLUGIN_NAME;
4044
3940
  exports.PROFILE_CHANGE = PROFILE_CHANGE;
4045
3941
  exports.PROFILE_FALLBACK_CACHE = PROFILE_FALLBACK_CACHE;
@@ -4047,7 +3943,6 @@ exports.PROFILE_RESET = PROFILE_RESET;
4047
3943
  exports.SET_ENABLED_FEATURES = SET_ENABLED_FEATURES;
4048
3944
  exports.TrackComponentProperties = TrackComponentProperties;
4049
3945
  exports.TrackExperienceProperties = TrackExperienceProperties;
4050
- exports.buildClientNinetailedRequestContext = buildClientNinetailedRequestContext;
4051
3946
  exports.decodeExperienceVariantsMap = decodeExperienceVariantsMap;
4052
3947
  exports.makeExperienceSelectMiddleware = makeExperienceSelectMiddleware;
4053
3948
  exports.ninetailedPlugin = ninetailedPlugin;