From c33df55919cf2238deff34b22856f8304e6279e3 Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 9 Jun 2016 20:39:51 +0800 Subject: [web] update build --- mitmproxy/web/static/app.css | 435 +- mitmproxy/web/static/app.js | 7733 +----- mitmproxy/web/static/vendor.js | 54481 +-------------------------------------- 3 files changed, 790 insertions(+), 61859 deletions(-) diff --git a/mitmproxy/web/static/app.css b/mitmproxy/web/static/app.css index bc3f1a6a..bd4b57be 100644 --- a/mitmproxy/web/static/app.css +++ b/mitmproxy/web/static/app.css @@ -1,435 +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: 0.5em; - background-color: white; -} -header .menu { - padding: 10px; - border-bottom: solid #a6a6a6 1px; -} -.menu-row { - margin-left: -2px; - margin-right: -3px; -} -.filter-input { - position: relative; - min-height: 1px; - padding-left: 2.5px; - padding-right: 2.5px; - margin-bottom: 5px; -} -@media (min-width: 768px) { - .filter-input { - float: left; - width: 25%; - } -} -.filter-input .popover { - top: 27px; - display: block; - max-width: none; - opacity: 0.9; -} -.filter-input .popover .popover-content { - max-height: 500px; - overflow-y: auto; -} -.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: rgba(193, 215, 235, 0.5) !important; -} -.flow-table tr.highlighted { - background-color: rgba(255, 204, 0, 0.4); -} -.flow-table tr.highlighted:nth-child(even) { - background-color: rgba(255, 204, 0, 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: #ff8000; -} -.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: #ff8000; -} -.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: #ff8000; -} -.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-x: auto; - overflow-y: scroll; - /*.request .response-line, - .response .request-line { - opacity: 0.7; - }*/ -} -.flow-detail nav { - background-color: #F2F2F2; -} -.flow-detail section { - padding: 5px 12px; -} -.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 .request-line { - margin-bottom: 2px; -} -.flow-detail hr { - margin: 0 0 5px; -} -.inline-input { - margin: 0 -5px; - padding: 0 5px; -} -.inline-input[contenteditable] { - background-color: rgba(255, 255, 255, 0.2); -} -.inline-input[contenteditable].has-warning { - color: #ffb8b8; -} -.view-options { - margin-top: 10px; -} -.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%; - padding-right: 1em; -} -.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%; -} -.prompt-dialog { - top: 0; - bottom: 0; - left: 0; - right: 0; - position: fixed; - z-index: 100; - background-color: rgba(0, 0, 0, 0.1); -} -.prompt-content { - position: fixed; - bottom: 0; - left: 0; - right: 0; - height: 25px; - padding: 2px 5px; - background-color: white; - box-shadow: 0 -1px 3px lightgray; -} -.prompt-content .option { - cursor: pointer; -} -.prompt-content .option:not(:last-child)::after { - content: ", "; -} -.eventlog { - height: 200px; - flex: 0 0 auto; - display: flex; - flex-direction: column; -} -.eventlog > div { - background-color: #F2F2F2; - padding: 0 5px; - flex: 0 0 auto; -} -.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; -} - +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,.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}.eventlog .label,.flow-table tr,.prompt-content .option{cursor:pointer}.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:1px solid transparent;text-decoration:none}.nav-tabs a.active{background-color:#fff;border-color:#a6a6a6 #a6a6a6 #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:.5em;background-color:#fff}header .menu{padding:10px;border-bottom:solid #a6a6a6 1px}.menu-row{margin-left:-2px;margin-right:-3px}.filter-input{position:relative;min-height:1px;padding-left:2.5px;padding-right:2.5px;margin-bottom:5px}@media (min-width:768px){.filter-input{float:left;width:25%}}.filter-input .popover{top:27px;display:block;max-width:none;opacity:.9}.filter-input .popover .popover-content{max-height:500px;overflow-y:auto}.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}.prompt-content,footer{box-shadow:0 -1px 3px #d3d3d3}.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-detail .first-line,.flow-detail table{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;word-break:break-all}.prompt-content,.prompt-dialog{position:fixed;bottom:0;left:0;right:0}.flow-table th.sort-asc:after{content:"\f0de"}.flow-table th.sort-desc:after{content:"\f0dd"}.flow-table tr:nth-child(even){background-color:rgba(0,0,0,.05)}.flow-table tr.selected{background-color:rgba(193,215,235,.5)!important}.flow-table tr.highlighted{background-color:rgba(255,204,0,.4)}.flow-table tr.highlighted:nth-child(even){background-color:rgba(255,204,0,.5)}.flow-table td{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.flow-table tr.intercepted.has-response .col-size,.flow-table tr.intercepted.has-response .col-status,.flow-table tr.intercepted.has-response .col-time,.flow-table tr.intercepted:not(.has-response) .col-method,.flow-table tr.intercepted:not(.has-response) .col-path{color:#ff8000}.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:#ff8000}.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-x:auto;overflow-y:scroll}.flow-detail nav{background-color:#F2F2F2}.flow-detail section{padding:5px 12px}.flow-detail .first-line{background-color:#428bca;color:#fff;margin:0 -8px;padding:4px 8px;border-radius:5px;max-height:100px;overflow-y:auto}.flow-detail .request-line{margin-bottom:2px}.flow-detail hr{margin:0 0 5px}.inline-input{margin:0 -5px;padding:0 5px}.inline-input[contenteditable]{background-color:rgba(255,255,255,.2)}.inline-input[contenteditable].has-warning{color:#ffb8b8}.view-options{margin-top:10px}.flow-detail table{width:100%;table-layout:fixed}.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%;padding-right:1em}.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%}.prompt-dialog{top:0;z-index:100;background-color:rgba(0,0,0,.1)}.prompt-content{height:25px;padding:2px 5px;background-color:#fff}.prompt-content .option:not(:last-child)::after{content:", "}.eventlog{height:200px;display:flex;flex-direction:column}.eventlog>div{background-color:#F2F2F2;padding:0 5px;flex:0 0 auto}.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 3px 10px}.eventlog .fa-close:hover{color:#000}.eventlog .btn-toggle{margin-top:-2px;margin-left:3px;padding:2px;font-size:10px;line-height:10px;border-radius:2px}.eventlog .label{vertical-align:middle;display:inline-block;margin-top:-2px;margin-left:3px}footer{padding:0 10px 3px}footer .label{margin-right:3px} /*# sourceMappingURL=app.css.map */ diff --git a/mitmproxy/web/static/app.js b/mitmproxy/web/static/app.js index 191d2052..2fc1540b 100644 --- a/mitmproxy/web/static/app.js +++ b/mitmproxy/web/static/app.js @@ -1,7712 +1,125 @@ (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;o 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; - - if (isFunction(evlistener)) - return 1; - else if (evlistener) - return evlistener.length; - } - return 0; -}; - -EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - -},{}],2:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Query = exports.FlowActions = exports.SettingsActions = exports.ConnectionActions = exports.StoreCmds = exports.ActionTypes = undefined; - -var _jquery = require("jquery"); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _dispatcher = require("./dispatcher.js"); - -var _utils = require("./utils.js"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var ActionTypes = exports.ActionTypes = { - // Connection - CONNECTION_OPEN: "connection_open", - CONNECTION_CLOSE: "connection_close", - CONNECTION_ERROR: "connection_error", - - // Stores - SETTINGS_STORE: "settings", - EVENT_STORE: "events", - FLOW_STORE: "flows" -}; - -var StoreCmds = exports.StoreCmds = { - ADD: "add", - UPDATE: "update", - REMOVE: "remove", - RESET: "reset" -}; - -var ConnectionActions = exports.ConnectionActions = { - open: function open() { - _dispatcher.AppDispatcher.dispatchViewAction({ - type: ActionTypes.CONNECTION_OPEN - }); - }, - close: function close() { - _dispatcher.AppDispatcher.dispatchViewAction({ - type: ActionTypes.CONNECTION_CLOSE - }); - }, - error: function error() { - _dispatcher.AppDispatcher.dispatchViewAction({ - type: ActionTypes.CONNECTION_ERROR - }); - } -}; - -var SettingsActions = exports.SettingsActions = { - update: function update(settings) { - - _jquery2.default.ajax({ - type: "PUT", - url: "/settings", - contentType: 'application/json', - data: JSON.stringify(settings) - }); - - /* - //Facebook Flux: We do an optimistic update on the client already. - AppDispatcher.dispatchViewAction({ - type: ActionTypes.SETTINGS_STORE, - cmd: StoreCmds.UPDATE, - data: settings - }); - */ - } -}; - -var FlowActions = exports.FlowActions = { - accept: function accept(flow) { - _jquery2.default.post("/flows/" + flow.id + "/accept"); - }, - accept_all: function accept_all() { - _jquery2.default.post("/flows/accept"); - }, - "delete": function _delete(flow) { - _jquery2.default.ajax({ - type: "DELETE", - url: "/flows/" + flow.id - }); - }, - duplicate: function duplicate(flow) { - _jquery2.default.post("/flows/" + flow.id + "/duplicate"); - }, - replay: function replay(flow) { - _jquery2.default.post("/flows/" + flow.id + "/replay"); - }, - revert: function revert(flow) { - _jquery2.default.post("/flows/" + flow.id + "/revert"); - }, - update: function update(flow, nextProps) { - /* - //Facebook Flux: We do an optimistic update on the client already. - var nextFlow = _.cloneDeep(flow); - _.merge(nextFlow, nextProps); - AppDispatcher.dispatchViewAction({ - type: ActionTypes.FLOW_STORE, - cmd: StoreCmds.UPDATE, - data: nextFlow - }); - */ - _jquery2.default.ajax({ - type: "PUT", - url: "/flows/" + flow.id, - contentType: 'application/json', - data: JSON.stringify(nextProps) - }); - }, - clear: function clear() { - _jquery2.default.post("/clear"); - }, - download: function download() { - return window.location = "/flows/dump"; - }, - - upload: function upload(file) { - var data = new FormData(); - data.append('file', file); - (0, _utils.fetchApi)("/flows/dump", { - method: 'post', - body: data - }); - } -}; - -var Query = exports.Query = { - SEARCH: "s", - HIGHLIGHT: "h", - SHOW_EVENTLOG: "e" -}; - -},{"./dispatcher.js":31,"./utils.js":41,"jquery":"jquery"}],3:[function(require,module,exports){ -'use strict'; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _reactDom = require('react-dom'); - -var _redux = require('redux'); - -var _reactRedux = require('react-redux'); - -var _reduxLogger = require('redux-logger'); - -var _reduxLogger2 = _interopRequireDefault(_reduxLogger); - -var _reduxThunk = require('redux-thunk'); - -var _reduxThunk2 = _interopRequireDefault(_reduxThunk); - -var _reactRouter = require('react-router'); - -var _connection = require('./connection'); - -var _connection2 = _interopRequireDefault(_connection); - -var _ProxyApp = require('./components/ProxyApp'); - -var _ProxyApp2 = _interopRequireDefault(_ProxyApp); - -var _MainView = require('./components/MainView'); - -var _MainView2 = _interopRequireDefault(_MainView); - -var _index = require('./ducks/index'); - -var _index2 = _interopRequireDefault(_index); - -var _eventLog = require('./ducks/eventLog'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// logger must be last -var store = (0, _redux.createStore)(_index2.default, (0, _redux.applyMiddleware)(_reduxThunk2.default, (0, _reduxLogger2.default)())); - -window.addEventListener('error', function (msg) { - store.dispatch((0, _eventLog.addLogEntry)(msg)); -}); - -// @todo remove this -document.addEventListener('DOMContentLoaded', function () { - window.ws = new _connection2.default("/updates", store.dispatch); - - (0, _reactDom.render)(_react2.default.createElement( - _reactRedux.Provider, - { store: store }, - _react2.default.createElement( - _reactRouter.Router, - { history: _reactRouter.hashHistory }, - _react2.default.createElement(_reactRouter.Redirect, { from: '/', to: '/flows' }), - _react2.default.createElement( - _reactRouter.Route, - { path: '/', component: _ProxyApp2.default }, - _react2.default.createElement(_reactRouter.Route, { path: 'flows', component: _MainView2.default }), - _react2.default.createElement(_reactRouter.Route, { path: 'flows/:flowId/:detailTab', component: _MainView2.default }) - ) - ) - ), document.getElementById("mitmproxy")); -}); - -},{"./components/MainView":18,"./components/ProxyApp":19,"./connection":30,"./ducks/eventLog":32,"./ducks/index":34,"react":"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router","redux":"redux","redux-logger":"redux-logger","redux-thunk":"redux-thunk"}],4:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _redux = require('redux'); - -var _reactRedux = require('react-redux'); - -var _eventLog = require('../ducks/eventLog'); - -var _common = require('./common'); - -var _EventList = require('./EventLog/EventList'); - -var _EventList2 = _interopRequireDefault(_EventList); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -EventLog.propTypes = { - filters: _react.PropTypes.object.isRequired, - events: _react.PropTypes.array.isRequired, - onToggleFilter: _react.PropTypes.func.isRequired, - onClose: _react.PropTypes.func.isRequired -}; - -function EventLog(_ref) { - var filters = _ref.filters; - var events = _ref.events; - var onToggleFilter = _ref.onToggleFilter; - var onClose = _ref.onClose; - - return _react2.default.createElement( - 'div', - { className: 'eventlog' }, - _react2.default.createElement( - 'div', - null, - 'Eventlog', - _react2.default.createElement( - 'div', - { className: 'pull-right' }, - ['debug', 'info', 'web'].map(function (type) { - return _react2.default.createElement(_common.ToggleButton, { key: type, text: type, checked: filters[type], onToggle: function onToggle() { - return onToggleFilter(type); - } }); - }), - _react2.default.createElement('i', { onClick: onClose, className: 'fa fa-close' }) - ) - ), - _react2.default.createElement(_EventList2.default, { events: events }) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - filters: state.eventLog.filter, - events: state.eventLog.filteredEvents - }; -}, function (dispatch) { - return (0, _redux.bindActionCreators)({ - onClose: _eventLog.toggleEventLogVisibility, - onToggleFilter: _eventLog.toggleEventLogFilter - }, dispatch); -})(EventLog); - -},{"../ducks/eventLog":32,"./EventLog/EventList":5,"./common":20,"react":"react","react-redux":"react-redux","redux":"redux"}],5:[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 _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, 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: _react.PropTypes.array.isRequired, - rowHeight: _react.PropTypes.number -}; -EventLogList.defaultProps = { - rowHeight: 18 -}; - - -function LogIcon(_ref) { - var event = _ref.event; - - var icon = { web: 'html5', debug: 'bug' }[event.level] || 'info'; - return _react2.default.createElement('i', { className: 'fa fa-fw fa-' + icon }); -} - -exports.default = (0, _AutoScroll2.default)(EventLogList); - -},{"../helpers/AutoScroll":27,"../helpers/VirtualScroll":28,"react":"react","react-dom":"react-dom","shallowequal":"shallowequal"}],6:[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 _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'); - -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); - -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, 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; - var rowHeight = _props.rowHeight; - var flows = _props.flows; - var 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; - var vScroll = _state.vScroll; - var viewportTop = _state.viewportTop; - var _props2 = this.props; - var flows = _props2.flows; - var selected = _props2.selected; - var 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.onSelect - }); - }), - _react2.default.createElement('tr', { style: { height: vScroll.paddingBottom } }) - ) - ) - ); - } - }]); - - return FlowTable; -}(_react2.default.Component); - -FlowTable.propTypes = { - onSelect: _react.PropTypes.func.isRequired, - flows: _react.PropTypes.array.isRequired, - rowHeight: _react.PropTypes.number, - highlight: _react.PropTypes.string, - selected: _react.PropTypes.object -}; -FlowTable.defaultProps = { - rowHeight: 32 -}; -exports.default = (0, _AutoScroll2.default)(FlowTable); - -},{"../filt/filt":38,"./FlowTable/FlowRow":8,"./FlowTable/FlowTableHead":9,"./helpers/AutoScroll":27,"./helpers/VirtualScroll":28,"react":"react","react-dom":"react-dom","shallowequal":"shallowequal"}],7:[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.sortKeyFun = function (flow) { - return flow.request.scheme; -}; -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; - - 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' }), - _utils.RequestUtils.pretty_url(flow.request) - ); -} - -PathColumn.sortKeyFun = function (flow) { - return _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.sortKeyFun = function (flow) { - return flow.request.method; -}; -MethodColumn.headerClass = 'col-method'; -MethodColumn.headerName = 'Method'; - -function StatusColumn(_ref5) { - var flow = _ref5.flow; - - return _react2.default.createElement( - 'td', - { className: 'col-status' }, - flow.response && flow.response.status_code - ); -} - -StatusColumn.sortKeyFun = function (flow) { - return 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.sortKeyFun = function (flow) { - var total = flow.request.contentLength; - if (flow.response) { - total += flow.response.contentLength || 0; - } - return total; -}; - -SizeColumn.getTotalSize = SizeColumn.sortKeyFun; -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.sortKeyFun = function (flow) { - return flow.response && 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":39,"../../utils.js":41,"classnames":"classnames","react":"react"}],8:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = FlowRow; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _FlowColumns = require('./FlowColumns'); - -var _FlowColumns2 = _interopRequireDefault(_FlowColumns); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -FlowRow.propTypes = { - onSelect: _react.PropTypes.func.isRequired, - flow: _react.PropTypes.object.isRequired, - highlighted: _react.PropTypes.bool, - selected: _react.PropTypes.bool -}; - -function FlowRow(_ref) { - var flow = _ref.flow; - var selected = _ref.selected; - var highlighted = _ref.highlighted; - var 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); - } }, - _FlowColumns2.default.map(function (Column) { - return _react2.default.createElement(Column, { key: Column.name, flow: flow }); - }) - ); -} - -},{"./FlowColumns":7,"classnames":"classnames","react":"react"}],9:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _redux = require('redux'); - -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 = { - onSort: _react.PropTypes.func.isRequired, - sortDesc: _react2.default.PropTypes.bool.isRequired, - sortColumn: _react2.default.PropTypes.string -}; - -function FlowTableHead(_ref) { - var sortColumn = _ref.sortColumn; - var sortDesc = _ref.sortDesc; - var onSort = _ref.onSort; - - 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 _onClick(Column); - } }, - Column.headerName - ); - }) - ); - - function _onClick(Column) { - onSort({ sortColumn: Column.name, sortDesc: Column.name !== sortColumn ? false : !sortDesc }); - } -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - sortDesc: state.flows.sort.sortDesc, - sortColumn: state.flows.sort.sortColumn - }; -}, function (dispatch) { - return (0, _redux.bindActionCreators)({ - onSort: _flows.setSort - }, dispatch); -})(FlowTableHead); - -},{"../../ducks/flows":33,"./FlowColumns":7,"classnames":"classnames","react":"react","react-redux":"react-redux","redux":"redux"}],10:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = Footer; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _utils = require('../utils.js'); - -var _common = require('./common.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -Footer.propTypes = { - settings: _react2.default.PropTypes.object.isRequired -}; - -function Footer(_ref) { - var settings = _ref.settings; - - return _react2.default.createElement( - 'footer', - null, - settings.mode && settings.mode != "regular" && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - settings.mode, - ' mode' - ), - settings.intercept && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'Intercept: ', - settings.intercept - ), - settings.showhost && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'showhost' - ), - settings.no_upstream_cert && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'no-upstream-cert' - ), - settings.rawtcp && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'raw-tcp' - ), - !settings.http2 && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'no-http2' - ), - settings.anticache && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'anticache' - ), - settings.anticomp && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'anticomp' - ), - settings.stickyauth && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'stickyauth: ', - settings.stickyauth - ), - settings.stickycookie && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'stickycookie: ', - settings.stickycookie - ), - settings.stream && _react2.default.createElement( - 'span', - { className: 'label label-success' }, - 'stream: ', - (0, _utils.formatSize)(settings.stream) - ) - ); -} - -},{"../utils.js":41,"./common.js":20,"react":"react"}],11:[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 _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _eventLog = require('../ducks/eventLog'); - -var _MainMenu = require('./Header/MainMenu'); - -var _MainMenu2 = _interopRequireDefault(_MainMenu); - -var _ViewMenu = require('./Header/ViewMenu'); - -var _ViewMenu2 = _interopRequireDefault(_ViewMenu); - -var _OptionMenu = require('./Header/OptionMenu'); - -var _OptionMenu2 = _interopRequireDefault(_OptionMenu); - -var _FileMenu = require('./Header/FileMenu'); - -var _FileMenu2 = _interopRequireDefault(_FileMenu); - -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 Header = function (_Component) { - _inherits(Header, _Component); - - function Header(props, context) { - _classCallCheck(this, Header); - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Header).call(this, props, context)); - - _this.state = { active: Header.entries[0] }; - return _this; - } - - _createClass(Header, [{ - key: 'handleClick', - value: function handleClick(active, e) { - e.preventDefault(); - this.props.updateLocation(active.route); - this.setState({ active: active }); - } - }, { - key: 'render', - value: function render() { - var _this2 = this; - - var Active = this.state.active; - var _props = this.props; - var settings = _props.settings; - var updateLocation = _props.updateLocation; - var query = _props.query; - - - return _react2.default.createElement( - 'header', - null, - _react2.default.createElement( - 'nav', - { className: 'nav-tabs nav-tabs-lg' }, - _react2.default.createElement(_FileMenu2.default, null), - Header.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( - 'div', - { className: 'menu' }, - _react2.default.createElement(Active, { - ref: 'active', - settings: settings, - updateLocation: updateLocation, - query: query - }) - ) - ); - } - }]); - - return Header; -}(_react.Component); - -Header.entries = [_MainMenu2.default, _ViewMenu2.default, _OptionMenu2.default]; -Header.propTypes = { - settings: _react.PropTypes.object.isRequired -}; -exports.default = Header; - -},{"../ducks/eventLog":32,"./Header/FileMenu":12,"./Header/MainMenu":15,"./Header/OptionMenu":16,"./Header/ViewMenu":17,"classnames":"classnames","react":"react"}],12:[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 _classnames = require('classnames'); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _actions = require('../../actions.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; } - -var FileMenu = function (_Component) { - _inherits(FileMenu, _Component); - - function FileMenu(props, context) { - _classCallCheck(this, FileMenu); - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(FileMenu).call(this, props, context)); - - _this.state = { show: false }; - - _this.close = _this.close.bind(_this); - _this.onFileClick = _this.onFileClick.bind(_this); - _this.onNewClick = _this.onNewClick.bind(_this); - _this.onOpenClick = _this.onOpenClick.bind(_this); - _this.onOpenFile = _this.onOpenFile.bind(_this); - _this.onSaveClick = _this.onSaveClick.bind(_this); - return _this; - } - - _createClass(FileMenu, [{ - key: 'close', - value: function close() { - this.setState({ show: false }); - document.removeEventListener('click', this.close); - } - }, { - key: 'onFileClick', - value: function onFileClick(e) { - e.preventDefault(); - - if (this.state.show) { - return; - } - - document.addEventListener('click', this.close); - this.setState({ show: true }); - } - }, { - key: 'onNewClick', - value: function onNewClick(e) { - e.preventDefault(); - if (confirm('Delete all flows?')) { - _actions.FlowActions.clear(); - } - } - }, { - key: 'onOpenClick', - value: function onOpenClick(e) { - e.preventDefault(); - this.fileInput.click(); - } - }, { - key: 'onOpenFile', - value: function onOpenFile(e) { - e.preventDefault(); - if (e.target.files.length > 0) { - _actions.FlowActions.upload(e.target.files[0]); - this.fileInput.value = ''; - } - } - }, { - key: 'onSaveClick', - value: function onSaveClick(e) { - e.preventDefault(); - _actions.FlowActions.download(); - } - }, { - key: 'render', - value: function render() { - var _this2 = this; - - return _react2.default.createElement( - 'div', - { className: (0, _classnames2.default)('dropdown pull-left', { open: this.state.show }) }, - _react2.default.createElement( - 'a', - { href: '#', className: 'special', onClick: this.onFileClick }, - 'mitmproxy' - ), - _react2.default.createElement( - 'ul', - { className: 'dropdown-menu', role: 'menu' }, - _react2.default.createElement( - 'li', - null, - _react2.default.createElement( - 'a', - { href: '#', onClick: this.onNewClick }, - _react2.default.createElement('i', { className: 'fa fa-fw fa-file' }), - 'New' - ) - ), - _react2.default.createElement( - 'li', - null, - _react2.default.createElement( - 'a', - { href: '#', onClick: this.onOpenClick }, - _react2.default.createElement('i', { className: 'fa fa-fw fa-folder-open' }), - 'Open...' - ), - _react2.default.createElement('input', { - ref: function ref(_ref) { - return _this2.fileInput = _ref; - }, - className: 'hidden', - type: 'file', - onChange: this.onOpenFile - }) - ), - _react2.default.createElement( - 'li', - null, - _react2.default.createElement( - 'a', - { href: '#', onClick: this.onSaveClick }, - _react2.default.createElement('i', { className: 'fa fa-fw fa-floppy-o' }), - 'Save...' - ) - ), - _react2.default.createElement('li', { role: 'presentation', className: 'divider' }), - _react2.default.createElement( - 'li', - null, - _react2.default.createElement( - 'a', - { href: 'http://mitm.it/', target: '_blank' }, - _react2.default.createElement('i', { className: 'fa fa-fw fa-external-link' }), - 'Install Certificates...' - ) - ) - ) - ); - } - }]); - - return FileMenu; -}(_react.Component); - -exports.default = FileMenu; - -},{"../../actions.js":2,"classnames":"classnames","react":"react"}],13:[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 _jquery = require('jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -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, 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 = _jquery2.default.getJSON('/filter-help'); - FilterDocs.xhr.fail(function () { - FilterDocs.xhr = null; - }); - } - if (!this.state.doc) { - FilterDocs.xhr.done(function (doc) { - FilterDocs.doc = doc; - _this2.setState({ doc: doc }); - }); - } - } - }, { - key: 'render', - value: function render() { - 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] }, - _react2.default.createElement( - 'td', - null, - cmd[0].replace(' ', ' ') - ), - _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: 'http://docs.mitmproxy.org/en/stable/features/filters.html', - target: '_blank' }, - _react2.default.createElement('i', { className: 'fa fa-external-link' }), - '  mitmproxy docs' - ) - ) - ) - ) - ); - } - }]); - - return FilterDocs; -}(_react.Component); - -FilterDocs.xhr = null; -FilterDocs.doc = null; -exports.default = FilterDocs; - -},{"jquery":"jquery","react":"react"}],14:[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 _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, 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); - 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, null); - } - 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: 'blur', - value: function blur() { - _reactDom2.default.findDOMNode(this.refs.input).blur(); - this.context.returnFocus(); - } - }, { - key: 'select', - value: function select() { - _reactDom2.default.findDOMNode(this.refs.input).select(); - } - }, { - key: 'render', - value: function render() { - var _props = this.props; - var type = _props.type; - var color = _props.color; - var placeholder = _props.placeholder; - var _state = this.state; - var value = _state.value; - var focus = _state.focus; - var 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); - -FilterInput.contextTypes = { - returnFocus: _react2.default.PropTypes.func -}; -exports.default = FilterInput; - -},{"../../filt/filt":38,"../../utils.js":41,"./FilterDocs":13,"classnames":"classnames","react":"react","react-dom":"react-dom"}],15:[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 _actions = require('../../actions.js'); - -var _FilterInput = require('./FilterInput'); - -var _FilterInput2 = _interopRequireDefault(_FilterInput); - -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 _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 MainMenu = function (_Component) { - _inherits(MainMenu, _Component); - - function MainMenu(props, context) { - _classCallCheck(this, MainMenu); - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(MainMenu).call(this, props, context)); - - _this.onSearchChange = _this.onSearchChange.bind(_this); - _this.onHighlightChange = _this.onHighlightChange.bind(_this); - _this.onInterceptChange = _this.onInterceptChange.bind(_this); - return _this; - } - - _createClass(MainMenu, [{ - key: 'onSearchChange', - value: function onSearchChange(val) { - this.props.updateLocation(undefined, _defineProperty({}, _actions.Query.SEARCH, val)); - } - }, { - key: 'onHighlightChange', - value: function onHighlightChange(val) { - this.props.updateLocation(undefined, _defineProperty({}, _actions.Query.HIGHLIGHT, val)); - } - }, { - key: 'onInterceptChange', - value: function onInterceptChange(val) { - _actions.SettingsActions.update({ intercept: val }); - } - }, { - key: 'render', - value: function render() { - var _props = this.props; - var query = _props.query; - var settings = _props.settings; - - - var search = query[_actions.Query.SEARCH] || ''; - var highlight = query[_actions.Query.HIGHLIGHT] || ''; - var intercept = settings.intercept || ''; - - return _react2.default.createElement( - 'div', - null, - _react2.default.createElement( - 'div', - { className: 'menu-row' }, - _react2.default.createElement(_FilterInput2.default, { - ref: 'search', - placeholder: 'Search', - type: 'search', - color: 'black', - value: search, - onChange: this.onSearchChange - }), - _react2.default.createElement(_FilterInput2.default, { - ref: 'highlight', - placeholder: 'Highlight', - type: 'tag', - color: 'hsl(48, 100%, 50%)', - value: highlight, - onChange: this.onHighlightChange - }), - _react2.default.createElement(_FilterInput2.default, { - ref: 'intercept', - placeholder: 'Intercept', - type: 'pause', - color: 'hsl(208, 56%, 53%)', - value: intercept, - onChange: this.onInterceptChange - }) - ), - _react2.default.createElement('div', { className: 'clearfix' }) - ); - } - }]); - - return MainMenu; -}(_react.Component); - -MainMenu.title = 'Start'; -MainMenu.route = 'flows'; -MainMenu.propTypes = { - settings: _react2.default.PropTypes.object.isRequired -}; -exports.default = MainMenu; - -},{"../../actions.js":2,"./FilterInput":14,"react":"react"}],16:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = OptionMenu; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _common = require('../common.js'); - -var _actions = require('../../actions.js'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -OptionMenu.title = "Options"; - -OptionMenu.propTypes = { - settings: _react.PropTypes.object.isRequired -}; - -function OptionMenu(_ref) { - var settings = _ref.settings; - - // @todo use settings.map - return _react2.default.createElement( - 'div', - null, - _react2.default.createElement( - 'div', - { className: 'menu-row' }, - _react2.default.createElement(_common.ToggleButton, { text: 'showhost', - checked: settings.showhost, - onToggle: function onToggle() { - return _actions.SettingsActions.update({ showhost: !settings.showhost }); - } - }), - _react2.default.createElement(_common.ToggleButton, { text: 'no_upstream_cert', - checked: settings.no_upstream_cert, - onToggle: function onToggle() { - return _actions.SettingsActions.update({ no_upstream_cert: !settings.no_upstream_cert }); - } - }), - _react2.default.createElement(_common.ToggleButton, { text: 'rawtcp', - checked: settings.rawtcp, - onToggle: function onToggle() { - return _actions.SettingsActions.update({ rawtcp: !settings.rawtcp }); - } - }), - _react2.default.createElement(_common.ToggleButton, { text: 'http2', - checked: settings.http2, - onToggle: function onToggle() { - return _actions.SettingsActions.update({ http2: !settings.http2 }); - } - }), - _react2.default.createElement(_common.ToggleButton, { text: 'anticache', - checked: settings.anticache, - onToggle: function onToggle() { - return _actions.SettingsActions.update({ anticache: !settings.anticache }); - } - }), - _react2.default.createElement(_common.ToggleButton, { text: 'anticomp', - checked: settings.anticomp, - onToggle: function onToggle() { - return _actions.SettingsActions.update({ anticomp: !settings.anticomp }); - } - }), - _react2.default.createElement(_common.ToggleInputButton, { name: 'stickyauth', placeholder: 'Sticky auth filter', - checked: !!settings.stickyauth, - txt: settings.stickyauth || '', - onToggleChanged: function onToggleChanged(txt) { - return _actions.SettingsActions.update({ stickyauth: !settings.stickyauth ? txt : null }); - } - }), - _react2.default.createElement(_common.ToggleInputButton, { name: 'stickycookie', placeholder: 'Sticky cookie filter', - checked: !!settings.stickycookie, - txt: settings.stickycookie || '', - onToggleChanged: function onToggleChanged(txt) { - return _actions.SettingsActions.update({ stickycookie: !settings.stickycookie ? txt : null }); - } - }), - _react2.default.createElement(_common.ToggleInputButton, { name: 'stream', placeholder: 'stream...', - checked: !!settings.stream, - txt: settings.stream || '', - inputType: 'number', - onToggleChanged: function onToggleChanged(txt) { - return _actions.SettingsActions.update({ stream: !settings.stream ? txt : null }); - } - }) - ), - _react2.default.createElement('div', { className: 'clearfix' }) - ); -} - -},{"../../actions.js":2,"../common.js":20,"react":"react"}],17:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _redux = require('redux'); - -var _reactRedux = require('react-redux'); - -var _common = require('../common.js'); - -var _eventLog = require('../../ducks/eventLog'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -ViewMenu.title = 'View'; -ViewMenu.route = 'flows'; - -ViewMenu.propTypes = { - visible: _react.PropTypes.bool.isRequired, - onToggle: _react.PropTypes.func.isRequired -}; - -function ViewMenu(_ref) { - var visible = _ref.visible; - var onToggle = _ref.onToggle; - - return _react2.default.createElement( - 'div', - null, - _react2.default.createElement( - 'div', - { className: 'menu-row' }, - _react2.default.createElement(_common.ToggleButton, { text: 'Show Event Log', checked: visible, onToggle: onToggle }) - ), - _react2.default.createElement('div', { className: 'clearfix' }) - ); -} - -exports.default = (0, _reactRedux.connect)(function (state) { - return { - visible: state.eventLog.visible - }; -}, function (dispatch) { - return (0, _redux.bindActionCreators)({ - onToggle: _eventLog.toggleEventLogVisibility - }, dispatch); -})(ViewMenu); - -},{"../../ducks/eventLog":32,"../common.js":20,"react":"react","react-redux":"react-redux","redux":"redux"}],18:[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 _redux = require('redux'); - -var _actions = require('../actions.js'); - -var _utils = require('../utils.js'); - -var _common = require('./common.js'); - -var _FlowTable = require('./FlowTable'); - -var _FlowTable2 = _interopRequireDefault(_FlowTable); - -var _index = require('./flowview/index.js'); - -var _index2 = _interopRequireDefault(_index); - -var _flows = require('../ducks/flows'); - -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 MainView = function (_Component) { - _inherits(MainView, _Component); - - function MainView() { - _classCallCheck(this, MainView); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(MainView).apply(this, arguments)); - } - - _createClass(MainView, [{ - key: 'componentWillReceiveProps', - - - /** - * @todo move to actions - * @todo replace with mapStateToProps - */ - value: function componentWillReceiveProps(nextProps) { - // Update redux store with route changes - if (nextProps.routeParams.flowId !== (nextProps.selectedFlow || {}).id) { - this.props.selectFlow(nextProps.routeParams.flowId); - } - if (nextProps.location.query[_actions.Query.SEARCH] !== nextProps.filter) { - this.props.setFilter(nextProps.location.query[_actions.Query.SEARCH], false); - } - if (nextProps.location.query[_actions.Query.HIGHLIGHT] !== nextProps.highlight) { - this.props.setHighlight(nextProps.location.query[_actions.Query.HIGHLIGHT], false); - } - } - - /** - * @todo move to actions - */ - - }, { - key: 'selectFlow', - value: function selectFlow(flow) { - if (flow) { - this.props.updateLocation('/flows/' + flow.id + '/' + (this.props.routeParams.detailTab || 'request')); - } else { - this.props.updateLocation('/flows'); - } - } - - /** - * @todo move to actions - */ - - }, { - key: 'selectFlowRelative', - value: function selectFlowRelative(shift) { - var _props = this.props; - var flows = _props.flows; - var routeParams = _props.routeParams; - var selectedFlow = _props.selectedFlow; - - var index = 0; - if (!routeParams.flowId) { - if (shift < 0) { - index = flows.length - 1; - } - } else { - index = Math.min(Math.max(0, flows.indexOf(selectedFlow) + shift), flows.length - 1); - } - this.selectFlow(flows[index]); - } - - /** - * @todo move to actions - */ - - }, { - key: 'onMainKeyDown', - value: function onMainKeyDown(e) { - var flow = this.props.selectedFlow; - if (e.ctrlKey) { - return; - } - switch (e.keyCode) { - case _utils.Key.K: - case _utils.Key.UP: - this.selectFlowRelative(-1); - break; - case _utils.Key.J: - case _utils.Key.DOWN: - this.selectFlowRelative(+1); - break; - case _utils.Key.SPACE: - case _utils.Key.PAGE_DOWN: - this.selectFlowRelative(+10); - break; - case _utils.Key.PAGE_UP: - this.selectFlowRelative(-10); - break; - case _utils.Key.END: - this.selectFlowRelative(+1e10); - break; - case _utils.Key.HOME: - this.selectFlowRelative(-1e10); - break; - case _utils.Key.ESC: - this.selectFlow(null); - break; - case _utils.Key.H: - case _utils.Key.LEFT: - if (this.refs.flowDetails) { - this.refs.flowDetails.nextTab(-1); - } - break; - case _utils.Key.L: - case _utils.Key.TAB: - case _utils.Key.RIGHT: - if (this.refs.flowDetails) { - this.refs.flowDetails.nextTab(+1); - } - break; - case _utils.Key.C: - if (e.shiftKey) { - _actions.FlowActions.clear(); - } - break; - case _utils.Key.D: - if (flow) { - if (e.shiftKey) { - _actions.FlowActions.duplicate(flow); - } else { - _actions.FlowActions.delete(flow); - } - } - break; - case _utils.Key.A: - if (e.shiftKey) { - _actions.FlowActions.accept_all(); - } else if (flow && flow.intercepted) { - _actions.FlowActions.accept(flow); - } - break; - case _utils.Key.R: - if (!e.shiftKey && flow) { - _actions.FlowActions.replay(flow); - } - break; - case _utils.Key.V: - if (e.shiftKey && flow && flow.modified) { - _actions.FlowActions.revert(flow); - } - break; - case _utils.Key.E: - if (this.refs.flowDetails) { - this.refs.flowDetails.promptEdit(); - } - break; - case _utils.Key.SHIFT: - break; - default: - console.debug('keydown', e.keyCode); - return; - } - e.preventDefault(); - } - }, { - key: 'render', - value: function render() { - var _this2 = this; - - var _props2 = this.props; - var flows = _props2.flows; - var selectedFlow = _props2.selectedFlow; - var highlight = _props2.highlight; - var sort = _props2.sort; - - return _react2.default.createElement( - 'div', - { className: 'main-view' }, - _react2.default.createElement(_FlowTable2.default, { - ref: 'flowTable', - flows: flows, - selected: selectedFlow, - highlight: highlight, - onSelect: function onSelect(flow) { - return _this2.selectFlow(flow); - } - }), - selectedFlow && [_react2.default.createElement(_common.Splitter, { key: 'splitter' }), _react2.default.createElement(_index2.default, { - key: 'flowDetails', - ref: 'flowDetails', - tab: this.props.routeParams.detailTab, - query: this.props.query, - updateLocation: this.props.updateLocation, - flow: selectedFlow - })] - ); - } - }]); - - return MainView; -}(_react.Component); - -MainView.propTypes = { - highlight: _react.PropTypes.string, - sort: _react.PropTypes.object -}; -exports.default = (0, _reactRedux.connect)(function (state) { - return { - flows: state.flows.view, - filter: state.flows.filter, - sort: state.flows.sort, - highlight: state.flows.highlight, - selectedFlow: state.flows.all.byId[state.flows.selected[0]] - }; -}, function (dispatch) { - return (0, _redux.bindActionCreators)({ - selectFlow: _flows.selectFlow, - setFilter: _flows.setFilter, - setHighlight: _flows.setHighlight - }, dispatch); -}, undefined, { withRef: true })(MainView); - -},{"../actions.js":2,"../ducks/flows":33,"../utils.js":41,"./FlowTable":6,"./common.js":20,"./flowview/index.js":24,"react":"react","react-redux":"react-redux","redux":"redux"}],19:[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 _reactDom = require("react-dom"); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _lodash = require("lodash"); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _reactRedux = require("react-redux"); - -var _common = require("./common.js"); - -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 _store = require("../store/store.js"); - -var _utils = require("../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; } - -var ProxyAppMain = function (_Component) { - _inherits(ProxyAppMain, _Component); - - function ProxyAppMain(props, context) { - _classCallCheck(this, ProxyAppMain); - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ProxyAppMain).call(this, props, context)); - - _this.settingsStore = new _store.SettingsStore(); - - // Default Settings before fetch - _lodash2.default.extend(_this.settingsStore.dict, {}); - - _this.state = { settings: _this.settingsStore.dict }; - - _this.focus = _this.focus.bind(_this); - _this.onKeyDown = _this.onKeyDown.bind(_this); - _this.updateLocation = _this.updateLocation.bind(_this); - _this.onSettingsChange = _this.onSettingsChange.bind(_this); - return _this; - } - - /** - * @todo move to actions - */ - - - _createClass(ProxyAppMain, [{ - key: "updateLocation", - value: function updateLocation(pathname, queryUpdate) { - if (pathname === undefined) { - pathname = this.props.location.pathname; - } - var query = this.props.location.query; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = Object.keys(queryUpdate || {})[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var key = _step.value; - - query[key] = queryUpdate[key] || undefined; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - this.context.router.replace({ pathname: pathname, query: query }); - } - - /** - * @todo pass in with props - */ - - }, { - key: "getQuery", - value: function getQuery() { - // For whatever reason, react-router always returns the same object, which makes comparing - // the current props with nextProps impossible. As a workaround, we just clone the query object. - return _lodash2.default.clone(this.props.location.query); - } - - /** - * @todo remove settings store - * @todo connect websocket here - * @todo listen to window's key events - */ - - }, { - key: "componentDidMount", - value: function componentDidMount() { - this.focus(); - this.settingsStore.addListener("recalculate", this.onSettingsChange); - } - - /** - * @todo remove settings store - * @todo disconnect websocket here - * @todo stop listening to window's key events - */ - - }, { - key: "componentWillUnmount", - value: function componentWillUnmount() { - this.settingsStore.removeListener("recalculate", this.onSettingsChange); - } - - /** - * @todo move to actions - */ - - }, { - key: "onSettingsChange", - value: function onSettingsChange() { - this.setState({ settings: this.settingsStore.dict }); - } - - /** - * @todo use props - */ - - }, { - key: "getChildContext", - value: function getChildContext() { - return { - returnFocus: this.focus, - location: this.props.location - }; - } - - /** - * @todo remove it - */ - - }, { - key: "focus", - value: function focus() { - document.activeElement.blur(); - window.getSelection().removeAllRanges(); - _reactDom2.default.findDOMNode(this).focus(); - } - - /** - * @todo move to actions - */ - - }, { - key: "onKeyDown", - value: function onKeyDown(e) { - var _this2 = this; - - var name = null; - - switch (e.keyCode) { - case _utils.Key.I: - name = "intercept"; - break; - case _utils.Key.L: - name = "search"; - break; - case _utils.Key.H: - name = "highlight"; - break; - default: - var main = this.refs.view; - if (this.refs.view.getWrappedInstance) { - main = this.refs.view.getWrappedInstance(); - } - if (main.onMainKeyDown) { - main.onMainKeyDown(e); - } - return; // don't prevent default then - } - - if (name) { - (function () { - var headerComponent = _this2.refs.header; - headerComponent.setState({ active: _Header2.default.entries.MainMenu }, function () { - headerComponent.refs.active.refs[name].select(); - }); - })(); - } - - e.preventDefault(); - } - }, { - key: "render", - value: function render() { - var _props = this.props; - var showEventLog = _props.showEventLog; - var location = _props.location; - var children = _props.children; - var settings = this.state.settings; - - var query = this.getQuery(); - return _react2.default.createElement( - "div", - { id: "container", tabIndex: "0", onKeyDown: this.onKeyDown }, - _react2.default.createElement(_Header2.default, { ref: "header", settings: settings, updateLocation: this.updateLocation, query: query }), - _react2.default.cloneElement(children, { ref: "view", location: location, query: query, updateLocation: this.updateLocation }), - showEventLog && [_react2.default.createElement(_common.Splitter, { key: "splitter", axis: "y" }), _react2.default.createElement(_EventLog2.default, { key: "eventlog" })], - _react2.default.createElement(_Footer2.default, { settings: settings }) - ); - } - }]); - - return ProxyAppMain; -}(_react.Component); - -ProxyAppMain.childContextTypes = { - returnFocus: _react.PropTypes.func.isRequired, - location: _react.PropTypes.object.isRequired -}; -ProxyAppMain.contextTypes = { - router: _react.PropTypes.object.isRequired -}; -exports.default = (0, _reactRedux.connect)(function (state) { - return { - showEventLog: state.eventLog.visible - }; -})(ProxyAppMain); - -},{"../store/store.js":40,"../utils.js":41,"./EventLog":4,"./Footer":10,"./Header":11,"./common.js":20,"lodash":"lodash","react":"react","react-dom":"react-dom","react-redux":"react-redux"}],20:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ToggleInputButton = exports.ToggleButton = exports.Splitter = 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 _reactDom = require("react-dom"); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _utils = require("../utils.js"); - -var _lodash = require("lodash"); - -var _lodash2 = _interopRequireDefault(_lodash); - -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 Splitter = exports.Splitter = _react2.default.createClass({ - displayName: "Splitter", - - getDefaultProps: function getDefaultProps() { - return { - axis: "x" - }; - }, - getInitialState: function getInitialState() { - return { - applied: false, - startX: false, - startY: false - }; - }, - onMouseDown: function onMouseDown(e) { - this.setState({ - startX: e.pageX, - startY: e.pageY - }); - window.addEventListener("mousemove", this.onMouseMove); - window.addEventListener("mouseup", this.onMouseUp); - // Occasionally, only a dragEnd event is triggered, but no mouseUp. - window.addEventListener("dragend", this.onDragEnd); - }, - onDragEnd: function onDragEnd() { - _reactDom2.default.findDOMNode(this).style.transform = ""; - window.removeEventListener("dragend", this.onDragEnd); - window.removeEventListener("mouseup", this.onMouseUp); - window.removeEventListener("mousemove", this.onMouseMove); - }, - onMouseUp: function onMouseUp(e) { - this.onDragEnd(); - - var node = _reactDom2.default.findDOMNode(this); - var prev = node.previousElementSibling; - var next = node.nextElementSibling; - - var dX = e.pageX - this.state.startX; - var dY = e.pageY - this.state.startY; - var flexBasis; - if (this.props.axis === "x") { - flexBasis = prev.offsetWidth + dX; - } else { - flexBasis = prev.offsetHeight + dY; - } - - prev.style.flex = "0 0 " + Math.max(0, flexBasis) + "px"; - next.style.flex = "1 1 auto"; - - this.setState({ - applied: true - }); - this.onResize(); - }, - onMouseMove: function onMouseMove(e) { - var dX = 0, - dY = 0; - if (this.props.axis === "x") { - dX = e.pageX - this.state.startX; - } else { - dY = e.pageY - this.state.startY; - } - _reactDom2.default.findDOMNode(this).style.transform = "translate(" + dX + "px," + dY + "px)"; - }, - onResize: function onResize() { - // Trigger a global resize event. This notifies components that employ virtual scrolling - // that their viewport may have changed. - window.setTimeout(function () { - window.dispatchEvent(new CustomEvent("resize")); - }, 1); - }, - reset: function reset(willUnmount) { - if (!this.state.applied) { - return; - } - var node = _reactDom2.default.findDOMNode(this); - var prev = node.previousElementSibling; - var next = node.nextElementSibling; - - prev.style.flex = ""; - next.style.flex = ""; - - if (!willUnmount) { - this.setState({ - applied: false - }); - } - this.onResize(); - }, - componentWillUnmount: function componentWillUnmount() { - this.reset(true); - }, - render: function render() { - var className = "splitter"; - if (this.props.axis === "x") { - className += " splitter-x"; - } else { - className += " splitter-y"; - } - return _react2.default.createElement( - "div", - { className: className }, - _react2.default.createElement("div", { onMouseDown: this.onMouseDown, draggable: "true" }) - ); - } -}); - -var ToggleButton = exports.ToggleButton = function ToggleButton(_ref) { - var checked = _ref.checked; - var onToggle = _ref.onToggle; - var text = _ref.text; - return _react2.default.createElement( - "div", - { className: "btn btn-toggle " + (checked ? "btn-primary" : "btn-default"), onClick: onToggle }, - _react2.default.createElement("i", { className: "fa fa-fw " + (checked ? "fa-check-square-o" : "fa-square-o") }), - " ", - text - ); -}; - -ToggleButton.propTypes = { - checked: _react2.default.PropTypes.bool.isRequired, - onToggle: _react2.default.PropTypes.func.isRequired, - text: _react2.default.PropTypes.string.isRequired -}; - -var ToggleInputButton = exports.ToggleInputButton = function (_React$Component) { - _inherits(ToggleInputButton, _React$Component); - - function ToggleInputButton(props) { - _classCallCheck(this, ToggleInputButton); - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(ToggleInputButton).call(this, props)); - - _this.state = { txt: props.txt }; - return _this; - } - - _createClass(ToggleInputButton, [{ - key: "render", - value: function render() { - var _this2 = this; - - return _react2.default.createElement( - "div", - { className: "input-group toggle-input-btn" }, - _react2.default.createElement( - "span", - { - className: "input-group-btn", - onClick: function onClick() { - return _this2.props.onToggleChanged(_this2.state.txt); - } }, - _react2.default.createElement( - "div", - { className: "btn " + (this.props.checked ? "btn-primary" : "btn-default") }, - _react2.default.createElement("span", { className: "fa " + (this.props.checked ? "fa-check-square-o" : "fa-square-o") }), - " ", - this.props.name - ) - ), - _react2.default.createElement("input", { - className: "form-control", - placeholder: this.props.placeholder, - disabled: this.props.checked, - value: this.state.txt, - type: this.props.inputType, - onChange: function onChange(e) { - return _this2.setState({ txt: e.target.value }); - }, - onKeyDown: function onKeyDown(e) { - if (e.keyCode === _utils.Key.ENTER) _this2.props.onToggleChanged(_this2.state.txt);e.stopPropagation(); - } }) - ); - } - }]); - - return ToggleInputButton; -}(_react2.default.Component); - -ToggleInputButton.propTypes = { - name: _react2.default.PropTypes.string.isRequired, - txt: _react2.default.PropTypes.string.isRequired, - onToggleChanged: _react2.default.PropTypes.func.isRequired -}; - -},{"../utils.js":41,"lodash":"lodash","react":"react","react-dom":"react-dom"}],21:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.ValueEditor = 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 _reactDom = require("react-dom"); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _utils = require("../utils.js"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var contentToHtml = function contentToHtml(content) { - return _.escape(content); -}; -var nodeToContent = function nodeToContent(node) { - return node.textContent; -}; - -/* - Basic Editor Functionality - */ -var EditorBase = _react2.default.createClass({ - displayName: "EditorBase", - - propTypes: { - content: _react2.default.PropTypes.string.isRequired, - onDone: _react2.default.PropTypes.func.isRequired, - contentToHtml: _react2.default.PropTypes.func, - nodeToContent: _react2.default.PropTypes.func, // content === nodeToContent( Node ) - onStop: _react2.default.PropTypes.func, - submitOnEnter: _react2.default.PropTypes.bool, - className: _react2.default.PropTypes.string, - tag: _react2.default.PropTypes.string - }, - getDefaultProps: function getDefaultProps() { - return { - contentToHtml: contentToHtml, - nodeToContent: nodeToContent, - submitOnEnter: true, - className: "", - tag: "div" - }; - }, - getInitialState: function getInitialState() { - return { - editable: false - }; - }, - render: function render() { - var className = "inline-input " + this.props.className; - var html = { __html: this.props.contentToHtml(this.props.content) }; - var Tag = this.props.tag; - return _react2.default.createElement(Tag, _extends({}, this.props, { - tabIndex: "0", - className: className, - contentEditable: this.state.editable || undefined // workaround: use undef instead of false to remove attr - , onFocus: this.onFocus, - onMouseDown: this.onMouseDown, - onClick: this.onClick, - onBlur: this._stop, - onKeyDown: this.onKeyDown, - onInput: this.onInput, - onPaste: this.onPaste, - dangerouslySetInnerHTML: html - })); - }, - onPaste: function onPaste(e) { - e.preventDefault(); - var content = e.clipboardData.getData("text/plain"); - document.execCommand("insertHTML", false, content); - }, - onMouseDown: function onMouseDown(e) { - this._mouseDown = true; - window.addEventListener("mouseup", this.onMouseUp); - this.props.onMouseDown && this.props.onMouseDown(e); - }, - onMouseUp: function onMouseUp() { - if (this._mouseDown) { - this._mouseDown = false; - window.removeEventListener("mouseup", this.onMouseUp); - } - }, - onClick: function onClick(e) { - this.onMouseUp(); - this.onFocus(e); - }, - onFocus: function onFocus(e) { - console.log("onFocus", this._mouseDown, this._ignore_events, this.state.editable); - if (this._mouseDown || this._ignore_events || this.state.editable) { - 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; - 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(_reactDom2.default.findDOMNode(this)); - } - - this._ignore_events = true; - this.setState({ editable: true }, function () { - var node = _reactDom2.default.findDOMNode(this); - node.blur(); - node.focus(); - this._ignore_events = false; - //sel.removeAllRanges(); - //sel.addRange(range); - }); - }, - stop: function stop() { - // 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. - _reactDom2.default.findDOMNode(this).blur(); - this.props.onStop && this.props.onStop(); - }, - _stop: function _stop(e) { - if (this._ignore_events) { - return; - } - console.log("_stop", _.extend({}, e)); - window.getSelection().removeAllRanges(); //make sure that selection is cleared on blur - var node = _reactDom2.default.findDOMNode(this); - var content = this.props.nodeToContent(node); - this.setState({ editable: false }); - this.props.onDone(content); - this.props.onBlur && this.props.onBlur(e); - }, - reset: function reset() { - _reactDom2.default.findDOMNode(this).innerHTML = this.props.contentToHtml(this.props.content); - }, - onKeyDown: function onKeyDown(e) { - e.stopPropagation(); - switch (e.keyCode) { - case _utils.Key.ESC: - e.preventDefault(); - this.reset(); - this.stop(); - break; - case _utils.Key.ENTER: - if (this.props.submitOnEnter && !e.shiftKey) { - e.preventDefault(); - this.stop(); - } - break; - default: - break; - } - }, - onInput: function onInput() { - var node = _reactDom2.default.findDOMNode(this); - var content = this.props.nodeToContent(node); - this.props.onInput && this.props.onInput(content); - } -}); - -/* - Add Validation to EditorBase - */ -var ValidateEditor = _react2.default.createClass({ - displayName: "ValidateEditor", - - propTypes: { - content: _react2.default.PropTypes.string.isRequired, - onDone: _react2.default.PropTypes.func.isRequired, - onInput: _react2.default.PropTypes.func, - isValid: _react2.default.PropTypes.func, - className: _react2.default.PropTypes.string - }, - getInitialState: function getInitialState() { - return { - currentContent: this.props.content - }; - }, - componentWillReceiveProps: function componentWillReceiveProps() { - this.setState({ currentContent: this.props.content }); - }, - onInput: function onInput(content) { - this.setState({ currentContent: content }); - this.props.onInput && this.props.onInput(content); - }, - render: function render() { - var className = this.props.className || ""; - if (this.props.isValid) { - if (this.props.isValid(this.state.currentContent)) { - className += " has-success"; - } else { - className += " has-warning"; - } - } - return _react2.default.createElement(EditorBase, _extends({}, this.props, { - ref: "editor", - className: className, - onDone: this.onDone, - onInput: this.onInput - })); - }, - onDone: function onDone(content) { - if (this.props.isValid && !this.props.isValid(content)) { - this.refs.editor.reset(); - content = this.props.content; - } - this.props.onDone(content); - } -}); - -/* - Text Editor with mitmweb-specific convenience features - */ -var ValueEditor = exports.ValueEditor = _react2.default.createClass({ - displayName: "ValueEditor", - - contextTypes: { - returnFocus: _react2.default.PropTypes.func - }, - propTypes: { - content: _react2.default.PropTypes.string.isRequired, - onDone: _react2.default.PropTypes.func.isRequired, - inline: _react2.default.PropTypes.bool - }, - render: function render() { - var tag = this.props.inline ? "span" : "div"; - return _react2.default.createElement(ValidateEditor, _extends({}, this.props, { - onStop: this.onStop, - tag: tag - })); - }, - focus: function focus() { - _reactDom2.default.findDOMNode(this).focus(); - }, - onStop: function onStop() { - this.context.returnFocus(); - } -}); - -},{"../utils.js":41,"react":"react","react-dom":"react-dom"}],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; }; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _lodash = require("lodash"); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _utils = require("../../flow/utils.js"); - -var _utils2 = require("../../utils.js"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var ViewImage = _react2.default.createClass({ - displayName: "ViewImage", - - propTypes: { - flow: _react2.default.PropTypes.object.isRequired, - message: _react2.default.PropTypes.object.isRequired - }, - statics: { - regex: /^image\/(png|jpe?g|gif|vnc.microsoft.icon|x-icon)$/i, - matches: function matches(message) { - return ViewImage.regex.test(_utils.MessageUtils.getContentType(message)); - } - }, - render: function render() { - var url = _utils.MessageUtils.getContentURL(this.props.flow, this.props.message); - return _react2.default.createElement( - "div", - { className: "flowview-image" }, - _react2.default.createElement("img", { src: url, alt: "preview", className: "img-thumbnail" }) - ); - } -}); - -var ContentLoader = _react2.default.createClass({ - displayName: "ContentLoader", - - propTypes: { - flow: _react2.default.PropTypes.object.isRequired, - message: _react2.default.PropTypes.object.isRequired - }, - getInitialState: function getInitialState() { - return { - content: undefined, - request: undefined - }; - }, - requestContent: function requestContent(nextProps) { - if (this.state.request) { - this.state.request.abort(); - } - var request = _utils.MessageUtils.getContent(nextProps.flow, nextProps.message); - this.setState({ - content: undefined, - request: request - }); - request.done(function (data) { - this.setState({ content: data }); - }.bind(this)).fail(function (jqXHR, textStatus, errorThrown) { - if (textStatus === "abort") { - return; - } - this.setState({ content: "AJAX Error: " + textStatus + "\r\n" + errorThrown }); - }.bind(this)).always(function () { - this.setState({ request: undefined }); - }.bind(this)); - }, - componentWillMount: function componentWillMount() { - this.requestContent(this.props); - }, - componentWillReceiveProps: function componentWillReceiveProps(nextProps) { - if (nextProps.message !== this.props.message) { - this.requestContent(nextProps); - } - }, - componentWillUnmount: function componentWillUnmount() { - if (this.state.request) { - this.state.request.abort(); - } - }, - render: function render() { - if (!this.state.content) { - return _react2.default.createElement( - "div", - { className: "text-center" }, - _react2.default.createElement("i", { className: "fa fa-spinner fa-spin" }) - ); - } - return _react2.default.cloneElement(this.props.children, { - content: this.state.content - }); - } -}); - -var ViewRaw = _react2.default.createClass({ - displayName: "ViewRaw", - - propTypes: { - content: _react2.default.PropTypes.string.isRequired - }, - statics: { - textView: true, - matches: function matches(message) { - return true; - } - }, - render: function render() { - return _react2.default.createElement( - "pre", - null, - this.props.content - ); - } -}); - -var ViewJSON = _react2.default.createClass({ - displayName: "ViewJSON", - - propTypes: { - content: _react2.default.PropTypes.string.isRequired - }, - statics: { - textView: true, - regex: /^application\/json$/i, - matches: function matches(message) { - return ViewJSON.regex.test(_utils.MessageUtils.getContentType(message)); - } - }, - render: function render() { - var json = this.props.content; - try { - json = JSON.stringify(JSON.parse(json), null, 2); - } catch (e) { - // @noop - } - return _react2.default.createElement( - "pre", - null, - json - ); - } -}); - -var ViewAuto = _react2.default.createClass({ - displayName: "ViewAuto", - - propTypes: { - message: _react2.default.PropTypes.object.isRequired, - flow: _react2.default.PropTypes.object.isRequired - }, - statics: { - matches: function matches() { - return false; // don't match itself - }, - findView: function findView(message) { - for (var i = 0; i < all.length; i++) { - if (all[i].matches(message)) { - return all[i]; - } - } - return all[all.length - 1]; - } - }, - render: function render() { - var _props = this.props; - var message = _props.message; - var flow = _props.flow; - - var View = ViewAuto.findView(this.props.message); - if (View.textView) { - return _react2.default.createElement( - ContentLoader, - { message: message, flow: flow }, - _react2.default.createElement(View, { content: "" }) - ); - } else { - return _react2.default.createElement(View, { message: message, flow: flow }); - } - } -}); - -var all = [ViewAuto, ViewImage, ViewJSON, ViewRaw]; - -var ContentEmpty = _react2.default.createClass({ - displayName: "ContentEmpty", - - render: function render() { - var message_name = this.props.flow.request === this.props.message ? "request" : "response"; - return _react2.default.createElement( - "div", - { className: "alert alert-info" }, - "No ", - message_name, - " content." - ); - } -}); - -var ContentMissing = _react2.default.createClass({ - displayName: "ContentMissing", - - render: function render() { - var message_name = this.props.flow.request === this.props.message ? "Request" : "Response"; - return _react2.default.createElement( - "div", - { className: "alert alert-info" }, - message_name, - " content missing." - ); - } -}); - -var TooLarge = _react2.default.createClass({ - displayName: "TooLarge", - - statics: { - isTooLarge: function isTooLarge(message) { - var max_mb = ViewImage.matches(message) ? 10 : 0.2; - return message.contentLength > 1024 * 1024 * max_mb; - } - }, - render: function render() { - var size = (0, _utils2.formatSize)(this.props.message.contentLength); - return _react2.default.createElement( - "div", - { className: "alert alert-warning" }, - _react2.default.createElement( - "button", - { onClick: this.props.onClick, className: "btn btn-xs btn-warning pull-right" }, - "Display anyway" - ), - size, - " content size." - ); - } -}); - -var ViewSelector = _react2.default.createClass({ - displayName: "ViewSelector", - - render: function render() { - var views = []; - for (var i = 0; i < all.length; i++) { - var view = all[i]; - var className = "btn btn-default"; - if (view === this.props.active) { - className += " active"; - } - var text; - if (view === ViewAuto) { - text = "auto: " + ViewAuto.findView(this.props.message).displayName.toLowerCase().replace("view", ""); - } else { - text = view.displayName.toLowerCase().replace("view", ""); - } - views.push(_react2.default.createElement( - "button", - { - key: view.displayName, - onClick: this.props.selectView.bind(null, view), - className: className }, - text - )); - } - - return _react2.default.createElement( - "div", - { className: "view-selector btn-group btn-group-xs" }, - views - ); - } -}); - -var ContentView = _react2.default.createClass({ - displayName: "ContentView", - - getInitialState: function getInitialState() { - return { - displayLarge: false, - View: ViewAuto - }; - }, - propTypes: { - // It may seem a bit weird at the first glance: - // Every view takes the flow and the message as props, e.g. - // - flow: _react2.default.PropTypes.object.isRequired, - message: _react2.default.PropTypes.object.isRequired - }, - selectView: function selectView(view) { - this.setState({ - View: view - }); - }, - displayLarge: function displayLarge() { - this.setState({ displayLarge: true }); - }, - componentWillReceiveProps: function componentWillReceiveProps(nextProps) { - if (nextProps.message !== this.props.message) { - this.setState(this.getInitialState()); - } - }, - render: function render() { - var _props2 = this.props; - var flow = _props2.flow; - var message = _props2.message; - - var message = this.props.message; - if (message.contentLength === 0) { - return _react2.default.createElement(ContentEmpty, this.props); - } else if (message.contentLength === null) { - return _react2.default.createElement(ContentMissing, this.props); - } else if (!this.state.displayLarge && TooLarge.isTooLarge(message)) { - return _react2.default.createElement(TooLarge, _extends({}, this.props, { onClick: this.displayLarge })); - } - - var downloadUrl = _utils.MessageUtils.getContentURL(this.props.flow, message); - - return _react2.default.createElement( - "div", - null, - this.state.View.textView ? _react2.default.createElement( - ContentLoader, - { flow: flow, message: message }, - _react2.default.createElement(this.state.View, { content: "" }) - ) : _react2.default.createElement(this.state.View, { flow: flow, message: message }), - _react2.default.createElement( - "div", - { className: "view-options text-center" }, - _react2.default.createElement(ViewSelector, { selectView: this.selectView, active: this.state.View, message: message }), - " ", - _react2.default.createElement( - "a", - { className: "btn btn-default btn-xs", href: downloadUrl }, - _react2.default.createElement("i", { className: "fa fa-download" }) - ) - ) - ); - } -}); - -exports.default = ContentView; - -},{"../../flow/utils.js":39,"../../utils.js":41,"lodash":"lodash","react":"react"}],23:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -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 }; } - -var TimeStamp = _react2.default.createClass({ - displayName: "TimeStamp", - - render: function render() { - - if (!this.props.t) { - //should be return null, but that triggers a React bug. - return _react2.default.createElement("tr", null); - } - - var ts = (0, _utils.formatTimeStamp)(this.props.t); - - var delta; - if (this.props.deltaTo) { - delta = (0, _utils.formatTimeDelta)(1000 * (this.props.t - this.props.deltaTo)); - delta = _react2.default.createElement( - "span", - { className: "text-muted" }, - "(" + delta + ")" - ); - } else { - delta = null; - } - - return _react2.default.createElement( - "tr", - null, - _react2.default.createElement( - "td", - null, - this.props.title + ":" - ), - _react2.default.createElement( - "td", - null, - ts, - " ", - delta - ) - ); - } -}); - -var ConnectionInfo = _react2.default.createClass({ - displayName: "ConnectionInfo", - - - render: function render() { - var conn = this.props.conn; - var address = conn.address.address.join(":"); - - var sni = _react2.default.createElement("tr", { key: "sni" }); //should be null, but that triggers a React bug. - if (conn.sni) { - 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 - ) - ); - } - 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, - address - ) - ), - sni - ) - ); - } -}); - -var CertificateInfo = _react2.default.createClass({ - displayName: "CertificateInfo", - - render: function render() { - //TODO: We should fetch human-readable certificate representation - // from the server - var flow = this.props.flow; - var client_conn = flow.client_conn; - var server_conn = flow.server_conn; - - var preStyle = { maxHeight: 100 }; - return _react2.default.createElement( - "div", - null, - client_conn.cert ? _react2.default.createElement( - "h4", - null, - "Client Certificate" - ) : null, - client_conn.cert ? _react2.default.createElement( - "pre", - { style: preStyle }, - client_conn.cert - ) : null, - server_conn.cert ? _react2.default.createElement( - "h4", - null, - "Server Certificate" - ) : null, - server_conn.cert ? _react2.default.createElement( - "pre", - { style: preStyle }, - server_conn.cert - ) : null - ); - } -}); - -var Timing = _react2.default.createClass({ - displayName: "Timing", - - render: function render() { - var flow = this.props.flow; - var sc = flow.server_conn; - var cc = flow.client_conn; - var req = flow.request; - var resp = 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 - }]; - - if (flow.response) { - timestamps.push({ - title: "First response byte", - t: resp.timestamp_start, - deltaTo: req.timestamp_start - }, { - title: "Response complete", - t: resp.timestamp_end, - deltaTo: req.timestamp_start - }); - } - - //Add unique key for each row. - timestamps.forEach(function (e) { - e.key = e.title; - }); - - timestamps = _lodash2.default.sortBy(timestamps, 't'); - - var rows = timestamps.map(function (e) { - return _react2.default.createElement(TimeStamp, e); - }); - - return _react2.default.createElement( - "div", - null, - _react2.default.createElement( - "h4", - null, - "Timing" - ), - _react2.default.createElement( - "table", - { className: "timing-table" }, - _react2.default.createElement( - "tbody", - null, - rows - ) - ) - ); - } -}); - -var Details = _react2.default.createClass({ - displayName: "Details", - - render: function render() { - var flow = this.props.flow; - var client_conn = flow.client_conn; - var server_conn = flow.server_conn; - return _react2.default.createElement( - "section", - null, - _react2.default.createElement( - "h4", - null, - "Client Connection" - ), - _react2.default.createElement(ConnectionInfo, { conn: client_conn }), - _react2.default.createElement( - "h4", - null, - "Server Connection" - ), - _react2.default.createElement(ConnectionInfo, { conn: server_conn }), - _react2.default.createElement(CertificateInfo, { flow: flow }), - _react2.default.createElement(Timing, { flow: flow }) - ); - } -}); - -exports.default = Details; - -},{"../../utils.js":41,"lodash":"lodash","react":"react"}],24:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _nav = require("./nav.js"); - -var _nav2 = _interopRequireDefault(_nav); - -var _messages = require("./messages.js"); - -var _details = require("./details.js"); - -var _details2 = _interopRequireDefault(_details); - -var _prompt = require("../prompt.js"); - -var _prompt2 = _interopRequireDefault(_prompt); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var allTabs = { - request: _messages.Request, - response: _messages.Response, - error: _messages.Error, - details: _details2.default -}; - -var FlowView = _react2.default.createClass({ - displayName: "FlowView", - - getInitialState: function getInitialState() { - return { - prompt: false - }; - }, - getTabs: function getTabs(flow) { - var tabs = []; - ["request", "response", "error"].forEach(function (e) { - if (flow[e]) { - tabs.push(e); - } - }); - tabs.push("details"); - return tabs; - }, - nextTab: function nextTab(i) { - var tabs = this.getTabs(this.props.flow); - var currentIndex = tabs.indexOf(this.props.tab); - // JS modulo operator doesn't correct negative numbers, make sure that we are positive. - var nextIndex = (currentIndex + i + tabs.length) % tabs.length; - this.selectTab(tabs[nextIndex]); - }, - selectTab: function selectTab(panel) { - this.props.updateLocation("/flows/" + this.props.flow.id + "/" + panel); - }, - promptEdit: function promptEdit() { - var options; - switch (this.props.tab) { - case "request": - options = ["method", "url", { text: "http version", key: "v" }, "header" - /*, "content"*/]; - break; - case "response": - options = [{ text: "http version", key: "v" }, "code", "message", "header" - /*, "content"*/]; - break; - case "details": - return; - default: - throw "Unknown tab for edit: " + this.props.tab; - } - - this.setState({ - prompt: { - done: function (k) { - this.setState({ prompt: false }); - if (k) { - this.refs.tab.edit(k); - } - }.bind(this), - options: options - } - }); - }, - render: function render() { - var flow = this.props.flow; - var tabs = this.getTabs(flow); - var active = this.props.tab; - - if (tabs.indexOf(active) < 0) { - if (active === "response" && flow.error) { - active = "error"; - } else if (active === "error" && flow.response) { - active = "response"; - } else { - active = tabs[0]; - } - } - - var prompt = null; - if (this.state.prompt) { - prompt = _react2.default.createElement(_prompt2.default, this.state.prompt); - } - - var Tab = allTabs[active]; - return _react2.default.createElement( - "div", - { className: "flow-detail", onScroll: this.adjustHead }, - _react2.default.createElement(_nav2.default, { ref: "head", - flow: flow, - tabs: tabs, - active: active, - selectTab: this.selectTab }), - _react2.default.createElement(Tab, { ref: "tab", flow: flow }), - prompt - ); - } -}); - -exports.default = FlowView; - -},{"../prompt.js":29,"./details.js":23,"./messages.js":25,"./nav.js":26,"react":"react"}],25:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Error = exports.Response = exports.Request = 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 _reactDom = require("react-dom"); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _lodash = require("lodash"); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _actions = require("../../actions.js"); - -var _utils = require("../../flow/utils.js"); - -var _utils2 = require("../../utils.js"); - -var _contentview = require("./contentview.js"); - -var _contentview2 = _interopRequireDefault(_contentview); - -var _editor = require("../editor.js"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var Headers = _react2.default.createClass({ - displayName: "Headers", - - propTypes: { - onChange: _react2.default.PropTypes.func.isRequired, - message: _react2.default.PropTypes.object.isRequired - }, - onChange: function onChange(row, col, val) { - var nextHeaders = _lodash2.default.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); - }, - edit: function edit() { - this.refs["0-key"].focus(); - }, - onTab: function onTab(row, col, e) { - var headers = this.props.message.headers; - if (row === headers.length - 1 && col === 1) { - e.preventDefault(); - - var nextHeaders = _lodash2.default.cloneDeep(this.props.message.headers); - nextHeaders.push(["Name", "Value"]); - this.props.onChange(nextHeaders); - this._nextSel = row + 1 + "-key"; - } - }, - componentDidUpdate: function componentDidUpdate() { - if (this._nextSel && this.refs[this._nextSel]) { - this.refs[this._nextSel].focus(); - this._nextSel = undefined; - } - }, - onRemove: 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(); - } - }, - render: function render() { - - var rows = this.props.message.headers.map(function (header, i) { - - var kEdit = _react2.default.createElement(HeaderEditor, { - ref: i + "-key", - content: header[0], - onDone: this.onChange.bind(null, i, 0), - onRemove: this.onRemove.bind(null, i, 0), - onTab: this.onTab.bind(null, i, 0) }); - var vEdit = _react2.default.createElement(HeaderEditor, { - ref: i + "-value", - content: header[1], - onDone: this.onChange.bind(null, i, 1), - onRemove: this.onRemove.bind(null, i, 1), - onTab: this.onTab.bind(null, i, 1) }); - return _react2.default.createElement( - "tr", - { key: i }, - _react2.default.createElement( - "td", - { className: "header-name" }, - kEdit, - ":" - ), - _react2.default.createElement( - "td", - { className: "header-value" }, - vEdit - ) - ); - }.bind(this)); - return _react2.default.createElement( - "table", - { className: "header-table" }, - _react2.default.createElement( - "tbody", - null, - rows - ) - ); - } -}); - -var HeaderEditor = _react2.default.createClass({ - displayName: "HeaderEditor", - - render: function render() { - return _react2.default.createElement(_editor.ValueEditor, _extends({ ref: "input" }, this.props, { onKeyDown: this.onKeyDown, inline: true })); - }, - focus: function focus() { - _reactDom2.default.findDOMNode(this).focus(); - }, - onKeyDown: function onKeyDown(e) { - switch (e.keyCode) { - case _utils2.Key.BACKSPACE: - var s = window.getSelection().getRangeAt(0); - if (s.startOffset === 0 && s.endOffset === 0) { - this.props.onRemove(e); - } - break; - case _utils2.Key.TAB: - if (!e.shiftKey) { - this.props.onTab(e); - } - break; - } - } -}); - -var RequestLine = _react2.default.createClass({ - displayName: "RequestLine", - - render: function render() { - var flow = this.props.flow; - var url = _utils.RequestUtils.pretty_url(flow.request); - var httpver = flow.request.http_version; - - return _react2.default.createElement( - "div", - { className: "first-line request-line" }, - _react2.default.createElement(_editor.ValueEditor, { - ref: "method", - content: flow.request.method, - onDone: this.onMethodChange, - inline: true }), - " ", - _react2.default.createElement(_editor.ValueEditor, { - ref: "url", - content: url, - onDone: this.onUrlChange, - isValid: this.isValidUrl, - inline: true }), - " ", - _react2.default.createElement(_editor.ValueEditor, { - ref: "httpVersion", - content: httpver, - onDone: this.onHttpVersionChange, - isValid: _utils.isValidHttpVersion, - inline: true }) - ); - }, - isValidUrl: function isValidUrl(url) { - var u = (0, _utils.parseUrl)(url); - return !!u.host; - }, - onMethodChange: function onMethodChange(nextMethod) { - _actions.FlowActions.update(this.props.flow, { request: { method: nextMethod } }); - }, - onUrlChange: function onUrlChange(nextUrl) { - var props = (0, _utils.parseUrl)(nextUrl); - props.path = props.path || ""; - _actions.FlowActions.update(this.props.flow, { request: props }); - }, - onHttpVersionChange: function onHttpVersionChange(nextVer) { - var ver = (0, _utils.parseHttpVersion)(nextVer); - _actions.FlowActions.update(this.props.flow, { request: { http_version: ver } }); - } -}); - -var ResponseLine = _react2.default.createClass({ - displayName: "ResponseLine", - - render: function render() { - var flow = this.props.flow; - var httpver = flow.response.http_version; - return _react2.default.createElement( - "div", - { className: "first-line response-line" }, - _react2.default.createElement(_editor.ValueEditor, { - ref: "httpVersion", - content: httpver, - onDone: this.onHttpVersionChange, - isValid: _utils.isValidHttpVersion, - inline: true }), - " ", - _react2.default.createElement(_editor.ValueEditor, { - ref: "code", - content: flow.response.status_code + "", - onDone: this.onCodeChange, - isValid: this.isValidCode, - inline: true }), - " ", - _react2.default.createElement(_editor.ValueEditor, { - ref: "msg", - content: flow.response.reason, - onDone: this.onMsgChange, - inline: true }) - ); - }, - isValidCode: function isValidCode(code) { - return (/^\d+$/.test(code) - ); - }, - onHttpVersionChange: function onHttpVersionChange(nextVer) { - var ver = (0, _utils.parseHttpVersion)(nextVer); - _actions.FlowActions.update(this.props.flow, { response: { http_version: ver } }); - }, - onMsgChange: function onMsgChange(nextMsg) { - _actions.FlowActions.update(this.props.flow, { response: { msg: nextMsg } }); - }, - onCodeChange: function onCodeChange(nextCode) { - nextCode = parseInt(nextCode); - _actions.FlowActions.update(this.props.flow, { response: { code: nextCode } }); - } -}); - -var Request = exports.Request = _react2.default.createClass({ - displayName: "Request", - - render: function render() { - var flow = this.props.flow; - return _react2.default.createElement( - "section", - { className: "request" }, - _react2.default.createElement(RequestLine, { ref: "requestLine", flow: flow }), - _react2.default.createElement(Headers, { ref: "headers", message: flow.request, onChange: this.onHeaderChange }), - _react2.default.createElement("hr", null), - _react2.default.createElement(_contentview2.default, { flow: flow, message: flow.request }) - ); - }, - edit: function edit(k) { - switch (k) { - case "m": - this.refs.requestLine.refs.method.focus(); - break; - case "u": - this.refs.requestLine.refs.url.focus(); - break; - case "v": - this.refs.requestLine.refs.httpVersion.focus(); - break; - case "h": - this.refs.headers.edit(); - break; - default: - throw "Unimplemented: " + k; - } - }, - onHeaderChange: function onHeaderChange(nextHeaders) { - _actions.FlowActions.update(this.props.flow, { - request: { - headers: nextHeaders - } - }); - } -}); - -var Response = exports.Response = _react2.default.createClass({ - displayName: "Response", - - render: function render() { - var flow = this.props.flow; - return _react2.default.createElement( - "section", - { className: "response" }, - _react2.default.createElement(ResponseLine, { ref: "responseLine", flow: flow }), - _react2.default.createElement(Headers, { ref: "headers", message: flow.response, onChange: this.onHeaderChange }), - _react2.default.createElement("hr", null), - _react2.default.createElement(_contentview2.default, { flow: flow, message: flow.response }) - ); - }, - edit: function edit(k) { - switch (k) { - case "c": - this.refs.responseLine.refs.status_code.focus(); - break; - case "m": - this.refs.responseLine.refs.msg.focus(); - break; - case "v": - this.refs.responseLine.refs.httpVersion.focus(); - break; - case "h": - this.refs.headers.edit(); - break; - default: - throw "Unimplemented: " + k; - } - }, - onHeaderChange: function onHeaderChange(nextHeaders) { - _actions.FlowActions.update(this.props.flow, { - response: { - headers: nextHeaders - } - }); - } -}); - -var Error = exports.Error = _react2.default.createClass({ - displayName: "Error", - - render: function render() { - var flow = this.props.flow; - return _react2.default.createElement( - "section", - null, - _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) - ) - ) - ) - ); - } -}); - -},{"../../actions.js":2,"../../flow/utils.js":39,"../../utils.js":41,"../editor.js":21,"./contentview.js":22,"lodash":"lodash","react":"react","react-dom":"react-dom"}],26:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _actions = require("../../actions.js"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var NavAction = _react2.default.createClass({ - displayName: "NavAction", - - onClick: function onClick(e) { - e.preventDefault(); - this.props.onClick(); - }, - render: function render() { - return _react2.default.createElement( - "a", - { title: this.props.title, - href: "#", - className: "nav-action", - onClick: this.onClick }, - _react2.default.createElement("i", { className: "fa fa-fw " + this.props.icon }) - ); - } -}); - -var Nav = _react2.default.createClass({ - displayName: "Nav", - - render: function render() { - var flow = this.props.flow; - - var tabs = this.props.tabs.map(function (e) { - var str = e.charAt(0).toUpperCase() + e.slice(1); - var className = this.props.active === e ? "active" : ""; - var onClick = function (event) { - this.props.selectTab(e); - event.preventDefault(); - }.bind(this); - return _react2.default.createElement( - "a", - { key: e, - href: "#", - className: className, - onClick: onClick }, - str - ); - }.bind(this)); - - var acceptButton = null; - if (flow.intercepted) { - acceptButton = _react2.default.createElement(NavAction, { title: "[a]ccept intercepted flow", icon: "fa-play", onClick: _actions.FlowActions.accept.bind(null, flow) }); - } - var revertButton = null; - if (flow.modified) { - revertButton = _react2.default.createElement(NavAction, { title: "revert changes to flow [V]", icon: "fa-history", onClick: _actions.FlowActions.revert.bind(null, flow) }); - } - - return _react2.default.createElement( - "nav", - { ref: "head", className: "nav-tabs nav-tabs-sm" }, - tabs, - _react2.default.createElement(NavAction, { title: "[d]elete flow", icon: "fa-trash", onClick: _actions.FlowActions.delete.bind(null, flow) }), - _react2.default.createElement(NavAction, { title: "[D]uplicate flow", icon: "fa-copy", onClick: _actions.FlowActions.duplicate.bind(null, flow) }), - _react2.default.createElement(NavAction, { disabled: true, title: "[r]eplay flow", icon: "fa-repeat", onClick: _actions.FlowActions.replay.bind(null, flow) }), - acceptButton, - revertButton - ); - } -}); - -exports.default = Nav; - -},{"../../actions.js":2,"react":"react"}],27:[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 _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _reactDom = require("react-dom"); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -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 symShouldStick = Symbol("shouldStick"); -var isAtBottom = function isAtBottom(v) { - return v.scrollTop + v.clientHeight === v.scrollHeight; -}; - -exports.default = function (Component) { - var _class, _temp; - - return Object.assign((_temp = _class = function (_Component) { - _inherits(AutoScrollWrapper, _Component); - - function AutoScrollWrapper() { - _classCallCheck(this, AutoScrollWrapper); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(AutoScrollWrapper).apply(this, arguments)); - } - - _createClass(AutoScrollWrapper, [{ - key: "componentWillUpdate", - value: function componentWillUpdate() { - var viewport = _reactDom2.default.findDOMNode(this); - this[symShouldStick] = viewport.scrollTop && isAtBottom(viewport); - _get(Object.getPrototypeOf(AutoScrollWrapper.prototype), "componentWillUpdate", this) && _get(Object.getPrototypeOf(AutoScrollWrapper.prototype), "componentWillUpdate", this).call(this); - } - }, { - key: "componentDidUpdate", - value: function componentDidUpdate() { - var viewport = _reactDom2.default.findDOMNode(this); - if (this[symShouldStick] && !isAtBottom(viewport)) { - viewport.scrollTop = viewport.scrollHeight; - } - _get(Object.getPrototypeOf(AutoScrollWrapper.prototype), "componentDidUpdate", this) && _get(Object.getPrototypeOf(AutoScrollWrapper.prototype), "componentDidUpdate", this).call(this); - } - }]); - - return AutoScrollWrapper; - }(Component), _class.displayName = Component.name, _temp), Component); -}; - -},{"react":"react","react-dom":"react-dom"}],28:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.calcVScroll = calcVScroll; -/** - * Calculate virtual scroll stuffs - * - * @param {?Object} opts Options for calculation - * - * @returns {Object} result - * - * __opts__ should have following properties: - * - {number} itemCount - * - {number} rowHeight - * - {number} viewportTop - * - {number} viewportHeight - * - {Array} [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; - var rowHeight = opts.rowHeight; - var viewportTop = opts.viewportTop; - var viewportHeight = opts.viewportHeight; - var 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 }; -} - -},{}],29:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _react = require("react"); - -var _react2 = _interopRequireDefault(_react); - -var _reactDom = require("react-dom"); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _lodash = require("lodash"); - -var _lodash2 = _interopRequireDefault(_lodash); - -var _utils = require("../utils.js"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var Prompt = _react2.default.createClass({ - displayName: "Prompt", - - contextTypes: { - returnFocus: _react2.default.PropTypes.func - }, - propTypes: { - options: _react2.default.PropTypes.array.isRequired, - done: _react2.default.PropTypes.func.isRequired, - prompt: _react2.default.PropTypes.string - }, - componentDidMount: function componentDidMount() { - _reactDom2.default.findDOMNode(this).focus(); - }, - onKeyDown: function onKeyDown(e) { - e.stopPropagation(); - e.preventDefault(); - var opts = this.getOptions(); - for (var i = 0; i < opts.length; i++) { - var k = opts[i].key; - if (_utils.Key[k.toUpperCase()] === e.keyCode) { - this.done(k); - return; - } - } - if (e.keyCode === _utils.Key.ESC || e.keyCode === _utils.Key.ENTER) { - this.done(false); - } - }, - onClick: function onClick(e) { - this.done(false); - }, - done: function done(ret) { - this.props.done(ret); - this.context.returnFocus(); - }, - getOptions: function getOptions() { - var opts = []; - - var keyTaken = function keyTaken(k) { - return _lodash2.default.includes(_lodash2.default.map(opts, "key"), k); - }; - - for (var i = 0; i < this.props.options.length; i++) { - var opt = this.props.options[i]; - if (_lodash2.default.isString(opt)) { - var str = opt; - while (str.length > 0 && keyTaken(str[0])) { - str = str.substr(1); - } - opt = { - text: opt, - key: str[0] - }; - } - if (!opt.text || !opt.key || keyTaken(opt.key)) { - throw "invalid options"; - } else { - opts.push(opt); - } - } - return opts; - }, - render: function render() { - var opts = this.getOptions(); - opts = _lodash2.default.map(opts, function (o) { - var prefix, suffix; - var idx = o.text.indexOf(o.key); - if (idx !== -1) { - prefix = o.text.substring(0, idx); - suffix = o.text.substring(idx + 1); - } else { - prefix = o.text + " ("; - suffix = ")"; - } - var onClick = function (e) { - this.done(o.key); - e.stopPropagation(); - }.bind(this); - return _react2.default.createElement( - "span", - { - key: o.key, - className: "option", - onClick: onClick }, - prefix, - _react2.default.createElement( - "strong", - { className: "text-primary" }, - o.key - ), - suffix - ); - }.bind(this)); - return _react2.default.createElement( - "div", - { tabIndex: "0", onKeyDown: this.onKeyDown, onClick: this.onClick, className: "prompt-dialog" }, - _react2.default.createElement( - "div", - { className: "prompt-content" }, - this.props.prompt || _react2.default.createElement( - "strong", - null, - "Select: " - ), - opts - ) - ); - } -}); - -exports.default = Prompt; - -},{"../utils.js":41,"lodash":"lodash","react":"react","react-dom":"react-dom"}],30:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = Connection; - -var _actions = require("./actions.js"); - -var _dispatcher = require("./dispatcher.js"); - -var _websocket = require("./ducks/websocket"); - -var webSocketActions = _interopRequireWildcard(_websocket); - -var _eventLog = require("./ducks/eventLog"); - -var eventLogActions = _interopRequireWildcard(_eventLog); - -var _flows = require("./ducks/flows"); - -var flowActions = _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 Connection(url, dispatch) { - if (url[0] === "/") { - url = location.origin.replace("http", "ws") + url; - } - - var ws = new WebSocket(url); - ws.onopen = function () { - dispatch(webSocketActions.connected()); - dispatch(flowActions.fetchFlows()) - // workaround to make sure that our state is already available. - .then(function () { - console.log("flows are loaded now"); - _actions.ConnectionActions.open(); - }); - dispatch(eventLogActions.fetchLogEntries()); - }; - ws.onmessage = function (m) { - var message = JSON.parse(m.data); - _dispatcher.AppDispatcher.dispatchServerAction(message); - switch (message.type) { - case eventLogActions.UPDATE_LOG: - return dispatch(eventLogActions.updateLogEntries(message)); - case flowActions.UPDATE_FLOWS: - return dispatch(flowActions.updateFlows(message)); - default: - console.warn("unknown message", message); - } - }; - ws.onerror = function () { - _actions.ConnectionActions.error(); - dispatch(eventLogActions.addLogEntry("WebSocket connection error.")); - }; - ws.onclose = function () { - _actions.ConnectionActions.close(); - dispatch(eventLogActions.addLogEntry("WebSocket connection closed.")); - dispatch(webSocketActions.disconnected()); - }; - return ws; -} - -},{"./actions.js":2,"./dispatcher.js":31,"./ducks/eventLog":32,"./ducks/flows":33,"./ducks/websocket":37}],31:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.AppDispatcher = undefined; - -var _flux = require("flux"); - -var _flux2 = _interopRequireDefault(_flux); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var PayloadSources = { - VIEW: "view", - SERVER: "server" -}; - -var AppDispatcher = exports.AppDispatcher = new _flux2.default.Dispatcher(); -AppDispatcher.dispatchViewAction = function (action) { - action.source = PayloadSources.VIEW; - this.dispatch(action); -}; -AppDispatcher.dispatchServerAction = function (action) { - action.source = PayloadSources.SERVER; - this.dispatch(action); -}; - -},{"flux":"flux"}],32:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.fetchLogEntries = exports.updateLogEntries = exports.UPDATE_LOG = 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.toggleEventLogFilter = toggleEventLogFilter; -exports.toggleEventLogVisibility = toggleEventLogVisibility; -exports.addLogEntry = addLogEntry; - -var _list = require("./utils/list"); - -var _list2 = _interopRequireDefault(_list); - -var _view = require("./utils/view"); - -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; } - -var TOGGLE_FILTER = 'TOGGLE_EVENTLOG_FILTER'; -var TOGGLE_VISIBILITY = 'TOGGLE_EVENTLOG_VISIBILITY'; -var UPDATE_LOG = exports.UPDATE_LOG = "UPDATE_EVENTLOG"; - -var _makeList = (0, _list2.default)(UPDATE_LOG, "/events"); - -var reduceList = _makeList.reduceList; -var updateList = _makeList.updateList; -var fetchList = _makeList.fetchList; -var addItem = _makeList.addItem; +function EventEmitter(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function isFunction(e){return"function"==typeof e}function isNumber(e){return"number"==typeof e}function isObject(e){return"object"==typeof e&&null!==e}function isUndefined(e){return void 0===e}module.exports=EventEmitter,EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._maxListeners=void 0,EventEmitter.defaultMaxListeners=10,EventEmitter.prototype.setMaxListeners=function(e){if(!isNumber(e)||0>e||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},EventEmitter.prototype.emit=function(e){var t,i,n,s,r,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||isObject(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;throw TypeError('Uncaught, unspecified "error" event.')}if(i=this._events[e],isUndefined(i))return!1;if(isFunction(i))switch(arguments.length){case 1:i.call(this);break;case 2:i.call(this,arguments[1]);break;case 3:i.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),i.apply(this,s)}else if(isObject(i))for(s=Array.prototype.slice.call(arguments,1),o=i.slice(),n=o.length,r=0;n>r;r++)o[r].apply(this,s);return!0},EventEmitter.prototype.addListener=function(e,t){var i;if(!isFunction(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,isFunction(t.listener)?t.listener:t),this._events[e]?isObject(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,isObject(this._events[e])&&!this._events[e].warned&&(i=isUndefined(this._maxListeners)?EventEmitter.defaultMaxListeners:this._maxListeners,i&&i>0&&this._events[e].length>i&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},EventEmitter.prototype.on=EventEmitter.prototype.addListener,EventEmitter.prototype.once=function(e,t){function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}if(!isFunction(t))throw TypeError("listener must be a function");var n=!1;return i.listener=t,this.on(e,i),this},EventEmitter.prototype.removeListener=function(e,t){var i,n,s,r;if(!isFunction(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(i=this._events[e],s=i.length,n=-1,i===t||isFunction(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(isObject(i)){for(r=s;r-- >0;)if(i[r]===t||i[r].listener&&i[r].listener===t){n=r;break}if(0>n)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(n,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},EventEmitter.prototype.removeAllListeners=function(e){var t,i;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(i=this._events[e],isFunction(i))this.removeListener(e,i);else if(i)for(;i.length;)this.removeListener(e,i[i.length-1]);return delete this._events[e],this},EventEmitter.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?isFunction(this._events[e])?[this._events[e]]:this._events[e].slice():[]},EventEmitter.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(isFunction(t))return 1;if(t)return t.length}return 0},EventEmitter.listenerCount=function(e,t){return e.listenerCount(t)}; +},{}],2:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.Query=exports.FlowActions=exports.SettingsActions=exports.ConnectionActions=exports.StoreCmds=exports.ActionTypes=void 0;var _jquery=require("jquery"),_jquery2=_interopRequireDefault(_jquery),_dispatcher=require("./dispatcher.js"),_utils=require("./utils.js"),ActionTypes=exports.ActionTypes={CONNECTION_OPEN:"connection_open",CONNECTION_CLOSE:"connection_close",CONNECTION_ERROR:"connection_error",SETTINGS_STORE:"settings",EVENT_STORE:"events",FLOW_STORE:"flows"},StoreCmds=exports.StoreCmds={ADD:"add",UPDATE:"update",REMOVE:"remove",RESET:"reset"},ConnectionActions=exports.ConnectionActions={open:function(){_dispatcher.AppDispatcher.dispatchViewAction({type:ActionTypes.CONNECTION_OPEN})},close:function(){_dispatcher.AppDispatcher.dispatchViewAction({type:ActionTypes.CONNECTION_CLOSE})},error:function(){_dispatcher.AppDispatcher.dispatchViewAction({type:ActionTypes.CONNECTION_ERROR})}},SettingsActions=exports.SettingsActions={update:function(e){_jquery2["default"].ajax({type:"PUT",url:"/settings",contentType:"application/json",data:JSON.stringify(e)})}},FlowActions=exports.FlowActions={accept:function(e){_jquery2["default"].post("/flows/"+e.id+"/accept")},accept_all:function(){_jquery2["default"].post("/flows/accept")},"delete":function(e){_jquery2["default"].ajax({type:"DELETE",url:"/flows/"+e.id})},duplicate:function(e){_jquery2["default"].post("/flows/"+e.id+"/duplicate")},replay:function(e){_jquery2["default"].post("/flows/"+e.id+"/replay")},revert:function(e){_jquery2["default"].post("/flows/"+e.id+"/revert")},update:function(e,t){_jquery2["default"].ajax({type:"PUT",url:"/flows/"+e.id,contentType:"application/json",data:JSON.stringify(t)})},clear:function(){_jquery2["default"].post("/clear")},download:function(){return window.location="/flows/dump"},upload:function(e){var t=new FormData;t.append("file",e),(0,_utils.fetchApi)("/flows/dump",{method:"post",body:t})}},Query=exports.Query={SEARCH:"s",HIGHLIGHT:"h",SHOW_EVENTLOG:"e"}; -var defaultState = { - visible: false, - filter: { - "debug": false, - "info": true, - "web": true - }, - events: reduceList(), - filteredEvents: [] -}; +},{"./dispatcher.js":31,"./utils.js":41,"jquery":"jquery"}],3:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}var _react=require("react"),_react2=_interopRequireDefault(_react),_reactDom=require("react-dom"),_redux=require("redux"),_reactRedux=require("react-redux"),_reduxLogger=require("redux-logger"),_reduxLogger2=_interopRequireDefault(_reduxLogger),_reduxThunk=require("redux-thunk"),_reduxThunk2=_interopRequireDefault(_reduxThunk),_reactRouter=require("react-router"),_connection=require("./connection"),_connection2=_interopRequireDefault(_connection),_ProxyApp=require("./components/ProxyApp"),_ProxyApp2=_interopRequireDefault(_ProxyApp),_MainView=require("./components/MainView"),_MainView2=_interopRequireDefault(_MainView),_index=require("./ducks/index"),_index2=_interopRequireDefault(_index),_eventLog=require("./ducks/eventLog"),store=(0,_redux.createStore)(_index2["default"],(0,_redux.applyMiddleware)(_reduxThunk2["default"],(0,_reduxLogger2["default"])()));window.addEventListener("error",function(e){store.dispatch((0,_eventLog.addLogEntry)(e))}),document.addEventListener("DOMContentLoaded",function(){window.ws=new _connection2["default"]("/updates",store.dispatch),(0,_reactDom.render)(_react2["default"].createElement(_reactRedux.Provider,{store:store},_react2["default"].createElement(_reactRouter.Router,{history:_reactRouter.hashHistory},_react2["default"].createElement(_reactRouter.Redirect,{from:"/",to:"/flows"}),_react2["default"].createElement(_reactRouter.Route,{path:"/",component:_ProxyApp2["default"]},_react2["default"].createElement(_reactRouter.Route,{path:"flows",component:_MainView2["default"]}),_react2["default"].createElement(_reactRouter.Route,{path:"flows/:flowId/:detailTab",component:_MainView2["default"]})))),document.getElementById("mitmproxy"))}); -function reducer() { - var state = arguments.length <= 0 || arguments[0] === undefined ? defaultState : arguments[0]; - var action = arguments[1]; +},{"./components/MainView":18,"./components/ProxyApp":19,"./connection":30,"./ducks/eventLog":32,"./ducks/index":34,"react":"react","react-dom":"react-dom","react-redux":"react-redux","react-router":"react-router","redux":"redux","redux-logger":"redux-logger","redux-thunk":"redux-thunk"}],4:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function EventLog(e){var t=e.filters,r=e.events,n=e.onToggleFilter,o=e.onClose;return _react2["default"].createElement("div",{className:"eventlog"},_react2["default"].createElement("div",null,"Eventlog",_react2["default"].createElement("div",{className:"pull-right"},["debug","info","web"].map(function(e){return _react2["default"].createElement(_common.ToggleButton,{key:e,text:e,checked:t[e],onToggle:function(){return n(e)}})}),_react2["default"].createElement("i",{onClick:o,className:"fa fa-close"}))),_react2["default"].createElement(_EventList2["default"],{events:r}))}Object.defineProperty(exports,"__esModule",{value:!0});var _react=require("react"),_react2=_interopRequireDefault(_react),_redux=require("redux"),_reactRedux=require("react-redux"),_eventLog=require("../ducks/eventLog"),_common=require("./common"),_EventList=require("./EventLog/EventList"),_EventList2=_interopRequireDefault(_EventList);EventLog.propTypes={filters:_react.PropTypes.object.isRequired,events:_react.PropTypes.array.isRequired,onToggleFilter:_react.PropTypes.func.isRequired,onClose:_react.PropTypes.func.isRequired},exports["default"]=(0,_reactRedux.connect)(function(e){return{filters:e.eventLog.filter,events:e.eventLog.filteredEvents}},function(e){return(0,_redux.bindActionCreators)({onClose:_eventLog.toggleEventLogVisibility,onToggleFilter:_eventLog.toggleEventLogFilter},e)})(EventLog); - switch (action.type) { - case TOGGLE_FILTER: - var filter = _extends({}, state.filter, _defineProperty({}, action.filter, !state.filter[action.filter])); - return _extends({}, state, { - filter: filter, - filteredEvents: (0, _view.updateViewFilter)(state.events, function (x) { - return filter[x.level]; - }) - }); - case TOGGLE_VISIBILITY: - return _extends({}, state, { - visible: !state.visible - }); - case UPDATE_LOG: - var events = reduceList(state.events, action); - return _extends({}, state, { - events: events, - filteredEvents: (0, _view.updateViewList)(state.filteredEvents, state.events, events, action, function (x) { - return state.filter[x.level]; - }) - }); - default: - return state; - } -} +},{"../ducks/eventLog":32,"./EventLog/EventList":5,"./common":20,"react":"react","react-redux":"react-redux","redux":"redux"}],5:[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 LogIcon(e){var t=e.event,r={web:"html5",debug:"bug"}[t.level]||"info";return _react2["default"].createElement("i",{className:"fa fa-fw fa-"+r})}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function e(e,t){for(var r=0;rn-i?l.scrollTop=n-i:u>c+s&&(l.scrollTop=u-s)}}},{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,r=t.viewportTop,l=this.props,a=l.flows,i=l.selected,n=l.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("+r+"px)"}},_react2["default"].createElement(_FlowTableHead2["default"],null)),_react2["default"].createElement("tbody",null,_react2["default"].createElement("tr",{style:{height:o.paddingTop}}),a.slice(o.start,o.end).map(function(t){return _react2["default"].createElement(_FlowRow2["default"],{key:t.id,flow:t,selected:t===i,highlighted:u(t),onSelect:e.props.onSelect})}),_react2["default"].createElement("tr",{style:{height:o.paddingBottom}}))))}}]),t}(_react2["default"].Component);FlowTable.propTypes={onSelect:_react.PropTypes.func.isRequired,flows:_react.PropTypes.array.isRequired,rowHeight:_react.PropTypes.number,highlight:_react.PropTypes.string,selected:_react.PropTypes.object},FlowTable.defaultProps={rowHeight:32},exports["default"]=(0,_AutoScroll2["default"])(FlowTable); - return addItem({ - message: message, - level: level, - id: "log-" + id++ - }); -} -exports.updateLogEntries = updateList; -exports.fetchLogEntries = fetchList; +},{"../filt/filt":38,"./FlowTable/FlowRow":8,"./FlowTable/FlowTableHead":9,"./helpers/AutoScroll":27,"./helpers/VirtualScroll":28,"react":"react","react-dom":"react-dom","shallowequal":"shallowequal"}],7:[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;return _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"}),_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;return _react2["default"].createElement("td",{className:"col-status"},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.sortKeyFun=function(e){return e.request.scheme},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.sortKeyFun=function(e){return _utils.RequestUtils.pretty_url(e.request)},PathColumn.headerClass="col-path",PathColumn.headerName="Path",MethodColumn.sortKeyFun=function(e){return e.request.method},MethodColumn.headerClass="col-method",MethodColumn.headerName="Method",StatusColumn.sortKeyFun=function(e){return e.response&&e.response.status_code},StatusColumn.headerClass="col-status",StatusColumn.headerName="Status",SizeColumn.sortKeyFun=function(e){var t=e.request.contentLength;return e.response&&(t+=e.response.contentLength||0),t},SizeColumn.getTotalSize=SizeColumn.sortKeyFun,SizeColumn.headerClass="col-size",SizeColumn.headerName="Size",TimeColumn.sortKeyFun=function(e){return e.response&&e.response.timestamp_end-e.request.timestamp_start},TimeColumn.headerClass="col-time",TimeColumn.headerName="Time",exports["default"]=[TLSColumn,IconColumn,PathColumn,MethodColumn,StatusColumn,SizeColumn,TimeColumn]; -},{"./utils/list":35,"./utils/view":36}],33:[function(require,module,exports){ -"use strict"; +},{"../../flow/utils.js":39,"../../utils.js":41,"classnames":"classnames","react":"react"}],8:[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,o=e.onSelect,s=(0,_classnames2["default"])({selected:r,highlighted:l,intercepted:t.intercepted,"has-request":t.request,"has-response":t.response});return _react2["default"].createElement("tr",{className:s,onClick:function(){return o(t)}},_FlowColumns2["default"].map(function(e){return _react2["default"].createElement(e,{key:e.name,flow:t})}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=FlowRow;var _react=require("react"),_react2=_interopRequireDefault(_react),_classnames=require("classnames"),_classnames2=_interopRequireDefault(_classnames),_FlowColumns=require("./FlowColumns"),_FlowColumns2=_interopRequireDefault(_FlowColumns);FlowRow.propTypes={onSelect:_react.PropTypes.func.isRequired,flow:_react.PropTypes.object.isRequired,highlighted:_react.PropTypes.bool,selected:_react.PropTypes.bool}; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.fetchFlows = exports.updateFlows = exports.SELECT_FLOW = exports.SET_SORT = exports.SET_HIGHLIGHT = exports.SET_FILTER = exports.UPDATE_FLOWS = undefined; +},{"./FlowColumns":7,"classnames":"classnames","react":"react"}],9:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function FlowTableHead(e){function r(e){s({sortColumn:e.name,sortDesc:e.name!==t?!1:!o})}var t=e.sortColumn,o=e.sortDesc,s=e.onSort,u=o?"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,t===e.name&&u),key:e.name,onClick:function(){return r(e)}},e.headerName)}))}Object.defineProperty(exports,"__esModule",{value:!0});var _react=require("react"),_react2=_interopRequireDefault(_react),_redux=require("redux"),_reactRedux=require("react-redux"),_classnames=require("classnames"),_classnames2=_interopRequireDefault(_classnames),_FlowColumns=require("./FlowColumns"),_FlowColumns2=_interopRequireDefault(_FlowColumns),_flows=require("../../ducks/flows");FlowTableHead.propTypes={onSort:_react.PropTypes.func.isRequired,sortDesc:_react2["default"].PropTypes.bool.isRequired,sortColumn:_react2["default"].PropTypes.string},exports["default"]=(0,_reactRedux.connect)(function(e){return{sortDesc:e.flows.sort.sortDesc,sortColumn:e.flows.sort.sortColumn}},function(e){return(0,_redux.bindActionCreators)({onSort:_flows.setSort},e)})(FlowTableHead); -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; }; +},{"../../ducks/flows":33,"./FlowColumns":7,"classnames":"classnames","react":"react","react-redux":"react-redux","redux":"redux"}],10:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function Footer(e){var a=e.settings;return _react2["default"].createElement("footer",null,a.mode&&"regular"!=a.mode&&_react2["default"].createElement("span",{className:"label label-success"},a.mode," mode"),a.intercept&&_react2["default"].createElement("span",{className:"label label-success"},"Intercept: ",a.intercept),a.showhost&&_react2["default"].createElement("span",{className:"label label-success"},"showhost"),a.no_upstream_cert&&_react2["default"].createElement("span",{className:"label label-success"},"no-upstream-cert"),a.rawtcp&&_react2["default"].createElement("span",{className:"label label-success"},"raw-tcp"),!a.http2&&_react2["default"].createElement("span",{className:"label label-success"},"no-http2"),a.anticache&&_react2["default"].createElement("span",{className:"label label-success"},"anticache"),a.anticomp&&_react2["default"].createElement("span",{className:"label label-success"},"anticomp"),a.stickyauth&&_react2["default"].createElement("span",{className:"label label-success"},"stickyauth: ",a.stickyauth),a.stickycookie&&_react2["default"].createElement("span",{className:"label label-success"},"stickycookie: ",a.stickycookie),a.stream&&_react2["default"].createElement("span",{className:"label label-success"},"stream: ",(0,_utils.formatSize)(a.stream)))}Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=Footer;var _react=require("react"),_react2=_interopRequireDefault(_react),_utils=require("../utils.js"),_common=require("./common.js");Footer.propTypes={settings:_react2["default"].PropTypes.object.isRequired}; -exports.default = reducer; -exports.setFilter = setFilter; -exports.setHighlight = setHighlight; -exports.setSort = setSort; -exports.selectFlow = selectFlow; +},{"../utils.js":41,"./common.js":20,"react":"react"}],11:[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;n0&&(_actions.FlowActions.upload(e.target.files[0]),this.fileInput.value="")}},{key:"onSaveClick",value:function(e){e.preventDefault(),_actions.FlowActions.download()}},{key:"render",value:function(){var e=this;return _react2["default"].createElement("div",{className:(0,_classnames2["default"])("dropdown pull-left",{open:this.state.show})},_react2["default"].createElement("a",{href:"#",className:"special",onClick:this.onFileClick},"mitmproxy"),_react2["default"].createElement("ul",{className:"dropdown-menu",role:"menu"},_react2["default"].createElement("li",null,_react2["default"].createElement("a",{href:"#",onClick:this.onNewClick},_react2["default"].createElement("i",{className:"fa fa-fw fa-file"}),"New")),_react2["default"].createElement("li",null,_react2["default"].createElement("a",{href:"#",onClick:this.onOpenClick},_react2["default"].createElement("i",{className:"fa fa-fw fa-folder-open"}),"Open..."),_react2["default"].createElement("input",{ref:function(t){return e.fileInput=t},className:"hidden",type:"file",onChange:this.onOpenFile})),_react2["default"].createElement("li",null,_react2["default"].createElement("a",{href:"#",onClick:this.onSaveClick},_react2["default"].createElement("i",{className:"fa fa-fw fa-floppy-o"}),"Save...")),_react2["default"].createElement("li",{role:"presentation",className:"divider"}),_react2["default"].createElement("li",null,_react2["default"].createElement("a",{href:"http://mitm.it/",target:"_blank"},_react2["default"].createElement("i",{className:"fa fa-fw fa-external-link"}),"Install Certificates..."))))}}]),t}(_react.Component);exports["default"]=FileMenu; -var _list2 = _interopRequireDefault(_list); +},{"../../actions.js":2,"classnames":"classnames","react":"react"}],13:[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 r=0;re&&(o=s.length-1),this.selectFlow(s[o])}},{key:"onMainKeyDown",value:function(e){var t=this.props.selectedFlow;if(!e.ctrlKey){switch(e.keyCode){case _utils.Key.K:case _utils.Key.UP:this.selectFlowRelative(-1);break;case _utils.Key.J:case _utils.Key.DOWN:this.selectFlowRelative(1);break;case _utils.Key.SPACE:case _utils.Key.PAGE_DOWN:this.selectFlowRelative(10);break;case _utils.Key.PAGE_UP:this.selectFlowRelative(-10);break;case _utils.Key.END:this.selectFlowRelative(1e10);break;case _utils.Key.HOME:this.selectFlowRelative(-1e10);break;case _utils.Key.ESC:this.selectFlow(null);break;case _utils.Key.H:case _utils.Key.LEFT:this.refs.flowDetails&&this.refs.flowDetails.nextTab(-1);break;case _utils.Key.L:case _utils.Key.TAB:case _utils.Key.RIGHT:this.refs.flowDetails&&this.refs.flowDetails.nextTab(1);break;case _utils.Key.C:e.shiftKey&&_actions.FlowActions.clear();break;case _utils.Key.D:t&&(e.shiftKey?_actions.FlowActions.duplicate(t):_actions.FlowActions["delete"](t));break;case _utils.Key.A:e.shiftKey?_actions.FlowActions.accept_all():t&&t.intercepted&&_actions.FlowActions.accept(t);break;case _utils.Key.R:!e.shiftKey&&t&&_actions.FlowActions.replay(t);break;case _utils.Key.V:e.shiftKey&&t&&t.modified&&_actions.FlowActions.revert(t);break;case _utils.Key.E:this.refs.flowDetails&&this.refs.flowDetails.promptEdit();break;case _utils.Key.SHIFT:break;default:return void console.debug("keydown",e.keyCode)}e.preventDefault()}}},{key:"render",value:function(){var e=this,t=this.props,s=t.flows,i=t.selectedFlow,l=t.highlight;t.sort;return _react2["default"].createElement("div",{className:"main-view"},_react2["default"].createElement(_FlowTable2["default"],{ref:"flowTable",flows:s,selected:i,highlight:l,onSelect:function(t){return e.selectFlow(t)}}),i&&[_react2["default"].createElement(_common.Splitter,{key:"splitter"}),_react2["default"].createElement(_index2["default"],{key:"flowDetails",ref:"flowDetails",tab:this.props.routeParams.detailTab,query:this.props.query,updateLocation:this.props.updateLocation,flow:i})])}}]),t}(_react.Component);MainView.propTypes={highlight:_react.PropTypes.string,sort:_react.PropTypes.object},exports["default"]=(0,_reactRedux.connect)(function(e){return{flows:e.flows.view,filter:e.flows.filter,sort:e.flows.sort,highlight:e.flows.highlight,selectedFlow:e.flows.all.byId[e.flows.selected[0]]}},function(e){return(0,_redux.bindActionCreators)({selectFlow:_flows.selectFlow,setFilter:_flows.setFilter,setHighlight:_flows.setHighlight},e)},void 0,{withRef:!0})(MainView); -var columns = _interopRequireWildcard(_FlowColumns); +},{"../actions.js":2,"../ducks/flows":33,"../utils.js":41,"./FlowTable":6,"./common.js":20,"./flowview/index.js":24,"react":"react","react-redux":"react-redux","redux":"redux"}],19:[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 r=0;r0)e=o.getRangeAt(0);else if(document.caretPositionFromPoint&&t.clientX&&t.clientY){var n=document.caretPositionFromPoint(t.clientX,t.clientY);e=document.createRange(),e.setStart(n.offsetNode,n.offset)}else document.caretRangeFromPoint&&t.clientX&&t.clientY?e=document.caretRangeFromPoint(t.clientX,t.clientY):(e=document.createRange(),e.selectNodeContents(_reactDom2["default"].findDOMNode(this)));this._ignore_events=!0,this.setState({editable:!0},function(){var t=_reactDom2["default"].findDOMNode(this);t.blur(),t.focus(),this._ignore_events=!1})}},stop:function(){_reactDom2["default"].findDOMNode(this).blur(),this.props.onStop&&this.props.onStop()},_stop:function(t){if(!this._ignore_events){console.log("_stop",_.extend({},t)),window.getSelection().removeAllRanges();var e=_reactDom2["default"].findDOMNode(this),o=this.props.nodeToContent(e);this.setState({editable:!1}),this.props.onDone(o),this.props.onBlur&&this.props.onBlur(t)}},reset:function(){_reactDom2["default"].findDOMNode(this).innerHTML=this.props.contentToHtml(this.props.content)},onKeyDown:function(t){switch(t.stopPropagation(),t.keyCode){case _utils.Key.ESC:t.preventDefault(),this.reset(),this.stop();break;case _utils.Key.ENTER:this.props.submitOnEnter&&!t.shiftKey&&(t.preventDefault(),this.stop())}},onInput:function(){var t=_reactDom2["default"].findDOMNode(this),e=this.props.nodeToContent(t);this.props.onInput&&this.props.onInput(e)}}),ValidateEditor=_react2["default"].createClass({displayName:"ValidateEditor",propTypes:{content:_react2["default"].PropTypes.string.isRequired,onDone:_react2["default"].PropTypes.func.isRequired,onInput:_react2["default"].PropTypes.func,isValid:_react2["default"].PropTypes.func,className:_react2["default"].PropTypes.string},getInitialState:function(){return{currentContent:this.props.content}},componentWillReceiveProps:function(){this.setState({currentContent:this.props.content})},onInput:function(t){this.setState({currentContent:t}),this.props.onInput&&this.props.onInput(t)},render:function(){var t=this.props.className||"";return this.props.isValid&&(t+=this.props.isValid(this.state.currentContent)?" has-success":" has-warning"),_react2["default"].createElement(EditorBase,_extends({},this.props,{ref:"editor",className:t,onDone:this.onDone,onInput:this.onInput}))},onDone:function(t){this.props.isValid&&!this.props.isValid(t)&&(this.refs.editor.reset(),t=this.props.content),this.props.onDone(t)}}),ValueEditor=exports.ValueEditor=_react2["default"].createClass({displayName:"ValueEditor",contextTypes:{returnFocus:_react2["default"].PropTypes.func},propTypes:{content:_react2["default"].PropTypes.string.isRequired,onDone:_react2["default"].PropTypes.func.isRequired,inline:_react2["default"].PropTypes.bool},render:function(){var t=this.props.inline?"span":"div";return _react2["default"].createElement(ValidateEditor,_extends({},this.props,{onStop:this.onStop,tag:t}))},focus:function(){_reactDom2["default"].findDOMNode(this).focus()},onStop:function(){this.context.returnFocus()}}); -var UPDATE_FLOWS = exports.UPDATE_FLOWS = "UPDATE_FLOWS"; -var SET_FILTER = exports.SET_FILTER = "SET_FLOW_FILTER"; -var SET_HIGHLIGHT = exports.SET_HIGHLIGHT = "SET_FLOW_HIGHLIGHT"; -var SET_SORT = exports.SET_SORT = "SET_FLOW_SORT"; -var SELECT_FLOW = exports.SELECT_FLOW = "SELECT_FLOW"; +},{"../utils.js":41,"react":"react","react-dom":"react-dom"}],22:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(e){for(var t=1;t1048576*t}},render:function(){var e=(0,_utils2.formatSize)(this.props.message.contentLength);return _react2["default"].createElement("div",{className:"alert alert-warning"},_react2["default"].createElement("button",{onClick:this.props.onClick,className:"btn btn-xs btn-warning pull-right"},"Display anyway"),e," content size.")}}),ViewSelector=_react2["default"].createClass({displayName:"ViewSelector",render:function(){for(var e=[],t=0;t0&&(r.preventDefault(),this.refs[e-1+"-value"].focus())},render:function(){var e=this.props.message.headers.map(function(e,t){var r=_react2["default"].createElement(HeaderEditor,{ref:t+"-key",content:e[0],onDone:this.onChange.bind(null,t,0),onRemove:this.onRemove.bind(null,t,0),onTab:this.onTab.bind(null,t,0)}),s=_react2["default"].createElement(HeaderEditor,{ref:t+"-value",content:e[1],onDone:this.onChange.bind(null,t,1),onRemove:this.onRemove.bind(null,t,1),onTab:this.onTab.bind(null,t,1)});return _react2["default"].createElement("tr",{key:t},_react2["default"].createElement("td",{className:"header-name"},r,":"),_react2["default"].createElement("td",{className:"header-value"},s))}.bind(this));return _react2["default"].createElement("table",{className:"header-table"},_react2["default"].createElement("tbody",null,e))}}),HeaderEditor=_react2["default"].createClass({displayName:"HeaderEditor",render:function(){return _react2["default"].createElement(_editor.ValueEditor,_extends({ref:"input"},this.props,{onKeyDown:this.onKeyDown,inline:!0}))},focus:function(){_reactDom2["default"].findDOMNode(this).focus()},onKeyDown:function(e){switch(e.keyCode){case _utils2.Key.BACKSPACE:var t=window.getSelection().getRangeAt(0);0===t.startOffset&&0===t.endOffset&&this.props.onRemove(e);break;case _utils2.Key.TAB:e.shiftKey||this.props.onTab(e)}}}),RequestLine=_react2["default"].createClass({displayName:"RequestLine",render:function(){var e=this.props.flow,t=_utils.RequestUtils.pretty_url(e.request),r=e.request.http_version;return _react2["default"].createElement("div",{className:"first-line request-line"},_react2["default"].createElement(_editor.ValueEditor,{ref:"method",content:e.request.method,onDone:this.onMethodChange,inline:!0})," ",_react2["default"].createElement(_editor.ValueEditor,{ref:"url",content:t,onDone:this.onUrlChange,isValid:this.isValidUrl,inline:!0})," ",_react2["default"].createElement(_editor.ValueEditor,{ref:"httpVersion",content:r,onDone:this.onHttpVersionChange,isValid:_utils.isValidHttpVersion,inline:!0}))},isValidUrl:function(e){var t=(0,_utils.parseUrl)(e);return!!t.host},onMethodChange:function(e){_actions.FlowActions.update(this.props.flow,{request:{method:e}})},onUrlChange:function(e){var t=(0,_utils.parseUrl)(e);t.path=t.path||"",_actions.FlowActions.update(this.props.flow,{request:t})},onHttpVersionChange:function(e){var t=(0,_utils.parseHttpVersion)(e);_actions.FlowActions.update(this.props.flow,{request:{http_version:t}})}}),ResponseLine=_react2["default"].createClass({displayName:"ResponseLine",render:function(){var e=this.props.flow,t=e.response.http_version;return _react2["default"].createElement("div",{className:"first-line response-line"},_react2["default"].createElement(_editor.ValueEditor,{ref:"httpVersion",content:t,onDone:this.onHttpVersionChange,isValid:_utils.isValidHttpVersion,inline:!0})," ",_react2["default"].createElement(_editor.ValueEditor,{ref:"code",content:e.response.status_code+"",onDone:this.onCodeChange,isValid:this.isValidCode,inline:!0})," ",_react2["default"].createElement(_editor.ValueEditor,{ref:"msg",content:e.response.reason,onDone:this.onMsgChange,inline:!0}))},isValidCode:function(e){return/^\d+$/.test(e)},onHttpVersionChange:function(e){var t=(0,_utils.parseHttpVersion)(e);_actions.FlowActions.update(this.props.flow,{response:{http_version:t}})},onMsgChange:function(e){_actions.FlowActions.update(this.props.flow,{response:{msg:e}})},onCodeChange:function(e){e=parseInt(e),_actions.FlowActions.update(this.props.flow,{response:{code:e}})}}),Request=exports.Request=_react2["default"].createClass({displayName:"Request",render:function(){var e=this.props.flow;return _react2["default"].createElement("section",{className:"request"},_react2["default"].createElement(RequestLine,{ref:"requestLine",flow:e}),_react2["default"].createElement(Headers,{ref:"headers",message:e.request,onChange:this.onHeaderChange}),_react2["default"].createElement("hr",null),_react2["default"].createElement(_contentview2["default"],{flow:e,message:e.request}))},edit:function(e){switch(e){case"m":this.refs.requestLine.refs.method.focus();break;case"u":this.refs.requestLine.refs.url.focus();break;case"v":this.refs.requestLine.refs.httpVersion.focus();break;case"h":this.refs.headers.edit();break;default:throw"Unimplemented: "+e}},onHeaderChange:function(e){_actions.FlowActions.update(this.props.flow,{request:{headers:e}})}}),Response=exports.Response=_react2["default"].createClass({displayName:"Response",render:function(){var e=this.props.flow;return _react2["default"].createElement("section",{className:"response"},_react2["default"].createElement(ResponseLine,{ref:"responseLine",flow:e}),_react2["default"].createElement(Headers,{ref:"headers",message:e.response,onChange:this.onHeaderChange}),_react2["default"].createElement("hr",null),_react2["default"].createElement(_contentview2["default"],{flow:e,message:e.response}))},edit:function(e){switch(e){case"c":this.refs.responseLine.refs.status_code.focus();break;case"m":this.refs.responseLine.refs.msg.focus();break;case"v":this.refs.responseLine.refs.httpVersion.focus();break;case"h":this.refs.headers.edit();break;default:throw"Unimplemented: "+e}},onHeaderChange:function(e){_actions.FlowActions.update(this.props.flow,{response:{headers:e}})}}),Error=exports.Error=_react2["default"].createClass({displayName:"Error",render:function(){var e=this.props.flow;return _react2["default"].createElement("section",null,_react2["default"].createElement("div",{className:"alert alert-warning"},e.error.msg,_react2["default"].createElement("div",null,_react2["default"].createElement("small",null,(0,_utils2.formatTimeStamp)(e.error.timestamp)))))}}); -var defaultState = { - all: reduceList(), - selected: [], - view: [], - filter: undefined, - highlight: undefined, - sort: { sortColumn: undefined, sortDesc: false } -}; +},{"../../actions.js":2,"../../flow/utils.js":39,"../../utils.js":41,"../editor.js":21,"./contentview.js":22,"lodash":"lodash","react":"react","react-dom":"react-dom"}],26:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(exports,"__esModule",{value:!0});var _react=require("react"),_react2=_interopRequireDefault(_react),_actions=require("../../actions.js"),NavAction=_react2["default"].createClass({displayName:"NavAction",onClick:function(e){e.preventDefault(),this.props.onClick()},render:function(){return _react2["default"].createElement("a",{title:this.props.title,href:"#",className:"nav-action",onClick:this.onClick},_react2["default"].createElement("i",{className:"fa fa-fw "+this.props.icon}))}}),Nav=_react2["default"].createClass({displayName:"Nav",render:function(){var e=this.props.flow,t=this.props.tabs.map(function(e){var t=e.charAt(0).toUpperCase()+e.slice(1),a=this.props.active===e?"active":"",c=function(t){this.props.selectTab(e),t.preventDefault()}.bind(this);return _react2["default"].createElement("a",{key:e,href:"#",className:a,onClick:c},t)}.bind(this)),a=null;e.intercepted&&(a=_react2["default"].createElement(NavAction,{title:"[a]ccept intercepted flow",icon:"fa-play",onClick:_actions.FlowActions.accept.bind(null,e)}));var c=null;return e.modified&&(c=_react2["default"].createElement(NavAction,{title:"revert changes to flow [V]",icon:"fa-history",onClick:_actions.FlowActions.revert.bind(null,e)})),_react2["default"].createElement("nav",{ref:"head",className:"nav-tabs nav-tabs-sm"},t,_react2["default"].createElement(NavAction,{title:"[d]elete flow",icon:"fa-trash",onClick:_actions.FlowActions["delete"].bind(null,e)}),_react2["default"].createElement(NavAction,{title:"[D]uplicate flow",icon:"fa-copy",onClick:_actions.FlowActions.duplicate.bind(null,e)}),_react2["default"].createElement(NavAction,{disabled:!0,title:"[r]eplay flow",icon:"fa-repeat",onClick:_actions.FlowActions.replay.bind(null,e)}),a,c)}});exports["default"]=Nav; -function makeFilterFn(filter) { - return filter ? _filt2.default.parse(filter) : function () { - return true; - }; -} +},{"../../actions.js":2,"react":"react"}],27:[function(require,module,exports){ +"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{"default":t}}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function t(t,e){for(var o=0;oh;h++){var m=i[h]||o;r>=s&&h%2===0&&(d=s,n=h),l>=s?c=h+1:p+=m,s+=m}else n=-2&Math.max(0,Math.floor(r/o)-1),c=Math.min(e,n+Math.ceil(a/o)+2),d=Math.min(n,e)*o,p=Math.max(0,e-c)*o;return{start:n,end:c,paddingTop:d,paddingBottom:p}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.calcVScroll=calcVScroll; - var sortKeyFun = column.sortKeyFun; - if (sort.sortDesc) { - sortKeyFun = sortKeyFun && function (flow) { - var k = column.sortKeyFun(flow); - return _.isString(k) ? (0, _utils.reverseString)("" + k) : -k; - }; - } - return sortKeyFun; -} +},{}],29:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(exports,"__esModule",{value:!0});var _react=require("react"),_react2=_interopRequireDefault(_react),_reactDom=require("react-dom"),_reactDom2=_interopRequireDefault(_reactDom),_lodash=require("lodash"),_lodash2=_interopRequireDefault(_lodash),_utils=require("../utils.js"),Prompt=_react2["default"].createClass({displayName:"Prompt",contextTypes:{returnFocus:_react2["default"].PropTypes.func},propTypes:{options:_react2["default"].PropTypes.array.isRequired,done:_react2["default"].PropTypes.func.isRequired,prompt:_react2["default"].PropTypes.string},componentDidMount:function(){_reactDom2["default"].findDOMNode(this).focus()},onKeyDown:function(e){e.stopPropagation(),e.preventDefault();for(var t=this.getOptions(),r=0;r0&&t(n[0]);)n=n.substr(1);o={text:o,key:n[0]}}if(!o.text||!o.key||t(o.key))throw"invalid options";e.push(o)}return e},render:function(){var e=this.getOptions();return e=_lodash2["default"].map(e,function(e){var t,r,o=e.text.indexOf(e.key);-1!==o?(t=e.text.substring(0,o),r=e.text.substring(o+1)):(t=e.text+" (",r=")");var n=function(t){this.done(e.key),t.stopPropagation()}.bind(this);return _react2["default"].createElement("span",{key:e.key,className:"option",onClick:n},t,_react2["default"].createElement("strong",{className:"text-primary"},e.key),r)}.bind(this)),_react2["default"].createElement("div",{tabIndex:"0",onKeyDown:this.onKeyDown,onClick:this.onClick,className:"prompt-dialog"},_react2["default"].createElement("div",{className:"prompt-content"},this.props.prompt||_react2["default"].createElement("strong",null,"Select: "),e))}});exports["default"]=Prompt; -function reducer() { - var state = arguments.length <= 0 || arguments[0] === undefined ? defaultState : arguments[0]; - var action = arguments[1]; +},{"../utils.js":41,"lodash":"lodash","react":"react","react-dom":"react-dom"}],30:[function(require,module,exports){ +"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var o={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(o[n]=e[n]);return o["default"]=e,o}function Connection(e,o){"/"===e[0]&&(e=location.origin.replace("http","ws")+e);var n=new WebSocket(e);return n.onopen=function(){o(webSocketActions.connected()),o(flowActions.fetchFlows()).then(function(){console.log("flows are loaded now"),_actions.ConnectionActions.open()}),o(eventLogActions.fetchLogEntries())},n.onmessage=function(e){var n=JSON.parse(e.data);switch(_dispatcher.AppDispatcher.dispatchServerAction(n),n.type){case eventLogActions.UPDATE_LOG:return o(eventLogActions.updateLogEntries(n));case flowActions.UPDATE_FLOWS:return o(flowActions.updateFlows(n));default:console.warn("unknown message",n)}},n.onerror=function(){_actions.ConnectionActions.error(),o(eventLogActions.addLogEntry("WebSocket connection error."))},n.onclose=function(){_actions.ConnectionActions.close(),o(eventLogActions.addLogEntry("WebSocket connection closed.")),o(webSocketActions.disconnected())},n}Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=Connection;var _actions=require("./actions.js"),_dispatcher=require("./dispatcher.js"),_websocket=require("./ducks/websocket"),webSocketActions=_interopRequireWildcard(_websocket),_eventLog=require("./ducks/eventLog"),eventLogActions=_interopRequireWildcard(_eventLog),_flows=require("./ducks/flows"),flowActions=_interopRequireWildcard(_flows); - switch (action.type) { - case UPDATE_FLOWS: - var all = reduceList(state.all, action); - return _extends({}, state, { - all: all, - view: (0, _view.updateViewList)(state.view, state.all, all, action, makeFilterFn(action.filter), makeSortFn(state.sort)) - }); - case SET_FILTER: - return _extends({}, state, { - filter: action.filter, - view: (0, _view.updateViewFilter)(state.all, makeFilterFn(action.filter), makeSortFn(state.sort)) - }); - case SET_HIGHLIGHT: - return _extends({}, state, { - highlight: action.highlight - }); - case SET_SORT: - return _extends({}, state, { - sort: action.sort, - view: (0, _view.updateViewSort)(state.view, makeSortFn(action.sort)) - }); - case SELECT_FLOW: - return _extends({}, state, { - selected: [action.flowId] - }); - default: - return state; - } -} +},{"./actions.js":2,"./dispatcher.js":31,"./ducks/eventLog":32,"./ducks/flows":33,"./ducks/websocket":37}],31:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.AppDispatcher=void 0;var _flux=require("flux"),_flux2=_interopRequireDefault(_flux),PayloadSources={VIEW:"view",SERVER:"server"},AppDispatcher=exports.AppDispatcher=new _flux2["default"].Dispatcher;AppDispatcher.dispatchViewAction=function(e){e.source=PayloadSources.VIEW,this.dispatch(e)},AppDispatcher.dispatchServerAction=function(e){e.source=PayloadSources.SERVER,this.dispatch(e)}; -function setFilter(filter) { - return { - type: SET_FILTER, - filter: filter - }; -} -function setHighlight(highlight) { - return { - type: SET_HIGHLIGHT, - highlight: highlight - }; -} -function setSort(sort) { - return { - type: SET_SORT, - sort: sort - }; -} -function selectFlow(flowId) { - return { - type: SELECT_FLOW, - flowId: flowId - }; -} +},{"flux":"flux"}],32:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function _defineProperty(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function reducer(){var e=arguments.length<=0||void 0===arguments[0]?defaultState:arguments[0],t=arguments[1];switch(t.type){case TOGGLE_FILTER:var i=_extends({},e.filter,_defineProperty({},t.filter,!e.filter[t.filter]));return _extends({},e,{filter:i,filteredEvents:(0,_view.updateViewFilter)(e.events,function(e){return i[e.level]})});case TOGGLE_VISIBILITY:return _extends({},e,{visible:!e.visible});case UPDATE_LOG:var r=reduceList(e.events,t);return _extends({},e,{events:r,filteredEvents:(0,_view.updateViewList)(e.filteredEvents,e.events,r,t,function(t){return e.filter[t.level]})});default:return e}}function toggleEventLogFilter(e){return{type:TOGGLE_FILTER,filter:e}}function toggleEventLogVisibility(){return{type:TOGGLE_VISIBILITY}}function addLogEntry(e){var t=arguments.length<=1||void 0===arguments[1]?"web":arguments[1];return addItem({message:e,level:t,id:"log-"+id++})}Object.defineProperty(exports,"__esModule",{value:!0}),exports.fetchLogEntries=exports.updateLogEntries=exports.UPDATE_LOG=void 0;var _extends=Object.assign||function(e){for(var t=1;t bkey) { - return 1; - } else { - return 0; - } - }; - // need to adjust sortedIndexOf as well - // if (sortFn.reverse) - // return (a, b) => compareFn(b, a) - return compareFn; -}; - -var sortedInsert = function sortedInsert(list, sortFn, item) { - var l = [].concat(_toConsumableArray(list), [item]); - l.indexOf = function (x) { - return sortedIndexOf(l, x, sortFn); - }; - var compareFn = makeCompareFn(sortFn); - - // only sort if sorting order is not correct yet - if (sortFn && compareFn(list[list.length - 1], item) > 0) { - // TODO: This is untested - console.debug("sorting view..."); - l.sort(compareFn); - } - return l; -}; - -var sortedRemove = function sortedRemove(list, sortFn, item) { - var itemId = item.id; - var l = list.filter(function (x) { - return x.id !== itemId; - }); - l.indexOf = function (x) { - return sortedIndexOf(l, x, sortFn); - }; - return l; -}; - -function sortedIndexOf(list, value, sortFn) { - if (!sortFn) { - sortFn = function sortFn(x) { - return 0; - }; // This triggers the linear search for flows that have the same sort value. - } - - var low = 0, - high = list.length, - val = sortFn(value), - mid = void 0; - while (low < high) { - mid = low + high >>> 1; - if (sortFn(list[mid]) < val) { - low = mid + 1; - } else { - high = mid; - } - } - - // Two flows may have the same sort value. - // we previously determined the leftmost flow with the same sort value, - // so no we need to scan linearly - while (list[low].id !== value.id && sortFn(list[low + 1]) === val) { - low++; - } - return low; -} - -// for when the list changes -function updateViewList(currentView, currentList, nextList, action) { - var filterFn = arguments.length <= 4 || arguments[4] === undefined ? defaultFilterFn : arguments[4]; - var sortFn = arguments.length <= 5 || arguments[5] === undefined ? defaultSortFn : arguments[5]; - - switch (action.cmd) { - case _list.REQUEST_LIST: - return currentView; - case _list.RECEIVE_LIST: - return updateViewFilter(nextList, filterFn, sortFn); - case _list.ADD: - if (filterFn(action.item)) { - return sortedInsert(currentView, sortFn, action.item); - } - return currentView; - case _list.UPDATE: - // let's determine if it's in the view currently and if it should be in the view. - var currentItemState = currentList.byId[action.item.id], - nextItemState = action.item, - isInView = filterFn(currentItemState), - shouldBeInView = filterFn(nextItemState); - - if (!isInView && shouldBeInView) return sortedInsert(currentView, sortFn, action.item); - if (isInView && !shouldBeInView) return sortedRemove(currentView, sortFn, action.item); - if (isInView && shouldBeInView) { - var _ret = function () { - var s = [].concat(_toConsumableArray(currentView)); - s.indexOf = function (x) { - return sortedIndexOf(s, x, sortFn); - }; - s[s.indexOf(currentItemState)] = nextItemState; - if (sortFn && sortFn(currentItemState) !== sortFn(nextItemState)) s.sort(makeCompareFn(sortFn)); - return { - v: s - }; - }(); - - if ((typeof _ret === "undefined" ? "undefined" : _typeof(_ret)) === "object") return _ret.v; - } - return currentView; - case _list.REMOVE: - var isInView_ = filterFn(currentList.byId[action.item.id]); - if (isInView_) { - return sortedRemove(currentView, sortFn, action.item); - } - return currentView; - default: - console.error("Unknown list action: ", action); - return currentView; - } -} - -function updateViewFilter(list) { - var filterFn = arguments.length <= 1 || arguments[1] === undefined ? defaultFilterFn : arguments[1]; - var sortFn = arguments.length <= 2 || arguments[2] === undefined ? defaultSortFn : arguments[2]; - - var filtered = list.list.filter(filterFn); - if (sortFn) { - filtered.sort(makeCompareFn(sortFn)); - } - filtered.indexOf = function (x) { - return sortedIndexOf(filtered, x, sortFn); - }; - - return filtered; -} - -function updateViewSort(list) { - var sortFn = arguments.length <= 1 || arguments[1] === undefined ? defaultSortFn : arguments[1]; - - var sorted = list.slice(0); - if (sortFn) { - sorted.sort(makeCompareFn(sortFn)); - } - sorted.indexOf = function (x) { - return sortedIndexOf(sorted, x, sortFn); - }; - - return sorted; -} +"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);tn;)u=n+o>>>1,r(e[u])n?-1:n>o?1:0};return t},sortedInsert=function(e,t,r){var n=[].concat(_toConsumableArray(e),[r]);n.indexOf=function(e){return sortedIndexOf(n,e,t)};var o=makeCompareFn(t);return t&&o(e[e.length-1],r)>0&&(console.debug("sorting view..."),n.sort(o)),n},sortedRemove=function(e,t,r){var n=r.id,o=e.filter(function(e){return e.id!==n});return o.indexOf=function(e){return sortedIndexOf(o,e,t)},o}; },{"./list":35}],37:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = reducer; -exports.connected = connected; -exports.disconnected = disconnected; -var CONNECTED = 'WEBSOCKET_CONNECTED'; -var DISCONNECTED = 'WEBSOCKET_DISCONNECTED'; - -var defaultState = { - connected: false -}; -/* we may want to have an error message attribute here at some point */ -function reducer() { - var state = arguments.length <= 0 || arguments[0] === undefined ? defaultState : arguments[0]; - var action = arguments[1]; - - switch (action.type) { - case CONNECTED: - return { - connected: true - }; - case DISCONNECTED: - return { - connected: false - }; - default: - return state; - } -} - -function connected() { - return { type: CONNECTED }; -} -function disconnected() { - return { type: DISCONNECTED }; -} +"use strict";function reducer(){var e=arguments.length<=0||void 0===arguments[0]?defaultState:arguments[0],t=arguments[1];switch(t.type){case CONNECTED:return{connected:!0};case DISCONNECTED:return{connected:!1};default:return e}}function connected(){return{type:CONNECTED}}function disconnected(){return{type:DISCONNECTED}}Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=reducer,exports.connected=connected,exports.disconnected=disconnected;var CONNECTED="WEBSOCKET_CONNECTED",DISCONNECTED="WEBSOCKET_DISCONNECTED",defaultState={connected:!1}; },{}],38:[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 = "~a", - peg$c24 = { type: "literal", value: "~a", description: "\"~a\"" }, - peg$c25 = function peg$c25() { - return assetFilter; - }, - peg$c26 = "~e", - peg$c27 = { type: "literal", value: "~e", description: "\"~e\"" }, - peg$c28 = function peg$c28() { - return errorFilter; - }, - peg$c29 = "~q", - peg$c30 = { type: "literal", value: "~q", description: "\"~q\"" }, - peg$c31 = function peg$c31() { - return noResponseFilter; - }, - peg$c32 = "~s", - peg$c33 = { type: "literal", value: "~s", description: "\"~s\"" }, - peg$c34 = function peg$c34() { - return responseFilter; - }, - peg$c35 = "true", - peg$c36 = { type: "literal", value: "true", description: "\"true\"" }, - peg$c37 = function peg$c37() { - return trueFilter; - }, - peg$c38 = "false", - peg$c39 = { type: "literal", value: "false", description: "\"false\"" }, - peg$c40 = function peg$c40() { - return falseFilter; - }, - 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 = "~h", - peg$c48 = { type: "literal", value: "~h", description: "\"~h\"" }, - peg$c49 = function peg$c49(s) { - return header(s); - }, - peg$c50 = "~hq", - peg$c51 = { type: "literal", value: "~hq", description: "\"~hq\"" }, - peg$c52 = function peg$c52(s) { - return requestHeader(s); - }, - peg$c53 = "~hs", - peg$c54 = { type: "literal", value: "~hs", description: "\"~hs\"" }, - peg$c55 = function peg$c55(s) { - return responseHeader(s); - }, - peg$c56 = "~m", - peg$c57 = { type: "literal", value: "~m", description: "\"~m\"" }, - peg$c58 = function peg$c58(s) { - return method(s); - }, - peg$c59 = "~t", - peg$c60 = { type: "literal", value: "~t", description: "\"~t\"" }, - peg$c61 = function peg$c61(s) { - return contentType(s); - }, - peg$c62 = "~tq", - peg$c63 = { type: "literal", value: "~tq", description: "\"~tq\"" }, - peg$c64 = function peg$c64(s) { - return requestContentType(s); - }, - peg$c65 = "~ts", - peg$c66 = { type: "literal", value: "~ts", description: "\"~ts\"" }, - peg$c67 = function peg$c67(s) { - return responseContentType(s); - }, - peg$c68 = "~u", - peg$c69 = { type: "literal", value: "~u", description: "\"~u\"" }, - peg$c70 = function peg$c70(s) { - return url(s); - }, - peg$c71 = { type: "other", description: "integer" }, - peg$c72 = /^['"]/, - peg$c73 = { type: "class", value: "['\"]", description: "['\"]" }, - peg$c74 = /^[0-9]/, - peg$c75 = { type: "class", value: "[0-9]", description: "[0-9]" }, - peg$c76 = function peg$c76(digits) { - return parseInt(digits.join(""), 10); - }, - peg$c77 = { type: "other", description: "string" }, - peg$c78 = "\"", - peg$c79 = { type: "literal", value: "\"", description: "\"\\\"\"" }, - peg$c80 = function peg$c80(chars) { - return chars.join(""); - }, - peg$c81 = "'", - peg$c82 = { type: "literal", value: "'", description: "\"'\"" }, - peg$c83 = /^["\\]/, - peg$c84 = { type: "class", value: "[\"\\\\]", description: "[\"\\\\]" }, - peg$c85 = { type: "any", description: "any character" }, - peg$c86 = function peg$c86(char) { - return char; - }, - peg$c87 = "\\", - peg$c88 = { type: "literal", value: "\\", description: "\"\\\\\"" }, - peg$c89 = /^['\\]/, - peg$c90 = { type: "class", value: "['\\\\]", description: "['\\\\]" }, - peg$c91 = /^['"\\]/, - peg$c92 = { type: "class", value: "['\"\\\\]", description: "['\"\\\\]" }, - peg$c93 = "n", - peg$c94 = { type: "literal", value: "n", description: "\"n\"" }, - peg$c95 = function peg$c95() { - return "\n"; - }, - peg$c96 = "r", - peg$c97 = { type: "literal", value: "r", description: "\"r\"" }, - peg$c98 = function peg$c98() { - return "\r"; - }, - peg$c99 = "t", - peg$c100 = { type: "literal", value: "t", description: "\"t\"" }, - peg$c101 = function peg$c101() { - 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; - - s0 = peg$parseNullaryExpr(); - if (s0 === peg$FAILED) { - s0 = peg$parseUnaryExpr(); - } - - return s0; - } - - function peg$parseNullaryExpr() { - var s0, s1; - - s0 = peg$parseBooleanLiteral(); - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c23) { - s1 = peg$c23; - peg$currPos += 2; - } 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, 2) === peg$c26) { - s1 = peg$c26; - peg$currPos += 2; - } 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) { - peg$savedPos = s0; - s1 = peg$c34(); - } - s0 = s1; - } - } - } - } - - return s0; - } - - function peg$parseBooleanLiteral() { - var s0, s1; - - s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c35) { - s1 = peg$c35; - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c36); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c37(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c38) { - s1 = peg$c38; - peg$currPos += 5; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c39); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c40(); - } - s0 = s1; - } - - return s0; - } - - function peg$parseUnaryExpr() { - var s0, s1, s2, s3; - - 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, 2) === peg$c47) { - s1 = peg$c47; - peg$currPos += 2; - } 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, 3) === peg$c50) { - s1 = peg$c50; - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c51); - } - } - 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$c52(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$c53) { - s1 = peg$c53; - peg$currPos += 3; - } 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, 2) === peg$c56) { - s1 = peg$c56; - peg$currPos += 2; - } 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, 2) === peg$c59) { - s1 = peg$c59; - peg$currPos += 2; - } 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, 3) === peg$c62) { - s1 = peg$c62; - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c63); - } - } - 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$c64(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$c65) { - s1 = peg$c65; - peg$currPos += 3; - } 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, 2) === peg$c68) { - s1 = peg$c68; - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c69); - } - } - 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$c70(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; - s1 = peg$parseStringLiteral(); - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c70(s1); - } - s0 = s1; - } - } - } - } - } - } - } - } - } - } - - return s0; - } - - function peg$parseIntegerLiteral() { - var s0, s1, s2, s3; - - peg$silentFails++; - s0 = peg$currPos; - if (peg$c72.test(input.charAt(peg$currPos))) { - s1 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c73); - } - } - if (s1 === peg$FAILED) { - s1 = null; - } - if (s1 !== peg$FAILED) { - s2 = []; - if (peg$c74.test(input.charAt(peg$currPos))) { - s3 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c75); - } - } - if (s3 !== peg$FAILED) { - while (s3 !== peg$FAILED) { - s2.push(s3); - if (peg$c74.test(input.charAt(peg$currPos))) { - s3 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c75); - } - } - } - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - if (peg$c72.test(input.charAt(peg$currPos))) { - s3 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c73); - } - } - if (s3 === peg$FAILED) { - s3 = null; - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c76(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$c71); - } - } - - return s0; - } - - function peg$parseStringLiteral() { - var s0, s1, s2, s3; - - peg$silentFails++; - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 34) { - s1 = peg$c78; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c79); - } - } - 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$c78; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c79); - } - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c80(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$c81; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c82); - } - } - 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$c81; - peg$currPos++; - } else { - s3 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c82); - } - } - if (s3 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c80(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$c80(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$c77); - } - } - - return s0; - } - - function peg$parseDoubleStringChar() { - var s0, s1, s2; - - s0 = peg$currPos; - s1 = peg$currPos; - peg$silentFails++; - if (peg$c83.test(input.charAt(peg$currPos))) { - s2 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c84); - } - } - 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$c85); - } - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c86(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$c87; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c88); - } - } - if (s1 !== peg$FAILED) { - s2 = peg$parseEscapeSequence(); - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c86(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$c89.test(input.charAt(peg$currPos))) { - s2 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c90); - } - } - 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$c85); - } - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c86(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$c87; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c88); - } - } - if (s1 !== peg$FAILED) { - s2 = peg$parseEscapeSequence(); - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c86(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$c85); - } - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c86(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$c91.test(input.charAt(peg$currPos))) { - s0 = input.charAt(peg$currPos); - peg$currPos++; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c92); - } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 110) { - s1 = peg$c93; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c94); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c95(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 114) { - s1 = peg$c96; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c97); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c98(); - } - s0 = s1; - if (s0 === peg$FAILED) { - s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 116) { - s1 = peg$c99; - peg$currPos++; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { - peg$fail(peg$c100); - } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$c101(); - } - 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 domain(regex) { - regex = new RegExp(regex, "i"); - function domainFilter(flow) { - return flow.request && regex.test(flow.request.host); - } - domainFilter.desc = "domain matches " + regex; - return domainFilter; - } - 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 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 noResponseFilter(flow) { - return flow.request && !flow.response; - } - noResponseFilter.desc = "has no response"; - function responseFilter(flow) { - return !!flow.response; - } - responseFilter.desc = "has response"; - - 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 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; - } - - 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 - }; -}(); +"use strict";module.exports=function(){function e(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}function t(e,r,n,i){this.message=e,this.expected=r,this.found=n,this.location=i,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}function r(e){function r(t){var r,n,i=Ot[t];if(i)return i;for(r=t-1;!Ot[r];)r--;for(i=Ot[r],i={line:i.line,column:i.column,seenCR:i.seenCR};t>r;)n=e.charAt(r),"\n"===n?(i.seenCR||i.line++,i.column=1,i.seenCR=!1):"\r"===n||"\u2028"===n||"\u2029"===n?(i.line++,i.column=1,i.seenCR=!0):(i.column++,i.seenCR=!1),r++;return Ot[t]=i,i}function n(e,t){var n=r(e),i=r(t);return{start:{offset:e,line:n.line,column:n.column},end:{offset:t,line:i.line,column:i.column}}}function i(e){Pt>Mt||(Mt>Pt&&(Pt=Mt,Qt=[]),Qt.push(e))}function s(e,r,n,i){function s(e){var t=1;for(e.sort(function(e,t){return e.descriptiont.description?1:0});t1?u.slice(0,-1).join(", ")+" or "+u[e.length-1]:u[0],i=t?'"'+r(t)+'"':"end of input","Expected "+n+" but "+i+" found."}return null!==r&&s(r),new t(null!==e?e:u(r,n),r,n,i)}function u(){var e,t,r,n;return Vt++,e=Mt,t=a(),t!==P?(r=l(),r!==P?(n=a(),n!==P?(Nt=e,t=X(r),e=t):(Mt=e,e=P)):(Mt=e,e=P)):(Mt=e,e=P),Vt--,e===P&&(t=P,0===Vt&&i(W)),e}function c(){var t,r;return Vt++,Z.test(e.charAt(Mt))?(t=e.charAt(Mt),Mt++):(t=P,0===Vt&&i($)),Vt--,t===P&&(r=P,0===Vt&&i(Y)),t}function o(){var t,r;return Vt++,te.test(e.charAt(Mt))?(t=e.charAt(Mt),Mt++):(t=P,0===Vt&&i(re)),Vt--,t===P&&(r=P,0===Vt&&i(ee)),t}function a(){var e,t;for(Vt++,e=[],t=c();t!==P;)e.push(t),t=c();return Vt--,e===P&&(t=P,0===Vt&&i(ne)),e}function l(){var t,r,n,s,u,c;return t=Mt,r=p(),r!==P?(n=a(),n!==P?(124===e.charCodeAt(Mt)?(s=ie,Mt++):(s=P,0===Vt&&i(se)),s!==P?(u=a(),u!==P?(c=l(),c!==P?(Nt=t,r=ue(r,c),t=r):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P),t===P&&(t=p()),t}function p(){var t,r,n,s,u,o;if(t=Mt,r=f(),r!==P?(n=a(),n!==P?(38===e.charCodeAt(Mt)?(s=ce,Mt++):(s=P,0===Vt&&i(oe)),s!==P?(u=a(),u!==P?(o=p(),o!==P?(Nt=t,r=ae(r,o),t=r):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P),t===P){if(t=Mt,r=f(),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=p(),s!==P?(Nt=t,r=ae(r,s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;t===P&&(t=f())}return t}function f(){var t,r,n,s;return t=Mt,33===e.charCodeAt(Mt)?(r=le,Mt++):(r=P,0===Vt&&i(pe)),r!==P?(n=a(),n!==P?(s=f(),s!==P?(Nt=t,r=fe(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P),t===P&&(t=h()),t}function h(){var t,r,n,s,u,c;return t=Mt,40===e.charCodeAt(Mt)?(r=he,Mt++):(r=P,0===Vt&&i(de)),r!==P?(n=a(),n!==P?(s=l(),s!==P?(u=a(),u!==P?(41===e.charCodeAt(Mt)?(c=ve,Mt++):(c=P,0===Vt&&i(ye)),c!==P?(Nt=t,r=ge(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P)):(Mt=t,t=P),t===P&&(t=d()),t}function d(){var e;return e=v(),e===P&&(e=g()),e}function v(){var t,r;return t=y(),t===P&&(t=Mt,e.substr(Mt,2)===Ae?(r=Ae,Mt+=2):(r=P,0===Vt&&i(xe)),r!==P&&(Nt=t,r=Re()),t=r,t===P&&(t=Mt,e.substr(Mt,2)===me?(r=me,Mt+=2):(r=P,0===Vt&&i(qe)),r!==P&&(Nt=t,r=Ce()),t=r,t===P&&(t=Mt,e.substr(Mt,2)===we?(r=we,Mt+=2):(r=P,0===Vt&&i(Ee)),r!==P&&(Nt=t,r=be()),t=r,t===P&&(t=Mt,e.substr(Mt,2)===Fe?(r=Fe,Mt+=2):(r=P,0===Vt&&i(Ue)),r!==P&&(Nt=t,r=je()),t=r)))),t}function y(){var t,r;return t=Mt,e.substr(Mt,4)===Te?(r=Te,Mt+=4):(r=P,0===Vt&&i(_e)),r!==P&&(Nt=t,r=Se()),t=r,t===P&&(t=Mt,e.substr(Mt,5)===ke?(r=ke,Mt+=5):(r=P,0===Vt&&i(Be)),r!==P&&(Nt=t,r=Ie()),t=r),t}function g(){var t,r,n,s;if(t=Mt,e.substr(Mt,2)===ze?(r=ze,Mt+=2):(r=P,0===Vt&&i(De)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=A(),s!==P?(Nt=t,r=Ge(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,2)===He?(r=He,Mt+=2):(r=P,0===Vt&&i(Je)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=Ke(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,2)===Le?(r=Le,Mt+=2):(r=P,0===Vt&&i(Me)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=Ne(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,3)===Oe?(r=Oe,Mt+=3):(r=P,0===Vt&&i(Pe)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=Qe(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,3)===Ve?(r=Ve,Mt+=3):(r=P,0===Vt&&i(We)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=Xe(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,2)===Ye?(r=Ye,Mt+=2):(r=P,0===Vt&&i(Ze)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=$e(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,2)===et?(r=et,Mt+=2):(r=P,0===Vt&&i(tt)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=rt(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,3)===nt?(r=nt,Mt+=3):(r=P,0===Vt&&i(it)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=st(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,3)===ut?(r=ut,Mt+=3):(r=P,0===Vt&&i(ct)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=ot(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,e.substr(Mt,2)===at?(r=at,Mt+=2):(r=P,0===Vt&&i(lt)),r!==P){if(n=[],s=c(),s!==P)for(;s!==P;)n.push(s),s=c();else n=P;n!==P?(s=x(),s!==P?(Nt=t,r=pt(s),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;t===P&&(t=Mt,r=x(),r!==P&&(Nt=t,r=pt(r)),t=r)}}}}}}}}}return t}function A(){var t,r,n,s;if(Vt++,t=Mt,ht.test(e.charAt(Mt))?(r=e.charAt(Mt),Mt++):(r=P,0===Vt&&i(dt)),r===P&&(r=null),r!==P){if(n=[],vt.test(e.charAt(Mt))?(s=e.charAt(Mt),Mt++):(s=P,0===Vt&&i(yt)),s!==P)for(;s!==P;)n.push(s),vt.test(e.charAt(Mt))?(s=e.charAt(Mt),Mt++):(s=P,0===Vt&&i(yt));else n=P;n!==P?(ht.test(e.charAt(Mt))?(s=e.charAt(Mt),Mt++):(s=P,0===Vt&&i(dt)),s===P&&(s=null),s!==P?(Nt=t,r=gt(n),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;return Vt--,t===P&&(r=P,0===Vt&&i(ft)),t}function x(){var t,r,n,s;if(Vt++,t=Mt,34===e.charCodeAt(Mt)?(r=xt,Mt++):(r=P,0===Vt&&i(Rt)),r!==P){for(n=[],s=R();s!==P;)n.push(s),s=R();n!==P?(34===e.charCodeAt(Mt)?(s=xt,Mt++):(s=P,0===Vt&&i(Rt)),s!==P?(Nt=t,r=mt(n),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P){if(t=Mt,39===e.charCodeAt(Mt)?(r=qt,Mt++):(r=P,0===Vt&&i(Ct)),r!==P){for(n=[],s=m();s!==P;)n.push(s),s=m();n!==P?(39===e.charCodeAt(Mt)?(s=qt,Mt++):(s=P,0===Vt&&i(Ct)),s!==P?(Nt=t,r=mt(n),t=r):(Mt=t,t=P)):(Mt=t,t=P)}else Mt=t,t=P;if(t===P)if(t=Mt,r=Mt,Vt++,n=o(),Vt--,n===P?r=void 0:(Mt=r,r=P),r!==P){if(n=[],s=q(),s!==P)for(;s!==P;)n.push(s),s=q();else n=P;n!==P?(Nt=t,r=mt(n),t=r):(Mt=t,t=P)}else Mt=t,t=P}return Vt--,t===P&&(r=P,0===Vt&&i(At)),t}function R(){var t,r,n;return t=Mt,r=Mt,Vt++,wt.test(e.charAt(Mt))?(n=e.charAt(Mt),Mt++):(n=P,0===Vt&&i(Et)),Vt--,n===P?r=void 0:(Mt=r,r=P),r!==P?(e.length>Mt?(n=e.charAt(Mt),Mt++):(n=P,0===Vt&&i(bt)),n!==P?(Nt=t,r=Ft(n),t=r):(Mt=t,t=P)):(Mt=t,t=P),t===P&&(t=Mt,92===e.charCodeAt(Mt)?(r=Ut,Mt++):(r=P,0===Vt&&i(jt)),r!==P?(n=C(),n!==P?(Nt=t,r=Ft(n),t=r):(Mt=t,t=P)):(Mt=t,t=P)),t}function m(){var t,r,n;return t=Mt,r=Mt,Vt++,Tt.test(e.charAt(Mt))?(n=e.charAt(Mt),Mt++):(n=P,0===Vt&&i(_t)),Vt--,n===P?r=void 0:(Mt=r,r=P),r!==P?(e.length>Mt?(n=e.charAt(Mt),Mt++):(n=P,0===Vt&&i(bt)),n!==P?(Nt=t,r=Ft(n),t=r):(Mt=t,t=P)):(Mt=t,t=P),t===P&&(t=Mt,92===e.charCodeAt(Mt)?(r=Ut,Mt++):(r=P,0===Vt&&i(jt)),r!==P?(n=C(),n!==P?(Nt=t,r=Ft(n),t=r):(Mt=t,t=P)):(Mt=t,t=P)),t}function q(){var t,r,n;return t=Mt,r=Mt,Vt++,n=c(),Vt--,n===P?r=void 0:(Mt=r,r=P),r!==P?(e.length>Mt?(n=e.charAt(Mt),Mt++):(n=P,0===Vt&&i(bt)),n!==P?(Nt=t,r=Ft(n),t=r):(Mt=t,t=P)):(Mt=t,t=P),t}function C(){var t,r;return St.test(e.charAt(Mt))?(t=e.charAt(Mt),Mt++):(t=P,0===Vt&&i(kt)),t===P&&(t=Mt,110===e.charCodeAt(Mt)?(r=Bt,Mt++):(r=P,0===Vt&&i(It)),r!==P&&(Nt=t,r=zt()),t=r,t===P&&(t=Mt,114===e.charCodeAt(Mt)?(r=Dt,Mt++):(r=P,0===Vt&&i(Gt)),r!==P&&(Nt=t,r=Ht()),t=r,t===P&&(t=Mt,116===e.charCodeAt(Mt)?(r=Jt,Mt++):(r=P,0===Vt&&i(Kt)),r!==P&&(Nt=t,r=Lt()),t=r))),t}function w(e,t){function r(){return e.apply(this,arguments)||t.apply(this,arguments)}return r.desc=e.desc+" or "+t.desc,r}function E(e,t){function r(){return e.apply(this,arguments)&&t.apply(this,arguments)}return r.desc=e.desc+" and "+t.desc,r}function b(e){function t(){return!e.apply(this,arguments)}return t.desc="not "+e.desc,t}function F(e){function t(){return e.apply(this,arguments)}return t.desc="("+e.desc+")",t}function U(e){return!0}function j(e){return!1}function T(e){if(e.response)for(var t=Wt.ResponseUtils.getContentType(e.response),r=Xt.length;r--;)if(Xt[r].test(t))return!0;return!1}function _(e){function t(t){return t.response&&t.response.status_code===e}return t.desc="resp. code is "+e,t}function S(e){function t(t){return t.request&&e.test(t.request.host)}return e=new RegExp(e,"i"),t.desc="domain matches "+e,t}function k(e){return!!e.error}function B(e){function t(t){return t.request&&Wt.RequestUtils.match_header(t.request,e)||t.response&&Wt.ResponseUtils.match_header(t.response,e)}return e=new RegExp(e,"i"),t.desc="header matches "+e,t}function I(e){function t(t){return t.request&&Wt.RequestUtils.match_header(t.request,e)}return e=new RegExp(e,"i"),t.desc="req. header matches "+e,t}function z(e){function t(t){return t.response&&Wt.ResponseUtils.match_header(t.response,e)}return e=new RegExp(e,"i"),t.desc="resp. header matches "+e,t}function D(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 G(e){return e.request&&!e.response}function H(e){return!!e.response}function J(e){function t(t){return t.request&&e.test(Wt.RequestUtils.getContentType(t.request))||t.response&&e.test(Wt.ResponseUtils.getContentType(t.response))}return e=new RegExp(e,"i"),t.desc="content type matches "+e,t}function K(e){function t(t){return t.request&&e.test(Wt.RequestUtils.getContentType(t.request))}return e=new RegExp(e,"i"),t.desc="req. content type matches "+e,t}function L(e){function t(t){return t.response&&e.test(Wt.ResponseUtils.getContentType(t.response))}return e=new RegExp(e,"i"),t.desc="resp. content type matches "+e,t}function M(e){function t(t){return t.request&&e.test(Wt.RequestUtils.pretty_url(t.request))}return e=new RegExp(e,"i"),t.desc="url matches "+e,t}var N,O=arguments.length>1?arguments[1]:{},P={},Q={start:u},V=u,W={type:"other",description:"filter expression"},X=function(e){return e},Y={type:"other",description:"whitespace"},Z=/^[ \t\n\r]/,$={type:"class",value:"[ \\t\\n\\r]",description:"[ \\t\\n\\r]"},ee={type:"other",description:"control character"},te=/^[|&!()~"]/,re={type:"class",value:'[|&!()~"]',description:'[|&!()~"]'},ne={type:"other",description:"optional whitespace"},ie="|",se={type:"literal",value:"|",description:'"|"'},ue=function(e,t){return w(e,t)},ce="&",oe={type:"literal",value:"&",description:'"&"'},ae=function(e,t){return E(e,t)},le="!",pe={type:"literal",value:"!",description:'"!"'},fe=function(e){return b(e)},he="(",de={type:"literal",value:"(",description:'"("'},ve=")",ye={type:"literal",value:")",description:'")"'},ge=function(e){return F(e)},Ae="~a",xe={type:"literal",value:"~a",description:'"~a"'},Re=function(){return T},me="~e",qe={type:"literal",value:"~e",description:'"~e"'},Ce=function(){return k},we="~q",Ee={type:"literal",value:"~q",description:'"~q"'},be=function(){return G},Fe="~s",Ue={type:"literal",value:"~s",description:'"~s"'},je=function(){return H},Te="true",_e={type:"literal",value:"true",description:'"true"'},Se=function(){return U},ke="false",Be={type:"literal",value:"false",description:'"false"'},Ie=function(){return j},ze="~c",De={type:"literal",value:"~c",description:'"~c"'},Ge=function(e){return _(e)},He="~d",Je={type:"literal",value:"~d",description:'"~d"'},Ke=function(e){return S(e)},Le="~h",Me={type:"literal",value:"~h",description:'"~h"'},Ne=function(e){return B(e)},Oe="~hq",Pe={type:"literal",value:"~hq",description:'"~hq"'},Qe=function(e){return I(e)},Ve="~hs",We={type:"literal",value:"~hs",description:'"~hs"'},Xe=function(e){return z(e)},Ye="~m",Ze={type:"literal",value:"~m",description:'"~m"'},$e=function(e){return D(e)},et="~t",tt={type:"literal",value:"~t",description:'"~t"'},rt=function(e){return J(e)},nt="~tq",it={type:"literal",value:"~tq",description:'"~tq"'},st=function(e){return K(e)},ut="~ts",ct={type:"literal",value:"~ts",description:'"~ts"'},ot=function(e){return L(e)},at="~u",lt={type:"literal",value:"~u",description:'"~u"'},pt=function(e){return M(e)},ft={type:"other",description:"integer"},ht=/^['"]/,dt={type:"class",value:"['\"]",description:"['\"]"},vt=/^[0-9]/,yt={type:"class",value:"[0-9]",description:"[0-9]"},gt=function(e){return parseInt(e.join(""),10)},At={type:"other",description:"string"},xt='"',Rt={type:"literal",value:'"',description:'"\\""'},mt=function(e){return e.join("")},qt="'",Ct={type:"literal",value:"'",description:'"\'"'},wt=/^["\\]/,Et={type:"class",value:'["\\\\]',description:'["\\\\]'},bt={type:"any",description:"any character"},Ft=function(e){return e},Ut="\\",jt={type:"literal",value:"\\",description:'"\\\\"'},Tt=/^['\\]/,_t={type:"class",value:"['\\\\]",description:"['\\\\]"},St=/^['"\\]/,kt={type:"class",value:"['\"\\\\]",description:"['\"\\\\]"},Bt="n",It={type:"literal",value:"n",description:'"n"'},zt=function(){return"\n"},Dt="r",Gt={type:"literal",value:"r",description:'"r"'},Ht=function(){return"\r"},Jt="t",Kt={type:"literal",value:"t",description:'"t"'},Lt=function(){return" "},Mt=0,Nt=0,Ot=[{line:1,column:1,seenCR:!1}],Pt=0,Qt=[],Vt=0;if("startRule"in O){if(!(O.startRule in Q))throw new Error("Can't start parsing from rule \""+O.startRule+'".');V=Q[O.startRule]}var Wt=require("../flow/utils.js");U.desc="true",j.desc="false";var Xt=[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(T.desc="is asset",k.desc="has error",G.desc="has no response",H.desc="has response",N=V(),N!==P&&Mt===e.length)return N;throw N!==P&&Mt 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"); - -//Tornado XSRF Protection. -_jquery2.default.ajaxPrefilter(function (options) { - if (["post", "put", "delete"].indexOf(options.type.toLowerCase()) >= 0 && options.url[0] === "/") { - if (options.url.indexOf("?") === -1) { - options.url += "?" + xsrf; - } else { - options.url += "&" + xsrf; - } - } -}); -// Log AJAX Errors -(0, _jquery2.default)(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) { - if (thrownError === "abort") { - return; - } - var message = jqXHR.responseText; - console.error(thrownError, message, arguments); - alert(message); -}); - -function fetchApi(url, options) { - if (url.indexOf("?") === -1) { - url += "?" + xsrf; - } else { - url += "&" + xsrf; - } - return fetch(url, _extends({}, options, { - credentials: 'same-origin' - })); -} +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}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 r=document.cookie.match(new RegExp("\\b"+e+"=([^;]*)\\b"));return r?r[1]:void 0}function fetchApi(e,r){return e+=-1===e.indexOf("?")?"?"+xsrf:"&"+xsrf,fetch(e,_extends({},r,{credentials:"same-origin"}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatTimeStamp=exports.formatTimeDelta=exports.formatSize=exports.Key=void 0;var _extends=Object.assign||function(e){for(var r=1;r=i;i++)Key[String.fromCharCode(i)]=i;var formatSize=exports.formatSize=function(e){if(0===e)return"0";for(var r=["b","kb","mb","gb","tb"],t=0;te);t++);var o;return o=e%Math.pow(1024,t)===0?0:1,(e/Math.pow(1024,t)).toFixed(o)+r[t]},formatTimeDelta=exports.formatTimeDelta=function(e){for(var r=e,t=["ms","s","min","h"],o=[1e3,60,60],a=0;Math.abs(r)>=o[a]&&a=0&&"/"===e.url[0]&&(-1===e.url.indexOf("?")?e.url+="?"+xsrf:e.url+="&"+xsrf)}),(0,_jquery2["default"])(document).ajaxError(function(e,r,t,o){if("abort"!==o){var a=r.responseText;console.error(o,a,arguments),alert(a)}}); },{"./actions.js":2,"jquery":"jquery","lodash":"lodash","react":"react"}]},{},[3]) diff --git a/mitmproxy/web/static/vendor.js b/mitmproxy/web/static/vendor.js index 08af964a..a02a645d 100644 --- a/mitmproxy/web/static/vendor.js +++ b/mitmproxy/web/static/vendor.js @@ -1,54178 +1,1129 @@ require=(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;o 0 && typeof x[0] !== 'number') return false; - return true; -} - -function objEquiv(a, b, opts) { - var i, key; - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical 'prototype' property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return deepEqual(a, b, opts); - } - if (isBuffer(a)) { - if (!isBuffer(b)) { - return false; - } - if (a.length !== b.length) return false; - for (i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; - } - return true; - } - try { - var ka = objectKeys(a), - kb = objectKeys(b); - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!deepEqual(a[key], b[key], opts)) return false; - } - return typeof a === typeof b; -} +function isUndefinedOrNull(e){return null===e||void 0===e}function isBuffer(e){return e&&"object"==typeof e&&"number"==typeof e.length?"function"!=typeof e.copy||"function"!=typeof e.slice?!1:!(e.length>0&&"number"!=typeof e[0]):!1}function objEquiv(e,t,r){var n,i;if(isUndefinedOrNull(e)||isUndefinedOrNull(t))return!1;if(e.prototype!==t.prototype)return!1;if(isArguments(e))return isArguments(t)?(e=pSlice.call(e),t=pSlice.call(t),deepEqual(e,t,r)):!1;if(isBuffer(e)){if(!isBuffer(t))return!1;if(e.length!==t.length)return!1;for(n=0;n=0;n--)if(u[n]!=o[n])return!1;for(n=u.length-1;n>=0;n--)if(i=u[n],!deepEqual(e[i],t[i],r))return!1;return typeof e==typeof t}var pSlice=Array.prototype.slice,objectKeys=require("./lib/keys.js"),isArguments=require("./lib/is_arguments.js"),deepEqual=module.exports=function(e,t,r){return r||(r={}),e===t?!0:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():!e||!t||"object"!=typeof e&&"object"!=typeof t?r.strict?e===t:e==t:objEquiv(e,t,r)}; },{"./lib/is_arguments.js":2,"./lib/keys.js":3}],2:[function(require,module,exports){ -var supportsArgumentsClass = (function(){ - return Object.prototype.toString.call(arguments) -})() == '[object Arguments]'; - -exports = module.exports = supportsArgumentsClass ? supported : unsupported; - -exports.supported = supported; -function supported(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -}; - -exports.unsupported = unsupported; -function unsupported(object){ - return object && - typeof object == 'object' && - typeof object.length == 'number' && - Object.prototype.hasOwnProperty.call(object, 'callee') && - !Object.prototype.propertyIsEnumerable.call(object, 'callee') || - false; -}; +function supported(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function unsupported(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var supportsArgumentsClass="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();exports=module.exports=supportsArgumentsClass?supported:unsupported,exports.supported=supported,exports.unsupported=unsupported; },{}],3:[function(require,module,exports){ -exports = module.exports = typeof Object.keys === 'function' - ? Object.keys : shim; - -exports.shim = shim; -function shim (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -} +function shim(e){var s=[];for(var t in e)s.push(t);return s}exports=module.exports="function"==typeof Object.keys?Object.keys:shim,exports.shim=shim; },{}],4:[function(require,module,exports){ (function (process){ -/** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule invariant - */ - -"use strict"; - -/** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - -var invariant = function (condition, format, a, b, c, d, e, f) { - if (process.env.NODE_ENV !== 'production') { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - } - - if (!condition) { - var error; - if (format === undefined) { - error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error('Invariant Violation: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - })); - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } -}; - -module.exports = invariant; +"use strict";var invariant=function(r,e,n,i,o,a,t,s){if("production"!==process.env.NODE_ENV&&void 0===e)throw new Error("invariant requires an error message argument");if(!r){var u;if(void 0===e)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var v=[n,i,o,a,t,s],d=0;u=new Error("Invariant Violation: "+e.replace(/%s/g,function(){return v[d++]}))}throw u.framesToPop=1,u}};module.exports=invariant; + }).call(this,require('_process')) },{"_process":32}],5:[function(require,module,exports){ (function (process){ -/** - * Copyright (c) 2014-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule Dispatcher - * - * @preventMunge - */ - -'use strict'; - -exports.__esModule = true; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - -var invariant = require('fbjs/lib/invariant'); - -var _prefix = 'ID_'; - -/** - * Dispatcher is used to broadcast payloads to registered callbacks. This is - * different from generic pub-sub systems in two ways: - * - * 1) Callbacks are not subscribed to particular events. Every payload is - * dispatched to every registered callback. - * 2) Callbacks can be deferred in whole or part until other callbacks have - * been executed. - * - * For example, consider this hypothetical flight destination form, which - * selects a default city when a country is selected: - * - * var flightDispatcher = new Dispatcher(); - * - * // Keeps track of which country is selected - * var CountryStore = {country: null}; - * - * // Keeps track of which city is selected - * var CityStore = {city: null}; - * - * // Keeps track of the base flight price of the selected city - * var FlightPriceStore = {price: null} - * - * When a user changes the selected city, we dispatch the payload: - * - * flightDispatcher.dispatch({ - * actionType: 'city-update', - * selectedCity: 'paris' - * }); - * - * This payload is digested by `CityStore`: - * - * flightDispatcher.register(function(payload) { - * if (payload.actionType === 'city-update') { - * CityStore.city = payload.selectedCity; - * } - * }); - * - * When the user selects a country, we dispatch the payload: - * - * flightDispatcher.dispatch({ - * actionType: 'country-update', - * selectedCountry: 'australia' - * }); - * - * This payload is digested by both stores: - * - * CountryStore.dispatchToken = flightDispatcher.register(function(payload) { - * if (payload.actionType === 'country-update') { - * CountryStore.country = payload.selectedCountry; - * } - * }); - * - * When the callback to update `CountryStore` is registered, we save a reference - * to the returned token. Using this token with `waitFor()`, we can guarantee - * that `CountryStore` is updated before the callback that updates `CityStore` - * needs to query its data. - * - * CityStore.dispatchToken = flightDispatcher.register(function(payload) { - * if (payload.actionType === 'country-update') { - * // `CountryStore.country` may not be updated. - * flightDispatcher.waitFor([CountryStore.dispatchToken]); - * // `CountryStore.country` is now guaranteed to be updated. - * - * // Select the default city for the new country - * CityStore.city = getDefaultCityForCountry(CountryStore.country); - * } - * }); - * - * The usage of `waitFor()` can be chained, for example: - * - * FlightPriceStore.dispatchToken = - * flightDispatcher.register(function(payload) { - * switch (payload.actionType) { - * case 'country-update': - * case 'city-update': - * flightDispatcher.waitFor([CityStore.dispatchToken]); - * FlightPriceStore.price = - * getFlightPriceStore(CountryStore.country, CityStore.city); - * break; - * } - * }); - * - * The `country-update` payload will be guaranteed to invoke the stores' - * registered callbacks in order: `CountryStore`, `CityStore`, then - * `FlightPriceStore`. - */ - -var Dispatcher = (function () { - function Dispatcher() { - _classCallCheck(this, Dispatcher); - - this._callbacks = {}; - this._isDispatching = false; - this._isHandled = {}; - this._isPending = {}; - this._lastID = 1; - } - - /** - * Registers a callback to be invoked with every dispatched payload. Returns - * a token that can be used with `waitFor()`. - */ - - Dispatcher.prototype.register = function register(callback) { - var id = _prefix + this._lastID++; - this._callbacks[id] = callback; - return id; - }; - - /** - * Removes a callback based on its token. - */ - - Dispatcher.prototype.unregister = function unregister(id) { - !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined; - delete this._callbacks[id]; - }; - - /** - * Waits for the callbacks specified to be invoked before continuing execution - * of the current callback. This method should only be used by a callback in - * response to a dispatched payload. - */ - - Dispatcher.prototype.waitFor = function waitFor(ids) { - !this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : undefined; - for (var ii = 0; ii < ids.length; ii++) { - var id = ids[ii]; - if (this._isPending[id]) { - !this._isHandled[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : undefined; - continue; - } - !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined; - this._invokeCallback(id); - } - }; - - /** - * Dispatches a payload to all registered callbacks. - */ - - Dispatcher.prototype.dispatch = function dispatch(payload) { - !!this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : undefined; - this._startDispatching(payload); - try { - for (var id in this._callbacks) { - if (this._isPending[id]) { - continue; - } - this._invokeCallback(id); - } - } finally { - this._stopDispatching(); - } - }; - - /** - * Is this Dispatcher currently dispatching. - */ - - Dispatcher.prototype.isDispatching = function isDispatching() { - return this._isDispatching; - }; - - /** - * Call the callback stored with the given id. Also do some internal - * bookkeeping. - * - * @internal - */ - - Dispatcher.prototype._invokeCallback = function _invokeCallback(id) { - this._isPending[id] = true; - this._callbacks[id](this._pendingPayload); - this._isHandled[id] = true; - }; - - /** - * Set up bookkeeping needed when dispatching. - * - * @internal - */ - - Dispatcher.prototype._startDispatching = function _startDispatching(payload) { - for (var id in this._callbacks) { - this._isPending[id] = false; - this._isHandled[id] = false; - } - this._pendingPayload = payload; - this._isDispatching = true; - }; - - /** - * Clear bookkeeping used for dispatching. - * - * @internal - */ - - Dispatcher.prototype._stopDispatching = function _stopDispatching() { - delete this._pendingPayload; - this._isDispatching = false; - }; - - return Dispatcher; -})(); - -module.exports = Dispatcher; +"use strict";function _classCallCheck(i,t){if(!(i instanceof t))throw new TypeError("Cannot call a class as a function")}exports.__esModule=!0;var invariant=require("fbjs/lib/invariant"),_prefix="ID_",Dispatcher=function(){function i(){_classCallCheck(this,i),this._callbacks={},this._isDispatching=!1,this._isHandled={},this._isPending={},this._lastID=1}return i.prototype.register=function(i){var t=_prefix+this._lastID++;return this._callbacks[t]=i,t},i.prototype.unregister=function(i){this._callbacks[i]?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"Dispatcher.unregister(...): `%s` does not map to a registered callback.",i):invariant(!1),delete this._callbacks[i]},i.prototype.waitFor=function(i){this._isDispatching?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"Dispatcher.waitFor(...): Must be invoked while dispatching."):invariant(!1);for(var t=0;t= turns && hasNext) { - isDone = true; - callback(); - } - } - - next(); -} +"use strict";function loopAsync(o,i,t){function c(){return r=!0,n?void(p=[].concat(_slice.call(arguments))):void t.apply(this,arguments)}function s(){if(!r&&(e=!0,!n)){for(n=!0;!r&&o>l&&e;)e=!1,i.call(this,l++,s,c);return n=!1,r?void t.apply(this,p):void(l>=o&&e&&(r=!0,t()))}}var l=0,r=!1,n=!1,e=!1,p=void 0;s()}exports.__esModule=!0;var _slice=Array.prototype.slice;exports.loopAsync=loopAsync; + },{}],8:[function(require,module,exports){ (function (process){ -/*eslint-disable no-empty */ -'use strict'; - -exports.__esModule = true; -exports.saveState = saveState; -exports.readState = readState; - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - -var _warning = require('warning'); - -var _warning2 = _interopRequireDefault(_warning); - -var KeyPrefix = '@@History/'; -var QuotaExceededErrors = ['QuotaExceededError', 'QUOTA_EXCEEDED_ERR']; - -var SecurityError = 'SecurityError'; - -function createKey(key) { - return KeyPrefix + key; -} - -function saveState(key, state) { - try { - if (state == null) { - window.sessionStorage.removeItem(createKey(key)); - } else { - window.sessionStorage.setItem(createKey(key), JSON.stringify(state)); - } - } catch (error) { - if (error.name === SecurityError) { - // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any - // attempt to access window.sessionStorage. - process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available due to security settings') : undefined; - - return; - } - - if (QuotaExceededErrors.indexOf(error.name) >= 0 && window.sessionStorage.length === 0) { - // Safari "private mode" throws QuotaExceededError. - process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : undefined; - - return; - } - - throw error; - } -} - -function readState(key) { - var json = undefined; - try { - json = window.sessionStorage.getItem(createKey(key)); - } catch (error) { - if (error.name === SecurityError) { - // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any - // attempt to access window.sessionStorage. - process.env.NODE_ENV !== 'production' ? _warning2['default'](false, '[history] Unable to read state; sessionStorage is not available due to security settings') : undefined; - - return null; - } - } - - if (json) { - try { - return JSON.parse(json); - } catch (error) { - // Ignore invalid JSON. - } - } - - return null; -} +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function createKey(e){return KeyPrefix+e}function saveState(e,r){try{null==r?window.sessionStorage.removeItem(createKey(e)):window.sessionStorage.setItem(createKey(e),JSON.stringify(r))}catch(t){if(t.name===SecurityError)return void("production"!==process.env.NODE_ENV?_warning2["default"](!1,"[history] Unable to save state; sessionStorage is not available due to security settings"):void 0);if(QuotaExceededErrors.indexOf(t.name)>=0&&0===window.sessionStorage.length)return void("production"!==process.env.NODE_ENV?_warning2["default"](!1,"[history] Unable to save state; sessionStorage is not available in Safari private mode"):void 0);throw t}}function readState(e){var r=void 0;try{r=window.sessionStorage.getItem(createKey(e))}catch(t){if(t.name===SecurityError)return"production"!==process.env.NODE_ENV?_warning2["default"](!1,"[history] Unable to read state; sessionStorage is not available due to security settings"):void 0,null}if(r)try{return JSON.parse(r)}catch(t){}return null}exports.__esModule=!0,exports.saveState=saveState,exports.readState=readState;var _warning=require("warning"),_warning2=_interopRequireDefault(_warning),KeyPrefix="@@History/",QuotaExceededErrors=["QuotaExceededError","QUOTA_EXCEEDED_ERR"],SecurityError="SecurityError"; + }).call(this,require('_process')) },{"_process":32,"warning":250}],9:[function(require,module,exports){ -'use strict'; - -exports.__esModule = true; -exports.addEventListener = addEventListener; -exports.removeEventListener = removeEventListener; -exports.getHashPath = getHashPath; -exports.replaceHashPath = replaceHashPath; -exports.getWindowPath = getWindowPath; -exports.go = go; -exports.getUserConfirmation = getUserConfirmation; -exports.supportsHistory = supportsHistory; -exports.supportsGoWithoutReloadUsingHash = supportsGoWithoutReloadUsingHash; - -function addEventListener(node, event, listener) { - if (node.addEventListener) { - node.addEventListener(event, listener, false); - } else { - node.attachEvent('on' + event, listener); - } -} - -function removeEventListener(node, event, listener) { - if (node.removeEventListener) { - node.removeEventListener(event, listener, false); - } else { - node.detachEvent('on' + event, listener); - } -} - -function getHashPath() { - // We can't use window.location.hash here because it's not - // consistent across browsers - Firefox will pre-decode it! - return window.location.href.split('#')[1] || ''; -} - -function replaceHashPath(path) { - window.location.replace(window.location.pathname + window.location.search + '#' + path); -} - -function getWindowPath() { - return window.location.pathname + window.location.search + window.location.hash; -} - -function go(n) { - if (n) window.history.go(n); -} - -function getUserConfirmation(message, callback) { - callback(window.confirm(message)); -} - -/** - * Returns true if the HTML5 history API is supported. Taken from Modernizr. - * - * https://github.com/Modernizr/Modernizr/blob/master/LICENSE - * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js - * changed to avoid false negatives for Windows Phones: https://github.com/rackt/react-router/issues/586 - */ - -function supportsHistory() { - var ua = navigator.userAgent; - if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) { - return false; - } - return window.history && 'pushState' in window.history; -} - -/** - * Returns false if using go(n) with hash history causes a full page reload. - */ - -function supportsGoWithoutReloadUsingHash() { - var ua = navigator.userAgent; - return ua.indexOf('Firefox') === -1; -} +"use strict";function addEventListener(t,e,o){t.addEventListener?t.addEventListener(e,o,!1):t.attachEvent("on"+e,o)}function removeEventListener(t,e,o){t.removeEventListener?t.removeEventListener(e,o,!1):t.detachEvent("on"+e,o)}function getHashPath(){return window.location.href.split("#")[1]||""}function replaceHashPath(t){window.location.replace(window.location.pathname+window.location.search+"#"+t)}function getWindowPath(){return window.location.pathname+window.location.search+window.location.hash}function go(t){t&&window.history.go(t)}function getUserConfirmation(t,e){e(window.confirm(t))}function supportsHistory(){var t=navigator.userAgent;return-1===t.indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone")?window.history&&"pushState"in window.history:!1}function supportsGoWithoutReloadUsingHash(){var t=navigator.userAgent;return-1===t.indexOf("Firefox")}exports.__esModule=!0,exports.addEventListener=addEventListener,exports.removeEventListener=removeEventListener,exports.getHashPath=getHashPath,exports.replaceHashPath=replaceHashPath,exports.getWindowPath=getWindowPath,exports.go=go,exports.getUserConfirmation=getUserConfirmation,exports.supportsHistory=supportsHistory,exports.supportsGoWithoutReloadUsingHash=supportsGoWithoutReloadUsingHash; + },{}],10:[function(require,module,exports){ -'use strict'; +"use strict";exports.__esModule=!0;var canUseDOM=!("undefined"==typeof window||!window.document||!window.document.createElement);exports.canUseDOM=canUseDOM; -exports.__esModule = true; -var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); -exports.canUseDOM = canUseDOM; },{}],11:[function(require,module,exports){ (function (process){ -'use strict'; - -exports.__esModule = true; -exports.extractPath = extractPath; -exports.parsePath = parsePath; +"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{"default":t}}function extractPath(t){var e=t.match(/^https?:\/\/[^\/]*/);return null==e?t:t.substring(e[0].length)}function parsePath(t){var e=extractPath(t),r="",a="";"production"!==process.env.NODE_ENV?_warning2["default"](t===e,'A path must be pathname + search + hash only, not a fully qualified URL like "%s"',t):void 0;var n=e.indexOf("#");-1!==n&&(a=e.substring(n),e=e.substring(0,n));var s=e.indexOf("?");return-1!==s&&(r=e.substring(s),e=e.substring(0,s)),""===e&&(e="/"),{pathname:e,search:r,hash:a}}exports.__esModule=!0,exports.extractPath=extractPath,exports.parsePath=parsePath;var _warning=require("warning"),_warning2=_interopRequireDefault(_warning); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - -var _warning = require('warning'); - -var _warning2 = _interopRequireDefault(_warning); - -function extractPath(string) { - var match = string.match(/^https?:\/\/[^\/]*/); +}).call(this,require('_process')) - if (match == null) return string; +},{"_process":32,"warning":250}],12:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{"default":t}}function createBrowserHistory(){function t(t){try{t=t||window.history.state||{}}catch(e){t={}}var r=_DOMUtils.getWindowPath(),n=t,i=n.key,o=void 0;i?o=_DOMStateStorage.readState(i):(o=null,i=_.createKey(),c&&window.history.replaceState(_extends({},t,{key:i}),null));var a=_PathUtils.parsePath(r);return _.createLocation(_extends({},a,{state:o}),void 0,i)}function e(e){function r(e){void 0!==e.state&&n(t(e.state))}var n=e.transitionTo;return _DOMUtils.addEventListener(window,"popstate",r),function(){_DOMUtils.removeEventListener(window,"popstate",r)}}function r(t){var e=t.basename,r=t.pathname,n=t.search,i=t.hash,o=t.state,a=t.action,s=t.key;if(a!==_Actions.POP){_DOMStateStorage.saveState(s,o);var u=(e||"")+r+n+i,c={key:s};if(a===_Actions.PUSH){if(l)return window.location.href=u,!1;window.history.pushState(c,null,u)}else{if(l)return window.location.replace(u),!1;window.history.replaceState(c,null,u)}}}function n(t){1===++f&&(v=e(_));var r=_.listenBefore(t);return function(){r(),0===--f&&v()}}function i(t){1===++f&&(v=e(_));var r=_.listen(t);return function(){r(),0===--f&&v()}}function o(t){1===++f&&(v=e(_)),_.registerTransitionHook(t)}function a(t){_.unregisterTransitionHook(t),0===--f&&v()}var s=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];_ExecutionEnvironment.canUseDOM?void 0:"production"!==process.env.NODE_ENV?_invariant2["default"](!1,"Browser history needs a DOM"):_invariant2["default"](!1);var u=s.forceRefresh,c=_DOMUtils.supportsHistory(),l=!c||u,_=_createDOMHistory2["default"](_extends({},s,{getCurrentLocation:t,finishTransition:r,saveState:_DOMStateStorage.saveState})),f=0,v=void 0;return _extends({},_,{listenBefore:n,listen:i,registerTransitionHook:o,unregisterTransitionHook:a})}exports.__esModule=!0;var _extends=Object.assign||function(t){for(var e=1;e=0&&t=0&&f= 0 and < %s, was %s",c.length,f):_invariant2["default"](!1);var _=createStateStorage(c);return s}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var t=1;t is deprecated and will be removed in the next major release. The semantics of are subtly different from basename. Please pass the basename explicitly in the options to createHistory"):void 0)}m=!0}}function n(e){return t(),_&&null==e.basename&&(0===e.pathname.indexOf(_)?(e.pathname=e.pathname.substring(_.length),e.basename=_,""===e.pathname&&(e.pathname="/")):e.basename=""),e}function a(e){if(t(),!_)return e;"string"==typeof e&&(e=_PathUtils.parsePath(e));var n=e.pathname,a="/"===_.slice(-1)?_:_+"/",r="/"===n.charAt(0)?n.slice(1):n,i=a+r;return _extends({},e,{pathname:i})}function r(e){return h.listenBefore(function(t,a){_runTransitionHook2["default"](e,n(t),a)})}function i(e){return h.listen(function(t){e(n(t))})}function s(e){h.push(a(e))}function o(e){h.replace(a(e))}function u(e){return h.createPath(a(e))}function c(e){return h.createHref(a(e))}function l(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;t>i;i++)r[i-1]=arguments[i];return n(h.createLocation.apply(h,[a(e)].concat(r)))}function f(e,t){"string"==typeof t&&(t=_PathUtils.parsePath(t)),s(_extends({state:e},t))}function p(e,t){"string"==typeof t&&(t=_PathUtils.parsePath(t)),o(_extends({state:e},t))}var d=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],h=e(d),_=d.basename,m=!1;return _extends({},h,{listenBefore:r,listen:i,push:s,replace:o,createPath:u,createHref:c,createLocation:l,pushState:_deprecate2["default"](f,"pushState is deprecated; use push instead"),replaceState:_deprecate2["default"](p,"replaceState is deprecated; use replace instead")})}}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var t=1;t1?n-1:0),u=1;n>u;u++)a[u-1]=arguments[u];var i=l.createLocation.apply(l,[t(e,e.query)].concat(a));return e.query&&(i.query=e.query),r(i)}function f(e,r,t){"string"==typeof r&&(r=_PathUtils.parsePath(r)),u(_extends({state:e},r,{query:t}))}function p(e,r,t){"string"==typeof r&&(r=_PathUtils.parsePath(r)),i(_extends({state:e},r,{query:t}))}var d=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],l=e(d),y=d.stringifyQuery,_=d.parseQueryString;return"function"!=typeof y&&(y=defaultStringifyQuery),"function"!=typeof _&&(_=defaultParseQueryString),_extends({},l,{listenBefore:n,listen:a,push:u,replace:i,createPath:s,createHref:o,createLocation:c,pushState:_deprecate2["default"](f,"pushState is deprecated; use push instead"),replaceState:_deprecate2["default"](p,"replaceState is deprecated; use replace instead")})}}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var r=1;r-1&&t%1==0&&MAX_SAFE_INTEGER>=t}function isObject(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function isObjectLike(t){return!!t&&"object"==typeof t}var MAX_SAFE_INTEGER=9007199254740991,argsTag="[object Arguments]",funcTag="[object Function]",genTag="[object GeneratorFunction]",objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,objectToString=objectProto.toString,propertyIsEnumerable=objectProto.propertyIsEnumerable,getLength=baseProperty("length");module.exports=isArguments; - function getCurrentLocation(historyState) { - try { - historyState = historyState || window.history.state || {}; - } catch (e) { - historyState = {}; - } +},{}],26:[function(require,module,exports){ +function isObjectLike(t){return!!t&&"object"==typeof t}function getNative(t,r){var e=null==t?void 0:t[r];return isNative(e)?e:void 0}function isLength(t){return"number"==typeof t&&t>-1&&t%1==0&&MAX_SAFE_INTEGER>=t}function isFunction(t){return isObject(t)&&objToString.call(t)==funcTag}function isObject(t){var r=typeof t;return!!t&&("object"==r||"function"==r)}function isNative(t){return null==t?!1:isFunction(t)?reIsNative.test(fnToString.call(t)):isObjectLike(t)&&reIsHostCtor.test(t)}var arrayTag="[object Array]",funcTag="[object Function]",reIsHostCtor=/^\[object .+?Constructor\]$/,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp("^"+fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),nativeIsArray=getNative(Array,"isArray"),MAX_SAFE_INTEGER=9007199254740991,isArray=nativeIsArray||function(t){return isObjectLike(t)&&isLength(t.length)&&objToString.call(t)==arrayTag};module.exports=isArray; - var path = _DOMUtils.getWindowPath(); - var _historyState = historyState; - var key = _historyState.key; +},{}],27:[function(require,module,exports){ +function baseProperty(e){return function(t){return null==t?void 0:t[e]}}function isArrayLike(e){return null!=e&&isLength(getLength(e))}function isIndex(e,t){return e="number"==typeof e||reIsUint.test(e)?+e:-1,t=null==t?MAX_SAFE_INTEGER:t,e>-1&&e%1==0&&t>e}function isLength(e){return"number"==typeof e&&e>-1&&e%1==0&&MAX_SAFE_INTEGER>=e}function shimKeys(e){for(var t=keysIn(e),r=t.length,n=r&&e.length,s=!!n&&isLength(n)&&(isArray(e)||isArguments(e)),o=-1,i=[];++o0;++n1)for(var r=1;r does not support changing `store` on the fly. It is most likely that you see this error because you updated to Redux 2.x and React Redux 2.x which no longer hot reload reducers automatically. See https://github.com/reactjs/react-redux/releases/tag/v2.0.0 for the migration instructions."))}exports.__esModule=!0,exports["default"]=void 0;var _react=require("react"),_storeShape=require("../utils/storeShape"),_storeShape2=_interopRequireDefault(_storeShape),_warning=require("../utils/warning"),_warning2=_interopRequireDefault(_warning),didWarnAboutReceivingStore=!1,Provider=function(e){function t(r,o){_classCallCheck(this,t);var n=_possibleConstructorReturn(this,e.call(this,r,o));return n.store=r.store,n}return _inherits(t,e),t.prototype.getChildContext=function(){return{store:this.store}},t.prototype.render=function(){var e=this.props.children;return _react.Children.only(e)},t}(_react.Component);exports["default"]=Provider,"production"!==process.env.NODE_ENV&&(Provider.prototype.componentWillReceiveProps=function(e){var t=this.store,r=e.store;t!==r&&warnAboutReceivingStore()}),Provider.propTypes={store:_storeShape2["default"].isRequired,children:_react.PropTypes.element.isRequired},Provider.childContextTypes={store:_storeShape2["default"].isRequired}; - _DOMUtils.addEventListener(window, 'popstate', popStateListener); +}).call(this,require('_process')) - return function () { - _DOMUtils.removeEventListener(window, 'popstate', popStateListener); - }; - } +},{"../utils/storeShape":37,"../utils/warning":38,"_process":32,"react":"react"}],35:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{"default":t}}function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function getDisplayName(t){return t.displayName||t.name||"Component"}function tryCatch(t,e){try{return t.apply(e)}catch(r){return errorObject.value=r,errorObject}}function connect(t,e,r){var o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],s=Boolean(t),a=t||defaultMapStateToProps,n=void 0;n="function"==typeof e?e:e?(0,_wrapActionCreators2["default"])(e):defaultMapDispatchToProps;var i=r||defaultMergeProps,p=o.pure,u=void 0===p?!0:p,c=o.withRef,h=void 0===c?!1:c,l=u&&i!==defaultMergeProps,d=nextVersion++;return function(t){function e(t,e){(0,_isPlainObject2["default"])(t)||(0,_warning2["default"])(e+"() in "+o+" must return a plain object. "+("Instead received "+t+"."))}function r(t,r,o){var s=i(t,r,o);return"production"!==process.env.NODE_ENV&&e(s,"mergeProps"),s}var o="Connect("+getDisplayName(t)+")",p=function(i){function p(t,e){_classCallCheck(this,p);var r=_possibleConstructorReturn(this,i.call(this,t,e));r.version=d,r.store=t.store||e.store,(0,_invariant2["default"])(r.store,'Could not find "store" in either the context or '+('props of "'+o+'". ')+"Either wrap the root component in a , "+('or explicitly pass "store" as a prop to "'+o+'".'));var s=r.store.getState();return r.state={storeState:s},r.clearCache(),r}return _inherits(p,i),p.prototype.shouldComponentUpdate=function(){return!u||this.haveOwnPropsChanged||this.hasStoreStateChanged},p.prototype.computeStateProps=function(t,r){if(!this.finalMapStateToProps)return this.configureFinalMapState(t,r);var o=t.getState(),s=this.doStatePropsDependOnOwnProps?this.finalMapStateToProps(o,r):this.finalMapStateToProps(o);return"production"!==process.env.NODE_ENV&&e(s,"mapStateToProps"),s},p.prototype.configureFinalMapState=function(t,r){var o=a(t.getState(),r),s="function"==typeof o;return this.finalMapStateToProps=s?o:a,this.doStatePropsDependOnOwnProps=1!==this.finalMapStateToProps.length,s?this.computeStateProps(t,r):("production"!==process.env.NODE_ENV&&e(o,"mapStateToProps"),o)},p.prototype.computeDispatchProps=function(t,r){if(!this.finalMapDispatchToProps)return this.configureFinalMapDispatch(t,r);var o=t.dispatch,s=this.doDispatchPropsDependOnOwnProps?this.finalMapDispatchToProps(o,r):this.finalMapDispatchToProps(o);return"production"!==process.env.NODE_ENV&&e(s,"mapDispatchToProps"),s},p.prototype.configureFinalMapDispatch=function(t,r){var o=n(t.dispatch,r),s="function"==typeof o;return this.finalMapDispatchToProps=s?o:n,this.doDispatchPropsDependOnOwnProps=1!==this.finalMapDispatchToProps.length,s?this.computeDispatchProps(t,r):("production"!==process.env.NODE_ENV&&e(o,"mapDispatchToProps"),o)},p.prototype.updateStatePropsIfNeeded=function(){var t=this.computeStateProps(this.store,this.props);return this.stateProps&&(0,_shallowEqual2["default"])(t,this.stateProps)?!1:(this.stateProps=t,!0)},p.prototype.updateDispatchPropsIfNeeded=function(){var t=this.computeDispatchProps(this.store,this.props);return this.dispatchProps&&(0,_shallowEqual2["default"])(t,this.dispatchProps)?!1:(this.dispatchProps=t,!0)},p.prototype.updateMergedPropsIfNeeded=function(){var t=r(this.stateProps,this.dispatchProps,this.props);return this.mergedProps&&l&&(0,_shallowEqual2["default"])(t,this.mergedProps)?!1:(this.mergedProps=t,!0)},p.prototype.isSubscribed=function(){return"function"==typeof this.unsubscribe},p.prototype.trySubscribe=function(){s&&!this.unsubscribe&&(this.unsubscribe=this.store.subscribe(this.handleChange.bind(this)),this.handleChange())},p.prototype.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null)},p.prototype.componentDidMount=function(){this.trySubscribe()},p.prototype.componentWillReceiveProps=function(t){u&&(0,_shallowEqual2["default"])(t,this.props)||(this.haveOwnPropsChanged=!0)},p.prototype.componentWillUnmount=function(){this.tryUnsubscribe(),this.clearCache()},p.prototype.clearCache=function(){this.dispatchProps=null,this.stateProps=null,this.mergedProps=null,this.haveOwnPropsChanged=!0,this.hasStoreStateChanged=!0,this.haveStatePropsBeenPrecalculated=!1,this.statePropsPrecalculationError=null,this.renderedElement=null,this.finalMapDispatchToProps=null,this.finalMapStateToProps=null},p.prototype.handleChange=function(){if(this.unsubscribe){var t=this.store.getState(),e=this.state.storeState;if(!u||e!==t){if(u&&!this.doStatePropsDependOnOwnProps){var r=tryCatch(this.updateStatePropsIfNeeded,this);if(!r)return;r===errorObject&&(this.statePropsPrecalculationError=errorObject.value),this.haveStatePropsBeenPrecalculated=!0}this.hasStoreStateChanged=!0,this.setState({storeState:t})}}},p.prototype.getWrappedInstance=function(){return(0,_invariant2["default"])(h,"To access the wrapped instance, you need to specify { withRef: true } as the fourth argument of the connect() call."),this.refs.wrappedInstance},p.prototype.render=function(){var e=this.haveOwnPropsChanged,r=this.hasStoreStateChanged,o=this.haveStatePropsBeenPrecalculated,s=this.statePropsPrecalculationError,a=this.renderedElement;if(this.haveOwnPropsChanged=!1,this.hasStoreStateChanged=!1,this.haveStatePropsBeenPrecalculated=!1,this.statePropsPrecalculationError=null,s)throw s;var n=!0,i=!0;u&&a&&(n=r||e&&this.doStatePropsDependOnOwnProps,i=e&&this.doDispatchPropsDependOnOwnProps);var p=!1,c=!1;o?p=!0:n&&(p=this.updateStatePropsIfNeeded()),i&&(c=this.updateDispatchPropsIfNeeded());var l=!0;return l=p||c||e?this.updateMergedPropsIfNeeded():!1,!l&&a?a:(h?this.renderedElement=(0,_react.createElement)(t,_extends({},this.mergedProps,{ref:"wrappedInstance"})):this.renderedElement=(0,_react.createElement)(t,this.mergedProps),this.renderedElement)},p}(_react.Component);return p.displayName=o,p.WrappedComponent=t,p.contextTypes={store:_storeShape2["default"]},p.propTypes={store:_storeShape2["default"]},"production"!==process.env.NODE_ENV&&(p.prototype.componentWillUpdate=function(){this.version!==d&&(this.version=d,this.trySubscribe(),this.clearCache())}),(0,_hoistNonReactStatics2["default"])(p,t)}}var _extends=Object.assign||function(t){for(var e=1;er&&p;)p=!1,o.call(this,r++,i,c);return s=!1,l?void t.apply(this,u):void(r>=n&&p&&(l=!0,t()))}}var r=0,l=!1,s=!1,p=!1,u=void 0;i()}function mapAsync(n,o,t){function c(n,o,c){l||(o?(l=!0,t(o)):(r[n]=c,l=++s===i,l&&t(null,r)))}var i=n.length,r=[];if(0===i)return t(null,r);var l=!1,s=0;n.forEach(function(n,t){o(n,t,function(n,o){c(t,n,o)})})}exports.__esModule=!0,exports.loopAsync=loopAsync,exports.mapAsync=mapAsync; -},{"./Actions":6,"./DOMStateStorage":8,"./DOMUtils":9,"./ExecutionEnvironment":10,"./PathUtils":11,"./createDOMHistory":13,"_process":32,"invariant":23}],13:[function(require,module,exports){ +},{}],41:[function(require,module,exports){ (function (process){ -'use strict'; - -exports.__esModule = true; +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _routerWarning=require("./routerWarning"),_routerWarning2=_interopRequireDefault(_routerWarning),_InternalPropTypes=require("./InternalPropTypes"),History={contextTypes:{history:_InternalPropTypes.history},componentWillMount:function(){"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,"the `History` mixin is deprecated, please access `context.router` with your own `contextTypes`. http://tiny.cc/router-historymixin"):void 0,this.history=this.context.history}};exports["default"]=History,module.exports=exports["default"]; -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; }; +}).call(this,require('_process')) -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +},{"./InternalPropTypes":45,"./routerWarning":72,"_process":32}],42:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var t=1;t does not make sense at the root of your route config"):void 0}},propTypes:{to:string.isRequired,query:object,state:object,onEnter:_InternalPropTypes.falsy,children:_InternalPropTypes.falsy},render:function(){"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1," elements are for router configuration only and should not be rendered"):(0,_invariant2["default"])(!1)}});exports["default"]=IndexRedirect,module.exports=exports["default"]; -var _invariant2 = _interopRequireDefault(_invariant); +}).call(this,require('_process')) -var _ExecutionEnvironment = require('./ExecutionEnvironment'); +},{"./InternalPropTypes":45,"./Redirect":50,"./routerWarning":72,"_process":32,"invariant":76,"react":"react"}],44:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _react=require("react"),_react2=_interopRequireDefault(_react),_routerWarning=require("./routerWarning"),_routerWarning2=_interopRequireDefault(_routerWarning),_invariant=require("invariant"),_invariant2=_interopRequireDefault(_invariant),_RouteUtils=require("./RouteUtils"),_InternalPropTypes=require("./InternalPropTypes"),func=_react2["default"].PropTypes.func,IndexRoute=_react2["default"].createClass({displayName:"IndexRoute",statics:{createRouteFromReactElement:function(e,t){t?t.indexRoute=(0,_RouteUtils.createRouteFromReactElement)(e):"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,"An does not make sense at the root of your route config"):void 0}},propTypes:{path:_InternalPropTypes.falsy,component:_InternalPropTypes.component,components:_InternalPropTypes.components,getComponent:func,getComponents:func},render:function(){"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1," elements are for router configuration only and should not be rendered"):(0,_invariant2["default"])(!1)}});exports["default"]=IndexRoute,module.exports=exports["default"]; -var _DOMUtils = require('./DOMUtils'); +}).call(this,require('_process')) -var _createHistory = require('./createHistory'); +},{"./InternalPropTypes":45,"./RouteUtils":53,"./routerWarning":72,"_process":32,"invariant":76,"react":"react"}],45:[function(require,module,exports){ +"use strict";function falsy(e,r,o){return e[r]?new Error("<"+o+'> should not have a "'+r+'" prop'):void 0}exports.__esModule=!0,exports.routes=exports.route=exports.components=exports.component=exports.history=void 0,exports.falsy=falsy;var _react=require("react"),func=_react.PropTypes.func,object=_react.PropTypes.object,arrayOf=_react.PropTypes.arrayOf,oneOfType=_react.PropTypes.oneOfType,element=_react.PropTypes.element,shape=_react.PropTypes.shape,string=_react.PropTypes.string,history=exports.history=shape({listen:func.isRequired,push:func.isRequired,replace:func.isRequired,go:func.isRequired,goBack:func.isRequired,goForward:func.isRequired}),component=exports.component=oneOfType([func,string]),components=exports.components=oneOfType([component,object]),route=exports.route=oneOfType([object,element]),routes=exports.routes=oneOfType([route,arrayOf(route)]); -var _createHistory2 = _interopRequireDefault(_createHistory); +},{"react":"react"}],46:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _routerWarning=require("./routerWarning"),_routerWarning2=_interopRequireDefault(_routerWarning),_react=require("react"),_react2=_interopRequireDefault(_react),_invariant=require("invariant"),_invariant2=_interopRequireDefault(_invariant),object=_react2["default"].PropTypes.object,Lifecycle={contextTypes:{history:object.isRequired,route:object},propTypes:{route:object},componentDidMount:function(){"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,"the `Lifecycle` mixin is deprecated, please use `context.router.setRouteLeaveHook(route, hook)`. http://tiny.cc/router-lifecyclemixin"):void 0,this.routerWillLeave?void 0:"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1,"The Lifecycle mixin requires you to define a routerWillLeave method"):(0,_invariant2["default"])(!1);var e=this.props.route||this.context.route;e?void 0:"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1,"The Lifecycle mixin must be used on either a) a or b) a descendant of a that uses the RouteContext mixin"):(0,_invariant2["default"])(!1),this._unlistenBeforeLeavingRoute=this.context.history.listenBeforeLeavingRoute(e,this.routerWillLeave)},componentWillUnmount:function(){this._unlistenBeforeLeavingRoute&&this._unlistenBeforeLeavingRoute()}};exports["default"]=Lifecycle,module.exports=exports["default"]; -function createDOMHistory(options) { - var history = _createHistory2['default'](_extends({ - getUserConfirmation: _DOMUtils.getUserConfirmation - }, options, { - go: _DOMUtils.go - })); +}).call(this,require('_process')) - function listen(listener) { - !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'DOM history needs a DOM') : _invariant2['default'](false) : undefined; +},{"./routerWarning":72,"_process":32,"invariant":76,"react":"react"}],47:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function _objectWithoutProperties(e,t){var r={};for(var a in e)t.indexOf(a)>=0||Object.prototype.hasOwnProperty.call(e,a)&&(r[a]=e[a]);return r}function isLeftClickEvent(e){return 0===e.button}function isModifiedEvent(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function isEmptyObject(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function createLocationDescriptor(e,t){var r=t.query,a=t.hash,o=t.state;return r||a||o?{pathname:e,query:r,hash:a,state:o}:e}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var t=1;t` are deprecated, use `. http://tiny.cc/router-isActivedeprecated"):void 0;var u=this.context.router;if(u){var p=createLocationDescriptor(t,{query:r,hash:a,state:o});c.href=u.createHref(p),(n||null!=s&&!isEmptyObject(s))&&u.isActive(p,i)&&(n&&(c.className?c.className+=" "+n:c.className=n),s&&(c.style=_extends({},c.style,s)))}return _react2["default"].createElement("a",_extends({},c,{onClick:this.handleClick}))}});exports["default"]=Link,module.exports=exports["default"]; - return history.listen(listener); - } +}).call(this,require('_process')) - return _extends({}, history, { - listen: listen - }); -} +},{"./PropTypes":49,"./routerWarning":72,"_process":32,"react":"react"}],48:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function _compilePattern(e){for(var t="",a=[],r=[],n=void 0,i=0,s=/:([a-zA-Z_$][a-zA-Z0-9_$]*)|\*\*|\*|\(|\)/g;n=s.exec(e);)n.index!==i&&(r.push(e.slice(i,n.index)),t+=escapeRegExp(e.slice(i,n.index))),n[1]?(t+="([^/]+)",a.push(n[1])):"**"===n[0]?(t+="(.*)",a.push("splat")):"*"===n[0]?(t+="(.*?)",a.push("splat")):"("===n[0]?t+="(?:":")"===n[0]&&(t+=")?"),r.push(n[0]),i=s.lastIndex;return i!==e.length&&(r.push(e.slice(i,e.length)),t+=escapeRegExp(e.slice(i,e.length))),{pattern:e,regexpSource:t,paramNames:a,tokens:r}}function compilePattern(e){return e in CompiledPatternsCache||(CompiledPatternsCache[e]=_compilePattern(e)),CompiledPatternsCache[e]}function matchPattern(e,t){"/"!==e.charAt(0)&&(e="/"+e);var a=compilePattern(e),r=a.regexpSource,n=a.paramNames,i=a.tokens;"/"!==e.charAt(e.length-1)&&(r+="/?"),"*"===i[i.length-1]&&(r+="$");var s=t.match(new RegExp("^"+r,"i"));if(null==s)return null;var o=s[0],l=t.substr(o.length);if(l){if("/"!==o.charAt(o.length-1))return null;l="/"+l}return{remainingPathname:l,paramNames:n,paramValues:s.slice(1).map(function(e){return e&&decodeURIComponent(e)})}}function getParamNames(e){return compilePattern(e).paramNames}function getParams(e,t){var a=matchPattern(e,t);if(!a)return null;var r=a.paramNames,n=a.paramValues,i={};return r.forEach(function(e,t){i[e]=n[t]}),i}function formatPattern(e,t){t=t||{};for(var a=compilePattern(e),r=a.tokens,n=0,i="",s=0,o=void 0,l=void 0,p=void 0,u=0,c=r.length;c>u;++u)o=r[u],"*"===o||"**"===o?(p=Array.isArray(t.splat)?t.splat[s++]:t.splat,null!=p||n>0?void 0:"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1,'Missing splat #%s for path "%s"',s,e):(0,_invariant2["default"])(!1),null!=p&&(i+=encodeURI(p))):"("===o?n+=1:")"===o?n-=1:":"===o.charAt(0)?(l=o.substring(1),p=t[l],null!=p||n>0?void 0:"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1,'Missing "%s" parameter for path "%s"',l,e):(0,_invariant2["default"])(!1),null!=p&&(i+=encodeURIComponent(p))):i+=o;return i.replace(/\/+/g,"/")}exports.__esModule=!0,exports.compilePattern=compilePattern,exports.matchPattern=matchPattern,exports.getParamNames=getParamNames,exports.getParams=getParams,exports.formatPattern=formatPattern;var _invariant=require("invariant"),_invariant2=_interopRequireDefault(_invariant),CompiledPatternsCache={}; -exports['default'] = createDOMHistory; -module.exports = exports['default']; }).call(this,require('_process')) -},{"./DOMUtils":9,"./ExecutionEnvironment":10,"./createHistory":15,"_process":32,"invariant":23}],14:[function(require,module,exports){ +},{"_process":32,"invariant":76}],49:[function(require,module,exports){ (function (process){ -'use strict'; +"use strict";function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=e[o]);return r["default"]=e,r}function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0,exports.router=exports.routes=exports.route=exports.components=exports.component=exports.location=exports.history=exports.falsy=exports.locationShape=exports.routerShape=void 0;var _react=require("react"),_deprecateObjectProperties=require("./deprecateObjectProperties"),_deprecateObjectProperties2=_interopRequireDefault(_deprecateObjectProperties),_InternalPropTypes=require("./InternalPropTypes"),InternalPropTypes=_interopRequireWildcard(_InternalPropTypes),_routerWarning=require("./routerWarning"),_routerWarning2=_interopRequireDefault(_routerWarning),func=_react.PropTypes.func,object=_react.PropTypes.object,shape=_react.PropTypes.shape,string=_react.PropTypes.string,routerShape=exports.routerShape=shape({push:func.isRequired,replace:func.isRequired,go:func.isRequired,goBack:func.isRequired,goForward:func.isRequired,setRouteLeaveHook:func.isRequired,isActive:func.isRequired}),locationShape=exports.locationShape=shape({pathname:string.isRequired,search:string.isRequired,state:object,action:string.isRequired,key:string}),falsy=exports.falsy=InternalPropTypes.falsy,history=exports.history=InternalPropTypes.history,location=exports.location=locationShape,component=exports.component=InternalPropTypes.component,components=exports.components=InternalPropTypes.components,route=exports.route=InternalPropTypes.route,routes=exports.routes=InternalPropTypes.routes,router=exports.router=routerShape;"production"!==process.env.NODE_ENV&&!function(){var e=function(e,r){return function(){return"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,r):void 0,e.apply(void 0,arguments)}},r=function(r){return e(r,"This prop type is not intended for external use, and was previously exported by mistake. These internal prop types are deprecated for external use, and will be removed in a later version.")},o=function(r,o){return e(r,"The `"+o+"` prop type is now exported as `"+o+"Shape` to avoid name conflicts. This export is deprecated and will be removed in a later version.")};exports.falsy=falsy=r(falsy),exports.history=history=r(history),exports.component=component=r(component),exports.components=components=r(components),exports.route=route=r(route),exports.routes=routes=r(routes),exports.location=location=o(location,"location"),exports.router=router=o(router,"router")}();var defaultExport={falsy:falsy,history:history,location:location,component:component,components:components,route:route,router:router};"production"!==process.env.NODE_ENV&&(defaultExport=(0,_deprecateObjectProperties2["default"])(defaultExport,"The default export from `react-router/lib/PropTypes` is deprecated. Please use the named exports instead.")),exports["default"]=defaultExport; -exports.__esModule = true; +}).call(this,require('_process')) -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; }; +},{"./InternalPropTypes":45,"./deprecateObjectProperties":65,"./routerWarning":72,"_process":32,"react":"react"}],50:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _react=require("react"),_react2=_interopRequireDefault(_react),_invariant=require("invariant"),_invariant2=_interopRequireDefault(_invariant),_RouteUtils=require("./RouteUtils"),_PatternUtils=require("./PatternUtils"),_InternalPropTypes=require("./InternalPropTypes"),_React$PropTypes=_react2["default"].PropTypes,string=_React$PropTypes.string,object=_React$PropTypes.object,Redirect=_react2["default"].createClass({displayName:"Redirect",statics:{createRouteFromReactElement:function(e){var t=(0,_RouteUtils.createRouteFromReactElement)(e);return t.from&&(t.path=t.from),t.onEnter=function(e,r){var a=e.location,n=e.params,o=void 0;if("/"===t.to.charAt(0))o=(0,_PatternUtils.formatPattern)(t.to,n);else if(t.to){var i=e.routes.indexOf(t),s=Redirect.getRoutePattern(e.routes,i-1),u=s.replace(/\/*$/,"/")+t.to;o=(0,_PatternUtils.formatPattern)(u,n)}else o=a.pathname;r({pathname:o,query:t.query||a.query,state:t.state||a.state})},t},getRoutePattern:function(e,t){for(var r="",a=t;a>=0;a--){var n=e[a],o=n.path||"";if(r=o.replace(/\/*$/,"/")+r,0===o.indexOf("/"))break}return"/"+r}},propTypes:{path:string,from:string,to:string.isRequired,query:object,state:object,onEnter:_InternalPropTypes.falsy,children:_InternalPropTypes.falsy},render:function(){"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1," elements are for router configuration only and should not be rendered"):(0,_invariant2["default"])(!1)}});exports["default"]=Redirect,module.exports=exports["default"]; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +}).call(this,require('_process')) -var _warning = require('warning'); +},{"./InternalPropTypes":45,"./PatternUtils":48,"./RouteUtils":53,"_process":32,"invariant":76,"react":"react"}],51:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _react=require("react"),_react2=_interopRequireDefault(_react),_invariant=require("invariant"),_invariant2=_interopRequireDefault(_invariant),_RouteUtils=require("./RouteUtils"),_InternalPropTypes=require("./InternalPropTypes"),_React$PropTypes=_react2["default"].PropTypes,string=_React$PropTypes.string,func=_React$PropTypes.func,Route=_react2["default"].createClass({displayName:"Route",statics:{createRouteFromReactElement:_RouteUtils.createRouteFromReactElement},propTypes:{path:string,component:_InternalPropTypes.component,components:_InternalPropTypes.components,getComponent:func,getComponents:func},render:function(){"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1," elements are for router configuration only and should not be rendered"):(0,_invariant2["default"])(!1)}});exports["default"]=Route,module.exports=exports["default"]; -var _warning2 = _interopRequireDefault(_warning); +}).call(this,require('_process')) -var _invariant = require('invariant'); +},{"./InternalPropTypes":45,"./RouteUtils":53,"_process":32,"invariant":76,"react":"react"}],52:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _routerWarning=require("./routerWarning"),_routerWarning2=_interopRequireDefault(_routerWarning),_react=require("react"),_react2=_interopRequireDefault(_react),object=_react2["default"].PropTypes.object,RouteContext={propTypes:{route:object.isRequired},childContextTypes:{route:object.isRequired},getChildContext:function(){return{route:this.props.route}},componentWillMount:function(){"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,"The `RouteContext` mixin is deprecated. You can provide `this.props.route` on context with your own `contextTypes`. http://tiny.cc/router-routecontextmixin"):void 0}};exports["default"]=RouteContext,module.exports=exports["default"]; -var _invariant2 = _interopRequireDefault(_invariant); +}).call(this,require('_process')) -var _Actions = require('./Actions'); +},{"./routerWarning":72,"_process":32,"react":"react"}],53:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function isValidChild(e){return null==e||_react2["default"].isValidElement(e)}function isReactChildren(e){return isValidChild(e)||Array.isArray(e)&&e.every(isValidChild)}function checkPropTypes(e,r,t){e=e||"UnknownComponent";for(var a in r)if(Object.prototype.hasOwnProperty.call(r,a)){var n=r[a](t,a,e);n instanceof Error&&("production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,n.message):void 0)}}function createRoute(e,r){return _extends({},e,r)}function createRouteFromReactElement(e){var r=e.type,t=createRoute(r.defaultProps,e.props);if(r.propTypes&&checkPropTypes(r.displayName||r.name,r.propTypes,t),t.children){var a=createRoutesFromReactChildren(t.children,t);a.length&&(t.childRoutes=a),delete t.children}return t}function createRoutesFromReactChildren(e,r){var t=[];return _react2["default"].Children.forEach(e,function(e){if(_react2["default"].isValidElement(e))if(e.type.createRouteFromReactElement){var a=e.type.createRouteFromReactElement(e,r);a&&t.push(a)}else t.push(createRouteFromReactElement(e))}),t}function createRoutes(e){return isReactChildren(e)?e=createRoutesFromReactChildren(e):e&&!Array.isArray(e)&&(e=[e]),e}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var r=1;r=0||Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}function isDeprecatedHistory(e){return!e||!e.__v2_compatible__}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var r=1;r`, please use a history provided by React Router with `import { browserHistory } from 'react-router'` or `import { hashHistory } from 'react-router'`. If you are using a custom history please create it with `useRouterHistory`, see http://tiny.cc/router-usinghistory for details."):void 0,n=function(){return e}):("production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,"`Router` no longer defaults the history prop to hash history. Please use the `hashHistory` singleton instead. http://tiny.cc/router-defaulthistory"):void 0,n=_createHashHistory2["default"]),(0,_useQueries2["default"])(n)({parseQueryString:t,stringifyQuery:o})},componentWillReceiveProps:function(e){"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(e.history===this.props.history,"You cannot change ; it will be ignored"):void 0,"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])((e.routes||e.children)===(this.props.routes||this.props.children),"You cannot change ; it will be ignored"):void 0},componentWillUnmount:function(){this._unlisten&&this._unlisten()},render:function e(){var r=this.state,t=r.location,o=r.routes,n=r.params,i=r.components,s=this.props,u=s.createElement,e=s.render,a=_objectWithoutProperties(s,["createElement","render"]);return null==t?null:(Object.keys(Router.propTypes).forEach(function(e){return delete a[e]}),e(_extends({},a,{history:this.history,router:this.router,location:t,routes:o,params:n,components:i,createElement:u})))}});exports["default"]=Router,module.exports=exports["default"]; -var _DOMUtils = require('./DOMUtils'); +}).call(this,require('_process')) -var _DOMStateStorage = require('./DOMStateStorage'); +},{"./InternalPropTypes":45,"./RouteUtils":53,"./RouterContext":55,"./RouterUtils":56,"./createTransitionManager":64,"./routerWarning":72,"_process":32,"history/lib/createHashHistory":14,"history/lib/useQueries":21,"react":"react"}],55:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},_extends=Object.assign||function(e){for(var t=1;t` expects a `router` rather than a `history`"):void 0,t=_extends({},r,{setRouteLeaveHook:r.listenBeforeLeavingRoute}),delete t.listenBeforeLeavingRoute),"production"!==process.env.NODE_ENV&&(o=(0,_deprecateObjectProperties2["default"])(o,"`context.location` is deprecated, please use a route component's `props.location` instead. http://tiny.cc/router-accessinglocation")),{history:r,location:o,router:t}},createElement:function(e,t){return null==e?null:this.props.createElement(e,t)},render:function(){var e=this,t=this.props,r=t.history,o=t.location,n=t.routes,a=t.params,i=t.components,u=null;return i&&(u=i.reduceRight(function(t,i,u){if(null==i)return t;var s=n[u],c=(0,_getRouteParams2["default"])(s,a),l={history:r,location:o,params:a,route:s,routeParams:c,routes:n};if((0,_RouteUtils.isReactChildren)(t))l.children=t;else if(t)for(var p in t)Object.prototype.hasOwnProperty.call(t,p)&&(l[p]=t[p]);if("object"===("undefined"==typeof i?"undefined":_typeof(i))){var d={};for(var f in i)Object.prototype.hasOwnProperty.call(i,f)&&(d[f]=e.createElement(i[f],_extends({key:f},l)));return d}return e.createElement(i,l)},u)),null===u||u===!1||_react2["default"].isValidElement(u)?void 0:"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1,"The root route must render a single element"):(0,_invariant2["default"])(!1),u}});exports["default"]=RouterContext,module.exports=exports["default"]; -var _createDOMHistory = require('./createDOMHistory'); +}).call(this,require('_process')) -var _createDOMHistory2 = _interopRequireDefault(_createDOMHistory); +},{"./RouteUtils":53,"./deprecateObjectProperties":65,"./getRouteParams":67,"./routerWarning":72,"_process":32,"invariant":76,"react":"react"}],56:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function createRouterObject(e,t){return _extends({},e,{setRouteLeaveHook:t.listenBeforeLeavingRoute,isActive:t.isActive})}function createRoutingHistory(e,t){return e=_extends({},e,t),"production"!==process.env.NODE_ENV&&(e=(0,_deprecateObjectProperties2["default"])(e,"`props.history` and `context.history` are deprecated. Please use `context.router`. http://tiny.cc/router-contextchanges")),e}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var t=1;tu;u++)t[u]=arguments[u];if(n.apply(e,t),n.lengthe;++e)n[e].onLeave&&n[e].onLeave.call(n[e])}exports.__esModule=!0,exports.runEnterHooks=runEnterHooks,exports.runChangeHooks=runChangeHooks,exports.runLeaveHooks=runLeaveHooks;var _AsyncUtils=require("./AsyncUtils"),_routerWarning=require("./routerWarning"),_routerWarning2=_interopRequireDefault(_routerWarning); - return false; -} +}).call(this,require('_process')) -function addQueryStringValueToPath(path, key, value) { - return path + (path.indexOf('?') === -1 ? '?' : '&') + (key + '=' + value); -} +},{"./AsyncUtils":40,"./routerWarning":72,"_process":32}],59:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var t=1;tr;r++)t[r]=arguments[r];var n=t.map(function(e){return e.renderRouterContext}).filter(function(e){return e}),u=t.map(function(e){return e.renderRouteComponent}).filter(function(e){return e}),o=function(){var e=arguments.length<=0||void 0===arguments[0]?_react.createElement:arguments[0];return function(t,r){return u.reduceRight(function(e,t){return t(e,r)},e(t,r))}};return function(e){return n.reduceRight(function(t,r){return r(t,e)},_react2["default"].createElement(_RouterContext2["default"],_extends({},e,{createElement:o(e.createElement)})))}},module.exports=exports["default"]; -function stripQueryStringValueFromPath(path, key) { - return path.replace(new RegExp('[?&]?' + key + '=[a-zA-Z0-9]+'), ''); -} +},{"./RouterContext":55,"react":"react"}],60:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0;var _createBrowserHistory=require("history/lib/createBrowserHistory"),_createBrowserHistory2=_interopRequireDefault(_createBrowserHistory),_createRouterHistory=require("./createRouterHistory"),_createRouterHistory2=_interopRequireDefault(_createRouterHistory);exports["default"]=(0,_createRouterHistory2["default"])(_createBrowserHistory2["default"]),module.exports=exports["default"]; -function getQueryStringValueFromPath(path, key) { - var match = path.match(new RegExp('\\?.*?\\b' + key + '=(.+?)\\b')); - return match && match[1]; -} +},{"./createRouterHistory":63,"history/lib/createBrowserHistory":12}],61:[function(require,module,exports){ +"use strict";function routeParamsChanged(e,t,r){if(!e.path)return!1;var a=(0,_PatternUtils.getParamNames)(e.path);return a.some(function(e){return t.params[e]!==r.params[e]})}function computeChangedRoutes(e,t){var r=e&&e.routes,a=t.routes,u=void 0,n=void 0,o=void 0;return r?!function(){var s=!1;u=r.filter(function(r){if(s)return!0;var u=-1===a.indexOf(r)||routeParamsChanged(r,e,t);return u&&(s=!0),u}),u.reverse(),o=[],n=[],a.forEach(function(e){var t=-1===r.indexOf(e),a=-1!==u.indexOf(e);t||a?o.push(e):n.push(e)})}():(u=[],n=[],o=a),{leaveRoutes:u,changeRoutes:n,enterRoutes:o}}exports.__esModule=!0;var _PatternUtils=require("./PatternUtils");exports["default"]=computeChangedRoutes,module.exports=exports["default"]; -var DefaultQueryKey = '_k'; +},{"./PatternUtils":48}],62:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function createMemoryHistory(e){var r=(0,_createMemoryHistory2["default"])(e),t=function(){return r},u=(0,_useQueries2["default"])((0,_useBasename2["default"])(t))(e);return u.__v2_compatible__=!0,u}exports.__esModule=!0,exports["default"]=createMemoryHistory;var _useQueries=require("history/lib/useQueries"),_useQueries2=_interopRequireDefault(_useQueries),_useBasename=require("history/lib/useBasename"),_useBasename2=_interopRequireDefault(_useBasename),_createMemoryHistory=require("history/lib/createMemoryHistory"),_createMemoryHistory2=_interopRequireDefault(_createMemoryHistory);module.exports=exports["default"]; -function createHashHistory() { - var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; +},{"history/lib/createMemoryHistory":17,"history/lib/useBasename":20,"history/lib/useQueries":21}],63:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}exports.__esModule=!0,exports["default"]=function(e){var t=void 0;return canUseDOM&&(t=(0,_useRouterHistory2["default"])(e)()),t};var _useRouterHistory=require("./useRouterHistory"),_useRouterHistory2=_interopRequireDefault(_useRouterHistory),canUseDOM=!("undefined"==typeof window||!window.document||!window.document.createElement);module.exports=exports["default"]; - !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? _invariant2['default'](false, 'Hash history needs a DOM') : _invariant2['default'](false) : undefined; +},{"./useRouterHistory":73}],64:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function hasAnyProperties(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!0;return!1}function createTransitionManager(e,t){function n(t){var n=arguments.length<=1||void 0===arguments[1]?!1:arguments[1],o=arguments.length<=2||void 0===arguments[2]?null:arguments[2],r=void 0;return n&&n!==!0||null!==o?("production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,"`isActive(pathname, query, indexOnly) is deprecated; use `isActive(location, indexOnly)` with a location descriptor instead. http://tiny.cc/router-isActivedeprecated"):void 0,t={pathname:t,query:n},r=o||!1):(t=e.createLocation(t),r=n),(0,_isActive3["default"])(t,r,_.location,_.routes,_.params)}function o(t){return e.createLocation(t,_Actions.REPLACE)}function r(e,n){p&&p.location===e?i(p,n):(0,_matchRoutes2["default"])(t,e,function(t,o){t?n(t):o?i(_extends({},o,{location:e}),n):n()})}function i(e,t){function n(n,o){return n||o?r(n,o):void(0,_getComponents2["default"])(e,function(n,o){n?t(n):t(null,null,_=_extends({},e,{components:o}))})}function r(e,n){e?t(e):t(null,o(n))}var i=(0,_computeChangedRoutes3["default"])(_,e),u=i.leaveRoutes,a=i.changeRoutes,s=i.enterRoutes;(0,_TransitionUtils.runLeaveHooks)(u),u.filter(function(e){return-1===s.indexOf(e)}).forEach(l),(0,_TransitionUtils.runChangeHooks)(a,_,e,function(t,o){return t||o?r(t,o):void(0,_TransitionUtils.runEnterHooks)(s,e,n)})}function u(e){var t=arguments.length<=1||void 0===arguments[1]?!0:arguments[1];return e.__id__||t&&(e.__id__=v++)}function a(e){return e.reduce(function(e,t){return e.push.apply(e,h[u(t)]),e},[])}function s(e,n){(0,_matchRoutes2["default"])(t,e,function(t,o){if(null==o)return void n();p=_extends({},o,{location:e});for(var r=a((0,_computeChangedRoutes3["default"])(_,p).leaveRoutes),i=void 0,u=0,s=r.length;null==i&&s>u;++u)i=r[u](e);n(i)})}function c(){if(_.routes){for(var e=a(_.routes),t=void 0,n=0,o=e.length;"string"!=typeof t&&o>n;++n)t=e[n]();return t}}function l(e){var t=u(e,!1);t&&(delete h[t],hasAnyProperties(h)||(g&&(g(),g=null),m&&(m(),m=null)))}function d(t,n){var o=u(t),r=h[o];if(r)-1===r.indexOf(n)&&("production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,"adding multiple leave hooks for the same route is deprecated; manage multiple confirmations in your own code instead"):void 0,r.push(n));else{var i=!hasAnyProperties(h);h[o]=[n],i&&(g=e.listenBefore(s),e.listenBeforeUnload&&(m=e.listenBeforeUnload(c)))}return function(){var e=h[o];if(e){var r=e.filter(function(e){return e!==n});0===r.length?l(t):h[o]=r}}}function f(t){return e.listen(function(n){_.location===n?t(null,_):r(n,function(o,r,i){o?t(o):r?e.transitionTo(r):i?t(null,i):"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,'Location "%s" did not match any routes',n.pathname+n.search+n.hash):void 0})})}var _={},p=void 0,v=1,h=Object.create(null),g=void 0,m=void 0;return{isActive:n,match:r,listenBeforeLeavingRoute:d,listen:f}}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var t=1;ta;++a){var l=e[a],c=l.path||"";if("/"===c.charAt(0)&&(n=t,u=[],i=[]),null!==n&&c){var f=(0,_PatternUtils.matchPattern)(c,n);if(f?(n=f.remainingPathname,u=[].concat(u,f.paramNames),i=[].concat(i,f.paramValues)):n=null,""===n)return u.every(function(t,e){return String(i[e])===String(r[t])})}}return!1}function queryIsActive(t,e){return null==e?null==t:null==t?!0:deepEqual(t,e)}function isActive(t,e,r,n,u){var i=t.pathname,a=t.query;return null==r?!1:("/"!==i.charAt(0)&&(i="/"+i),pathIsActive(i,r.pathname)||!e&&routeIsActive(i,n,u)?queryIsActive(a,r.query):!1)}exports.__esModule=!0;var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t};exports["default"]=isActive;var _PatternUtils=require("./PatternUtils");module.exports=exports["default"]; - function hashChangeListener() { - if (!ensureSlash()) return; // Always make sure hashes are preceeded with a /. +},{"./PatternUtils":48}],70:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function _objectWithoutProperties(e,t){var r={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=e[o]);return r}function match(e,t){var r=e.history,o=e.routes,a=e.location,i=_objectWithoutProperties(e,["history","routes","location"]);r||a?void 0:"production"!==process.env.NODE_ENV?(0,_invariant2["default"])(!1,"match needs a history or a location"):(0,_invariant2["default"])(!1),r=r?r:(0,_createMemoryHistory2["default"])(i);var n=(0,_createTransitionManager2["default"])(r,(0,_RouteUtils.createRoutes)(o)),u=void 0;a?a=r.createLocation(a):u=r.listen(function(e){a=e});var s=(0,_RouterUtils.createRouterObject)(r,n);r=(0,_RouterUtils.createRoutingHistory)(r,n),n.match(a,function(e,o,a){t(e,o,a&&_extends({},a,{history:r,router:s,matchContext:{history:r,transitionManager:n,router:s}})),u&&u()})}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var t=1;t2?n-2:0),a=2;n>a;a++)t[a-2]=arguments[a];_warning2["default"].apply(void 0,[e,r].concat(t))}function _resetWarned(){warned={}}exports.__esModule=!0,exports["default"]=routerWarning,exports._resetWarned=_resetWarned;var _warning=require("warning"),_warning2=_interopRequireDefault(_warning),warned={}; - if (action === _Actions.POP) return; // Nothing to do. +},{"warning":250}],73:[function(require,module,exports){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function useRouterHistory(e){return function(u){var r=(0,_useQueries2["default"])((0,_useBasename2["default"])(e))(u);return r.__v2_compatible__=!0,r}}exports.__esModule=!0,exports["default"]=useRouterHistory;var _useQueries=require("history/lib/useQueries"),_useQueries2=_interopRequireDefault(_useQueries),_useBasename=require("history/lib/useBasename"),_useBasename2=_interopRequireDefault(_useBasename);module.exports=exports["default"]; - var path = (basename || '') + pathname + search; +},{"history/lib/useBasename":20,"history/lib/useQueries":21}],74:[function(require,module,exports){ +(function (process){ +"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function _objectWithoutProperties(e,r){var t={};for(var n in e)r.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}function useRoutes(e){return"production"!==process.env.NODE_ENV?(0,_routerWarning2["default"])(!1,"`useRoutes` is deprecated. Please use `createTransitionManager` instead."):void 0,function(){var r=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],t=r.routes,n=_objectWithoutProperties(r,["routes"]),u=(0,_useQueries2["default"])(e)(n),a=(0,_createTransitionManager2["default"])(u,t);return _extends({},u,a)}}exports.__esModule=!0;var _extends=Object.assign||function(e){for(var r=1;r8&&11>=documentMode),SPACEBAR_CODE=32,SPACEBAR_CHAR=String.fromCharCode(SPACEBAR_CODE),topLevelTypes=EventConstants.topLevelTypes,eventTypes={beforeInput:{phasedRegistrationNames:{bubbled:keyOf({onBeforeInput:null}),captured:keyOf({onBeforeInputCapture:null})},dependencies:[topLevelTypes.topCompositionEnd,topLevelTypes.topKeyPress,topLevelTypes.topTextInput,topLevelTypes.topPaste]},compositionEnd:{phasedRegistrationNames:{bubbled:keyOf({onCompositionEnd:null}),captured:keyOf({onCompositionEndCapture:null})},dependencies:[topLevelTypes.topBlur,topLevelTypes.topCompositionEnd,topLevelTypes.topKeyDown,topLevelTypes.topKeyPress,topLevelTypes.topKeyUp,topLevelTypes.topMouseDown]},compositionStart:{phasedRegistrationNames:{bubbled:keyOf({onCompositionStart:null}),captured:keyOf({onCompositionStartCapture:null})},dependencies:[topLevelTypes.topBlur,topLevelTypes.topCompositionStart,topLevelTypes.topKeyDown,topLevelTypes.topKeyPress,topLevelTypes.topKeyUp,topLevelTypes.topMouseDown]},compositionUpdate:{phasedRegistrationNames:{bubbled:keyOf({onCompositionUpdate:null}),captured:keyOf({onCompositionUpdateCapture:null})},dependencies:[topLevelTypes.topBlur,topLevelTypes.topCompositionUpdate,topLevelTypes.topKeyDown,topLevelTypes.topKeyPress,topLevelTypes.topKeyUp,topLevelTypes.topMouseDown]}},hasSpaceKeypress=!1,currentComposition=null,BeforeInputEventPlugin={eventTypes:eventTypes,extractEvents:function(e,t,o,n){return[extractCompositionEvent(e,t,o,n),extractBeforeInputEvent(e,t,o,n)]}};module.exports=BeforeInputEventPlugin; - var unlisten = history.listenBefore(listener); +},{"./EventConstants":92,"./EventPropagators":96,"./FallbackCompositionState":97,"./SyntheticCompositionEvent":172,"./SyntheticInputEvent":176,"fbjs/lib/ExecutionEnvironment":215,"fbjs/lib/keyOf":233}],79:[function(require,module,exports){ +"use strict";function prefixKey(o,r){return o+r.charAt(0).toUpperCase()+r.substring(1)}var isUnitlessNumber={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridColumn:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},prefixes=["Webkit","ms","Moz","O"];Object.keys(isUnitlessNumber).forEach(function(o){prefixes.forEach(function(r){isUnitlessNumber[prefixKey(r,o)]=isUnitlessNumber[o]})});var shorthandPropertyExpansions={background:{backgroundAttachment:!0,backgroundColor:!0,backgroundImage:!0,backgroundPositionX:!0,backgroundPositionY:!0,backgroundRepeat:!0},backgroundPosition:{backgroundPositionX:!0,backgroundPositionY:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0},outline:{outlineWidth:!0,outlineStyle:!0,outlineColor:!0}},CSSProperty={isUnitlessNumber:isUnitlessNumber,shorthandPropertyExpansions:shorthandPropertyExpansions};module.exports=CSSProperty; - return function () { - unlisten(); +},{}],80:[function(require,module,exports){ +(function (process){ +"use strict";var CSSProperty=require("./CSSProperty"),ExecutionEnvironment=require("fbjs/lib/ExecutionEnvironment"),ReactInstrumentation=require("./ReactInstrumentation"),camelizeStyleName=require("fbjs/lib/camelizeStyleName"),dangerousStyleValue=require("./dangerousStyleValue"),hyphenateStyleName=require("fbjs/lib/hyphenateStyleName"),memoizeStringOnly=require("fbjs/lib/memoizeStringOnly"),warning=require("fbjs/lib/warning"),processStyleName=memoizeStringOnly(function(e){return hyphenateStyleName(e)}),hasShorthandPropertyBug=!1,styleFloatAccessor="cssFloat";if(ExecutionEnvironment.canUseDOM){var tempStyle=document.createElement("div").style;try{tempStyle.font=""}catch(e){hasShorthandPropertyBug=!0}void 0===document.documentElement.style.cssFloat&&(styleFloatAccessor="styleFloat")}if("production"!==process.env.NODE_ENV)var badVendoredStyleNamePattern=/^(?:webkit|moz|o)[A-Z]/,badStyleValueWithSemicolonPattern=/;\s*$/,warnedStyleNames={},warnedStyleValues={},warnedForNaNValue=!1,warnHyphenatedStyleName=function(e,r){warnedStyleNames.hasOwnProperty(e)&&warnedStyleNames[e]||(warnedStyleNames[e]=!0,"production"!==process.env.NODE_ENV?warning(!1,"Unsupported style property %s. Did you mean %s?%s",e,camelizeStyleName(e),checkRenderMessage(r)):void 0)},warnBadVendoredStyleName=function(e,r){warnedStyleNames.hasOwnProperty(e)&&warnedStyleNames[e]||(warnedStyleNames[e]=!0,"production"!==process.env.NODE_ENV?warning(!1,"Unsupported vendor-prefixed style property %s. Did you mean %s?%s",e,e.charAt(0).toUpperCase()+e.slice(1),checkRenderMessage(r)):void 0)},warnStyleValueWithSemicolon=function(e,r,t){warnedStyleValues.hasOwnProperty(r)&&warnedStyleValues[r]||(warnedStyleValues[r]=!0,"production"!==process.env.NODE_ENV?warning(!1,'Style property values shouldn\'t contain a semicolon.%s Try "%s: %s" instead.',checkRenderMessage(t),e,r.replace(badStyleValueWithSemicolonPattern,"")):void 0)},warnStyleValueIsNaN=function(e,r,t){warnedForNaNValue||(warnedForNaNValue=!0,"production"!==process.env.NODE_ENV?warning(!1,"`NaN` is an invalid value for the `%s` css style property.%s",e,checkRenderMessage(t)):void 0)},checkRenderMessage=function(e){if(e){var r=e.getName();if(r)return" Check the render method of `"+r+"`."}return""},warnValidStyle=function(e,r,t){var n;t&&(n=t._currentElement._owner),e.indexOf("-")>-1?warnHyphenatedStyleName(e,n):badVendoredStyleNamePattern.test(e)?warnBadVendoredStyleName(e,n):badStyleValueWithSemicolonPattern.test(r)&&warnStyleValueWithSemicolon(e,r,n),"number"==typeof r&&isNaN(r)&&warnStyleValueIsNaN(e,r,n)};var CSSPropertyOperations={createMarkupForStyles:function(e,r){var t="";for(var n in e)if(e.hasOwnProperty(n)){var a=e[n];"production"!==process.env.NODE_ENV&&warnValidStyle(n,a,r),null!=a&&(t+=processStyleName(n)+":",t+=dangerousStyleValue(n,a,r)+";")}return t||null},setValueForStyles:function(e,r,t){"production"!==process.env.NODE_ENV&&ReactInstrumentation.debugTool.onNativeOperation(t._debugID,"update styles",r);var n=e.style;for(var a in r)if(r.hasOwnProperty(a)){"production"!==process.env.NODE_ENV&&warnValidStyle(a,r[a],t);var o=dangerousStyleValue(a,r[a],t);if("float"!==a&&"cssFloat"!==a||(a=styleFloatAccessor),o)n[a]=o;else{var s=hasShorthandPropertyBug&&CSSProperty.shorthandPropertyExpansions[a];if(s)for(var l in s)n[l]="";else n[a]=""}}}};module.exports=CSSPropertyOperations; - if (--listenerCount === 0) stopHashChangeListener(); - }; - } +}).call(this,require('_process')) - function listen(listener) { - if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history); +},{"./CSSProperty":79,"./ReactInstrumentation":146,"./dangerousStyleValue":189,"_process":32,"fbjs/lib/ExecutionEnvironment":215,"fbjs/lib/camelizeStyleName":217,"fbjs/lib/hyphenateStyleName":228,"fbjs/lib/memoizeStringOnly":235,"fbjs/lib/warning":239}],81:[function(require,module,exports){ +(function (process){ +"use strict";function CallbackQueue(){this._callbacks=null,this._contexts=null}var _assign=require("object-assign"),PooledClass=require("./PooledClass"),invariant=require("fbjs/lib/invariant");_assign(CallbackQueue.prototype,{enqueue:function(t,l){this._callbacks=this._callbacks||[],this._contexts=this._contexts||[],this._callbacks.push(t),this._contexts.push(l)},notifyAll:function(){var t=this._callbacks,l=this._contexts;if(t){t.length!==l.length?"production"!==process.env.NODE_ENV?invariant(!1,"Mismatched list of contexts in callback queue"):invariant(!1):void 0,this._callbacks=null,this._contexts=null;for(var s=0;s8));var isInputEventSupported=!1;ExecutionEnvironment.canUseDOM&&(isInputEventSupported=isEventSupported("input")&&(!("documentMode"in document)||document.documentMode>11));var newValueProp={get:function(){return activeElementValueProp.get.call(this)},set:function(e){activeElementValue=""+e,activeElementValueProp.set.call(this,e)}},ChangeEventPlugin={eventTypes:eventTypes,extractEvents:function(e,t,n,a){var o,l,v=t?ReactDOMComponentTree.getNodeFromInstance(t):window;if(shouldUseChangeEvent(v)?doesChangeEventBubble?o=getTargetInstForChangeEvent:l=handleEventsForChangeEventIE8:isTextInputElement(v)?isInputEventSupported?o=getTargetInstForInputEvent:(o=getTargetInstForInputEventIE,l=handleEventsForInputEventIE):shouldUseClickEvent(v)&&(o=getTargetInstForClickEvent),o){var r=o(e,t);if(r){var p=SyntheticEvent.getPooled(eventTypes.change,r,n,a);return p.type="change",EventPropagators.accumulateTwoPhaseDispatches(p),p}}l&&l(e,v,t)}};module.exports=ChangeEventPlugin; - if (--listenerCount === 0) stopHashChangeListener(); - }; - } +},{"./EventConstants":92,"./EventPluginHub":93,"./EventPropagators":96,"./ReactDOMComponentTree":117,"./ReactUpdates":165,"./SyntheticEvent":174,"./getEventTarget":197,"./isEventSupported":204,"./isTextInputElement":205,"fbjs/lib/ExecutionEnvironment":215,"fbjs/lib/keyOf":233}],83:[function(require,module,exports){ +(function (process){ +"use strict";function getNodeAfter(e,t){return Array.isArray(t)&&(t=t[1]),t?t.nextSibling:e.firstChild}function insertLazyTreeChildAt(e,t,n){DOMLazyTree.insertTreeBefore(e,t,n)}function moveChild(e,t,n){Array.isArray(t)?moveDelimitedText(e,t[0],t[1],n):insertChildAt(e,t,n)}function removeChild(e,t){if(Array.isArray(t)){var n=t[1];t=t[0],removeDelimitedText(e,t,n),e.removeChild(n)}e.removeChild(t)}function moveDelimitedText(e,t,n,o){for(var r=t;;){var i=r.nextSibling;if(insertChildAt(e,r,o),r===n)break;r=i}}function removeDelimitedText(e,t,n){for(;;){var o=t.nextSibling;if(o===n)break;e.removeChild(o)}}function replaceDelimitedText(e,t,n){var o=e.parentNode,r=e.nextSibling;r===t?n&&insertChildAt(o,document.createTextNode(n),r):n?(setTextContent(r,n),removeDelimitedText(o,r,t)):removeDelimitedText(o,e,t),"production"!==process.env.NODE_ENV&&ReactInstrumentation.debugTool.onNativeOperation(ReactDOMComponentTree.getInstanceFromNode(e)._debugID,"replace text",n)}var DOMLazyTree=require("./DOMLazyTree"),Danger=require("./Danger"),ReactMultiChildUpdateTypes=require("./ReactMultiChildUpdateTypes"),ReactDOMComponentTree=require("./ReactDOMComponentTree"),ReactInstrumentation=require("./ReactInstrumentation"),createMicrosoftUnsafeLocalFunction=require("./createMicrosoftUnsafeLocalFunction"),setInnerHTML=require("./setInnerHTML"),setTextContent=require("./setTextContent"),insertChildAt=createMicrosoftUnsafeLocalFunction(function(e,t,n){e.insertBefore(t,n)}),dangerouslyReplaceNodeWithMarkup=Danger.dangerouslyReplaceNodeWithMarkup;"production"!==process.env.NODE_ENV&&(dangerouslyReplaceNodeWithMarkup=function(e,t,n){if(Danger.dangerouslyReplaceNodeWithMarkup(e,t),0!==n._debugID)ReactInstrumentation.debugTool.onNativeOperation(n._debugID,"replace with",t.toString());else{var o=ReactDOMComponentTree.getInstanceFromNode(t.node);0!==o._debugID&&ReactInstrumentation.debugTool.onNativeOperation(o._debugID,"mount",t.toString())}});var DOMChildrenOperations={dangerouslyReplaceNodeWithMarkup:dangerouslyReplaceNodeWithMarkup,replaceDelimitedText:replaceDelimitedText,processUpdates:function(e,t){if("production"!==process.env.NODE_ENV)var n=ReactDOMComponentTree.getInstanceFromNode(e)._debugID;for(var o=0;ot||e.hasOverloadedBooleanValue&&t===!1}var DOMProperty=require("./DOMProperty"),ReactDOMComponentTree=require("./ReactDOMComponentTree"),ReactDOMInstrumentation=require("./ReactDOMInstrumentation"),ReactInstrumentation=require("./ReactInstrumentation"),quoteAttributeValueForBrowser=require("./quoteAttributeValueForBrowser"),warning=require("fbjs/lib/warning"),VALID_ATTRIBUTE_NAME_REGEX=new RegExp("^["+DOMProperty.ATTRIBUTE_NAME_START_CHAR+"]["+DOMProperty.ATTRIBUTE_NAME_CHAR+"]*$"),illegalAttributeNameCache={},validatedAttributeNameCache={},DOMPropertyOperations={createMarkupForID:function(e){return DOMProperty.ID_ATTRIBUTE_NAME+"="+quoteAttributeValueForBrowser(e)},setAttributeForID:function(e,t){e.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME,t)},createMarkupForRoot:function(){return DOMProperty.ROOT_ATTRIBUTE_NAME+'=""'},setAttributeForRoot:function(e){e.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME,"")},createMarkupForProperty:function(e,t){"production"!==process.env.NODE_ENV&&ReactDOMInstrumentation.debugTool.onCreateMarkupForProperty(e,t);var r=DOMProperty.properties.hasOwnProperty(e)?DOMProperty.properties[e]:null;if(r){if(shouldIgnoreValue(r,t))return"";var o=r.attributeName;return r.hasBooleanValue||r.hasOverloadedBooleanValue&&t===!0?o+'=""':o+"="+quoteAttributeValueForBrowser(t)}return DOMProperty.isCustomAttribute(e)?null==t?"":e+"="+quoteAttributeValueForBrowser(t):null},createMarkupForCustomAttribute:function(e,t){return isAttributeNameSafe(e)&&null!=t?e+"="+quoteAttributeValueForBrowser(t):""},setValueForProperty:function(e,t,r){var o=DOMProperty.properties.hasOwnProperty(t)?DOMProperty.properties[t]:null;if(o){var a=o.mutationMethod;if(a)a(e,r);else{if(shouldIgnoreValue(o,r))return void this.deleteValueForProperty(e,t);if(o.mustUseProperty){var u=o.propertyName;o.hasSideEffects&&""+e[u]==""+r||(e[u]=r)}else{var n=o.attributeName,i=o.attributeNamespace;i?e.setAttributeNS(i,n,""+r):o.hasBooleanValue||o.hasOverloadedBooleanValue&&r===!0?e.setAttribute(n,""):e.setAttribute(n,""+r)}}}else if(DOMProperty.isCustomAttribute(t))return void DOMPropertyOperations.setValueForAttribute(e,t,r);if("production"!==process.env.NODE_ENV){ReactDOMInstrumentation.debugTool.onSetValueForProperty(e,t,r);var s={};s[t]=r,ReactInstrumentation.debugTool.onNativeOperation(ReactDOMComponentTree.getInstanceFromNode(e)._debugID,"update attribute",s)}},setValueForAttribute:function(e,t,r){if(isAttributeNameSafe(t)&&(null==r?e.removeAttribute(t):e.setAttribute(t,""+r),"production"!==process.env.NODE_ENV)){var o={};o[t]=r,ReactInstrumentation.debugTool.onNativeOperation(ReactDOMComponentTree.getInstanceFromNode(e)._debugID,"update attribute",o)}},deleteValueForProperty:function(e,t){var r=DOMProperty.properties.hasOwnProperty(t)?DOMProperty.properties[t]:null;if(r){var o=r.mutationMethod;if(o)o(e,void 0);else if(r.mustUseProperty){var a=r.propertyName;r.hasBooleanValue?e[a]=!1:r.hasSideEffects&&""+e[a]==""||(e[a]="")}else e.removeAttribute(r.attributeName)}else DOMProperty.isCustomAttribute(t)&&e.removeAttribute(t);"production"!==process.env.NODE_ENV&&(ReactDOMInstrumentation.debugTool.onDeleteValueForProperty(e,t),ReactInstrumentation.debugTool.onNativeOperation(ReactDOMComponentTree.getInstanceFromNode(e)._debugID,"remove attribute",t))}};module.exports=DOMPropertyOperations; - history.go(n); - } +}).call(this,require('_process')) - function createHref(path) { - return '#' + history.createHref(path); - } +},{"./DOMProperty":86,"./ReactDOMComponentTree":117,"./ReactDOMInstrumentation":125,"./ReactInstrumentation":146,"./quoteAttributeValueForBrowser":207,"_process":32,"fbjs/lib/warning":239}],88:[function(require,module,exports){ +(function (process){ +"use strict";function getNodeName(e){return e.substring(1,e.indexOf(" "))}var DOMLazyTree=require("./DOMLazyTree"),ExecutionEnvironment=require("fbjs/lib/ExecutionEnvironment"),createNodesFromMarkup=require("fbjs/lib/createNodesFromMarkup"),emptyFunction=require("fbjs/lib/emptyFunction"),getMarkupWrap=require("fbjs/lib/getMarkupWrap"),invariant=require("fbjs/lib/invariant"),OPEN_TAG_NAME_EXP=/^(<[^ \/>]+)/,RESULT_INDEX_ATTR="data-danger-index",Danger={dangerouslyRenderMarkup:function(e){ExecutionEnvironment.canUseDOM?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString for server rendering."):invariant(!1);for(var r,n={},a=0;a node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString()."):invariant(!1):void 0,"string"==typeof r){var n=createNodesFromMarkup(r,emptyFunction)[0];e.parentNode.replaceChild(n,e)}else DOMLazyTree.replaceChildWithTree(e,r)}};module.exports=Danger; - // deprecated - function registerTransitionHook(hook) { - if (++listenerCount === 1) stopHashChangeListener = startHashChangeListener(history); +}).call(this,require('_process')) - history.registerTransitionHook(hook); - } +},{"./DOMLazyTree":84,"_process":32,"fbjs/lib/ExecutionEnvironment":215,"fbjs/lib/createNodesFromMarkup":220,"fbjs/lib/emptyFunction":221,"fbjs/lib/getMarkupWrap":225,"fbjs/lib/invariant":229}],89:[function(require,module,exports){ +"use strict";var keyOf=require("fbjs/lib/keyOf"),DefaultEventPluginOrder=[keyOf({ResponderEventPlugin:null}),keyOf({SimpleEventPlugin:null}),keyOf({TapEventPlugin:null}),keyOf({EnterLeaveEventPlugin:null}),keyOf({ChangeEventPlugin:null}),keyOf({SelectEventPlugin:null}),keyOf({BeforeInputEventPlugin:null})];module.exports=DefaultEventPluginOrder; - // deprecated - function unregisterTransitionHook(hook) { - history.unregisterTransitionHook(hook); +},{"fbjs/lib/keyOf":233}],90:[function(require,module,exports){ +"use strict";var disableableMouseListenerNames={onClick:!0,onDoubleClick:!0,onMouseDown:!0,onMouseMove:!0,onMouseUp:!0,onClickCapture:!0,onDoubleClickCapture:!0,onMouseDownCapture:!0,onMouseMoveCapture:!0,onMouseUpCapture:!0},DisabledInputUtils={getNativeProps:function(e,o){if(!o.disabled)return o;var s={};for(var n in o)!disableableMouseListenerNames[n]&&o.hasOwnProperty(n)&&(s[n]=o[n]);return s}};module.exports=DisabledInputUtils; - if (--listenerCount === 0) stopHashChangeListener(); - } +},{}],91:[function(require,module,exports){ +"use strict";var EventConstants=require("./EventConstants"),EventPropagators=require("./EventPropagators"),ReactDOMComponentTree=require("./ReactDOMComponentTree"),SyntheticMouseEvent=require("./SyntheticMouseEvent"),keyOf=require("fbjs/lib/keyOf"),topLevelTypes=EventConstants.topLevelTypes,eventTypes={mouseEnter:{registrationName:keyOf({onMouseEnter:null}),dependencies:[topLevelTypes.topMouseOut,topLevelTypes.topMouseOver]},mouseLeave:{registrationName:keyOf({onMouseLeave:null}),dependencies:[topLevelTypes.topMouseOut,topLevelTypes.topMouseOver]}},EnterLeaveEventPlugin={eventTypes:eventTypes,extractEvents:function(e,t,n,o){if(e===topLevelTypes.topMouseOver&&(n.relatedTarget||n.fromElement))return null;if(e!==topLevelTypes.topMouseOut&&e!==topLevelTypes.topMouseOver)return null;var r;if(o.window===o)r=o;else{var s=o.ownerDocument;r=s?s.defaultView||s.parentWindow:window}var a,u;if(e===topLevelTypes.topMouseOut){a=t;var p=n.relatedTarget||n.toElement;u=p?ReactDOMComponentTree.getClosestInstanceFromNode(p):null}else a=null,u=t;if(a===u)return null;var l=null==a?r:ReactDOMComponentTree.getNodeFromInstance(a),v=null==u?r:ReactDOMComponentTree.getNodeFromInstance(u),i=SyntheticMouseEvent.getPooled(eventTypes.mouseLeave,a,n,o);i.type="mouseleave",i.target=l,i.relatedTarget=v;var y=SyntheticMouseEvent.getPooled(eventTypes.mouseEnter,u,n,o);return y.type="mouseenter",y.target=v,y.relatedTarget=l,EventPropagators.accumulateEnterLeaveDispatches(i,y,a,u),[i,y]}};module.exports=EnterLeaveEventPlugin; - // deprecated - function pushState(state, path) { - process.env.NODE_ENV !== 'production' ? _warning2['default'](queryKey || state == null, 'You cannot use state without a queryKey it will be dropped') : undefined; +},{"./EventConstants":92,"./EventPropagators":96,"./ReactDOMComponentTree":117,"./SyntheticMouseEvent":178,"fbjs/lib/keyOf":233}],92:[function(require,module,exports){ +"use strict";var keyMirror=require("fbjs/lib/keyMirror"),PropagationPhases=keyMirror({bubbled:null,captured:null}),topLevelTypes=keyMirror({topAbort:null,topAnimationEnd:null,topAnimationIteration:null,topAnimationStart:null,topBlur:null,topCanPlay:null,topCanPlayThrough:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topDurationChange:null,topEmptied:null,topEncrypted:null,topEnded:null,topError:null,topFocus:null,topInput:null,topInvalid:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topLoadedData:null,topLoadedMetadata:null,topLoadStart:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topPause:null,topPlay:null,topPlaying:null,topProgress:null,topRateChange:null,topReset:null,topScroll:null,topSeeked:null,topSeeking:null,topSelectionChange:null,topStalled:null,topSubmit:null,topSuspend:null,topTextInput:null,topTimeUpdate:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topTransitionEnd:null,topVolumeChange:null,topWaiting:null,topWheel:null}),EventConstants={topLevelTypes:topLevelTypes,PropagationPhases:PropagationPhases};module.exports=EventConstants; - history.pushState(state, path); - } +},{"fbjs/lib/keyMirror":232}],93:[function(require,module,exports){ +(function (process){ +"use strict";var EventPluginRegistry=require("./EventPluginRegistry"),EventPluginUtils=require("./EventPluginUtils"),ReactErrorUtils=require("./ReactErrorUtils"),accumulateInto=require("./accumulateInto"),forEachAccumulated=require("./forEachAccumulated"),invariant=require("fbjs/lib/invariant"),listenerBank={},eventQueue=null,executeDispatchesAndRelease=function(e,t){e&&(EventPluginUtils.executeDispatchesInOrder(e,t),e.isPersistent()||e.constructor.release(e))},executeDispatchesAndReleaseSimulated=function(e){return executeDispatchesAndRelease(e,!0)},executeDispatchesAndReleaseTopLevel=function(e){return executeDispatchesAndRelease(e,!1)},EventPluginHub={injection:{injectEventPluginOrder:EventPluginRegistry.injectEventPluginOrder,injectEventPluginsByName:EventPluginRegistry.injectEventPluginsByName},putListener:function(e,t,n){"function"!=typeof n?"production"!==process.env.NODE_ENV?invariant(!1,"Expected %s listener to be a function, instead got type %s",t,typeof n):invariant(!1):void 0;var i=listenerBank[t]||(listenerBank[t]={});i[e._rootNodeID]=n;var r=EventPluginRegistry.registrationNameModules[t];r&&r.didPutListener&&r.didPutListener(e,t,n)},getListener:function(e,t){var n=listenerBank[t];return n&&n[e._rootNodeID]},deleteListener:function(e,t){var n=EventPluginRegistry.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t);var i=listenerBank[t];i&&delete i[e._rootNodeID]},deleteAllListeners:function(e){for(var t in listenerBank)if(listenerBank[t][e._rootNodeID]){var n=EventPluginRegistry.registrationNameModules[t];n&&n.willDeleteListener&&n.willDeleteListener(e,t),delete listenerBank[t][e._rootNodeID]}},extractEvents:function(e,t,n,i){for(var r,u=EventPluginRegistry.plugins,s=0;s-1?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.",e):invariant(!1),!EventPluginRegistry.plugins[i]){n.extractEvents?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.",e):invariant(!1),EventPluginRegistry.plugins[i]=n;var t=n.eventTypes;for(var r in t)publishEventForPlugin(t[r],n,r)?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.",r,e):invariant(!1)}}}function publishEventForPlugin(e,n,i){EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(i)?"production"!==process.env.NODE_ENV?invariant(!1,"EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.",i):invariant(!1):void 0,EventPluginRegistry.eventNameDispatchConfigs[i]=e;var t=e.phasedRegistrationNames;if(t){for(var r in t)if(t.hasOwnProperty(r)){var s=t[r];publishRegistrationName(s,n,i)}return!0}return e.registrationName?(publishRegistrationName(e.registrationName,n,i),!0):!1}function publishRegistrationName(e,n,i){if(EventPluginRegistry.registrationNameModules[e]?"production"!==process.env.NODE_ENV?invariant(!1,"EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.",e):invariant(!1):void 0,EventPluginRegistry.registrationNameModules[e]=n,EventPluginRegistry.registrationNameDependencies[e]=n.eventTypes[i].dependencies,"production"!==process.env.NODE_ENV){var t=e.toLowerCase();EventPluginRegistry.possibleRegistrationNames[t]=e}}var invariant=require("fbjs/lib/invariant"),EventPluginOrder=null,namesToPlugins={},EventPluginRegistry={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:"production"!==process.env.NODE_ENV?{}:null,injectEventPluginOrder:function(e){EventPluginOrder?"production"!==process.env.NODE_ENV?invariant(!1,"EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React."):invariant(!1):void 0,EventPluginOrder=Array.prototype.slice.call(e),recomputePluginOrdering()},injectEventPluginsByName:function(e){var n=!1;for(var i in e)if(e.hasOwnProperty(i)){var t=e[i];namesToPlugins.hasOwnProperty(i)&&namesToPlugins[i]===t||(namesToPlugins[i]?"production"!==process.env.NODE_ENV?invariant(!1,"EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.",i):invariant(!1):void 0,namesToPlugins[i]=t,n=!0)}n&&recomputePluginOrdering()},getPluginModuleForEvent:function(e){var n=e.dispatchConfig;if(n.registrationName)return EventPluginRegistry.registrationNameModules[n.registrationName]||null;for(var i in n.phasedRegistrationNames)if(n.phasedRegistrationNames.hasOwnProperty(i)){var t=EventPluginRegistry.registrationNameModules[n.phasedRegistrationNames[i]];if(t)return t}return null},_resetEventPlugins:function(){EventPluginOrder=null;for(var e in namesToPlugins)namesToPlugins.hasOwnProperty(e)&&delete namesToPlugins[e];EventPluginRegistry.plugins.length=0;var n=EventPluginRegistry.eventNameDispatchConfigs;for(var i in n)n.hasOwnProperty(i)&&delete n[i];var t=EventPluginRegistry.registrationNameModules;for(var r in t)t.hasOwnProperty(r)&&delete t[r];if("production"!==process.env.NODE_ENV){var s=EventPluginRegistry.possibleRegistrationNames;for(var a in s)s.hasOwnProperty(a)&&delete s[a]}}};module.exports=EventPluginRegistry; - return _extends({}, history, { - listenBefore: listenBefore, - listen: listen, - push: push, - replace: replace, - go: go, - createHref: createHref, +}).call(this,require('_process')) - registerTransitionHook: registerTransitionHook, // deprecated - warning is in createHistory - unregisterTransitionHook: unregisterTransitionHook, // deprecated - warning is in createHistory - pushState: pushState, // deprecated - warning is in createHistory - replaceState: replaceState // deprecated - warning is in createHistory - }); -} +},{"_process":32,"fbjs/lib/invariant":229}],95:[function(require,module,exports){ +(function (process){ +"use strict";function isEndish(e){return e===topLevelTypes.topMouseUp||e===topLevelTypes.topTouchEnd||e===topLevelTypes.topTouchCancel}function isMoveish(e){return e===topLevelTypes.topMouseMove||e===topLevelTypes.topTouchMove}function isStartish(e){return e===topLevelTypes.topMouseDown||e===topLevelTypes.topTouchStart}function executeDispatch(e,t,n,r){var s=e.type||"unknown-event";e.currentTarget=EventPluginUtils.getNodeFromInstance(r),t?ReactErrorUtils.invokeGuardedCallbackWithCatch(s,n,e):ReactErrorUtils.invokeGuardedCallback(s,n,e),e.currentTarget=null}function executeDispatchesInOrder(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if("production"!==process.env.NODE_ENV&&validateEventDispatches(e),Array.isArray(n))for(var s=0;st&&o[t]===a[t];t++);var i=s-t;for(e=1;i>=e&&o[s-e]===a[l-e];e++);var r=e>1?1-e:void 0;return this._fallbackText=a.slice(t,r),this._fallbackText}}),PooledClass.addPoolingTo(FallbackCompositionState),module.exports=FallbackCompositionState; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +},{"./PooledClass":101,"./getTextContentAccessor":201,"object-assign":240}],98:[function(require,module,exports){ +"use strict";var DOMProperty=require("./DOMProperty"),MUST_USE_PROPERTY=DOMProperty.injection.MUST_USE_PROPERTY,HAS_BOOLEAN_VALUE=DOMProperty.injection.HAS_BOOLEAN_VALUE,HAS_SIDE_EFFECTS=DOMProperty.injection.HAS_SIDE_EFFECTS,HAS_NUMERIC_VALUE=DOMProperty.injection.HAS_NUMERIC_VALUE,HAS_POSITIVE_NUMERIC_VALUE=DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE,HAS_OVERLOADED_BOOLEAN_VALUE=DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE,HTMLDOMPropertyConfig={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+DOMProperty.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:HAS_BOOLEAN_VALUE,allowTransparency:0,alt:0,async:HAS_BOOLEAN_VALUE,autoComplete:0,autoPlay:HAS_BOOLEAN_VALUE,capture:HAS_BOOLEAN_VALUE,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:MUST_USE_PROPERTY|HAS_BOOLEAN_VALUE,cite:0,classID:0,className:0,cols:HAS_POSITIVE_NUMERIC_VALUE,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:HAS_BOOLEAN_VALUE,coords:0,crossOrigin:0,data:0,dateTime:0,"default":HAS_BOOLEAN_VALUE,defer:HAS_BOOLEAN_VALUE,dir:0,disabled:HAS_BOOLEAN_VALUE,download:HAS_OVERLOADED_BOOLEAN_VALUE,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:HAS_BOOLEAN_VALUE,formTarget:0,frameBorder:0,headers:0,height:0,hidden:HAS_BOOLEAN_VALUE,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:HAS_BOOLEAN_VALUE,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:MUST_USE_PROPERTY|HAS_BOOLEAN_VALUE,muted:MUST_USE_PROPERTY|HAS_BOOLEAN_VALUE,name:0,nonce:0,noValidate:HAS_BOOLEAN_VALUE,open:HAS_BOOLEAN_VALUE,optimum:0,pattern:0,placeholder:0,poster:0,preload:0,profile:0,radioGroup:0,readOnly:HAS_BOOLEAN_VALUE,rel:0,required:HAS_BOOLEAN_VALUE,reversed:HAS_BOOLEAN_VALUE,role:0,rows:HAS_POSITIVE_NUMERIC_VALUE,rowSpan:HAS_NUMERIC_VALUE,sandbox:0,scope:0,scoped:HAS_BOOLEAN_VALUE,scrolling:0,seamless:HAS_BOOLEAN_VALUE,selected:MUST_USE_PROPERTY|HAS_BOOLEAN_VALUE,shape:0,size:HAS_POSITIVE_NUMERIC_VALUE,sizes:0,span:HAS_POSITIVE_NUMERIC_VALUE,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:HAS_NUMERIC_VALUE,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:MUST_USE_PROPERTY|HAS_SIDE_EFFECTS,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,"typeof":0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:HAS_BOOLEAN_VALUE,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{}};module.exports=HTMLDOMPropertyConfig; -var _warning = require('warning'); +},{"./DOMProperty":86}],99:[function(require,module,exports){ +"use strict";function escape(e){var n=/[=:]/g,r={"=":"=0",":":"=2"},s=(""+e).replace(n,function(e){return r[e]});return"$"+s}function unescape(e){var n=/(=0|=2)/g,r={"=0":"=","=2":":"},s="."===e[0]&&"$"===e[1]?e.substring(2):e.substring(1);return(""+s).replace(n,function(e){return r[e]})}var KeyEscapeUtils={escape:escape,unescape:unescape};module.exports=KeyEscapeUtils; -var _warning2 = _interopRequireDefault(_warning); +},{}],100:[function(require,module,exports){ +(function (process){ +"use strict";function _assertSingleLink(e){null!=e.checkedLink&&null!=e.valueLink?"production"!==process.env.NODE_ENV?invariant(!1,"Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don't want to use valueLink and vice versa."):invariant(!1):void 0}function _assertValueLink(e){_assertSingleLink(e),null!=e.value||null!=e.onChange?"production"!==process.env.NODE_ENV?invariant(!1,"Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don't want to use valueLink."):invariant(!1):void 0}function _assertCheckedLink(e){_assertSingleLink(e),null!=e.checked||null!=e.onChange?"production"!==process.env.NODE_ENV?invariant(!1,"Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don't want to use checkedLink"):invariant(!1):void 0}function getDeclarationErrorAddendum(e){if(e){var n=e.getName();if(n)return" Check the render method of `"+n+"`."}return""}var ReactPropTypes=require("./ReactPropTypes"),ReactPropTypeLocations=require("./ReactPropTypeLocations"),invariant=require("fbjs/lib/invariant"),warning=require("fbjs/lib/warning"),hasReadOnlyValue={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},propTypes={value:function(e,n,a){return!e[n]||hasReadOnlyValue[e.type]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,n,a){return!e[n]||e.onChange||e.readOnly||e.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:ReactPropTypes.func},loggedTypeFailures={},LinkedValueUtils={checkPropTypes:function(e,n,a){for(var r in propTypes){if(propTypes.hasOwnProperty(r))var o=propTypes[r](n,r,e,ReactPropTypeLocations.prop);if(o instanceof Error&&!(o.message in loggedTypeFailures)){loggedTypeFailures[o.message]=!0;var i=getDeclarationErrorAddendum(a);"production"!==process.env.NODE_ENV?warning(!1,"Failed form propType: %s%s",o.message,i):void 0}}},getValue:function(e){return e.valueLink?(_assertValueLink(e),e.valueLink.value):e.value},getChecked:function(e){return e.checkedLink?(_assertCheckedLink(e),e.checkedLink.value):e.checked},executeOnChange:function(e,n){return e.valueLink?(_assertValueLink(e),e.valueLink.requestChange(n.target.value)):e.checkedLink?(_assertCheckedLink(e),e.checkedLink.requestChange(n.target.checked)):e.onChange?e.onChange.call(void 0,n):void 0}};module.exports=LinkedValueUtils; -var _deepEqual = require('deep-equal'); +}).call(this,require('_process')) -var _deepEqual2 = _interopRequireDefault(_deepEqual); +},{"./ReactPropTypeLocations":158,"./ReactPropTypes":159,"_process":32,"fbjs/lib/invariant":229,"fbjs/lib/warning":239}],101:[function(require,module,exports){ +(function (process){ +"use strict";var invariant=require("fbjs/lib/invariant"),oneArgumentPooler=function(o){var e=this;if(e.instancePool.length){var n=e.instancePool.pop();return e.call(n,o),n}return new e(o)},twoArgumentPooler=function(o,e){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,o,e),r}return new n(o,e)},threeArgumentPooler=function(o,e,n){var r=this;if(r.instancePool.length){var t=r.instancePool.pop();return r.call(t,o,e,n),t}return new r(o,e,n)},fourArgumentPooler=function(o,e,n,r){var t=this;if(t.instancePool.length){var l=t.instancePool.pop();return t.call(l,o,e,n,r),l}return new t(o,e,n,r)},fiveArgumentPooler=function(o,e,n,r,t){var l=this;if(l.instancePool.length){var i=l.instancePool.pop();return l.call(i,o,e,n,r,t),i}return new l(o,e,n,r,t)},standardReleaser=function(o){var e=this;o instanceof e?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"Trying to release an instance into a pool of a different type."):invariant(!1),o.destructor(),e.instancePool.length1?r-1:0),s=1;r>s;s++)c[s-1]=arguments[s];if(a!==e&&null!==a)"production"!==process.env.NODE_ENV?warning(!1,"bind(): React component methods may only be bound to the component instance. See %s",o):void 0;else if(!c.length)return"production"!==process.env.NODE_ENV?warning(!1,"bind(): You are binding a component method to the component. React does this for you automatically in a high-performance way, so you can safely remove this call. See %s",o):void 0,n;var p=i.apply(n,arguments);return p.__reactBoundContext=e,p.__reactBoundMethod=t,p.__reactBoundArguments=c,p}}return n}function bindAutoBindMethods(e){for(var t=e.__reactAutoBindPairs,n=0;n-1&&-1===navigator.userAgent.indexOf("Edge")||navigator.userAgent.indexOf("Firefox")>-1)){var showFileUrlMessage=-1===window.location.protocol.indexOf("http")&&-1===navigator.userAgent.indexOf("Firefox");console.debug("Download the React DevTools "+(showFileUrlMessage?"and use an HTTP server (instead of a file: URL) ":"")+"for a better development experience: https://fb.me/react-devtools")}var testFunc=function(){};"production"!==process.env.NODE_ENV?warning(-1!==(testFunc.name||testFunc.toString()).indexOf("testFn"),"It looks like you're using a minified copy of the development build of React. When deploying React apps to production, make sure to use the production build which skips development warnings and is faster. See https://fb.me/react-minification for more details."):void 0;var ieCompatibilityMode=document.documentMode&&document.documentMode<8;"production"!==process.env.NODE_ENV?warning(!ieCompatibilityMode,'Internet Explorer is running in compatibility mode; please add the following tag to your HTML to prevent this from happening: '):void 0;for(var expectedFeatures=[Array.isArray,Array.prototype.every,Array.prototype.forEach,Array.prototype.indexOf,Array.prototype.map,Date.now,Function.prototype.bind,Object.keys,String.prototype.split,String.prototype.trim],i=0;i",friendlyStringify(e),friendlyStringify(t)):void 0)}}function assertValidProps(e,t){t&&(voidElementTags[e._tag]&&(null!=t.children||null!=t.dangerouslySetInnerHTML?"production"!==process.env.NODE_ENV?invariant(!1,"%s is a void element tag and must not have `children` or use `props.dangerouslySetInnerHTML`.%s",e._tag,e._currentElement._owner?" Check the render method of "+e._currentElement._owner.getName()+".":""):invariant(!1):void 0),null!=t.dangerouslySetInnerHTML&&(null!=t.children?"production"!==process.env.NODE_ENV?invariant(!1,"Can only set one of `children` or `props.dangerouslySetInnerHTML`."):invariant(!1):void 0,"object"==typeof t.dangerouslySetInnerHTML&&HTML in t.dangerouslySetInnerHTML?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information."):invariant(!1)),"production"!==process.env.NODE_ENV&&("production"!==process.env.NODE_ENV?warning(null==t.innerHTML,"Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`."):void 0,"production"!==process.env.NODE_ENV?warning(t.suppressContentEditableWarning||!t.contentEditable||null==t.children,"A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional."):void 0,"production"!==process.env.NODE_ENV?warning(null==t.onFocusIn&&null==t.onFocusOut,"React uses onFocus and onBlur instead of onFocusIn and onFocusOut. All React events are normalized to bubble, so onFocusIn and onFocusOut are not needed/supported by React."):void 0),null!=t.style&&"object"!=typeof t.style?"production"!==process.env.NODE_ENV?invariant(!1,"The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.%s",getDeclarationErrorAddendum(e)):invariant(!1):void 0)}function enqueuePutListener(e,t,n,r){if(!(r instanceof ReactServerRenderingTransaction)){"production"!==process.env.NODE_ENV&&("production"!==process.env.NODE_ENV?warning("onScroll"!==t||isEventSupported("scroll",!0),"This browser doesn't support the `onScroll` event"):void 0);var o=e._nativeContainerInfo,a=o._node&&o._node.nodeType===DOC_FRAGMENT_TYPE,i=a?o._node:o._ownerDocument;listenTo(t,i),r.getReactMountReady().enqueue(putListener,{inst:e,registrationName:t,listener:n})}}function putListener(){var e=this;EventPluginHub.putListener(e.inst,e.registrationName,e.listener)}function optionPostMount(){var e=this;ReactDOMOption.postMountWrapper(e)}function trapBubbledEventsLocal(){var e=this;e._rootNodeID?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"Must be mounted to trap events"):invariant(!1);var t=getNode(e);switch(t?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"trapBubbledEvent(...): Requires node to be rendered."):invariant(!1),e._tag){case"iframe":case"object":e._wrapperState.listeners=[ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topLoad,"load",t)];break;case"video":case"audio":e._wrapperState.listeners=[];for(var n in mediaEvents)mediaEvents.hasOwnProperty(n)&&e._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes[n],mediaEvents[n],t));break;case"img":e._wrapperState.listeners=[ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topError,"error",t),ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topLoad,"load",t)];break;case"form":e._wrapperState.listeners=[ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topReset,"reset",t),ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topSubmit,"submit",t)];break;case"input":case"select":case"textarea":e._wrapperState.listeners=[ReactBrowserEventEmitter.trapBubbledEvent(EventConstants.topLevelTypes.topInvalid,"invalid",t)]}}function postUpdateSelectWrapper(){ReactDOMSelect.postUpdateWrapper(this)}function validateDangerousTag(e){hasOwnProperty.call(validatedTagCache,e)||(VALID_TAG_REGEX.test(e)?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"Invalid tag: %s",e):invariant(!1),validatedTagCache[e]=!0)}function isCustomComponent(e,t){return e.indexOf("-")>=0||null!=t.is}function ReactDOMComponent(e){var t=e.type;validateDangerousTag(t),this._currentElement=e,this._tag=t.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._nativeNode=null,this._nativeParent=null,this._rootNodeID=null,this._domID=null,this._nativeContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0,"production"!==process.env.NODE_ENV&&(this._ancestorInfo=null,this._contentDebugID=null)}var _assign=require("object-assign"),AutoFocusUtils=require("./AutoFocusUtils"),CSSPropertyOperations=require("./CSSPropertyOperations"),DOMLazyTree=require("./DOMLazyTree"),DOMNamespaces=require("./DOMNamespaces"),DOMProperty=require("./DOMProperty"),DOMPropertyOperations=require("./DOMPropertyOperations"),EventConstants=require("./EventConstants"),EventPluginHub=require("./EventPluginHub"),EventPluginRegistry=require("./EventPluginRegistry"),ReactBrowserEventEmitter=require("./ReactBrowserEventEmitter"),ReactComponentBrowserEnvironment=require("./ReactComponentBrowserEnvironment"),ReactDOMButton=require("./ReactDOMButton"),ReactDOMComponentFlags=require("./ReactDOMComponentFlags"),ReactDOMComponentTree=require("./ReactDOMComponentTree"),ReactDOMInput=require("./ReactDOMInput"),ReactDOMOption=require("./ReactDOMOption"),ReactDOMSelect=require("./ReactDOMSelect"),ReactDOMTextarea=require("./ReactDOMTextarea"),ReactInstrumentation=require("./ReactInstrumentation"),ReactMultiChild=require("./ReactMultiChild"),ReactServerRenderingTransaction=require("./ReactServerRenderingTransaction"),emptyFunction=require("fbjs/lib/emptyFunction"),escapeTextContentForBrowser=require("./escapeTextContentForBrowser"),invariant=require("fbjs/lib/invariant"),isEventSupported=require("./isEventSupported"),keyOf=require("fbjs/lib/keyOf"),shallowEqual=require("fbjs/lib/shallowEqual"),validateDOMNesting=require("./validateDOMNesting"),warning=require("fbjs/lib/warning"),Flags=ReactDOMComponentFlags,deleteListener=EventPluginHub.deleteListener,getNode=ReactDOMComponentTree.getNodeFromInstance,listenTo=ReactBrowserEventEmitter.listenTo,registrationNameModules=EventPluginRegistry.registrationNameModules,CONTENT_TYPES={string:!0,number:!0},STYLE=keyOf({style:null}),HTML=keyOf({__html:null}),RESERVED_PROPS={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},DOC_FRAGMENT_TYPE=11,styleMutationWarning={},setContentChildForInstrumentation=emptyFunction;"production"!==process.env.NODE_ENV&&(setContentChildForInstrumentation=function(e){var t=this._debugID,n=t+"#text";this._contentDebugID=n,ReactInstrumentation.debugTool.onSetDisplayName(n,"#text"),ReactInstrumentation.debugTool.onSetText(n,""+e),ReactInstrumentation.debugTool.onMountComponent(n),ReactInstrumentation.debugTool.onSetChildren(t,[n])});var mediaEvents={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},omittedCloseTags={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},newlineEatingTags={listing:!0,pre:!0,textarea:!0},voidElementTags=_assign({menuitem:!0},omittedCloseTags),VALID_TAG_REGEX=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,validatedTagCache={},hasOwnProperty={}.hasOwnProperty,globalIdCounter=1;ReactDOMComponent.displayName="ReactDOMComponent",ReactDOMComponent.Mixin={mountComponent:function(e,t,n,r){this._rootNodeID=globalIdCounter++,this._domID=n._idCounter++,this._nativeParent=t,this._nativeContainerInfo=n;var o=this._currentElement.props;switch(this._tag){case"iframe":case"object":case"img":case"form":case"video":case"audio":this._wrapperState={listeners:null},e.getReactMountReady().enqueue(trapBubbledEventsLocal,this);break;case"button":o=ReactDOMButton.getNativeProps(this,o,t);break;case"input":ReactDOMInput.mountWrapper(this,o,t),o=ReactDOMInput.getNativeProps(this,o),e.getReactMountReady().enqueue(trapBubbledEventsLocal,this);break;case"option":ReactDOMOption.mountWrapper(this,o,t),o=ReactDOMOption.getNativeProps(this,o);break;case"select":ReactDOMSelect.mountWrapper(this,o,t),o=ReactDOMSelect.getNativeProps(this,o),e.getReactMountReady().enqueue(trapBubbledEventsLocal,this);break;case"textarea":ReactDOMTextarea.mountWrapper(this,o,t),o=ReactDOMTextarea.getNativeProps(this,o),e.getReactMountReady().enqueue(trapBubbledEventsLocal,this)}assertValidProps(this,o);var a,i;if(null!=t?(a=t._namespaceURI,i=t._tag):n._tag&&(a=n._namespaceURI,i=n._tag),(null==a||a===DOMNamespaces.svg&&"foreignobject"===i)&&(a=DOMNamespaces.html),a===DOMNamespaces.html&&("svg"===this._tag?a=DOMNamespaces.svg:"math"===this._tag&&(a=DOMNamespaces.mathml)),this._namespaceURI=a,"production"!==process.env.NODE_ENV){var s;null!=t?s=t._ancestorInfo:n._tag&&(s=n._ancestorInfo),s&&validateDOMNesting(this._tag,this,s),this._ancestorInfo=validateDOMNesting.updatedAncestorInfo(s,this._tag,this)}var l;if(e.useCreateElement){var u,p=n._ownerDocument;if(a===DOMNamespaces.html)if("script"===this._tag){var c=p.createElement("div"),d=this._currentElement.type;c.innerHTML="<"+d+">",u=c.removeChild(c.firstChild)}else u=p.createElement(this._currentElement.type,o.is||null);else u=p.createElementNS(a,this._currentElement.type);ReactDOMComponentTree.precacheNode(this,u),this._flags|=Flags.hasCachedChildNodes,this._nativeParent||DOMPropertyOperations.setAttributeForRoot(u),this._updateDOMProperties(null,o,e);var h=DOMLazyTree(u);this._createInitialChildren(e,o,r,h),l=h}else{var v=this._createOpenTagMarkupAndPutListeners(e,o),g=this._createContentMarkup(e,o,r);l=!g&&omittedCloseTags[this._tag]?v+"/>":v+">"+g+""}switch(this._tag){case"button":case"input":case"select":case"textarea":o.autoFocus&&e.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(optionPostMount,this)}return l},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];if(null!=o)if(registrationNameModules.hasOwnProperty(r))o&&enqueuePutListener(this,r,o,e);else{r===STYLE&&(o&&("production"!==process.env.NODE_ENV&&(this._previousStyle=o),o=this._previousStyleCopy=_assign({},t.style)),o=CSSPropertyOperations.createMarkupForStyles(o,this));var a=null;null!=this._tag&&isCustomComponent(this._tag,t)?RESERVED_PROPS.hasOwnProperty(r)||(a=DOMPropertyOperations.createMarkupForCustomAttribute(r,o)):a=DOMPropertyOperations.createMarkupForProperty(r,o),a&&(n+=" "+a)}}return e.renderToStaticMarkup?n:(this._nativeParent||(n+=" "+DOMPropertyOperations.createMarkupForRoot()),n+=" "+DOMPropertyOperations.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r="",o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&(r=o.__html);else{var a=CONTENT_TYPES[typeof t.children]?t.children:null,i=null!=a?null:t.children;if(null!=a)r=escapeTextContentForBrowser(a),"production"!==process.env.NODE_ENV&&setContentChildForInstrumentation.call(this,a);else if(null!=i){var s=this.mountChildren(i,e,n);r=s.join("")}}return newlineEatingTags[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&DOMLazyTree.queueHTML(r,o.__html);else{var a=CONTENT_TYPES[typeof t.children]?t.children:null,i=null!=a?null:t.children;if(null!=a)"production"!==process.env.NODE_ENV&&setContentChildForInstrumentation.call(this,a),DOMLazyTree.queueText(r,a);else if(null!=i)for(var s=this.mountChildren(i,e,n),l=0;l tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg , , and ) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.",this._tag):invariant(!1)}this.unmountChildren(e),ReactDOMComponentTree.uncacheNode(this),EventPluginHub.deleteAllListeners(this),ReactComponentBrowserEnvironment.unmountIDFromEnvironment(this._rootNodeID),this._rootNodeID=null,this._domID=null,this._wrapperState=null,"production"!==process.env.NODE_ENV&&this._contentDebugID&&(ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID),this._contentDebugID=null)},getPublicInstance:function(){return getNode(this)}},_assign(ReactDOMComponent.prototype,ReactDOMComponent.Mixin,ReactMultiChild.Mixin),module.exports=ReactDOMComponent; - function listen(listener) { - changeListeners.push(listener); +}).call(this,require('_process')) - if (location) { - listener(location); - } else { - var _location = getCurrentLocation(); - allKeys = [_location.key]; - updateLocation(_location); - } +},{"./AutoFocusUtils":77,"./CSSPropertyOperations":80,"./DOMLazyTree":84,"./DOMNamespaces":85,"./DOMProperty":86,"./DOMPropertyOperations":87,"./EventConstants":92,"./EventPluginHub":93,"./EventPluginRegistry":94,"./ReactBrowserEventEmitter":103,"./ReactComponentBrowserEnvironment":108,"./ReactDOMButton":114,"./ReactDOMComponentFlags":116,"./ReactDOMComponentTree":117,"./ReactDOMInput":124,"./ReactDOMOption":126,"./ReactDOMSelect":127,"./ReactDOMTextarea":130,"./ReactInstrumentation":146,"./ReactMultiChild":150,"./ReactServerRenderingTransaction":163,"./escapeTextContentForBrowser":190,"./isEventSupported":204,"./validateDOMNesting":213,"_process":32,"fbjs/lib/emptyFunction":221,"fbjs/lib/invariant":229,"fbjs/lib/keyOf":233,"fbjs/lib/shallowEqual":238,"fbjs/lib/warning":239,"object-assign":240}],116:[function(require,module,exports){ +"use strict";var ReactDOMComponentFlags={hasCachedChildNodes:1};module.exports=ReactDOMComponentFlags; - return function () { - changeListeners = changeListeners.filter(function (item) { - return item !== listener; - }); - }; - } +},{}],117:[function(require,module,exports){ +(function (process){ +"use strict";function getRenderedNativeOrTextFromComponent(e){for(var n;n=e._renderedComponent;)e=n;return e}function precacheNode(e,n){var t=getRenderedNativeOrTextFromComponent(e);t._nativeNode=n,n[internalInstanceKey]=t}function uncacheNode(e){var n=e._nativeNode;n&&(delete n[internalInstanceKey],e._nativeNode=null)}function precacheChildNodes(e,n){if(!(e._flags&Flags.hasCachedChildNodes)){var t=e._renderedChildren,r=n.firstChild;e:for(var o in t)if(t.hasOwnProperty(o)){var a=t[o],i=getRenderedNativeOrTextFromComponent(a)._domID;if(null!=i){for(;null!==r;r=r.nextSibling)if(1===r.nodeType&&r.getAttribute(ATTR_NAME)===String(i)||8===r.nodeType&&r.nodeValue===" react-text: "+i+" "||8===r.nodeType&&r.nodeValue===" react-empty: "+i+" "){precacheNode(a,r);continue e}"production"!==process.env.NODE_ENV?invariant(!1,"Unable to find element with ID %s.",i):invariant(!1)}}e._flags|=Flags.hasCachedChildNodes}}function getClosestInstanceFromNode(e){if(e[internalInstanceKey])return e[internalInstanceKey];for(var n=[];!e[internalInstanceKey];){if(n.push(e),!e.parentNode)return null;e=e.parentNode}for(var t,r;e&&(r=e[internalInstanceKey]);e=n.pop())t=r,n.length&&precacheChildNodes(r,e);return t}function getInstanceFromNode(e){var n=getClosestInstanceFromNode(e);return null!=n&&n._nativeNode===e?n:null}function getNodeFromInstance(e){if(void 0===e._nativeNode?"production"!==process.env.NODE_ENV?invariant(!1,"getNodeFromInstance: Invalid argument."):invariant(!1):void 0,e._nativeNode)return e._nativeNode;for(var n=[];!e._nativeNode;)n.push(e),e._nativeParent?void 0:"production"!==process.env.NODE_ENV?invariant(!1,"React DOM tree root should always have a node reference."):invariant(!1),e=e._nativeParent;for(;n.length;e=n.pop())precacheChildNodes(e,e._nativeNode);return e._nativeNode}var DOMProperty=require("./DOMProperty"),ReactDOMComponentFlags=require("./ReactDOMComponentFlags"),invariant=require("fbjs/lib/invariant"),ATTR_NAME=DOMProperty.ID_ATTRIBUTE_NAME,Flags=ReactDOMComponentFlags,internalInstanceKey="__reactInternalInstance$"+Math.random().toString(36).slice(2),ReactDOMComponentTree={getClosestInstanceFromNode:getClosestInstanceFromNode,getInstanceFromNode:getInstanceFromNode,getNodeFromInstance:getNodeFromInstance,precacheChildNodes:precacheChildNodes,precacheNode:precacheNode,uncacheNode:uncacheNode};module.exports=ReactDOMComponentTree; - function confirmTransitionTo(location, callback) { - _AsyncUtils.loopAsync(transitionHooks.length, function (index, next, done) { - _runTransitionHook2['default'](transitionHooks[index], location, function (result) { - if (result != null) { - done(result); - } else { - next(); - } - }); - }, function (message) { - if (getUserConfirmation && typeof message === 'string') { - getUserConfirmation(message, function (ok) { - callback(ok !== false); - }); - } else { - callback(message !== false); - } - }); - } - - var pendingLocation = undefined; - - function transitionTo(nextLocation) { - if (location && locationsAreEqual(location, nextLocation)) return; // Nothing to do. - - pendingLocation = nextLocation; - - confirmTransitionTo(nextLocation, function (ok) { - if (pendingLocation !== nextLocation) return; // Transition was interrupted. - - if (ok) { - // treat PUSH to current path like REPLACE to be consistent with browsers - if (nextLocation.action === _Actions.PUSH) { - var prevPath = createPath(location); - var nextPath = createPath(nextLocation); - - if (nextPath === prevPath && _deepEqual2['default'](location.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE; - } - - if (finishTransition(nextLocation) !== false) updateLocation(nextLocation); - } else if (location && nextLocation.action === _Actions.POP) { - var prevIndex = allKeys.indexOf(location.key); - var nextIndex = allKeys.indexOf(nextLocation.key); - - if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL. - } - }); - } - - function push(location) { - transitionTo(createLocation(location, _Actions.PUSH, createKey())); - } - - function replace(location) { - transitionTo(createLocation(location, _Actions.REPLACE, createKey())); - } - - function goBack() { - go(-1); - } - - function goForward() { - go(1); - } - - function createKey() { - return createRandomKey(keyLength); - } - - function createPath(location) { - if (location == null || typeof location === 'string') return location; - - var pathname = location.pathname; - var search = location.search; - var hash = location.hash; - - var result = pathname; - - if (search) result += search; - - if (hash) result += hash; - - return result; - } - - function createHref(location) { - return createPath(location); - } - - function createLocation(location, action) { - var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2]; - - if (typeof action === 'object') { - process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'The state (2nd) argument to history.createLocation is deprecated; use a ' + 'location descriptor instead') : undefined; - - if (typeof location === 'string') location = _PathUtils.parsePath(location); - - location = _extends({}, location, { state: action }); - - action = key; - key = arguments[3] || createKey(); - } - - return _createLocation3['default'](location, action, key); - } - - // deprecated - function setState(state) { - if (location) { - updateLocationState(location, state); - updateLocation(location); - } else { - updateLocationState(getCurrentLocation(), state); - } - } - - function updateLocationState(location, state) { - location.state = _extends({}, location.state, state); - saveState(location.key, location.state); - } - - // deprecated - function registerTransitionHook(hook) { - if (transitionHooks.indexOf(hook) === -1) transitionHooks.push(hook); - } - - // deprecated - function unregisterTransitionHook(hook) { - transitionHooks = transitionHooks.filter(function (item) { - return item !== hook; - }); - } - - // deprecated - function pushState(state, path) { - if (typeof path === 'string') path = _PathUtils.parsePath(path); - - push(_extends({ state: state }, path)); - } - - // deprecated - function replaceState(state, path) { - if (typeof path === 'string') path = _PathUtils.parsePath(path); - - replace(_extends({ state: state }, path)); - } - - return { - listenBefore: listenBefore, - listen: listen, - transitionTo: transitionTo, - push: push, - replace: replace, - go: go, - goBack: goBack, - goForward: goForward, - createKey: createKey, - createPath: createPath, - createHref: createHref, - createLocation: createLocation, - - setState: _deprecate2['default'](setState, 'setState is deprecated; use location.key to save state instead'), - registerTransitionHook: _deprecate2['default'](registerTransitionHook, 'registerTransitionHook is deprecated; use listenBefore instead'), - unregisterTransitionHook: _deprecate2['default'](unregisterTransitionHook, 'unregisterTransitionHook is deprecated; use the callback returned from listenBefore instead'), - pushState: _deprecate2['default'](pushState, 'pushState is deprecated; use push instead'), - replaceState: _deprecate2['default'](replaceState, 'replaceState is deprecated; use replace instead') - }; -} - -exports['default'] = createHistory; -module.exports = exports['default']; }).call(this,require('_process')) -},{"./Actions":6,"./AsyncUtils":7,"./PathUtils":11,"./createLocation":16,"./deprecate":18,"./runTransitionHook":19,"_process":32,"deep-equal":1,"warning":250}],16:[function(require,module,exports){ +},{"./DOMProperty":86,"./ReactDOMComponentFlags":116,"_process":32,"fbjs/lib/invariant":229}],118:[function(require,module,exports){ (function (process){ -'use strict'; - -exports.__esModule = 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; }; +"use strict";function ReactDOMContainerInfo(e,n){var t={_topLevelWrapper:e,_idCounter:1,_ownerDocument:n?n.nodeType===DOC_NODE_TYPE?n:n.ownerDocument:null,_node:n,_tag:n?n.nodeName.toLowerCase():null,_namespaceURI:n?n.namespaceURI:null};return"production"!==process.env.NODE_ENV&&(t._ancestorInfo=n?validateDOMNesting.updatedAncestorInfo(null,t._tag,null):null),t}var validateDOMNesting=require("./validateDOMNesting"),DOC_NODE_TYPE=9;module.exports=ReactDOMContainerInfo; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - -var _warning = require('warning'); +}).call(this,require('_process')) -var _warning2 = _interopRequireDefault(_warning); +},{"./validateDOMNesting":213,"_process":32}],119:[function(require,module,exports){ +(function (process){ +"use strict";function emitEvent(e,o,n,r,t,a){"production"!==process.env.NODE_ENV&&eventHandlers.forEach(function(l){try{l[e]&&l[e](o,n,r,t,a)}catch(v){"production"!==process.env.NODE_ENV?warning(!handlerDoesThrowForEvent[e],"exception thrown by devtool while handling %s: %s",e,v.message):void 0,handlerDoesThrowForEvent[e]=!0}})}var ReactDOMUnknownPropertyDevtool=require("./ReactDOMUnknownPropertyDevtool"),warning=require("fbjs/lib/warning"),eventHandlers=[],handlerDoesThrowForEvent={},ReactDOMDebugTool={addDevtool:function(e){eventHandlers.push(e)},removeDevtool:function(e){for(var o=0;o"},receiveComponent:function(){},getNativeNode:function(){return ReactDOMComponentTree.getNodeFromInstance(this)},unmountComponent:function(){ReactDOMComponentTree.uncacheNode(this)}}),module.exports=ReactDOMEmptyComponent; -function createLocation() { - var location = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0]; - var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1]; - var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2]; +},{"./DOMLazyTree":84,"./ReactDOMComponentTree":117,"object-assign":240}],121:[function(require,module,exports){ +(function (process){ +"use strict";function createDOMFactory(e){return"production"!==process.env.NODE_ENV?ReactElementValidator.createFactory(e):ReactElement.createFactory(e)}var ReactElement=require("./ReactElement"),ReactElementValidator=require("./ReactElementValidator"),mapObject=require("fbjs/lib/mapObject"),ReactDOMFactories=mapObject({a:"a",abbr:"abbr",address:"address",area:"area",article:"article",aside:"aside",audio:"audio",b:"b",base:"base",bdi:"bdi",bdo:"bdo",big:"big",blockquote:"blockquote",body:"body",br:"br",button:"button",canvas:"canvas",caption:"caption",cite:"cite",code:"code",col:"col",colgroup:"colgroup",data:"data",datalist:"datalist",dd:"dd",del:"del",details:"details",dfn:"dfn",dialog:"dialog",div:"div",dl:"dl",dt:"dt",em:"em",embed:"embed",fieldset:"fieldset",figcaption:"figcaption",figure:"figure",footer:"footer",form:"form",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",head:"head",header:"header",hgroup:"hgroup",hr:"hr",html:"html",i:"i",iframe:"iframe",img:"img",input:"input",ins:"ins",kbd:"kbd",keygen:"keygen",label:"label",legend:"legend",li:"li",link:"link",main:"main",map:"map",mark:"mark",menu:"menu",menuitem:"menuitem",meta:"meta",meter:"meter",nav:"nav",noscript:"noscript",object:"object",ol:"ol",optgroup:"optgroup",option:"option",output:"output",p:"p",param:"param",picture:"picture",pre:"pre",progress:"progress",q:"q",rp:"rp",rt:"rt",ruby:"ruby",s:"s",samp:"samp",script:"script",section:"section",select:"select",small:"small",source:"source",span:"span",strong:"strong",style:"style",sub:"sub",summary:"summary",sup:"sup",table:"table",tbody:"tbody",td:"td",textarea:"textarea",tfoot:"tfoot",th:"th",thead:"thead",time:"time",title:"title",tr:"tr",track:"track",u:"u",ul:"ul","var":"var",video:"video",wbr:"wbr",circle:"circle",clipPath:"clipPath",defs:"defs",ellipse:"ellipse",g:"g",image:"image",line:"line",linearGradient:"linearGradient",mask:"mask",path:"path",pattern:"pattern",polygon:"polygon",polyline:"polyline",radialGradient:"radialGradient",rect:"rect",stop:"stop",svg:"svg",text:"text",tspan:"tspan"},createDOMFactory);module.exports=ReactDOMFactories; - var _fourthArg = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3]; +}).call(this,require('_process')) - if (typeof location === 'string') location = _PathUtils.parsePath(location); +},{"./ReactElement":136,"./ReactElementValidator":137,"_process":32,"fbjs/lib/mapObject":234}],122:[function(require,module,exports){ +"use strict";var ReactDOMFeatureFlags={useCreateElement:!0};module.exports=ReactDOMFeatureFlags; - if (typeof action === 'object') { - process.env.NODE_ENV !== 'production' ? _warning2['default'](false, 'The state (2nd) argument to createLocation is deprecated; use a ' + 'location descriptor instead') : undefined; +},{}],123:[function(require,module,exports){ +"use strict";var DOMChildrenOperations=require("./DOMChildrenOperations"),ReactDOMComponentTree=require("./ReactDOMComponentTree"),ReactDOMIDOperations={dangerouslyProcessChildrenUpdates:function(e,r){var t=ReactDOMComponentTree.getNodeFromInstance(e);DOMChildrenOperations.processUpdates(t,r)}};module.exports=ReactDOMIDOperations; - location = _extends({}, location, { state: action }); +},{"./DOMChildrenOperations":83,"./ReactDOMComponentTree":117}],124:[function(require,module,exports){ +(function (process){ +"use strict";function forceUpdateIfMounted(){this._rootNodeID&&ReactDOMInput.updateWrapper(this)}function warnIfValueIsNull(e){null==e||null!==e.value||didWarnValueNull||("production"!==process.env.NODE_ENV?warning(!1,"`value` prop on `input` should not be null. Consider using the empty string to clear the component or `undefined` for uncontrolled components."):void 0,didWarnValueNull=!0)}function _handleChange(e){var n=this._currentElement.props,t=LinkedValueUtils.executeOnChange(n,e);ReactUpdates.asap(forceUpdateIfMounted,this);var o=n.name;if("radio"===n.type&&null!=o){for(var r=ReactDOMComponentTree.getNodeFromInstance(this),a=r;a.parentNode;)a=a.parentNode;for(var l=a.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),i=0;i instead of setting `selected` on