{ "version": 3, "sources": ["../../../node_modules/fuzzysort/fuzzysort.js", "../../../node_modules/tslib/tslib.es6.mjs", "../../../node_modules/@segment/analytics-core/dist/esm/emitter/interface.js", "../../../node_modules/@segment/analytics-core/dist/esm/plugins/index.js", "../../../node_modules/@segment/analytics-core/dist/esm/events/interfaces.js", "../../../node_modules/dset/dist/index.mjs", "../../../node_modules/@segment/analytics-core/src/utils/pick.ts", "../../../node_modules/@segment/analytics-core/src/validation/errors.ts", "../../../node_modules/@segment/analytics-core/src/validation/helpers.ts", "../../../node_modules/@segment/analytics-core/src/validation/assertions.ts", "../../../node_modules/@segment/analytics-core/src/events/index.ts", "../../../node_modules/@segment/analytics-core/src/callback/index.ts", "../../../node_modules/@segment/analytics-generic-utils/src/create-deferred/create-deferred.ts", "../../../node_modules/@segment/analytics-generic-utils/src/create-deferred/index.ts", "../../../node_modules/@segment/analytics-generic-utils/src/emitter/emitter.ts", "../../../node_modules/@segment/analytics-generic-utils/src/emitter/index.ts", "../../../node_modules/@segment/analytics-generic-utils/src/index.ts", "../../../node_modules/@segment/analytics-core/src/priority-queue/backoff.ts", "../../../node_modules/@segment/analytics-core/src/priority-queue/index.ts", "../../../node_modules/@lukeed/uuid/dist/index.mjs", "../../../node_modules/@segment/analytics-core/src/logger/index.ts", "../../../node_modules/@segment/analytics-core/src/stats/index.ts", "../../../node_modules/@segment/analytics-core/src/context/index.ts", "../../../node_modules/@segment/analytics-core/src/utils/group-by.ts", "../../../node_modules/@segment/analytics-core/src/utils/is-thenable.ts", "../../../node_modules/@segment/analytics-core/src/task/task-group.ts", "../../../node_modules/@segment/analytics-core/src/queue/delivery.ts", "../../../node_modules/@segment/analytics-core/src/queue/event-queue.ts", "../../../node_modules/@segment/analytics-core/dist/esm/analytics/index.js", "../../../node_modules/@segment/analytics-core/src/analytics/dispatch.ts", "../../../node_modules/@segment/analytics-core/src/utils/bind-all.ts", "../../../node_modules/@segment/analytics-core/src/index.ts", "../../../node_modules/@segment/analytics-next/src/core/environment/index.ts", "../../../node_modules/@segment/analytics-next/src/core/connection/index.ts", "../../../node_modules/unfetch/src/index.mjs", "../../../node_modules/@segment/analytics-next/src/lib/get-global.ts", "../../../node_modules/@segment/analytics-next/src/lib/fetch.ts", "../../../node_modules/@segment/analytics-next/src/generated/version.ts", "../../../node_modules/@segment/analytics-next/src/lib/version-type.ts", "../../../node_modules/@segment/analytics-next/src/core/constants/index.ts", "../../../node_modules/@segment/analytics-next/src/core/stats/remote-metrics.ts", "../../../node_modules/@segment/analytics-next/src/core/stats/index.ts", "../../../node_modules/@segment/analytics-next/src/core/context/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/priority-queue/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/priority-queue/persisted.ts", "../../../node_modules/@segment/analytics-next/src/lib/global-analytics-helper.ts", "../../../node_modules/@segment/analytics-next/src/core/callback/index.ts", "../../../node_modules/@segment/analytics-next/src/core/auto-track.ts", "../../../node_modules/obj-case/index.js", "../../../node_modules/@segment/facade/lib/address.js", "../../../node_modules/@segment/facade/lib/clone.js", "../../../node_modules/@segment/facade/lib/is-enabled.js", "../../../node_modules/@segment/isodate/lib/index.js", "../../../node_modules/new-date/lib/milliseconds.js", "../../../node_modules/new-date/lib/seconds.js", "../../../node_modules/new-date/lib/index.js", "../../../node_modules/@segment/isodate-traverse/lib/index.js", "../../../node_modules/@segment/facade/lib/facade.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/@segment/facade/lib/alias.js", "../../../node_modules/@segment/facade/lib/is-email.js", "../../../node_modules/@segment/facade/lib/group.js", "../../../node_modules/@segment/facade/lib/identify.js", "../../../node_modules/@segment/facade/lib/track.js", "../../../node_modules/@segment/facade/lib/page.js", "../../../node_modules/@segment/facade/lib/screen.js", "../../../node_modules/@segment/facade/lib/delete.js", "../../../node_modules/@segment/facade/lib/index.js", "../../../node_modules/@segment/analytics-next/src/lib/to-facade.ts", "../../../node_modules/@segment/analytics-next/src/plugins/middleware/index.ts", "../../../node_modules/@segment/analytics-next/src/core/query-string/pickPrefix.ts", "../../../node_modules/@segment/analytics-next/src/core/query-string/gracefulDecodeURIComponent.ts", "../../../node_modules/@segment/analytics-next/src/core/query-string/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/parse-cdn.ts", "../../../node_modules/@segment/analytics-next/src/lib/merged-options.ts", "../../../node_modules/@segment/analytics-next/src/lib/load-script.ts", "../../../node_modules/@segment/analytics-next/src/core/stats/metric-helpers.ts", "../../../node_modules/@segment/analytics-next/src/lib/p-while.ts", "../../../node_modules/@segment/analytics-next/src/vendor/tsub/tsub.ts", "../../../node_modules/@segment/analytics-next/src/plugins/routing-middleware/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/is-plan-event-enabled.ts", "../../../node_modules/@segment/analytics-next/src/plugins/ajs-destination/loader.ts", "../../../node_modules/@segment/analytics-next/src/plugins/ajs-destination/utils.ts", "../../../node_modules/@segment/analytics-next/src/plugins/ajs-destination/index.ts", "../../../node_modules/@segment/analytics.js-video-plugins/dist/index.umd.js", "../../../node_modules/@segment/analytics-next/src/plugins/legacy-video-plugins/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/schema-filter/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/remote-middleware/index.ts", "../../javascript/directory/filter.js", "../../../node_modules/@segment/analytics-next/src/core/arguments-resolver/index.ts", "../../../node_modules/@segment/analytics-next/src/core/events/index.ts", "../../../node_modules/@segment/analytics-next/src/core/page/get-page-context.ts", "../../../node_modules/@segment/analytics-next/src/lib/pick.ts", "../../../node_modules/@segment/analytics-next/src/core/plugin/index.ts", "../../../node_modules/@segment/analytics-next/src/core/queue/event-queue.ts", "../../../node_modules/@segment/analytics-next/src/core/user/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/bind-all.ts", "../../../node_modules/js-cookie/dist/js.cookie.mjs", "../../../node_modules/@segment/analytics-next/src/core/user/tld.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/localStorage.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/memoryStorage.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/types.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/settings.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/universalStorage.ts", "../../../node_modules/@segment/analytics-next/src/core/storage/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/is-thenable.ts", "../../../node_modules/@segment/analytics-next/src/lib/get-process-env.ts", "../../../node_modules/@segment/analytics-next/src/lib/client-hints/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/remote-loader/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/index.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/batched-dispatcher.ts", "../../../node_modules/@segment/analytics-next/src/lib/on-page-change.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/fetch-dispatcher.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/normalize.ts", "../../../node_modules/@segment/analytics-next/src/plugins/segmentio/schedule-flush.ts", "../../../node_modules/@segment/analytics-next/src/core/inspector/index.ts", "../../../node_modules/@segment/analytics-next/src/index.ts", "../../../node_modules/@appsignal/javascript/node_modules/tslib/tslib.es6.mjs", "../../../node_modules/@appsignal/core/node_modules/tslib/tslib.es6.mjs", "../../../node_modules/@appsignal/core/src/utils/functional.ts", "../../../node_modules/@appsignal/core/src/utils/hashmap.ts", "../../../node_modules/@appsignal/core/src/utils/error.ts", "../../../node_modules/@appsignal/core/src/utils/url.ts", "../../../node_modules/@appsignal/core/src/utils/environment.ts", "../../../node_modules/@appsignal/core/src/serializable.ts", "../../../node_modules/@appsignal/javascript/src/version.ts", "../../../node_modules/@appsignal/javascript/src/environment.ts", "../../../node_modules/@appsignal/javascript/src/transports/xdomain.ts", "../../../node_modules/@appsignal/javascript/src/transports/xhr.ts", "../../../node_modules/@appsignal/javascript/src/transports/fetch.ts", "../../../node_modules/@appsignal/javascript/src/transports/node.ts", "../../../node_modules/@appsignal/javascript/src/api.ts", "../../../node_modules/@appsignal/javascript/src/span.ts", "../../../node_modules/@appsignal/javascript/src/queue.ts", "../../../node_modules/@appsignal/javascript/src/dispatcher.ts", "../../../node_modules/@appsignal/javascript/src/index.ts", "../../javascript/utils/logger.js", "../../javascript/utils/analytics.js", "../../javascript/directory/track.js"], "sourcesContent": ["// https://github.com/farzher/fuzzysort v2.0.4\r\n/*\r\n SublimeText-like Fuzzy Search\r\n\r\n fuzzysort.single('fs', 'Fuzzy Search') // {score: -16}\r\n fuzzysort.single('test', 'test') // {score: 0}\r\n fuzzysort.single('doesnt exist', 'target') // null\r\n\r\n fuzzysort.go('mr', [{file:'Monitor.cpp'}, {file:'MeshRenderer.cpp'}], {key:'file'})\r\n // [{score:-18, obj:{file:'MeshRenderer.cpp'}}, {score:-6009, obj:{file:'Monitor.cpp'}}]\r\n\r\n fuzzysort.go('mr', ['Monitor.cpp', 'MeshRenderer.cpp'])\r\n // [{score: -18, target: \"MeshRenderer.cpp\"}, {score: -6009, target: \"Monitor.cpp\"}]\r\n\r\n fuzzysort.highlight(fuzzysort.single('fs', 'Fuzzy Search'), '', '')\r\n // Fuzzy Search\r\n*/\r\n\r\n// UMD (Universal Module Definition) for fuzzysort\r\n;((root, UMD) => {\r\n if(typeof define === 'function' && define.amd) define([], UMD)\r\n else if(typeof module === 'object' && module.exports) module.exports = UMD()\r\n else root['fuzzysort'] = UMD()\r\n})(this, _ => {\r\n 'use strict'\r\n\r\n var single = (search, target) => { if(search=='farzher')return{target:\"farzher was here (^-^*)/\",score:0,_indexes:[0]}\r\n if(!search || !target) return NULL\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n if(!isObj(target)) target = getPrepared(target)\r\n\r\n var searchBitflags = preparedSearch.bitflags\r\n if((searchBitflags & target._bitflags) !== searchBitflags) return NULL\r\n\r\n return algorithm(preparedSearch, target)\r\n }\r\n\r\n\r\n var go = (search, targets, options) => { if(search=='farzher')return[{target:\"farzher was here (^-^*)/\",score:0,_indexes:[0],obj:targets?targets[0]:NULL}]\r\n if(!search) return options&&options.all ? all(search, targets, options) : noResults\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n var searchBitflags = preparedSearch.bitflags\r\n var containsSpace = preparedSearch.containsSpace\r\n\r\n var threshold = options&&options.threshold || INT_MIN\r\n var limit = options&&options['limit'] || INT_MAX // for some reason only limit breaks when minified\r\n\r\n var resultsLen = 0; var limitedCount = 0\r\n var targetsLen = targets.length\r\n\r\n // This code is copy/pasted 3 times for performance reasons [options.keys, options.key, no keys]\r\n\r\n // options.key\r\n if(options && options.key) {\r\n var key = options.key\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var target = getValue(obj, key)\r\n if(!target) continue\r\n if(!isObj(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result.score < threshold) continue\r\n\r\n // have to clone result so duplicate targets from different obj can each reference the correct obj\r\n result = {target:result.target, _targetLower:'', _targetLowerCodes:NULL, _nextBeginningIndexes:NULL, _bitflags:0, score:result.score, _indexes:result._indexes, obj:obj} // hidden\r\n\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result.score > q.peek().score) q.replaceTop(result)\r\n }\r\n }\r\n\r\n // options.keys\r\n } else if(options && options.keys) {\r\n var scoreFn = options['scoreFn'] || defaultScoreFn\r\n var keys = options.keys\r\n var keysLen = keys.length\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var objResults = new Array(keysLen)\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n var key = keys[keyI]\r\n var target = getValue(obj, key)\r\n if(!target) { objResults[keyI] = NULL; continue }\r\n if(!isObj(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) objResults[keyI] = NULL\r\n else objResults[keyI] = algorithm(preparedSearch, target)\r\n }\r\n objResults.obj = obj // before scoreFn so scoreFn can use it\r\n var score = scoreFn(objResults)\r\n if(score === NULL) continue\r\n if(score < threshold) continue\r\n objResults.score = score\r\n if(resultsLen < limit) { q.add(objResults); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(score > q.peek().score) q.replaceTop(objResults)\r\n }\r\n }\r\n\r\n // no keys\r\n } else {\r\n for(var i = 0; i < targetsLen; ++i) { var target = targets[i]\r\n if(!target) continue\r\n if(!isObj(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result.score < threshold) continue\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result.score > q.peek().score) q.replaceTop(result)\r\n }\r\n }\r\n }\r\n\r\n if(resultsLen === 0) return noResults\r\n var results = new Array(resultsLen)\r\n for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()\r\n results.total = resultsLen + limitedCount\r\n return results\r\n }\r\n\r\n\r\n var highlight = (result, hOpen, hClose) => {\r\n if(typeof hOpen === 'function') return highlightCallback(result, hOpen)\r\n if(result === NULL) return NULL\r\n if(hOpen === undefined) hOpen = ''\r\n if(hClose === undefined) hClose = ''\r\n var highlighted = ''\r\n var matchesIndex = 0\r\n var opened = false\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result._indexes\r\n indexes = indexes.slice(0, indexes.len).sort((a,b)=>a-b)\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[matchesIndex] === i) {\r\n ++matchesIndex\r\n if(!opened) { opened = true\r\n highlighted += hOpen\r\n }\r\n\r\n if(matchesIndex === indexes.length) {\r\n highlighted += char + hClose + target.substr(i+1)\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n highlighted += hClose\r\n }\r\n }\r\n highlighted += char\r\n }\r\n\r\n return highlighted\r\n }\r\n var highlightCallback = (result, cb) => {\r\n if(result === NULL) return NULL\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result._indexes\r\n indexes = indexes.slice(0, indexes.len).sort((a,b)=>a-b)\r\n var highlighted = ''\r\n var matchI = 0\r\n var indexesI = 0\r\n var opened = false\r\n var result = []\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[indexesI] === i) {\r\n ++indexesI\r\n if(!opened) { opened = true\r\n result.push(highlighted); highlighted = ''\r\n }\r\n\r\n if(indexesI === indexes.length) {\r\n highlighted += char\r\n result.push(cb(highlighted, matchI++)); highlighted = ''\r\n result.push(target.substr(i+1))\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n result.push(cb(highlighted, matchI++)); highlighted = ''\r\n }\r\n }\r\n highlighted += char\r\n }\r\n return result\r\n }\r\n\r\n\r\n var indexes = result => result._indexes.slice(0, result._indexes.len).sort((a,b)=>a-b)\r\n\r\n\r\n var prepare = (target) => {\r\n if(typeof target !== 'string') target = ''\r\n var info = prepareLowerInfo(target)\r\n return {'target':target, _targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _nextBeginningIndexes:NULL, _bitflags:info.bitflags, 'score':NULL, _indexes:[0], 'obj':NULL} // hidden\r\n }\r\n\r\n\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n\r\n\r\n var prepareSearch = (search) => {\r\n if(typeof search !== 'string') search = ''\r\n search = search.trim()\r\n var info = prepareLowerInfo(search)\r\n\r\n var spaceSearches = []\r\n if(info.containsSpace) {\r\n var searches = search.split(/\\s+/)\r\n searches = [...new Set(searches)] // distinct\r\n for(var i=0; i {\r\n if(target.length > 999) return prepare(target) // don't cache huge targets\r\n var targetPrepared = preparedCache.get(target)\r\n if(targetPrepared !== undefined) return targetPrepared\r\n targetPrepared = prepare(target)\r\n preparedCache.set(target, targetPrepared)\r\n return targetPrepared\r\n }\r\n var getPreparedSearch = (search) => {\r\n if(search.length > 999) return prepareSearch(search) // don't cache huge searches\r\n var searchPrepared = preparedSearchCache.get(search)\r\n if(searchPrepared !== undefined) return searchPrepared\r\n searchPrepared = prepareSearch(search)\r\n preparedSearchCache.set(search, searchPrepared)\r\n return searchPrepared\r\n }\r\n\r\n\r\n var all = (search, targets, options) => {\r\n var results = []; results.total = targets.length\r\n\r\n var limit = options && options.limit || INT_MAX\r\n\r\n if(options && options.key) {\r\n for(var i=0;i= limit) return results\r\n }\r\n } else if(options && options.keys) {\r\n for(var i=0;i= 0; --keyI) {\r\n var target = getValue(obj, options.keys[keyI])\r\n if(!target) { objResults[keyI] = NULL; continue }\r\n if(!isObj(target)) target = getPrepared(target)\r\n target.score = INT_MIN\r\n target._indexes.len = 0\r\n objResults[keyI] = target\r\n }\r\n objResults.obj = obj\r\n objResults.score = INT_MIN\r\n results.push(objResults); if(results.length >= limit) return results\r\n }\r\n } else {\r\n for(var i=0;i= limit) return results\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n\r\n var algorithm = (preparedSearch, prepared, allowSpaces=false) => {\r\n if(allowSpaces===false && preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared)\r\n\r\n var searchLower = preparedSearch._lower\r\n var searchLowerCodes = preparedSearch.lowerCodes\r\n var searchLowerCode = searchLowerCodes[0]\r\n var targetLowerCodes = prepared._targetLowerCodes\r\n var searchLen = searchLowerCodes.length\r\n var targetLen = targetLowerCodes.length\r\n var searchI = 0 // where we at\r\n var targetI = 0 // where you at\r\n var matchesSimpleLen = 0\r\n\r\n // very basic fuzzy match; to remove non-matching targets ASAP!\r\n // walk through target. find sequential matches.\r\n // if all chars aren't found then exit\r\n for(;;) {\r\n var isMatch = searchLowerCode === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesSimple[matchesSimpleLen++] = targetI\r\n ++searchI; if(searchI === searchLen) break\r\n searchLowerCode = searchLowerCodes[searchI]\r\n }\r\n ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI\r\n }\r\n\r\n var searchI = 0\r\n var successStrict = false\r\n var matchesStrictLen = 0\r\n\r\n var nextBeginningIndexes = prepared._nextBeginningIndexes\r\n if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)\r\n var firstPossibleI = targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]\r\n\r\n // Our target string successfully matched all characters in sequence!\r\n // Let's try a more advanced and strict test to improve the score\r\n // only count it as a match if it's consecutive or a beginning character!\r\n var backtrackCount = 0\r\n if(targetI !== targetLen) for(;;) {\r\n if(targetI >= targetLen) {\r\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\r\n if(searchI <= 0) break // We failed to push chars forward for a better match\r\n\r\n ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match\r\n\r\n --searchI\r\n var lastMatch = matchesStrict[--matchesStrictLen]\r\n targetI = nextBeginningIndexes[lastMatch]\r\n\r\n } else {\r\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesStrict[matchesStrictLen++] = targetI\r\n ++searchI; if(searchI === searchLen) { successStrict = true; break }\r\n ++targetI\r\n } else {\r\n targetI = nextBeginningIndexes[targetI]\r\n }\r\n }\r\n }\r\n\r\n // check if it's a substring match\r\n var substringIndex = prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\r\n var isSubstring = ~substringIndex\r\n if(isSubstring && !successStrict) { // rewrite the indexes from basic to the substring\r\n for(var i=0; i 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...\r\n }\r\n\r\n if(isSubstring) score /= 1+searchLen*searchLen*1 // bonus for being a full substring\r\n if(isSubstringBeginning) score /= 1+searchLen*searchLen*1 // bonus for substring starting on a beginningIndex\r\n\r\n score -= targetLen - searchLen // penality for longer targets\r\n prepared.score = score\r\n\r\n for(var i = 0; i < matchesBestLen; ++i) prepared._indexes[i] = matchesBest[i]\r\n prepared._indexes.len = matchesBestLen\r\n\r\n return prepared\r\n }\r\n }\r\n var algorithmSpaces = (preparedSearch, target) => {\r\n var seen_indexes = new Set()\r\n var score = 0\r\n var result = NULL\r\n\r\n var first_seen_index_last_search = 0\r\n var searches = preparedSearch.spaceSearches\r\n for(var i=0; i score) {\r\n return allowSpacesResult\r\n }\r\n\r\n result.score = score\r\n\r\n var i = 0\r\n for (let index of seen_indexes) result._indexes[i++] = index\r\n result._indexes.len = i\r\n\r\n return result\r\n }\r\n\r\n\r\n var prepareLowerInfo = (str) => {\r\n var strLen = str.length\r\n var lower = str.toLowerCase()\r\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\r\n var bitflags = 0\r\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\r\n\r\n for(var i = 0; i < strLen; ++i) {\r\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i)\r\n\r\n if(lowerCode === 32) {\r\n containsSpace = true\r\n continue // it's important that we don't set any bitflags for space\r\n }\r\n\r\n var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet\r\n : lowerCode>=48&&lowerCode<=57 ? 26 // numbers\r\n // 3 bits available\r\n : lowerCode<=127 ? 30 // other ascii\r\n : 31 // other utf8\r\n bitflags |= 1< {\r\n var targetLen = target.length\r\n var beginningIndexes = []; var beginningIndexesLen = 0\r\n var wasUpper = false\r\n var wasAlphanum = false\r\n for(var i = 0; i < targetLen; ++i) {\r\n var targetCode = target.charCodeAt(i)\r\n var isUpper = targetCode>=65&&targetCode<=90\r\n var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57\r\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum\r\n wasUpper = isUpper\r\n wasAlphanum = isAlphanum\r\n if(isBeginning) beginningIndexes[beginningIndexesLen++] = i\r\n }\r\n return beginningIndexes\r\n }\r\n var prepareNextBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = prepareBeginningIndexes(target)\r\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\r\n var lastIsBeginning = beginningIndexes[0]\r\n var lastIsBeginningI = 0\r\n for(var i = 0; i < targetLen; ++i) {\r\n if(lastIsBeginning > i) {\r\n nextBeginningIndexes[i] = lastIsBeginning\r\n } else {\r\n lastIsBeginning = beginningIndexes[++lastIsBeginningI]\r\n nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning\r\n }\r\n }\r\n return nextBeginningIndexes\r\n }\r\n\r\n\r\n var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear(); matchesSimple = []; matchesStrict = [] }\r\n\r\n var preparedCache = new Map()\r\n var preparedSearchCache = new Map()\r\n var matchesSimple = []; var matchesStrict = []\r\n\r\n\r\n // for use with keys. just returns the maximum score\r\n var defaultScoreFn = (a) => {\r\n var max = INT_MIN\r\n var len = a.length\r\n for (var i = 0; i < len; ++i) {\r\n var result = a[i]; if(result === NULL) continue\r\n var score = result.score\r\n if(score > max) max = score\r\n }\r\n if(max === INT_MIN) return NULL\r\n return max\r\n }\r\n\r\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\r\n // prop = 'key1.key2' 10ms\r\n // prop = ['key1', 'key2'] 27ms\r\n var getValue = (obj, prop) => {\r\n var tmp = obj[prop]; if(tmp !== undefined) return tmp\r\n var segs = prop\r\n if(!Array.isArray(prop)) segs = prop.split('.')\r\n var len = segs.length\r\n var i = -1\r\n while (obj && (++i < len)) obj = obj[segs[i]]\r\n return obj\r\n }\r\n\r\n var isObj = (x) => { return typeof x === 'object' } // faster as a function\r\n // var INT_MAX = 9007199254740991; var INT_MIN = -INT_MAX\r\n var INT_MAX = Infinity; var INT_MIN = -INT_MAX\r\n var noResults = []; noResults.total = 0\r\n var NULL = null\r\n\r\n\r\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\r\n var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v.score>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r.score>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}\r\n var q = fastpriorityqueue() // reuse this\r\n\r\n\r\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\r\n return {'single':single, 'go':go, 'highlight':highlight, 'prepare':prepare, 'indexes':indexes, 'cleanup':cleanup}\r\n}) // UMD\r\n\r\n// TODO: (feature) frecency\r\n// TODO: (perf) use different sorting algo depending on the # of results?\r\n// TODO: (perf) preparedCache is a memory leak\r\n// TODO: (like sublime) backslash === forwardslash\r\n// TODO: (perf) prepareSearch seems slow\r\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n", "export {};\n//# sourceMappingURL=interface.js.map", "export {};\n//# sourceMappingURL=index.js.map", "export {};\n//# sourceMappingURL=interfaces.js.map", "export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n", "export const pickBy = (\n obj: T,\n fn: (key: K, v: T[K]) => boolean\n) => {\n return (Object.keys(obj) as K[])\n .filter((k) => fn(k, obj[k]))\n .reduce((acc, key) => ((acc[key] = obj[key]), acc), {} as Partial)\n}\n", "export class ValidationError extends Error {\n field: string\n\n constructor(field: string, message: string) {\n super(`${field} ${message}`)\n this.field = field\n }\n}\n", "export function isString(obj: unknown): obj is string {\n return typeof obj === 'string'\n}\n\nexport function isNumber(obj: unknown): obj is number {\n return typeof obj === 'number'\n}\n\nexport function isFunction(obj: unknown): obj is Function {\n return typeof obj === 'function'\n}\n\nexport function exists(val: unknown): val is NonNullable {\n return val !== undefined && val !== null\n}\n\nexport function isPlainObject(\n obj: unknown\n): obj is Record {\n return (\n Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object'\n )\n}\n", "import { CoreSegmentEvent } from '../events'\nimport { ValidationError } from './errors'\nimport { isString, isPlainObject, exists } from './helpers'\n\nconst stringError = 'is not a string'\nconst objError = 'is not an object'\nconst nilError = 'is nil'\n\n// user identity check could hypothetically could be used in the browser event factory, but not 100% sure -- so this is node only for now\nexport function assertUserIdentity(event: CoreSegmentEvent): void {\n const USER_FIELD_NAME = '.userId/anonymousId/previousId/groupId'\n\n const getAnyUserId = (event: CoreSegmentEvent) =>\n event.userId ?? event.anonymousId ?? event.groupId ?? event.previousId\n\n const id = getAnyUserId(event)\n if (!exists(id)) {\n throw new ValidationError(USER_FIELD_NAME, nilError)\n } else if (!isString(id)) {\n throw new ValidationError(USER_FIELD_NAME, stringError)\n }\n}\n\nexport function assertEventExists(\n event?: CoreSegmentEvent | null\n): asserts event is CoreSegmentEvent {\n if (!exists(event)) {\n throw new ValidationError('Event', nilError)\n }\n if (typeof event !== 'object') {\n throw new ValidationError('Event', objError)\n }\n}\n\nexport function assertEventType(event: CoreSegmentEvent): void {\n if (!isString(event.type)) {\n throw new ValidationError('.type', stringError)\n }\n}\n\nexport function assertTrackEventName(event: CoreSegmentEvent): void {\n if (!isString(event.event)) {\n throw new ValidationError('.event', stringError)\n }\n}\n\nexport function assertTrackEventProperties(event: CoreSegmentEvent): void {\n if (!isPlainObject(event.properties)) {\n throw new ValidationError('.properties', objError)\n }\n}\n\nexport function assertTraits(event: CoreSegmentEvent): void {\n if (!isPlainObject(event.traits)) {\n throw new ValidationError('.traits', objError)\n }\n}\n\nexport function assertMessageId(event: CoreSegmentEvent): void {\n if (!isString(event.messageId)) {\n throw new ValidationError('.messageId', stringError)\n }\n}\n\nexport function validateEvent(event?: CoreSegmentEvent | null) {\n assertEventExists(event)\n assertEventType(event)\n assertMessageId(event)\n\n if (event.type === 'track') {\n assertTrackEventName(event)\n assertTrackEventProperties(event)\n }\n\n if (['group', 'identify'].includes(event.type)) {\n assertTraits(event)\n }\n}\n", "export * from './interfaces'\nimport { dset } from 'dset'\nimport { ID } from '../user'\nimport {\n Integrations,\n EventProperties,\n CoreSegmentEvent,\n CoreOptions,\n CoreExtraContext,\n UserTraits,\n GroupTraits,\n} from './interfaces'\nimport { pickBy } from '../utils/pick'\nimport type { RemoveIndexSignature } from '../utils/ts-helpers'\nimport { validateEvent } from '../validation/assertions'\n\nexport type EventMethodCallHook = ({\n type,\n options,\n}: {\n type: 'track' | 'identify' | 'page' | 'group' | 'alias' | 'screen'\n options?: CoreOptions\n}) => void\n\nexport type EventHook = (event: CoreSegmentEvent) => void\n\nexport interface EventFactorySettings {\n /**\n * Universal `messageId` builder for all events (these must be unique)\n */\n createMessageId: () => string\n /**\n * Hook to do something with an event right before they are returned from the factory.\n * This includes event modification or additional validation.\n */\n onFinishedEvent?: EventHook\n /**\n * Hook whenever an event method is called (track, page, etc.)\n * Can be used to update Options (or just listen)\n */\n onEventMethodCall?: EventMethodCallHook\n}\n\n/**\n * Internal settings object that is used internally by the factory\n */\nclass InternalEventFactorySettings {\n public createMessageId: EventFactorySettings['createMessageId']\n public onEventMethodCall: EventMethodCallHook\n public onFinishedEvent: EventHook\n\n constructor(public settings: EventFactorySettings) {\n this.createMessageId = settings.createMessageId\n this.onEventMethodCall = settings.onEventMethodCall ?? (() => {})\n this.onFinishedEvent = settings.onFinishedEvent ?? (() => {})\n }\n}\n\nexport abstract class CoreEventFactory {\n private settings: InternalEventFactorySettings\n\n constructor(settings: EventFactorySettings) {\n this.settings = new InternalEventFactorySettings(settings)\n }\n\n track(\n event: string,\n properties?: EventProperties,\n options?: CoreOptions,\n globalIntegrations?: Integrations\n ) {\n this.settings.onEventMethodCall({ type: 'track', options })\n return this.normalize({\n ...this.baseEvent(),\n event,\n type: 'track',\n properties: properties ?? {}, // TODO: why is this not a shallow copy like everywhere else?\n options: { ...options },\n integrations: { ...globalIntegrations },\n })\n }\n\n page(\n category: string | null,\n page: string | null,\n properties?: EventProperties,\n options?: CoreOptions,\n globalIntegrations?: Integrations\n ): CoreSegmentEvent {\n this.settings.onEventMethodCall({ type: 'page', options })\n const event: CoreSegmentEvent = {\n type: 'page',\n properties: { ...properties },\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (category !== null) {\n event.category = category\n event.properties = event.properties ?? {}\n event.properties.category = category\n }\n\n if (page !== null) {\n event.name = page\n }\n\n return this.normalize({\n ...this.baseEvent(),\n ...event,\n })\n }\n\n screen(\n category: string | null,\n screen: string | null,\n properties?: EventProperties,\n options?: CoreOptions,\n globalIntegrations?: Integrations\n ): CoreSegmentEvent {\n this.settings.onEventMethodCall({ type: 'screen', options })\n const event: CoreSegmentEvent = {\n type: 'screen',\n properties: { ...properties },\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (category !== null) {\n event.category = category\n }\n\n if (screen !== null) {\n event.name = screen\n }\n\n return this.normalize({\n ...this.baseEvent(),\n ...event,\n })\n }\n\n identify(\n userId: ID,\n traits?: UserTraits,\n options?: CoreOptions,\n globalIntegrations?: Integrations\n ): CoreSegmentEvent {\n this.settings.onEventMethodCall({ type: 'identify', options })\n return this.normalize({\n ...this.baseEvent(),\n type: 'identify',\n userId,\n traits: traits ?? {},\n options: { ...options },\n integrations: globalIntegrations,\n })\n }\n\n group(\n groupId: ID,\n traits?: GroupTraits,\n options?: CoreOptions,\n globalIntegrations?: Integrations\n ): CoreSegmentEvent {\n this.settings.onEventMethodCall({ type: 'group', options })\n return this.normalize({\n ...this.baseEvent(),\n type: 'group',\n traits: traits ?? {},\n options: { ...options }, // this spreading is intentional\n integrations: { ...globalIntegrations }, //\n groupId,\n })\n }\n\n alias(\n to: string,\n from: string | null, // TODO: can we make this undefined?\n options?: CoreOptions,\n globalIntegrations?: Integrations\n ): CoreSegmentEvent {\n this.settings.onEventMethodCall({ type: 'alias', options })\n const base: CoreSegmentEvent = {\n userId: to,\n type: 'alias',\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (from !== null) {\n base.previousId = from\n }\n\n if (to === undefined) {\n return this.normalize({\n ...base,\n ...this.baseEvent(),\n })\n }\n\n return this.normalize({\n ...this.baseEvent(),\n ...base,\n })\n }\n\n private baseEvent(): Partial {\n return {\n integrations: {},\n options: {},\n }\n }\n\n /**\n * Builds the context part of an event based on \"foreign\" keys that\n * are provided in the `Options` parameter for an Event\n */\n private context(\n options: CoreOptions\n ): [CoreExtraContext, Partial] {\n type CoreOptionKeys = keyof RemoveIndexSignature\n /**\n * If the event options are known keys from this list, we move them to the top level of the event.\n * Any other options are moved to context.\n */\n const eventOverrideKeys: CoreOptionKeys[] = [\n 'userId',\n 'anonymousId',\n 'timestamp',\n 'messageId',\n ]\n\n delete options['integrations']\n const providedOptionsKeys = Object.keys(options) as Exclude<\n CoreOptionKeys,\n 'integrations'\n >[]\n\n const context = options.context ?? {}\n const eventOverrides = {}\n\n providedOptionsKeys.forEach((key) => {\n if (key === 'context') {\n return\n }\n\n if (eventOverrideKeys.includes(key)) {\n dset(eventOverrides, key, options[key])\n } else {\n dset(context, key, options[key])\n }\n })\n\n return [context, eventOverrides]\n }\n\n private normalize(event: CoreSegmentEvent): CoreSegmentEvent {\n const integrationBooleans = Object.keys(event.integrations ?? {}).reduce(\n (integrationNames, name) => {\n return {\n ...integrationNames,\n [name]: Boolean(event.integrations?.[name]),\n }\n },\n {} as Record\n )\n\n // filter out any undefined options\n event.options = pickBy(event.options || {}, (_, value) => {\n return value !== undefined\n })\n\n // This is pretty trippy, but here's what's going on:\n // - a) We don't pass initial integration options as part of the event, only if they're true or false\n // - b) We do accept per integration overrides (like integrations.Amplitude.sessionId) at the event level\n // Hence the need to convert base integration options to booleans, but maintain per event integration overrides\n const allIntegrations = {\n // Base config integrations object as booleans\n ...integrationBooleans,\n\n // Per event overrides, for things like amplitude sessionId, for example\n ...event.options?.integrations,\n }\n\n const [context, overrides] = event.options\n ? this.context(event.options)\n : []\n\n const { options, ...rest } = event\n\n const evt: CoreSegmentEvent = {\n timestamp: new Date(),\n ...rest,\n context,\n integrations: allIntegrations,\n ...overrides,\n messageId: options.messageId || this.settings.createMessageId(),\n }\n\n this.settings.onFinishedEvent(evt)\n validateEvent(evt)\n\n return evt\n }\n}\n", "import { CoreContext } from '../context'\nimport type { Callback } from '../events'\n\nexport function pTimeout(promise: Promise, timeout: number): Promise {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(Error('Promise timed out'))\n }, timeout)\n\n promise\n .then((val) => {\n clearTimeout(timeoutId)\n return resolve(val)\n })\n .catch(reject)\n })\n}\n\nexport function sleep(timeoutInMs: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, timeoutInMs))\n}\n\n/**\n * @param ctx\n * @param callback - the function to invoke\n * @param delay - aka \"timeout\". The amount of time in ms to wait before invoking the callback.\n */\nexport function invokeCallback(\n ctx: Ctx,\n callback: Callback,\n delay: number\n): Promise {\n const cb = () => {\n try {\n return Promise.resolve(callback(ctx))\n } catch (err) {\n return Promise.reject(err)\n }\n }\n\n return (\n sleep(delay)\n // pTimeout ensures that the callback can't cause the context to hang\n .then(() => pTimeout(cb(), 1000))\n .catch((err) => {\n ctx?.log('warn', 'Callback Error', { error: err })\n ctx?.stats.increment('callback_error')\n })\n .then(() => ctx)\n )\n}\n", "/**\n * Return a promise that can be externally resolved\n */\nexport const createDeferred = () => {\n let resolve!: (value: T | PromiseLike) => void\n let reject!: (reason: any) => void\n let settled = false\n const promise = new Promise((_resolve, _reject) => {\n resolve = (...args) => {\n settled = true\n _resolve(...args)\n }\n reject = (...args) => {\n settled = true\n _reject(...args)\n }\n })\n\n return {\n resolve,\n reject,\n promise,\n isSettled: () => settled,\n }\n}\n", "export * from './create-deferred'\n", "type EventName = string\ntype EventFnArgs = any[]\ntype EmitterContract = Record\n\nexport interface EmitterOptions {\n /** How many event listeners for a particular event before emitting a warning (0 = disabled)\n * @default 10\n **/\n maxListeners?: number\n}\n\n/**\n * Event Emitter that takes the expected contract as a generic\n * @example\n * ```ts\n * type Contract = {\n * delivery_success: [DeliverySuccessResponse, Metrics],\n * delivery_failure: [DeliveryError]\n * }\n * new Emitter()\n * .on('delivery_success', (res, metrics) => ...)\n * .on('delivery_failure', (err) => ...)\n * ```\n */\nexport class Emitter {\n maxListeners: number\n constructor(options?: EmitterOptions) {\n this.maxListeners = options?.maxListeners ?? 10\n }\n private callbacks: Partial = {}\n private warned = false\n\n private warnIfPossibleMemoryLeak(\n event: EventName\n ) {\n if (this.warned) {\n return\n }\n if (\n this.maxListeners &&\n this.callbacks[event]!.length > this.maxListeners\n ) {\n console.warn(\n `Event Emitter: Possible memory leak detected; ${String(\n event\n )} has exceeded ${this.maxListeners} listeners.`\n )\n this.warned = true\n }\n }\n\n on(\n event: EventName,\n callback: (...args: Contract[EventName]) => void\n ): this {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [callback] as Contract[EventName]\n } else {\n this.callbacks[event]!.push(callback)\n this.warnIfPossibleMemoryLeak(event)\n }\n return this\n }\n\n once(\n event: EventName,\n callback: (...args: Contract[EventName]) => void\n ): this {\n const on = (...args: Contract[EventName]): void => {\n this.off(event, on)\n callback.apply(this, args)\n }\n\n this.on(event, on)\n return this\n }\n\n off(\n event: EventName,\n callback: (...args: Contract[EventName]) => void\n ): this {\n const fns = this.callbacks[event] ?? []\n const without = fns.filter((fn) => fn !== callback) as Contract[EventName]\n this.callbacks[event] = without\n return this\n }\n\n emit(\n event: EventName,\n ...args: Contract[EventName]\n ): this {\n const callbacks = this.callbacks[event] ?? []\n callbacks.forEach((callback) => {\n callback.apply(this, args)\n })\n return this\n }\n}\n", "export * from './emitter'\n", "export * from './create-deferred'\nexport * from './emitter'\n", "type BackoffParams = {\n /** The number of milliseconds before starting the first retry. Default is 500 */\n minTimeout?: number\n\n /** The maximum number of milliseconds between two retries. Default is Infinity */\n maxTimeout?: number\n\n /** The exponential factor to use. Default is 2. */\n factor?: number\n\n /** The current attempt */\n attempt: number\n}\n\nexport function backoff(params: BackoffParams): number {\n const random = Math.random() + 1\n const {\n minTimeout = 500,\n factor = 2,\n attempt,\n maxTimeout = Infinity,\n } = params\n return Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout)\n}\n", "import { Emitter } from '@segment/analytics-generic-utils'\nimport { backoff } from './backoff'\n\n/**\n * @internal\n */\nexport const ON_REMOVE_FROM_FUTURE = 'onRemoveFromFuture'\n\ninterface QueueItem {\n id: string\n}\n\nexport class PriorityQueue extends Emitter {\n protected future: Item[] = []\n protected queue: Item[]\n protected seen: Record\n\n public maxAttempts: number\n\n constructor(\n maxAttempts: number,\n queue: Item[],\n seen?: Record\n ) {\n super()\n this.maxAttempts = maxAttempts\n this.queue = queue\n this.seen = seen ?? {}\n }\n\n push(...items: Item[]): boolean[] {\n const accepted = items.map((operation) => {\n const attempts = this.updateAttempts(operation)\n\n if (attempts > this.maxAttempts || this.includes(operation)) {\n return false\n }\n\n this.queue.push(operation)\n return true\n })\n\n this.queue = this.queue.sort(\n (a, b) => this.getAttempts(a) - this.getAttempts(b)\n )\n return accepted\n }\n\n pushWithBackoff(item: Item): boolean {\n if (this.getAttempts(item) === 0) {\n return this.push(item)[0]\n }\n\n const attempt = this.updateAttempts(item)\n\n if (attempt > this.maxAttempts || this.includes(item)) {\n return false\n }\n\n const timeout = backoff({ attempt: attempt - 1 })\n\n setTimeout(() => {\n this.queue.push(item)\n // remove from future list\n this.future = this.future.filter((f) => f.id !== item.id)\n // Lets listeners know that a 'future' message is now available in the queue\n this.emit(ON_REMOVE_FROM_FUTURE)\n }, timeout)\n\n this.future.push(item)\n return true\n }\n\n public getAttempts(item: Item): number {\n return this.seen[item.id] ?? 0\n }\n\n public updateAttempts(item: Item): number {\n this.seen[item.id] = this.getAttempts(item) + 1\n return this.getAttempts(item)\n }\n\n includes(item: Item): boolean {\n return (\n this.queue.includes(item) ||\n this.future.includes(item) ||\n Boolean(this.queue.find((i) => i.id === item.id)) ||\n Boolean(this.future.find((i) => i.id === item.id))\n )\n }\n\n pop(): Item | undefined {\n return this.queue.shift()\n }\n\n public get length(): number {\n return this.queue.length\n }\n\n public get todo(): number {\n return this.queue.length + this.future.length\n }\n}\n", "var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n", "export type LogLevel = 'debug' | 'info' | 'warn' | 'error'\nexport type LogMessage = {\n level: LogLevel\n message: string\n time?: Date\n extras?: Record\n}\n\nexport interface GenericLogger {\n log(level: LogLevel, message: string, extras?: object): void\n flush(): void\n logs: LogMessage[]\n}\n\nexport class CoreLogger implements GenericLogger {\n private _logs: LogMessage[] = []\n\n log(level: LogLevel, message: string, extras?: object) {\n const time = new Date()\n this._logs.push({\n level,\n message,\n time,\n extras,\n })\n }\n\n public get logs(): LogMessage[] {\n return this._logs\n }\n\n public flush(): void {\n if (this.logs.length > 1) {\n const formatted = this._logs.reduce((logs, log) => {\n const line = {\n ...log,\n json: JSON.stringify(log.extras, null, ' '),\n extras: log.extras,\n }\n\n delete line['time']\n\n let key = log.time?.toISOString() ?? ''\n if (logs[key]) {\n key = `${key}-${Math.random()}`\n }\n\n return {\n ...logs,\n [key]: line,\n }\n }, {} as Record)\n\n // ie doesn't like console.table\n if (console.table) {\n console.table(formatted)\n } else {\n console.log(formatted)\n }\n } else {\n this.logs.forEach((logEntry) => {\n const { level, message, extras } = logEntry\n\n if (level === 'info' || level === 'debug') {\n console.log(message, extras ?? '')\n } else {\n console[level](message, extras ?? '')\n }\n })\n }\n\n this._logs = []\n }\n}\n", "type CompactMetricType = 'g' | 'c'\n\nexport type CoreMetricType = 'gauge' | 'counter'\n\nexport interface CoreMetric {\n metric: string\n value: number\n type: CoreMetricType\n tags: string[]\n timestamp: number // unit milliseconds\n}\n\nexport interface CompactMetric {\n m: string // metric name\n v: number // value\n k: CompactMetricType\n t: string[] // tags\n e: number // timestamp in unit milliseconds\n}\n\nconst compactMetricType = (type: CoreMetricType): CompactMetricType => {\n const enums: Record = {\n gauge: 'g',\n counter: 'c',\n }\n return enums[type]\n}\n\nexport abstract class CoreStats {\n metrics: CoreMetric[] = []\n increment(metric: string, by = 1, tags?: string[]): void {\n this.metrics.push({\n metric,\n value: by,\n tags: tags ?? [],\n type: 'counter',\n timestamp: Date.now(),\n })\n }\n\n gauge(metric: string, value: number, tags?: string[]): void {\n this.metrics.push({\n metric,\n value,\n tags: tags ?? [],\n type: 'gauge',\n timestamp: Date.now(),\n })\n }\n\n flush(): void {\n const formatted = this.metrics.map((m) => ({\n ...m,\n tags: m.tags.join(','),\n }))\n // ie doesn't like console.table\n if (console.table) {\n console.table(formatted)\n } else {\n console.log(formatted)\n }\n this.metrics = []\n }\n\n /**\n * compact keys for smaller payload\n */\n serialize(): CompactMetric[] {\n return this.metrics.map((m) => {\n return {\n m: m.metric,\n v: m.value,\n t: m.tags,\n k: compactMetricType(m.type),\n e: m.timestamp,\n }\n })\n }\n}\n\nexport class NullStats extends CoreStats {\n override gauge(..._args: Parameters) {}\n override increment(..._args: Parameters) {}\n override flush(..._args: Parameters) {}\n override serialize(..._args: Parameters) {\n return []\n }\n}\n", "import { CoreSegmentEvent } from '../events/interfaces'\n\nimport { v4 as uuid } from '@lukeed/uuid'\nimport { dset } from 'dset'\nimport { CoreLogger, LogLevel, LogMessage } from '../logger'\nimport { CoreStats, CoreMetric, NullStats } from '../stats'\n\nexport interface SerializedContext {\n id: string\n event: CoreSegmentEvent\n logs: LogMessage[]\n metrics?: CoreMetric[]\n}\n\nexport interface ContextFailedDelivery {\n reason: unknown\n}\n\nexport interface CancelationOptions {\n retry?: boolean\n reason?: string\n type?: string\n}\n\nexport class ContextCancelation {\n retry: boolean\n type: string\n reason?: string\n\n constructor(options: CancelationOptions) {\n this.retry = options.retry ?? true\n this.type = options.type ?? 'plugin Error'\n this.reason = options.reason ?? ''\n }\n}\n\nexport abstract class CoreContext<\n Event extends CoreSegmentEvent = CoreSegmentEvent\n> {\n event: Event\n logger: CoreLogger\n stats: CoreStats\n attempts = 0\n\n private _failedDelivery?: ContextFailedDelivery\n private _id: string\n\n constructor(\n event: Event,\n id = uuid(),\n stats: CoreStats = new NullStats(),\n logger = new CoreLogger()\n ) {\n this.event = event\n this._id = id\n this.logger = logger\n this.stats = stats\n }\n\n static system(): void {\n // This should be overridden by the subclass to return an instance of the subclass.\n }\n\n isSame(other: CoreContext): boolean {\n return other.id === this.id\n }\n\n cancel(error?: Error | ContextCancelation): never {\n if (error) {\n throw error\n }\n\n throw new ContextCancelation({ reason: 'Context Cancel' })\n }\n\n log(level: LogLevel, message: string, extras?: object): void {\n this.logger.log(level, message, extras)\n }\n\n get id(): string {\n return this._id\n }\n\n updateEvent(path: string, val: unknown): Event {\n // Don't allow integrations that are set to false to be overwritten with integration settings.\n if (path.split('.')[0] === 'integrations') {\n const integrationName = path.split('.')[1]\n\n if (this.event.integrations?.[integrationName] === false) {\n return this.event\n }\n }\n\n dset(this.event, path, val)\n return this.event\n }\n\n failedDelivery(): ContextFailedDelivery | undefined {\n return this._failedDelivery\n }\n\n setFailedDelivery(options: ContextFailedDelivery) {\n this._failedDelivery = options\n }\n\n logs(): LogMessage[] {\n return this.logger.logs\n }\n\n flush(): void {\n this.logger.flush()\n this.stats.flush()\n }\n\n toJSON(): SerializedContext {\n return {\n id: this._id,\n event: this.event,\n logs: this.logger.logs,\n metrics: this.stats.metrics,\n }\n }\n}\n", "type Grouper = (obj: T) => string | number\n\nexport function groupBy(\n collection: T[],\n grouper: keyof T | Grouper\n): Record {\n const results: Record = {}\n\n collection.forEach((item) => {\n let key: string | number | undefined = undefined\n\n if (typeof grouper === 'string') {\n const suggestedKey = item[grouper]\n key =\n typeof suggestedKey !== 'string'\n ? JSON.stringify(suggestedKey)\n : suggestedKey\n } else if (grouper instanceof Function) {\n key = grouper(item)\n }\n\n if (key === undefined) {\n return\n }\n\n results[key] = [...(results[key] ?? []), item]\n })\n\n return results\n}\n", "/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport const isThenable = (value: unknown): boolean =>\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof (value as any).then === 'function'\n", "import { isThenable } from '../utils/is-thenable'\n\nexport type TaskGroup = {\n done: () => Promise\n run: any>(\n op: Operation\n ) => ReturnType\n}\n\nexport const createTaskGroup = (): TaskGroup => {\n let taskCompletionPromise: Promise\n let resolvePromise: () => void\n let count = 0\n\n return {\n done: () => taskCompletionPromise,\n run: (op) => {\n const returnValue = op()\n\n if (isThenable(returnValue)) {\n if (++count === 1) {\n taskCompletionPromise = new Promise((res) => (resolvePromise = res))\n }\n\n returnValue.finally(() => --count === 0 && resolvePromise())\n }\n\n return returnValue\n },\n }\n}\n", "import { CoreContext, ContextCancelation } from '../context'\nimport { CorePlugin } from '../plugins'\n\nasync function tryAsync(fn: () => T | Promise): Promise {\n try {\n return await fn()\n } catch (err) {\n return Promise.reject(err)\n }\n}\n\nexport function attempt(\n ctx: Ctx,\n plugin: CorePlugin\n): Promise {\n ctx.log('debug', 'plugin', { plugin: plugin.name })\n const start = new Date().getTime()\n\n const hook = plugin[ctx.event.type]\n if (hook === undefined) {\n return Promise.resolve(ctx)\n }\n\n const newCtx = tryAsync(() => hook.apply(plugin, [ctx]))\n .then((ctx) => {\n const done = new Date().getTime() - start\n ctx.stats.gauge('plugin_time', done, [`plugin:${plugin.name}`])\n\n return ctx\n })\n .catch((err: Error | ContextCancelation) => {\n if (\n err instanceof ContextCancelation &&\n err.type === 'middleware_cancellation'\n ) {\n throw err\n }\n\n if (err instanceof ContextCancelation) {\n ctx.log('warn', err.type, {\n plugin: plugin.name,\n error: err,\n })\n\n return err\n }\n\n ctx.log('error', 'plugin Error', {\n plugin: plugin.name,\n error: err,\n })\n ctx.stats.increment('plugin_error', 1, [`plugin:${plugin.name}`])\n\n return err\n })\n\n return newCtx\n}\n\nexport function ensure(\n ctx: Ctx,\n plugin: CorePlugin\n): Promise {\n return attempt(ctx, plugin).then((newContext) => {\n if (newContext instanceof CoreContext) {\n return newContext\n }\n\n ctx.log('debug', 'Context canceled')\n ctx.stats.increment('context_canceled')\n ctx.cancel(newContext)\n })\n}\n", "import { CoreAnalytics } from '../analytics'\nimport { groupBy } from '../utils/group-by'\nimport { ON_REMOVE_FROM_FUTURE, PriorityQueue } from '../priority-queue'\n\nimport { CoreContext, ContextCancelation } from '../context'\nimport { Emitter } from '@segment/analytics-generic-utils'\nimport { Integrations, JSONObject } from '../events/interfaces'\nimport { CorePlugin } from '../plugins'\nimport { createTaskGroup, TaskGroup } from '../task/task-group'\nimport { attempt, ensure } from './delivery'\n\nexport type EventQueueEmitterContract = {\n message_delivered: [ctx: Ctx]\n message_enriched: [ctx: Ctx, plugin: CorePlugin]\n delivery_success: [ctx: Ctx]\n delivery_retry: [ctx: Ctx]\n delivery_failure: [ctx: Ctx, err: Ctx | Error | ContextCancelation]\n flush: [ctx: Ctx, delivered: boolean]\n initialization_failure: [CorePlugin]\n}\n\nexport abstract class CoreEventQueue<\n Ctx extends CoreContext = CoreContext,\n Plugin extends CorePlugin = CorePlugin\n> extends Emitter> {\n /**\n * All event deliveries get suspended until all the tasks in this task group are complete.\n * For example: a middleware that augments the event object should be loaded safely as a\n * critical task, this way, event queue will wait for it to be ready before sending events.\n *\n * This applies to all the events already in the queue, and the upcoming ones\n */\n criticalTasks: TaskGroup = createTaskGroup()\n queue: PriorityQueue\n plugins: Plugin[] = []\n failedInitializations: string[] = []\n private flushing = false\n\n constructor(priorityQueue: PriorityQueue) {\n super()\n\n this.queue = priorityQueue\n this.queue.on(ON_REMOVE_FROM_FUTURE, () => {\n this.scheduleFlush(0)\n })\n }\n\n async register(\n ctx: Ctx,\n plugin: Plugin,\n instance: CoreAnalytics\n ): Promise {\n this.plugins.push(plugin)\n\n const handleLoadError = (err: any) => {\n this.failedInitializations.push(plugin.name)\n this.emit('initialization_failure', plugin)\n console.warn(plugin.name, err)\n\n ctx.log('warn', 'Failed to load destination', {\n plugin: plugin.name,\n error: err,\n })\n\n // Filter out the failed plugin by excluding it from the list\n this.plugins = this.plugins.filter((p) => p !== plugin)\n }\n\n if (plugin.type === 'destination' && plugin.name !== 'Segment.io') {\n plugin.load(ctx, instance).catch(handleLoadError)\n } else {\n // for non-destinations plugins, we do need to wait for them to load\n // reminder: action destinations can require plugins that are not of type \"destination\".\n // For example, GA4 loads a type 'before' plugins and addition to a type 'destination' plugin\n try {\n await plugin.load(ctx, instance)\n } catch (err) {\n handleLoadError(err)\n }\n }\n }\n\n async deregister(\n ctx: Ctx,\n plugin: CorePlugin,\n instance: CoreAnalytics\n ): Promise {\n try {\n if (plugin.unload) {\n await Promise.resolve(plugin.unload(ctx, instance))\n }\n\n this.plugins = this.plugins.filter((p) => p.name !== plugin.name)\n } catch (e) {\n ctx.log('warn', 'Failed to unload destination', {\n plugin: plugin.name,\n error: e,\n })\n }\n }\n\n async dispatch(ctx: Ctx): Promise {\n ctx.log('debug', 'Dispatching')\n ctx.stats.increment('message_dispatched')\n\n this.queue.push(ctx)\n const willDeliver = this.subscribeToDelivery(ctx)\n this.scheduleFlush(0)\n return willDeliver\n }\n\n private async subscribeToDelivery(ctx: Ctx): Promise {\n return new Promise((resolve) => {\n const onDeliver = (flushed: Ctx, delivered: boolean): void => {\n if (flushed.isSame(ctx)) {\n this.off('flush', onDeliver)\n if (delivered) {\n resolve(flushed)\n } else {\n resolve(flushed)\n }\n }\n }\n\n this.on('flush', onDeliver)\n })\n }\n\n async dispatchSingle(ctx: Ctx): Promise {\n ctx.log('debug', 'Dispatching')\n ctx.stats.increment('message_dispatched')\n\n this.queue.updateAttempts(ctx)\n ctx.attempts = 1\n\n return this.deliver(ctx).catch((err) => {\n const accepted = this.enqueuRetry(err, ctx)\n if (!accepted) {\n ctx.setFailedDelivery({ reason: err })\n return ctx\n }\n\n return this.subscribeToDelivery(ctx)\n })\n }\n\n isEmpty(): boolean {\n return this.queue.length === 0\n }\n\n private scheduleFlush(timeout = 500): void {\n if (this.flushing) {\n return\n }\n\n this.flushing = true\n\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.flush().then(() => {\n setTimeout(() => {\n this.flushing = false\n\n if (this.queue.length) {\n this.scheduleFlush(0)\n }\n }, 0)\n })\n }, timeout)\n }\n\n private async deliver(ctx: Ctx): Promise {\n await this.criticalTasks.done()\n\n const start = Date.now()\n try {\n ctx = await this.flushOne(ctx)\n const done = Date.now() - start\n this.emit('delivery_success', ctx)\n ctx.stats.gauge('delivered', done)\n ctx.log('debug', 'Delivered', ctx.event)\n return ctx\n } catch (err: any) {\n const error = err as Ctx | Error | ContextCancelation\n ctx.log('error', 'Failed to deliver', error)\n this.emit('delivery_failure', ctx, error)\n ctx.stats.increment('delivery_failed')\n throw err\n }\n }\n\n private enqueuRetry(err: Error, ctx: Ctx): boolean {\n const retriable = !(err instanceof ContextCancelation) || err.retry\n if (!retriable) {\n return false\n }\n\n return this.queue.pushWithBackoff(ctx)\n }\n\n async flush(): Promise {\n if (this.queue.length === 0) {\n return []\n }\n\n let ctx = this.queue.pop()\n if (!ctx) {\n return []\n }\n\n ctx.attempts = this.queue.getAttempts(ctx)\n\n try {\n ctx = await this.deliver(ctx)\n this.emit('flush', ctx, true)\n } catch (err: any) {\n const accepted = this.enqueuRetry(err, ctx)\n\n if (!accepted) {\n ctx.setFailedDelivery({ reason: err })\n this.emit('flush', ctx, false)\n }\n\n return []\n }\n\n return [ctx]\n }\n\n private isReady(): boolean {\n // return this.plugins.every((p) => p.isLoaded())\n // should we wait for every plugin to load?\n return true\n }\n\n private availableExtensions(denyList: Integrations) {\n const available = this.plugins.filter((p) => {\n // Only filter out destination plugins or the Segment.io plugin\n if (p.type !== 'destination' && p.name !== 'Segment.io') {\n return true\n }\n\n let alternativeNameMatch: boolean | JSONObject | undefined = undefined\n p.alternativeNames?.forEach((name) => {\n if (denyList[name] !== undefined) {\n alternativeNameMatch = denyList[name]\n }\n })\n\n // Explicit integration option takes precedence, `All: false` does not apply to Segment.io\n return (\n denyList[p.name] ??\n alternativeNameMatch ??\n (p.name === 'Segment.io' ? true : denyList.All) !== false\n )\n })\n\n const {\n before = [],\n enrichment = [],\n destination = [],\n after = [],\n } = groupBy(available, 'type')\n\n return {\n before,\n enrichment,\n destinations: destination,\n after,\n }\n }\n\n private async flushOne(ctx: Ctx): Promise {\n if (!this.isReady()) {\n throw new Error('Not ready')\n }\n\n if (ctx.attempts > 1) {\n this.emit('delivery_retry', ctx)\n }\n\n const { before, enrichment } = this.availableExtensions(\n ctx.event.integrations ?? {}\n )\n\n for (const beforeWare of before) {\n const temp = await ensure(ctx, beforeWare)\n if (temp instanceof CoreContext) {\n ctx = temp\n }\n\n this.emit('message_enriched', ctx, beforeWare)\n }\n\n for (const enrichmentWare of enrichment) {\n const temp = await attempt(ctx, enrichmentWare)\n if (temp instanceof CoreContext) {\n ctx = temp\n }\n\n this.emit('message_enriched', ctx, enrichmentWare)\n }\n\n // Enrichment and before plugins can re-arrange the deny list dynamically\n // so we need to pluck them at the end\n const { destinations, after } = this.availableExtensions(\n ctx.event.integrations ?? {}\n )\n\n await new Promise((resolve, reject) => {\n setTimeout(() => {\n const attempts = destinations.map((destination) =>\n attempt(ctx, destination)\n )\n Promise.all(attempts).then(resolve).catch(reject)\n }, 0)\n })\n\n ctx.stats.increment('message_delivered')\n\n this.emit('message_delivered', ctx)\n\n const afterCalls = after.map((after) => attempt(ctx, after))\n await Promise.all(afterCalls)\n\n return ctx\n }\n}\n", "export {};\n//# sourceMappingURL=index.js.map", "import { CoreContext } from '../context'\nimport { Callback } from '../events/interfaces'\nimport { CoreEventQueue } from '../queue/event-queue'\nimport { invokeCallback } from '../callback'\nimport { Emitter } from '@segment/analytics-generic-utils'\n\nexport type DispatchOptions = {\n timeout?: number\n debug?: boolean\n callback?: Callback\n}\n\n/* The amount of time in ms to wait before invoking the callback. */\nexport const getDelay = (startTimeInEpochMS: number, timeoutInMS?: number) => {\n const elapsedTime = Date.now() - startTimeInEpochMS\n // increasing the timeout increases the delay by almost the same amount -- this is weird legacy behavior.\n return Math.max((timeoutInMS ?? 300) - elapsedTime, 0)\n}\n/**\n * Push an event into the dispatch queue and invoke any callbacks.\n *\n * @param event - Segment event to enqueue.\n * @param queue - Queue to dispatch against.\n * @param emitter - This is typically an instance of \"Analytics\" -- used for metrics / progress information.\n * @param options\n */\nexport async function dispatch<\n Ctx extends CoreContext,\n EQ extends CoreEventQueue\n>(\n ctx: Ctx,\n queue: EQ,\n emitter: Emitter,\n options?: DispatchOptions\n): Promise {\n emitter.emit('dispatch_start', ctx)\n\n const startTime = Date.now()\n let dispatched: Ctx\n if (queue.isEmpty()) {\n dispatched = await queue.dispatchSingle(ctx)\n } else {\n dispatched = await queue.dispatch(ctx)\n }\n\n if (options?.callback) {\n dispatched = await invokeCallback(\n dispatched,\n options.callback,\n getDelay(startTime, options.timeout)\n )\n }\n if (options?.debug) {\n dispatched.flush()\n }\n\n return dispatched\n}\n", "export function bindAll<\n ObjType extends { [key: string]: any },\n KeyType extends keyof ObjType\n>(obj: ObjType): ObjType {\n const proto = obj.constructor.prototype\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key !== 'constructor') {\n const desc = Object.getOwnPropertyDescriptor(\n obj.constructor.prototype,\n key\n )\n if (!!desc && typeof desc.value === 'function') {\n obj[key as KeyType] = obj[key].bind(obj)\n }\n }\n }\n\n return obj\n}\n", "export * from './emitter/interface'\nexport * from './plugins'\nexport * from './events/interfaces'\nexport * from './events'\nexport * from './callback'\nexport * from './priority-queue'\nexport { backoff } from './priority-queue/backoff'\nexport * from './context'\nexport * from './queue/event-queue'\nexport * from './analytics'\nexport * from './analytics/dispatch'\nexport * from './validation/helpers'\nexport * from './validation/errors'\nexport * from './validation/assertions'\nexport * from './utils/bind-all'\nexport * from './stats'\nexport { CoreLogger } from './logger'\nexport * from './queue/delivery'\n", "export function isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\nexport function isServer(): boolean {\n return !isBrowser()\n}\n", "import { isBrowser } from '../environment'\n\nexport function isOnline(): boolean {\n if (isBrowser()) {\n return window.navigator.onLine\n }\n\n return true\n}\n\nexport function isOffline(): boolean {\n return !isOnline()\n}\n", "export default function(url, options) {\n\toptions = options || {};\n\treturn new Promise( (resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\tconst keys = [];\n\t\tconst all = [];\n\t\tconst headers = {};\n\n\t\tconst response = () => ({\n\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\tstatusText: request.statusText,\n\t\t\tstatus: request.status,\n\t\t\turl: request.responseURL,\n\t\t\ttext: () => Promise.resolve(request.responseText),\n\t\t\tjson: () => Promise.resolve(request.responseText).then(JSON.parse),\n\t\t\tblob: () => Promise.resolve(new Blob([request.response])),\n\t\t\tclone: response,\n\t\t\theaders: {\n\t\t\t\tkeys: () => keys,\n\t\t\t\tentries: () => all,\n\t\t\t\tget: n => headers[n.toLowerCase()],\n\t\t\t\thas: n => n.toLowerCase() in headers\n\t\t\t}\n\t\t});\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\trequest.onload = () => {\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theaders[key] = headers[key] ? `${headers[key]},${value}` : value;\n\t\t\t});\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\tfor (const i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.send(options.body || null);\n\t});\n}\n", "// This an imperfect polyfill for globalThis\nexport const getGlobal = () => {\n if (typeof globalThis !== 'undefined') {\n return globalThis\n }\n if (typeof self !== 'undefined') {\n return self\n }\n if (typeof window !== 'undefined') {\n return window\n }\n if (typeof global !== 'undefined') {\n return global\n }\n return null\n}\n", "import unfetch from 'unfetch'\nimport { getGlobal } from './get-global'\n\n/**\n * Wrapper around native `fetch` containing `unfetch` fallback.\n */\nexport const fetch: typeof global.fetch = (...args) => {\n const global = getGlobal()\n return ((global && global.fetch) || unfetch)(...args)\n}\n", "// This file is generated.\nexport const version = '1.72.1'\n", "// Default value will be updated to 'web' in `bundle-umd.ts` for web build.\nlet _version: 'web' | 'npm' = 'npm'\n\nexport function setVersionType(version: typeof _version) {\n _version = version\n}\n\nexport function getVersionType(): typeof _version {\n return _version\n}\n", "export const SEGMENT_API_HOST = 'api.segment.io/v1'\n", "import { fetch } from '../../lib/fetch'\nimport { version } from '../../generated/version'\nimport { getVersionType } from '../../lib/version-type'\nimport { SEGMENT_API_HOST } from '../constants'\n\nexport interface MetricsOptions {\n host?: string\n sampleRate?: number\n flushTimer?: number\n maxQueueSize?: number\n protocol?: 'http' | 'https'\n}\n\n/**\n * Type expected by the segment metrics API endpoint\n */\ntype RemoteMetric = {\n type: 'Counter'\n metric: string\n value: 1\n tags: {\n library: string\n library_version: string\n [key: string]: string\n }\n}\n\nconst createRemoteMetric = (\n metric: string,\n tags: string[],\n versionType: 'web' | 'npm'\n): RemoteMetric => {\n const formattedTags = tags.reduce((acc, t) => {\n const [k, v] = t.split(':')\n acc[k] = v\n return acc\n }, {} as Record)\n\n return {\n type: 'Counter',\n metric,\n value: 1,\n tags: {\n ...formattedTags,\n library: 'analytics.js',\n library_version:\n versionType === 'web' ? `next-${version}` : `npm:next-${version}`,\n },\n }\n}\n\nfunction logError(err: unknown): void {\n console.error('Error sending segment performance metrics', err)\n}\n\nexport class RemoteMetrics {\n private host: string\n private flushTimer: number\n private maxQueueSize: number\n private protocol: string\n\n sampleRate: number\n queue: RemoteMetric[]\n\n constructor(options?: MetricsOptions) {\n this.host = options?.host ?? SEGMENT_API_HOST\n this.sampleRate = options?.sampleRate ?? 1\n this.flushTimer = options?.flushTimer ?? 30 * 1000 /* 30s */\n this.maxQueueSize = options?.maxQueueSize ?? 20\n this.protocol = options?.protocol ?? 'https'\n\n this.queue = []\n\n if (this.sampleRate > 0) {\n let flushing = false\n\n const run = (): void => {\n if (flushing) {\n return\n }\n\n flushing = true\n this.flush().catch(logError)\n\n flushing = false\n\n setTimeout(run, this.flushTimer)\n }\n run()\n }\n }\n\n increment(metric: string, tags: string[]): void {\n // All metrics are part of an allow list in Tracking API\n if (!metric.includes('analytics_js.')) {\n return\n }\n\n // /m doesn't like empty tags\n if (tags.length === 0) {\n return\n }\n\n if (Math.random() > this.sampleRate) {\n return\n }\n\n if (this.queue.length >= this.maxQueueSize) {\n return\n }\n\n const remoteMetric = createRemoteMetric(metric, tags, getVersionType())\n this.queue.push(remoteMetric)\n\n if (metric.includes('error')) {\n this.flush().catch(logError)\n }\n }\n\n async flush(): Promise {\n if (this.queue.length <= 0) {\n return\n }\n\n await this.send().catch((error) => {\n logError(error)\n this.sampleRate = 0\n })\n }\n\n private async send(): Promise {\n const payload = { series: this.queue }\n this.queue = []\n\n const headers = { 'Content-Type': 'text/plain' }\n const url = `${this.protocol}://${this.host}/m`\n\n return fetch(url, {\n headers,\n body: JSON.stringify(payload),\n method: 'POST',\n })\n }\n}\n", "import { CoreStats } from '@segment/analytics-core'\nimport { MetricsOptions, RemoteMetrics } from './remote-metrics'\n\nlet remoteMetrics: RemoteMetrics | undefined\n\nexport class Stats extends CoreStats {\n static initRemoteMetrics(options?: MetricsOptions) {\n remoteMetrics = new RemoteMetrics(options)\n }\n\n override increment(metric: string, by?: number, tags?: string[]): void {\n super.increment(metric, by, tags)\n remoteMetrics?.increment(metric, tags ?? [])\n }\n}\n", "import {\n CoreContext,\n ContextCancelation,\n ContextFailedDelivery,\n SerializedContext,\n CancelationOptions,\n} from '@segment/analytics-core'\nimport { SegmentEvent } from '../events/interfaces'\nimport { Stats } from '../stats'\n\nexport class Context extends CoreContext {\n static override system() {\n return new this({ type: 'track', event: 'system' })\n }\n constructor(event: SegmentEvent, id?: string) {\n super(event, id, new Stats())\n }\n}\n\nexport { ContextCancelation }\nexport type { ContextFailedDelivery, SerializedContext, CancelationOptions }\n", "import { PriorityQueue, ON_REMOVE_FROM_FUTURE } from '@segment/analytics-core'\n\nexport { PriorityQueue, ON_REMOVE_FROM_FUTURE }\n", "import { PriorityQueue } from '.'\nimport { Context, SerializedContext } from '../../core/context'\nimport { isBrowser } from '../../core/environment'\n\nlet loc:\n | Storage\n | { getItem: () => void; setItem: () => void; removeItem: () => void } = {\n getItem() {},\n setItem() {},\n removeItem() {},\n}\n\ntry {\n loc = isBrowser() && window.localStorage ? window.localStorage : loc\n} catch (err) {\n console.warn('Unable to access localStorage', err)\n}\n\nfunction persisted(key: string): Context[] {\n const items = loc.getItem(key)\n return (items ? JSON.parse(items) : []).map(\n (p: SerializedContext) => new Context(p.event, p.id)\n )\n}\n\nfunction persistItems(key: string, items: Context[]): void {\n const existing = persisted(key)\n const all = [...items, ...existing]\n\n const merged = all.reduce((acc, item) => {\n return {\n ...acc,\n [item.id]: item,\n }\n }, {} as Record)\n\n loc.setItem(key, JSON.stringify(Object.values(merged)))\n}\n\nfunction seen(key: string): Record {\n const stored = loc.getItem(key)\n return stored ? JSON.parse(stored) : {}\n}\n\nfunction persistSeen(key: string, memory: Record): void {\n const stored = seen(key)\n\n loc.setItem(\n key,\n JSON.stringify({\n ...stored,\n ...memory,\n })\n )\n}\n\nfunction remove(key: string): void {\n loc.removeItem(key)\n}\n\nconst now = (): number => new Date().getTime()\n\nfunction mutex(key: string, onUnlock: Function, attempt = 0): void {\n const lockTimeout = 50\n const lockKey = `persisted-queue:v1:${key}:lock`\n\n const expired = (lock: number): boolean => new Date().getTime() > lock\n const rawLock = loc.getItem(lockKey)\n const lock = rawLock ? (JSON.parse(rawLock) as number) : null\n\n const allowed = lock === null || expired(lock)\n if (allowed) {\n loc.setItem(lockKey, JSON.stringify(now() + lockTimeout))\n onUnlock()\n loc.removeItem(lockKey)\n return\n }\n\n if (!allowed && attempt < 3) {\n setTimeout(() => {\n mutex(key, onUnlock, attempt + 1)\n }, lockTimeout)\n } else {\n console.error('Unable to retrieve lock')\n }\n}\n\nexport class PersistedPriorityQueue extends PriorityQueue {\n constructor(maxAttempts: number, key: string) {\n super(maxAttempts, [])\n\n const itemsKey = `persisted-queue:v1:${key}:items`\n const seenKey = `persisted-queue:v1:${key}:seen`\n\n let saved: Context[] = []\n let lastSeen: Record = {}\n\n mutex(key, () => {\n try {\n saved = persisted(itemsKey)\n lastSeen = seen(seenKey)\n remove(itemsKey)\n remove(seenKey)\n\n this.queue = [...saved, ...this.queue]\n this.seen = { ...lastSeen, ...this.seen }\n } catch (err) {\n console.error(err)\n }\n })\n\n window.addEventListener('pagehide', () => {\n // we deliberately want to use the less powerful 'pagehide' API to only persist on events where the analytics instance gets destroyed, and not on tab away.\n if (this.todo > 0) {\n const items = [...this.queue, ...this.future]\n try {\n mutex(key, () => {\n persistItems(itemsKey, items)\n persistSeen(seenKey, this.seen)\n })\n } catch (err) {\n console.error(err)\n }\n }\n })\n }\n}\n", "import { AnalyticsSnippet } from '../browser/standalone-interface'\n\n/**\n * Stores the global window analytics key\n */\nlet _globalAnalyticsKey = 'analytics'\n\n/**\n * Gets the global analytics/buffer\n * @param key name of the window property where the buffer is stored (default: analytics)\n * @returns AnalyticsSnippet\n */\nexport function getGlobalAnalytics(): AnalyticsSnippet | undefined {\n return (window as any)[_globalAnalyticsKey]\n}\n\n/**\n * Replaces the global window key for the analytics/buffer object\n * @param key key name\n */\nexport function setGlobalAnalyticsKey(key: string) {\n _globalAnalyticsKey = key\n}\n\n/**\n * Sets the global analytics object\n * @param analytics analytics snippet\n */\nexport function setGlobalAnalytics(analytics: AnalyticsSnippet): void {\n ;(window as any)[_globalAnalyticsKey] = analytics\n}\n", "export { invokeCallback, pTimeout } from '@segment/analytics-core'\n", "import { Analytics } from './analytics'\nimport { EventProperties, Options } from './events'\nimport { pTimeout } from './callback'\n\n// Check if a user is opening the link in a new tab\nfunction userNewTab(event: Event): boolean {\n const typedEvent = event as Event & {\n ctrlKey: boolean\n shiftKey: boolean\n metaKey: boolean\n button: number\n }\n if (\n typedEvent.ctrlKey ||\n typedEvent.shiftKey ||\n typedEvent.metaKey ||\n (typedEvent.button && typedEvent.button == 1)\n ) {\n return true\n }\n return false\n}\n\n// Check if the link opens in new tab\nfunction linkNewTab(element: HTMLAnchorElement, href: string | null): boolean {\n if (element.target === '_blank' && href) {\n return true\n }\n return false\n}\n\nexport interface JQueryShim {\n toArray(): TElement[]\n}\n\nexport function link(\n this: Analytics,\n links: Element | Array | JQueryShim | null,\n event: string | Function,\n properties?: EventProperties | Function,\n options?: Options\n): Analytics {\n let elements: Array = []\n // always arrays, handles jquery\n if (!links) {\n return this\n }\n if (links instanceof Element) {\n elements = [links]\n } else if ('toArray' in links) {\n elements = links.toArray()\n } else {\n elements = links\n }\n\n elements.forEach((el: Element) => {\n el.addEventListener(\n 'click',\n (elementEvent: Event) => {\n const ev = event instanceof Function ? event(el) : event\n const props =\n properties instanceof Function ? properties(el) : properties\n const href =\n el.getAttribute('href') ||\n el.getAttributeNS('http://www.w3.org/1999/xlink', 'href') ||\n el.getAttribute('xlink:href') ||\n el.getElementsByTagName('a')[0]?.getAttribute('href')\n\n const trackEvent = pTimeout(\n this.track(ev, props, options ?? {}),\n this.settings.timeout ?? 500\n )\n\n if (\n !linkNewTab(el as HTMLAnchorElement, href) &&\n !userNewTab(elementEvent)\n ) {\n if (href) {\n elementEvent.preventDefault\n ? elementEvent.preventDefault()\n : (elementEvent.returnValue = false)\n trackEvent\n .catch(console.error)\n .then(() => {\n window.location.href = href\n })\n .catch(console.error)\n }\n }\n },\n false\n )\n })\n\n return this\n}\n\nexport type LinkArgs = Parameters\n\nexport function form(\n this: Analytics,\n forms: HTMLFormElement | Array | null,\n event: string | Function,\n properties?: EventProperties | Function,\n options?: Options\n): Analytics {\n // always arrays, handles jquery\n if (!forms) return this\n if (forms instanceof HTMLFormElement) forms = [forms]\n\n const elements = forms\n\n elements.forEach((el) => {\n if (!(el instanceof Element))\n throw new TypeError('Must pass HTMLElement to trackForm/trackSubmit.')\n const handler = (elementEvent: Event): void => {\n elementEvent.preventDefault\n ? elementEvent.preventDefault()\n : (elementEvent.returnValue = false)\n\n const ev = event instanceof Function ? event(el) : event\n const props = properties instanceof Function ? properties(el) : properties\n\n const trackEvent = pTimeout(\n this.track(ev, props, options ?? {}),\n this.settings.timeout ?? 500\n )\n\n trackEvent\n .catch(console.error)\n .then(() => {\n el.submit()\n })\n .catch(console.error)\n }\n\n // Support the events happening through jQuery or Zepto instead of through\n // the normal DOM API, because `el.submit` doesn't bubble up events...\n\n const $ = (window as any).jQuery || (window as any).Zepto\n if ($) {\n $(el).submit(handler)\n } else {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n el.addEventListener('submit', handler, false)\n }\n })\n\n return this\n}\n\nexport type FormArgs = Parameters\n", "\nvar identity = function(_){ return _; };\n\n\n/**\n * Module exports, export\n */\n\nmodule.exports = multiple(find);\nmodule.exports.find = module.exports;\n\n\n/**\n * Export the replacement function, return the modified object\n */\n\nmodule.exports.replace = function (obj, key, val, options) {\n multiple(replace).call(this, obj, key, val, options);\n return obj;\n};\n\n\n/**\n * Export the delete function, return the modified object\n */\n\nmodule.exports.del = function (obj, key, options) {\n multiple(del).call(this, obj, key, null, options);\n return obj;\n};\n\n\n/**\n * Compose applying the function to a nested key\n */\n\nfunction multiple (fn) {\n return function (obj, path, val, options) {\n var normalize = options && isFunction(options.normalizer) ? options.normalizer : defaultNormalize;\n path = normalize(path);\n\n var key;\n var finished = false;\n\n while (!finished) loop();\n\n function loop() {\n for (key in obj) {\n var normalizedKey = normalize(key);\n if (0 === path.indexOf(normalizedKey)) {\n var temp = path.substr(normalizedKey.length);\n if (temp.charAt(0) === '.' || temp.length === 0) {\n path = temp.substr(1);\n var child = obj[key];\n\n // we're at the end and there is nothing.\n if (null == child) {\n finished = true;\n return;\n }\n\n // we're at the end and there is something.\n if (!path.length) {\n finished = true;\n return;\n }\n\n // step into child\n obj = child;\n\n // but we're done here\n return;\n }\n }\n }\n\n key = undefined;\n // if we found no matching properties\n // on the current object, there's no match.\n finished = true;\n }\n\n if (!key) return;\n if (null == obj) return obj;\n\n // the `obj` and `key` is one above the leaf object and key, so\n // start object: { a: { 'b.c': 10 } }\n // end object: { 'b.c': 10 }\n // end key: 'b.c'\n // this way, you can do `obj[key]` and get `10`.\n return fn(obj, key, val);\n };\n}\n\n\n/**\n * Find an object by its key\n *\n * find({ first_name : 'Calvin' }, 'firstName')\n */\n\nfunction find (obj, key) {\n if (obj.hasOwnProperty(key)) return obj[key];\n}\n\n\n/**\n * Delete a value for a given key\n *\n * del({ a : 'b', x : 'y' }, 'X' }) -> { a : 'b' }\n */\n\nfunction del (obj, key) {\n if (obj.hasOwnProperty(key)) delete obj[key];\n return obj;\n}\n\n\n/**\n * Replace an objects existing value with a new one\n *\n * replace({ a : 'b' }, 'a', 'c') -> { a : 'c' }\n */\n\nfunction replace (obj, key, val) {\n if (obj.hasOwnProperty(key)) obj[key] = val;\n return obj;\n}\n\n/**\n * Normalize a `dot.separated.path`.\n *\n * A.HELL(!*&#(!)O_WOR LD.bar => ahelloworldbar\n *\n * @param {String} path\n * @return {String}\n */\n\nfunction defaultNormalize(path) {\n return path.replace(/[^a-zA-Z0-9\\.]+/g, '').toLowerCase();\n}\n\n/**\n * Check if a value is a function.\n *\n * @param {*} val\n * @return {boolean} Returns `true` if `val` is a function, otherwise `false`.\n */\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n", "\"use strict\";\n\nimport get from \"obj-case\";\n\nfunction trait(a, b) {\n return function () {\n // @ts-ignore\n let traits = this.traits();\n // @ts-ignore\n let props = this.properties ? this.properties() : {};\n\n return (\n get(traits, \"address.\" + a) ||\n get(traits, a) ||\n (b ? get(traits, \"address.\" + b) : null) ||\n (b ? get(traits, b) : null) ||\n get(props, \"address.\" + a) ||\n get(props, a) ||\n (b ? get(props, \"address.\" + b) : null) ||\n (b ? get(props, b) : null)\n );\n };\n}\n\n/**\n * Add address getters to `proto`.\n *\n * @ignore\n * @param {Function} proto\n */\nexport default function (proto) {\n proto.zip = trait(\"postalCode\", \"zip\");\n proto.country = trait(\"country\");\n proto.street = trait(\"street\");\n proto.state = trait(\"state\");\n proto.city = trait(\"city\");\n proto.region = trait(\"region\");\n}\n", "export function clone(properties) {\n if (typeof properties !== 'object') return properties\n\n if (Object.prototype.toString.call(properties) === '[object Object]') {\n const temp = {};\n for (const key in properties) {\n if (Object.prototype.hasOwnProperty.call(properties, key)) {\n temp[key] = clone(properties[key]);\n }\n }\n return temp;\n } else if (Array.isArray(properties)) {\n return properties.map(clone);\n } else {\n // this is dangerous because it means this is not cloned\n return properties;\n }\n}\n", "\"use strict\";\n\n// A few integrations are disabled by default. They must be explicitly enabled\n// by setting options[Provider] = true.\nlet disabled = {\n Salesforce: true,\n};\n\n/**\n * Check whether an integration should be enabled by default.\n *\n * @ignore\n * @param {string} integration\n * @return {boolean}\n */\nexport default function (integration) {\n return !disabled[integration];\n}\n", "'use strict';\n\n/**\n * Matcher, slightly modified from:\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n */\n\nvar matcher = /^(\\d{4})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:([ T])(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\n\n/**\n * Convert an ISO date string to a date. Fallback to native `Date.parse`.\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n *\n * @param {String} iso\n * @return {Date}\n */\n\nexports.parse = function(iso) {\n var numericKeys = [1, 5, 6, 7, 11, 12];\n var arr = matcher.exec(iso);\n var offset = 0;\n\n // fallback to native parsing\n if (!arr) {\n return new Date(iso);\n }\n\n /* eslint-disable no-cond-assign */\n // remove undefined values\n for (var i = 0, val; val = numericKeys[i]; i++) {\n arr[val] = parseInt(arr[val], 10) || 0;\n }\n /* eslint-enable no-cond-assign */\n\n // allow undefined days and months\n arr[2] = parseInt(arr[2], 10) || 1;\n arr[3] = parseInt(arr[3], 10) || 1;\n\n // month is 0-11\n arr[2]--;\n\n // allow abitrary sub-second precision\n arr[8] = arr[8] ? (arr[8] + '00').substring(0, 3) : 0;\n\n // apply timezone if one exists\n if (arr[4] === ' ') {\n offset = new Date().getTimezoneOffset();\n } else if (arr[9] !== 'Z' && arr[10]) {\n offset = arr[11] * 60 + arr[12];\n if (arr[10] === '+') {\n offset = 0 - offset;\n }\n }\n\n var millis = Date.UTC(arr[1], arr[2], arr[3], arr[5], arr[6] + offset, arr[7], arr[8]);\n return new Date(millis);\n};\n\n\n/**\n * Checks whether a `string` is an ISO date string. `strict` mode requires that\n * the date string at least have a year, month and date.\n *\n * @param {String} string\n * @param {Boolean} strict\n * @return {Boolean}\n */\n\nexports.is = function(string, strict) {\n if (typeof string !== 'string') {\n return false;\n }\n if (strict && (/^\\d{4}-\\d{2}-\\d{2}/).test(string) === false) {\n return false;\n }\n return matcher.test(string);\n};\n", "\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{13}/;\n\n/**\n * Check whether a string is a millisecond date string.\n *\n * @param {string} string\n * @return {boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a millisecond string to a date.\n *\n * @param {string} millis\n * @return {Date}\n */\nexports.parse = function (millis) {\n millis = parseInt(millis, 10);\n return new Date(millis);\n};\n", "\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{10}/;\n\n/**\n * Check whether a string is a second date string.\n *\n * @param {string} string\n * @return {Boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a second string to a date.\n *\n * @param {string} seconds\n * @return {Date}\n */\nexports.parse = function (seconds) {\n var millis = parseInt(seconds, 10) * 1000;\n return new Date(millis);\n};\n", "\"use strict\";\n\nvar isodate = require(\"@segment/isodate\");\nvar milliseconds = require(\"./milliseconds\");\nvar seconds = require(\"./seconds\");\n\nvar objProto = Object.prototype;\nvar toStr = objProto.toString;\n\nfunction isDate(value) {\n return toStr.call(value) === \"[object Date]\";\n}\n\nfunction isNumber(value) {\n return toStr.call(value) === \"[object Number]\";\n}\n\n/**\n * Returns a new Javascript Date object, allowing a variety of extra input types\n * over the native Date constructor.\n *\n * @param {Date|string|number} val\n */\nmodule.exports = function newDate(val) {\n if (isDate(val)) return val;\n if (isNumber(val)) return new Date(toMs(val));\n\n // date strings\n if (isodate.is(val)) {\n return isodate.parse(val);\n }\n if (milliseconds.is(val)) {\n return milliseconds.parse(val);\n }\n if (seconds.is(val)) {\n return seconds.parse(val);\n }\n\n // fallback to Date.parse\n return new Date(val);\n};\n\n/**\n * If the number passed val is seconds from the epoch, turn it into milliseconds.\n * Milliseconds would be greater than 31557600000 (December 31, 1970).\n *\n * @param {number} num\n */\nfunction toMs(num) {\n if (num < 31557600000) return num * 1000;\n return num;\n}\n", "'use strict';\n\nvar isodate = require('@segment/isodate');\n\n/**\n * Expose `traverse`.\n */\nmodule.exports = traverse;\n\n/**\n * Recursively traverse an object or array, and convert\n * all ISO date strings parse into Date objects.\n *\n * @param {Object} input - object, array, or string to convert\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverse(input, strict) {\n if (strict === undefined) strict = true;\n if (input && typeof input === 'object') {\n return traverseObject(input, strict);\n } else if (Array.isArray(input)) {\n return traverseArray(input, strict);\n } else if (isodate.is(input, strict)) {\n return isodate.parse(input);\n }\n return input;\n}\n\n/**\n * Object traverser helper function.\n *\n * @param {Object} obj - object to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverseObject(obj, strict) {\n Object.keys(obj).forEach(function(key) {\n obj[key] = traverse(obj[key], strict);\n });\n return obj;\n}\n\n/**\n * Array traverser helper function\n *\n * @param {Array} arr - array to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Array}\n */\nfunction traverseArray(arr, strict) {\n arr.forEach(function(value, index) {\n arr[index] = traverse(value, strict);\n });\n return arr;\n}\n", "\"use strict\";\n\nimport address from \"./address\";\nimport { clone } from \"./clone\";\nimport isEnabled from \"./is-enabled\";\nimport newDate from \"new-date\";\nimport objCase from \"obj-case\";\nimport traverse from \"@segment/isodate-traverse\";\n\n/**\n * A *Facade* is an object meant for creating convience wrappers around\n * objects. When developing integrations, you probably want to look at its\n * subclasses, such as {@link Track} or {@link Identify}, rather than this\n * general-purpose class.\n *\n * This letructor will initialize a new `Facade` with an `obj` of arguments.\n *\n * If the inputted `obj` doesn't have a `timestamp` property, one will be added\n * with the value `new Date()`. Otherwise, the `timestamp` property will be\n * converted to a Date using the `new-date` package.\n *\n * By default, the inputted object will be defensively copied, and all ISO\n * strings present in the string will be converted into Dates.\n *\n * @param {Object} obj - The object to wrap.\n * @param {Object} opts - Options about what kind of Facade to create.\n * @param {boolean} [opts.clone=true] - Whether to make defensive clones. If enabled,\n * the inputted object will be cloned, and any objects derived from this facade\n * will be cloned before being returned.\n * @param {boolean} [opts.traverse=true] - Whether to perform ISODate-Traverse\n * on the inputted object.\n *\n * @see {@link https://github.com/segmentio/new-date|new-date}\n * @see {@link https://github.com/segmentio/isodate-traverse|isodate-traverse}\n */\nexport function Facade (obj, opts) {\n opts = opts || {};\n this.raw = clone(obj);\n if (!(\"clone\" in opts)) opts.clone = true;\n if (opts.clone) obj = clone(obj);\n if (!(\"traverse\" in opts)) opts.traverse = true;\n if (!(\"timestamp\" in obj)) obj.timestamp = new Date();\n else obj.timestamp = newDate(obj.timestamp);\n if (opts.traverse) traverse(obj);\n this.opts = opts;\n this.obj = obj;\n}\n\nconst f = Facade.prototype;\n\n/**\n * Get a potentially-nested field in this facade. `field` should be a\n * period-separated sequence of properties.\n *\n * If the first field passed in points to a function (e.g. the `field` passed\n * in is `a.b.c` and this facade's `obj.a` is a function), then that function\n * will be called, and then the deeper fields will be fetched (using obj-case)\n * from what that function returns. If the first field isn't a function, then\n * this function works just like obj-case.\n *\n * Because this function uses obj-case, the camel- or snake-case of the input\n * is irrelevant.\n *\n * @example\n * YourClass.prototype.height = function() {\n * return this.proxy('getDimensions.height') ||\n * this.proxy('props.size.side_length');\n * }\n * @param {string} field - A sequence of properties, joined by periods (`.`).\n * @return {*} - A property of the inputted object.\n * @see {@link https://github.com/segmentio/obj-case|obj-case}\n */\nf.proxy = function(field) {\n let fields = field.split(\".\");\n field = fields.shift();\n\n // Call a function at the beginning to take advantage of facaded fields\n let obj = this[field] || this.obj[field];\n if (!obj) return obj;\n if (typeof obj === \"function\") obj = obj.call(this) || {};\n if (fields.length === 0) return this.opts.clone ? transform(obj) : obj;\n\n obj = objCase(obj, fields.join(\".\"));\n return this.opts.clone ? transform(obj) : obj;\n};\n\n/**\n * Directly access a specific `field` from the underlying object. Only\n * \"top-level\" fields will work with this function. \"Nested\" fields *will not\n * work* with this function.\n *\n * @param {string} field\n * @return {*}\n */\nf.field = function(field) {\n let obj = this.obj[field];\n return this.opts.clone ? transform(obj) : obj;\n};\n\n/**\n * Utility method to always proxy a particular `field`. In other words, it\n * returns a function that will always return `this.proxy(field)`.\n *\n * @example\n * MyClass.prototype.height = Facade.proxy('options.dimensions.height');\n *\n * @param {string} field\n * @return {Function}\n */\nFacade.proxy = function(field) {\n return function() {\n return this.proxy(field);\n };\n};\n\n/**\n * Utility method to always access a `field`. In other words, it returns a\n * function that will always return `this.field(field)`.\n *\n * @param {string} field\n * @return {Function}\n */\nFacade.field = function(field) {\n return function() {\n return this.field(field);\n };\n};\n\n/**\n * Create a helper function for fetching a \"plural\" thing.\n *\n * The generated method will take the inputted `path` and append an \"s\" to it\n * and calls `this.proxy` with this \"pluralized\" path. If that produces an\n * array, that will be returned. Otherwise, a one-element array containing\n * `this.proxy(path)` will be returned.\n *\n * @example\n * MyClass.prototype.birds = Facade.multi('animals.bird');\n *\n * @param {string} path\n * @return {Function}\n */\nFacade.multi = function(path) {\n return function() {\n let multi = this.proxy(path + \"s\");\n if (Array.isArray(multi)) return multi;\n let one = this.proxy(path);\n if (one) one = [this.opts.clone ? clone(one) : one];\n return one || [];\n };\n};\n\n/**\n * Create a helper function for getting a \"singular\" thing.\n *\n * The generated method will take the inputted path and call\n * `this.proxy(path)`. If a truthy thing is produced, it will be returned.\n * Otherwise, `this.proxy(path + 's')` will be called, and if that produces an\n * array the first element of that array will be returned. Otherwise,\n * `undefined` is returned.\n *\n * @example\n * MyClass.prototype.bird = Facade.one('animals.bird');\n *\n * @param {string} path\n * @return {Function}\n */\nFacade.one = function(path) {\n return function() {\n let one = this.proxy(path);\n if (one) return one;\n let multi = this.proxy(path + \"s\");\n if (Array.isArray(multi)) return multi[0];\n };\n};\n\n/**\n * Gets the underlying object this facade wraps around.\n *\n * If this facade has a property `type`, it will be invoked as a function and\n * will be assigned as the property `type` of the outputted object.\n *\n * @return {Object}\n */\nf.json = function() {\n let ret = this.opts.clone ? clone(this.obj) : this.obj;\n if (this.type) ret.type = this.type();\n return ret;\n};\n\n/**\n * Gets a copy of the unmodified input object this facade wraps around.\n * \n * Unlike the `json` method which does make some subtle modifications \n * to datetime values and the `type` property. This method returns a copy of \n * the unmodified input object\n * \n * @return {Object}\n */\nf.rawEvent = function() {\n return this.raw;\n};\n\n/**\n * Get the options of a call. If an integration is passed, only the options for\n * that integration are included. If the integration is not enabled, then\n * `undefined` is returned.\n *\n * Options are taken from the `options` property of the underlying object,\n * falling back to the object's `context` or simply `{}`.\n *\n * @param {string} integration - The name of the integration to get settings\n * for. Casing does not matter.\n * @return {Object|undefined}\n */\nf.options = function(integration) {\n let obj = this.obj.options || this.obj.context || {};\n let options = this.opts.clone ? clone(obj) : obj;\n if (!integration) return options;\n if (!this.enabled(integration)) return;\n let integrations = this.integrations();\n let value = integrations[integration] || objCase(integrations, integration);\n if (typeof value !== \"object\") value = objCase(this.options(), integration);\n return typeof value === \"object\" ? value : {};\n};\n\n/**\n * An alias for {@link Facade#options}.\n */\nf.context = f.options;\n\n/**\n * Check whether an integration is enabled.\n *\n * Basically, this method checks whether this integration is explicitly\n * enabled. If it isn'texplicitly mentioned, it checks whether it has been\n * enabled at the global level. Some integrations (e.g. Salesforce), cannot\n * enabled by these global event settings.\n *\n * More concretely, the deciding factors here are:\n *\n * 1. If `this.integrations()` has the integration set to `true`, return `true`.\n * 2. If `this.integrations().providers` has the integration set to `true`, return `true`.\n * 3. If integrations are set to default-disabled via global parameters (i.e.\n * `options.providers.all`, `options.all`, or `integrations.all`), then return\n * false.\n * 4. If the integration is one of the special default-deny integrations\n * (currently, only Salesforce), then return false.\n * 5. Else, return true.\n *\n * @param {string} integration\n * @return {boolean}\n */\nf.enabled = function(integration) {\n let allEnabled = this.proxy(\"options.providers.all\");\n if (typeof allEnabled !== \"boolean\") allEnabled = this.proxy(\"options.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = this.proxy(\"integrations.all\");\n if (typeof allEnabled !== \"boolean\") allEnabled = true;\n\n let enabled = allEnabled && isEnabled(integration);\n let options = this.integrations();\n\n // If the integration is explicitly enabled or disabled, use that\n // First, check options.providers for backwards compatibility\n if (options.providers && options.providers.hasOwnProperty(integration)) {\n enabled = options.providers[integration];\n }\n\n // Next, check for the integration's existence in 'options' to enable it.\n // If the settings are a boolean, use that, otherwise it should be enabled.\n if (options.hasOwnProperty(integration)) {\n let settings = options[integration];\n if (typeof settings === \"boolean\") {\n enabled = settings;\n } else {\n enabled = true;\n }\n }\n\n return !!enabled;\n};\n\n/**\n * Get all `integration` options.\n *\n * @ignore\n * @param {string} integration\n * @return {Object}\n */\nf.integrations = function() {\n return (\n this.obj.integrations || this.proxy(\"options.providers\") || this.options()\n );\n};\n\n/**\n * Check whether the user is active.\n *\n * @return {boolean}\n */\nf.active = function() {\n let active = this.proxy(\"options.active\");\n if (active === null || active === undefined) active = true;\n return active;\n};\n\n/**\n * Get `sessionId / anonymousId`.\n *\n * @return {*}\n */\nf.anonymousId = function() {\n return this.field(\"anonymousId\") || this.field(\"sessionId\");\n};\n\n/**\n * An alias for {@link Facade#anonymousId}.\n *\n * @function\n * @return {string}\n */\nf.sessionId = f.anonymousId;\n\n/**\n * Get `groupId` from `context.groupId`.\n *\n * @function\n * @return {string}\n */\nf.groupId = Facade.proxy(\"options.groupId\");\n\n/**\n * Get the call's \"traits\". All event types can pass in traits, though {@link\n * Identify} and {@link Group} override this implementation.\n *\n * Traits are gotten from `options.traits`, augmented with a property `id` with\n * the event's `userId`.\n *\n * The parameter `aliases` is meant to transform keys in `options.traits` into\n * new keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx`\n * in the traits, and move it to `yyy`. If `xxx` is a method of this facade,\n * it'll be called as a function instead of treated as a key into the traits.\n *\n * @example\n * let obj = { options: { traits: { foo: \"bar\" } }, anonymousId: \"xxx\" }\n * let facade = new Facade(obj)\n *\n * facade.traits() // { \"foo\": \"bar\" }\n * facade.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * facade.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\nf.traits = function(aliases) {\n let ret = this.proxy(\"options.traits\") || {};\n let id = this.userId();\n aliases = aliases || {};\n\n if (id) ret.id = id;\n\n for (const alias in aliases) {\n if (Object.prototype.hasOwnProperty.call(aliases, alias)) {\n const value = this[alias] == null\n ? this.proxy(\"options.traits.\" + alias)\n : this[alias]();\n if (value == null) continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n }\n\n return ret;\n};\n\n/**\n * The library and version of the client used to produce the message.\n *\n * If the library name cannot be determined, it is set to `\"unknown\"`. If the\n * version cannot be determined, it is set to `null`.\n *\n * @return {{name: string, version: string}}\n */\nf.library = function() {\n let library = this.proxy(\"options.library\");\n if (!library) return { name: \"unknown\", version: null };\n if (typeof library === \"string\") return { name: library, version: null };\n return library;\n};\n\n/**\n * Return the device information, falling back to an empty object.\n *\n * Interesting values of `type` are `\"ios\"` and `\"android\"`, but other values\n * are possible if the client is doing something unusual with `context.device`.\n *\n * @return {{type: string}}\n */\nf.device = function() {\n let device = this.proxy(\"context.device\");\n if (typeof device !== \"object\" || device === null) {\n device = {};\n }\n let library = this.library().name;\n if (device.type) return device;\n\n if (library.indexOf(\"ios\") > -1) device.type = \"ios\";\n if (library.indexOf(\"android\") > -1) device.type = \"android\";\n return device;\n};\n\n/**\n * Get the User-Agent from `context.userAgent`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.userAgent = Facade.proxy(\"context.userAgent\");\n\n/**\n * Get the timezone from `context.timezone`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.timezone = Facade.proxy(\"context.timezone\");\n\n/**\n * Get the timestamp from `context.timestamp`.\n *\n * @function\n * @return string\n */\nf.timestamp = Facade.field(\"timestamp\");\n\n/**\n * Get the channel from `channel`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.channel = Facade.field(\"channel\");\n\n/**\n * Get the IP address from `context.ip`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.ip = Facade.proxy(\"context.ip\");\n\n/**\n * Get the user ID from `userId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return string\n */\nf.userId = Facade.field(\"userId\");\n\n/**\n * Get the ZIP/Postal code from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name zip\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the country from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name country\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the street from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name street\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the state from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name state\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the city from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name city\n * @function\n * @memberof f\n * @return {string}\n */\n\n/**\n * Get the region from `traits`, `traits.address`, `properties`, or\n * `properties.address`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @name region\n * @function\n * @memberof f\n * @return {string}\n */\n\naddress(f);\n\n/**\n * Return the cloned and traversed object\n *\n * @ignore\n * @param {*} obj\n * @return {*}\n */\nfunction transform (obj) {\n return clone(obj);\n}\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Facade } from \"./facade\";\n\n/**\n * Initialize a new `Alias` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.from] - The previous ID of the user.\n * @param {string} [dictionary.to] - The new ID of the user.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Alias(dictionary, opts) {\n Facade.call(this, dictionary, opts);\n}\n\ninherit(Alias, Facade);\n\n/**\n * Return the type of facade this is. This will always return `\"alias\"`.\n *\n * @return {string}\n */\nAlias.prototype.action = function () {\n return \"alias\";\n};\n\n/**\n * An alias for {@link Alias#action}.\n *\n * @function\n * @return {string}\n */\nAlias.prototype.type = Alias.prototype.action;\n\n/**\n * Get the user's previous ID from `previousId` or `from`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nAlias.prototype.previousId = function () {\n return this.field(\"previousId\") || this.field(\"from\");\n};\n\n/**\n * An alias for {@link Alias#previousId}.\n *\n * @function\n * @return {string}\n */\nAlias.prototype.from = Alias.prototype.previousId;\n\n/**\n * Get the user's new ID from `userId` or `to`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nAlias.prototype.userId = function () {\n return this.field(\"userId\") || this.field(\"to\");\n};\n\n/**\n * An alias for {@link Alias#userId}.\n *\n * @function\n * @return {string}\n */\nAlias.prototype.to = Alias.prototype.userId;\n", "const matcher = /.+\\@.+\\..+/;\n\nexport default function isEmail(string) {\n return matcher.test(string);\n}\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport isEmail from \"./is-email\";\nimport newDate from \"new-date\";\nimport { Facade } from \"./facade\";\n\n/**\n * Initialize a new `Group` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.userId] - The user to add to the group.\n * @param {string} [dictionary.groupId] - The ID of the group.\n * @param {Object} [dictionary.traits] - The traits of the group.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Group(dictionary, opts) {\n Facade.call(this, dictionary, opts);\n}\n\ninherit(Group, Facade);\n\nconst g = Group.prototype;\n\n/**\n * Return the type of facade this is. This will always return `\"group\"`.\n *\n * @return {string}\n */\ng.action = function () {\n return \"group\";\n};\n\n/**\n * An alias for {@link Group#action}.\n *\n * @function\n * @return {string}\n */\ng.type = g.action;\n\n/**\n * Get the group ID from `groupId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ng.groupId = Facade.field(\"groupId\");\n\n/**\n * Get the time of creation of the group from `traits.createdAt`,\n * `traits.created`, `properties.createdAt`, or `properties.created`.\n *\n * @return {Date}\n */\ng.created = function () {\n var created =\n this.proxy(\"traits.createdAt\") ||\n this.proxy(\"traits.created\") ||\n this.proxy(\"properties.createdAt\") ||\n this.proxy(\"properties.created\");\n\n if (created) return newDate(created);\n};\n\n/**\n * Get the group's email from `traits.email`, falling back to `groupId` only if\n * it looks like a valid email.\n *\n * @return {string}\n */\ng.email = function () {\n var email = this.proxy(\"traits.email\");\n if (email) return email;\n var groupId = this.groupId();\n if (isEmail(groupId)) return groupId;\n};\n\n/**\n * Get the group's traits. This is identical to how {@link Facade#traits}\n * works, except it looks at `traits.*` instead of `options.traits.*`.\n *\n * Traits are gotten from `traits`, augmented with a property `id` with\n * the event's `groupId`.\n *\n * The parameter `aliases` is meant to transform keys in `traits` into new\n * keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx` in\n * the traits, and move it to `yyy`. If `xxx` is a method of this facade, it'll\n * be called as a function instead of treated as a key into the traits.\n *\n * @example\n * var obj = { traits: { foo: \"bar\" }, anonymousId: \"xxx\" }\n * var group = new Group(obj)\n *\n * group.traits() // { \"foo\": \"bar\" }\n * group.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * group.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\ng.traits = function (aliases) {\n var ret = this.properties();\n var id = this.groupId();\n aliases = aliases || {};\n\n if (id) ret.id = id;\n\n for (const alias in aliases) {\n if (Object.prototype.hasOwnProperty.call(aliases, alias)) {\n const value = this[alias] == null\n ? this.proxy(\"traits.\" + alias)\n : this[alias]();\n if (value == null) continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n }\n\n return ret;\n};\n\n/**\n * Get the group's name from `traits.name`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ng.name = Facade.proxy(\"traits.name\");\n\n/**\n * Get the group's industry from `traits.industry`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ng.industry = Facade.proxy(\"traits.industry\");\n\n/**\n * Get the group's employee count from `traits.employees`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\ng.employees = Facade.proxy(\"traits.employees\");\n\n/**\n * Get the group's properties from `traits` or `properties`, falling back to\n * simply an empty object.\n *\n * @return {Object}\n */\ng.properties = function () {\n // TODO remove this function\n return this.field(\"traits\") || this.field(\"properties\") || {};\n};\n", "\"use strict\";\n\nimport { Facade } from \"./facade\";\nimport get from \"obj-case\";\nimport inherit from \"inherits\";\nimport isEmail from \"./is-email\";\nimport newDate from \"new-date\";\n\nlet trim = (str) => str.trim();\n\n/**\n * Initialize a new `Identify` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.userId] - The ID of the user.\n * @param {string} [dictionary.anonymousId] - The anonymous ID of the user.\n * @param {string} [dictionary.traits] - The user's traits.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Identify(dictionary, opts) {\n Facade.call(this, dictionary, opts);\n}\n\ninherit(Identify, Facade);\n\nconst i = Identify.prototype;\n\n/**\n * Return the type of facade this is. This will always return `\"identify\"`.\n *\n * @return {string}\n */\ni.action = function () {\n return \"identify\";\n};\n\n/**\n * An alias for {@link Identify#action}.\n *\n * @function\n * @return {string}\n */\ni.type = i.action;\n\n/**\n * Get the user's traits. This is identical to how {@link Facade#traits} works,\n * except it looks at `traits.*` instead of `options.traits.*`.\n *\n * Traits are gotten from `traits`, augmented with a property `id` with\n * the event's `userId`.\n *\n * The parameter `aliases` is meant to transform keys in `traits` into new\n * keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx` in\n * the traits, and move it to `yyy`. If `xxx` is a method of this facade, it'll\n * be called as a function instead of treated as a key into the traits.\n *\n * @example\n * let obj = { traits: { foo: \"bar\" }, anonymousId: \"xxx\" }\n * let identify = new Identify(obj)\n *\n * identify.traits() // { \"foo\": \"bar\" }\n * identify.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * identify.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\ni.traits = function (aliases) {\n let ret = this.field(\"traits\") || {};\n let id = this.userId();\n aliases = aliases || {};\n\n if (id) ret.id = id;\n\n for (let alias in aliases) {\n let value =\n this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n if (value == null) continue;\n ret[aliases[alias]] = value;\n if (alias !== aliases[alias]) delete ret[alias];\n }\n\n return ret;\n};\n\n/**\n * Get the user's email from `traits.email`, falling back to `userId` only if\n * it looks like a valid email.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.email = function () {\n let email = this.proxy(\"traits.email\");\n if (email) return email;\n\n let userId = this.userId();\n if (isEmail(userId)) return userId;\n};\n\n/**\n * Get the time of creation of the user from `traits.created` or\n * `traits.createdAt`.\n *\n * @return {Date}\n */\ni.created = function () {\n let created = this.proxy(\"traits.created\") || this.proxy(\"traits.createdAt\");\n if (created) return newDate(created);\n};\n\n/**\n * Get the time of creation of the user's company from `traits.company.created`\n * or `traits.company.createdAt`.\n *\n * @return {Date}\n */\ni.companyCreated = function () {\n let created =\n this.proxy(\"traits.company.created\") ||\n this.proxy(\"traits.company.createdAt\");\n\n if (created) {\n return newDate(created);\n }\n};\n\n/**\n * Get the user's company name from `traits.company.name`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.companyName = function () {\n return this.proxy(\"traits.company.name\");\n};\n\n/**\n * Get the user's name `traits.name`, falling back to combining {@link\n * Identify#firstName} and {@link Identify#lastName} if possible.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.name = function () {\n let name = this.proxy(\"traits.name\");\n if (typeof name === \"string\") {\n return trim(name);\n }\n\n let firstName = this.firstName();\n let lastName = this.lastName();\n if (firstName && lastName) {\n return trim(firstName + \" \" + lastName);\n }\n};\n\n/**\n * Get the user's first name from `traits.firstName`, optionally splitting it\n * out of a the full name if that's all that was provided.\n *\n * Splitting the full name works on the assumption that the full name is of the\n * form \"FirstName LastName\"; it will not work for non-Western names.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.firstName = function () {\n let firstName = this.proxy(\"traits.firstName\");\n if (typeof firstName === \"string\") {\n return trim(firstName);\n }\n\n let name = this.proxy(\"traits.name\");\n if (typeof name === \"string\") {\n return trim(name).split(\" \")[0];\n }\n};\n\n/**\n * Get the user's last name from `traits.lastName`, optionally splitting it out\n * of a the full name if that's all that was provided.\n *\n * Splitting the full name works on the assumption that the full name is of the\n * form \"FirstName LastName\"; it will not work for non-Western names.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.lastName = function () {\n let lastName = this.proxy(\"traits.lastName\");\n if (typeof lastName === \"string\") {\n return trim(lastName);\n }\n\n let name = this.proxy(\"traits.name\");\n if (typeof name !== \"string\") {\n return;\n }\n\n let space = trim(name).indexOf(\" \");\n if (space === -1) {\n return;\n }\n\n return trim(name.substr(space + 1));\n};\n\n/**\n * Get the user's \"unique id\" from `userId`, `traits.username`, or\n * `traits.email`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.uid = function () {\n return this.userId() || this.username() || this.email();\n};\n\n/**\n * Get the user's description from `traits.description` or `traits.background`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.description = function () {\n return this.proxy(\"traits.description\") || this.proxy(\"traits.background\");\n};\n\n/**\n * Get the user's age from `traits.age`, falling back to computing it from\n * `traits.birthday` and the current time.\n *\n * @return {number}\n */\ni.age = function () {\n let date = this.birthday();\n let age = get(this.traits(), \"age\");\n if (age != null) return age;\n if (!(date instanceof Date)) return;\n let now = new Date();\n return now.getFullYear() - date.getFullYear();\n};\n\n/**\n * Get the URL of the user's avatar from `traits.avatar`, `traits.photoUrl`, or\n * `traits.avatarUrl`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.avatar = function () {\n let traits = this.traits();\n return (\n get(traits, \"avatar\") || get(traits, \"photoUrl\") || get(traits, \"avatarUrl\")\n );\n};\n\n/**\n * Get the user's job position from `traits.position` or `traits.jobTitle`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\ni.position = function () {\n let traits = this.traits();\n return get(traits, \"position\") || get(traits, \"jobTitle\");\n};\n\n/**\n * Get the user's username from `traits.username`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ni.username = Facade.proxy(\"traits.username\");\n\n/**\n * Get the user's website from `traits.website`, or if there are multiple in\n * `traits.websites`, return the first one.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ni.website = Facade.one(\"traits.website\");\n\n/**\n * Get the user's websites from `traits.websites`, or if there is only one in\n * `traits.website`, then wrap it in an array.\n *\n * This *should* be an array of strings, but may not be if the client isn't\n * adhering to the spec.\n *\n * @function\n * @return {array}\n */\ni.websites = Facade.multi(\"traits.website\");\n\n/**\n * Get the user's phone number from `traits.phone`, or if there are multiple in\n * `traits.phones`, return the first one.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ni.phone = Facade.one(\"traits.phone\");\n\n/**\n * Get the user's phone numbers from `traits.phones`, or if there is only one\n * in `traits.phone`, then wrap it in an array.\n *\n * This *should* be an array of strings, but may not be if the client isn't\n * adhering to the spec.\n *\n * @function\n * @return {array}\n */\ni.phones = Facade.multi(\"traits.phone\");\n\n/**\n * Get the user's address from `traits.address`.\n *\n * This *should* be an object, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {object}\n */\ni.address = Facade.proxy(\"traits.address\");\n\n/**\n * Get the user's gender from `traits.gender`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\ni.gender = Facade.proxy(\"traits.gender\");\n\n/**\n * Get the user's birthday from `traits.birthday`.\n *\n * This *should* be a Date if `opts.traverse` was enabled (it is by default)\n * when letructing this Identify. Otherwise, it should be a string. But it\n * may be neither if the client isn't adhering to the spec.\n * spec.\n *\n * @function\n * @return {object}\n */\ni.birthday = Facade.proxy(\"traits.birthday\");\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Facade } from \"./facade\";\nimport { Identify } from \"./identify\";\nimport isEmail from \"./is-email\";\nimport get from \"obj-case\";\n\n/**\n * Initialize a new `Track` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.event] - The name of the event being tracked.\n * @param {string} [dictionary.userId] - The ID of the user being tracked.\n * @param {string} [dictionary.anonymousId] - The anonymous ID of the user.\n * @param {string} [dictionary.properties] - Properties of the track event.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Track(dictionary, opts) {\n Facade.call(this, dictionary, opts);\n}\n\ninherit(Track, Facade);\n\nlet t = Track.prototype;\n\n/**\n * Return the type of facade this is. This will always return `\"track\"`.\n *\n * @return {string}\n */\nt.action = function () {\n return \"track\";\n};\n\n/**\n * An alias for {@link Track#action}.\n *\n * @function\n * @return {string}\n */\nt.type = t.action;\n\n/**\n * Get the event name from `event`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.event = Facade.field(\"event\");\n\n/**\n * Get the event value, usually the monetary value, from `properties.value`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.value = Facade.proxy(\"properties.value\");\n\n/**\n * Get the event cateogry from `properties.category`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.category = Facade.proxy(\"properties.category\");\n\n/**\n * Get the event ID from `properties.id`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.id = Facade.proxy(\"properties.id\");\n\n/**\n * Get the product ID from `properties.productId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.productId = function () {\n return (\n this.proxy(\"properties.product_id\") || this.proxy(\"properties.productId\")\n );\n};\n\n/**\n * Get the promotion ID from `properties.promotionId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.promotionId = function () {\n return (\n this.proxy(\"properties.promotion_id\") ||\n this.proxy(\"properties.promotionId\")\n );\n};\n\n/**\n * Get the cart ID from `properties.cartId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.cartId = function () {\n return this.proxy(\"properties.cart_id\") || this.proxy(\"properties.cartId\");\n};\n\n/**\n * Get the checkout ID from `properties.checkoutId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.checkoutId = function () {\n return (\n this.proxy(\"properties.checkout_id\") || this.proxy(\"properties.checkoutId\")\n );\n};\n\n/**\n * Get the payment ID from `properties.paymentId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.paymentId = function () {\n return (\n this.proxy(\"properties.payment_id\") || this.proxy(\"properties.paymentId\")\n );\n};\n\n/**\n * Get the coupon ID from `properties.couponId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.couponId = function () {\n return (\n this.proxy(\"properties.coupon_id\") || this.proxy(\"properties.couponId\")\n );\n};\n\n/**\n * Get the wishlist ID from `properties.wishlistId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.wishlistId = function () {\n return (\n this.proxy(\"properties.wishlist_id\") || this.proxy(\"properties.wishlistId\")\n );\n};\n\n/**\n * Get the review ID from `properties.reviewId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.reviewId = function () {\n return (\n this.proxy(\"properties.review_id\") || this.proxy(\"properties.reviewId\")\n );\n};\n\n/**\n * Get the order ID from `properties.id` or `properties.orderId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.orderId = function () {\n // doesn't follow above convention since this fallback order was how it used to be\n return (\n this.proxy(\"properties.id\") ||\n this.proxy(\"properties.order_id\") ||\n this.proxy(\"properties.orderId\")\n );\n};\n\n/**\n * Get the SKU from `properties.sku`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.sku = Facade.proxy(\"properties.sku\");\n\n/**\n * Get the amount of tax for this purchase from `properties.tax`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.tax = Facade.proxy(\"properties.tax\");\n\n/**\n * Get the name of this event from `properties.name`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.name = Facade.proxy(\"properties.name\");\n\n/**\n * Get the price of this purchase from `properties.price`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.price = Facade.proxy(\"properties.price\");\n\n/**\n * Get the total for this purchase from `properties.total`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.total = Facade.proxy(\"properties.total\");\n\n/**\n * Whether this is a repeat purchase from `properties.repeat`.\n *\n * This *should* be a boolean, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {boolean}\n */\nt.repeat = Facade.proxy(\"properties.repeat\");\n\n/**\n * Get the coupon for this purchase from `properties.coupon`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.coupon = Facade.proxy(\"properties.coupon\");\n\n/**\n * Get the shipping for this purchase from `properties.shipping`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.shipping = Facade.proxy(\"properties.shipping\");\n\n/**\n * Get the discount for this purchase from `properties.discount`.\n *\n * This *should* be a number, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {number}\n */\nt.discount = Facade.proxy(\"properties.discount\");\n\n/**\n * Get the shipping method for this purchase from `properties.shippingMethod`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.shippingMethod = function () {\n return (\n this.proxy(\"properties.shipping_method\") ||\n this.proxy(\"properties.shippingMethod\")\n );\n};\n\n/**\n * Get the payment method for this purchase from `properties.paymentMethod`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.paymentMethod = function () {\n return (\n this.proxy(\"properties.payment_method\") ||\n this.proxy(\"properties.paymentMethod\")\n );\n};\n\n/**\n * Get a description for this event from `properties.description`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.description = Facade.proxy(\"properties.description\");\n\n/**\n * Get a plan, as in the plan the user is on, for this event from\n * `properties.plan`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string}\n */\nt.plan = Facade.proxy(\"properties.plan\");\n\n/**\n * Get the subtotal for this purchase from `properties.subtotal`.\n *\n * If `properties.subtotal` isn't available, then fall back to computing the\n * total from `properties.total` or `properties.revenue`, and then subtracting\n * tax, shipping, and discounts.\n *\n * If neither subtotal, total, nor revenue are available, then return 0.\n *\n * @return {number}\n */\nt.subtotal = function () {\n let subtotal = get(this.properties(), \"subtotal\");\n let total = this.total() || this.revenue();\n\n if (subtotal) return subtotal;\n if (!total) return 0;\n\n if (this.total()) {\n let n = this.tax();\n if (n) total -= n;\n n = this.shipping();\n if (n) total -= n;\n n = this.discount();\n if (n) total += n;\n }\n\n return total;\n};\n\n/**\n * Get the products for this event from `properties.products` if it's an\n * array, falling back to an empty array.\n *\n * @return {Array}\n */\nt.products = function () {\n let props = this.properties();\n let products = get(props, \"products\");\n if (Array.isArray(products)) {\n return products.filter(item => item !== null)\n }\n return [];\n};\n\n/**\n * Get the quantity for this event from `properties.quantity`, falling back to\n * a quantity of one.\n *\n * @return {number}\n */\nt.quantity = function () {\n let props = this.obj.properties || {};\n return props.quantity || 1;\n};\n\n/**\n * Get the currency for this event from `properties.currency`, falling back to\n * \"USD\".\n *\n * @return {string}\n */\nt.currency = function () {\n let props = this.obj.properties || {};\n return props.currency || \"USD\";\n};\n\n/**\n * Get the referrer for this event from `context.referrer.url`,\n * `context.page.referrer`, or `properties.referrer`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\nt.referrer = function () {\n // TODO re-examine whether this function is necessary\n return (\n this.proxy(\"context.referrer.url\") ||\n this.proxy(\"context.page.referrer\") ||\n this.proxy(\"properties.referrer\")\n );\n};\n\n/**\n * Get the query for this event from `options.query`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @function\n * @return {string|object}\n */\nt.query = Facade.proxy(\"options.query\");\n\n/**\n * Get the page's properties. This is identical to how {@link Facade#traits}\n * works, except it looks at `properties.*` instead of `options.traits.*`.\n *\n * Properties are gotten from `properties`.\n *\n * The parameter `aliases` is meant to transform keys in `properties` into new\n * keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx` in\n * the traits, and move it to `yyy`. If `xxx` is a method of this facade, it'll\n * be called as a function instead of treated as a key into the traits.\n *\n * @example\n * let obj = { properties: { foo: \"bar\" }, anonymousId: \"xxx\" }\n * let track = new Track(obj)\n *\n * track.traits() // { \"foo\": \"bar\" }\n * track.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * track.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\nt.properties = function (aliases) {\n let ret = this.field(\"properties\") || {};\n aliases = aliases || {};\n\n for (const alias in aliases) {\n if (Object.prototype.hasOwnProperty.call(aliases, alias)) {\n const value = this[alias] == null\n ? this.proxy(\"properties.\" + alias)\n : this[alias]();\n if (value == null) continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n }\n\n return ret;\n};\n\n/**\n * Get the username of the user for this event from `traits.username`,\n * `properties.username`, `userId`, or `anonymousId`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string|undefined}\n */\nt.username = function () {\n return (\n this.proxy(\"traits.username\") ||\n this.proxy(\"properties.username\") ||\n this.userId() ||\n this.sessionId()\n );\n};\n\n/**\n * Get the email of the user for this event from `trais.email`,\n * `properties.email`, or `options.traits.email`, falling back to `userId` if\n * it looks like a valid email.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string|undefined}\n */\nt.email = function () {\n let email =\n this.proxy(\"traits.email\") ||\n this.proxy(\"properties.email\") ||\n this.proxy(\"options.traits.email\");\n if (email) return email;\n\n let userId = this.userId();\n if (isEmail(userId)) return userId;\n};\n\n/**\n * Get the revenue for this event.\n *\n * If this is an \"Order Completed\" event, this will be the `properties.total`\n * falling back to the `properties.revenue`. For all other events, this is\n * simply taken from `properties.revenue`.\n *\n * If there are dollar signs in these properties, they will be removed. The\n * result will be parsed into a number.\n *\n * @return {number}\n */\nt.revenue = function () {\n let revenue = this.proxy(\"properties.revenue\");\n let event = this.event();\n let orderCompletedRegExp = /^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i;\n\n // it's always revenue, unless it's called during an order completion.\n if (!revenue && event && event.match(orderCompletedRegExp)) {\n revenue = this.proxy(\"properties.total\");\n }\n\n return currency(revenue);\n};\n\n/**\n * Get the revenue for this event in \"cents\" -- in other words, multiply the\n * {@link Track#revenue} by 100, or return 0 if there isn't a numerical revenue\n * for this event.\n *\n * @return {number}\n */\nt.cents = function () {\n let revenue = this.revenue();\n return typeof revenue !== \"number\" ? this.value() || 0 : revenue * 100;\n};\n\n/**\n * Convert this event into an {@link Identify} facade.\n *\n * This works by taking this event's underlying object and creating an Identify\n * from it. This event's traits, taken from `options.traits`, will be used as\n * the Identify's traits.\n *\n * @return {Identify}\n */\nt.identify = function () {\n // TODO: remove me.\n let json = this.json();\n json.traits = this.traits();\n return new Identify(json, this.opts);\n};\n\n/**\n * Get float from currency value.\n *\n * @ignore\n * @param {*} val\n * @return {number}\n */\nfunction currency(val) {\n if (!val) return;\n if (typeof val === \"number\") {\n return val;\n }\n if (typeof val !== \"string\") {\n return;\n }\n\n val = val.replace(/\\$/g, \"\");\n val = parseFloat(val);\n\n if (!isNaN(val)) {\n return val;\n }\n}\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Facade } from \"./facade\";\nimport { Track } from \"./track\";\nimport isEmail from \"./is-email\";\n\n/**\n * Initialize a new `Page` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.category] - The page category.\n * @param {string} [dictionary.name] - The page name.\n * @param {string} [dictionary.properties] - The page properties.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Page(dictionary, opts) {\n Facade.call(this, dictionary, opts);\n}\n\ninherit(Page, Facade);\n\nconst p = Page.prototype;\n\n/**\n * Return the type of facade this is. This will always return `\"page\"`.\n *\n * @return {string}\n */\np.action = function () {\n return \"page\";\n};\n\n/**\n * An alias for {@link Page#action}.\n *\n * @function\n * @return {string}\n */\np.type = p.action;\n\n/**\n * Get the page category from `category`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.category = Facade.field(\"category\");\n\n/**\n * Get the page name from `name`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.name = Facade.field(\"name\");\n\n/**\n * Get the page title from `properties.title`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.title = Facade.proxy(\"properties.title\");\n\n/**\n * Get the page path from `properties.path`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.path = Facade.proxy(\"properties.path\");\n\n/**\n * Get the page URL from `properties.url`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.url = Facade.proxy(\"properties.url\");\n\n/**\n * Get the HTTP referrer from `context.referrer.url`, `context.page.referrer`,\n * or `properties.referrer`.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.referrer = function () {\n return (\n this.proxy(\"context.referrer.url\") ||\n this.proxy(\"context.page.referrer\") ||\n this.proxy(\"properties.referrer\")\n );\n};\n\n/**\n * Get the page's properties. This is identical to how {@link Facade#traits}\n * works, except it looks at `properties.*` instead of `options.traits.*`.\n *\n * Properties are gotten from `properties`, augmented with the page's `name`\n * and `category`.\n *\n * The parameter `aliases` is meant to transform keys in `properties` into new\n * keys. Each alias like `{ \"xxx\": \"yyy\" }` will take whatever is at `xxx` in\n * the traits, and move it to `yyy`. If `xxx` is a method of this facade, it'll\n * be called as a function instead of treated as a key into the traits.\n *\n * @example\n * let obj = { properties: { foo: \"bar\" }, anonymousId: \"xxx\" }\n * let page = new Page(obj)\n *\n * page.traits() // { \"foo\": \"bar\" }\n * page.traits({ \"foo\": \"asdf\" }) // { \"asdf\": \"bar\" }\n * page.traits({ \"sessionId\": \"rofl\" }) // { \"rofl\": \"xxx\" }\n *\n * @param {Object} aliases - A mapping from keys to the new keys they should be\n * transformed to.\n * @return {Object}\n */\np.properties = function (aliases) {\n let props = this.field(\"properties\") || {};\n let category = this.category();\n let name = this.name();\n aliases = aliases || {};\n\n if (category) props.category = category;\n if (name) props.name = name;\n\n for (const alias in aliases) {\n if (Object.prototype.hasOwnProperty.call(aliases, alias)) {\n const value = this[alias] == null\n ? this.proxy(\"properties.\" + alias)\n : this[alias]();\n if (value == null) continue;\n props[aliases[alias]] = value;\n if (alias !== aliases[alias]) delete props[alias];\n }\n }\n\n return props;\n};\n\n/**\n * Get the user's email from `context.traits.email` or `properties.email`,\n * falling back to `userId` if it's a valid email.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.email = function () {\n let email =\n this.proxy(\"context.traits.email\") || this.proxy(\"properties.email\");\n if (email) return email;\n\n let userId = this.userId();\n if (isEmail(userId)) return userId;\n};\n\n/**\n * Get the page fullName. This is `$category $name` if both are present, and\n * just `name` otherwiser.\n *\n * This *should* be a string, but may not be if the client isn't adhering to\n * the spec.\n *\n * @return {string}\n */\np.fullName = function () {\n let category = this.category();\n let name = this.name();\n return name && category ? category + \" \" + name : name;\n};\n\n/**\n * Get an event name from this page call. If `name` is present, this will be\n * `Viewed $name Page`; otherwise, it will be `Loaded a Page`.\n *\n * @param {string} name - The name of this page.\n * @return {string}\n */\np.event = function (name) {\n return name ? \"Viewed \" + name + \" Page\" : \"Loaded a Page\";\n};\n\n/**\n * Convert this Page to a {@link Track} facade. The inputted `name` will be\n * converted to the Track's event name via {@link Page#event}.\n *\n * @param {string} name\n * @return {Track}\n */\np.track = function (name) {\n let json = this.json();\n json.event = this.event(name);\n json.timestamp = this.timestamp();\n json.properties = this.properties();\n return new Track(json, this.opts);\n};\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Page } from \"./page\";\nimport { Track } from \"./track\";\n\n/**\n * Initialize a new `Screen` facade with a `dictionary` of arguments.\n *\n * Note that this class extends {@link Page}, so its methods are available to\n * instances of this class as well.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.category] - The page category.\n * @param {string} [dictionary.name] - The page name.\n * @param {string} [dictionary.properties] - The page properties.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Page\n */\nexport function Screen(dictionary, opts) {\n Page.call(this, dictionary, opts);\n}\n\ninherit(Screen, Page);\n\n/**\n * Return the type of facade this is. This will always return `\"screen\"`.\n *\n * @return {string}\n */\nScreen.prototype.action = function () {\n return \"screen\";\n};\n\n/**\n * An alias for {@link Screen#action}.\n *\n * @function\n * @return {string}\n */\nScreen.prototype.type = Screen.prototype.action;\n\n/**\n * Get an event name from this screen call. If `name` is present, this will be\n * `Viewed $name Screen`; otherwise, it will be `Loaded a Screen`.\n *\n * @param {string} name - The name of this screen.\n * @return {string}\n */\nScreen.prototype.event = function (name) {\n return name ? \"Viewed \" + name + \" Screen\" : \"Loaded a Screen\";\n};\n\n/**\n * Convert this Screen to a {@link Track} facade. The inputted `name` will be\n * converted to the Track's event name via {@link Screen#event}.\n *\n * @param {string} name\n * @return {Track}\n */\nScreen.prototype.track = function (name) {\n let json = this.json();\n json.event = this.event(name);\n json.timestamp = this.timestamp();\n json.properties = this.properties();\n return new Track(json, this.opts);\n};\n", "\"use strict\";\n\nimport inherit from \"inherits\";\nimport { Facade } from \"./facade\";\n\n/**\n * Initialize a new `Delete` facade with a `dictionary` of arguments.\n *\n * @param {Object} dictionary - The object to wrap.\n * @param {string} [dictionary.category] - The delete category.\n * @param {string} [dictionary.name] - The delete name.\n * @param {string} [dictionary.properties] - The delete properties.\n * @param {Object} opts - Options about what kind of Facade to create.\n *\n * @augments Facade\n */\nexport function Delete(dictionary, opts) {\n Facade.call(this, dictionary, opts);\n}\n\ninherit(Delete, Facade);\n\n/**\n * Return the type of facade this is. This will always return `\"delete\"`.\n *\n * @return {string}\n */\nDelete.prototype.type = function () {\n return \"delete\";\n};\n", "\"use strict\";\n\nimport { Facade } from \"./facade\";\nimport { Alias } from \"./alias\";\nimport { Group } from \"./group\";\nimport { Identify } from \"./identify\";\nimport { Track } from \"./track\";\nimport { Page } from \"./page\";\nimport { Screen } from \"./screen\";\nimport { Delete } from \"./delete\";\n\nexport default {\n ...Facade,\n Alias,\n Group,\n Identify,\n Track,\n Page,\n Screen,\n Delete,\n};\n\nexport { Facade, Alias, Group, Identify, Track, Page, Screen, Delete };\n", "import {\n Alias,\n Facade,\n Group,\n Identify,\n Options,\n Page,\n Screen,\n Track,\n} from '@segment/facade'\nimport { SegmentEvent } from '../core/events'\n\nexport type SegmentFacade = Facade & {\n obj: SegmentEvent\n}\n\nexport function toFacade(evt: SegmentEvent, options?: Options): SegmentFacade {\n let fcd = new Facade(evt, options)\n\n if (evt.type === 'track') {\n fcd = new Track(evt, options)\n }\n\n if (evt.type === 'identify') {\n fcd = new Identify(evt, options)\n }\n\n if (evt.type === 'page') {\n fcd = new Page(evt, options)\n }\n\n if (evt.type === 'alias') {\n fcd = new Alias(evt, options)\n }\n\n if (evt.type === 'group') {\n fcd = new Group(evt, options)\n }\n\n if (evt.type === 'screen') {\n fcd = new Screen(evt, options)\n }\n\n Object.defineProperty(fcd, 'obj', {\n value: evt,\n writable: true,\n })\n\n return fcd as SegmentFacade\n}\n", "import { Context, ContextCancelation } from '../../core/context'\nimport { SegmentEvent } from '../../core/events'\nimport { Plugin } from '../../core/plugin'\nimport { SegmentFacade, toFacade } from '../../lib/to-facade'\n\nexport interface MiddlewareParams {\n payload: SegmentFacade\n\n integrations?: SegmentEvent['integrations']\n next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport interface DestinationMiddlewareParams {\n payload: SegmentFacade\n integration: string\n next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport type MiddlewareFunction = (\n middleware: MiddlewareParams\n) => void | Promise\n\nexport type DestinationMiddlewareFunction = (\n middleware: DestinationMiddlewareParams\n) => void | Promise\n\nexport async function applyDestinationMiddleware(\n destination: string,\n evt: SegmentEvent,\n middleware: DestinationMiddlewareFunction[]\n): Promise {\n // Clone the event so mutations are localized to a single destination.\n let modifiedEvent = toFacade(evt, {\n clone: true,\n traverse: false,\n }).rawEvent() as SegmentEvent\n async function applyMiddleware(\n event: SegmentEvent,\n fn: DestinationMiddlewareFunction\n ): Promise {\n let nextCalled = false\n let returnedEvent: SegmentEvent | null = null\n\n await fn({\n payload: toFacade(event, {\n clone: true,\n traverse: false,\n }),\n integration: destination,\n next(evt) {\n nextCalled = true\n\n if (evt === null) {\n returnedEvent = null\n }\n\n if (evt) {\n returnedEvent = evt.obj\n }\n },\n })\n\n if (!nextCalled && returnedEvent !== null) {\n returnedEvent = returnedEvent as SegmentEvent\n returnedEvent.integrations = {\n ...event.integrations,\n [destination]: false,\n }\n }\n\n return returnedEvent\n }\n\n for (const md of middleware) {\n const result = await applyMiddleware(modifiedEvent, md)\n if (result === null) {\n return null\n }\n modifiedEvent = result\n }\n\n return modifiedEvent\n}\n\nexport function sourceMiddlewarePlugin(\n fn: MiddlewareFunction,\n integrations: SegmentEvent['integrations']\n): Plugin {\n async function apply(ctx: Context): Promise {\n let nextCalled = false\n\n await fn({\n payload: toFacade(ctx.event, {\n clone: true,\n traverse: false,\n }),\n integrations: integrations ?? {},\n next(evt) {\n nextCalled = true\n if (evt) {\n ctx.event = evt.obj\n }\n },\n })\n\n if (!nextCalled) {\n throw new ContextCancelation({\n retry: false,\n type: 'middleware_cancellation',\n reason: 'Middleware `next` function skipped',\n })\n }\n\n return ctx\n }\n\n return {\n name: `Source Middleware ${fn.name}`,\n type: 'before',\n version: '0.1.0',\n\n isLoaded: (): boolean => true,\n load: (ctx): Promise => Promise.resolve(ctx),\n\n track: apply,\n page: apply,\n identify: apply,\n alias: apply,\n group: apply,\n }\n}\n", "import { QueryStringParams } from '.'\n\n/**\n * Returns an object containing only the properties prefixed by the input\n * string.\n * Ex: prefix('ajs_traits_', { ajs_traits_address: '123 St' })\n * will return { address: '123 St' }\n **/\nexport function pickPrefix(\n prefix: string,\n object: QueryStringParams\n): QueryStringParams {\n return Object.keys(object).reduce((acc: QueryStringParams, key: string) => {\n if (key.startsWith(prefix)) {\n const field = key.substr(prefix.length)\n acc[field] = object[key]!\n }\n return acc\n }, {})\n}\n", "/**\n * Tries to gets the unencoded version of an encoded component of a\n * Uniform Resource Identifier (URI). If input string is malformed,\n * returns it back as-is.\n *\n * Note: All occurences of the `+` character become ` ` (spaces).\n **/\nexport function gracefulDecodeURIComponent(\n encodedURIComponent: string\n): string {\n try {\n return decodeURIComponent(encodedURIComponent.replace(/\\+/g, ' '))\n } catch {\n return encodedURIComponent\n }\n}\n", "import { pickPrefix } from './pickPrefix'\nimport { gracefulDecodeURIComponent } from './gracefulDecodeURIComponent'\nimport { Analytics } from '../analytics'\nimport { Context } from '../context'\nimport { isPlainObject } from '@segment/analytics-core'\n\nexport interface QueryStringParams {\n [key: string]: string | null\n}\n\nexport function queryString(\n analytics: Analytics,\n query: string\n): Promise {\n const a = document.createElement('a')\n a.href = query\n const parsed = a.search.slice(1)\n const params = parsed.split('&').reduce((acc: QueryStringParams, str) => {\n const [k, v] = str.split('=')\n acc[k] = gracefulDecodeURIComponent(v)\n return acc\n }, {})\n\n const calls = []\n\n const { ajs_uid, ajs_event, ajs_aid } = params\n const { aid: aidPattern = /.+/, uid: uidPattern = /.+/ } = isPlainObject(\n analytics.options.useQueryString\n )\n ? analytics.options.useQueryString\n : {}\n\n if (ajs_aid) {\n const anonId = Array.isArray(params.ajs_aid)\n ? params.ajs_aid[0]\n : params.ajs_aid\n\n if (aidPattern.test(anonId)) {\n analytics.setAnonymousId(anonId)\n }\n }\n\n if (ajs_uid) {\n const uid = Array.isArray(params.ajs_uid)\n ? params.ajs_uid[0]\n : params.ajs_uid\n\n if (uidPattern.test(uid)) {\n const traits = pickPrefix('ajs_trait_', params)\n\n calls.push(analytics.identify(uid, traits))\n }\n }\n\n if (ajs_event) {\n const event = Array.isArray(params.ajs_event)\n ? params.ajs_event[0]\n : params.ajs_event\n const props = pickPrefix('ajs_prop_', params)\n calls.push(analytics.track(event, props))\n }\n\n return Promise.all(calls)\n}\n", "import { getGlobalAnalytics } from './global-analytics-helper'\nimport { embeddedWriteKey } from './embedded-write-key'\n\nconst analyticsScriptRegex =\n /(https:\\/\\/.*)\\/analytics\\.js\\/v1\\/(?:.*?)\\/(?:platform|analytics.*)?/\nconst getCDNUrlFromScriptTag = (): string | undefined => {\n let cdn: string | undefined\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n scripts.forEach((s) => {\n const src = s.getAttribute('src') ?? ''\n const result = analyticsScriptRegex.exec(src)\n\n if (result && result[1]) {\n cdn = result[1]\n }\n })\n return cdn\n}\n\nlet _globalCDN: string | undefined // set globalCDN as in-memory singleton\nconst getGlobalCDNUrl = (): string | undefined => {\n const result = _globalCDN ?? getGlobalAnalytics()?._cdn\n return result\n}\n\nexport const setGlobalCDNUrl = (cdn: string) => {\n const globalAnalytics = getGlobalAnalytics()\n if (globalAnalytics) {\n globalAnalytics._cdn = cdn\n }\n _globalCDN = cdn\n}\n\nexport const getCDN = (): string => {\n const globalCdnUrl = getGlobalCDNUrl()\n\n if (globalCdnUrl) return globalCdnUrl\n\n const cdnFromScriptTag = getCDNUrlFromScriptTag()\n\n if (cdnFromScriptTag) {\n return cdnFromScriptTag\n } else {\n // it's possible that the CDN is not found in the page because:\n // - the script is loaded through a proxy\n // - the script is removed after execution\n // in this case, we fall back to the default Segment CDN\n return `https://cdn.segment.com`\n }\n}\n\nexport const getNextIntegrationsURL = () => {\n const cdn = getCDN()\n return `${cdn}/next-integrations`\n}\n\n/**\n * Replaces the CDN URL in the script tag with the one from Analytics.js 1.0\n *\n * @returns the path to Analytics JS 1.0\n **/\nexport function getLegacyAJSPath(): string {\n const writeKey = embeddedWriteKey() ?? getGlobalAnalytics()?._writeKey\n\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n let path: string | undefined = undefined\n\n for (const s of scripts) {\n const src = s.getAttribute('src') ?? ''\n const result = analyticsScriptRegex.exec(src)\n\n if (result && result[1]) {\n path = src\n break\n }\n }\n\n if (path) {\n return path.replace('analytics.min.js', 'analytics.classic.js')\n }\n\n return `https://cdn.segment.com/analytics.js/v1/${writeKey}/analytics.classic.js`\n}\n", "import { JSONObject, Options } from '../core/events/interfaces'\nimport { CDNSettings } from '../browser'\n\n/**\n * Merge legacy settings and initialized Integration option overrides.\n *\n * This will merge any options that were passed from initialization into\n * overrides for settings that are returned by the Segment CDN.\n *\n * i.e. this allows for passing options directly into destinations from\n * the Analytics constructor.\n */\nexport function mergedOptions(\n cdnSettings: CDNSettings,\n options: Options\n): Record {\n const optionOverrides = Object.entries(options.integrations ?? {}).reduce(\n (overrides, [integration, options]) => {\n if (typeof options === 'object') {\n return {\n ...overrides,\n [integration]: options,\n }\n }\n\n return {\n ...overrides,\n [integration]: {},\n }\n },\n {} as Record\n )\n\n return Object.entries(cdnSettings.integrations).reduce(\n (integrationSettings, [integration, settings]) => {\n return {\n ...integrationSettings,\n [integration]: {\n ...settings,\n ...optionOverrides[integration],\n },\n }\n },\n {} as Record\n )\n}\n", "function findScript(src: string): HTMLScriptElement | undefined {\n const scripts = Array.prototype.slice.call(\n window.document.querySelectorAll('script')\n )\n return scripts.find((s) => s.src === src)\n}\n\nexport function loadScript(\n src: string,\n attributes?: Record\n): Promise {\n const found = findScript(src)\n\n if (found !== undefined) {\n const status = found?.getAttribute('status')\n\n if (status === 'loaded') {\n return Promise.resolve(found)\n }\n\n if (status === 'loading') {\n return new Promise((resolve, reject) => {\n found.addEventListener('load', () => resolve(found))\n found.addEventListener('error', (err) => reject(err))\n })\n }\n }\n\n return new Promise((resolve, reject) => {\n const script = window.document.createElement('script')\n\n script.type = 'text/javascript'\n script.src = src\n script.async = true\n\n script.setAttribute('status', 'loading')\n for (const [k, v] of Object.entries(attributes ?? {})) {\n script.setAttribute(k, v)\n }\n\n script.onload = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'loaded')\n resolve(script)\n }\n\n script.onerror = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'error')\n reject(new Error(`Failed to load ${src}`))\n }\n\n const tag = window.document.getElementsByTagName('script')[0]\n tag.parentElement?.insertBefore(script, tag)\n })\n}\n\nexport function unloadScript(src: string): Promise {\n const found = findScript(src)\n\n if (found !== undefined) {\n found.remove()\n }\n\n return Promise.resolve()\n}\n", "import { Context } from '../context'\n\nexport interface RecordIntegrationMetricProps {\n integrationName: string\n methodName: string\n didError?: boolean\n type: 'classic' | 'action'\n}\n\nexport function recordIntegrationMetric(\n ctx: Context,\n {\n methodName,\n integrationName,\n type,\n didError = false,\n }: RecordIntegrationMetricProps\n): void {\n ctx.stats.increment(\n `analytics_js.integration.invoke${didError ? '.error' : ''}`,\n 1,\n [\n `method:${methodName}`,\n `integration_name:${integrationName}`,\n `type:${type}`,\n ]\n )\n}\n", "export const pWhile = async (\n condition: (value: T | undefined) => boolean,\n action: () => T | PromiseLike\n): Promise => {\n const loop = async (actionResult: T | undefined): Promise => {\n if (condition(actionResult)) {\n return loop(await action())\n }\n }\n\n return loop(undefined)\n}\n", "// @ts-nocheck\n// prettier-ignore\n/* eslint-disable */\n// @segment/tsub 2.0.0 - GENERATED DO NOT MODIFY\n\n/*! For license information please see tsub.js.LICENSE.txt */\n!function(t,r){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=r();else if(\"function\"==typeof define&&define.amd)define([],r);else{var e=r();for(var n in e)(\"object\"==typeof exports?exports:t)[n]=e[n]}}(self,(()=>(()=>{var t={2870:function(t,r,e){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(r,\"__esModule\",{value:!0}),r.Store=r.matches=r.transform=void 0;var o=e(4303);Object.defineProperty(r,\"transform\",{enumerable:!0,get:function(){return n(o).default}});var s=e(2370);Object.defineProperty(r,\"matches\",{enumerable:!0,get:function(){return n(s).default}});var i=e(1444);Object.defineProperty(r,\"Store\",{enumerable:!0,get:function(){return n(i).default}})},2370:function(t,r,e){\"use strict\";var n=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(r,\"__esModule\",{value:!0});var o=n(e(7843));function s(t,r){if(!Array.isArray(t))return!0===i(t,r);var e,n,o,f,p=t[0];switch(p){case\"!\":return!s(t[1],r);case\"or\":for(var l=1;l\":case\">=\":return function(t,r,e,n){if(u(t)&&(t=s(t,n)),u(r)&&(r=s(r,n)),\"number\"!=typeof t||\"number\"!=typeof r)return!1;switch(e){case\"<=\":return t<=r;case\">=\":return t>=r;case\"<\":return t\":return t>r;default:throw new Error(\"Invalid operator in compareNumbers: \".concat(e))}}(i(t[1],r),i(t[2],r),p,r);case\"in\":return function(t,r,e){return void 0!==r.find((function(r){return i(r,e)===t}))}(i(t[1],r),i(t[2],r),r);case\"contains\":return o=i(t[1],r),f=i(t[2],r),\"string\"==typeof o&&\"string\"==typeof f&&-1!==o.indexOf(f);case\"match\":return e=i(t[1],r),n=i(t[2],r),\"string\"==typeof e&&\"string\"==typeof n&&function(t,r){var e,n;t:for(;t.length>0;){var o,s;if(o=(e=a(t)).star,s=e.chunk,t=e.pattern,o&&\"\"===s)return!0;var i=c(s,r),u=i.t,f=i.ok,p=i.err;if(p)return!1;if(!f||!(0===u.length||t.length>0)){if(o)for(var l=0;l0)continue;r=u;continue t}if(p)return!1}return!1}r=u}return 0===r.length}(n,e);case\"lowercase\":var v=i(t[1],r);return\"string\"!=typeof v?null:v.toLowerCase();case\"typeof\":return typeof i(t[1],r);case\"length\":return function(t){return null===t?0:Array.isArray(t)||\"string\"==typeof t?t.length:NaN}(i(t[1],r));default:throw new Error(\"FQL IR could not evaluate for token: \".concat(p))}}function i(t,r){return Array.isArray(t)?t:\"object\"==typeof t?t.value:(0,o.default)(r,t)}function u(t){return!!Array.isArray(t)&&((\"lowercase\"===t[0]||\"length\"===t[0]||\"typeof\"===t[0])&&2===t.length||(\"contains\"===t[0]||\"match\"===t[0])&&3===t.length)}function a(t){for(var r={star:!1,chunk:\"\",pattern:\"\"};t.length>0&&\"*\"===t[0];)t=t.slice(1),r.star=!0;var e,n=!1;t:for(e=0;e0;){if(0===r.length)return o;switch(t[0]){case\"[\":var s=r[0];r=r.slice(1);var i=!0;(t=t.slice(1)).length>0&&\"^\"===t[0]&&(i=!1,t=t.slice(1));for(var u=!1,a=0;;){if(t.length>0&&\"]\"===t[0]&&a>0){t=t.slice(1);break}var c,p=\"\";if(c=(e=f(t)).char,t=e.newChunk,e.err)return o;if(p=c,\"-\"===t[0]&&(p=(n=f(t.slice(1))).char,t=n.newChunk,n.err))return o;c<=s&&s<=p&&(u=!0),a++}if(u!==i)return o;break;case\"?\":r=r.slice(1),t=t.slice(1);break;case\"\\\\\":if(0===(t=t.slice(1)).length)return o.err=!0,o;default:if(t[0]!==r[0])return o;r=r.slice(1),t=t.slice(1)}}return o.t=r,o.ok=!0,o.err=!1,o}function f(t){var r={char:\"\",newChunk:\"\",err:!1};return 0===t.length||\"-\"===t[0]||\"]\"===t[0]||\"\\\\\"===t[0]&&0===(t=t.slice(1)).length?(r.err=!0,r):(r.char=t[0],r.newChunk=t.slice(1),0===r.newChunk.length&&(r.err=!0),r)}r.default=function(t,r){if(!r)throw new Error(\"No matcher supplied!\");switch(r.type){case\"all\":return!0;case\"fql\":return function(t,r){if(!t)return!1;try{t=JSON.parse(t)}catch(r){throw new Error('Failed to JSON.parse FQL intermediate representation \"'.concat(t,'\": ').concat(r))}var e=s(t,r);return\"boolean\"==typeof e&&e}(r.ir,t);default:throw new Error(\"Matcher of type \".concat(r.type,\" unsupported.\"))}}},1444:(t,r)=>{\"use strict\";Object.defineProperty(r,\"__esModule\",{value:!0});var e=function(){function t(t){this.rules=[],this.rules=t||[]}return t.prototype.getRulesByDestinationName=function(t){for(var r=[],e=0,n=this.rules;e1?(i.pop(),c=(0,s.default)(e,i.join(\".\"))):c=t,\"object\"==typeof c){if(o.copy){var f=(0,s.default)(e,o.copy);void 0!==f&&(0,u.dset)(t,n,f)}else if(o.move){var p=(0,s.default)(e,o.move);void 0!==p&&(0,u.dset)(t,n,p),(0,a.unset)(t,o.move)}else o.hasOwnProperty(\"set\")&&(0,u.dset)(t,n,o.set);if(o.to_string){var l=(0,s.default)(t,n);if(\"string\"==typeof l||\"object\"==typeof l&&null!==l)continue;void 0!==l?(0,u.dset)(t,n,JSON.stringify(l)):(0,u.dset)(t,n,\"undefined\")}}}}function v(t,r){return!(r.sample.percent<=0)&&(r.sample.percent>=1||(r.sample.path?function(t,r){var e=(0,s.default)(t,r.sample.path),n=(0,o.default)(JSON.stringify(e)),u=-64,a=[];y(n.slice(0,8),a);for(var c=0,f=0;f<64&&1!==a[f];f++)c++;if(0!==c){var p=[];y(n.slice(9,16),p),u-=c,a.splice(0,c),p.splice(64-c),a=a.concat(p)}return a[63]=0===a[63]?1:0,(0,i.default)(parseInt(a.join(\"\"),2),u)=1;o/=2)n-o>=0?(n-=o,r.push(1)):r.push(0)}r.default=function(t,r){for(var e=t,n=0,o=r;n{r.dset=function(t,r,e){r.split&&(r=r.split(\".\"));for(var n,o,s=0,i=r.length,u=t;s{\"use strict\";var r=\"function\"==typeof Float64Array?Float64Array:void 0;t.exports=r},7382:(t,r,e)=>{\"use strict\";var n,o=e(5569),s=e(3304),i=e(8482);n=o()?s:i,t.exports=n},8482:t=>{\"use strict\";t.exports=function(){throw new Error(\"not implemented\")}},6322:(t,r,e)=>{\"use strict\";var n,o=e(2508),s=e(5679),i=e(882);n=o()?s:i,t.exports=n},882:t=>{\"use strict\";t.exports=function(){throw new Error(\"not implemented\")}},5679:t=>{\"use strict\";var r=\"function\"==typeof Uint16Array?Uint16Array:void 0;t.exports=r},4773:(t,r,e)=>{\"use strict\";var n,o=e(9773),s=e(3004),i=e(3078);n=o()?s:i,t.exports=n},3078:t=>{\"use strict\";t.exports=function(){throw new Error(\"not implemented\")}},3004:t=>{\"use strict\";var r=\"function\"==typeof Uint32Array?Uint32Array:void 0;t.exports=r},7980:(t,r,e)=>{\"use strict\";var n,o=e(8114),s=e(6737),i=e(3357);n=o()?s:i,t.exports=n},3357:t=>{\"use strict\";t.exports=function(){throw new Error(\"not implemented\")}},6737:t=>{\"use strict\";var r=\"function\"==typeof Uint8Array?Uint8Array:void 0;t.exports=r},2684:t=>{\"use strict\";var r=\"function\"==typeof Float64Array?Float64Array:null;t.exports=r},5569:(t,r,e)=>{\"use strict\";var n=e(3876);t.exports=n},3876:(t,r,e)=>{\"use strict\";var n=e(1448),o=e(2684);t.exports=function(){var t,r;if(\"function\"!=typeof o)return!1;try{r=new o([1,3.14,-3.14,NaN]),t=n(r)&&1===r[0]&&3.14===r[1]&&-3.14===r[2]&&r[3]!=r[3]}catch(r){t=!1}return t}},9048:(t,r,e)=>{\"use strict\";var n=e(3763);t.exports=n},3763:t=>{\"use strict\";var r=Object.prototype.hasOwnProperty;t.exports=function(t,e){return null!=t&&r.call(t,e)}},7009:(t,r,e)=>{\"use strict\";var n=e(6784);t.exports=n},6784:t=>{\"use strict\";t.exports=function(){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol(\"foo\")}},3123:(t,r,e)=>{\"use strict\";var n=e(8481);t.exports=n},8481:(t,r,e)=>{\"use strict\";var n=e(7009)();t.exports=function(){return n&&\"symbol\"==typeof Symbol.toStringTag}},2508:(t,r,e)=>{\"use strict\";var n=e(3403);t.exports=n},3403:(t,r,e)=>{\"use strict\";var n=e(768),o=e(9668),s=e(187);t.exports=function(){var t,r;if(\"function\"!=typeof s)return!1;try{r=new s(r=[1,3.14,-3.14,o+1,o+2]),t=n(r)&&1===r[0]&&3===r[1]&&r[2]===o-2&&0===r[3]&&1===r[4]}catch(r){t=!1}return t}},187:t=>{\"use strict\";var r=\"function\"==typeof Uint16Array?Uint16Array:null;t.exports=r},9773:(t,r,e)=>{\"use strict\";var n=e(2822);t.exports=n},2822:(t,r,e)=>{\"use strict\";var n=e(2744),o=e(3899),s=e(746);t.exports=function(){var t,r;if(\"function\"!=typeof s)return!1;try{r=new s(r=[1,3.14,-3.14,o+1,o+2]),t=n(r)&&1===r[0]&&3===r[1]&&r[2]===o-2&&0===r[3]&&1===r[4]}catch(r){t=!1}return t}},746:t=>{\"use strict\";var r=\"function\"==typeof Uint32Array?Uint32Array:null;t.exports=r},8114:(t,r,e)=>{\"use strict\";var n=e(8066);t.exports=n},8066:(t,r,e)=>{\"use strict\";var n=e(8279),o=e(3443),s=e(2731);t.exports=function(){var t,r;if(\"function\"!=typeof s)return!1;try{r=new s(r=[1,3.14,-3.14,o+1,o+2]),t=n(r)&&1===r[0]&&3===r[1]&&r[2]===o-2&&0===r[3]&&1===r[4]}catch(r){t=!1}return t}},2731:t=>{\"use strict\";var r=\"function\"==typeof Uint8Array?Uint8Array:null;t.exports=r},1448:(t,r,e)=>{\"use strict\";var n=e(1453);t.exports=n},1453:(t,r,e)=>{\"use strict\";var n=e(6208),o=\"function\"==typeof Float64Array;t.exports=function(t){return o&&t instanceof Float64Array||\"[object Float64Array]\"===n(t)}},9331:(t,r,e)=>{\"use strict\";var n=e(7980),o={uint16:e(6322),uint8:n};t.exports=o},5902:(t,r,e)=>{\"use strict\";var n=e(4106);t.exports=n},4106:(t,r,e)=>{\"use strict\";var n,o,s=e(9331);(o=new s.uint16(1))[0]=4660,n=52===new s.uint8(o.buffer)[0],t.exports=n},768:(t,r,e)=>{\"use strict\";var n=e(3823);t.exports=n},3823:(t,r,e)=>{\"use strict\";var n=e(6208),o=\"function\"==typeof Uint16Array;t.exports=function(t){return o&&t instanceof Uint16Array||\"[object Uint16Array]\"===n(t)}},2744:(t,r,e)=>{\"use strict\";var n=e(2326);t.exports=n},2326:(t,r,e)=>{\"use strict\";var n=e(6208),o=\"function\"==typeof Uint32Array;t.exports=function(t){return o&&t instanceof Uint32Array||\"[object Uint32Array]\"===n(t)}},8279:(t,r,e)=>{\"use strict\";var n=e(208);t.exports=n},208:(t,r,e)=>{\"use strict\";var n=e(6208),o=\"function\"==typeof Uint8Array;t.exports=function(t){return o&&t instanceof Uint8Array||\"[object Uint8Array]\"===n(t)}},6315:t=>{\"use strict\";t.exports=1023},1686:t=>{\"use strict\";t.exports=2147483647},3105:t=>{\"use strict\";t.exports=2146435072},3449:t=>{\"use strict\";t.exports=2147483648},6988:t=>{\"use strict\";t.exports=-1023},9777:t=>{\"use strict\";t.exports=1023},3690:t=>{\"use strict\";t.exports=-1074},2918:(t,r,e)=>{\"use strict\";var n=e(4772).NEGATIVE_INFINITY;t.exports=n},4165:t=>{\"use strict\";var r=Number.POSITIVE_INFINITY;t.exports=r},6488:t=>{\"use strict\";t.exports=22250738585072014e-324},9668:t=>{\"use strict\";t.exports=65535},3899:t=>{\"use strict\";t.exports=4294967295},3443:t=>{\"use strict\";t.exports=255},7011:(t,r,e)=>{\"use strict\";var n=e(812);t.exports=n},812:(t,r,e)=>{\"use strict\";var n=e(4165),o=e(2918);t.exports=function(t){return t===n||t===o}},1883:(t,r,e)=>{\"use strict\";var n=e(1797);t.exports=n},1797:t=>{\"use strict\";t.exports=function(t){return t!=t}},513:(t,r,e)=>{\"use strict\";var n=e(5760);t.exports=n},5760:t=>{\"use strict\";t.exports=function(t){return Math.abs(t)}},5848:(t,r,e)=>{\"use strict\";var n=e(677);t.exports=n},677:(t,r,e)=>{\"use strict\";var n=e(3449),o=e(1686),s=e(7838),i=e(1921),u=e(2490),a=[0,0];t.exports=function(t,r){var e,c;return s.assign(t,a,1,0),e=a[0],e&=o,c=i(r),u(e|=c&=n,a[1])}},5500:(t,r,e)=>{\"use strict\";var n=e(8397);t.exports=n},8397:(t,r,e)=>{\"use strict\";var n=e(4165),o=e(2918),s=e(6315),i=e(9777),u=e(6988),a=e(3690),c=e(1883),f=e(7011),p=e(5848),l=e(4948),v=e(8478),y=e(7838),d=e(2490),h=[0,0],x=[0,0];t.exports=function(t,r){var e,b;return 0===t||c(t)||f(t)?t:(l(h,t),r+=h[1],(r+=v(t=h[0]))i?t<0?o:n:(r<=u?(r+=52,b=2220446049250313e-31):b=1,y(x,t),e=x[0],e&=2148532223,b*d(e|=r+s<<20,x[1])))}},4772:(t,r,e)=>{\"use strict\";var n=e(7548);t.exports=n},7548:t=>{\"use strict\";t.exports=Number},8478:(t,r,e)=>{\"use strict\";var n=e(4500);t.exports=n},4500:(t,r,e)=>{\"use strict\";var n=e(1921),o=e(3105),s=e(6315);t.exports=function(t){var r=n(t);return(r=(r&o)>>>20)-s|0}},2490:(t,r,e)=>{\"use strict\";var n=e(9639);t.exports=n},4445:(t,r,e)=>{\"use strict\";var n,o,s;!0===e(5902)?(o=1,s=0):(o=0,s=1),n={HIGH:o,LOW:s},t.exports=n},9639:(t,r,e)=>{\"use strict\";var n=e(4773),o=e(7382),s=e(4445),i=new o(1),u=new n(i.buffer),a=s.HIGH,c=s.LOW;t.exports=function(t,r){return u[a]=t,u[c]=r,i[0]}},5646:(t,r,e)=>{\"use strict\";var n;n=!0===e(5902)?1:0,t.exports=n},1921:(t,r,e)=>{\"use strict\";var n=e(6285);t.exports=n},6285:(t,r,e)=>{\"use strict\";var n=e(4773),o=e(7382),s=e(5646),i=new o(1),u=new n(i.buffer);t.exports=function(t){return i[0]=t,u[s]}},9024:(t,r,e)=>{\"use strict\";var n=e(6488),o=e(7011),s=e(1883),i=e(513);t.exports=function(t,r,e,u){return s(t)||o(t)?(r[u]=t,r[u+e]=0,r):0!==t&&i(t){\"use strict\";var n=e(7576),o=e(9422);n(o,\"assign\",e(9024)),t.exports=o},9422:(t,r,e)=>{\"use strict\";var n=e(9024);t.exports=function(t){return n(t,[0,0],1,0)}},5239:(t,r,e)=>{\"use strict\";var n=e(4773),o=e(7382),s=e(5782),i=new o(1),u=new n(i.buffer),a=s.HIGH,c=s.LOW;t.exports=function(t,r,e,n){return i[0]=t,r[n]=u[a],r[n+e]=u[c],r}},7838:(t,r,e)=>{\"use strict\";var n=e(7576),o=e(4010);n(o,\"assign\",e(5239)),t.exports=o},5782:(t,r,e)=>{\"use strict\";var n,o,s;!0===e(5902)?(o=1,s=0):(o=0,s=1),n={HIGH:o,LOW:s},t.exports=n},4010:(t,r,e)=>{\"use strict\";var n=e(5239);t.exports=function(t){return n(t,[0,0],1,0)}},7576:(t,r,e)=>{\"use strict\";var n=e(7063);t.exports=n},7063:(t,r,e)=>{\"use strict\";var n=e(6691);t.exports=function(t,r,e){n(t,r,{configurable:!1,enumerable:!1,writable:!1,value:e})}},2073:t=>{\"use strict\";var r=Object.defineProperty;t.exports=r},1680:t=>{\"use strict\";var r=\"function\"==typeof Object.defineProperty?Object.defineProperty:null;t.exports=r},1471:(t,r,e)=>{\"use strict\";var n=e(1680);t.exports=function(){try{return n({},\"x\",{}),!0}catch(t){return!1}}},6691:(t,r,e)=>{\"use strict\";var n,o=e(1471),s=e(2073),i=e(1309);n=o()?s:i,t.exports=n},1309:t=>{\"use strict\";var r=Object.prototype,e=r.toString,n=r.__defineGetter__,o=r.__defineSetter__,s=r.__lookupGetter__,i=r.__lookupSetter__;t.exports=function(t,u,a){var c,f,p,l;if(\"object\"!=typeof t||null===t||\"[object Array]\"===e.call(t))throw new TypeError(\"invalid argument. First argument must be an object. Value: `\"+t+\"`.\");if(\"object\"!=typeof a||null===a||\"[object Array]\"===e.call(a))throw new TypeError(\"invalid argument. Property descriptor must be an object. Value: `\"+a+\"`.\");if((f=\"value\"in a)&&(s.call(t,u)||i.call(t,u)?(c=t.__proto__,t.__proto__=r,delete t[u],t[u]=a.value,t.__proto__=c):t[u]=a.value),p=\"get\"in a,l=\"set\"in a,f&&(p||l))throw new Error(\"invalid argument. Cannot specify one or more accessors and a value or writable attribute in the property descriptor.\");return p&&n&&n.call(t,u,a.get),l&&o&&o.call(t,u,a.set),t}},6208:(t,r,e)=>{\"use strict\";var n,o=e(3123),s=e(7407),i=e(4210);n=o()?i:s,t.exports=n},7407:(t,r,e)=>{\"use strict\";var n=e(173);t.exports=function(t){return n.call(t)}},4210:(t,r,e)=>{\"use strict\";var n=e(9048),o=e(1403),s=e(173);t.exports=function(t){var r,e,i;if(null==t)return s.call(t);e=t[o],r=n(t,o);try{t[o]=void 0}catch(r){return s.call(t)}return i=s.call(t),r?t[o]=e:delete t[o],i}},173:t=>{\"use strict\";var r=Object.prototype.toString;t.exports=r},1403:t=>{\"use strict\";var r=\"function\"==typeof Symbol?Symbol.toStringTag:\"\";t.exports=r},7843:function(t){t.exports=function(t,r,e,n,o){for(r=r.split?r.split(\".\"):r,n=0;n{\"use strict\";e.r(r),e.d(r,{default:()=>s});for(var n=[],o=0;o<64;)n[o]=0|4294967296*Math.sin(++o%Math.PI);function s(t){var r,e,s,i=[r=1732584193,e=4023233417,~r,~e],u=[],a=unescape(encodeURI(t))+\"\u0080\",c=a.length;for(t=--c/4+2|15,u[--t]=8*c;~c;)u[c>>2]|=a.charCodeAt(c)<<8*c--;for(o=a=0;o>4]+n[a]+~~u[o|15&[a,5*a+1,3*a+5,7*a][c]])<<(c=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*c+a++%4])|s>>>-c),r,e])r=0|c[1],e=c[2];for(a=4;a;)i[--a]+=c[a]}for(t=\"\";a<32;)t+=(i[a>>3]>>4*(1^a++)&15).toString(16);return t}}},r={};function e(n){var o=r[n];if(void 0!==o)return o.exports;var s=r[n]={exports:{}};return t[n].call(s.exports,s,s.exports,e),s.exports}return e.d=(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},e.o=(t,r)=>Object.prototype.hasOwnProperty.call(t,r),e.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},e(2870)})()));", "// @ts-ignore\nimport * as tsub from '../../vendor/tsub/tsub'\nimport type { Matcher, Rule, Store } from '../../vendor/tsub/types'\nimport { DestinationMiddlewareFunction } from '../middleware'\n\n// TODO: update tsub definition\ntype RoutingRuleMatcher = Matcher & {\n config?: {\n expr: string\n }\n}\n\nexport type RoutingRule = Rule & {\n matchers: RoutingRuleMatcher[]\n}\n\nexport const tsubMiddleware =\n (rules: RoutingRule[]): DestinationMiddlewareFunction =>\n ({ payload, integration, next }): void => {\n const store = new tsub.Store(rules) as Store\n const rulesToApply = store.getRulesByDestinationName(integration)\n\n rulesToApply.forEach((rule: Rule) => {\n const { matchers, transformers } = rule\n\n for (let i = 0; i < matchers.length; i++) {\n if (tsub.matches(payload.obj, matchers[i])) {\n payload.obj = tsub.transform(payload.obj, transformers[i])\n\n if (payload.obj === null) {\n return next(null)\n }\n }\n }\n })\n\n next(payload)\n }\n", "import { PlanEvent, TrackPlan } from '../core/events/interfaces'\n\n/**\n * Determines whether a track event is allowed to be sent based on the\n * user's tracking plan.\n * If the user does not have a tracking plan or the event is allowed based\n * on the tracking plan configuration, returns true.\n */\nexport function isPlanEventEnabled(\n plan: TrackPlan | undefined,\n planEvent: PlanEvent | undefined\n): boolean {\n // Always prioritize the event's `enabled` status\n if (typeof planEvent?.enabled === 'boolean') {\n return planEvent.enabled\n }\n\n // Assume absence of a tracking plan means events are enabled\n return plan?.__default?.enabled ?? true\n}\n", "import { Analytics } from '../../core/analytics'\nimport { RemoteIntegrationSettings } from '../../browser'\nimport { getNextIntegrationsURL } from '../../lib/parse-cdn'\nimport { Context } from '../../core/context'\nimport { User } from '../../core/user'\nimport { loadScript, unloadScript } from '../../lib/load-script'\nimport {\n LegacyIntegration,\n ClassicIntegrationBuilder,\n ClassicIntegrationSource,\n} from './types'\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase().replace('.', '').replace(/\\s+/g, '-')\n}\n\nfunction obfuscatePathName(pathName: string, obfuscate = false): string | void {\n return obfuscate ? btoa(pathName).replace(/=/g, '') : undefined\n}\n\nexport function resolveIntegrationNameFromSource(\n integrationSource: ClassicIntegrationSource\n) {\n return (\n 'Integration' in integrationSource\n ? integrationSource.Integration\n : integrationSource\n ).prototype.name\n}\n\nfunction recordLoadMetrics(fullPath: string, ctx: Context, name: string): void {\n try {\n const [metric] =\n window?.performance?.getEntriesByName(fullPath, 'resource') ?? []\n // we assume everything that took under 100ms is cached\n metric &&\n ctx.stats.gauge('legacy_destination_time', Math.round(metric.duration), [\n name,\n ...(metric.duration < 100 ? ['cached'] : []),\n ])\n } catch (_) {\n // not available\n }\n}\n\nexport function buildIntegration(\n integrationSource: ClassicIntegrationSource,\n integrationSettings: { [key: string]: any },\n analyticsInstance: Analytics\n): LegacyIntegration {\n let integrationCtr: ClassicIntegrationBuilder\n // GA and Appcues use a different interface to instantiating integrations\n if ('Integration' in integrationSource) {\n const analyticsStub = {\n user: (): User => analyticsInstance.user(),\n addIntegration: (): void => {},\n }\n\n integrationSource(analyticsStub)\n integrationCtr = integrationSource.Integration\n } else {\n integrationCtr = integrationSource\n }\n\n const integration = new integrationCtr(integrationSettings)\n integration.analytics = analyticsInstance\n return integration\n}\n\nexport async function loadIntegration(\n ctx: Context,\n name: string,\n version: string,\n obfuscate?: boolean\n): Promise {\n const pathName = normalizeName(name)\n const obfuscatedPathName = obfuscatePathName(pathName, obfuscate)\n const path = getNextIntegrationsURL()\n\n const fullPath = `${path}/integrations/${\n obfuscatedPathName ?? pathName\n }/${version}/${obfuscatedPathName ?? pathName}.dynamic.js.gz`\n\n try {\n await loadScript(fullPath)\n recordLoadMetrics(fullPath, ctx, name)\n } catch (err) {\n ctx.stats.gauge('legacy_destination_time', -1, [`plugin:${name}`, `failed`])\n throw err\n }\n\n // @ts-ignore\n const deps: string[] = window[`${pathName}Deps`]\n await Promise.all(deps.map((dep) => loadScript(path + dep + '.gz')))\n\n // @ts-ignore\n window[`${pathName}Loader`]()\n\n return window[\n // @ts-ignore\n `${pathName}Integration`\n ] as ClassicIntegrationSource\n}\n\nexport async function unloadIntegration(\n name: string,\n version: string,\n obfuscate?: boolean\n): Promise {\n const path = getNextIntegrationsURL()\n const pathName = normalizeName(name)\n const obfuscatedPathName = obfuscatePathName(name, obfuscate)\n\n const fullPath = `${path}/integrations/${\n obfuscatedPathName ?? pathName\n }/${version}/${obfuscatedPathName ?? pathName}.dynamic.js.gz`\n\n return unloadScript(fullPath)\n}\n\nexport function resolveVersion(\n integrationConfig?: RemoteIntegrationSettings\n): string {\n return (\n integrationConfig?.versionSettings?.override ??\n integrationConfig?.versionSettings?.version ??\n 'latest'\n )\n}\n", "import { Integrations } from '@segment/analytics-core'\nimport { RemoteIntegrationSettings } from '../..'\n\nexport const isInstallableIntegration = (\n name: string,\n integrationSettings: RemoteIntegrationSettings\n) => {\n const { type, bundlingStatus, versionSettings } = integrationSettings\n // We use `!== 'unbundled'` (versus `=== 'bundled'`) to be inclusive of\n // destinations without a defined value for `bundlingStatus`\n const deviceMode =\n bundlingStatus !== 'unbundled' &&\n (type === 'browser' || versionSettings?.componentTypes?.includes('browser'))\n\n // checking for iterable is a quick fix we need in place to prevent\n // errors showing Iterable as a failed destiantion. Ideally, we should\n // fix the Iterable metadata instead, but that's a longer process.\n return !name.startsWith('Segment') && name !== 'Iterable' && deviceMode\n}\n\nexport const isDisabledIntegration = (\n integrationName: string,\n globalIntegrations: Integrations\n) => {\n const allDisableAndNotDefined =\n globalIntegrations.All === false &&\n globalIntegrations[integrationName] === undefined\n\n return (\n globalIntegrations[integrationName] === false || allDisableAndNotDefined\n )\n}\n", "import { Integrations, JSONObject } from '../../core/events'\nimport { Alias, Facade, Group, Identify, Page, Track } from '@segment/facade'\nimport { Analytics, InitOptions } from '../../core/analytics'\nimport { CDNSettings } from '../../browser'\nimport { isOffline, isOnline } from '../../core/connection'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { isServer } from '../../core/environment'\nimport { InternalPluginWithAddMiddleware, Plugin } from '../../core/plugin'\nimport { attempt } from '@segment/analytics-core'\nimport { isPlanEventEnabled } from '../../lib/is-plan-event-enabled'\nimport { mergedOptions } from '../../lib/merged-options'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\nimport {\n buildIntegration,\n loadIntegration,\n resolveIntegrationNameFromSource,\n resolveVersion,\n unloadIntegration,\n} from './loader'\nimport { LegacyIntegration, ClassicIntegrationSource } from './types'\nimport { isPlainObject } from '@segment/analytics-core'\nimport {\n isDisabledIntegration as shouldSkipIntegration,\n isInstallableIntegration,\n} from './utils'\nimport { recordIntegrationMetric } from '../../core/stats/metric-helpers'\nimport { createDeferred } from '@segment/analytics-generic-utils'\n\nexport type ClassType = new (...args: unknown[]) => T\n\nasync function flushQueue(\n xt: Plugin,\n queue: PriorityQueue\n): Promise> {\n const failedQueue: Context[] = []\n\n if (isOffline()) {\n return queue\n }\n\n await pWhile(\n () => queue.length > 0 && isOnline(),\n async () => {\n const ctx = queue.pop()\n if (!ctx) {\n return\n }\n\n const result = await attempt(ctx, xt)\n const success = result instanceof Context\n if (!success) {\n failedQueue.push(ctx)\n }\n }\n )\n\n // re-add failed tasks\n failedQueue.map((failed) => queue.pushWithBackoff(failed))\n return queue\n}\n\nexport class LegacyDestination implements InternalPluginWithAddMiddleware {\n name: string\n version: string\n settings: JSONObject\n options: InitOptions = {}\n readonly type = 'destination'\n middleware: DestinationMiddlewareFunction[] = []\n\n private _ready: boolean | undefined\n private _initialized: boolean | undefined\n private onReady: Promise | undefined\n private initializePromise = createDeferred()\n private disableAutoISOConversion: boolean\n\n integrationSource?: ClassicIntegrationSource\n integration: LegacyIntegration | undefined\n\n buffer: PriorityQueue\n flushing = false\n\n constructor(\n name: string,\n version: string,\n writeKey: string,\n settings: JSONObject = {},\n options: InitOptions,\n integrationSource?: ClassicIntegrationSource\n ) {\n this.name = name\n this.version = version\n this.settings = { ...settings }\n this.disableAutoISOConversion = options.disableAutoISOConversion || false\n this.integrationSource = integrationSource\n\n // AJS-Renderer sets an extraneous `type` setting that clobbers\n // existing type defaults. We need to remove it if it's present\n if (this.settings['type'] && this.settings['type'] === 'browser') {\n delete this.settings['type']\n }\n\n this.initializePromise.promise.then(\n (isInitialized) => (this._initialized = isInitialized),\n () => {}\n )\n\n this.options = options\n this.buffer = options.disableClientPersistence\n ? new PriorityQueue(4, [])\n : new PersistedPriorityQueue(4, `${writeKey}:dest-${name}`)\n\n this.scheduleFlush()\n }\n\n isLoaded(): boolean {\n return !!this._ready\n }\n\n ready(): Promise {\n return this.initializePromise.promise.then(\n () => this.onReady ?? Promise.resolve()\n )\n }\n\n async load(ctx: Context, analyticsInstance: Analytics): Promise {\n if (this._ready || this.onReady !== undefined) {\n return\n }\n\n const integrationSource =\n this.integrationSource ??\n (await loadIntegration(\n ctx,\n this.name,\n this.version,\n this.options.obfuscate\n ))\n\n this.integration = buildIntegration(\n integrationSource,\n this.settings,\n analyticsInstance\n )\n\n this.onReady = new Promise((resolve) => {\n const onReadyFn = (): void => {\n this._ready = true\n resolve(true)\n }\n\n this.integration!.once('ready', onReadyFn)\n })\n\n this.integration!.on('initialize', () => {\n this.initializePromise.resolve(true)\n })\n\n try {\n recordIntegrationMetric(ctx, {\n integrationName: this.name,\n methodName: 'initialize',\n type: 'classic',\n })\n this.integration.initialize()\n } catch (error) {\n recordIntegrationMetric(ctx, {\n integrationName: this.name,\n methodName: 'initialize',\n type: 'classic',\n didError: true,\n })\n this.initializePromise.resolve(false)\n throw error\n }\n }\n\n unload(_ctx: Context, _analyticsInstance: Analytics): Promise {\n return unloadIntegration(this.name, this.version, this.options.obfuscate)\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n this.middleware = this.middleware.concat(...fn)\n }\n\n shouldBuffer(ctx: Context): boolean {\n return (\n // page events can't be buffered because of destinations that automatically add page views\n ctx.event.type !== 'page' &&\n (isOffline() || this._ready !== true || this._initialized !== true)\n )\n }\n\n private async send(\n ctx: Context,\n clz: ClassType,\n eventType: 'track' | 'identify' | 'page' | 'alias' | 'group'\n ): Promise {\n if (this.shouldBuffer(ctx)) {\n this.buffer.push(ctx)\n this.scheduleFlush()\n return ctx\n }\n\n const plan = this.options?.plan?.track\n const ev = ctx.event.event\n\n if (plan && ev && this.name !== 'Segment.io') {\n // events are always sent to segment (legacy behavior)\n const planEvent = plan[ev]\n if (!isPlanEventEnabled(plan, planEvent)) {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n All: false,\n 'Segment.io': true,\n })\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: `Event ${ev} disabled for integration ${this.name} in tracking plan`,\n type: 'Dropped by plan',\n })\n )\n } else {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n ...planEvent?.integrations,\n })\n }\n\n if (planEvent?.enabled && planEvent?.integrations![this.name] === false) {\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: `Event ${ev} disabled for integration ${this.name} in tracking plan`,\n type: 'Dropped by plan',\n })\n )\n }\n }\n\n const afterMiddleware = await applyDestinationMiddleware(\n this.name,\n ctx.event,\n this.middleware\n )\n\n if (afterMiddleware === null) {\n return ctx\n }\n\n const event = new clz(afterMiddleware, {\n traverse: !this.disableAutoISOConversion,\n })\n\n recordIntegrationMetric(ctx, {\n integrationName: this.name,\n methodName: eventType,\n type: 'classic',\n })\n\n try {\n if (this.integration) {\n await this.integration!.invoke.call(this.integration, eventType, event)\n }\n } catch (err) {\n recordIntegrationMetric(ctx, {\n integrationName: this.name,\n methodName: eventType,\n type: 'classic',\n didError: true,\n })\n throw err\n }\n\n return ctx\n }\n\n async track(ctx: Context): Promise {\n return this.send(ctx, Track as ClassType, 'track')\n }\n\n async page(ctx: Context): Promise {\n if (this.integration?._assumesPageview && !this._initialized) {\n this.integration.initialize()\n }\n\n await this.initializePromise.promise\n return this.send(ctx, Page as ClassType, 'page')\n }\n\n async identify(ctx: Context): Promise {\n return this.send(ctx, Identify as ClassType, 'identify')\n }\n\n async alias(ctx: Context): Promise {\n return this.send(ctx, Alias as ClassType, 'alias')\n }\n\n async group(ctx: Context): Promise {\n return this.send(ctx, Group as ClassType, 'group')\n }\n\n private scheduleFlush(): void {\n if (this.flushing) {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n setTimeout(async () => {\n if (isOffline() || this._ready !== true || this._initialized !== true) {\n this.scheduleFlush()\n return\n }\n\n this.flushing = true\n this.buffer = await flushQueue(this, this.buffer)\n this.flushing = false\n\n if (this.buffer.todo > 0) {\n this.scheduleFlush()\n }\n }, Math.random() * 5000)\n }\n}\n\nexport function ajsDestinations(\n writeKey: string,\n settings: CDNSettings,\n globalIntegrations: Integrations = {},\n options: InitOptions = {},\n routingMiddleware?: DestinationMiddlewareFunction,\n legacyIntegrationSources?: ClassicIntegrationSource[]\n): LegacyDestination[] {\n if (isServer()) {\n return []\n }\n\n if (settings.plan) {\n options = options ?? {}\n options.plan = settings.plan\n }\n\n const routingRules = settings.middlewareSettings?.routingRules ?? []\n const remoteIntegrationsConfig = settings.integrations\n const localIntegrationsConfig = options.integrations\n // merged remote CDN settings with user provided options\n const integrationOptions = mergedOptions(settings, options ?? {}) as Record<\n string,\n JSONObject\n >\n\n const adhocIntegrationSources = legacyIntegrationSources?.reduce(\n (acc, integrationSource) => ({\n ...acc,\n [resolveIntegrationNameFromSource(integrationSource)]: integrationSource,\n }),\n {} as Record\n )\n\n const installableIntegrations = new Set([\n // Remotely configured installable integrations\n ...Object.keys(remoteIntegrationsConfig).filter((name) =>\n isInstallableIntegration(name, remoteIntegrationsConfig[name])\n ),\n\n // Directly provided integration sources are only installable if settings for them are available\n ...Object.keys(adhocIntegrationSources || {}).filter(\n (name) =>\n isPlainObject(remoteIntegrationsConfig[name]) ||\n isPlainObject(localIntegrationsConfig?.[name])\n ),\n ])\n\n return Array.from(installableIntegrations)\n .filter((name) => !shouldSkipIntegration(name, globalIntegrations))\n .map((name) => {\n const integrationSettings = remoteIntegrationsConfig[name]\n const version = resolveVersion(integrationSettings)\n const destination = new LegacyDestination(\n name,\n version,\n writeKey,\n integrationOptions[name],\n options,\n adhocIntegrationSources?.[name]\n )\n\n const routing = routingRules.filter(\n (rule) => rule.destinationName === name\n )\n if (routing.length > 0 && routingMiddleware) {\n destination.addMiddleware(routingMiddleware)\n }\n\n return destination\n })\n}\n", "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.analyticsVideoPlugins=t():e.analyticsVideoPlugins=t()}(window,(function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.l=!0,i.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)a.d(n,i,function(t){return e[t]}.bind(null,i));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,\"a\",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p=\"\",a(a.s=2)}([function(e,t,a){\"use strict\";a.r(t);var n=\"function\"==typeof fetch?fetch.bind():function(e,t){return t=t||{},new Promise((function(a,n){var i=new XMLHttpRequest;for(var r in i.open(t.method||\"get\",e,!0),t.headers)i.setRequestHeader(r,t.headers[r]);function o(){var e,t=[],a=[],n={};return i.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,(function(i,r,o){t.push(r=r.toLowerCase()),a.push([r,o]),e=n[r],n[r]=e?e+\",\"+o:o})),{ok:2==(i.status/100|0),status:i.status,statusText:i.statusText,url:i.responseURL,clone:o,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},headers:{keys:function(){return t},entries:function(){return a},get:function(e){return n[e.toLowerCase()]},has:function(e){return e.toLowerCase()in n}}}}i.withCredentials=\"include\"==t.credentials,i.onload=function(){a(o())},i.onerror=n,i.send(t.body)}))};t.default=n},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(){function e(e,t){for(var a=0;a=10&&(this.track(\"Video Content Playing\",this.metadata.content),this.mostRecentHeartbeat=Math.floor(t))}},{key:\"trackPause\",value:function(){this.isPaused=!0,this.track(\"Video Playback Paused\",this.metadata.playback)}},{key:\"retrieveMetadata\",value:function(e){var t=this;return new Promise((function(a,n){var r=e.id;(0,i.default)(\"https://api.vimeo.com/videos/\"+r,{headers:{Authorization:\"Bearer \"+t.authToken}}).then((function(e){return e.ok?e.json():n(e)})).then((function(e){t.metadata.content.title=e.name,t.metadata.content.description=e.description,t.metadata.content.publisher=e.user.name,t.metadata.playback.position=0,t.metadata.playback.totalLength=e.duration})).catch((function(e){return console.error(\"Request to Vimeo API Failed with: \",e),n(e)}))}))}},{key:\"updateMetadata\",value:function(e){var t=this;return new Promise((function(a,n){t.player.getVolume().then((function(n){n&&(t.metadata.playback.sound=100*n),t.metadata.playback.position=e.seconds,a()})).catch(n)}))}}]),t}(r(a(1)).default);t.default=o},function(e,t,a){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(){function e(e,t){for(var a=0;a2e3}}]),t}(r.default);function l(e){var t=e.match(/PT(\\d+H)?(\\d+M)?(\\d+S)?/);return t=t.slice(1).map((function(e){if(null!=e)return e.replace(/\\D/,\"\")})),3600*(parseInt(t[0])||0)+60*(parseInt(t[1])||0)+(parseInt(t[2])||0)}t.default=s}])}));", "import { Analytics } from '../../core/analytics'\n\nexport async function loadLegacyVideoPlugins(\n analytics: Analytics\n): Promise {\n const plugins = await import(\n // @ts-expect-error\n '@segment/analytics.js-video-plugins/dist/index.umd.js'\n )\n\n // This is super gross, but we need to support the `window.analytics.plugins` namespace\n // that is linked in the segment docs in order to be backwards compatible with ajs-classic\n\n // @ts-expect-error\n analytics._plugins = plugins\n}\n", "import { CDNSettings } from '../../browser'\nimport { Context } from '../../core/context'\nimport { PlanEvent, TrackPlan } from '../../core/events/interfaces'\nimport { Plugin } from '../../core/plugin'\nimport { isPlanEventEnabled } from '../../lib/is-plan-event-enabled'\nimport { RemotePlugin } from '../remote-loader'\n\nfunction disabledActionDestinations(\n plan: PlanEvent | undefined,\n settings: CDNSettings\n): { [destination: string]: string[] } {\n if (!plan || !Object.keys(plan)) {\n return {}\n }\n\n const disabledIntegrations = plan.integrations\n ? Object.keys(plan.integrations).filter(\n (i) => plan.integrations![i] === false\n )\n : []\n\n // This accounts for cases like Fullstory, where the settings.integrations\n // contains a \"Fullstory\" object but settings.remotePlugins contains \"Fullstory (Actions)\"\n const disabledRemotePlugins: string[] = []\n ;(settings.remotePlugins ?? []).forEach((p: RemotePlugin) => {\n disabledIntegrations.forEach((int) => {\n if (p.creationName == int) {\n disabledRemotePlugins.push(p.name)\n }\n })\n })\n\n return (settings.remotePlugins ?? []).reduce((acc, p) => {\n if (p.settings['subscriptions']) {\n if (disabledRemotePlugins.includes(p.name)) {\n // @ts-expect-error element implicitly has an 'any' type because p.settings is a JSONObject\n p.settings['subscriptions'].forEach(\n // @ts-expect-error parameter 'sub' implicitly has an 'any' type\n (sub) => (acc[`${p.name} ${sub.partnerAction}`] = false)\n )\n }\n }\n return acc\n }, {})\n}\n\nexport function schemaFilter(\n track: TrackPlan | undefined,\n settings: CDNSettings\n): Plugin {\n function filter(ctx: Context): Context {\n const plan = track\n const ev = ctx.event.event\n\n if (plan && ev) {\n const planEvent = plan[ev]\n if (!isPlanEventEnabled(plan, planEvent)) {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n All: false,\n 'Segment.io': true,\n })\n return ctx\n } else {\n const disabledActions = disabledActionDestinations(planEvent, settings)\n\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n ...planEvent?.integrations,\n ...disabledActions,\n })\n }\n }\n\n return ctx\n }\n\n return {\n name: 'Schema Filter',\n version: '0.1.0',\n isLoaded: () => true,\n load: () => Promise.resolve(),\n type: 'before',\n page: filter,\n alias: filter,\n track: filter,\n identify: filter,\n group: filter,\n }\n}\n", "import { CDNSettings } from '../../browser'\nimport { Context } from '../../core/context'\nimport { isServer } from '../../core/environment'\nimport { loadScript } from '../../lib/load-script'\nimport { getNextIntegrationsURL } from '../../lib/parse-cdn'\nimport { MiddlewareFunction } from '../middleware'\n\nexport async function remoteMiddlewares(\n ctx: Context,\n settings: CDNSettings,\n obfuscate?: boolean\n): Promise {\n if (isServer()) {\n return []\n }\n const path = getNextIntegrationsURL()\n const remoteMiddleware = settings.enabledMiddleware ?? {}\n const names = Object.entries(remoteMiddleware)\n .filter(([_, enabled]) => enabled)\n .map(([name]) => name)\n\n const scripts = names.map(async (name) => {\n const nonNamespaced = name.replace('@segment/', '')\n let bundleName = nonNamespaced\n if (obfuscate) {\n bundleName = btoa(nonNamespaced).replace(/=/g, '')\n }\n const fullPath = `${path}/middleware/${bundleName}/latest/${bundleName}.js.gz`\n\n try {\n await loadScript(fullPath)\n // @ts-ignore\n return window[`${nonNamespaced}Middleware`] as MiddlewareFunction\n } catch (error: any) {\n ctx.log('error', error)\n ctx.stats.increment('failed_remote_middleware')\n }\n })\n\n let middleware = await Promise.all(scripts)\n middleware = middleware.filter(Boolean)\n\n return middleware as MiddlewareFunction[]\n}\n", "/* eslint-disable no-unused-vars */\n\nimport fuzzysort from 'fuzzysort'\n\nconst MARGIN_BETWEEN_CARDS = 12\nconst MARGIN_BUFFER = 32\nconst form = document.getElementById('filter')\nconst filterToggle = document.querySelector('.FilterToggle')\nconst productCheckboxes = form.elements.product || []\nconst impactCheckboxes = form.elements.impact || []\nconst retailerCheckboxes = form.elements.retailer || []\nconst noResultsEl = document.querySelector('.FilterNoResults')\nconst resetFiltersEl = document.querySelector('[data-reset-filters]')\nconst resetAllEl = document.querySelector('[type=\"reset\"]')\nconst cardList = document.querySelectorAll('.Card')\nconst listEl = cardList[0].parentNode\nconst hero = document.querySelector('.DirectoryHeroHeader')\nconst summaryCount = document.querySelector('summary-count')\n\nconst brandNames = Array.from(document.querySelectorAll('.Card-heading'), el => el.textContent)\n// This should help performance as per fuzzysort README. Prepare targets upfront since brand names won't change\nbrandNames.forEach(n => fuzzysort.prepare(n))\n\ndocument.getElementById('brand-search').addEventListener('input', handleSearchInput)\nform.addEventListener('change', handleFormChange)\nform.addEventListener('reset', handleFormReset)\nresetFiltersEl.addEventListener('click', resetAllFormFilters)\n\nform.querySelectorAll('label').forEach(el => {\n el.addEventListener('keydown', handleTagToggle)\n})\n\n// We are on mobile. Close the filters\nif (innerWidth < 640) filterToggle.open = false\n\nfunction handleSearchInput (evt) {\n const search = evt.target.value\n const searchResult = fuzzysort.go(search, brandNames, {\n all: true, // If true, returns all results for an empty search\n limit: 50 // Don't return more results than you need!\n })\n filterList({ searchResult, productIds: [], impactIds: [], retailerIds: [] })\n}\n\nfunction handleTagToggle (evt) {\n const { target, key } = evt\n const checkbox = target.previousElementSibling\n\n // Make tag labels accessible\n if (key === 'Enter' || key === ' ') {\n checkbox.checked = !checkbox.checked\n\n // Redisplay the list\n handleFormChange(evt)\n }\n}\n\nfunction handleFormChange (evt) {\n const productIds = getSelectedIds(productCheckboxes)\n const impactIds = getSelectedIds(impactCheckboxes)\n const retailerIds = getSelectedIds(retailerCheckboxes)\n const newState = { productIds, impactIds, retailerIds }\n\n filterList(newState)\n}\n\nconst initialState = { productIds: [], impactIds: [], retailerIds: [] }\n\nfunction handleFormReset (_evt) {\n // Hide the No Results message\n showNoResultsMessageIf(false)\n\n // Redisplay the list at its initial state\n filterList(initialState)\n\n // Disable the reset button\n resetAllEl.disabled = true\n}\n\nfunction getSelectedIds (inputs) {\n const ids = []\n for (const cb of inputs.values()) {\n if (cb.checked) {\n ids.push(cb.value)\n }\n }\n return ids\n}\n\nfunction filterList ({ searchResult, productIds, impactIds, retailerIds }) {\n const { height } = cardList[0].getBoundingClientRect()\n const cardHeight = height + MARGIN_BETWEEN_CARDS\n\n let posCounter = 0\n let resultsCount = 0\n\n cardList.forEach(el => {\n const nameEl = el.querySelector('.Card-heading')\n const name = stripHTMLTags(nameEl.textContent)\n\n // Find the search result item if present\n const item = (searchResult || []).find(i => name.includes(i.target))\n\n if (item) {\n const currentPos = Array.prototype.indexOf.call(cardList, el)\n const newPos = searchResult.findIndex(i => i === item)\n const offset = calcOffset(cardHeight, currentPos, newPos)\n showCard(el, offset)\n const highlightedHTMLString = fuzzysort.highlight(item, '', '')\n nameEl.innerHTML = highlightedHTMLString\n } else if (!searchResult && isMatch(el, productIds, impactIds, retailerIds)) {\n const currentPos = Array.prototype.indexOf.call(cardList, el)\n const newPos = posCounter++\n const offset = calcOffset(cardHeight, currentPos, newPos)\n showCard(el, offset)\n resultsCount++\n } else {\n hideCard(el)\n if (searchResult) {\n // It was a search, but this card wasn't a match. Remove potential text highlighting\n nameEl.textContent = name\n }\n }\n })\n\n scrollToTop()\n resetListHeight(cardHeight)\n showNoResultsMessageIf((searchResult && searchResult.total === 0) || (!searchResult && resultsCount === 0))\n resetAllEl.disabled = false\n updateResultsCounter((searchResult && searchResult.total) || resultsCount)\n}\n\n/**\n * A predicate function that returns true if the Card has\n * any of the specified IDs; false otherwise.\n * @param {HTMLElement} element a .Card element\n * @param {number[]} productIds an array of product category IDs to match against the element\n * @param {number[]} impactIds an array of impact category IDs to match against the element\n * @param {number[]} retailerIds an array of retailer IDs to match against the element\n * @returns {boolean} true if the element is a subset of the specified IDs\n */\nfunction isMatch (element, productIds, impactIds, retailerIds) {\n const {\n productIds: productCategoryIds,\n impactIds: impactCategoryIds,\n retailerIds: retailerCategoryIds\n } = element.dataset\n\n return matches(productCategoryIds.split(','), productIds) &&\n matches(impactCategoryIds.split(','), impactIds) &&\n matches(retailerCategoryIds.split(','), retailerIds)\n}\n\nfunction matches (ids, selectedIds) {\n if (selectedIds.length === 0) return true\n\n return isSubsetOf(selectedIds, ids)\n}\n\nfunction isSubsetOf (a, b) {\n return a.every(x => b.includes(x))\n}\n\nfunction resetAllFormFilters (e) {\n // Hide the No Results message\n showNoResultsMessageIf(false)\n\n // Reset tags and themes\n form.reset()\n\n // Redisplay the list at its initial state\n handleFormChange(e)\n}\n\n// Scrolls to the top of the page, after the hero header\nfunction scrollToTop () {\n document.body.scrollTop = hero.clientHeight // For Safari\n document.documentElement.scrollTop = hero.clientHeight // For Chrome, Firefox, IE and Opera\n}\n\n// Set the list height to avoid a big empty gap at the bottom\nfunction resetListHeight (cardHeight) {\n const len = document.querySelectorAll('.Card:not(.transparent)').length\n const newListHeight = MARGIN_BUFFER + len * cardHeight\n listEl.style.height = newListHeight + 'px'\n}\n\nfunction showNoResultsMessageIf (condition) {\n noResultsEl.hidden = !condition\n}\n\nfunction stripHTMLTags (str) {\n return str.replace(/(<([^>]+)>)/gi, '')\n}\n\nfunction updateResultsCounter (num) {\n summaryCount.innerText = `${num} result${num === 1 ? '' : 's'}`\n}\n\nfunction showCard (el, offset) {\n el.classList.remove('transparent')\n el.style.transform = `translate(0, ${offset}px)`\n}\n\nfunction hideCard (el) {\n el.classList.add('transparent')\n el.style.transform = 'none'\n}\n\n/**\n * Calculates the distance of a list item from the top of the list.\n * @param {number} itemHeight the height of the item, in pixels\n * @param {number} currentPosition a progressive numerical index, e.g. 1 is first, 2 is second, etc.\n * @param {number} newPosition a progressive numerical index, e.g. 1 is first, 2 is second, etc.\n * @returns {number} the offset, in pixels\n */\nfunction calcOffset (itemHeight, currentPosition, newPosition) {\n const posOffset = currentPosition - newPosition\n return posOffset > currentPosition ? posOffset * itemHeight : -posOffset * itemHeight\n}\n", "import {\n isFunction,\n isPlainObject,\n isString,\n isNumber,\n} from '@segment/analytics-core'\nimport { Context } from '../context'\nimport {\n Callback,\n JSONObject,\n Options,\n EventProperties,\n SegmentEvent,\n Traits,\n GroupTraits,\n UserTraits,\n} from '../events'\nimport { ID, WithId } from '../user'\n\n/**\n * Helper for the track method\n */\nexport function resolveArguments(\n eventName: string | SegmentEvent,\n properties?: EventProperties | Callback,\n options?: Options | Callback,\n callback?: Callback\n): [string, EventProperties | Callback, Options, Callback | undefined] {\n const args = [eventName, properties, options, callback]\n\n const name = isPlainObject(eventName) ? eventName.event : eventName\n if (!name || !isString(name)) {\n throw new Error('Event missing')\n }\n\n const data = isPlainObject(eventName)\n ? eventName.properties ?? {}\n : isPlainObject(properties)\n ? properties\n : {}\n\n let opts: Options = {}\n if (!isFunction(options)) {\n opts = options ?? {}\n }\n\n if (isPlainObject(eventName) && !isFunction(properties)) {\n opts = properties ?? {}\n }\n\n const cb = args.find(isFunction) as Callback | undefined\n return [name, data, opts, cb]\n}\n\n/**\n * Helper for page, screen methods\n */\nexport function resolvePageArguments(\n category?: string | object,\n name?: string | object | Callback,\n properties?: EventProperties | Options | Callback | null,\n options?: Options | Callback,\n callback?: Callback\n): [\n string | null,\n string | null,\n EventProperties,\n Options,\n Callback | undefined\n] {\n let resolvedCategory: string | undefined | null = null\n let resolvedName: string | undefined | null = null\n const args = [category, name, properties, options, callback]\n\n const strings = args.filter(isString)\n if (strings[0] !== undefined && strings[1] !== undefined) {\n resolvedCategory = strings[0]\n resolvedName = strings[1]\n }\n\n if (strings.length === 1) {\n resolvedCategory = null\n resolvedName = strings[0]\n }\n\n const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n const objects = args.filter((obj) => {\n if (resolvedName === null) {\n return isPlainObject(obj)\n }\n return isPlainObject(obj) || obj === null\n }) as Array\n\n const resolvedProperties = (objects[0] ?? {}) as EventProperties\n const resolvedOptions = (objects[1] ?? {}) as Options\n\n return [\n resolvedCategory,\n resolvedName,\n resolvedProperties,\n resolvedOptions,\n resolvedCallback,\n ]\n}\n\n/**\n * Helper for group, identify methods\n */\nexport const resolveUserArguments = (\n user: U\n): ResolveUser => {\n return (...args): ReturnType> => {\n const values: {\n id?: ID\n traits?: T | null\n options?: Options\n callback?: Callback\n } = {}\n // It's a stack so it's reversed so that we go through each of the expected arguments\n const orderStack: Array = [\n 'callback',\n 'options',\n 'traits',\n 'id',\n ]\n\n // Read each argument and eval the possible values here\n for (const arg of args) {\n let current = orderStack.pop()\n if (current === 'id') {\n if (isString(arg) || isNumber(arg)) {\n values.id = arg.toString()\n continue\n }\n if (arg === null || arg === undefined) {\n continue\n }\n // First argument should always be the id, if it is not a valid value we can skip it\n current = orderStack.pop()\n }\n\n // Traits and Options\n if (\n (current === 'traits' || current === 'options') &&\n (arg === null || arg === undefined || isPlainObject(arg))\n ) {\n values[current] = arg as T\n }\n\n // Callback\n if (isFunction(arg)) {\n values.callback = arg as Callback\n break // This is always the last argument\n }\n }\n\n return [\n values.id ?? user.id(),\n (values.traits ?? {}) as T,\n values.options ?? {},\n values.callback,\n ]\n }\n}\n\n/**\n * Helper for alias method\n */\nexport function resolveAliasArguments(\n to: string | number,\n from?: string | number | Options,\n options?: Options | Callback,\n callback?: Callback\n): [string, string | null, Options, Callback | undefined] {\n if (isNumber(to)) to = to.toString() // Legacy behaviour - allow integers for alias calls\n if (isNumber(from)) from = from.toString()\n const args = [to, from, options, callback]\n\n const [aliasTo = to, aliasFrom = null] = args.filter(isString)\n const [opts = {}] = args.filter(isPlainObject)\n const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n return [aliasTo, aliasFrom, opts, resolvedCallback]\n}\n\ntype ResolveUser = (\n id?: ID | object,\n traits?: T | Callback | null,\n options?: Options | Callback,\n callback?: Callback\n) => [ID, T, Options, Callback | undefined]\n\nexport type IdentifyParams = Parameters>\nexport type GroupParams = Parameters>\nexport type EventParams = Parameters\nexport type PageParams = Parameters\nexport type AliasParams = Parameters\n\nexport type DispatchedEvent = Context\n", "import { v4 as uuid } from '@lukeed/uuid'\nimport { ID, User } from '../user'\nimport {\n Options,\n Integrations,\n EventProperties,\n Traits,\n SegmentEvent,\n} from './interfaces'\nimport { addPageContext, PageContext } from '../page'\nimport { CoreEventFactory } from '@segment/analytics-core'\n\nexport * from './interfaces'\n\nexport class EventFactory extends CoreEventFactory {\n user: User\n constructor(user: User) {\n super({\n createMessageId: () => `ajs-next-${Date.now()}-${uuid()}`,\n onEventMethodCall: ({ options }) => {\n this.maybeUpdateAnonId(options)\n },\n onFinishedEvent: (event) => {\n this.addIdentity(event)\n return event\n },\n })\n this.user = user\n }\n\n /**\n * Updates the anonymousId *globally* if it's provided in the options.\n * This should generally be done in the identify method, but some customers rely on this.\n */\n private maybeUpdateAnonId(options: Options | undefined): void {\n options?.anonymousId && this.user.anonymousId(options.anonymousId)\n }\n\n /**\n * add user id / anonymous id to the event\n */\n private addIdentity(event: SegmentEvent) {\n if (this.user.id()) {\n event.userId = this.user.id()\n }\n\n if (this.user.anonymousId()) {\n event.anonymousId = this.user.anonymousId()\n }\n }\n\n override track(\n event: string,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.track(event, properties, options, globalIntegrations)\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override page(\n category: string | null,\n page: string | null,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.page(\n category,\n page,\n properties,\n options,\n globalIntegrations\n )\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override screen(\n category: string | null,\n screen: string | null,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.screen(\n category,\n screen,\n properties,\n options,\n globalIntegrations\n )\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override identify(\n userId: ID,\n traits?: Traits,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.identify(userId, traits, options, globalIntegrations)\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override group(\n groupId: ID,\n traits?: Traits,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.group(groupId, traits, options, globalIntegrations)\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override alias(\n to: string,\n from: string | null,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.alias(to, from, options, globalIntegrations)\n addPageContext(ev, pageCtx)\n return ev\n }\n}\n", "import { isPlainObject } from '@segment/analytics-core'\n\n/**\n * Final Page Context object expected in the Segment Event context\n */\nexport interface PageContext {\n path: string\n referrer: string\n search: string\n title: string\n url: string\n}\n\ntype CanonicalUrl = string | undefined\n\nexport const BufferedPageContextDiscriminant = 'bpc' as const\n/**\n * Page Context expected to be built by the snippet.\n * Note: The key names are super short because we want to keep the strings in the html snippet short to save bytes.\n */\nexport interface BufferedPageContext {\n __t: typeof BufferedPageContextDiscriminant // for extra uniqeness\n c: CanonicalUrl\n p: PageContext['path']\n u: PageContext['url']\n s: PageContext['search']\n t: PageContext['title']\n r: PageContext['referrer']\n}\n\n/**\n * `BufferedPageContext` object builder\n */\nexport const createBufferedPageContext = (\n url: string,\n canonicalUrl: CanonicalUrl,\n search: string,\n path: string,\n title: string,\n referrer: string\n): BufferedPageContext => ({\n __t: BufferedPageContextDiscriminant,\n c: canonicalUrl,\n p: path,\n u: url,\n s: search,\n t: title,\n r: referrer,\n})\n\n// my clever/dubious way of making sure this type guard does not get out sync with the type definition\nconst BUFFERED_PAGE_CONTEXT_KEYS = Object.keys(\n createBufferedPageContext('', '', '', '', '', '')\n) as (keyof BufferedPageContext)[]\n\nexport function isBufferedPageContext(\n bufferedPageCtx: unknown\n): bufferedPageCtx is BufferedPageContext {\n if (!isPlainObject(bufferedPageCtx)) return false\n if (bufferedPageCtx.__t !== BufferedPageContextDiscriminant) return false\n\n // ensure obj has all the keys we expect, and none we don't.\n for (const k in bufferedPageCtx) {\n if (!BUFFERED_PAGE_CONTEXT_KEYS.includes(k as keyof BufferedPageContext)) {\n return false\n }\n }\n return true\n}\n\n// Legacy logic: we are we appending search parameters to the canonical URL -- I guess the canonical URL is \"not canonical enough\" (lol)\nconst createCanonicalURL = (canonicalUrl: string, searchParams: string) => {\n return canonicalUrl.indexOf('?') > -1\n ? canonicalUrl\n : canonicalUrl + searchParams\n}\n\n/**\n * Strips hash from URL.\n * http://www.segment.local#test -> http://www.segment.local\n */\nconst removeHash = (href: string) => {\n const hashIdx = href.indexOf('#')\n return hashIdx === -1 ? href : href.slice(0, hashIdx)\n}\n\nconst parseCanonicalPath = (canonicalUrl: string): string => {\n try {\n return new URL(canonicalUrl).pathname\n } catch (_e) {\n // this is classic behavior -- we assume that if the canonical URL is invalid, it's a raw path.\n return canonicalUrl[0] === '/' ? canonicalUrl : '/' + canonicalUrl\n }\n}\n\n/**\n * Create a `PageContext` from a `BufferedPageContext`.\n * `BufferedPageContext` keys are minified to save bytes in the snippet.\n */\nexport const createPageContext = ({\n c: canonicalUrl,\n p: pathname,\n s: search,\n u: url,\n r: referrer,\n t: title,\n}: BufferedPageContext): PageContext => {\n const newPath = canonicalUrl ? parseCanonicalPath(canonicalUrl) : pathname\n const newUrl = canonicalUrl\n ? createCanonicalURL(canonicalUrl, search)\n : removeHash(url)\n return {\n path: newPath,\n referrer,\n search,\n title,\n url: newUrl,\n }\n}\n\n/**\n * Get page properties from the browser window/document.\n */\nexport const getDefaultBufferedPageContext = (): BufferedPageContext => {\n const c = document.querySelector(\"link[rel='canonical']\")\n return createBufferedPageContext(\n location.href,\n (c && c.getAttribute('href')) || undefined,\n location.search,\n location.pathname,\n document.title,\n document.referrer\n )\n}\n\n/**\n * Get page properties from the browser window/document.\n */\nexport const getDefaultPageContext = (): PageContext =>\n createPageContext(getDefaultBufferedPageContext())\n", "export function pick, K extends keyof T>(\n object: T,\n keys: readonly K[]\n): Pick\n\nexport function pick>(\n object: T,\n keys: string[]\n): Partial\n\n/**\n * @example\n * pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c'])\n * => { 'a': 1, 'c': 3 }\n */\nexport function pick, K extends keyof T>(\n object: T,\n keys: string[] | K[] | readonly K[]\n) {\n return Object.assign(\n {},\n ...keys.map((key) => {\n if (object && Object.prototype.hasOwnProperty.call(object, key)) {\n return { [key]: object[key] }\n }\n })\n )\n}\n", "import type { CorePlugin } from '@segment/analytics-core'\nimport type { DestinationMiddlewareFunction } from '../../plugins/middleware'\nimport type { Analytics } from '../analytics'\nimport type { Context } from '../context'\n\nexport interface Plugin extends CorePlugin {}\n\nexport interface InternalPluginWithAddMiddleware extends Plugin {\n addMiddleware: (...fns: DestinationMiddlewareFunction[]) => void\n}\n\nexport interface InternalDestinationPluginWithAddMiddleware\n extends InternalPluginWithAddMiddleware {\n type: 'destination'\n}\n\nexport const isDestinationPluginWithAddMiddleware = (\n plugin: Plugin\n): plugin is InternalDestinationPluginWithAddMiddleware => {\n // FYI: segment's plugin does not currently have an 'addMiddleware' method\n return 'addMiddleware' in plugin && plugin.type === 'destination'\n}\n", "import { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { Context } from '../context'\nimport { Plugin } from '../plugin'\nimport { CoreEventQueue } from '@segment/analytics-core'\nimport { isOffline } from '../connection'\n\nexport class EventQueue extends CoreEventQueue {\n constructor(name: string)\n constructor(priorityQueue: PriorityQueue)\n constructor(nameOrQueue: string | PriorityQueue) {\n super(\n typeof nameOrQueue === 'string'\n ? new PersistedPriorityQueue(4, nameOrQueue)\n : nameOrQueue\n )\n }\n async flush(): Promise {\n if (isOffline()) return []\n return super.flush()\n }\n}\n", "import { v4 as uuid } from '@lukeed/uuid'\nimport autoBind from '../../lib/bind-all'\nimport { Traits } from '../events'\nimport {\n CookieOptions,\n UniversalStorage,\n MemoryStorage,\n StorageObject,\n StorageSettings,\n StoreType,\n applyCookieOptions,\n initializeStorages,\n isArrayOfStoreType,\n} from '../storage'\n\nexport type ID = string | null | undefined\n\nexport interface UserOptions {\n /**\n * Disables storing any data about the user.\n */\n disable?: boolean\n localStorageFallbackDisabled?: boolean\n persist?: boolean\n\n cookie?: {\n key?: string\n oldKey?: string\n }\n\n localStorage?: {\n key: string\n }\n\n /**\n * Store priority\n * @example stores: [StoreType.Cookie, StoreType.Memory]\n */\n storage?: StorageSettings\n}\n\nconst defaults = {\n persist: true,\n cookie: {\n key: 'ajs_user_id',\n oldKey: 'ajs_user',\n },\n localStorage: {\n key: 'ajs_user_traits',\n },\n}\n\nexport interface WithId {\n id(id?: ID): ID\n}\n\nexport class User implements WithId {\n static defaults = defaults\n\n private idKey: string\n private traitsKey: string\n private anonKey: string\n private cookieOptions?: CookieOptions\n\n private legacyUserStore: UniversalStorage<{\n [k: string]:\n | {\n id?: string\n traits?: Traits\n }\n | string\n }>\n private traitsStore: UniversalStorage<{\n [k: string]: Traits\n }>\n\n private identityStore: UniversalStorage<{\n [k: string]: string\n }>\n\n options: UserOptions = {}\n\n constructor(options: UserOptions = defaults, cookieOptions?: CookieOptions) {\n this.options = { ...defaults, ...options }\n this.cookieOptions = cookieOptions\n\n this.idKey = options.cookie?.key ?? defaults.cookie.key\n this.traitsKey = options.localStorage?.key ?? defaults.localStorage.key\n this.anonKey = 'ajs_anonymous_id'\n\n this.identityStore = this.createStorage(this.options, cookieOptions)\n\n // using only cookies for legacy user store\n this.legacyUserStore = this.createStorage(\n this.options,\n cookieOptions,\n (s) => s === StoreType.Cookie\n )\n\n // using only localStorage / memory for traits store\n this.traitsStore = this.createStorage(\n this.options,\n cookieOptions,\n (s) => s !== StoreType.Cookie\n )\n\n const legacyUser = this.legacyUserStore.get(defaults.cookie.oldKey)\n if (legacyUser && typeof legacyUser === 'object') {\n legacyUser.id && this.id(legacyUser.id)\n legacyUser.traits && this.traits(legacyUser.traits)\n }\n autoBind(this)\n }\n\n id = (id?: ID): ID => {\n if (this.options.disable) {\n return null\n }\n\n const prevId = this.identityStore.getAndSync(this.idKey)\n\n if (id !== undefined) {\n this.identityStore.set(this.idKey, id)\n\n const changingIdentity = id !== prevId && prevId !== null && id !== null\n if (changingIdentity) {\n this.anonymousId(null)\n }\n }\n\n const retId = this.identityStore.getAndSync(this.idKey)\n if (retId) return retId\n\n const retLeg = this.legacyUserStore.get(defaults.cookie.oldKey)\n return retLeg ? (typeof retLeg === 'object' ? retLeg.id : retLeg) : null\n }\n\n private legacySIO(): [string, string] | null {\n const val = this.legacyUserStore.get('_sio') as string\n if (!val) {\n return null\n }\n const [anon, user] = val.split('----')\n return [anon, user]\n }\n\n anonymousId = (id?: ID): ID => {\n if (this.options.disable) {\n return null\n }\n\n if (id === undefined) {\n const val =\n this.identityStore.getAndSync(this.anonKey) ?? this.legacySIO()?.[0]\n\n if (val) {\n return val\n }\n }\n\n if (id === null) {\n this.identityStore.set(this.anonKey, null)\n return this.identityStore.getAndSync(this.anonKey)\n }\n\n this.identityStore.set(this.anonKey, id ?? uuid())\n return this.identityStore.getAndSync(this.anonKey)\n }\n\n traits = (traits?: Traits | null): Traits | undefined => {\n if (this.options.disable) {\n return\n }\n\n if (traits === null) {\n traits = {}\n }\n\n if (traits) {\n this.traitsStore.set(this.traitsKey, traits ?? {})\n }\n\n return this.traitsStore.get(this.traitsKey) ?? {}\n }\n\n identify(id?: ID, traits?: Traits): void {\n if (this.options.disable) {\n return\n }\n\n traits = traits ?? {}\n const currentId = this.id()\n\n if (currentId === null || currentId === id) {\n traits = {\n ...this.traits(),\n ...traits,\n }\n }\n\n if (id) {\n this.id(id)\n }\n\n this.traits(traits)\n }\n\n logout(): void {\n this.anonymousId(null)\n this.id(null)\n this.traits({})\n }\n\n reset(): void {\n this.logout()\n this.identityStore.clear(this.idKey)\n this.identityStore.clear(this.anonKey)\n this.traitsStore.clear(this.traitsKey)\n }\n\n load(): User {\n return new User(this.options, this.cookieOptions)\n }\n\n save(): boolean {\n return true\n }\n\n /**\n * Creates the right storage system applying all the user options, cookie options and particular filters\n * @param options UserOptions\n * @param cookieOpts CookieOptions\n * @param filterStores filter function to apply to any StoreTypes (skipped if options specify using a custom storage)\n * @returns a Storage object\n */\n private createStorage(\n options: UserOptions,\n cookieOpts?: CookieOptions,\n filterStores?: (value: StoreType) => boolean\n ): UniversalStorage {\n let stores: StoreType[] = [\n StoreType.LocalStorage,\n StoreType.Cookie,\n StoreType.Memory,\n ]\n\n // If disabled we won't have any storage functionality\n if (options.disable) {\n return new UniversalStorage([])\n }\n\n // If persistance is disabled we will always fallback to Memory Storage\n if (!options.persist) {\n return new UniversalStorage([new MemoryStorage()])\n }\n\n if (options.storage !== undefined && options.storage !== null) {\n if (isArrayOfStoreType(options.storage)) {\n // If the user only specified order of stores we will still apply filters and transformations e.g. not using localStorage if localStorageFallbackDisabled\n stores = options.storage.stores\n }\n }\n\n // Disable LocalStorage\n if (options.localStorageFallbackDisabled) {\n stores = stores.filter((s) => s !== StoreType.LocalStorage)\n }\n\n // Apply Additional filters\n if (filterStores) {\n stores = stores.filter(filterStores)\n }\n\n return new UniversalStorage(\n initializeStorages(applyCookieOptions(stores, cookieOpts))\n )\n }\n}\n\nconst groupDefaults: UserOptions = {\n persist: true,\n cookie: {\n key: 'ajs_group_id',\n },\n localStorage: {\n key: 'ajs_group_properties',\n },\n}\n\nexport class Group extends User {\n constructor(options: UserOptions = groupDefaults, cookie?: CookieOptions) {\n super({ ...groupDefaults, ...options }, cookie)\n autoBind(this)\n }\n\n anonymousId = (_id?: ID): ID => {\n return undefined\n }\n}\n", "export default function bindAll<\n ObjType extends { [key: string]: any },\n KeyType extends keyof ObjType\n>(obj: ObjType): ObjType {\n const proto = obj.constructor.prototype\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key !== 'constructor') {\n const desc = Object.getOwnPropertyDescriptor(\n obj.constructor.prototype,\n key\n )\n if (!!desc && typeof desc.value === 'function') {\n obj[key as KeyType] = obj[key].bind(obj)\n }\n }\n }\n\n return obj\n}\n", "/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n", "import cookie from 'js-cookie'\n\n/**\n * Levels returns all levels of the given url.\n *\n * @param {string} url\n * @return {Array}\n * @api public\n */\nfunction levels(url: URL): string[] {\n const host = url.hostname\n const parts = host.split('.')\n const last = parts[parts.length - 1]\n const levels: string[] = []\n\n // Ip address.\n if (parts.length === 4 && parseInt(last, 10) > 0) {\n return levels\n }\n\n // Localhost.\n if (parts.length <= 1) {\n return levels\n }\n\n // Create levels.\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'))\n }\n\n return levels\n}\n\nfunction parseUrl(url: string): URL | undefined {\n try {\n return new URL(url)\n } catch {\n return\n }\n}\n\nexport function tld(url: string): string | undefined {\n const parsedUrl = parseUrl(url)\n if (!parsedUrl) return\n\n const lvls = levels(parsedUrl)\n\n // Lookup the real top level one.\n for (let i = 0; i < lvls.length; ++i) {\n const cname = '__tld__'\n const domain = lvls[i]\n const opts = { domain: '.' + domain }\n\n try {\n // cookie access throw an error if the library is ran inside a sandboxed environment (e.g. sandboxed iframe)\n cookie.set(cname, '1', opts)\n if (cookie.get(cname)) {\n cookie.remove(cname, opts)\n return domain\n }\n } catch (_) {\n return\n }\n }\n}\n", "import { StorageObject, Store } from './types'\n\n/**\n * Data storage using browser's localStorage\n */\nexport class LocalStorage\n implements Store\n{\n private localStorageWarning(key: keyof Data, state: 'full' | 'unavailable') {\n console.warn(`Unable to access ${key}, localStorage may be ${state}`)\n }\n\n get(key: K): Data[K] | null {\n try {\n const val = localStorage.getItem(key)\n if (val === null) {\n return null\n }\n try {\n return JSON.parse(val) ?? null\n } catch (e) {\n return (val ?? null) as unknown as Data[K] | null\n }\n } catch (err) {\n this.localStorageWarning(key, 'unavailable')\n return null\n }\n }\n\n set(key: K, value: Data[K] | null): void {\n try {\n localStorage.setItem(key, JSON.stringify(value))\n } catch {\n this.localStorageWarning(key, 'full')\n }\n }\n\n remove(key: K): void {\n try {\n return localStorage.removeItem(key)\n } catch (err) {\n this.localStorageWarning(key, 'unavailable')\n }\n }\n}\n", "import { Store, StorageObject } from './types'\n\n/**\n * Data Storage using in memory object\n */\nexport class MemoryStorage\n implements Store\n{\n private cache: Record = {}\n\n get(key: K): Data[K] | null {\n return (this.cache[key] ?? null) as Data[K] | null\n }\n\n set(key: K, value: Data[K] | null): void {\n this.cache[key] = value\n }\n\n remove(key: K): void {\n delete this.cache[key]\n }\n}\n", "import { CookieOptions } from './cookieStorage'\n\nexport const StoreType = {\n Cookie: 'cookie',\n LocalStorage: 'localStorage',\n Memory: 'memory',\n} as const\n\n/**\n * Known Storage Types\n *\n * Convenience settings for storage systems that AJS includes support for\n */\nexport type StoreType = typeof StoreType[keyof typeof StoreType]\n\nexport type StorageObject = Record\n\n/**\n * Defines a Storage object for use in AJS Client.\n */\nexport interface Store {\n /**\n * get value for the key from the stores. it will return the first value found in the stores\n * @param key key for the value to be retrieved\n * @returns value for the key or null if not found\n */\n get(key: K): Data[K] | null\n\n /**\n * it will set the value for the key in all the stores\n * @param key key for the value to be stored\n * @param value value to be stored\n * @returns value that was stored\n */\n set(key: K, value: Data[K] | null): void\n /**\n * remove the value for the key from all the stores\n * @param key key for the value to be removed\n * @param storeTypes optional array of store types to be used for removing the value\n */\n remove(key: K): void\n}\n\nexport interface StoreTypeWithSettings {\n name: T\n settings?: T extends 'cookie' ? CookieOptions : never\n}\n\nexport type InitializeStorageArgs = (StoreTypeWithSettings | StoreType)[]\n", "import { StoreType, StoreTypeWithSettings } from './types'\n\nexport type UniversalStorageSettings = { stores: StoreType[] }\n\n// This is setup this way to permit eventually a different set of settings for custom storage\nexport type StorageSettings = UniversalStorageSettings\n\nexport function isArrayOfStoreType(\n s: StorageSettings\n): s is UniversalStorageSettings {\n return (\n s &&\n s.stores &&\n Array.isArray(s.stores) &&\n s.stores.every((e) => Object.values(StoreType).includes(e))\n )\n}\n\nexport function isStoreTypeWithSettings(\n s: StoreTypeWithSettings | StoreType\n): s is StoreTypeWithSettings {\n return typeof s === 'object' && s.name !== undefined\n}\n", "import { Store, StorageObject } from './types'\n\n// not adding to private method because those method names do not get minified atm, and does not use 'this'\nconst _logStoreKeyError = (\n store: Store,\n action: 'set' | 'get' | 'remove',\n key: string,\n err: unknown\n) => {\n console.warn(\n `${store.constructor.name}: Can't ${action} key \"${key}\" | Err: ${err}`\n )\n}\n\n/**\n * Uses multiple storages in a priority list to get/set values in the order they are specified.\n */\nexport class UniversalStorage {\n private stores: Store[]\n\n constructor(stores: Store[]) {\n this.stores = stores\n }\n\n get(key: K): Data[K] | null {\n let val: Data[K] | null = null\n\n for (const store of this.stores) {\n try {\n val = store.get(key) as Data[K] | null\n if (val !== undefined && val !== null) {\n return val\n }\n } catch (e) {\n _logStoreKeyError(store, 'get', key, e)\n }\n }\n return null\n }\n\n set(key: K, value: Data[K] | null): void {\n this.stores.forEach((store) => {\n try {\n store.set(key, value)\n } catch (e) {\n _logStoreKeyError(store, 'set', key, e)\n }\n })\n }\n\n clear(key: K): void {\n this.stores.forEach((store) => {\n try {\n store.remove(key)\n } catch (e) {\n _logStoreKeyError(store, 'remove', key, e)\n }\n })\n }\n\n /*\n This is to support few scenarios where:\n - value exist in one of the stores ( as a result of other stores being cleared from browser ) and we want to resync them\n - read values in AJS 1.0 format ( for customers after 1.0 --> 2.0 migration ) and then re-write them in AJS 2.0 format\n */\n getAndSync(key: K): Data[K] | null {\n const val = this.get(key)\n\n // legacy behavior, getAndSync can change the type of a value from number to string (AJS 1.0 stores numerical values as a number)\n const coercedValue = (typeof val === 'number' ? val.toString() : val) as\n | Data[K]\n | null\n\n this.set(key, coercedValue)\n\n return coercedValue\n }\n}\n", "import { CookieOptions, CookieStorage } from './cookieStorage'\nimport { LocalStorage } from './localStorage'\nimport { MemoryStorage } from './memoryStorage'\nimport { isStoreTypeWithSettings } from './settings'\nimport { StoreType, Store, InitializeStorageArgs } from './types'\n\nexport * from './types'\nexport * from './localStorage'\nexport * from './cookieStorage'\nexport * from './memoryStorage'\nexport * from './universalStorage'\nexport * from './settings'\n\n/**\n * Creates multiple storage systems from an array of StoreType and options\n * @param args StoreType and options\n * @returns Storage array\n */\nexport function initializeStorages(args: InitializeStorageArgs): Store[] {\n const storages = args.map((s) => {\n let type: StoreType\n let settings\n\n if (isStoreTypeWithSettings(s)) {\n type = s.name\n settings = s.settings\n } else {\n type = s\n }\n\n switch (type) {\n case StoreType.Cookie:\n return new CookieStorage(settings)\n case StoreType.LocalStorage:\n return new LocalStorage()\n case StoreType.Memory:\n return new MemoryStorage()\n default:\n throw new Error(`Unknown Store Type: ${s}`)\n }\n })\n return storages\n}\n\n/**\n * Injects the CookieOptions into a the arguments for initializeStorage\n * @param storeTypes list of storeType\n * @param cookieOptions cookie Options\n * @returns arguments for initializeStorage\n */\nexport function applyCookieOptions(\n storeTypes: StoreType[],\n cookieOptions?: CookieOptions\n): InitializeStorageArgs {\n return storeTypes.map((s) => {\n if (cookieOptions && s === StoreType.Cookie) {\n return {\n name: s,\n settings: cookieOptions,\n }\n }\n return s\n })\n}\n", "/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport const isThenable = (value: unknown): boolean =>\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof (value as any).then === 'function'\n", "/**\n * Returns `process.env` if it is available in the environment.\n * Always returns an object make it similarly easy to use as `process.env`.\n */\nexport function getProcessEnv(): { [key: string]: string | undefined } {\n if (typeof process === 'undefined' || !process.env) {\n return {}\n }\n\n return process.env\n}\n", "import { HighEntropyHint, NavigatorUAData, UADataValues } from './interfaces'\n\nexport async function clientHints(\n hints?: HighEntropyHint[]\n): Promise {\n const userAgentData = (navigator as any).userAgentData as\n | NavigatorUAData\n | undefined\n\n if (!userAgentData) return undefined\n\n if (!hints) return userAgentData.toJSON()\n return userAgentData\n .getHighEntropyValues(hints)\n .catch(() => userAgentData.toJSON())\n}\n", "import type { Integrations } from '../../core/events/interfaces'\nimport { CDNSettings } from '../../browser'\nimport { JSONObject, JSONValue } from '../../core/events'\nimport { Plugin, InternalPluginWithAddMiddleware } from '../../core/plugin'\nimport { loadScript } from '../../lib/load-script'\nimport { getCDN } from '../../lib/parse-cdn'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { recordIntegrationMetric } from '../../core/stats/metric-helpers'\nimport { Analytics, InitOptions } from '../../core/analytics'\nimport { createDeferred } from '@segment/analytics-generic-utils'\n\nexport interface RemotePlugin {\n /** The name of the remote plugin */\n name: string\n /** The creation name of the remote plugin */\n creationName: string\n /** The url of the javascript file to load */\n url: string\n /** The UMD/global name the plugin uses. Plugins are expected to exist here with the `PluginFactory` method signature */\n libraryName: string\n /** The settings related to this plugin. */\n settings: JSONObject\n}\n\nexport class ActionDestination implements InternalPluginWithAddMiddleware {\n name: string // destination name\n version = '1.0.0'\n /**\n * The lifecycle name of the wrapped plugin.\n * This does not need to be 'destination', and can be 'enrichment', etc.\n */\n type: Plugin['type']\n\n alternativeNames: string[] = []\n\n private loadPromise = createDeferred()\n\n middleware: DestinationMiddlewareFunction[] = []\n\n action: Plugin\n\n constructor(name: string, action: Plugin) {\n this.action = action\n this.name = name\n this.type = action.type\n this.alternativeNames.push(action.name)\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n /** Make sure we only apply destination filters to actions of the \"destination\" type to avoid causing issues for hybrid destinations */\n if (this.type === 'destination') {\n this.middleware.push(...fn)\n }\n }\n\n private async transform(ctx: Context): Promise {\n const modifiedEvent = await applyDestinationMiddleware(\n this.name,\n ctx.event,\n this.middleware\n )\n\n if (modifiedEvent === null) {\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: 'dropped by destination middleware',\n })\n )\n }\n\n return new Context(modifiedEvent!)\n }\n\n private _createMethod(\n methodName: 'track' | 'page' | 'identify' | 'alias' | 'group' | 'screen'\n ) {\n return async (ctx: Context): Promise => {\n if (!this.action[methodName]) return ctx\n\n let transformedContext: Context = ctx\n // Transformations only allowed for destination plugins. Other plugin types support mutating events.\n if (this.type === 'destination') {\n transformedContext = await this.transform(ctx)\n }\n\n try {\n if (!(await this.ready())) {\n throw new Error(\n 'Something prevented the destination from getting ready'\n )\n }\n\n recordIntegrationMetric(ctx, {\n integrationName: this.action.name,\n methodName,\n type: 'action',\n })\n\n await this.action[methodName]!(transformedContext)\n } catch (error) {\n recordIntegrationMetric(ctx, {\n integrationName: this.action.name,\n methodName,\n type: 'action',\n didError: true,\n })\n throw error\n }\n\n return ctx\n }\n }\n\n alias = this._createMethod('alias')\n group = this._createMethod('group')\n identify = this._createMethod('identify')\n page = this._createMethod('page')\n screen = this._createMethod('screen')\n track = this._createMethod('track')\n\n /* --- PASSTHROUGH METHODS --- */\n isLoaded(): boolean {\n return this.action.isLoaded()\n }\n\n async ready(): Promise {\n try {\n await this.loadPromise.promise\n return true\n } catch {\n return false\n }\n }\n\n async load(ctx: Context, analytics: Analytics): Promise {\n if (this.loadPromise.isSettled()) {\n return this.loadPromise.promise\n }\n\n try {\n recordIntegrationMetric(ctx, {\n integrationName: this.action.name,\n methodName: 'load',\n type: 'action',\n })\n\n const loadP = this.action.load(ctx, analytics)\n\n this.loadPromise.resolve(await loadP)\n return loadP\n } catch (error) {\n recordIntegrationMetric(ctx, {\n integrationName: this.action.name,\n methodName: 'load',\n type: 'action',\n didError: true,\n })\n\n this.loadPromise.reject(error)\n throw error\n }\n }\n\n unload(ctx: Context, analytics: Analytics): Promise | unknown {\n return this.action.unload?.(ctx, analytics)\n }\n}\n\nexport type PluginFactory = {\n (settings: JSONValue): Plugin | Plugin[] | Promise\n pluginName: string\n}\n\nfunction validate(pluginLike: unknown): pluginLike is Plugin[] {\n if (!Array.isArray(pluginLike)) {\n throw new Error('Not a valid list of plugins')\n }\n\n const required = ['load', 'isLoaded', 'name', 'version', 'type']\n pluginLike.forEach((plugin) => {\n required.forEach((method) => {\n if (plugin[method] === undefined) {\n throw new Error(\n `Plugin: ${\n plugin.name ?? 'unknown'\n } missing required function ${method}`\n )\n }\n })\n })\n\n return true\n}\n\nfunction isPluginDisabled(\n userIntegrations: Integrations,\n remotePlugin: RemotePlugin\n) {\n const creationNameEnabled = userIntegrations[remotePlugin.creationName]\n const currentNameEnabled = userIntegrations[remotePlugin.name]\n\n // Check that the plugin isn't explicitly enabled when All: false\n if (\n userIntegrations.All === false &&\n !creationNameEnabled &&\n !currentNameEnabled\n ) {\n return true\n }\n\n // Check that the plugin isn't explicitly disabled\n if (creationNameEnabled === false || currentNameEnabled === false) {\n return true\n }\n\n return false\n}\n\nasync function loadPluginFactory(\n remotePlugin: RemotePlugin,\n obfuscate?: boolean\n): Promise {\n const defaultCdn = new RegExp('https://cdn.segment.(com|build)')\n const cdn = getCDN()\n\n if (obfuscate) {\n const urlSplit = remotePlugin.url.split('/')\n const name = urlSplit[urlSplit.length - 2]\n const obfuscatedURL = remotePlugin.url.replace(\n name,\n btoa(name).replace(/=/g, '')\n )\n try {\n await loadScript(obfuscatedURL.replace(defaultCdn, cdn))\n } catch (error) {\n // Due to syncing concerns it is possible that the obfuscated action destination (or requested version) might not exist.\n // We should use the unobfuscated version as a fallback.\n await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n }\n } else {\n await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n }\n\n // @ts-expect-error\n if (typeof window[remotePlugin.libraryName] === 'function') {\n // @ts-expect-error\n return window[remotePlugin.libraryName] as PluginFactory\n }\n}\n\nexport async function remoteLoader(\n settings: CDNSettings,\n userIntegrations: Integrations,\n mergedIntegrations: Record,\n options?: InitOptions,\n routingMiddleware?: DestinationMiddlewareFunction,\n pluginSources?: PluginFactory[]\n): Promise {\n const allPlugins: Plugin[] = []\n\n const routingRules = settings.middlewareSettings?.routingRules ?? []\n\n const pluginPromises = (settings.remotePlugins ?? []).map(\n async (remotePlugin) => {\n if (isPluginDisabled(userIntegrations, remotePlugin)) return\n\n try {\n const pluginFactory =\n pluginSources?.find(\n ({ pluginName }) => pluginName === remotePlugin.name\n ) || (await loadPluginFactory(remotePlugin, options?.obfuscate))\n\n if (pluginFactory) {\n const plugin = await pluginFactory({\n ...remotePlugin.settings,\n ...mergedIntegrations[remotePlugin.name],\n })\n const plugins = Array.isArray(plugin) ? plugin : [plugin]\n\n validate(plugins)\n\n const routing = routingRules.filter(\n (rule) => rule.destinationName === remotePlugin.creationName\n )\n\n plugins.forEach((plugin) => {\n const wrapper = new ActionDestination(\n remotePlugin.creationName,\n plugin\n )\n\n if (routing.length && routingMiddleware) {\n wrapper.addMiddleware(routingMiddleware)\n }\n\n allPlugins.push(wrapper)\n })\n }\n } catch (error) {\n console.warn('Failed to load Remote Plugin', error)\n }\n }\n )\n\n await Promise.all(pluginPromises)\n return allPlugins.filter(Boolean)\n}\n", "import { Facade } from '@segment/facade'\nimport { Analytics } from '../../core/analytics'\nimport { CDNSettings } from '../../browser'\nimport { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { toFacade } from '../../lib/to-facade'\nimport batch, { BatchingDispatchConfig } from './batched-dispatcher'\nimport standard, { StandardDispatcherConfig } from './fetch-dispatcher'\nimport { normalize } from './normalize'\nimport { scheduleFlush } from './schedule-flush'\nimport { SEGMENT_API_HOST } from '../../core/constants'\n\ntype DeliveryStrategy =\n | {\n strategy?: 'standard'\n config?: StandardDispatcherConfig\n }\n | {\n strategy?: 'batching'\n config?: BatchingDispatchConfig\n }\n\nexport type SegmentioSettings = {\n apiKey: string\n apiHost?: string\n protocol?: 'http' | 'https'\n\n addBundledMetadata?: boolean\n unbundledIntegrations?: string[]\n bundledConfigIds?: string[]\n unbundledConfigIds?: string[]\n\n maybeBundledConfigIds?: Record\n\n deliveryStrategy?: DeliveryStrategy\n}\n\ntype JSON = ReturnType\n\nfunction onAlias(analytics: Analytics, json: JSON): JSON {\n const user = analytics.user()\n json.previousId =\n json.previousId ?? json.from ?? user.id() ?? user.anonymousId()\n json.userId = json.userId ?? json.to\n delete json.from\n delete json.to\n return json\n}\n\nexport function segmentio(\n analytics: Analytics,\n settings?: SegmentioSettings,\n integrations?: CDNSettings['integrations']\n): Plugin {\n // Attach `pagehide` before buffer is created so that inflight events are added\n // to the buffer before the buffer persists events in its own `pagehide` handler.\n window.addEventListener('pagehide', () => {\n buffer.push(...Array.from(inflightEvents))\n inflightEvents.clear()\n })\n\n const writeKey = settings?.apiKey ?? ''\n\n const buffer = analytics.options.disableClientPersistence\n ? new PriorityQueue(analytics.queue.queue.maxAttempts, [])\n : new PersistedPriorityQueue(\n analytics.queue.queue.maxAttempts,\n `${writeKey}:dest-Segment.io`\n )\n\n const inflightEvents = new Set()\n const flushing = false\n\n const apiHost = settings?.apiHost ?? SEGMENT_API_HOST\n const protocol = settings?.protocol ?? 'https'\n const remote = `${protocol}://${apiHost}`\n\n const deliveryStrategy = settings?.deliveryStrategy\n const client =\n deliveryStrategy?.strategy === 'batching'\n ? batch(apiHost, deliveryStrategy.config)\n : standard(deliveryStrategy?.config as StandardDispatcherConfig)\n\n async function send(ctx: Context): Promise {\n if (isOffline()) {\n buffer.push(ctx)\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n return ctx\n }\n\n inflightEvents.add(ctx)\n\n const path = ctx.event.type.charAt(0)\n\n let json = toFacade(ctx.event).json()\n\n if (ctx.event.type === 'track') {\n delete json.traits\n }\n\n if (ctx.event.type === 'alias') {\n json = onAlias(analytics, json)\n }\n\n return client\n .dispatch(\n `${remote}/${path}`,\n normalize(analytics, json, settings, integrations)\n )\n .then(() => ctx)\n .catch(() => {\n buffer.pushWithBackoff(ctx)\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n return ctx\n })\n .finally(() => {\n inflightEvents.delete(ctx)\n })\n }\n\n const segmentio: Plugin = {\n name: 'Segment.io',\n type: 'destination',\n version: '0.1.0',\n isLoaded: (): boolean => true,\n load: (): Promise => Promise.resolve(),\n track: send,\n identify: send,\n page: send,\n alias: send,\n group: send,\n screen: send,\n }\n\n // Buffer may already have items if they were previously stored in localStorage.\n // Start flushing them immediately.\n if (buffer.todo) {\n scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n }\n\n return segmentio\n}\n", "import { SegmentEvent } from '../../core/events'\nimport { fetch } from '../../lib/fetch'\nimport { onPageChange } from '../../lib/on-page-change'\n\nexport type BatchingDispatchConfig = {\n size?: number\n timeout?: number\n keepalive?: boolean\n}\n\nconst MAX_PAYLOAD_SIZE = 500\nconst MAX_KEEPALIVE_SIZE = 64\n\nfunction kilobytes(buffer: unknown): number {\n const size = encodeURI(JSON.stringify(buffer)).split(/%..|./).length - 1\n return size / 1024\n}\n\n/**\n * Checks if the payload is over or close to\n * the maximum payload size allowed by tracking\n * API.\n */\nfunction approachingTrackingAPILimit(buffer: unknown): boolean {\n return kilobytes(buffer) >= MAX_PAYLOAD_SIZE - 50\n}\n\n/**\n * Checks if payload is over or approaching the limit for keepalive\n * requests. If keepalive is enabled we want to avoid\n * going over this to prevent data loss.\n */\nfunction passedKeepaliveLimit(buffer: unknown): boolean {\n return kilobytes(buffer) >= MAX_KEEPALIVE_SIZE - 10\n}\n\nfunction chunks(batch: object[]): Array {\n const result: object[][] = []\n let index = 0\n\n batch.forEach((item) => {\n const size = kilobytes(result[index])\n if (size >= 64) {\n index++\n }\n\n if (result[index]) {\n result[index].push(item)\n } else {\n result[index] = [item]\n }\n })\n\n return result\n}\n\nexport default function batch(\n apiHost: string,\n config?: BatchingDispatchConfig\n) {\n let buffer: object[] = []\n let pageUnloaded = false\n\n const limit = config?.size ?? 10\n const timeout = config?.timeout ?? 5000\n\n function sendBatch(batch: object[]) {\n if (batch.length === 0) {\n return\n }\n\n const writeKey = (batch[0] as SegmentEvent)?.writeKey\n\n // Remove sentAt from every event as batching only needs a single timestamp\n const updatedBatch = batch.map((event) => {\n const { sentAt, ...newEvent } = event as SegmentEvent\n return newEvent\n })\n\n return fetch(`https://${apiHost}/b`, {\n keepalive: config?.keepalive || pageUnloaded,\n headers: {\n 'Content-Type': 'text/plain',\n },\n method: 'post',\n body: JSON.stringify({\n writeKey,\n batch: updatedBatch,\n sentAt: new Date().toISOString(),\n }),\n })\n }\n\n async function flush(): Promise {\n if (buffer.length) {\n const batch = buffer\n buffer = []\n return sendBatch(batch)\n }\n }\n\n let schedule: NodeJS.Timeout | undefined\n\n function scheduleFlush(): void {\n if (schedule) {\n return\n }\n\n schedule = setTimeout(() => {\n schedule = undefined\n flush().catch(console.error)\n }, timeout)\n }\n\n onPageChange((unloaded) => {\n pageUnloaded = unloaded\n\n if (pageUnloaded && buffer.length) {\n const reqs = chunks(buffer).map(sendBatch)\n Promise.all(reqs).catch(console.error)\n }\n })\n\n async function dispatch(_url: string, body: object): Promise {\n buffer.push(body)\n\n const bufferOverflow =\n buffer.length >= limit ||\n approachingTrackingAPILimit(buffer) ||\n (config?.keepalive && passedKeepaliveLimit(buffer))\n\n return bufferOverflow || pageUnloaded ? flush() : scheduleFlush()\n }\n\n return {\n dispatch,\n }\n}\n", "/**\n * Register event listener on document that fires when:\n * * tab change or tab close (in mobile or desktop)\n * * click back / forward button\n * * click any link or perform any other navigation action\n * * soft refresh / hard refresh\n *\n * adapted from https://stackoverflow.com/questions/3239834/window-onbeforeunload-not-working-on-the-ipad/52864508#52864508,\n */\nexport const onPageChange = (cb: (unloaded: boolean) => void) => {\n let unloaded = false // prevents double firing if both are supported\n\n window.addEventListener('pagehide', () => {\n if (unloaded) return\n unloaded = true\n cb(unloaded)\n })\n\n // using document instead of window because of bug affecting browsers before safari 14 (detail in footnotes https://caniuse.com/?search=visibilitychange)\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState == 'hidden') {\n if (unloaded) return\n unloaded = true\n } else {\n unloaded = false\n }\n cb(unloaded)\n })\n}\n", "import { fetch } from '../../lib/fetch'\n\nexport type Dispatcher = (url: string, body: object) => Promise\n\nexport type StandardDispatcherConfig = {\n keepalive?: boolean\n}\n\nexport default function (config?: StandardDispatcherConfig): {\n dispatch: Dispatcher\n} {\n function dispatch(url: string, body: object): Promise {\n return fetch(url, {\n keepalive: config?.keepalive,\n headers: { 'Content-Type': 'text/plain' },\n method: 'post',\n body: JSON.stringify(body),\n })\n }\n\n return {\n dispatch,\n }\n}\n", "import { Analytics } from '../../core/analytics'\nimport { CDNSettings } from '../../browser'\nimport { SegmentFacade } from '../../lib/to-facade'\nimport { SegmentioSettings } from './index'\n\nexport function normalize(\n analytics: Analytics,\n json: ReturnType,\n settings?: SegmentioSettings,\n integrations?: CDNSettings['integrations']\n): object {\n const user = analytics.user()\n\n delete json.options\n\n json.writeKey = settings?.apiKey\n\n json.userId = json.userId || user.id()\n json.anonymousId = json.anonymousId || user.anonymousId()\n\n json.sentAt = new Date()\n\n const failed = analytics.queue.failedInitializations || []\n if (failed.length > 0) {\n json._metadata = { failedInitializations: failed }\n }\n\n const bundled: string[] = []\n const unbundled: string[] = []\n\n for (const key in integrations) {\n const integration = integrations[key]\n if (key === 'Segment.io') {\n bundled.push(key)\n }\n if (integration.bundlingStatus === 'bundled') {\n bundled.push(key)\n }\n if (integration.bundlingStatus === 'unbundled') {\n unbundled.push(key)\n }\n }\n\n // This will make sure that the disabled cloud mode destinations will be\n // included in the unbundled list.\n for (const settingsUnbundled of settings?.unbundledIntegrations || []) {\n if (!unbundled.includes(settingsUnbundled)) {\n unbundled.push(settingsUnbundled)\n }\n }\n\n const configIds = settings?.maybeBundledConfigIds ?? {}\n const bundledConfigIds: string[] = []\n\n bundled.sort().forEach((name) => {\n ;(configIds[name] ?? []).forEach((id) => {\n bundledConfigIds.push(id)\n })\n })\n\n if (settings?.addBundledMetadata !== false) {\n json._metadata = {\n ...json._metadata,\n bundled: bundled.sort(),\n unbundled: unbundled.sort(),\n bundledIds: bundledConfigIds,\n }\n }\n\n return json\n}\n", "import { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { attempt } from '@segment/analytics-core'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\n\nasync function flushQueue(\n xt: Plugin,\n queue: PriorityQueue\n): Promise> {\n const failedQueue: Context[] = []\n if (isOffline()) {\n return queue\n }\n\n await pWhile(\n () => queue.length > 0 && !isOffline(),\n async () => {\n const ctx = queue.pop()\n if (!ctx) {\n return\n }\n\n const result = await attempt(ctx, xt)\n const success = result instanceof Context\n if (!success) {\n failedQueue.push(ctx)\n }\n }\n )\n // re-add failed tasks\n failedQueue.map((failed) => queue.pushWithBackoff(failed))\n return queue\n}\n\nexport function scheduleFlush(\n flushing: boolean,\n buffer: PriorityQueue,\n xt: Plugin,\n scheduleFlush: Function\n): void {\n if (flushing) {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n setTimeout(async () => {\n let isFlushing = true\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const newBuffer = await flushQueue(xt, buffer)\n isFlushing = false\n\n if (buffer.todo > 0) {\n scheduleFlush(isFlushing, newBuffer, xt, scheduleFlush)\n }\n }, Math.random() * 5000)\n}\n", "import { getGlobal } from '../../lib/get-global'\nimport type { Analytics } from '../analytics'\n\nconst env = getGlobal()\n\n// The code below assumes the inspector extension will use Object.assign\n// to add the inspect interface on to this object reference (unless the\n// extension code ran first and has already set up the variable)\nconst inspectorHost: {\n attach: (analytics: Analytics) => void\n} = ((env as any)['__SEGMENT_INSPECTOR__'] ??= {})\n\nexport const attachInspector = (analytics: Analytics) =>\n inspectorHost.attach?.(analytics as any)\n", "export { Analytics, AnalyticsSettings, InitOptions } from './core/analytics'\nexport {\n AnalyticsBrowser,\n AnalyticsBrowserSettings,\n CDNSettings,\n RemoteIntegrationSettings,\n} from './browser'\nexport * from './node'\n\nexport * from './core/context'\nexport * from './core/events'\nexport * from './core/plugin'\nexport * from './core/user'\n\nexport type { AnalyticsSnippet } from './browser/standalone-interface'\nexport type { MiddlewareFunction } from './plugins/middleware'\nexport { getGlobalAnalytics } from './lib/global-analytics-helper'\nexport { UniversalStorage, Store, StorageObject } from './core/storage'\nexport { segmentio } from './plugins/segmentio'\nexport {\n resolveAliasArguments,\n resolveArguments,\n resolvePageArguments,\n resolveUserArguments,\n} from './core/arguments-resolver'\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n", "/**\n * Taken from from https://github.com/reduxjs/redux\n *\n * (This file used to be a TypeScript port of the `compose` function, but since\n * Redux has been ported to TypeScript, it's now an exact copy)\n */\n\ntype Func = (...a: T) => R\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for the\n * resulting composite function.\n *\n * @param funcs The functions to compose.\n * @returns A function obtained by composing the argument functions from right\n * to left. For example, `compose(f, g, h)` is identical to doing\n * `(...args) => f(g(h(...args)))`.\n */\nexport function compose(): (a: R) => R\n\nexport function compose(f: F): F\n\n/* two functions */\nexport function compose(\n f1: (a: A) => R,\n f2: Func\n): Func\n\n/* three functions */\nexport function compose(\n f1: (b: B) => R,\n f2: (a: A) => B,\n f3: Func\n): Func\n\n/* four functions */\nexport function compose(\n f1: (c: C) => R,\n f2: (b: B) => C,\n f3: (a: A) => B,\n f4: Func\n): Func\n\n/* rest */\nexport function compose(\n f1: (a: any) => R,\n ...funcs: Function[]\n): (...args: any[]) => R\n\nexport function compose(...funcs: Function[]): (...args: any[]) => R\n\nexport function compose(...funcs: Function[]) {\n if (funcs.length === 0) {\n // infer the argument type so it is usable in inference down the line\n return (arg: T) => arg\n }\n\n if (funcs.length === 1) {\n return funcs[0]\n }\n\n return funcs.reduce((a, b) => (...args: any) => a(b(...args)))\n}\n", "import type { HashMap, HashMapValue } from \"@appsignal/types\"\n\n/**\n * Converts all values in a flat object to a string.\n *\n * Adapted from https://stackoverflow.com/questions/46982698/how-do-i-convert-all-property-values-in-an-object-to-type-string\n */\nexport function toHashMapString(\n obj?: HashMap\n): HashMap | undefined {\n if (!obj) return\n\n const hm: HashMap = {}\n\n Object.keys(obj).forEach(k => {\n if (typeof obj[k] === \"object\") {\n hm[k] = JSON.stringify(obj[k])\n } else {\n hm[k] = String(obj[k])\n }\n })\n\n return hm\n}\n\n/**\n * Converts any non-string, boolean or number value in an object to a string\n */\nexport function toHashMap(\n obj?: HashMap\n): HashMap | undefined {\n if (!obj) return\n\n const hm: HashMap = {}\n\n Object.keys(obj).forEach(k => {\n if (\n typeof obj[k] === \"string\" ||\n typeof obj[k] === \"boolean\" ||\n typeof obj[k] === \"number\"\n ) {\n hm[k] = obj[k]\n } else {\n hm[k] = JSON.stringify(obj[k])\n }\n })\n\n return hm\n}\n", "/**\n * Check if the given object is an error-like object.\n *\n * @param {Error | T} error An `Error` object or an error-like object\n *\n * @return {boolean}\n */\nexport function isError(error: Error | T): boolean {\n return (\n typeof error === \"object\" && typeof (error as any).message !== \"undefined\"\n )\n}\n\n/**\n * Get backtrace from an `Error` object, or an error-like object\n *\n * @param {Error | T} error An `Error` object or an error-like object\n *\n * @return {string[]} A backtrace\n */\nexport function getStacktrace(error: Error | T): string[] {\n if (\n typeof (error as any).stacktrace !== \"undefined\" ||\n typeof (error as any)[\"opera#sourceloc\"] !== \"undefined\"\n ) {\n // probably opera\n const { stacktrace = \"\" } = error as any\n return stacktrace\n .split(\"\\n\")\n .filter((line: string | undefined) => line !== \"\")\n } else if (error.stack) {\n // an Error or a plain object that resembles an error\n const { stack = \"\" } = error\n return stack.split(\"\\n\").filter(line => line !== \"\")\n } else {\n // probably IE9 :(\n return [\"No stacktrace available\"]\n }\n}\n", "/**\n * Encodes given object into url-friendly format\n *\n * @param {object} object: [object: An object that contains serializable values]\n *\n * @return {string} [Encoded URI params]\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join(\"&\")\n}\n", "/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * Originally from https://github.com/getsentry/sentry-javascript/\n */\n\nexport function isNodeEnv(): boolean {\n return (\n Object.prototype.toString.call(\n typeof process !== \"undefined\" ? process : 0\n ) === \"[object process]\"\n )\n}\n\n/**\n * Safely get global scope object\n *\n * Originally from https://github.com/getsentry/sentry-javascript/\n */\nexport function getGlobalObject(): T {\n return (isNodeEnv()\n ? global\n : typeof window !== \"undefined\"\n ? window\n : typeof self !== \"undefined\"\n ? self\n : {}) as T\n}\n", "export class Serializable {\n protected _data: T\n\n constructor(data: T) {\n this._data = data\n }\n\n public toJSON(): string {\n return JSON.stringify(this._data)\n }\n\n public serialize(): T {\n return this._data\n }\n}\n", "// Do not touch this file, auto-generated by scripts/create-version\nexport const VERSION = \"1.4.1\"\n", "import { getGlobalObject, isNodeEnv } from \"@appsignal/core\"\n\nexport class Environment {\n /**\n * Serializes the current browser environment into an object.\n */\n public static serialize(): { [key: string]: string } {\n return {\n transport: this.transport(),\n origin: this.origin()\n }\n }\n\n /**\n * Returns the origin of the current context.\n *\n * @return {string} The origin URL\n */\n public static origin(): string {\n const globals = getGlobalObject()\n\n // environments like nodejs or react native where an origin isn't relavent\n if (!globals.location) {\n return \"\"\n }\n\n return (\n globals.location.origin ||\n `${globals.location.protocol}//${globals.location.hostname}`\n )\n }\n\n /**\n * Returns the best currently available API that the current browser supports\n * for making HTTP requests.\n *\n * @return {string} The name of the best availble HTTP transport\n */\n public static transport(): string {\n // we throw out the typechecking here as the transports aren't exported\n // using TS' `Window` type\n const globals = getGlobalObject() as any\n\n // we ignore jest here, as it's a false positive for a node\n // environment and breaks the tests\n if (isNodeEnv() && typeof jest === \"undefined\") {\n return \"NodeHTTP\"\n } else if (globals.XDomainRequest) {\n return \"XDomainRequest\"\n } else if (globals.XMLHttpRequest && !globals.fetch) {\n return \"XMLHttpRequest\"\n } else {\n return \"fetch\"\n }\n }\n\n /**\n * Indicates whether promises are available in the current browser\n * or environment.\n *\n * Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/es6/promises.js\n *\n * @return {boolean} A value indicating if Promises are supported\n */\n public static supportsPromises(): boolean {\n // we throw out the typechecking here as the transports aren't exported\n // using TS' `Window` type\n const globals = getGlobalObject() as any\n\n return (\n \"Promise\" in globals &&\n // Some of these methods are missing from\n // Firefox/Chrome experimental implementations\n \"resolve\" in globals.Promise &&\n \"reject\" in globals.Promise &&\n \"all\" in globals.Promise &&\n \"race\" in globals.Promise &&\n // Older version of the spec had a resolver object\n // as the arg rather than a function\n (function () {\n var resolve\n new globals.Promise(function (r: any) {\n resolve = r\n })\n return typeof resolve === \"function\"\n })()\n )\n }\n}\n", "import { Transport } from \"../interfaces/transport\"\n\n// Fixes TypeScript complaining about this class\n// not existing\ndeclare var XDomainRequest: any\n\nexport class XDomainTransport implements Transport {\n public url: string\n\n constructor(url: string) {\n this.url = url\n }\n\n public send(data: string): Promise {\n return new Promise((resolve, reject) => {\n const req = new XDomainRequest()\n const rx = new RegExp(\"^https?:\")\n\n req.onload = () => resolve({})\n\n // XDomainRequest will only make a request to a URL with\n // the same protocol\n req.open(\"POST\", this.url.replace(rx, window?.location?.protocol))\n\n setTimeout(() => {\n try {\n req.send(data)\n } catch (e) {\n reject(e)\n }\n }, 0)\n })\n }\n}\n", "import { Transport } from \"../interfaces/transport\"\n\nexport class XHRTransport implements Transport {\n public url: string\n\n constructor(url: string) {\n this.url = url\n }\n\n public send(data: string): Promise {\n return new Promise((resolve, reject) => {\n try {\n const req = new XMLHttpRequest()\n\n req.onreadystatechange = () => {\n if (req.readyState === XMLHttpRequest.DONE) {\n resolve({})\n }\n }\n\n req.open(\"POST\", this.url)\n req.send(data)\n } catch (e) {\n reject(e)\n }\n })\n }\n}\n", "import { Transport } from \"../interfaces/transport\"\n\nexport class FetchTransport implements Transport {\n public url: string\n\n constructor(url: string, headers?: { [key: string]: string }) {\n this.url = url\n }\n\n public async send(data: string): Promise {\n const res = await fetch(this.url, {\n method: \"POST\",\n body: data\n })\n\n const { statusText, ok } = res\n\n return ok ? Promise.resolve({}) : Promise.reject({ statusText })\n }\n}\n", "import { Transport } from \"../interfaces/transport\"\nimport type https from \"https\"\nexport class NodeTransport implements Transport {\n public url: string\n private https: Promise\n\n constructor(url: string) {\n this.url = url\n this.https = import(\"https\")\n }\n\n public send(data: string): Promise {\n const options = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Content-Length\": data.length\n }\n }\n\n return new Promise((resolve, reject) => {\n this.https\n .then(https => {\n const req = https\n .request(this.url, options, () => {})\n .on(\"error\", error => reject(error))\n\n req.write(data)\n req.end()\n\n resolve({})\n })\n .catch(reason => {\n console.warn(\n \"NodeTransport is being used, but the HTTPS module could not be imported. No data will be sent to AppSignal.\"\n )\n reject(reason)\n })\n })\n }\n}\n", "import { urlEncode } from \"@appsignal/core\"\n\nimport { Environment } from \"./environment\"\nimport { Span } from \"./span\"\n\nimport { XDomainTransport } from \"./transports/xdomain\"\nimport { XHRTransport } from \"./transports/xhr\"\nimport { FetchTransport } from \"./transports/fetch\"\nimport { NodeTransport } from \"./transports/node\"\n\nimport { PushApiOptions } from \"./interfaces/options\"\nimport { Transport } from \"./interfaces/transport\"\n\nexport class PushApi {\n private _uri: string\n private _apiKey: string\n private _clientVersion: string\n private _transport: Transport\n\n /**\n * Creates a new instance of the Push API client.\n *\n * @constructor\n *\n * @param {object} options An object of options to configure the Push API client\n */\n constructor(options: PushApiOptions) {\n this._uri = options.uri || \"https://appsignal-endpoint.net/collect\"\n this._apiKey = options.key\n this._clientVersion = options.version\n\n this._transport = this._createTransport(this._url())\n }\n\n /**\n * Pushes a transaction to the Push API.\n *\n * @param {Span} span A single API `Span`\n *\n * @return {Promise} A single API `Span`\n */\n public async push(span: Span): Promise {\n await this._transport.send(span.toJSON())\n return span\n }\n\n /**\n * Creates an instance of a new `Transport` object. A `Transport` is a\n * browser API that is able to sent HTTP requests to an endpoint. A\n * transport is selected based on the best available in the current\n * environment.\n *\n * @return {ITransport} A Transport object\n */\n private _createTransport(url: string): Transport {\n switch (Environment.transport()) {\n case \"XDomainRequest\":\n return new XDomainTransport(url)\n case \"XMLHttpRequest\":\n return new XHRTransport(url)\n case \"NodeHTTP\":\n return new NodeTransport(url)\n default:\n return new FetchTransport(url)\n }\n }\n\n /**\n * Constructs a complete URL for accessing the Push API.\n *\n * @return {string} A Push API URL string\n */\n private _url(): string {\n const auth = this._authorization()\n return `${this._uri}?${urlEncode(auth)}`\n }\n\n /**\n * Creates an object of API credentials.\n *\n * @return {object} API credentials\n */\n private _authorization(): object {\n return {\n api_key: this._apiKey,\n version: this._clientVersion\n }\n }\n}\n", "import {\n Serializable,\n getStacktrace,\n toHashMapString,\n isError\n} from \"@appsignal/core\"\nimport type {\n JSSpanData,\n Breadcrumb,\n HashMap,\n HashMapValue\n} from \"@appsignal/types\"\n\nexport class Span extends Serializable {\n constructor(span?: Partial) {\n super({\n timestamp: Math.round(new Date().getTime() / 1000),\n namespace: \"frontend\",\n error: {\n name: \"NullError\",\n message: \"No error has been set\",\n backtrace: []\n },\n ...span\n })\n }\n\n public setAction(name: string): this {\n if (!name || typeof name !== \"string\") {\n return this\n }\n\n this._data.action = name\n return this\n }\n\n public setNamespace(name: string): this {\n if (!name || typeof name !== \"string\") {\n return this\n }\n\n this._data.namespace = name\n return this\n }\n\n public setError(error: Error | T): this {\n if (!error || !isError(error)) return this\n\n this._data.error = {\n name: error.name || \"[unknown]\",\n message: error.message,\n backtrace: getStacktrace(error)\n }\n\n return this\n }\n\n public setTags(tags: HashMap): this {\n this._data.tags = { ...this._data.tags, ...toHashMapString(tags) }\n return this\n }\n\n public setParams(params: HashMap): this {\n this._data.params = { ...this._data.params, ...params }\n return this\n }\n\n public setBreadcrumbs(breadcrumbs: Breadcrumb[]): this {\n this._data.breadcrumbs = breadcrumbs\n return this\n }\n\n public setEnvironment(environment: HashMap): this {\n this._data.environment = { ...this._data.environment, ...environment }\n return this\n }\n\n // @private\n // Do not use this function directly. Instead, set the `matchBacktracePaths`\n // configuration option when initializing AppSignal.\n public cleanBacktracePath(matchBacktracePaths: RegExp[]): this {\n if (matchBacktracePaths.length === 0) {\n return this\n }\n\n if (!this._data.error || !this._data.error.backtrace) {\n return this\n }\n\n let linesMatched = 0\n\n this._data.error.backtrace = this._data.error.backtrace.map(line => {\n const path = extractPath(line)\n if (!path) {\n return line\n }\n\n for (const matcher of matchBacktracePaths as RegExp[]) {\n const match = path.match(matcher)\n if (!match || match.length < 2) {\n continue\n }\n\n const relevantPath = match.slice(1).join(\"\")\n if (relevantPath) {\n linesMatched++\n return line.replace(path, relevantPath)\n }\n }\n\n return line\n })\n\n if (linesMatched > 0) {\n this.setEnvironment({\n backtrace_paths_matched: linesMatched.toString()\n })\n }\n\n return this\n }\n}\n\n// Backtrace formats are different between browsers, and generally not\n// meant to be parsed by machines. This function does a best-effort to\n// extract whatever is at the location in the line where the path\n// usually appears.\n//\n// If it returns `undefined`, it means that it could not find where the\n// path is located in the backtrace line. If it returns a string, that\n// string _may_ be a path, but it may contain non-path elements as well.\nfunction extractPath(backtraceLine: string): string | undefined {\n // A Chrome backtrace line always contains `at` near the beginning,\n // preceded by space characters and followed by one space.\n const IS_CHROME = /^\\s*at\\s/\n // In a Chrome backtrace line, the path (if it is available)\n // is located, usually within parentheses, after the \"@\" towards the\n // end of the line, along with the line number and column number,\n // separated by colons. We check for those to reject clear non-paths.\n const CHROME_PATH = /at(?:\\s.*)?\\s\\(?(.*):\\d*:\\d*\\)?$/i\n\n if (backtraceLine.match(IS_CHROME)) {\n const match = backtraceLine.match(CHROME_PATH)\n return match ? match[1] : undefined\n }\n\n // A Safari or Firefox backtrace line always contains `@` after the first\n // term in the line.\n const IS_SAFARI_FF = /^.*@/\n\n // In a Safari or Firefox backtrace line, the path (if it is available)\n // is located after the \"@\" at the towards end of the line, followed by\n // the line number and column number, separated by colons. We check for\n // those to reject clear non-paths.\n const SAFARI_FF_PATH = /@\\s?(.*):\\d*:\\d*$/i\n\n if (backtraceLine.match(IS_SAFARI_FF)) {\n const match = backtraceLine.match(SAFARI_FF_PATH)\n return match ? match[1] : undefined\n }\n}\n", "import { Span } from \"./span\"\n\nexport class Queue {\n private _data: Span[]\n\n constructor(data?: Span[]) {\n this._data = data || []\n }\n\n public clear() {\n this._data = []\n }\n\n public values(): Span[] {\n return this._data\n }\n\n public push(item: Span | Span[]) {\n return Array.isArray(item)\n ? this._data.push(...item)\n : this._data.push(item)\n }\n\n public *drain() {\n while (this._data.length > 0) {\n yield this._data.shift()\n }\n }\n}\n", "import { getGlobalObject } from \"@appsignal/core\"\n\nimport { Queue } from \"./queue\"\nimport { PushApi } from \"./api\"\n\ntype DispatcherOptions = { limit: number; initialDuration: number }\n\nexport class Dispatcher {\n public options: DispatcherOptions\n\n private _queue: Queue\n private _api: PushApi\n private _retries = 0\n private _timerID = 0\n private _duration = 0\n\n constructor(\n queue: Queue,\n api: PushApi,\n options?: Partial\n ) {\n this._api = api\n this._queue = queue\n\n this.options = {\n limit: 5,\n initialDuration: 1000,\n ...options\n }\n\n this.reset()\n }\n\n public schedule(time = this._duration): number {\n const globals = getGlobalObject()\n\n // @TODO: make this configurable?\n const BACKOFF_FACTOR = 1.3\n\n const cb = async () => {\n for (let span of this._queue.drain()) {\n if (!span) return\n\n try {\n await this._api.push(span)\n } catch (e) {\n // when the first promise fails, reschedule a timer\n const expDuration = Math.floor(Math.pow(time, BACKOFF_FACTOR))\n\n this._retries = this._retries - 1\n\n if (this._retries === 0) {\n this.reset()\n } else {\n this._queue.push(span)\n this._timerID = this.schedule(expDuration)\n }\n\n return\n }\n }\n\n // reset once all promises are cleared\n this.reset()\n }\n\n return globals.setTimeout(cb, time)\n }\n\n public reset() {\n const { limit, initialDuration } = this.options\n this._retries = limit\n this._duration = initialDuration\n }\n}\n", "/**\n * The AppSignal client.\n * @module Appsignal\n */\n\nimport { compose, toHashMap } from \"@appsignal/core\"\nimport type { Breadcrumb, JSClient, Hook, HashMap } from \"@appsignal/types\"\n\nimport { VERSION } from \"./version\"\nimport { PushApi } from \"./api\"\nimport { Environment } from \"./environment\"\nimport { Span } from \"./span\"\nimport { Queue } from \"./queue\"\nimport { Dispatcher } from \"./dispatcher\"\n\nimport { AppsignalOptions } from \"./interfaces/options\"\n\nexport default class Appsignal implements JSClient {\n public VERSION = VERSION\n public ignored: RegExp[] = []\n private matchBacktracePaths: RegExp[] = []\n\n private _dispatcher: Dispatcher\n private _options: AppsignalOptions\n private _api: PushApi\n private _breadcrumbs: Breadcrumb[] = []\n\n private _hooks = {\n decorators: Array(),\n overrides: Array()\n }\n\n private _env = Environment.serialize()\n private _queue = new Queue([])\n\n /**\n * Creates a new instance of the AppSignal client.\n *\n * @constructor\n *\n * @param {AppsignalOptions} options An object of options to configure the AppSignal client\n */\n constructor(options: AppsignalOptions) {\n const {\n key = \"\",\n uri,\n revision,\n ignoreErrors,\n matchBacktracePaths\n } = options\n\n // `revision` should be a `string`, but we attempt to\n // normalise to one anyway\n if (revision && typeof revision !== \"string\") {\n options.revision = String(revision)\n }\n\n // starting with no key means nothing will be sent to the API\n if (key === \"\") {\n console.info(\n \"[APPSIGNAL]: No API key provided. Started in development mode. No data will be sent.\"\n )\n }\n\n this._api = new PushApi({\n key,\n uri,\n version: this.VERSION\n })\n\n // ignored exceptions are checked against the `message`\n // property of a given `Error`\n if (ignoreErrors && Array.isArray(ignoreErrors)) {\n this.ignored = ignoreErrors\n .filter(value => value instanceof RegExp)\n .map(unglobalize)\n }\n\n if (matchBacktracePaths) {\n if (Array.isArray(matchBacktracePaths)) {\n this.matchBacktracePaths = matchBacktracePaths\n } else {\n this.matchBacktracePaths = [matchBacktracePaths]\n }\n\n this.matchBacktracePaths = this.matchBacktracePaths\n .filter(value => value instanceof RegExp)\n .map(unglobalize)\n }\n\n this._dispatcher = new Dispatcher(this._queue, this._api)\n\n this._options = options\n }\n\n /**\n * Records and sends a browser `Error` to AppSignal.\n *\n * @param {Error | ErrorEvent} error A JavaScript Error object\n * @param {Function | void} fn Optional callback function to modify span before it's sent.\n *\n * @return {Promise | void} An API response, or `void` if `Promise` is unsupported.\n */\n public send(error: Error, fn?: (span: Span) => T): Promise | void\n\n /**\n * Records and sends a browser `Error` to AppSignal.\n *\n * @param {Error | ErrorEvent} error A JavaScript Error object\n * @param {object} tags An key, value object of tags\n * @param {string} namespace An optional namespace name\n *\n * @return {Promise | void} An API response, or `void` if `Promise` is unsupported.\n */\n public send(\n error: Error | ErrorEvent,\n tags?: object,\n namespace?: string\n ): Promise | void\n\n /**\n * Records and sends an Appsignal `Span` object to AppSignal.\n *\n * @param {Span} span An Appsignal Span object\n *\n * @return {Promise} An API response, or `void` if `Promise` is unsupported.\n */\n public send(span: Span): Promise | void\n\n /**\n *\n * @param {Error | Span | ErrorEvent} data A JavaScript Error or Appsignal Span object\n * @param {object | Function} tagsOrFn An key-value object of tags or a callback function to customize the span before it is sent.\n * @param {string} namespace DEPRECATED: An optional namespace name.\n *\n * @return {Promise | void} An API response, or `void` if `Promise` is unsupported.\n */\n public send(\n data: Error | Span | ErrorEvent,\n tagsOrFn?: object | ((span: Span) => T),\n namespace?: string\n ): Promise | void {\n if (\n !(data instanceof Error) &&\n !(data instanceof Span) &&\n !(data && data.error instanceof Error)\n ) {\n // @TODO: route this through a central logger\n console.error(\n \"[APPSIGNAL]: Can't send error, given error is not a valid type\"\n )\n return\n }\n\n let error: Error | Span\n\n if (\"error\" in data) {\n error = data.error as Error // handle ErrorEvent\n } else {\n error = data\n }\n\n // handle user defined ignores\n if (this.ignored.length !== 0) {\n if (error && \"message\" in error) {\n if (\n this.ignored.some(el =>\n el.test((error as { message: string }).message)\n )\n ) {\n console.warn(`[APPSIGNAL]: Ignored an error: ${error.message}`)\n return\n }\n }\n\n if (error instanceof Span) {\n const serializedError = error.serialize().error\n\n if (\n serializedError.message &&\n this.ignored.some(el => el.test(serializedError.message!))\n ) {\n console.warn(\n `[APPSIGNAL]: Ignored a span: ${serializedError.message}`\n )\n return\n }\n }\n }\n\n // a \"span\" currently refers to a fixed point in time, as opposed to\n // a range or length in time. this may change in future!\n const span =\n error instanceof Span ? error : this._createSpanFromError(error)\n\n // A Span can be \"decorated\" with metadata after it has been created,\n // but before it is sent to the API and before metadata provided\n // as arguments is added\n if (this._hooks.decorators.length > 0) {\n compose(...this._hooks.decorators)(span)\n }\n\n if (tagsOrFn) {\n if (typeof tagsOrFn === \"function\") {\n const callback = tagsOrFn\n callback(span)\n } else {\n console.warn(\n \"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a tags object is deprecated. Use the callback argument instead.\"\n )\n const tags = (toHashMap(tagsOrFn) || {}) as HashMap\n span.setTags(tags)\n }\n }\n if (namespace) {\n console.warn(\n \"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a namespace is deprecated. Use the callback argument instead.\"\n )\n span.setNamespace(namespace)\n }\n\n if (this._breadcrumbs.length > 0) span.setBreadcrumbs(this._breadcrumbs)\n\n // A Span can be \"overridden\" with metadata after it has been created,\n // but before it is sent to the API and after metadata provided\n // as arguments is added\n if (this._hooks.overrides.length > 0) {\n compose(...this._hooks.overrides)(span)\n }\n\n span.cleanBacktracePath(this.matchBacktracePaths)\n\n if (Environment.supportsPromises()) {\n // clear breadcrumbs as they are now loaded into the span,\n // and we are sure that it's possible to send them\n this._breadcrumbs = []\n\n // if no key is supplied, we just output the span to the console\n if (!this._options.key) {\n // @TODO: route this through a central logger\n console.warn(\n \"[APPSIGNAL]: Span not sent because we're in development mode:\",\n span\n )\n } else {\n // attempt to push to the API\n return this._api.push(span).catch(() => {\n this._queue.push(span)\n\n // schedule on next tick\n setTimeout(() => this._dispatcher.schedule(), 0)\n })\n }\n } else {\n // @TODO: route this through a central logger\n console.error(\n \"[APPSIGNAL]: Error not sent. A Promise polyfill is required.\"\n )\n return\n }\n }\n\n sendError(error: Error | ErrorEvent): Promise | void\n sendError(\n error: Error | ErrorEvent,\n callback: (span: Span) => T\n ): Promise | void\n sendError(\n error: Error | ErrorEvent,\n tags?: object,\n namespace?: string\n ): Promise | void\n\n /**\n * Records and sends a browser `Error` to AppSignal. An alias to `#send()`\n * to maintain compatibility.\n *\n * @param {Error | ErrorEvent} error A JavaScript Error object\n * @param {object | Function} tagsOrFn An key-value object of tags or callback function to customize the span before it is sent.\n * @param {string} namespace DEPRECATED: An optional namespace name\n *\n * @return {Promise | void} An API response, or `void` if `Promise` is unsupported.\n */\n public sendError(\n error: Error | ErrorEvent,\n tagsOrFn?: object | ((span: Span) => T),\n namespace?: string\n ): Promise | void {\n return this.send(error, tagsOrFn, namespace)\n }\n\n /**\n * Registers and installs a valid plugin.\n *\n * A plugin is typically a function that can be used to provide a\n * reference to the `Appsignal` instance via returning a function\n * that can be bound to `this`.\n *\n * @param {Plugin} plugin A JavaScript Error object\n *\n * @return {void}\n */\n public use(plugin: Function): void {\n plugin.call(this)\n }\n\n /**\n * Creates a new `Span`, augmented with the current environment.\n *\n * @param {Function | void} fn Optional function to modify span\n *\n * @return {Span} An AppSignal `Span` object\n */\n public createSpan(fn?: (span: Span) => void): Span {\n const { revision = \"\", namespace } = this._options\n\n const span = new Span({\n environment: this._env,\n revision\n })\n\n // set default namespace from constructor if none is set\n if (namespace) span.setNamespace(namespace)\n\n if (fn && typeof fn === \"function\") fn(span)\n\n return span\n }\n\n /**\n * Wraps and catches errors within a given function. If the function throws an\n * error, a rejected `Promise` will be returned and the error thrown will be\n * logged to AppSignal.\n */\n public async wrap(fn: () => T, callbackFn?: (span: Span) => T): Promise\n\n /**\n * Wraps and catches errors within a given function. If the function throws an\n * error, a rejected `Promise` will be returned and the error thrown will be\n * logged to AppSignal.\n */\n public async wrap(\n fn: () => T,\n tags?: object,\n namespace?: string\n ): Promise\n\n /**\n * Wraps and catches errors within a given function. If the function throws an\n * error, a rejected `Promise` will be returned and the error thrown will be\n * logged to AppSignal.\n *\n * @param {Function} fn A function to wrap\n * @param {object | Function} tagsOrFn An key-value object of tags or a callback function to customize the span before it is sent.\n * @param {string} namespace DEPRECATED: An optional namespace name\n *\n * @return {Promise} A Promise containing the return value of the function, or a `Span` if an error was thrown.\n */\n public async wrap(\n fn: () => T,\n tagsOrFn?: object | ((span: Span) => T),\n namespace?: string\n ): Promise {\n try {\n return await fn()\n } catch (e) {\n if (e instanceof Error || e instanceof ErrorEvent) {\n await this.sendError(e, tagsOrFn, namespace)\n }\n return Promise.reject(e)\n }\n }\n\n /**\n * Registers a span decorator to be applied every time a Span\n * is sent to the Push API\n *\n * @param {Function} decorator A decorator function, returning `Span`\n *\n * @return {void}\n */\n public addDecorator(decorator: T): void {\n this._hooks.decorators.push(decorator)\n }\n\n /**\n * Registers a span override to be applied every time a Span\n * is sent to the Push API\n *\n * @param {Function} override An override function, returning `Span`\n *\n * @return {void}\n */\n public addOverride(override: T): void {\n this._hooks.overrides.push(override)\n }\n\n /**\n * Sends a demonstration error to AppSignal.\n *\n * @return {void}\n */\n public demo(): void {\n const span = this._createSpanFromError(\n new Error(\n \"Hello world! This is an error used for demonstration purposes.\"\n )\n )\n\n span\n .setAction(\"TestAction\")\n .setParams({\n path: \"/hello\",\n method: \"GET\"\n })\n .setTags({\n demo_sample: \"true\"\n })\n\n this.send(span)\n }\n\n /**\n * Adds a breadcrumb.\n *\n * @param {Breadcrumb} breadcrumb A valid breadcrumb\n *\n * @return {void}\n */\n public addBreadcrumb(breadcrumb: Omit): void {\n const crumb: Breadcrumb = {\n timestamp: Math.round(new Date().getTime() / 1000),\n ...breadcrumb,\n metadata: toHashMap(breadcrumb.metadata)\n }\n\n if (!crumb.category) {\n console.warn(\"[APPSIGNAL]: Breadcrumb not added. `category` is missing.\")\n return\n }\n\n if (!crumb.action) {\n console.warn(\"[APPSIGNAL]: Breadcrumb not added. `action` is missing.\")\n return\n }\n\n if (this._breadcrumbs.length === 20) {\n this._breadcrumbs.pop()\n }\n\n this._breadcrumbs.unshift(crumb)\n }\n\n /**\n * Creates a valid AppSignal `Span` from a JavaScript `Error`\n * object.\n *\n * @param {Error} error A JavaScript error\n *\n * @return {Span} An AppSignal event\n */\n private _createSpanFromError(error: Error): Span {\n const event = this.createSpan()\n event.setError(error)\n\n return event\n }\n}\n\n// Returns a new `RegExp` object with the global flag removed.\n// This fixes issues where using global regexes repeatedly with `test` against\n// different strings will return unexpected results, due to the regex object\n// storing the location of its last match and resuming the search from there.\nfunction unglobalize(regexp: RegExp): RegExp {\n return new RegExp(regexp.source, regexp.flags.replace(\"g\", \"\"))\n}\n", "import Appsignal from '@appsignal/javascript'\nimport { plugin } from '@appsignal/plugin-window-events'\n\n/**\n * Call at page initialization to initialize Appsignal logging\n *\n * @param {Object} [config] - Configuration options\n * @param {boolean} [config.reportErrors] - Whether to report all unhandled errors to our error monitoring service.\n Note we avoid enabling it in Platform because we are afraid of being flooded with all sort of errors from Retailers websites.\n*/\nexport function initLogging ({ reportErrors = false } = {}) {\n const globals = window.provenance\n if (!globals) return\n if (\n typeof globals.appsignalApiKey !== 'undefined' ||\n typeof globals.applicationEnvironment !== 'undefined'\n ) {\n const appsignal = new Appsignal({\n key: globals.appsignalApiKey,\n revision: globals.revision\n })\n\n if (reportErrors) {\n appsignal.use(plugin())\n }\n\n globals.appsignal = appsignal\n }\n}\n\n// Log an error to Appsignal only\nexport function internalLog (err) {\n const appsignal = window.provenance.appsignal\n if (appsignal) {\n appsignal.sendError(err)\n }\n}\n\n// Log an error to Appsignal and the JS console\nexport function log (err) {\n // eslint-disable-next-line no-console\n console.log(err.message)\n\n internalLog(err)\n}\n", "import { AnalyticsBrowser } from '@segment/analytics-next'\n\nimport { internalLog, log } from './logger'\n\n// IP addresses are anonymised in Segment calls (identify and track) to avoid any PII being captured\n// See https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/identity/#anonymizing-ip for info.\n\nlet segmentAnalytics\nif (window.provenance && window.provenance.segmentWriteKey) {\n segmentAnalytics = AnalyticsBrowser.load({ writeKey: window.provenance.segmentWriteKey })\n // The Segment user is defined as an account identifier\n console.debug('Init Segment', window.provenance.segmentWriteKey)\n if (window.provenance.segmentUserId) {\n segmentAnalytics.identify(window.provenance.segmentUserId, {}, { context: { ip: '0.0.0.0' } })\n }\n}\n\nconst postEventToGTM = (event, properties) => {\n // console.log('Track event: GTM', event, properties)\n\n properties.eventCategory = properties.eventCategory ? `provenance:${properties.eventCategory}` : event\n\n try {\n // Old-style IFrame tracking\n if (window.xprops && window.xprops.track) {\n window.xprops.track(event, properties)\n }\n\n const eventData = properties\n eventData.event = event\n\n // New-style IFrame tracking\n if (window.xprops && window.xprops.onChildEvent) {\n const event = {\n name: 'analytics_event',\n data: {\n details: eventData\n }\n }\n window.xprops.onChildEvent(event)\n }\n\n // Also push to the data layer of the iFrame, for internal capture\n window.dataLayer = window.dataLayer || []\n window.dataLayer.push(eventData)\n } catch (error) {\n log(error)\n }\n}\n\nconst postEventToSegment = (event, properties) => {\n if (window.provenance.segmentWriteKey) {\n // console.log('Track event: Segment', event, properties)\n segmentAnalytics.track(event, properties, { context: { ip: '0.0.0.0' } })\n }\n}\n\n// For tracking events on platform embedded content\nconst track = (event, properties, options = {}) => {\n const adapter = options.adapter || 'gtm'\n // Prefix all event names with \"provenance:\"\n event = `provenance:${event}`\n const undefinedProvEventProps = []\n for (const property in properties) {\n if (properties[property] === undefined || properties[property] === '') {\n undefinedProvEventProps.push('Property ' + property + ' undefined')\n }\n }\n if (undefinedProvEventProps.length > 0) {\n internalLog(undefinedProvEventProps, event, properties, adapter)\n }\n\n // TODO: add adapters to gtm track calls and segment tracking (plus adapter) to all track calls\n if (adapter === 'segment') {\n postEventToSegment(event, properties)\n } else {\n postEventToGTM(event, properties)\n }\n}\n\nconst trackInApp = (event, properties) => {\n postEventToSegment(event, properties)\n}\n\nexport { track, trackInApp, segmentAnalytics }\n", "import { track } from '../utils/analytics.js'\n\n// get brand from json metadata\n\nconst brandJson = document.querySelector('#structured-data')\nlet brandContext\nif (brandJson) {\n try {\n brandContext = JSON.parse(brandJson.textContent)\n } catch (e) {\n console.log(e)\n }\n}\n\n// filter clicks\n\nconst filtersForm = document.querySelector('#filter')\n\nif (filtersForm) {\n filtersForm.addEventListener('change', (e) => {\n const label = document.querySelector('label[for=' + e.target.id + ']')\n track('directoryFilter_clicked', {\n object: 'directoryFilter',\n action: 'clicked',\n subject_name: label.innerText,\n subject_value: e.target.checked ? 'checked' : 'unchecked',\n subject_type: e.target.name\n })\n })\n}\n\n// brand card clicks\n\nconst cards = document.querySelectorAll('a.Card')\n\nif (cards) {\n cards.forEach((card) => {\n card.addEventListener('click', (e) => {\n // get currently checked filters when brand card is clicked\n const subjectTypes = []\n const subjectValues = []\n const checkedFilters = filtersForm.querySelectorAll('input:checked')\n checkedFilters.forEach((filter) => {\n const label = document.querySelector('label[for=' + filter.id + ']')\n subjectTypes.push(filter.name)\n subjectValues.push(label.innerText)\n })\n track('brandCard_clicked', {\n object: card.dataset.object,\n action: 'clicked',\n brand_name: e.currentTarget.dataset.brandName,\n subject_name: 'filters_checked',\n subject_type: subjectValues.join(', '),\n subject_value: subjectTypes.join(', ')\n })\n })\n })\n}\n\n// retailer link clicks\n\nconst retailerLinks = document.querySelectorAll('#retailer-links a')\n\nif (retailerLinks) {\n retailerLinks.forEach((link) => {\n link.addEventListener('click', (e) => {\n track('retailerLink_clicked', {\n object: 'retailerLink',\n action: 'clicked',\n brand_name: brandContext.name,\n subject_name: e.currentTarget.innerText,\n subject_value: e.currentTarget.href\n })\n })\n })\n}\n\n// shop this brand clicks\n\nconst shopThisBrandCTA = document.querySelector('a[href^=\"#retailer-links\"]')\n\nif (shopThisBrandCTA) {\n shopThisBrandCTA.addEventListener('click', (e) => {\n track('shopBrandLink_clicked', {\n object: 'shopBrandLink',\n action: 'clicked',\n brand_name: brandContext.name,\n subject_value: e.currentTarget.href\n })\n })\n}\n\n// proof point clicks\n\nconst proofPoints = document.querySelectorAll(\"button[data-type='proofpoint']\")\n\nif (proofPoints) {\n proofPoints.forEach((proofPoint) => {\n proofPoint.addEventListener('click', () => {\n track('proofpoint_clicked', {\n object: 'proofpoint',\n action: 'clicked',\n context: 'directoryBrandProfile',\n brand_name: proofPoint.dataset.brandName,\n subject_name: proofPoint.dataset.subjectName,\n subject_value: proofPoint.dataset.name\n })\n })\n })\n}\n\nconst brandSearchBar = document.querySelector('#brand-search')\nlet trackEventFired = false\n\nif (brandSearchBar) {\n brandSearchBar.addEventListener('input', debounce(() => {\n if (!trackEventFired) {\n trackEventFired = true\n const subjectValue = brandSearchBar.value\n const brandNames = []\n const searchResultCards = document.querySelectorAll(\"[class='Card']\")\n searchResultCards.forEach(card => {\n brandNames.push(card.dataset.brandName)\n })\n track('brandSearchBar_query', {\n object: 'brandSearchBar',\n action: 'query',\n subject_name: 'queryString',\n subject_value: subjectValue,\n brand_names: brandNames.join(', ')\n })\n trackEventFired = false // reset the flag to allow the track event to be fired again\n }\n }, 1000)) // delay the tracking by 1 second (1000 milliseconds)\n}\n\n// used to avoid event being fired more than once during 1 second delay\nfunction debounce (callback, delay) {\n let timer\n return function () {\n clearTimeout(timer)\n timer = setTimeout(callback, delay)\n }\n}\n"], "mappings": "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", "names": ["indexes", "isMatch", "r", "a", "v", "d", "b", "__assign", "ValidationError", "InternalEventFactorySettings", "_a", "_b", "CoreEventFactory", "init_create_deferred", "Emitter", "_a", "init_emitter", "init_create_deferred", "init_emitter", "_a", "_b", "attempt", "PriorityQueue", "seen", "attempt", "_a", "init_dist", "CoreLogger", "log", "_b", "_a", "CoreStats", "NullStats", "init_dist", "ContextCancelation", "_a", "_b", "CoreContext", "_a", "_a", "plugin", "ctx", "CoreEventQueue", "plugin", "_a", "_c", "_b", "after", "_a", "init_esm", "url", "options", "Promise", "resolve", "reject", "request", "XMLHttpRequest", "keys", "all", "headers", "response", "ok", "status", "statusText", "responseURL", "text", "responseText", "json", "then", "JSON", "parse", "blob", "Blob", "clone", "entries", "get", "n", "toLowerCase", "has", "i", "open", "method", "onload", "getAllResponseHeaders", "replace", "m", "key", "value", "push", "onerror", "withCredentials", "credentials", "setRequestHeader", "send", "body", "fetch", "global", "_a", "RemoteMetrics", "_b", "fetch", "init_esm", "Stats", "init_esm", "init_stats", "Context", "init_priority_queue", "init_esm", "_a", "attempt", "lock", "init_priority_queue", "init_context", "PersistedPriorityQueue", "init_callback", "init_esm", "form", "_a", "_b", "init_callback", "normalize", "isFunction", "require_lib", "isNumber", "require_lib", "Facade", "transform", "Alias", "Group", "Identify", "now", "Track", "Page", "Screen", "__assign", "evt", "_b", "_a", "init_context", "_a", "_a", "_b", "init_esm", "_a", "_a", "options", "_b", "_b", "_a", "_a", "_b", "_a", "_b", "t", "r", "e", "n", "o", "f", "s", "i", "u", "p", "l", "a", "c", "_a", "_b", "_a", "_b", "_a", "version", "_a", "flushQueue", "_a", "_b", "version", "import_facade", "init_context", "init_esm", "init_priority_queue", "LegacyDestination", "e", "t", "a", "n", "i", "r", "o", "_a", "_a", "_b", "track", "_a", "_b", "fuzzysort", "init_esm", "_a", "_b", "init_context", "init_esm", "init_dist", "init_esm", "_a", "_a", "init_esm", "EventFactory", "_a", "plugin", "init_esm", "EventQueue", "init_dist", "_a", "converter", "levels", "_a", "CookieStorage", "_a", "LocalStorage", "_a", "MemoryStorage", "_a", "UniversalStorage", "_a", "cookieOptions", "User", "cookieOptions", "_a", "_b", "Group", "init_priority_queue", "isThenable", "_a", "_b", "PreInitMethodCall", "PreInitMethodCallBuffer", "_a", "isThenable", "_a", "AnalyticsBuffered", "global", "AnalyticsInstanceSettings", "_a", "Analytics", "cookieOptions", "_a", "_b", "plugin", "sourceMiddlewarePlugin", "queryString", "NullAnalytics", "init_context", "_a", "_b", "ampId", "EnvironmentEnrichmentPlugin", "init_context", "ActionDestination", "_a", "_b", "plugin", "_a", "_b", "init_priority_queue", "batch", "_a", "_b", "fetch", "scheduleFlush", "dispatch", "dispatch", "fetch", "_b", "_a", "init_context", "init_esm", "_a", "scheduleFlush", "_b", "_a", "segmentio", "_a", "init_stats", "fetch", "_b", "_a", "tsubMiddleware", "schemaFilter", "remoteMiddlewares", "AnalyticsBrowser", "init_context", "extendStatics", "d", "b", "__extends", "__assign", "__awaiter", "__generator", "__spreadArray", "__read", "__spreadArray", "_i", "__spreadArray", "__read", "_a", "_b", "Serializable", "Environment", "XDomainTransport", "_a", "XHRTransport", "FetchTransport", "_a", "NodeTransport", "PushApi", "_a", "__extends", "Span", "__assign", "_b", "Queue", "_a", "__spreadArray", "Dispatcher", "api", "__assign", "__awaiter", "_a", "_b", "Appsignal", "_a", "__spreadArray", "plugin", "_b", "__assign", "event", "link", "brandNames"] }