diff --git a/networkProxy/coverage/base.css b/networkProxy/coverage/base.css new file mode 100644 index 000000000..f418035b4 --- /dev/null +++ b/networkProxy/coverage/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/networkProxy/coverage/beaconProxy.ts.html b/networkProxy/coverage/beaconProxy.ts.html new file mode 100644 index 000000000..2e0301465 --- /dev/null +++ b/networkProxy/coverage/beaconProxy.ts.html @@ -0,0 +1,397 @@ + + + + + + Code coverage report for beaconProxy.ts + + + + + + + + + +
+
+

All files beaconProxy.ts

+
+ +
+ 0% + Statements + 0/51 +
+ + +
+ 0% + Branches + 0/24 +
+ + +
+ 0% + Functions + 0/5 +
+ + +
+ 0% + Lines + 0/51 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import NetworkMessage from './networkMessage'
+import { RequestState, INetworkMessage, RequestResponseData } from './types';
+import { genStringBody, getURL } from './utils'
+ 
+// https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+const getContentType = (data?: BodyInit) => {
+  if (data instanceof Blob) {
+    return data.type
+  }
+  if (data instanceof FormData) {
+    return 'multipart/form-data'
+  }
+  if (data instanceof URLSearchParams) {
+    return 'application/x-www-form-urlencoded;charset=UTF-8'
+  }
+  return 'text/plain;charset=UTF-8'
+}
+ 
+export class BeaconProxyHandler<T extends typeof navigator.sendBeacon> implements ProxyHandler<T> {
+  constructor(
+    private readonly ignoredHeaders: boolean | string[],
+    private readonly setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
+    private readonly sanitize: (data: RequestResponseData) => RequestResponseData | null,
+    private readonly sendMessage: (item: INetworkMessage) => void,
+    private readonly isServiceUrl: (url: string) => boolean,
+  ) {}
+ 
+  public apply(target: T, thisArg: T, argsList: any[]) {
+    const urlString: string = argsList[0]
+    const data: BodyInit = argsList[1]
+    const item = new NetworkMessage(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize)
+    if (this.isServiceUrl(urlString)) {
+      return target.apply(thisArg, argsList)
+    }
+    const url = getURL(urlString)
+    item.method = 'POST'
+    item.url = urlString
+    item.name = (url.pathname.split('/').pop() || '') + url.search
+    item.requestType = 'beacon'
+    item.requestHeader = { 'Content-Type': getContentType(data) }
+    item.status = 0
+    item.statusText = 'Pending'
+ 
+    if (url.search && url.searchParams) {
+      item.getData = {}
+      for (const [key, value] of url.searchParams) {
+        item.getData[key] = value
+      }
+    }
+    item.requestData = genStringBody(data)
+ 
+    if (!item.startTime) {
+      item.startTime = performance.now()
+    }
+ 
+    const isSuccess = target.apply(thisArg, argsList)
+    if (isSuccess) {
+      item.endTime = performance.now()
+      item.duration = item.endTime - (item.startTime || item.endTime)
+      item.status = 0
+      item.statusText = 'Sent'
+      item.readyState = 4
+    } else {
+      item.status = 500
+      item.statusText = 'Unknown'
+    }
+ 
+    const msg = item.getMessage()
+    if (msg) {
+      this.sendMessage(msg)
+    }
+    return isSuccess
+  }
+}
+ 
+export default class BeaconProxy {
+  public static origSendBeacon = window?.navigator?.sendBeacon
+ 
+  public static hasSendBeacon() {
+    return !!BeaconProxy.origSendBeacon
+  }
+ 
+  public static create(
+    ignoredHeaders: boolean | string[],
+    setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
+    sanitize: (data: RequestResponseData) => RequestResponseData | null,
+    sendMessage: (item: INetworkMessage) => void,
+    isServiceUrl: (url: string) => boolean,
+  ) {
+    if (!BeaconProxy.hasSendBeacon()) {
+      return undefined
+    }
+    return new Proxy(
+      BeaconProxy.origSendBeacon,
+      new BeaconProxyHandler(
+        ignoredHeaders,
+        setSessionTokenHeader,
+        sanitize,
+        sendMessage,
+        isServiceUrl,
+      ),
+    )
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/networkProxy/coverage/block-navigation.js b/networkProxy/coverage/block-navigation.js new file mode 100644 index 000000000..cc1213023 --- /dev/null +++ b/networkProxy/coverage/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/networkProxy/coverage/clover.xml b/networkProxy/coverage/clover.xml new file mode 100644 index 000000000..5da36a65c --- /dev/null +++ b/networkProxy/coverage/clover.xml @@ -0,0 +1,521 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/networkProxy/coverage/coverage-final.json b/networkProxy/coverage/coverage-final.json new file mode 100644 index 000000000..b77502bd0 --- /dev/null +++ b/networkProxy/coverage/coverage-final.json @@ -0,0 +1,8 @@ +{"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/beaconProxy.ts": {"path":"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/beaconProxy.ts","statementMap":{"0":{"start":{"line":6,"column":23},"end":{"line":17,"column":null}},"1":{"start":{"line":7,"column":2},"end":{"line":9,"column":null}},"2":{"start":{"line":8,"column":4},"end":{"line":8,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":12,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":2},"end":{"line":15,"column":null}},"6":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"7":{"start":{"line":16,"column":2},"end":{"line":16,"column":null}},"8":{"start":{"line":21,"column":21},"end":{"line":21,"column":null}},"9":{"start":{"line":22,"column":21},"end":{"line":22,"column":null}},"10":{"start":{"line":23,"column":21},"end":{"line":23,"column":null}},"11":{"start":{"line":24,"column":21},"end":{"line":24,"column":null}},"12":{"start":{"line":25,"column":21},"end":{"line":25,"column":null}},"13":{"start":{"line":29,"column":30},"end":{"line":29,"column":null}},"14":{"start":{"line":30,"column":27},"end":{"line":30,"column":null}},"15":{"start":{"line":31,"column":17},"end":{"line":31,"column":null}},"16":{"start":{"line":32,"column":4},"end":{"line":34,"column":null}},"17":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"18":{"start":{"line":35,"column":16},"end":{"line":35,"column":null}},"19":{"start":{"line":36,"column":4},"end":{"line":36,"column":null}},"20":{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},"21":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"22":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"23":{"start":{"line":40,"column":4},"end":{"line":40,"column":null}},"24":{"start":{"line":41,"column":4},"end":{"line":41,"column":null}},"25":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"26":{"start":{"line":44,"column":4},"end":{"line":49,"column":null}},"27":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"28":{"start":{"line":46,"column":6},"end":{"line":48,"column":null}},"29":{"start":{"line":47,"column":8},"end":{"line":47,"column":null}},"30":{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},"31":{"start":{"line":52,"column":4},"end":{"line":54,"column":null}},"32":{"start":{"line":53,"column":6},"end":{"line":53,"column":null}},"33":{"start":{"line":56,"column":22},"end":{"line":56,"column":null}},"34":{"start":{"line":57,"column":4},"end":{"line":66,"column":null}},"35":{"start":{"line":58,"column":6},"end":{"line":58,"column":null}},"36":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"37":{"start":{"line":60,"column":6},"end":{"line":60,"column":null}},"38":{"start":{"line":61,"column":6},"end":{"line":61,"column":null}},"39":{"start":{"line":62,"column":6},"end":{"line":62,"column":null}},"40":{"start":{"line":64,"column":6},"end":{"line":64,"column":null}},"41":{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},"42":{"start":{"line":68,"column":16},"end":{"line":68,"column":null}},"43":{"start":{"line":69,"column":4},"end":{"line":71,"column":null}},"44":{"start":{"line":70,"column":6},"end":{"line":70,"column":null}},"45":{"start":{"line":72,"column":4},"end":{"line":72,"column":null}},"46":{"start":{"line":77,"column":2},"end":{"line":77,"column":null}},"47":{"start":{"line":80,"column":4},"end":{"line":80,"column":null}},"48":{"start":{"line":90,"column":4},"end":{"line":92,"column":null}},"49":{"start":{"line":91,"column":6},"end":{"line":91,"column":null}},"50":{"start":{"line":93,"column":4},"end":{"line":102,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":23},"end":{"line":6,"column":24}},"loc":{"start":{"line":6,"column":44},"end":{"line":17,"column":null}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"loc":{"start":{"line":26,"column":4},"end":{"line":26,"column":null}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":28,"column":9},"end":{"line":28,"column":15}},"loc":{"start":{"line":28,"column":55},"end":{"line":73,"column":null}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":79,"column":2},"end":{"line":79,"column":16}},"loc":{"start":{"line":79,"column":32},"end":{"line":81,"column":null}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":83,"column":2},"end":{"line":83,"column":16}},"loc":{"start":{"line":89,"column":4},"end":{"line":103,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":2},"end":{"line":9,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":2},"end":{"line":9,"column":null}},{"start":{},"end":{}}]},"1":{"loc":{"start":{"line":10,"column":2},"end":{"line":12,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":12,"column":null}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":13,"column":2},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":2},"end":{"line":15,"column":null}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":32,"column":4},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":34,"column":null}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":38,"column":17},"end":{"line":38,"column":56}},"type":"binary-expr","locations":[{"start":{"line":38,"column":17},"end":{"line":38,"column":50}},{"start":{"line":38,"column":50},"end":{"line":38,"column":56}}]},"5":{"loc":{"start":{"line":44,"column":4},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":49,"column":null}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":44,"column":8},"end":{"line":44,"column":40}},"type":"binary-expr","locations":[{"start":{"line":44,"column":8},"end":{"line":44,"column":22}},{"start":{"line":44,"column":22},"end":{"line":44,"column":40}}]},"7":{"loc":{"start":{"line":52,"column":4},"end":{"line":54,"column":null}},"type":"if","locations":[{"start":{"line":52,"column":4},"end":{"line":54,"column":null}},{"start":{},"end":{}}]},"8":{"loc":{"start":{"line":57,"column":4},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":66,"column":null}},{"start":{"line":63,"column":11},"end":{"line":66,"column":null}}]},"9":{"loc":{"start":{"line":59,"column":38},"end":{"line":59,"column":null}},"type":"binary-expr","locations":[{"start":{"line":59,"column":38},"end":{"line":59,"column":56}},{"start":{"line":59,"column":56},"end":{"line":59,"column":null}}]},"10":{"loc":{"start":{"line":69,"column":4},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":71,"column":null}},{"start":{},"end":{}}]},"11":{"loc":{"start":{"line":90,"column":4},"end":{"line":92,"column":null}},"type":"if","locations":[{"start":{"line":90,"column":4},"end":{"line":92,"column":null}},{"start":{},"end":{}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0]}} +,"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/fetchProxy.ts": {"path":"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/fetchProxy.ts","statementMap":{"0":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":null}},"2":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"3":{"start":{"line":23,"column":4},"end":{"line":23,"column":null}},"4":{"start":{"line":27,"column":18},"end":{"line":27,"column":null}},"5":{"start":{"line":28,"column":4},"end":{"line":42,"column":null}},"6":{"start":{"line":34,"column":8},"end":{"line":41,"column":null}},"7":{"start":{"line":35,"column":10},"end":{"line":35,"column":null}},"8":{"start":{"line":37,"column":10},"end":{"line":40,"column":null}},"9":{"start":{"line":38,"column":12},"end":{"line":38,"column":null}},"10":{"start":{"line":39,"column":12},"end":{"line":39,"column":null}},"11":{"start":{"line":43,"column":4},"end":{"line":47,"column":null}},"12":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"13":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"14":{"start":{"line":52,"column":4},"end":{"line":55,"column":null}},"15":{"start":{"line":54,"column":6},"end":{"line":54,"column":null}},"16":{"start":{"line":56,"column":4},"end":{"line":58,"column":null}},"17":{"start":{"line":57,"column":6},"end":{"line":57,"column":null}},"18":{"start":{"line":59,"column":23},"end":{"line":59,"column":null}},"19":{"start":{"line":61,"column":4},"end":{"line":116,"column":null}},"20":{"start":{"line":62,"column":52},"end":{"line":62,"column":null}},"21":{"start":{"line":67,"column":6},"end":{"line":69,"column":null}},"22":{"start":{"line":68,"column":8},"end":{"line":68,"column":null}},"23":{"start":{"line":71,"column":20},"end":{"line":71,"column":null}},"24":{"start":{"line":72,"column":22},"end":{"line":72,"column":null}},"25":{"start":{"line":73,"column":6},"end":{"line":73,"column":null}},"26":{"start":{"line":76,"column":6},"end":{"line":105,"column":null}},"27":{"start":{"line":77,"column":8},"end":{"line":104,"column":null}},"28":{"start":{"line":79,"column":12},"end":{"line":89,"column":null}},"29":{"start":{"line":81,"column":14},"end":{"line":81,"column":null}},"30":{"start":{"line":84,"column":31},"end":{"line":84,"column":null}},"31":{"start":{"line":85,"column":14},"end":{"line":85,"column":null}},"32":{"start":{"line":87,"column":14},"end":{"line":87,"column":null}},"33":{"start":{"line":88,"column":14},"end":{"line":88,"column":null}},"34":{"start":{"line":90,"column":12},"end":{"line":90,"column":null}},"35":{"start":{"line":91,"column":12},"end":{"line":91,"column":null}},"36":{"start":{"line":92,"column":12},"end":{"line":92,"column":null}},"37":{"start":{"line":93,"column":12},"end":{"line":93,"column":null}},"38":{"start":{"line":94,"column":12},"end":{"line":94,"column":null}},"39":{"start":{"line":95,"column":12},"end":{"line":95,"column":null}},"40":{"start":{"line":96,"column":12},"end":{"line":101,"column":null}},"41":{"start":{"line":97,"column":14},"end":{"line":100,"column":null}},"42":{"start":{"line":102,"column":12},"end":{"line":102,"column":null}},"43":{"start":{"line":107,"column":6},"end":{"line":114,"column":null}},"44":{"start":{"line":108,"column":8},"end":{"line":108,"column":null}},"45":{"start":{"line":109,"column":8},"end":{"line":109,"column":null}},"46":{"start":{"line":110,"column":8},"end":{"line":110,"column":null}},"47":{"start":{"line":111,"column":8},"end":{"line":111,"column":null}},"48":{"start":{"line":112,"column":8},"end":{"line":112,"column":null}},"49":{"start":{"line":113,"column":8},"end":{"line":113,"column":null}},"50":{"start":{"line":115,"column":6},"end":{"line":115,"column":null}},"51":{"start":{"line":122,"column":21},"end":{"line":122,"column":null}},"52":{"start":{"line":123,"column":21},"end":{"line":123,"column":null}},"53":{"start":{"line":124,"column":21},"end":{"line":124,"column":null}},"54":{"start":{"line":125,"column":21},"end":{"line":125,"column":null}},"55":{"start":{"line":126,"column":21},"end":{"line":126,"column":null}},"56":{"start":{"line":127,"column":21},"end":{"line":127,"column":null}},"57":{"start":{"line":131,"column":18},"end":{"line":131,"column":null}},"58":{"start":{"line":132,"column":17},"end":{"line":132,"column":null}},"59":{"start":{"line":133,"column":4},"end":{"line":139,"column":null}},"60":{"start":{"line":138,"column":6},"end":{"line":138,"column":null}},"61":{"start":{"line":142,"column":6},"end":{"line":144,"column":null}},"62":{"start":{"line":146,"column":4},"end":{"line":148,"column":null}},"63":{"start":{"line":147,"column":6},"end":{"line":147,"column":null}},"64":{"start":{"line":150,"column":17},"end":{"line":150,"column":null}},"65":{"start":{"line":151,"column":4},"end":{"line":151,"column":null}},"66":{"start":{"line":153,"column":4},"end":{"line":175,"column":null}},"67":{"start":{"line":154,"column":6},"end":{"line":158,"column":null}},"68":{"start":{"line":155,"column":8},"end":{"line":157,"column":null}},"69":{"start":{"line":156,"column":10},"end":{"line":156,"column":null}},"70":{"start":{"line":159,"column":6},"end":{"line":174,"column":null}},"71":{"start":{"line":160,"column":8},"end":{"line":160,"column":null}},"72":{"start":{"line":162,"column":8},"end":{"line":162,"column":null}},"73":{"start":{"line":162,"column":26},"end":{"line":162,"column":null}},"74":{"start":{"line":163,"column":8},"end":{"line":165,"column":null}},"75":{"start":{"line":164,"column":10},"end":{"line":164,"column":null}},"76":{"start":{"line":166,"column":8},"end":{"line":173,"column":null}},"77":{"start":{"line":167,"column":10},"end":{"line":167,"column":null}},"78":{"start":{"line":168,"column":8},"end":{"line":173,"column":null}},"79":{"start":{"line":169,"column":10},"end":{"line":169,"column":null}},"80":{"start":{"line":172,"column":10},"end":{"line":172,"column":null}},"81":{"start":{"line":176,"column":4},"end":{"line":183,"column":null}},"82":{"start":{"line":180,"column":8},"end":{"line":180,"column":null}},"83":{"start":{"line":181,"column":8},"end":{"line":181,"column":null}},"84":{"start":{"line":182,"column":8},"end":{"line":182,"column":null}},"85":{"start":{"line":188,"column":15},"end":{"line":188,"column":null}},"86":{"start":{"line":189,"column":35},"end":{"line":189,"column":null}},"87":{"start":{"line":192,"column":4},"end":{"line":202,"column":null}},"88":{"start":{"line":194,"column":6},"end":{"line":194,"column":null}},"89":{"start":{"line":195,"column":6},"end":{"line":195,"column":null}},"90":{"start":{"line":196,"column":6},"end":{"line":196,"column":null}},"91":{"start":{"line":199,"column":6},"end":{"line":199,"column":null}},"92":{"start":{"line":200,"column":6},"end":{"line":200,"column":null}},"93":{"start":{"line":201,"column":6},"end":{"line":201,"column":null}},"94":{"start":{"line":204,"column":4},"end":{"line":204,"column":null}},"95":{"start":{"line":205,"column":4},"end":{"line":205,"column":null}},"96":{"start":{"line":206,"column":4},"end":{"line":206,"column":null}},"97":{"start":{"line":207,"column":4},"end":{"line":207,"column":null}},"98":{"start":{"line":208,"column":4},"end":{"line":208,"column":null}},"99":{"start":{"line":209,"column":4},"end":{"line":209,"column":null}},"100":{"start":{"line":210,"column":4},"end":{"line":210,"column":null}},"101":{"start":{"line":211,"column":4},"end":{"line":211,"column":null}},"102":{"start":{"line":212,"column":4},"end":{"line":215,"column":null}},"103":{"start":{"line":214,"column":6},"end":{"line":214,"column":null}},"104":{"start":{"line":217,"column":4},"end":{"line":224,"column":null}},"105":{"start":{"line":218,"column":6},"end":{"line":218,"column":null}},"106":{"start":{"line":219,"column":6},"end":{"line":221,"column":null}},"107":{"start":{"line":220,"column":8},"end":{"line":220,"column":null}},"108":{"start":{"line":223,"column":6},"end":{"line":223,"column":null}},"109":{"start":{"line":227,"column":4},"end":{"line":232,"column":null}},"110":{"start":{"line":228,"column":6},"end":{"line":228,"column":null}},"111":{"start":{"line":229,"column":6},"end":{"line":231,"column":null}},"112":{"start":{"line":230,"column":8},"end":{"line":230,"column":null}},"113":{"start":{"line":235,"column":4},"end":{"line":237,"column":null}},"114":{"start":{"line":236,"column":6},"end":{"line":236,"column":null}},"115":{"start":{"line":241,"column":4},"end":{"line":286,"column":null}},"116":{"start":{"line":242,"column":6},"end":{"line":242,"column":null}},"117":{"start":{"line":243,"column":6},"end":{"line":243,"column":null}},"118":{"start":{"line":244,"column":6},"end":{"line":244,"column":null}},"119":{"start":{"line":245,"column":6},"end":{"line":245,"column":null}},"120":{"start":{"line":247,"column":22},"end":{"line":247,"column":null}},"121":{"start":{"line":248,"column":6},"end":{"line":248,"column":null}},"122":{"start":{"line":249,"column":6},"end":{"line":252,"column":null}},"123":{"start":{"line":250,"column":8},"end":{"line":250,"column":null}},"124":{"start":{"line":251,"column":8},"end":{"line":251,"column":null}},"125":{"start":{"line":254,"column":6},"end":{"line":283,"column":null}},"126":{"start":{"line":258,"column":8},"end":{"line":258,"column":null}},"127":{"start":{"line":262,"column":8},"end":{"line":262,"column":null}},"128":{"start":{"line":264,"column":8},"end":{"line":282,"column":null}},"129":{"start":{"line":266,"column":12},"end":{"line":267,"column":null}},"130":{"start":{"line":268,"column":12},"end":{"line":268,"column":null}},"131":{"start":{"line":269,"column":12},"end":{"line":269,"column":null}},"132":{"start":{"line":271,"column":24},"end":{"line":271,"column":null}},"133":{"start":{"line":272,"column":12},"end":{"line":274,"column":null}},"134":{"start":{"line":273,"column":14},"end":{"line":273,"column":null}},"135":{"start":{"line":277,"column":12},"end":{"line":281,"column":null}},"136":{"start":{"line":278,"column":14},"end":{"line":278,"column":null}},"137":{"start":{"line":285,"column":6},"end":{"line":285,"column":null}},"138":{"start":{"line":291,"column":24},"end":{"line":291,"column":null}},"139":{"start":{"line":292,"column":4},"end":{"line":304,"column":null}},"140":{"start":{"line":293,"column":6},"end":{"line":293,"column":null}},"141":{"start":{"line":294,"column":6},"end":{"line":294,"column":null}},"142":{"start":{"line":295,"column":4},"end":{"line":304,"column":null}},"143":{"start":{"line":299,"column":6},"end":{"line":299,"column":null}},"144":{"start":{"line":300,"column":6},"end":{"line":300,"column":null}},"145":{"start":{"line":302,"column":6},"end":{"line":302,"column":null}},"146":{"start":{"line":303,"column":6},"end":{"line":303,"column":null}},"147":{"start":{"line":317,"column":4},"end":{"line":327,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":16,"column":2},"end":{"line":16,"column":14}},"loc":{"start":{"line":16,"column":45},"end":{"line":20,"column":null}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":9},"end":{"line":22,"column":13}},"loc":{"start":{"line":22,"column":66},"end":{"line":24,"column":null}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":26,"column":9},"end":{"line":26,"column":13}},"loc":{"start":{"line":26,"column":37},"end":{"line":48,"column":null}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":15},"end":{"line":34,"column":21}},"loc":{"start":{"line":34,"column":21},"end":{"line":41,"column":null}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":37,"column":42},"end":{"line":37,"column":43}},"loc":{"start":{"line":37,"column":57},"end":{"line":40,"column":11}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":50,"column":12},"end":{"line":50,"column":25}},"loc":{"start":{"line":50,"column":25},"end":{"line":117,"column":null}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":61,"column":31},"end":{"line":61,"column":37}},"loc":{"start":{"line":61,"column":37},"end":{"line":116,"column":null}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":76,"column":20},"end":{"line":76,"column":26}},"loc":{"start":{"line":76,"column":26},"end":{"line":105,"column":null}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":78,"column":10},"end":{"line":78,"column":11}},"loc":{"start":{"line":78,"column":60},"end":{"line":103,"column":null}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":107,"column":22},"end":{"line":107,"column":26}},"loc":{"start":{"line":107,"column":35},"end":{"line":114,"column":null}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":121,"column":2},"end":{"line":121,"column":null}},"loc":{"start":{"line":128,"column":4},"end":{"line":128,"column":null}}},"11":{"name":"(anonymous_11)","decl":{"start":{"line":130,"column":9},"end":{"line":130,"column":15}},"loc":{"start":{"line":130,"column":88},"end":{"line":184,"column":null}}},"12":{"name":"(anonymous_12)","decl":{"start":{"line":153,"column":31},"end":{"line":153,"column":32}},"loc":{"start":{"line":153,"column":48},"end":{"line":175,"column":5}}},"13":{"name":"(anonymous_13)","decl":{"start":{"line":178,"column":13},"end":{"line":178,"column":14}},"loc":{"start":{"line":178,"column":20},"end":{"line":183,"column":7}}},"14":{"name":"(anonymous_14)","decl":{"start":{"line":186,"column":12},"end":{"line":186,"column":24}},"loc":{"start":{"line":186,"column":95},"end":{"line":238,"column":null}}},"15":{"name":"(anonymous_15)","decl":{"start":{"line":240,"column":12},"end":{"line":240,"column":23}},"loc":{"start":{"line":240,"column":45},"end":{"line":287,"column":null}}},"16":{"name":"(anonymous_16)","decl":{"start":{"line":241,"column":11},"end":{"line":241,"column":12}},"loc":{"start":{"line":241,"column":31},"end":{"line":286,"column":null}}},"17":{"name":"(anonymous_17)","decl":{"start":{"line":265,"column":16},"end":{"line":265,"column":17}},"loc":{"start":{"line":265,"column":57},"end":{"line":275,"column":11}}},"18":{"name":"(anonymous_18)","decl":{"start":{"line":276,"column":17},"end":{"line":276,"column":18}},"loc":{"start":{"line":276,"column":24},"end":{"line":282,"column":11}}},"19":{"name":"(anonymous_19)","decl":{"start":{"line":289,"column":12},"end":{"line":289,"column":31}},"loc":{"start":{"line":289,"column":69},"end":{"line":305,"column":null}}},"20":{"name":"(anonymous_20)","decl":{"start":{"line":309,"column":2},"end":{"line":309,"column":16}},"loc":{"start":{"line":316,"column":4},"end":{"line":328,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":28,"column":4},"end":{"line":42,"column":null}},"type":"switch","locations":[{"start":{"line":29,"column":6},"end":{"line":29,"column":null}},{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},{"start":{"line":33,"column":6},"end":{"line":41,"column":null}}]},"1":{"loc":{"start":{"line":43,"column":4},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":47,"column":null}},{"start":{"line":45,"column":11},"end":{"line":47,"column":null}}]},"2":{"loc":{"start":{"line":52,"column":4},"end":{"line":55,"column":null}},"type":"if","locations":[{"start":{"line":52,"column":4},"end":{"line":55,"column":null}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":56,"column":4},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":56,"column":4},"end":{"line":58,"column":null}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":67,"column":6},"end":{"line":69,"column":null}},"type":"if","locations":[{"start":{"line":67,"column":6},"end":{"line":69,"column":null}},{"start":{},"end":{}}]},"5":{"loc":{"start":{"line":79,"column":12},"end":{"line":89,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":12},"end":{"line":89,"column":null}},{"start":{"line":82,"column":19},"end":{"line":89,"column":null}}]},"6":{"loc":{"start":{"line":91,"column":54},"end":{"line":91,"column":null}},"type":"binary-expr","locations":[{"start":{"line":91,"column":54},"end":{"line":91,"column":77}},{"start":{"line":91,"column":77},"end":{"line":91,"column":null}}]},"7":{"loc":{"start":{"line":92,"column":35},"end":{"line":92,"column":null}},"type":"cond-expr","locations":[{"start":{"line":92,"column":49},"end":{"line":92,"column":53}},{"start":{"line":92,"column":53},"end":{"line":92,"column":null}}]},"8":{"loc":{"start":{"line":93,"column":35},"end":{"line":93,"column":null}},"type":"cond-expr","locations":[{"start":{"line":93,"column":49},"end":{"line":93,"column":76}},{"start":{"line":93,"column":76},"end":{"line":93,"column":null}}]},"9":{"loc":{"start":{"line":96,"column":12},"end":{"line":101,"column":null}},"type":"if","locations":[{"start":{"line":96,"column":12},"end":{"line":101,"column":null}},{"start":{},"end":{}}]},"10":{"loc":{"start":{"line":111,"column":50},"end":{"line":111,"column":null}},"type":"binary-expr","locations":[{"start":{"line":111,"column":50},"end":{"line":111,"column":73}},{"start":{"line":111,"column":73},"end":{"line":111,"column":null}}]},"11":{"loc":{"start":{"line":133,"column":4},"end":{"line":139,"column":null}},"type":"if","locations":[{"start":{"line":133,"column":4},"end":{"line":139,"column":null}},{"start":{},"end":{}}]},"12":{"loc":{"start":{"line":134,"column":6},"end":{"line":136,"column":null}},"type":"binary-expr","locations":[{"start":{"line":134,"column":6},"end":{"line":134,"column":null}},{"start":{"line":136,"column":7},"end":{"line":136,"column":36}},{"start":{"line":136,"column":36},"end":{"line":136,"column":null}}]},"13":{"loc":{"start":{"line":142,"column":6},"end":{"line":144,"column":null}},"type":"cond-expr","locations":[{"start":{"line":143,"column":10},"end":{"line":143,"column":null}},{"start":{"line":144,"column":10},"end":{"line":144,"column":null}}]},"14":{"loc":{"start":{"line":142,"column":6},"end":{"line":142,"column":null}},"type":"binary-expr","locations":[{"start":{"line":142,"column":6},"end":{"line":142,"column":30}},{"start":{"line":142,"column":30},"end":{"line":142,"column":null}}]},"15":{"loc":{"start":{"line":146,"column":4},"end":{"line":148,"column":null}},"type":"if","locations":[{"start":{"line":146,"column":4},"end":{"line":148,"column":null}},{"start":{},"end":{}}]},"16":{"loc":{"start":{"line":154,"column":6},"end":{"line":158,"column":null}},"type":"if","locations":[{"start":{"line":154,"column":6},"end":{"line":158,"column":null}},{"start":{},"end":{}}]},"17":{"loc":{"start":{"line":155,"column":8},"end":{"line":157,"column":null}},"type":"if","locations":[{"start":{"line":155,"column":8},"end":{"line":157,"column":null}},{"start":{},"end":{}}]},"18":{"loc":{"start":{"line":159,"column":6},"end":{"line":174,"column":null}},"type":"if","locations":[{"start":{"line":159,"column":6},"end":{"line":174,"column":null}},{"start":{"line":161,"column":13},"end":{"line":174,"column":null}}]},"19":{"loc":{"start":{"line":159,"column":10},"end":{"line":159,"column":71}},"type":"binary-expr","locations":[{"start":{"line":159,"column":10},"end":{"line":159,"column":39}},{"start":{"line":159,"column":39},"end":{"line":159,"column":71}}]},"20":{"loc":{"start":{"line":162,"column":8},"end":{"line":162,"column":null}},"type":"if","locations":[{"start":{"line":162,"column":8},"end":{"line":162,"column":null}},{"start":{},"end":{}}]},"21":{"loc":{"start":{"line":163,"column":8},"end":{"line":165,"column":null}},"type":"if","locations":[{"start":{"line":163,"column":8},"end":{"line":165,"column":null}},{"start":{},"end":{}}]},"22":{"loc":{"start":{"line":166,"column":8},"end":{"line":173,"column":null}},"type":"if","locations":[{"start":{"line":166,"column":8},"end":{"line":173,"column":null}},{"start":{"line":168,"column":8},"end":{"line":173,"column":null}}]},"23":{"loc":{"start":{"line":168,"column":8},"end":{"line":173,"column":null}},"type":"if","locations":[{"start":{"line":168,"column":8},"end":{"line":173,"column":null}},{"start":{"line":170,"column":15},"end":{"line":173,"column":null}}]},"24":{"loc":{"start":{"line":181,"column":40},"end":{"line":181,"column":null}},"type":"binary-expr","locations":[{"start":{"line":181,"column":40},"end":{"line":181,"column":58}},{"start":{"line":181,"column":58},"end":{"line":181,"column":null}}]},"25":{"loc":{"start":{"line":192,"column":4},"end":{"line":202,"column":null}},"type":"if","locations":[{"start":{"line":192,"column":4},"end":{"line":202,"column":null}},{"start":{"line":197,"column":11},"end":{"line":202,"column":null}}]},"26":{"loc":{"start":{"line":194,"column":15},"end":{"line":194,"column":null}},"type":"binary-expr","locations":[{"start":{"line":194,"column":15},"end":{"line":194,"column":31}},{"start":{"line":194,"column":31},"end":{"line":194,"column":null}}]},"27":{"loc":{"start":{"line":196,"column":22},"end":{"line":196,"column":null}},"type":"binary-expr","locations":[{"start":{"line":196,"column":22},"end":{"line":196,"column":39}},{"start":{"line":196,"column":39},"end":{"line":196,"column":null}}]},"28":{"loc":{"start":{"line":199,"column":15},"end":{"line":199,"column":null}},"type":"binary-expr","locations":[{"start":{"line":199,"column":15},"end":{"line":199,"column":31}},{"start":{"line":199,"column":31},"end":{"line":199,"column":null}}]},"29":{"loc":{"start":{"line":208,"column":17},"end":{"line":208,"column":56}},"type":"binary-expr","locations":[{"start":{"line":208,"column":17},"end":{"line":208,"column":50}},{"start":{"line":208,"column":50},"end":{"line":208,"column":56}}]},"30":{"loc":{"start":{"line":212,"column":4},"end":{"line":215,"column":null}},"type":"if","locations":[{"start":{"line":212,"column":4},"end":{"line":215,"column":null}},{"start":{},"end":{}}]},"31":{"loc":{"start":{"line":217,"column":4},"end":{"line":224,"column":null}},"type":"if","locations":[{"start":{"line":217,"column":4},"end":{"line":224,"column":null}},{"start":{"line":222,"column":11},"end":{"line":224,"column":null}}]},"32":{"loc":{"start":{"line":227,"column":4},"end":{"line":232,"column":null}},"type":"if","locations":[{"start":{"line":227,"column":4},"end":{"line":232,"column":null}},{"start":{},"end":{}}]},"33":{"loc":{"start":{"line":227,"column":8},"end":{"line":227,"column":40}},"type":"binary-expr","locations":[{"start":{"line":227,"column":8},"end":{"line":227,"column":22}},{"start":{"line":227,"column":22},"end":{"line":227,"column":40}}]},"34":{"loc":{"start":{"line":235,"column":4},"end":{"line":237,"column":null}},"type":"if","locations":[{"start":{"line":235,"column":4},"end":{"line":237,"column":null}},{"start":{},"end":{}}]},"35":{"loc":{"start":{"line":243,"column":38},"end":{"line":243,"column":null}},"type":"binary-expr","locations":[{"start":{"line":243,"column":38},"end":{"line":243,"column":56}},{"start":{"line":243,"column":56},"end":{"line":243,"column":null}}]},"36":{"loc":{"start":{"line":251,"column":20},"end":{"line":251,"column":null}},"type":"cond-expr","locations":[{"start":{"line":251,"column":66},"end":{"line":251,"column":73}},{"start":{"line":251,"column":73},"end":{"line":251,"column":null}}]},"37":{"loc":{"start":{"line":254,"column":6},"end":{"line":283,"column":null}},"type":"if","locations":[{"start":{"line":254,"column":6},"end":{"line":283,"column":null}},{"start":{"line":259,"column":13},"end":{"line":283,"column":null}}]},"38":{"loc":{"start":{"line":267,"column":14},"end":{"line":267,"column":null}},"type":"cond-expr","locations":[{"start":{"line":267,"column":50},"end":{"line":267,"column":73}},{"start":{"line":267,"column":73},"end":{"line":267,"column":null}}]},"39":{"loc":{"start":{"line":272,"column":12},"end":{"line":274,"column":null}},"type":"if","locations":[{"start":{"line":272,"column":12},"end":{"line":274,"column":null}},{"start":{},"end":{}}]},"40":{"loc":{"start":{"line":277,"column":12},"end":{"line":281,"column":null}},"type":"if","locations":[{"start":{"line":277,"column":12},"end":{"line":281,"column":null}},{"start":{"line":279,"column":19},"end":{"line":281,"column":null}}]},"41":{"loc":{"start":{"line":292,"column":4},"end":{"line":304,"column":null}},"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":304,"column":null}},{"start":{"line":295,"column":4},"end":{"line":304,"column":null}}]},"42":{"loc":{"start":{"line":292,"column":8},"end":{"line":292,"column":65}},"type":"binary-expr","locations":[{"start":{"line":292,"column":8},"end":{"line":292,"column":23}},{"start":{"line":292,"column":23},"end":{"line":292,"column":65}}]},"43":{"loc":{"start":{"line":295,"column":4},"end":{"line":304,"column":null}},"type":"if","locations":[{"start":{"line":295,"column":4},"end":{"line":304,"column":null}},{"start":{"line":301,"column":11},"end":{"line":304,"column":null}}]},"44":{"loc":{"start":{"line":296,"column":6},"end":{"line":297,"column":null}},"type":"binary-expr","locations":[{"start":{"line":296,"column":6},"end":{"line":296,"column":null}},{"start":{"line":297,"column":7},"end":{"line":297,"column":44}},{"start":{"line":297,"column":44},"end":{"line":297,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"b":{"0":[0,0,0,0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0,0]}} +,"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/index.ts": {"path":"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/index.ts","statementMap":{"0":{"start":{"line":14,"column":19},"end":{"line":17,"column":null}},"1":{"start":{"line":15,"column":14},"end":{"line":15,"column":null}},"2":{"start":{"line":16,"column":2},"end":{"line":16,"column":null}},"3":{"start":{"line":57,"column":2},"end":{"line":70,"column":null}},"4":{"start":{"line":58,"column":4},"end":{"line":69,"column":null}},"5":{"start":{"line":59,"column":6},"end":{"line":66,"column":null}},"6":{"start":{"line":68,"column":6},"end":{"line":68,"column":null}},"7":{"start":{"line":71,"column":2},"end":{"line":84,"column":null}},"8":{"start":{"line":72,"column":4},"end":{"line":83,"column":null}},"9":{"start":{"line":73,"column":6},"end":{"line":80,"column":null}},"10":{"start":{"line":82,"column":6},"end":{"line":82,"column":null}},"11":{"start":{"line":85,"column":2},"end":{"line":95,"column":null}},"12":{"start":{"line":86,"column":4},"end":{"line":94,"column":null}},"13":{"start":{"line":87,"column":6},"end":{"line":93,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":14,"column":19},"end":{"line":14,"column":20}},"loc":{"start":{"line":14,"column":36},"end":{"line":17,"column":null}}},"1":{"name":"createNetworkProxy","decl":{"start":{"line":43,"column":24},"end":{"line":43,"column":null}},"loc":{"start":{"line":56,"column":8},"end":{"line":96,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":50,"column":2},"end":{"line":54,"column":null}},"type":"default-arg","locations":[{"start":{"line":50,"column":63},"end":{"line":54,"column":null}}]},"1":{"loc":{"start":{"line":57,"column":2},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":2},"end":{"line":70,"column":null}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":58,"column":4},"end":{"line":69,"column":null}},"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":69,"column":null}},{"start":{"line":67,"column":11},"end":{"line":69,"column":null}}]},"3":{"loc":{"start":{"line":71,"column":2},"end":{"line":84,"column":null}},"type":"if","locations":[{"start":{"line":71,"column":2},"end":{"line":84,"column":null}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":72,"column":4},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":83,"column":null}},{"start":{"line":81,"column":11},"end":{"line":83,"column":null}}]},"5":{"loc":{"start":{"line":85,"column":2},"end":{"line":95,"column":null}},"type":"if","locations":[{"start":{"line":85,"column":2},"end":{"line":95,"column":null}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":86,"column":4},"end":{"line":94,"column":null}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":94,"column":null}},{"start":{},"end":{}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"f":{"0":0,"1":0},"b":{"0":[0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0]}} +,"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/networkMessage.ts": {"path":"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/networkMessage.ts","statementMap":{"0":{"start":{"line":35,"column":21},"end":{"line":35,"column":58}},"1":{"start":{"line":36,"column":21},"end":{"line":36,"column":null}},"2":{"start":{"line":37,"column":21},"end":{"line":37,"column":null}},"3":{"start":{"line":13,"column":2},"end":{"line":13,"column":null}},"4":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"5":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"6":{"start":{"line":16,"column":2},"end":{"line":16,"column":null}},"7":{"start":{"line":17,"column":2},"end":{"line":17,"column":null}},"8":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"9":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"10":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"11":{"start":{"line":21,"column":2},"end":{"line":21,"column":null}},"12":{"start":{"line":22,"column":2},"end":{"line":22,"column":null}},"13":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"14":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"15":{"start":{"line":26,"column":2},"end":{"line":26,"column":null}},"16":{"start":{"line":27,"column":2},"end":{"line":27,"column":null}},"17":{"start":{"line":28,"column":2},"end":{"line":28,"column":null}},"18":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"19":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"20":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"21":{"start":{"line":32,"column":2},"end":{"line":32,"column":null}},"22":{"start":{"line":41,"column":29},"end":{"line":41,"column":null}},"23":{"start":{"line":42,"column":20},"end":{"line":45,"column":null}},"24":{"start":{"line":46,"column":21},"end":{"line":46,"column":null}},"25":{"start":{"line":48,"column":24},"end":{"line":54,"column":null}},"26":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"27":{"start":{"line":56,"column":22},"end":{"line":56,"column":null}},"28":{"start":{"line":58,"column":22},"end":{"line":58,"column":null}},"29":{"start":{"line":59,"column":4},"end":{"line":63,"column":null}},"30":{"start":{"line":60,"column":22},"end":{"line":60,"column":null}},"31":{"start":{"line":61,"column":6},"end":{"line":61,"column":null}},"32":{"start":{"line":62,"column":6},"end":{"line":62,"column":null}},"33":{"start":{"line":65,"column":4},"end":{"line":75,"column":null}},"34":{"start":{"line":79,"column":42},"end":{"line":79,"column":null}},"35":{"start":{"line":80,"column":4},"end":{"line":83,"column":null}},"36":{"start":{"line":81,"column":6},"end":{"line":81,"column":null}},"37":{"start":{"line":81,"column":37},"end":{"line":81,"column":null}},"38":{"start":{"line":82,"column":6},"end":{"line":82,"column":null}},"39":{"start":{"line":84,"column":4},"end":{"line":86,"column":null}},"40":{"start":{"line":85,"column":6},"end":{"line":85,"column":null}},"41":{"start":{"line":87,"column":42},"end":{"line":87,"column":null}},"42":{"start":{"line":88,"column":4},"end":{"line":91,"column":null}},"43":{"start":{"line":89,"column":6},"end":{"line":89,"column":null}},"44":{"start":{"line":89,"column":37},"end":{"line":89,"column":null}},"45":{"start":{"line":90,"column":6},"end":{"line":90,"column":null}},"46":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"47":{"start":{"line":96,"column":4},"end":{"line":100,"column":null}},"48":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"49":{"start":{"line":97,"column":44},"end":{"line":97,"column":59}},"50":{"start":{"line":99,"column":6},"end":{"line":99,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"loc":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":40,"column":2},"end":{"line":40,"column":39}},"loc":{"start":{"line":40,"column":39},"end":{"line":76,"column":null}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":78,"column":2},"end":{"line":78,"column":17}},"loc":{"start":{"line":78,"column":17},"end":{"line":93,"column":null}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":80,"column":47},"end":{"line":80,"column":48}},"loc":{"start":{"line":80,"column":65},"end":{"line":83,"column":5}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":84,"column":31},"end":{"line":84,"column":32}},"loc":{"start":{"line":84,"column":48},"end":{"line":86,"column":5}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":88,"column":40},"end":{"line":88,"column":41}},"loc":{"start":{"line":88,"column":58},"end":{"line":91,"column":5}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":95,"column":2},"end":{"line":95,"column":18}},"loc":{"start":{"line":95,"column":31},"end":{"line":101,"column":null}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":97,"column":37},"end":{"line":97,"column":38}},"loc":{"start":{"line":97,"column":44},"end":{"line":97,"column":59}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":21},"end":{"line":35,"column":null}},"type":"default-arg","locations":[{"start":{"line":35,"column":58},"end":{"line":35,"column":null}}]},"1":{"loc":{"start":{"line":44,"column":12},"end":{"line":44,"column":null}},"type":"cond-expr","locations":[{"start":{"line":44,"column":36},"end":{"line":44,"column":67}},{"start":{"line":44,"column":67},"end":{"line":44,"column":null}}]},"2":{"loc":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"type":"if","locations":[{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":59,"column":4},"end":{"line":63,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":63,"column":null}},{"start":{},"end":{}}]},"4":{"loc":{"start":{"line":59,"column":8},"end":{"line":59,"column":97}},"type":"binary-expr","locations":[{"start":{"line":59,"column":8},"end":{"line":59,"column":21}},{"start":{"line":59,"column":21},"end":{"line":59,"column":50}},{"start":{"line":59,"column":50},"end":{"line":59,"column":97}}]},"5":{"loc":{"start":{"line":61,"column":27},"end":{"line":61,"column":null}},"type":"cond-expr","locations":[{"start":{"line":61,"column":37},"end":{"line":61,"column":43}},{"start":{"line":61,"column":43},"end":{"line":61,"column":null}}]},"6":{"loc":{"start":{"line":81,"column":6},"end":{"line":81,"column":null}},"type":"if","locations":[{"start":{"line":81,"column":6},"end":{"line":81,"column":null}},{"start":{},"end":{}}]},"7":{"loc":{"start":{"line":89,"column":6},"end":{"line":89,"column":null}},"type":"if","locations":[{"start":{"line":89,"column":6},"end":{"line":89,"column":null}},{"start":{},"end":{}}]},"8":{"loc":{"start":{"line":96,"column":4},"end":{"line":100,"column":null}},"type":"if","locations":[{"start":{"line":96,"column":4},"end":{"line":100,"column":null}},{"start":{"line":98,"column":11},"end":{"line":100,"column":null}}]}},"s":{"0":4,"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":4,"13":4,"14":4,"15":4,"16":4,"17":4,"18":4,"19":4,"20":4,"21":4,"22":1,"23":1,"24":1,"25":1,"26":1,"27":0,"28":1,"29":1,"30":0,"31":0,"32":0,"33":1,"34":2,"35":2,"36":2,"37":1,"38":1,"39":2,"40":0,"41":2,"42":2,"43":2,"44":1,"45":1,"46":2,"47":9,"48":6,"49":6,"50":3},"f":{"0":4,"1":1,"2":2,"3":2,"4":0,"5":2,"6":9,"7":6},"b":{"0":[0],"1":[1,0],"2":[0,1],"3":[0,1],"4":[1,0,0],"5":[0,0],"6":[1,1],"7":[1,1],"8":[6,3]}} +,"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/types.ts": {"path":"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/types.ts","statementMap":{"0":{"start":{"line":33,"column":7},"end":{"line":33,"column":null}},"1":{"start":{"line":34,"column":2},"end":{"line":34,"column":11}},"2":{"start":{"line":35,"column":2},"end":{"line":35,"column":11}},"3":{"start":{"line":36,"column":2},"end":{"line":36,"column":21}},"4":{"start":{"line":37,"column":2},"end":{"line":37,"column":12}},"5":{"start":{"line":38,"column":2},"end":{"line":38,"column":9}},"6":{"start":{"line":33,"column":12},"end":{"line":33,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":33,"column":7},"end":{"line":33,"column":12}},"loc":{"start":{"line":33,"column":7},"end":{"line":33,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":12},"end":{"line":33,"column":null}},"type":"binary-expr","locations":[{"start":{"line":33,"column":12},"end":{"line":33,"column":null}},{"start":{"line":33,"column":12},"end":{"line":33,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"f":{"0":0},"b":{"0":[0,0]}} +,"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/utils.ts": {"path":"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/utils.ts","statementMap":{"0":{"start":{"line":1,"column":33},"end":{"line":34,"column":null}},"1":{"start":{"line":5,"column":15},"end":{"line":5,"column":null}},"2":{"start":{"line":6,"column":2},"end":{"line":32,"column":null}},"3":{"start":{"line":10,"column":6},"end":{"line":21,"column":null}},"4":{"start":{"line":11,"column":8},"end":{"line":16,"column":null}},"5":{"start":{"line":12,"column":10},"end":{"line":12,"column":null}},"6":{"start":{"line":15,"column":10},"end":{"line":15,"column":null}},"7":{"start":{"line":17,"column":6},"end":{"line":21,"column":null}},"8":{"start":{"line":18,"column":8},"end":{"line":18,"column":null}},"9":{"start":{"line":19,"column":6},"end":{"line":21,"column":null}},"10":{"start":{"line":20,"column":8},"end":{"line":20,"column":null}},"11":{"start":{"line":22,"column":6},"end":{"line":22,"column":null}},"12":{"start":{"line":28,"column":6},"end":{"line":30,"column":null}},"13":{"start":{"line":29,"column":8},"end":{"line":29,"column":null}},"14":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"15":{"start":{"line":33,"column":2},"end":{"line":33,"column":null}},"16":{"start":{"line":36,"column":39},"end":{"line":63,"column":null}},"17":{"start":{"line":40,"column":15},"end":{"line":40,"column":null}},"18":{"start":{"line":41,"column":2},"end":{"line":61,"column":null}},"19":{"start":{"line":45,"column":6},"end":{"line":51,"column":null}},"20":{"start":{"line":46,"column":8},"end":{"line":46,"column":null}},"21":{"start":{"line":47,"column":6},"end":{"line":51,"column":null}},"22":{"start":{"line":48,"column":8},"end":{"line":48,"column":null}},"23":{"start":{"line":49,"column":6},"end":{"line":51,"column":null}},"24":{"start":{"line":50,"column":8},"end":{"line":50,"column":null}},"25":{"start":{"line":52,"column":6},"end":{"line":52,"column":null}},"26":{"start":{"line":57,"column":6},"end":{"line":59,"column":null}},"27":{"start":{"line":58,"column":8},"end":{"line":58,"column":null}},"28":{"start":{"line":60,"column":6},"end":{"line":60,"column":null}},"29":{"start":{"line":62,"column":2},"end":{"line":62,"column":null}},"30":{"start":{"line":65,"column":29},"end":{"line":104,"column":null}},"31":{"start":{"line":66,"column":2},"end":{"line":68,"column":null}},"32":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"33":{"start":{"line":71,"column":2},"end":{"line":102,"column":null}},"34":{"start":{"line":72,"column":4},"end":{"line":74,"column":null}},"35":{"start":{"line":73,"column":6},"end":{"line":73,"column":null}},"36":{"start":{"line":76,"column":16},"end":{"line":76,"column":null}},"37":{"start":{"line":77,"column":4},"end":{"line":83,"column":null}},"38":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"39":{"start":{"line":82,"column":6},"end":{"line":82,"column":null}},"40":{"start":{"line":84,"column":2},"end":{"line":102,"column":null}},"41":{"start":{"line":86,"column":16},"end":{"line":86,"column":null}},"42":{"start":{"line":87,"column":4},"end":{"line":89,"column":null}},"43":{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},"44":{"start":{"line":90,"column":4},"end":{"line":90,"column":null}},"45":{"start":{"line":91,"column":2},"end":{"line":102,"column":null}},"46":{"start":{"line":96,"column":4},"end":{"line":96,"column":null}},"47":{"start":{"line":97,"column":2},"end":{"line":102,"column":null}},"48":{"start":{"line":99,"column":4},"end":{"line":99,"column":null}},"49":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"50":{"start":{"line":103,"column":2},"end":{"line":103,"column":null}},"51":{"start":{"line":106,"column":31},"end":{"line":127,"column":null}},"52":{"start":{"line":107,"column":2},"end":{"line":109,"column":null}},"53":{"start":{"line":108,"column":4},"end":{"line":108,"column":null}},"54":{"start":{"line":110,"column":24},"end":{"line":110,"column":null}},"55":{"start":{"line":111,"column":2},"end":{"line":111,"column":null}},"56":{"start":{"line":112,"column":2},"end":{"line":125,"column":null}},"57":{"start":{"line":113,"column":4},"end":{"line":113,"column":null}},"58":{"start":{"line":114,"column":4},"end":{"line":124,"column":null}},"59":{"start":{"line":115,"column":17},"end":{"line":115,"column":null}},"60":{"start":{"line":116,"column":6},"end":{"line":123,"column":null}},"61":{"start":{"line":117,"column":8},"end":{"line":117,"column":null}},"62":{"start":{"line":122,"column":8},"end":{"line":122,"column":null}},"63":{"start":{"line":126,"column":2},"end":{"line":126,"column":null}},"64":{"start":{"line":129,"column":32},"end":{"line":168,"column":null}},"65":{"start":{"line":130,"column":2},"end":{"line":132,"column":null}},"66":{"start":{"line":131,"column":4},"end":{"line":131,"column":null}},"67":{"start":{"line":135,"column":2},"end":{"line":166,"column":null}},"68":{"start":{"line":136,"column":4},"end":{"line":148,"column":null}},"69":{"start":{"line":138,"column":6},"end":{"line":138,"column":null}},"70":{"start":{"line":141,"column":18},"end":{"line":141,"column":null}},"71":{"start":{"line":142,"column":6},"end":{"line":142,"column":null}},"72":{"start":{"line":144,"column":6},"end":{"line":147,"column":null}},"73":{"start":{"line":145,"column":19},"end":{"line":145,"column":null}},"74":{"start":{"line":146,"column":8},"end":{"line":146,"column":null}},"75":{"start":{"line":149,"column":2},"end":{"line":166,"column":null}},"76":{"start":{"line":151,"column":4},"end":{"line":151,"column":null}},"77":{"start":{"line":152,"column":4},"end":{"line":154,"column":null}},"78":{"start":{"line":153,"column":6},"end":{"line":153,"column":null}},"79":{"start":{"line":155,"column":2},"end":{"line":166,"column":null}},"80":{"start":{"line":161,"column":4},"end":{"line":161,"column":null}},"81":{"start":{"line":162,"column":2},"end":{"line":166,"column":null}},"82":{"start":{"line":163,"column":4},"end":{"line":163,"column":null}},"83":{"start":{"line":165,"column":4},"end":{"line":165,"column":null}},"84":{"start":{"line":167,"column":2},"end":{"line":167,"column":null}},"85":{"start":{"line":171,"column":2},"end":{"line":171,"column":null}},"86":{"start":{"line":175,"column":2},"end":{"line":177,"column":null}},"87":{"start":{"line":176,"column":4},"end":{"line":176,"column":null}},"88":{"start":{"line":178,"column":2},"end":{"line":180,"column":null}},"89":{"start":{"line":179,"column":4},"end":{"line":179,"column":null}},"90":{"start":{"line":181,"column":2},"end":{"line":181,"column":null}},"91":{"start":{"line":185,"column":2},"end":{"line":188,"column":null}},"92":{"start":{"line":187,"column":4},"end":{"line":187,"column":null}},"93":{"start":{"line":189,"column":2},"end":{"line":191,"column":null}},"94":{"start":{"line":190,"column":4},"end":{"line":190,"column":null}},"95":{"start":{"line":192,"column":2},"end":{"line":194,"column":null}},"96":{"start":{"line":193,"column":4},"end":{"line":193,"column":null}},"97":{"start":{"line":195,"column":2},"end":{"line":195,"column":null}},"98":{"start":{"line":198,"column":22},"end":{"line":208,"column":null}},"99":{"start":{"line":199,"column":2},"end":{"line":202,"column":null}},"100":{"start":{"line":200,"column":20},"end":{"line":200,"column":null}},"101":{"start":{"line":201,"column":4},"end":{"line":201,"column":null}},"102":{"start":{"line":203,"column":2},"end":{"line":207,"column":null}},"103":{"start":{"line":204,"column":4},"end":{"line":204,"column":null}},"104":{"start":{"line":206,"column":4},"end":{"line":206,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":1,"column":33},"end":{"line":1,"column":null}},"loc":{"start":{"line":4,"column":35},"end":{"line":34,"column":null}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":36,"column":39},"end":{"line":36,"column":null}},"loc":{"start":{"line":39,"column":5},"end":{"line":63,"column":null}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":65,"column":29},"end":{"line":65,"column":30}},"loc":{"start":{"line":65,"column":50},"end":{"line":104,"column":null}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":106,"column":31},"end":{"line":106,"column":32}},"loc":{"start":{"line":106,"column":83},"end":{"line":127,"column":null}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":129,"column":32},"end":{"line":129,"column":33}},"loc":{"start":{"line":129,"column":53},"end":{"line":168,"column":null}}},"5":{"name":"isPureObject","decl":{"start":{"line":170,"column":16},"end":{"line":170,"column":29}},"loc":{"start":{"line":170,"column":68},"end":{"line":172,"column":null}}},"6":{"name":"isIterable","decl":{"start":{"line":174,"column":16},"end":{"line":174,"column":27}},"loc":{"start":{"line":174,"column":39},"end":{"line":182,"column":null}}},"7":{"name":"formatByteSize","decl":{"start":{"line":184,"column":16},"end":{"line":184,"column":31}},"loc":{"start":{"line":184,"column":46},"end":{"line":196,"column":null}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":198,"column":22},"end":{"line":198,"column":23}},"loc":{"start":{"line":198,"column":45},"end":{"line":208,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":2},"end":{"line":32,"column":null}},"type":"switch","locations":[{"start":{"line":7,"column":4},"end":{"line":7,"column":null}},{"start":{"line":8,"column":4},"end":{"line":8,"column":null}},{"start":{"line":9,"column":4},"end":{"line":22,"column":null}},{"start":{"line":24,"column":4},"end":{"line":24,"column":null}},{"start":{"line":25,"column":4},"end":{"line":25,"column":null}},{"start":{"line":26,"column":4},"end":{"line":26,"column":null}},{"start":{"line":27,"column":4},"end":{"line":31,"column":null}}]},"1":{"loc":{"start":{"line":10,"column":6},"end":{"line":21,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":6},"end":{"line":21,"column":null}},{"start":{"line":17,"column":6},"end":{"line":21,"column":null}}]},"2":{"loc":{"start":{"line":17,"column":6},"end":{"line":21,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":6},"end":{"line":21,"column":null}},{"start":{"line":19,"column":6},"end":{"line":21,"column":null}}]},"3":{"loc":{"start":{"line":17,"column":17},"end":{"line":17,"column":68}},"type":"binary-expr","locations":[{"start":{"line":17,"column":17},"end":{"line":17,"column":43}},{"start":{"line":17,"column":43},"end":{"line":17,"column":68}}]},"4":{"loc":{"start":{"line":19,"column":6},"end":{"line":21,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":6},"end":{"line":21,"column":null}},{"start":{},"end":{}}]},"5":{"loc":{"start":{"line":28,"column":6},"end":{"line":30,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":6},"end":{"line":30,"column":null}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":41,"column":2},"end":{"line":61,"column":null}},"type":"switch","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},{"start":{"line":44,"column":4},"end":{"line":52,"column":null}},{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},{"start":{"line":54,"column":4},"end":{"line":54,"column":null}},{"start":{"line":55,"column":4},"end":{"line":55,"column":null}},{"start":{"line":56,"column":4},"end":{"line":60,"column":null}}]},"7":{"loc":{"start":{"line":45,"column":6},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":6},"end":{"line":51,"column":null}},{"start":{"line":47,"column":6},"end":{"line":51,"column":null}}]},"8":{"loc":{"start":{"line":47,"column":6},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":47,"column":6},"end":{"line":51,"column":null}},{"start":{"line":49,"column":6},"end":{"line":51,"column":null}}]},"9":{"loc":{"start":{"line":47,"column":17},"end":{"line":47,"column":68}},"type":"binary-expr","locations":[{"start":{"line":47,"column":17},"end":{"line":47,"column":43}},{"start":{"line":47,"column":43},"end":{"line":47,"column":68}}]},"10":{"loc":{"start":{"line":49,"column":6},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":49,"column":6},"end":{"line":51,"column":null}},{"start":{},"end":{}}]},"11":{"loc":{"start":{"line":57,"column":6},"end":{"line":59,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":6},"end":{"line":59,"column":null}},{"start":{},"end":{}}]},"12":{"loc":{"start":{"line":66,"column":2},"end":{"line":68,"column":null}},"type":"if","locations":[{"start":{"line":66,"column":2},"end":{"line":68,"column":null}},{"start":{},"end":{}}]},"13":{"loc":{"start":{"line":71,"column":2},"end":{"line":102,"column":null}},"type":"if","locations":[{"start":{"line":71,"column":2},"end":{"line":102,"column":null}},{"start":{"line":84,"column":2},"end":{"line":102,"column":null}}]},"14":{"loc":{"start":{"line":72,"column":4},"end":{"line":74,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":74,"column":null}},{"start":{},"end":{}}]},"15":{"loc":{"start":{"line":72,"column":8},"end":{"line":72,"column":44}},"type":"binary-expr","locations":[{"start":{"line":72,"column":8},"end":{"line":72,"column":27}},{"start":{"line":72,"column":27},"end":{"line":72,"column":44}}]},"16":{"loc":{"start":{"line":77,"column":4},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":83,"column":null}},{"start":{"line":80,"column":11},"end":{"line":83,"column":null}}]},"17":{"loc":{"start":{"line":84,"column":2},"end":{"line":102,"column":null}},"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":102,"column":null}},{"start":{"line":91,"column":2},"end":{"line":102,"column":null}}]},"18":{"loc":{"start":{"line":88,"column":25},"end":{"line":88,"column":78}},"type":"cond-expr","locations":[{"start":{"line":88,"column":53},"end":{"line":88,"column":61}},{"start":{"line":88,"column":61},"end":{"line":88,"column":78}}]},"19":{"loc":{"start":{"line":91,"column":2},"end":{"line":102,"column":null}},"type":"if","locations":[{"start":{"line":91,"column":2},"end":{"line":102,"column":null}},{"start":{"line":97,"column":2},"end":{"line":102,"column":null}}]},"20":{"loc":{"start":{"line":92,"column":4},"end":{"line":94,"column":null}},"type":"binary-expr","locations":[{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},{"start":{"line":93,"column":4},"end":{"line":93,"column":null}},{"start":{"line":94,"column":4},"end":{"line":94,"column":null}}]},"21":{"loc":{"start":{"line":97,"column":2},"end":{"line":102,"column":null}},"type":"if","locations":[{"start":{"line":97,"column":2},"end":{"line":102,"column":null}},{"start":{"line":100,"column":9},"end":{"line":102,"column":null}}]},"22":{"loc":{"start":{"line":106,"column":45},"end":{"line":106,"column":83}},"type":"default-arg","locations":[{"start":{"line":106,"column":76},"end":{"line":106,"column":83}}]},"23":{"loc":{"start":{"line":107,"column":2},"end":{"line":109,"column":null}},"type":"if","locations":[{"start":{"line":107,"column":2},"end":{"line":109,"column":null}},{"start":{},"end":{}}]},"24":{"loc":{"start":{"line":110,"column":24},"end":{"line":110,"column":null}},"type":"cond-expr","locations":[{"start":{"line":110,"column":30},"end":{"line":110,"column":47}},{"start":{"line":110,"column":47},"end":{"line":110,"column":null}}]},"25":{"loc":{"start":{"line":112,"column":2},"end":{"line":125,"column":null}},"type":"if","locations":[{"start":{"line":112,"column":2},"end":{"line":125,"column":null}},{"start":{},"end":{}}]},"26":{"loc":{"start":{"line":130,"column":2},"end":{"line":132,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":2},"end":{"line":132,"column":null}},{"start":{},"end":{}}]},"27":{"loc":{"start":{"line":135,"column":2},"end":{"line":166,"column":null}},"type":"if","locations":[{"start":{"line":135,"column":2},"end":{"line":166,"column":null}},{"start":{"line":149,"column":2},"end":{"line":166,"column":null}}]},"28":{"loc":{"start":{"line":146,"column":24},"end":{"line":146,"column":null}},"type":"cond-expr","locations":[{"start":{"line":146,"column":46},"end":{"line":146,"column":60}},{"start":{"line":146,"column":60},"end":{"line":146,"column":null}}]},"29":{"loc":{"start":{"line":149,"column":2},"end":{"line":166,"column":null}},"type":"if","locations":[{"start":{"line":149,"column":2},"end":{"line":166,"column":null}},{"start":{"line":155,"column":2},"end":{"line":166,"column":null}}]},"30":{"loc":{"start":{"line":153,"column":20},"end":{"line":153,"column":null}},"type":"cond-expr","locations":[{"start":{"line":153,"column":48},"end":{"line":153,"column":56}},{"start":{"line":153,"column":56},"end":{"line":153,"column":null}}]},"31":{"loc":{"start":{"line":155,"column":2},"end":{"line":166,"column":null}},"type":"if","locations":[{"start":{"line":155,"column":2},"end":{"line":166,"column":null}},{"start":{"line":162,"column":2},"end":{"line":166,"column":null}}]},"32":{"loc":{"start":{"line":156,"column":4},"end":{"line":159,"column":null}},"type":"binary-expr","locations":[{"start":{"line":156,"column":4},"end":{"line":156,"column":null}},{"start":{"line":157,"column":4},"end":{"line":157,"column":null}},{"start":{"line":158,"column":4},"end":{"line":158,"column":null}},{"start":{"line":159,"column":4},"end":{"line":159,"column":null}}]},"33":{"loc":{"start":{"line":162,"column":2},"end":{"line":166,"column":null}},"type":"if","locations":[{"start":{"line":162,"column":2},"end":{"line":166,"column":null}},{"start":{"line":164,"column":9},"end":{"line":166,"column":null}}]},"34":{"loc":{"start":{"line":171,"column":9},"end":{"line":171,"column":null}},"type":"binary-expr","locations":[{"start":{"line":171,"column":9},"end":{"line":171,"column":27}},{"start":{"line":171,"column":27},"end":{"line":171,"column":null}}]},"35":{"loc":{"start":{"line":175,"column":2},"end":{"line":177,"column":null}},"type":"if","locations":[{"start":{"line":175,"column":2},"end":{"line":177,"column":null}},{"start":{},"end":{}}]},"36":{"loc":{"start":{"line":175,"column":6},"end":{"line":175,"column":45}},"type":"binary-expr","locations":[{"start":{"line":175,"column":6},"end":{"line":175,"column":24}},{"start":{"line":175,"column":24},"end":{"line":175,"column":45}}]},"37":{"loc":{"start":{"line":178,"column":2},"end":{"line":180,"column":null}},"type":"if","locations":[{"start":{"line":178,"column":2},"end":{"line":180,"column":null}},{"start":{},"end":{}}]},"38":{"loc":{"start":{"line":181,"column":9},"end":{"line":181,"column":null}},"type":"binary-expr","locations":[{"start":{"line":181,"column":9},"end":{"line":181,"column":42}},{"start":{"line":181,"column":42},"end":{"line":181,"column":null}}]},"39":{"loc":{"start":{"line":185,"column":2},"end":{"line":188,"column":null}},"type":"if","locations":[{"start":{"line":185,"column":2},"end":{"line":188,"column":null}},{"start":{},"end":{}}]},"40":{"loc":{"start":{"line":189,"column":2},"end":{"line":191,"column":null}},"type":"if","locations":[{"start":{"line":189,"column":2},"end":{"line":191,"column":null}},{"start":{},"end":{}}]},"41":{"loc":{"start":{"line":192,"column":2},"end":{"line":194,"column":null}},"type":"if","locations":[{"start":{"line":192,"column":2},"end":{"line":194,"column":null}},{"start":{},"end":{}}]},"42":{"loc":{"start":{"line":199,"column":2},"end":{"line":202,"column":null}},"type":"if","locations":[{"start":{"line":199,"column":2},"end":{"line":202,"column":null}},{"start":{},"end":{}}]},"43":{"loc":{"start":{"line":203,"column":2},"end":{"line":207,"column":null}},"type":"if","locations":[{"start":{"line":203,"column":2},"end":{"line":207,"column":null}},{"start":{"line":205,"column":9},"end":{"line":207,"column":null}}]}},"s":{"0":1,"1":2,"2":2,"3":1,"4":1,"5":1,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":1,"13":1,"14":1,"15":2,"16":1,"17":3,"18":3,"19":2,"20":1,"21":1,"22":1,"23":0,"24":0,"25":2,"26":1,"27":1,"28":1,"29":3,"30":1,"31":2,"32":0,"33":2,"34":1,"35":1,"36":1,"37":1,"38":1,"39":0,"40":1,"41":1,"42":1,"43":1,"44":1,"45":0,"46":0,"47":0,"48":0,"49":0,"50":2,"51":1,"52":2,"53":1,"54":2,"55":2,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":0,"63":2,"64":1,"65":6,"66":0,"67":6,"68":2,"69":2,"70":1,"71":1,"72":1,"73":2,"74":2,"75":4,"76":1,"77":1,"78":2,"79":3,"80":3,"81":0,"82":0,"83":0,"84":6,"85":7,"86":9,"87":1,"88":8,"89":2,"90":6,"91":4,"92":1,"93":3,"94":1,"95":2,"96":1,"97":1,"98":1,"99":3,"100":1,"101":1,"102":3,"103":2,"104":1},"f":{"0":2,"1":3,"2":2,"3":2,"4":6,"5":7,"6":9,"7":4,"8":3},"b":{"0":[0,0,1,1,1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[1,0],"6":[0,0,2,1,1,1,1],"7":[1,1],"8":[1,0],"9":[1,0],"10":[0,0],"11":[1,0],"12":[0,2],"13":[1,1],"14":[1,0],"15":[1,0],"16":[1,0],"17":[1,0],"18":[1,0],"19":[0,0],"20":[0,0,0],"21":[0,0],"22":[1],"23":[1,1],"24":[2,0],"25":[2,0],"26":[0,6],"27":[2,4],"28":[0,2],"29":[1,3],"30":[2,0],"31":[3,0],"32":[3,1,0,0],"33":[0,0],"34":[7,6],"35":[1,8],"36":[9,9],"37":[2,6],"38":[6,6],"39":[1,3],"40":[1,2],"41":[1,1],"42":[1,2],"43":[2,1]}} +,"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/xhrProxy.ts": {"path":"/Users/nikitamelnikov/Documents/work/openreplay/networkProxy/src/xhrProxy.ts","statementMap":{"0":{"start":{"line":19,"column":21},"end":{"line":19,"column":null}},"1":{"start":{"line":20,"column":21},"end":{"line":20,"column":null}},"2":{"start":{"line":21,"column":21},"end":{"line":21,"column":null}},"3":{"start":{"line":22,"column":21},"end":{"line":22,"column":null}},"4":{"start":{"line":23,"column":21},"end":{"line":23,"column":null}},"5":{"start":{"line":24,"column":21},"end":{"line":24,"column":null}},"6":{"start":{"line":26,"column":4},"end":{"line":26,"column":null}},"7":{"start":{"line":27,"column":4},"end":{"line":29,"column":null}},"8":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"9":{"start":{"line":30,"column":4},"end":{"line":32,"column":null}},"10":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"11":{"start":{"line":33,"column":4},"end":{"line":35,"column":null}},"12":{"start":{"line":34,"column":6},"end":{"line":34,"column":null}},"13":{"start":{"line":36,"column":4},"end":{"line":36,"column":null}},"14":{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},"15":{"start":{"line":41,"column":4},"end":{"line":64,"column":null}},"16":{"start":{"line":43,"column":8},"end":{"line":43,"column":null}},"17":{"start":{"line":45,"column":8},"end":{"line":52,"column":null}},"18":{"start":{"line":46,"column":10},"end":{"line":50,"column":null}},"19":{"start":{"line":47,"column":12},"end":{"line":49,"column":null}},"20":{"start":{"line":48,"column":14},"end":{"line":48,"column":null}},"21":{"start":{"line":51,"column":10},"end":{"line":51,"column":null}},"22":{"start":{"line":53,"column":8},"end":{"line":53,"column":null}},"23":{"start":{"line":55,"column":8},"end":{"line":55,"column":null}},"24":{"start":{"line":58,"column":22},"end":{"line":58,"column":null}},"25":{"start":{"line":59,"column":8},"end":{"line":63,"column":null}},"26":{"start":{"line":60,"column":10},"end":{"line":60,"column":null}},"27":{"start":{"line":62,"column":10},"end":{"line":62,"column":null}},"28":{"start":{"line":68,"column":4},"end":{"line":77,"column":null}},"29":{"start":{"line":70,"column":8},"end":{"line":70,"column":null}},"30":{"start":{"line":72,"column":8},"end":{"line":72,"column":null}},"31":{"start":{"line":74,"column":8},"end":{"line":74,"column":null}},"32":{"start":{"line":78,"column":4},"end":{"line":78,"column":null}},"33":{"start":{"line":82,"column":4},"end":{"line":82,"column":null}},"34":{"start":{"line":82,"column":59},"end":{"line":82,"column":null}},"35":{"start":{"line":83,"column":4},"end":{"line":83,"column":null}},"36":{"start":{"line":84,"column":4},"end":{"line":84,"column":null}},"37":{"start":{"line":85,"column":4},"end":{"line":85,"column":null}},"38":{"start":{"line":86,"column":4},"end":{"line":86,"column":null}},"39":{"start":{"line":87,"column":4},"end":{"line":87,"column":null}},"40":{"start":{"line":88,"column":4},"end":{"line":90,"column":null}},"41":{"start":{"line":89,"column":6},"end":{"line":89,"column":null}},"42":{"start":{"line":92,"column":4},"end":{"line":97,"column":null}},"43":{"start":{"line":93,"column":18},"end":{"line":93,"column":null}},"44":{"start":{"line":94,"column":6},"end":{"line":96,"column":null}},"45":{"start":{"line":95,"column":8},"end":{"line":95,"column":null}},"46":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"47":{"start":{"line":102,"column":4},"end":{"line":102,"column":null}},"48":{"start":{"line":104,"column":16},"end":{"line":104,"column":null}},"49":{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},"50":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"51":{"start":{"line":111,"column":4},"end":{"line":111,"column":null}},"52":{"start":{"line":112,"column":4},"end":{"line":112,"column":null}},"53":{"start":{"line":114,"column":16},"end":{"line":114,"column":null}},"54":{"start":{"line":115,"column":4},"end":{"line":117,"column":null}},"55":{"start":{"line":116,"column":6},"end":{"line":116,"column":null}},"56":{"start":{"line":121,"column":27},"end":{"line":121,"column":null}},"57":{"start":{"line":122,"column":4},"end":{"line":130,"column":null}},"58":{"start":{"line":123,"column":21},"end":{"line":123,"column":null}},"59":{"start":{"line":124,"column":18},"end":{"line":124,"column":null}},"60":{"start":{"line":125,"column":6},"end":{"line":125,"column":null}},"61":{"start":{"line":126,"column":6},"end":{"line":126,"column":null}},"62":{"start":{"line":127,"column":6},"end":{"line":127,"column":null}},"63":{"start":{"line":128,"column":6},"end":{"line":128,"column":null}},"64":{"start":{"line":129,"column":6},"end":{"line":129,"column":null}},"65":{"start":{"line":134,"column":27},"end":{"line":134,"column":null}},"66":{"start":{"line":135,"column":4},"end":{"line":139,"column":null}},"67":{"start":{"line":136,"column":43},"end":{"line":136,"column":null}},"68":{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},"69":{"start":{"line":138,"column":6},"end":{"line":138,"column":null}},"70":{"start":{"line":143,"column":27},"end":{"line":143,"column":null}},"71":{"start":{"line":144,"column":4},"end":{"line":151,"column":null}},"72":{"start":{"line":145,"column":6},"end":{"line":147,"column":null}},"73":{"start":{"line":146,"column":8},"end":{"line":146,"column":null}},"74":{"start":{"line":149,"column":6},"end":{"line":149,"column":null}},"75":{"start":{"line":150,"column":6},"end":{"line":150,"column":null}},"76":{"start":{"line":155,"column":4},"end":{"line":158,"column":null}},"77":{"start":{"line":156,"column":6},"end":{"line":156,"column":null}},"78":{"start":{"line":157,"column":6},"end":{"line":157,"column":null}},"79":{"start":{"line":162,"column":4},"end":{"line":165,"column":null}},"80":{"start":{"line":163,"column":6},"end":{"line":163,"column":null}},"81":{"start":{"line":164,"column":6},"end":{"line":164,"column":null}},"82":{"start":{"line":169,"column":4},"end":{"line":172,"column":null}},"83":{"start":{"line":170,"column":6},"end":{"line":170,"column":null}},"84":{"start":{"line":171,"column":6},"end":{"line":171,"column":null}},"85":{"start":{"line":179,"column":4},"end":{"line":232,"column":null}},"86":{"start":{"line":182,"column":8},"end":{"line":182,"column":null}},"87":{"start":{"line":183,"column":8},"end":{"line":183,"column":null}},"88":{"start":{"line":184,"column":8},"end":{"line":186,"column":null}},"89":{"start":{"line":185,"column":10},"end":{"line":185,"column":null}},"90":{"start":{"line":187,"column":8},"end":{"line":187,"column":null}},"91":{"start":{"line":189,"column":8},"end":{"line":189,"column":null}},"92":{"start":{"line":190,"column":8},"end":{"line":190,"column":null}},"93":{"start":{"line":191,"column":8},"end":{"line":191,"column":null}},"94":{"start":{"line":193,"column":23},"end":{"line":193,"column":null}},"95":{"start":{"line":194,"column":22},"end":{"line":194,"column":null}},"96":{"start":{"line":196,"column":8},"end":{"line":204,"column":null}},"97":{"start":{"line":196,"column":21},"end":{"line":196,"column":24}},"98":{"start":{"line":197,"column":23},"end":{"line":197,"column":null}},"99":{"start":{"line":198,"column":10},"end":{"line":200,"column":null}},"100":{"start":{"line":199,"column":12},"end":{"line":199,"column":null}},"101":{"start":{"line":201,"column":22},"end":{"line":201,"column":null}},"102":{"start":{"line":202,"column":22},"end":{"line":202,"column":null}},"103":{"start":{"line":203,"column":10},"end":{"line":203,"column":null}},"104":{"start":{"line":205,"column":8},"end":{"line":205,"column":null}},"105":{"start":{"line":207,"column":8},"end":{"line":207,"column":null}},"106":{"start":{"line":208,"column":8},"end":{"line":208,"column":null}},"107":{"start":{"line":209,"column":8},"end":{"line":212,"column":null}},"108":{"start":{"line":210,"column":10},"end":{"line":210,"column":null}},"109":{"start":{"line":211,"column":10},"end":{"line":211,"column":null}},"110":{"start":{"line":213,"column":8},"end":{"line":213,"column":null}},"111":{"start":{"line":216,"column":8},"end":{"line":216,"column":null}},"112":{"start":{"line":218,"column":8},"end":{"line":218,"column":null}},"113":{"start":{"line":219,"column":8},"end":{"line":219,"column":null}},"114":{"start":{"line":220,"column":8},"end":{"line":220,"column":null}},"115":{"start":{"line":221,"column":8},"end":{"line":221,"column":null}},"116":{"start":{"line":223,"column":8},"end":{"line":226,"column":null}},"117":{"start":{"line":224,"column":10},"end":{"line":224,"column":null}},"118":{"start":{"line":225,"column":10},"end":{"line":225,"column":null}},"119":{"start":{"line":227,"column":8},"end":{"line":227,"column":null}},"120":{"start":{"line":229,"column":8},"end":{"line":229,"column":null}},"121":{"start":{"line":230,"column":8},"end":{"line":230,"column":null}},"122":{"start":{"line":231,"column":8},"end":{"line":231,"column":null}},"123":{"start":{"line":245,"column":4},"end":{"line":261,"column":null}},"124":{"start":{"line":247,"column":23},"end":{"line":247,"column":null}},"125":{"start":{"line":248,"column":8},"end":{"line":259,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":2},"end":{"line":17,"column":null}},"loc":{"start":{"line":25,"column":4},"end":{"line":38,"column":null}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":27,"column":37},"end":{"line":27,"column":43}},"loc":{"start":{"line":27,"column":43},"end":{"line":29,"column":null}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":30,"column":26},"end":{"line":30,"column":32}},"loc":{"start":{"line":30,"column":32},"end":{"line":32,"column":null}}},"3":{"name":"(anonymous_3)","decl":{"start":{"line":33,"column":28},"end":{"line":33,"column":34}},"loc":{"start":{"line":33,"column":34},"end":{"line":35,"column":null}}},"4":{"name":"(anonymous_4)","decl":{"start":{"line":40,"column":9},"end":{"line":40,"column":13}},"loc":{"start":{"line":40,"column":37},"end":{"line":65,"column":null}}},"5":{"name":"(anonymous_5)","decl":{"start":{"line":45,"column":35},"end":{"line":45,"column":36}},"loc":{"start":{"line":45,"column":68},"end":{"line":52,"column":9}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":67,"column":9},"end":{"line":67,"column":13}},"loc":{"start":{"line":67,"column":66},"end":{"line":79,"column":null}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":81,"column":9},"end":{"line":81,"column":30}},"loc":{"start":{"line":81,"column":30},"end":{"line":98,"column":null}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":88,"column":15},"end":{"line":88,"column":21}},"loc":{"start":{"line":88,"column":21},"end":{"line":90,"column":7}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":100,"column":9},"end":{"line":100,"column":19}},"loc":{"start":{"line":100,"column":19},"end":{"line":108,"column":null}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":110,"column":9},"end":{"line":110,"column":21}},"loc":{"start":{"line":110,"column":21},"end":{"line":118,"column":null}}},"11":{"name":"(anonymous_11)","decl":{"start":{"line":120,"column":12},"end":{"line":120,"column":20}},"loc":{"start":{"line":120,"column":31},"end":{"line":131,"column":null}}},"12":{"name":"(anonymous_12)","decl":{"start":{"line":122,"column":11},"end":{"line":122,"column":15}},"loc":{"start":{"line":122,"column":31},"end":{"line":130,"column":null}}},"13":{"name":"(anonymous_13)","decl":{"start":{"line":133,"column":12},"end":{"line":133,"column":20}},"loc":{"start":{"line":133,"column":31},"end":{"line":140,"column":null}}},"14":{"name":"(anonymous_14)","decl":{"start":{"line":135,"column":11},"end":{"line":135,"column":15}},"loc":{"start":{"line":135,"column":31},"end":{"line":139,"column":null}}},"15":{"name":"(anonymous_15)","decl":{"start":{"line":142,"column":12},"end":{"line":142,"column":32}},"loc":{"start":{"line":142,"column":43},"end":{"line":152,"column":null}}},"16":{"name":"(anonymous_16)","decl":{"start":{"line":144,"column":11},"end":{"line":144,"column":15}},"loc":{"start":{"line":144,"column":31},"end":{"line":151,"column":null}}},"17":{"name":"(anonymous_17)","decl":{"start":{"line":154,"column":12},"end":{"line":154,"column":34}},"loc":{"start":{"line":154,"column":94},"end":{"line":159,"column":null}}},"18":{"name":"(anonymous_18)","decl":{"start":{"line":155,"column":36},"end":{"line":155,"column":40}},"loc":{"start":{"line":155,"column":56},"end":{"line":158,"column":5}}},"19":{"name":"(anonymous_19)","decl":{"start":{"line":161,"column":12},"end":{"line":161,"column":23}},"loc":{"start":{"line":161,"column":81},"end":{"line":166,"column":null}}},"20":{"name":"(anonymous_20)","decl":{"start":{"line":162,"column":36},"end":{"line":162,"column":40}},"loc":{"start":{"line":162,"column":56},"end":{"line":165,"column":5}}},"21":{"name":"(anonymous_21)","decl":{"start":{"line":168,"column":12},"end":{"line":168,"column":25}},"loc":{"start":{"line":168,"column":83},"end":{"line":173,"column":null}}},"22":{"name":"(anonymous_22)","decl":{"start":{"line":169,"column":36},"end":{"line":169,"column":40}},"loc":{"start":{"line":169,"column":56},"end":{"line":172,"column":5}}},"23":{"name":"(anonymous_23)","decl":{"start":{"line":178,"column":12},"end":{"line":178,"column":37}},"loc":{"start":{"line":178,"column":37},"end":{"line":233,"column":null}}},"24":{"name":"(anonymous_24)","decl":{"start":{"line":237,"column":2},"end":{"line":237,"column":16}},"loc":{"start":{"line":244,"column":4},"end":{"line":262,"column":null}}},"25":{"name":"(anonymous_25)","decl":{"start":{"line":246,"column":6},"end":{"line":246,"column":16}},"loc":{"start":{"line":246,"column":31},"end":{"line":260,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":41,"column":4},"end":{"line":64,"column":null}},"type":"switch","locations":[{"start":{"line":42,"column":6},"end":{"line":43,"column":null}},{"start":{"line":44,"column":6},"end":{"line":53,"column":null}},{"start":{"line":54,"column":6},"end":{"line":55,"column":null}},{"start":{"line":56,"column":6},"end":{"line":63,"column":null}}]},"1":{"loc":{"start":{"line":46,"column":10},"end":{"line":50,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":10},"end":{"line":50,"column":null}},{"start":{},"end":{}}]},"2":{"loc":{"start":{"line":47,"column":12},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":47,"column":12},"end":{"line":49,"column":null}},{"start":{},"end":{}}]},"3":{"loc":{"start":{"line":59,"column":8},"end":{"line":63,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":8},"end":{"line":63,"column":null}},{"start":{"line":61,"column":15},"end":{"line":63,"column":null}}]},"4":{"loc":{"start":{"line":68,"column":4},"end":{"line":77,"column":null}},"type":"switch","locations":[{"start":{"line":69,"column":6},"end":{"line":70,"column":null}},{"start":{"line":71,"column":6},"end":{"line":72,"column":null}},{"start":{"line":73,"column":6},"end":{"line":74,"column":null}},{"start":{"line":75,"column":6},"end":{"line":75,"column":null}}]},"5":{"loc":{"start":{"line":82,"column":4},"end":{"line":82,"column":null}},"type":"if","locations":[{"start":{"line":82,"column":4},"end":{"line":82,"column":null}},{"start":{},"end":{}}]},"6":{"loc":{"start":{"line":82,"column":8},"end":{"line":82,"column":59}},"type":"binary-expr","locations":[{"start":{"line":82,"column":8},"end":{"line":82,"column":25}},{"start":{"line":82,"column":25},"end":{"line":82,"column":59}}]},"7":{"loc":{"start":{"line":92,"column":4},"end":{"line":97,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":4},"end":{"line":97,"column":null}},{"start":{},"end":{}}]},"8":{"loc":{"start":{"line":94,"column":6},"end":{"line":96,"column":null}},"type":"if","locations":[{"start":{"line":94,"column":6},"end":{"line":96,"column":null}},{"start":{},"end":{}}]},"9":{"loc":{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},{"start":{},"end":{}}]},"10":{"loc":{"start":{"line":115,"column":4},"end":{"line":117,"column":null}},"type":"if","locations":[{"start":{"line":115,"column":4},"end":{"line":117,"column":null}},{"start":{},"end":{}}]},"11":{"loc":{"start":{"line":125,"column":25},"end":{"line":125,"column":null}},"type":"cond-expr","locations":[{"start":{"line":125,"column":34},"end":{"line":125,"column":57}},{"start":{"line":125,"column":57},"end":{"line":125,"column":null}}]},"12":{"loc":{"start":{"line":126,"column":22},"end":{"line":126,"column":null}},"type":"binary-expr","locations":[{"start":{"line":126,"column":22},"end":{"line":126,"column":42}},{"start":{"line":126,"column":42},"end":{"line":126,"column":null}}]},"13":{"loc":{"start":{"line":127,"column":23},"end":{"line":127,"column":null}},"type":"binary-expr","locations":[{"start":{"line":127,"column":23},"end":{"line":127,"column":89}},{"start":{"line":127,"column":89},"end":{"line":127,"column":null}}]},"14":{"loc":{"start":{"line":145,"column":6},"end":{"line":147,"column":null}},"type":"if","locations":[{"start":{"line":145,"column":6},"end":{"line":147,"column":null}},{"start":{},"end":{}}]},"15":{"loc":{"start":{"line":179,"column":4},"end":{"line":232,"column":null}},"type":"switch","locations":[{"start":{"line":180,"column":6},"end":{"line":180,"column":null}},{"start":{"line":181,"column":6},"end":{"line":187,"column":null}},{"start":{"line":188,"column":6},"end":{"line":205,"column":null}},{"start":{"line":206,"column":6},"end":{"line":213,"column":null}},{"start":{"line":214,"column":6},"end":{"line":227,"column":null}},{"start":{"line":228,"column":6},"end":{"line":231,"column":null}}]},"16":{"loc":{"start":{"line":184,"column":8},"end":{"line":186,"column":null}},"type":"if","locations":[{"start":{"line":184,"column":8},"end":{"line":186,"column":null}},{"start":{},"end":{}}]},"17":{"loc":{"start":{"line":193,"column":23},"end":{"line":193,"column":null}},"type":"binary-expr","locations":[{"start":{"line":193,"column":23},"end":{"line":193,"column":62}},{"start":{"line":193,"column":62},"end":{"line":193,"column":null}}]},"18":{"loc":{"start":{"line":198,"column":10},"end":{"line":200,"column":null}},"type":"if","locations":[{"start":{"line":198,"column":10},"end":{"line":200,"column":null}},{"start":{},"end":{}}]},"19":{"loc":{"start":{"line":209,"column":8},"end":{"line":212,"column":null}},"type":"if","locations":[{"start":{"line":209,"column":8},"end":{"line":212,"column":null}},{"start":{},"end":{}}]},"20":{"loc":{"start":{"line":209,"column":12},"end":{"line":209,"column":67}},"type":"binary-expr","locations":[{"start":{"line":209,"column":12},"end":{"line":209,"column":38}},{"start":{"line":209,"column":38},"end":{"line":209,"column":67}}]},"21":{"loc":{"start":{"line":216,"column":27},"end":{"line":216,"column":null}},"type":"binary-expr","locations":[{"start":{"line":216,"column":27},"end":{"line":216,"column":49}},{"start":{"line":216,"column":49},"end":{"line":216,"column":69}},{"start":{"line":216,"column":69},"end":{"line":216,"column":null}}]},"22":{"loc":{"start":{"line":220,"column":50},"end":{"line":220,"column":null}},"type":"binary-expr","locations":[{"start":{"line":220,"column":50},"end":{"line":220,"column":73}},{"start":{"line":220,"column":73},"end":{"line":220,"column":null}}]},"23":{"loc":{"start":{"line":223,"column":8},"end":{"line":226,"column":null}},"type":"if","locations":[{"start":{"line":223,"column":8},"end":{"line":226,"column":null}},{"start":{},"end":{}}]},"24":{"loc":{"start":{"line":223,"column":12},"end":{"line":223,"column":67}},"type":"binary-expr","locations":[{"start":{"line":223,"column":12},"end":{"line":223,"column":38}},{"start":{"line":223,"column":38},"end":{"line":223,"column":67}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0},"b":{"0":[0,0,0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0,0,0,0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0,0],"22":[0,0],"23":[0,0],"24":[0,0]}} +} diff --git a/networkProxy/coverage/favicon.png b/networkProxy/coverage/favicon.png new file mode 100644 index 000000000..c1525b811 Binary files /dev/null and b/networkProxy/coverage/favicon.png differ diff --git a/networkProxy/coverage/fetchProxy.ts.html b/networkProxy/coverage/fetchProxy.ts.html new file mode 100644 index 000000000..b13bdfce9 --- /dev/null +++ b/networkProxy/coverage/fetchProxy.ts.html @@ -0,0 +1,1072 @@ + + + + + + Code coverage report for fetchProxy.ts + + + + + + + + + +
+
+

All files fetchProxy.ts

+
+ +
+ 0% + Statements + 0/148 +
+ + +
+ 0% + Branches + 0/95 +
+ + +
+ 0% + Functions + 0/21 +
+ + +
+ 0% + Lines + 0/147 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/**
+ * I took inspiration in few stack exchange posts
+ * and Tencent vConsole library (MIT)
+ * by wrapping the XMLHttpRequest object in a Proxy
+ * we can intercept the network requests
+ * in not-so-hacky way
+ * */
+import NetworkMessage from './networkMessage'
+import { RequestState, INetworkMessage, RequestResponseData } from './types';
+import { formatByteSize, genStringBody, getStringResponseByType, getURL } from './utils'
+ 
+export class ResponseProxyHandler<T extends Response> implements ProxyHandler<T> {
+  public resp: Response
+  public item: NetworkMessage
+ 
+  constructor(resp: T, item: NetworkMessage) {
+    this.resp = resp
+    this.item = item
+    this.mockReader()
+  }
+ 
+  public set(target: T, key: string, value: (args: any[]) => any) {
+    return Reflect.set(target, key, value)
+  }
+ 
+  public get(target: T, key: string) {
+    const value = Reflect.get(target, key)
+    switch (key) {
+      case 'arrayBuffer':
+      case 'blob':
+      case 'formData':
+      case 'json':
+      case 'text':
+        return () => {
+          this.item.responseType = <any>key.toLowerCase()
+          // @ts-ignore
+          return value.apply(target).then((resp: any) => {
+            this.item.response = getStringResponseByType(this.item.responseType, resp)
+            return resp
+          })
+        }
+    }
+    if (typeof value === 'function') {
+      return value.bind(target)
+    } else {
+      return value
+    }
+  }
+ 
+  protected mockReader() {
+    let readerReceivedValue: Uint8Array
+    if (!this.resp.body) {
+      // some browsers do not return `body` in some cases, like `OPTIONS` method
+      return
+    }
+    if (typeof this.resp.body.getReader !== 'function') {
+      return
+    }
+    const _getReader = this.resp.body.getReader
+    // @ts-ignore
+    this.resp.body.getReader = () => {
+      const reader = <ReturnType<typeof _getReader>>_getReader.apply(this.resp.body)
+ 
+      // when readyState is already 4,
+      // it's not a chunked stream, or it had already been read.
+      // so should not update status.
+      if (this.item.readyState === RequestState.DONE) {
+        return reader
+      }
+ 
+      const _read = reader.read
+      const _cancel = reader.cancel
+      this.item.responseType = 'arraybuffer'
+ 
+      // @ts-ignore
+      reader.read = () => {
+        return (<ReturnType<typeof _read>>_read.apply(reader)).then(
+          (result: ReadableStreamReadResult<Uint8Array>) => {
+            if (!readerReceivedValue) {
+              // @ts-ignore
+              readerReceivedValue = new Uint8Array(result.value)
+            } else {
+              // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+              const newValue = new Uint8Array(readerReceivedValue.length + result.value!.length)
+              newValue.set(readerReceivedValue)
+              // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+              newValue.set(result.value!, readerReceivedValue.length)
+              readerReceivedValue = newValue
+            }
+            this.item.endTime = performance.now()
+            this.item.duration = this.item.endTime - (this.item.startTime || this.item.endTime)
+            this.item.readyState = result.done ? 4 : 3
+            this.item.statusText = result.done ? String(this.item.status) : 'Loading'
+            this.item.responseSize = readerReceivedValue.length
+            this.item.responseSizeText = formatByteSize(this.item.responseSize)
+            if (result.done) {
+              this.item.response = getStringResponseByType(
+                this.item.responseType,
+                readerReceivedValue,
+              )
+            }
+            return result
+          },
+        )
+      }
+ 
+      reader.cancel = (...args) => {
+        this.item.cancelState = 2
+        this.item.statusText = 'Cancel'
+        this.item.endTime = performance.now()
+        this.item.duration = this.item.endTime - (this.item.startTime || this.item.endTime)
+        this.item.response = getStringResponseByType(this.item.responseType, readerReceivedValue)
+        return _cancel.apply(reader, args)
+      }
+      return reader
+    }
+  }
+}
+ 
+export class FetchProxyHandler<T extends typeof fetch> implements ProxyHandler<T> {
+  constructor(
+    private readonly ignoredHeaders: boolean | string[],
+    private readonly setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
+    private readonly sanitize: (data: RequestResponseData) => RequestResponseData | null,
+    private readonly sendMessage: (item: INetworkMessage) => void,
+    private readonly isServiceUrl: (url: string) => boolean,
+    private readonly tokenUrlMatcher?: (url: string) => boolean,
+  ) {}
+ 
+  public apply(target: T, _: typeof window, argsList: [RequestInfo | URL, RequestInit]) {
+    const input = argsList[0]
+    const init = argsList[1]
+    if (
+      !input ||
+      // @ts-ignore
+      (typeof input !== 'string' && !input?.url)
+    ) {
+      return <ReturnType<T>>target.apply(window, argsList)
+    }
+ 
+    const isORUrl =
+      input instanceof URL || typeof input === 'string'
+        ? this.isServiceUrl(String(input))
+        : this.isServiceUrl(String(input.url))
+ 
+    if (isORUrl) {
+      return target.apply(window, argsList)
+    }
+ 
+    const item = new NetworkMessage(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize)
+    this.beforeFetch(item, input as RequestInfo, init)
+ 
+    this.setSessionTokenHeader((name, value) => {
+      if (this.tokenUrlMatcher !== undefined) {
+        if (!this.tokenUrlMatcher(item.url)) {
+          return
+        }
+      }
+      if (argsList[1] === undefined && argsList[0] instanceof Request) {
+        return argsList[0].headers.append(name, value)
+      } else {
+        if (!argsList[1]) argsList[1] = {}
+        if (argsList[1].headers === undefined) {
+          argsList[1] = { ...argsList[1], headers: {} }
+        }
+        if (argsList[1].headers instanceof Headers) {
+          argsList[1].headers.append(name, value)
+        } else if (Array.isArray(argsList[1].headers)) {
+          argsList[1].headers.push([name, value])
+        } else {
+          // @ts-ignore
+          argsList[1].headers[name] = value
+        }
+      }
+    })
+    return (<ReturnType<T>>target.apply(window, argsList))
+      .then(this.afterFetch(item))
+      .catch((e) => {
+        // mock finally
+        item.endTime = performance.now()
+        item.duration = item.endTime - (item.startTime || item.endTime)
+        throw e
+      })
+  }
+ 
+  protected beforeFetch(item: NetworkMessage, input: RequestInfo | string, init?: RequestInit) {
+    let url: URL,
+      method = 'GET',
+      requestHeader: HeadersInit = {}
+ 
+    // handle `input` content
+    if (typeof input === 'string') {
+      // when `input` is a string
+      method = init?.method || 'GET'
+      url = getURL(input)
+      requestHeader = init?.headers || {}
+    } else {
+      // when `input` is a `Request` object
+      method = input.method || 'GET'
+      url = getURL(input.url)
+      requestHeader = input.headers
+    }
+ 
+    item.method = <NetworkMessage['method']>method
+    item.requestType = 'fetch'
+    item.requestHeader = requestHeader
+    item.url = url.toString()
+    item.name = (url.pathname.split('/').pop() || '') + url.search
+    item.status = 0
+    item.statusText = 'Pending'
+    item.readyState = 1
+    if (!item.startTime) {
+      // UNSENT
+      item.startTime = performance.now()
+    }
+ 
+    if (Object.prototype.toString.call(requestHeader) === '[object Headers]') {
+      item.requestHeader = {}
+      for (const [key, value] of <Headers>requestHeader) {
+        item.requestHeader[key] = value
+      }
+    } else {
+      item.requestHeader = requestHeader
+    }
+ 
+    // save GET data
+    if (url.search && url.searchParams) {
+      item.getData = {}
+      for (const [key, value] of url.searchParams) {
+        item.getData[key] = value
+      }
+    }
+ 
+    // save POST data
+    if (init?.body) {
+      item.requestData = genStringBody(init.body)
+    }
+  }
+ 
+  protected afterFetch(item: NetworkMessage) {
+    return (resp: Response) => {
+      item.endTime = performance.now()
+      item.duration = item.endTime - (item.startTime || item.endTime)
+      item.status = resp.status
+      item.statusText = String(resp.status)
+ 
+      let isChunked = false
+      item.header = {}
+      for (const [key, value] of resp.headers) {
+        item.header[key] = value
+        isChunked = value.toLowerCase().indexOf('chunked') > -1 ? true : isChunked
+      }
+ 
+      if (isChunked) {
+        // when `transfer-encoding` is chunked, the response is a stream which is under loading,
+        // so the `readyState` should be 3 (Loading),
+        // and the response should NOT be `clone()` which will affect stream reading.
+        item.readyState = 3
+      } else {
+        // Otherwise, not chunked, the response is not a stream,
+        // so it's completed and can be cloned for `text()` calling.
+        item.readyState = 4
+ 
+        this.handleResponseBody(resp.clone(), item)
+          .then((responseValue: string | ArrayBuffer) => {
+            item.responseSize =
+              typeof responseValue === 'string' ? responseValue.length : responseValue.byteLength
+            item.responseSizeText = formatByteSize(item.responseSize)
+            item.response = getStringResponseByType(item.responseType, responseValue)
+ 
+            const msg = item.getMessage()
+            if (msg) {
+              this.sendMessage(msg)
+            }
+          })
+          .catch((e) => {
+            if (e.name !== 'AbortError') {
+              throw e
+            } else {
+              // ignore AbortError
+            }
+          })
+      }
+ 
+      return new Proxy(resp, new ResponseProxyHandler(resp, item))
+    }
+  }
+ 
+  protected handleResponseBody(resp: Response, item: NetworkMessage) {
+    // parse response body by Content-Type
+    const contentType = resp.headers.get('content-type')
+    if (contentType && contentType.includes('application/json')) {
+      item.responseType = 'json'
+      return resp.text()
+    } else if (
+      contentType &&
+      (contentType.includes('text/html') || contentType.includes('text/plain'))
+    ) {
+      item.responseType = 'text'
+      return resp.text()
+    } else {
+      item.responseType = 'arraybuffer'
+      return resp.arrayBuffer()
+    }
+  }
+}
+ 
+export default class FetchProxy {
+  public static create(
+    ignoredHeaders: boolean | string[],
+    setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
+    sanitize: (data: RequestResponseData) => RequestResponseData | null,
+    sendMessage: (item: INetworkMessage) => void,
+    isServiceUrl: (url: string) => boolean,
+    tokenUrlMatcher?: (url: string) => boolean,
+  ) {
+    return new Proxy(
+      fetch,
+      new FetchProxyHandler(
+        ignoredHeaders,
+        setSessionTokenHeader,
+        sanitize,
+        sendMessage,
+        isServiceUrl,
+        tokenUrlMatcher,
+      ),
+    )
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/networkProxy/coverage/index.html b/networkProxy/coverage/index.html new file mode 100644 index 000000000..8cfed1ef5 --- /dev/null +++ b/networkProxy/coverage/index.html @@ -0,0 +1,206 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 26.29% + Statements + 132/502 +
+ + +
+ 22.5% + Branches + 70/311 +
+ + +
+ 22.22% + Functions + 16/72 +
+ + +
+ 26.11% + Lines + 129/494 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
beaconProxy.ts +
+
0%0/510%0/240%0/50%0/51
fetchProxy.ts +
+
0%0/1480%0/950%0/210%0/147
index.ts +
+
0%0/140%0/130%0/20%0/14
networkMessage.ts +
+
90.19%46/5155.55%10/1887.5%7/891.48%43/47
types.ts +
+
0%0/70%0/20%0/10%0/6
utils.ts +
+
81.9%86/10560%60/100100%9/981.9%86/105
xhrProxy.ts +
+
0%0/1260%0/590%0/260%0/124
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/networkProxy/coverage/index.ts.html b/networkProxy/coverage/index.ts.html new file mode 100644 index 000000000..593fb9e18 --- /dev/null +++ b/networkProxy/coverage/index.ts.html @@ -0,0 +1,373 @@ + + + + + + Code coverage report for index.ts + + + + + + + + + +
+
+

All files index.ts

+
+ +
+ 0% + Statements + 0/14 +
+ + +
+ 0% + Branches + 0/13 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 0% + Lines + 0/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import BeaconProxy from "./beaconProxy";
+import FetchProxy from "./fetchProxy";
+import XHRProxy from "./xhrProxy";
+import { INetworkMessage, RequestResponseData } from "./types";
+ 
+export {
+  BeaconProxy,
+  FetchProxy,
+  XHRProxy,
+  INetworkMessage,
+  RequestResponseData,
+};
+ 
+const getWarning = (api: string) => {
+  const str = `Openreplay: Can't find ${api} in global context.`;
+  console.warn(str);
+};
+ 
+/**
+ * Creates network proxies for XMLHttpRequest, fetch, and sendBeacon to intercept and monitor network requests and
+ * responses.
+ *
+ * @param {Window | typeof globalThis} context - The global context object (e.g., window or globalThis).
+ * @param {boolean | string[]} ignoredHeaders - Headers to ignore from requests. If `true`, all headers are ignored; if
+ *   an array of strings, those header names are ignored.
+ * @param {(cb: (name: string, value: string) => void) => void} setSessionTokenHeader - Function to set a session token
+ *   header; accepts a callback that sets the header name and value.
+ * @param {(data: RequestResponseData) => RequestResponseData | null} sanitize - Function to sanitize request and
+ *   response data; should return sanitized data or `null` to ignore the data.
+ * @param {(message: INetworkMessage) => void} sendMessage - Function to send network messages for further processing
+ *   or logging.
+ * @param {(url: string) => boolean} isServiceUrl - Function to determine if a URL is a service URL that should be
+ *   ignored by the proxy.
+ * @param {Object} [modules] - Modules to apply the proxies to.
+ * @param {boolean} [modules.xhr=true] - Whether to proxy XMLHttpRequest.
+ * @param {boolean} [modules.fetch=true] - Whether to proxy the fetch API.
+ * @param {boolean} [modules.beacon=true] - Whether to proxy navigator.sendBeacon.
+ * @param {(url: string) => boolean} [tokenUrlMatcher] - Optional function; the session token header will only be
+ *   applied to requests matching this function.
+ *
+ * @returns {void}
+ */
+export default function createNetworkProxy(
+  context: typeof globalThis,
+  ignoredHeaders: boolean | string[],
+  setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
+  sanitize: (data: RequestResponseData) => RequestResponseData | null,
+  sendMessage: (message: INetworkMessage) => void,
+  isServiceUrl: (url: string) => boolean,
+  modules: { xhr: boolean; fetch: boolean; beacon: boolean } = {
+    xhr: true,
+    fetch: true,
+    beacon: true,
+  },
+  tokenUrlMatcher?: (url: string) => boolean,
+): void {
+  if (modules.xhr) {
+    if (context.XMLHttpRequest) {
+      context.XMLHttpRequest = XHRProxy.create(
+        ignoredHeaders,
+        setSessionTokenHeader,
+        sanitize,
+        sendMessage,
+        isServiceUrl,
+        tokenUrlMatcher,
+      );
+    } else {
+      getWarning("XMLHttpRequest");
+    }
+  }
+  if (modules.fetch) {
+    if (context.fetch) {
+      context.fetch = FetchProxy.create(
+        ignoredHeaders,
+        setSessionTokenHeader,
+        sanitize,
+        sendMessage,
+        isServiceUrl,
+        tokenUrlMatcher,
+      );
+    } else {
+      getWarning("fetch");
+    }
+  }
+  if (modules.beacon) {
+    if (context?.navigator?.sendBeacon) {
+      context.navigator.sendBeacon = BeaconProxy.create(
+        ignoredHeaders,
+        setSessionTokenHeader,
+        sanitize,
+        sendMessage,
+        isServiceUrl,
+      );
+    }
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/networkProxy/coverage/networkMessage.ts.html b/networkProxy/coverage/networkMessage.ts.html new file mode 100644 index 000000000..349d08294 --- /dev/null +++ b/networkProxy/coverage/networkMessage.ts.html @@ -0,0 +1,391 @@ + + + + + + Code coverage report for networkMessage.ts + + + + + + + + + +
+
+

All files networkMessage.ts

+
+ +
+ 90.19% + Statements + 46/51 +
+ + +
+ 55.55% + Branches + 10/18 +
+ + +
+ 87.5% + Functions + 7/8 +
+ + +
+ 91.48% + Lines + 43/47 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103  +  +  +  +  +  +  +  +  +  +  +  +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +  +4x +4x +4x +4x +4x +4x +4x +  +  +4x +4x +4x +  +  +  +1x +1x +  +  +  +1x +  +1x +  +  +  +  +  +  +  +1x +  +1x +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +2x +1x +  +2x +  +  +2x +2x +2x +1x +  +2x +  +  +  +9x +6x +  +3x +  +  +  + 
import {
+  RequestResponseData,
+  INetworkMessage,
+  httpMethod,
+  RequestState,
+} from './types'
+/**
+ * I know we're not using most of the information from this class
+ * but it can be useful in the future if we will decide to display more stuff in our ui
+ * */
+ 
+export default class NetworkMessage {
+  id = ''
+  name?: string = ''
+  method: httpMethod = ''
+  url = ''
+  status = 0
+  statusText?: string = ''
+  cancelState?: 0 | 1 | 2 | 3 = 0
+  readyState?: RequestState = 0
+  header: { [key: string]: string } = {}
+  responseType: XMLHttpRequest['responseType'] = ''
+  requestType: 'xhr' | 'fetch' | 'ping' | 'custom' | 'beacon' | 'graphql' = 'xhr'
+  requestHeader: HeadersInit = {}
+  response: string
+  responseSize = 0 // bytes
+  responseSizeText = ''
+  startTime = 0
+  endTime = 0
+  duration = 0
+  getData: { [key: string]: string } = {}
+  requestData: string | null = null
+ 
+  constructor(
+    private readonly ignoredHeaders: boolean | string[] = [],
+    private readonly setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
+    private readonly sanitize: (data: RequestResponseData) => RequestResponseData | null,
+  ) {}
+ 
+  getMessage(): INetworkMessage | null {
+    const { reqHs, resHs } = this.writeHeaders()
+    const request = {
+      headers: reqHs,
+      body: this.method === 'GET' ? JSON.stringify(this.getData) : this.requestData,
+    }
+    const response = { headers: resHs, body: this.response }
+ 
+    const messageInfo = this.sanitize({
+      url: this.url,
+      method: this.method,
+      status: this.status,
+      request,
+      response,
+    })
+ 
+    Iif (!messageInfo) return null;
+ 
+    const isGraphql = messageInfo.url.includes("/graphql");
+    Iif (isGraphql && messageInfo.response.body && typeof messageInfo.response.body === 'string') {
+      const isError = messageInfo.response.body.includes("errors");
+      messageInfo.status = isError ? 400 : 200;
+      this.requestType = 'graphql';
+    }
+ 
+    return {
+      requestType: this.requestType,
+      method: messageInfo.method as httpMethod,
+      url: messageInfo.url,
+      request: JSON.stringify(messageInfo.request),
+      response: JSON.stringify(messageInfo.response),
+      status: messageInfo.status,
+      startTime: this.startTime,
+      duration: this.duration,
+      responseSize: this.responseSize,
+    }
+  }
+ 
+  writeHeaders() {
+    const reqHs: Record<string, string> = {}
+    Object.entries(this.requestHeader).forEach(([key, value]) => {
+      if (this.isHeaderIgnored(key)) return
+      reqHs[key] = value
+    })
+    this.setSessionTokenHeader((name, value) => {
+      reqHs[name] = value
+    })
+    const resHs: Record<string, string> = {}
+    Object.entries(this.header).forEach(([key, value]) => {
+      if (this.isHeaderIgnored(key)) return
+      resHs[key] = value
+    })
+    return { reqHs, resHs }
+  }
+ 
+  isHeaderIgnored(key: string) {
+    if (Array.isArray(this.ignoredHeaders)) {
+      return this.ignoredHeaders.map((k) => k.toLowerCase()).includes(key.toLowerCase())
+    } else {
+      return this.ignoredHeaders
+    }
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/networkProxy/coverage/prettify.css b/networkProxy/coverage/prettify.css new file mode 100644 index 000000000..b317a7cda --- /dev/null +++ b/networkProxy/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/networkProxy/coverage/prettify.js b/networkProxy/coverage/prettify.js new file mode 100644 index 000000000..b3225238f --- /dev/null +++ b/networkProxy/coverage/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/networkProxy/coverage/sort-arrow-sprite.png b/networkProxy/coverage/sort-arrow-sprite.png new file mode 100644 index 000000000..6ed68316e Binary files /dev/null and b/networkProxy/coverage/sort-arrow-sprite.png differ diff --git a/networkProxy/coverage/sorter.js b/networkProxy/coverage/sorter.js new file mode 100644 index 000000000..2bb296a8c --- /dev/null +++ b/networkProxy/coverage/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/networkProxy/coverage/types.ts.html b/networkProxy/coverage/types.ts.html new file mode 100644 index 000000000..a0ea1e747 --- /dev/null +++ b/networkProxy/coverage/types.ts.html @@ -0,0 +1,202 @@ + + + + + + Code coverage report for types.ts + + + + + + + + + +
+
+

All files types.ts

+
+ +
+ 0% + Statements + 0/7 +
+ + +
+ 0% + Branches + 0/2 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export interface RequestResponseData {
+  status: number
+  readonly method: string
+  url: string
+  request: {
+    body: string | null
+    headers: Record<string, string>
+  }
+  response: {
+    body: string | null
+    headers: Record<string, string>
+  }
+}
+ 
+export interface INetworkMessage {
+  requestType: 'xhr' | 'fetch' | 'ping' | 'custom' | 'beacon' | 'graphql',
+  method: httpMethod,
+  url: string,
+  /** stringified JSON { headers: {}, body: {} } */
+  request: string,
+  /** stringified JSON { headers: {}, body: {} } */
+  response: string,
+  status: number,
+  startTime: number,
+  duration: number,
+  responseSize: number,
+}
+ 
+export type httpMethod =
+  // '' is a rare case of error
+  '' | 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'CONNECT' | 'OPTIONS' | 'TRACE' | 'PATCH'
+ 
+export enum RequestState {
+  UNSENT = 0,
+  OPENED = 1,
+  HEADERS_RECEIVED = 2,
+  LOADING = 3,
+  DONE = 4,
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/networkProxy/coverage/utils.ts.html b/networkProxy/coverage/utils.ts.html new file mode 100644 index 000000000..edbc67d05 --- /dev/null +++ b/networkProxy/coverage/utils.ts.html @@ -0,0 +1,709 @@ + + + + + + Code coverage report for utils.ts + + + + + + + + + +
+
+

All files utils.ts

+
+ +
+ 81.9% + Statements + 86/105 +
+ + +
+ 60% + Branches + 60/100 +
+ + +
+ 100% + Functions + 9/9 +
+ + +
+ 81.9% + Lines + 86/105 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +2091x +  +  +  +2x +2x +  +  +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +1x +1x +  +1x +  +2x +  +  +1x +  +  +  +3x +3x +  +  +  +2x +1x +1x +1x +  +  +  +2x +  +  +  +  +1x +1x +  +1x +  +3x +  +  +1x +2x +  +  +  +  +2x +1x +1x +  +  +1x +1x +  +1x +  +  +  +  +1x +  +1x +1x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +1x +2x +1x +  +2x +2x +2x +2x +2x +2x +2x +2x +  +  +  +  +  +  +  +  +2x +  +  +1x +6x +  +  +  +  +6x +2x +  +2x +  +  +1x +1x +  +1x +2x +2x +  +  +4x +  +1x +1x +2x +  +3x +  +  +  +  +  +3x +  +  +  +  +  +6x +  +  +  +7x +  +  +  +9x +1x +  +8x +2x +  +6x +  +  +  +4x +  +1x +  +3x +1x +  +2x +1x +  +1x +  +  +1x +3x +1x +1x +  +3x +2x +  +1x +  +  + 
export const genResponseByType = (
+  responseType: XMLHttpRequest['responseType'],
+  response: any,
+): string | Record<string, any> => {
+  let result = ''
+  switch (responseType) {
+    case '':
+    case 'text':
+    case 'json':
+      if (typeof response == 'string') {
+        try {
+          result = JSON.parse(response)
+        } catch (e) {
+          // not a JSON string
+          result = response.slice(0, 10000)
+        }
+      E} else if (isPureObject(response) || Array.isArray(response)) {
+        result = JSON.stringify(response)
+      } else if (typeof response !== 'undefined') {
+        result = Object.prototype.toString.call(response)
+      }
+      break
+ 
+    case 'blob':
+    case 'document':
+    case 'arraybuffer':
+    default:
+      Eif (typeof response !== 'undefined') {
+        result = Object.prototype.toString.call(response)
+      }
+      break
+  }
+  return result
+}
+ 
+export const getStringResponseByType = (
+  responseType: XMLHttpRequest['responseType'],
+  response: any,
+) => {
+  let result = ''
+  switch (responseType) {
+    case '':
+    case 'text':
+    case 'json':
+      if (typeof response == 'string') {
+        result = response
+      } else if (isPureObject(response) || Array.isArray(response)) {
+        result = JSON.stringify(response)
+      E} else if (typeof response !== 'undefined') {
+        result = Object.prototype.toString.call(response)
+      }
+      break
+    case 'blob':
+    case 'document':
+    case 'arraybuffer':
+    default:
+      Eif (typeof response !== 'undefined') {
+        result = Object.prototype.toString.call(response)
+      }
+      break
+  }
+  return result
+}
+ 
+export const genStringBody = (body?: BodyInit) => {
+  Iif (!body) {
+    return null
+  }
+  let result: string
+ 
+  if (typeof body === 'string') {
+    Eif (body[0] === '{' || body[0] === '[') {
+      result = body
+    }
+    // 'a=1&b=2' => try to parse as query
+    const arr = body.split('&')
+    if (arr.length === 1) {
+      // not a query, parse as original string
+      result = body
+    } else E{
+      // 'a=1&b=2&c' => parse as query
+      result = arr.join(',')
+    }
+  } else if (isIterable(body)) {
+    // FormData or URLSearchParams or Array
+    const arr = []
+    for (const [key, value] of <FormData | URLSearchParams>body) {
+      arr.push(`${key}=${typeof value === 'string' ? value : '[object Object]'}`)
+    }
+    result = arr.join(',')
+  E} else if (
+    body instanceof Blob ||
+    body instanceof ReadableStream ||
+    body instanceof ArrayBuffer
+  ) {
+    result = 'byte data'
+  } else if (isPureObject(body)) {
+    // overriding ArrayBufferView which is not convertable to string
+    result = <any>body
+  } else {
+    result = `can't parse body ${typeof body}`
+  }
+  return result
+}
+ 
+export const genGetDataByUrl = (url: string, getData: Record<string, any> = {}) => {
+  if (!isPureObject(getData)) {
+    getData = {}
+  }
+  let query: string[] = url ? url.split('?') : [] // a.php?b=c&d=?e => ['a.php', 'b=c&d=', 'e']
+  query.shift() // => ['b=c&d=', 'e']
+  Eif (query.length > 0) {
+    query = query.join('?').split('&') // => 'b=c&d=?e' => ['b=c', 'd=?e']
+    for (const q of query) {
+      const kv = q.split('=')
+      try {
+        getData[kv[0]] = decodeURIComponent(kv[1])
+      } catch (e) {
+        // "URIError: URI malformed" will be thrown when `kv[1]` contains "%", so just use raw data
+        // @issue #470
+        // @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Malformed_URI
+        getData[kv[0]] = kv[1]
+      }
+    }
+  }
+  return getData
+}
+ 
+export const genFormattedBody = (body?: BodyInit) => {
+  Iif (!body) {
+    return null
+  }
+  let result: string | { [key: string]: string }
+ 
+  if (typeof body === 'string') {
+    try {
+      // '{a:1}' =>
+      result = JSON.parse(body)
+    } catch (e) {
+      // 'a=1&b=2' => try to parse as query
+      const arr = body.split('&')
+      result = {}
+      // eslint-disable-next-line
+      for (let q of arr) {
+        const kv = q.split('=')
+        result[kv[0]] = kv[1] === undefined ? 'undefined' : kv[1]
+      }
+    }
+  } else if (isIterable(body)) {
+    // FormData or URLSearchParams or Array
+    result = {}
+    for (const [key, value] of <FormData | URLSearchParams>body) {
+      result[key] = typeof value === 'string' ? value : '[object Object]'
+    }
+  } else if (
+    ArrayBuffer.isView(body) ||
+    body instanceof Blob ||
+    body instanceof ReadableStream ||
+    body instanceof ArrayBuffer
+  ) {
+    result = '[byte data]'
+  E} else if (isPureObject(body)) {
+    result = <any>body
+  } else {
+    result = `can't parse body ${typeof body}`
+  }
+  return result
+}
+ 
+export function isPureObject(input: any): input is Record<any, any> {
+  return null !== input && typeof input === 'object'
+}
+ 
+export function isIterable(value: any) {
+  if (value === null || value === undefined) {
+    return false
+  }
+  if (ArrayBuffer.isView(value)) {
+    return false
+  }
+  return typeof Symbol !== 'undefined' && typeof value[Symbol.iterator] === 'function'
+}
+ 
+export function formatByteSize(bytes: number) {
+  if (bytes <= 0) {
+    // shouldn't happen?
+    return ''
+  }
+  if (bytes >= 1000 * 1000) {
+    return (bytes / 1000 / 1000).toFixed(1) + ' MB'
+  }
+  if (bytes >= 1000) {
+    return (bytes / 1000).toFixed(1) + ' KB'
+  }
+  return `${bytes}B`
+}
+ 
+export const getURL = (urlString: string) => {
+  if (urlString.startsWith('//')) {
+    const baseUrl = new URL(window.location.href)
+    urlString = `${baseUrl.protocol}${urlString}`
+  }
+  if (urlString.startsWith('http')) {
+    return new URL(urlString)
+  } else {
+    return new URL(urlString, window.location.href)
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/networkProxy/coverage/xhrProxy.ts.html b/networkProxy/coverage/xhrProxy.ts.html new file mode 100644 index 000000000..3761489b0 --- /dev/null +++ b/networkProxy/coverage/xhrProxy.ts.html @@ -0,0 +1,874 @@ + + + + + + Code coverage report for xhrProxy.ts + + + + + + + + + +
+
+

All files xhrProxy.ts

+
+ +
+ 0% + Statements + 0/126 +
+ + +
+ 0% + Branches + 0/59 +
+ + +
+ 0% + Functions + 0/26 +
+ + +
+ 0% + Lines + 0/124 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/**
+ * I took inspiration in few stack exchange posts
+ * and Tencent vConsole library (MIT)
+ * by wrapping the XMLHttpRequest object in a Proxy
+ * we can intercept the network requests
+ * in not-so-hacky way
+ * */
+ 
+import NetworkMessage from './networkMessage'
+import { RequestState, INetworkMessage, RequestResponseData } from './types';
+import { genGetDataByUrl, formatByteSize, genStringBody, getStringResponseByType } from './utils'
+ 
+export class XHRProxyHandler<T extends XMLHttpRequest> implements ProxyHandler<T> {
+  public XMLReq: XMLHttpRequest
+  public item: NetworkMessage
+ 
+  constructor(
+    XMLReq: XMLHttpRequest,
+    private readonly ignoredHeaders: boolean | string[],
+    private readonly setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
+    private readonly sanitize: (data: RequestResponseData) => RequestResponseData | null,
+    private readonly sendMessage: (message: INetworkMessage) => void,
+    private readonly isServiceUrl: (url: string) => boolean,
+    private readonly tokenUrlMatcher?: (url: string) => boolean,
+  ) {
+    this.XMLReq = XMLReq
+    this.XMLReq.onreadystatechange = () => {
+      this.onReadyStateChange()
+    }
+    this.XMLReq.onabort = () => {
+      this.onAbort()
+    }
+    this.XMLReq.ontimeout = () => {
+      this.onTimeout()
+    }
+    this.item = new NetworkMessage(ignoredHeaders, setSessionTokenHeader, sanitize)
+    this.item.requestType = 'xhr'
+  }
+ 
+  public get(target: T, key: string) {
+    switch (key) {
+      case 'open':
+        return this.getOpen(target)
+      case 'send':
+        this.setSessionTokenHeader((name: string, value: string) => {
+          if (this.tokenUrlMatcher !== undefined) {
+            if (!this.tokenUrlMatcher(this.item.url)) {
+              return
+            }
+          }
+          target.setRequestHeader(name, value)
+        })
+        return this.getSend(target)
+      case 'setRequestHeader':
+        return this.getSetRequestHeader(target)
+      default:
+        // eslint-disable-next-line no-case-declarations
+        const value = Reflect.get(target, key)
+        if (typeof value === 'function') {
+          return value.bind(target)
+        } else {
+          return value
+        }
+    }
+  }
+ 
+  public set(target: T, key: string, value: (args: any[]) => any) {
+    switch (key) {
+      case 'onreadystatechange':
+        return this.setOnReadyStateChange(target, key, value)
+      case 'onabort':
+        return this.setOnAbort(target, key, value)
+      case 'ontimeout':
+        return this.setOnTimeout(target, key, value)
+      default:
+      // not tracked methods
+    }
+    return Reflect.set(target, key, value)
+  }
+ 
+  public onReadyStateChange() {
+    if (this.item.url && this.isServiceUrl(this.item.url)) return
+    this.item.readyState = this.XMLReq.readyState
+    this.item.responseType = this.XMLReq.responseType
+    this.item.endTime = performance.now()
+    this.item.duration = this.item.endTime - this.item.startTime
+    this.updateItemByReadyState()
+    setTimeout(() => {
+      this.item.response = getStringResponseByType(this.item.responseType, this.item.response)
+    }, 0)
+ 
+    if (this.XMLReq.readyState === RequestState.DONE) {
+      const msg = this.item.getMessage()
+      if (msg) {
+        this.sendMessage(msg)
+      }
+    }
+  }
+ 
+  public onAbort() {
+    this.item.cancelState = 1
+    this.item.statusText = 'Abort'
+ 
+    const msg = this.item.getMessage()
+    if (msg) {
+      this.sendMessage(msg)
+    }
+  }
+ 
+  public onTimeout() {
+    this.item.cancelState = 3
+    this.item.statusText = 'Timeout'
+ 
+    const msg = this.item.getMessage()
+    if (msg) {
+      this.sendMessage(msg)
+    }
+  }
+ 
+  protected getOpen(target: T) {
+    const targetFunction = Reflect.get(target, 'open')
+    return (...args: any[]) => {
+      const method = args[0]
+      const url = args[1]
+      this.item.method = method ? method.toUpperCase() : 'GET'
+      this.item.url = url.toString?.() || ''
+      this.item.name = this.item.url?.replace(new RegExp('/*$'), '').split('/').pop() ?? ''
+      this.item.getData = genGetDataByUrl(this.item.url, {})
+      return targetFunction.apply(target, args)
+    }
+  }
+ 
+  protected getSend(target: T) {
+    const targetFunction = Reflect.get(target, 'send')
+    return (...args: any[]) => {
+      const data: XMLHttpRequestBodyInit = args[0]
+      this.item.requestData = genStringBody(data)
+      return targetFunction.apply(target, args)
+    }
+  }
+ 
+  protected getSetRequestHeader(target: T) {
+    const targetFunction = Reflect.get(target, 'setRequestHeader')
+    return (...args: any[]) => {
+      if (!this.item.requestHeader) {
+        this.item.requestHeader = {}
+      }
+      // @ts-ignore
+      this.item.requestHeader[args[0]] = args[1]
+      return targetFunction.apply(target, args)
+    }
+  }
+ 
+  protected setOnReadyStateChange(target: T, key: string, orscFunction: (args: any[]) => any) {
+    return Reflect.set(target, key, (...args: any[]) => {
+      this.onReadyStateChange()
+      orscFunction?.apply(target, args)
+    })
+  }
+ 
+  protected setOnAbort(target: T, key: string, oaFunction: (args: any[]) => any) {
+    return Reflect.set(target, key, (...args: any[]) => {
+      this.onAbort()
+      oaFunction.apply(target, args)
+    })
+  }
+ 
+  protected setOnTimeout(target: T, key: string, otFunction: (args: any[]) => any) {
+    return Reflect.set(target, key, (...args: any[]) => {
+      this.onTimeout()
+      otFunction.apply(target, args)
+    })
+  }
+ 
+  /**
+   * Update item's properties according to readyState.
+   */
+  protected updateItemByReadyState() {
+    switch (this.XMLReq.readyState) {
+      case RequestState.UNSENT:
+      case RequestState.OPENED:
+        this.item.status = RequestState.UNSENT
+        this.item.statusText = 'Pending'
+        if (!this.item.startTime) {
+          this.item.startTime = performance.now()
+        }
+        break
+      case RequestState.HEADERS_RECEIVED:
+        this.item.status = this.XMLReq.status
+        this.item.statusText = 'Loading'
+        this.item.header = {}
+        // eslint-disable-next-line no-case-declarations
+        const header = this.XMLReq.getAllResponseHeaders() || '',
+          headerArr = header.split('\n')
+        // extract plain text to key-value format
+        for (let i = 0; i < headerArr.length; i++) {
+          const line = headerArr[i]
+          if (!line) {
+            continue
+          }
+          const arr = line.split(': ')
+          const key = arr[0]
+          this.item.header[key] = arr.slice(1).join(': ')
+        }
+        break
+      case RequestState.LOADING:
+        this.item.status = this.XMLReq.status
+        this.item.statusText = 'Loading'
+        if (!!this.XMLReq.response && this.XMLReq.response.length) {
+          this.item.responseSize = this.XMLReq.response.length
+          this.item.responseSizeText = formatByteSize(this.item.responseSize)
+        }
+        break
+      case RequestState.DONE:
+        // `XMLReq.abort()` will change `status` from 200 to 0, so use previous value in this case
+        this.item.status = this.XMLReq.status || this.item.status || 0
+        // show status code when request completed
+        this.item.statusText = String(this.item.status)
+        this.item.endTime = performance.now()
+        this.item.duration = this.item.endTime - (this.item.startTime || this.item.endTime)
+        this.item.response = this.XMLReq.response
+ 
+        if (!!this.XMLReq.response && this.XMLReq.response.length) {
+          this.item.responseSize = this.XMLReq.response.length
+          this.item.responseSizeText = formatByteSize(this.item.responseSize)
+        }
+        break
+      default:
+        this.item.status = this.XMLReq.status
+        this.item.statusText = 'Unknown'
+        break
+    }
+  }
+}
+ 
+export default class XHRProxy {
+  public static create(
+    ignoredHeaders: boolean | string[],
+    setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
+    sanitize: (data: RequestResponseData) => RequestResponseData | null,
+    sendMessage: (data: INetworkMessage) => void,
+    isServiceUrl: (url: string) => boolean,
+    tokenUrlMatcher?: (url: string) => boolean,
+  ) {
+    return new Proxy(XMLHttpRequest, {
+      construct(original: any) {
+        const XMLReq = new original()
+        return new Proxy(
+          XMLReq,
+          new XHRProxyHandler(
+            XMLReq as XMLHttpRequest,
+            ignoredHeaders,
+            setSessionTokenHeader,
+            sanitize,
+            sendMessage,
+            isServiceUrl,
+            tokenUrlMatcher,
+          ),
+        )
+      },
+    })
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/networkProxy/package.json b/networkProxy/package.json index 9734f0a5e..918b352c6 100644 --- a/networkProxy/package.json +++ b/networkProxy/package.json @@ -10,13 +10,15 @@ ], "scripts": { "build": "tsc", - "test": "vitest" + "test": "vitest", + "test:ci": "vitest --coverage" }, "author": "Nikita ", "license": "MIT", "devDependencies": { + "@vitest/coverage-istanbul": "^2.1.1", "jsdom": "^25.0.1", - "vitest": "^2.1.1", - "typescript": "^5.6.2" + "typescript": "^5.6.2", + "vitest": "^2.1.1" } } diff --git a/networkProxy/vitest.config.ts b/networkProxy/vitest.config.ts index 2c6a151d4..4b863157d 100644 --- a/networkProxy/vitest.config.ts +++ b/networkProxy/vitest.config.ts @@ -3,6 +3,9 @@ import { defineConfig } from 'vitest/config' export default defineConfig(({ mode }) => ({ define: { global: 'window' }, test: { - environment: "jsdom" + environment: "jsdom", + coverage: { + provider: 'istanbul' // or 'v8' + }, } })); \ No newline at end of file diff --git a/networkProxy/yarn.lock b/networkProxy/yarn.lock new file mode 100644 index 000000000..c8ceba9fe --- /dev/null +++ b/networkProxy/yarn.lock @@ -0,0 +1,1439 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + +"@babel/compat-data@^7.25.2": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" + integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== + +"@babel/core@^7.23.9": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.25.0", "@babel/generator@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c" + integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw== + dependencies: + "@babel/types" "^7.25.6" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + +"@babel/helpers@^7.25.0": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60" + integrity sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.23.9", "@babel/parser@^7.25.0", "@babel/parser@^7.25.4", "@babel/parser@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== + dependencies: + "@babel/types" "^7.25.6" + +"@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41" + integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.6" + "@babel/parser" "^7.25.6" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.6" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.4", "@babel/types@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@rollup/rollup-android-arm-eabi@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz#e0f5350845090ca09690fe4a472717f3b8aae225" + integrity sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww== + +"@rollup/rollup-android-arm64@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz#08270faef6747e2716d3e978a8bbf479f75fb19a" + integrity sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ== + +"@rollup/rollup-darwin-arm64@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz#691671133b350661328d42c8dbdedd56dfb97dfd" + integrity sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw== + +"@rollup/rollup-darwin-x64@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz#b2ec52a1615f24b1cd40bc8906ae31af81e8a342" + integrity sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg== + +"@rollup/rollup-linux-arm-gnueabihf@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz#217f01f304808920680bd269002df38e25d9205f" + integrity sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw== + +"@rollup/rollup-linux-arm-musleabihf@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz#93ac1c5a1e389f4482a2edaeec41fcffee54a930" + integrity sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ== + +"@rollup/rollup-linux-arm64-gnu@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz#a7f146787d6041fecc4ecdf1aa72234661ca94a4" + integrity sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w== + +"@rollup/rollup-linux-arm64-musl@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz#6a37236189648e678bd564d6e8ca798f42cf42c5" + integrity sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz#5661420dc463bec31ecb2d17d113de858cfcfe2d" + integrity sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w== + +"@rollup/rollup-linux-riscv64-gnu@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz#cb00342b7432bdef723aa606281de2f522d6dcf7" + integrity sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A== + +"@rollup/rollup-linux-s390x-gnu@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz#0708889674dccecccd28e2befccf791e0767fcb7" + integrity sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ== + +"@rollup/rollup-linux-x64-gnu@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz#a135b040b21582e91cfed2267ccfc7d589e1dbc6" + integrity sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA== + +"@rollup/rollup-linux-x64-musl@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz#88395a81a3ab7ee3dc8dc31a73ff62ed3185f34d" + integrity sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g== + +"@rollup/rollup-win32-arm64-msvc@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz#12ee49233b1125f2c1da38392f63b1dbb0c31bba" + integrity sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w== + +"@rollup/rollup-win32-ia32-msvc@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz#0f987b134c6b3123c22842b33ba0c2b6fb78cc3b" + integrity sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg== + +"@rollup/rollup-win32-x64-msvc@4.22.5": + version "4.22.5" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz#f2feb149235a5dc1deb5439758f8871255e5a161" + integrity sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ== + +"@types/estree@1.0.6", "@types/estree@^1.0.0": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +"@vitest/coverage-istanbul@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@vitest/coverage-istanbul/-/coverage-istanbul-2.1.1.tgz#11950fea0bff2628f3c278e2dac338e4af69c521" + integrity sha512-ZQM8uLinwmhmLp49fxLxIM46nC7NisCbaiydcQoV1hLvQfFL92Gg3tInRvowZyV78G0IknjN10JzH7oqPlPjZw== + dependencies: + "@istanbuljs/schema" "^0.1.3" + debug "^4.3.6" + istanbul-lib-coverage "^3.2.2" + istanbul-lib-instrument "^6.0.3" + istanbul-lib-report "^3.0.1" + istanbul-lib-source-maps "^5.0.6" + istanbul-reports "^3.1.7" + magicast "^0.3.4" + test-exclude "^7.0.1" + tinyrainbow "^1.2.0" + +"@vitest/expect@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.1.1.tgz#907137a86246c5328929d796d741c4e95d1ee19d" + integrity sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w== + dependencies: + "@vitest/spy" "2.1.1" + "@vitest/utils" "2.1.1" + chai "^5.1.1" + tinyrainbow "^1.2.0" + +"@vitest/mocker@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-2.1.1.tgz#3e37c80ac267318d4aa03c5073a017d148dc8e67" + integrity sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA== + dependencies: + "@vitest/spy" "^2.1.0-beta.1" + estree-walker "^3.0.3" + magic-string "^0.30.11" + +"@vitest/pretty-format@2.1.1", "@vitest/pretty-format@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.1.tgz#fea25dd4e88c3c1329fbccd1d16b1d607eb40067" + integrity sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ== + dependencies: + tinyrainbow "^1.2.0" + +"@vitest/runner@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.1.tgz#f3b1fbc3c109fc44e2cceecc881344453f275559" + integrity sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA== + dependencies: + "@vitest/utils" "2.1.1" + pathe "^1.1.2" + +"@vitest/snapshot@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.1.1.tgz#38ef23104e90231fea5540754a19d8468afbba66" + integrity sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw== + dependencies: + "@vitest/pretty-format" "2.1.1" + magic-string "^0.30.11" + pathe "^1.1.2" + +"@vitest/spy@2.1.1", "@vitest/spy@^2.1.0-beta.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.1.1.tgz#20891f7421a994256ea0d739ed72f05532c78488" + integrity sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g== + dependencies: + tinyspy "^3.0.0" + +"@vitest/utils@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.1.tgz#284d016449ecb4f8704d198d049fde8360cc136e" + integrity sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ== + dependencies: + "@vitest/pretty-format" "2.1.1" + loupe "^3.1.1" + tinyrainbow "^1.2.0" + +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +browserslist@^4.23.1: + version "4.24.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4" + integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== + dependencies: + caniuse-lite "^1.0.30001663" + electron-to-chromium "^1.5.28" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +caniuse-lite@^1.0.30001663: + version "1.0.30001664" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz#d588d75c9682d3301956b05a3749652a80677df4" + integrity sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g== + +chai@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.1.tgz#f035d9792a22b481ead1c65908d14bb62ec1c82c" + integrity sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA== + dependencies: + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +check-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssstyle@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.1.0.tgz#161faee382af1bafadb6d3867a92a19bcb4aea70" + integrity sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA== + dependencies: + rrweb-cssom "^0.7.1" + +data-urls@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" + integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== + dependencies: + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +deep-eql@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +electron-to-chromium@^1.5.28: + version "1.5.29" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz#aa592a3caa95d07cc26a66563accf99fa573a1ee" + integrity sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-func-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +glob@^10.4.1: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +html-encoding-sniffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" + integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== + dependencies: + whatwg-encoding "^3.1.1" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +https-proxy-agent@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== + dependencies: + agent-base "^7.0.2" + debug "4" + +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0, istanbul-lib-coverage@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== + dependencies: + "@jridgewell/trace-mapping" "^0.3.23" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + +istanbul-reports@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +jsdom@^25.0.1: + version "25.0.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-25.0.1.tgz#536ec685c288fc8a5773a65f82d8b44badcc73ef" + integrity sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw== + dependencies: + cssstyle "^4.1.0" + data-urls "^5.0.0" + decimal.js "^10.4.3" + form-data "^4.0.0" + html-encoding-sniffer "^4.0.0" + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.5" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.12" + parse5 "^7.1.2" + rrweb-cssom "^0.7.1" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^5.0.0" + w3c-xmlserializer "^5.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^3.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" + ws "^8.18.0" + xml-name-validator "^5.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +loupe@^3.1.0, loupe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.1.tgz#71d038d59007d890e3247c5db97c1ec5a92edc54" + integrity sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw== + dependencies: + get-func-name "^2.0.1" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +magic-string@^0.30.11: + version "0.30.11" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" + integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + +magicast@^0.3.4: + version "0.3.5" + resolved "https://registry.yarnpkg.com/magicast/-/magicast-0.3.5.tgz#8301c3c7d66704a0771eb1bad74274f0ec036739" + integrity sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ== + dependencies: + "@babel/parser" "^7.25.4" + "@babel/types" "^7.25.4" + source-map-js "^1.2.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +nwsapi@^2.2.12: + version "2.2.13" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.13.tgz#e56b4e98960e7a040e5474536587e599c4ff4655" + integrity sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +parse5@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +pathe@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + +pathval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== + +picocolors@^1.0.0, picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + +punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +rollup@^4.20.0: + version "4.22.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.5.tgz#d5108cc470249417e50492456253884d19f5d40f" + integrity sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.22.5" + "@rollup/rollup-android-arm64" "4.22.5" + "@rollup/rollup-darwin-arm64" "4.22.5" + "@rollup/rollup-darwin-x64" "4.22.5" + "@rollup/rollup-linux-arm-gnueabihf" "4.22.5" + "@rollup/rollup-linux-arm-musleabihf" "4.22.5" + "@rollup/rollup-linux-arm64-gnu" "4.22.5" + "@rollup/rollup-linux-arm64-musl" "4.22.5" + "@rollup/rollup-linux-powerpc64le-gnu" "4.22.5" + "@rollup/rollup-linux-riscv64-gnu" "4.22.5" + "@rollup/rollup-linux-s390x-gnu" "4.22.5" + "@rollup/rollup-linux-x64-gnu" "4.22.5" + "@rollup/rollup-linux-x64-musl" "4.22.5" + "@rollup/rollup-win32-arm64-msvc" "4.22.5" + "@rollup/rollup-win32-ia32-msvc" "4.22.5" + "@rollup/rollup-win32-x64-msvc" "4.22.5" + fsevents "~2.3.2" + +rrweb-cssom@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz#c73451a484b86dd7cfb1e0b2898df4b703183e4b" + integrity sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.3, semver@^7.5.4: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +source-map-js@^1.2.0, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + +std-env@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +test-exclude@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-7.0.1.tgz#20b3ba4906ac20994e275bbcafd68d510264c2a2" + integrity sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^10.4.1" + minimatch "^9.0.4" + +tinybench@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" + integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== + +tinyexec@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.0.tgz#ed60cfce19c17799d4a241e06b31b0ec2bee69e6" + integrity sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg== + +tinypool@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.1.tgz#c64233c4fac4304e109a64340178760116dbe1fe" + integrity sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA== + +tinyrainbow@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5" + integrity sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ== + +tinyspy@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" + integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== + +tldts-core@^6.1.48: + version "6.1.48" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.48.tgz#efa7dc689b9757d1d4326b787cd992f10a16b2fb" + integrity sha512-3gD9iKn/n2UuFH1uilBviK9gvTNT6iYwdqrj1Vr5mh8FuelvpRNaYVH4pNYqUgOGU4aAdL9X35eLuuj0gRsx+A== + +tldts@^6.1.32: + version "6.1.48" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.48.tgz#bfef97f407fe73f1a88db8e0f6905378e9a348c0" + integrity sha512-SPbnh1zaSzi/OsmHb1vrPNnYuwJbdWjwo5TbBYYMlTtH3/1DSb41t8bcSxkwDmmbG2q6VLPVvQc7Yf23T+1EEw== + dependencies: + tldts-core "^6.1.48" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +tough-cookie@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.0.0.tgz#6b6518e2b5c070cf742d872ee0f4f92d69eac1af" + integrity sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q== + dependencies: + tldts "^6.1.32" + +tr46@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-5.0.0.tgz#3b46d583613ec7283020d79019f1335723801cec" + integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== + dependencies: + punycode "^2.3.1" + +typescript@^5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" + integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== + +update-browserslist-db@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + +vite-node@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.1.1.tgz#7d46f623c04dfed6df34e7127711508a3386fa1c" + integrity sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA== + dependencies: + cac "^6.7.14" + debug "^4.3.6" + pathe "^1.1.2" + vite "^5.0.0" + +vite@^5.0.0: + version "5.4.8" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.8.tgz#af548ce1c211b2785478d3ba3e8da51e39a287e8" + integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ== + dependencies: + esbuild "^0.21.3" + postcss "^8.4.43" + rollup "^4.20.0" + optionalDependencies: + fsevents "~2.3.3" + +vitest@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-2.1.1.tgz#24a6f6f5d894509f10685b82de008c507faacbb1" + integrity sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA== + dependencies: + "@vitest/expect" "2.1.1" + "@vitest/mocker" "2.1.1" + "@vitest/pretty-format" "^2.1.1" + "@vitest/runner" "2.1.1" + "@vitest/snapshot" "2.1.1" + "@vitest/spy" "2.1.1" + "@vitest/utils" "2.1.1" + chai "^5.1.1" + debug "^4.3.6" + magic-string "^0.30.11" + pathe "^1.1.2" + std-env "^3.7.0" + tinybench "^2.9.0" + tinyexec "^0.3.0" + tinypool "^1.0.0" + tinyrainbow "^1.2.0" + vite "^5.0.0" + vite-node "2.1.1" + why-is-node-running "^2.3.0" + +w3c-xmlserializer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== + dependencies: + xml-name-validator "^5.0.0" + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== + +whatwg-url@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.0.0.tgz#00baaa7fd198744910c4b1ef68378f2200e4ceb6" + integrity sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw== + dependencies: + tr46 "^5.0.0" + webidl-conversions "^7.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +why-is-node-running@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +ws@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==