@amplitude/plugin-network-capture-browser 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"track-network-event.d.ts","sourceRoot":"","sources":["../../src/track-network-event.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EAEnB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAoB,MAAM,0BAA0B,CAAC;AA6ClF,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,GAAE,sBAA2B,WA2C9G;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC5B,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,0BAA0B,CAAC,CAAC,EAAE,MAAM,CAAC;IACtC,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACvC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,6BAA6B,CAAC,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC;IAClC,CAAC,+BAA+B,CAAC,CAAC,EAAE,MAAM,CAAC;IAC3C,CAAC,gCAAgC,CAAC,CAAC,EAAE,MAAM,CAAC;CAC7C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,sBAAsB,EACtB,SAAS,GACV,EAAE;IACD,cAAc,EAAE,oBAAoB,CAAC;IACrC,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,aAAa,CAAC;CAC1B,+BAwCA"}
1
+ {"version":3,"file":"track-network-event.d.ts","sourceRoot":"","sources":["../../src/track-network-event.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EAEnB,sBAAsB,EAEvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAoB,MAAM,0BAA0B,CAAC;AAgElF,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,GAAE,sBAA2B,WAkD9G;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC5B,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,0BAA0B,CAAC,CAAC,EAAE,MAAM,CAAC;IACtC,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACvC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,6BAA6B,CAAC,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC;IAClC,CAAC,+BAA+B,CAAC,CAAC,EAAE,MAAM,CAAC;IAC3C,CAAC,gCAAgC,CAAC,CAAC,EAAE,MAAM,CAAC;CAC7C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,sBAAsB,EACtB,SAAS,GACV,EAAE;IACD,cAAc,EAAE,oBAAoB,CAAC;IACrC,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,aAAa,CAAC;CAC1B,+BAwCA"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.trackNetworkEvents = exports.shouldTrackNetworkEvent = void 0;
4
4
  var tslib_1 = require("tslib");
5
+ var analytics_core_1 = require("@amplitude/analytics-core");
5
6
  var rxjs_1 = require("rxjs");
6
7
  var constants_1 = require("./constants");
7
8
  var DEFAULT_STATUS_CODE_RANGE = '500-599';
@@ -51,11 +52,38 @@ function isCaptureRuleMatch(rule, hostname, status) {
51
52
  }
52
53
  return true;
53
54
  }
55
+ function parseUrl(url) {
56
+ var _a;
57
+ try {
58
+ /* istanbul ignore next */
59
+ var currentHref = (_a = (0, analytics_core_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.location.href;
60
+ var urlObj = new URL(url, currentHref);
61
+ var query = urlObj.searchParams.toString();
62
+ var fragment = urlObj.hash.replace('#', '');
63
+ var href = urlObj.href;
64
+ var host = urlObj.host;
65
+ urlObj.hash = '';
66
+ urlObj.search = '';
67
+ var hrefWithoutQueryOrHash = urlObj.href;
68
+ return { query: query, fragment: fragment, href: href, hrefWithoutQueryOrHash: hrefWithoutQueryOrHash, host: host };
69
+ }
70
+ catch (e) {
71
+ /* istanbul ignore next */
72
+ return;
73
+ }
74
+ }
54
75
  function shouldTrackNetworkEvent(networkEvent, options) {
55
76
  var _a;
56
77
  if (options === void 0) { options = {}; }
57
- var url = new URL(networkEvent.url);
58
- var host = url.hostname;
78
+ var urlObj = parseUrl(networkEvent.url);
79
+ /* istanbul ignore if */
80
+ if (!urlObj) {
81
+ // if the URL failed to parse, do not track the event
82
+ // this is a probably impossible case that would only happen if the URL is malformed
83
+ /* istanbul ignore next */
84
+ return false;
85
+ }
86
+ var host = urlObj.host;
59
87
  // false if is amplitude request and not configured to track amplitude requests
60
88
  if (options.ignoreAmplitudeRequests !== false &&
61
89
  (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))) {
@@ -99,20 +127,19 @@ function trackNetworkEvents(_a) {
99
127
  var _a;
100
128
  var request = networkEvent.event;
101
129
  // convert to NetworkAnalyticsEvent
102
- var url, urlQuery, urlFragment;
103
- try {
104
- url = new URL(request.url);
105
- urlQuery = url.searchParams.toString();
106
- urlFragment = url.hash.replace('#', '');
107
- }
108
- catch (e) {
109
- // if the URL failed to parse, just use the original URL
110
- // and do not include the query or fragment
130
+ var urlObj = parseUrl(request.url);
131
+ /* istanbul ignore if */
132
+ if (!urlObj) {
133
+ // if the URL failed to parse, do not track the event
134
+ // this is a very unlikely case, because URL() shouldn't throw an exception
135
+ // when the URL is a valid URL
136
+ /* istanbul ignore next */
137
+ return;
111
138
  }
112
139
  var networkAnalyticsEvent = (_a = {},
113
- _a['[Amplitude] URL'] = request.url,
114
- _a['[Amplitude] URL Query'] = urlQuery,
115
- _a['[Amplitude] URL Fragment'] = urlFragment,
140
+ _a['[Amplitude] URL'] = urlObj.hrefWithoutQueryOrHash,
141
+ _a['[Amplitude] URL Query'] = urlObj.query,
142
+ _a['[Amplitude] URL Fragment'] = urlObj.fragment,
116
143
  _a['[Amplitude] Request Method'] = request.method,
117
144
  _a['[Amplitude] Status Code'] = request.status,
118
145
  _a['[Amplitude] Start Time'] = request.startTime,
@@ -1 +1 @@
1
- {"version":3,"file":"track-network-event.js","sourceRoot":"","sources":["../../src/track-network-event.ts"],"names":[],"mappings":";;;;AAMA,6BAA8B;AAE9B,yCAA8D;AAE9D,IAAM,yBAAyB,GAAG,SAAS,CAAC;AAE5C,SAAS,aAAa,CAAC,GAAW,EAAE,OAAe;IACjD,mDAAmD;IACnD,IAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAC1E,oBAAoB;IACpB,IAAM,YAAY,GAAG,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;IACrE,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB,EAAE,KAAa;;IAC5D,IAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;QAChC,KAAgB,IAAA,WAAA,iBAAA,MAAM,CAAA,8BAAA,kDAAE;YAAnB,IAAM,CAAC,mBAAA;YACJ,IAAA,KAAA,eAAe,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAA,EAAtC,KAAK,QAAA,EAAE,GAAG,QAA4B,CAAC;YAC9C,IAAI,UAAU,KAAK,KAAK,IAAI,GAAG,KAAK,SAAS,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;YACD,IAAI,UAAU,IAAI,KAAK,IAAI,UAAU,IAAI,GAAG,EAAE;gBAC5C,OAAO,IAAI,CAAC;aACb;SACF;;;;;;;;;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAwB,EAAE,QAAgB,EAAE,MAAe;IACrF,4CAA4C;IAC5C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,IAAY,IAAK,OAAA,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,EAA7B,CAA6B,CAAC,EAAE;QACnF,OAAO;KACR;IAED,mDAAmD;IACnD,IAAI,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE;QAC1B,IAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,yBAAyB,CAAC;QAC1E,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE;YACjD,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,uBAAuB,CAAC,YAAiC,EAAE,OAAoC;;IAApC,wBAAA,EAAA,YAAoC;IAC7G,IAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACtC,IAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAE1B,+EAA+E;IAC/E,IACE,OAAO,CAAC,uBAAuB,KAAK,KAAK;QACzC,CAAC,aAAa,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,EAChF;QACA,OAAO,KAAK,CAAC;KACd;IAED,0CAA0C;IAC1C,IAAI,MAAA,OAAO,CAAC,WAAW,0CAAE,IAAI,CAAC,UAAC,UAAkB,IAAK,OAAA,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,EAA/B,CAA+B,CAAC,EAAE;QACtF,OAAO,KAAK,CAAC;KACd;IAED,wEAAwE;IACxE,IACE,CAAC,OAAO,CAAC,YAAY;QACrB,YAAY,CAAC,MAAM,KAAK,SAAS;QACjC,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,EAAE,yBAAyB,CAAC,EACpE;QACA,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,CAAC,YAAY,EAAE;QACxB,iDAAiD;QACjD,2CAA2C;QAC3C,IAAI,SAA4B,CAAC;QACjC,yCAAI,OAAO,CAAC,YAAY,UAAE,OAAO,EAAE,CAAC,IAAI,CAAC,UAAC,IAAI;YAC5C,SAAO,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YAC9D,OAAO,SAAO,KAAK,SAAS,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,sDAAsD;QACtD,8BAA8B;QAC9B,IAAI,CAAC,SAAO,EAAE;YACZ,OAAO,KAAK,CAAC;SACd;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA3CD,0DA2CC;AAeD,SAAgB,kBAAkB,CAAC,EAQlC;QAPC,cAAc,oBAAA,EACd,sBAAsB,4BAAA,EACtB,SAAS,eAAA;IAMD,IAAA,iBAAiB,GAAK,cAAc,kBAAnB,CAAoB;IAE7C,IAAM,yBAAyB,GAAG,iBAAiB,CAAC,IAAI,CACtD,IAAA,aAAM,EAAC,UAAC,KAA4C;QAClD,oDAAoD;QACpD,OAAO,uBAAuB,CAAC,KAAK,CAAC,KAA4B,EAAE,sBAAsB,CAAC,CAAC;IAC7F,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,yBAAyB,CAAC,SAAS,CAAC,UAAC,YAAY;;QACtD,IAAM,OAAO,GAAG,YAAY,CAAC,KAA4B,CAAC;QAE1D,mCAAmC;QACnC,IAAI,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC;QAC/B,IAAI;YACF,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YACvC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACzC;QAAC,OAAO,CAAC,EAAE;YACV,wDAAwD;YACxD,2CAA2C;SAC5C;QAED,IAAM,qBAAqB;YACzB,GAAC,iBAAiB,IAAG,OAAO,CAAC,GAAG;YAChC,GAAC,uBAAuB,IAAG,QAAQ;YACnC,GAAC,0BAA0B,IAAG,WAAW;YACzC,GAAC,4BAA4B,IAAG,OAAO,CAAC,MAAM;YAC9C,GAAC,yBAAyB,IAAG,OAAO,CAAC,MAAM;YAC3C,GAAC,wBAAwB,IAAG,OAAO,CAAC,SAAS;YAC7C,GAAC,6BAA6B,IAAG,OAAO,CAAC,OAAO;YAChD,GAAC,sBAAsB,IAAG,OAAO,CAAC,QAAQ;YAC1C,GAAC,+BAA+B,IAAG,OAAO,CAAC,eAAe;YAC1D,GAAC,gCAAgC,IAAG,OAAO,CAAC,gBAAgB;eAC7D,CAAC;QAEF,0BAA0B;QAC1B,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,2CAA+B,EAAE,qBAAqB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC;AAhDD,gDAgDC","sourcesContent":["import {\n BrowserClient,\n NetworkRequestEvent,\n NetworkCaptureRule,\n NetworkTrackingOptions,\n} from '@amplitude/analytics-core';\nimport { filter } from 'rxjs';\nimport { AllWindowObservables, TimestampedEvent } from './network-capture-plugin';\nimport { AMPLITUDE_NETWORK_REQUEST_EVENT } from './constants';\n\nconst DEFAULT_STATUS_CODE_RANGE = '500-599';\n\nfunction wildcardMatch(str: string, pattern: string) {\n // Escape all regex special characters except for *\n const escapedPattern = pattern.replace(/[-[\\]{}()+?.,\\\\^$|#\\s]/g, '\\\\$&');\n // Replace * with .*\n const regexPattern = '^' + escapedPattern.replace(/\\*/g, '.*') + '$';\n const regex = new RegExp(regexPattern);\n return regex.test(str);\n}\n\nfunction isStatusCodeInRange(statusCode: number, range: string) {\n const ranges = range.split(',');\n for (const r of ranges) {\n const [start, end] = r.split('-').map(Number);\n if (statusCode === start && end === undefined) {\n return true;\n }\n if (statusCode >= start && statusCode <= end) {\n return true;\n }\n }\n return false;\n}\n\nfunction isCaptureRuleMatch(rule: NetworkCaptureRule, hostname: string, status?: number) {\n // check if the host is in the allowed hosts\n if (rule.hosts && !rule.hosts.find((host: string) => wildcardMatch(hostname, host))) {\n return;\n }\n\n // check if the status code is in the allowed range\n if (status || status === 0) {\n const statusCodeRange = rule.statusCodeRange || DEFAULT_STATUS_CODE_RANGE;\n if (!isStatusCodeInRange(status, statusCodeRange)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function shouldTrackNetworkEvent(networkEvent: NetworkRequestEvent, options: NetworkTrackingOptions = {}) {\n const url = new URL(networkEvent.url);\n const host = url.hostname;\n\n // false if is amplitude request and not configured to track amplitude requests\n if (\n options.ignoreAmplitudeRequests !== false &&\n (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))\n ) {\n return false;\n }\n\n // false if the host is in the ignore list\n if (options.ignoreHosts?.find((ignoreHost: string) => wildcardMatch(host, ignoreHost))) {\n return false;\n }\n\n // false if the status code is not 500-599 and there are no captureRules\n if (\n !options.captureRules &&\n networkEvent.status !== undefined &&\n !isStatusCodeInRange(networkEvent.status, DEFAULT_STATUS_CODE_RANGE)\n ) {\n return false;\n }\n\n if (options.captureRules) {\n // find the first capture rule, in reverse-order,\n // that is a match (true) or a miss (false)\n let isMatch: boolean | undefined;\n [...options.captureRules].reverse().find((rule) => {\n isMatch = isCaptureRuleMatch(rule, host, networkEvent.status);\n return isMatch !== undefined;\n });\n\n // if we found a miss (false) or no match (undefined),\n // then do not track the event\n if (!isMatch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type NetworkAnalyticsEvent = {\n ['[Amplitude] URL']: string;\n ['[Amplitude] URL Query']?: string;\n ['[Amplitude] URL Fragment']?: string;\n ['[Amplitude] Request Method']: string;\n ['[Amplitude] Status Code']?: number;\n ['[Amplitude] Start Time']?: number; // unix timestamp\n ['[Amplitude] Completion Time']?: number; // unix timestamp\n ['[Amplitude] Duration']?: number; // completionTime - startTime (millis)\n ['[Amplitude] Request Body Size']?: number;\n ['[Amplitude] Response Body Size']?: number;\n};\n\nexport function trackNetworkEvents({\n allObservables,\n networkTrackingOptions,\n amplitude,\n}: {\n allObservables: AllWindowObservables;\n networkTrackingOptions: NetworkTrackingOptions;\n amplitude: BrowserClient;\n}) {\n const { networkObservable } = allObservables;\n\n const filteredNetworkObservable = networkObservable.pipe(\n filter((event: TimestampedEvent<NetworkRequestEvent>) => {\n // Only track network events that should be tracked,\n return shouldTrackNetworkEvent(event.event as NetworkRequestEvent, networkTrackingOptions);\n }),\n );\n\n return filteredNetworkObservable.subscribe((networkEvent) => {\n const request = networkEvent.event as NetworkRequestEvent;\n\n // convert to NetworkAnalyticsEvent\n let url, urlQuery, urlFragment;\n try {\n url = new URL(request.url);\n urlQuery = url.searchParams.toString();\n urlFragment = url.hash.replace('#', '');\n } catch (e) {\n // if the URL failed to parse, just use the original URL\n // and do not include the query or fragment\n }\n\n const networkAnalyticsEvent: NetworkAnalyticsEvent = {\n ['[Amplitude] URL']: request.url,\n ['[Amplitude] URL Query']: urlQuery,\n ['[Amplitude] URL Fragment']: urlFragment,\n ['[Amplitude] Request Method']: request.method,\n ['[Amplitude] Status Code']: request.status,\n ['[Amplitude] Start Time']: request.startTime,\n ['[Amplitude] Completion Time']: request.endTime,\n ['[Amplitude] Duration']: request.duration,\n ['[Amplitude] Request Body Size']: request.requestBodySize,\n ['[Amplitude] Response Body Size']: request.responseBodySize,\n };\n\n /* istanbul ignore next */\n amplitude?.track(AMPLITUDE_NETWORK_REQUEST_EVENT, networkAnalyticsEvent);\n });\n}\n"]}
1
+ {"version":3,"file":"track-network-event.js","sourceRoot":"","sources":["../../src/track-network-event.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BrowserClient,\n NetworkRequestEvent,\n NetworkCaptureRule,\n NetworkTrackingOptions,\n getGlobalScope,\n} from '@amplitude/analytics-core';\nimport { filter } from 'rxjs';\nimport { AllWindowObservables, TimestampedEvent } from './network-capture-plugin';\nimport { AMPLITUDE_NETWORK_REQUEST_EVENT } from './constants';\n\nconst DEFAULT_STATUS_CODE_RANGE = '500-599';\n\nfunction wildcardMatch(str: string, pattern: string) {\n // Escape all regex special characters except for *\n const escapedPattern = pattern.replace(/[-[\\]{}()+?.,\\\\^$|#\\s]/g, '\\\\$&');\n // Replace * with .*\n const regexPattern = '^' + escapedPattern.replace(/\\*/g, '.*') + '$';\n const regex = new RegExp(regexPattern);\n return regex.test(str);\n}\n\nfunction isStatusCodeInRange(statusCode: number, range: string) {\n const ranges = range.split(',');\n for (const r of ranges) {\n const [start, end] = r.split('-').map(Number);\n if (statusCode === start && end === undefined) {\n return true;\n }\n if (statusCode >= start && statusCode <= end) {\n return true;\n }\n }\n return false;\n}\n\nfunction isCaptureRuleMatch(rule: NetworkCaptureRule, hostname: string, status?: number) {\n // check if the host is in the allowed hosts\n if (rule.hosts && !rule.hosts.find((host: string) => wildcardMatch(hostname, host))) {\n return;\n }\n\n // check if the status code is in the allowed range\n if (status || status === 0) {\n const statusCodeRange = rule.statusCodeRange || DEFAULT_STATUS_CODE_RANGE;\n if (!isStatusCodeInRange(status, statusCodeRange)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction parseUrl(url: string) {\n try {\n /* istanbul ignore next */\n const currentHref = getGlobalScope()?.location.href;\n const urlObj = new URL(url, currentHref);\n const query = urlObj.searchParams.toString();\n const fragment = urlObj.hash.replace('#', '');\n const href = urlObj.href;\n const host = urlObj.host;\n urlObj.hash = '';\n urlObj.search = '';\n const hrefWithoutQueryOrHash = urlObj.href;\n return { query, fragment, href, hrefWithoutQueryOrHash, host };\n } catch (e) {\n /* istanbul ignore next */\n return;\n }\n}\n\nexport function shouldTrackNetworkEvent(networkEvent: NetworkRequestEvent, options: NetworkTrackingOptions = {}) {\n const urlObj = parseUrl(networkEvent.url);\n /* istanbul ignore if */\n if (!urlObj) {\n // if the URL failed to parse, do not track the event\n // this is a probably impossible case that would only happen if the URL is malformed\n /* istanbul ignore next */\n return false;\n }\n const { host } = urlObj;\n\n // false if is amplitude request and not configured to track amplitude requests\n if (\n options.ignoreAmplitudeRequests !== false &&\n (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))\n ) {\n return false;\n }\n\n // false if the host is in the ignore list\n if (options.ignoreHosts?.find((ignoreHost: string) => wildcardMatch(host, ignoreHost))) {\n return false;\n }\n\n // false if the status code is not 500-599 and there are no captureRules\n if (\n !options.captureRules &&\n networkEvent.status !== undefined &&\n !isStatusCodeInRange(networkEvent.status, DEFAULT_STATUS_CODE_RANGE)\n ) {\n return false;\n }\n\n if (options.captureRules) {\n // find the first capture rule, in reverse-order,\n // that is a match (true) or a miss (false)\n let isMatch: boolean | undefined;\n [...options.captureRules].reverse().find((rule) => {\n isMatch = isCaptureRuleMatch(rule, host, networkEvent.status);\n return isMatch !== undefined;\n });\n\n // if we found a miss (false) or no match (undefined),\n // then do not track the event\n if (!isMatch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type NetworkAnalyticsEvent = {\n ['[Amplitude] URL']: string;\n ['[Amplitude] URL Query']?: string;\n ['[Amplitude] URL Fragment']?: string;\n ['[Amplitude] Request Method']: string;\n ['[Amplitude] Status Code']?: number;\n ['[Amplitude] Start Time']?: number; // unix timestamp\n ['[Amplitude] Completion Time']?: number; // unix timestamp\n ['[Amplitude] Duration']?: number; // completionTime - startTime (millis)\n ['[Amplitude] Request Body Size']?: number;\n ['[Amplitude] Response Body Size']?: number;\n};\n\nexport function trackNetworkEvents({\n allObservables,\n networkTrackingOptions,\n amplitude,\n}: {\n allObservables: AllWindowObservables;\n networkTrackingOptions: NetworkTrackingOptions;\n amplitude: BrowserClient;\n}) {\n const { networkObservable } = allObservables;\n\n const filteredNetworkObservable = networkObservable.pipe(\n filter((event: TimestampedEvent<NetworkRequestEvent>) => {\n // Only track network events that should be tracked,\n return shouldTrackNetworkEvent(event.event as NetworkRequestEvent, networkTrackingOptions);\n }),\n );\n\n return filteredNetworkObservable.subscribe((networkEvent) => {\n const request = networkEvent.event as NetworkRequestEvent;\n\n // convert to NetworkAnalyticsEvent\n const urlObj = parseUrl(request.url);\n /* istanbul ignore if */\n if (!urlObj) {\n // if the URL failed to parse, do not track the event\n // this is a very unlikely case, because URL() shouldn't throw an exception\n // when the URL is a valid URL\n /* istanbul ignore next */\n return;\n }\n\n const networkAnalyticsEvent: NetworkAnalyticsEvent = {\n ['[Amplitude] URL']: urlObj.hrefWithoutQueryOrHash,\n ['[Amplitude] URL Query']: urlObj.query,\n ['[Amplitude] URL Fragment']: urlObj.fragment,\n ['[Amplitude] Request Method']: request.method,\n ['[Amplitude] Status Code']: request.status,\n ['[Amplitude] Start Time']: request.startTime,\n ['[Amplitude] Completion Time']: request.endTime,\n ['[Amplitude] Duration']: request.duration,\n ['[Amplitude] Request Body Size']: request.requestBodySize,\n ['[Amplitude] Response Body Size']: request.responseBodySize,\n };\n\n /* istanbul ignore next */\n amplitude?.track(AMPLITUDE_NETWORK_REQUEST_EVENT, networkAnalyticsEvent);\n });\n}\n"]}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.1.3";
1
+ export declare const VERSION = "1.1.4";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '1.1.3';
4
+ exports.VERSION = '1.1.4';
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["export const VERSION = '1.1.3';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["export const VERSION = '1.1.4';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"track-network-event.d.ts","sourceRoot":"","sources":["../../src/track-network-event.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EAEnB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAoB,MAAM,0BAA0B,CAAC;AA6ClF,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,GAAE,sBAA2B,WA2C9G;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC5B,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,0BAA0B,CAAC,CAAC,EAAE,MAAM,CAAC;IACtC,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACvC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,6BAA6B,CAAC,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC;IAClC,CAAC,+BAA+B,CAAC,CAAC,EAAE,MAAM,CAAC;IAC3C,CAAC,gCAAgC,CAAC,CAAC,EAAE,MAAM,CAAC;CAC7C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,sBAAsB,EACtB,SAAS,GACV,EAAE;IACD,cAAc,EAAE,oBAAoB,CAAC;IACrC,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,aAAa,CAAC;CAC1B,+BAwCA"}
1
+ {"version":3,"file":"track-network-event.d.ts","sourceRoot":"","sources":["../../src/track-network-event.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EAEnB,sBAAsB,EAEvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAoB,MAAM,0BAA0B,CAAC;AAgElF,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,GAAE,sBAA2B,WAkD9G;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC5B,CAAC,uBAAuB,CAAC,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,0BAA0B,CAAC,CAAC,EAAE,MAAM,CAAC;IACtC,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACvC,CAAC,yBAAyB,CAAC,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,6BAA6B,CAAC,CAAC,EAAE,MAAM,CAAC;IACzC,CAAC,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC;IAClC,CAAC,+BAA+B,CAAC,CAAC,EAAE,MAAM,CAAC;IAC3C,CAAC,gCAAgC,CAAC,CAAC,EAAE,MAAM,CAAC;CAC7C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,sBAAsB,EACtB,SAAS,GACV,EAAE;IACD,cAAc,EAAE,oBAAoB,CAAC;IACrC,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE,aAAa,CAAC;CAC1B,+BAwCA"}
@@ -1,4 +1,5 @@
1
1
  import { __read, __spreadArray, __values } from "tslib";
2
+ import { getGlobalScope, } from '@amplitude/analytics-core';
2
3
  import { filter } from 'rxjs';
3
4
  import { AMPLITUDE_NETWORK_REQUEST_EVENT } from './constants';
4
5
  var DEFAULT_STATUS_CODE_RANGE = '500-599';
@@ -48,11 +49,38 @@ function isCaptureRuleMatch(rule, hostname, status) {
48
49
  }
49
50
  return true;
50
51
  }
52
+ function parseUrl(url) {
53
+ var _a;
54
+ try {
55
+ /* istanbul ignore next */
56
+ var currentHref = (_a = getGlobalScope()) === null || _a === void 0 ? void 0 : _a.location.href;
57
+ var urlObj = new URL(url, currentHref);
58
+ var query = urlObj.searchParams.toString();
59
+ var fragment = urlObj.hash.replace('#', '');
60
+ var href = urlObj.href;
61
+ var host = urlObj.host;
62
+ urlObj.hash = '';
63
+ urlObj.search = '';
64
+ var hrefWithoutQueryOrHash = urlObj.href;
65
+ return { query: query, fragment: fragment, href: href, hrefWithoutQueryOrHash: hrefWithoutQueryOrHash, host: host };
66
+ }
67
+ catch (e) {
68
+ /* istanbul ignore next */
69
+ return;
70
+ }
71
+ }
51
72
  export function shouldTrackNetworkEvent(networkEvent, options) {
52
73
  var _a;
53
74
  if (options === void 0) { options = {}; }
54
- var url = new URL(networkEvent.url);
55
- var host = url.hostname;
75
+ var urlObj = parseUrl(networkEvent.url);
76
+ /* istanbul ignore if */
77
+ if (!urlObj) {
78
+ // if the URL failed to parse, do not track the event
79
+ // this is a probably impossible case that would only happen if the URL is malformed
80
+ /* istanbul ignore next */
81
+ return false;
82
+ }
83
+ var host = urlObj.host;
56
84
  // false if is amplitude request and not configured to track amplitude requests
57
85
  if (options.ignoreAmplitudeRequests !== false &&
58
86
  (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))) {
@@ -95,20 +123,19 @@ export function trackNetworkEvents(_a) {
95
123
  var _a;
96
124
  var request = networkEvent.event;
97
125
  // convert to NetworkAnalyticsEvent
98
- var url, urlQuery, urlFragment;
99
- try {
100
- url = new URL(request.url);
101
- urlQuery = url.searchParams.toString();
102
- urlFragment = url.hash.replace('#', '');
103
- }
104
- catch (e) {
105
- // if the URL failed to parse, just use the original URL
106
- // and do not include the query or fragment
126
+ var urlObj = parseUrl(request.url);
127
+ /* istanbul ignore if */
128
+ if (!urlObj) {
129
+ // if the URL failed to parse, do not track the event
130
+ // this is a very unlikely case, because URL() shouldn't throw an exception
131
+ // when the URL is a valid URL
132
+ /* istanbul ignore next */
133
+ return;
107
134
  }
108
135
  var networkAnalyticsEvent = (_a = {},
109
- _a['[Amplitude] URL'] = request.url,
110
- _a['[Amplitude] URL Query'] = urlQuery,
111
- _a['[Amplitude] URL Fragment'] = urlFragment,
136
+ _a['[Amplitude] URL'] = urlObj.hrefWithoutQueryOrHash,
137
+ _a['[Amplitude] URL Query'] = urlObj.query,
138
+ _a['[Amplitude] URL Fragment'] = urlObj.fragment,
112
139
  _a['[Amplitude] Request Method'] = request.method,
113
140
  _a['[Amplitude] Status Code'] = request.status,
114
141
  _a['[Amplitude] Start Time'] = request.startTime,
@@ -1 +1 @@
1
- {"version":3,"file":"track-network-event.js","sourceRoot":"","sources":["../../src/track-network-event.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BrowserClient,\n NetworkRequestEvent,\n NetworkCaptureRule,\n NetworkTrackingOptions,\n} from '@amplitude/analytics-core';\nimport { filter } from 'rxjs';\nimport { AllWindowObservables, TimestampedEvent } from './network-capture-plugin';\nimport { AMPLITUDE_NETWORK_REQUEST_EVENT } from './constants';\n\nconst DEFAULT_STATUS_CODE_RANGE = '500-599';\n\nfunction wildcardMatch(str: string, pattern: string) {\n // Escape all regex special characters except for *\n const escapedPattern = pattern.replace(/[-[\\]{}()+?.,\\\\^$|#\\s]/g, '\\\\$&');\n // Replace * with .*\n const regexPattern = '^' + escapedPattern.replace(/\\*/g, '.*') + '$';\n const regex = new RegExp(regexPattern);\n return regex.test(str);\n}\n\nfunction isStatusCodeInRange(statusCode: number, range: string) {\n const ranges = range.split(',');\n for (const r of ranges) {\n const [start, end] = r.split('-').map(Number);\n if (statusCode === start && end === undefined) {\n return true;\n }\n if (statusCode >= start && statusCode <= end) {\n return true;\n }\n }\n return false;\n}\n\nfunction isCaptureRuleMatch(rule: NetworkCaptureRule, hostname: string, status?: number) {\n // check if the host is in the allowed hosts\n if (rule.hosts && !rule.hosts.find((host: string) => wildcardMatch(hostname, host))) {\n return;\n }\n\n // check if the status code is in the allowed range\n if (status || status === 0) {\n const statusCodeRange = rule.statusCodeRange || DEFAULT_STATUS_CODE_RANGE;\n if (!isStatusCodeInRange(status, statusCodeRange)) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function shouldTrackNetworkEvent(networkEvent: NetworkRequestEvent, options: NetworkTrackingOptions = {}) {\n const url = new URL(networkEvent.url);\n const host = url.hostname;\n\n // false if is amplitude request and not configured to track amplitude requests\n if (\n options.ignoreAmplitudeRequests !== false &&\n (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))\n ) {\n return false;\n }\n\n // false if the host is in the ignore list\n if (options.ignoreHosts?.find((ignoreHost: string) => wildcardMatch(host, ignoreHost))) {\n return false;\n }\n\n // false if the status code is not 500-599 and there are no captureRules\n if (\n !options.captureRules &&\n networkEvent.status !== undefined &&\n !isStatusCodeInRange(networkEvent.status, DEFAULT_STATUS_CODE_RANGE)\n ) {\n return false;\n }\n\n if (options.captureRules) {\n // find the first capture rule, in reverse-order,\n // that is a match (true) or a miss (false)\n let isMatch: boolean | undefined;\n [...options.captureRules].reverse().find((rule) => {\n isMatch = isCaptureRuleMatch(rule, host, networkEvent.status);\n return isMatch !== undefined;\n });\n\n // if we found a miss (false) or no match (undefined),\n // then do not track the event\n if (!isMatch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type NetworkAnalyticsEvent = {\n ['[Amplitude] URL']: string;\n ['[Amplitude] URL Query']?: string;\n ['[Amplitude] URL Fragment']?: string;\n ['[Amplitude] Request Method']: string;\n ['[Amplitude] Status Code']?: number;\n ['[Amplitude] Start Time']?: number; // unix timestamp\n ['[Amplitude] Completion Time']?: number; // unix timestamp\n ['[Amplitude] Duration']?: number; // completionTime - startTime (millis)\n ['[Amplitude] Request Body Size']?: number;\n ['[Amplitude] Response Body Size']?: number;\n};\n\nexport function trackNetworkEvents({\n allObservables,\n networkTrackingOptions,\n amplitude,\n}: {\n allObservables: AllWindowObservables;\n networkTrackingOptions: NetworkTrackingOptions;\n amplitude: BrowserClient;\n}) {\n const { networkObservable } = allObservables;\n\n const filteredNetworkObservable = networkObservable.pipe(\n filter((event: TimestampedEvent<NetworkRequestEvent>) => {\n // Only track network events that should be tracked,\n return shouldTrackNetworkEvent(event.event as NetworkRequestEvent, networkTrackingOptions);\n }),\n );\n\n return filteredNetworkObservable.subscribe((networkEvent) => {\n const request = networkEvent.event as NetworkRequestEvent;\n\n // convert to NetworkAnalyticsEvent\n let url, urlQuery, urlFragment;\n try {\n url = new URL(request.url);\n urlQuery = url.searchParams.toString();\n urlFragment = url.hash.replace('#', '');\n } catch (e) {\n // if the URL failed to parse, just use the original URL\n // and do not include the query or fragment\n }\n\n const networkAnalyticsEvent: NetworkAnalyticsEvent = {\n ['[Amplitude] URL']: request.url,\n ['[Amplitude] URL Query']: urlQuery,\n ['[Amplitude] URL Fragment']: urlFragment,\n ['[Amplitude] Request Method']: request.method,\n ['[Amplitude] Status Code']: request.status,\n ['[Amplitude] Start Time']: request.startTime,\n ['[Amplitude] Completion Time']: request.endTime,\n ['[Amplitude] Duration']: request.duration,\n ['[Amplitude] Request Body Size']: request.requestBodySize,\n ['[Amplitude] Response Body Size']: request.responseBodySize,\n };\n\n /* istanbul ignore next */\n amplitude?.track(AMPLITUDE_NETWORK_REQUEST_EVENT, networkAnalyticsEvent);\n });\n}\n"]}
1
+ {"version":3,"file":"track-network-event.js","sourceRoot":"","sources":["../../src/track-network-event.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BrowserClient,\n NetworkRequestEvent,\n NetworkCaptureRule,\n NetworkTrackingOptions,\n getGlobalScope,\n} from '@amplitude/analytics-core';\nimport { filter } from 'rxjs';\nimport { AllWindowObservables, TimestampedEvent } from './network-capture-plugin';\nimport { AMPLITUDE_NETWORK_REQUEST_EVENT } from './constants';\n\nconst DEFAULT_STATUS_CODE_RANGE = '500-599';\n\nfunction wildcardMatch(str: string, pattern: string) {\n // Escape all regex special characters except for *\n const escapedPattern = pattern.replace(/[-[\\]{}()+?.,\\\\^$|#\\s]/g, '\\\\$&');\n // Replace * with .*\n const regexPattern = '^' + escapedPattern.replace(/\\*/g, '.*') + '$';\n const regex = new RegExp(regexPattern);\n return regex.test(str);\n}\n\nfunction isStatusCodeInRange(statusCode: number, range: string) {\n const ranges = range.split(',');\n for (const r of ranges) {\n const [start, end] = r.split('-').map(Number);\n if (statusCode === start && end === undefined) {\n return true;\n }\n if (statusCode >= start && statusCode <= end) {\n return true;\n }\n }\n return false;\n}\n\nfunction isCaptureRuleMatch(rule: NetworkCaptureRule, hostname: string, status?: number) {\n // check if the host is in the allowed hosts\n if (rule.hosts && !rule.hosts.find((host: string) => wildcardMatch(hostname, host))) {\n return;\n }\n\n // check if the status code is in the allowed range\n if (status || status === 0) {\n const statusCodeRange = rule.statusCodeRange || DEFAULT_STATUS_CODE_RANGE;\n if (!isStatusCodeInRange(status, statusCodeRange)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction parseUrl(url: string) {\n try {\n /* istanbul ignore next */\n const currentHref = getGlobalScope()?.location.href;\n const urlObj = new URL(url, currentHref);\n const query = urlObj.searchParams.toString();\n const fragment = urlObj.hash.replace('#', '');\n const href = urlObj.href;\n const host = urlObj.host;\n urlObj.hash = '';\n urlObj.search = '';\n const hrefWithoutQueryOrHash = urlObj.href;\n return { query, fragment, href, hrefWithoutQueryOrHash, host };\n } catch (e) {\n /* istanbul ignore next */\n return;\n }\n}\n\nexport function shouldTrackNetworkEvent(networkEvent: NetworkRequestEvent, options: NetworkTrackingOptions = {}) {\n const urlObj = parseUrl(networkEvent.url);\n /* istanbul ignore if */\n if (!urlObj) {\n // if the URL failed to parse, do not track the event\n // this is a probably impossible case that would only happen if the URL is malformed\n /* istanbul ignore next */\n return false;\n }\n const { host } = urlObj;\n\n // false if is amplitude request and not configured to track amplitude requests\n if (\n options.ignoreAmplitudeRequests !== false &&\n (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))\n ) {\n return false;\n }\n\n // false if the host is in the ignore list\n if (options.ignoreHosts?.find((ignoreHost: string) => wildcardMatch(host, ignoreHost))) {\n return false;\n }\n\n // false if the status code is not 500-599 and there are no captureRules\n if (\n !options.captureRules &&\n networkEvent.status !== undefined &&\n !isStatusCodeInRange(networkEvent.status, DEFAULT_STATUS_CODE_RANGE)\n ) {\n return false;\n }\n\n if (options.captureRules) {\n // find the first capture rule, in reverse-order,\n // that is a match (true) or a miss (false)\n let isMatch: boolean | undefined;\n [...options.captureRules].reverse().find((rule) => {\n isMatch = isCaptureRuleMatch(rule, host, networkEvent.status);\n return isMatch !== undefined;\n });\n\n // if we found a miss (false) or no match (undefined),\n // then do not track the event\n if (!isMatch) {\n return false;\n }\n }\n\n return true;\n}\n\nexport type NetworkAnalyticsEvent = {\n ['[Amplitude] URL']: string;\n ['[Amplitude] URL Query']?: string;\n ['[Amplitude] URL Fragment']?: string;\n ['[Amplitude] Request Method']: string;\n ['[Amplitude] Status Code']?: number;\n ['[Amplitude] Start Time']?: number; // unix timestamp\n ['[Amplitude] Completion Time']?: number; // unix timestamp\n ['[Amplitude] Duration']?: number; // completionTime - startTime (millis)\n ['[Amplitude] Request Body Size']?: number;\n ['[Amplitude] Response Body Size']?: number;\n};\n\nexport function trackNetworkEvents({\n allObservables,\n networkTrackingOptions,\n amplitude,\n}: {\n allObservables: AllWindowObservables;\n networkTrackingOptions: NetworkTrackingOptions;\n amplitude: BrowserClient;\n}) {\n const { networkObservable } = allObservables;\n\n const filteredNetworkObservable = networkObservable.pipe(\n filter((event: TimestampedEvent<NetworkRequestEvent>) => {\n // Only track network events that should be tracked,\n return shouldTrackNetworkEvent(event.event as NetworkRequestEvent, networkTrackingOptions);\n }),\n );\n\n return filteredNetworkObservable.subscribe((networkEvent) => {\n const request = networkEvent.event as NetworkRequestEvent;\n\n // convert to NetworkAnalyticsEvent\n const urlObj = parseUrl(request.url);\n /* istanbul ignore if */\n if (!urlObj) {\n // if the URL failed to parse, do not track the event\n // this is a very unlikely case, because URL() shouldn't throw an exception\n // when the URL is a valid URL\n /* istanbul ignore next */\n return;\n }\n\n const networkAnalyticsEvent: NetworkAnalyticsEvent = {\n ['[Amplitude] URL']: urlObj.hrefWithoutQueryOrHash,\n ['[Amplitude] URL Query']: urlObj.query,\n ['[Amplitude] URL Fragment']: urlObj.fragment,\n ['[Amplitude] Request Method']: request.method,\n ['[Amplitude] Status Code']: request.status,\n ['[Amplitude] Start Time']: request.startTime,\n ['[Amplitude] Completion Time']: request.endTime,\n ['[Amplitude] Duration']: request.duration,\n ['[Amplitude] Request Body Size']: request.requestBodySize,\n ['[Amplitude] Response Body Size']: request.responseBodySize,\n };\n\n /* istanbul ignore next */\n amplitude?.track(AMPLITUDE_NETWORK_REQUEST_EVENT, networkAnalyticsEvent);\n });\n}\n"]}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.1.3";
1
+ export declare const VERSION = "1.1.4";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,2 +1,2 @@
1
- export var VERSION = '1.1.3';
1
+ export var VERSION = '1.1.4';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["export const VERSION = '1.1.3';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["export const VERSION = '1.1.4';\n"]}
@@ -1,2 +1,2 @@
1
- var amplitudeNetworkCapturePlugin=function(t){"use strict";var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},e(t,r)};function r(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}function n(t,e,r,n){return new(r||(r=Promise))((function(i,o){function u(t){try{c(n.next(t))}catch(t){o(t)}}function s(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(u,s)}c((n=n.apply(t,e||[])).next())}))}function i(t,e){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return u.next=s(0),u.throw=s(1),u.return=s(2),"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;u&&(u=0,s[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=e.call(t,o)}catch(t){s=[6,t],n=0}finally{r=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}}function o(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function u(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)u.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}function s(t,e,r){if(r||2===arguments.length)for(var n,i=0,o=e.length;i<o;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))}"function"==typeof SuppressedError&&SuppressedError;var c=function(){var t="ampIntegrationContext";return"undefined"!=typeof globalThis&&void 0!==globalThis[t]?globalThis[t]:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0},a=s([],u(Array(256).keys()),!1).map((function(t){return t.toString(16).padStart(2,"0")})),l=function(t){var e,r=c();if(!(null===(e=null==r?void 0:r.crypto)||void 0===e?void 0:e.getRandomValues))return function(t){return t?(t^16*Math.random()>>t/4).toString(16):(String(1e7)+String(-1e3)+String(-4e3)+String(-8e3)+String(-1e11)).replace(/[018]/g,l)}(t);var n=r.crypto.getRandomValues(new Uint8Array(16));return n[6]=15&n[6]|64,n[8]=63&n[8]|128,s([],u(n.entries()),!1).map((function(t){var e=u(t,2),r=e[0],n=e[1];return[4,6,8,10].includes(r)?"-".concat(a[n]):a[n]})).join("")};function f(t){var e,r,n=c();if(null==n?void 0:n.TextEncoder){var i=n.TextEncoder;if("string"==typeof t)return(new i).encode(t).length;if(t instanceof Blob)return t.size;if(t instanceof URLSearchParams)return(new i).encode(t.toString()).length;if(t instanceof ArrayBuffer)return t.byteLength;if(ArrayBuffer.isView(t))return t.byteLength;if(t instanceof FormData){var s=t,a=0,l=0;try{for(var f=o(s.entries()),h=f.next();!h.done;h=f.next()){var p=u(h.value,2),d=p[0],v=p[1];if(a+=d.length,"string"==typeof v?a+=(new i).encode(v).length:v.size&&(a+=v.size),++l>=100)return}}catch(t){e={error:t}}finally{try{h&&!h.done&&(r=f.return)&&r.call(f)}finally{if(e)throw e.error}}return a}}}var h=function(t,e){void 0===e&&(e=l()),this.callback=t,this.id=e},p=new(function(){function t(e){var r;this.eventCallbacks=new Map,this.isObserving=!1;var n=c();t.isSupported()?(this.globalScope=n,this.originalFetch=null===(r=this.globalScope)||void 0===r?void 0:r.fetch):null==e||e.error("Fetch API is not supported in this environment.")}return t.isSupported=function(){var t=c();return!!t&&!!t.fetch},t.prototype.subscribe=function(t){this.eventCallbacks.set(t.id,t),this.isObserving||(this.observeFetch(),this.isObserving=!0)},t.prototype.unsubscribe=function(t){this.eventCallbacks.delete(t.id),this.originalFetch&&this.globalScope&&0===this.eventCallbacks.size&&this.isObserving&&(this.globalScope.fetch=this.originalFetch,this.isObserving=!1)},t.prototype.triggerEventCallbacks=function(t){this.eventCallbacks.forEach((function(e){e.callback(t)}))},t.prototype.observeFetch=function(){var t=this;if(this.globalScope&&this.originalFetch){var e=this.globalScope.fetch;this.globalScope.fetch=function(r,o){return n(t,void 0,void 0,(function(){var t,n,u,s,c,a,l,h,p;return i(this,(function(i){switch(i.label){case 0:t=Date.now(),n=performance.now(),u={timestamp:t,startTime:t,type:"fetch",method:(null==o?void 0:o.method)||"GET",url:r.toString(),requestHeaders:null==o?void 0:o.headers,requestBodySize:f(null==o?void 0:o.body)},i.label=1;case 1:return i.trys.push([1,3,,4]),[4,e(r,o)];case 2:return s=i.sent(),u.status=s.status,u.duration=Math.floor(performance.now()-n),u.startTime=t,u.endTime=Math.floor(t+u.duration),c={},a=void 0,s.headers.forEach((function(t,e){c[e]=t,"content-length"===e&&(a=parseInt(t,10)||void 0)})),u.responseHeaders=c,u.responseBodySize=a,this.triggerEventCallbacks(u),[2,s];case 3:throw l=i.sent(),h=Date.now(),u.duration=h-t,p=l,u.error={name:p.name||"UnknownError",message:p.message||"An unknown error occurred"},this.triggerEventCallbacks(u),l;case 4:return[2]}}))}))}}},t}());function d(t){return"function"==typeof t}function v(t){var e=t((function(t){Error.call(t),t.stack=(new Error).stack}));return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var y=v((function(t){return function(e){t(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(t,e){return e+1+") "+t.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e}}));function b(t,e){if(t){var r=t.indexOf(e);0<=r&&t.splice(r,1)}}var m=function(){function t(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}var e;return t.prototype.unsubscribe=function(){var t,e,r,n,i;if(!this.closed){this.closed=!0;var c=this._parentage;if(c)if(this._parentage=null,Array.isArray(c))try{for(var a=o(c),l=a.next();!l.done;l=a.next()){l.value.remove(this)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else c.remove(this);var f=this.initialTeardown;if(d(f))try{f()}catch(t){i=t instanceof y?t.errors:[t]}var h=this._finalizers;if(h){this._finalizers=null;try{for(var p=o(h),v=p.next();!v.done;v=p.next()){var b=v.value;try{g(b)}catch(t){i=null!=i?i:[],t instanceof y?i=s(s([],u(i)),u(t.errors)):i.push(t)}}}catch(t){r={error:t}}finally{try{v&&!v.done&&(n=p.return)&&n.call(p)}finally{if(r)throw r.error}}}if(i)throw new y(i)}},t.prototype.add=function(e){var r;if(e&&e!==this)if(this.closed)g(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=null!==(r=this._finalizers)&&void 0!==r?r:[]).push(e)}},t.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},t.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},t.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&b(e,t)},t.prototype.remove=function(e){var r=this._finalizers;r&&b(r,e),e instanceof t&&e._removeParent(this)},t.EMPTY=((e=new t).closed=!0,e),t}(),w=m.EMPTY;function _(t){return t instanceof m||t&&"closed"in t&&d(t.remove)&&d(t.add)&&d(t.unsubscribe)}function g(t){d(t)?t():t.unsubscribe()}var x={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},S=function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return setTimeout.apply(void 0,s([t,e],u(r)))};function A(){}function E(t){t()}var k=function(t){function e(e){var r=t.call(this)||this;return r.isStopped=!1,e?(r.destination=e,_(e)&&e.add(r)):r.destination=P,r}return r(e,t),e.create=function(t,e,r){return new I(t,e,r)},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this),this.destination=null)},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},e.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},e}(m),O=Function.prototype.bind;function T(t,e){return O.call(t,e)}var C=function(){function t(t){this.partialObserver=t}return t.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(t){F(t)}},t.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(t){F(t)}else F(t)},t.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(t){F(t)}},t}(),I=function(t){function e(e,r,n){var i,o,u=t.call(this)||this;d(e)||!e?i={next:null!=e?e:void 0,error:null!=r?r:void 0,complete:null!=n?n:void 0}:u&&x.useDeprecatedNextContext?((o=Object.create(e)).unsubscribe=function(){return u.unsubscribe()},i={next:e.next&&T(e.next,o),error:e.error&&T(e.error,o),complete:e.complete&&T(e.complete,o)}):i=e;return u.destination=new C(i),u}return r(e,t),e}(k);function F(t){var e;e=t,S((function(){throw e}))}var P={closed:!0,next:A,error:function(t){throw t},complete:A},j="function"==typeof Symbol&&Symbol.observable||"@@observable";function z(t){return t}var q=function(){function t(t){t&&(this._subscribe=t)}return t.prototype.lift=function(e){var r=new t;return r.source=this,r.operator=e,r},t.prototype.subscribe=function(t,e,r){var n,i=this,o=(n=t)&&n instanceof k||function(t){return t&&d(t.next)&&d(t.error)&&d(t.complete)}(n)&&_(n)?t:new I(t,e,r);return E((function(){var t=i,e=t.operator,r=t.source;o.add(e?e.call(o,r):r?i._subscribe(o):i._trySubscribe(o))})),o},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},t.prototype.forEach=function(t,e){var r=this;return new(e=R(e))((function(e,n){var i=new I({next:function(e){try{t(e)}catch(t){n(t),i.unsubscribe()}},error:n,complete:e});r.subscribe(i)}))},t.prototype._subscribe=function(t){var e;return null===(e=this.source)||void 0===e?void 0:e.subscribe(t)},t.prototype[j]=function(){return this},t.prototype.pipe=function(){for(var t,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return(0===(t=e).length?z:1===t.length?t[0]:function(e){return t.reduce((function(t,e){return e(t)}),e)})(this)},t.prototype.toPromise=function(t){var e=this;return new(t=R(t))((function(t,r){var n;e.subscribe((function(t){return n=t}),(function(t){return r(t)}),(function(){return t(n)}))}))},t.create=function(e){return new t(e)},t}();function R(t){var e;return null!==(e=null!=t?t:x.Promise)&&void 0!==e?e:Promise}function U(t){return d(null==t?void 0:t.lift)}function M(t){return function(e){if(U(e))return e.lift((function(e){try{return t(e,this)}catch(t){this.error(t)}}));throw new TypeError("Unable to lift unknown Observable type")}}function B(t,e,r,n,i){return new N(t,e,r,n,i)}var N=function(t){function e(e,r,n,i,o,u){var s=t.call(this,e)||this;return s.onFinalize=o,s.shouldUnsubscribe=u,s._next=r?function(t){try{r(t)}catch(t){e.error(t)}}:t.prototype._next,s._error=i?function(t){try{i(t)}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._error,s._complete=n?function(){try{n()}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._complete,s}return r(e,t),e.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;t.prototype.unsubscribe.call(this),!r&&(null===(e=this.onFinalize)||void 0===e||e.call(this))}},e}(k);!function(t){function e(e,r){var n=t.call(this)||this;return n.source=e,n.subjectFactory=r,n._subject=null,n._refCount=0,n._connection=null,U(e)&&(n.lift=e.lift),n}r(e,t),e.prototype._subscribe=function(t){return this.getSubject().subscribe(t)},e.prototype.getSubject=function(){var t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject},e.prototype._teardown=function(){this._refCount=0;var t=this._connection;this._subject=this._connection=null,null==t||t.unsubscribe()},e.prototype.connect=function(){var t=this,e=this._connection;if(!e){e=this._connection=new m;var r=this.getSubject();e.add(this.source.subscribe(B(r,void 0,(function(){t._teardown(),r.complete()}),(function(e){t._teardown(),r.error(e)}),(function(){return t._teardown()})))),e.closed&&(this._connection=null,e=m.EMPTY)}return e},e.prototype.refCount=function(){return M((function(t,e){var r=null;t._refCount++;var n=B(e,void 0,void 0,void 0,(function(){if(!t||t._refCount<=0||0<--t._refCount)r=null;else{var n=t._connection,i=r;r=null,!n||i&&n!==i||n.unsubscribe(),e.unsubscribe()}}));t.subscribe(n),n.closed||(r=t.connect())}))(this)}}(q);var D,L={now:function(){return(L.delegate||performance).now()},delegate:void 0},V={schedule:function(t){var e=requestAnimationFrame,r=cancelAnimationFrame,n=e((function(e){r=void 0,t(e)}));return new m((function(){return null==r?void 0:r(n)}))},requestAnimationFrame:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var r=V.delegate;return((null==r?void 0:r.requestAnimationFrame)||requestAnimationFrame).apply(void 0,s([],u(t)))},cancelAnimationFrame:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return cancelAnimationFrame.apply(void 0,s([],u(t)))},delegate:void 0};new q((function(t){var e=D||L,r=e.now(),n=0,i=function(){t.closed||(n=V.requestAnimationFrame((function(o){n=0;var u=e.now();t.next({timestamp:D?u:o,elapsed:u-r}),i()})))};return i(),function(){n&&V.cancelAnimationFrame(n)}}));var W=v((function(t){return function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),H=function(t){function e(){var e=t.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return r(e,t),e.prototype.lift=function(t){var e=new Y(this,this);return e.operator=t,e},e.prototype._throwIfClosed=function(){if(this.closed)throw new W},e.prototype.next=function(t){var e=this;E((function(){var r,n;if(e._throwIfClosed(),!e.isStopped){e.currentObservers||(e.currentObservers=Array.from(e.observers));try{for(var i=o(e.currentObservers),u=i.next();!u.done;u=i.next()){u.value.next(t)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}}}))},e.prototype.error=function(t){var e=this;E((function(){if(e._throwIfClosed(),!e.isStopped){e.hasError=e.isStopped=!0,e.thrownError=t;for(var r=e.observers;r.length;)r.shift().error(t)}}))},e.prototype.complete=function(){var t=this;E((function(){if(t._throwIfClosed(),!t.isStopped){t.isStopped=!0;for(var e=t.observers;e.length;)e.shift().complete()}}))},e.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(e.prototype,"observed",{get:function(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0},enumerable:!1,configurable:!0}),e.prototype._trySubscribe=function(e){return this._throwIfClosed(),t.prototype._trySubscribe.call(this,e)},e.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},e.prototype._innerSubscribe=function(t){var e=this,r=this,n=r.hasError,i=r.isStopped,o=r.observers;return n||i?w:(this.currentObservers=null,o.push(t),new m((function(){e.currentObservers=null,b(o,t)})))},e.prototype._checkFinalizedStatuses=function(t){var e=this,r=e.hasError,n=e.thrownError,i=e.isStopped;r?t.error(n):i&&t.complete()},e.prototype.asObservable=function(){var t=new q;return t.source=this,t},e.create=function(t,e){return new Y(t,e)},e}(q),Y=function(t){function e(e,r){var n=t.call(this)||this;return n.destination=e,n.source=r,n}return r(e,t),e.prototype.next=function(t){var e,r;null===(r=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===r||r.call(e,t)},e.prototype.error=function(t){var e,r;null===(r=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===r||r.call(e,t)},e.prototype.complete=function(){var t,e;null===(e=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===e||e.call(t)},e.prototype._subscribe=function(t){var e,r;return null!==(r=null===(e=this.source)||void 0===e?void 0:e.subscribe(t))&&void 0!==r?r:w},e}(H);!function(t){function e(e){var r=t.call(this)||this;return r._value=e,r}r(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),e.prototype._subscribe=function(e){var r=t.prototype._subscribe.call(this,e);return!r.closed&&e.next(this._value),r},e.prototype.getValue=function(){var t=this,e=t.hasError,r=t.thrownError,n=t._value;if(e)throw r;return this._throwIfClosed(),n},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)}}(H);var $={now:function(){return($.delegate||Date).now()},delegate:void 0};!function(t){function e(e,r,n){void 0===e&&(e=1/0),void 0===r&&(r=1/0),void 0===n&&(n=$);var i=t.call(this)||this;return i._bufferSize=e,i._windowTime=r,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=r===1/0,i._bufferSize=Math.max(1,e),i._windowTime=Math.max(1,r),i}r(e,t),e.prototype.next=function(e){var r=this,n=r.isStopped,i=r._buffer,o=r._infiniteTimeWindow,u=r._timestampProvider,s=r._windowTime;n||(i.push(e),!o&&i.push(u.now()+s)),this._trimBuffer(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){this._throwIfClosed(),this._trimBuffer();for(var e=this._innerSubscribe(t),r=this._infiniteTimeWindow,n=this._buffer.slice(),i=0;i<n.length&&!t.closed;i+=r?1:2)t.next(n[i]);return this._checkFinalizedStatuses(t),e},e.prototype._trimBuffer=function(){var t=this,e=t._bufferSize,r=t._timestampProvider,n=t._buffer,i=t._infiniteTimeWindow,o=(i?1:2)*e;if(e<1/0&&o<n.length&&n.splice(0,n.length-o),!i){for(var u=r.now(),s=0,c=1;c<n.length&&n[c]<=u;c+=2)s=c;s&&n.splice(0,s+1)}}}(H),function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._value=null,e._hasValue=!1,e._isComplete=!1,e}r(e,t),e.prototype._checkFinalizedStatuses=function(t){var e=this,r=e.hasError,n=e._hasValue,i=e._value,o=e.thrownError,u=e.isStopped,s=e._isComplete;r?t.error(o):(u||s)&&(n&&t.next(i),t.complete())},e.prototype.next=function(t){this.isStopped||(this._value=t,this._hasValue=!0)},e.prototype.complete=function(){var e=this,r=e._hasValue,n=e._value;e._isComplete||(this._isComplete=!0,r&&t.prototype.next.call(this,n),t.prototype.complete.call(this))}}(H);var G,Q=function(t){function e(e,r){return t.call(this)||this}return r(e,t),e.prototype.schedule=function(t,e){return this},e}(m),X=function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return setInterval.apply(void 0,s([t,e],u(r)))},J=function(t){return clearInterval(t)},K=function(t){function e(e,r){var n=t.call(this,e,r)||this;return n.scheduler=e,n.work=r,n.pending=!1,n}return r(e,t),e.prototype.schedule=function(t,e){var r;if(void 0===e&&(e=0),this.closed)return this;this.state=t;var n=this.id,i=this.scheduler;return null!=n&&(this.id=this.recycleAsyncId(i,n,e)),this.pending=!0,this.delay=e,this.id=null!==(r=this.id)&&void 0!==r?r:this.requestAsyncId(i,this.id,e),this},e.prototype.requestAsyncId=function(t,e,r){return void 0===r&&(r=0),X(t.flush.bind(t,this),r)},e.prototype.recycleAsyncId=function(t,e,r){if(void 0===r&&(r=0),null!=r&&this.delay===r&&!1===this.pending)return e;null!=e&&J(e)},e.prototype.execute=function(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var r=this._execute(t,e);if(r)return r;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},e.prototype._execute=function(t,e){var r,n=!1;try{this.work(t)}catch(t){n=!0,r=t||new Error("Scheduled action threw falsy error")}if(n)return this.unsubscribe(),r},e.prototype.unsubscribe=function(){if(!this.closed){var e=this.id,r=this.scheduler,n=r.actions;this.work=this.state=this.scheduler=null,this.pending=!1,b(n,this),null!=e&&(this.id=this.recycleAsyncId(r,e,null)),this.delay=null,t.prototype.unsubscribe.call(this)}},e}(Q),Z=1,tt={};function et(t){return t in tt&&(delete tt[t],!0)}var rt=function(t){var e=Z++;return tt[e]=!0,G||(G=Promise.resolve()),G.then((function(){return et(e)&&t()})),e},nt=function(t){et(t)},it={setImmediate:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var r=it.delegate;return((null==r?void 0:r.setImmediate)||rt).apply(void 0,s([],u(t)))},clearImmediate:function(t){return nt(t)},delegate:void 0},ot=function(t){function e(e,r){var n=t.call(this,e,r)||this;return n.scheduler=e,n.work=r,n}return r(e,t),e.prototype.requestAsyncId=function(e,r,n){return void 0===n&&(n=0),null!==n&&n>0?t.prototype.requestAsyncId.call(this,e,r,n):(e.actions.push(this),e._scheduled||(e._scheduled=it.setImmediate(e.flush.bind(e,void 0))))},e.prototype.recycleAsyncId=function(e,r,n){var i;if(void 0===n&&(n=0),null!=n?n>0:this.delay>0)return t.prototype.recycleAsyncId.call(this,e,r,n);var o=e.actions;null!=r&&(null===(i=o[o.length-1])||void 0===i?void 0:i.id)!==r&&(it.clearImmediate(r),e._scheduled===r&&(e._scheduled=void 0))},e}(K),ut=function(){function t(e,r){void 0===r&&(r=t.now),this.schedulerActionCtor=e,this.now=r}return t.prototype.schedule=function(t,e,r){return void 0===e&&(e=0),new this.schedulerActionCtor(this,t).schedule(r,e)},t.now=$.now,t}(),st=function(t){function e(e,r){void 0===r&&(r=ut.now);var n=t.call(this,e,r)||this;return n.actions=[],n._active=!1,n}return r(e,t),e.prototype.flush=function(t){var e=this.actions;if(this._active)e.push(t);else{var r;this._active=!0;do{if(r=t.execute(t.state,t.delay))break}while(t=e.shift());if(this._active=!1,r){for(;t=e.shift();)t.unsubscribe();throw r}}},e}(ut),ct=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.prototype.flush=function(t){this._active=!0;var e=this._scheduled;this._scheduled=void 0;var r,n=this.actions;t=t||n.shift();do{if(r=t.execute(t.state,t.delay))break}while((t=n[0])&&t.id===e&&n.shift());if(this._active=!1,r){for(;(t=n[0])&&t.id===e&&n.shift();)t.unsubscribe();throw r}},e}(st);new ct(ot),new st(K);var at=function(t){function e(e,r){var n=t.call(this,e,r)||this;return n.scheduler=e,n.work=r,n}return r(e,t),e.prototype.schedule=function(e,r){return void 0===r&&(r=0),r>0?t.prototype.schedule.call(this,e,r):(this.delay=r,this.state=e,this.scheduler.flush(this),this)},e.prototype.execute=function(e,r){return r>0||this.closed?t.prototype.execute.call(this,e,r):this._execute(e,r)},e.prototype.requestAsyncId=function(e,r,n){return void 0===n&&(n=0),null!=n&&n>0||null==n&&this.delay>0?t.prototype.requestAsyncId.call(this,e,r,n):(e.flush(this),0)},e}(K),lt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e}(st);new lt(at);var ft=function(t){function e(e,r){var n=t.call(this,e,r)||this;return n.scheduler=e,n.work=r,n}return r(e,t),e.prototype.requestAsyncId=function(e,r,n){return void 0===n&&(n=0),null!==n&&n>0?t.prototype.requestAsyncId.call(this,e,r,n):(e.actions.push(this),e._scheduled||(e._scheduled=V.requestAnimationFrame((function(){return e.flush(void 0)}))))},e.prototype.recycleAsyncId=function(e,r,n){var i;if(void 0===n&&(n=0),null!=n?n>0:this.delay>0)return t.prototype.recycleAsyncId.call(this,e,r,n);var o=e.actions;null!=r&&r===e._scheduled&&(null===(i=o[o.length-1])||void 0===i?void 0:i.id)!==r&&(V.cancelAnimationFrame(r),e._scheduled=void 0)},e}(K),ht=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.prototype.flush=function(t){var e;this._active=!0,t?e=t.id:(e=this._scheduled,this._scheduled=void 0);var r,n=this.actions;t=t||n.shift();do{if(r=t.execute(t.state,t.delay))break}while((t=n[0])&&t.id===e&&n.shift());if(this._active=!1,r){for(;(t=n[0])&&t.id===e&&n.shift();)t.unsubscribe();throw r}},e}(st);new ht(ft),function(t){function e(e,r){void 0===e&&(e=dt),void 0===r&&(r=1/0);var n=t.call(this,e,(function(){return n.frame}))||this;return n.maxFrames=r,n.frame=0,n.index=-1,n}r(e,t),e.prototype.flush=function(){for(var t,e,r=this.actions,n=this.maxFrames;(e=r[0])&&e.delay<=n&&(r.shift(),this.frame=e.delay,!(t=e.execute(e.state,e.delay))););if(t){for(;e=r.shift();)e.unsubscribe();throw t}},e.frameTimeFactor=10}(st);var pt,dt=function(t){function e(e,r,n){void 0===n&&(n=e.index+=1);var i=t.call(this,e,r)||this;return i.scheduler=e,i.work=r,i.index=n,i.active=!0,i.index=e.index=n,i}return r(e,t),e.prototype.schedule=function(r,n){if(void 0===n&&(n=0),Number.isFinite(n)){if(!this.id)return t.prototype.schedule.call(this,r,n);this.active=!1;var i=new e(this.scheduler,this.work);return this.add(i),i.schedule(r,n)}return m.EMPTY},e.prototype.requestAsyncId=function(t,r,n){void 0===n&&(n=0),this.delay=t.frame+n;var i=t.actions;return i.push(this),i.sort(e.sortActions),1},e.prototype.recycleAsyncId=function(t,e,r){},e.prototype._execute=function(e,r){if(!0===this.active)return t.prototype._execute.call(this,e,r)},e.sortActions=function(t,e){return t.delay===e.delay?t.index===e.index?0:t.index>e.index?1:-1:t.delay>e.delay?1:-1},e}(K);new q((function(t){return t.complete()})),function(t){t.NEXT="N",t.ERROR="E",t.COMPLETE="C"}(pt||(pt={})),v((function(t){return function(){t(this),this.name="EmptyError",this.message="no elements in sequence"}})),v((function(t){return function(){t(this),this.name="ArgumentOutOfRangeError",this.message="argument out of range"}})),v((function(t){return function(e){t(this),this.name="NotFoundError",this.message=e}})),v((function(t){return function(e){t(this),this.name="SequenceError",this.message=e}})),v((function(t){return function(e){void 0===e&&(e=null),t(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=e}})),new q(A);var vt,yt="500-599";function bt(t,e){var r="^"+e.replace(/[-[\]{}()+?.,\\^$|#\s]/g,"\\$&").replace(/\*/g,".*")+"$";return new RegExp(r).test(t)}function mt(t,e){var r,n,i=e.split(",");try{for(var s=o(i),c=s.next();!c.done;c=s.next()){var a=u(c.value.split("-").map(Number),2),l=a[0],f=a[1];if(t===l&&void 0===f)return!0;if(t>=l&&t<=f)return!0}}catch(t){r={error:t}}finally{try{c&&!c.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return!1}function wt(t,e){var r;void 0===e&&(e={});var n,i=new URL(t.url).hostname;if(!1!==e.ignoreAmplitudeRequests&&(bt(i,"*.amplitude.com")||bt(i,"amplitude.com")))return!1;if(null===(r=e.ignoreHosts)||void 0===r?void 0:r.find((function(t){return bt(i,t)})))return!1;if(!e.captureRules&&void 0!==t.status&&!mt(t.status,yt))return!1;if(e.captureRules&&(s([],u(e.captureRules),!1).reverse().find((function(e){return n=function(t,e,r){if(!t.hosts||t.hosts.find((function(t){return bt(e,t)})))return!((r||0===r)&&!mt(r,t.statusCodeRange||yt))}(e,i,t.status),void 0!==n})),!n))return!1;return!0}function _t(t){var e,r,n=t.allObservables,i=t.networkTrackingOptions,o=t.amplitude;return n.networkObservable.pipe((e=function(t){return wt(t.event,i)},M((function(t,n){var i=0;t.subscribe(B(n,(function(t){return e.call(r,t,i++)&&n.next(t)})))})))).subscribe((function(t){var e,r,n,i,u=t.event;try{n=(r=new URL(u.url)).searchParams.toString(),i=r.hash.replace("#","")}catch(t){}var s=((e={})["[Amplitude] URL"]=u.url,e["[Amplitude] URL Query"]=n,e["[Amplitude] URL Fragment"]=i,e["[Amplitude] Request Method"]=u.method,e["[Amplitude] Status Code"]=u.status,e["[Amplitude] Start Time"]=u.startTime,e["[Amplitude] Completion Time"]=u.endTime,e["[Amplitude] Duration"]=u.duration,e["[Amplitude] Request Body Size"]=u.requestBodySize,e["[Amplitude] Response Body Size"]=u.responseBodySize,e);null==o||o.track("[Amplitude] Network Request",s)}))}!function(t){t.NetworkObservable="networkObservable"}(vt||(vt={}));var gt=function(t){void 0===t&&(t={});var e="@amplitude/plugin-network-capture-browser",r=[],u=function(){var t,e=new q((function(t){var e=new h((function(e){var r=function(t,e){return{event:t,timestamp:Date.now(),type:e}}(e,"network");t.next(r)}));return p.subscribe(e),function(){p.unsubscribe(e)}}));return(t={})[vt.NetworkObservable]=e,t};return{name:e,type:"enrichment",setup:function(o,s){return n(void 0,void 0,void 0,(function(){var n,c,a;return i(this,(function(i){return"undefined"==typeof document||(n=u(),c=_t({allObservables:n,networkTrackingOptions:t,amplitude:s}),r.push(c),null===(a=null==o?void 0:o.loggerProvider)||void 0===a||a.log("".concat(e," has been successfully added."))),[2]}))}))},execute:function(t){return n(void 0,void 0,void 0,(function(){return i(this,(function(e){return[2,t]}))}))},teardown:function(){return n(void 0,void 0,void 0,(function(){var t,e,n,u;return i(this,(function(i){try{for(t=o(r),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(t){n={error:t}}finally{try{e&&!e.done&&(u=t.return)&&u.call(t)}finally{if(n)throw n.error}}return[2]}))}))}}};return t.networkCapturePlugin=gt,t.plugin=gt,Object.defineProperty(t,"__esModule",{value:!0}),t}({});
1
+ var amplitudeNetworkCapturePlugin=function(t){"use strict";var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},e(t,r)};function r(t,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}function n(t,e,r,n){return new(r||(r=Promise))((function(i,o){function u(t){try{c(n.next(t))}catch(t){o(t)}}function s(t){try{c(n.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(u,s)}c((n=n.apply(t,e||[])).next())}))}function i(t,e){var r,n,i,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},u=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return u.next=s(0),u.throw=s(1),u.return=s(2),"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;u&&(u=0,s[0]&&(o=0)),o;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return o.label++,{value:s[1],done:!1};case 5:o.label++,n=s[1],s=[0];continue;case 7:s=o.ops.pop(),o.trys.pop();continue;default:if(!(i=o.trys,(i=i.length>0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){o.label=s[1];break}if(6===s[0]&&o.label<i[1]){o.label=i[1],i=s;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(s);break}i[2]&&o.ops.pop(),o.trys.pop();continue}s=e.call(t,o)}catch(t){s=[6,t],n=0}finally{r=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}}function o(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function u(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,o=r.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(n=o.next()).done;)u.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}function s(t,e,r){if(r||2===arguments.length)for(var n,i=0,o=e.length;i<o;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))}"function"==typeof SuppressedError&&SuppressedError;var c=function(){var t="ampIntegrationContext";return"undefined"!=typeof globalThis&&void 0!==globalThis[t]?globalThis[t]:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0},a=s([],u(Array(256).keys()),!1).map((function(t){return t.toString(16).padStart(2,"0")})),l=function(t){var e,r=c();if(!(null===(e=null==r?void 0:r.crypto)||void 0===e?void 0:e.getRandomValues))return function(t){return t?(t^16*Math.random()>>t/4).toString(16):(String(1e7)+String(-1e3)+String(-4e3)+String(-8e3)+String(-1e11)).replace(/[018]/g,l)}(t);var n=r.crypto.getRandomValues(new Uint8Array(16));return n[6]=15&n[6]|64,n[8]=63&n[8]|128,s([],u(n.entries()),!1).map((function(t){var e=u(t,2),r=e[0],n=e[1];return[4,6,8,10].includes(r)?"-".concat(a[n]):a[n]})).join("")};function f(t){var e,r,n=c();if(null==n?void 0:n.TextEncoder){var i=n.TextEncoder;if("string"==typeof t)return(new i).encode(t).length;if(t instanceof Blob)return t.size;if(t instanceof URLSearchParams)return(new i).encode(t.toString()).length;if(t instanceof ArrayBuffer)return t.byteLength;if(ArrayBuffer.isView(t))return t.byteLength;if(t instanceof FormData){var s=t,a=0,l=0;try{for(var f=o(s.entries()),h=f.next();!h.done;h=f.next()){var p=u(h.value,2),d=p[0],v=p[1];if(a+=d.length,"string"==typeof v?a+=(new i).encode(v).length:v.size&&(a+=v.size),++l>=100)return}}catch(t){e={error:t}}finally{try{h&&!h.done&&(r=f.return)&&r.call(f)}finally{if(e)throw e.error}}return a}}}var h=function(t,e){void 0===e&&(e=l()),this.callback=t,this.id=e},p=new(function(){function t(e){var r;this.eventCallbacks=new Map,this.isObserving=!1;var n=c();t.isSupported()?(this.globalScope=n,this.originalFetch=null===(r=this.globalScope)||void 0===r?void 0:r.fetch):null==e||e.error("Fetch API is not supported in this environment.")}return t.isSupported=function(){var t=c();return!!t&&!!t.fetch},t.prototype.subscribe=function(t){this.eventCallbacks.set(t.id,t),this.isObserving||(this.observeFetch(),this.isObserving=!0)},t.prototype.unsubscribe=function(t){this.eventCallbacks.delete(t.id),this.originalFetch&&this.globalScope&&0===this.eventCallbacks.size&&this.isObserving&&(this.globalScope.fetch=this.originalFetch,this.isObserving=!1)},t.prototype.triggerEventCallbacks=function(t){this.eventCallbacks.forEach((function(e){e.callback(t)}))},t.prototype.observeFetch=function(){var t=this;if(this.globalScope&&this.originalFetch){var e=this.globalScope.fetch;this.globalScope.fetch=function(r,o){return n(t,void 0,void 0,(function(){var t,n,u,s,c,a,l,h,p;return i(this,(function(i){switch(i.label){case 0:t=Date.now(),n=performance.now(),u={timestamp:t,startTime:t,type:"fetch",method:(null==o?void 0:o.method)||"GET",url:r.toString(),requestHeaders:null==o?void 0:o.headers,requestBodySize:f(null==o?void 0:o.body)},i.label=1;case 1:return i.trys.push([1,3,,4]),[4,e(r,o)];case 2:return s=i.sent(),u.status=s.status,u.duration=Math.floor(performance.now()-n),u.startTime=t,u.endTime=Math.floor(t+u.duration),c={},a=void 0,s.headers.forEach((function(t,e){c[e]=t,"content-length"===e&&(a=parseInt(t,10)||void 0)})),u.responseHeaders=c,u.responseBodySize=a,this.triggerEventCallbacks(u),[2,s];case 3:throw l=i.sent(),h=Date.now(),u.duration=h-t,p=l,u.error={name:p.name||"UnknownError",message:p.message||"An unknown error occurred"},this.triggerEventCallbacks(u),l;case 4:return[2]}}))}))}}},t}());function d(t){return"function"==typeof t}function v(t){var e=t((function(t){Error.call(t),t.stack=(new Error).stack}));return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var y=v((function(t){return function(e){t(this),this.message=e?e.length+" errors occurred during unsubscription:\n"+e.map((function(t,e){return e+1+") "+t.toString()})).join("\n "):"",this.name="UnsubscriptionError",this.errors=e}}));function b(t,e){if(t){var r=t.indexOf(e);0<=r&&t.splice(r,1)}}var m=function(){function t(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}var e;return t.prototype.unsubscribe=function(){var t,e,r,n,i;if(!this.closed){this.closed=!0;var c=this._parentage;if(c)if(this._parentage=null,Array.isArray(c))try{for(var a=o(c),l=a.next();!l.done;l=a.next()){l.value.remove(this)}}catch(e){t={error:e}}finally{try{l&&!l.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else c.remove(this);var f=this.initialTeardown;if(d(f))try{f()}catch(t){i=t instanceof y?t.errors:[t]}var h=this._finalizers;if(h){this._finalizers=null;try{for(var p=o(h),v=p.next();!v.done;v=p.next()){var b=v.value;try{g(b)}catch(t){i=null!=i?i:[],t instanceof y?i=s(s([],u(i)),u(t.errors)):i.push(t)}}}catch(t){r={error:t}}finally{try{v&&!v.done&&(n=p.return)&&n.call(p)}finally{if(r)throw r.error}}}if(i)throw new y(i)}},t.prototype.add=function(e){var r;if(e&&e!==this)if(this.closed)g(e);else{if(e instanceof t){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=null!==(r=this._finalizers)&&void 0!==r?r:[]).push(e)}},t.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},t.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},t.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&b(e,t)},t.prototype.remove=function(e){var r=this._finalizers;r&&b(r,e),e instanceof t&&e._removeParent(this)},t.EMPTY=((e=new t).closed=!0,e),t}(),w=m.EMPTY;function _(t){return t instanceof m||t&&"closed"in t&&d(t.remove)&&d(t.add)&&d(t.unsubscribe)}function g(t){d(t)?t():t.unsubscribe()}var x={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},S=function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return setTimeout.apply(void 0,s([t,e],u(r)))};function A(){}function E(t){t()}var k=function(t){function e(e){var r=t.call(this)||this;return r.isStopped=!1,e?(r.destination=e,_(e)&&e.add(r)):r.destination=P,r}return r(e,t),e.create=function(t,e,r){return new I(t,e,r)},e.prototype.next=function(t){this.isStopped||this._next(t)},e.prototype.error=function(t){this.isStopped||(this.isStopped=!0,this._error(t))},e.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},e.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,t.prototype.unsubscribe.call(this),this.destination=null)},e.prototype._next=function(t){this.destination.next(t)},e.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},e.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},e}(m),O=Function.prototype.bind;function T(t,e){return O.call(t,e)}var C=function(){function t(t){this.partialObserver=t}return t.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(t){F(t)}},t.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(t){F(t)}else F(t)},t.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(t){F(t)}},t}(),I=function(t){function e(e,r,n){var i,o,u=t.call(this)||this;d(e)||!e?i={next:null!=e?e:void 0,error:null!=r?r:void 0,complete:null!=n?n:void 0}:u&&x.useDeprecatedNextContext?((o=Object.create(e)).unsubscribe=function(){return u.unsubscribe()},i={next:e.next&&T(e.next,o),error:e.error&&T(e.error,o),complete:e.complete&&T(e.complete,o)}):i=e;return u.destination=new C(i),u}return r(e,t),e}(k);function F(t){var e;e=t,S((function(){throw e}))}var P={closed:!0,next:A,error:function(t){throw t},complete:A},q="function"==typeof Symbol&&Symbol.observable||"@@observable";function j(t){return t}var z=function(){function t(t){t&&(this._subscribe=t)}return t.prototype.lift=function(e){var r=new t;return r.source=this,r.operator=e,r},t.prototype.subscribe=function(t,e,r){var n,i=this,o=(n=t)&&n instanceof k||function(t){return t&&d(t.next)&&d(t.error)&&d(t.complete)}(n)&&_(n)?t:new I(t,e,r);return E((function(){var t=i,e=t.operator,r=t.source;o.add(e?e.call(o,r):r?i._subscribe(o):i._trySubscribe(o))})),o},t.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},t.prototype.forEach=function(t,e){var r=this;return new(e=R(e))((function(e,n){var i=new I({next:function(e){try{t(e)}catch(t){n(t),i.unsubscribe()}},error:n,complete:e});r.subscribe(i)}))},t.prototype._subscribe=function(t){var e;return null===(e=this.source)||void 0===e?void 0:e.subscribe(t)},t.prototype[q]=function(){return this},t.prototype.pipe=function(){for(var t,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return(0===(t=e).length?j:1===t.length?t[0]:function(e){return t.reduce((function(t,e){return e(t)}),e)})(this)},t.prototype.toPromise=function(t){var e=this;return new(t=R(t))((function(t,r){var n;e.subscribe((function(t){return n=t}),(function(t){return r(t)}),(function(){return t(n)}))}))},t.create=function(e){return new t(e)},t}();function R(t){var e;return null!==(e=null!=t?t:x.Promise)&&void 0!==e?e:Promise}function U(t){return d(null==t?void 0:t.lift)}function M(t){return function(e){if(U(e))return e.lift((function(e){try{return t(e,this)}catch(t){this.error(t)}}));throw new TypeError("Unable to lift unknown Observable type")}}function B(t,e,r,n,i){return new N(t,e,r,n,i)}var N=function(t){function e(e,r,n,i,o,u){var s=t.call(this,e)||this;return s.onFinalize=o,s.shouldUnsubscribe=u,s._next=r?function(t){try{r(t)}catch(t){e.error(t)}}:t.prototype._next,s._error=i?function(t){try{i(t)}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._error,s._complete=n?function(){try{n()}catch(t){e.error(t)}finally{this.unsubscribe()}}:t.prototype._complete,s}return r(e,t),e.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;t.prototype.unsubscribe.call(this),!r&&(null===(e=this.onFinalize)||void 0===e||e.call(this))}},e}(k);!function(t){function e(e,r){var n=t.call(this)||this;return n.source=e,n.subjectFactory=r,n._subject=null,n._refCount=0,n._connection=null,U(e)&&(n.lift=e.lift),n}r(e,t),e.prototype._subscribe=function(t){return this.getSubject().subscribe(t)},e.prototype.getSubject=function(){var t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject},e.prototype._teardown=function(){this._refCount=0;var t=this._connection;this._subject=this._connection=null,null==t||t.unsubscribe()},e.prototype.connect=function(){var t=this,e=this._connection;if(!e){e=this._connection=new m;var r=this.getSubject();e.add(this.source.subscribe(B(r,void 0,(function(){t._teardown(),r.complete()}),(function(e){t._teardown(),r.error(e)}),(function(){return t._teardown()})))),e.closed&&(this._connection=null,e=m.EMPTY)}return e},e.prototype.refCount=function(){return M((function(t,e){var r=null;t._refCount++;var n=B(e,void 0,void 0,void 0,(function(){if(!t||t._refCount<=0||0<--t._refCount)r=null;else{var n=t._connection,i=r;r=null,!n||i&&n!==i||n.unsubscribe(),e.unsubscribe()}}));t.subscribe(n),n.closed||(r=t.connect())}))(this)}}(z);var D,V={now:function(){return(V.delegate||performance).now()},delegate:void 0},L={schedule:function(t){var e=requestAnimationFrame,r=cancelAnimationFrame,n=e((function(e){r=void 0,t(e)}));return new m((function(){return null==r?void 0:r(n)}))},requestAnimationFrame:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var r=L.delegate;return((null==r?void 0:r.requestAnimationFrame)||requestAnimationFrame).apply(void 0,s([],u(t)))},cancelAnimationFrame:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return cancelAnimationFrame.apply(void 0,s([],u(t)))},delegate:void 0};new z((function(t){var e=D||V,r=e.now(),n=0,i=function(){t.closed||(n=L.requestAnimationFrame((function(o){n=0;var u=e.now();t.next({timestamp:D?u:o,elapsed:u-r}),i()})))};return i(),function(){n&&L.cancelAnimationFrame(n)}}));var W=v((function(t){return function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}})),H=function(t){function e(){var e=t.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return r(e,t),e.prototype.lift=function(t){var e=new Y(this,this);return e.operator=t,e},e.prototype._throwIfClosed=function(){if(this.closed)throw new W},e.prototype.next=function(t){var e=this;E((function(){var r,n;if(e._throwIfClosed(),!e.isStopped){e.currentObservers||(e.currentObservers=Array.from(e.observers));try{for(var i=o(e.currentObservers),u=i.next();!u.done;u=i.next()){u.value.next(t)}}catch(t){r={error:t}}finally{try{u&&!u.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}}}))},e.prototype.error=function(t){var e=this;E((function(){if(e._throwIfClosed(),!e.isStopped){e.hasError=e.isStopped=!0,e.thrownError=t;for(var r=e.observers;r.length;)r.shift().error(t)}}))},e.prototype.complete=function(){var t=this;E((function(){if(t._throwIfClosed(),!t.isStopped){t.isStopped=!0;for(var e=t.observers;e.length;)e.shift().complete()}}))},e.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(e.prototype,"observed",{get:function(){var t;return(null===(t=this.observers)||void 0===t?void 0:t.length)>0},enumerable:!1,configurable:!0}),e.prototype._trySubscribe=function(e){return this._throwIfClosed(),t.prototype._trySubscribe.call(this,e)},e.prototype._subscribe=function(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)},e.prototype._innerSubscribe=function(t){var e=this,r=this,n=r.hasError,i=r.isStopped,o=r.observers;return n||i?w:(this.currentObservers=null,o.push(t),new m((function(){e.currentObservers=null,b(o,t)})))},e.prototype._checkFinalizedStatuses=function(t){var e=this,r=e.hasError,n=e.thrownError,i=e.isStopped;r?t.error(n):i&&t.complete()},e.prototype.asObservable=function(){var t=new z;return t.source=this,t},e.create=function(t,e){return new Y(t,e)},e}(z),Y=function(t){function e(e,r){var n=t.call(this)||this;return n.destination=e,n.source=r,n}return r(e,t),e.prototype.next=function(t){var e,r;null===(r=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===r||r.call(e,t)},e.prototype.error=function(t){var e,r;null===(r=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===r||r.call(e,t)},e.prototype.complete=function(){var t,e;null===(e=null===(t=this.destination)||void 0===t?void 0:t.complete)||void 0===e||e.call(t)},e.prototype._subscribe=function(t){var e,r;return null!==(r=null===(e=this.source)||void 0===e?void 0:e.subscribe(t))&&void 0!==r?r:w},e}(H);!function(t){function e(e){var r=t.call(this)||this;return r._value=e,r}r(e,t),Object.defineProperty(e.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),e.prototype._subscribe=function(e){var r=t.prototype._subscribe.call(this,e);return!r.closed&&e.next(this._value),r},e.prototype.getValue=function(){var t=this,e=t.hasError,r=t.thrownError,n=t._value;if(e)throw r;return this._throwIfClosed(),n},e.prototype.next=function(e){t.prototype.next.call(this,this._value=e)}}(H);var Q={now:function(){return(Q.delegate||Date).now()},delegate:void 0};!function(t){function e(e,r,n){void 0===e&&(e=1/0),void 0===r&&(r=1/0),void 0===n&&(n=Q);var i=t.call(this)||this;return i._bufferSize=e,i._windowTime=r,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=r===1/0,i._bufferSize=Math.max(1,e),i._windowTime=Math.max(1,r),i}r(e,t),e.prototype.next=function(e){var r=this,n=r.isStopped,i=r._buffer,o=r._infiniteTimeWindow,u=r._timestampProvider,s=r._windowTime;n||(i.push(e),!o&&i.push(u.now()+s)),this._trimBuffer(),t.prototype.next.call(this,e)},e.prototype._subscribe=function(t){this._throwIfClosed(),this._trimBuffer();for(var e=this._innerSubscribe(t),r=this._infiniteTimeWindow,n=this._buffer.slice(),i=0;i<n.length&&!t.closed;i+=r?1:2)t.next(n[i]);return this._checkFinalizedStatuses(t),e},e.prototype._trimBuffer=function(){var t=this,e=t._bufferSize,r=t._timestampProvider,n=t._buffer,i=t._infiniteTimeWindow,o=(i?1:2)*e;if(e<1/0&&o<n.length&&n.splice(0,n.length-o),!i){for(var u=r.now(),s=0,c=1;c<n.length&&n[c]<=u;c+=2)s=c;s&&n.splice(0,s+1)}}}(H),function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._value=null,e._hasValue=!1,e._isComplete=!1,e}r(e,t),e.prototype._checkFinalizedStatuses=function(t){var e=this,r=e.hasError,n=e._hasValue,i=e._value,o=e.thrownError,u=e.isStopped,s=e._isComplete;r?t.error(o):(u||s)&&(n&&t.next(i),t.complete())},e.prototype.next=function(t){this.isStopped||(this._value=t,this._hasValue=!0)},e.prototype.complete=function(){var e=this,r=e._hasValue,n=e._value;e._isComplete||(this._isComplete=!0,r&&t.prototype.next.call(this,n),t.prototype.complete.call(this))}}(H);var $,G=function(t){function e(e,r){return t.call(this)||this}return r(e,t),e.prototype.schedule=function(t,e){return this},e}(m),X=function(t,e){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return setInterval.apply(void 0,s([t,e],u(r)))},J=function(t){return clearInterval(t)},K=function(t){function e(e,r){var n=t.call(this,e,r)||this;return n.scheduler=e,n.work=r,n.pending=!1,n}return r(e,t),e.prototype.schedule=function(t,e){var r;if(void 0===e&&(e=0),this.closed)return this;this.state=t;var n=this.id,i=this.scheduler;return null!=n&&(this.id=this.recycleAsyncId(i,n,e)),this.pending=!0,this.delay=e,this.id=null!==(r=this.id)&&void 0!==r?r:this.requestAsyncId(i,this.id,e),this},e.prototype.requestAsyncId=function(t,e,r){return void 0===r&&(r=0),X(t.flush.bind(t,this),r)},e.prototype.recycleAsyncId=function(t,e,r){if(void 0===r&&(r=0),null!=r&&this.delay===r&&!1===this.pending)return e;null!=e&&J(e)},e.prototype.execute=function(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var r=this._execute(t,e);if(r)return r;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},e.prototype._execute=function(t,e){var r,n=!1;try{this.work(t)}catch(t){n=!0,r=t||new Error("Scheduled action threw falsy error")}if(n)return this.unsubscribe(),r},e.prototype.unsubscribe=function(){if(!this.closed){var e=this.id,r=this.scheduler,n=r.actions;this.work=this.state=this.scheduler=null,this.pending=!1,b(n,this),null!=e&&(this.id=this.recycleAsyncId(r,e,null)),this.delay=null,t.prototype.unsubscribe.call(this)}},e}(G),Z=1,tt={};function et(t){return t in tt&&(delete tt[t],!0)}var rt=function(t){var e=Z++;return tt[e]=!0,$||($=Promise.resolve()),$.then((function(){return et(e)&&t()})),e},nt=function(t){et(t)},it={setImmediate:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var r=it.delegate;return((null==r?void 0:r.setImmediate)||rt).apply(void 0,s([],u(t)))},clearImmediate:function(t){return nt(t)},delegate:void 0},ot=function(t){function e(e,r){var n=t.call(this,e,r)||this;return n.scheduler=e,n.work=r,n}return r(e,t),e.prototype.requestAsyncId=function(e,r,n){return void 0===n&&(n=0),null!==n&&n>0?t.prototype.requestAsyncId.call(this,e,r,n):(e.actions.push(this),e._scheduled||(e._scheduled=it.setImmediate(e.flush.bind(e,void 0))))},e.prototype.recycleAsyncId=function(e,r,n){var i;if(void 0===n&&(n=0),null!=n?n>0:this.delay>0)return t.prototype.recycleAsyncId.call(this,e,r,n);var o=e.actions;null!=r&&(null===(i=o[o.length-1])||void 0===i?void 0:i.id)!==r&&(it.clearImmediate(r),e._scheduled===r&&(e._scheduled=void 0))},e}(K),ut=function(){function t(e,r){void 0===r&&(r=t.now),this.schedulerActionCtor=e,this.now=r}return t.prototype.schedule=function(t,e,r){return void 0===e&&(e=0),new this.schedulerActionCtor(this,t).schedule(r,e)},t.now=Q.now,t}(),st=function(t){function e(e,r){void 0===r&&(r=ut.now);var n=t.call(this,e,r)||this;return n.actions=[],n._active=!1,n}return r(e,t),e.prototype.flush=function(t){var e=this.actions;if(this._active)e.push(t);else{var r;this._active=!0;do{if(r=t.execute(t.state,t.delay))break}while(t=e.shift());if(this._active=!1,r){for(;t=e.shift();)t.unsubscribe();throw r}}},e}(ut),ct=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.prototype.flush=function(t){this._active=!0;var e=this._scheduled;this._scheduled=void 0;var r,n=this.actions;t=t||n.shift();do{if(r=t.execute(t.state,t.delay))break}while((t=n[0])&&t.id===e&&n.shift());if(this._active=!1,r){for(;(t=n[0])&&t.id===e&&n.shift();)t.unsubscribe();throw r}},e}(st);new ct(ot),new st(K);var at=function(t){function e(e,r){var n=t.call(this,e,r)||this;return n.scheduler=e,n.work=r,n}return r(e,t),e.prototype.schedule=function(e,r){return void 0===r&&(r=0),r>0?t.prototype.schedule.call(this,e,r):(this.delay=r,this.state=e,this.scheduler.flush(this),this)},e.prototype.execute=function(e,r){return r>0||this.closed?t.prototype.execute.call(this,e,r):this._execute(e,r)},e.prototype.requestAsyncId=function(e,r,n){return void 0===n&&(n=0),null!=n&&n>0||null==n&&this.delay>0?t.prototype.requestAsyncId.call(this,e,r,n):(e.flush(this),0)},e}(K),lt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e}(st);new lt(at);var ft=function(t){function e(e,r){var n=t.call(this,e,r)||this;return n.scheduler=e,n.work=r,n}return r(e,t),e.prototype.requestAsyncId=function(e,r,n){return void 0===n&&(n=0),null!==n&&n>0?t.prototype.requestAsyncId.call(this,e,r,n):(e.actions.push(this),e._scheduled||(e._scheduled=L.requestAnimationFrame((function(){return e.flush(void 0)}))))},e.prototype.recycleAsyncId=function(e,r,n){var i;if(void 0===n&&(n=0),null!=n?n>0:this.delay>0)return t.prototype.recycleAsyncId.call(this,e,r,n);var o=e.actions;null!=r&&r===e._scheduled&&(null===(i=o[o.length-1])||void 0===i?void 0:i.id)!==r&&(L.cancelAnimationFrame(r),e._scheduled=void 0)},e}(K),ht=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.prototype.flush=function(t){var e;this._active=!0,t?e=t.id:(e=this._scheduled,this._scheduled=void 0);var r,n=this.actions;t=t||n.shift();do{if(r=t.execute(t.state,t.delay))break}while((t=n[0])&&t.id===e&&n.shift());if(this._active=!1,r){for(;(t=n[0])&&t.id===e&&n.shift();)t.unsubscribe();throw r}},e}(st);new ht(ft),function(t){function e(e,r){void 0===e&&(e=dt),void 0===r&&(r=1/0);var n=t.call(this,e,(function(){return n.frame}))||this;return n.maxFrames=r,n.frame=0,n.index=-1,n}r(e,t),e.prototype.flush=function(){for(var t,e,r=this.actions,n=this.maxFrames;(e=r[0])&&e.delay<=n&&(r.shift(),this.frame=e.delay,!(t=e.execute(e.state,e.delay))););if(t){for(;e=r.shift();)e.unsubscribe();throw t}},e.frameTimeFactor=10}(st);var pt,dt=function(t){function e(e,r,n){void 0===n&&(n=e.index+=1);var i=t.call(this,e,r)||this;return i.scheduler=e,i.work=r,i.index=n,i.active=!0,i.index=e.index=n,i}return r(e,t),e.prototype.schedule=function(r,n){if(void 0===n&&(n=0),Number.isFinite(n)){if(!this.id)return t.prototype.schedule.call(this,r,n);this.active=!1;var i=new e(this.scheduler,this.work);return this.add(i),i.schedule(r,n)}return m.EMPTY},e.prototype.requestAsyncId=function(t,r,n){void 0===n&&(n=0),this.delay=t.frame+n;var i=t.actions;return i.push(this),i.sort(e.sortActions),1},e.prototype.recycleAsyncId=function(t,e,r){},e.prototype._execute=function(e,r){if(!0===this.active)return t.prototype._execute.call(this,e,r)},e.sortActions=function(t,e){return t.delay===e.delay?t.index===e.index?0:t.index>e.index?1:-1:t.delay>e.delay?1:-1},e}(K);new z((function(t){return t.complete()})),function(t){t.NEXT="N",t.ERROR="E",t.COMPLETE="C"}(pt||(pt={})),v((function(t){return function(){t(this),this.name="EmptyError",this.message="no elements in sequence"}})),v((function(t){return function(){t(this),this.name="ArgumentOutOfRangeError",this.message="argument out of range"}})),v((function(t){return function(e){t(this),this.name="NotFoundError",this.message=e}})),v((function(t){return function(e){t(this),this.name="SequenceError",this.message=e}})),v((function(t){return function(e){void 0===e&&(e=null),t(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=e}})),new z(A);var vt,yt="500-599";function bt(t,e){var r="^"+e.replace(/[-[\]{}()+?.,\\^$|#\s]/g,"\\$&").replace(/\*/g,".*")+"$";return new RegExp(r).test(t)}function mt(t,e){var r,n,i=e.split(",");try{for(var s=o(i),c=s.next();!c.done;c=s.next()){var a=u(c.value.split("-").map(Number),2),l=a[0],f=a[1];if(t===l&&void 0===f)return!0;if(t>=l&&t<=f)return!0}}catch(t){r={error:t}}finally{try{c&&!c.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return!1}function wt(t){var e;try{var r=null===(e=c())||void 0===e?void 0:e.location.href,n=new URL(t,r),i=n.searchParams.toString(),o=n.hash.replace("#",""),u=n.href,s=n.host;return n.hash="",n.search="",{query:i,fragment:o,href:u,hrefWithoutQueryOrHash:n.href,host:s}}catch(t){return}}function _t(t,e){var r;void 0===e&&(e={});var n=wt(t.url);if(!n)return!1;var i,o=n.host;if(!1!==e.ignoreAmplitudeRequests&&(bt(o,"*.amplitude.com")||bt(o,"amplitude.com")))return!1;if(null===(r=e.ignoreHosts)||void 0===r?void 0:r.find((function(t){return bt(o,t)})))return!1;if(!e.captureRules&&void 0!==t.status&&!mt(t.status,yt))return!1;if(e.captureRules&&(s([],u(e.captureRules),!1).reverse().find((function(e){return i=function(t,e,r){if(!t.hosts||t.hosts.find((function(t){return bt(e,t)})))return!((r||0===r)&&!mt(r,t.statusCodeRange||yt))}(e,o,t.status),void 0!==i})),!i))return!1;return!0}function gt(t){var e,r,n=t.allObservables,i=t.networkTrackingOptions,o=t.amplitude;return n.networkObservable.pipe((e=function(t){return _t(t.event,i)},M((function(t,n){var i=0;t.subscribe(B(n,(function(t){return e.call(r,t,i++)&&n.next(t)})))})))).subscribe((function(t){var e,r=t.event,n=wt(r.url);if(n){var i=((e={})["[Amplitude] URL"]=n.hrefWithoutQueryOrHash,e["[Amplitude] URL Query"]=n.query,e["[Amplitude] URL Fragment"]=n.fragment,e["[Amplitude] Request Method"]=r.method,e["[Amplitude] Status Code"]=r.status,e["[Amplitude] Start Time"]=r.startTime,e["[Amplitude] Completion Time"]=r.endTime,e["[Amplitude] Duration"]=r.duration,e["[Amplitude] Request Body Size"]=r.requestBodySize,e["[Amplitude] Response Body Size"]=r.responseBodySize,e);null==o||o.track("[Amplitude] Network Request",i)}}))}!function(t){t.NetworkObservable="networkObservable"}(vt||(vt={}));var xt=function(t){void 0===t&&(t={});var e="@amplitude/plugin-network-capture-browser",r=[],u=function(){var t,e=new z((function(t){var e=new h((function(e){var r=function(t,e){return{event:t,timestamp:Date.now(),type:e}}(e,"network");t.next(r)}));return p.subscribe(e),function(){p.unsubscribe(e)}}));return(t={})[vt.NetworkObservable]=e,t};return{name:e,type:"enrichment",setup:function(o,s){return n(void 0,void 0,void 0,(function(){var n,c,a;return i(this,(function(i){return"undefined"==typeof document||(n=u(),c=gt({allObservables:n,networkTrackingOptions:t,amplitude:s}),r.push(c),null===(a=null==o?void 0:o.loggerProvider)||void 0===a||a.log("".concat(e," has been successfully added."))),[2]}))}))},execute:function(t){return n(void 0,void 0,void 0,(function(){return i(this,(function(e){return[2,t]}))}))},teardown:function(){return n(void 0,void 0,void 0,(function(){var t,e,n,u;return i(this,(function(i){try{for(t=o(r),e=t.next();!e.done;e=t.next())e.value.unsubscribe()}catch(t){n={error:t}}finally{try{e&&!e.done&&(u=t.return)&&u.call(t)}finally{if(n)throw n.error}}return[2]}))}))}}};return t.networkCapturePlugin=xt,t.plugin=xt,Object.defineProperty(t,"__esModule",{value:!0}),t}({});
2
2
  //# sourceMappingURL=amplitude-min.js.map
Binary file