@ninetailed/experience.js 4.3.0-beta.3 → 4.5.0-beta.1

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) {
@@ -2605,11 +2591,13 @@ const ninetailedPlugin = ({
2605
2591
  apiClient,
2606
2592
  profile,
2607
2593
  locale,
2608
- ninetailed
2594
+ ninetailed,
2595
+ buildClientContext
2609
2596
  }) => {
2610
2597
  let _instance;
2611
2598
  let queue = [];
2612
2599
  let enabledFeatures = Object.values(experience_jsShared.FEATURES);
2600
+ const buildContext = buildClientContext || buildClientNinetailedRequestContext;
2613
2601
  const flush = () => __awaiter(void 0, void 0, void 0, function* () {
2614
2602
  const events = Object.assign([], queue);
2615
2603
  experience_jsShared.logger.info('Start flushing events.');
@@ -2713,7 +2701,7 @@ const ninetailedPlugin = ({
2713
2701
  payload
2714
2702
  }) => __awaiter(void 0, void 0, void 0, function* () {
2715
2703
  experience_jsShared.logger.info('Sending Page event.');
2716
- const ctx = buildClientNinetailedRequestContext();
2704
+ const ctx = buildContext();
2717
2705
  return enqueueEvent(experience_jsShared.buildPageEvent({
2718
2706
  messageId: payload.meta.rid,
2719
2707
  timestamp: payload.meta.ts,
@@ -2728,7 +2716,7 @@ const ninetailedPlugin = ({
2728
2716
  payload
2729
2717
  }) => __awaiter(void 0, void 0, void 0, function* () {
2730
2718
  experience_jsShared.logger.info('Sending Track event.');
2731
- const ctx = buildClientNinetailedRequestContext();
2719
+ const ctx = buildContext();
2732
2720
  return enqueueEvent(experience_jsShared.buildTrackEvent({
2733
2721
  messageId: payload.meta.rid,
2734
2722
  timestamp: payload.meta.ts,
@@ -2744,7 +2732,7 @@ const ninetailedPlugin = ({
2744
2732
  payload
2745
2733
  }) => __awaiter(void 0, void 0, void 0, function* () {
2746
2734
  experience_jsShared.logger.info('Sending Identify event.');
2747
- const ctx = buildClientNinetailedRequestContext();
2735
+ const ctx = buildContext();
2748
2736
  if (payload.userId === EMPTY_MERGE_ID && (!payload.traits || typeof payload.traits === 'object' && Object.keys(payload.traits).length === 0)) {
2749
2737
  experience_jsShared.logger.info('Skipping Identify event as no userId and no traits are set.');
2750
2738
  return;
@@ -2856,115 +2844,6 @@ if (NOT_GENERIC || INCORRECT_NAME) {
2856
2844
  }, { unsafe: true });
2857
2845
  }
2858
2846
 
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
2847
  var fails$3 = fails$h;
2969
2848
 
2970
2849
  var correctPrototypeGetter = !fails$3(function () {
@@ -2976,7 +2855,7 @@ var correctPrototypeGetter = !fails$3(function () {
2976
2855
 
2977
2856
  var hasOwn = hasOwnProperty_1;
2978
2857
  var isCallable$2 = isCallable$k;
2979
- var toObject$1 = toObject$5;
2858
+ var toObject$2 = toObject$5;
2980
2859
  var sharedKey = sharedKey$3;
2981
2860
  var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter;
2982
2861
 
@@ -2988,7 +2867,7 @@ var ObjectPrototype = $Object.prototype;
2988
2867
  // https://tc39.es/ecma262/#sec-object.getprototypeof
2989
2868
  // eslint-disable-next-line es/no-object-getprototypeof -- safe
2990
2869
  var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {
2991
- var object = toObject$1(O);
2870
+ var object = toObject$2(O);
2992
2871
  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
2993
2872
  var constructor = object.constructor;
2994
2873
  if (isCallable$2(constructor) && object instanceof constructor) {
@@ -2998,12 +2877,12 @@ var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : f
2998
2877
 
2999
2878
  var fails$2 = fails$h;
3000
2879
  var isCallable$1 = isCallable$k;
3001
- var isObject = isObject$a;
2880
+ var isObject$1 = isObject$a;
3002
2881
  var getPrototypeOf$1 = objectGetPrototypeOf;
3003
2882
  var defineBuiltIn$1 = defineBuiltIn$6;
3004
- var wellKnownSymbol$2 = wellKnownSymbol$h;
2883
+ var wellKnownSymbol$3 = wellKnownSymbol$h;
3005
2884
 
3006
- var ITERATOR$3 = wellKnownSymbol$2('iterator');
2885
+ var ITERATOR$3 = wellKnownSymbol$3('iterator');
3007
2886
  var BUGGY_SAFARI_ITERATORS$1 = false;
3008
2887
 
3009
2888
  // `%IteratorPrototype%` object
@@ -3021,7 +2900,7 @@ if ([].keys) {
3021
2900
  }
3022
2901
  }
3023
2902
 
3024
- var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype$2) || fails$2(function () {
2903
+ var NEW_ITERATOR_PROTOTYPE = !isObject$1(IteratorPrototype$2) || fails$2(function () {
3025
2904
  var test = {};
3026
2905
  // FF44- legacy iterators case
3027
2906
  return IteratorPrototype$2[ITERATOR$3].call(test) !== test;
@@ -3058,7 +2937,7 @@ var iteratorCreateConstructor = function (IteratorConstructor, NAME, next, ENUME
3058
2937
  return IteratorConstructor;
3059
2938
  };
3060
2939
 
3061
- var $$2 = _export;
2940
+ var $$3 = _export;
3062
2941
  var call = functionCall;
3063
2942
  var FunctionName = functionName;
3064
2943
  var isCallable = isCallable$k;
@@ -3068,7 +2947,7 @@ var setPrototypeOf = objectSetPrototypeOf;
3068
2947
  var setToStringTag = setToStringTag$3;
3069
2948
  var createNonEnumerableProperty$1 = createNonEnumerableProperty$4;
3070
2949
  var defineBuiltIn = defineBuiltIn$6;
3071
- var wellKnownSymbol$1 = wellKnownSymbol$h;
2950
+ var wellKnownSymbol$2 = wellKnownSymbol$h;
3072
2951
  var Iterators$1 = iterators;
3073
2952
  var IteratorsCore = iteratorsCore;
3074
2953
 
@@ -3076,7 +2955,7 @@ var PROPER_FUNCTION_NAME = FunctionName.PROPER;
3076
2955
  var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
3077
2956
  var IteratorPrototype = IteratorsCore.IteratorPrototype;
3078
2957
  var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
3079
- var ITERATOR$2 = wellKnownSymbol$1('iterator');
2958
+ var ITERATOR$2 = wellKnownSymbol$2('iterator');
3080
2959
  var KEYS = 'keys';
3081
2960
  var VALUES = 'values';
3082
2961
  var ENTRIES = 'entries';
@@ -3143,7 +3022,7 @@ var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAUL
3143
3022
  if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
3144
3023
  defineBuiltIn(IterablePrototype, KEY, methods[KEY]);
3145
3024
  }
3146
- } else $$2({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
3025
+ } else $$3({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
3147
3026
  }
3148
3027
 
3149
3028
  // define iterator
@@ -3162,7 +3041,7 @@ var createIterResultObject$1 = function (value, done) {
3162
3041
  };
3163
3042
 
3164
3043
  var toIndexedObject = toIndexedObject$5;
3165
- var addToUnscopables = addToUnscopables$3;
3044
+ var addToUnscopables$1 = addToUnscopables$3;
3166
3045
  var Iterators = iterators;
3167
3046
  var InternalStateModule = internalState;
3168
3047
  var defineProperty = objectDefineProperty.f;
@@ -3213,9 +3092,9 @@ var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind)
3213
3092
  var values = Iterators.Arguments = Iterators.Array;
3214
3093
 
3215
3094
  // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
3216
- addToUnscopables('keys');
3217
- addToUnscopables('values');
3218
- addToUnscopables('entries');
3095
+ addToUnscopables$1('keys');
3096
+ addToUnscopables$1('values');
3097
+ addToUnscopables$1('entries');
3219
3098
 
3220
3099
  // V8 ~ Chrome 45- bug
3221
3100
  if (DESCRIPTORS && values.name !== 'values') try {
@@ -3271,10 +3150,10 @@ var DOMIterables = domIterables;
3271
3150
  var DOMTokenListPrototype = domTokenListPrototype;
3272
3151
  var ArrayIteratorMethods = es_array_iterator;
3273
3152
  var createNonEnumerableProperty = createNonEnumerableProperty$4;
3274
- var wellKnownSymbol = wellKnownSymbol$h;
3153
+ var wellKnownSymbol$1 = wellKnownSymbol$h;
3275
3154
 
3276
- var ITERATOR$1 = wellKnownSymbol('iterator');
3277
- var TO_STRING_TAG = wellKnownSymbol('toStringTag');
3155
+ var ITERATOR$1 = wellKnownSymbol$1('iterator');
3156
+ var TO_STRING_TAG = wellKnownSymbol$1('toStringTag');
3278
3157
  var ArrayValues = ArrayIteratorMethods.values;
3279
3158
 
3280
3159
  var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
@@ -3305,54 +3184,115 @@ for (var COLLECTION_NAME in DOMIterables) {
3305
3184
 
3306
3185
  handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
3307
3186
 
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);
3187
+ var classof = classofRaw$2;
3188
+
3189
+ // `IsArray` abstract operation
3190
+ // https://tc39.es/ecma262/#sec-isarray
3191
+ // eslint-disable-next-line es/no-array-isarray -- safe
3192
+ var isArray$2 = Array.isArray || function isArray(argument) {
3193
+ return classof(argument) == 'Array';
3194
+ };
3195
+
3196
+ var $TypeError$1 = TypeError;
3197
+ var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991
3198
+
3199
+ var doesNotExceedSafeInteger$1 = function (it) {
3200
+ if (it > MAX_SAFE_INTEGER) throw $TypeError$1('Maximum allowed index exceeded');
3201
+ return it;
3202
+ };
3203
+
3204
+ var isArray$1 = isArray$2;
3205
+ var lengthOfArrayLike$2 = lengthOfArrayLike$5;
3206
+ var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1;
3207
+ var bind = functionBindContext;
3208
+
3209
+ // `FlattenIntoArray` abstract operation
3210
+ // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
3211
+ var flattenIntoArray$1 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
3212
+ var targetIndex = start;
3213
+ var sourceIndex = 0;
3214
+ var mapFn = mapper ? bind(mapper, thisArg) : false;
3215
+ var element, elementLen;
3216
+
3217
+ while (sourceIndex < sourceLen) {
3218
+ if (sourceIndex in source) {
3219
+ element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
3220
+
3221
+ if (depth > 0 && isArray$1(element)) {
3222
+ elementLen = lengthOfArrayLike$2(element);
3223
+ targetIndex = flattenIntoArray$1(target, original, element, elementLen, targetIndex, depth - 1) - 1;
3329
3224
  } else {
3330
- const timeOut = this._intersectionTimers.get(target);
3331
- if (typeof timeOut !== 'undefined') {
3332
- window.clearTimeout(timeOut);
3333
- }
3225
+ doesNotExceedSafeInteger(targetIndex + 1);
3226
+ target[targetIndex] = element;
3334
3227
  }
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);
3228
+
3229
+ targetIndex++;
3230
+ }
3231
+ sourceIndex++;
3345
3232
  }
3346
- }
3233
+ return targetIndex;
3234
+ };
3235
+
3236
+ var flattenIntoArray_1 = flattenIntoArray$1;
3347
3237
 
3348
- const acceptsCredentials = plugin => {
3349
- return typeof plugin === 'object' && plugin !== null && 'setCredentials' in plugin && typeof plugin.setCredentials === 'function';
3238
+ var isArray = isArray$2;
3239
+ var isConstructor = isConstructor$2;
3240
+ var isObject = isObject$a;
3241
+ var wellKnownSymbol = wellKnownSymbol$h;
3242
+
3243
+ var SPECIES = wellKnownSymbol('species');
3244
+ var $Array = Array;
3245
+
3246
+ // a part of `ArraySpeciesCreate` abstract operation
3247
+ // https://tc39.es/ecma262/#sec-arrayspeciescreate
3248
+ var arraySpeciesConstructor$1 = function (originalArray) {
3249
+ var C;
3250
+ if (isArray(originalArray)) {
3251
+ C = originalArray.constructor;
3252
+ // cross-realm fallback
3253
+ if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
3254
+ else if (isObject(C)) {
3255
+ C = C[SPECIES];
3256
+ if (C === null) C = undefined;
3257
+ }
3258
+ } return C === undefined ? $Array : C;
3350
3259
  };
3351
3260
 
3352
- const isInterestedInHiddenPage = arg => {
3353
- return typeof arg === 'object' && arg !== null && PAGE_HIDDEN in arg && typeof arg[PAGE_HIDDEN] === 'function';
3261
+ var arraySpeciesConstructor = arraySpeciesConstructor$1;
3262
+
3263
+ // `ArraySpeciesCreate` abstract operation
3264
+ // https://tc39.es/ecma262/#sec-arrayspeciescreate
3265
+ var arraySpeciesCreate$1 = function (originalArray, length) {
3266
+ return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
3354
3267
  };
3355
3268
 
3269
+ var $$2 = _export;
3270
+ var flattenIntoArray = flattenIntoArray_1;
3271
+ var toObject$1 = toObject$5;
3272
+ var lengthOfArrayLike$1 = lengthOfArrayLike$5;
3273
+ var toIntegerOrInfinity = toIntegerOrInfinity$3;
3274
+ var arraySpeciesCreate = arraySpeciesCreate$1;
3275
+
3276
+ // `Array.prototype.flat` method
3277
+ // https://tc39.es/ecma262/#sec-array.prototype.flat
3278
+ $$2({ target: 'Array', proto: true }, {
3279
+ flat: function flat(/* depthArg = 1 */) {
3280
+ var depthArg = arguments.length ? arguments[0] : undefined;
3281
+ var O = toObject$1(this);
3282
+ var sourceLen = lengthOfArrayLike$1(O);
3283
+ var A = arraySpeciesCreate(O, 0);
3284
+ A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));
3285
+ return A;
3286
+ }
3287
+ });
3288
+
3289
+ // this method was added to unscopables after implementation
3290
+ // in popular engines, so it's moved to a separate module
3291
+ var addToUnscopables = addToUnscopables$3;
3292
+
3293
+ // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
3294
+ addToUnscopables('flat');
3295
+
3356
3296
  class Ninetailed {
3357
3297
  constructor(ninetailedApiClientInstanceOrOptions, {
3358
3298
  plugins,
@@ -3361,7 +3301,8 @@ class Ninetailed {
3361
3301
  locale,
3362
3302
  requestTimeout,
3363
3303
  onLog,
3364
- onError
3304
+ onError,
3305
+ buildClientContext
3365
3306
  } = {}) {
3366
3307
  this.isInitialized = false;
3367
3308
  this.page = (data, options) => __awaiter(this, void 0, void 0, function* () {
@@ -3408,28 +3349,6 @@ class Ninetailed {
3408
3349
  type: HAS_SEEN_EXPERIENCE
3409
3350
  }));
3410
3351
  };
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
3352
  this.identify = (uid, traits, options) => __awaiter(this, void 0, void 0, function* () {
3434
3353
  try {
3435
3354
  const result = experience_jsShared.Traits.default({}).safeParse(traits);
@@ -3497,18 +3416,6 @@ class Ninetailed {
3497
3416
  this.onIsInitialized(resolve);
3498
3417
  });
3499
3418
  };
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
3419
  if (ninetailedApiClientInstanceOrOptions instanceof experience_jsShared.NinetailedApiClient) {
3513
3420
  this.apiClient = ninetailedApiClientInstanceOrOptions;
3514
3421
  } else {
@@ -3526,15 +3433,15 @@ class Ninetailed {
3526
3433
  preview
3527
3434
  });
3528
3435
  }
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({
3436
+ this.plugins = [...(plugins || []).map(plugin => {
3437
+ if ('setCredentials' in plugin && typeof plugin['setCredentials'] === 'function') {
3438
+ plugin['setCredentials']({
3533
3439
  clientId: this.clientId,
3534
3440
  environment: this.environment
3535
3441
  });
3536
3442
  }
3537
- });
3443
+ return plugin;
3444
+ }).flat()];
3538
3445
  if (profile) {
3539
3446
  this._profileState = {
3540
3447
  status: 'success',
@@ -3562,6 +3469,7 @@ class Ninetailed {
3562
3469
  profile,
3563
3470
  locale,
3564
3471
  requestTimeout,
3472
+ buildClientContext,
3565
3473
  ninetailed: this
3566
3474
  });
3567
3475
  this.instance = Analytics__default["default"]({
@@ -3582,14 +3490,6 @@ class Ninetailed {
3582
3490
  });
3583
3491
  }
3584
3492
  });
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
3493
  this.registerWindowHandlers();
3594
3494
  }
3595
3495
  get profileState() {
@@ -4033,13 +3933,11 @@ exports.CONSENT = CONSENT;
4033
3933
  exports.DEBUG_FLAG = DEBUG_FLAG;
4034
3934
  exports.EMPTY_MERGE_ID = EMPTY_MERGE_ID;
4035
3935
  exports.HAS_SEEN_COMPONENT = HAS_SEEN_COMPONENT;
4036
- exports.HAS_SEEN_ELEMENT = HAS_SEEN_ELEMENT;
4037
3936
  exports.HAS_SEEN_EXPERIENCE = HAS_SEEN_EXPERIENCE;
4038
3937
  exports.LEGACY_ANONYMOUS_ID = LEGACY_ANONYMOUS_ID;
4039
3938
  exports.Ninetailed = Ninetailed;
4040
3939
  exports.NinetailedPlugin = NinetailedPlugin;
4041
3940
  exports.OnChangeEmitter = OnChangeEmitter;
4042
- exports.PAGE_HIDDEN = PAGE_HIDDEN;
4043
3941
  exports.PLUGIN_NAME = PLUGIN_NAME;
4044
3942
  exports.PROFILE_CHANGE = PROFILE_CHANGE;
4045
3943
  exports.PROFILE_FALLBACK_CACHE = PROFILE_FALLBACK_CACHE;
@@ -4047,7 +3945,6 @@ exports.PROFILE_RESET = PROFILE_RESET;
4047
3945
  exports.SET_ENABLED_FEATURES = SET_ENABLED_FEATURES;
4048
3946
  exports.TrackComponentProperties = TrackComponentProperties;
4049
3947
  exports.TrackExperienceProperties = TrackExperienceProperties;
4050
- exports.buildClientNinetailedRequestContext = buildClientNinetailedRequestContext;
4051
3948
  exports.decodeExperienceVariantsMap = decodeExperienceVariantsMap;
4052
3949
  exports.makeExperienceSelectMiddleware = makeExperienceSelectMiddleware;
4053
3950
  exports.ninetailedPlugin = ninetailedPlugin;
package/index.d.ts CHANGED
@@ -7,9 +7,5 @@ export * from './lib/experience';
7
7
  export * from './lib/plugins/selectPluginsHavingExperienceSelectionMiddleware';
8
8
  export * from './lib/plugins/selectPluginsHavingOnChangeEmitter';
9
9
  export * from './lib/types/interfaces/HasExperienceSelectionMiddleware';
10
- export * from './lib/types/interfaces/InterestedInSeenElements';
11
- export * from './lib/types/interfaces/InterestedInProfileChange';
12
- export * from './lib/types/interfaces/InterestedInHiddenPage';
13
- export * from './lib/types/interfaces/AcceptsCredentials';
14
10
  export * from './lib/utils/OnChangeEmitter';
15
11
  export type { Profile } from '@ninetailed/experience.js-shared';