mirror of
https://github.com/BorysLevytskyi/BitwiseCmd.git
synced 2025-12-19 19:22:45 +01:00
2 lines
39 KiB
JavaScript
2 lines
39 KiB
JavaScript
(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[,,,,,,,,function(e,t,n){"use strict";var a=n(1),i=n(2),r=[{regex:/^-?\d+$/,radix:10,base:"dec",prefix:"^$"},{regex:/^-?0x[0-9,a-f]+$/i,radix:16,base:"hex",prefix:/0x/i},{regex:/^-?0b[0-1]+$/i,radix:2,base:"bin",prefix:/0b/i}],s=new(function(){function e(t){Object(a.a)(this,e),this.parsers=void 0,this.parsers=t}return Object(i.a)(e,[{key:"parse",value:function(e){var t=this;return this.parsers.map(function(n){return t.applyParser(n,e)}).reduce(function(e,t){return e||t})}},{key:"parseOperator",value:function(e){var t=e.match(e);return null==t||0==t.length?null:t[0]}},{key:"applyParser",value:function(e,t){return e.regex.test(t)?{value:parseInt(t.replace(e.prefix,""),e.radix),base:e.base,input:t}:null}}]),e}())(r);n.d(t,"a",function(){return o});var l=1,o=function(){function e(t,n){Object(a.a)(this,e),this.id=void 0,this.value=void 0,this.base=void 0,this.lengthInBits=void 0,this.isExpression=void 0,this.id=l++,this.value=t,this.base=n||"dec",this.lengthInBits=e.getBitLength(this.value),this.isExpression=!1}return Object(i.a)(e,[{key:"getLengthInBits",value:function(){return this.value<0?32:Math.floor(Math.log(this.value)/Math.log(2))+1}},{key:"getOtherBase",value:function(e){switch(e||this.base){case"dec":case"bin":return"hex";case"hex":return"dec";default:throw new Error(e+" kind doesn't have opposite kind")}}},{key:"toString",value:function(t){return e.toBaseString(this.value,t||this.base)}},{key:"toOtherKindString",value:function(){return this.toString(this.getOtherBase())}},{key:"toDecimalString",value:function(){return this.toString("dec")}},{key:"toHexString",value:function(){return this.toString("hex")}},{key:"toBinaryString",value:function(){return this.toString("bin")}},{key:"setValue",value:function(t){this.value=t,this.lengthInBits=e.getBitLength(t)}},{key:"evaluate",value:function(){return this}},{key:"getUnderlyingOperand",value:function(){return this}}],[{key:"getBitLength",value:function(e){return Math.floor(Math.log(e)/Math.log(2))+1}},{key:"getBase",value:function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}}},{key:"create",value:function(t,n){return new e(t,n||"dec")}},{key:"parse",value:function(t){var n=s.parse(t);if(!n)throw new Error(t+" is not a valid number");return new e(n.value,n.base)}},{key:"toBaseString",value:function(e,t){switch(t){case"hex":var n=Math.abs(e).toString(16);return e>=0?"0x"+n:"-0x"+n;case"bin":return(e>>>0).toString(2);case"dec":return e.toString(10);default:throw new Error("Unexpected kind: "+t)}}},{key:"toHexString",value:function(e){return 0===e.indexOf("-")?"-0x"+e.substr(1):"0x"+e}}]),e}()},function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,"a",function(){return ExpressionOperand});var D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1),D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2),_NumericOperand__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(8),ExpressionOperand=function(){function ExpressionOperand(e,t,n){Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.a)(this,ExpressionOperand),this.expressionString=void 0,this.operand=void 0,this.sign=void 0,this.isExpression=void 0,this.isShiftExpression=void 0,this.isNotExpression=void 0,this.expressionString=e,this.operand=t,this.sign=n,this.isExpression=!0,this.isShiftExpression=this.sign.indexOf("<")>=0||this.sign.indexOf(">")>=0,this.isNotExpression="~"===this.sign}return Object(D_MyStuff_Pet_BitwiseCmd_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__.a)(ExpressionOperand,[{key:"evaluate",value:function evaluate(operand){if(operand instanceof ExpressionOperand)throw new Error("value shouldnt be expression");var evaluatedOperand=this.operand.evaluate(),str="";if("~"==this.sign)str="~"+evaluatedOperand.value;else{if(null==operand)throw new Error("Other is required for expression: "+this.expressionString);str=operand.value+this.sign+evaluatedOperand.value}return _NumericOperand__WEBPACK_IMPORTED_MODULE_2__.a.create(eval(str),evaluatedOperand.base)}},{key:"getUnderlyingOperand",value:function(){return this.operand.getUnderlyingOperand()}},{key:"toString",value:function(){return this.sign+this.operand.toString()}}]),ExpressionOperand}()},,,,,,,,,,,function(e,t,n){e.exports=n(39)},,function(e,t,n){},,,,,,function(e,t,n){},,,,function(e,t,n){},function(e,t,n){},function(e,t,n){},,,function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";n.r(t);var a=n(1),i=n(2),r=function(e){return"object"==typeof e&&!(e instanceof Array)&&e instanceof Object},s=function(e){return"function"==typeof e},l=function(e){return"string"==typeof e},o=n(4),u=n.n(o),c=new(function(){function e(){Object(a.a)(this,e),this.debugMode=void 0,this.handlers=void 0,this.errorHandler=void 0,this.handlers=[],this.debugMode=!1,this.errorHandler=null}return Object(i.a)(e,[{key:"execute",value:function(e){u.a.debug("Executing command: ".concat(e));var t=e.trim().toLowerCase(),n=this.findHandler(t);if(null!=n)if(this.debugMode)this.invokeHandler(t,n);else try{this.invokeHandler(t,n)}catch(a){this.handleError(t,a)}else u.a.debug("Handled is not found for command: ".concat(e)),this.handleError(t,new Error("Unsupported expression: "+t.trim()))}},{key:"onError",value:function(e){this.errorHandler=e}},{key:"command",value:function(e,t){var n=this.createHandler(e,t);null!=n?s(n.canHandle)?s(n.handle)?this.handlers.push(n):console.warn('handler is missing "handle" function. registration denied.'):console.warn('handler is missing "canHandle" function. registration denied.'):console.warn("unexpected set of arguments: ",JSON.stringify(arguments))}},{key:"createHandler",value:function(e,t){return r(e)?e:l(e)?{canHandle:function(t){return t===e},handle:t}:null}},{key:"findHandler",value:function(e){return this.handlers.filter(function(t){return t.canHandle(e)})[0]}},{key:"invokeHandler",value:function(e,t){var n=t.handle({input:e});null!=n&&u.a.debug(n)}},{key:"handleError",value:function(e,t){this.debugMode&&console.error(e,t),null!=this.errorHandler&&this.errorHandler(e,t)}}]),e}()),m=n(6),d=n(5),p=n(7),h=n(0),f=n.n(h),g=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(m.a)(this,Object(d.a)(t).call(this,e))).history=void 0,n.historyIndex=void 0,n.nameInput=void 0,n.nameInput=null,n.history=[],n.historyIndex=-1,n}return Object(p.a)(t,e),Object(i.a)(t,[{key:"componentDidMount",value:function(){null!=this.nameInput&&this.nameInput.focus()}},{key:"render",value:function(){var e=this;return f.a.createElement("input",{id:"in",type:"text",ref:function(t){e.nameInput=t},onKeyUp:function(t){return e.onKeyUp(t)},onKeyDown:function(t){return e.onKeyDown(t)},className:"expressionInput mono",placeholder:"type expression like '1>>2' or 'help' "})}},{key:"onKeyUp",value:function(e){var t=e.target;if(13==e.keyCode&&0!=t.value.trim().length){var n=t.value;this.history.unshift(n),this.historyIndex=-1,t.value="",this.props.onCommandEntered(n)}}},{key:"onKeyDown",value:function(e){if(38==e.keyCode){var t=this.historyIndex+1;return this.history.length>t&&(e.target.value=this.history[t],this.historyIndex=t),void e.preventDefault()}40==e.keyCode&&(this.historyIndex>0&&(e.target.value=this.history[--this.historyIndex]),e.preventDefault())}}]),t}(f.a.Component),v=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(d.a)(t).apply(this,arguments))}return Object(p.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){return f.a.createElement("div",{className:"result"},f.a.createElement("div",{className:"input mono"},f.a.createElement("span",{className:"cur"},">"),this.props.input,f.a.createElement("a",{className:"hashLink",title:"Link for this expression",href:window.location.pathname+"#"+this.props.inputHash},"#")),f.a.createElement("div",{className:"content"},this.props.children))}}]),t}(f.a.Component);n(22);var b=function(e){var t=[],n=e.appState;return"prod"!=e.appState.env&&t.push(n.env),e.appState.debugMode&&t.push("debug"),"false"===localStorage.getItem("TrackAnalytics")&&t.push("notrack"),0==t.length?null:f.a.createElement("div",{className:"debug-indicators"},t.map(function(e){return f.a.createElement("span",{title:e},"[",e.substring(0,1),"]\xa0")}))},E={encodeHash:function(e){return encodeURIComponent(e.trim().replace(/\s/g,","))},decodeHash:function(e){return decodeURIComponent(e.replace(/^\#/,"")).replace(/,/g," ")},getArgs:function(e){var t,n=this.decodeHash(e),a=[];return(t=n,t.split("||").filter(function(e){return e.length>0})).forEach(function(e){a.push(e)}),a}};var y=n(12),x=n(17),B=n(13);n(28);var w=function(){return f.a.createElement("ul",{className:"top-links"},f.a.createElement("li",null,f.a.createElement("a",{href:"https://github.com/BorisLevitskiy/BitwiseCmd"},f.a.createElement(y.a,{className:"icon",icon:B.a,size:"lg"}),"Project on GitHub")),f.a.createElement("li",null,f.a.createElement("a",{href:"https://twitter.com/BitwiseCmd"},f.a.createElement(y.a,{className:"icon",icon:B.b,size:"lg"}),f.a.createElement("span",{className:"link-text"},"Twitter"))),f.a.createElement("li",null,f.a.createElement("a",{href:"mailto:bitwisecmd@gmail.com?subject=Feedback"},f.a.createElement(y.a,{className:"icon",icon:x.a,size:"lg"}),f.a.createElement("span",{className:"link-text"},"Send Feedback"))))},k=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(d.a)(t).apply(this,arguments))}return Object(p.a)(t,e),Object(i.a)(t,[{key:"componentWillMount",value:function(){var e=this;this.refresh(),this.props.appState.onChange(function(){return e.refresh()})}},{key:"refresh",value:function(){this.setState(this.props.appState)}},{key:"getIndicator",value:function(e){return e?"on":"off"}},{key:"getResultViews",value:function(){var e=this;return this.state.commandResults.map(function(t,n){return f.a.createElement(v,{key:t.key,input:t.input,inputHash:E.encodeHash(t.input),appState:e.props.appState},t.view)})}},{key:"toggleEmphasizeBytes",value:function(){this.props.appState.toggleEmphasizeBytes()}},{key:"render",value:function(){var e=this;return f.a.createElement("div",{className:"app-root ".concat(this.state.uiTheme)},f.a.createElement(b,{appState:this.props.appState}),f.a.createElement("div",{className:"header"},f.a.createElement("h1",null,"Bitwise",f.a.createElement("span",{className:"header-cmd"},"Cmd")),f.a.createElement(w,null)),f.a.createElement("div",{className:"expressionInput-container"},f.a.createElement(g,{onCommandEntered:function(e){return c.execute(e)}}),f.a.createElement("span",{className:"configPnl"},f.a.createElement("span",{id:"emphasizeBytes","data-cmd":"em",className:"indicator "+this.getIndicator(this.state.emphasizeBytes),title:"Toggle Emphasize Bytes",onClick:function(){return e.toggleEmphasizeBytes()}},"[em]"))),f.a.createElement("div",{id:"output"},this.getResultViews()))}}]),t}(f.a.Component),O=n(18),_=n.n(O);n(32);var S=function(e){return f.a.createElement("div",{className:"result"},f.a.createElement("div",{className:"error"},e.errorMessage))},N={formatString:function(e,t){return e.toString(function(e){switch(e){case"bin":return 2;case"hex":return 16;case"dec":return 10}throw new Error("Unsupported kind: "+e)}(t||"bin"))},padLeft:function(e,t,n){var a=Array.prototype.slice.call(e);n=n||"0";if(null==t)return e;for(;t>a.length;)a.unshift(n);return a.join("")},bin:function(e){return this.formatString(e,"bin")},emBin:function(e){return this.padLeft(this.bin(e),8,"0")}};var C=N,I=N.emBin,j=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(d.a)(t).apply(this,arguments))}return Object(p.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){return f.a.createElement("span",{className:this.props.className},this.getChildren())}},{key:"onBitClick",value:function(e,t){if(this.props.allowFlipBits&&this.props.onFlipBit){this.props.onFlipBit;var n=this.props.binaryString.split("");n[e]="0"==n[e]?"1":"0";var a=n.join("");this.props.onFlipBit({index:e,binaryString:this.props.binaryString,$event:t,newBinaryString:a})}}},{key:"getChildren",value:function(){var e=this.createBits(this.props.binaryString.split(""));return this.props.emphasizeBytes?this.splitIntoBytes(e):e}},{key:"createBits",value:function(e){var t=this,n=this.props.allowFlipBits||!1?" flipable":"";return e.map(function(e,a){var i="1"==e?"one".concat(n):"zero".concat(n);return f.a.createElement("span",{className:i,key:a,onClick:function(e){return t.onBitClick(a,e)}},e)})}},{key:"splitIntoBytes",value:function(e){for(var t=[],n=0;e.length>0;)t.push(f.a.createElement("span",{key:n++,className:"byte"},e.splice(0,8)));return t}}]),t}(f.a.Component);n(33);var M=function(e){function t(){return Object(a.a)(this,t),Object(m.a)(this,Object(d.a)(t).apply(this,arguments))}return Object(p.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){var e=this;return f.a.createElement("table",{className:"expression"},f.a.createElement("tbody",null,this.props.ipAddresses.map(function(t,n){return f.a.createElement("tr",{key:n},f.a.createElement("td",{className:"label"},f.a.createElement("strong",null,t.toString())),f.a.createElement("td",{className:"bin"},e.bin(t.firstByte,1,t),f.a.createElement("span",{className:"soft"},"."),e.bin(t.secondByte,2,t),f.a.createElement("span",{className:"soft"},"."),e.bin(t.thirdByte,3,t),f.a.createElement("span",{className:"soft"},"."),e.bin(t.fourthByte,4,t)))})))}},{key:"bin",value:function(e,t,n){var a,i=this;return f.a.createElement(j,{binaryString:(a=e,C.padLeft(C.formatString(a,"bin"),8,"0")),key:t,emphasizeBytes:!1,allowFlipBits:!0,className:"octet-".concat(t),onFlipBit:function(e){return i.onFlippedBit(e.newBinaryString,t,n)}})}},{key:"onFlippedBit",value:function(e,t,n){n.setOctet(t,parseInt(e,2)),this.forceUpdate()}}]),t}(f.a.Component),R=function(){function e(t,n){Object(a.a)(this,e),this.maskBits=void 0,this.ipAddress=void 0,this.ipAddress=t,this.maskBits=n}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.ipAddress.toString(),"/").concat(this.maskBits)}}]),e}(),z=function(){function e(t,n,i,r){Object(a.a)(this,e),this.firstByte=void 0,this.secondByte=void 0,this.thirdByte=void 0,this.fourthByte=void 0,this.firstByte=t,this.secondByte=n,this.thirdByte=i,this.fourthByte=r}return Object(i.a)(e,[{key:"toString",value:function(){return"".concat(this.firstByte,".").concat(this.secondByte,".").concat(this.thirdByte,".").concat(this.fourthByte)}},{key:"toBinaryString",value:function(){return"".concat(I(this.firstByte),").").concat(I(this.secondByte),".").concat(I(this.thirdByte),".").concat(I(this.fourthByte))}},{key:"clone",value:function(){return new e(this.firstByte,this.secondByte,this.thirdByte,this.fourthByte)}},{key:"setOctet",value:function(e,t){switch(e){case 1:this.firstByte=t;break;case 2:this.secondByte=t;break;case 3:this.thirdByte=t;break;case 4:this.fourthByte=t}}}]),e}(),D=function(){function e(t){Object(a.a)(this,e),this.input=void 0,this.input=t}return Object(i.a)(e,[{key:"getAdressSpaceSize",value:function(){var e=32-this.input.maskBits;return Math.pow(2,e)-2}},{key:"toString",value:function(){return this.input.toString()}}]),e}(),L={parse:function(e){var t=this,n=this.parseCommand(e),a=this.getMaches(n.nextInput),i=a.filter(function(e){return null!=e.matches}),r=a.filter(function(e){return null==e.matches});if(0==i.length)return null;if(r.length>0)return new F("Value(s) ".concat(r.map(function(e){return e.input}).join(",")," was not recognized as valid ip address or ip address with a subnet mask"));var s=a.map(function(e){return t.parseSingle(e.matches,e.input)}),l=s.filter(function(e){return e instanceof F});if(l.length>0)return l[0];if(null!=n.command){var o=this.createSubnetDefinition(s);return o}return s},parseCommand:function(e){return e.startsWith("subnet")?{command:"subnet",nextInput:e.substring("subnet".length)}:{command:null,nextInput:e}},getMaches:function(e){return e.replace(/[\t\s]+/g," ").split(" ").filter(function(e){return e.length>0}).map(function(e){var t=/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})(\/\d+)?$/.exec(e);return null==t||0===t.length?{matches:null,input:e}:{matches:t,input:e}})},parseSingle:function(e,t){var n=function(e){return e<0||e>255},a=parseInt(e[1]),i=parseInt(e[2]),r=parseInt(e[3]),s=parseInt(e[4]);if(n(a)||n(i)||n(r)||n(s))return new F("".concat(t," value doesn't fall within the valid range of the IP address space"));var l=new z(a,i,r,s);if(e[5]){var o=e[5].substr(1),u=parseInt(o);return u>32?new F("Subnet mask value in ".concat(t," is out of range")):new R(l,u)}return l},createSubnetDefinition:function(e){if(1!=e.length)return new F("Incorrect network definition");var t=e[0];return t instanceof R?new D(t):new F("Network definition requires subnet mask")}},F=function e(t){Object(a.a)(this,e),this.errorMessage=void 0,this.errorMessage=t},H=L;n(34);function A(e,t){return 0==t?e:e&Math.pow(2,8-t)-1<<t}function P(e,t){return 0==t?e:e|Math.pow(2,t)-1}function U(e){return 255<<8-e&255}function T(e){var t=U,n=e.maskBits;return n<=8?new z(t(n),0,0,0):n<=16?new z(255,t(n-8),0,0):n<=24?new z(255,255,t(n-16),0):new z(255,255,255,t(n-24))}function K(e){return V(e,P,255)}function V(e,t,n){var a=function(e,n){return t(n,8-e)},i=e.ipAddress,r=e.maskBits;return r<=8?new z(a(r,i.firstByte),n,n,n):r<=16?new z(i.firstByte,a(r-8,i.secondByte),n,n):r<=24?new z(i.firstByte,i.secondByte,a(r-16,i.thirdByte),n):new z(i.firstByte,i.secondByte,i.thirdByte,a(r-24,i.fourthByte))}var J=function(e){var t=e.ip;return f.a.createElement(f.a.Fragment,null,f.a.createElement(j,{binaryString:C.emBin(t.firstByte)}),f.a.createElement("span",{className:"soft"},"."),f.a.createElement(j,{binaryString:C.emBin(t.secondByte)}),f.a.createElement("span",{className:"soft"},"."),f.a.createElement(j,{binaryString:C.emBin(t.thirdByte)}),f.a.createElement("span",{className:"soft"},"."),f.a.createElement(j,{binaryString:C.emBin(t.fourthByte)}))};function $(e){var t=e.ip,n=e.descr;return f.a.createElement("tr",null,f.a.createElement("td",{className:"description soft"},n),f.a.createElement("td",{className:"ip"},t.toString()),f.a.createElement("td",{className:"class-part"},f.a.createElement(J,{ip:t})))}var W=function(e){var t,n=e.subnet;return f.a.createElement(f.a.Fragment,null,f.a.createElement("table",{className:"expression subnet-view"},f.a.createElement("tbody",null,f.a.createElement($,{ip:n.input.ipAddress,descr:"Address"}),f.a.createElement($,{ip:(t=n.input,V(t,A,0)),descr:"Network"}),f.a.createElement($,{ip:T(n.input),descr:"Net Mask"}),f.a.createElement($,{ip:K(n.input),descr:"Broadcast"}),f.a.createElement("tr",null,f.a.createElement("td",{className:"description soft"},f.a.createElement("span",null,"Network Size")),f.a.createElement("td",null,n.getAdressSpaceSize())))),f.a.createElement("div",null))},q={setup:function(e,t){t.command({canHandle:function(e){return null!=H.parse(e)},handle:function(t){var n=H.parse(t.input);if(null!=n)if(n instanceof F)e.addCommandResult(t.input,f.a.createElement(S,{errorMessage:n.errorMessage}));else if(n instanceof D)e.addCommandResult(t.input,f.a.createElement(W,{subnet:n}));else{var a=[];n.forEach(function(e){e instanceof R?(a.push(e.ipAddress),a.push(T(e))):e instanceof z&&a.push(e)}),e.addCommandResult(t.input,f.a.createElement(M,{ipAddresses:a}))}}}),u.a.debug()}},G=n(8),Y=n(9),X=function(){function e(t,n){Object(a.a)(this,e),this.numbers=void 0,this.expressionString=void 0,this.maxBitsLength=void 0,this.expressionString=t,this.numbers=n,this.maxBitsLength=n.map(function(e){return e.lengthInBits}).reduce(function(e,t){return e>=t?e:t},0)}return Object(i.a)(e,[{key:"toString",value:function(){return this.numbers.map(function(e){return e.value.toString()}).join(" ")}}]),e}(),Q=function e(t,n){Object(a.a)(this,e),this.expressionString=void 0,this.expressionItems=void 0,this.expressionString=t,this.expressionItems=n},Z=function(){function e(){Object(a.a)(this,e),this.factories=void 0,this.factories=[]}return Object(i.a)(e,[{key:"canParse",value:function(e){for(var t=e.replace(/^\s+|\s+$/,""),n=this.factories.length-1;n>=0;n--)if(!0===this.factories[n].canCreate(t))return!0;return!1}},{key:"parse",value:function(e){for(var t,n=e.replace(/^\s+|\s+$/,""),a=0,i=this.factories.length;a<i;a++)if(1==(t=this.factories[a]).canCreate(n))return t.create(n);return null}},{key:"parseOperand",value:function(e){return G.a.parse(e)}},{key:"createOperand",value:function(e,t){return G.a.create(e,t)}},{key:"addFactory",value:function(e){this.factories.push(e)}}]),e}(),ee=function(){function e(){Object(a.a)(this,e),this.regex=void 0,this.regex=/^(-?(?:\d+|0x[\d,a-f]+|0b[0-1])\s?)+$/}return Object(i.a)(e,[{key:"canCreate",value:function(e){return this.regex.test(e)}},{key:"create",value:function(e){var t=this.regex.exec(e),n=[];return(e=t.input).split(" ").forEach(function(e){e.trim().length>0&&n.push(G.a.parse(e.trim()))}),new X(e,n)}}]),e}(),te=function(){function e(){Object(a.a)(this,e),this.fullRegex=void 0,this.regex=void 0,this.fullRegex=/^((<<|>>|>>>|\||\&|\^)?(~?-?([b,x,a-f,0-9]+)))+$/,this.regex=/(<<|>>|>>>|\||\&|\^)?(~?-?(?:[b,x,a-f,0-9]+))/g}return Object(i.a)(e,[{key:"canCreate",value:function(e){return this.fullRegex.lastIndex=0,this.fullRegex.test(this.normalizeString(e))}},{key:"create",value:function(e){for(var t,n=[],a=this.normalizeString(e);null!=(t=this.regex.exec(a));)n.push(this.parseMatch(t));return new Q(a,n)}},{key:"parseMatch",value:function(e){var t=e[0],n=e[1],a=e[2],i=null;return i=0==a.indexOf("~")?new Y.a(a,G.a.parse(a.substring(1)),"~"):G.a.parse(a),null==n?i:new Y.a(t,i,n)}},{key:"normalizeString",value:function(e){return e.replace(/\s+/g,"")}}]),e}(),ne=new Z;ne.addFactory(new ee),ne.addFactory(new te);var ae=function(){function e(t){var n=t.emphasizeBytes,i=void 0!==n&&n,r=t.allowFlipBits,s=void 0!==r&&r;Object(a.a)(this,e),this.emphasizeBytes=void 0,this.items=void 0,this.maxNumberOfBits=void 0,this.allowFlipBits=void 0,this.emphasizeBytes=i,this.items=[],this.maxNumberOfBits=0,this.allowFlipBits=!0===s}return Object(i.a)(e,[{key:"addOperandRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"",css:"",expressionItem:e,allowFlipBits:this.allowFlipBits,label:""})}},{key:"addExpressionOperandRow",value:function(e){var t=e.isNotExpression?e.evaluate():e.getUnderlyingOperand();this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign,css:"",label:this.getLabel(t),expressionItem:e.operand,allowFlipBits:this.allowFlipBits})}},{key:"addShiftExpressionResultRow",value:function(e,t){this.maxNumberOfBits=Math.max(t.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:e.sign+e.operand.toString(),css:"expression-result",expressionItem:t,allowFlipBits:!1,label:""})}},{key:"addExpressionResultRow",value:function(e){this.maxNumberOfBits=Math.max(e.getLengthInBits(),this.maxNumberOfBits),this.items.push({sign:"=",css:"expression-result",expressionItem:e,allowFlipBits:!1,label:""})}},{key:"getLabel",value:function(e){return"bin"==e.base?e.toString("dec"):e.toString()}}],[{key:"buildListOfNumbers",value:function(t,n){var a=new e(n);return t.numbers.forEach(function(e){return a.addOperandRow(e)}),a.maxNumberOfBits=e.getNumberOfBits(a.maxNumberOfBits,a.emphasizeBytes),a}},{key:"buildMultiple",value:function(t,n){t.expressionItems[0];for(var a,i=0,r=t.expressionItems.length,s=new e(n),l=null;i<r;i++)if((a=t.expressionItems[i])instanceof G.a)s.addOperandRow(a),l=a;else{var o=a;if(o.isNotExpression){s.addExpressionOperandRow(o);var u=o.evaluate();s.addExpressionResultRow(u),l=u}else o.isShiftExpression?(l=o.evaluate(l),s.addShiftExpressionResultRow(o,l)):(l=o.evaluate(l),s.addExpressionOperandRow(o),s.addExpressionResultRow(l))}return s.maxNumberOfBits=e.getNumberOfBits(s.maxNumberOfBits,s.emphasizeBytes),s}},{key:"buildNot",value:function(t,n){var a=new e(n);return a.addExpressionOperandRow(t),a.addExpressionResultRow(t.evaluate()),a.maxNumberOfBits=e.getNumberOfBits(a.maxNumberOfBits,a.emphasizeBytes),a}},{key:"createModel",value:function(t,n){if(t instanceof X)return e.buildListOfNumbers(t,{emphasizeBytes:n,allowFlipBits:!0});if(t instanceof Q)return e.buildMultiple(t,{emphasizeBytes:n,allowFlipBits:!1});throw new Error("Cannot build BitwiseExpressionViewModel out of expression "+t)}}]),e}();ae.getNumberOfBits=function(e,t){return t&&e%8!=0?e<8?8:e-e%8+8:e};var ie=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(m.a)(this,Object(d.a)(t).call(this,e))).state={},n}return Object(p.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){var e=this.getRows();return e?f.a.createElement("table",{className:"expression"},f.a.createElement("tbody",null,e)):null}},{key:"getRows",value:function(){var e=this,t=ae.createModel(this.props.expression,this.props.emphasizeBytes);return t.items.map(function(n,a){return f.a.createElement(re,{key:a,sign:n.sign,css:n.css,allowFlipBits:n.allowFlipBits,expressionItem:n.expressionItem,emphasizeBytes:e.props.emphasizeBytes,maxNumberOfBits:t.maxNumberOfBits,onBitFlipped:function(){return e.onBitFlipped()}})})}},{key:"onBitFlipped",value:function(){this.forceUpdate()}}]),t}(f.a.Component),re=function(e){function t(e){var n;return Object(a.a)(this,t),(n=Object(m.a)(this,Object(d.a)(t).call(this,e))).state={operand:null},n}return Object(p.a)(t,e),Object(i.a)(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.sign,a=t.css,i=t.maxNumberOfBits,r=t.emphasizeBytes,s=t.allowFlipBits;return f.a.createElement("tr",{className:a},f.a.createElement("td",{className:"sign"},n),f.a.createElement("td",{className:"label"},this.getLabel()),f.a.createElement("td",{className:"bin"},f.a.createElement(j,{emphasizeBytes:r,binaryString:C.padLeft(this.getBinaryString(),i,"0"),allowFlipBits:s,onFlipBit:function(t){return e.flipBit(t)}})),f.a.createElement("td",{className:"other"},this.getOther()))}},{key:"getBinaryString",value:function(){return this.props.expressionItem.evaluate().toBinaryString()}},{key:"getLabel",value:function(){if(this.props.expressionItem.isExpression){var e=this.props.expressionItem;return e.sign+this.getLabelString(e.getUnderlyingOperand())}return this.getLabelString(this.props.expressionItem.getUnderlyingOperand())}},{key:"getOther",value:function(){return this.props.expressionItem.isExpression?this.props.expressionItem.evaluate().toString():this.props.expressionItem.evaluate().toOtherKindString()}},{key:"getLabelString",value:function(e){return e.toString("bin"==e.base?"dec":e.base)}},{key:"flipBit",value:function(e){var t=this.props.expressionItem.getUnderlyingOperand(),n=e.index,a=e.binaryString.split("");a[n]="0"==a[n]?"1":"0";var i=a.join(""),r=parseInt(i,2);t.setValue(r),this.props.onBitFlipped()}}]),t}(f.a.Component),se={setup:function(e,t){t.command({canHandle:function(e){return ne.canParse(e)},handle:function(t){var n=ne.parse(t.input);e.addCommandResult(t.input,f.a.createElement(ie,{expression:n,emphasizeBytes:e.emphasizeBytes}))}})}},le=n(19),oe=n.n(le);var ue=function(){return f.a.createElement("div",{className:"aboutTpl","data-result-type":"help"},f.a.createElement("p",null," Created by ",f.a.createElement("a",{href:"http://boryslevytskyi.github.io/"},"Borys Levytskyi"),". Please give it a like if BitwiseCmd has helped you in your work."),f.a.createElement("p",null,"If you have an idea, suggestion or you've spotted a bug here, please send it to ",f.a.createElement("a",{href:"mailto:bitwisecmd@gmail.com?subject=Feedback"},"bitwisecmd@gmail.com")," or tweet on ",f.a.createElement("a",{href:"http://twitter.com/BitwiseCmd"},"@BitwiseCmd"),". Your feedback is greatly appreciated."),f.a.createElement("p",null,f.a.createElement("a",{href:"https://github.com/BorisLevitskiy/BitwiseCmd"},"Project on ",f.a.createElement("strong",null,"GitHub"))))};var ce=function(e){return f.a.createElement("a",{href:"javascript:void(0)",onClick:function(t){return c.execute(e.command||e.text)}},e.text)};n(37);var me=function(){return f.a.createElement("div",{className:"help helpResultTpl"},f.a.createElement("div",{className:"panel-container"},f.a.createElement("div",{className:"left-panel"},f.a.createElement("div",{className:"section"},f.a.createElement("strong",{className:"section-title soft"},"Bitiwse Calculation Commands"),f.a.createElement("ul",null,f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"23 | 34"}))," \u2014 type bitwise expression to see result in binary (only positive integers are supported now)"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"23 34"}))," \u2014 type one or more numbers to see their binary representations"))),f.a.createElement("div",{className:"section"},f.a.createElement("strong",{className:"section-title soft"},"IP Address Commands"),f.a.createElement("ul",null,f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"127.0.0.1"}))," \u2014 enter single or multiple ip addresses (separated by space) to see their binary represenation"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"192.168.0.1/8"}))," \u2014 subnet mask notiations are support as well"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"subnet 192.168.24.1/14"}))," \u2014 display information about subnet (network address, broadcast address, etc.)"))),f.a.createElement("div",{className:"section"},f.a.createElement("strong",{className:"section-title soft"},"Color Theme Commands"),f.a.createElement("ul",null,f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"light"}))," \u2014 set Light color theme"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"dark"}))," \u2014 set Dark color theme"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"midnight"}))," \u2014 set Midnight color theme"))),f.a.createElement("div",{className:"section"},f.a.createElement("strong",{className:"section-title soft"},"Other Commands"),f.a.createElement("ul",null,f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"clear"}))," \u2014 clear output pane"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"help"}))," \u2014 display this help"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"whatsnew"}))," \u2014 display changelog"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"em"}))," \u2014 turn On/Off Emphasize Bytes"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"about"}))," \u2014 about the app"),f.a.createElement("li",null,f.a.createElement("code",null,f.a.createElement(ce,{text:"guid"}))," \u2014 generate ",f.a.createElement("a",{href:"https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29"},"v4")," GUID")))),f.a.createElement("div",{className:"right-panel"},f.a.createElement("div",{className:"section"},f.a.createElement("strong",{className:"section-title soft"},"Supported Bitwise Operations"),f.a.createElement("br",null),f.a.createElement("small",null,f.a.createElement("a",{href:"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators"},"as implemented in JavaScript engine of your browser")),f.a.createElement("ul",null,f.a.createElement("li",null,f.a.createElement("code",null,"&")," \u2014 bitwise AND"),f.a.createElement("li",null,f.a.createElement("code",null,"|")," \u2014 bitwise inclusive OR"),f.a.createElement("li",null,f.a.createElement("code",null,"^")," \u2014 bitwise exclusive XOR"),f.a.createElement("li",null,f.a.createElement("code",null,"~")," \u2014 bitwise NOT"),f.a.createElement("li",null,f.a.createElement("code",null,"<<")," \u2014 left shift"),f.a.createElement("li",null,f.a.createElement("code",null,">>")," \u2014 sign propagating right shift"),f.a.createElement("li",null,f.a.createElement("code",null,">>>")," \u2014 zero-fill right shift"))),f.a.createElement("div",{className:"section"},f.a.createElement("strong",{className:"section-title soft"},"Tip"),f.a.createElement("p",null,"You can click on bits to flip them in number inputs (e.g. ",f.a.createElement(ce,{text:"2 4"}),") or IP addresses (e.g. ",f.a.createElement(ce,{text:"192.168.0.0/8"}),")")))))};var de=function(e){return f.a.createElement("p",null,e.text)};n(38);var pe=function(){return f.a.createElement("div",{className:"changelog"},f.a.createElement("h3",null,"Changelog"),f.a.createElement("div",{className:"item item-new"},f.a.createElement("p",null,f.a.createElement("span",{className:"soft date"},"Jun 16th, 2021")," ",f.a.createElement("br",null),"Added support of ",f.a.createElement("code",null,"subnet")," command to display information about subnet ip adress such. Try it out: ",f.a.createElement(ce,{text:"subnet 192.168.24.1/14"}))),f.a.createElement("div",{className:"item"},f.a.createElement("p",null,f.a.createElement("span",{className:"soft date"},"Jun 14th, 2021")," ",f.a.createElement("br",null),"Added support of ip addresses and subnet masks notatioans. Try them out:"),f.a.createElement("ul",null,f.a.createElement("li",null,"Single IP address ",f.a.createElement(ce,{text:"127.0.0.1"})),f.a.createElement("li",null,"Multiple IP addresses and subnet mask notations ",f.a.createElement(ce,{text:"127.0.0.1 192.168.0.0/24"})))),f.a.createElement("div",{className:"item"},f.a.createElement("p",null,f.a.createElement("span",{className:"soft date"},"Jun 6th, 2017")," ",f.a.createElement("br",null),"Added ",f.a.createElement("code",null,f.a.createElement(ce,{text:"guid"}))," command. Use it for generating v4 GUIDs ")),f.a.createElement("div",{className:"item"},f.a.createElement("p",null,f.a.createElement("span",{className:"soft date"},"May 27th, 2017")," ",f.a.createElement("br",null),"Added support of binary number notation (e.g. ",f.a.createElement("code",null,f.a.createElement(ce,{text:"0b10101"})),"). ")),f.a.createElement("div",{className:"item"},f.a.createElement("p",null,f.a.createElement("span",{className:"soft"},"May 20th, 2017")," ",f.a.createElement("br",null),"New ",f.a.createElement(ce,{text:"Midnight"})," theme added. ")),f.a.createElement("div",{className:"item"},f.a.createElement("p",null,f.a.createElement("span",{className:"soft"},"May 16th, 2017")," ",f.a.createElement("br",null),"Complete rewrite using React. Old implementation is available at ",f.a.createElement("a",{href:"http://bitwisecmd.com/old"},"http://bitwisecmd.com/old"),". Please let me know if you have problems with this release by ",f.a.createElement("a",{href:"https://github.com/BorysLevytskyi/BitwiseCmd/issues"},"creating issue")," in Github Repo.")))},he=6,fe=function(){function e(t,n){Object(a.a)(this,e),this.version=he,this.emphasizeBytes=void 0,this.debugMode=!1,this.uiTheme=void 0,this.changeHandlers=void 0,this.commandResults=void 0,this.persistedVersion=void 0,this.wasOldVersion=void 0,this.env=void 0,this.commandResults=[],this.changeHandlers=[],this.uiTheme=t.uiTheme||"midnight",this.env=n,this.emphasizeBytes=t.emphasizeBytes||!0,this.persistedVersion=t.version||.1,this.wasOldVersion=null!=t.version&&this.version>this.persistedVersion,this.debugMode="prod"!==n||!0===t.debugMode}return Object(i.a)(e,[{key:"addCommandResult",value:function(e,t){var n=Math.ceil(1e7*Math.random())^Date.now();this.commandResults.unshift({key:n,input:e,view:t}),u.a.debug("command result added: ".concat(e)),this.triggerChanged()}},{key:"clearCommandResults",value:function(){this.commandResults=[],this.triggerChanged()}},{key:"toggleEmphasizeBytes",value:function(){this.emphasizeBytes=!this.emphasizeBytes,this.triggerChanged()}},{key:"onChange",value:function(e){this.changeHandlers.push(e)}},{key:"triggerChanged",value:function(){var e=this;this.changeHandlers.forEach(function(t){return t(e)})}},{key:"setUiTheme",value:function(e){this.uiTheme=e,this.triggerChanged()}},{key:"toggleDebugMode",value:function(){this.debugMode=!this.debugMode,this.triggerChanged()}},{key:"getPersistData",value:function(){return{emphasizeBytes:this.emphasizeBytes,uiTheme:this.uiTheme,version:this.version,debugMode:this.debugMode}}}]),e}();var ge={getPersistedData:function(){var e=window.localStorage.getItem("AppState");if(!e)return{};try{return JSON.parse(e)}catch(t){return console.error("Failed to parse AppState json. Json Value: \n"+e,t),{}}},watch:function(e){var t=this;e.onChange(function(){return t.persistData(e)})},persistData:function(e){localStorage.setItem("AppState",JSON.stringify(e.getPersistData()))}},ve="StartupCommand",be=["help","127.0.0.1 192.168.0.0/8","1|2&6","4 0b1000000 0x80"];var Ee={setup:function(e,t){t.debugMode=e.debugMode,e.onChange(function(){return t.debugMode=e.debugMode}),t.command("help",function(t){return e.addCommandResult(t.input,f.a.createElement(me,null))}),t.command("clear",function(){return e.clearCommandResults()}),t.command("em",function(){return e.toggleEmphasizeBytes()}),t.command("dark",function(){return e.setUiTheme("dark")}),t.command("light",function(){return e.setUiTheme("light")}),t.command("midnight",function(){return e.setUiTheme("midnight")}),t.command("about",function(t){return e.addCommandResult(t.input,f.a.createElement(ue,null))}),t.command("whatsnew",function(t){return e.addCommandResult(t.input,f.a.createElement(pe,null))}),t.command("guid",function(t){return e.addCommandResult(t.input,f.a.createElement(de,{text:oe()()}))}),t.command("-notrack",function(){}),t.command("-debug",function(t){e.toggleDebugMode(),e.addCommandResult(t.input,f.a.createElement(de,{text:"Debug Mode: ".concat(e.debugMode)}))}),t.command("track",function(e){!function(e){var t=window.bitwiseCmdAnalyticsHandler;null==t&&u.a.debug("ERROR!!!: Analytics event was not sent. Handler not found");var n=t(e);u.a.debug("Analytics event sent. Delivery response: "+n,e)}({eventCategory:"General",eventAction:"AnalyticsTest"})}),"prod"!==e.env&&t.command({canHandle:function(e){return 0===e.indexOf("default")},handle:function(t){var n,a=t.input.substring(7).trim(),i=(n=a,console.log(n),0===n.length?"Default comand: "+localStorage.getItem(ve):"clear"===n?(localStorage.removeItem(ve),"Default startup command cleared"):(localStorage.setItem(ve,n),"Default startup command saved: ".concat(n)));e.addCommandResult(t.input,f.a.createElement(de,{text:i}))}}),t.onError(function(t,n){return e.addCommandResult(t,f.a.createElement(S,{errorMessage:n.toString()}))})}};var ye=function(e){return f.a.createElement("div",{className:"result"},f.a.createElement("div",{className:"error"},"\xaf\\_(\u30c4)_/\xaf Sorry, i don\u2032t know what ",f.a.createElement("strong",null,e.input)," is"))},xe=function(){var e="bitwisecmd.com"===window.location.host?"prod":"stage";!function(e){"prod"!=e?(u.a.setLevel("debug"),u.a.debug("Log level is set to debug. Env: ".concat(e))):u.a.setLevel("warn")}(e);var t=function(e){var t=ge.getPersistedData(),n=new fe(t,e);return ge.watch(n),u.a.debug("appState initialized",n),n}(e);return{appState:t,startupCommands:function(e){var t=E.getArgs(window.location.hash),n=function(){var e=localStorage.getItem(ve);return null!=e?[e]:[]}();return 0==n.length&&(n=be),e.wasOldVersion&&(n=["whatsnew"]),t.length>0&&(n=t),u.a.debug("Executing startup commands",n),n}(t)}}();Ee.setup(xe.appState,c),q.setup(xe.appState,c),se.setup(xe.appState,c),c.command({canHandle:function(){return!0},handle:function(e){return xe.appState.addCommandResult(e.input,f.a.createElement(ye,{input:e.input}))}});var Be=f.a.createElement(k,{appState:xe.appState});_.a.render(Be,document.getElementById("root")),u.a.debug("Executing startup commands",xe.startupCommands),xe.startupCommands.forEach(c.execute.bind(c)),u.a.debug("started")}],[[20,1,2]]]);
|
|
//# sourceMappingURL=main.3e8edc8b.chunk.js.map
|