From 0be9dc305b4dad0d97c025cf43cfa6b15b12970e Mon Sep 17 00:00:00 2001 From: Yogesh Ojha Date: Mon, 29 Jun 2020 18:10:57 +0530 Subject: [PATCH] minified --- mitmproxy/tools/web/static/app.css | 972 +-- mitmproxy/tools/web/static/app.js | 10154 +-------------------------- 2 files changed, 140 insertions(+), 10986 deletions(-) diff --git a/mitmproxy/tools/web/static/app.css b/mitmproxy/tools/web/static/app.css index f55d392f5..bd69915bc 100644 --- a/mitmproxy/tools/web/static/app.css +++ b/mitmproxy/tools/web/static/app.css @@ -1,972 +1,2 @@ -html { - box-sizing: border-box; -} -*, -*:before, -*:after { - box-sizing: inherit; -} -.resource-icon { - width: 32px; - height: 32px; -} -.resource-icon-css { - background-image: url(images/chrome-devtools/resourceCSSIcon.png); -} -.resource-icon-document { - background-image: url(images/chrome-devtools/resourceDocumentIcon.png); -} -.resource-icon-js { - background-image: url(images/chrome-devtools/resourceJSIcon.png); -} -.resource-icon-plain { - background-image: url(images/chrome-devtools/resourcePlainIcon.png); -} -.resource-icon-executable { - background-image: url(images/resourceExecutableIcon.png); -} -.resource-icon-flash { - background-image: url(images/resourceFlashIcon.png); -} -.resource-icon-image { - background-image: url(images/resourceImageIcon.png); -} -.resource-icon-java { - background-image: url(images/resourceJavaIcon.png); -} -.resource-icon-not-modified { - background-image: url(images/resourceNotModifiedIcon.png); -} -.resource-icon-redirect { - background-image: url(images/resourceRedirectIcon.png); -} -html, -body, -#container, -#mitmproxy { - height: 100%; - margin: 0; - overflow: hidden; -} -#container { - display: flex; - flex-direction: column; - outline: none; -} -#container > header, -#container > footer, -#container > .eventlog { - flex: 0 0 auto; -} -.main-view { - flex: 1 1 auto; - height: 0; - display: flex; - flex-direction: row; -} -.main-view.vertical { - flex-direction: column; -} -.main-view .flow-detail, -.main-view .flow-table { - flex: 1 1 auto; -} -.splitter { - flex: 0 0 1px; - background-color: #aaa; - position: relative; -} -.splitter > div { - position: absolute; -} -.splitter.splitter-x { - cursor: col-resize; -} -.splitter.splitter-x > div { - margin-left: -1px; - width: 4px; - height: 100%; -} -.splitter.splitter-y { - cursor: row-resize; -} -.splitter.splitter-y > div { - margin-top: -1px; - height: 4px; - width: 100%; -} -.nav-tabs { - border-bottom: solid #a6a6a6 1px; -} -.nav-tabs a { - display: inline-block; - border: solid transparent 1px; - text-decoration: none; -} -.nav-tabs a.active { - background-color: white; - border-color: #a6a6a6; - border-bottom-color: white; -} -.nav-tabs a.special { - color: white; - background-color: #396cad; - border-bottom-color: #396cad; -} -.nav-tabs a.special:hover { - background-color: #5386c6; -} -.nav-tabs-lg a { - padding: 3px 14px; - margin: 0 2px -1px; -} -.nav-tabs-sm a { - padding: 0px 7px; - margin: 2px 2px -1px; -} -.nav-tabs-sm a.nav-action { - float: right; - padding: 0; - margin: 1px 0 0px; -} -header { - padding-top: 6px; - background-color: white; -} -header > div { - display: block; - margin: 0; - padding: 0; - border-bottom: solid #a6a6a6 1px; - height: 85px; - overflow: visible; -} -.menu-group { - margin: 0 3px; - display: inline-block; - height: 85px; - vertical-align: top; -} -.menu-content { - height: 69px; - text-align: center; -} -.menu-content > .btn { - height: 69px; - text-align: center; - margin: 0 1px; - padding: 12px 5px; - border: none; - border-radius: 0; -} -.menu-content > .btn i { - font-size: 20px; - display: block; - margin: 0 auto 5px; -} -.menu-entry { - text-align: left; - height: 23px; - line-height: 1; - padding: 0.5rem 1rem; -} -.menu-entry label { - font-size: 1.2rem; - font-weight: normal; - margin: 0; -} -.menu-entry input[type=checkbox] { - margin: 0 2px; - vertical-align: middle; -} -.menu-legend { - height: 16px; - text-align: center; - font-size: 12px; - padding: 0 5px; -} -.menu-group + .menu-group:before { - margin-left: -3px; - content: " "; - border-left: solid 1px #e6e6e6; - margin-top: 10px; - height: 65px; - position: absolute; -} -.menu-main { - margin-left: -2px; - margin-right: -3px; - padding: 2px 5px; -} -.filter-input { - position: relative; - min-height: 1px; - padding-left: 2.5px; - padding-right: 2.5px; - padding: 2.5px; -} -@media (min-width: 768px) { - .filter-input { - float: left; - width: 41.66666667%; - } -} -@media (max-width: 767px) { - .filter-input { - padding: 2px 2.5px; - } - .filter-input > .form-control, - .filter-input > .input-group-addon, - .filter-input > .input-group-btn > .btn { - height: 23.5px; - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - } -} -.filter-input .popover { - top: 27px; - left: 43px; - display: block; - max-width: none; - opacity: 0.9; -} -@media (max-width: 767px) { - .filter-input .popover { - top: 16px; - left: 29px; - right: 2px; - } -} -.filter-input .popover .popover-content { - max-height: 500px; - overflow-y: auto; -} -.filter-input .popover .popover-content tr { - cursor: pointer; -} -.filter-input .popover .popover-content tr:hover { - background-color: hsla(209, 52%, 84%, 0.5) !important; -} -.connection-indicator { - display: inline; - padding: 0.2em 0.6em 0.3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25em; - float: right; - margin: 5px; - opacity: 1; - transition: all 1s linear; -} -a.connection-indicator:hover, -a.connection-indicator:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.connection-indicator:empty { - display: none; -} -.btn .connection-indicator { - position: relative; - top: -1px; -} -.connection-indicator.init, -.connection-indicator.fetching { - background-color: #5bc0de; -} -.connection-indicator.established { - background-color: #5cb85c; - opacity: 0; -} -.connection-indicator.error { - background-color: #d9534f; - transition: all 0.2s linear; -} -.connection-indicator.offline { - background-color: #f0ad4e; - opacity: 1; -} -.flow-table { - width: 100%; - overflow-y: scroll; - overflow-x: hidden; -} -.flow-table table { - width: 100%; - table-layout: fixed; -} -.flow-table thead { - background-color: #F2F2F2; - line-height: 23px; -} -.flow-table th { - font-weight: normal; - box-shadow: 0 1px 0 #a6a6a6; - position: relative !important; - padding-left: 1px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.flow-table th.sort-asc, -.flow-table th.sort-desc { - background-color: #fafafa; -} -.flow-table th.sort-asc:after, -.flow-table th.sort-desc:after { - font: normal normal normal 14px/1 FontAwesome; - position: absolute; - right: 3px; - top: 3px; - padding: 2px; - background-color: rgba(250, 250, 250, 0.8); -} -.flow-table th.sort-asc:after { - content: "\f0de"; -} -.flow-table th.sort-desc:after { - content: "\f0dd"; -} -.flow-table tr { - cursor: pointer; -} -.flow-table tr:nth-child(even) { - background-color: rgba(0, 0, 0, 0.05); -} -.flow-table tr.selected { - background-color: hsla(209, 52%, 84%, 0.5) !important; -} -.flow-table tr.highlighted { - background-color: hsla(48, 100%, 50%, 0.4); -} -.flow-table tr.highlighted:nth-child(even) { - background-color: hsla(48, 100%, 50%, 0.5); -} -.flow-table td { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.flow-table tr.intercepted:not(.has-response) .col-path, -.flow-table tr.intercepted:not(.has-response) .col-method { - color: hsl(30, 100%, 50%); -} -.flow-table tr.intercepted.has-response .col-status, -.flow-table tr.intercepted.has-response .col-size, -.flow-table tr.intercepted.has-response .col-time { - color: hsl(30, 100%, 50%); -} -.flow-table .fa { - line-height: inherit; -} -.flow-table .fa.pull-right { - margin-left: 0; -} -.flow-table .col-tls { - width: 10px; -} -.flow-table .col-tls-https { - background-color: rgba(0, 185, 0, 0.5); -} -.flow-table .col-icon { - width: 32px; -} -.flow-table .col-path .fa-repeat { - color: green; -} -.flow-table .col-path .fa-pause { - color: hsl(30, 100%, 50%); -} -.flow-table .col-path .fa-exclamation, -.flow-table .col-path .fa-times { - color: darkred; -} -.flow-table .col-method { - width: 60px; -} -.flow-table .col-status { - width: 50px; -} -.flow-table .col-size { - width: 70px; -} -.flow-table .col-time { - width: 50px; -} -.flow-table td.col-time, -.flow-table td.col-size { - text-align: right; -} -.flow-detail { - width: 100%; - overflow: hidden; - display: flex; - flex-direction: column; -} -.flow-detail nav { - background-color: #F2F2F2; -} -.flow-detail section { - overflow-y: scroll; -} -.flow-detail section > article { - overflow: auto; - padding: 5px 12px 0; -} -.flow-detail section > footer { - box-shadow: 0 0 3px gray; - padding: 2px; - margin: 0; - height: 23px; -} -.flow-detail section.detail, -.flow-detail section.error { - overflow: auto; - padding: 5px 12px 0; -} -.flow-detail .first-line { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - background-color: #428bca; - color: white; - margin: 0 -8px; - padding: 4px 8px; - border-radius: 5px; - word-break: break-all; - max-height: 100px; - overflow-y: auto; -} -.flow-detail .first-line .inline-input.editable { - border-color: rgba(255, 255, 255, 0.5); -} -.flow-detail .request-line { - margin-bottom: 2px; -} -.flow-detail hr { - margin: 0 0 5px; -} -.inline-input { - display: inline; - margin: 0 -3px; - padding: 0 3px; - border: solid transparent 1px; -} -.inline-input.editable { - border-color: #ccc; -} -.inline-input[contenteditable] { - background-color: rgba(255, 255, 255, 0.2); -} -.inline-input[contenteditable].has-warning { - color: #ffb8b8; -} -.view-all-content-btn { - float: right; - margin-bottom: 12px; -} -.flow-detail table { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - width: 100%; - table-layout: fixed; - word-break: break-all; -} -.flow-detail table tr:not(:first-child) { - border-top: 1px solid #f7f7f7; -} -.flow-detail table td { - vertical-align: top; -} -.connection-table td:first-child { - width: 50%; - padding-right: 1em; -} -.header-table td { - line-height: 1.3em; -} -.header-table .header-name { - width: 33%; -} -.header-table .header-colon { - position: absolute; - opacity: 0; -} -.header-table .inline-input { - display: inline-block; - width: 100%; - height: 100%; -} -.connection-table td, -.timing-table td { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.flowview-image { - text-align: center; -} -.flowview-image img { - max-width: 100%; - max-height: 100%; -} -.edit-flow-container { - position: fixed; - right: 20px; -} -.edit-flow { - cursor: pointer; - position: absolute; - right: 0; - top: 5px; - height: 40px; - width: 40px; - border-radius: 20px; - z-index: 10000; - background-color: rgba(255, 255, 255, 0.7); - border: solid 2px rgba(248, 145, 59, 0.7); - text-align: center; - font-size: 22px; - line-height: 37px; - transition: all 100ms ease-in-out; -} -.edit-flow:hover { - background-color: rgba(239, 108, 0, 0.7); - color: rgba(0, 0, 0, 0.8); - border: solid 2px transparent; -} -.eventlog { - height: 200px; - flex: 0 0 auto; - display: flex; - flex-direction: column; -} -.eventlog > div { - background-color: #F2F2F2; - padding: 0 5px; - flex: 0 0 auto; - border-top: 1px solid #aaa; - cursor: row-resize; -} -.eventlog > pre { - flex: 1 1 auto; - margin: 0; - border-radius: 0; - overflow-x: auto; - overflow-y: scroll; - background-color: #fcfcfc; -} -.eventlog .fa-close { - cursor: pointer; - float: right; - color: grey; - padding: 3px 0; - padding-left: 10px; -} -.eventlog .fa-close:hover { - color: black; -} -.eventlog .btn-toggle { - margin-top: -2px; - margin-left: 3px; - padding: 2px 2px; - font-size: 10px; - line-height: 10px; - border-radius: 2px; -} -.eventlog .label { - cursor: pointer; - vertical-align: middle; - display: inline-block; - margin-top: -2px; - margin-left: 3px; -} -footer { - box-shadow: 0 -1px 3px lightgray; - padding: 0px 10px 3px; -} -footer .label { - margin-right: 3px; -} -.CodeMirror { - border: 1px solid #ccc; - height: auto !important; -} -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 300px; - color: black; - direction: ltr; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - white-space: nowrap; -} - -.CodeMirror-guttermarker { color: black; } -.CodeMirror-guttermarker-subtle { color: #999; } - -/* CURSOR */ - -.CodeMirror-cursor { - border-left: 1px solid black; - border-right: none; - width: 0; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.cm-fat-cursor .CodeMirror-cursor { - width: auto; - border: 0 !important; - background: #7e7; -} -.cm-fat-cursor div.CodeMirror-cursors { - z-index: 1; -} -.cm-fat-cursor-mark { - background-color: rgba(20, 255, 20, 0.5); - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; -} -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; - background-color: #7e7; -} -@-moz-keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} -@-webkit-keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} -@keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} - -/* Can style cursor different in overwrite (non-insert) mode */ -.CodeMirror-overwrite .CodeMirror-cursor {} - -.cm-tab { display: inline-block; text-decoration: inherit; } - -.CodeMirror-rulers { - position: absolute; - left: 0; right: 0; top: -50px; bottom: -20px; - overflow: hidden; -} -.CodeMirror-ruler { - border-left: 1px solid #ccc; - top: 0; bottom: 0; - position: absolute; -} - -/* DEFAULT THEME */ - -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} -.cm-strikethrough {text-decoration: line-through;} - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable, -.cm-s-default .cm-punctuation, -.cm-s-default .cm-property, -.cm-s-default .cm-operator {} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-s-default .cm-error {color: #f00;} -.cm-invalidchar {color: #f00;} - -.CodeMirror-composing { border-bottom: 2px solid; } - -/* Default styles for common addons */ - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} -.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } -.CodeMirror-activeline-background {background: #e8f2ff;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - position: relative; - overflow: hidden; - background: white; -} - -.CodeMirror-scroll { - overflow: scroll !important; /* Things will break if this is overridden */ - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; -} -.CodeMirror-sizer { - position: relative; - border-right: 30px solid transparent; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actual scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; -} -.CodeMirror-gutter-filler { - left: 0; bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - min-height: 100%; - z-index: 3; -} -.CodeMirror-gutter { - white-space: normal; - height: 100%; - display: inline-block; - vertical-align: top; - margin-bottom: -30px; -} -.CodeMirror-gutter-wrapper { - position: absolute; - z-index: 4; - background: none !important; - border: none !important; -} -.CodeMirror-gutter-background { - position: absolute; - top: 0; bottom: 0; - z-index: 4; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} -.CodeMirror-gutter-wrapper ::selection { background-color: transparent } -.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } - -.CodeMirror-lines { - cursor: text; - min-height: 1px; /* prevents collapsing before first draw */ -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; - -webkit-tap-highlight-color: transparent; - -webkit-font-variant-ligatures: contextual; - font-variant-ligatures: contextual; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - overflow: auto; -} - -.CodeMirror-widget {} - -.CodeMirror-rtl pre { direction: rtl; } - -.CodeMirror-code { - outline: none; -} - -/* Force content-box sizing for the elements where we expect it */ -.CodeMirror-scroll, -.CodeMirror-sizer, -.CodeMirror-gutter, -.CodeMirror-gutters, -.CodeMirror-linenumber { - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; - height: 0; - overflow: hidden; - visibility: hidden; -} - -.CodeMirror-cursor { - position: absolute; - pointer-events: none; -} -.CodeMirror-measure pre { position: static; } - -div.CodeMirror-cursors { - visibility: hidden; - position: relative; - z-index: 3; -} -div.CodeMirror-dragcursors { - visibility: visible; -} - -.CodeMirror-focused div.CodeMirror-cursors { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } -.CodeMirror-crosshair { cursor: crosshair; } -.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } -.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } - -.cm-searching { - background-color: #ffa; - background-color: rgba(255, 255, 0, .4); -} - -/* Used to force a border model for a node */ -.cm-force-border { padding-right: .1px; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} - -/* See issue #2901 */ -.cm-tab-wrap-hack:after { content: ''; } - -/* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { background: none; } - -.contentview .header { - font-weight: bold; -} -.contentview .highlight { - font-weight: bold; -} -.contentview .offset { - color: blue; -} -.contentview .codeeditor { - margin-bottom: 12px; -} -.modal-visible { - display: block; -} -.modal-dialog { - overflow-y: initial !important; -} -.modal-body { - max-height: calc(100vh - 200px); - overflow-y: auto; -} - +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}.resource-icon{width:32px;height:32px}.resource-icon-css{background-image:url(images/chrome-devtools/resourceCSSIcon.png)}.resource-icon-document{background-image:url(images/chrome-devtools/resourceDocumentIcon.png)}.resource-icon-js{background-image:url(images/chrome-devtools/resourceJSIcon.png)}.resource-icon-plain{background-image:url(images/chrome-devtools/resourcePlainIcon.png)}.resource-icon-executable{background-image:url(images/resourceExecutableIcon.png)}.resource-icon-flash{background-image:url(images/resourceFlashIcon.png)}.resource-icon-image{background-image:url(images/resourceImageIcon.png)}.resource-icon-java{background-image:url(images/resourceJavaIcon.png)}.resource-icon-not-modified{background-image:url(images/resourceNotModifiedIcon.png)}.resource-icon-redirect{background-image:url(images/resourceRedirectIcon.png)}#container,#mitmproxy,body,html{height:100%;margin:0;overflow:hidden}#container{display:flex;flex-direction:column;outline:0}#container>.eventlog,#container>footer,#container>header{flex:0 0 auto}.main-view{flex:1 1 auto;height:0;display:flex;flex-direction:row}.main-view.vertical{flex-direction:column}.main-view .flow-detail,.main-view .flow-table{flex:1 1 auto}.splitter{flex:0 0 1px;background-color:#aaa;position:relative}.splitter>div{position:absolute}.splitter.splitter-x{cursor:col-resize}.splitter.splitter-x>div{margin-left:-1px;width:4px;height:100%}.splitter.splitter-y{cursor:row-resize}.splitter.splitter-y>div{margin-top:-1px;height:4px;width:100%}.nav-tabs{border-bottom:solid #a6a6a6 1px}.nav-tabs a{display:inline-block;border:solid transparent 1px;text-decoration:none}.nav-tabs a.active{background-color:#fff;border-color:#a6a6a6;border-bottom-color:#fff}.nav-tabs a.special{color:#fff;background-color:#396cad;border-bottom-color:#396cad}.nav-tabs a.special:hover{background-color:#5386c6}.nav-tabs-lg a{padding:3px 14px;margin:0 2px -1px}.nav-tabs-sm a{padding:0 7px;margin:2px 2px -1px}.nav-tabs-sm a.nav-action{float:right;padding:0;margin:1px 0 0}header{padding-top:6px;background-color:#fff}header>div{display:block;margin:0;padding:0;border-bottom:solid #a6a6a6 1px;height:85px;overflow:visible}.menu-group{margin:0 3px;display:inline-block;height:85px;vertical-align:top}.menu-content{height:69px;text-align:center}.menu-content>.btn{height:69px;text-align:center;margin:0 1px;padding:12px 5px;border:none;border-radius:0}.menu-content>.btn i{font-size:20px;display:block;margin:0 auto 5px}.menu-entry{text-align:left;height:23px;line-height:1;padding:.5rem 1rem}.menu-entry label{font-size:1.2rem;font-weight:400;margin:0}.menu-entry input[type=checkbox]{margin:0 2px;vertical-align:middle}.menu-legend{height:16px;text-align:center;font-size:12px;padding:0 5px}.menu-group+.menu-group:before{margin-left:-3px;content:" ";border-left:solid 1px #e6e6e6;margin-top:10px;height:65px;position:absolute}.menu-main{margin-left:-2px;margin-right:-3px;padding:2px 5px}.filter-input{position:relative;min-height:1px;padding-left:2.5px;padding-right:2.5px;padding:2.5px}@media (min-width:768px){.filter-input{float:left;width:41.66666667%}}@media (max-width:767px){.filter-input{padding:2px 2.5px}.filter-input>.form-control,.filter-input>.input-group-addon,.filter-input>.input-group-btn>.btn{height:23.5px;padding:1px 5px;font-size:12px;line-height:1.5}}.filter-input .popover{top:27px;left:43px;display:block;max-width:none;opacity:.9}@media (max-width:767px){.filter-input .popover{top:16px;left:29px;right:2px}}.filter-input .popover .popover-content{max-height:500px;overflow-y:auto}.filter-input .popover .popover-content tr{cursor:pointer}.filter-input .popover .popover-content tr:hover{background-color:hsla(209,52%,84%,.5)!important}.connection-indicator{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;float:right;margin:5px;opacity:1;transition:all 1s linear}a.connection-indicator:focus,a.connection-indicator:hover{color:#fff;text-decoration:none;cursor:pointer}.connection-indicator:empty{display:none}.btn .connection-indicator{position:relative;top:-1px}.connection-indicator.fetching,.connection-indicator.init{background-color:#5bc0de}.connection-indicator.established{background-color:#5cb85c;opacity:0}.connection-indicator.error{background-color:#d9534f;transition:all .2s linear}.connection-indicator.offline{background-color:#f0ad4e;opacity:1}.flow-table{width:100%;overflow-y:scroll;overflow-x:hidden}.flow-table table{width:100%;table-layout:fixed}.flow-table thead{background-color:#f2f2f2;line-height:23px}.flow-table th{font-weight:400;box-shadow:0 1px 0 #a6a6a6;position:relative!important;padding-left:1px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.flow-table th.sort-asc,.flow-table th.sort-desc{background-color:#fafafa}.flow-table th.sort-asc:after,.flow-table th.sort-desc:after{font:normal normal normal 14px/1 FontAwesome;position:absolute;right:3px;top:3px;padding:2px;background-color:rgba(250,250,250,.8)}.flow-table th.sort-asc:after{content:"\f0de"}.flow-table th.sort-desc:after{content:"\f0dd"}.flow-table tr{cursor:pointer}.flow-table tr:nth-child(even){background-color:rgba(0,0,0,.05)}.flow-table tr.selected{background-color:hsla(209,52%,84%,.5)!important}.flow-table tr.highlighted{background-color:hsla(48,100%,50%,.4)}.flow-table tr.highlighted:nth-child(even){background-color:hsla(48,100%,50%,.5)}.flow-table td{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.flow-table tr.intercepted:not(.has-response) .col-method,.flow-table tr.intercepted:not(.has-response) .col-path{color:#ff7f00}.flow-table tr.intercepted.has-response .col-size,.flow-table tr.intercepted.has-response .col-status,.flow-table tr.intercepted.has-response .col-time{color:#ff7f00}.flow-table .fa{line-height:inherit}.flow-table .fa.pull-right{margin-left:0}.flow-table .col-tls{width:10px}.flow-table .col-tls-https{background-color:rgba(0,185,0,.5)}.flow-table .col-icon{width:32px}.flow-table .col-path .fa-repeat{color:green}.flow-table .col-path .fa-pause{color:#ff7f00}.flow-table .col-path .fa-exclamation,.flow-table .col-path .fa-times{color:#8b0000}.flow-table .col-method{width:60px}.flow-table .col-status{width:50px}.flow-table .col-size{width:70px}.flow-table .col-time{width:50px}.flow-table td.col-size,.flow-table td.col-time{text-align:right}.flow-detail{width:100%;overflow:hidden;display:flex;flex-direction:column}.flow-detail nav{background-color:#f2f2f2}.flow-detail section{overflow-y:scroll}.flow-detail section>article{overflow:auto;padding:5px 12px 0}.flow-detail section>footer{box-shadow:0 0 3px gray;padding:2px;margin:0;height:23px}.flow-detail section.detail,.flow-detail section.error{overflow:auto;padding:5px 12px 0}.flow-detail .first-line{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;background-color:#428bca;color:#fff;margin:0 -8px;padding:4px 8px;border-radius:5px;word-break:break-all;max-height:100px;overflow-y:auto}.flow-detail .first-line .inline-input.editable{border-color:rgba(255,255,255,.5)}.flow-detail .request-line{margin-bottom:2px}.flow-detail hr{margin:0 0 5px}.inline-input{display:inline;margin:0 -3px;padding:0 3px;border:solid transparent 1px}.inline-input.editable{border-color:#ccc}.inline-input[contenteditable]{background-color:rgba(255,255,255,.2)}.inline-input[contenteditable].has-warning{color:#ffb8b8}.view-all-content-btn{float:right;margin-bottom:12px}.flow-detail table{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;width:100%;table-layout:fixed;word-break:break-all}.flow-detail table tr:not(:first-child){border-top:1px solid #f7f7f7}.flow-detail table td{vertical-align:top}.connection-table td:first-child{width:50%;padding-right:1em}.header-table td{line-height:1.3em}.header-table .header-name{width:33%}.header-table .header-colon{position:absolute;opacity:0}.header-table .inline-input{display:inline-block;width:100%;height:100%}.connection-table td,.timing-table td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flowview-image{text-align:center}.flowview-image img{max-width:100%;max-height:100%}.edit-flow-container{position:fixed;right:20px}.edit-flow{cursor:pointer;position:absolute;right:0;top:5px;height:40px;width:40px;border-radius:20px;z-index:10000;background-color:rgba(255,255,255,.7);border:solid 2px rgba(248,145,59,.7);text-align:center;font-size:22px;line-height:37px;transition:all .1s ease-in-out}.edit-flow:hover{background-color:rgba(239,108,0,.7);color:rgba(0,0,0,.8);border:solid 2px transparent}.eventlog{height:200px;flex:0 0 auto;display:flex;flex-direction:column}.eventlog>div{background-color:#f2f2f2;padding:0 5px;flex:0 0 auto;border-top:1px solid #aaa;cursor:row-resize}.eventlog>pre{flex:1 1 auto;margin:0;border-radius:0;overflow-x:auto;overflow-y:scroll;background-color:#fcfcfc}.eventlog .fa-close{cursor:pointer;float:right;color:grey;padding:3px 0;padding-left:10px}.eventlog .fa-close:hover{color:#000}.eventlog .btn-toggle{margin-top:-2px;margin-left:3px;padding:2px 2px;font-size:10px;line-height:10px;border-radius:2px}.eventlog .label{cursor:pointer;vertical-align:middle;display:inline-block;margin-top:-2px;margin-left:3px}footer{box-shadow:0 -1px 3px #d3d3d3;padding:0 10px 3px}footer .label{margin-right:3px}.CodeMirror{border:1px solid #ccc;height:auto!important}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:0 0!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0}.contentview .header{font-weight:700}.contentview .highlight{font-weight:700}.contentview .offset{color:#00f}.contentview .codeeditor{margin-bottom:12px}.modal-visible{display:block}.modal-dialog{overflow-y:initial!important}.modal-body{max-height:calc(100vh - 200px);overflow-y:auto} /*# sourceMappingURL=app.css.map */ diff --git a/mitmproxy/tools/web/static/app.js b/mitmproxy/tools/web/static/app.js index 3da354ef2..32d52caf6 100644 --- a/mitmproxy/tools/web/static/app.js +++ b/mitmproxy/tools/web/static/app.js @@ -1,10092 +1,216 @@ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o1048576*(_ContentViews.ViewImage.matches(e)?10:.2)},exports.default=(0,_reactRedux.connect)(function(e){return{contentView:e.ui.flow.contentView,isDisplayLarge:e.ui.flow.displayLarge}},{displayLarge:_flow.displayLarge,updateEdit:_flow.updateEdit})(ContentView); +},{"../ducks/ui/flow":60,"./ContentView/ContentViews":8,"./ContentView/MetaViews":10,"./ContentView/ShowFullContentButton":11,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],5:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function CodeEditor(e){var r=e.content,t=e.onChange;return _react2.default.createElement("div",{className:"codeeditor",onKeyDown:function(e){return e.stopPropagation()}},_react2.default.createElement(_reactCodemirror2.default,{value:r,onChange:t,options:{lineNumbers:!0}}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=CodeEditor;var _react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes),_reactCodemirror=require("react-codemirror"),_reactCodemirror2=_interopRequireDefault(_reactCodemirror);CodeEditor.propTypes={content:_propTypes2.default.string.isRequired,onChange:_propTypes2.default.func.isRequired}; -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } +},{"prop-types":"prop-types","react":"react","react-codemirror":"react-codemirror"}],6:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function withContentLoader(e){var t,n;return n=t=function(t){function n(e){_classCallCheck(this,n);var t=_possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e));return t.state={content:void 0,request:void 0},t}return _inherits(n,_react2.default.Component),_createClass(n,[{key:"componentWillMount",value:function(){this.updateContent(this.props)}},{key:"componentWillReceiveProps",value:function(e){e.message.content===this.props.message.content&&e.message.contentHash===this.props.message.contentHash&&e.contentView===this.props.contentView||this.updateContent(e)}},{key:"componentWillUnmount",value:function(){this.state.request&&this.state.request.abort()}},{key:"updateContent",value:function(e){if(this.state.request&&this.state.request.abort(),void 0!==e.message.content)return this.setState({request:void 0,content:e.message.content});if(0===e.message.contentLength||null===e.message.contentLength)return this.setState({request:void 0,content:""});var t=_utils.MessageUtils.getContentURL(e.flow,e.message,e.contentView),n=new XMLHttpRequest;n.addEventListener("load",this.requestComplete.bind(this,n)),n.addEventListener("error",this.requestFailed.bind(this,n)),n.open("GET",t),n.send(),this.setState({request:n,content:void 0})}},{key:"requestComplete",value:function(e,t){e===this.state.request&&this.setState({content:e.responseText,request:void 0})}},{key:"requestFailed",value:function(e,t){e===this.state.request&&(console.error(t),this.setState({content:"Error getting content.",request:void 0}))}},{key:"render",value:function(){return void 0!==this.state.content?_react2.default.createElement(e,_extends({content:this.state.content},this.props)):_react2.default.createElement("div",{className:"text-center"},_react2.default.createElement("i",{className:"fa fa-spinner fa-spin"}))}}]),n}(),t.displayName=e.displayName||e.name,t.matches=e.matches,t.propTypes=_extends({},e.propTypes,{content:_propTypes2.default.string,flow:_propTypes2.default.object.isRequired,message:_propTypes2.default.object.isRequired}),n}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(e){for(var t=1;t 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; +},{"../common/FileChooser":48,"prop-types":"prop-types","react":"react"}],13:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function ViewSelector(e){var t=e.contentViews,r=e.activeView,n=e.setContentView,o=_react2.default.createElement("span",null," ",_react2.default.createElement("b",null,"View:")," ",r.toLowerCase()," ",_react2.default.createElement("span",{className:"caret"})," ");return _react2.default.createElement(_Dropdown2.default,{dropup:!0,className:"pull-left",btnClass:"btn btn-default btn-xs",text:o},t.map(function(e){return _react2.default.createElement("a",{href:"#",key:e,onClick:function(t){t.preventDefault(),n(e)}},e.toLowerCase().replace("_"," "))}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewSelector=ViewSelector;var _react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes),_reactRedux=require("react-redux"),_flow=require("../../ducks/ui/flow"),_Dropdown=require("../common/Dropdown"),_Dropdown2=_interopRequireDefault(_Dropdown);ViewSelector.propTypes={contentViews:_propTypes2.default.array.isRequired,activeView:_propTypes2.default.string.isRequired,setContentView:_propTypes2.default.func.isRequired},exports.default=(0,_reactRedux.connect)(function(e){return{contentViews:e.settings.contentViews,activeView:e.ui.flow.contentView}},{setContentView:_flow.setContentView})(ViewSelector); -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; +},{"../../ducks/ui/flow":60,"../common/Dropdown":47,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],14:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.PureEventLog=void 0;var _createClass=function(){function e(e,t){for(var r=0;rs+c&&(r.scrollTop=u-c)}}},{key:"componentWillReceiveProps",value:function(e){e.selected&&e.selected!==this.props.selected&&(this.shouldScrollIntoView=!0)}},{key:"onViewportUpdate",value:function(){var e=_reactDom2.default.findDOMNode(this),t=e.scrollTop,o=(0,_VirtualScroll.calcVScroll)({viewportTop:t,viewportHeight:e.offsetHeight,itemCount:this.props.flows.length,rowHeight:this.props.rowHeight});this.state.viewportTop===t&&(0,_shallowequal2.default)(this.state.vScroll,o)||this.setState({vScroll:o,viewportTop:t})}},{key:"render",value:function(){var e=this,t=this.state,o=t.vScroll,l=t.viewportTop,r=this.props,i=r.flows,a=r.selected,n=r.highlight,u=n?_filt2.default.parse(n):function(){return!1};return _react2.default.createElement("div",{className:"flow-table",onScroll:this.onViewportUpdate},_react2.default.createElement("table",null,_react2.default.createElement("thead",{ref:"head",style:{transform:"translateY("+l+"px)"}},_react2.default.createElement(_FlowTableHead2.default,null)),_react2.default.createElement("tbody",null,_react2.default.createElement("tr",{style:{height:o.paddingTop}}),i.slice(o.start,o.end).map(function(t){return _react2.default.createElement(_FlowRow2.default,{key:t.id,flow:t,selected:t===a,highlighted:u(t),onSelect:e.props.selectFlow})}),_react2.default.createElement("tr",{style:{height:o.paddingBottom}}))))}}]),t}();FlowTable.propTypes={selectFlow:_propTypes2.default.func.isRequired,flows:_propTypes2.default.array.isRequired,rowHeight:_propTypes2.default.number,highlight:_propTypes2.default.string,selected:_propTypes2.default.object},FlowTable.defaultProps={rowHeight:32};var PureFlowTable=exports.PureFlowTable=(0,_AutoScroll2.default)(FlowTable);exports.default=(0,_reactRedux.connect)(function(e){return{flows:e.flows.view,highlight:e.flows.highlight,selected:e.flows.byId[e.flows.selected[0]]}},{selectFlow:flowsActions.select})(PureFlowTable); -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; +},{"../ducks/flows":56,"../filt/filt":67,"./FlowTable/FlowRow":18,"./FlowTable/FlowTableHead":19,"./helpers/AutoScroll":52,"./helpers/VirtualScroll":53,"prop-types":"prop-types","react":"react","react-dom":"react-dom","react-redux":"react-redux","shallowequal":"shallowequal"}],17:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function TLSColumn(e){var t=e.flow;return _react2.default.createElement("td",{className:(0,_classnames2.default)("col-tls","https"===t.request.scheme?"col-tls-https":"col-tls-http")})}function IconColumn(e){var t=e.flow;return _react2.default.createElement("td",{className:"col-icon"},_react2.default.createElement("div",{className:(0,_classnames2.default)("resource-icon",IconColumn.getIcon(t))}))}function PathColumn(e){var t=e.flow,s=void 0;return t.error&&(s="Connection killed"===t.error.msg?_react2.default.createElement("i",{className:"fa fa-fw fa-times pull-right"}):_react2.default.createElement("i",{className:"fa fa-fw fa-exclamation pull-right"})),_react2.default.createElement("td",{className:"col-path"},t.request.is_replay&&_react2.default.createElement("i",{className:"fa fa-fw fa-repeat pull-right"}),t.intercepted&&_react2.default.createElement("i",{className:"fa fa-fw fa-pause pull-right"}),s,_utils.RequestUtils.pretty_url(t.request))}function MethodColumn(e){var t=e.flow;return _react2.default.createElement("td",{className:"col-method"},t.request.method)}function StatusColumn(e){var t=e.flow,s="darkred";return t.response&&100<=t.response.status_code&&t.response.status_code<200?s="green":t.response&&200<=t.response.status_code&&t.response.status_code<300?s="darkgreen":t.response&&300<=t.response.status_code&&t.response.status_code<400?s="lightblue":t.response&&400<=t.response.status_code&&t.response.status_code<500?s="lightred":t.response&&500<=t.response.status_code&&t.response.status_code<600&&(s="lightred"),_react2.default.createElement("td",{className:"col-status",style:{color:s}},t.response&&t.response.status_code)}function SizeColumn(e){var t=e.flow;return _react2.default.createElement("td",{className:"col-size"},(0,_utils2.formatSize)(SizeColumn.getTotalSize(t)))}function TimeColumn(e){var t=e.flow;return _react2.default.createElement("td",{className:"col-time"},t.response?(0,_utils2.formatTimeDelta)(1e3*(t.response.timestamp_end-t.request.timestamp_start)):"...")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.TLSColumn=TLSColumn,exports.IconColumn=IconColumn,exports.PathColumn=PathColumn,exports.MethodColumn=MethodColumn,exports.StatusColumn=StatusColumn,exports.SizeColumn=SizeColumn,exports.TimeColumn=TimeColumn;var _react=require("react"),_react2=_interopRequireDefault(_react),_classnames=require("classnames"),_classnames2=_interopRequireDefault(_classnames),_utils=require("../../flow/utils.js"),_utils2=require("../../utils.js");TLSColumn.headerClass="col-tls",TLSColumn.headerName="",IconColumn.headerClass="col-icon",IconColumn.headerName="",IconColumn.getIcon=function(e){if(!e.response)return"resource-icon-plain";var t=_utils.ResponseUtils.getContentType(e.response)||"";return 304===e.response.status_code?"resource-icon-not-modified":300<=e.response.status_code&&e.response.status_code<400?"resource-icon-redirect":t.indexOf("image")>=0?"resource-icon-image":t.indexOf("javascript")>=0?"resource-icon-js":t.indexOf("css")>=0?"resource-icon-css":t.indexOf("html")>=0?"resource-icon-document":"resource-icon-plain"},PathColumn.headerClass="col-path",PathColumn.headerName="Path",MethodColumn.headerClass="col-method",MethodColumn.headerName="Method",StatusColumn.headerClass="col-status",StatusColumn.headerName="Status",SizeColumn.getTotalSize=function(e){var t=e.request.contentLength;return e.response&&(t+=e.response.contentLength||0),t},SizeColumn.headerClass="col-size",SizeColumn.headerName="Size",TimeColumn.headerClass="col-time",TimeColumn.headerName="Time",exports.default=[TLSColumn,IconColumn,PathColumn,MethodColumn,StatusColumn,SizeColumn,TimeColumn]; -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; +},{"../../flow/utils.js":68,"../../utils.js":70,"classnames":"classnames","react":"react"}],18:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function FlowRow(e){var t=e.flow,r=e.selected,l=e.highlighted,s=e.onSelect,o=(0,_classnames2.default)({selected:r,highlighted:l,intercepted:t.intercepted,"has-request":t.request,"has-response":t.response});return _react2.default.createElement("tr",{className:o,onClick:function(){return s(t.id)}},_FlowColumns2.default.map(function(e){return _react2.default.createElement(e,{key:e.name,flow:t})}))}Object.defineProperty(exports,"__esModule",{value:!0});var _react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes),_classnames=require("classnames"),_classnames2=_interopRequireDefault(_classnames),_FlowColumns=require("./FlowColumns"),_FlowColumns2=_interopRequireDefault(_FlowColumns),_utils=require("../../utils");FlowRow.propTypes={onSelect:_propTypes2.default.func.isRequired,flow:_propTypes2.default.object.isRequired,highlighted:_propTypes2.default.bool,selected:_propTypes2.default.bool},exports.default=(0,_utils.pure)(FlowRow); -},{}],2:[function(require,module,exports){ -(function (process){ -'use strict'; +},{"../../utils":70,"./FlowColumns":17,"classnames":"classnames","prop-types":"prop-types","react":"react"}],19:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function FlowTableHead(e){var r=e.sortColumn,t=e.sortDesc,s=e.setSort,o=t?"sort-desc":"sort-asc";return _react2.default.createElement("tr",null,_FlowColumns2.default.map(function(e){return _react2.default.createElement("th",{className:(0,_classnames2.default)(e.headerClass,r===e.name&&o),key:e.name,onClick:function(){return s(e.name,e.name===r&&!t)}},e.headerName)}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlowTableHead=FlowTableHead;var _react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes),_reactRedux=require("react-redux"),_classnames=require("classnames"),_classnames2=_interopRequireDefault(_classnames),_FlowColumns=require("./FlowColumns"),_FlowColumns2=_interopRequireDefault(_FlowColumns),_flows=require("../../ducks/flows");FlowTableHead.propTypes={setSort:_propTypes2.default.func.isRequired,sortDesc:_propTypes2.default.bool.isRequired,sortColumn:_propTypes2.default.string},exports.default=(0,_reactRedux.connect)(function(e){return{sortDesc:e.flows.sort.desc,sortColumn:e.flows.sort.column}},{setSort:_flows.setSort})(FlowTableHead); -var _react = require('react'); +},{"../../ducks/flows":56,"./FlowColumns":17,"classnames":"classnames","prop-types":"prop-types","react":"react","react-redux":"react-redux"}],20:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function FlowView(e){var r=e.flow,a=e.tabName,t=e.selectTab,s=["request","response","error"].filter(function(e){return r[e]});s.push("details"),s.indexOf(a)<0&&(a="response"===a&&r.error?"error":"error"===a&&r.response?"response":s[0]);var l=allTabs[_lodash2.default.capitalize(a)];return _react2.default.createElement("div",{className:"flow-detail"},_react2.default.createElement(_Nav2.default,{tabs:s,active:a,onSelectTab:t}),_react2.default.createElement(l,{flow:r}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.allTabs=void 0;var _react=require("react"),_react2=_interopRequireDefault(_react),_reactRedux=require("react-redux"),_lodash=require("lodash"),_lodash2=_interopRequireDefault(_lodash),_Nav=require("./FlowView/Nav"),_Nav2=_interopRequireDefault(_Nav),_Messages=require("./FlowView/Messages"),_Details=require("./FlowView/Details"),_Details2=_interopRequireDefault(_Details),_flow=require("../ducks/ui/flow"),allTabs=exports.allTabs={Request:_Messages.Request,Response:_Messages.Response,Error:_Messages.ErrorView,Details:_Details2.default};exports.default=(0,_reactRedux.connect)(function(e){return{flow:e.flows.byId[e.flows.selected[0]],tabName:e.ui.flow.tab}},{selectTab:_flow.selectTab})(FlowView); -var _react2 = _interopRequireDefault(_react); +},{"../ducks/ui/flow":60,"./FlowView/Details":21,"./FlowView/Messages":23,"./FlowView/Nav":24,"lodash":"lodash","react":"react","react-redux":"react-redux"}],21:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function TimeStamp(e){var t=e.t,a=e.deltaTo,n=e.title;return t?_react2.default.createElement("tr",null,_react2.default.createElement("td",null,n,":"),_react2.default.createElement("td",null,(0,_utils.formatTimeStamp)(t),a&&_react2.default.createElement("span",{className:"text-muted"},"(",(0,_utils.formatTimeDelta)(1e3*(t-a)),")"))):_react2.default.createElement("tr",null)}function ConnectionInfo(e){var t=e.conn;return _react2.default.createElement("table",{className:"connection-table"},_react2.default.createElement("tbody",null,_react2.default.createElement("tr",{key:"address"},_react2.default.createElement("td",null,"Address:"),_react2.default.createElement("td",null,t.address.join(":"))),t.sni&&_react2.default.createElement("tr",{key:"sni"},_react2.default.createElement("td",null,_react2.default.createElement("abbr",{title:"TLS Server Name Indication"},"TLS SNI:")),_react2.default.createElement("td",null,t.sni))))}function CertificateInfo(e){var t=e.flow;return _react2.default.createElement("div",null,t.client_conn.cert&&[_react2.default.createElement("h4",{key:"name"},"Client Certificate"),_react2.default.createElement("pre",{key:"value",style:{maxHeight:100}},t.client_conn.cert)],t.server_conn.cert&&[_react2.default.createElement("h4",{key:"name"},"Server Certificate"),_react2.default.createElement("pre",{key:"value",style:{maxHeight:100}},t.server_conn.cert)])}function Timing(e){var t=e.flow,a=t.server_conn,n=t.client_conn,r=t.request,l=t.response,c=[{title:"Server conn. initiated",t:a.timestamp_start,deltaTo:r.timestamp_start},{title:"Server conn. TCP handshake",t:a.timestamp_tcp_setup,deltaTo:r.timestamp_start},{title:"Server conn. SSL handshake",t:a.timestamp_ssl_setup,deltaTo:r.timestamp_start},{title:"Client conn. established",t:n.timestamp_start,deltaTo:r.timestamp_start},{title:"Client conn. SSL handshake",t:n.timestamp_ssl_setup,deltaTo:r.timestamp_start},{title:"First request byte",t:r.timestamp_start},{title:"Request complete",t:r.timestamp_end,deltaTo:r.timestamp_start},l&&{title:"First response byte",t:l.timestamp_start,deltaTo:r.timestamp_start},l&&{title:"Response complete",t:l.timestamp_end,deltaTo:r.timestamp_start}];return _react2.default.createElement("div",null,_react2.default.createElement("h4",null,"Timing"),_react2.default.createElement("table",{className:"timing-table"},_react2.default.createElement("tbody",null,c.filter(function(e){return e}).sort(function(e,t){return e.t-t.t}).map(function(e){return _react2.default.createElement(TimeStamp,_extends({key:e.title},e))}))))}function Details(e){var t=e.flow;return _react2.default.createElement("section",{className:"detail"},_react2.default.createElement("h4",null,"Client Connection"),_react2.default.createElement(ConnectionInfo,{conn:t.client_conn}),_react2.default.createElement("h4",null,"Server Connection"),_react2.default.createElement(ConnectionInfo,{conn:t.server_conn}),_react2.default.createElement(CertificateInfo,{flow:t}),_react2.default.createElement(Timing,{flow:t}))}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.HeaderEditor=void 0;var _extends=Object.assign||function(e){for(var t=1;t0&&(r.preventDefault(),this.refs[e-1+"-value"].focus())}},{key:"render",value:function(){var e=this,t=this.props,r=t.message,n=t.readonly;return _react2.default.createElement("table",{className:"header-table"},_react2.default.createElement("tbody",null,r.headers.map(function(t,r){return _react2.default.createElement("tr",{key:r},_react2.default.createElement("td",{className:"header-name"},_react2.default.createElement(HeaderEditor,{ref:r+"-key",content:t[0],readonly:n,onDone:function(t){return e.onChange(r,0,t)},onRemove:function(t){return e.onRemove(r,0,t)},onTab:function(t){return e.onTab(r,0,t)}}),_react2.default.createElement("span",{className:"header-colon"},":")),_react2.default.createElement("td",{className:"header-value"},_react2.default.createElement(HeaderEditor,{ref:r+"-value",content:t[1],readonly:n,onDone:function(t){return e.onChange(r,1,t)},onRemove:function(t){return e.onRemove(r,1,t)},onTab:function(t){return e.onTab(r,1,t)}})))})))}}]),t}();Headers.propTypes={onChange:_propTypes2.default.func.isRequired,message:_propTypes2.default.object.isRequired},exports.default=Headers; -var _redux = require('redux'); +},{"../../utils":70,"../ValueEditor/ValueEditor":44,"prop-types":"prop-types","react":"react","react-dom":"react-dom"}],23:[function(require,module,exports){ +"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function RequestLine(e){var t=e.flow,r=e.readonly,n=e.updateFlow;return _react2.default.createElement("div",{className:"first-line request-line"},_react2.default.createElement("div",null,_react2.default.createElement(_ValueEditor2.default,{content:t.request.method,readonly:r,onDone:function(e){return n({request:{method:e}})}})," ",_react2.default.createElement(_ValidateEditor2.default,{content:_utils.RequestUtils.pretty_url(t.request),readonly:r,onDone:function(e){return n({request:_extends({path:""},(0,_utils.parseUrl)(e))})},isValid:function(e){return!!(0,_utils.parseUrl)(e).host}})," ",_react2.default.createElement(_ValidateEditor2.default,{content:t.request.http_version,readonly:r,onDone:function(e){return n({request:{http_version:e}})},isValid:_utils.isValidHttpVersion})))}function ResponseLine(e){var t=e.flow,r=e.readonly,n=e.updateFlow;return _react2.default.createElement("div",{className:"first-line response-line"},_react2.default.createElement(_ValidateEditor2.default,{content:t.response.http_version,readonly:r,onDone:function(e){return n({response:{http_version:e}})},isValid:_utils.isValidHttpVersion})," ",_react2.default.createElement(_ValidateEditor2.default,{content:t.response.status_code+"",readonly:r,onDone:function(e){return n({response:{code:parseInt(e)}})},isValid:function(e){return/^\d+$/.test(e)}})," ",_react2.default.createElement(_ValueEditor2.default,{content:t.response.reason,readonly:r,onDone:function(e){return n({response:{msg:e}})}}))}function ErrorView(e){var t=e.flow;return _react2.default.createElement("section",{className:"error"},_react2.default.createElement("div",{className:"alert alert-warning"},t.error.msg,_react2.default.createElement("div",null,_react2.default.createElement("small",null,(0,_utils2.formatTimeStamp)(t.error.timestamp)))))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.Response=exports.Request=void 0;var _createClass=function(){function e(e,t){for(var r=0;r=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function BooleanOption(e){var t=e.value,n=e.onChange,r=_objectWithoutProperties(e,["value","onChange"]);return _react2.default.createElement("div",{className:"checkbox"},_react2.default.createElement("label",null,_react2.default.createElement("input",_extends({type:"checkbox",checked:t,onChange:function(e){return n(e.target.checked)}},r)),"Enable"))}function StringOption(e){var t=e.value,n=e.onChange,r=_objectWithoutProperties(e,["value","onChange"]);return _react2.default.createElement("input",_extends({type:"text",value:t||"",onChange:function(e){return n(e.target.value)}},r))}function Optional(e){return function(t){var n=t.onChange,r=_objectWithoutProperties(t,["onChange"]);return _react2.default.createElement(e,_extends({onChange:function(e){return n(e||null)}},r))}}function NumberOption(e){var t=e.value,n=e.onChange,r=_objectWithoutProperties(e,["value","onChange"]);return _react2.default.createElement("input",_extends({type:"number",value:t,onChange:function(e){return n(parseInt(e.target.value))}},r))}function ChoicesOption(e){var t=e.value,n=e.onChange,r=e.choices,o=_objectWithoutProperties(e,["value","onChange","choices"]);return _react2.default.createElement("select",_extends({onChange:function(e){return n(e.target.value)},value:t},o),r.map(function(e){return _react2.default.createElement("option",{key:e,value:e},e)}))}function StringSequenceOption(e){var t=e.value,n=e.onChange,r=_objectWithoutProperties(e,["value","onChange"]),o=Math.max(t.length,1);return _react2.default.createElement("textarea",_extends({rows:o,value:t.join("\n"),onChange:function(e){return n(e.target.value.split("\n"))}},r))}function PureOption(e){var t=e.choices,n=e.type,r=e.value,o=e.onChange,a=e.name,u=e.error,i=void 0,p={};return t?(i=ChoicesOption,p.choices=t):i=Options[n],i!==BooleanOption&&(p.className="form-control"),_react2.default.createElement("div",{className:(0,_classnames2.default)({"has-error":u})},_react2.default.createElement(i,_extends({name:a,value:r,onChange:o,onKeyDown:stopPropagation},p)))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.Options=exports.ChoicesOption=void 0;var _extends=Object.assign||function(e){for(var t=1;t0)o=n.getRangeAt(0);else if(document.caretPositionFromPoint&&e.clientX&&e.clientY){var s=document.caretPositionFromPoint(e.clientX,e.clientY);(o=document.createRange()).setStart(s.offsetNode,s.offset)}else document.caretRangeFromPoint&&e.clientX&&e.clientY?o=document.caretRangeFromPoint(e.clientX,e.clientY):(o=document.createRange()).selectNodeContents(this.input);this._ignore_events=!0,this.setState({editable:!0},function(){t.input.blur(),t.input.focus(),t._ignore_events=!1,o.selectNodeContents(t.input),n.removeAllRanges(),n.addRange(o)})}}},{key:"onBlur",value:function(e){this._ignore_events||this.props.readonly||(window.getSelection().removeAllRanges(),this.setState({editable:!1}),this.props.onDone(this.input.textContent))}},{key:"onKeyDown",value:function(e){switch(e.stopPropagation(),e.keyCode){case _utils.Key.ESC:e.preventDefault(),this.reset(),this.blur();break;case _utils.Key.ENTER:e.shiftKey||(e.preventDefault(),this.blur())}this.props.onKeyDown(e)}},{key:"onInput",value:function(){this.props.onInput(this.input.textContent)}}]),t}();ValueEditor.propTypes={content:_propTypes2.default.string.isRequired,readonly:_propTypes2.default.bool,onDone:_propTypes2.default.func.isRequired,className:_propTypes2.default.string,onInput:_propTypes2.default.func,onKeyDown:_propTypes2.default.func},ValueEditor.defaultProps={onInput:function(){},onKeyDown:function(){}},exports.default=ValueEditor; -document.addEventListener('DOMContentLoaded', function () { - (0, _reactDom.render)(_react2.default.createElement( - _reactRedux.Provider, - { store: store }, - _react2.default.createElement(_ProxyApp2.default, null) - ), document.getElementById("mitmproxy")); -}); +},{"../../utils":70,"classnames":"classnames","lodash":"lodash","prop-types":"prop-types","react":"react"}],45:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function Button(e){var t=e.onClick,r=e.children,a=e.icon,s=e.disabled,l=e.className,i=e.title;return _react2.default.createElement("div",{className:(0,_classnames2.default)(l,"btn btn-default"),onClick:s?void 0:t,disabled:s,title:i},a&&_react2.default.createElement("i",{className:"fa fa-fw "+a}),r)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=Button;var _react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes),_classnames=require("classnames"),_classnames2=_interopRequireDefault(_classnames);Button.propTypes={onClick:_propTypes2.default.func.isRequired,children:_propTypes2.default.node.isRequired,icon:_propTypes2.default.string,title:_propTypes2.default.string}; -}).call(this,require('_process')) +},{"classnames":"classnames","prop-types":"prop-types","react":"react"}],46:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function DocsLink(e){var r=e.children,t="http://docs.mitmproxy.org/en/stable/"+e.resource;return _react2.default.createElement("a",{target:"_blank",href:t},r||_react2.default.createElement("i",{className:"fa fa-question-circle"}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=DocsLink;var _react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes);DocsLink.propTypes={resource:_propTypes2.default.string.isRequired}; -},{"./backends/static":3,"./backends/websocket":4,"./components/ProxyApp":43,"./ducks/eventLog":56,"./ducks/index":58,"./urlState":70,"_process":1,"react":"react","react-dom":"react-dom","react-redux":"react-redux","redux":"redux","redux-logger":"redux-logger","redux-thunk":"redux-thunk"}],3:[function(require,module,exports){ -"use strict"; +},{"prop-types":"prop-types","react":"react"}],47:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.Divider=void 0;var _createClass=function(){function e(e,t){for(var r=0;r0&&i(e.target.files[0]),l.value=""}}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=FileChooser;var _react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes);FileChooser.propTypes={icon:_propTypes2.default.string,text:_propTypes2.default.string,className:_propTypes2.default.string,title:_propTypes2.default.string,onOpenFile:_propTypes2.default.func.isRequired}; -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* - * This backend uses the REST API only to host static instances, - * without any Websocket connection. - */ - - -var _utils = require("../utils"); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var StaticBackend = function () { - function StaticBackend(store) { - _classCallCheck(this, StaticBackend); - - this.store = store; - this.onOpen(); - } - - _createClass(StaticBackend, [{ - key: "onOpen", - value: function onOpen() { - this.fetchData("flows"); - this.fetchData("settings"); - // this.fetchData("events") # TODO: Add events log to static viewer. - } - }, { - key: "fetchData", - value: function fetchData(resource) { - var _this = this; - - (0, _utils.fetchApi)("./" + resource).then(function (res) { - return res.json(); - }).then(function (json) { - _this.receive(resource, json); - }); - } - }, { - key: "receive", - value: function receive(resource, data) { - var type = (resource + "_RECEIVE").toUpperCase(); - this.store.dispatch({ type: type, cmd: "receive", resource: resource, data: data }); - } - }]); - - return StaticBackend; -}(); - -exports.default = StaticBackend; - -},{"../utils":71}],4:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * The WebSocket backend is responsible for updating our knowledge of flows and events - * from the REST API and live updates delivered via a WebSocket connection. - * An alternative backend may use the REST API only to host static instances. - */ - - -var _utils = require("../utils"); - -var _connection = require("../ducks/connection"); - -var connectionActions = _interopRequireWildcard(_connection); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var CMD_RESET = 'reset'; - -var WebsocketBackend = function () { - function WebsocketBackend(store) { - _classCallCheck(this, WebsocketBackend); - - this.activeFetches = {}; - this.store = store; - this.connect(); - } - - _createClass(WebsocketBackend, [{ - key: "connect", - value: function connect() { - var _this = this; - - this.socket = new WebSocket(location.origin.replace('http', 'ws') + '/updates'); - this.socket.addEventListener('open', function () { - return _this.onOpen(); - }); - this.socket.addEventListener('close', function (event) { - return _this.onClose(event); - }); - this.socket.addEventListener('message', function (msg) { - return _this.onMessage(JSON.parse(msg.data)); - }); - this.socket.addEventListener('error', function (error) { - return _this.onError(error); - }); - } - }, { - key: "onOpen", - value: function onOpen() { - this.fetchData("settings"); - this.fetchData("flows"); - this.fetchData("events"); - this.fetchData("options"); - this.store.dispatch(connectionActions.startFetching()); - } - }, { - key: "fetchData", - value: function fetchData(resource) { - var _this2 = this; - - var queue = []; - this.activeFetches[resource] = queue; - (0, _utils.fetchApi)("./" + resource).then(function (res) { - return res.json(); - }).then(function (json) { - // Make sure that we are not superseded yet by the server sending a RESET. - if (_this2.activeFetches[resource] === queue) _this2.receive(resource, json); - }); - } - }, { - key: "onMessage", - value: function onMessage(msg) { - - if (msg.cmd === CMD_RESET) { - return this.fetchData(msg.resource); - } - if (msg.resource in this.activeFetches) { - this.activeFetches[msg.resource].push(msg); - } else { - var type = (msg.resource + "_" + msg.cmd).toUpperCase(); - this.store.dispatch(_extends({ type: type }, msg)); - } - } - }, { - key: "receive", - value: function receive(resource, data) { - var _this3 = this; - - var type = (resource + "_RECEIVE").toUpperCase(); - this.store.dispatch({ type: type, cmd: "receive", resource: resource, data: data }); - var queue = this.activeFetches[resource]; - delete this.activeFetches[resource]; - queue.forEach(function (msg) { - return _this3.onMessage(msg); - }); - - if (Object.keys(this.activeFetches).length === 0) { - // We have fetched the last resource - this.store.dispatch(connectionActions.connectionEstablished()); - } - } - }, { - key: "onClose", - value: function onClose(closeEvent) { - this.store.dispatch(connectionActions.connectionError("Connection closed at " + new Date().toUTCString() + " with error code " + closeEvent.code + ".")); - console.error("websocket connection closed", closeEvent); - } - }, { - key: "onError", - value: function onError() { - // FIXME - console.error("websocket connection errored", arguments); - } - }]); - - return WebsocketBackend; -}(); - -exports.default = WebsocketBackend; - -},{"../ducks/connection":55,"../utils":71}],5:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _ContentViews = require('./ContentView/ContentViews'); - -var _MetaViews = require('./ContentView/MetaViews'); - -var MetaViews = _interopRequireWildcard(_MetaViews); - -var _ShowFullContentButton = require('./ContentView/ShowFullContentButton'); - -var _ShowFullContentButton2 = _interopRequireDefault(_ShowFullContentButton); - -var _flow = require('../ducks/ui/flow'); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -ContentView.propTypes = { - // It may seem a bit weird at the first glance: - // Every view takes the flow and the message as props, e.g. - // - flow: _propTypes2.default.object.isRequired, - message: _propTypes2.default.object.isRequired -}; - -ContentView.isContentTooLarge = function (msg) { - return msg.contentLength > 1024 * 1024 * (_ContentViews.ViewImage.matches(msg) ? 10 : 0.2); -}; - -function ContentView(props) { - var flow = props.flow, - message = props.message, - contentView = props.contentView, - isDisplayLarge = props.isDisplayLarge, - displayLarge = props.displayLarge, - onContentChange = props.onContentChange, - readonly = props.readonly; - - - if (message.contentLength === 0 && readonly) { - return _react2.default.createElement(MetaViews.ContentEmpty, props); - } - - if (message.contentLength === null && readonly) { - return _react2.default.createElement(MetaViews.ContentMissing, props); - } - - if (!isDisplayLarge && ContentView.isContentTooLarge(message)) { - return _react2.default.createElement(MetaViews.ContentTooLarge, _extends({}, props, { onClick: displayLarge })); - } - - var view = void 0; - if (contentView === "Edit") { - view = _react2.default.createElement(_ContentViews.Edit, { flow: flow, message: message, onChange: onContentChange }); - } else { - view = _react2.default.createElement(_ContentViews.ViewServer, { flow: flow, message: message, contentView: contentView }); - } - return _react2.default.createElement( - 'div', - { className: 'contentview' }, - view, - _react2.default.createElement(_ShowFullContentButton2.default, null) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - contentView: state.ui.flow.contentView, - isDisplayLarge: state.ui.flow.displayLarge - }; -}, { - displayLarge: _flow.displayLarge, - updateEdit: _flow.updateEdit -})(ContentView); - -},{"../ducks/ui/flow":61,"./ContentView/ContentViews":9,"./ContentView/MetaViews":11,"./ContentView/ShowFullContentButton":12,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],6:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = CodeEditor; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactCodemirror = require('react-codemirror'); - -var _reactCodemirror2 = _interopRequireDefault(_reactCodemirror); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -CodeEditor.propTypes = { - content: _propTypes2.default.string.isRequired, - onChange: _propTypes2.default.func.isRequired -}; - -function CodeEditor(_ref) { - var content = _ref.content, - onChange = _ref.onChange; - - - var options = { - lineNumbers: true - }; - return _react2.default.createElement( - 'div', - { className: 'codeeditor', onKeyDown: function onKeyDown(e) { - return e.stopPropagation(); - } }, - _react2.default.createElement(_reactCodemirror2.default, { value: content, onChange: onChange, options: options }) - ); -} - -},{"prop-types":"prop-types","react":"react","react-codemirror":"react-codemirror"}],7:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -exports.default = withContentLoader; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _utils = require('../../flow/utils.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -function withContentLoader(View) { - var _class, _temp; - - return _temp = _class = function (_React$Component) { - _inherits(_class, _React$Component); - - function _class(props) { - _classCallCheck(this, _class); - - var _this = _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).call(this, props)); - - _this.state = { - content: undefined, - request: undefined - }; - return _this; - } - - _createClass(_class, [{ - key: 'componentWillMount', - value: function componentWillMount() { - this.updateContent(this.props); - } - }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { - if (nextProps.message.content !== this.props.message.content || nextProps.message.contentHash !== this.props.message.contentHash || nextProps.contentView !== this.props.contentView) { - this.updateContent(nextProps); - } - } - }, { - key: 'componentWillUnmount', - value: function componentWillUnmount() { - if (this.state.request) { - this.state.request.abort(); - } - } - }, { - key: 'updateContent', - value: function updateContent(props) { - if (this.state.request) { - this.state.request.abort(); - } - // We have a few special cases where we do not need to make an HTTP request. - if (props.message.content !== undefined) { - return this.setState({ request: undefined, content: props.message.content }); - } - if (props.message.contentLength === 0 || props.message.contentLength === null) { - return this.setState({ request: undefined, content: "" }); - } - - var requestUrl = _utils.MessageUtils.getContentURL(props.flow, props.message, props.contentView); - - // We use XMLHttpRequest instead of fetch() because fetch() is not (yet) abortable. - var request = new XMLHttpRequest(); - request.addEventListener("load", this.requestComplete.bind(this, request)); - request.addEventListener("error", this.requestFailed.bind(this, request)); - request.open("GET", requestUrl); - request.send(); - this.setState({ request: request, content: undefined }); - } - }, { - key: 'requestComplete', - value: function requestComplete(request, e) { - if (request !== this.state.request) { - return; // Stale request - } - this.setState({ - content: request.responseText, - request: undefined - }); - } - }, { - key: 'requestFailed', - value: function requestFailed(request, e) { - if (request !== this.state.request) { - return; // Stale request - } - console.error(e); - // FIXME: Better error handling - this.setState({ - content: "Error getting content.", - request: undefined - }); - } - }, { - key: 'render', - value: function render() { - return this.state.content !== undefined ? _react2.default.createElement(View, _extends({ content: this.state.content }, this.props)) : _react2.default.createElement( - 'div', - { className: 'text-center' }, - _react2.default.createElement('i', { className: 'fa fa-spinner fa-spin' }) - ); - } - }]); - - return _class; - }(_react2.default.Component), _class.displayName = View.displayName || View.name, _class.matches = View.matches, _class.propTypes = _extends({}, View.propTypes, { - content: _propTypes2.default.string, // mark as non-required - flow: _propTypes2.default.object.isRequired, - message: _propTypes2.default.object.isRequired - }), _temp; -}; - -},{"../../flow/utils.js":69,"prop-types":"prop-types","react":"react"}],8:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _ViewSelector = require('./ViewSelector'); - -var _ViewSelector2 = _interopRequireDefault(_ViewSelector); - -var _UploadContentButton = require('./UploadContentButton'); - -var _UploadContentButton2 = _interopRequireDefault(_UploadContentButton); - -var _DownloadContentButton = require('./DownloadContentButton'); - -var _DownloadContentButton2 = _interopRequireDefault(_DownloadContentButton); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -ContentViewOptions.propTypes = { - flow: _propTypes2.default.object.isRequired, - message: _propTypes2.default.object.isRequired -}; - -function ContentViewOptions(_ref) { - var flow = _ref.flow, - message = _ref.message, - uploadContent = _ref.uploadContent, - readonly = _ref.readonly, - contentViewDescription = _ref.contentViewDescription; - - return _react2.default.createElement( - 'div', - { className: 'view-options' }, - readonly ? _react2.default.createElement(_ViewSelector2.default, { message: message }) : _react2.default.createElement( - 'span', - null, - _react2.default.createElement( - 'b', - null, - 'View:' - ), - ' edit' - ), - '\xA0', - _react2.default.createElement(_DownloadContentButton2.default, { flow: flow, message: message }), - '\xA0', - !readonly && _react2.default.createElement(_UploadContentButton2.default, { uploadContent: uploadContent }), - '\xA0', - readonly && _react2.default.createElement( - 'span', - null, - contentViewDescription - ) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - contentViewDescription: state.ui.flow.viewDescription, - readonly: !state.ui.flow.modifiedFlow - }; -})(ContentViewOptions); - -},{"./DownloadContentButton":10,"./UploadContentButton":13,"./ViewSelector":14,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],9:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ViewImage = exports.ViewServer = exports.Edit = exports.PureViewServer = undefined; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _flow = require('../../ducks/ui/flow'); - -var _ContentLoader = require('./ContentLoader'); - -var _ContentLoader2 = _interopRequireDefault(_ContentLoader); - -var _utils = require('../../flow/utils'); - -var _CodeEditor = require('./CodeEditor'); - -var _CodeEditor2 = _interopRequireDefault(_CodeEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var isImage = /^image\/(png|jpe?g|gif|webp|vnc.microsoft.icon|x-icon)$/i; -ViewImage.matches = function (msg) { - return isImage.test(_utils.MessageUtils.getContentType(msg)); -}; -ViewImage.propTypes = { - flow: _propTypes2.default.object.isRequired, - message: _propTypes2.default.object.isRequired -}; -function ViewImage(_ref) { - var flow = _ref.flow, - message = _ref.message; - - return _react2.default.createElement( - 'div', - { className: 'flowview-image' }, - _react2.default.createElement('img', { src: _utils.MessageUtils.getContentURL(flow, message), alt: 'preview', className: 'img-thumbnail' }) - ); -} - -Edit.propTypes = { - content: _propTypes2.default.string.isRequired -}; - -function Edit(_ref2) { - var content = _ref2.content, - onChange = _ref2.onChange; - - return _react2.default.createElement(_CodeEditor2.default, { content: content, onChange: onChange }); -} -exports.Edit = Edit = (0, _ContentLoader2.default)(Edit); - -var PureViewServer = exports.PureViewServer = function (_Component) { - _inherits(PureViewServer, _Component); - - function PureViewServer() { - _classCallCheck(this, PureViewServer); - - return _possibleConstructorReturn(this, (PureViewServer.__proto__ || Object.getPrototypeOf(PureViewServer)).apply(this, arguments)); - } - - _createClass(PureViewServer, [{ - key: 'componentWillMount', - value: function componentWillMount() { - this.setContentView(this.props); - } - }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { - if (nextProps.content != this.props.content) { - this.setContentView(nextProps); - } - } - }, { - key: 'setContentView', - value: function setContentView(props) { - try { - this.data = JSON.parse(props.content); - } catch (err) { - this.data = { lines: [], description: err.message }; - } - - props.setContentViewDescription(props.contentView != this.data.description ? this.data.description : ''); - props.setContent(this.data.lines); - } - }, { - key: 'render', - value: function render() { - var _props = this.props, - content = _props.content, - contentView = _props.contentView, - message = _props.message, - maxLines = _props.maxLines; - - var lines = this.props.showFullContent ? this.data.lines : this.data.lines.slice(0, maxLines); - return _react2.default.createElement( - 'div', - null, - ViewImage.matches(message) && _react2.default.createElement(ViewImage, this.props), - _react2.default.createElement( - 'pre', - null, - lines.map(function (line, i) { - return _react2.default.createElement( - 'div', - { key: 'line' + i }, - line.map(function (element, j) { - var _element = _slicedToArray(element, 2), - style = _element[0], - text = _element[1]; - - return _react2.default.createElement( - 'span', - { key: 'tuple' + j, className: style }, - text - ); - }) - ); - }) - ) - ); - } - }]); - - return PureViewServer; -}(_react.Component); - -PureViewServer.propTypes = { - showFullContent: _propTypes2.default.bool.isRequired, - maxLines: _propTypes2.default.number.isRequired, - setContentViewDescription: _propTypes2.default.func.isRequired, - setContent: _propTypes2.default.func.isRequired -}; - - -var ViewServer = (0, _reactRedux.connect)(function (state) { - return { - showFullContent: state.ui.flow.showFullContent, - maxLines: state.ui.flow.maxContentLines - }; -}, { - setContentViewDescription: _flow.setContentViewDescription, - setContent: _flow.setContent -})((0, _ContentLoader2.default)(PureViewServer)); - -exports.Edit = Edit; -exports.ViewServer = ViewServer; -exports.ViewImage = ViewImage; - -},{"../../ducks/ui/flow":61,"../../flow/utils":69,"./CodeEditor":6,"./ContentLoader":7,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],10:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = DownloadContentButton; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _utils = require('../../flow/utils'); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -DownloadContentButton.propTypes = { - flow: _propTypes2.default.object.isRequired, - message: _propTypes2.default.object.isRequired -}; - -function DownloadContentButton(_ref) { - var flow = _ref.flow, - message = _ref.message; - - - return _react2.default.createElement( - 'a', - { className: 'btn btn-default btn-xs', - href: _utils.MessageUtils.getContentURL(flow, message), - title: 'Download the content of the flow.' }, - _react2.default.createElement('i', { className: 'fa fa-download' }) - ); -} - -},{"../../flow/utils":69,"prop-types":"prop-types","react":"react"}],11:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ContentEmpty = ContentEmpty; -exports.ContentMissing = ContentMissing; -exports.ContentTooLarge = ContentTooLarge; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _utils = require('../../utils.js'); - -var _UploadContentButton = require('./UploadContentButton'); - -var _UploadContentButton2 = _interopRequireDefault(_UploadContentButton); - -var _DownloadContentButton = require('./DownloadContentButton'); - -var _DownloadContentButton2 = _interopRequireDefault(_DownloadContentButton); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function ContentEmpty(_ref) { - var flow = _ref.flow, - message = _ref.message; - - return _react2.default.createElement( - 'div', - { className: 'alert alert-info' }, - 'No ', - flow.request === message ? 'request' : 'response', - ' content.' - ); -} - -function ContentMissing(_ref2) { - var flow = _ref2.flow, - message = _ref2.message; - - return _react2.default.createElement( - 'div', - { className: 'alert alert-info' }, - flow.request === message ? 'Request' : 'Response', - ' content missing.' - ); -} - -function ContentTooLarge(_ref3) { - var message = _ref3.message, - onClick = _ref3.onClick, - uploadContent = _ref3.uploadContent, - flow = _ref3.flow; - - return _react2.default.createElement( - 'div', - null, - _react2.default.createElement( - 'div', - { className: 'alert alert-warning' }, - _react2.default.createElement( - 'button', - { onClick: onClick, className: 'btn btn-xs btn-warning pull-right' }, - 'Display anyway' - ), - (0, _utils.formatSize)(message.contentLength), - ' content size.' - ), - _react2.default.createElement( - 'div', - { className: 'view-options text-center' }, - _react2.default.createElement(_UploadContentButton2.default, { uploadContent: uploadContent }), - '\xA0', - _react2.default.createElement(_DownloadContentButton2.default, { flow: flow, message: message }) - ) - ); -} - -},{"../../utils.js":71,"./DownloadContentButton":10,"./UploadContentButton":13,"react":"react"}],12:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ShowFullContentButton = ShowFullContentButton; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _reactDom = require('react-dom'); - -var _Button = require('../common/Button'); - -var _Button2 = _interopRequireDefault(_Button); - -var _flow = require('../../ducks/ui/flow'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -ShowFullContentButton.propTypes = { - setShowFullContent: _propTypes2.default.func.isRequired, - showFullContent: _propTypes2.default.bool.isRequired -}; - -function ShowFullContentButton(_ref) { - var setShowFullContent = _ref.setShowFullContent, - showFullContent = _ref.showFullContent, - visibleLines = _ref.visibleLines, - contentLines = _ref.contentLines; - - - return !showFullContent && _react2.default.createElement( - 'div', - null, - _react2.default.createElement( - _Button2.default, - { className: 'view-all-content-btn btn-xs', onClick: function onClick() { - return setShowFullContent(); - } }, - 'Show full content' - ), - _react2.default.createElement( - 'span', - { className: 'pull-right' }, - ' ', - visibleLines, - '/', - contentLines, - ' are visible \xA0 ' - ) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - showFullContent: state.ui.flow.showFullContent, - visibleLines: state.ui.flow.maxContentLines, - contentLines: state.ui.flow.content.length - - }; -}, { - setShowFullContent: _flow.setShowFullContent -})(ShowFullContentButton); - -},{"../../ducks/ui/flow":61,"../common/Button":46,"prop-types":"prop-types","react":"react","react-dom":"react-dom","react-redux":"react-redux"}],13:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = UploadContentButton; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _FileChooser = require('../common/FileChooser'); - -var _FileChooser2 = _interopRequireDefault(_FileChooser); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -UploadContentButton.propTypes = { - uploadContent: _propTypes2.default.func.isRequired -}; - -function UploadContentButton(_ref) { - var uploadContent = _ref.uploadContent; - - - return _react2.default.createElement(_FileChooser2.default, { - icon: 'fa-upload', - title: 'Upload a file to replace the content.', - onOpenFile: uploadContent, - className: 'btn btn-default btn-xs' }); -} - -},{"../common/FileChooser":49,"prop-types":"prop-types","react":"react"}],14:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ViewSelector = ViewSelector; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _flow = require('../../ducks/ui/flow'); - -var _Dropdown = require('../common/Dropdown'); - -var _Dropdown2 = _interopRequireDefault(_Dropdown); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -ViewSelector.propTypes = { - contentViews: _propTypes2.default.array.isRequired, - activeView: _propTypes2.default.string.isRequired, - setContentView: _propTypes2.default.func.isRequired -}; - -function ViewSelector(_ref) { - var contentViews = _ref.contentViews, - activeView = _ref.activeView, - setContentView = _ref.setContentView; - - var inner = _react2.default.createElement( - 'span', - null, - ' ', - _react2.default.createElement( - 'b', - null, - 'View:' - ), - ' ', - activeView.toLowerCase(), - ' ', - _react2.default.createElement('span', { className: 'caret' }), - ' ' - ); - - return _react2.default.createElement( - _Dropdown2.default, - { dropup: true, className: 'pull-left', btnClass: 'btn btn-default btn-xs', text: inner }, - contentViews.map(function (name) { - return _react2.default.createElement( - 'a', - { href: '#', key: name, onClick: function onClick(e) { - e.preventDefault();setContentView(name); - } }, - name.toLowerCase().replace('_', ' ') - ); - }) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - contentViews: state.settings.contentViews, - activeView: state.ui.flow.contentView - }; -}, { - setContentView: _flow.setContentView -})(ViewSelector); - -},{"../../ducks/ui/flow":61,"../common/Dropdown":48,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],15:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PureEventLog = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _eventLog = require('../ducks/eventLog'); - -var _ToggleButton = require('./common/ToggleButton'); - -var _ToggleButton2 = _interopRequireDefault(_ToggleButton); - -var _EventList = require('./EventLog/EventList'); - -var _EventList2 = _interopRequireDefault(_EventList); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var PureEventLog = exports.PureEventLog = function (_Component) { - _inherits(PureEventLog, _Component); - - function PureEventLog(props, context) { - _classCallCheck(this, PureEventLog); - - var _this = _possibleConstructorReturn(this, (PureEventLog.__proto__ || Object.getPrototypeOf(PureEventLog)).call(this, props, context)); - - _this.state = { height: _this.props.defaultHeight }; - - _this.onDragStart = _this.onDragStart.bind(_this); - _this.onDragMove = _this.onDragMove.bind(_this); - _this.onDragStop = _this.onDragStop.bind(_this); - return _this; - } - - _createClass(PureEventLog, [{ - key: 'onDragStart', - value: function onDragStart(event) { - event.preventDefault(); - this.dragStart = this.state.height + event.pageY; - window.addEventListener('mousemove', this.onDragMove); - window.addEventListener('mouseup', this.onDragStop); - window.addEventListener('dragend', this.onDragStop); - } - }, { - key: 'onDragMove', - value: function onDragMove(event) { - event.preventDefault(); - this.setState({ height: this.dragStart - event.pageY }); - } - }, { - key: 'onDragStop', - value: function onDragStop(event) { - event.preventDefault(); - window.removeEventListener('mousemove', this.onDragMove); - } - }, { - key: 'render', - value: function render() { - var height = this.state.height; - var _props = this.props, - filters = _props.filters, - events = _props.events, - toggleFilter = _props.toggleFilter, - close = _props.close; - - - return _react2.default.createElement( - 'div', - { className: 'eventlog', style: { height: height } }, - _react2.default.createElement( - 'div', - { onMouseDown: this.onDragStart }, - 'Eventlog', - _react2.default.createElement( - 'div', - { className: 'pull-right' }, - ['debug', 'info', 'web', 'warn', 'error'].map(function (type) { - return _react2.default.createElement(_ToggleButton2.default, { key: type, text: type, checked: filters[type], onToggle: function onToggle() { - return toggleFilter(type); - } }); - }), - _react2.default.createElement('i', { onClick: close, className: 'fa fa-close' }) - ) - ), - _react2.default.createElement(_EventList2.default, { events: events }) - ); - } - }]); - - return PureEventLog; -}(_react.Component); - -PureEventLog.propTypes = { - filters: _propTypes2.default.object.isRequired, - events: _propTypes2.default.array.isRequired, - toggleFilter: _propTypes2.default.func.isRequired, - close: _propTypes2.default.func.isRequired, - defaultHeight: _propTypes2.default.number -}; -PureEventLog.defaultProps = { - defaultHeight: 200 -}; -exports.default = (0, _reactRedux.connect)(function (state) { - return { - filters: state.eventLog.filters, - events: state.eventLog.view - }; -}, { - close: _eventLog.toggleVisibility, - toggleFilter: _eventLog.toggleFilter -})(PureEventLog); - -},{"../ducks/eventLog":56,"./EventLog/EventList":16,"./common/ToggleButton":52,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],16:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactDom = require('react-dom'); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _shallowequal = require('shallowequal'); - -var _shallowequal2 = _interopRequireDefault(_shallowequal); - -var _AutoScroll = require('../helpers/AutoScroll'); - -var _AutoScroll2 = _interopRequireDefault(_AutoScroll); - -var _VirtualScroll = require('../helpers/VirtualScroll'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var EventLogList = function (_Component) { - _inherits(EventLogList, _Component); - - function EventLogList(props) { - _classCallCheck(this, EventLogList); - - var _this = _possibleConstructorReturn(this, (EventLogList.__proto__ || Object.getPrototypeOf(EventLogList)).call(this, props)); - - _this.heights = {}; - _this.state = { vScroll: (0, _VirtualScroll.calcVScroll)() }; - - _this.onViewportUpdate = _this.onViewportUpdate.bind(_this); - return _this; - } - - _createClass(EventLogList, [{ - key: 'componentDidMount', - value: function componentDidMount() { - window.addEventListener('resize', this.onViewportUpdate); - this.onViewportUpdate(); - } - }, { - key: 'componentWillUnmount', - value: function componentWillUnmount() { - window.removeEventListener('resize', this.onViewportUpdate); - } - }, { - key: 'componentDidUpdate', - value: function componentDidUpdate() { - this.onViewportUpdate(); - } - }, { - key: 'onViewportUpdate', - value: function onViewportUpdate() { - var _this2 = this; - - var viewport = _reactDom2.default.findDOMNode(this); - - var vScroll = (0, _VirtualScroll.calcVScroll)({ - itemCount: this.props.events.length, - rowHeight: this.props.rowHeight, - viewportTop: viewport.scrollTop, - viewportHeight: viewport.offsetHeight, - itemHeights: this.props.events.map(function (entry) { - return _this2.heights[entry.id]; - }) - }); - - if (!(0, _shallowequal2.default)(this.state.vScroll, vScroll)) { - this.setState({ vScroll: vScroll }); - } - } - }, { - key: 'setHeight', - value: function setHeight(id, node) { - if (node && !this.heights[id]) { - var height = node.offsetHeight; - if (this.heights[id] !== height) { - this.heights[id] = height; - this.onViewportUpdate(); - } - } - } - }, { - key: 'render', - value: function render() { - var _this3 = this; - - var vScroll = this.state.vScroll; - var events = this.props.events; - - - return _react2.default.createElement( - 'pre', - { onScroll: this.onViewportUpdate }, - _react2.default.createElement('div', { style: { height: vScroll.paddingTop } }), - events.slice(vScroll.start, vScroll.end).map(function (event) { - return _react2.default.createElement( - 'div', - { key: event.id, ref: function ref(node) { - return _this3.setHeight(event.id, node); - } }, - _react2.default.createElement(LogIcon, { event: event }), - event.message - ); - }), - _react2.default.createElement('div', { style: { height: vScroll.paddingBottom } }) - ); - } - }]); - - return EventLogList; -}(_react.Component); - -EventLogList.propTypes = { - events: _propTypes2.default.array.isRequired, - rowHeight: _propTypes2.default.number -}; -EventLogList.defaultProps = { - rowHeight: 18 -}; - - -function LogIcon(_ref) { - var event = _ref.event; - - var icon = { - web: 'html5', - debug: 'bug', - warn: 'exclamation-triangle', - error: 'ban' - }[event.level] || 'info'; - return _react2.default.createElement('i', { className: 'fa fa-fw fa-' + icon }); -} - -exports.default = (0, _AutoScroll2.default)(EventLogList); - -},{"../helpers/AutoScroll":53,"../helpers/VirtualScroll":54,"prop-types":"prop-types","react":"react","react-dom":"react-dom","shallowequal":"shallowequal"}],17:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PureFlowTable = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactDom = require('react-dom'); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _reactRedux = require('react-redux'); - -var _shallowequal = require('shallowequal'); - -var _shallowequal2 = _interopRequireDefault(_shallowequal); - -var _AutoScroll = require('./helpers/AutoScroll'); - -var _AutoScroll2 = _interopRequireDefault(_AutoScroll); - -var _VirtualScroll = require('./helpers/VirtualScroll'); - -var _FlowTableHead = require('./FlowTable/FlowTableHead'); - -var _FlowTableHead2 = _interopRequireDefault(_FlowTableHead); - -var _FlowRow = require('./FlowTable/FlowRow'); - -var _FlowRow2 = _interopRequireDefault(_FlowRow); - -var _filt = require('../filt/filt'); - -var _filt2 = _interopRequireDefault(_filt); - -var _flows = require('../ducks/flows'); - -var flowsActions = _interopRequireWildcard(_flows); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var FlowTable = function (_React$Component) { - _inherits(FlowTable, _React$Component); - - function FlowTable(props, context) { - _classCallCheck(this, FlowTable); - - var _this = _possibleConstructorReturn(this, (FlowTable.__proto__ || Object.getPrototypeOf(FlowTable)).call(this, props, context)); - - _this.state = { vScroll: (0, _VirtualScroll.calcVScroll)() }; - _this.onViewportUpdate = _this.onViewportUpdate.bind(_this); - return _this; - } - - _createClass(FlowTable, [{ - key: 'componentWillMount', - value: function componentWillMount() { - window.addEventListener('resize', this.onViewportUpdate); - } - }, { - key: 'componentWillUnmount', - value: function componentWillUnmount() { - window.removeEventListener('resize', this.onViewportUpdate); - } - }, { - key: 'componentDidUpdate', - value: function componentDidUpdate() { - this.onViewportUpdate(); - - if (!this.shouldScrollIntoView) { - return; - } - - this.shouldScrollIntoView = false; - - var _props = this.props, - rowHeight = _props.rowHeight, - flows = _props.flows, - selected = _props.selected; - - var viewport = _reactDom2.default.findDOMNode(this); - var head = _reactDom2.default.findDOMNode(this.refs.head); - - var headHeight = head ? head.offsetHeight : 0; - - var rowTop = flows.indexOf(selected) * rowHeight + headHeight; - var rowBottom = rowTop + rowHeight; - - var viewportTop = viewport.scrollTop; - var viewportHeight = viewport.offsetHeight; - - // Account for pinned thead - if (rowTop - headHeight < viewportTop) { - viewport.scrollTop = rowTop - headHeight; - } else if (rowBottom > viewportTop + viewportHeight) { - viewport.scrollTop = rowBottom - viewportHeight; - } - } - }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { - if (nextProps.selected && nextProps.selected !== this.props.selected) { - this.shouldScrollIntoView = true; - } - } - }, { - key: 'onViewportUpdate', - value: function onViewportUpdate() { - var viewport = _reactDom2.default.findDOMNode(this); - var viewportTop = viewport.scrollTop; - - var vScroll = (0, _VirtualScroll.calcVScroll)({ - viewportTop: viewportTop, - viewportHeight: viewport.offsetHeight, - itemCount: this.props.flows.length, - rowHeight: this.props.rowHeight - }); - - if (this.state.viewportTop !== viewportTop || !(0, _shallowequal2.default)(this.state.vScroll, vScroll)) { - this.setState({ vScroll: vScroll, viewportTop: viewportTop }); - } - } - }, { - key: 'render', - value: function render() { - var _this2 = this; - - var _state = this.state, - vScroll = _state.vScroll, - viewportTop = _state.viewportTop; - var _props2 = this.props, - flows = _props2.flows, - selected = _props2.selected, - highlight = _props2.highlight; - - var isHighlighted = highlight ? _filt2.default.parse(highlight) : function () { - return false; - }; - - return _react2.default.createElement( - 'div', - { className: 'flow-table', onScroll: this.onViewportUpdate }, - _react2.default.createElement( - 'table', - null, - _react2.default.createElement( - 'thead', - { ref: 'head', style: { transform: 'translateY(' + viewportTop + 'px)' } }, - _react2.default.createElement(_FlowTableHead2.default, null) - ), - _react2.default.createElement( - 'tbody', - null, - _react2.default.createElement('tr', { style: { height: vScroll.paddingTop } }), - flows.slice(vScroll.start, vScroll.end).map(function (flow) { - return _react2.default.createElement(_FlowRow2.default, { - key: flow.id, - flow: flow, - selected: flow === selected, - highlighted: isHighlighted(flow), - onSelect: _this2.props.selectFlow - }); - }), - _react2.default.createElement('tr', { style: { height: vScroll.paddingBottom } }) - ) - ) - ); - } - }]); - - return FlowTable; -}(_react2.default.Component); - -FlowTable.propTypes = { - selectFlow: _propTypes2.default.func.isRequired, - flows: _propTypes2.default.array.isRequired, - rowHeight: _propTypes2.default.number, - highlight: _propTypes2.default.string, - selected: _propTypes2.default.object -}; -FlowTable.defaultProps = { - rowHeight: 32 -}; -var PureFlowTable = exports.PureFlowTable = (0, _AutoScroll2.default)(FlowTable); - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - flows: state.flows.view, - highlight: state.flows.highlight, - selected: state.flows.byId[state.flows.selected[0]] - }; -}, { - selectFlow: flowsActions.select -})(PureFlowTable); - -},{"../ducks/flows":57,"../filt/filt":68,"./FlowTable/FlowRow":19,"./FlowTable/FlowTableHead":20,"./helpers/AutoScroll":53,"./helpers/VirtualScroll":54,"prop-types":"prop-types","react":"react","react-dom":"react-dom","react-redux":"react-redux","shallowequal":"shallowequal"}],18:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.TLSColumn = TLSColumn; -exports.IconColumn = IconColumn; -exports.PathColumn = PathColumn; -exports.MethodColumn = MethodColumn; -exports.StatusColumn = StatusColumn; -exports.SizeColumn = SizeColumn; -exports.TimeColumn = TimeColumn; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _utils = require('../../flow/utils.js'); - -var _utils2 = require('../../utils.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function TLSColumn(_ref) { - var flow = _ref.flow; - - return _react2.default.createElement('td', { className: (0, _classnames2.default)('col-tls', flow.request.scheme === 'https' ? 'col-tls-https' : 'col-tls-http') }); -} - -TLSColumn.headerClass = 'col-tls'; -TLSColumn.headerName = ''; - -function IconColumn(_ref2) { - var flow = _ref2.flow; - - return _react2.default.createElement( - 'td', - { className: 'col-icon' }, - _react2.default.createElement('div', { className: (0, _classnames2.default)('resource-icon', IconColumn.getIcon(flow)) }) - ); -} - -IconColumn.headerClass = 'col-icon'; -IconColumn.headerName = ''; - -IconColumn.getIcon = function (flow) { - if (!flow.response) { - return 'resource-icon-plain'; - } - - var contentType = _utils.ResponseUtils.getContentType(flow.response) || ''; - - // @todo We should assign a type to the flow somewhere else. - if (flow.response.status_code === 304) { - return 'resource-icon-not-modified'; - } - if (300 <= flow.response.status_code && flow.response.status_code < 400) { - return 'resource-icon-redirect'; - } - if (contentType.indexOf('image') >= 0) { - return 'resource-icon-image'; - } - if (contentType.indexOf('javascript') >= 0) { - return 'resource-icon-js'; - } - if (contentType.indexOf('css') >= 0) { - return 'resource-icon-css'; - } - if (contentType.indexOf('html') >= 0) { - return 'resource-icon-document'; - } - - return 'resource-icon-plain'; -}; - -function PathColumn(_ref3) { - var flow = _ref3.flow; - - - var err = void 0; - if (flow.error) { - if (flow.error.msg === "Connection killed") { - err = _react2.default.createElement('i', { className: 'fa fa-fw fa-times pull-right' }); - } else { - err = _react2.default.createElement('i', { className: 'fa fa-fw fa-exclamation pull-right' }); - } - } - return _react2.default.createElement( - 'td', - { className: 'col-path' }, - flow.request.is_replay && _react2.default.createElement('i', { className: 'fa fa-fw fa-repeat pull-right' }), - flow.intercepted && _react2.default.createElement('i', { className: 'fa fa-fw fa-pause pull-right' }), - err, - _utils.RequestUtils.pretty_url(flow.request) - ); -} - -PathColumn.headerClass = 'col-path'; -PathColumn.headerName = 'Path'; - -function MethodColumn(_ref4) { - var flow = _ref4.flow; - - return _react2.default.createElement( - 'td', - { className: 'col-method' }, - flow.request.method - ); -} - -MethodColumn.headerClass = 'col-method'; -MethodColumn.headerName = 'Method'; - -function StatusColumn(_ref5) { - var flow = _ref5.flow; - - var color = 'darkred'; - - if (flow.response && 100 <= flow.response.status_code && flow.response.status_code < 200) { - color = 'green'; - } else if (flow.response && 200 <= flow.response.status_code && flow.response.status_code < 300) { - color = 'darkgreen'; - } else if (flow.response && 300 <= flow.response.status_code && flow.response.status_code < 400) { - color = 'lightblue'; - } else if (flow.response && 400 <= flow.response.status_code && flow.response.status_code < 500) { - color = 'lightred'; - } else if (flow.response && 500 <= flow.response.status_code && flow.response.status_code < 600) { - color = 'lightred'; - } - - return _react2.default.createElement( - 'td', - { className: 'col-status', style: { color: color } }, - flow.response && flow.response.status_code - ); -} - -StatusColumn.headerClass = 'col-status'; -StatusColumn.headerName = 'Status'; - -function SizeColumn(_ref6) { - var flow = _ref6.flow; - - return _react2.default.createElement( - 'td', - { className: 'col-size' }, - (0, _utils2.formatSize)(SizeColumn.getTotalSize(flow)) - ); -} - -SizeColumn.getTotalSize = function (flow) { - var total = flow.request.contentLength; - if (flow.response) { - total += flow.response.contentLength || 0; - } - return total; -}; - -SizeColumn.headerClass = 'col-size'; -SizeColumn.headerName = 'Size'; - -function TimeColumn(_ref7) { - var flow = _ref7.flow; - - return _react2.default.createElement( - 'td', - { className: 'col-time' }, - flow.response ? (0, _utils2.formatTimeDelta)(1000 * (flow.response.timestamp_end - flow.request.timestamp_start)) : '...' - ); -} - -TimeColumn.headerClass = 'col-time'; -TimeColumn.headerName = 'Time'; - -exports.default = [TLSColumn, IconColumn, PathColumn, MethodColumn, StatusColumn, SizeColumn, TimeColumn]; - -},{"../../flow/utils.js":69,"../../utils.js":71,"classnames":"classnames","react":"react"}],19:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _FlowColumns = require('./FlowColumns'); - -var _FlowColumns2 = _interopRequireDefault(_FlowColumns); - -var _utils = require('../../utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -FlowRow.propTypes = { - onSelect: _propTypes2.default.func.isRequired, - flow: _propTypes2.default.object.isRequired, - highlighted: _propTypes2.default.bool, - selected: _propTypes2.default.bool -}; - -function FlowRow(_ref) { - var flow = _ref.flow, - selected = _ref.selected, - highlighted = _ref.highlighted, - onSelect = _ref.onSelect; - - var className = (0, _classnames2.default)({ - 'selected': selected, - 'highlighted': highlighted, - 'intercepted': flow.intercepted, - 'has-request': flow.request, - 'has-response': flow.response - }); - - return _react2.default.createElement( - 'tr', - { className: className, onClick: function onClick() { - return onSelect(flow.id); - } }, - _FlowColumns2.default.map(function (Column) { - return _react2.default.createElement(Column, { key: Column.name, flow: flow }); - }) - ); -} - -exports.default = (0, _utils.pure)(FlowRow); - -},{"../../utils":71,"./FlowColumns":18,"classnames":"classnames","prop-types":"prop-types","react":"react"}],20:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FlowTableHead = FlowTableHead; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _FlowColumns = require('./FlowColumns'); - -var _FlowColumns2 = _interopRequireDefault(_FlowColumns); - -var _flows = require('../../ducks/flows'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -FlowTableHead.propTypes = { - setSort: _propTypes2.default.func.isRequired, - sortDesc: _propTypes2.default.bool.isRequired, - sortColumn: _propTypes2.default.string -}; - -function FlowTableHead(_ref) { - var sortColumn = _ref.sortColumn, - sortDesc = _ref.sortDesc, - setSort = _ref.setSort; - - var sortType = sortDesc ? 'sort-desc' : 'sort-asc'; - - return _react2.default.createElement( - 'tr', - null, - _FlowColumns2.default.map(function (Column) { - return _react2.default.createElement( - 'th', - { className: (0, _classnames2.default)(Column.headerClass, sortColumn === Column.name && sortType), - key: Column.name, - onClick: function onClick() { - return setSort(Column.name, Column.name !== sortColumn ? false : !sortDesc); - } }, - Column.headerName - ); - }) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - sortDesc: state.flows.sort.desc, - sortColumn: state.flows.sort.column - }; -}, { - setSort: _flows.setSort -})(FlowTableHead); - -},{"../../ducks/flows":57,"./FlowColumns":18,"classnames":"classnames","prop-types":"prop-types","react":"react","react-redux":"react-redux"}],21:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.allTabs = undefined; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _reactRedux = require('react-redux'); - -var _lodash = require('lodash'); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _Nav = require('./FlowView/Nav'); - -var _Nav2 = _interopRequireDefault(_Nav); - -var _Messages = require('./FlowView/Messages'); - -var _Details = require('./FlowView/Details'); - -var _Details2 = _interopRequireDefault(_Details); - -var _flow = require('../ducks/ui/flow'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var allTabs = exports.allTabs = { Request: _Messages.Request, Response: _Messages.Response, Error: _Messages.ErrorView, Details: _Details2.default }; - -function FlowView(_ref) { - var flow = _ref.flow, - tabName = _ref.tabName, - selectTab = _ref.selectTab; - - - // only display available tab names - var tabs = ['request', 'response', 'error'].filter(function (k) { - return flow[k]; - }); - tabs.push("details"); - - if (tabs.indexOf(tabName) < 0) { - if (tabName === 'response' && flow.error) { - tabName = 'error'; - } else if (tabName === 'error' && flow.response) { - tabName = 'response'; - } else { - tabName = tabs[0]; - } - } - - var Tab = allTabs[_lodash2.default.capitalize(tabName)]; - - return _react2.default.createElement( - 'div', - { className: 'flow-detail' }, - _react2.default.createElement(_Nav2.default, { - tabs: tabs, - active: tabName, - onSelectTab: selectTab - }), - _react2.default.createElement(Tab, { flow: flow }) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - flow: state.flows.byId[state.flows.selected[0]], - tabName: state.ui.flow.tab - }; -}, { - selectTab: _flow.selectTab -})(FlowView); - -},{"../ducks/ui/flow":61,"./FlowView/Details":22,"./FlowView/Messages":24,"./FlowView/Nav":25,"lodash":"lodash","react":"react","react-redux":"react-redux"}],22:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.TimeStamp = TimeStamp; -exports.ConnectionInfo = ConnectionInfo; -exports.CertificateInfo = CertificateInfo; -exports.Timing = Timing; -exports.default = Details; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _lodash = require('lodash'); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _utils = require('../../utils.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function TimeStamp(_ref) { - var t = _ref.t, - deltaTo = _ref.deltaTo, - title = _ref.title; - - return t ? _react2.default.createElement( - 'tr', - null, - _react2.default.createElement( - 'td', - null, - title, - ':' - ), - _react2.default.createElement( - 'td', - null, - (0, _utils.formatTimeStamp)(t), - deltaTo && _react2.default.createElement( - 'span', - { className: 'text-muted' }, - '(', - (0, _utils.formatTimeDelta)(1000 * (t - deltaTo)), - ')' - ) - ) - ) : _react2.default.createElement('tr', null); -} - -function ConnectionInfo(_ref2) { - var conn = _ref2.conn; - - return _react2.default.createElement( - 'table', - { className: 'connection-table' }, - _react2.default.createElement( - 'tbody', - null, - _react2.default.createElement( - 'tr', - { key: 'address' }, - _react2.default.createElement( - 'td', - null, - 'Address:' - ), - _react2.default.createElement( - 'td', - null, - conn.address.join(':') - ) - ), - conn.sni && _react2.default.createElement( - 'tr', - { key: 'sni' }, - _react2.default.createElement( - 'td', - null, - _react2.default.createElement( - 'abbr', - { title: 'TLS Server Name Indication' }, - 'TLS SNI:' - ) - ), - _react2.default.createElement( - 'td', - null, - conn.sni - ) - ) - ) - ); -} - -function CertificateInfo(_ref3) { - var flow = _ref3.flow; - - // @todo We should fetch human-readable certificate representation from the server - return _react2.default.createElement( - 'div', - null, - flow.client_conn.cert && [_react2.default.createElement( - 'h4', - { key: 'name' }, - 'Client Certificate' - ), _react2.default.createElement( - 'pre', - { key: 'value', style: { maxHeight: 100 } }, - flow.client_conn.cert - )], - flow.server_conn.cert && [_react2.default.createElement( - 'h4', - { key: 'name' }, - 'Server Certificate' - ), _react2.default.createElement( - 'pre', - { key: 'value', style: { maxHeight: 100 } }, - flow.server_conn.cert - )] - ); -} - -function Timing(_ref4) { - var flow = _ref4.flow; - var sc = flow.server_conn, - cc = flow.client_conn, - req = flow.request, - res = flow.response; - - - var timestamps = [{ - title: "Server conn. initiated", - t: sc.timestamp_start, - deltaTo: req.timestamp_start - }, { - title: "Server conn. TCP handshake", - t: sc.timestamp_tcp_setup, - deltaTo: req.timestamp_start - }, { - title: "Server conn. SSL handshake", - t: sc.timestamp_ssl_setup, - deltaTo: req.timestamp_start - }, { - title: "Client conn. established", - t: cc.timestamp_start, - deltaTo: req.timestamp_start - }, { - title: "Client conn. SSL handshake", - t: cc.timestamp_ssl_setup, - deltaTo: req.timestamp_start - }, { - title: "First request byte", - t: req.timestamp_start - }, { - title: "Request complete", - t: req.timestamp_end, - deltaTo: req.timestamp_start - }, res && { - title: "First response byte", - t: res.timestamp_start, - deltaTo: req.timestamp_start - }, res && { - title: "Response complete", - t: res.timestamp_end, - deltaTo: req.timestamp_start - }]; - - return _react2.default.createElement( - 'div', - null, - _react2.default.createElement( - 'h4', - null, - 'Timing' - ), - _react2.default.createElement( - 'table', - { className: 'timing-table' }, - _react2.default.createElement( - 'tbody', - null, - timestamps.filter(function (v) { - return v; - }).sort(function (a, b) { - return a.t - b.t; - }).map(function (item) { - return _react2.default.createElement(TimeStamp, _extends({ key: item.title }, item)); - }) - ) - ) - ); -} - -function Details(_ref5) { - var flow = _ref5.flow; - - return _react2.default.createElement( - 'section', - { className: 'detail' }, - _react2.default.createElement( - 'h4', - null, - 'Client Connection' - ), - _react2.default.createElement(ConnectionInfo, { conn: flow.client_conn }), - _react2.default.createElement( - 'h4', - null, - 'Server Connection' - ), - _react2.default.createElement(ConnectionInfo, { conn: flow.server_conn }), - _react2.default.createElement(CertificateInfo, { flow: flow }), - _react2.default.createElement(Timing, { flow: flow }) - ); -} - -},{"../../utils.js":71,"lodash":"lodash","react":"react"}],23:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.HeaderEditor = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactDom = require('react-dom'); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _ValueEditor = require('../ValueEditor/ValueEditor'); - -var _ValueEditor2 = _interopRequireDefault(_ValueEditor); - -var _utils = require('../../utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var HeaderEditor = exports.HeaderEditor = function (_Component) { - _inherits(HeaderEditor, _Component); - - function HeaderEditor(props) { - _classCallCheck(this, HeaderEditor); - - var _this = _possibleConstructorReturn(this, (HeaderEditor.__proto__ || Object.getPrototypeOf(HeaderEditor)).call(this, props)); - - _this.onKeyDown = _this.onKeyDown.bind(_this); - return _this; - } - - _createClass(HeaderEditor, [{ - key: 'render', - value: function render() { - var _props = this.props, - onTab = _props.onTab, - props = _objectWithoutProperties(_props, ['onTab']); - - return _react2.default.createElement(_ValueEditor2.default, _extends({}, props, { - onKeyDown: this.onKeyDown - })); - } - }, { - key: 'focus', - value: function focus() { - _reactDom2.default.findDOMNode(this).focus(); - } - }, { - key: 'onKeyDown', - value: function onKeyDown(e) { - switch (e.keyCode) { - case _utils.Key.BACKSPACE: - var s = window.getSelection().getRangeAt(0); - if (s.startOffset === 0 && s.endOffset === 0) { - this.props.onRemove(e); - } - break; - case _utils.Key.ENTER: - case _utils.Key.TAB: - if (!e.shiftKey) { - this.props.onTab(e); - } - break; - } - } - }]); - - return HeaderEditor; -}(_react.Component); - -var Headers = function (_Component2) { - _inherits(Headers, _Component2); - - function Headers() { - _classCallCheck(this, Headers); - - return _possibleConstructorReturn(this, (Headers.__proto__ || Object.getPrototypeOf(Headers)).apply(this, arguments)); - } - - _createClass(Headers, [{ - key: 'onChange', - value: function onChange(row, col, val) { - var nextHeaders = _.cloneDeep(this.props.message.headers); - - nextHeaders[row][col] = val; - - if (!nextHeaders[row][0] && !nextHeaders[row][1]) { - // do not delete last row - if (nextHeaders.length === 1) { - nextHeaders[0][0] = 'Name'; - nextHeaders[0][1] = 'Value'; - } else { - nextHeaders.splice(row, 1); - // manually move selection target if this has been the last row. - if (row === nextHeaders.length) { - this._nextSel = row - 1 + '-value'; - } - } - } - - this.props.onChange(nextHeaders); - } - }, { - key: 'edit', - value: function edit() { - this.refs['0-key'].focus(); - } - }, { - key: 'onTab', - value: function onTab(row, col, e) { - var headers = this.props.message.headers; - - if (col === 0) { - this._nextSel = row + '-value'; - return; - } - if (row !== headers.length - 1) { - this._nextSel = row + 1 + '-key'; - return; - } - - e.preventDefault(); - - var nextHeaders = _.cloneDeep(this.props.message.headers); - nextHeaders.push(['Name', 'Value']); - this.props.onChange(nextHeaders); - this._nextSel = row + 1 + '-key'; - } - }, { - key: 'componentDidUpdate', - value: function componentDidUpdate() { - if (this._nextSel && this.refs[this._nextSel]) { - this.refs[this._nextSel].focus(); - this._nextSel = undefined; - } - } - }, { - key: 'onRemove', - value: function onRemove(row, col, e) { - if (col === 1) { - e.preventDefault(); - this.refs[row + '-key'].focus(); - } else if (row > 0) { - e.preventDefault(); - this.refs[row - 1 + '-value'].focus(); - } - } - }, { - key: 'render', - value: function render() { - var _this3 = this; - - var _props2 = this.props, - message = _props2.message, - readonly = _props2.readonly; - - - return _react2.default.createElement( - 'table', - { className: 'header-table' }, - _react2.default.createElement( - 'tbody', - null, - message.headers.map(function (header, i) { - return _react2.default.createElement( - 'tr', - { key: i }, - _react2.default.createElement( - 'td', - { className: 'header-name' }, - _react2.default.createElement(HeaderEditor, { - ref: i + '-key', - content: header[0], - readonly: readonly, - onDone: function onDone(val) { - return _this3.onChange(i, 0, val); - }, - onRemove: function onRemove(event) { - return _this3.onRemove(i, 0, event); - }, - onTab: function onTab(event) { - return _this3.onTab(i, 0, event); - } - }), - _react2.default.createElement( - 'span', - { className: 'header-colon' }, - ':' - ) - ), - _react2.default.createElement( - 'td', - { className: 'header-value' }, - _react2.default.createElement(HeaderEditor, { - ref: i + '-value', - content: header[1], - readonly: readonly, - onDone: function onDone(val) { - return _this3.onChange(i, 1, val); - }, - onRemove: function onRemove(event) { - return _this3.onRemove(i, 1, event); - }, - onTab: function onTab(event) { - return _this3.onTab(i, 1, event); - } - }) - ) - ); - }) - ) - ); - } - }]); - - return Headers; -}(_react.Component); - -Headers.propTypes = { - onChange: _propTypes2.default.func.isRequired, - message: _propTypes2.default.object.isRequired -}; -exports.default = Headers; - -},{"../../utils":71,"../ValueEditor/ValueEditor":45,"prop-types":"prop-types","react":"react","react-dom":"react-dom"}],24:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Response = exports.Request = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.ErrorView = ErrorView; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _utils = require('../../flow/utils.js'); - -var _utils2 = require('../../utils.js'); - -var _ContentView = require('../ContentView'); - -var _ContentView2 = _interopRequireDefault(_ContentView); - -var _ContentViewOptions = require('../ContentView/ContentViewOptions'); - -var _ContentViewOptions2 = _interopRequireDefault(_ContentViewOptions); - -var _ValidateEditor = require('../ValueEditor/ValidateEditor'); - -var _ValidateEditor2 = _interopRequireDefault(_ValidateEditor); - -var _ValueEditor = require('../ValueEditor/ValueEditor'); - -var _ValueEditor2 = _interopRequireDefault(_ValueEditor); - -var _HideInStatic = require('../common/HideInStatic'); - -var _HideInStatic2 = _interopRequireDefault(_HideInStatic); - -var _Headers = require('./Headers'); - -var _Headers2 = _interopRequireDefault(_Headers); - -var _flow = require('../../ducks/ui/flow'); - -var _flows = require('../../ducks/flows'); - -var FlowActions = _interopRequireWildcard(_flows); - -var _ToggleEdit = require('./ToggleEdit'); - -var _ToggleEdit2 = _interopRequireDefault(_ToggleEdit); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -function RequestLine(_ref) { - var flow = _ref.flow, - readonly = _ref.readonly, - updateFlow = _ref.updateFlow; - - return _react2.default.createElement( - 'div', - { className: 'first-line request-line' }, - _react2.default.createElement( - 'div', - null, - _react2.default.createElement(_ValueEditor2.default, { - content: flow.request.method, - readonly: readonly, - onDone: function onDone(method) { - return updateFlow({ request: { method: method } }); - } - }), - '\xA0', - _react2.default.createElement(_ValidateEditor2.default, { - content: _utils.RequestUtils.pretty_url(flow.request), - readonly: readonly, - onDone: function onDone(url) { - return updateFlow({ request: _extends({ path: '' }, (0, _utils.parseUrl)(url)) }); - }, - isValid: function isValid(url) { - return !!(0, _utils.parseUrl)(url).host; - } - }), - '\xA0', - _react2.default.createElement(_ValidateEditor2.default, { - content: flow.request.http_version, - readonly: readonly, - onDone: function onDone(http_version) { - return updateFlow({ request: { http_version: http_version } }); - }, - isValid: _utils.isValidHttpVersion - }) - ) - ); -} - -function ResponseLine(_ref2) { - var flow = _ref2.flow, - readonly = _ref2.readonly, - updateFlow = _ref2.updateFlow; - - return _react2.default.createElement( - 'div', - { className: 'first-line response-line' }, - _react2.default.createElement(_ValidateEditor2.default, { - content: flow.response.http_version, - readonly: readonly, - onDone: function onDone(nextVer) { - return updateFlow({ response: { http_version: nextVer } }); - }, - isValid: _utils.isValidHttpVersion - }), - '\xA0', - _react2.default.createElement(_ValidateEditor2.default, { - content: flow.response.status_code + '', - readonly: readonly, - onDone: function onDone(code) { - return updateFlow({ response: { code: parseInt(code) } }); - }, - isValid: function isValid(code) { - return (/^\d+$/.test(code) - ); - } - }), - '\xA0', - _react2.default.createElement(_ValueEditor2.default, { - content: flow.response.reason, - readonly: readonly, - onDone: function onDone(msg) { - return updateFlow({ response: { msg: msg } }); - } - }) - ); -} - -var Message = (0, _reactRedux.connect)(function (state) { - return { - flow: state.ui.flow.modifiedFlow || state.flows.byId[state.flows.selected[0]], - isEdit: !!state.ui.flow.modifiedFlow - }; -}, { - updateFlow: _flow.updateEdit, - uploadContent: FlowActions.uploadContent -}); - -var Request = exports.Request = function (_Component) { - _inherits(Request, _Component); - - function Request() { - _classCallCheck(this, Request); - - return _possibleConstructorReturn(this, (Request.__proto__ || Object.getPrototypeOf(Request)).apply(this, arguments)); - } - - _createClass(Request, [{ - key: 'render', - value: function render() { - var _props = this.props, - flow = _props.flow, - isEdit = _props.isEdit, - updateFlow = _props.updateFlow, - _uploadContent = _props.uploadContent; - - var noContent = !isEdit && (flow.request.contentLength == 0 || flow.request.contentLength == null); - return _react2.default.createElement( - 'section', - { className: 'request' }, - _react2.default.createElement( - 'article', - null, - _react2.default.createElement(_ToggleEdit2.default, null), - _react2.default.createElement(RequestLine, { - flow: flow, - readonly: !isEdit, - updateFlow: updateFlow }), - _react2.default.createElement(_Headers2.default, { - message: flow.request, - readonly: !isEdit, - onChange: function onChange(headers) { - return updateFlow({ request: { headers: headers } }); - } - }), - _react2.default.createElement('hr', null), - _react2.default.createElement(_ContentView2.default, { - readonly: !isEdit, - flow: flow, - onContentChange: function onContentChange(content) { - return updateFlow({ request: { content: content } }); - }, - message: flow.request }) - ), - _react2.default.createElement( - _HideInStatic2.default, - null, - !noContent && _react2.default.createElement( - 'footer', - null, - _react2.default.createElement(_ContentViewOptions2.default, { - flow: flow, - readonly: !isEdit, - message: flow.request, - uploadContent: function uploadContent(content) { - return _uploadContent(flow, content, "request"); - } }) - ) - ) - ); - } - }]); - - return Request; -}(_react.Component); - -exports.Request = Request = Message(Request); - -var Response = exports.Response = function (_Component2) { - _inherits(Response, _Component2); - - function Response() { - _classCallCheck(this, Response); - - return _possibleConstructorReturn(this, (Response.__proto__ || Object.getPrototypeOf(Response)).apply(this, arguments)); - } - - _createClass(Response, [{ - key: 'render', - value: function render() { - var _props2 = this.props, - flow = _props2.flow, - isEdit = _props2.isEdit, - updateFlow = _props2.updateFlow, - _uploadContent2 = _props2.uploadContent; - - var noContent = !isEdit && (flow.response.contentLength == 0 || flow.response.contentLength == null); - - return _react2.default.createElement( - 'section', - { className: 'response' }, - _react2.default.createElement( - 'article', - null, - _react2.default.createElement(_ToggleEdit2.default, null), - _react2.default.createElement(ResponseLine, { - flow: flow, - readonly: !isEdit, - updateFlow: updateFlow }), - _react2.default.createElement(_Headers2.default, { - message: flow.response, - readonly: !isEdit, - onChange: function onChange(headers) { - return updateFlow({ response: { headers: headers } }); - } - }), - _react2.default.createElement('hr', null), - _react2.default.createElement(_ContentView2.default, { - readonly: !isEdit, - flow: flow, - onContentChange: function onContentChange(content) { - return updateFlow({ response: { content: content } }); - }, - message: flow.response - }) - ), - _react2.default.createElement( - _HideInStatic2.default, - null, - !noContent && _react2.default.createElement( - 'footer', - null, - _react2.default.createElement(_ContentViewOptions2.default, { - flow: flow, - message: flow.response, - uploadContent: function uploadContent(content) { - return _uploadContent2(flow, content, "response"); - }, - readonly: !isEdit }) - ) - ) - ); - } - }]); - - return Response; -}(_react.Component); - -exports.Response = Response = Message(Response); - -ErrorView.propTypes = { - flow: _propTypes2.default.object.isRequired -}; - -function ErrorView(_ref3) { - var flow = _ref3.flow; - - return _react2.default.createElement( - 'section', - { className: 'error' }, - _react2.default.createElement( - 'div', - { className: 'alert alert-warning' }, - flow.error.msg, - _react2.default.createElement( - 'div', - null, - _react2.default.createElement( - 'small', - null, - (0, _utils2.formatTimeStamp)(flow.error.timestamp) - ) - ) - ) - ); -} - -},{"../../ducks/flows":57,"../../ducks/ui/flow":61,"../../flow/utils.js":69,"../../utils.js":71,"../ContentView":5,"../ContentView/ContentViewOptions":8,"../ValueEditor/ValidateEditor":44,"../ValueEditor/ValueEditor":45,"../common/HideInStatic":50,"./Headers":23,"./ToggleEdit":26,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],25:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.NavAction = undefined; -exports.default = Nav; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _lodash = require('lodash'); - -var _lodash2 = _interopRequireDefault(_lodash); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -NavAction.propTypes = { - icon: _propTypes2.default.string.isRequired, - title: _propTypes2.default.string.isRequired, - onClick: _propTypes2.default.func.isRequired -}; - -function NavAction(_ref) { - var icon = _ref.icon, - title = _ref.title, - _onClick = _ref.onClick; - - return _react2.default.createElement( - 'a', - { title: title, - href: '#', - className: 'nav-action', - onClick: function onClick(event) { - event.preventDefault(); - _onClick(event); - } }, - _react2.default.createElement('i', { className: 'fa fa-fw ' + icon }) - ); -} - -exports.NavAction = NavAction; -Nav.propTypes = { - active: _propTypes2.default.string.isRequired, - tabs: _propTypes2.default.array.isRequired, - onSelectTab: _propTypes2.default.func.isRequired -}; - -function Nav(_ref2) { - var active = _ref2.active, - tabs = _ref2.tabs, - onSelectTab = _ref2.onSelectTab; - - return _react2.default.createElement( - 'nav', - { className: 'nav-tabs nav-tabs-sm' }, - tabs.map(function (tab) { - return _react2.default.createElement( - 'a', - { key: tab, - href: '#', - className: (0, _classnames2.default)({ active: active === tab }), - onClick: function onClick(event) { - event.preventDefault(); - onSelectTab(tab); - } }, - _lodash2.default.capitalize(tab) - ); - }) - ); -} - -},{"classnames":"classnames","lodash":"lodash","prop-types":"prop-types","react":"react","react-redux":"react-redux"}],26:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _flow = require('../../ducks/ui/flow'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -ToggleEdit.propTypes = { - isEdit: _propTypes2.default.bool.isRequired, - flow: _propTypes2.default.object.isRequired, - startEdit: _propTypes2.default.func.isRequired, - stopEdit: _propTypes2.default.func.isRequired -}; - -function ToggleEdit(_ref) { - var isEdit = _ref.isEdit, - startEdit = _ref.startEdit, - stopEdit = _ref.stopEdit, - flow = _ref.flow, - modifiedFlow = _ref.modifiedFlow; - - return _react2.default.createElement( - 'div', - { className: 'edit-flow-container' }, - isEdit ? _react2.default.createElement( - 'a', - { className: 'edit-flow', title: 'Finish Edit', onClick: function onClick() { - return stopEdit(flow, modifiedFlow); - } }, - _react2.default.createElement('i', { className: 'fa fa-check' }) - ) : _react2.default.createElement( - 'a', - { className: 'edit-flow', title: 'Edit Flow', onClick: function onClick() { - return startEdit(flow); - } }, - _react2.default.createElement('i', { className: 'fa fa-pencil' }) - ) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - isEdit: !!state.ui.flow.modifiedFlow, - modifiedFlow: state.ui.flow.modifiedFlow || state.flows.byId[state.flows.selected[0]], - flow: state.flows.byId[state.flows.selected[0]] - }; -}, { - startEdit: _flow.startEdit, - stopEdit: _flow.stopEdit -})(ToggleEdit); - -},{"../../ducks/ui/flow":61,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],27:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _utils = require('../utils.js'); - -var _HideInStatic = require('../components/common/HideInStatic'); - -var _HideInStatic2 = _interopRequireDefault(_HideInStatic); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -Footer.propTypes = { - settings: _propTypes2.default.object.isRequired -}; - -function Footer(_ref) { - var settings = _ref.settings; - var mode = settings.mode, - intercept = settings.intercept, - showhost = settings.showhost, - no_upstream_cert = settings.no_upstream_cert, - rawtcp = settings.rawtcp, - http2 = settings.http2, - websocket = settings.websocket, - anticache = settings.anticache, - anticomp = settings.anticomp, - stickyauth = settings.stickyauth, - stickycookie = settings.stickycookie, - stream_large_bodies = settings.stream_large_bodies, - listen_host = settings.listen_host, - listen_port = settings.listen_port, - version = settings.version, - server = settings.server; - - return _react2.default.createElement( - 'footer', - null, - mode && mode != "regular" && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - mode, - ' mode' - ), - intercept && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'Intercept: ', - intercept - ), - showhost && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'showhost' - ), - no_upstream_cert && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'no-upstream-cert' - ), - rawtcp && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'raw-tcp' - ), - !http2 && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'no-http2' - ), - !websocket && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'no-websocket' - ), - anticache && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'anticache' - ), - anticomp && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'anticomp' - ), - stickyauth && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'stickyauth: ', - stickyauth - ), - stickycookie && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'stickycookie: ', - stickycookie - ), - stream_large_bodies && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'stream: ', - (0, _utils.formatSize)(stream_large_bodies) - ), - _react2.default.createElement( - 'div', - { className: 'pull-right' }, - _react2.default.createElement( - _HideInStatic2.default, - null, - server && _react2.default.createElement( - 'span', - { className: 'label label-primary', title: 'HTTP Proxy Server Address' }, - listen_host || "*", - ':', - listen_port - ) - ), - _react2.default.createElement( - 'span', - { className: 'label label-info', title: 'Mitmproxy Version' }, - 'v', - version - ) - ) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - settings: state.settings - }; -})(Footer); - -},{"../components/common/HideInStatic":50,"../utils.js":71,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],28:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _MainMenu = require('./Header/MainMenu'); - -var _MainMenu2 = _interopRequireDefault(_MainMenu); - -var _OptionMenu = require('./Header/OptionMenu'); - -var _OptionMenu2 = _interopRequireDefault(_OptionMenu); - -var _FileMenu = require('./Header/FileMenu'); - -var _FileMenu2 = _interopRequireDefault(_FileMenu); - -var _FlowMenu = require('./Header/FlowMenu'); - -var _FlowMenu2 = _interopRequireDefault(_FlowMenu); - -var _header = require('../ducks/ui/header'); - -var _ConnectionIndicator = require('./Header/ConnectionIndicator'); - -var _ConnectionIndicator2 = _interopRequireDefault(_ConnectionIndicator); - -var _HideInStatic = require('./common/HideInStatic'); - -var _HideInStatic2 = _interopRequireDefault(_HideInStatic); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Header = function (_Component) { - _inherits(Header, _Component); - - function Header() { - _classCallCheck(this, Header); - - return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments)); - } - - _createClass(Header, [{ - key: 'handleClick', - value: function handleClick(active, e) { - e.preventDefault(); - this.props.setActiveMenu(active.title); - } - }, { - key: 'render', - value: function render() { - var _this2 = this; - - var _props = this.props, - selectedFlowId = _props.selectedFlowId, - activeMenu = _props.activeMenu; - - - var entries = [].concat(_toConsumableArray(Header.entries)); - if (selectedFlowId) entries.push(_FlowMenu2.default); - - // Make sure to have a fallback in case FlowMenu is selected but we don't have any flows - // (e.g. because they are all deleted or not yet received) - var Active = _.find(entries, function (e) { - return e.title == activeMenu; - }) || _MainMenu2.default; - - return _react2.default.createElement( - 'header', - null, - _react2.default.createElement( - 'nav', - { className: 'nav-tabs nav-tabs-lg' }, - _react2.default.createElement(_FileMenu2.default, null), - entries.map(function (Entry) { - return _react2.default.createElement( - 'a', - { key: Entry.title, - href: '#', - className: (0, _classnames2.default)({ active: Entry === Active }), - onClick: function onClick(e) { - return _this2.handleClick(Entry, e); - } }, - Entry.title - ); - }), - _react2.default.createElement( - _HideInStatic2.default, - null, - _react2.default.createElement(_ConnectionIndicator2.default, null) - ) - ), - _react2.default.createElement( - 'div', - null, - _react2.default.createElement(Active, null) - ) - ); - } - }]); - - return Header; -}(_react.Component); - -Header.entries = [_MainMenu2.default, _OptionMenu2.default]; -exports.default = (0, _reactRedux.connect)(function (state) { - return { - selectedFlowId: state.flows.selected[0], - activeMenu: state.ui.header.activeMenu - }; -}, { - setActiveMenu: _header.setActiveMenu -})(Header); - -},{"../ducks/ui/header":62,"./Header/ConnectionIndicator":29,"./Header/FileMenu":30,"./Header/FlowMenu":33,"./Header/MainMenu":34,"./Header/OptionMenu":36,"./common/HideInStatic":50,"classnames":"classnames","prop-types":"prop-types","react":"react","react-redux":"react-redux"}],29:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ConnectionIndicator = ConnectionIndicator; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require("prop-types"); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require("react-redux"); - -var _connection = require("../../ducks/connection"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -ConnectionIndicator.propTypes = { - state: _propTypes2.default.symbol.isRequired, - message: _propTypes2.default.string - -}; -function ConnectionIndicator(_ref) { - var state = _ref.state, - message = _ref.message; - - switch (state) { - case _connection.ConnectionState.INIT: - return _react2.default.createElement( - "span", - { className: "connection-indicator init" }, - "connecting\u2026" - ); - case _connection.ConnectionState.FETCHING: - return _react2.default.createElement( - "span", - { className: "connection-indicator fetching" }, - "fetching data\u2026" - ); - case _connection.ConnectionState.ESTABLISHED: - return _react2.default.createElement( - "span", - { className: "connection-indicator established" }, - "connected" - ); - case _connection.ConnectionState.ERROR: - return _react2.default.createElement( - "span", - { className: "connection-indicator error", - title: message }, - "connection lost" - ); - case _connection.ConnectionState.OFFLINE: - return _react2.default.createElement( - "span", - { className: "connection-indicator offline" }, - "offline" - ); - } -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return state.connection; -})(ConnectionIndicator); - -},{"../../ducks/connection":55,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],30:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FileMenu = FileMenu; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _FileChooser = require('../common/FileChooser'); - -var _FileChooser2 = _interopRequireDefault(_FileChooser); - -var _Dropdown = require('../common/Dropdown'); - -var _Dropdown2 = _interopRequireDefault(_Dropdown); - -var _flows = require('../../ducks/flows'); - -var flowsActions = _interopRequireWildcard(_flows); - -var _modal = require('../../ducks/ui/modal'); - -var modalActions = _interopRequireWildcard(_modal); - -var _HideInStatic = require('../common/HideInStatic'); - -var _HideInStatic2 = _interopRequireDefault(_HideInStatic); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -FileMenu.propTypes = { - clearFlows: _propTypes2.default.func.isRequired, - loadFlows: _propTypes2.default.func.isRequired, - saveFlows: _propTypes2.default.func.isRequired -}; - -FileMenu.onNewClick = function (e, clearFlows) { - e.preventDefault(); - if (confirm('Delete all flows?')) clearFlows(); -}; - -function FileMenu(_ref) { - var clearFlows = _ref.clearFlows, - loadFlows = _ref.loadFlows, - saveFlows = _ref.saveFlows; - - return _react2.default.createElement( - _Dropdown2.default, - { className: 'pull-left', btnClass: 'special', text: 'mitmproxy' }, - _react2.default.createElement( - 'a', - { href: '#', onClick: function onClick(e) { - return FileMenu.onNewClick(e, clearFlows); - } }, - _react2.default.createElement('i', { className: 'fa fa-fw fa-trash' }), - '\xA0Clear All' - ), - _react2.default.createElement(_FileChooser2.default, { - icon: 'fa-folder-open', - text: '\xA0Open...', - onOpenFile: function onOpenFile(file) { - return loadFlows(file); - } - }), - _react2.default.createElement( - 'a', - { href: '#', onClick: function onClick(e) { - e.preventDefault();saveFlows(); - } }, - _react2.default.createElement('i', { className: 'fa fa-fw fa-floppy-o' }), - '\xA0Save...' - ), - _react2.default.createElement( - _HideInStatic2.default, - null, - _react2.default.createElement(_Dropdown.Divider, null), - _react2.default.createElement( - 'a', - { href: 'http://mitm.it/', target: '_blank' }, - _react2.default.createElement('i', { className: 'fa fa-fw fa-external-link' }), - '\xA0Install Certificates...' - ) - ) - ); -} - -exports.default = (0, _reactRedux.connect)(null, { - clearFlows: flowsActions.clear, - loadFlows: flowsActions.upload, - saveFlows: flowsActions.download -})(FileMenu); - -},{"../../ducks/flows":57,"../../ducks/ui/modal":65,"../common/Dropdown":48,"../common/FileChooser":49,"../common/HideInStatic":50,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],31:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _utils = require('../../utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var FilterDocs = function (_Component) { - _inherits(FilterDocs, _Component); - - // @todo move to redux - - function FilterDocs(props, context) { - _classCallCheck(this, FilterDocs); - - var _this = _possibleConstructorReturn(this, (FilterDocs.__proto__ || Object.getPrototypeOf(FilterDocs)).call(this, props, context)); - - _this.state = { doc: FilterDocs.doc }; - return _this; - } - - _createClass(FilterDocs, [{ - key: 'componentWillMount', - value: function componentWillMount() { - var _this2 = this; - - if (!FilterDocs.xhr) { - FilterDocs.xhr = (0, _utils.fetchApi)('/filter-help').then(function (response) { - return response.json(); - }); - FilterDocs.xhr.catch(function () { - FilterDocs.xhr = null; - }); - } - if (!this.state.doc) { - FilterDocs.xhr.then(function (doc) { - FilterDocs.doc = doc; - _this2.setState({ doc: doc }); - }); - } - } - }, { - key: 'render', - value: function render() { - var _this3 = this; - - var doc = this.state.doc; - - return !doc ? _react2.default.createElement('i', { className: 'fa fa-spinner fa-spin' }) : _react2.default.createElement( - 'table', - { className: 'table table-condensed' }, - _react2.default.createElement( - 'tbody', - null, - doc.commands.map(function (cmd) { - return _react2.default.createElement( - 'tr', - { key: cmd[1], onClick: function onClick(e) { - return _this3.props.selectHandler(cmd[0].split(" ")[0] + " "); - } }, - _react2.default.createElement( - 'td', - null, - cmd[0].replace(' ', '\xA0') - ), - _react2.default.createElement( - 'td', - null, - cmd[1] - ) - ); - }), - _react2.default.createElement( - 'tr', - { key: 'docs-link' }, - _react2.default.createElement( - 'td', - { colSpan: '2' }, - _react2.default.createElement( - 'a', - { href: 'https://mitmproxy.org/docs/latest/concepts-filters/', - target: '_blank' }, - _react2.default.createElement('i', { className: 'fa fa-external-link' }), - '\xA0 mitmproxy docs' - ) - ) - ) - ) - ); - } - }]); - - return FilterDocs; -}(_react.Component); - -FilterDocs.xhr = null; -FilterDocs.doc = null; -exports.default = FilterDocs; - -},{"../../utils":71,"react":"react"}],32:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactDom = require('react-dom'); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _utils = require('../../utils.js'); - -var _filt = require('../../filt/filt'); - -var _filt2 = _interopRequireDefault(_filt); - -var _FilterDocs = require('./FilterDocs'); - -var _FilterDocs2 = _interopRequireDefault(_FilterDocs); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var FilterInput = function (_Component) { - _inherits(FilterInput, _Component); - - function FilterInput(props, context) { - _classCallCheck(this, FilterInput); - - // Consider both focus and mouseover for showing/hiding the tooltip, - // because onBlur of the input is triggered before the click on the tooltip - // finalized, hiding the tooltip just as the user clicks on it. - var _this = _possibleConstructorReturn(this, (FilterInput.__proto__ || Object.getPrototypeOf(FilterInput)).call(this, props, context)); - - _this.state = { value: _this.props.value, focus: false, mousefocus: false }; - - _this.onChange = _this.onChange.bind(_this); - _this.onFocus = _this.onFocus.bind(_this); - _this.onBlur = _this.onBlur.bind(_this); - _this.onKeyDown = _this.onKeyDown.bind(_this); - _this.onMouseEnter = _this.onMouseEnter.bind(_this); - _this.onMouseLeave = _this.onMouseLeave.bind(_this); - _this.selectFilter = _this.selectFilter.bind(_this); - return _this; - } - - _createClass(FilterInput, [{ - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { - this.setState({ value: nextProps.value }); - } - }, { - key: 'isValid', - value: function isValid(filt) { - try { - var str = filt == null ? this.state.value : filt; - if (str) { - _filt2.default.parse(str); - } - return true; - } catch (e) { - return false; - } - } - }, { - key: 'getDesc', - value: function getDesc() { - if (!this.state.value) { - return _react2.default.createElement(_FilterDocs2.default, { selectHandler: this.selectFilter }); - } - try { - return _filt2.default.parse(this.state.value).desc; - } catch (e) { - return '' + e; - } - } - }, { - key: 'onChange', - value: function onChange(e) { - var value = e.target.value; - this.setState({ value: value }); - - // Only propagate valid filters upwards. - if (this.isValid(value)) { - this.props.onChange(value); - } - } - }, { - key: 'onFocus', - value: function onFocus() { - this.setState({ focus: true }); - } - }, { - key: 'onBlur', - value: function onBlur() { - this.setState({ focus: false }); - } - }, { - key: 'onMouseEnter', - value: function onMouseEnter() { - this.setState({ mousefocus: true }); - } - }, { - key: 'onMouseLeave', - value: function onMouseLeave() { - this.setState({ mousefocus: false }); - } - }, { - key: 'onKeyDown', - value: function onKeyDown(e) { - if (e.keyCode === _utils.Key.ESC || e.keyCode === _utils.Key.ENTER) { - this.blur(); - // If closed using ESC/ENTER, hide the tooltip. - this.setState({ mousefocus: false }); - } - e.stopPropagation(); - } - }, { - key: 'selectFilter', - value: function selectFilter(cmd) { - this.setState({ value: cmd }); - _reactDom2.default.findDOMNode(this.refs.input).focus(); - } - }, { - key: 'blur', - value: function blur() { - _reactDom2.default.findDOMNode(this.refs.input).blur(); - } - }, { - key: 'select', - value: function select() { - _reactDom2.default.findDOMNode(this.refs.input).select(); - } - }, { - key: 'render', - value: function render() { - var _props = this.props, - type = _props.type, - color = _props.color, - placeholder = _props.placeholder; - var _state = this.state, - value = _state.value, - focus = _state.focus, - mousefocus = _state.mousefocus; - - return _react2.default.createElement( - 'div', - { className: (0, _classnames2.default)('filter-input input-group', { 'has-error': !this.isValid() }) }, - _react2.default.createElement( - 'span', - { className: 'input-group-addon' }, - _react2.default.createElement('i', { className: 'fa fa-fw fa-' + type, style: { color: color } }) - ), - _react2.default.createElement('input', { - type: 'text', - ref: 'input', - placeholder: placeholder, - className: 'form-control', - value: value, - onChange: this.onChange, - onFocus: this.onFocus, - onBlur: this.onBlur, - onKeyDown: this.onKeyDown - }), - (focus || mousefocus) && _react2.default.createElement( - 'div', - { className: 'popover bottom', - onMouseEnter: this.onMouseEnter, - onMouseLeave: this.onMouseLeave }, - _react2.default.createElement('div', { className: 'arrow' }), - _react2.default.createElement( - 'div', - { className: 'popover-content' }, - this.getDesc() - ) - ) - ); - } - }]); - - return FilterInput; -}(_react.Component); - -exports.default = FilterInput; - -},{"../../filt/filt":68,"../../utils.js":71,"./FilterDocs":31,"classnames":"classnames","prop-types":"prop-types","react":"react","react-dom":"react-dom"}],33:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.FlowMenu = FlowMenu; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require("prop-types"); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require("react-redux"); - -var _Button = require("../common/Button"); - -var _Button2 = _interopRequireDefault(_Button); - -var _utils = require("../../flow/utils.js"); - -var _flows = require("../../ducks/flows"); - -var flowsActions = _interopRequireWildcard(_flows); - -var _HideInStatic = require("../common/HideInStatic"); - -var _HideInStatic2 = _interopRequireDefault(_HideInStatic); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -FlowMenu.title = 'Flow'; - -FlowMenu.propTypes = { - flow: _propTypes2.default.object, - resumeFlow: _propTypes2.default.func.isRequired, - killFlow: _propTypes2.default.func.isRequired, - replayFlow: _propTypes2.default.func.isRequired, - duplicateFlow: _propTypes2.default.func.isRequired, - removeFlow: _propTypes2.default.func.isRequired, - revertFlow: _propTypes2.default.func.isRequired -}; - -function FlowMenu(_ref) { - var flow = _ref.flow, - resumeFlow = _ref.resumeFlow, - killFlow = _ref.killFlow, - replayFlow = _ref.replayFlow, - duplicateFlow = _ref.duplicateFlow, - removeFlow = _ref.removeFlow, - revertFlow = _ref.revertFlow; - - if (!flow) return _react2.default.createElement("div", null); - return _react2.default.createElement( - "div", - null, - _react2.default.createElement( - _HideInStatic2.default, - null, - _react2.default.createElement( - "div", - { className: "menu-group" }, - _react2.default.createElement( - "div", - { className: "menu-content" }, - _react2.default.createElement( - _Button2.default, - { title: "[r]eplay flow", icon: "fa-repeat text-primary", - onClick: function onClick() { - return replayFlow(flow); - } }, - "Replay" - ), - _react2.default.createElement( - _Button2.default, - { title: "[D]uplicate flow", icon: "fa-copy text-info", - onClick: function onClick() { - return duplicateFlow(flow); - } }, - "Duplicate" - ), - _react2.default.createElement( - _Button2.default, - { disabled: !flow || !flow.modified, title: "revert changes to flow [V]", - icon: "fa-history text-warning", onClick: function onClick() { - return revertFlow(flow); - } }, - "Revert" - ), - _react2.default.createElement( - _Button2.default, - { title: "[d]elete flow", icon: "fa-trash text-danger", - onClick: function onClick() { - return removeFlow(flow); - } }, - "Delete" - ) - ), - _react2.default.createElement( - "div", - { className: "menu-legend" }, - "Flow Modification" - ) - ) - ), - _react2.default.createElement( - "div", - { className: "menu-group" }, - _react2.default.createElement( - "div", - { className: "menu-content" }, - _react2.default.createElement( - _Button2.default, - { title: "download", icon: "fa-download", - onClick: function onClick() { - return window.location = _utils.MessageUtils.getContentURL(flow, flow.response); - } }, - "Download" - ) - ), - _react2.default.createElement( - "div", - { className: "menu-legend" }, - "Export" - ) - ), - _react2.default.createElement( - _HideInStatic2.default, - null, - _react2.default.createElement( - "div", - { className: "menu-group" }, - _react2.default.createElement( - "div", - { className: "menu-content" }, - _react2.default.createElement( - _Button2.default, - { disabled: !flow || !flow.intercepted, title: "[a]ccept intercepted flow", - icon: "fa-play text-success", onClick: function onClick() { - return resumeFlow(flow); - } }, - "Resume" - ), - _react2.default.createElement( - _Button2.default, - { disabled: !flow || !flow.intercepted, title: "kill intercepted flow [x]", - icon: "fa-times text-danger", onClick: function onClick() { - return killFlow(flow); - } }, - "Abort" - ) - ), - _react2.default.createElement( - "div", - { className: "menu-legend" }, - "Interception" - ) - ) - ) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - flow: state.flows.byId[state.flows.selected[0]] - }; -}, { - resumeFlow: flowsActions.resume, - killFlow: flowsActions.kill, - replayFlow: flowsActions.replay, - duplicateFlow: flowsActions.duplicate, - removeFlow: flowsActions.remove, - revertFlow: flowsActions.revert -})(FlowMenu); - -},{"../../ducks/flows":57,"../../flow/utils.js":69,"../common/Button":46,"../common/HideInStatic":50,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],34:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = MainMenu; -exports.setIntercept = setIntercept; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require("prop-types"); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require("react-redux"); - -var _FilterInput = require("./FilterInput"); - -var _FilterInput2 = _interopRequireDefault(_FilterInput); - -var _settings = require("../../ducks/settings"); - -var _flows = require("../../ducks/flows"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -MainMenu.title = "Start"; - -function MainMenu() { - return _react2.default.createElement( - "div", - { className: "menu-main" }, - _react2.default.createElement(FlowFilterInput, null), - _react2.default.createElement(HighlightInput, null), - _react2.default.createElement(InterceptInput, null) - ); -} - -function setIntercept(intercept) { - (0, _settings.update)({ intercept: intercept }); -} - -var InterceptInput = (0, _reactRedux.connect)(function (state) { - return { - value: state.settings.intercept || '', - placeholder: 'Intercept', - type: 'pause', - color: 'hsl(208, 56%, 53%)' - }; -}, { onChange: setIntercept })(_FilterInput2.default); - -var FlowFilterInput = (0, _reactRedux.connect)(function (state) { - return { - value: state.flows.filter || '', - placeholder: 'Search', - type: 'search', - color: 'black' - }; -}, { onChange: _flows.setFilter })(_FilterInput2.default); - -var HighlightInput = (0, _reactRedux.connect)(function (state) { - return { - value: state.flows.highlight || '', - placeholder: 'Highlight', - type: 'tag', - color: 'hsl(48, 100%, 50%)' - }; -}, { onChange: _flows.setHighlight })(_FilterInput2.default); - -},{"../../ducks/flows":57,"../../ducks/settings":60,"./FilterInput":32,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],35:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.MenuToggle = MenuToggle; -exports.SettingsToggle = SettingsToggle; -exports.EventlogToggle = EventlogToggle; - -var _propTypes = require("prop-types"); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require("react-redux"); - -var _settings = require("../../ducks/settings"); - -var _eventLog = require("../../ducks/eventLog"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -MenuToggle.propTypes = { - value: _propTypes2.default.bool.isRequired, - onChange: _propTypes2.default.func.isRequired, - children: _propTypes2.default.node.isRequired -}; - -function MenuToggle(_ref) { - var value = _ref.value, - onChange = _ref.onChange, - children = _ref.children; - - return React.createElement( - "div", - { className: "menu-entry" }, - React.createElement( - "label", - null, - React.createElement("input", { type: "checkbox", - checked: value, - onChange: onChange }), - children - ) - ); -} - -SettingsToggle.propTypes = { - setting: _propTypes2.default.string.isRequired, - children: _propTypes2.default.node.isRequired -}; - -function SettingsToggle(_ref2) { - var setting = _ref2.setting, - children = _ref2.children, - settings = _ref2.settings, - updateSettings = _ref2.updateSettings; - - return React.createElement( - MenuToggle, - { - value: settings[setting] || false // we don't have settings initially, so just pass false. - , onChange: function onChange() { - return updateSettings(_defineProperty({}, setting, !settings[setting])); - } - }, - children - ); -} -exports.SettingsToggle = SettingsToggle = (0, _reactRedux.connect)(function (state) { - return { - settings: state.settings - }; -}, { - updateSettings: _settings.update -})(SettingsToggle); - -function EventlogToggle(_ref3) { - var toggleVisibility = _ref3.toggleVisibility, - eventLogVisible = _ref3.eventLogVisible; - - return React.createElement( - MenuToggle, - { - value: eventLogVisible, - onChange: toggleVisibility - }, - "Display Event Log" - ); -} -exports.EventlogToggle = EventlogToggle = (0, _reactRedux.connect)(function (state) { - return { - eventLogVisible: state.eventLog.visible - }; -}, { - toggleVisibility: _eventLog.toggleVisibility -})(EventlogToggle); - -},{"../../ducks/eventLog":56,"../../ducks/settings":60,"prop-types":"prop-types","react-redux":"react-redux"}],36:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _reactRedux = require("react-redux"); - -var _MenuToggle = require("./MenuToggle"); - -var _Button = require("../common/Button"); - -var _Button2 = _interopRequireDefault(_Button); - -var _DocsLink = require("../common/DocsLink"); - -var _DocsLink2 = _interopRequireDefault(_DocsLink); - -var _HideInStatic = require("../common/HideInStatic"); - -var _HideInStatic2 = _interopRequireDefault(_HideInStatic); - -var _modal = require("../../ducks/ui/modal"); - -var modalActions = _interopRequireWildcard(_modal); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -OptionMenu.title = 'Options'; - -function OptionMenu(_ref) { - var openOptions = _ref.openOptions; - - return _react2.default.createElement( - "div", - null, - _react2.default.createElement( - _HideInStatic2.default, - null, - _react2.default.createElement( - "div", - { className: "menu-group" }, - _react2.default.createElement( - "div", - { className: "menu-content" }, - _react2.default.createElement( - _Button2.default, - { title: "Open Options", icon: "fa-cogs text-primary", - onClick: openOptions }, - "Edit Options ", - _react2.default.createElement( - "sup", - null, - "alpha" - ) - ) - ), - _react2.default.createElement( - "div", - { className: "menu-legend" }, - "Options Editor" - ) - ), - _react2.default.createElement( - "div", - { className: "menu-group" }, - _react2.default.createElement( - "div", - { className: "menu-content" }, - _react2.default.createElement( - _MenuToggle.SettingsToggle, - { setting: "anticache" }, - "Strip cache headers ", - _react2.default.createElement(_DocsLink2.default, { resource: "features/anticache.html" }) - ), - _react2.default.createElement( - _MenuToggle.SettingsToggle, - { setting: "showhost" }, - "Use host header for display" - ), - _react2.default.createElement( - _MenuToggle.SettingsToggle, - { setting: "ssl_insecure" }, - "Don't verify server certificates" - ) - ), - _react2.default.createElement( - "div", - { className: "menu-legend" }, - "Quick Options" - ) - ) - ), - _react2.default.createElement( - "div", - { className: "menu-group" }, - _react2.default.createElement( - "div", - { className: "menu-content" }, - _react2.default.createElement(_MenuToggle.EventlogToggle, null) - ), - _react2.default.createElement( - "div", - { className: "menu-legend" }, - "View Options" - ) - ) - ); -} - -exports.default = (0, _reactRedux.connect)(null, { - openOptions: function openOptions() { - return modalActions.setActiveModal('OptionModal'); - } -})(OptionMenu); - -},{"../../ducks/ui/modal":65,"../common/Button":46,"../common/DocsLink":47,"../common/HideInStatic":50,"./MenuToggle":35,"react":"react","react-redux":"react-redux"}],37:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _Splitter = require('./common/Splitter'); - -var _Splitter2 = _interopRequireDefault(_Splitter); - -var _FlowTable = require('./FlowTable'); - -var _FlowTable2 = _interopRequireDefault(_FlowTable); - -var _FlowView = require('./FlowView'); - -var _FlowView2 = _interopRequireDefault(_FlowView); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -MainView.propTypes = { - hasSelection: _propTypes2.default.bool.isRequired -}; - -function MainView(_ref) { - var hasSelection = _ref.hasSelection; - - return _react2.default.createElement( - 'div', - { className: 'main-view' }, - _react2.default.createElement(_FlowTable2.default, null), - hasSelection && _react2.default.createElement(_Splitter2.default, { key: 'splitter' }), - hasSelection && _react2.default.createElement(_FlowView2.default, { key: 'flowDetails' }) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - hasSelection: !!state.flows.byId[state.flows.selected[0]] - }; -}, {})(MainView); - -},{"./FlowTable":17,"./FlowView":21,"./common/Splitter":51,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],38:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _reactRedux = require('react-redux'); - -var _ModalList = require('./ModalList'); - -var _ModalList2 = _interopRequireDefault(_ModalList); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var PureModal = function (_Component) { - _inherits(PureModal, _Component); - - function PureModal(props, context) { - _classCallCheck(this, PureModal); - - return _possibleConstructorReturn(this, (PureModal.__proto__ || Object.getPrototypeOf(PureModal)).call(this, props, context)); - } - - _createClass(PureModal, [{ - key: 'render', - value: function render() { - var activeModal = this.props.activeModal; - - var ActiveModal = _ModalList2.default.find(function (m) { - return m.name === activeModal; - }); - return activeModal ? _react2.default.createElement(ActiveModal, null) : _react2.default.createElement('div', null); - } - }]); - - return PureModal; -}(_react.Component); - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - activeModal: state.ui.modal.activeModal - }; -})(PureModal); - -},{"./ModalList":40,"react":"react","react-redux":"react-redux"}],39:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = ModalLayout; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function ModalLayout(_ref) { - var children = _ref.children; - - return _react2.default.createElement( - "div", - null, - _react2.default.createElement("div", { className: "modal-backdrop fade in" }), - _react2.default.createElement( - "div", - { className: "modal modal-visible", id: "optionsModal", tabIndex: "-1", role: "dialog", "aria-labelledby": "options" }, - _react2.default.createElement( - "div", - { className: "modal-dialog modal-lg", role: "document" }, - _react2.default.createElement( - "div", - { className: "modal-content" }, - children - ) - ) - ) - ); -} - -},{"react":"react"}],40:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _ModalLayout = require('./ModalLayout'); - -var _ModalLayout2 = _interopRequireDefault(_ModalLayout); - -var _OptionModal = require('./OptionModal'); - -var _OptionModal2 = _interopRequireDefault(_OptionModal); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function OptionModal() { - return _react2.default.createElement( - _ModalLayout2.default, - null, - _react2.default.createElement(_OptionModal2.default, null) - ); -} - -exports.default = [OptionModal]; - -},{"./ModalLayout":39,"./OptionModal":42,"react":"react"}],41:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Options = exports.ChoicesOption = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require("prop-types"); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require("react-redux"); - -var _options = require("../../ducks/options"); - -var _utils = require("../../utils"); - -var _classnames = require("classnames"); - -var _classnames2 = _interopRequireDefault(_classnames); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } - -var stopPropagation = function stopPropagation(e) { - if (e.keyCode !== _utils.Key.ESC) { - e.stopPropagation(); - } -}; - -BooleanOption.PropTypes = { - value: _propTypes2.default.bool.isRequired, - onChange: _propTypes2.default.func.isRequired -}; -function BooleanOption(_ref) { - var value = _ref.value, - _onChange = _ref.onChange, - props = _objectWithoutProperties(_ref, ["value", "onChange"]); - - return _react2.default.createElement( - "div", - { className: "checkbox" }, - _react2.default.createElement( - "label", - null, - _react2.default.createElement("input", _extends({ type: "checkbox", - checked: value, - onChange: function onChange(e) { - return _onChange(e.target.checked); - } - }, props)), - "Enable" - ) - ); -} - -StringOption.PropTypes = { - value: _propTypes2.default.string.isRequired, - onChange: _propTypes2.default.func.isRequired -}; -function StringOption(_ref2) { - var value = _ref2.value, - _onChange2 = _ref2.onChange, - props = _objectWithoutProperties(_ref2, ["value", "onChange"]); - - return _react2.default.createElement("input", _extends({ type: "text", - value: value || "", - onChange: function onChange(e) { - return _onChange2(e.target.value); - } - }, props)); -} -function Optional(Component) { - return function (_ref3) { - var _onChange3 = _ref3.onChange, - props = _objectWithoutProperties(_ref3, ["onChange"]); - - return _react2.default.createElement(Component, _extends({ - onChange: function onChange(x) { - return _onChange3(x ? x : null); - } - }, props)); - }; -} - -NumberOption.PropTypes = { - value: _propTypes2.default.number.isRequired, - onChange: _propTypes2.default.func.isRequired -}; -function NumberOption(_ref4) { - var value = _ref4.value, - _onChange4 = _ref4.onChange, - props = _objectWithoutProperties(_ref4, ["value", "onChange"]); - - return _react2.default.createElement("input", _extends({ type: "number", - value: value, - onChange: function onChange(e) { - return _onChange4(parseInt(e.target.value)); - } - }, props)); -} - -ChoicesOption.PropTypes = { - value: _propTypes2.default.string.isRequired, - onChange: _propTypes2.default.func.isRequired -}; -function ChoicesOption(_ref5) { - var value = _ref5.value, - _onChange5 = _ref5.onChange, - choices = _ref5.choices, - props = _objectWithoutProperties(_ref5, ["value", "onChange", "choices"]); - - return _react2.default.createElement( - "select", - _extends({ - onChange: function onChange(e) { - return _onChange5(e.target.value); - }, - value: value - }, props), - choices.map(function (choice) { - return _react2.default.createElement( - "option", - { key: choice, value: choice }, - choice - ); - }) - ); -} - -exports.ChoicesOption = ChoicesOption; -StringSequenceOption.PropTypes = { - value: _propTypes2.default.string.isRequired, - onChange: _propTypes2.default.func.isRequired -}; -function StringSequenceOption(_ref6) { - var value = _ref6.value, - _onChange6 = _ref6.onChange, - props = _objectWithoutProperties(_ref6, ["value", "onChange"]); - - var height = Math.max(value.length, 1); - return _react2.default.createElement("textarea", _extends({ - rows: height, - value: value.join('\n'), - onChange: function onChange(e) { - return _onChange6(e.target.value.split("\n")); - } - }, props)); -} - -var Options = exports.Options = { - "bool": BooleanOption, - "str": StringOption, - "int": NumberOption, - "optional str": Optional(StringOption), - "sequence of str": StringSequenceOption -}; - -function PureOption(_ref7) { - var choices = _ref7.choices, - type = _ref7.type, - value = _ref7.value, - onChange = _ref7.onChange, - name = _ref7.name, - error = _ref7.error; - - var Opt = void 0, - props = {}; - if (choices) { - Opt = ChoicesOption; - props.choices = choices; - } else { - Opt = Options[type]; - } - if (Opt !== BooleanOption) { - props.className = "form-control"; - } - - return _react2.default.createElement( - "div", - { className: (0, _classnames2.default)({ 'has-error': error }) }, - _react2.default.createElement(Opt, _extends({ - name: name, - value: value, - onChange: onChange, - onKeyDown: stopPropagation - }, props)) - ); -} -exports.default = (0, _reactRedux.connect)(function (state, _ref8) { - var name = _ref8.name; - return _extends({}, state.options[name], state.ui.optionsEditor[name]); -}, function (dispatch, _ref9) { - var name = _ref9.name; - return { - onChange: function onChange(value) { - return dispatch((0, _options.update)(name, value)); - } - }; -})(PureOption); - -},{"../../ducks/options":59,"../../utils":71,"classnames":"classnames","prop-types":"prop-types","react":"react","react-redux":"react-redux"}],42:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -exports.PureOptionDefault = PureOptionDefault; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _reactRedux = require("react-redux"); - -var _modal = require("../../ducks/ui/modal"); - -var modalAction = _interopRequireWildcard(_modal); - -var _options = require("../../ducks/options"); - -var optionAction = _interopRequireWildcard(_options); - -var _Option = require("./Option"); - -var _Option2 = _interopRequireDefault(_Option); - -var _lodash = require("lodash"); - -var _lodash2 = _interopRequireDefault(_lodash); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -function PureOptionHelp(_ref) { - var help = _ref.help; - - return _react2.default.createElement( - "div", - { className: "help-block small" }, - help - ); -} -var OptionHelp = (0, _reactRedux.connect)(function (state, _ref2) { - var name = _ref2.name; - return { - help: state.options[name].help - }; -})(PureOptionHelp); - -function PureOptionError(_ref3) { - var error = _ref3.error; - - if (!error) return null; - return _react2.default.createElement( - "div", - { className: "small text-danger" }, - error - ); -} -var OptionError = (0, _reactRedux.connect)(function (state, _ref4) { - var name = _ref4.name; - return { - error: state.ui.optionsEditor[name] && state.ui.optionsEditor[name].error - }; -})(PureOptionError); - -function PureOptionDefault(_ref5) { - var value = _ref5.value, - defaultVal = _ref5.defaultVal; - - if (value === defaultVal) { - return null; - } else { - if (typeof defaultVal === 'boolean') { - defaultVal = defaultVal ? 'true' : 'false'; - } else if (Array.isArray(defaultVal)) { - if (_lodash2.default.isEmpty(_lodash2.default.compact(value)) && // filter the empty string in array - _lodash2.default.isEmpty(defaultVal)) { - return null; - } - defaultVal = '[ ]'; - } else if (defaultVal === '') { - defaultVal = '\"\"'; - } else if (defaultVal === null) { - defaultVal = 'null'; - } - return _react2.default.createElement( - "div", - { className: "small" }, - "Default: ", - _react2.default.createElement( - "strong", - null, - " ", - defaultVal, - " " - ), - " " - ); - } -} -var OptionDefault = (0, _reactRedux.connect)(function (state, _ref6) { - var name = _ref6.name; - return { - value: state.options[name].value, - defaultVal: state.options[name].default - }; -})(PureOptionDefault); - -var PureOptionModal = function (_Component) { - _inherits(PureOptionModal, _Component); - - function PureOptionModal(props, context) { - _classCallCheck(this, PureOptionModal); - - var _this = _possibleConstructorReturn(this, (PureOptionModal.__proto__ || Object.getPrototypeOf(PureOptionModal)).call(this, props, context)); - - _this.state = { title: 'Options' }; - return _this; - } - - _createClass(PureOptionModal, [{ - key: "componentWillUnmount", - value: function componentWillUnmount() { - // this.props.save() - } - }, { - key: "render", - value: function render() { - var _props = this.props, - hideModal = _props.hideModal, - options = _props.options; - var title = this.state.title; - - return _react2.default.createElement( - "div", - null, - _react2.default.createElement( - "div", - { className: "modal-header" }, - _react2.default.createElement( - "button", - { type: "button", className: "close", "data-dismiss": "modal", onClick: function onClick() { - hideModal(); - } }, - _react2.default.createElement("i", { className: "fa fa-fw fa-times" }) - ), - _react2.default.createElement( - "div", - { className: "modal-title" }, - _react2.default.createElement( - "h4", - null, - title - ) - ) - ), - _react2.default.createElement( - "div", - { className: "modal-body" }, - _react2.default.createElement( - "div", - { className: "form-horizontal" }, - options.map(function (name) { - return _react2.default.createElement( - "div", - { key: name, className: "form-group" }, - _react2.default.createElement( - "div", - { className: "col-xs-6" }, - _react2.default.createElement( - "label", - { htmlFor: name }, - name - ), - _react2.default.createElement(OptionHelp, { name: name }) - ), - _react2.default.createElement( - "div", - { className: "col-xs-6" }, - _react2.default.createElement(_Option2.default, { name: name }), - _react2.default.createElement(OptionError, { name: name }), - _react2.default.createElement(OptionDefault, { name: name }) - ) - ); - }) - ) - ), - _react2.default.createElement("div", { className: "modal-footer" }) - ); - } - }]); - - return PureOptionModal; -}(_react.Component); - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - options: Object.keys(state.options).sort() - }; -}, { - hideModal: modalAction.hideModal, - save: optionAction.save -})(PureOptionModal); - -},{"../../ducks/options":59,"../../ducks/ui/modal":65,"./Option":41,"lodash":"lodash","react":"react","react-redux":"react-redux"}],43:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactRedux = require('react-redux'); - -var _keyboard = require('../ducks/ui/keyboard'); - -var _MainView = require('./MainView'); - -var _MainView2 = _interopRequireDefault(_MainView); - -var _Header = require('./Header'); - -var _Header2 = _interopRequireDefault(_Header); - -var _EventLog = require('./EventLog'); - -var _EventLog2 = _interopRequireDefault(_EventLog); - -var _Footer = require('./Footer'); - -var _Footer2 = _interopRequireDefault(_Footer); - -var _Modal = require('./Modal/Modal'); - -var _Modal2 = _interopRequireDefault(_Modal); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ProxyAppMain = function (_Component) { - _inherits(ProxyAppMain, _Component); - - function ProxyAppMain() { - _classCallCheck(this, ProxyAppMain); - - return _possibleConstructorReturn(this, (ProxyAppMain.__proto__ || Object.getPrototypeOf(ProxyAppMain)).apply(this, arguments)); - } - - _createClass(ProxyAppMain, [{ - key: 'componentWillMount', - value: function componentWillMount() { - window.addEventListener('keydown', this.props.onKeyDown); - } - }, { - key: 'componentWillUnmount', - value: function componentWillUnmount() { - window.removeEventListener('keydown', this.props.onKeyDown); - } - }, { - key: 'render', - value: function render() { - var showEventLog = this.props.showEventLog; - - return _react2.default.createElement( - 'div', - { id: 'container', tabIndex: '0' }, - _react2.default.createElement(_Header2.default, null), - _react2.default.createElement(_MainView2.default, null), - showEventLog && _react2.default.createElement(_EventLog2.default, { key: 'eventlog' }), - _react2.default.createElement(_Footer2.default, null), - _react2.default.createElement(_Modal2.default, null) - ); - } - }]); - - return ProxyAppMain; -}(_react.Component); - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - showEventLog: state.eventLog.visible - }; -}, { - onKeyDown: _keyboard.onKeyDown -})(ProxyAppMain); - -},{"../ducks/ui/keyboard":64,"./EventLog":15,"./Footer":27,"./Header":28,"./MainView":37,"./Modal/Modal":38,"prop-types":"prop-types","react":"react","react-redux":"react-redux"}],44:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _ValueEditor = require('./ValueEditor'); - -var _ValueEditor2 = _interopRequireDefault(_ValueEditor); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ValidateEditor = function (_Component) { - _inherits(ValidateEditor, _Component); - - function ValidateEditor(props) { - _classCallCheck(this, ValidateEditor); - - var _this = _possibleConstructorReturn(this, (ValidateEditor.__proto__ || Object.getPrototypeOf(ValidateEditor)).call(this, props)); - - _this.state = { valid: props.isValid(props.content) }; - _this.onInput = _this.onInput.bind(_this); - _this.onDone = _this.onDone.bind(_this); - return _this; - } - - _createClass(ValidateEditor, [{ - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps) { - this.setState({ valid: nextProps.isValid(nextProps.content) }); - } - }, { - key: 'onInput', - value: function onInput(content) { - this.setState({ valid: this.props.isValid(content) }); - } - }, { - key: 'onDone', - value: function onDone(content) { - if (!this.props.isValid(content)) { - this.editor.reset(); - content = this.props.content; - } - this.props.onDone(content); - } - }, { - key: 'render', - value: function render() { - var _this2 = this; - - var className = (0, _classnames2.default)(this.props.className, { - 'has-success': this.state.valid, - 'has-warning': !this.state.valid - }); - return _react2.default.createElement(_ValueEditor2.default, { - content: this.props.content, - readonly: this.props.readonly, - onDone: this.onDone, - onInput: this.onInput, - className: className, - ref: function ref(e) { - return _this2.editor = e; - } - }); - } - }]); - - return ValidateEditor; -}(_react.Component); - -ValidateEditor.propTypes = { - content: _propTypes2.default.string.isRequired, - readonly: _propTypes2.default.bool, - onDone: _propTypes2.default.func.isRequired, - className: _propTypes2.default.string, - isValid: _propTypes2.default.func.isRequired -}; -exports.default = ValidateEditor; - -},{"./ValueEditor":45,"classnames":"classnames","prop-types":"prop-types","react":"react"}],45:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _lodash = require('lodash'); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _utils = require('../../utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var ValueEditor = function (_Component) { - _inherits(ValueEditor, _Component); - - function ValueEditor(props) { - _classCallCheck(this, ValueEditor); - - var _this = _possibleConstructorReturn(this, (ValueEditor.__proto__ || Object.getPrototypeOf(ValueEditor)).call(this, props)); - - _this.state = { editable: false }; - - _this.onPaste = _this.onPaste.bind(_this); - _this.onMouseDown = _this.onMouseDown.bind(_this); - _this.onMouseUp = _this.onMouseUp.bind(_this); - _this.onFocus = _this.onFocus.bind(_this); - _this.onClick = _this.onClick.bind(_this); - _this.blur = _this.blur.bind(_this); - _this.onBlur = _this.onBlur.bind(_this); - _this.reset = _this.reset.bind(_this); - _this.onKeyDown = _this.onKeyDown.bind(_this); - _this.onInput = _this.onInput.bind(_this); - return _this; - } - - _createClass(ValueEditor, [{ - key: 'blur', - value: function blur() { - // a stop would cause a blur as a side-effect. - // but a blur event must trigger a stop as well. - // to fix this, make stop = blur and do the actual stop in the onBlur handler. - this.input.blur(); - } - }, { - key: 'reset', - value: function reset() { - this.input.innerHTML = _lodash2.default.escape(this.props.content); - } - }, { - key: 'render', - value: function render() { - var _this2 = this; - - var className = (0, _classnames2.default)('inline-input', { - 'readonly': this.props.readonly, - 'editable': !this.props.readonly - }, this.props.className); - return _react2.default.createElement('div', { - ref: function ref(input) { - return _this2.input = input; - }, - tabIndex: this.props.readonly ? undefined : 0, - className: className, - contentEditable: this.state.editable || undefined, - onFocus: this.onFocus, - onMouseDown: this.onMouseDown, - onClick: this.onClick, - onBlur: this.onBlur, - onKeyDown: this.onKeyDown, - onInput: this.onInput, - onPaste: this.onPaste, - dangerouslySetInnerHTML: { __html: _lodash2.default.escape(this.props.content) } - }); - } - }, { - key: 'onPaste', - value: function onPaste(e) { - e.preventDefault(); - var content = e.clipboardData.getData('text/plain'); - document.execCommand('insertHTML', false, content); - } - }, { - key: 'onMouseDown', - value: function onMouseDown(e) { - this._mouseDown = true; - window.addEventListener('mouseup', this.onMouseUp); - } - }, { - key: 'onMouseUp', - value: function onMouseUp() { - if (this._mouseDown) { - this._mouseDown = false; - window.removeEventListener('mouseup', this.onMouseUp); - } - } - }, { - key: 'onClick', - value: function onClick(e) { - this.onMouseUp(); - this.onFocus(e); - } - }, { - key: 'onFocus', - value: function onFocus(e) { - var _this3 = this; - - if (this._mouseDown || this._ignore_events || this.state.editable || this.props.readonly) { - return; - } - - // contenteditable in FireFox is more or less broken. - // - we need to blur() and then focus(), otherwise the caret is not shown. - // - blur() + focus() == we need to save the caret position before - // Firefox sometimes just doesn't set a caret position => use caretPositionFromPoint - var sel = window.getSelection(); - var range = void 0; - if (sel.rangeCount > 0) { - range = sel.getRangeAt(0); - } else if (document.caretPositionFromPoint && e.clientX && e.clientY) { - var pos = document.caretPositionFromPoint(e.clientX, e.clientY); - range = document.createRange(); - range.setStart(pos.offsetNode, pos.offset); - } else if (document.caretRangeFromPoint && e.clientX && e.clientY) { - range = document.caretRangeFromPoint(e.clientX, e.clientY); - } else { - range = document.createRange(); - range.selectNodeContents(this.input); - } - - this._ignore_events = true; - this.setState({ editable: true }, function () { - _this3.input.blur(); - _this3.input.focus(); - _this3._ignore_events = false; - range.selectNodeContents(_this3.input); - sel.removeAllRanges(); - sel.addRange(range); - }); - } - }, { - key: 'onBlur', - value: function onBlur(e) { - if (this._ignore_events || this.props.readonly) { - return; - } - window.getSelection().removeAllRanges(); //make sure that selection is cleared on blur - this.setState({ editable: false }); - this.props.onDone(this.input.textContent); - } - }, { - key: 'onKeyDown', - value: function onKeyDown(e) { - e.stopPropagation(); - switch (e.keyCode) { - case _utils.Key.ESC: - e.preventDefault(); - this.reset(); - this.blur(); - break; - case _utils.Key.ENTER: - if (!e.shiftKey) { - e.preventDefault(); - this.blur(); - } - break; - default: - break; - } - this.props.onKeyDown(e); - } - }, { - key: 'onInput', - value: function onInput() { - this.props.onInput(this.input.textContent); - } - }]); - - return ValueEditor; -}(_react.Component); - -ValueEditor.propTypes = { - content: _propTypes2.default.string.isRequired, - readonly: _propTypes2.default.bool, - onDone: _propTypes2.default.func.isRequired, - className: _propTypes2.default.string, - onInput: _propTypes2.default.func, - onKeyDown: _propTypes2.default.func -}; -ValueEditor.defaultProps = { - onInput: function onInput() {}, - onKeyDown: function onKeyDown() {} -}; -exports.default = ValueEditor; - -},{"../../utils":71,"classnames":"classnames","lodash":"lodash","prop-types":"prop-types","react":"react"}],46:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = Button; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require("prop-types"); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _classnames = require("classnames"); - -var _classnames2 = _interopRequireDefault(_classnames); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -Button.propTypes = { - onClick: _propTypes2.default.func.isRequired, - children: _propTypes2.default.node.isRequired, - icon: _propTypes2.default.string, - title: _propTypes2.default.string -}; - -function Button(_ref) { - var onClick = _ref.onClick, - children = _ref.children, - icon = _ref.icon, - disabled = _ref.disabled, - className = _ref.className, - title = _ref.title; - - return _react2.default.createElement( - "div", - { className: (0, _classnames2.default)(className, 'btn btn-default'), - onClick: disabled ? undefined : onClick, - disabled: disabled, - title: title }, - icon && _react2.default.createElement("i", { className: "fa fa-fw " + icon }), - children - ); -} - -},{"classnames":"classnames","prop-types":"prop-types","react":"react"}],47:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = DocsLink; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require("prop-types"); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -DocsLink.propTypes = { - resource: _propTypes2.default.string.isRequired -}; - -function DocsLink(_ref) { - var children = _ref.children, - resource = _ref.resource; - - var url = "http://docs.mitmproxy.org/en/stable/" + resource; - return _react2.default.createElement( - "a", - { target: "_blank", href: url }, - children || _react2.default.createElement("i", { className: "fa fa-question-circle" }) - ); -} - -},{"prop-types":"prop-types","react":"react"}],48:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Divider = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Divider = exports.Divider = function Divider() { - return _react2.default.createElement('hr', { className: 'divider' }); -}; - -var Dropdown = function (_Component) { - _inherits(Dropdown, _Component); - - function Dropdown(props, context) { - _classCallCheck(this, Dropdown); - - var _this = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, props, context)); - - _this.state = { open: false }; - _this.close = _this.close.bind(_this); - _this.open = _this.open.bind(_this); - return _this; - } - - _createClass(Dropdown, [{ - key: 'close', - value: function close() { - this.setState({ open: false }); - document.removeEventListener('click', this.close); - } - }, { - key: 'open', - value: function open(e) { - e.preventDefault(); - if (this.state.open) { - return; - } - this.setState({ open: !this.state.open }); - document.addEventListener('click', this.close); - } - }, { - key: 'render', - value: function render() { - var _props = this.props, - dropup = _props.dropup, - className = _props.className, - btnClass = _props.btnClass, - text = _props.text, - children = _props.children; - - return _react2.default.createElement( - 'div', - { className: (0, _classnames2.default)(dropup ? 'dropup' : 'dropdown', className, { open: this.state.open }) }, - _react2.default.createElement( - 'a', - { href: '#', className: btnClass, - onClick: this.open }, - text - ), - _react2.default.createElement( - 'ul', - { className: 'dropdown-menu', role: 'menu' }, - children.map(function (item, i) { - return _react2.default.createElement( - 'li', - { key: i }, - ' ', - item, - ' ' - ); - }) - ) - ); - } - }]); - - return Dropdown; -}(_react.Component); - -Dropdown.propTypes = { - dropup: _propTypes2.default.bool, - className: _propTypes2.default.string, - btnClass: _propTypes2.default.string.isRequired -}; -Dropdown.defaultProps = { - dropup: false -}; -exports.default = Dropdown; - -},{"classnames":"classnames","prop-types":"prop-types","react":"react"}],49:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = FileChooser; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -FileChooser.propTypes = { - icon: _propTypes2.default.string, - text: _propTypes2.default.string, - className: _propTypes2.default.string, - title: _propTypes2.default.string, - onOpenFile: _propTypes2.default.func.isRequired -}; - -function FileChooser(_ref) { - var icon = _ref.icon, - text = _ref.text, - className = _ref.className, - title = _ref.title, - onOpenFile = _ref.onOpenFile; - - var fileInput = void 0; - return _react2.default.createElement( - 'a', - { href: '#', onClick: function onClick() { - return fileInput.click(); - }, - className: className, - title: title }, - _react2.default.createElement('i', { className: 'fa fa-fw ' + icon }), - text, - _react2.default.createElement('input', { - ref: function ref(_ref2) { - return fileInput = _ref2; - }, - className: 'hidden', - type: 'file', - onChange: function onChange(e) { - e.preventDefault();if (e.target.files.length > 0) onOpenFile(e.target.files[0]);fileInput.value = ""; - } - }) - ); -} - -},{"prop-types":"prop-types","react":"react"}],50:[function(require,module,exports){ +},{"prop-types":"prop-types","react":"react"}],49:[function(require,module,exports){ (function (global){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = HideInStatic; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function HideInStatic(_ref) { - var children = _ref.children; - - return global.MITMWEB_STATIC ? null : [children]; -} +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function HideInStatic(e){var t=e.children;return global.MITMWEB_STATIC?null:[t]}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=HideInStatic;var _react=require("react"),_react2=_interopRequireDefault(_react); }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"react":"react"}],51:[function(require,module,exports){ -'use strict'; +},{"react":"react"}],50:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var n=0;n} [itemHeights] - * - * __result__ have following properties: - * - {number} start - * - {number} end - * - {number} paddingTop - * - {number} paddingBottom - */ -function calcVScroll(opts) { - if (!opts) { - return { start: 0, end: 0, paddingTop: 0, paddingBottom: 0 }; - } - - var itemCount = opts.itemCount, - rowHeight = opts.rowHeight, - viewportTop = opts.viewportTop, - viewportHeight = opts.viewportHeight, - itemHeights = opts.itemHeights; - - var viewportBottom = viewportTop + viewportHeight; - - var start = 0; - var end = 0; - - var paddingTop = 0; - var paddingBottom = 0; - - if (itemHeights) { - - for (var i = 0, pos = 0; i < itemCount; i++) { - var height = itemHeights[i] || rowHeight; - - if (pos <= viewportTop && i % 2 === 0) { - paddingTop = pos; - start = i; - } - - if (pos <= viewportBottom) { - end = i + 1; - } else { - paddingBottom += height; - } - - pos += height; - } - } else { - - // Make sure that we start at an even row so that CSS `:nth-child(even)` is preserved - start = Math.max(0, Math.floor(viewportTop / rowHeight) - 1) & ~1; - end = Math.min(itemCount, start + Math.ceil(viewportHeight / rowHeight) + 2); - - // When a large trunk of elements is removed from the button, start may be far off the viewport. - // To make this issue less severe, limit the top placeholder to the total number of rows. - paddingTop = Math.min(start, itemCount) * rowHeight; - paddingBottom = Math.max(0, itemCount - end) * rowHeight; - } - - return { start: start, end: end, paddingTop: paddingTop, paddingBottom: paddingBottom }; -} +},{}],54:[function(require,module,exports){ +"use strict";function reducer(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:defaultState,e=arguments[1];switch(e.type){case ConnectionState.ESTABLISHED:case ConnectionState.FETCHING:case ConnectionState.ERROR:case ConnectionState.OFFLINE:return{state:e.type,message:e.message};default:return t}}function startFetching(){return{type:ConnectionState.FETCHING}}function connectionEstablished(){return{type:ConnectionState.ESTABLISHED}}function connectionError(t){return{type:ConnectionState.ERROR,message:t}}function setOffline(){return{type:ConnectionState.OFFLINE}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=reducer,exports.startFetching=startFetching,exports.connectionEstablished=connectionEstablished,exports.connectionError=connectionError,exports.setOffline=setOffline;var ConnectionState=exports.ConnectionState={INIT:Symbol("init"),FETCHING:Symbol("fetching"),ESTABLISHED:Symbol("established"),ERROR:Symbol("error"),OFFLINE:Symbol("offline")},defaultState={state:ConnectionState.INIT,message:null}; },{}],55:[function(require,module,exports){ -"use strict"; +"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function reduce(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:defaultState,t=arguments[1];switch(t.type){case TOGGLE_VISIBILITY:return _extends({},e,{visible:!e.visible});case TOGGLE_FILTER:var r=_extends({},e.filters,_defineProperty({},t.filter,!e.filters[t.filter]));return _extends({},e,{filters:r},(0,storeActions.default)(e,storeActions.setFilter(function(e){return r[e.level]})));case ADD:case RECEIVE:return _extends({},e,(0,storeActions.default)(e,storeActions[t.cmd](t.data,function(t){return e.filters[t.level]})));default:return e}}function toggleFilter(e){return{type:TOGGLE_FILTER,filter:e}}function toggleVisibility(){return{type:TOGGLE_VISIBILITY}}function add(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"web",r={id:Math.random().toString(),message:e,level:t};return{type:ADD,cmd:"add",data:r}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.TOGGLE_FILTER=exports.TOGGLE_VISIBILITY=exports.RECEIVE=exports.ADD=void 0;var _extends=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:defaultState,t=arguments[1];switch(t.type){case ADD:case UPDATE:case REMOVE:case RECEIVE:var r=storeActions[t.cmd](t.data,makeFilter(e.filter),makeSort(e.sort)),n=e.selected;if(t.type===REMOVE&&e.selected.includes(t.data))if(e.selected.length>1)n=n.filter(function(e){return e!==t.data});else if(n=[],t.data in e.viewIndex&&e.view.length>1){var o=e.viewIndex[t.data],i=void 0;i=o===e.view.length-1?e.view[o-1]:e.view[o+1],n.push(i.id)}return _extends({},e,{selected:n},(0,storeActions.default)(e,r));case SET_FILTER:return _extends({},e,{filter:t.filter},(0,storeActions.default)(e,storeActions.setFilter(makeFilter(t.filter),makeSort(e.sort))));case SET_HIGHLIGHT:return _extends({},e,{highlight:t.highlight});case SET_SORT:return _extends({},e,{sort:t.sort},(0,storeActions.default)(e,storeActions.setSort(makeSort(t.sort))));case SELECT:return _extends({},e,{selected:t.flowIds});default:return e}}function makeFilter(e){if(e)return _filt2.default.parse(e)}function makeSort(e){var t=e.column,r=e.desc,n=sortKeyFuns[t];if(n)return function(e,t){var o=n(e),i=n(t);return o>i?r?-1:1:o 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; +},{"./connection":54,"./eventLog":55,"./flows":56,"./options":58,"./settings":59,"./ui/index":62,"redux":"redux"}],58:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function reducer(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:defaultState,t=arguments[1];switch(t.type){case RECEIVE:return t.data;case UPDATE:return _extends({},e,t.data);default:return e}}function pureSendUpdate(e,t,r){_utils.fetchApi.put("/options",_defineProperty({},e,t)).then(function(t){200===t.status?r(optionsEditorActions.updateSuccess(e)):t.text().then(function(t){r(optionsEditorActions.updateError(e,t))})})}function update(e,t){return function(r){r(optionsEditorActions.startUpdate(e,t)),sendUpdate(e,t,r)}}function save(){return function(e){return(0,_utils.fetchApi)("/options/save",{method:"POST"})}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.REQUEST_UPDATE=exports.UPDATE=exports.RECEIVE=void 0;var _extends=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:defaultState,t=arguments[1];switch(t.type){case RECEIVE:return t.data;case UPDATE:return _extends({},e,t.data);default:return e}}function update(e){return _utils.fetchApi.put("/settings",e),{type:REQUEST_UPDATE}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.REQUEST_UPDATE=exports.UPDATE=exports.RECEIVE=void 0;var _extends=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:defaultState,e=arguments[1],n=t.modifiedFlow,o=e.content||t.content,r=o&&o.length<=t.maxContentLines;switch(e.type){case START_EDIT:return _extends({},t,{modifiedFlow:e.flow,contentView:"Edit",showFullContent:!0});case UPDATE_EDIT:return _extends({},t,{modifiedFlow:_lodash2.default.merge({},t.modifiedFlow,e.update)});case flowsActions.SELECT:return _extends({},t,{modifiedFlow:!1,displayLarge:!1,contentView:n?"Auto":t.contentView,showFullContent:r});case flowsActions.UPDATE:return e.data.id===t.modifiedFlow.id?_extends({},t,{modifiedFlow:!1,displayLarge:!1,contentView:n?"Auto":t.contentView,showFullContent:!1}):t;case SET_CONTENT_VIEW_DESCRIPTION:return _extends({},t,{viewDescription:e.description});case SET_SHOW_FULL_CONTENT:return _extends({},t,{showFullContent:!0});case SET_TAB:return _extends({},t,{tab:e.tab?e.tab:"request",displayLarge:!1,showFullContent:"Edit"===t.contentView});case SET_CONTENT_VIEW:return _extends({},t,{contentView:e.contentView,showFullContent:"Edit"===e.contentView});case SET_CONTENT:return _extends({},t,{content:e.content,showFullContent:r});case DISPLAY_LARGE:return _extends({},t,{displayLarge:!0});default:return t}}function setContentView(t){return{type:SET_CONTENT_VIEW,contentView:t}}function displayLarge(){return{type:DISPLAY_LARGE}}function selectTab(t){return{type:SET_TAB,tab:t}}function startEdit(t){return{type:START_EDIT,flow:t}}function updateEdit(t){return{type:UPDATE_EDIT,update:t}}function setContentViewDescription(t){return{type:SET_CONTENT_VIEW_DESCRIPTION,description:t}}function setShowFullContent(){return{type:SET_SHOW_FULL_CONTENT}}function setContent(t){return{type:SET_CONTENT,content:t}}function stopEdit(t,e){return flowsActions.update(t,(0,_utils.getDiff)(t,e))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.SET_CONTENT=exports.SET_CONTENT_VIEW_DESCRIPTION=exports.SET_SHOW_FULL_CONTENT=exports.UPLOAD_CONTENT=exports.UPDATE_EDIT=exports.START_EDIT=exports.SET_TAB=exports.DISPLAY_LARGE=exports.SET_CONTENT_VIEW=void 0;var _extends=Object.assign||function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:defaultState,t=arguments[1];switch(t.type){case SET_ACTIVE_MENU:return _extends({},e,{activeMenu:t.activeMenu});case flowsActions.SELECT:if(t.flowIds.length>0&&!e.isFlowSelected)return _extends({},e,{activeMenu:"Flow",isFlowSelected:!0});if(0===t.flowIds.length&&e.isFlowSelected){var r=e.activeMenu;return"Flow"===r&&(r="Start"),_extends({},e,{activeMenu:r,isFlowSelected:!1})}return e;default:return e}}function setActiveMenu(e){return{type:SET_ACTIVE_MENU,activeMenu:e}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.SET_ACTIVE_MENU=void 0;var _extends=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:defaultState,t=arguments[1];switch(t.type){case SET_ACTIVE_MODAL:return _extends({},e,{activeModal:t.activeModal});case HIDE_MODAL:return _extends({},e,{activeModal:void 0});default:return e}}function setActiveModal(e){return{type:SET_ACTIVE_MODAL,activeModal:e}}function hideModal(){return{type:HIDE_MODAL}}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:defaultState,r=arguments[1];switch(r.type){case OPTION_UPDATE_START:return _extends({},e,_defineProperty({},r.option,{isUpdating:!0,value:r.value,error:!1}));case OPTION_UPDATE_SUCCESS:return _extends({},e,_defineProperty({},r.option,void 0));case OPTION_UPDATE_ERROR:var t=e[r.option].value;return"boolean"==typeof t&&(t=!t),_extends({},e,_defineProperty({},r.option,{value:t,isUpdating:!1,error:r.error}));case _modal.HIDE_MODAL:return{};default:return e}}function startUpdate(e,r){return{type:OPTION_UPDATE_START,option:e,value:r}}function updateSuccess(e){return{type:OPTION_UPDATE_SUCCESS,option:e}}function updateError(e,r){return{type:OPTION_UPDATE_ERROR,option:e,error:r}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.OPTION_UPDATE_ERROR=exports.OPTION_UPDATE_SUCCESS=exports.OPTION_UPDATE_START=void 0;var _extends=Object.assign||function(e){for(var r=1;r0&&void 0!==arguments[0]?arguments[0]:defaultState,t=arguments[1],r=e.byId,i=e.list,n=e.listIndex,a=e.view,o=e.viewIndex;switch(t.type){case SET_FILTER:a=(0,_stable2.default)(i.filter(t.filter),t.sort),o={},a.forEach(function(e,t){o[e.id]=t});break;case SET_SORT:a=(0,_stable2.default)([].concat(_toConsumableArray(a)),t.sort),o={},a.forEach(function(e,t){o[e.id]=t});break;case ADD:if(t.item.id in r)break;if(r=_extends({},r,_defineProperty({},t.item.id,t.item)),n=_extends({},n,_defineProperty({},t.item.id,i.length)),i=[].concat(_toConsumableArray(i),[t.item]),t.filter(t.item)){var d=sortedInsert(e,t.item,t.sort);a=d.view,o=d.viewIndex}break;case UPDATE:r=_extends({},r,_defineProperty({},t.item.id,t.item)),(i=[].concat(_toConsumableArray(i)))[n[t.item.id]]=t.item;var s=t.item.id in o,l=t.filter(t.item);if(l&&!s){var u=sortedInsert(e,t.item,t.sort);a=u.view,o=u.viewIndex}else if(!l&&s){var f=removeData(a,o,t.item.id);a=f.data,o=f.dataIndex}else if(l&&s){var v=sortedUpdate(e,t.item,t.sort);a=v.view,o=v.viewIndex}break;case REMOVE:if(!(t.id in r))break;delete(r=_extends({},r))[t.id];var c=removeData(i,n,t.id);if(i=c.data,n=c.dataIndex,t.id in o){var E=removeData(a,o,t.id);a=E.data,o=E.dataIndex}break;case RECEIVE:i=t.list,n={},r={},i.forEach(function(e,t){r[e.id]=e,n[e.id]=t}),a=i.filter(t.filter).sort(t.sort),o={},a.forEach(function(e,t){o[e.id]=t})}return{byId:r,list:i,listIndex:n,view:a,viewIndex:o}}function setFilter(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:defaultFilter,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:defaultSort;return{type:SET_FILTER,filter:e,sort:t}}function setSort(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:defaultSort;return{type:SET_SORT,sort:e}}function add(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:defaultFilter,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:defaultSort;return{type:ADD,item:e,filter:t,sort:r}}function update(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:defaultFilter,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:defaultSort;return{type:UPDATE,item:e,filter:t,sort:r}}function remove(e){return{type:REMOVE,id:e}}function receive(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:defaultFilter,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:defaultSort;return{type:RECEIVE,list:e,filter:t,sort:r}}function sortedInsert(e,t,r){var i=sortedIndex(e.view,t,r),n=[].concat(_toConsumableArray(e.view)),a=_extends({},e.viewIndex);n.splice(i,0,t);for(var o=n.length-1;o>=i;o--)a[n[o].id]=o;return{view:n,viewIndex:a}}function removeData(e,t,r){var i=t[r],n=[].concat(_toConsumableArray(e)),a=_extends({},t);delete a[r],n.splice(i,1);for(var o=n.length-1;o>=i;o--)a[n[o].id]=o;return{data:n,dataIndex:a}}function sortedUpdate(e,t,r){var i=[].concat(_toConsumableArray(e.view)),n=_extends({},e.viewIndex),a=n[t.id];for(i[a]=t;a+10;)i[a]=i[a+1],i[a+1]=t,n[t.id]=a+1,n[i[a].id]=a,++a;for(;a>0&&r(i[a],i[a-1])<0;)i[a]=i[a-1],i[a-1]=t,n[t.id]=a-1,n[i[a].id]=a,--a;return{view:i,viewIndex:n}}function sortedIndex(e,t,r){for(var i=0,n=e.length;i>>1;r(t,e[a])>=0?i=a+1:n=a}return i}function defaultFilter(){return!0}function defaultSort(e,t){return 0}Object.defineProperty(exports,"__esModule",{value:!0}),exports.RECEIVE=exports.REMOVE=exports.UPDATE=exports.ADD=exports.SET_SORT=exports.SET_FILTER=void 0;var _extends=Object.assign||function(e){for(var t=1;tCr&&(Cr=wr,Er=[]),Er.push(e))}function i(t,r,n,s){return null!==r&&function(e){var t=1;for(e.sort(function(e,t){return e.descriptiont.description?1:0});t1?i.slice(0,-1).join(", ")+" or "+i[e.length-1]:i[0],n=t?'"'+function(e){function r(e){return e.charCodeAt(0).toString(16).toUpperCase()}return t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(e){return"\\x0"+r(e)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(e){return"\\x"+r(e)}).replace(/[\u0100-\u0FFF]/g,function(e){return"\\u0"+r(e)}).replace(/[\u1000-\uFFFF]/g,function(e){return"\\u"+r(e)})}()+'"':"end of input","Expected "+r+" but "+n+" found."}(r,n),r,n,s)}function u(){var e,t;return Fr++,e=wr,a()!==Z&&(t=l())!==Z&&a()!==Z?(Ar=e,e=re(t)):(wr=e,e=Z),Fr--,e===Z&&0===Fr&&s(te),e}function c(){var e;return Fr++,se.test(t.charAt(wr))?(e=t.charAt(wr),wr++):(e=Z,0===Fr&&s(ie)),Fr--,e===Z&&0===Fr&&s(ne),e}function o(){var e;return Fr++,ce.test(t.charAt(wr))?(e=t.charAt(wr),wr++):(e=Z,0===Fr&&s(oe)),Fr--,e===Z&&0===Fr&&s(ue),e}function a(){var e,t;for(Fr++,e=[],t=c();t!==Z;)e.push(t),t=c();return Fr--,e===Z&&(t=Z,0===Fr&&s(ae)),e}function l(){var e,r,n,i;return e=wr,(r=p())!==Z&&a()!==Z?(124===t.charCodeAt(wr)?(n=le,wr++):(n=Z,0===Fr&&s(pe)),n!==Z&&a()!==Z&&(i=l())!==Z?(Ar=e,e=r=fe(r,i)):(wr=e,e=Z)):(wr=e,e=Z),e===Z&&(e=p()),e}function p(){var e,r,n,i,u;if(e=wr,(r=f())!==Z&&(n=a())!==Z?(38===t.charCodeAt(wr)?(i=de,wr++):(i=Z,0===Fr&&s(he)),i!==Z&&a()!==Z&&(u=p())!==Z?(Ar=e,e=r=ye(r,u)):(wr=e,e=Z)):(wr=e,e=Z),e===Z){if(e=wr,(r=f())!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=p())!==Z?(Ar=e,e=r=ye(r,i)):(wr=e,e=Z)}else wr=e,e=Z;e===Z&&(e=f())}return e}function f(){var e,r,n;return e=wr,33===t.charCodeAt(wr)?(r=ve,wr++):(r=Z,0===Fr&&s(me)),r!==Z&&a()!==Z&&(n=f())!==Z?(Ar=e,e=r=ge(n)):(wr=e,e=Z),e===Z&&(e=d()),e}function d(){var e,r,n,i;return e=wr,40===t.charCodeAt(wr)?(r=be,wr++):(r=Z,0===Fr&&s(xe)),r!==Z&&a()!==Z&&(n=l())!==Z&&a()!==Z?(41===t.charCodeAt(wr)?(i=Re,wr++):(i=Z,0===Fr&&s(we)),i!==Z?(Ar=e,e=r=Ae(n)):(wr=e,e=Z)):(wr=e,e=Z),e===Z&&(e=h()),e}function h(){var e,r,n,i;if(e=wr,t.substr(wr,4)===qe?(r=qe,wr+=4):(r=Z,0===Fr&&s(Ce)),r!==Z&&(Ar=e,r=Ee()),(e=r)===Z&&(e=wr,t.substr(wr,5)===Fe?(r=Fe,wr+=5):(r=Z,0===Fr&&s(ke)),r!==Z&&(Ar=e,r=_e()),(e=r)===Z&&(e=wr,t.substr(wr,2)===Ue?(r=Ue,wr+=2):(r=Z,0===Fr&&s(Te)),r!==Z&&(Ar=e,r=je()),(e=r)===Z))){if(e=wr,t.substr(wr,2)===Se?(r=Se,wr+=2):(r=Z,0===Fr&&s(Pe)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=Be(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,3)===He?(r=He,wr+=3):(r=Z,0===Fr&&s(Ie)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=We(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,3)===ze?(r=ze,wr+=3):(r=Z,0===Fr&&s(De)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=Ge(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,2)===Je?(r=Je,wr+=2):(r=Z,0===Fr&&s(Ke)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=y())!==Z?(Ar=e,e=r=Le(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,2)===Me?(r=Me,wr+=2):(r=Z,0===Fr&&s(Ne)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=Oe(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,4)===Qe?(r=Qe,wr+=4):(r=Z,0===Fr&&s(Ve)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=Xe(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z&&(e=wr,t.substr(wr,2)===Ye?(r=Ye,wr+=2):(r=Z,0===Fr&&s(Ze)),r!==Z&&(Ar=e,r=$e()),(e=r)===Z)){if(e=wr,t.substr(wr,2)===et?(r=et,wr+=2):(r=Z,0===Fr&&s(tt)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=rt(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,3)===nt?(r=nt,wr+=3):(r=Z,0===Fr&&s(st)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=it(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,3)===ut?(r=ut,wr+=3):(r=Z,0===Fr&&s(ct)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=ot(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z&&(e=wr,t.substr(wr,5)===at?(r=at,wr+=5):(r=Z,0===Fr&&s(lt)),r!==Z&&(Ar=e,r=pt()),(e=r)===Z)){if(e=wr,t.substr(wr,2)===ft?(r=ft,wr+=2):(r=Z,0===Fr&&s(dt)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=ht(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z&&(e=wr,t.substr(wr,7)===yt?(r=yt,wr+=7):(r=Z,0===Fr&&s(vt)),r!==Z&&(Ar=e,r=mt()),(e=r)===Z&&(e=wr,t.substr(wr,2)===gt?(r=gt,wr+=2):(r=Z,0===Fr&&s(bt)),r!==Z&&(Ar=e,r=xt()),(e=r)===Z))){if(e=wr,t.substr(wr,4)===Rt?(r=Rt,wr+=4):(r=Z,0===Fr&&s(wt)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=At(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z&&(e=wr,t.substr(wr,2)===qt?(r=qt,wr+=2):(r=Z,0===Fr&&s(Ct)),r!==Z&&(Ar=e,r=Et()),(e=r)===Z)){if(e=wr,t.substr(wr,2)===Ft?(r=Ft,wr+=2):(r=Z,0===Fr&&s(kt)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=_t(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z&&(e=wr,t.substr(wr,4)===Ut?(r=Ut,wr+=4):(r=Z,0===Fr&&s(Tt)),r!==Z&&(Ar=e,r=jt()),(e=r)===Z)){if(e=wr,t.substr(wr,3)===St?(r=St,wr+=3):(r=Z,0===Fr&&s(Pt)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=Bt(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,3)===Ht?(r=Ht,wr+=3):(r=Z,0===Fr&&s(It)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=Wt(i)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,t.substr(wr,2)===zt?(r=zt,wr+=2):(r=Z,0===Fr&&s(Dt)),r!==Z){if(n=[],(i=c())!==Z)for(;i!==Z;)n.push(i),i=c();else n=Z;n!==Z&&(i=v())!==Z?(Ar=e,e=r=Gt(i)):(wr=e,e=Z)}else wr=e,e=Z;e===Z&&(e=wr,t.substr(wr,10)===Jt?(r=Jt,wr+=10):(r=Z,0===Fr&&s(Kt)),r!==Z&&(Ar=e,r=Lt()),(e=r)===Z&&(e=wr,(r=v())!==Z&&(Ar=e,r=Gt(r)),e=r))}}}}}}}}}}}}}}}return e}function y(){var e,r,n,i;if(Fr++,e=wr,Nt.test(t.charAt(wr))?(r=t.charAt(wr),wr++):(r=Z,0===Fr&&s(Ot)),r===Z&&(r=null),r!==Z){if(n=[],Qt.test(t.charAt(wr))?(i=t.charAt(wr),wr++):(i=Z,0===Fr&&s(Vt)),i!==Z)for(;i!==Z;)n.push(i),Qt.test(t.charAt(wr))?(i=t.charAt(wr),wr++):(i=Z,0===Fr&&s(Vt));else n=Z;n!==Z?(Nt.test(t.charAt(wr))?(i=t.charAt(wr),wr++):(i=Z,0===Fr&&s(Ot)),i===Z&&(i=null),i!==Z?(Ar=e,e=r=Xt(n)):(wr=e,e=Z)):(wr=e,e=Z)}else wr=e,e=Z;return Fr--,e===Z&&(r=Z,0===Fr&&s(Mt)),e}function v(){var e,r,n,i;if(Fr++,e=wr,34===t.charCodeAt(wr)?(r=Zt,wr++):(r=Z,0===Fr&&s($t)),r!==Z){for(n=[],i=m();i!==Z;)n.push(i),i=m();n!==Z?(34===t.charCodeAt(wr)?(i=Zt,wr++):(i=Z,0===Fr&&s($t)),i!==Z?(Ar=e,e=r=er(n)):(wr=e,e=Z)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z){if(e=wr,39===t.charCodeAt(wr)?(r=tr,wr++):(r=Z,0===Fr&&s(rr)),r!==Z){for(n=[],i=g();i!==Z;)n.push(i),i=g();n!==Z?(39===t.charCodeAt(wr)?(i=tr,wr++):(i=Z,0===Fr&&s(rr)),i!==Z?(Ar=e,e=r=er(n)):(wr=e,e=Z)):(wr=e,e=Z)}else wr=e,e=Z;if(e===Z)if(e=wr,r=wr,Fr++,n=o(),Fr--,n===Z?r=void 0:(wr=r,r=Z),r!==Z){if(n=[],(i=b())!==Z)for(;i!==Z;)n.push(i),i=b();else n=Z;n!==Z?(Ar=e,e=r=er(n)):(wr=e,e=Z)}else wr=e,e=Z}return Fr--,e===Z&&(r=Z,0===Fr&&s(Yt)),e}function m(){var e,r,n;return e=wr,r=wr,Fr++,nr.test(t.charAt(wr))?(n=t.charAt(wr),wr++):(n=Z,0===Fr&&s(sr)),Fr--,n===Z?r=void 0:(wr=r,r=Z),r!==Z?(t.length>wr?(n=t.charAt(wr),wr++):(n=Z,0===Fr&&s(ir)),n!==Z?(Ar=e,e=r=ur(n)):(wr=e,e=Z)):(wr=e,e=Z),e===Z&&(e=wr,92===t.charCodeAt(wr)?(r=cr,wr++):(r=Z,0===Fr&&s(or)),r!==Z&&(n=x())!==Z?(Ar=e,e=r=ur(n)):(wr=e,e=Z)),e}function g(){var e,r,n;return e=wr,r=wr,Fr++,ar.test(t.charAt(wr))?(n=t.charAt(wr),wr++):(n=Z,0===Fr&&s(lr)),Fr--,n===Z?r=void 0:(wr=r,r=Z),r!==Z?(t.length>wr?(n=t.charAt(wr),wr++):(n=Z,0===Fr&&s(ir)),n!==Z?(Ar=e,e=r=ur(n)):(wr=e,e=Z)):(wr=e,e=Z),e===Z&&(e=wr,92===t.charCodeAt(wr)?(r=cr,wr++):(r=Z,0===Fr&&s(or)),r!==Z&&(n=x())!==Z?(Ar=e,e=r=ur(n)):(wr=e,e=Z)),e}function b(){var e,r,n;return e=wr,r=wr,Fr++,n=c(),Fr--,n===Z?r=void 0:(wr=r,r=Z),r!==Z?(t.length>wr?(n=t.charAt(wr),wr++):(n=Z,0===Fr&&s(ir)),n!==Z?(Ar=e,e=r=ur(n)):(wr=e,e=Z)):(wr=e,e=Z),e}function x(){var e,r;return pr.test(t.charAt(wr))?(e=t.charAt(wr),wr++):(e=Z,0===Fr&&s(fr)),e===Z&&(e=wr,110===t.charCodeAt(wr)?(r=dr,wr++):(r=Z,0===Fr&&s(hr)),r!==Z&&(Ar=e,r=yr()),(e=r)===Z&&(e=wr,114===t.charCodeAt(wr)?(r=vr,wr++):(r=Z,0===Fr&&s(mr)),r!==Z&&(Ar=e,r=gr()),(e=r)===Z&&(e=wr,116===t.charCodeAt(wr)?(r=br,wr++):(r=Z,0===Fr&&s(xr)),r!==Z&&(Ar=e,r=Rr()),e=r))),e}function R(e,t){function r(){return e.apply(this,arguments)||t.apply(this,arguments)}return r.desc=e.desc+" or "+t.desc,r}function w(e,t){function r(){return e.apply(this,arguments)&&t.apply(this,arguments)}return r.desc=e.desc+" and "+t.desc,r}function A(e){function t(){return!e.apply(this,arguments)}return t.desc="not "+e.desc,t}function q(e){function t(){return e.apply(this,arguments)}return t.desc="("+e.desc+")",t}function C(e){return!0}function E(e){return!1}function F(e){if(e.response)for(var t=kr.ResponseUtils.getContentType(e.response),r=_r.length;r--;)if(_r[r].test(t))return!0;return!1}function k(e){function t(t){return t.response&&t.response.status_code===e}return t.desc="resp. code is "+e,t}function _(e){function t(e){return!0}return e=new RegExp(e,"i"),t.desc="body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10",t}function U(e){function t(e){return!0}return e=new RegExp(e,"i"),t.desc="body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10",t}function T(e){function t(e){return!0}return e=new RegExp(e,"i"),t.desc="body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10",t}function j(e){function t(t){return t.request&&(e.test(t.request.host)||e.test(t.request.pretty_host))}return e=new RegExp(e,"i"),t.desc="domain matches "+e,t}function S(e){function t(t){return!!t.server_conn.address&&e.test(t.server_conn.address[0]+":"+t.server_conn.address[1])}return e=new RegExp(e,"i"),t.desc="destination address matches "+e,t}function P(e){return!!e.error}function B(e){function t(t){return t.request&&kr.RequestUtils.match_header(t.request,e)||t.response&&kr.ResponseUtils.match_header(t.response,e)}return e=new RegExp(e,"i"),t.desc="header matches "+e,t}function H(e){function t(t){return t.request&&kr.RequestUtils.match_header(t.request,e)}return e=new RegExp(e,"i"),t.desc="req. header matches "+e,t}function I(e){function t(t){return t.response&&kr.ResponseUtils.match_header(t.response,e)}return e=new RegExp(e,"i"),t.desc="resp. header matches "+e,t}function W(e){return"http"===e.type}function z(e){function t(t){return t.request&&e.test(t.request.method)}return e=new RegExp(e,"i"),t.desc="method matches "+e,t}function D(e){return e.marked}function G(e){return e.request&&!e.response}function J(e){return!!e.response}function K(e){function t(t){return!!t.client_conn.address&&e.test(t.client_conn.address[0]+":"+t.client_conn.address[1])}return e=new RegExp(e,"i"),t.desc="source address matches "+e,t}function L(e){function t(t){return t.request&&e.test(kr.RequestUtils.getContentType(t.request))||t.response&&e.test(kr.ResponseUtils.getContentType(t.response))}return e=new RegExp(e,"i"),t.desc="content type matches "+e,t}function M(e){return"tcp"===e.type}function N(e){function t(t){return t.request&&e.test(kr.RequestUtils.getContentType(t.request))}return e=new RegExp(e,"i"),t.desc="req. content type matches "+e,t}function O(e){function t(t){return t.response&&e.test(kr.ResponseUtils.getContentType(t.response))}return e=new RegExp(e,"i"),t.desc="resp. content type matches "+e,t}function Q(e){function t(t){return t.request&&e.test(kr.RequestUtils.pretty_url(t.request))}return e=new RegExp(e,"i"),t.desc="url matches "+e,t}function V(e){return"websocket"===e.type}var X,Y=arguments.length>1?arguments[1]:{},Z={},$={start:u},ee=u,te={type:"other",description:"filter expression"},re=function(e){return e},ne={type:"other",description:"whitespace"},se=/^[ \t\n\r]/,ie={type:"class",value:"[ \\t\\n\\r]",description:"[ \\t\\n\\r]"},ue={type:"other",description:"control character"},ce=/^[|&!()~"]/,oe={type:"class",value:'[|&!()~"]',description:'[|&!()~"]'},ae={type:"other",description:"optional whitespace"},le="|",pe={type:"literal",value:"|",description:'"|"'},fe=function(e,t){return R(e,t)},de="&",he={type:"literal",value:"&",description:'"&"'},ye=function(e,t){return w(e,t)},ve="!",me={type:"literal",value:"!",description:'"!"'},ge=function(e){return A(e)},be="(",xe={type:"literal",value:"(",description:'"("'},Re=")",we={type:"literal",value:")",description:'")"'},Ae=function(e){return q(e)},qe="true",Ce={type:"literal",value:"true",description:'"true"'},Ee=function(){return C},Fe="false",ke={type:"literal",value:"false",description:'"false"'},_e=function(){return E},Ue="~a",Te={type:"literal",value:"~a",description:'"~a"'},je=function(){return F},Se="~b",Pe={type:"literal",value:"~b",description:'"~b"'},Be=function(e){return _(e)},He="~bq",Ie={type:"literal",value:"~bq",description:'"~bq"'},We=function(e){return U(e)},ze="~bs",De={type:"literal",value:"~bs",description:'"~bs"'},Ge=function(e){return T(e)},Je="~c",Ke={type:"literal",value:"~c",description:'"~c"'},Le=function(e){return k(e)},Me="~d",Ne={type:"literal",value:"~d",description:'"~d"'},Oe=function(e){return j(e)},Qe="~dst",Ve={type:"literal",value:"~dst",description:'"~dst"'},Xe=function(e){return S(e)},Ye="~e",Ze={type:"literal",value:"~e",description:'"~e"'},$e=function(){return P},et="~h",tt={type:"literal",value:"~h",description:'"~h"'},rt=function(e){return B(e)},nt="~hq",st={type:"literal",value:"~hq",description:'"~hq"'},it=function(e){return H(e)},ut="~hs",ct={type:"literal",value:"~hs",description:'"~hs"'},ot=function(e){return I(e)},at="~http",lt={type:"literal",value:"~http",description:'"~http"'},pt=function(){return W},ft="~m",dt={type:"literal",value:"~m",description:'"~m"'},ht=function(e){return z(e)},yt="~marked",vt={type:"literal",value:"~marked",description:'"~marked"'},mt=function(){return D},gt="~q",bt={type:"literal",value:"~q",description:'"~q"'},xt=function(){return G},Rt="~src",wt={type:"literal",value:"~src",description:'"~src"'},At=function(e){return K(e)},qt="~s",Ct={type:"literal",value:"~s",description:'"~s"'},Et=function(){return J},Ft="~t",kt={type:"literal",value:"~t",description:'"~t"'},_t=function(e){return L(e)},Ut="~tcp",Tt={type:"literal",value:"~tcp",description:'"~tcp"'},jt=function(){return M},St="~tq",Pt={type:"literal",value:"~tq",description:'"~tq"'},Bt=function(e){return N(e)},Ht="~ts",It={type:"literal",value:"~ts",description:'"~ts"'},Wt=function(e){return O(e)},zt="~u",Dt={type:"literal",value:"~u",description:'"~u"'},Gt=function(e){return Q(e)},Jt="~websocket",Kt={type:"literal",value:"~websocket",description:'"~websocket"'},Lt=function(){return V},Mt={type:"other",description:"integer"},Nt=/^['"]/,Ot={type:"class",value:"['\"]",description:"['\"]"},Qt=/^[0-9]/,Vt={type:"class",value:"[0-9]",description:"[0-9]"},Xt=function(e){return parseInt(e.join(""),10)},Yt={type:"other",description:"string"},Zt='"',$t={type:"literal",value:'"',description:'"\\""'},er=function(e){return e.join("")},tr="'",rr={type:"literal",value:"'",description:'"\'"'},nr=/^["\\]/,sr={type:"class",value:'["\\\\]',description:'["\\\\]'},ir={type:"any",description:"any character"},ur=function(e){return e},cr="\\",or={type:"literal",value:"\\",description:'"\\\\"'},ar=/^['\\]/,lr={type:"class",value:"['\\\\]",description:"['\\\\]"},pr=/^['"\\]/,fr={type:"class",value:"['\"\\\\]",description:"['\"\\\\]"},dr="n",hr={type:"literal",value:"n",description:'"n"'},yr=function(){return"\n"},vr="r",mr={type:"literal",value:"r",description:'"r"'},gr=function(){return"\r"},br="t",xr={type:"literal",value:"t",description:'"t"'},Rr=function(){return"\t"},wr=0,Ar=0,qr=[{line:1,column:1,seenCR:!1}],Cr=0,Er=[],Fr=0;if("startRule"in Y){if(!(Y.startRule in $))throw new Error("Can't start parsing from rule \""+Y.startRule+'".');ee=$[Y.startRule]}var kr=require("../flow/utils.js");C.desc="true",E.desc="false";var _r=[new RegExp("text/javascript"),new RegExp("application/x-javascript"),new RegExp("application/javascript"),new RegExp("text/css"),new RegExp("image/.*"),new RegExp("application/x-shockwave-flash")];if(F.desc="is asset",P.desc="has error",W.desc="is an HTTP Flow",D.desc="is marked",G.desc="has no response",J.desc="has response",M.desc="is a TCP Flow",V.desc="is a Websocket Flow",(X=ee())!==Z&&wr===t.length)return X;throw X!==Z&&wr0?"/flows/"+t.flows.selected[0]+"/"+t.ui.flow.tab:"/flows",i&&(l+="?"+i);var n=window.location.pathname;"blank"===n&&(n="/"),window.location.hash.substr(1)!==l&&history.replaceState(void 0,"",n+"#"+l)}function initialize(e){updateStoreFromUrl(e),e.subscribe(function(){return updateUrlFromStore(e)})}Object.defineProperty(exports,"__esModule",{value:!0});var _slicedToArray=function(){function e(e,r){var t=[],o=!0,i=!1,l=void 0;try{for(var n,a=e[Symbol.iterator]();!(o=(n=a.next()).done)&&(t.push(n.value),!r||t.length!==r);o=!0);}catch(e){i=!0,l=e}finally{try{!o&&a.return&&a.return()}finally{if(i)throw l}}return t}return function(r,t){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return e(r,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();exports.updateStoreFromUrl=updateStoreFromUrl,exports.updateUrlFromStore=updateUrlFromStore,exports.default=initialize;var _flows=require("./ducks/flows"),_flow=require("./ducks/ui/flow"),_eventLog=require("./ducks/eventLog"),Query={SEARCH:"s",HIGHLIGHT:"h",SHOW_EVENTLOG:"e"}; -var storeActions = _interopRequireWildcard(_store); +},{"./ducks/eventLog":55,"./ducks/flows":56,"./ducks/ui/flow":60}],70:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function reverseString(e){return String.fromCharCode.apply(String,_lodash2.default.map(e.split(""),function(e){return 65535-e.charCodeAt(0)}))+end}function getCookie(e){var t=document.cookie.match(new RegExp("\\b"+e+"=([^;]*)\\b"));return t?t[1]:void 0}function fetchApi(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.method&&"GET"!==t.method?-1===e.indexOf("?")?e+="?"+xsrf:e+="&"+xsrf:e+=".json",e.startsWith("/")&&(e="."+e),fetch(e,_extends({credentials:"same-origin"},t))}function getDiff(e,t){var r=_extends({},t);for(var o in e)_lodash2.default.isEqual(t[o],e[o])?r[o]=void 0:"[object Object]"===Object.prototype.toString.call(t[o])&&"[object Object]"===Object.prototype.toString.call(e[o])&&(r[o]=getDiff(e[o],t[o]));return r}Object.defineProperty(exports,"__esModule",{value:!0}),exports.pure=exports.formatTimeStamp=exports.formatTimeDelta=exports.formatSize=exports.Key=void 0;var _createClass=function(){function e(e,t){for(var r=0;re);r++);var o;return o=e%Math.pow(1024,r)==0?0:1,(e/Math.pow(1024,r)).toFixed(o)+t[r]},formatTimeDelta=exports.formatTimeDelta=function(e){for(var t=e,r=[1e3,60,60],o=0;Math.abs(t)>=r[o]&&o 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - - switch (action.type) { - - case TOGGLE_VISIBILITY: - return _extends({}, state, { - visible: !state.visible - }); - - case TOGGLE_FILTER: - var filters = _extends({}, state.filters, _defineProperty({}, action.filter, !state.filters[action.filter])); - return _extends({}, state, { - filters: filters - }, (0, storeActions.default)(state, storeActions.setFilter(function (log) { - return filters[log.level]; - }))); - - case ADD: - case RECEIVE: - return _extends({}, state, (0, storeActions.default)(state, storeActions[action.cmd](action.data, function (log) { - return state.filters[log.level]; - }))); - - default: - return state; - } -} - -function toggleFilter(filter) { - return { type: TOGGLE_FILTER, filter: filter }; -} - -function toggleVisibility() { - return { type: TOGGLE_VISIBILITY }; -} - -function add(message) { - var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'web'; - - var data = { - id: Math.random().toString(), - message: message, - level: level - }; - return { - type: ADD, - cmd: "add", - data: data - }; -} - -},{"./utils/store":67}],57:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.REQUEST_ACTION = exports.SET_HIGHLIGHT = exports.SET_SORT = exports.SET_FILTER = exports.SELECT = exports.RECEIVE = exports.REMOVE = exports.UPDATE = exports.ADD = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.default = reduce; -exports.makeFilter = makeFilter; -exports.makeSort = makeSort; -exports.setFilter = setFilter; -exports.setHighlight = setHighlight; -exports.setSort = setSort; -exports.selectRelative = selectRelative; -exports.resume = resume; -exports.resumeAll = resumeAll; -exports.kill = kill; -exports.killAll = killAll; -exports.remove = remove; -exports.duplicate = duplicate; -exports.replay = replay; -exports.revert = revert; -exports.update = update; -exports.uploadContent = uploadContent; -exports.clear = clear; -exports.download = download; -exports.upload = upload; -exports.select = select; - -var _utils = require("../utils"); - -var _store = require("./utils/store"); - -var storeActions = _interopRequireWildcard(_store); - -var _filt = require("../filt/filt"); - -var _filt2 = _interopRequireDefault(_filt); - -var _utils2 = require("../flow/utils"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var ADD = exports.ADD = 'FLOWS_ADD'; -var UPDATE = exports.UPDATE = 'FLOWS_UPDATE'; -var REMOVE = exports.REMOVE = 'FLOWS_REMOVE'; -var RECEIVE = exports.RECEIVE = 'FLOWS_RECEIVE'; -var SELECT = exports.SELECT = 'FLOWS_SELECT'; -var SET_FILTER = exports.SET_FILTER = 'FLOWS_SET_FILTER'; -var SET_SORT = exports.SET_SORT = 'FLOWS_SET_SORT'; -var SET_HIGHLIGHT = exports.SET_HIGHLIGHT = 'FLOWS_SET_HIGHLIGHT'; -var REQUEST_ACTION = exports.REQUEST_ACTION = 'FLOWS_REQUEST_ACTION'; - -var defaultState = _extends({ - highlight: null, - filter: null, - sort: { column: null, desc: false }, - selected: [] -}, (0, storeActions.default)(undefined, {})); - -function reduce() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - - switch (action.type) { - - case ADD: - case UPDATE: - case REMOVE: - case RECEIVE: - var storeAction = storeActions[action.cmd](action.data, makeFilter(state.filter), makeSort(state.sort)); - - var selected = state.selected; - if (action.type === REMOVE && state.selected.includes(action.data)) { - if (state.selected.length > 1) { - selected = selected.filter(function (x) { - return x !== action.data; - }); - } else { - selected = []; - if (action.data in state.viewIndex && state.view.length > 1) { - var currentIndex = state.viewIndex[action.data], - nextSelection = void 0; - if (currentIndex === state.view.length - 1) { - // last row - nextSelection = state.view[currentIndex - 1]; - } else { - nextSelection = state.view[currentIndex + 1]; - } - selected.push(nextSelection.id); - } - } - } - - return _extends({}, state, { - selected: selected - }, (0, storeActions.default)(state, storeAction)); - - case SET_FILTER: - return _extends({}, state, { - filter: action.filter - }, (0, storeActions.default)(state, storeActions.setFilter(makeFilter(action.filter), makeSort(state.sort)))); - - case SET_HIGHLIGHT: - return _extends({}, state, { - highlight: action.highlight - }); - - case SET_SORT: - return _extends({}, state, { - sort: action.sort - }, (0, storeActions.default)(state, storeActions.setSort(makeSort(action.sort)))); - - case SELECT: - return _extends({}, state, { - selected: action.flowIds - }); - - default: - return state; - } -} - -var sortKeyFuns = { - - TLSColumn: function TLSColumn(flow) { - return flow.request.scheme; - }, - - PathColumn: function PathColumn(flow) { - return _utils2.RequestUtils.pretty_url(flow.request); - }, - - MethodColumn: function MethodColumn(flow) { - return flow.request.method; - }, - - StatusColumn: function StatusColumn(flow) { - return flow.response && flow.response.status_code; - }, - - TimeColumn: function TimeColumn(flow) { - return flow.response && flow.response.timestamp_end - flow.request.timestamp_start; - }, - - SizeColumn: function SizeColumn(flow) { - var total = flow.request.contentLength; - if (flow.response) { - total += flow.response.contentLength || 0; - } - return total; - } -}; - -function makeFilter(filter) { - if (!filter) { - return; - } - return _filt2.default.parse(filter); -} - -function makeSort(_ref) { - var column = _ref.column, - desc = _ref.desc; - - var sortKeyFun = sortKeyFuns[column]; - if (!sortKeyFun) { - return; - } - return function (a, b) { - var ka = sortKeyFun(a); - var kb = sortKeyFun(b); - if (ka > kb) { - return desc ? -1 : 1; - } - if (ka < kb) { - return desc ? 1 : -1; - } - return 0; - }; -} - -function setFilter(filter) { - return { type: SET_FILTER, filter: filter }; -} - -function setHighlight(highlight) { - return { type: SET_HIGHLIGHT, highlight: highlight }; -} - -function setSort(column, desc) { - return { type: SET_SORT, sort: { column: column, desc: desc } }; -} - -function selectRelative(flows, shift) { - var currentSelectionIndex = flows.viewIndex[flows.selected[0]]; - var minIndex = 0; - var maxIndex = flows.view.length - 1; - var newIndex = void 0; - if (currentSelectionIndex === undefined) { - newIndex = shift < 0 ? minIndex : maxIndex; - } else { - newIndex = currentSelectionIndex + shift; - newIndex = window.Math.max(newIndex, minIndex); - newIndex = window.Math.min(newIndex, maxIndex); - } - var flow = flows.view[newIndex]; - return select(flow ? flow.id : undefined); -} - -function resume(flow) { - return function (dispatch) { - return (0, _utils.fetchApi)("/flows/" + flow.id + "/resume", { method: 'POST' }); - }; -} - -function resumeAll() { - return function (dispatch) { - return (0, _utils.fetchApi)('/flows/resume', { method: 'POST' }); - }; -} - -function kill(flow) { - return function (dispatch) { - return (0, _utils.fetchApi)("/flows/" + flow.id + "/kill", { method: 'POST' }); - }; -} - -function killAll() { - return function (dispatch) { - return (0, _utils.fetchApi)('/flows/kill', { method: 'POST' }); - }; -} - -function remove(flow) { - return function (dispatch) { - return (0, _utils.fetchApi)("/flows/" + flow.id, { method: 'DELETE' }); - }; -} - -function duplicate(flow) { - return function (dispatch) { - return (0, _utils.fetchApi)("/flows/" + flow.id + "/duplicate", { method: 'POST' }); - }; -} - -function replay(flow) { - return function (dispatch) { - return (0, _utils.fetchApi)("/flows/" + flow.id + "/replay", { method: 'POST' }); - }; -} - -function revert(flow) { - return function (dispatch) { - return (0, _utils.fetchApi)("/flows/" + flow.id + "/revert", { method: 'POST' }); - }; -} - -function update(flow, data) { - return function (dispatch) { - return _utils.fetchApi.put("/flows/" + flow.id, data); - }; -} - -function uploadContent(flow, file, type) { - var body = new FormData(); - file = new window.Blob([file], { type: 'plain/text' }); - body.append('file', file); - return function (dispatch) { - return (0, _utils.fetchApi)("/flows/" + flow.id + "/" + type + "/content.data", { method: 'POST', body: body }); - }; -} - -function clear() { - return function (dispatch) { - return (0, _utils.fetchApi)('/clear', { method: 'POST' }); - }; -} - -function download() { - window.location = '/flows/dump'; - return { type: REQUEST_ACTION }; -} - -function upload(file) { - var body = new FormData(); - body.append('file', file); - return function (dispatch) { - return (0, _utils.fetchApi)('/flows/dump', { method: 'POST', body: body }); - }; -} - -function select(id) { - return { - type: SELECT, - flowIds: id ? [id] : [] - }; -} - -},{"../filt/filt":68,"../flow/utils":69,"../utils":71,"./utils/store":67}],58:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _redux = require("redux"); - -var _eventLog = require("./eventLog"); - -var _eventLog2 = _interopRequireDefault(_eventLog); - -var _flows = require("./flows"); - -var _flows2 = _interopRequireDefault(_flows); - -var _settings = require("./settings"); - -var _settings2 = _interopRequireDefault(_settings); - -var _index = require("./ui/index"); - -var _index2 = _interopRequireDefault(_index); - -var _connection = require("./connection"); - -var _connection2 = _interopRequireDefault(_connection); - -var _options = require("./options"); - -var _options2 = _interopRequireDefault(_options); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = (0, _redux.combineReducers)({ - eventLog: _eventLog2.default, - flows: _flows2.default, - settings: _settings2.default, - connection: _connection2.default, - ui: _index2.default, - options: _options2.default -}); - -},{"./connection":55,"./eventLog":56,"./flows":57,"./options":59,"./settings":60,"./ui/index":63,"redux":"redux"}],59:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.REQUEST_UPDATE = exports.UPDATE = exports.RECEIVE = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.default = reducer; -exports.pureSendUpdate = pureSendUpdate; -exports.update = update; -exports.save = save; - -var _utils = require("../utils"); - -var _optionsEditor = require("./ui/optionsEditor"); - -var optionsEditorActions = _interopRequireWildcard(_optionsEditor); - -var _lodash = require("lodash"); - -var _lodash2 = _interopRequireDefault(_lodash); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var RECEIVE = exports.RECEIVE = 'OPTIONS_RECEIVE'; -var UPDATE = exports.UPDATE = 'OPTIONS_UPDATE'; -var REQUEST_UPDATE = exports.REQUEST_UPDATE = 'REQUEST_UPDATE'; - -var defaultState = {}; - -function reducer() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - - switch (action.type) { - - case RECEIVE: - return action.data; - - case UPDATE: - return _extends({}, state, action.data); - - default: - return state; - } -} - -function pureSendUpdate(option, value, dispatch) { - _utils.fetchApi.put('/options', _defineProperty({}, option, value)).then(function (response) { - if (response.status === 200) { - dispatch(optionsEditorActions.updateSuccess(option)); - } else { - response.text().then(function (error) { - dispatch(optionsEditorActions.updateError(option, error)); - }); - } - }); -} -var sendUpdate = _lodash2.default.throttle(pureSendUpdate, 700, { leading: true, trailing: true }); - -function update(option, value) { - return function (dispatch) { - dispatch(optionsEditorActions.startUpdate(option, value)); - sendUpdate(option, value, dispatch); - }; -} - -function save() { - return function (dispatch) { - return (0, _utils.fetchApi)('/options/save', { method: 'POST' }); - }; -} - -},{"../utils":71,"./ui/optionsEditor":66,"lodash":"lodash"}],60:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.REQUEST_UPDATE = exports.UPDATE = exports.RECEIVE = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.default = reducer; -exports.update = update; - -var _utils = require('../utils'); - -var RECEIVE = exports.RECEIVE = 'SETTINGS_RECEIVE'; -var UPDATE = exports.UPDATE = 'SETTINGS_UPDATE'; -var REQUEST_UPDATE = exports.REQUEST_UPDATE = 'REQUEST_UPDATE'; - -var defaultState = {}; - -function reducer() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - - switch (action.type) { - - case RECEIVE: - return action.data; - - case UPDATE: - return _extends({}, state, action.data); - - default: - return state; - } -} - -function update(settings) { - _utils.fetchApi.put('/settings', settings); - return { type: REQUEST_UPDATE }; -} - -},{"../utils":71}],61:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SET_CONTENT = exports.SET_CONTENT_VIEW_DESCRIPTION = exports.SET_SHOW_FULL_CONTENT = exports.UPLOAD_CONTENT = exports.UPDATE_EDIT = exports.START_EDIT = exports.SET_TAB = exports.DISPLAY_LARGE = exports.SET_CONTENT_VIEW = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.default = reducer; -exports.setContentView = setContentView; -exports.displayLarge = displayLarge; -exports.selectTab = selectTab; -exports.startEdit = startEdit; -exports.updateEdit = updateEdit; -exports.setContentViewDescription = setContentViewDescription; -exports.setShowFullContent = setShowFullContent; -exports.setContent = setContent; -exports.stopEdit = stopEdit; - -var _flows = require('../flows'); - -var flowsActions = _interopRequireWildcard(_flows); - -var _utils = require('../../utils'); - -var _lodash = require('lodash'); - -var _lodash2 = _interopRequireDefault(_lodash); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var SET_CONTENT_VIEW = exports.SET_CONTENT_VIEW = 'UI_FLOWVIEW_SET_CONTENT_VIEW', - DISPLAY_LARGE = exports.DISPLAY_LARGE = 'UI_FLOWVIEW_DISPLAY_LARGE', - SET_TAB = exports.SET_TAB = "UI_FLOWVIEW_SET_TAB", - START_EDIT = exports.START_EDIT = 'UI_FLOWVIEW_START_EDIT', - UPDATE_EDIT = exports.UPDATE_EDIT = 'UI_FLOWVIEW_UPDATE_EDIT', - UPLOAD_CONTENT = exports.UPLOAD_CONTENT = 'UI_FLOWVIEW_UPLOAD_CONTENT', - SET_SHOW_FULL_CONTENT = exports.SET_SHOW_FULL_CONTENT = 'UI_SET_SHOW_FULL_CONTENT', - SET_CONTENT_VIEW_DESCRIPTION = exports.SET_CONTENT_VIEW_DESCRIPTION = "UI_SET_CONTENT_VIEW_DESCRIPTION", - SET_CONTENT = exports.SET_CONTENT = "UI_SET_CONTENT"; - -var defaultState = { - displayLarge: false, - viewDescription: '', - showFullContent: false, - modifiedFlow: false, - contentView: 'Auto', - tab: 'request', - content: [], - maxContentLines: 80 -}; - -function reducer() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - - var wasInEditMode = state.modifiedFlow; - - var content = action.content || state.content; - var isFullContentShown = content && content.length <= state.maxContentLines; - - switch (action.type) { - - case START_EDIT: - return _extends({}, state, { - modifiedFlow: action.flow, - contentView: 'Edit', - showFullContent: true - }); - - case UPDATE_EDIT: - return _extends({}, state, { - modifiedFlow: _lodash2.default.merge({}, state.modifiedFlow, action.update) - }); - - case flowsActions.SELECT: - return _extends({}, state, { - modifiedFlow: false, - displayLarge: false, - contentView: wasInEditMode ? 'Auto' : state.contentView, - showFullContent: isFullContentShown - }); - - case flowsActions.UPDATE: - // There is no explicit "stop edit" event. - // We stop editing when we receive an update for - // the currently edited flow from the server - if (action.data.id === state.modifiedFlow.id) { - return _extends({}, state, { - modifiedFlow: false, - displayLarge: false, - contentView: wasInEditMode ? 'Auto' : state.contentView, - showFullContent: false - }); - } else { - return state; - } - - case SET_CONTENT_VIEW_DESCRIPTION: - return _extends({}, state, { - viewDescription: action.description - }); - - case SET_SHOW_FULL_CONTENT: - return _extends({}, state, { - showFullContent: true - }); - - case SET_TAB: - return _extends({}, state, { - tab: action.tab ? action.tab : 'request', - displayLarge: false, - showFullContent: state.contentView === 'Edit' - }); - - case SET_CONTENT_VIEW: - return _extends({}, state, { - contentView: action.contentView, - showFullContent: action.contentView === 'Edit' - }); - - case SET_CONTENT: - return _extends({}, state, { - content: action.content, - showFullContent: isFullContentShown - }); - - case DISPLAY_LARGE: - return _extends({}, state, { - displayLarge: true - }); - default: - return state; - } -} - -function setContentView(contentView) { - return { type: SET_CONTENT_VIEW, contentView: contentView }; -} - -function displayLarge() { - return { type: DISPLAY_LARGE }; -} - -function selectTab(tab) { - return { type: SET_TAB, tab: tab }; -} - -function startEdit(flow) { - return { type: START_EDIT, flow: flow }; -} - -function updateEdit(update) { - return { type: UPDATE_EDIT, update: update }; -} - -function setContentViewDescription(description) { - return { type: SET_CONTENT_VIEW_DESCRIPTION, description: description }; -} - -function setShowFullContent() { - return { type: SET_SHOW_FULL_CONTENT }; -} - -function setContent(content) { - return { type: SET_CONTENT, content: content }; -} - -function stopEdit(flow, modifiedFlow) { - return flowsActions.update(flow, (0, _utils.getDiff)(flow, modifiedFlow)); -} - -},{"../../utils":71,"../flows":57,"lodash":"lodash"}],62:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SET_ACTIVE_MENU = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.default = reducer; -exports.setActiveMenu = setActiveMenu; - -var _flows = require('../flows'); - -var flowsActions = _interopRequireWildcard(_flows); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var SET_ACTIVE_MENU = exports.SET_ACTIVE_MENU = 'UI_SET_ACTIVE_MENU'; - -var defaultState = { - activeMenu: 'Start', - isFlowSelected: false -}; - -function reducer() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - - switch (action.type) { - - case SET_ACTIVE_MENU: - return _extends({}, state, { - activeMenu: action.activeMenu - }); - - case flowsActions.SELECT: - // First Select - if (action.flowIds.length > 0 && !state.isFlowSelected) { - return _extends({}, state, { - activeMenu: 'Flow', - isFlowSelected: true - }); - } - - // Deselect - if (action.flowIds.length === 0 && state.isFlowSelected) { - var activeMenu = state.activeMenu; - if (activeMenu === 'Flow') { - activeMenu = 'Start'; - } - return _extends({}, state, { - activeMenu: activeMenu, - isFlowSelected: false - }); - } - return state; - default: - return state; - } -} - -function setActiveMenu(activeMenu) { - return { type: SET_ACTIVE_MENU, activeMenu: activeMenu }; -} - -},{"../flows":57}],63:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _redux = require('redux'); - -var _flow = require('./flow'); - -var _flow2 = _interopRequireDefault(_flow); - -var _header = require('./header'); - -var _header2 = _interopRequireDefault(_header); - -var _modal = require('./modal'); - -var _modal2 = _interopRequireDefault(_modal); - -var _optionsEditor = require('./optionsEditor'); - -var _optionsEditor2 = _interopRequireDefault(_optionsEditor); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// TODO: Just move ducks/ui/* into ducks/? -exports.default = (0, _redux.combineReducers)({ - flow: _flow2.default, - header: _header2.default, - modal: _modal2.default, - optionsEditor: _optionsEditor2.default -}); - -},{"./flow":61,"./header":62,"./modal":65,"./optionsEditor":66,"redux":"redux"}],64:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.onKeyDown = onKeyDown; - -var _utils = require("../../utils"); - -var _flow = require("./flow"); - -var _flows = require("../flows"); - -var flowsActions = _interopRequireWildcard(_flows); - -var _modal = require("./modal"); - -var modalActions = _interopRequireWildcard(_modal); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function onKeyDown(e) { - //console.debug("onKeyDown", e) - if (e.ctrlKey || e.metaKey) { - return function () {}; - } - var key = e.keyCode, - shiftKey = e.shiftKey; - e.preventDefault(); - return function (dispatch, getState) { - - var flows = getState().flows, - flow = flows.byId[getState().flows.selected[0]]; - - switch (key) { - case _utils.Key.K: - case _utils.Key.UP: - dispatch(flowsActions.selectRelative(flows, -1)); - break; - - case _utils.Key.J: - case _utils.Key.DOWN: - dispatch(flowsActions.selectRelative(flows, +1)); - break; - - case _utils.Key.SPACE: - case _utils.Key.PAGE_DOWN: - dispatch(flowsActions.selectRelative(flows, +10)); - break; - - case _utils.Key.PAGE_UP: - dispatch(flowsActions.selectRelative(flows, -10)); - break; - - case _utils.Key.END: - dispatch(flowsActions.selectRelative(flows, +1e10)); - break; - - case _utils.Key.HOME: - dispatch(flowsActions.selectRelative(flows, -1e10)); - break; - - case _utils.Key.ESC: - if (getState().ui.modal.activeModal) { - dispatch(modalActions.hideModal()); - } else { - dispatch(flowsActions.select(null)); - } - break; - - case _utils.Key.LEFT: - { - if (!flow) break; - var tabs = ['request', 'response', 'error'].filter(function (k) { - return flow[k]; - }).concat(['details']), - currentTab = getState().ui.flow.tab, - nextTab = tabs[(tabs.indexOf(currentTab) - 1 + tabs.length) % tabs.length]; - dispatch((0, _flow.selectTab)(nextTab)); - break; - } - - case _utils.Key.TAB: - case _utils.Key.RIGHT: - { - if (!flow) break; - var _tabs = ['request', 'response', 'error'].filter(function (k) { - return flow[k]; - }).concat(['details']), - _currentTab = getState().ui.flow.tab, - _nextTab = _tabs[(_tabs.indexOf(_currentTab) + 1) % _tabs.length]; - dispatch((0, _flow.selectTab)(_nextTab)); - break; - } - - case _utils.Key.D: - { - if (!flow) { - return; - } - if (shiftKey) { - dispatch(flowsActions.duplicate(flow)); - } else { - dispatch(flowsActions.remove(flow)); - } - break; - } - - case _utils.Key.A: - { - if (shiftKey) { - dispatch(flowsActions.resumeAll()); - } else if (flow && flow.intercepted) { - dispatch(flowsActions.resume(flow)); - } - break; - } - - case _utils.Key.R: - { - if (!shiftKey && flow) { - dispatch(flowsActions.replay(flow)); - } - break; - } - - case _utils.Key.V: - { - if (!shiftKey && flow && flow.modified) { - dispatch(flowsActions.revert(flow)); - } - break; - } - - case _utils.Key.X: - { - if (shiftKey) { - dispatch(flowsActions.killAll()); - } else if (flow && flow.intercepted) { - dispatch(flowsActions.kill(flow)); - } - break; - } - - case _utils.Key.Z: - { - if (!shiftKey) { - dispatch(flowsActions.clear()); - } - break; - } - - default: - return; - } - }; -} - -},{"../../utils":71,"../flows":57,"./flow":61,"./modal":65}],65:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.default = reducer; -exports.setActiveModal = setActiveModal; -exports.hideModal = hideModal; -var HIDE_MODAL = exports.HIDE_MODAL = 'UI_HIDE_MODAL'; -var SET_ACTIVE_MODAL = exports.SET_ACTIVE_MODAL = 'UI_SET_ACTIVE_MODAL'; - -var defaultState = { - activeModal: undefined -}; - -function reducer() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - - switch (action.type) { - - case SET_ACTIVE_MODAL: - return _extends({}, state, { - activeModal: action.activeModal - }); - - case HIDE_MODAL: - return _extends({}, state, { - activeModal: undefined - }); - default: - return state; - } -} - -function setActiveModal(activeModal) { - return { type: SET_ACTIVE_MODAL, activeModal: activeModal }; -} - -function hideModal() { - return { type: HIDE_MODAL }; -} - -},{}],66:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.OPTION_UPDATE_ERROR = exports.OPTION_UPDATE_SUCCESS = exports.OPTION_UPDATE_START = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.default = reducer; -exports.startUpdate = startUpdate; -exports.updateSuccess = updateSuccess; -exports.updateError = updateError; - -var _modal = require('./modal'); - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var OPTION_UPDATE_START = exports.OPTION_UPDATE_START = 'UI_OPTION_UPDATE_START'; -var OPTION_UPDATE_SUCCESS = exports.OPTION_UPDATE_SUCCESS = 'UI_OPTION_UPDATE_SUCCESS'; -var OPTION_UPDATE_ERROR = exports.OPTION_UPDATE_ERROR = 'UI_OPTION_UPDATE_ERROR'; - -var defaultState = { - /* optionName -> {isUpdating, value (client-side), error} */ -}; - -function reducer() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - - switch (action.type) { - case OPTION_UPDATE_START: - return _extends({}, state, _defineProperty({}, action.option, { - isUpdating: true, - value: action.value, - error: false - })); - - case OPTION_UPDATE_SUCCESS: - return _extends({}, state, _defineProperty({}, action.option, undefined)); - - case OPTION_UPDATE_ERROR: - var val = state[action.option].value; - if (typeof val === "boolean") { - // If a boolean option errs, reset it to its previous state to be less confusing. - // Example: Start mitmweb, check "add_upstream_certs_to_client_chain". - val = !val; - } - return _extends({}, state, _defineProperty({}, action.option, { - value: val, - isUpdating: false, - error: action.error - })); - - case _modal.HIDE_MODAL: - return {}; - - default: - return state; - } -} - -function startUpdate(option, value) { - return { - type: OPTION_UPDATE_START, - option: option, - value: value - }; -} -function updateSuccess(option) { - return { - type: OPTION_UPDATE_SUCCESS, - option: option - }; -} - -function updateError(option, error) { - return { - type: OPTION_UPDATE_ERROR, - option: option, - error: error - }; -} - -},{"./modal":65}],67:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.RECEIVE = exports.REMOVE = exports.UPDATE = exports.ADD = exports.SET_SORT = exports.SET_FILTER = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.default = reduce; -exports.setFilter = setFilter; -exports.setSort = setSort; -exports.add = add; -exports.update = update; -exports.remove = remove; -exports.receive = receive; - -var _stable = require('stable'); - -var _stable2 = _interopRequireDefault(_stable); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } - -var SET_FILTER = exports.SET_FILTER = 'LIST_SET_FILTER'; -var SET_SORT = exports.SET_SORT = 'LIST_SET_SORT'; -var ADD = exports.ADD = 'LIST_ADD'; -var UPDATE = exports.UPDATE = 'LIST_UPDATE'; -var REMOVE = exports.REMOVE = 'LIST_REMOVE'; -var RECEIVE = exports.RECEIVE = 'LIST_RECEIVE'; - -var defaultState = { - byId: {}, - list: [], - listIndex: {}, - view: [], - viewIndex: {} - - /** - * The store reducer can be used as a mixin to another reducer that always returns a - * new { byId, list, listIndex, view, viewIndex } object. The reducer using the store - * usually has to map its action to the matching store action and then call the mixin with that. - * - * Example Usage: - * - * import reduceStore, * as storeActions from "./utils/store" - * - * case EVENTLOG_ADD: - * return { - * ...state, - * ...reduceStore(state, storeActions.add(action.data)) - * } - * - */ -};function reduce() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState; - var action = arguments[1]; - var byId = state.byId, - list = state.list, - listIndex = state.listIndex, - view = state.view, - viewIndex = state.viewIndex; - - - switch (action.type) { - case SET_FILTER: - view = (0, _stable2.default)(list.filter(action.filter), action.sort); - viewIndex = {}; - view.forEach(function (item, index) { - viewIndex[item.id] = index; - }); - break; - - case SET_SORT: - view = (0, _stable2.default)([].concat(_toConsumableArray(view)), action.sort); - viewIndex = {}; - view.forEach(function (item, index) { - viewIndex[item.id] = index; - }); - break; - - case ADD: - if (action.item.id in byId) { - // we already had that. - break; - } - byId = _extends({}, byId, _defineProperty({}, action.item.id, action.item)); - listIndex = _extends({}, listIndex, _defineProperty({}, action.item.id, list.length)); - list = [].concat(_toConsumableArray(list), [action.item]); - if (action.filter(action.item)) { - var _sortedInsert = sortedInsert(state, action.item, action.sort); - - view = _sortedInsert.view; - viewIndex = _sortedInsert.viewIndex; - } - break; - - case UPDATE: - byId = _extends({}, byId, _defineProperty({}, action.item.id, action.item)); - list = [].concat(_toConsumableArray(list)); - list[listIndex[action.item.id]] = action.item; - - var hasOldItem = action.item.id in viewIndex; - var hasNewItem = action.filter(action.item); - if (hasNewItem && !hasOldItem) { - var _sortedInsert2 = sortedInsert(state, action.item, action.sort); - - view = _sortedInsert2.view; - viewIndex = _sortedInsert2.viewIndex; - } else if (!hasNewItem && hasOldItem) { - var _removeData = removeData(view, viewIndex, action.item.id); - - view = _removeData.data; - viewIndex = _removeData.dataIndex; - } else if (hasNewItem && hasOldItem) { - var _sortedUpdate = sortedUpdate(state, action.item, action.sort); - - view = _sortedUpdate.view; - viewIndex = _sortedUpdate.viewIndex; - } - break; - - case REMOVE: - if (!(action.id in byId)) { - break; - } - byId = _extends({}, byId); - delete byId[action.id]; - - var _removeData2 = removeData(list, listIndex, action.id); - - list = _removeData2.data; - listIndex = _removeData2.dataIndex; - - - if (action.id in viewIndex) { - var _removeData3 = removeData(view, viewIndex, action.id); - - view = _removeData3.data; - viewIndex = _removeData3.dataIndex; - } - break; - - case RECEIVE: - list = action.list; - listIndex = {}; - byId = {}; - list.forEach(function (item, i) { - byId[item.id] = item; - listIndex[item.id] = i; - }); - view = list.filter(action.filter).sort(action.sort); - viewIndex = {}; - view.forEach(function (item, index) { - viewIndex[item.id] = index; - }); - break; - } - return { byId: byId, list: list, listIndex: listIndex, view: view, viewIndex: viewIndex }; -} - -function setFilter() { - var filter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultFilter; - var sort = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSort; - - return { type: SET_FILTER, filter: filter, sort: sort }; -} - -function setSort() { - var sort = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultSort; - - return { type: SET_SORT, sort: sort }; -} - -function add(item) { - var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFilter; - var sort = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultSort; - - return { type: ADD, item: item, filter: filter, sort: sort }; -} - -function update(item) { - var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFilter; - var sort = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultSort; - - return { type: UPDATE, item: item, filter: filter, sort: sort }; -} - -function remove(id) { - return { type: REMOVE, id: id }; -} - -function receive(list) { - var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFilter; - var sort = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultSort; - - return { type: RECEIVE, list: list, filter: filter, sort: sort }; -} - -function sortedInsert(state, item, sort) { - var index = sortedIndex(state.view, item, sort); - var view = [].concat(_toConsumableArray(state.view)); - var viewIndex = _extends({}, state.viewIndex); - - view.splice(index, 0, item); - for (var i = view.length - 1; i >= index; i--) { - viewIndex[view[i].id] = i; - } - - return { view: view, viewIndex: viewIndex }; -} - -function removeData(currentData, currentDataIndex, id) { - var index = currentDataIndex[id]; - var data = [].concat(_toConsumableArray(currentData)); - var dataIndex = _extends({}, currentDataIndex); - delete dataIndex[id]; - - data.splice(index, 1); - for (var i = data.length - 1; i >= index; i--) { - dataIndex[data[i].id] = i; - } - - return { data: data, dataIndex: dataIndex }; -} - -function sortedUpdate(state, item, sort) { - var view = [].concat(_toConsumableArray(state.view)); - var viewIndex = _extends({}, state.viewIndex); - var index = viewIndex[item.id]; - view[index] = item; - while (index + 1 < view.length && sort(view[index], view[index + 1]) > 0) { - view[index] = view[index + 1]; - view[index + 1] = item; - viewIndex[item.id] = index + 1; - viewIndex[view[index].id] = index; - ++index; - } - while (index > 0 && sort(view[index], view[index - 1]) < 0) { - view[index] = view[index - 1]; - view[index - 1] = item; - viewIndex[item.id] = index - 1; - viewIndex[view[index].id] = index; - --index; - } - return { view: view, viewIndex: viewIndex }; -} - -function sortedIndex(list, item, sort) { - var low = 0; - var high = list.length; - - while (low < high) { - var middle = low + high >>> 1; - if (sort(item, list[middle]) >= 0) { - low = middle + 1; - } else { - high = middle; - } - } - - return low; -} - -function defaultFilter() { - return true; -} - -function defaultSort(a, b) { - return 0; -} - -},{"stable":"stable"}],68:[function(require,module,exports){ -"use strict"; - -module.exports = function () { - "use strict"; - - /* - * Generated by PEG.js 0.9.0. - * - * http://pegjs.org/ - */ - - function peg$subclass(child, parent) { - function ctor() { - this.constructor = child; - } - ctor.prototype = parent.prototype; - child.prototype = new ctor(); - } - - function peg$SyntaxError(message, expected, found, location) { - this.message = message; - this.expected = expected; - this.found = found; - this.location = location; - this.name = "SyntaxError"; - - if (typeof Error.captureStackTrace === "function") { - Error.captureStackTrace(this, peg$SyntaxError); - } - } - - peg$subclass(peg$SyntaxError, Error); - - function peg$parse(input) { - var options = arguments.length > 1 ? arguments[1] : {}, - parser = this, - peg$FAILED = {}, - peg$startRuleFunctions = { start: peg$parsestart }, - peg$startRuleFunction = peg$parsestart, - peg$c0 = { type: "other", description: "filter expression" }, - peg$c1 = function peg$c1(orExpr) { - return orExpr; - }, - peg$c2 = { type: "other", description: "whitespace" }, - peg$c3 = /^[ \t\n\r]/, - peg$c4 = { type: "class", value: "[ \\t\\n\\r]", description: "[ \\t\\n\\r]" }, - peg$c5 = { type: "other", description: "control character" }, - peg$c6 = /^[|&!()~"]/, - peg$c7 = { type: "class", value: "[|&!()~\"]", description: "[|&!()~\"]" }, - peg$c8 = { type: "other", description: "optional whitespace" }, - peg$c9 = "|", - peg$c10 = { type: "literal", value: "|", description: "\"|\"" }, - peg$c11 = function peg$c11(first, second) { - return or(first, second); - }, - peg$c12 = "&", - peg$c13 = { type: "literal", value: "&", description: "\"&\"" }, - peg$c14 = function peg$c14(first, second) { - return and(first, second); - }, - peg$c15 = "!", - peg$c16 = { type: "literal", value: "!", description: "\"!\"" }, - peg$c17 = function peg$c17(expr) { - return not(expr); - }, - peg$c18 = "(", - peg$c19 = { type: "literal", value: "(", description: "\"(\"" }, - peg$c20 = ")", - peg$c21 = { type: "literal", value: ")", description: "\")\"" }, - peg$c22 = function peg$c22(expr) { - return binding(expr); - }, - peg$c23 = "true", - peg$c24 = { type: "literal", value: "true", description: "\"true\"" }, - peg$c25 = function peg$c25() { - return trueFilter; - }, - peg$c26 = "false", - peg$c27 = { type: "literal", value: "false", description: "\"false\"" }, - peg$c28 = function peg$c28() { - return falseFilter; - }, - peg$c29 = "~a", - peg$c30 = { type: "literal", value: "~a", description: "\"~a\"" }, - peg$c31 = function peg$c31() { - return assetFilter; - }, - peg$c32 = "~b", - peg$c33 = { type: "literal", value: "~b", description: "\"~b\"" }, - peg$c34 = function peg$c34(s) { - return body(s); - }, - peg$c35 = "~bq", - peg$c36 = { type: "literal", value: "~bq", description: "\"~bq\"" }, - peg$c37 = function peg$c37(s) { - return requestBody(s); - }, - peg$c38 = "~bs", - peg$c39 = { type: "literal", value: "~bs", description: "\"~bs\"" }, - peg$c40 = function peg$c40(s) { - return responseBody(s); - }, - peg$c41 = "~c", - peg$c42 = { type: "literal", value: "~c", description: "\"~c\"" }, - peg$c43 = function peg$c43(s) { - return responseCode(s); - }, - peg$c44 = "~d", - peg$c45 = { type: "literal", value: "~d", description: "\"~d\"" }, - peg$c46 = function peg$c46(s) { - return domain(s); - }, - peg$c47 = "~dst", - peg$c48 = { type: "literal", value: "~dst", description: "\"~dst\"" }, - peg$c49 = function peg$c49(s) { - return destination(s); - }, - peg$c50 = "~e", - peg$c51 = { type: "literal", value: "~e", description: "\"~e\"" }, - peg$c52 = function peg$c52() { - return errorFilter; - }, - peg$c53 = "~h", - peg$c54 = { type: "literal", value: "~h", description: "\"~h\"" }, - peg$c55 = function peg$c55(s) { - return header(s); - }, - peg$c56 = "~hq", - peg$c57 = { type: "literal", value: "~hq", description: "\"~hq\"" }, - peg$c58 = function peg$c58(s) { - return requestHeader(s); - }, - peg$c59 = "~hs", - peg$c60 = { type: "literal", value: "~hs", description: "\"~hs\"" }, - peg$c61 = function peg$c61(s) { - return responseHeader(s); - }, - peg$c62 = "~http", - peg$c63 = { type: "literal", value: "~http", description: "\"~http\"" }, - peg$c64 = function peg$c64() { - return httpFilter; - }, - peg$c65 = "~m", - peg$c66 = { type: "literal", value: "~m", description: "\"~m\"" }, - peg$c67 = function peg$c67(s) { - return method(s); - }, - peg$c68 = "~marked", - peg$c69 = { type: "literal", value: "~marked", description: "\"~marked\"" }, - peg$c70 = function peg$c70() { - return markedFilter; - }, - peg$c71 = "~q", - peg$c72 = { type: "literal", value: "~q", description: "\"~q\"" }, - peg$c73 = function peg$c73() { - return noResponseFilter; - }, - peg$c74 = "~src", - peg$c75 = { type: "literal", value: "~src", description: "\"~src\"" }, - peg$c76 = function peg$c76(s) { - return source(s); - }, - peg$c77 = "~s", - peg$c78 = { type: "literal", value: "~s", description: "\"~s\"" }, - peg$c79 = function peg$c79() { - return responseFilter; - }, - peg$c80 = "~t", - peg$c81 = { type: "literal", value: "~t", description: "\"~t\"" }, - peg$c82 = function peg$c82(s) { - return contentType(s); - }, - peg$c83 = "~tcp", - peg$c84 = { type: "literal", value: "~tcp", description: "\"~tcp\"" }, - peg$c85 = function peg$c85() { - return tcpFilter; - }, - peg$c86 = "~tq", - peg$c87 = { type: "literal", value: "~tq", description: "\"~tq\"" }, - peg$c88 = function peg$c88(s) { - return requestContentType(s); - }, - peg$c89 = "~ts", - peg$c90 = { type: "literal", value: "~ts", description: "\"~ts\"" }, - peg$c91 = function peg$c91(s) { - return responseContentType(s); - }, - peg$c92 = "~u", - peg$c93 = { type: "literal", value: "~u", description: "\"~u\"" }, - peg$c94 = function peg$c94(s) { - return url(s); - }, - peg$c95 = "~websocket", - peg$c96 = { type: "literal", value: "~websocket", description: "\"~websocket\"" }, - peg$c97 = function peg$c97() { - return websocketFilter; - }, - peg$c98 = { type: "other", description: "integer" }, - peg$c99 = /^['"]/, - peg$c100 = { type: "class", value: "['\"]", description: "['\"]" }, - peg$c101 = /^[0-9]/, - peg$c102 = { type: "class", value: "[0-9]", description: "[0-9]" }, - peg$c103 = function peg$c103(digits) { - return parseInt(digits.join(""), 10); - }, - peg$c104 = { type: "other", description: "string" }, - peg$c105 = "\"", - peg$c106 = { type: "literal", value: "\"", description: "\"\\\"\"" }, - peg$c107 = function peg$c107(chars) { - return chars.join(""); - }, - peg$c108 = "'", - peg$c109 = { type: "literal", value: "'", description: "\"'\"" }, - peg$c110 = /^["\\]/, - peg$c111 = { type: "class", value: "[\"\\\\]", description: "[\"\\\\]" }, - peg$c112 = { type: "any", description: "any character" }, - peg$c113 = function peg$c113(char) { - return char; - }, - peg$c114 = "\\", - peg$c115 = { type: "literal", value: "\\", description: "\"\\\\\"" }, - peg$c116 = /^['\\]/, - peg$c117 = { type: "class", value: "['\\\\]", description: "['\\\\]" }, - peg$c118 = /^['"\\]/, - peg$c119 = { type: "class", value: "['\"\\\\]", description: "['\"\\\\]" }, - peg$c120 = "n", - peg$c121 = { type: "literal", value: "n", description: "\"n\"" }, - peg$c122 = function peg$c122() { - return "\n"; - }, - peg$c123 = "r", - peg$c124 = { type: "literal", value: "r", description: "\"r\"" }, - peg$c125 = function peg$c125() { - return "\r"; - }, - peg$c126 = "t", - peg$c127 = { type: "literal", value: "t", description: "\"t\"" }, - peg$c128 = function peg$c128() { - return "\t"; - }, - peg$currPos = 0, - peg$savedPos = 0, - peg$posDetailsCache = [{ line: 1, column: 1, seenCR: false }], - peg$maxFailPos = 0, - peg$maxFailExpected = [], - peg$silentFails = 0, - peg$result; - - if ("startRule" in options) { - if (!(options.startRule in peg$startRuleFunctions)) { - throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); - } - - peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; - } - - function text() { - return input.substring(peg$savedPos, peg$currPos); - } - - function location() { - return peg$computeLocation(peg$savedPos, peg$currPos); - } - - function expected(description) { - throw peg$buildException(null, [{ type: "other", description: description }], input.substring(peg$savedPos, peg$currPos), peg$computeLocation(peg$savedPos, peg$currPos)); - } - - function error(message) { - throw peg$buildException(message, null, input.substring(peg$savedPos, peg$currPos), peg$computeLocation(peg$savedPos, peg$currPos)); - } - - function peg$computePosDetails(pos) { - var details = peg$posDetailsCache[pos], - p, - ch; - - if (details) { - return details; - } else { - p = pos - 1; - while (!peg$posDetailsCache[p]) { - p--; - } - - details = peg$posDetailsCache[p]; - details = { - line: details.line, - column: details.column, - seenCR: details.seenCR - }; - - while (p < pos) { - ch = input.charAt(p); - if (ch === "\n") { - if (!details.seenCR) { - details.line++; - } - details.column = 1; - details.seenCR = false; - } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { - details.line++; - details.column = 1; - details.seenCR = true; - } else { - details.column++; - details.seenCR = false; - } - - p++; - } - - peg$posDetailsCache[pos] = details; - return details; - } - } - - function peg$computeLocation(startPos, endPos) { - var startPosDetails = peg$computePosDetails(startPos), - endPosDetails = peg$computePosDetails(endPos); - - return { - start: { - offset: startPos, - line: startPosDetails.line, - column: startPosDetails.column - }, - end: { - offset: endPos, - line: endPosDetails.line, - column: endPosDetails.column - } - }; - } - - function peg$fail(expected) { - if (peg$currPos < peg$maxFailPos) { - return; - } - - if (peg$currPos > peg$maxFailPos) { - peg$maxFailPos = peg$currPos; - peg$maxFailExpected = []; - } - - peg$maxFailExpected.push(expected); - } - - function peg$buildException(message, expected, found, location) { - function cleanupExpected(expected) { - var i = 1; - - expected.sort(function (a, b) { - if (a.description < b.description) { - return -1; - } else if (a.description > b.description) { - return 1; - } else { - return 0; - } - }); - - while (i < expected.length) { - if (expected[i - 1] === expected[i]) { - expected.splice(i, 1); - } else { - i++; - } - } - } - - function buildMessage(expected, found) { - function stringEscape(s) { - function hex(ch) { - return ch.charCodeAt(0).toString(16).toUpperCase(); - } - - return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\x08/g, '\\b').replace(/\t/g, '\\t').replace(/\n/g, '\\n').replace(/\f/g, '\\f').replace(/\r/g, '\\r').replace(/[\x00-\x07\x0B\x0E\x0F]/g, function (ch) { - return '\\x0' + hex(ch); - }).replace(/[\x10-\x1F\x80-\xFF]/g, function (ch) { - return '\\x' + hex(ch); - }).replace(/[\u0100-\u0FFF]/g, function (ch) { - return "\\u0" + hex(ch); - }).replace(/[\u1000-\uFFFF]/g, function (ch) { - return "\\u" + hex(ch); - }); - } - - var expectedDescs = new Array(expected.length), - expectedDesc, - foundDesc, - i; - - for (i = 0; i < expected.length; i++) { - expectedDescs[i] = expected[i].description; - } - - expectedDesc = expected.length > 1 ? expectedDescs.slice(0, -1).join(", ") + " or " + expectedDescs[expected.length - 1] : expectedDescs[0]; - - foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input"; - - return "Expected " + expectedDesc + " but " + foundDesc + " found."; - } - - if (expected !== null) { - cleanupExpected(expected); - } - - return new peg$SyntaxError(message !== null ? message : buildMessage(expected, found), expected, found, location); - } - - function peg$parsestart() { - var s0, s1, s2, s3; - - peg$silentFails++; - s0 = peg$currPos; - s1 = peg$parse__(); - if (s1 !== peg$FAILED) { - s2 = peg$parseOrExpr(); - if (s2 !== peg$FAILED) { - s3 = peg$parse__(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c1(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c0); - } - } - - return s0; - } - - function peg$parsews() { - var s0, s1; - - peg$silentFails++; - if (peg$c3.test(input.charAt(peg$currPos))) { - s0 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c4); - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c2); - } - } - - return s0; - } - - function peg$parsecc() { - var s0, s1; - - peg$silentFails++; - if (peg$c6.test(input.charAt(peg$currPos))) { - s0 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c7); - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c5); - } - } - - return s0; - } - - function peg$parse__() { - var s0, s1; - - peg$silentFails++; - s0 = []; - s1 = peg$parsews(); - while (s1 !== peg$FAILED) { - s0.push(s1); - s1 = peg$parsews(); - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c8); - } - } - - return s0; - } - - function peg$parseOrExpr() { - var s0, s1, s2, s3, s4, s5; - - s0 = peg$currPos; - s1 = peg$parseAndExpr(); - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - if (s2 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 124) { - s3 = peg$c9; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c10); - } - } - if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - if (s4 !== peg$FAILED) { - s5 = peg$parseOrExpr(); - if (s5 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c11(s1, s5); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$parseAndExpr(); - } - - return s0; - } - - function peg$parseAndExpr() { - var s0, s1, s2, s3, s4, s5; - - s0 = peg$currPos; - s1 = peg$parseNotExpr(); - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - if (s2 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 38) { - s3 = peg$c12; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c13); - } - } - if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - if (s4 !== peg$FAILED) { - s5 = peg$parseAndExpr(); - if (s5 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c14(s1, s5); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parseNotExpr(); - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseAndExpr(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c14(s1, s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$parseNotExpr(); - } - } - - return s0; - } - - function peg$parseNotExpr() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 33) { - s1 = peg$c15; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c16); - } - } - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - if (s2 !== peg$FAILED) { - s3 = peg$parseNotExpr(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c17(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$parseBindingExpr(); - } - - return s0; - } - - function peg$parseBindingExpr() { - var s0, s1, s2, s3, s4, s5; - - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 40) { - s1 = peg$c18; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c19); - } - } - if (s1 !== peg$FAILED) { - s2 = peg$parse__(); - if (s2 !== peg$FAILED) { - s3 = peg$parseOrExpr(); - if (s3 !== peg$FAILED) { - s4 = peg$parse__(); - if (s4 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 41) { - s5 = peg$c20; - peg$currPos++; - } else { - s5 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c21); - } - } - if (s5 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c22(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$parseExpr(); - } - - return s0; - } - - function peg$parseExpr() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c23) { - s1 = peg$c23; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c24); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c25(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c26) { - s1 = peg$c26; - peg$currPos += 5; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c27); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c28(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c29) { - s1 = peg$c29; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c30); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c31(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c32) { - s1 = peg$c32; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c33); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c34(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c35) { - s1 = peg$c35; - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c36); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c37(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c38) { - s1 = peg$c38; - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c39); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c40(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c41) { - s1 = peg$c41; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c42); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseIntegerLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c43(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c44) { - s1 = peg$c44; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c45); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c46(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c47) { - s1 = peg$c47; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c48); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c49(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c50) { - s1 = peg$c50; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c51); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c52(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c53) { - s1 = peg$c53; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c54); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c55(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c56) { - s1 = peg$c56; - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c57); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c58(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c59) { - s1 = peg$c59; - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c60); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c61(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c62) { - s1 = peg$c62; - peg$currPos += 5; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c63); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c64(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c65) { - s1 = peg$c65; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c66); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c67(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 7) === peg$c68) { - s1 = peg$c68; - peg$currPos += 7; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c69); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c70(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c71) { - s1 = peg$c71; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c72); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c73(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c74) { - s1 = peg$c74; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c75); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c76(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c77) { - s1 = peg$c77; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c78); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c79(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c80) { - s1 = peg$c80; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c81); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c82(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c83) { - s1 = peg$c83; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c84); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c85(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c86) { - s1 = peg$c86; - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c87); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c88(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 3) === peg$c89) { - s1 = peg$c89; - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c90); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c91(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c92) { - s1 = peg$c92; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c93); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parsews(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parsews(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - s3 = peg$parseStringLiteral(); - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c94(s3); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 10) === peg$c95) { - s1 = peg$c95; - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c96); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c97(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parseStringLiteral(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c94(s1); - } - s0 = s1; - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - - return s0; - } - - function peg$parseIntegerLiteral() { - var s0, s1, s2, s3; - - peg$silentFails++; - s0 = peg$currPos; - if (peg$c99.test(input.charAt(peg$currPos))) { - s1 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c100); - } - } - if (s1 === peg$FAILED) { - s1 = null; - } - if (s1 !== peg$FAILED) { - s2 = []; - if (peg$c101.test(input.charAt(peg$currPos))) { - s3 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c102); - } - } - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - if (peg$c101.test(input.charAt(peg$currPos))) { - s3 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c102); - } - } - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - if (peg$c99.test(input.charAt(peg$currPos))) { - s3 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c100); - } - } - if (s3 === peg$FAILED) { - s3 = null; - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c103(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c98); - } - } - - return s0; - } - - function peg$parseStringLiteral() { - var s0, s1, s2, s3; - - peg$silentFails++; - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 34) { - s1 = peg$c105; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c106); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parseDoubleStringChar(); - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseDoubleStringChar(); - } - if (s2 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 34) { - s3 = peg$c105; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c106); - } - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c107(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 39) { - s1 = peg$c108; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c109); - } - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parseSingleStringChar(); - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseSingleStringChar(); - } - if (s2 !== peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 39) { - s3 = peg$c108; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c109); - } - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c107(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$currPos; - peg$silentFails++; - s2 = peg$parsecc(); - peg$silentFails--; - if (s2 === peg$FAILED) { - s1 = void 0; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - s2 = []; - s3 = peg$parseUnquotedStringChar(); - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - s3 = peg$parseUnquotedStringChar(); - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c107(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - } - peg$silentFails--; - if (s0 === peg$FAILED) { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c104); - } - } - - return s0; - } - - function peg$parseDoubleStringChar() { - var s0, s1, s2; - - s0 = peg$currPos; - s1 = peg$currPos; - peg$silentFails++; - if (peg$c110.test(input.charAt(peg$currPos))) { - s2 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c111); - } - } - peg$silentFails--; - if (s2 === peg$FAILED) { - s1 = void 0; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - if (input.length > peg$currPos) { - s2 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c112); - } - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c113(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c114; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c115); - } - } - if (s1 !== peg$FAILED) { - s2 = peg$parseEscapeSequence(); - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c113(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - - return s0; - } - - function peg$parseSingleStringChar() { - var s0, s1, s2; - - s0 = peg$currPos; - s1 = peg$currPos; - peg$silentFails++; - if (peg$c116.test(input.charAt(peg$currPos))) { - s2 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c117); - } - } - peg$silentFails--; - if (s2 === peg$FAILED) { - s1 = void 0; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - if (input.length > peg$currPos) { - s2 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c112); - } - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c113(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 92) { - s1 = peg$c114; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c115); - } - } - if (s1 !== peg$FAILED) { - s2 = peg$parseEscapeSequence(); - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c113(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - - return s0; - } - - function peg$parseUnquotedStringChar() { - var s0, s1, s2; - - s0 = peg$currPos; - s1 = peg$currPos; - peg$silentFails++; - s2 = peg$parsews(); - peg$silentFails--; - if (s2 === peg$FAILED) { - s1 = void 0; - } else { - peg$currPos = s1; - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - if (input.length > peg$currPos) { - s2 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c112); - } - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c113(s2); - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseEscapeSequence() { - var s0, s1; - - if (peg$c118.test(input.charAt(peg$currPos))) { - s0 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c119); - } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 110) { - s1 = peg$c120; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c121); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c122(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 114) { - s1 = peg$c123; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c124); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c125(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 116) { - s1 = peg$c126; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c127); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c128(); - } - s0 = s1; - } - } - } - - return s0; - } - - var flowutils = require("../flow/utils.js"); - - function or(first, second) { - // Add explicit function names to ease debugging. - function orFilter() { - return first.apply(this, arguments) || second.apply(this, arguments); - } - orFilter.desc = first.desc + " or " + second.desc; - return orFilter; - } - function and(first, second) { - function andFilter() { - return first.apply(this, arguments) && second.apply(this, arguments); - } - andFilter.desc = first.desc + " and " + second.desc; - return andFilter; - } - function not(expr) { - function notFilter() { - return !expr.apply(this, arguments); - } - notFilter.desc = "not " + expr.desc; - return notFilter; - } - function binding(expr) { - function bindingFilter() { - return expr.apply(this, arguments); - } - bindingFilter.desc = "(" + expr.desc + ")"; - return bindingFilter; - } - function trueFilter(flow) { - return true; - } - trueFilter.desc = "true"; - function falseFilter(flow) { - return false; - } - falseFilter.desc = "false"; - - var ASSET_TYPES = [new RegExp("text/javascript"), new RegExp("application/x-javascript"), new RegExp("application/javascript"), new RegExp("text/css"), new RegExp("image/.*"), new RegExp("application/x-shockwave-flash")]; - function assetFilter(flow) { - if (flow.response) { - var ct = flowutils.ResponseUtils.getContentType(flow.response); - var i = ASSET_TYPES.length; - while (i--) { - if (ASSET_TYPES[i].test(ct)) { - return true; - } - } - } - return false; - } - assetFilter.desc = "is asset"; - function responseCode(code) { - function responseCodeFilter(flow) { - return flow.response && flow.response.status_code === code; - } - responseCodeFilter.desc = "resp. code is " + code; - return responseCodeFilter; - } - function body(regex) { - regex = new RegExp(regex, "i"); - function bodyFilter(flow) { - return true; - } - bodyFilter.desc = "body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10"; - return bodyFilter; - } - function requestBody(regex) { - regex = new RegExp(regex, "i"); - function requestBodyFilter(flow) { - return true; - } - requestBodyFilter.desc = "body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10"; - return requestBodyFilter; - } - function responseBody(regex) { - regex = new RegExp(regex, "i"); - function responseBodyFilter(flow) { - return true; - } - responseBodyFilter.desc = "body filters are not implemented yet, see https://github.com/mitmproxy/mitmweb/issues/10"; - return responseBodyFilter; - } - function domain(regex) { - regex = new RegExp(regex, "i"); - function domainFilter(flow) { - return flow.request && (regex.test(flow.request.host) || regex.test(flow.request.pretty_host)); - } - domainFilter.desc = "domain matches " + regex; - return domainFilter; - } - function destination(regex) { - regex = new RegExp(regex, "i"); - function destinationFilter(flow) { - return !!flow.server_conn.address && regex.test(flow.server_conn.address[0] + ":" + flow.server_conn.address[1]); - } - destinationFilter.desc = "destination address matches " + regex; - return destinationFilter; - } - function errorFilter(flow) { - return !!flow.error; - } - errorFilter.desc = "has error"; - function header(regex) { - regex = new RegExp(regex, "i"); - function headerFilter(flow) { - return flow.request && flowutils.RequestUtils.match_header(flow.request, regex) || flow.response && flowutils.ResponseUtils.match_header(flow.response, regex); - } - headerFilter.desc = "header matches " + regex; - return headerFilter; - } - function requestHeader(regex) { - regex = new RegExp(regex, "i"); - function requestHeaderFilter(flow) { - return flow.request && flowutils.RequestUtils.match_header(flow.request, regex); - } - requestHeaderFilter.desc = "req. header matches " + regex; - return requestHeaderFilter; - } - function responseHeader(regex) { - regex = new RegExp(regex, "i"); - function responseHeaderFilter(flow) { - return flow.response && flowutils.ResponseUtils.match_header(flow.response, regex); - } - responseHeaderFilter.desc = "resp. header matches " + regex; - return responseHeaderFilter; - } - function httpFilter(flow) { - return flow.type === "http"; - } - httpFilter.desc = "is an HTTP Flow"; - function method(regex) { - regex = new RegExp(regex, "i"); - function methodFilter(flow) { - return flow.request && regex.test(flow.request.method); - } - methodFilter.desc = "method matches " + regex; - return methodFilter; - } - function markedFilter(flow) { - return flow.marked; - } - markedFilter.desc = "is marked"; - function noResponseFilter(flow) { - return flow.request && !flow.response; - } - noResponseFilter.desc = "has no response"; - function responseFilter(flow) { - return !!flow.response; - } - responseFilter.desc = "has response"; - function source(regex) { - regex = new RegExp(regex, "i"); - function sourceFilter(flow) { - return !!flow.client_conn.address && regex.test(flow.client_conn.address[0] + ":" + flow.client_conn.address[1]); - } - sourceFilter.desc = "source address matches " + regex; - return sourceFilter; - } - function contentType(regex) { - regex = new RegExp(regex, "i"); - function contentTypeFilter(flow) { - return flow.request && regex.test(flowutils.RequestUtils.getContentType(flow.request)) || flow.response && regex.test(flowutils.ResponseUtils.getContentType(flow.response)); - } - contentTypeFilter.desc = "content type matches " + regex; - return contentTypeFilter; - } - function tcpFilter(flow) { - return flow.type === "tcp"; - } - tcpFilter.desc = "is a TCP Flow"; - function requestContentType(regex) { - regex = new RegExp(regex, "i"); - function requestContentTypeFilter(flow) { - return flow.request && regex.test(flowutils.RequestUtils.getContentType(flow.request)); - } - requestContentTypeFilter.desc = "req. content type matches " + regex; - return requestContentTypeFilter; - } - function responseContentType(regex) { - regex = new RegExp(regex, "i"); - function responseContentTypeFilter(flow) { - return flow.response && regex.test(flowutils.ResponseUtils.getContentType(flow.response)); - } - responseContentTypeFilter.desc = "resp. content type matches " + regex; - return responseContentTypeFilter; - } - function url(regex) { - regex = new RegExp(regex, "i"); - function urlFilter(flow) { - return flow.request && regex.test(flowutils.RequestUtils.pretty_url(flow.request)); - } - urlFilter.desc = "url matches " + regex; - return urlFilter; - } - function websocketFilter(flow) { - return flow.type === "websocket"; - } - websocketFilter.desc = "is a Websocket Flow"; - - peg$result = peg$startRuleFunction(); - - if (peg$result !== peg$FAILED && peg$currPos === input.length) { - return peg$result; - } else { - if (peg$result !== peg$FAILED && peg$currPos < input.length) { - peg$fail({ type: "end", description: "end of input" }); - } - - throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)); - } - } - - return { - SyntaxError: peg$SyntaxError, - parse: peg$parse - }; -}(); - -},{"../flow/utils.js":69}],69:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.isValidHttpVersion = exports.parseUrl = exports.ResponseUtils = exports.RequestUtils = exports.MessageUtils = undefined; - -var _lodash = require("lodash"); - -var _lodash2 = _interopRequireDefault(_lodash); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var defaultPorts = { - "http": 80, - "https": 443 -}; - -var MessageUtils = exports.MessageUtils = { - getContentType: function getContentType(message) { - var ct = this.get_first_header(message, /^Content-Type$/i); - if (ct) { - return ct.split(";")[0].trim(); - } - }, - get_first_header: function get_first_header(message, regex) { - //FIXME: Cache Invalidation. - if (!message._headerLookups) Object.defineProperty(message, "_headerLookups", { - value: {}, - configurable: false, - enumerable: false, - writable: false - }); - if (!(regex in message._headerLookups)) { - var header; - for (var i = 0; i < message.headers.length; i++) { - if (!!message.headers[i][0].match(regex)) { - header = message.headers[i]; - break; - } - } - message._headerLookups[regex] = header ? header[1] : undefined; - } - return message._headerLookups[regex]; - }, - match_header: function match_header(message, regex) { - var headers = message.headers; - var i = headers.length; - while (i--) { - if (regex.test(headers[i].join(" "))) { - return headers[i]; - } - } - return false; - }, - getContentURL: function getContentURL(flow, message, view) { - if (message === flow.request) { - message = "request"; - } else if (message === flow.response) { - message = "response"; - } - return "./flows/" + flow.id + "/" + message + "/" + (view ? "content/" + view + ".json" : 'content.data'); - } -}; - -var RequestUtils = exports.RequestUtils = _lodash2.default.extend(MessageUtils, { - pretty_url: function pretty_url(request) { - var port = ""; - if (defaultPorts[request.scheme] !== request.port) { - port = ":" + request.port; - } - return request.scheme + "://" + request.pretty_host + port + request.path; - } -}); - -var ResponseUtils = exports.ResponseUtils = _lodash2.default.extend(MessageUtils, {}); - -var parseUrl_regex = /^(?:(https?):\/\/)?([^\/:]+)?(?::(\d+))?(\/.*)?$/i; -var parseUrl = exports.parseUrl = function parseUrl(url) { - //there are many correct ways to parse a URL, - //however, a mitmproxy user may also wish to generate a not-so-correct URL. ;-) - var parts = parseUrl_regex.exec(url); - if (!parts) { - return false; - } - - var scheme = parts[1], - host = parts[2], - port = parseInt(parts[3]), - path = parts[4]; - if (scheme) { - port = port || defaultPorts[scheme]; - } - var ret = {}; - if (scheme) { - ret.scheme = scheme; - } - if (host) { - ret.host = host; - } - if (port) { - ret.port = port; - } - if (path) { - ret.path = path; - } - return ret; -}; - -var isValidHttpVersion_regex = /^HTTP\/\d+(\.\d+)*$/i; -var isValidHttpVersion = exports.isValidHttpVersion = function isValidHttpVersion(httpVersion) { - return isValidHttpVersion_regex.test(httpVersion); -}; - -},{"lodash":"lodash"}],70:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); /** - * Instead of dealing with react-router's ever-changing APIs, - * we use a simple url state manager where we only - * - * - read the initial URL state on page load - * - push updates to the URL later on. - */ - - -exports.updateStoreFromUrl = updateStoreFromUrl; -exports.updateUrlFromStore = updateUrlFromStore; -exports.default = initialize; - -var _flows = require("./ducks/flows"); - -var _flow = require("./ducks/ui/flow"); - -var _eventLog = require("./ducks/eventLog"); - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var Query = { - SEARCH: "s", - HIGHLIGHT: "h", - SHOW_EVENTLOG: "e" -}; - -function updateStoreFromUrl(store) { - var _window$location$hash = window.location.hash.substr(1).split("?", 2), - _window$location$hash2 = _slicedToArray(_window$location$hash, 2), - path = _window$location$hash2[0], - query = _window$location$hash2[1]; - - var path_components = path.substr(1).split("/"); - - if (path_components[0] === "flows") { - if (path_components.length == 3) { - var _path_components$slic = path_components.slice(1), - _path_components$slic2 = _slicedToArray(_path_components$slic, 2), - flowId = _path_components$slic2[0], - tab = _path_components$slic2[1]; - - store.dispatch((0, _flows.select)(flowId)); - store.dispatch((0, _flow.selectTab)(tab)); - } - } - - if (query) { - query.split("&").forEach(function (x) { - var _x$split = x.split("=", 2), - _x$split2 = _slicedToArray(_x$split, 2), - key = _x$split2[0], - value = _x$split2[1]; - - switch (key) { - case Query.SEARCH: - store.dispatch((0, _flows.setFilter)(value)); - break; - case Query.HIGHLIGHT: - store.dispatch((0, _flows.setHighlight)(value)); - break; - case Query.SHOW_EVENTLOG: - if (!store.getState().eventLog.visible) store.dispatch((0, _eventLog.toggleVisibility)()); - break; - default: - console.error("unimplemented query arg: " + x); - } - }); - } -} - -function updateUrlFromStore(store) { - var _query; - - var state = store.getState(); - var query = (_query = {}, _defineProperty(_query, Query.SEARCH, state.flows.filter), _defineProperty(_query, Query.HIGHLIGHT, state.flows.highlight), _defineProperty(_query, Query.SHOW_EVENTLOG, state.eventLog.visible), _query); - var queryStr = Object.keys(query).filter(function (k) { - return query[k]; - }).map(function (k) { - return k + "=" + query[k]; - }).join("&"); - - var url = void 0; - if (state.flows.selected.length > 0) { - url = "/flows/" + state.flows.selected[0] + "/" + state.ui.flow.tab; - } else { - url = "/flows"; - } - - if (queryStr) { - url += "?" + queryStr; - } - var pathname = window.location.pathname; - if (pathname === "blank") { - pathname = "/"; // this happens in tests... - } - if (window.location.hash.substr(1) !== url) { - history.replaceState(undefined, "", pathname + "#" + url); - } -} - -function initialize(store) { - updateStoreFromUrl(store); - store.subscribe(function () { - return updateUrlFromStore(store); - }); -} - -},{"./ducks/eventLog":56,"./ducks/flows":57,"./ducks/ui/flow":61}],71:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.pure = exports.formatTimeStamp = exports.formatTimeDelta = exports.formatSize = exports.Key = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.reverseString = reverseString; -exports.fetchApi = fetchApi; -exports.getDiff = getDiff; - -var _lodash = require('lodash'); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -window._ = _lodash2.default; -window.React = _react2.default; - -var Key = exports.Key = { - UP: 38, - DOWN: 40, - PAGE_UP: 33, - PAGE_DOWN: 34, - HOME: 36, - END: 35, - LEFT: 37, - RIGHT: 39, - ENTER: 13, - ESC: 27, - TAB: 9, - SPACE: 32, - BACKSPACE: 8, - SHIFT: 16 -}; -// Add A-Z -for (var i = 65; i <= 90; i++) { - Key[String.fromCharCode(i)] = i; -} - -var formatSize = exports.formatSize = function formatSize(bytes) { - if (bytes === 0) return "0"; - var prefix = ["b", "kb", "mb", "gb", "tb"]; - for (var i = 0; i < prefix.length; i++) { - if (Math.pow(1024, i + 1) > bytes) { - break; - } - } - var precision; - if (bytes % Math.pow(1024, i) === 0) precision = 0;else precision = 1; - return (bytes / Math.pow(1024, i)).toFixed(precision) + prefix[i]; -}; - -var formatTimeDelta = exports.formatTimeDelta = function formatTimeDelta(milliseconds) { - var time = milliseconds; - var prefix = ["ms", "s", "min", "h"]; - var div = [1000, 60, 60]; - var i = 0; - while (Math.abs(time) >= div[i] && i < div.length) { - time = time / div[i]; - i++; - } - return Math.round(time) + prefix[i]; -}; - -var formatTimeStamp = exports.formatTimeStamp = function formatTimeStamp(seconds) { - var ts = new Date(seconds * 1000).toISOString(); - return ts.replace("T", " ").replace("Z", ""); -}; - -// At some places, we need to sort strings alphabetically descending, -// but we can only provide a key function. -// This beauty "reverses" a JS string. -var end = String.fromCharCode(0xffff); -function reverseString(s) { - return String.fromCharCode.apply(String, _lodash2.default.map(s.split(""), function (c) { - return 0xffff - c.charCodeAt(0); - })) + end; -} - -function getCookie(name) { - var r = document.cookie.match(new RegExp("\\b" + name + "=([^;]*)\\b")); - return r ? r[1] : undefined; -} -var xsrf = '_xsrf=' + getCookie("_xsrf"); - -function fetchApi(url) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - if (options.method && options.method !== "GET") { - if (url.indexOf("?") === -1) { - url += "?" + xsrf; - } else { - url += "&" + xsrf; - } - } else { - url += '.json'; - } - if (url.startsWith("/")) { - url = "." + url; - } - - return fetch(url, _extends({ - credentials: 'same-origin' - }, options)); -} - -fetchApi.put = function (url, json, options) { - return fetchApi(url, _extends({ - method: "PUT", - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify(json) - }, options)); -}; -// deep comparison of two json objects (dicts). arrays are handeled as a single value. -// return: json object including only the changed keys value pairs. -function getDiff(obj1, obj2) { - var result = _extends({}, obj2); - for (var key in obj1) { - if (_lodash2.default.isEqual(obj2[key], obj1[key])) result[key] = undefined;else if (Object.prototype.toString.call(obj2[key]) === '[object Object]' && Object.prototype.toString.call(obj1[key]) === '[object Object]') result[key] = getDiff(obj1[key], obj2[key]); - } - return result; -} - -var pure = exports.pure = function pure(renderFn) { - var _class, _temp; - - return _temp = _class = function (_React$PureComponent) { - _inherits(_class, _React$PureComponent); - - function _class() { - _classCallCheck(this, _class); - - return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).apply(this, arguments)); - } - - _createClass(_class, [{ - key: 'render', - value: function render() { - return renderFn(this.props); - } - }]); - - return _class; - }(_react2.default.PureComponent), _class.displayName = renderFn.name, _temp; -}; - -},{"lodash":"lodash","react":"react"}]},{},[2]) +},{"lodash":"lodash","react":"react"}]},{},[1]) //# sourceMappingURL=app.js.map