o+i){var u=Math.min(t.top,(c?s:t.bottom)-i);u!=o&&(a.scrollTop=u)}var d=e.options.fixedGutter?0:n.gutters.offsetWidth,p=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft-d,f=Nn(e)-n.gutters.offsetWidth,m=t.right-t.left>f;return m&&(t.right=t.left+f),t.left<10?a.scrollLeft=0:t.leftf+p-3&&(a.scrollLeft=t.right+(m?0:10)-f),a}function Dr(e,t){null!=t&&(qr(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Lr(e){qr(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Rr(e,t,n){null==t&&null==n||qr(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function qr(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Ar(e,Gn(e,t.from),Gn(e,t.to),t.margin))}function Ar(e,t,n,r){var o=Mr(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});Rr(e,o.scrollLeft,o.scrollTop)}function Fr(e,t){Math.abs(e.doc.scrollTop-t)<2||(n||po(e,{top:t}),Ir(e,t,!0),n&&po(e),ao(e,100))}function Ir(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function zr(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r||(e.doc.scrollLeft=t,ho(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Ur(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+Tn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+jn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}var Wr=function(e,t,n){this.cm=n;var r=this.vert=N("div",[N("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),o=this.horiz=N("div",[N("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=o.tabIndex=-1,e(r),e(o),me(r,"scroll",(function(){r.clientHeight&&t(r.scrollTop,"vertical")})),me(o,"scroll",(function(){o.clientWidth&&t(o.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,a&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Wr.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var o=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+o)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var i=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+i)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},Wr.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Wr.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Wr.prototype.zeroWidthHack=function(){var e=b&&!m?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new W,this.disableVert=new W},Wr.prototype.enableZeroWidthBar=function(e,t,n){e.style.visibility="",t.set(1e3,(function r(){var o=e.getBoundingClientRect();("vert"==n?document.elementFromPoint(o.right-1,(o.top+o.bottom)/2):document.elementFromPoint((o.right+o.left)/2,o.bottom-1))!=e?e.style.visibility="hidden":t.set(1e3,r)}))},Wr.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Br=function(){};function Hr(e,t){t||(t=Ur(e));var n=e.display.barWidth,r=e.display.barHeight;Kr(e,t);for(var o=0;o<4&&n!=e.display.barWidth||r!=e.display.barHeight;o++)n!=e.display.barWidth&&e.options.lineWrapping&&jr(e),Kr(e,Ur(e)),n=e.display.barWidth,r=e.display.barHeight}function Kr(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}Br.prototype.update=function(){return{bottom:0,right:0}},Br.prototype.setScrollLeft=function(){},Br.prototype.setScrollTop=function(){},Br.prototype.clear=function(){};var Vr={native:Wr,null:Br};function Jr(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Vr[e.options.scrollbarStyle]((function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),me(t,"mousedown",(function(){e.state.focused&&setTimeout((function(){return e.display.input.focus()}),0)})),t.setAttribute("cm-not-content","true")}),(function(t,n){"horizontal"==n?zr(e,t):Fr(e,t)}),e),e.display.scrollbars.addClass&&L(e.display.wrapper,e.display.scrollbars.addClass)}var Zr=0;function Qr(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Zr,markArrays:null},t=e.curOp,cn?cn.ops.push(t):t.ownsGroup=cn={ops:[t],delayedCallbacks:[]}}function $r(e){var t=e.curOp;t&&function(e,t){var n=e.ownsGroup;if(n)try{!function(e){var t=e.delayedCallbacks,n=0;do{for(;n=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new lo(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Yr(e){e.updatedDisplay=e.mustUpdate&&co(e.cm,e.update)}function Xr(e){var t=e.cm,n=t.display;e.updatedDisplay&&jr(t),e.barMeasure=Ur(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Dn(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+jn(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-Nn(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function eo(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft(i.defaultView.innerHeight||i.documentElement.clientHeight)&&(o=!1),null!=o&&!h){var a=N("div","",null,"position: absolute;\n top: "+(t.top-n.viewOffset-En(e.display))+"px;\n height: "+(t.bottom-t.top+jn(e)+n.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(a),a.scrollIntoView(o),e.display.lineSpace.removeChild(a)}}}(t,function(e,t,n,r){var o;null==r&&(r=0),e.options.lineWrapping||t!=n||(n="before"==t.sticky?rt(t.line,t.ch+1,"before"):t,t=t.ch?rt(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t);for(var i=0;i<5;i++){var a=!1,s=$n(e,t),l=n&&n!=t?$n(e,n):s,c=Mr(e,o={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-r,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+r}),u=e.doc.scrollTop,d=e.doc.scrollLeft;if(null!=c.scrollTop&&(Fr(e,c.scrollTop),Math.abs(e.doc.scrollTop-u)>1&&(a=!0)),null!=c.scrollLeft&&(zr(e,c.scrollLeft),Math.abs(e.doc.scrollLeft-d)>1&&(a=!0)),!a)break}return o}(t,ut(r,e.scrollToPos.from),ut(r,e.scrollToPos.to),e.scrollToPos.margin));var o=e.maybeHiddenMarkers,i=e.maybeUnhiddenMarkers;if(o)for(var a=0;a=e.display.viewTo)){var n=+new Date+e.options.workTime,r=gt(e,t.highlightFrontier),o=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),(function(i){if(r.line>=e.display.viewFrom){var a=i.styles,s=i.text.length>e.options.maxHighlightLength?Ke(t.mode,r.state):null,l=mt(e,i,r,!0);s&&(r.state=s),i.styles=l.styles;var c=i.styleClasses,u=l.classes;u?i.styleClasses=u:c&&(i.styleClasses=null);for(var d=!a||a.length!=i.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),p=0;!d&&pn)return ao(e,e.options.workDelay),!0})),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),o.length&&no(e,(function(){for(var t=0;t=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==yr(e))return!1;go(e)&&(gr(e),t.dims=lr(e));var o=r.first+r.size,i=Math.max(t.visible.from-e.options.viewportMargin,r.first),a=Math.min(o,t.visible.to+e.options.viewportMargin);n.viewFroma&&n.viewTo-a<20&&(a=Math.min(o,n.viewTo)),Ct&&(i=Wt(e.doc,i),a=Bt(e.doc,a));var s=i!=n.viewFrom||a!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;!function(e,t,n){var r=e.display;0==r.view.length||t>=r.viewTo||n<=r.viewFrom?(r.view=ln(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=ln(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,fr(e,n)))),r.viewTo=n}(e,i,a),n.viewOffset=Vt(Qe(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var c=yr(e);if(!s&&0==c&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var u=function(e){if(e.hasFocus())return null;var t=D(A(e));if(!t||!M(e.display.lineDiv,t))return null;var n={activeElt:t};if(window.getSelection){var r=F(e).getSelection();r.anchorNode&&r.extend&&M(e.display.lineDiv,r.anchorNode)&&(n.anchorNode=r.anchorNode,n.anchorOffset=r.anchorOffset,n.focusNode=r.focusNode,n.focusOffset=r.focusOffset)}return n}(e);return c>4&&(n.lineDiv.style.display="none"),function(e,t,n){var r=e.display,o=e.options.lineNumbers,i=r.lineDiv,a=i.firstChild;function s(t){var n=t.nextSibling;return l&&b&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}for(var c=r.view,u=r.viewFrom,d=0;d-1&&(f=!1),fn(e,p,u,n)),f&&(O(p.lineNumber),p.lineNumber.appendChild(document.createTextNode(nt(e.options,u)))),a=p.node.nextSibling}else{var m=_n(e,p,u,n);i.insertBefore(m,a)}u+=p.size}for(;a;)a=s(a)}(e,n.updateLineNumbers,t.dims),c>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,function(e){if(e&&e.activeElt&&e.activeElt!=D(e.activeElt.ownerDocument)&&(e.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(e.activeElt.nodeName)&&e.anchorNode&&M(document.body,e.anchorNode)&&M(document.body,e.focusNode))){var t=e.activeElt.ownerDocument,n=t.defaultView.getSelection(),r=t.createRange();r.setEnd(e.anchorNode,e.anchorOffset),r.collapse(!1),n.removeAllRanges(),n.addRange(r),n.extend(e.focusNode,e.focusOffset)}}(u),O(n.cursorDiv),O(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,ao(e,400)),n.updateLineNumbers=null,!0}function uo(e,t){for(var n=t.viewport,r=!0;;r=!1){if(r&&e.options.lineWrapping&&t.oldDisplayWidth!=Nn(e))r&&(t.visible=Pr(e.display,e.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(e.doc.height+Tn(e.display)-Pn(e),n.top)}),t.visible=Pr(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!co(e,t))break;jr(e);var o=Ur(e);br(e),Hr(e,o),mo(e,o),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function po(e,t){var n=new lo(e,t);if(co(e,n)){jr(e),uo(e,n);var r=Ur(e);br(e),Hr(e,r),mo(e,r),n.finish()}}function fo(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",dn(e,"gutterChanged",e)}function mo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+jn(e)+"px"}function ho(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=cr(t)-t.scroller.scrollLeft+e.doc.scrollLeft,o=t.gutters.offsetWidth,i=r+"px",a=0;a=105&&(i.wrapper.style.clipPath="inset(0px)"),i.wrapper.setAttribute("translate","no"),a&&s<8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),l||n&&y||(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,i.gutterSpecs=vo(o.gutters,o.lineNumbers),yo(i),r.init(i)}lo.prototype.signal=function(e,t){_e(e,t)&&this.events.push(arguments)},lo.prototype.finish=function(){for(var e=0;ec.clientWidth,m=c.scrollHeight>c.clientHeight;if(o&&f||i&&m){if(i&&b&&l)e:for(var h=t.target,g=s.view;h!=c;h=h.parentNode)for(var v=0;v=0&&ot(e,r.to())<=0)return n}return-1};var To=function(e,t){this.anchor=e,this.head=t};function Oo(e,t,n){var r=e&&e.options.selectionsMayTouch,o=t[n];t.sort((function(e,t){return ot(e.from(),t.from())})),n=B(t,o);for(var i=1;i0:l>=0){var c=lt(s.from(),a.from()),u=st(s.to(),a.to()),d=s.empty()?a.from()==a.head:s.from()==s.head;i<=n&&--n,t.splice(--i,2,new To(d?u:c,d?c:u))}}return new Eo(t,n)}function jo(e,t){return new Eo([new To(e,t||e)],0)}function No(e){return e.text?rt(e.from.line+e.text.length-1,G(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function Po(e,t){if(ot(e,t.from)<0)return e;if(ot(e,t.to)<=0)return No(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=No(t).ch-t.to.ch),rt(n,r)}function Mo(e,t){for(var n=[],r=0;r1&&e.remove(s.line+1,m-1),e.insert(s.line+1,v)}dn(e,"change",e,t)}function Fo(e,t,n){!function e(r,o,i){if(r.linked)for(var a=0;as-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(i=function(e,t){return t?(Bo(e.done),G(e.done)):e.done.length&&!G(e.done).ranges?G(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),G(e.done)):void 0}(o,o.lastOp==r)))a=G(i.changes),0==ot(t.from,t.to)&&0==ot(t.from,a.to)?a.to=No(t):i.changes.push(Wo(e,t));else{var l=G(o.done);for(l&&l.ranges||Ko(e.sel,o.done),i={changes:[Wo(e,t)],generation:o.generation},o.done.push(i);o.done.length>o.undoDepth;)o.done.shift(),o.done[0].ranges||o.done.shift()}o.done.push(n),o.generation=++o.maxGeneration,o.lastModTime=o.lastSelTime=s,o.lastOp=o.lastSelOp=r,o.lastOrigin=o.lastSelOrigin=t.origin,a||ve(e,"historyAdded")}function Ko(e,t){var n=G(t);n&&n.ranges&&n.equals(e)||t.push(e)}function Vo(e,t,n,r){var o=t["spans_"+e.id],i=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),(function(n){n.markedSpans&&((o||(o=t["spans_"+e.id]={}))[i]=n.markedSpans),++i}))}function Jo(e){if(!e)return null;for(var t,n=0;n-1&&(G(s)[d]=c[d],delete c[d])}}}return r}function $o(e,t,n,r){if(r){var o=e.anchor;if(n){var i=ot(t,o)<0;i!=ot(n,o)<0?(o=t,t=n):i!=ot(t,n)<0&&(t=n)}return new To(o,t)}return new To(n||t,t)}function Go(e,t,n,r,o){null==o&&(o=e.cm&&(e.cm.display.shift||e.extend)),ni(e,new Eo([$o(e.sel.primary(),t,n,o)],0),r)}function Yo(e,t,n){for(var r=[],o=e.cm&&(e.cm.display.shift||e.extend),i=0;i=t.ch:s.to>t.ch))){if(o&&(ve(l,"beforeCursorEnter"),l.explicitlyCleared)){if(i.markedSpans){--a;continue}break}if(!l.atomic)continue;if(n){var d=l.find(r<0?1:-1),p=void 0;if((r<0?u:c)&&(d=ci(e,d,-r,d&&d.line==t.line?i:null)),d&&d.line==t.line&&(p=ot(d,n))&&(r<0?p<0:p>0))return si(e,d,t,r,o)}var f=l.find(r<0?-1:1);return(r<0?c:u)&&(f=ci(e,f,r,f.line==t.line?i:null)),f?si(e,f,t,r,o):null}}return t}function li(e,t,n,r,o){var i=r||1;return si(e,t,n,i,o)||!o&&si(e,t,n,i,!0)||si(e,t,n,-i,o)||!o&&si(e,t,n,-i,!0)||(e.cantEdit=!0,rt(e.first,0))}function ci(e,t,n,r){return n<0&&0==t.ch?t.line>e.first?ut(e,rt(t.line-1)):null:n>0&&t.ch==(r||Qe(e,t.line)).text.length?t.line0)){var u=[l,1],d=ot(c.from,s.from),p=ot(c.to,s.to);(d<0||!a.inclusiveLeft&&!d)&&u.push({from:c.from,to:s.from}),(p>0||!a.inclusiveRight&&!p)&&u.push({from:s.to,to:c.to}),o.splice.apply(o,u),l+=u.length-3}}return o}(e,t.from,t.to);if(r)for(var o=r.length-1;o>=0;--o)fi(e,{from:r[o].from,to:r[o].to,text:o?[""]:t.text,origin:t.origin});else fi(e,t)}}function fi(e,t){if(1!=t.text.length||""!=t.text[0]||0!=ot(t.from,t.to)){var n=Mo(e,t);Ho(e,t,n,e.cm?e.cm.curOp.id:NaN),gi(e,t,n,jt(e,t));var r=[];Fo(e,(function(e,n){n||-1!=B(r,e.history)||(_i(e.history,t),r.push(e.history)),gi(e,t,null,jt(e,t))}))}}function mi(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!r||n){for(var o,i=e.history,a=e.sel,s="undo"==t?i.done:i.undone,l="undo"==t?i.undone:i.done,c=0;c=0;--f){var m=p(f);if(m)return m.v}}}}function hi(e,t){if(0!=t&&(e.first+=t,e.sel=new Eo(Y(e.sel.ranges,(function(e){return new To(rt(e.anchor.line+t,e.anchor.ch),rt(e.head.line+t,e.head.ch))})),e.sel.primIndex),e.cm)){mr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.linei&&(t={from:t.from,to:rt(i,Qe(e,i).text.length),text:[t.text[0]],origin:t.origin}),t.removed=$e(e,t.from,t.to),n||(n=Mo(e,t)),e.cm?function(e,t,n){var r=e.doc,o=e.display,i=t.from,a=t.to,s=!1,l=i.line;e.options.lineWrapping||(l=Xe(Ut(Qe(r,i.line))),r.iter(l,a.line+1,(function(e){if(e==o.maxLine)return s=!0,!0}))),r.sel.contains(t.from,t.to)>-1&&be(e),Ao(r,t,n,ur(e)),e.options.lineWrapping||(r.iter(l,i.line+t.text.length,(function(e){var t=Jt(e);t>o.maxLineLength&&(o.maxLine=e,o.maxLineLength=t,o.maxLineChanged=!0,s=!1)})),s&&(e.curOp.updateMaxLine=!0)),function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var o=Qe(e,r).stateAfter;if(o&&(!(o instanceof pt)||r+o.lookAhead1||!(this.children[0]instanceof xi))){var s=[];this.collapse(s),this.children=[new xi(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var a=o.lines.length%25+25,s=a;s10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r0||0==a&&!1!==i.clearWhenEmpty)return i;if(i.replacedWith&&(i.collapsed=!0,i.widgetNode=P("span",[i.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||i.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(i.widgetNode.insertLeft=!0)),i.collapsed){if(zt(e,t.line,t,n,i)||t.line!=n.line&&zt(e,n.line,t,n,i))throw new Error("Inserting collapsed marker partially overlapping an existing one");Ct=!0}i.addToHistory&&Ho(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var s,l=t.line,c=e.cm;if(e.iter(l,n.line+1,(function(r){c&&i.collapsed&&!c.options.lineWrapping&&Ut(r)==c.display.maxLine&&(s=!0),i.collapsed&&l!=t.line&&Ye(r,0),function(e,t,n){var r=n&&window.WeakSet&&(n.markedSpans||(n.markedSpans=new WeakSet));r&&e.markedSpans&&r.has(e.markedSpans)?e.markedSpans.push(t):(e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],r&&r.add(e.markedSpans)),t.marker.attachLine(e)}(r,new Et(i,l==t.line?t.ch:null,l==n.line?n.ch:null),e.cm&&e.cm.curOp),++l})),i.collapsed&&e.iter(t.line,n.line+1,(function(t){Ht(e,t)&&Ye(t,0)})),i.clearOnEnter&&me(i,"beforeCursorEnter",(function(){return i.clear()})),i.readOnly&&(St=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),i.collapsed&&(i.id=++Ei,i.atomic=!0),c){if(s&&(c.curOp.updateMaxLine=!0),i.collapsed)mr(c,t.line,n.line+1);else if(i.className||i.startStyle||i.endStyle||i.css||i.attributes||i.title)for(var u=t.line;u<=n.line;u++)hr(c,u,"text");i.atomic&&ii(c.doc),dn(c,"markerAdded",c,i)}return i}Ti.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Qr(e),_e(this,"clear")){var n=this.find();n&&dn(this,"clear",n.from,n.to)}for(var r=null,o=null,i=0;ie.display.maxLineLength&&(e.display.maxLine=c,e.display.maxLineLength=u,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&mr(e,r,o+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&ii(e.doc)),e&&dn(e,"markerCleared",e,this,r,o),t&&$r(e),this.parent&&this.parent.clear()}},Ti.prototype.find=function(e,t){var n,r;null==e&&"bookmark"==this.type&&(e=1);for(var o=0;o=0;l--)pi(this,r[l]);s?ti(this,s):this.cm&&Lr(this.cm)})),undo:io((function(){mi(this,"undo")})),redo:io((function(){mi(this,"redo")})),undoSelection:io((function(){mi(this,"undo",!0)})),redoSelection:io((function(){mi(this,"redo",!0)})),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(o.marker.parent||o.marker)}return t},findMarks:function(e,t,n){e=ut(this,e),t=ut(this,t);var r=[],o=e.line;return this.iter(e.line,t.line+1,(function(i){var a=i.markedSpans;if(a)for(var s=0;s=l.to||null==l.from&&o!=e.line||null!=l.from&&o==t.line&&l.from>=t.ch||n&&!n(l.marker)||r.push(l.marker.parent||l.marker)}++o})),r},getAllMarks:function(){var e=[];return this.iter((function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=i,++n})),ut(this,rt(n,t))},indexFromPos:function(e){var t=(e=ut(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout((function(){return t.display.input.focus()}),20);try{var d=e.dataTransfer.getData("Text");if(d){var p;if(t.state.draggingText&&!t.state.draggingText.copy&&(p=t.listSelections()),ri(t.doc,jo(n,n)),p)for(var f=0;f=0;t--)vi(e.doc,"",r[t].from,r[t].to,"+delete");Lr(e)}))}function Xi(e,t,n){var r=se(e.text,t+n,n);return r<0||r>e.text.length?null:r}function ea(e,t,n){var r=Xi(e,t.ch,n);return null==r?null:new rt(t.line,r,n<0?"after":"before")}function ta(e,t,n,r,o){if(e){"rtl"==t.doc.direction&&(o=-o);var i=pe(n,t.doc.direction);if(i){var a,s=o<0?G(i):i[0],l=o<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var c=Rn(t,n);a=o<0?n.text.length-1:0;var u=qn(t,c,a).top;a=le((function(e){return qn(t,c,e).top==u}),o<0==(1==s.level)?s.from:s.to-1,a),"before"==l&&(a=Xi(n,a,1))}else a=o<0?s.to:s.from;return new rt(r,a,l)}}return new rt(r,o<0?n.text.length:0,o<0?"before":"after")}Hi.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Hi.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Hi.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Hi.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Hi.default=b?Hi.macDefault:Hi.pcDefault;var na={selectAll:ui,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),K)},killLine:function(e){return Yi(e,(function(t){if(t.empty()){var n=Qe(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)o=new rt(o.line,o.ch+1),e.replaceRange(i.charAt(o.ch-1)+i.charAt(o.ch-2),rt(o.line,o.ch-2),o,"+transpose");else if(o.line>e.doc.first){var a=Qe(e.doc,o.line-1).text;a&&(o=new rt(o.line,1),e.replaceRange(i.charAt(0)+e.doc.lineSeparator()+a.charAt(a.length-1),rt(o.line-1,a.length-1),o,"+transpose"))}n.push(new To(o,o))}e.setSelections(n)}))},newlineAndIndent:function(e){return no(e,(function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,"+input");t=e.listSelections();for(var r=0;r-1&&(ot((o=c.ranges[o]).from(),t)<0||t.xRel>0)&&(ot(o.to(),t)>0||t.xRel<0)?function(e,t,n,r){var o=e.display,i=!1,c=ro(e,(function(t){l&&(o.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:Er(e)),ge(o.wrapper.ownerDocument,"mouseup",c),ge(o.wrapper.ownerDocument,"mousemove",u),ge(o.scroller,"dragstart",d),ge(o.scroller,"drop",c),i||(xe(t),r.addNew||Go(e.doc,n,null,null,r.extend),l&&!f||a&&9==s?setTimeout((function(){o.wrapper.ownerDocument.body.focus({preventScroll:!0}),o.input.focus()}),20):o.input.focus())})),u=function(e){i=i||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},d=function(){return i=!0};l&&(o.scroller.draggable=!0),e.state.draggingText=c,c.copy=!r.moveOnDrag,me(o.wrapper.ownerDocument,"mouseup",c),me(o.wrapper.ownerDocument,"mousemove",u),me(o.scroller,"dragstart",d),me(o.scroller,"drop",c),e.state.delayingBlurEvent=!0,setTimeout((function(){return o.input.focus()}),20),o.scroller.dragDrop&&o.scroller.dragDrop()}(e,r,t,i):function(e,t,n,r){a&&Er(e);var o=e.display,i=e.doc;xe(t);var s,l,c=i.sel,u=c.ranges;if(r.addNew&&!r.extend?(l=i.sel.contains(n),s=l>-1?u[l]:new To(n,n)):(s=i.sel.primary(),l=i.sel.primIndex),"rectangle"==r.unit)r.addNew||(s=new To(n,n)),n=pr(e,t,!0,!0),l=-1;else{var d=ya(e,n,r.unit);s=r.extend?$o(s,d.anchor,d.head,r.extend):d}r.addNew?-1==l?(l=u.length,ni(i,Oo(e,u.concat([s]),l),{scroll:!1,origin:"*mouse"})):u.length>1&&u[l].empty()&&"char"==r.unit&&!r.extend?(ni(i,Oo(e,u.slice(0,l).concat(u.slice(l+1)),0),{scroll:!1,origin:"*mouse"}),c=i.sel):Xo(i,l,s,V):(l=0,ni(i,new Eo([s],0),V),c=i.sel);var p=n;function f(t){if(0!=ot(p,t))if(p=t,"rectangle"==r.unit){for(var o=[],a=e.options.tabSize,u=U(Qe(i,n.line).text,n.ch,a),d=U(Qe(i,t.line).text,t.ch,a),f=Math.min(u,d),m=Math.max(u,d),h=Math.min(n.line,t.line),g=Math.min(e.lastLine(),Math.max(n.line,t.line));h<=g;h++){var v=Qe(i,h).text,y=Z(v,f,a);f==m?o.push(new To(rt(h,y),rt(h,y))):v.length>y&&o.push(new To(rt(h,y),rt(h,Z(v,m,a))))}o.length||o.push(new To(n,n)),ni(i,Oo(e,c.ranges.slice(0,l).concat(o),l),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,_=s,w=ya(e,t,r.unit),x=_.anchor;ot(w.anchor,x)>0?(b=w.head,x=lt(_.from(),w.anchor)):(b=w.anchor,x=st(_.to(),w.head));var k=c.ranges.slice(0);k[l]=function(e,t){var n=t.anchor,r=t.head,o=Qe(e.doc,n.line);if(0==ot(n,r)&&n.sticky==r.sticky)return t;var i=pe(o);if(!i)return t;var a=ue(i,n.ch,n.sticky),s=i[a];if(s.from!=n.ch&&s.to!=n.ch)return t;var l,c=a+(s.from==n.ch==(1!=s.level)?0:1);if(0==c||c==i.length)return t;if(r.line!=n.line)l=(r.line-n.line)*("ltr"==e.doc.direction?1:-1)>0;else{var u=ue(i,r.ch,r.sticky),d=u-a||(r.ch-n.ch)*(1==s.level?-1:1);l=u==c-1||u==c?d<0:d>0}var p=i[c+(l?-1:0)],f=l==(1==p.level),m=f?p.from:p.to,h=f?"after":"before";return n.ch==m&&n.sticky==h?t:new To(new rt(n.line,m,h),r)}(e,new To(ut(i,x),b)),ni(i,Oo(e,k,l),V)}}var m=o.wrapper.getBoundingClientRect(),h=0;function g(t){e.state.selectingText=!1,h=1/0,t&&(xe(t),o.input.focus()),ge(o.wrapper.ownerDocument,"mousemove",v),ge(o.wrapper.ownerDocument,"mouseup",y),i.history.lastSelOrigin=null}var v=ro(e,(function(t){0!==t.buttons&&Te(t)?function t(n){var a=++h,s=pr(e,n,!0,"rectangle"==r.unit);if(s)if(0!=ot(s,p)){e.curOp.focus=D(A(e)),f(s);var l=Pr(o,i);(s.line>=l.to||s.linem.bottom?20:0;c&&setTimeout(ro(e,(function(){h==a&&(o.scroller.scrollTop+=c,t(n))})),50)}}(t):g(t)})),y=ro(e,g);e.state.selectingText=y,me(o.wrapper.ownerDocument,"mousemove",v),me(o.wrapper.ownerDocument,"mouseup",y)}(e,r,t,i)}(t,r,i,e):Ee(e)==n.scroller&&xe(e):2==o?(r&&Go(t.doc,r),setTimeout((function(){return n.input.focus()}),20)):3==o&&(S?t.display.input.onContextMenu(e):Er(t)))}}function ya(e,t,n){if("char"==n)return new To(t,t);if("word"==n)return e.findWordAt(t);if("line"==n)return new To(rt(t.line,0),ut(e.doc,rt(t.line+1,0)));var r=n(e,t);return new To(r.from,r.to)}function ba(e,t,n,r){var o,i;if(t.touches)o=t.touches[0].clientX,i=t.touches[0].clientY;else try{o=t.clientX,i=t.clientY}catch(e){return!1}if(o>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&xe(t);var a=e.display,s=a.lineDiv.getBoundingClientRect();if(i>s.bottom||!_e(e,n))return Se(t);i-=s.top-a.viewOffset;for(var l=0;l=o)return ve(e,n,e,et(e.doc,i),e.display.gutterSpecs[l].className,t),Se(t)}}function _a(e,t){return ba(e,t,"gutterClick",!0)}function wa(e,t){Cn(e.display,t)||function(e,t){return!!_e(e,"gutterContextMenu")&&ba(e,t,"gutterContextMenu",!1)}(e,t)||ye(e,t,"contextmenu")||S||e.display.input.onContextMenu(t)}function xa(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Bn(e)}ga.prototype.compare=function(e,t,n){return this.time+400>e&&0==ot(t,this.pos)&&n==this.button};var ka={toString:function(){return"CodeMirror.Init"}},Sa={},Ca={};function Ea(e,t,n){if(!t!=!(n&&n!=ka)){var r=e.display.dragFunctions,o=t?me:ge;o(e.display.scroller,"dragstart",r.start),o(e.display.scroller,"dragenter",r.enter),o(e.display.scroller,"dragover",r.over),o(e.display.scroller,"dragleave",r.leave),o(e.display.scroller,"drop",r.drop)}}function Ta(e){e.options.lineWrapping?(L(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),Zt(e)),dr(e),mr(e),Bn(e),setTimeout((function(){return Hr(e)}),100)}function Oa(e,t){var n=this;if(!(this instanceof Oa))return new Oa(e,t);this.options=t=t?z(t):{},z(Sa,t,!1);var r=t.value;"string"==typeof r?r=new Di(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var o=new Oa.inputStyles[t.inputStyle](this),i=this.display=new _o(e,r,o,t);for(var c in i.wrapper.CodeMirror=this,xa(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Jr(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new W,keySeq:null,specialChars:null},t.autofocus&&!y&&i.input.focus(),a&&s<11&&setTimeout((function(){return n.display.input.reset(!0)}),20),function(e){var t=e.display;me(t.scroller,"mousedown",ro(e,va)),me(t.scroller,"dblclick",a&&s<11?ro(e,(function(t){if(!ye(e,t)){var n=pr(e,t);if(n&&!_a(e,t)&&!Cn(e.display,t)){xe(t);var r=e.findWordAt(n);Go(e.doc,r.anchor,r.head)}}})):function(t){return ye(e,t)||xe(t)}),me(t.scroller,"contextmenu",(function(t){return wa(e,t)})),me(t.input.getField(),"contextmenu",(function(n){t.scroller.contains(n.target)||wa(e,n)}));var n,r={end:0};function o(){t.activeTouch&&(n=setTimeout((function(){return t.activeTouch=null}),1e3),(r=t.activeTouch).end=+new Date)}function i(e,t){if(null==t.left)return!0;var n=t.left-e.left,r=t.top-e.top;return n*n+r*r>400}me(t.scroller,"touchstart",(function(o){if(!ye(e,o)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(o)&&!_a(e,o)){t.input.ensurePolled(),clearTimeout(n);var i=+new Date;t.activeTouch={start:i,moved:!1,prev:i-r.end<=300?r:null},1==o.touches.length&&(t.activeTouch.left=o.touches[0].pageX,t.activeTouch.top=o.touches[0].pageY)}})),me(t.scroller,"touchmove",(function(){t.activeTouch&&(t.activeTouch.moved=!0)})),me(t.scroller,"touchend",(function(n){var r=t.activeTouch;if(r&&!Cn(t,n)&&null!=r.left&&!r.moved&&new Date-r.start<300){var a,s=e.coordsChar(t.activeTouch,"page");a=!r.prev||i(r,r.prev)?new To(s,s):!r.prev.prev||i(r,r.prev.prev)?e.findWordAt(s):new To(rt(s.line,0),ut(e.doc,rt(s.line+1,0))),e.setSelection(a.anchor,a.head),e.focus(),xe(n)}o()})),me(t.scroller,"touchcancel",o),me(t.scroller,"scroll",(function(){t.scroller.clientHeight&&(Fr(e,t.scroller.scrollTop),zr(e,t.scroller.scrollLeft,!0),ve(e,"scroll",e))})),me(t.scroller,"mousewheel",(function(t){return Co(e,t)})),me(t.scroller,"DOMMouseScroll",(function(t){return Co(e,t)})),me(t.wrapper,"scroll",(function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0})),t.dragFunctions={enter:function(t){ye(e,t)||Ce(t)},over:function(t){ye(e,t)||(function(e,t){var n=pr(e,t);if(n){var r=document.createDocumentFragment();wr(e,n,r),e.display.dragCursor||(e.display.dragCursor=N("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),j(e.display.dragCursor,r)}}(e,t),Ce(t))},start:function(t){return function(e,t){if(a&&(!e.state.draggingText||+new Date-Li<100))Ce(t);else if(!ye(e,t)&&!Cn(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!f)){var n=N("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",p&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),p&&n.parentNode.removeChild(n)}}(e,t)},drop:ro(e,Ri),leave:function(t){ye(e,t)||qi(e)}};var l=t.input.getField();me(l,"keyup",(function(t){return pa.call(e,t)})),me(l,"keydown",ro(e,da)),me(l,"keypress",ro(e,fa)),me(l,"focus",(function(t){return Tr(e,t)})),me(l,"blur",(function(t){return Or(e,t)}))}(this),function(){var e;Fi||(me(window,"resize",(function(){null==e&&(e=setTimeout((function(){e=null,Ai(Ii)}),100))})),me(window,"blur",(function(){return Ai(Or)})),Fi=!0)}(),Qr(this),this.curOp.forceUpdate=!0,Io(this,r),t.autofocus&&!y||this.hasFocus()?setTimeout((function(){n.hasFocus()&&!n.state.focused&&Tr(n)}),20):Or(this),Ca)Ca.hasOwnProperty(c)&&Ca[c](this,t[c],ka);go(this),t.finishInit&&t.finishInit(this);for(var u=0;u150)){if(!r)return;n="prev"}}else c=0,n="not";"prev"==n?c=t>i.first?U(Qe(i,t-1).text,null,a):0:"add"==n?c=l+e.options.indentUnit:"subtract"==n?c=l-e.options.indentUnit:"number"==typeof n&&(c=l+n),c=Math.max(0,c);var d="",p=0;if(e.options.indentWithTabs)for(var f=Math.floor(c/a);f;--f)p+=a,d+="\t";if(pa,l=Le(t),c=null;if(s&&r.ranges.length>1)if(Pa&&Pa.text.join("\n")==t){if(r.ranges.length%Pa.text.length==0){c=[];for(var u=0;u=0;p--){var f=r.ranges[p],m=f.from(),h=f.to();f.empty()&&(n&&n>0?m=rt(m.line,m.ch-n):e.state.overwrite&&!s?h=rt(h.line,Math.min(Qe(i,h.line).text.length,h.ch+G(l).length)):s&&Pa&&Pa.lineWise&&Pa.text.join("\n")==l.join("\n")&&(m=h=rt(m.line,0)));var g={from:m,to:h,text:c?c[p%c.length]:l,origin:o||(s?"paste":e.state.cutIncoming>a?"cut":"+input")};pi(e.doc,g),dn(e,"inputRead",e,g)}t&&!s&&Ra(e,t),Lr(e),e.curOp.updateInput<2&&(e.curOp.updateInput=d),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function La(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");if(n)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||!t.hasFocus()||no(t,(function(){return Da(t,n,0,null,"paste")})),!0}function Ra(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var o=n.ranges[r];if(!(o.head.ch>100||r&&n.ranges[r-1].head.line==o.head.line)){var i=e.getModeAt(o.head),a=!1;if(i.electricChars){for(var s=0;s-1){a=Na(e,o.head.line,"smart");break}}else i.electricInput&&i.electricInput.test(Qe(e.doc,o.head.line).text.slice(0,o.head.ch))&&(a=Na(e,o.head.line,"smart"));a&&dn(e,"electricInput",e,o.head.line)}}}function qa(e){for(var t=[],n=[],r=0;r0?0:-1));if(isNaN(u))a=null;else{var d=n>0?u>=55296&&u<56320:u>=56320&&u<57343;a=new rt(t.line,Math.max(0,Math.min(s.text.length,t.ch+n*(d?2:1))),-n)}}else a=o?function(e,t,n,r){var o=pe(t,e.doc.direction);if(!o)return ea(t,n,r);n.ch>=t.text.length?(n.ch=t.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var i=ue(o,n.ch,n.sticky),a=o[i];if("ltr"==e.doc.direction&&a.level%2==0&&(r>0?a.to>n.ch:a.from=a.from&&p>=u.begin)){var f=d?"before":"after";return new rt(n.line,p,f)}}var m=function(e,t,r){for(var i=function(e,t){return t?new rt(n.line,l(e,1),"before"):new rt(n.line,e,"after")};e>=0&&e0==(1!=a.level),c=s?r.begin:l(r.end,-1);if(a.from<=c&&c0?u.end:l(u.begin,-1);return null==g||r>0&&g==t.text.length||!(h=m(r>0?0:o.length-1,r,c(g)))?null:h}(e.cm,s,t,n):ea(s,t,n);if(null==a){if(i||(c=t.line+l)=e.first+e.size||(t=new rt(c,t.ch,t.sticky),!(s=Qe(e,c))))return!1;t=ta(o,e.cm,s,t.line,l)}else t=a;return!0}if("char"==r||"codepoint"==r)c();else if("column"==r)c(!0);else if("word"==r||"group"==r)for(var u=null,d="group"==r,p=e.cm&&e.cm.getHelper(t,"wordChars"),f=!0;!(n<0)||c(!f);f=!1){var m=s.text.charAt(t.ch)||"\n",h=re(m,p)?"w":d&&"\n"==m?"n":!d||/\s/.test(m)?null:"p";if(!d||f||h||(h="s"),u&&u!=h){n<0&&(n=1,c(),t.sticky="after");break}if(h&&(u=h),n>0&&!c(!f))break}var g=li(e,t,i,a,!0);return it(i,g)&&(g.hitSide=!0),g}function za(e,t,n,r){var o,i,a=e.doc,s=t.left;if("page"==r){var l=Math.min(e.display.wrapper.clientHeight,F(e).innerHeight||a(e).documentElement.clientHeight),c=Math.max(l-.5*ar(e.display),3);o=(n>0?t.bottom:t.top)+n*c}else"line"==r&&(o=n>0?t.bottom+3:t.top-3);for(;(i=Xn(e,s,o)).outside;){if(n<0?o<=0:o>=a.height){i.hitSide=!0;break}o+=5*n}return i}var Ua=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new W,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Wa(e,t){var n=Ln(e,t.line);if(!n||n.hidden)return null;var r=Qe(e.doc,t.line),o=Mn(n,r,t.line),i=pe(r,e.doc.direction),a="left";i&&(a=ue(i,t.ch)%2?"right":"left");var s=In(o.map,t.ch,a);return s.offset="right"==s.collapse?s.end:s.start,s}function Ba(e,t){return t&&(e.bad=!0),e}function Ha(e,t,n){var r;if(t==e.display.lineDiv){if(!(r=e.display.lineDiv.childNodes[n]))return Ba(e.clipPos(rt(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var o=0;o=t.display.viewTo||i.line=t.display.viewFrom&&Wa(t,o)||{node:l[0].measure.map[2],offset:0},u=i.liner.firstLine()&&(a=rt(a.line-1,Qe(r.doc,a.line-1).length)),s.ch==Qe(r.doc,s.line).text.length&&s.lineo.viewTo-1)return!1;a.line==o.viewFrom||0==(e=fr(r,a.line))?(t=Xe(o.view[0].line),n=o.view[0].node):(t=Xe(o.view[e].line),n=o.view[e-1].node.nextSibling);var l,c,u=fr(r,s.line);if(u==o.view.length-1?(l=o.viewTo-1,c=o.lineDiv.lastChild):(l=Xe(o.view[u+1].line)-1,c=o.view[u+1].node.previousSibling),!n)return!1;for(var d=r.doc.splitLines(function(e,t,n,r,o){var i="",a=!1,s=e.doc.lineSeparator(),l=!1;function c(){a&&(i+=s,l&&(i+=s),a=l=!1)}function u(e){e&&(c(),i+=e)}function d(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(n)return void u(n);var i,p=t.getAttribute("cm-marker");if(p){var f=e.findMarks(rt(r,0),rt(o+1,0),(g=+p,function(e){return e.id==g}));return void(f.length&&(i=f[0].find(0))&&u($e(e.doc,i.from,i.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var m=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;m&&c();for(var h=0;h1&&p.length>1;)if(G(d)==G(p))d.pop(),p.pop(),l--;else{if(d[0]!=p[0])break;d.shift(),p.shift(),t++}for(var f=0,m=0,h=d[0],g=p[0],v=Math.min(h.length,g.length);fa.ch&&y.charCodeAt(y.length-m-1)==b.charCodeAt(b.length-m-1);)f--,m++;d[d.length-1]=y.slice(0,y.length-m).replace(/^\u200b+/,""),d[0]=d[0].slice(f).replace(/\u200b+$/,"");var w=rt(t,f),x=rt(l,p.length?G(p).length-m:0);return d.length>1||d[0]||ot(w,x)?(vi(r.doc,d,w,x,"+input"),!0):void 0},Ua.prototype.ensurePolled=function(){this.forceCompositionEnd()},Ua.prototype.reset=function(){this.forceCompositionEnd()},Ua.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Ua.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()}),80))},Ua.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||no(this.cm,(function(){return mr(e.cm)}))},Ua.prototype.setUneditable=function(e){e.contentEditable="false"},Ua.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||ro(this.cm,Da)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Ua.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Ua.prototype.onContextMenu=function(){},Ua.prototype.resetPosition=function(){},Ua.prototype.needsContentAttribute=!0;var Va=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new W,this.hasSelection=!1,this.composing=null,this.resetting=!1};Va.prototype.init=function(e){var t=this,n=this,r=this.cm;this.createField(e);var o=this.textarea;function i(e){if(!ye(r,e)){if(r.somethingSelected())Ma({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var t=qa(r);Ma({lineWise:!0,text:t.text}),"cut"==e.type?r.setSelections(t.ranges,null,K):(n.prevInput="",o.value=t.text.join("\n"),q(o))}"cut"==e.type&&(r.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),g&&(o.style.width="0px"),me(o,"input",(function(){a&&s>=9&&t.hasSelection&&(t.hasSelection=null),n.poll()})),me(o,"paste",(function(e){ye(r,e)||La(e,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())})),me(o,"cut",i),me(o,"copy",i),me(e.scroller,"paste",(function(t){if(!Cn(e,t)&&!ye(r,t)){if(!o.dispatchEvent)return r.state.pasteIncoming=+new Date,void n.focus();var i=new Event("paste");i.clipboardData=t.clipboardData,o.dispatchEvent(i)}})),me(e.lineSpace,"selectstart",(function(t){Cn(e,t)||xe(t)})),me(o,"compositionstart",(function(){var e=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor("to"),{className:"CodeMirror-composing"})}})),me(o,"compositionend",(function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)}))},Va.prototype.createField=function(e){this.wrapper=Fa(),this.textarea=this.wrapper.firstChild;var t=this.cm.options;Aa(this.textarea,t.spellcheck,t.autocorrect,t.autocapitalize)},Va.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},Va.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=_r(e);if(e.options.moveInputWithCursor){var o=$n(e,n.sel.primary().head,"div"),i=t.wrapper.getBoundingClientRect(),a=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,o.top+a.top-i.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,o.left+a.left-i.left))}return r},Va.prototype.showSelection=function(e){var t=this.cm.display;j(t.cursorDiv,e.cursors),j(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Va.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing&&e)){var t=this.cm;if(this.resetting=!0,t.somethingSelected()){this.prevInput="";var n=t.getSelection();this.textarea.value=n,t.state.focused&&q(this.textarea),a&&s>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value="",a&&s>=9&&(this.hasSelection=null));this.resetting=!1}},Va.prototype.getField=function(){return this.textarea},Va.prototype.supportsTouch=function(){return!1},Va.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!y||D(this.textarea.ownerDocument)!=this.textarea))try{this.textarea.focus()}catch(e){}},Va.prototype.blur=function(){this.textarea.blur()},Va.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Va.prototype.receivedFocus=function(){this.slowPoll()},Va.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){e.poll(),e.cm.state.focused&&e.slowPoll()}))},Va.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,(function n(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,n))}))},Va.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||this.resetting||!t.state.focused||Re(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var o=n.value;if(o==r&&!t.somethingSelected())return!1;if(a&&s>=9&&this.hasSelection===o||b&&/[\uf700-\uf7ff]/.test(o))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var i=o.charCodeAt(0);if(8203!=i||r||(r=""),8666==i)return this.reset(),this.cm.execCommand("undo")}for(var l=0,c=Math.min(r.length,o.length);l1e3||o.indexOf("\n")>-1?n.value=e.prevInput="":e.prevInput=o,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},Va.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Va.prototype.onKeyPress=function(){a&&s>=9&&(this.hasSelection=null),this.fastPoll()},Va.prototype.onContextMenu=function(e){var t=this,n=t.cm,r=n.display,o=t.textarea;t.contextMenuPending&&t.contextMenuPending();var i=pr(n,e),c=r.scroller.scrollTop;if(i&&!p){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(i)&&ro(n,ni)(n.doc,jo(i),K);var u,d=o.style.cssText,f=t.wrapper.style.cssText,m=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText="position: static",o.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-m.top-5)+"px; left: "+(e.clientX-m.left-5)+"px;\n z-index: 1000; background: "+(a?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",l&&(u=o.ownerDocument.defaultView.scrollY),r.input.focus(),l&&o.ownerDocument.defaultView.scrollTo(null,u),r.input.reset(),n.somethingSelected()||(o.value=t.prevInput=" "),t.contextMenuPending=v,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll),a&&s>=9&&g(),S){Ce(e);var h=function(){ge(window,"mouseup",h),setTimeout(v,20)};me(window,"mouseup",h)}else setTimeout(v,50)}function g(){if(null!=o.selectionStart){var e=n.somethingSelected(),i=""+(e?o.value:"");o.value="⇚",o.value=i,t.prevInput=e?"":"",o.selectionStart=1,o.selectionEnd=i.length,r.selForContextMenu=n.doc.sel}}function v(){if(t.contextMenuPending==v&&(t.contextMenuPending=!1,t.wrapper.style.cssText=f,o.style.cssText=d,a&&s<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=c),null!=o.selectionStart)){(!a||a&&s<9)&&g();var e=0,i=function(){r.selForContextMenu==n.doc.sel&&0==o.selectionStart&&o.selectionEnd>0&&""==t.prevInput?ro(n,ui)(n):e++<10?r.detectingSelectAll=setTimeout(i,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(i,200)}}},Va.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e,this.textarea.readOnly=!!e},Va.prototype.setUneditable=function(){},Va.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function n(n,r,o,i){e.defaults[n]=r,o&&(t[n]=i?function(e,t,n){n!=ka&&o(e,t,n)}:o)}e.defineOption=n,e.Init=ka,n("value","",(function(e,t){return e.setValue(t)}),!0),n("mode",null,(function(e,t){e.doc.modeOption=t,Lo(e)}),!0),n("indentUnit",2,Lo,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,(function(e){Ro(e),Bn(e),mr(e)}),!0),n("lineSeparator",null,(function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter((function(e){for(var o=0;;){var i=e.text.indexOf(t,o);if(-1==i)break;o=i+t.length,n.push(rt(r,i))}r++}));for(var o=n.length-1;o>=0;o--)vi(e.doc,t,n[o],rt(n[o].line,n[o].ch+t.length))}})),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,(function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),n!=ka&&e.refresh()})),n("specialCharPlaceholder",tn,(function(e){return e.refresh()}),!0),n("electricChars",!0),n("inputStyle",y?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),n("spellcheck",!1,(function(e,t){return e.getInputField().spellcheck=t}),!0),n("autocorrect",!1,(function(e,t){return e.getInputField().autocorrect=t}),!0),n("autocapitalize",!1,(function(e,t){return e.getInputField().autocapitalize=t}),!0),n("rtlMoveVisually",!w),n("wholeLineUpdateBefore",!0),n("theme","default",(function(e){xa(e),bo(e)}),!0),n("keyMap","default",(function(e,t,n){var r=Gi(t),o=n!=ka&&Gi(n);o&&o.detach&&o.detach(e,r),r.attach&&r.attach(e,o||null)})),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,Ta,!0),n("gutters",[],(function(e,t){e.display.gutterSpecs=vo(t,e.options.lineNumbers),bo(e)}),!0),n("fixedGutter",!0,(function(e,t){e.display.gutters.style.left=t?cr(e.display)+"px":"0",e.refresh()}),!0),n("coverGutterNextToScrollbar",!1,(function(e){return Hr(e)}),!0),n("scrollbarStyle","native",(function(e){Jr(e),Hr(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)}),!0),n("lineNumbers",!1,(function(e,t){e.display.gutterSpecs=vo(e.options.gutters,t),bo(e)}),!0),n("firstLineNumber",1,bo,!0),n("lineNumberFormatter",(function(e){return e}),bo,!0),n("showCursorWhenSelecting",!1,br,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,(function(e,t){"nocursor"==t&&(Or(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)})),n("screenReaderLabel",null,(function(e,t){t=""===t?null:t,e.display.input.screenReaderLabelChanged(t)})),n("disableInput",!1,(function(e,t){t||e.display.input.reset()}),!0),n("dragDrop",!0,Ea),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,br,!0),n("singleCursorHeightPerLine",!0,br,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,Ro,!0),n("addModeClass",!1,Ro,!0),n("pollInterval",100),n("undoDepth",200,(function(e,t){return e.doc.history.undoDepth=t})),n("historyEventDelay",1250),n("viewportMargin",10,(function(e){return e.refresh()}),!0),n("maxHighlightLength",1e4,Ro,!0),n("moveInputWithCursor",!0,(function(e,t){t||e.display.input.resetPosition()})),n("tabindex",null,(function(e,t){return e.display.input.getField().tabIndex=t||""})),n("autofocus",null),n("direction","ltr",(function(e,t){return e.doc.setDirection(t)}),!0),n("phrases",null)}(Oa),function(e){var t=e.optionHandlers,n=e.helpers={};e.prototype={constructor:e,focus:function(){F(this).focus(),this.display.input.focus()},setOption:function(e,n){var r=this.options,o=r[e];r[e]==n&&"mode"!=e||(r[e]=n,t.hasOwnProperty(e)&&ro(this,t[e])(this,n,o),ve(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Gi(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;nn&&(Na(this,o.head.line,e,!0),n=o.head.line,r==this.doc.sel.primIndex&&Lr(this));else{var i=o.from(),a=o.to(),s=Math.max(n,i.line);n=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var l=s;l0&&Xo(this.doc,r,new To(i,c[r].to()),K)}}})),getTokenAt:function(e,t){return wt(this,e,t)},getLineTokens:function(e,t){return wt(this,rt(e),t,!0)},getTokenTypeAt:function(e){e=ut(this.doc,e);var t,n=ht(this,Qe(this.doc,e.line)),r=0,o=(n.length-1)/2,i=e.ch;if(0==i)t=n[2];else for(;;){var a=r+o>>1;if((a?n[2*a-1]:0)>=i)o=a;else{if(!(n[2*a+1]i&&(e=i,o=!0),r=Qe(this.doc,e)}else r=e;return Jn(this,r,{top:0,left:0},t||"page",n||o).top+(o?this.doc.height-Vt(r):0)},defaultTextHeight:function(){return ar(this.display)},defaultCharWidth:function(){return sr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,o){var i,a,s=this.display,l=(e=$n(this,ut(this.doc,e))).bottom,c=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),s.sizer.appendChild(t),"over"==r)l=e.top;else if("above"==r||"near"==r){var u=Math.max(s.wrapper.clientHeight,this.doc.height),d=Math.max(s.sizer.clientWidth,s.lineSpace.clientWidth);("above"==r||e.bottom+t.offsetHeight>u)&&e.top>t.offsetHeight?l=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=u&&(l=e.bottom),c+t.offsetWidth>d&&(c=d-t.offsetWidth)}t.style.top=l+"px",t.style.left=t.style.right="","right"==o?(c=s.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==o?c=0:"middle"==o&&(c=(s.sizer.clientWidth-t.offsetWidth)/2),t.style.left=c+"px"),n&&(null!=(a=Mr(i=this,{left:c,top:l,right:c+t.offsetWidth,bottom:l+t.offsetHeight})).scrollTop&&Fr(i,a.scrollTop),null!=a.scrollLeft&&zr(i,a.scrollLeft))},triggerOnKeyDown:oo(da),triggerOnKeyPress:oo(fa),triggerOnKeyUp:pa,triggerOnMouseDown:oo(va),execCommand:function(e){if(na.hasOwnProperty(e))return na[e].call(null,this)},triggerElectric:oo((function(e){Ra(this,e)})),findPosH:function(e,t,n,r){var o=1;t<0&&(o=-1,t=-t);for(var i=ut(this.doc,e),a=0;a0&&a(t.charAt(n-1));)--n;for(;r.5||this.options.lineWrapping)&&dr(this),ve(this,"refresh",this)})),swapDoc:oo((function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),Io(this,e),Bn(this),this.display.input.reset(),Rr(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,dn(this,"swapDoc",this,t),t})),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},we(e),e.registerHelper=function(t,r,o){n.hasOwnProperty(t)||(n[t]=e[t]={_global:[]}),n[t][r]=o},e.registerGlobalHelper=function(t,r,o,i){e.registerHelper(t,r,i),n[t]._global.push({pred:o,val:i})}}(Oa);var Ja="iter insert remove copy getEditor constructor".split(" ");for(var Za in Di.prototype)Di.prototype.hasOwnProperty(Za)&&B(Ja,Za)<0&&(Oa.prototype[Za]=function(e){return function(){return e.apply(this.doc,arguments)}}(Di.prototype[Za]));return we(Di),Oa.inputStyles={textarea:Va,contenteditable:Ua},Oa.defineMode=function(e){Oa.defaults.mode||"null"==e||(Oa.defaults.mode=e),ze.apply(this,arguments)},Oa.defineMIME=function(e,t){Ie[e]=t},Oa.defineMode("null",(function(){return{token:function(e){return e.skipToEnd()}}})),Oa.defineMIME("text/plain","null"),Oa.defineExtension=function(e,t){Oa.prototype[e]=t},Oa.defineDocExtension=function(e,t){Di.prototype[e]=t},Oa.fromTextArea=function(e,t){if((t=t?z(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var n=D(e.ownerDocument);t.autofocus=n==e||null!=e.getAttribute("autofocus")&&n==document.body}function r(){e.value=s.getValue()}var o;if(e.form&&(me(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var i=e.form;o=i.submit;try{var a=i.submit=function(){r(),i.submit=o,i.submit(),i.submit=a}}catch(e){}}t.finishInit=function(n){n.save=r,n.getTextArea=function(){return e},n.toTextArea=function(){n.toTextArea=isNaN,r(),e.parentNode.removeChild(n.getWrapperElement()),e.style.display="",e.form&&(ge(e.form,"submit",r),t.leaveSubmitMethodAlone||"function"!=typeof e.form.submit||(e.form.submit=o))}},e.style.display="none";var s=Oa((function(t){return e.parentNode.insertBefore(t,e.nextSibling)}),t);return s},function(e){e.off=ge,e.on=me,e.wheelEventPixels=So,e.Doc=Di,e.splitLines=Le,e.countColumn=U,e.findColumn=Z,e.isWordChar=ne,e.Pass=H,e.signal=ve,e.Line=Qt,e.changeEnd=No,e.scrollbarModel=Vr,e.Pos=rt,e.cmpPos=ot,e.modes=Fe,e.mimeModes=Ie,e.resolveMode=Ue,e.getMode=We,e.modeExtensions=Be,e.extendMode=He,e.copyState=Ke,e.startState=Je,e.innerMode=Ve,e.commands=na,e.keyMap=Hi,e.keyName=$i,e.isModifierKey=Zi,e.lookupKey=Ji,e.normalizeKeyMap=Vi,e.StringStream=Ze,e.SharedTextMarker=ji,e.TextMarker=Ti,e.LineWidget=Si,e.e_preventDefault=xe,e.e_stopPropagation=ke,e.e_stop=Ce,e.addClass=L,e.contains=M,e.rmClass=T,e.keyNames=zi}(Oa),Oa.version="5.65.12",Oa}()},W9fQ:function(e,t,n){(t=n("JPst")(!1)).push([e.i,"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\n/* stylelint-disable no-duplicate-selectors */\n/* stylelint-disable */\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\n.ant-switch {\n margin: 0;\n padding: 0;\n color: rgba(0, 0, 0, 0.65);\n font-size: 14px;\n font-variant: tabular-nums;\n line-height: 1.5;\n list-style: none;\n font-feature-settings: 'tnum';\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n min-width: 44px;\n height: 22px;\n line-height: 20px;\n vertical-align: middle;\n background-color: rgba(0, 0, 0, 0.25);\n border: 1px solid transparent;\n border-radius: 100px;\n cursor: pointer;\n transition: all 0.36s;\n user-select: none;\n}\n.ant-switch-inner {\n display: block;\n margin-right: 6px;\n margin-left: 24px;\n color: #fff;\n font-size: 12px;\n}\n.ant-switch-loading-icon,\n.ant-switch::after {\n position: absolute;\n top: 1px;\n left: 1px;\n width: 18px;\n height: 18px;\n background-color: #fff;\n border-radius: 18px;\n cursor: pointer;\n transition: all 0.36s cubic-bezier(0.78, 0.14, 0.15, 0.86);\n content: ' ';\n}\n.ant-switch::after {\n box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2);\n}\n.ant-switch:not(.ant-switch-disabled):active::before,\n.ant-switch:not(.ant-switch-disabled):active::after {\n width: 24px;\n}\n.ant-switch-loading-icon {\n z-index: 1;\n display: none;\n font-size: 12px;\n background: transparent;\n}\n.ant-switch-loading-icon svg {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n}\n.ant-switch-loading .ant-switch-loading-icon {\n display: inline-block;\n color: rgba(0, 0, 0, 0.65);\n}\n.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {\n color: #466aff;\n}\n.ant-switch:focus {\n outline: 0;\n box-shadow: 0 0 0 2px rgba(70, 106, 255, 0.2);\n}\n.ant-switch:focus:hover {\n box-shadow: none;\n}\n.ant-switch-small {\n min-width: 28px;\n height: 16px;\n line-height: 14px;\n}\n.ant-switch-small .ant-switch-inner {\n margin-right: 3px;\n margin-left: 18px;\n font-size: 12px;\n}\n.ant-switch-small::after {\n width: 12px;\n height: 12px;\n}\n.ant-switch-small:active::before,\n.ant-switch-small:active::after {\n width: 16px;\n}\n.ant-switch-small .ant-switch-loading-icon {\n width: 12px;\n height: 12px;\n}\n.ant-switch-small.ant-switch-checked .ant-switch-inner {\n margin-right: 18px;\n margin-left: 3px;\n}\n.ant-switch-small.ant-switch-checked .ant-switch-loading-icon {\n left: 100%;\n margin-left: -13px;\n}\n.ant-switch-small.ant-switch-loading .ant-switch-loading-icon {\n font-weight: bold;\n transform: scale(0.66667);\n}\n.ant-switch-checked {\n background-color: #466aff;\n}\n.ant-switch-checked .ant-switch-inner {\n margin-right: 24px;\n margin-left: 6px;\n}\n.ant-switch-checked::after {\n left: 100%;\n margin-left: -1px;\n transform: translateX(-100%);\n}\n.ant-switch-checked .ant-switch-loading-icon {\n left: 100%;\n margin-left: -19px;\n}\n.ant-switch-loading,\n.ant-switch-disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n.ant-switch-loading *,\n.ant-switch-disabled * {\n cursor: not-allowed;\n}\n.ant-switch-loading::before,\n.ant-switch-disabled::before,\n.ant-switch-loading::after,\n.ant-switch-disabled::after {\n cursor: not-allowed;\n}\n@keyframes AntSwitchSmallLoadingCircle {\n 0% {\n transform: rotate(0deg) scale(0.66667);\n transform-origin: 50% 50%;\n }\n 100% {\n transform: rotate(360deg) scale(0.66667);\n transform-origin: 50% 50%;\n }\n}\n",""]),e.exports=t},Wgwc:function(e,t,n){e.exports=function(){"use strict";var e=6e4,t=36e5,n="millisecond",r="second",o="minute",i="hour",a="day",s="week",l="month",c="quarter",u="year",d="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},g=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},v={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),o=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(o,2,"0")},m:function e(t,n){if(t.date()1)return e(a[0])}else{var s=t.name;b[s]=t,o=s}return!r&&o&&(y=o),o||!r&&y},x=function(e,t){if(_(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new S(n)},k=v;k.l=w,k.i=_,k.w=function(e,t){return x(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var S=function(){function h(e){this.$L=w(e.locale,null,!0),this.parse(e)}var g=h.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(k.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(f);if(r){var o=r[2]-1||0,i=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],o,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)):new Date(r[1],o,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)}}return new Date(t)}(e),this.$x=e.x||{},this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return k},g.isValid=function(){return!(this.$d.toString()===p)},g.isSame=function(e,t){var n=x(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return x(e)0&&o.default.createElement("span",{className:"infoCount"},r.total_count)),r&&r.total_count>0?r.list.map((function(e,r){return 0===r&&o.default.createElement(i.AlignTop,{className:"mt10"},o.default.createElement("div",null,o.default.createElement("p",{className:"font-16 color-grey-6",style:{display:"flex",alignItems:"center"}},o.default.createElement(a.Link,{to:{pathname:"/"+t+"/"+n+"/releases",query:{turnFromNew:!0}},style:{maxWidth:"200px",overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}},e.name),o.default.createElement("span",{className:"font-12 laterest ml5"},"最新")),o.default.createElement("p",{className:"color-grey-3 font-12"},e.created_at)))})):o.default.createElement("div",{className:"mt8"},"暂无发行版",s&&o.default.createElement(a.Link,{className:"color-blue ml20",to:{pathname:"/"+t+"/"+n+"/releases/new",state:{stable:!0}}},"创建新版本")))}},YIv0:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n("PArb"));n("/zsF");var o=n("cDcd"),i=l(o),a=n("spEH"),s=l(n("vDqi"));function l(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.owner,n=e.projectsId,l=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,o.useState)(void 0),2),c=l[0],u=l[1];function d(){for(var e="#",t=["1","2","3","4","4","5","6","7","8","9","a","b","c","d","e","f"],n=0;n<6;n++)e+=t[parseInt(16*Math.random())];return e}return(0,o.useEffect)((function(){var e;e="/"+t+"/"+n+"/languages.json",s.default.get(e).then((function(e){if(e){var t=e.data;if(t){var n=[];Object.keys(t).map((function(e,r){n.push({name:e,percent:t[e],color:d()})})),u(n)}}})).catch((function(e){}))}),[]),c&&c.length>0?i.default.createElement("div",null,i.default.createElement(r.default,null),i.default.createElement("p",{className:"font-16 color-ooo aboutSubTitle"},"开发语言"),i.default.createElement("div",{className:"progress"},c&&c.map((function(e,t){return i.default.createElement("span",{key:e.id||t,style:{width:e.percent,backgroundColor:e.color}})}))),c&&c.length>0&&i.default.createElement(a.FlexAJ,{className:"progresstip"},c.map((function(e,t){return i.default.createElement("span",{key:e.id||t},i.default.createElement("i",{className:"zero",style:{backgroundColor:""+e.color}}),i.default.createElement("span",null,e.name),i.default.createElement("span",null,e.percent))})))):""}},YXVS:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.underscoreToCamelcase=function e(t){if(Array.isArray(t))return t.map((function(t){return e(t)}));if("object"!==(void 0===t?"undefined":r(t))||null==t)return t;var n={};for(var o in t)if(!t.hasOwnProperty||t.hasOwnProperty(o)){n[o.replace(/_([a-z])/g,(function(e){return e[1].toUpperCase()}))]=e(t[o])}return n},t.camelcaseToUnderscore=function e(t){if(Array.isArray(t))return t.map((function(t){return e(t)}));if("object"!==(void 0===t?"undefined":r(t))||null==t)return t;var n={};for(var o in t)if(!t.hasOwnProperty||t.hasOwnProperty(o)){n[o.replace(/([a-z][A-Z])/g,(function(e){return e[0]+"_"+e[1].toLowerCase()}))]=e(t[o])}return n}},a2PE:function(e,t,n){"use strict";(function(e){function r(){return(r=Object.assign||function(e){for(var t=1;t0&&D.filter((function(t){return t.name.indexOf(e.target.value)>-1})):D;F(t)}})),c.default.createElement(o.default,{mode:"horizontal",className:"navUl",selectedKeys:[U],onClick:function(e){W(e.key),N(!0),"branch"===e.key?(d(g,v),E(0)):(f(g,v),E(1))}},c.default.createElement(o.default.Item,{key:"branch"},"分支"),h&&c.default.createElement(o.default.Item,{key:"tag"},"标签")),c.default.createElement(r.default,{spinning:j},c.default.createElement("ul",{className:"OptionsUl",id:"ul-btn"},A&&A.length>0&&A.map((function(e,t){return c.default.createElement("li",{key:t,onClick:function(){return t=e.name,void m(t);var t}},c.default.createElement("a",{className:"task-hide ulALink"},e.name))})),A&&0===A.length&&c.default.createElement("p",{className:"listTips"},"暂无",w,0===C?"分支":"标签","~"))))}},czTT:function(e,t,n){var r=n("W9fQ");"string"==typeof r&&(r=[[e.i,r,""]]);n("aET+")(r,{hmr:!0,transform:void 0}),r.locals&&(e.exports=r.locals)},dEUZ:function(e,t,n){},eIPa:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=g(n("diRs")),o=g(n("W9HT")),i=g(n("2/Rp")),a=g(n("14Xm")),s=Object.assign||function(e){for(var t=1;t0&&u.default.createElement("p",{className:"task-hide",style:{maxWidth:"215px"}},"所属组织:",function(e){var t="";return e.map((function(e){t=t+e.name+"、"})),t&&t.substr(0,t.length-1)}(e.organizations))))),u.default.createElement(d.AlignCenter,{className:"menuinfos"},u.default.createElement(p.Link,{to:"/"+e.login+"/projects"},u.default.createElement("span",null,e.projects_count),u.default.createElement("span",null,"项目数")),u.default.createElement(p.Link,{to:"/"+e.login+"/followers"},u.default.createElement("span",null,e.followers_count),u.default.createElement("span",null,"粉丝数")),u.default.createElement(p.Link,{to:"/"+e.login+"/following"},u.default.createElement("span",null,e.following_count),u.default.createElement("span",null,"关注数")),H(e.login)&&u.default.createElement("a",null,u.default.createElement("span",null,H(e.login)),u.default.createElement("span",null,"贡献度"))),u.default.createElement("div",{className:"pb20",style:{display:"flex",justifyContent:"center"}},b&&b===e.login?u.default.createElement(i.default,{className:"currentBtn"},"当前用户"):e.is_watch?u.default.createElement(i.default,{type:"default",onClick:function(){return V(!1,e.login)}},"已关注"):u.default.createElement(i.default,{type:"primary",onClick:function(){return V(!0,e.login)}},"关注TA")));R(t)}}function V(e,t){(0,h.default)({method:e?"post":"delete",url:"/watchers/"+(e?"follow":"unfollow")+".json",params:{target_type:"user",id:t}}).then((function(n){if(n&&(0===n.data.status||2===n.data.status)){var r=x&&x.filter((function(e){return e.login===t}));r&&(r[0].is_watch=e),K(r[0])}})).catch((function(e){}))}function J(e,t,n){t!==F&&I(t);var r=E.concat();r.map((function(e){return e.visible=!1})),e&&(r[n].visible=e),r.splice(),T(r)}return(0,c.useEffect)((function(){var e;e="/"+v+"/"+y+"/contributors.json",h.default.get(e).then((function(e){e&&(P(e.data.total_count),T(e.data.list))})).catch((function(e){}))}),[]),(0,c.useEffect)((function(){F?g(F):R(void 0)}),[F]),N>0?u.default.createElement("div",{className:"halfs"},u.default.createElement(p.Link,{to:"/"+v+"/"+y+"/contribute",onClick:function(){window.scrollTo(0,0)},className:"font-16 color-ooo hoverA"},u.default.createElement("span",null,"贡献者"),N>0&&u.default.createElement("span",{className:"infoCount"},N)),u.default.createElement("div",{className:"attrPerson",onMouseLeave:function(){return J(!1)}},E&&E.length>0&&E.map((function(e,t){return e.login?u.default.createElement(r.default,{content:L,visible:e.visible,overlayClassName:"menuPanels",placement:"top"},u.default.createElement("a",{key:t,href:"/"+e.login},u.default.createElement("img",{src:(0,f.getImageUrl)("/"+e.image_url),alt:"",onMouseOver:function(){return J(!0,e.login,t)}}))):u.default.createElement("a",{key:t,href:"mailto:"+e.email},u.default.createElement("img",{src:(0,f.getImageUrl)("/"+e.image_url),alt:"",onMouseOver:function(){return J(!0,e.login,t)}}))})))):""}},ewDg:function(e,t,n){!function(e){"use strict";function t(e){for(var t={},n=0;n*\/]/.test(n)?x(null,"select-op"):"."==n&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?x("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(n)?x(null,n):e.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(e.current())&&(t.tokenize=C),x("variable callee","variable")):/[\w\\\-]/.test(n)?(e.eatWhile(/[\w\\\-]/),x("property","word")):x(null,null):/[\d.]/.test(e.peek())?(e.eatWhile(/[\w.%]/),x("number","unit")):e.match(/^-[\w\\\-]*/)?(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?x("variable-2","variable-definition"):x("variable-2","variable")):e.match(/^\w+-/)?x("meta","meta"):void 0}function S(e){return function(t,n){for(var r,o=!1;null!=(r=t.next());){if(r==e&&!o){")"==e&&t.backUp(1);break}o=!o&&"\\"==r}return(r==e||!o&&")"!=e)&&(n.tokenize=null),x("string","string")}}function C(e,t){return e.next(),e.match(/^\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=S(")"),x(null,"(")}function E(e,t,n){this.type=e,this.indent=t,this.prev=n}function T(e,t,n,r){return e.context=new E(n,t.indentation()+(!1===r?0:a),e.context),n}function O(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function j(e,t,n){return M[n.context.type](e,t,n)}function N(e,t,n,r){for(var o=r||1;o>0;o--)n.context=n.context.prev;return j(e,t,n)}function P(e){var t=e.current().toLowerCase();i=v.hasOwnProperty(t)?"atom":g.hasOwnProperty(t)?"keyword":"variable"}var M={top:function(e,t,n){if("{"==e)return T(n,t,"block");if("}"==e&&n.context.prev)return O(n);if(_&&/@component/i.test(e))return T(n,t,"atComponentBlock");if(/^@(-moz-)?document$/i.test(e))return T(n,t,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return T(n,t,"atBlock");if(/^@(font-face|counter-style)/i.test(e))return n.stateArg=e,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return"keyframes";if(e&&"@"==e.charAt(0))return T(n,t,"at");if("hash"==e)i="builtin";else if("word"==e)i="tag";else{if("variable-definition"==e)return"maybeprop";if("interpolation"==e)return T(n,t,"interpolation");if(":"==e)return"pseudo";if(y&&"("==e)return T(n,t,"parens")}return n.context.type},block:function(e,t,n){if("word"==e){var r=t.current().toLowerCase();return p.hasOwnProperty(r)?(i="property","maybeprop"):f.hasOwnProperty(r)?(i=w?"string-2":"property","maybeprop"):y?(i=t.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(i+=" error","maybeprop")}return"meta"==e?"block":y||"hash"!=e&&"qualifier"!=e?M.top(e,t,n):(i="error","block")},maybeprop:function(e,t,n){return":"==e?T(n,t,"prop"):j(e,t,n)},prop:function(e,t,n){if(";"==e)return O(n);if("{"==e&&y)return T(n,t,"propBlock");if("}"==e||"{"==e)return N(e,t,n);if("("==e)return T(n,t,"parens");if("hash"!=e||/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(t.current())){if("word"==e)P(t);else if("interpolation"==e)return T(n,t,"interpolation")}else i+=" error";return"prop"},propBlock:function(e,t,n){return"}"==e?O(n):"word"==e?(i="property","maybeprop"):n.context.type},parens:function(e,t,n){return"{"==e||"}"==e?N(e,t,n):")"==e?O(n):"("==e?T(n,t,"parens"):"interpolation"==e?T(n,t,"interpolation"):("word"==e&&P(t),"parens")},pseudo:function(e,t,n){return"meta"==e?"pseudo":"word"==e?(i="variable-3",n.context.type):j(e,t,n)},documentTypes:function(e,t,n){return"word"==e&&l.hasOwnProperty(t.current())?(i="tag",n.context.type):M.atBlock(e,t,n)},atBlock:function(e,t,n){if("("==e)return T(n,t,"atBlock_parens");if("}"==e||";"==e)return N(e,t,n);if("{"==e)return O(n)&&T(n,t,y?"block":"top");if("interpolation"==e)return T(n,t,"interpolation");if("word"==e){var r=t.current().toLowerCase();i="only"==r||"not"==r||"and"==r||"or"==r?"keyword":c.hasOwnProperty(r)?"attribute":u.hasOwnProperty(r)?"property":d.hasOwnProperty(r)?"keyword":p.hasOwnProperty(r)?"property":f.hasOwnProperty(r)?w?"string-2":"property":v.hasOwnProperty(r)?"atom":g.hasOwnProperty(r)?"keyword":"error"}return n.context.type},atComponentBlock:function(e,t,n){return"}"==e?N(e,t,n):"{"==e?O(n)&&T(n,t,y?"block":"top",!1):("word"==e&&(i="error"),n.context.type)},atBlock_parens:function(e,t,n){return")"==e?O(n):"{"==e||"}"==e?N(e,t,n,2):M.atBlock(e,t,n)},restricted_atBlock_before:function(e,t,n){return"{"==e?T(n,t,"restricted_atBlock"):"word"==e&&"@counter-style"==n.stateArg?(i="variable","restricted_atBlock_before"):j(e,t,n)},restricted_atBlock:function(e,t,n){return"}"==e?(n.stateArg=null,O(n)):"word"==e?(i="@font-face"==n.stateArg&&!m.hasOwnProperty(t.current().toLowerCase())||"@counter-style"==n.stateArg&&!h.hasOwnProperty(t.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},keyframes:function(e,t,n){return"word"==e?(i="variable","keyframes"):"{"==e?T(n,t,"top"):j(e,t,n)},at:function(e,t,n){return";"==e?O(n):"{"==e||"}"==e?N(e,t,n):("word"==e?i="tag":"hash"==e&&(i="builtin"),"at")},interpolation:function(e,t,n){return"}"==e?O(n):"{"==e||";"==e?N(e,t,n):("word"==e?i="variable":"variable"!=e&&"("!=e&&")"!=e&&(i="error"),"interpolation")}};return{startState:function(e){return{tokenize:null,state:r?"block":"top",stateArg:null,context:new E(r?"block":"top",e||0,null)}},token:function(e,t){if(!t.tokenize&&e.eatSpace())return null;var n=(t.tokenize||k)(e,t);return n&&"object"==typeof n&&(o=n[1],n=n[0]),i=n,"comment"!=o&&(t.state=M[t.state](o,e,t)),i},indent:function(e,t){var n=e.context,r=t&&t.charAt(0),o=n.indent;return"prop"!=n.type||"}"!=r&&")"!=r||(n=n.prev),n.prev&&("}"!=r||"block"!=n.type&&"top"!=n.type&&"interpolation"!=n.type&&"restricted_atBlock"!=n.type?(")"!=r||"parens"!=n.type&&"atBlock_parens"!=n.type)&&("{"!=r||"at"!=n.type&&"atBlock"!=n.type)||(o=Math.max(0,n.indent-a)):o=(n=n.prev).indent),o},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:b,fold:"brace"}}));var n=["domain","regexp","url","url-prefix"],r=t(n),o=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],i=t(o),a=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover","prefers-color-scheme","dynamic-range","video-dynamic-range"],s=t(a),l=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive","dark","light","standard","high"],c=t(l),u=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","all","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","binding","bleed","block-size","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-content","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-height-step","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotate","rotation","rotation-point","row-gap","ruby-align","ruby-overhang","ruby-position","ruby-span","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-type","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-orientation","text-outline","text-overflow","text-rendering","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","touch-action","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","paint-order","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],d=t(u),p=["accent-color","aspect-ratio","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","content-visibility","margin-block","margin-block-end","margin-block-start","margin-inline","margin-inline-end","margin-inline-start","overflow-anchor","overscroll-behavior","padding-block","padding-block-end","padding-block-start","padding-inline","padding-inline-end","padding-inline-start","scroll-snap-stop","scrollbar-3d-light-color","scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-track-color","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","shape-inside","zoom"],f=t(p),m=t(["font-display","font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]),h=t(["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"]),g=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],v=t(g),y=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","blur","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","brightness","bullets","button","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","conic-gradient","contain","content","contents","content-box","context-menu","continuous","contrast","copy","counter","counters","cover","crop","cross","crosshair","cubic-bezier","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","drop-shadow","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","grayscale","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","hue-rotate","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","manipulation","match","matrix","matrix3d","media-play-button","media-slider","media-sliderthumb","media-volume-slider","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiple_mask_images","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturate","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","sepia","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],b=t(y),_=n.concat(o).concat(a).concat(l).concat(u).concat(p).concat(g).concat(y);function w(e,t){for(var n,r=!1;null!=(n=e.next());){if(r&&"/"==n){t.tokenize=null;break}r="*"==n}return["comment","comment"]}e.registerHelper("hintWords","css",_),e.defineMIME("text/css",{documentTypes:r,mediaTypes:i,mediaFeatures:s,mediaValueKeywords:c,propertyKeywords:d,nonStandardPropertyKeywords:f,fontProperties:m,counterDescriptors:h,colorKeywords:v,valueKeywords:b,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=w,w(e,t))}},name:"css"}),e.defineMIME("text/x-scss",{mediaTypes:i,mediaFeatures:s,mediaValueKeywords:c,propertyKeywords:d,nonStandardPropertyKeywords:f,colorKeywords:v,valueKeywords:b,fontProperties:m,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=w,w(e,t)):["operator","operator"]},":":function(e){return!!e.match(/^\s*\{/,!1)&&[null,null]},$:function(e){return e.match(/^[\w-]+/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(e){return!!e.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),e.defineMIME("text/x-less",{mediaTypes:i,mediaFeatures:s,mediaValueKeywords:c,propertyKeywords:d,nonStandardPropertyKeywords:f,colorKeywords:v,valueKeywords:b,fontProperties:m,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=w,w(e,t)):["operator","operator"]},"@":function(e){return e.eat("{")?[null,"interpolation"]:!e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1)&&(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),e.defineMIME("text/x-gss",{documentTypes:r,mediaTypes:i,mediaFeatures:s,propertyKeywords:d,nonStandardPropertyKeywords:f,fontProperties:m,counterDescriptors:h,colorKeywords:v,valueKeywords:b,supportsAtComponent:!0,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=w,w(e,t))}},name:"css",helperType:"gss"})}(n("VrN/"))},ewr9:function(e,t,n){},"gR/i":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n("kLXV")),o=u(n("2/Rp")),i=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")};n("2qtc"),n("+L6B");var a=n("cDcd"),s=u(a),l=u(n("k2Mo")),c=u(n("bIax"));function u(e){return e&&e.__esModule?e:{default:e}}n("/oTB"),t.default=function(e){var t=e.visible,n=e.onCancel,u=e.onOk,d=e.showNotification,p=e.loading,f=(0,a.useState)(void 0),m=i(f,2),h=m[0],g=m[1],v=(0,a.useState)(!1),y=i(v,2),b=y[0],_=y[1],w=(0,a.useRef)(null);return s.default.createElement(r.default,{title:"替换文件",width:"500px",visible:t,onCancel:n,footer:s.default.createElement("div",null,s.default.createElement(o.default,{onClick:function(){g(void 0),n()}},"取消"),s.default.createElement(o.default,{onClick:function(){!b&&h?u&&u(h):_(!0)},type:"primary",className:"ml20",loading:p},"确定"))},s.default.createElement(l.default,{className:"replaceStyle",load:function(e){g(e),_(!e)},ref:w,icon:s.default.createElement("img",{src:c.default,width:"58",alt:"",style:{marginBottom:15}}),size:5,showNotification:d}),s.default.createElement("p",{className:"color-red"},b?"请上传文件!":""))}},gUMM:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=D(n("W9HT")),o=D(n("PArb")),i=D(n("2/Rp")),a=D(n("jsC+")),s=D(n("BvKs")),l=Object.assign||function(e){for(var t=1;t0){var e=Wt.filter((function(e){return"pulls"===e.menu_name})),t=Wt.filter((function(e){return"issues"===e.menu_name}));e&&0===e.length&&Et(!1),t&&0===t.length&&Nt(!1)}}),[Wt]),(0,u.useEffect)((function(){Bt&&(ut(Bt.topics),Ye(Bt.description),nt(Bt.website),at(Bt.lesson_url),yt(Bt.default_branch),L(Bt.invite_code))}),[Bt,Ut]),(0,u.useEffect)((function(){if(Bt){var e=Bt.author,t=Bt.name,n=Bt.description,r=Bt.default_branch;document.title=At&&At!==r?e.name+"/"+t+"-"+At+"-for gitlink;for git":e.name+"/"+t+(n?": "+n:"")+"-for gitlink;for git"}}),[U,Bt,At]),(0,u.useEffect)((function(){W(A?decodeURIComponent(A).split("/"):void 0)}),[A]),(0,u.useEffect)((function(){if(qt&&Rt&&vt&&0===Ut){var e=(0,f.turnbar)(At);if(Ft.indexOf("/"+Rt+"/"+qt)>-1&&Ft.indexOf("/tree/"+e+"/")>-1){var t=Ft.split("/tree/"+e+"/")[1];F(t),Vt(t,At),ee("file")}else F(void 0),function(e){qe(!0);var t="/"+Rt+"/"+qt+"/entries.json";b.default.get(t,{params:{ref:e}}).then((function(e){if(e){pe(e.data.commits_count),ge(e.data.entries),_e(void 0),Oe(e.data.tar_url),Se(e.data.zip_url);var t=e.data.last_commit;V(t&&t.commit),$(t&&t.author),He(!0),Me(!0),xt(!1),oe(!0),Kt("",At||vt)}setTimeout((function(){qe(!1)}),500)})).catch((function(e){qe(!1)}))}(At||vt),ee("dir")}}),[qt,Rt,Ft,vt,Ut]),(0,u.useEffect)((function(){if(qt&&Rt&&vt&&0===Ut&&!It){var e=(0,f.turnbar)(At);Vt(Ft.split("/tree/"+e+"/")[1],At)}}),[It]),(0,u.useEffect)((function(){zt&&0===Ut&&(Me(-1!==e.history.location.search.indexOf("edit")),b.default.get("/"+Rt+"/"+qt+"/releases.json").then((function(e){if(e&&e.data){var t={list:e.data.releases,total_count:e.data.releases&&e.data.releases.length};Lt(t)}})))}),[zt,Ut]),(0,u.useEffect)((function(){if(Bt&&K){var e=document.getElementById("ptxt");e&&e.offsetHeight>36&&le(!0)}}),[Bt,K]);var Qt,$t,Gt=d.default.createElement(g.default,{http_url:Bt&&Bt.clone_url,ssh_url:Bt&&e&&e.platform&&Bt.ssh_url,zip_url:e&&e.platform&&ke,tar_url:e&&e.platform&&Te,showNotification:e.showNotification}),Yt=be&&be.name,Xt=Yt&&".md"===Yt.substring(Yt.length-3,Yt.length),en=e.current_user,tn=e.checkIfLogin,nn=e.showLoginDialog,rn=en&&en.login&&jt,on=Bt&&Bt.permission&&"Reporter"!==Bt.permission&&2!==Bt.type&&Ct&&e.platform,an="dir"===X&&Bt&&2!==Bt.type&&(Bt.permission&&"Reporter"!==Bt.permission||en&&en.admin);return d.default.createElement(p.WhiteBack,null,0===Ut&&d.default.createElement(O.default,{desc:Ge,website:tt,lesson_url:it,topicsInfo:ct,visible:Je,onCancel:function(){return Ze(!1)},onOk:function(e,t,n,r){var o="/"+Rt+"/"+qt+".json";b.default.put(o,{description:e,website:t||"",lesson_url:n||"",project_topic_names:r}).then((function(e){e&&e.data&&e.data.id&&(Ye(e.data.description),nt(e.data.website),at(e.data.lesson_url),ut(e.data.topics))}))}}),d.default.createElement(r.default,{spinning:Re},(he||be)&&0===Ut&&d.default.createElement(d.default.Fragment,null,d.default.createElement(T.default,{history:e.history,owner:Rt,projectsId:qt,name:Bt&&Bt.name,branch:At||vt,visible:Ie,onClose:function(){return ze(!1)},list:Be?he:void 0}),d.default.createElement("div",{className:"drawerBtn",onClick:function(){return ze(!0)}},d.default.createElement("i",{className:"iconfont icon-zuohuaicon font-14"}),d.default.createElement("span",null,"目录"))),d.default.createElement("div",{style:{minHeight:"500px"}},Bt&&d.default.createElement(p.Box,{className:"Panels"},d.default.createElement(p.LongWidth,null,d.default.createElement("div",{className:"panelmenu"},d.default.createElement(p.FlexAJ,null,d.default.createElement(p.AlignCenter,null,d.default.createElement("div",{className:"mr30"},e&&e.platform&&0===Ut?d.default.createElement(v.default,{repo_id:Bt&&Bt.repo_id,projectsId:qt,branch:At||vt,changeBranch:function(t){var n="/"+Rt+"/"+qt+(t&&"/tree/"+t)+(A?"/"+A:"");e.history.push(n)},owner:Rt,history:e.history,branchList:Bt&&Bt.branches&&Bt.branches.list}):d.default.createElement("span",null,"分支:",d.default.createElement("span",{className:"color-grey-6"},At||vt))),U&&U.length>0?d.default.createElement(_.default,{identifier:Bt&&Bt.identifier,treeValuePath:U,returnUlr:function(t){var n=(0,f.turnbar)(At);ee("dir"),e.history.push("/"+Rt+"/"+qt+"/tree"+(n?"/"+n:"")+"/"+t)},returnMain:function(){F(void 0);var t=At||vt,n=(0,f.turnbar)(t);e.history.push("/"+Rt+"/"+qt+"/tree/"+n)},getPathUrl:function(e,t){if(e&&e.length>0&&t){for(var n="",r=0;r0||be?d.default.createElement("div",{className:"listtable"},(K&&K.message||Q)&&d.default.createElement("div",{className:"listtablehead"},Q&&d.default.createElement(y.default,{url:(0,f.getImageUrl)("/"+Q.image_url),name:Q.name,id:Q.id,login:Q.login}),K.message&&d.default.createElement("div",{className:se&&re?"ellipsistxt hidetxt":"ellipsistxt"},d.default.createElement("pre",{id:"ptxt"},d.default.createElement(m.Link,{to:"/"+Rt+"/"+qt+"/commits/"+(0,h.truncateCommitId)(K.sha)},d.default.createElement(M.default,{value:K.message})))),se&&d.default.createElement("span",{className:"ellipsis",onClick:function(){return function(e){oe(!e)}(re)}},d.default.createElement("i",{className:"iconfont icon-shenglvehao"})),d.default.createElement("span",{className:"ml20 color-grey-6 font-12 mt3"},K.time_from_now),de?d.default.createElement(m.Link,{to:"/"+Rt+"/"+qt+"/commits/branch/"+(0,f.turnbar)(At||vt),className:"ml20 color-grey-3",style:{height:"28px",lineHeight:"28px"}},d.default.createElement("i",{className:"iconfont icon-tijiaoicon mr3 font-16"}),d.default.createElement("span",{style:{fontWeight:"500"}},de,"次提交")):""),d.default.createElement("ul",{className:"listtablebody"},he&&he.length>0&&he.map((function(t,n){return d.default.createElement(w.default,{key:t.id||n,owner:Rt,item:t,projectsId:qt,goToSubRoot:Jt,platform:e.platform})})),be&&d.default.createElement(k.default,l({},e,{detail:be,readOnly:Pe,md:Xt,onEdit:function(t){Me(t),xt(!1);var n=e.history;t?n.push(n.location.pathname):n.push(n.location.pathname+"?edit")},currentBranch:At||vt,branch:At||vt,type:Bt.type,treeValuePath:U})))):"",he&&0===he.length&&!be?d.default.createElement(j.default,{_html:"暂未发现文件"}):"",ft&&ft.replace_content?d.default.createElement(x.default,{ChangeFile:function(t,n){var r=At||vt,o=(0,f.turnbar)(r);e.history.push("/"+Rt+"/"+qt+"/tree/"+o+"/"+t+"?edit"),ee("file"),xt(!0)},readme:ft,operate:e&&(e.isManager||e.isDeveloper)&&2!==Bt.type,history:e.history}):"")),!(U&&U.length>0)&&!be&&d.default.createElement(p.ShortWidth,null,d.default.createElement(p.Gap,{style:{paddingLeft:"30px"}},d.default.createElement("div",{className:"panelmenu"},d.default.createElement(p.FlexAJ,{className:"font-18 color-ooo mb20",style:{lineHeight:"28px"}},"关于",Bt.permission&&("Admin"===Bt.permission||"Owner"===Bt.permission||"Manager"===Bt.permission)&&d.default.createElement("i",{onClick:function(){return Ze(!0)},className:"iconfont icon-a-shezhi color-grey-9 font-15 pointer"})),Ge&&d.default.createElement("p",{className:"font-14 color-grey-3 mb15 task-hide-2",style:{lineHeight:"24px",WebkitLineClamp:"4",textAlign:"justify",wordBreak:"break-all"},title:Ge},Ge),ct&&d.default.createElement("div",{className:"projectHomeTopics"},ct.map((function(e){return d.default.createElement(m.Link,{to:"/explore/topic/"+e.id+"/"+encodeURIComponent(e.name),className:"proHomeTopic mr15 mb10 font-13 task-hide"},e.name)}))),tt&&d.default.createElement("div",{className:"color-grey-6 df pinfos mb5"},d.default.createElement("i",{className:"iconfont icon-lianjie2 font-15 mr10"}),d.default.createElement("a",{href:tt,target:"_blank",style:{wordBreak:"break-all",lineHeight:"20px",marginTop:"5px",textDecoration:"underline"}},tt)),d.default.createElement("div",{className:"pinfos mb5"},d.default.createElement("i",{className:"iconfont icon-zishuwenjian_icon font-15 mr10"}),d.default.createElement("a",{href:"#readme"},"README.md")),d.default.createElement("div",{className:"color-grey-6 mb5"},d.default.createElement("i",{className:"iconfont icon-neicunicon font-15 mr10"}),d.default.createElement("span",null,Bt&&Bt.size)),Bt&&Bt.license_name&&d.default.createElement("div",{className:"pinfos"},d.default.createElement("i",{className:"iconfont icon-xieyiicon font-16 mr10"}),d.default.createElement(m.Link,{to:"/"+Rt+"/"+qt+"/tree/"+(0,f.turnbar)(At||vt)+"/LICENSE",className:"color-grey-6"},Bt.license_name))),D&&d.default.createElement("div",null,d.default.createElement(o.default,null),d.default.createElement(N.default,{code:D})),it&&d.default.createElement("div",null,d.default.createElement(o.default,null),d.default.createElement("p",{className:"font-16 color-ooo"},"实践课程"),d.default.createElement("a",{href:it,target:"_blank",className:"color-grey-6",style:{textDecoration:"underline",wordBreak:"break-all"}},it)),Dt&&d.default.createElement(d.default.Fragment,null,d.default.createElement(o.default,null),d.default.createElement(S.default,{owner:Rt,projectsId:qt,releaseVersions:Dt,history:e.history,distribution:Ht})),0===Ut&&d.default.createElement(C.default,{owner:Rt,projectsId:qt}),0===Ut&&d.default.createElement(E.default,{owner:Rt,projectsId:qt})))))))}},gmHK:function(e,t,n){(t=n("JPst")(!1)).push([e.i,"/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\n/* stylelint-disable no-duplicate-selectors */\n/* stylelint-disable */\n/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */\n@keyframes antCheckboxEffect {\n 0% {\n transform: scale(1);\n opacity: 0.5;\n }\n 100% {\n transform: scale(1.6);\n opacity: 0;\n }\n}\n.ant-tree.ant-tree-directory {\n position: relative;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-switcher,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-switcher {\n position: relative;\n z-index: 1;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-switcher.ant-tree-switcher-noop,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-switcher.ant-tree-switcher-noop {\n pointer-events: none;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-checkbox,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-checkbox {\n position: relative;\n z-index: 1;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper {\n border-radius: 0;\n user-select: none;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover {\n background: transparent;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper:hover::before,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper:hover::before {\n background: #f0f5ff;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper.ant-tree-node-selected,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper.ant-tree-node-selected {\n color: #fff;\n background: transparent;\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper::before,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper::before {\n position: absolute;\n right: 0;\n left: 0;\n height: 24px;\n transition: all 0.3s;\n content: '';\n}\n.ant-tree.ant-tree-directory > li span.ant-tree-node-content-wrapper > span,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li span.ant-tree-node-content-wrapper > span {\n position: relative;\n z-index: 1;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-switcher,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-switcher {\n color: #fff;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox .ant-tree-checkbox-inner {\n border-color: #466aff;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked::after,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked::after {\n border-color: #fff;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner {\n background: #fff;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-checkbox.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\n border-color: #466aff;\n}\n.ant-tree.ant-tree-directory > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper::before,\n.ant-tree.ant-tree-directory .ant-tree-child-tree > li.ant-tree-treenode-selected > span.ant-tree-node-content-wrapper::before {\n background: #466aff;\n}\n.ant-tree-checkbox {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n color: rgba(0, 0, 0, 0.65);\n font-size: 14px;\n font-variant: tabular-nums;\n line-height: 1.5;\n list-style: none;\n font-feature-settings: 'tnum';\n position: relative;\n top: -0.09em;\n display: inline-block;\n line-height: 1;\n white-space: nowrap;\n vertical-align: middle;\n outline: none;\n cursor: pointer;\n}\n.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner,\n.ant-tree-checkbox:hover .ant-tree-checkbox-inner,\n.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner {\n border-color: #466aff;\n}\n.ant-tree-checkbox-checked::after {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 1px solid #466aff;\n border-radius: 2px;\n visibility: hidden;\n animation: antCheckboxEffect 0.36s ease-in-out;\n animation-fill-mode: backwards;\n content: '';\n}\n.ant-tree-checkbox:hover::after,\n.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox::after {\n visibility: visible;\n}\n.ant-tree-checkbox-inner {\n position: relative;\n top: 0;\n left: 0;\n display: block;\n width: 16px;\n height: 16px;\n background-color: #fff;\n border: 1px solid #d9d9d9;\n border-radius: 2px;\n border-collapse: separate;\n transition: all 0.3s;\n}\n.ant-tree-checkbox-inner::after {\n position: absolute;\n top: 50%;\n left: 22%;\n display: table;\n width: 5.71428571px;\n height: 9.14285714px;\n border: 2px solid #fff;\n border-top: 0;\n border-left: 0;\n transform: rotate(45deg) scale(0) translate(-50%, -50%);\n opacity: 0;\n transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s;\n content: ' ';\n}\n.ant-tree-checkbox-input {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n cursor: pointer;\n opacity: 0;\n}\n.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\n position: absolute;\n display: table;\n border: 2px solid #fff;\n border-top: 0;\n border-left: 0;\n transform: rotate(45deg) scale(1) translate(-50%, -50%);\n opacity: 1;\n transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;\n content: ' ';\n}\n.ant-tree-checkbox-checked .ant-tree-checkbox-inner {\n background-color: #466aff;\n border-color: #466aff;\n}\n.ant-tree-checkbox-disabled {\n cursor: not-allowed;\n}\n.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after {\n border-color: rgba(0, 0, 0, 0.25);\n animation-name: none;\n}\n.ant-tree-checkbox-disabled .ant-tree-checkbox-input {\n cursor: not-allowed;\n}\n.ant-tree-checkbox-disabled .ant-tree-checkbox-inner {\n background-color: #f5f5f5;\n border-color: #d9d9d9 !important;\n}\n.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {\n border-color: #f5f5f5;\n border-collapse: separate;\n animation-name: none;\n}\n.ant-tree-checkbox-disabled + span {\n color: rgba(0, 0, 0, 0.25);\n cursor: not-allowed;\n}\n.ant-tree-checkbox-disabled:hover::after,\n.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-disabled::after {\n visibility: hidden;\n}\n.ant-tree-checkbox-wrapper {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n color: rgba(0, 0, 0, 0.65);\n font-size: 14px;\n font-variant: tabular-nums;\n line-height: 1.5;\n list-style: none;\n font-feature-settings: 'tnum';\n display: inline-block;\n line-height: unset;\n cursor: pointer;\n}\n.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-disabled {\n cursor: not-allowed;\n}\n.ant-tree-checkbox-wrapper + .ant-tree-checkbox-wrapper {\n margin-left: 8px;\n}\n.ant-tree-checkbox + span {\n padding-right: 8px;\n padding-left: 8px;\n}\n.ant-tree-checkbox-group {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n color: rgba(0, 0, 0, 0.65);\n font-size: 14px;\n font-variant: tabular-nums;\n line-height: 1.5;\n list-style: none;\n font-feature-settings: 'tnum';\n display: inline-block;\n}\n.ant-tree-checkbox-group-item {\n display: inline-block;\n margin-right: 8px;\n}\n.ant-tree-checkbox-group-item:last-child {\n margin-right: 0;\n}\n.ant-tree-checkbox-group-item + .ant-tree-checkbox-group-item {\n margin-left: 0;\n}\n.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner {\n background-color: #fff;\n border-color: #d9d9d9;\n}\n.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner::after {\n top: 50%;\n left: 50%;\n width: 8px;\n height: 8px;\n background-color: #466aff;\n border: 0;\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n content: ' ';\n}\n.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after {\n background-color: rgba(0, 0, 0, 0.25);\n border-color: rgba(0, 0, 0, 0.25);\n}\n.ant-tree {\n /* see https://github.com/ant-design/ant-design/issues/16259 */\n box-sizing: border-box;\n color: rgba(0, 0, 0, 0.65);\n font-size: 14px;\n font-variant: tabular-nums;\n line-height: 1.5;\n list-style: none;\n font-feature-settings: 'tnum';\n margin: 0;\n padding: 0;\n}\n.ant-tree-checkbox-checked::after {\n position: absolute;\n top: 16.67%;\n left: 0;\n width: 100%;\n height: 66.67%;\n}\n.ant-tree ol,\n.ant-tree ul {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n.ant-tree li {\n margin: 0;\n padding: 4px 0;\n white-space: nowrap;\n list-style: none;\n outline: 0;\n}\n.ant-tree li span[draggable],\n.ant-tree li span[draggable='true'] {\n line-height: 20px;\n border-top: 2px transparent solid;\n border-bottom: 2px transparent solid;\n user-select: none;\n /* Required to make elements draggable in old WebKit */\n -khtml-user-drag: element;\n -webkit-user-drag: element;\n}\n.ant-tree li.drag-over > span[draggable] {\n color: white;\n background-color: #466aff;\n opacity: 0.8;\n}\n.ant-tree li.drag-over-gap-top > span[draggable] {\n border-top-color: #466aff;\n}\n.ant-tree li.drag-over-gap-bottom > span[draggable] {\n border-bottom-color: #466aff;\n}\n.ant-tree li.filter-node > span {\n color: #f5222d !important;\n font-weight: 500 !important;\n}\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon,\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon {\n position: absolute;\n left: 0;\n display: inline-block;\n width: 24px;\n height: 24px;\n color: #466aff;\n font-size: 14px;\n transform: none;\n}\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-loading-icon svg,\n.ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-loading-icon svg {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n margin: auto;\n}\n:root .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_open::after,\n:root .ant-tree li.ant-tree-treenode-loading span.ant-tree-switcher.ant-tree-switcher_close::after {\n opacity: 0;\n}\n.ant-tree li ul {\n margin: 0;\n padding: 0 0 0 18px;\n}\n.ant-tree li .ant-tree-node-content-wrapper {\n display: inline-block;\n height: 24px;\n margin: 0;\n padding: 0 5px;\n color: rgba(0, 0, 0, 0.65);\n line-height: 24px;\n text-decoration: none;\n vertical-align: top;\n border-radius: 2px;\n cursor: pointer;\n transition: all 0.3s;\n}\n.ant-tree li .ant-tree-node-content-wrapper:hover {\n background-color: #f0f5ff;\n}\n.ant-tree li .ant-tree-node-content-wrapper.ant-tree-node-selected {\n background-color: #e8f0ff;\n}\n.ant-tree li span.ant-tree-checkbox {\n top: initial;\n height: 24px;\n margin: 0 4px 0 2px;\n padding: 4px 0;\n}\n.ant-tree li span.ant-tree-switcher,\n.ant-tree li span.ant-tree-iconEle {\n display: inline-block;\n width: 24px;\n height: 24px;\n margin: 0;\n line-height: 24px;\n text-align: center;\n vertical-align: top;\n border: 0 none;\n outline: none;\n cursor: pointer;\n}\n.ant-tree li span.ant-tree-iconEle:empty {\n display: none;\n}\n.ant-tree li span.ant-tree-switcher {\n position: relative;\n}\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher-noop {\n cursor: default;\n}\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon,\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon {\n font-size: 12px;\n font-size: 10px \\9;\n transform: scale(0.83333333) rotate(0deg);\n display: inline-block;\n font-weight: bold;\n}\n:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon,\n:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon {\n font-size: 12px;\n}\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon svg,\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon svg {\n transition: transform 0.3s;\n}\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon,\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon {\n font-size: 12px;\n font-size: 10px \\9;\n transform: scale(0.83333333) rotate(0deg);\n display: inline-block;\n font-weight: bold;\n}\n:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon,\n:root .ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon {\n font-size: 12px;\n}\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg,\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon svg {\n transition: transform 0.3s;\n}\n.ant-tree li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg {\n transform: rotate(-90deg);\n}\n.ant-tree li:last-child > span.ant-tree-switcher::before,\n.ant-tree li:last-child > span.ant-tree-iconEle::before {\n display: none;\n}\n.ant-tree > li:first-child {\n padding-top: 7px;\n}\n.ant-tree > li:last-child {\n padding-bottom: 7px;\n}\n.ant-tree-child-tree > li:first-child {\n padding-top: 8px;\n}\n.ant-tree-child-tree > li:last-child {\n padding-bottom: 0;\n}\nli.ant-tree-treenode-disabled > span:not(.ant-tree-switcher),\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper,\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper span {\n color: rgba(0, 0, 0, 0.25);\n cursor: not-allowed;\n}\nli.ant-tree-treenode-disabled > .ant-tree-node-content-wrapper:hover {\n background: transparent;\n}\n.ant-tree-icon__open {\n margin-right: 2px;\n vertical-align: top;\n}\n.ant-tree-icon__close {\n margin-right: 2px;\n vertical-align: top;\n}\n.ant-tree.ant-tree-show-line li {\n position: relative;\n}\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher {\n color: rgba(0, 0, 0, 0.45);\n background: #fff;\n}\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-tree-switcher-icon,\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-select-switcher-icon {\n display: inline-block;\n font-weight: normal;\n font-size: 12px;\n}\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-tree-switcher-icon svg,\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher-noop .ant-select-switcher-icon svg {\n transition: transform 0.3s;\n}\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon,\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon {\n display: inline-block;\n font-weight: normal;\n font-size: 12px;\n}\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-tree-switcher-icon svg,\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_open .ant-select-switcher-icon svg {\n transition: transform 0.3s;\n}\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon,\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon {\n display: inline-block;\n font-weight: normal;\n font-size: 12px;\n}\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-tree-switcher-icon svg,\n.ant-tree.ant-tree-show-line li span.ant-tree-switcher.ant-tree-switcher_close .ant-select-switcher-icon svg {\n transition: transform 0.3s;\n}\n.ant-tree.ant-tree-show-line li:not(:last-child)::before {\n position: absolute;\n left: 12px;\n width: 1px;\n height: 100%;\n height: calc(100% - 22px);\n margin: 22px 0 0;\n border-left: 1px solid #d9d9d9;\n content: ' ';\n}\n.ant-tree.ant-tree-icon-hide .ant-tree-treenode-loading .ant-tree-iconEle {\n display: none;\n}\n.ant-tree.ant-tree-block-node li .ant-tree-node-content-wrapper {\n width: calc(100% - 24px);\n}\n.ant-tree.ant-tree-block-node li span.ant-tree-checkbox + .ant-tree-node-content-wrapper {\n width: calc(100% - 46px);\n}\n",""]),e.exports=t},"hKI/":function(e,t,n){(function(t){var n=/^\s+|\s+$/g,r=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,i=/^0o[0-7]+$/i,a=parseInt,s="object"==typeof t&&t&&t.Object===Object&&t,l="object"==typeof self&&self&&self.Object===Object&&self,c=s||l||Function("return this")(),u=Object.prototype.toString,d=Math.max,p=Math.min,f=function(){return c.Date.now()};function m(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function h(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==u.call(e)}(e))return NaN;if(m(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=m(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(n,"");var s=o.test(e);return s||i.test(e)?a(e.slice(2),s?2:8):r.test(e)?NaN:+e}e.exports=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return m(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),function(e,t,n){var r,o,i,a,s,l,c=0,u=!1,g=!1,v=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var n=r,i=o;return r=o=void 0,c=t,a=e.apply(i,n)}function b(e){return c=e,s=setTimeout(w,t),u?y(e):a}function _(e){var n=e-l;return void 0===l||n>=t||n<0||g&&e-c>=i}function w(){var e=f();if(_(e))return x(e);s=setTimeout(w,function(e){var n=t-(e-l);return g?p(n,i-(e-c)):n}(e))}function x(e){return s=void 0,v&&r?y(e):(r=o=void 0,a)}function k(){var e=f(),n=_(e);if(r=arguments,o=this,l=e,n){if(void 0===s)return b(l);if(g)return s=setTimeout(w,t),y(l)}return void 0===s&&(s=setTimeout(w,t)),a}return t=h(t)||0,m(n)&&(u=!!n.leading,i=(g="maxWait"in n)?d(h(n.maxWait)||0,t):i,v="trailing"in n?!!n.trailing:v),k.cancel=function(){void 0!==s&&clearTimeout(s),c=0,r=l=o=s=void 0},k.flush=function(){return void 0===s?a:x(f())},k}(e,t,{leading:r,maxWait:t,trailing:o})}}).call(this,n("yLpj"))},i6bk:function(e,t,n){"use strict";function r(e,t){if("undefined"==typeof window)return 0;var n=t?"scrollTop":"scrollLeft",r=e===window,o=r?e[t?"pageYOffset":"pageXOffset"]:e[n];return r&&"number"!=typeof o&&(o=document.documentElement[n]),o}n.d(t,"a",(function(){return r}))},j5x1:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n0?(n.props.showNotification("文件已存在, 请删除后再上传"),!1):o?void n.setState({fileList:[e],fileName:e.name}):(n.props.showNotification("文件大小必须小于"+r+"MB!"),!1)},n.customRequest=function(e){(new FormData).append("files[]",e.file);var t=new FileReader;t.readAsDataURL(e.file);var r=n.props.load;t.onloadend=function(t){if(t.target.result){e.onSuccess();var n=t.target.result.substring(t.target.result.indexOf("base64")+7,t.target.result.length);r({fileName:e.file.name,fileContent:n})}}},n.state={fileList:void 0,fileContent:void 0,fileName:void 0},n}return function(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)}(t,e),a(t,[{key:"render",value:function(){var e=this.props,t=e.icon,n=e.size,o=this.state,a=o.fileList,s=o.fileName,c={name:"file",fileList:a,customRequest:this.customRequest,onRemove:this.onAttachmentRemove,beforeUpload:this.beforeUpload};return l.default.createElement(u,i({},c,{className:this.props.className}),s?l.default.createElement("p",{className:"ant-upload-text"},s):l.default.createElement("div",null,t||l.default.createElement(r.default,{type:"inbox"}),l.default.createElement("p",{className:"ant-upload-text"},"拖动文件或",l.default.createElement("span",{className:"color-blue"},"点击此处上传")),l.default.createElement("p",{className:"mt10"},"文件名请使用英文且不得超过",n,"MB")))}}]),t}(s.Component);t.default=d},"k7+O":function(e,t,n){!function(){"use strict";var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,o=n.length,i={};r .ant-anchor-link-title {\n color: #466aff;\n}\n.ant-anchor-link .ant-anchor-link {\n padding-top: 5px;\n padding-bottom: 5px;\n}\n",""]),e.exports=t},kg56:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.request=void 0;var r,o,i,a=(r=n("14Xm"))&&r.__esModule?r:{default:r},s=(t.request=(o=a.default.mark((function e(t,n,r){var o;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(o=(0,l.underscoreToCamelcase)(s.mockService[t]))){e.next=7;break}return e.abrupt("return",o);case 7:return e.abrupt("return","文件展示内容只mock了 aaa/package.json");case 8:case"end":return e.stop()}}),e,this)})),i=function(){var e=o.apply(this,arguments);return new Promise((function(t,n){return function r(o,i){try{var a=e[o](i),s=a.value}catch(e){return void n(e)}if(!a.done)return Promise.resolve(s).then((function(e){r("next",e)}),(function(e){r("throw",e)}));t(s)}("next")}))},function(e,t,n){return i.apply(this,arguments)}),n("zdCV")),l=n("YXVS")},kjft:function(e,t,n){"use strict";e.exports={extension:{publisher:"alex-ext-public",name:"typescript-language-features-worker",version:"1.53.0-patch.3"},packageJSON:{name:"typescript-language-features-worker",publisher:"alex",version:"1.53.0-patch.3",displayName:"%displayName%",description:"%description%",icon:"icon.png",activationEvents:["onLanguage:javascript","onLanguage:javascriptreact","onLanguage:typescript","onLanguage:typescriptreact","onLanguage:jsx-tags","onCommand:typescript.reloadProjects","onCommand:javascript.reloadProjects","onCommand:typescript.selectTypeScriptVersion","onCommand:javascript.goToProjectConfig","onCommand:typescript.goToProjectConfig","onCommand:typescript.openTsServerLog","onCommand:workbench.action.tasks.runTask","onCommand:_typescript.configurePlugin","onCommand:_typescript.learnMoreAboutRefactorings","onLanguage:jsonc"],kaitianContributes:{workerMain:"./dist/browser/extension.js"},contributes:{jsonValidation:[{fileMatch:"package.json",url:"./schemas/package.schema.json"},{fileMatch:"tsconfig.json",url:"https://json.schemastore.org/tsconfig"},{fileMatch:"tsconfig.json",url:"./schemas/tsconfig.schema.json"},{fileMatch:"tsconfig.*.json",url:"https://json.schemastore.org/tsconfig"},{fileMatch:"tsconfig-*.json",url:"./schemas/tsconfig.schema.json"},{fileMatch:"tsconfig-*.json",url:"https://json.schemastore.org/tsconfig"},{fileMatch:"tsconfig.*.json",url:"./schemas/tsconfig.schema.json"},{fileMatch:"typings.json",url:"https://json.schemastore.org/typings"},{fileMatch:".bowerrc",url:"https://json.schemastore.org/bowerrc"},{fileMatch:".babelrc",url:"https://json.schemastore.org/babelrc"},{fileMatch:".babelrc.json",url:"https://json.schemastore.org/babelrc"},{fileMatch:"babel.config.json",url:"https://json.schemastore.org/babelrc"},{fileMatch:"jsconfig.json",url:"https://json.schemastore.org/jsconfig"},{fileMatch:"jsconfig.json",url:"./schemas/jsconfig.schema.json"},{fileMatch:"jsconfig.*.json",url:"https://json.schemastore.org/jsconfig"},{fileMatch:"jsconfig.*.json",url:"./schemas/jsconfig.schema.json"}],configuration:{type:"object",title:"%configuration.typescript%",order:20,properties:{"typescript.tsdk":{type:["string","null"],default:null,markdownDescription:"%typescript.tsdk.desc%",scope:"window"},"typescript.disableAutomaticTypeAcquisition":{type:"boolean",default:!1,description:"%typescript.disableAutomaticTypeAcquisition%",scope:"window",tags:["usesOnlineServices"]},"typescript.enablePromptUseWorkspaceTsdk":{type:"boolean",default:!1,description:"%typescript.enablePromptUseWorkspaceTsdk%",scope:"window"},"typescript.npm":{type:["string","null"],default:null,description:"%typescript.npm%",scope:"machine"},"typescript.check.npmIsInstalled":{type:"boolean",default:!0,description:"%typescript.check.npmIsInstalled%",scope:"window"},"javascript.referencesCodeLens.enabled":{type:"boolean",default:!1,description:"%javascript.referencesCodeLens.enabled%",scope:"window"},"javascript.referencesCodeLens.showOnAllFunctions":{type:"boolean",default:!1,description:"%javascript.referencesCodeLens.showOnAllFunctions%",scope:"window"},"typescript.referencesCodeLens.enabled":{type:"boolean",default:!1,description:"%typescript.referencesCodeLens.enabled%",scope:"window"},"typescript.referencesCodeLens.showOnAllFunctions":{type:"boolean",default:!1,description:"%typescript.referencesCodeLens.showOnAllFunctions%",scope:"window"},"typescript.implementationsCodeLens.enabled":{type:"boolean",default:!1,description:"%typescript.implementationsCodeLens.enabled%",scope:"window"},"typescript.tsserver.enableTracing":{type:"boolean",default:!1,description:"%typescript.tsserver.enableTracing%",scope:"window"},"typescript.tsserver.log":{type:"string",enum:["off","terse","normal","verbose"],default:"off",description:"%typescript.tsserver.log%",scope:"window"},"typescript.tsserver.pluginPaths":{type:"array",items:{type:"string",description:"%typescript.tsserver.pluginPaths.item%"},default:[],description:"%typescript.tsserver.pluginPaths%",scope:"machine"},"typescript.tsserver.trace":{type:"string",enum:["off","messages","verbose"],default:"off",description:"%typescript.tsserver.trace%",scope:"window"},"javascript.suggest.completeFunctionCalls":{type:"boolean",default:!1,description:"%configuration.suggest.completeFunctionCalls%",scope:"resource"},"typescript.suggest.completeFunctionCalls":{type:"boolean",default:!1,description:"%configuration.suggest.completeFunctionCalls%",scope:"resource"},"javascript.suggest.includeAutomaticOptionalChainCompletions":{type:"boolean",default:!0,description:"%configuration.suggest.includeAutomaticOptionalChainCompletions%",scope:"resource"},"typescript.suggest.includeAutomaticOptionalChainCompletions":{type:"boolean",default:!0,description:"%configuration.suggest.includeAutomaticOptionalChainCompletions%",scope:"resource"},"typescript.reportStyleChecksAsWarnings":{type:"boolean",default:!0,description:"%typescript.reportStyleChecksAsWarnings%",scope:"window"},"typescript.validate.enable":{type:"boolean",default:!0,description:"%typescript.validate.enable%",scope:"window"},"typescript.format.enable":{type:"boolean",default:!0,description:"%typescript.format.enable%",scope:"window"},"typescript.format.insertSpaceAfterCommaDelimiter":{type:"boolean",default:!0,description:"%format.insertSpaceAfterCommaDelimiter%",scope:"resource"},"typescript.format.insertSpaceAfterConstructor":{type:"boolean",default:!1,description:"%format.insertSpaceAfterConstructor%",scope:"resource"},"typescript.format.insertSpaceAfterSemicolonInForStatements":{type:"boolean",default:!0,description:"%format.insertSpaceAfterSemicolonInForStatements%",scope:"resource"},"typescript.format.insertSpaceBeforeAndAfterBinaryOperators":{type:"boolean",default:!0,description:"%format.insertSpaceBeforeAndAfterBinaryOperators%",scope:"resource"},"typescript.format.insertSpaceAfterKeywordsInControlFlowStatements":{type:"boolean",default:!0,description:"%format.insertSpaceAfterKeywordsInControlFlowStatements%",scope:"resource"},"typescript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions":{type:"boolean",default:!0,description:"%format.insertSpaceAfterFunctionKeywordForAnonymousFunctions%",scope:"resource"},"typescript.format.insertSpaceBeforeFunctionParenthesis":{type:"boolean",default:!1,description:"%format.insertSpaceBeforeFunctionParenthesis%",scope:"resource"},"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis":{type:"boolean",default:!1,description:"%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis%",scope:"resource"},"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets":{type:"boolean",default:!1,description:"%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets%",scope:"resource"},"typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces":{type:"boolean",default:!0,description:"%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces%",scope:"resource"},"typescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces":{type:"boolean",default:!0,description:"%format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces%",scope:"resource"},"typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces":{type:"boolean",default:!1,description:"%format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces%",scope:"resource"},"typescript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces":{type:"boolean",default:!1,description:"%format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces%",scope:"resource"},"typescript.format.insertSpaceAfterTypeAssertion":{type:"boolean",default:!1,description:"%format.insertSpaceAfterTypeAssertion%",scope:"resource"},"typescript.format.placeOpenBraceOnNewLineForFunctions":{type:"boolean",default:!1,description:"%format.placeOpenBraceOnNewLineForFunctions%",scope:"resource"},"typescript.format.placeOpenBraceOnNewLineForControlBlocks":{type:"boolean",default:!1,description:"%format.placeOpenBraceOnNewLineForControlBlocks%",scope:"resource"},"typescript.format.semicolons":{type:"string",default:"ignore",description:"%format.semicolons%",scope:"resource",enum:["ignore","insert","remove"],enumDescriptions:["%format.semicolons.ignore%","%format.semicolons.insert%","%format.semicolons.remove%"]},"javascript.validate.enable":{type:"boolean",default:!0,description:"%javascript.validate.enable%",scope:"window"},"javascript.format.enable":{type:"boolean",default:!0,description:"%javascript.format.enable%",scope:"window"},"javascript.format.insertSpaceAfterCommaDelimiter":{type:"boolean",default:!0,description:"%format.insertSpaceAfterCommaDelimiter%",scope:"resource"},"javascript.format.insertSpaceAfterConstructor":{type:"boolean",default:!1,description:"%format.insertSpaceAfterConstructor%",scope:"resource"},"javascript.format.insertSpaceAfterSemicolonInForStatements":{type:"boolean",default:!0,description:"%format.insertSpaceAfterSemicolonInForStatements%",scope:"resource"},"javascript.format.insertSpaceBeforeAndAfterBinaryOperators":{type:"boolean",default:!0,description:"%format.insertSpaceBeforeAndAfterBinaryOperators%",scope:"resource"},"javascript.format.insertSpaceAfterKeywordsInControlFlowStatements":{type:"boolean",default:!0,description:"%format.insertSpaceAfterKeywordsInControlFlowStatements%",scope:"resource"},"javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions":{type:"boolean",default:!0,description:"%format.insertSpaceAfterFunctionKeywordForAnonymousFunctions%",scope:"resource"},"javascript.format.insertSpaceBeforeFunctionParenthesis":{type:"boolean",default:!1,description:"%format.insertSpaceBeforeFunctionParenthesis%",scope:"resource"},"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis":{type:"boolean",default:!1,description:"%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis%",scope:"resource"},"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets":{type:"boolean",default:!1,description:"%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets%",scope:"resource"},"javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces":{type:"boolean",default:!0,description:"%format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces%",scope:"resource"},"javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces":{type:"boolean",default:!0,description:"%format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces%",scope:"resource"},"javascript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces":{type:"boolean",default:!1,description:"%format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces%",scope:"resource"},"javascript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces":{type:"boolean",default:!1,description:"%format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces%",scope:"resource"},"javascript.format.placeOpenBraceOnNewLineForFunctions":{type:"boolean",default:!1,description:"%format.placeOpenBraceOnNewLineForFunctions%",scope:"resource"},"javascript.format.placeOpenBraceOnNewLineForControlBlocks":{type:"boolean",default:!1,description:"%format.placeOpenBraceOnNewLineForControlBlocks%",scope:"resource"},"javascript.format.semicolons":{type:"string",default:"ignore",description:"%format.semicolons%",scope:"resource",enum:["ignore","insert","remove"],enumDescriptions:["%format.semicolons.ignore%","%format.semicolons.insert%","%format.semicolons.remove%"]},"javascript.implicitProjectConfig.checkJs":{type:"boolean",default:!1,markdownDescription:"%configuration.implicitProjectConfig.checkJs%",markdownDeprecationMessage:"%configuration.javascript.checkJs.checkJs.deprecation%",scope:"window"},"js/ts.implicitProjectConfig.checkJs":{type:"boolean",default:!1,markdownDescription:"%configuration.implicitProjectConfig.checkJs%",scope:"window"},"javascript.implicitProjectConfig.experimentalDecorators":{type:"boolean",default:!1,markdownDescription:"%configuration.implicitProjectConfig.experimentalDecorators%",markdownDeprecationMessage:"%configuration.javascript.checkJs.experimentalDecorators.deprecation%",scope:"window"},"js/ts.implicitProjectConfig.experimentalDecorators":{type:"boolean",default:!1,markdownDescription:"%configuration.implicitProjectConfig.experimentalDecorators%",scope:"window"},"js/ts.implicitProjectConfig.strictNullChecks":{type:"boolean",default:!1,markdownDescription:"%configuration.implicitProjectConfig.strictNullChecks%",scope:"window"},"js/ts.implicitProjectConfig.strictFunctionTypes":{type:"boolean",default:!0,markdownDescription:"%configuration.implicitProjectConfig.strictFunctionTypes%",scope:"window"},"javascript.suggest.names":{type:"boolean",default:!0,markdownDescription:"%configuration.suggest.names%",scope:"resource"},"typescript.tsc.autoDetect":{type:"string",default:"on",enum:["on","off","build","watch"],markdownEnumDescriptions:["%typescript.tsc.autoDetect.on%","%typescript.tsc.autoDetect.off%","%typescript.tsc.autoDetect.build%","%typescript.tsc.autoDetect.watch%"],description:"%typescript.tsc.autoDetect%",scope:"window"},"javascript.suggest.paths":{type:"boolean",default:!0,description:"%configuration.suggest.paths%",scope:"resource"},"typescript.suggest.paths":{type:"boolean",default:!0,description:"%configuration.suggest.paths%",scope:"resource"},"javascript.suggest.autoImports":{type:"boolean",default:!0,description:"%configuration.suggest.autoImports%",scope:"resource"},"typescript.suggest.autoImports":{type:"boolean",default:!0,description:"%configuration.suggest.autoImports%",scope:"resource"},"javascript.suggest.completeJSDocs":{type:"boolean",default:!0,description:"%configuration.suggest.completeJSDocs%",scope:"resource"},"typescript.suggest.completeJSDocs":{type:"boolean",default:!0,description:"%configuration.suggest.completeJSDocs%",scope:"resource"},"typescript.locale":{type:["string","null"],enum:["de","es","en","fr","it","ja","ko","ru","zh-CN","zh-TW",null],default:null,markdownDescription:"%typescript.locale%",scope:"window"},"javascript.suggestionActions.enabled":{type:"boolean",default:!0,description:"%javascript.suggestionActions.enabled%",scope:"resource"},"typescript.suggestionActions.enabled":{type:"boolean",default:!0,description:"%typescript.suggestionActions.enabled%",scope:"resource"},"javascript.preferences.quoteStyle":{type:"string",enum:["auto","single","double"],default:"auto",markdownDescription:"%typescript.preferences.quoteStyle%",scope:"resource"},"typescript.preferences.quoteStyle":{type:"string",enum:["auto","single","double"],default:"auto",markdownDescription:"%typescript.preferences.quoteStyle%",scope:"resource"},"javascript.preferences.importModuleSpecifier":{type:"string",enum:["shortest","relative","non-relative","project-relative"],markdownEnumDescriptions:["%typescript.preferences.importModuleSpecifier.shortest%","%typescript.preferences.importModuleSpecifier.relative%","%typescript.preferences.importModuleSpecifier.nonRelative%","%typescript.preferences.importModuleSpecifier.projectRelative%"],default:"shortest",description:"%typescript.preferences.importModuleSpecifier%",scope:"resource"},"typescript.preferences.importModuleSpecifier":{type:"string",enum:["shortest","relative","non-relative","project-relative"],markdownEnumDescriptions:["%typescript.preferences.importModuleSpecifier.shortest%","%typescript.preferences.importModuleSpecifier.relative%","%typescript.preferences.importModuleSpecifier.nonRelative%","%typescript.preferences.importModuleSpecifier.projectRelative%"],default:"shortest",description:"%typescript.preferences.importModuleSpecifier%",scope:"resource"},"javascript.preferences.importModuleSpecifierEnding":{type:"string",enum:["auto","minimal","index","js"],markdownEnumDescriptions:["%typescript.preferences.importModuleSpecifierEnding.auto%","%typescript.preferences.importModuleSpecifierEnding.minimal%","%typescript.preferences.importModuleSpecifierEnding.index%","%typescript.preferences.importModuleSpecifierEnding.js%"],default:"auto",description:"%typescript.preferences.importModuleSpecifierEnding%",scope:"resource"},"typescript.preferences.importModuleSpecifierEnding":{type:"string",enum:["auto","minimal","index","js"],markdownEnumDescriptions:["%typescript.preferences.importModuleSpecifierEnding.auto%","%typescript.preferences.importModuleSpecifierEnding.minimal%","%typescript.preferences.importModuleSpecifierEnding.index%","%typescript.preferences.importModuleSpecifierEnding.js%"],default:"auto",description:"%typescript.preferences.importModuleSpecifierEnding%",scope:"resource"},"typescript.preferences.includePackageJsonAutoImports":{type:"string",enum:["auto","on","off"],enumDescriptions:["%typescript.preferences.includePackageJsonAutoImports.auto%","%typescript.preferences.includePackageJsonAutoImports.on%","%typescript.preferences.includePackageJsonAutoImports.off%"],default:"auto",markdownDescription:"%typescript.preferences.includePackageJsonAutoImports%",scope:"window"},"javascript.preferences.renameShorthandProperties":{type:"boolean",default:!0,description:"%typescript.preferences.useAliasesForRenames%",deprecationMessage:"%typescript.preferences.renameShorthandProperties.deprecationMessage%",scope:"resource"},"typescript.preferences.renameShorthandProperties":{type:"boolean",default:!0,description:"%typescript.preferences.useAliasesForRenames%",deprecationMessage:"%typescript.preferences.renameShorthandProperties.deprecationMessage%",scope:"resource"},"javascript.preferences.useAliasesForRenames":{type:"boolean",default:!0,description:"%typescript.preferences.useAliasesForRenames%",scope:"resource"},"typescript.preferences.useAliasesForRenames":{type:"boolean",default:!0,description:"%typescript.preferences.useAliasesForRenames%",scope:"resource"},"typescript.updateImportsOnFileMove.enabled":{type:"string",enum:["prompt","always","never"],markdownEnumDescriptions:["%typescript.updateImportsOnFileMove.enabled.prompt%","%typescript.updateImportsOnFileMove.enabled.always%","%typescript.updateImportsOnFileMove.enabled.never%"],default:"prompt",description:"%typescript.updateImportsOnFileMove.enabled%",scope:"resource"},"javascript.updateImportsOnFileMove.enabled":{type:"string",enum:["prompt","always","never"],markdownEnumDescriptions:["%typescript.updateImportsOnFileMove.enabled.prompt%","%typescript.updateImportsOnFileMove.enabled.always%","%typescript.updateImportsOnFileMove.enabled.never%"],default:"prompt",description:"%typescript.updateImportsOnFileMove.enabled%",scope:"resource"},"typescript.autoClosingTags":{type:"boolean",default:!0,description:"%typescript.autoClosingTags%"},"javascript.autoClosingTags":{type:"boolean",default:!0,description:"%typescript.autoClosingTags%"},"javascript.suggest.enabled":{type:"boolean",default:!0,description:"%typescript.suggest.enabled%",scope:"resource"},"typescript.suggest.enabled":{type:"boolean",default:!0,description:"%typescript.suggest.enabled%",scope:"resource"},"typescript.surveys.enabled":{type:"boolean",default:!0,description:"%configuration.surveys.enabled%",scope:"window"},"typescript.tsserver.useSeparateSyntaxServer":{type:"boolean",default:!0,description:"%configuration.tsserver.useSeparateSyntaxServer%",scope:"window"},"typescript.tsserver.maxTsServerMemory":{type:"number",default:3072,description:"%configuration.tsserver.maxTsServerMemory%",scope:"window"},"typescript.tsserver.experimental.enableProjectDiagnostics":{type:"boolean",default:!1,description:"%configuration.tsserver.experimental.enableProjectDiagnostics%",scope:"window"},"typescript.tsserver.watchOptions":{type:"object",description:"%configuration.tsserver.watchOptions%",scope:"window",properties:{watchFile:{type:"string",description:"%configuration.tsserver.watchOptions.watchFile%",enum:["fixedPollingInterval","priorityPollingInterval","dynamicPriorityPolling","useFsEvents","useFsEventsOnParentDirectory"],enumDescriptions:["%configuration.tsserver.watchOptions.watchFile.fixedPollingInterval%","%configuration.tsserver.watchOptions.watchFile.priorityPollingInterval%","%configuration.tsserver.watchOptions.watchFile.dynamicPriorityPolling%","%configuration.tsserver.watchOptions.watchFile.useFsEvents%","%configuration.tsserver.watchOptions.watchFile.useFsEventsOnParentDirectory%"],default:"useFsEvents"},watchDirectory:{type:"string",description:"%configuration.tsserver.watchOptions.watchDirectory%",enum:["fixedPollingInterval","dynamicPriorityPolling","useFsEvents"],enumDescriptions:["%configuration.tsserver.watchOptions.watchDirectory.fixedPollingInterval%","%configuration.tsserver.watchOptions.watchDirectory.dynamicPriorityPolling%","%configuration.tsserver.watchOptions.watchDirectory.useFsEvents%"],default:"useFsEvents"},fallbackPolling:{type:"string",description:"%configuration.tsserver.watchOptions.fallbackPolling%",enum:["fixedPollingInterval","priorityPollingInterval","dynamicPriorityPolling"],enumDescriptions:["configuration.tsserver.watchOptions.fallbackPolling.fixedPollingInterval","configuration.tsserver.watchOptions.fallbackPolling.priorityPollingInterval","configuration.tsserver.watchOptions.fallbackPolling.dynamicPriorityPolling"]},synchronousWatchDirectory:{type:"boolean",description:"%configuration.tsserver.watchOptions.synchronousWatchDirectory%"}}},"typescript.workspaceSymbols.scope":{type:"string",enum:["allOpenProjects","currentProject"],enumDescriptions:["%typescript.workspaceSymbols.scope.allOpenProjects%","%typescript.workspaceSymbols.scope.currentProject%"],default:"allOpenProjects",markdownDescription:"%typescript.workspaceSymbols.scope%",scope:"window"}}},commands:[{command:"typescript.reloadProjects",title:"%reloadProjects.title%",category:"TypeScript"},{command:"javascript.reloadProjects",title:"%reloadProjects.title%",category:"JavaScript"},{command:"typescript.selectTypeScriptVersion",title:"%typescript.selectTypeScriptVersion.title%",category:"TypeScript"},{command:"typescript.goToProjectConfig",title:"%goToProjectConfig.title%",category:"TypeScript"},{command:"javascript.goToProjectConfig",title:"%goToProjectConfig.title%",category:"JavaScript"},{command:"typescript.openTsServerLog",title:"%typescript.openTsServerLog.title%",category:"TypeScript"},{command:"typescript.restartTsServer",title:"%typescript.restartTsServer%",category:"TypeScript"}],menus:{commandPalette:[{command:"typescript.reloadProjects",when:"editorLangId == typescript && typescript.isManagedFile"},{command:"typescript.reloadProjects",when:"editorLangId == typescriptreact && typescript.isManagedFile"},{command:"javascript.reloadProjects",when:"editorLangId == javascript && typescript.isManagedFile"},{command:"javascript.reloadProjects",when:"editorLangId == javascriptreact && typescript.isManagedFile"},{command:"typescript.goToProjectConfig",when:"editorLangId == typescript && typescript.isManagedFile"},{command:"typescript.goToProjectConfig",when:"editorLangId == typescriptreact"},{command:"javascript.goToProjectConfig",when:"editorLangId == javascript && typescript.isManagedFile"},{command:"javascript.goToProjectConfig",when:"editorLangId == javascriptreact && typescript.isManagedFile"},{command:"typescript.selectTypeScriptVersion",when:"typescript.isManagedFile"},{command:"typescript.openTsServerLog",when:"typescript.isManagedFile"},{command:"typescript.restartTsServer",when:"typescript.isManagedFile"}]},breakpoints:[{language:"typescript"},{language:"typescriptreact"}],taskDefinitions:[{type:"typescript",required:["tsconfig"],properties:{tsconfig:{type:"string",description:"%taskDefinition.tsconfig.description%"},option:{type:"string"}}}],problemPatterns:[{name:"tsc",regexp:"^([^\\s].*)[\\(:](\\d+)[,:](\\d+)(?:\\):\\s+|\\s+-\\s+)(error|warning|info)\\s+TS(\\d+)\\s*:\\s*(.*)$",file:1,line:2,column:3,severity:4,code:5,message:6}],problemMatchers:[{name:"tsc",label:"%typescript.problemMatchers.tsc.label%",owner:"typescript",source:"ts",applyTo:"closedDocuments",fileLocation:["relative","${cwd}"],pattern:"$tsc"},{name:"tsc-watch",label:"%typescript.problemMatchers.tscWatch.label%",owner:"typescript",source:"ts",applyTo:"closedDocuments",fileLocation:["relative","${cwd}"],pattern:"$tsc",background:{activeOnStart:!0,beginsPattern:{regexp:"^\\s*(?:message TS6032:|\\[?\\D*\\d{1,2}[:.]\\d{1,2}[:.]\\d{1,2}\\D*(├\\D*\\d{1,2}\\D+┤)?(?:\\]| -)) File change detected\\. Starting incremental compilation\\.\\.\\."},endsPattern:{regexp:"^\\s*(?:message TS6042:|\\[?\\D*\\d{1,2}[:.]\\d{1,2}[:.]\\d{1,2}\\D*(├\\D*\\d{1,2}\\D+┤)?(?:\\]| -)) (?:Compilation complete\\.|Found \\d+ errors?\\.) Watching for file changes\\."}}}],codeActions:[{languages:["javascript","javascriptreact","typescript","typescriptreact"],actions:[{kind:"refactor.extract.constant",title:"%codeActions.refactor.extract.constant.title%",description:"%codeActions.refactor.extract.constant.description%"},{kind:"refactor.extract.function",title:"%codeActions.refactor.extract.function.title%",description:"%codeActions.refactor.extract.function.description%"},{kind:"refactor.extract.interface",title:"%codeActions.refactor.extract.interface.title%",description:"%codeActions.refactor.extract.interface.description%"},{kind:"refactor.extract.type",title:"%codeActions.refactor.extract.type.title%",description:"%codeActions.refactor.extract.type.description%"},{kind:"refactor.rewrite.import",title:"%codeActions.refactor.rewrite.import.title%",description:"%codeActions.refactor.rewrite.import.description%"},{kind:"refactor.rewrite.export",title:"%codeActions.refactor.rewrite.export.title%",description:"%codeActions.refactor.rewrite.export.description%"},{kind:"refactor.rewrite.arrow.braces",title:"%codeActions.refactor.rewrite.arrow.braces.title%",description:"%codeActions.refactor.rewrite.arrow.braces.description%"},{kind:"refactor.rewrite.parameters.toDestructured",title:"%codeActions.refactor.rewrite.parameters.toDestructured.title%"},{kind:"refactor.rewrite.property.generateAccessors",title:"%codeActions.refactor.rewrite.property.generateAccessors.title%",description:"%codeActions.refactor.rewrite.property.generateAccessors.description%"},{kind:"refactor.move.newFile",title:"%codeActions.refactor.move.newFile.title%",description:"%codeActions.refactor.move.newFile.description%"},{kind:"source.organizeImports",title:"%codeActions.source.organizeImports.title%"}]}],typescriptServerPlugins:[{name:"typescript-vscode-sh-plugin",enableForWorkspaceTypeScriptVersions:!0}],workerMain:"./dist/browser/extension.js"},browser:"./dist/browser/extension"},defaultPkgNlsJSON:{displayName:"TypeScript and JavaScript Language Features",description:"Provides rich language support for JavaScript and TypeScript.","reloadProjects.title":"Reload Project","configuration.typescript":"TypeScript","configuration.suggest.completeFunctionCalls":"Complete functions with their parameter signature.","configuration.suggest.includeAutomaticOptionalChainCompletions":"Enable/disable showing completions on potentially undefined values that insert an optional chain call. Requires TS 3.7+ and strict null checks to be enabled.","typescript.tsdk.desc":"Specifies the folder path to the tsserver and lib*.d.ts files under a TypeScript install to use for IntelliSense, for example: `./node_modules/typescript/lib`.\n\n- When specified as a user setting, the TypeScript version from `typescript.tsdk` automatically replaces the built-in TypeScript version.\n- When specified as a workspace setting, `typescript.tsdk` allows you to switch to use that workspace version of TypeScript for IntelliSense with the `TypeScript: Select TypeScript version` command.\n\nSee the [TypeScript documentation](https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-newer-typescript-versions) for more detail about managing TypeScript versions.","typescript.disableAutomaticTypeAcquisition":"Disables automatic type acquisition. Automatic type acquisition fetches `@types` packages from npm to improve IntelliSense for external libraries.","typescript.enablePromptUseWorkspaceTsdk":"Enables prompting of users to use the TypeScript version configured in the workspace for Intellisense.","typescript.tsserver.enableTracing":"Enables tracing TS server performance to a directory. These trace files can be used to diagnose TS Server performance issues. The log may contain file paths, source code, and other potentially sensitive information from your project.","typescript.tsserver.log":"Enables logging of the TS server to a file. This log can be used to diagnose TS Server issues. The log may contain file paths, source code, and other potentially sensitive information from your project.","typescript.tsserver.pluginPaths":"Additional paths to discover TypeScript Language Service plugins.","typescript.tsserver.pluginPaths.item":"Either an absolute or relative path. Relative path will be resolved against workspace folder(s).","typescript.tsserver.trace":"Enables tracing of messages sent to the TS server. This trace can be used to diagnose TS Server issues. The trace may contain file paths, source code, and other potentially sensitive information from your project.","typescript.validate.enable":"Enable/disable TypeScript validation.","typescript.format.enable":"Enable/disable default TypeScript formatter.","javascript.format.enable":"Enable/disable default JavaScript formatter.","format.insertSpaceAfterCommaDelimiter":"Defines space handling after a comma delimiter.","format.insertSpaceAfterConstructor":"Defines space handling after the constructor keyword.","format.insertSpaceAfterSemicolonInForStatements":"Defines space handling after a semicolon in a for statement.","format.insertSpaceBeforeAndAfterBinaryOperators":"Defines space handling after a binary operator.","format.insertSpaceAfterKeywordsInControlFlowStatements":"Defines space handling after keywords in a control flow statement.","format.insertSpaceAfterFunctionKeywordForAnonymousFunctions":"Defines space handling after function keyword for anonymous functions.","format.insertSpaceBeforeFunctionParenthesis":"Defines space handling before function argument parentheses.","format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis":"Defines space handling after opening and before closing non-empty parenthesis.","format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets":"Defines space handling after opening and before closing non-empty brackets.","format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces":"Defines space handling after opening and before closing non-empty braces.","format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces":"Defines space handling after opening and before closing empty braces.","format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces":"Defines space handling after opening and before closing template string braces.","format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces":"Defines space handling after opening and before closing JSX expression braces.","format.insertSpaceAfterTypeAssertion":"Defines space handling after type assertions in TypeScript.","format.placeOpenBraceOnNewLineForFunctions":"Defines whether an open brace is put onto a new line for functions or not.","format.placeOpenBraceOnNewLineForControlBlocks":"Defines whether an open brace is put onto a new line for control blocks or not.","format.semicolons":"Defines handling of optional semicolons. Requires using TypeScript 3.7 or newer in the workspace.","format.semicolons.ignore":"Don't insert or remove any semicolons.","format.semicolons.insert":"Insert semicolons at statement ends.","format.semicolons.remove":"Remove unnecessary semicolons.","javascript.validate.enable":"Enable/disable JavaScript validation.","goToProjectConfig.title":"Go to Project Configuration","javascript.referencesCodeLens.enabled":"Enable/disable references CodeLens in JavaScript files.","javascript.referencesCodeLens.showOnAllFunctions":"Enable/disable references CodeLens on all functions in JavaScript files.","typescript.referencesCodeLens.enabled":"Enable/disable references CodeLens in TypeScript files.","typescript.referencesCodeLens.showOnAllFunctions":"Enable/disable references CodeLens on all functions in TypeScript files.","typescript.implementationsCodeLens.enabled":"Enable/disable implementations CodeLens. This CodeLens shows the implementers of an interface.","typescript.openTsServerLog.title":"Open TS Server log","typescript.restartTsServer":"Restart TS server","typescript.selectTypeScriptVersion.title":"Select TypeScript Version...","typescript.reportStyleChecksAsWarnings":"Report style checks as warnings.","typescript.npm":"Specifies the path to the npm executable used for Automatic Type Acquisition.","typescript.check.npmIsInstalled":"Check if npm is installed for Automatic Type Acquisition.","configuration.suggest.names":"Enable/disable including unique names from the file in JavaScript suggestions. Note that name suggestions are always disabled in JavaScript code that is semantically checked using `@ts-check` or `checkJs`.","typescript.tsc.autoDetect":"Controls auto detection of tsc tasks.","typescript.tsc.autoDetect.off":"Disable this feature.","typescript.tsc.autoDetect.on":"Create both build and watch tasks.","typescript.tsc.autoDetect.build":"Only create single run compile tasks.","typescript.tsc.autoDetect.watch":"Only create compile and watch tasks.","typescript.problemMatchers.tsc.label":"TypeScript problems","typescript.problemMatchers.tscWatch.label":"TypeScript problems (watch mode)","configuration.suggest.paths":"Enable/disable suggestions for paths in import statements and require calls.","configuration.tsserver.useSeparateSyntaxServer":"Enable/disable spawning a separate TypeScript server that can more quickly respond to syntax related operations, such as calculating folding or computing document symbols. Requires using TypeScript 3.4.0 or newer in the workspace.","configuration.tsserver.maxTsServerMemory":"Set the maximum amount of memory (in MB) to allocate to the TypeScript server process","configuration.tsserver.experimental.enableProjectDiagnostics":"(Experimental) Enables project wide error reporting.","typescript.locale":"Sets the locale used to report JavaScript and TypeScript errors. Default of `null` uses VS Code's locale.","configuration.implicitProjectConfig.checkJs":"Enable/disable semantic checking of JavaScript files. Existing `jsconfig.json` or `tsconfig.json` files override this setting.","configuration.javascript.checkJs.checkJs.deprecation":"This setting has been deprecated in favor of `#js/ts.implicitProjectConfig.checkJs#`.","configuration.implicitProjectConfig.experimentalDecorators":"Enable/disable `experimentalDecorators` in JavaScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.","configuration.javascript.checkJs.experimentalDecorators.deprecation":"This setting has been deprecated in favor of `#js/ts.implicitProjectConfig.experimentalDecorators#`.","configuration.implicitProjectConfig.strictNullChecks":"Enable/disable [strict null checks](https://www.typescriptlang.org/tsconfig#strictNullChecks) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.","configuration.implicitProjectConfig.strictFunctionTypes":"Enable/disable [strict function types](https://www.typescriptlang.org/tsconfig#strictFunctionTypes) in JavaScript and TypeScript files that are not part of a project. Existing `jsconfig.json` or `tsconfig.json` files override this setting.","configuration.suggest.autoImports":"Enable/disable auto import suggestions.","taskDefinition.tsconfig.description":"The tsconfig file that defines the TS build.","javascript.suggestionActions.enabled":"Enable/disable suggestion diagnostics for JavaScript files in the editor.","typescript.suggestionActions.enabled":"Enable/disable suggestion diagnostics for TypeScript files in the editor.","typescript.preferences.quoteStyle":"Preferred quote style to use for quick fixes: `single` quotes, `double` quotes, or `auto` infer quote type from existing imports.","typescript.preferences.importModuleSpecifier":"Preferred path style for auto imports.","typescript.preferences.importModuleSpecifier.shortest":"Prefers a non-relative import only if one is available that has fewer path segments than a relative import.","typescript.preferences.importModuleSpecifier.relative":"Prefers a relative path to the imported file location.","typescript.preferences.importModuleSpecifier.nonRelative":"Prefers a non-relative import based on the `baseUrl` or `paths` configured in your `jsconfig.json` / `tsconfig.json`.","typescript.preferences.importModuleSpecifier.projectRelative":"Prefers a non-relative import only if the relative import path would leave the package or project directory. Requires using TypeScript 4.2+ in the workspace.","typescript.preferences.importModuleSpecifierEnding":"Preferred path ending for auto imports.","typescript.preferences.importModuleSpecifierEnding.auto":"Use project settings to select a default.","typescript.preferences.importModuleSpecifierEnding.minimal":"Shorten `./component/index.js` to `./component`.","typescript.preferences.importModuleSpecifierEnding.index":"Shorten `./component/index.js` to `./component/index`.","typescript.preferences.importModuleSpecifierEnding.js":"Do not shorten path endings; include the `.js` extension.","typescript.preferences.includePackageJsonAutoImports":"Enable/disable searching `package.json` dependencies for available auto imports.","typescript.preferences.includePackageJsonAutoImports.auto":"Search dependencies based on estimated performance impact.","typescript.preferences.includePackageJsonAutoImports.on":"Always search dependencies.","typescript.preferences.includePackageJsonAutoImports.off":"Never search dependencies.","typescript.updateImportsOnFileMove.enabled":"Enable/disable automatic updating of import paths when you rename or move a file in VS Code.","typescript.updateImportsOnFileMove.enabled.prompt":"Prompt on each rename.","typescript.updateImportsOnFileMove.enabled.always":"Always update paths automatically.","typescript.updateImportsOnFileMove.enabled.never":"Never rename paths and don't prompt.","typescript.autoClosingTags":"Enable/disable automatic closing of JSX tags.","typescript.suggest.enabled":"Enabled/disable autocomplete suggestions.","configuration.surveys.enabled":"Enabled/disable occasional surveys that help us improve VS Code's JavaScript and TypeScript support.","configuration.suggest.completeJSDocs":"Enable/disable suggestion to complete JSDoc comments.","configuration.tsserver.watchOptions":"Configure which watching strategies should be used to keep track of files and directories. Requires using TypeScript 3.8+ in the workspace.","configuration.tsserver.watchOptions.watchFile":"Strategy for how individual files are watched.","configuration.tsserver.watchOptions.watchFile.fixedPollingInterval":"Check every file for changes several times a second at a fixed interval.","configuration.tsserver.watchOptions.watchFile.priorityPollingInterval":"Check every file for changes several times a second, but use heuristics to check certain types of files less frequently than others.","configuration.tsserver.watchOptions.watchFile.dynamicPriorityPolling":"Use a dynamic queue where less-frequently modified files will be checked less often.","configuration.tsserver.watchOptions.watchFile.useFsEvents":"Attempt to use the operating system/file system’s native events for file changes.","configuration.tsserver.watchOptions.watchFile.useFsEventsOnParentDirectory":"Attempt to use the operating system/file system’s native events to listen for changes on a file’s containing directories. This can use fewer file watchers, but might be less accurate.","configuration.tsserver.watchOptions.watchDirectory":"Strategy for how entire directory trees are watched under systems that lack recursive file-watching functionality.","configuration.tsserver.watchOptions.watchDirectory.fixedPollingInterval":"Check every directory for changes several times a second at a fixed interval.","configuration.tsserver.watchOptions.watchDirectory.dynamicPriorityPolling":"Use a dynamic queue where less-frequently modified directories will be checked less often.","configuration.tsserver.watchOptions.watchDirectory.useFsEvents":"Attempt to use the operating system/file system’s native events for directory changes.","configuration.tsserver.watchOptions.fallbackPolling":"When using file system events, this option specifies the polling strategy that gets used when the system runs out of native file watchers and/or doesn’t support native file watchers.","configuration.tsserver.watchOptions.fallbackPolling.fixedPollingInterval":"Check every file for changes several times a second at a fixed interval.","configuration.tsserver.watchOptions.fallbackPolling.priorityPollingInterval":"Check every file for changes several times a second, but use heuristics to check certain types of files less frequently than others.","configuration.tsserver.watchOptions.fallbackPolling.dynamicPriorityPolling ":"Use a dynamic queue where less-frequently modified files will be checked less often.","configuration.tsserver.watchOptions.synchronousWatchDirectory":"Disable deferred watching on directories. Deferred watching is useful when lots of file changes might occur at once (e.g. a change in node_modules from running npm install), but you might want to disable it with this flag for some less-common setups.","typescript.preferences.renameShorthandProperties.deprecationMessage":"The setting 'typescript.preferences.renameShorthandProperties' has been deprecated in favor of 'typescript.preferences.useAliasesForRenames'","typescript.preferences.useAliasesForRenames":"Enable/disable introducing aliases for object shorthand properties during renames. Requires using TypeScript 3.4 or newer in the workspace.","typescript.workspaceSymbols.scope":"Controls which files are searched by [go to symbol in workspace](https://code.visualstudio.com/docs/editor/editingevolved#_open-symbol-by-name).","typescript.workspaceSymbols.scope.allOpenProjects":"Search all open JavaScript or TypeScript projects for symbols. Requires using TypeScript 3.9 or newer in the workspace.","typescript.workspaceSymbols.scope.currentProject":"Only search for symbols in the current JavaScript or TypeScript project.","codeActions.refactor.extract.constant.title":"Extract constant","codeActions.refactor.extract.constant.description":"Extract expression to constant.","codeActions.refactor.extract.function.title":"Extract function","codeActions.refactor.extract.function.description":"Extract expression to method or function.","codeActions.refactor.extract.type.title":"Extract type","codeActions.refactor.extract.type.description":"Extract type to a type alias.","codeActions.refactor.extract.interface.title":"Extract interface","codeActions.refactor.extract.interface.description":"Extract type to an interface.","codeActions.refactor.rewrite.import.title":"Convert import","codeActions.refactor.rewrite.import.description":"Convert between named imports and namespace imports.","codeActions.refactor.rewrite.export.title":"Convert export","codeActions.refactor.rewrite.export.description":"Convert between default export and named export.","codeActions.refactor.move.newFile.title":"Move to a new file","codeActions.refactor.move.newFile.description":"Move the expression to a new file.","codeActions.refactor.rewrite.arrow.braces.title":"Rewrite arrow braces","codeActions.refactor.rewrite.arrow.braces.description":"Add or remove braces in an arrow function.","codeActions.refactor.rewrite.parameters.toDestructured.title":"Convert parameters to destructured object","codeActions.refactor.rewrite.property.generateAccessors.title":"Generate accessors","codeActions.refactor.rewrite.property.generateAccessors.description":"Generate 'get' and 'set' accessors","codeActions.source.organizeImports.title":"Organize imports"},pkgNlsJSON:{},nlsList:[],extendConfig:{},webAssets:["package.json","dist/browser/typescript-web/cancellationToken.js","dist/browser/typescript-web/lib.d.ts","dist/browser/typescript-web/lib.dom.d.ts","dist/browser/typescript-web/lib.dom.iterable.d.ts","dist/browser/typescript-web/lib.es2015.collection.d.ts","dist/browser/typescript-web/lib.es2015.core.d.ts","dist/browser/typescript-web/lib.es2015.d.ts","dist/browser/typescript-web/lib.es2015.generator.d.ts","dist/browser/typescript-web/lib.es2015.iterable.d.ts","dist/browser/typescript-web/lib.es2015.promise.d.ts","dist/browser/typescript-web/lib.es2015.proxy.d.ts","dist/browser/typescript-web/lib.es2015.reflect.d.ts","dist/browser/typescript-web/lib.es2015.symbol.d.ts","dist/browser/typescript-web/lib.es2015.symbol.wellknown.d.ts","dist/browser/typescript-web/lib.es2016.array.include.d.ts","dist/browser/typescript-web/lib.es2016.d.ts","dist/browser/typescript-web/lib.es2016.full.d.ts","dist/browser/typescript-web/lib.es2017.d.ts","dist/browser/typescript-web/lib.es2017.full.d.ts","dist/browser/typescript-web/lib.es2017.intl.d.ts","dist/browser/typescript-web/lib.es2017.object.d.ts","dist/browser/typescript-web/lib.es2017.sharedmemory.d.ts","dist/browser/typescript-web/lib.es2017.string.d.ts","dist/browser/typescript-web/lib.es2017.typedarrays.d.ts","dist/browser/typescript-web/lib.es2018.asyncgenerator.d.ts","dist/browser/typescript-web/lib.es2018.asynciterable.d.ts","dist/browser/typescript-web/lib.es2018.d.ts","dist/browser/typescript-web/lib.es2018.full.d.ts","dist/browser/typescript-web/lib.es2018.intl.d.ts","dist/browser/typescript-web/lib.es2018.promise.d.ts","dist/browser/typescript-web/lib.es2018.regexp.d.ts","dist/browser/typescript-web/lib.es2019.array.d.ts","dist/browser/typescript-web/lib.es2019.d.ts","dist/browser/typescript-web/lib.es2019.full.d.ts","dist/browser/typescript-web/lib.es2019.object.d.ts","dist/browser/typescript-web/lib.es2019.string.d.ts","dist/browser/typescript-web/lib.es2019.symbol.d.ts","dist/browser/typescript-web/lib.es2020.bigint.d.ts","dist/browser/typescript-web/lib.es2020.d.ts","dist/browser/typescript-web/lib.es2020.full.d.ts","dist/browser/typescript-web/lib.es2020.intl.d.ts","dist/browser/typescript-web/lib.es2020.promise.d.ts","dist/browser/typescript-web/lib.es2020.sharedmemory.d.ts","dist/browser/typescript-web/lib.es2020.string.d.ts","dist/browser/typescript-web/lib.es2020.symbol.wellknown.d.ts","dist/browser/typescript-web/lib.es5.d.ts","dist/browser/typescript-web/lib.es6.d.ts","dist/browser/typescript-web/lib.esnext.d.ts","dist/browser/typescript-web/lib.esnext.full.d.ts","dist/browser/typescript-web/lib.esnext.intl.d.ts","dist/browser/typescript-web/lib.esnext.promise.d.ts","dist/browser/typescript-web/lib.esnext.string.d.ts","dist/browser/typescript-web/lib.esnext.weakref.d.ts","dist/browser/typescript-web/lib.scripthost.d.ts","dist/browser/typescript-web/lib.webworker.d.ts","dist/browser/typescript-web/lib.webworker.importscripts.d.ts","dist/browser/typescript-web/lib.webworker.iterable.d.ts","dist/browser/typescript-web/protocol.d.ts","dist/browser/typescript-web/tsc.js","dist/browser/typescript-web/tsserver.js","dist/browser/typescript-web/tsserver.web.js","dist/browser/typescript-web/tsserverlibrary.d.ts","dist/browser/typescript-web/tsserverlibrary.js","dist/browser/typescript-web/typesMap.json","dist/browser/typescript-web/typescript.d.ts","dist/browser/typescript-web/typescript.js","dist/browser/typescript-web/typescriptServices.d.ts","dist/browser/typescript-web/typescriptServices.js","dist/browser/typescript-web/typingsInstaller.js","dist/browser/typescript-web/watchGuard.js","README.md","icon.png","schemas/package.schema.json","https://json.schemastore.org/tsconfig","schemas/tsconfig.schema.json","https://json.schemastore.org/typings","https://json.schemastore.org/bowerrc","https://json.schemastore.org/babelrc","https://json.schemastore.org/jsconfig","schemas/jsconfig.schema.json","dist/browser/extension.js"],mode:"public"}},l78w:function(e,t,n){"use strict";e.exports={extension:{publisher:"alex-ext-public",name:"css-language-features-worker",version:"1.53.0-patch.1"},packageJSON:{name:"css-language-features-worker",publisher:"alex",version:"1.53.0-patch.1",displayName:"%displayName%",description:"%description%",icon:"icons/css.png",activationEvents:["onLanguage:css","onLanguage:less","onLanguage:scss","onCommand:_css.applyCodeAction"],kaitianContributes:{workerMain:"client/dist/browser/cssClientMain.js"},contributes:{configuration:[{order:22,id:"css",title:"%css.title%",properties:{"css.customData":{type:"array",markdownDescription:"%css.customData.desc%",default:[],items:{type:"string"},scope:"resource"},"css.completion.triggerPropertyValueCompletion":{type:"boolean",scope:"resource",default:!0,description:"%css.completion.triggerPropertyValueCompletion.desc%"},"css.completion.completePropertyWithSemicolon":{type:"boolean",scope:"resource",default:!0,description:"%css.completion.completePropertyWithSemicolon.desc%"},"css.validate":{type:"boolean",scope:"resource",default:!0,description:"%css.validate.desc%"},"css.lint.compatibleVendorPrefixes":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%css.lint.compatibleVendorPrefixes.desc%"},"css.lint.vendorPrefix":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%css.lint.vendorPrefix.desc%"},"css.lint.duplicateProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%css.lint.duplicateProperties.desc%"},"css.lint.emptyRules":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%css.lint.emptyRules.desc%"},"css.lint.importStatement":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%css.lint.importStatement.desc%"},"css.lint.boxModel":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%css.lint.boxModel.desc%"},"css.lint.universalSelector":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%css.lint.universalSelector.desc%"},"css.lint.zeroUnits":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%css.lint.zeroUnits.desc%"},"css.lint.fontFaceProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",markdownDescription:"%css.lint.fontFaceProperties.desc%"},"css.lint.hexColorLength":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"error",description:"%css.lint.hexColorLength.desc%"},"css.lint.argumentsInColorFunction":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"error",description:"%css.lint.argumentsInColorFunction.desc%"},"css.lint.unknownProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%css.lint.unknownProperties.desc%"},"css.lint.validProperties":{type:"array",uniqueItems:!0,items:{type:"string"},scope:"resource",default:[],description:"%css.lint.validProperties.desc%"},"css.lint.ieHack":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%css.lint.ieHack.desc%"},"css.lint.unknownVendorSpecificProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%css.lint.unknownVendorSpecificProperties.desc%"},"css.lint.propertyIgnoredDueToDisplay":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",markdownDescription:"%css.lint.propertyIgnoredDueToDisplay.desc%"},"css.lint.important":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%css.lint.important.desc%"},"css.lint.float":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%css.lint.float.desc%"},"css.lint.idSelector":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%css.lint.idSelector.desc%"},"css.lint.unknownAtRules":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%css.lint.unknownAtRules.desc%"},"css.trace.server":{type:"string",scope:"window",enum:["off","messages","verbose"],default:"off",description:"%css.trace.server.desc%"}}},{id:"scss",order:24,title:"%scss.title%",properties:{"scss.completion.triggerPropertyValueCompletion":{type:"boolean",scope:"resource",default:!0,description:"%scss.completion.triggerPropertyValueCompletion.desc%"},"scss.completion.completePropertyWithSemicolon":{type:"boolean",scope:"resource",default:!0,description:"%scss.completion.completePropertyWithSemicolon.desc%"},"scss.validate":{type:"boolean",scope:"resource",default:!0,description:"%scss.validate.desc%"},"scss.lint.compatibleVendorPrefixes":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%scss.lint.compatibleVendorPrefixes.desc%"},"scss.lint.vendorPrefix":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%scss.lint.vendorPrefix.desc%"},"scss.lint.duplicateProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%scss.lint.duplicateProperties.desc%"},"scss.lint.emptyRules":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%scss.lint.emptyRules.desc%"},"scss.lint.importStatement":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%scss.lint.importStatement.desc%"},"scss.lint.boxModel":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%scss.lint.boxModel.desc%"},"scss.lint.universalSelector":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%scss.lint.universalSelector.desc%"},"scss.lint.zeroUnits":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%scss.lint.zeroUnits.desc%"},"scss.lint.fontFaceProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",markdownDescription:"%scss.lint.fontFaceProperties.desc%"},"scss.lint.hexColorLength":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"error",description:"%scss.lint.hexColorLength.desc%"},"scss.lint.argumentsInColorFunction":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"error",description:"%scss.lint.argumentsInColorFunction.desc%"},"scss.lint.unknownProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%scss.lint.unknownProperties.desc%"},"scss.lint.validProperties":{type:"array",uniqueItems:!0,items:{type:"string"},scope:"resource",default:[],description:"%scss.lint.validProperties.desc%"},"scss.lint.ieHack":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%scss.lint.ieHack.desc%"},"scss.lint.unknownVendorSpecificProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%scss.lint.unknownVendorSpecificProperties.desc%"},"scss.lint.propertyIgnoredDueToDisplay":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",markdownDescription:"%scss.lint.propertyIgnoredDueToDisplay.desc%"},"scss.lint.important":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%scss.lint.important.desc%"},"scss.lint.float":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%scss.lint.float.desc%"},"scss.lint.idSelector":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%scss.lint.idSelector.desc%"},"scss.lint.unknownAtRules":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%scss.lint.unknownAtRules.desc%"}}},{id:"less",order:23,type:"object",title:"%less.title%",properties:{"less.completion.triggerPropertyValueCompletion":{type:"boolean",scope:"resource",default:!0,description:"%less.completion.triggerPropertyValueCompletion.desc%"},"less.completion.completePropertyWithSemicolon":{type:"boolean",scope:"resource",default:!0,description:"%less.completion.completePropertyWithSemicolon.desc%"},"less.validate":{type:"boolean",scope:"resource",default:!0,description:"%less.validate.desc%"},"less.lint.compatibleVendorPrefixes":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%less.lint.compatibleVendorPrefixes.desc%"},"less.lint.vendorPrefix":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%less.lint.vendorPrefix.desc%"},"less.lint.duplicateProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%less.lint.duplicateProperties.desc%"},"less.lint.emptyRules":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%less.lint.emptyRules.desc%"},"less.lint.importStatement":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%less.lint.importStatement.desc%"},"less.lint.boxModel":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%less.lint.boxModel.desc%"},"less.lint.universalSelector":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%less.lint.universalSelector.desc%"},"less.lint.zeroUnits":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%less.lint.zeroUnits.desc%"},"less.lint.fontFaceProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",markdownDescription:"%less.lint.fontFaceProperties.desc%"},"less.lint.hexColorLength":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"error",description:"%less.lint.hexColorLength.desc%"},"less.lint.argumentsInColorFunction":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"error",description:"%less.lint.argumentsInColorFunction.desc%"},"less.lint.unknownProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%less.lint.unknownProperties.desc%"},"less.lint.validProperties":{type:"array",uniqueItems:!0,items:{type:"string"},scope:"resource",default:[],description:"%less.lint.validProperties.desc%"},"less.lint.ieHack":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%less.lint.ieHack.desc%"},"less.lint.unknownVendorSpecificProperties":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%less.lint.unknownVendorSpecificProperties.desc%"},"less.lint.propertyIgnoredDueToDisplay":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",markdownDescription:"%less.lint.propertyIgnoredDueToDisplay.desc%"},"less.lint.important":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%less.lint.important.desc%"},"less.lint.float":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",markdownDescription:"%less.lint.float.desc%"},"less.lint.idSelector":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"ignore",description:"%less.lint.idSelector.desc%"},"less.lint.unknownAtRules":{type:"string",scope:"resource",enum:["ignore","warning","error"],default:"warning",description:"%less.lint.unknownAtRules.desc%"}}}],configurationDefaults:{"[css]":{"editor.suggest.insertMode":"replace"},"[scss]":{"editor.suggest.insertMode":"replace"},"[less]":{"editor.suggest.insertMode":"replace"}},jsonValidation:[{fileMatch:"*.css-data.json",url:"https://raw.githubusercontent.com/microsoft/vscode-css-languageservice/master/docs/customData.schema.json"},{fileMatch:"package.json",url:"./schemas/package.schema.json"}],workerMain:"client/dist/browser/cssClientMain.js"},browser:"./client/dist/browser/cssClientMain"},defaultPkgNlsJSON:{displayName:"CSS Language Features",description:"Provides rich language support for CSS, LESS and SCSS files.","css.title":"CSS","css.customData.desc":"A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/microsoft/vscode-css-languageservice/blob/master/docs/customData.md).\n\nVS Code loads custom data on startup to enhance its CSS support for the custom CSS properties, at directives, pseudo classes and pseudo elements you specify in the JSON files.\n\nThe file paths are relative to workspace and only workspace folder settings are considered.","css.completion.triggerPropertyValueCompletion.desc":"By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.","css.completion.completePropertyWithSemicolon.desc":"Insert semicolon at end of line when completing CSS properties","css.lint.argumentsInColorFunction.desc":"Invalid number of parameters.","css.lint.boxModel.desc":"Do not use `width` or `height` when using `padding` or `border`.","css.lint.compatibleVendorPrefixes.desc":"When using a vendor-specific prefix make sure to also include all other vendor-specific properties.","css.lint.duplicateProperties.desc":"Do not use duplicate style definitions.","css.lint.emptyRules.desc":"Do not use empty rulesets.","css.lint.float.desc":"Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes.","css.lint.fontFaceProperties.desc":"`@font-face` rule must define `src` and `font-family` properties.","css.lint.hexColorLength.desc":"Hex colors must consist of three or six hex numbers.","css.lint.idSelector.desc":"Selectors should not contain IDs because these rules are too tightly coupled with the HTML.","css.lint.ieHack.desc":"IE hacks are only necessary when supporting IE7 and older.","css.lint.important.desc":"Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored.","css.lint.importStatement.desc":"Import statements do not load in parallel.","css.lint.propertyIgnoredDueToDisplay.desc":"Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect.","css.lint.universalSelector.desc":"The universal selector (`*`) is known to be slow.","css.lint.unknownAtRules.desc":"Unknown at-rule.","css.lint.unknownProperties.desc":"Unknown property.","css.lint.validProperties.desc":"A list of properties that are not validated against the `unknownProperties` rule.","css.lint.unknownVendorSpecificProperties.desc":"Unknown vendor specific property.","css.lint.vendorPrefix.desc":"When using a vendor-specific prefix, also include the standard property.","css.lint.zeroUnits.desc":"No unit for zero needed.","css.trace.server.desc":"Traces the communication between VS Code and the CSS language server.","css.validate.title":"Controls CSS validation and problem severities.","css.validate.desc":"Enables or disables all validations.","less.title":"LESS","less.completion.triggerPropertyValueCompletion.desc":"By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.","less.completion.completePropertyWithSemicolon.desc":"Insert semicolon at end of line when completing CSS properties","less.lint.argumentsInColorFunction.desc":"Invalid number of parameters.","less.lint.boxModel.desc":"Do not use `width` or `height` when using `padding` or `border`.","less.lint.compatibleVendorPrefixes.desc":"When using a vendor-specific prefix make sure to also include all other vendor-specific properties.","less.lint.duplicateProperties.desc":"Do not use duplicate style definitions.","less.lint.emptyRules.desc":"Do not use empty rulesets.","less.lint.float.desc":"Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes.","less.lint.fontFaceProperties.desc":"`@font-face` rule must define `src` and `font-family` properties.","less.lint.hexColorLength.desc":"Hex colors must consist of three or six hex numbers.","less.lint.idSelector.desc":"Selectors should not contain IDs because these rules are too tightly coupled with the HTML.","less.lint.ieHack.desc":"IE hacks are only necessary when supporting IE7 and older.","less.lint.important.desc":"Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored.","less.lint.importStatement.desc":"Import statements do not load in parallel.","less.lint.propertyIgnoredDueToDisplay.desc":"Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect.","less.lint.universalSelector.desc":"The universal selector (`*`) is known to be slow.","less.lint.unknownAtRules.desc":"Unknown at-rule.","less.lint.unknownProperties.desc":"Unknown property.","less.lint.validProperties.desc":"A list of properties that are not validated against the `unknownProperties` rule.","less.lint.unknownVendorSpecificProperties.desc":"Unknown vendor specific property.","less.lint.vendorPrefix.desc":"When using a vendor-specific prefix, also include the standard property.","less.lint.zeroUnits.desc":"No unit for zero needed.","less.validate.title":"Controls LESS validation and problem severities.","less.validate.desc":"Enables or disables all validations.","scss.title":"SCSS (Sass)","scss.completion.triggerPropertyValueCompletion.desc":"By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.","scss.completion.completePropertyWithSemicolon.desc":"Insert semicolon at end of line when completing CSS properties","scss.lint.argumentsInColorFunction.desc":"Invalid number of parameters.","scss.lint.boxModel.desc":"Do not use `width` or `height` when using `padding` or `border`.","scss.lint.compatibleVendorPrefixes.desc":"When using a vendor-specific prefix make sure to also include all other vendor-specific properties.","scss.lint.duplicateProperties.desc":"Do not use duplicate style definitions.","scss.lint.emptyRules.desc":"Do not use empty rulesets.","scss.lint.float.desc":"Avoid using `float`. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes.","scss.lint.fontFaceProperties.desc":"`@font-face` rule must define `src` and `font-family` properties.","scss.lint.hexColorLength.desc":"Hex colors must consist of three or six hex numbers.","scss.lint.idSelector.desc":"Selectors should not contain IDs because these rules are too tightly coupled with the HTML.","scss.lint.ieHack.desc":"IE hacks are only necessary when supporting IE7 and older.","scss.lint.important.desc":"Avoid using `!important`. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored.","scss.lint.importStatement.desc":"Import statements do not load in parallel.","scss.lint.propertyIgnoredDueToDisplay.desc":"Property is ignored due to the display. E.g. with `display: inline`, the `width`, `height`, `margin-top`, `margin-bottom`, and `float` properties have no effect.","scss.lint.universalSelector.desc":"The universal selector (`*`) is known to be slow.","scss.lint.unknownAtRules.desc":"Unknown at-rule.","scss.lint.unknownProperties.desc":"Unknown property.","scss.lint.validProperties.desc":"A list of properties that are not validated against the `unknownProperties` rule.","scss.lint.unknownVendorSpecificProperties.desc":"Unknown vendor specific property.","scss.lint.vendorPrefix.desc":"When using a vendor-specific prefix, also include the standard property.","scss.lint.zeroUnits.desc":"No unit for zero needed.","scss.validate.title":"Controls SCSS validation and problem severities.","scss.validate.desc":"Enables or disables all validations.","css.colorDecorators.enable.deprecationMessage":"The setting `css.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`.","scss.colorDecorators.enable.deprecationMessage":"The setting `scss.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`.","less.colorDecorators.enable.deprecationMessage":"The setting `less.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`."},pkgNlsJSON:{},nlsList:[],extendConfig:{},webAssets:["package.json","server/dist/browser/cssServerMain.js","README.md","icons/css.png","https://raw.githubusercontent.com/microsoft/vscode-css-languageservice/master/docs/customData.schema.json","schemas/package.schema.json","client/dist/browser/cssClientMain.js"],mode:"public"}},lH0x:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n("BvKs"));n("lUTK");var o=n("cDcd"),i=s(o);n("MN5C");var a=s(n("FRFo"));function s(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.http_url,n=e.ssh_url,s=e.zip_url,l=e.tar_url,c=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,o.useState)("HTTP"),2),u=c[0],d=c[1];return i.default.createElement("div",{className:"downMenu"},i.default.createElement("div",null,i.default.createElement(r.default,{className:"urlMenu",selectedKeys:[u],mode:"horizontal"},i.default.createElement(r.default.Item,{key:"HTTP",onClick:function(e){d(e.key)}},"HTTP"),n&&i.default.createElement(r.default.Item,{key:"SSH",onClick:function(e){d(e.key)}},"SSH")),i.default.createElement("div",{className:"gitAddressClone"},i.default.createElement("input",{type:"text",id:"copy_rep_content",value:"HTTP"===u?t:n}),i.default.createElement(a.default,{inputId:"copy_rep_content",className:"copytool"}))),i.default.createElement(r.default,{className:"edu-txt-center"},s&&i.default.createElement(r.default.Item,{style:{borderTop:"1px solid #eee"}},i.default.createElement("a",{href:s},"下载 ZIP")),l&&i.default.createElement(r.default.Item,null,i.default.createElement("a",{href:l},"下载 TAR.GZ"))))}},lr0e:function(e,t,n){},m50d:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=T(n("3S7+")),o=T(n("diRs")),i=T(n("CtXQ")),a=T(n("Sdc0")),s=T(n("kaz8")),l=T(n("9yH6")),c=T(n("14Xm")),u=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")};n("5Dmo"),n("Q9mQ"),n("Pwec"),n("BoS7"),n("sRBo"),n("7Kak");var d=n("cDcd"),p=T(d),f=n("3ocl"),m=n("9XV7"),h=T(n("IxBv")),g=T(n("l78w")),v=T(n("kjft")),y=T(n("IEkG")),b=T(n("1xfW")),_=T(n("w9N6")),w=T(n("BePR")),x=n("sYIF"),k=T(n("BTkp")),S=n("j5x1"),C=T(S),E=n("O4Oc");function T(e){return e&&e.__esModule?e:{default:e}}function O(e){return function(){var t=e.apply(this,arguments);return new Promise((function(e,n){return function r(o,i){try{var a=t[o](i),s=a.value}catch(e){return void n(e)}if(!a.done)return Promise.resolve(s).then((function(e){r("next",e)}),(function(e){r("throw",e)}));e(s)}("next")}))}}t.default=function(e){var t,n=this,T=(t=O(c.default.mark((function e(t){var n;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=k.default.commands)){e.next=4;break}return e.next=4,n.executeCommand("ChangeThemePlugin.changeTheme",t?"opensumi-light":"opensumi-dark");case 4:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)}),j=e.download_url,N=e.params,P=N.owner,M=N.projectsId,D=N.branchName,L=e.filepath,R=e.value,q=function(){var e=(0,d.useState)(!0),t=u(e,2),n=t[0],r=t[1],o=(0,d.useState)(!1),i=u(o,2),a=i[0],s=i[1],l=(0,d.useState)("0"),c=u(l,2),p=c[0],f=c[1],m=(0,d.useState)(""),h=u(m,2);return{loading:n,setLoading:r,showIde:a,setShowIde:s,fileSize:p,setFileSize:f,fileName:h[0],setFileName:h[1]}}(),A=(q.fileSize,q.fileName),F=new Map,I=(0,m.useLocalStorageState)("code.file.operation.tip",!0),z=u(I,2),U=z[0],W=z[1],B=(0,d.useState)(0),H=u(B,2),K=(H[0],H[1]),V=(0,d.useState)(0),J=u(V,2),Z=(J[0],J[1]),Q=(0,d.useState)("UTF-8"),$=u(Q,2),G=$[0],Y=$[1],X=(0,d.useState)(""),ee=u(X,2),te=(ee[0],ee[1]),ne=(0,d.useMemo)((function(){}),[D,A]),re=(0,d.useState)(!1),oe=u(re,2),ie=oe[0],ae=oe[1];(0,d.useEffect)((function(){ae(!1);var e=D+"-"+ne,t=F.get(e);t&&(te(t.fileString),K(t.lines),Z(t.sloc))}),[ne]);var se,le,ce=(0,d.useState)(!1),ue=u(ce,2),de=(ue[0],ue[1]),pe=(0,d.useRef)(new C.default((function(){return de(!0)}),(function(e){return window.open("/"+P+"/"+M+"/commits/"+e)}))),fe=(se=O(c.default.mark((function e(t){var r;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(ae(t.target.checked),t.target.checked){e.next=5;break}pe.current.commands&&pe.current.commands.executeCommand(S.ExtensionCommand.toggleBlame),e.next=9;break;case 5:return e.next=7,E.repoService.getCodeBlame(M,P,{sha:decodeURIComponent(D),filepath:L});case 7:r=e.sent,pe.current.commands&&pe.current.commands.executeCommand(S.ExtensionCommand.toggleBlame,r);case 9:case"end":return e.stop()}}),e,n)}))),function(e){return se.apply(this,arguments)}),me=(0,d.useState)(!1),he=u(me,2),ge=he[0],ve=he[1],ye=function(e){var t=e?"on":"off";localStorage.setItem("code.file.viewer.worlWrap",t),pe.current.setPerference("editor.wordWrap",t,!0),ve(e)},be=p.default.createElement(d.Fragment,null,p.default.createElement("div",{className:"flex align-center"},p.default.createElement("span",{className:"c-65"},"编码方式",":"),p.default.createElement("span",null,p.default.createElement(l.default.Group,{onChange:function(e){Y(e.target.value)},value:G,size:"small"},p.default.createElement(l.default,{value:"UTF-8"},"UTF-8"),p.default.createElement(l.default,{value:"GBK"},"GBK")))),p.default.createElement("div",{className:"flex align-center"},p.default.createElement("span",{className:"c-65"},"自动换行",":"),p.default.createElement("span",null,p.default.createElement(l.default.Group,{onChange:function(e){ye(e.target.value)},value:ge,size:"small"},p.default.createElement(l.default,{value:!1},"不自动换行"),p.default.createElement(l.default,{value:!0},"自动换行")))));return p.default.createElement(d.Fragment,null,p.default.createElement("div",{className:"ide-tool-bar"},fe?p.default.createElement(s.default,{onChange:fe,checked:!!ie},"Blame"):null,p.default.createElement(a.default,{checkedChildren:"light",unCheckedChildren:"dark",defaultChecked:!0,onChange:T}),p.default.createElement(r.default,{title:"更改阅读设置",defaultVisible:U,onVisibleChange:W},p.default.createElement(o.default,{content:be,title:null,trigger:"click",placement:"bottomRight",arrowPointAtCenter:!0},p.default.createElement(i.default,{className:"read-more",type:"read"})))),R?p.default.createElement(f.EditorRenderer,{appConfig:{plugins:[k.default,pe.current],workspaceDir:P+"/"+M,defaultPreferences:{"general.theme":"opensumi-light","editor.forceReadOnly":!0,"editor.scrollBeyondLastLine":!1},extensionMetadata:[h.default,g.default,v.default,y.default,b.default,_.default,w.default]},runtimeConfig:{biz:"gitlink",scenario:null,startupEditor:"none",hideEditorTab:!0},editorConfig:{stretchHeight:!0,disableEditorSearch:!0},documentModel:{type:"code",ref:D,owner:P,name:M,filepath:L,readFile:(le=O(c.default.mark((function e(t){var r;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,fetch((0,x.getUrl)()+"/attachments/entries/get_file?download_url="+j);case 4:return r=e.sent,setTimeout((function(){ye("on"===localStorage.getItem("code.file.viewer.worlWrap"))}),5e3),e.abrupt("return",r.arrayBuffer());case 7:case"end":return e.stop()}}),e,n)}))),function(e){return le.apply(this,arguments)}),encoding:G,onFilepathChange:function(e){},onLineNumberChange:function(e){}}}):p.default.createElement("div",{className:"pl20"},"空文件"))}},mJXK:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n("5rEg")),o=l(n("JsLm")),i=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")};n("5NDa"),n("5GOC");var a=n("cDcd"),s=l(a);function l(e){return e&&e.__esModule?e:{default:e}}n("dEUZ");var c=o.default.Link;t.default=function(e){var t=e.menuList,n=(e.hash,(0,a.useState)("")),l=i(n,2),u=l[0],d=l[1],p=(0,a.useState)(""),f=i(p,2),m=f[0],h=f[1],g=(0,a.useState)(t),v=i(g,2),y=v[0],b=v[1];return s.default.createElement("div",null,s.default.createElement("div",{className:"searchBox"},s.default.createElement(r.default,{placeholder:"请输入关键字",value:m,onChange:function(e){if(h(e.target.value),e.target.value){var n=t.filter((function(t){return t.text.toLowerCase().indexOf(e.target.value.toLowerCase())>-1}));b(n)}else b(t)},prefix:s.default.createElement("i",{className:"iconfont icon-sousuo_icon1 font-14"})})),y&&y.length>0?s.default.createElement("div",{className:"anchorBox"},s.default.createElement(o.default,{affix:!1,onChange:function(e){d(e)},offsetTop:140},y.map((function(e,t){return s.default.createElement("div",{style:{paddingLeft:15*e.level+"px"},className:u===e.href?"items active":"items"},s.default.createElement(c,{href:""+e.href,title:e.text}))})))):"")}},ozfa:function(e,t,n){"use strict";n.r(t),n("cIOH"),n("KxFI")},p46w:function(e,t,n){var r,o,i;i=function(){function e(){for(var e=0,t={};e2&&void 0!==arguments[2]?arguments[2]:{};return(0,r.request)(e,{method:"GET",params:t},n)},post:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return(0,r.request)(e,{method:"POST",params:t,data:n},o)},put:function(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return(0,r.request)(e,{method:"PUT",params:t,data:n},o)},delete:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(0,r.request)(e,{method:"DELETE",params:t},n)}}},z2sw:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=i(n("cDcd"));n("dEUZ");var o=i(n("FRFo"));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.code,n=e.className;return r.default.createElement("div",{className:n},r.default.createElement("span",{className:"font-16 color-ooo"},"邀请码"),r.default.createElement("div",null,r.default.createElement("input",{value:t,id:"devitecode",style:{width:"62px",border:"none",cursor:"default"},readOnly:!0}),r.default.createElement(o.default,{timeOut:!0,beforeText:r.default.createElement("p",{className:"edu-txt-center"},"可以通过邀请码邀请成员加入项目",r.default.createElement("br",null),"点击复制邀请码。"),className:"ml8 font-16",inputId:"devitecode"})))}},zAh6:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var r=n("61SU"),o=n.n(r),i=n("i6bk");function a(e,t,n,r){var o=n-t;return(e/=r/2)<1?o/2*e*e*e+t:o/2*((e-=2)*e*e+2)+t}function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.getContainer,r=void 0===n?function(){return window}:n,s=t.callback,l=t.duration,c=void 0===l?450:l,u=r(),d=Object(i.a)(u,!0),p=Date.now(),f=function t(){var n=Date.now()-p,r=a(n>c?c:n,d,e,c);u===window?window.scrollTo(window.pageXOffset,r):u.scrollTop=r,n {\n * Create a new local account.\n */\n export const postSignup = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password must be at least 4 characters long").isLength({ min: 4 }).run(req);\n- await check("confirmPassword", "Passwords do not match").equals(req.body.password).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/signup");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password must be at least 4 characters long").isLength({ min: 4 }).run(req);\n+ await check("confirmPassword", "Passwords do not match").equals(req.body.password).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/signup");\n+ }\n+\n+ const user = new User({\n+ email: req.body.email,\n+ password: req.body.password\n+ });\n+\n+ User.findOne({ email: req.body.email }, (err, existingUser) => {\n+ if (err) { return next(err); }\n+ if (existingUser) {\n+ req.flash("errors", { msg: "Account with that email address already exists." });\n+ return res.redirect("/signup");\n }\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_94_101",line_type:"old",note:"111",noteable_id:1644,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17641,del_line_num:265,deleted_file:!1,diff:'@@ -80,40 +80,40 @@ export const getSignup = (req: Request, res: Response) => {\n * Create a new local account.\n */\n export const postSignup = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password must be at least 4 characters long").isLength({ min: 4 }).run(req);\n- await check("confirmPassword", "Passwords do not match").equals(req.body.password).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/signup");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password must be at least 4 characters long").isLength({ min: 4 }).run(req);\n+ await check("confirmPassword", "Passwords do not match").equals(req.body.password).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/signup");\n+ }\n+\n+ const user = new User({\n+ email: req.body.email,\n+ password: req.body.password\n+ });\n+\n+ User.findOne({ email: req.body.email }, (err, existingUser) => {\n+ if (err) { return next(err); }\n+ if (existingUser) {\n+ req.flash("errors", { msg: "Account with that email address already exists." });\n+ return res.redirect("/signup");\n }\n',id:47,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-09T14:21:12+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"liuya.zmn@test.com",extern_uid:"208698",id:14920,name:"六牙",state:"active",username:"liuya.zmn",web_url:"https://test.com.com/nwpipe/u/208698"},body:null,created_at:"2020-09-09T14:21:25+08:00",id:1645,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"liuya.zmn@test.com",extern_uid:"208698",id:14920,name:"六牙",state:"active",username:"liuya.zmn",web_url:"https://test.com.com/nwpipe/u/208698"},commit_id:null,created_at:"2020-09-09T14:21:26+0800",discussion_id:null,id:64,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -80,40 +80,40 @@ export const getSignup = (req: Request, res: Response) => {\n * Create a new local account.\n */\n export const postSignup = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password must be at least 4 characters long").isLength({ min: 4 }).run(req);\n- await check("confirmPassword", "Passwords do not match").equals(req.body.password).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/signup");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password must be at least 4 characters long").isLength({ min: 4 }).run(req);\n+ await check("confirmPassword", "Passwords do not match").equals(req.body.password).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/signup");\n+ }\n+\n+ const user = new User({\n+ email: req.body.email,\n+ password: req.body.password\n+ });\n+\n+ User.findOne({ email: req.body.email }, (err, existingUser) => {\n+ if (err) { return next(err); }\n+ if (existingUser) {\n+ req.flash("errors", { msg: "Account with that email address already exists." });\n+ return res.redirect("/signup");\n }\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_94_92",line_type:"old",note:"222",noteable_id:1645,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17641,del_line_num:265,deleted_file:!1,diff:'@@ -80,40 +80,40 @@ export const getSignup = (req: Request, res: Response) => {\n * Create a new local account.\n */\n export const postSignup = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password must be at least 4 characters long").isLength({ min: 4 }).run(req);\n- await check("confirmPassword", "Passwords do not match").equals(req.body.password).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/signup");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password must be at least 4 characters long").isLength({ min: 4 }).run(req);\n+ await check("confirmPassword", "Passwords do not match").equals(req.body.password).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/signup");\n+ }\n+\n+ const user = new User({\n+ email: req.body.email,\n+ password: req.body.password\n+ });\n+\n+ User.findOne({ email: req.body.email }, (err, existingUser) => {\n+ if (err) { return next(err); }\n+ if (existingUser) {\n+ req.flash("errors", { msg: "Account with that email address already exists." });\n+ return res.redirect("/signup");\n }\n',id:47,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-09T14:21:41+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-08-06T11:35:40+08:00",id:1483,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-08-11T16:36:49+0800",discussion_id:null,id:8,is_award:!1,labels:[],latest_st_diff:{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,228 @@\n+import { PullRequestChange } from \'../../../submodules/api-server/app/web/module/common/model/antcode\';\n+\n+export const mockChanges: PullRequestChange[] = [\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139517,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/locales/en-us/codeReview.ts",\n+ "old_path": "app/web/locales/en-us/codeReview.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139518,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/locales/zh-cn/codeReview.ts",\n+ "old_path": "app/web/locales/zh-cn/codeReview.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 2,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 6,\n+ "deleted_file": false,\n+ "id": 139519,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/module/browser/index.ts",\n+ "old_path": "app/web/module/browser/index.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "0",\n+ "add_line_num": 298,\n+ "b_mode": "100644",\n+ "binary_file": false,\n',id:1077,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1},line_code:"02699cd6ca65aa6819d7e387678d8ea5359b5e59_0_56",line_type:"new",note:"123123123",noteable_id:1483,noteable_type:"ReviewComment",outdated:!1,path:"a.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:15929,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,228 @@\n+import { PullRequestChange } from \'../../../submodules/api-server/app/web/module/common/model/antcode\';\n+\n+export const mockChanges: PullRequestChange[] = [\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139517,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/locales/en-us/codeReview.ts",\n+ "old_path": "app/web/locales/en-us/codeReview.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139518,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/locales/zh-cn/codeReview.ts",\n+ "old_path": "app/web/locales/zh-cn/codeReview.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 2,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 6,\n+ "deleted_file": false,\n+ "id": 139519,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/module/browser/index.ts",\n+ "old_path": "app/web/module/browser/index.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "0",\n+ "add_line_num": 298,\n+ "b_mode": "100644",\n+ "binary_file": false,\n',id:43,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-11T16:36:53+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-08-11T16:36:54+08:00",id:1530,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-08-11T20:56:08+0800",discussion_id:null,id:9,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n-\n- passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n- if (err) { return next(err); }\n- if (!user) {\n- req.flash("errors", {msg: info.message});\n- return res.redirect("/login");\n- }\n- req.logIn(user, (err) => {\n- if (err) { return next(err); }\n- req.flash("success", { msg: "Success! You are logged in." });\n- res.redirect(req.session.returnTo || "/");\n- });\n- })(req, res, next);\n+ req.logIn(user, (err) => {\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_49_48",line_type:"old",note:"@taian.lta(伊北) 测试一下咔咔咔咔咔咔",noteable_id:1530,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:15929,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n-\n- passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n- if (err) { return next(err); }\n- if (!user) {\n- req.flash("errors", {msg: info.message});\n- return res.redirect("/login");\n- }\n- req.logIn(user, (err) => {\n- if (err) { return next(err); }\n- req.flash("success", { msg: "Success! You are logged in." });\n- res.redirect(req.session.returnTo || "/");\n- });\n- })(req, res, next);\n+ req.logIn(user, (err) => {\n',id:45,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-11T20:56:31+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-08-11T20:56:32+08:00",id:1537,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-08-13T15:13:13+0800",discussion_id:null,id:12,is_award:!1,labels:[],latest_st_diff:{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,228 @@\n+import { PullRequestChange } from \'../../../submodules/api-server/app/web/module/common/model/antcode\';\n+\n+export const mockChanges: PullRequestChange[] = [\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139517,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/locales/en-us/codeReview.ts",\n+ "old_path": "app/web/locales/en-us/codeReview.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139518,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/locales/zh-cn/codeReview.ts",\n+ "old_path": "app/web/locales/zh-cn/codeReview.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 2,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 6,\n+ "deleted_file": false,\n+ "id": 139519,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/module/browser/index.ts",\n+ "old_path": "app/web/module/browser/index.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "0",\n+ "add_line_num": 298,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139520,\n+ "mark_as_read": false,\n+ "new_file": true,\n+ "new_path": "app/web/module/code-review/browser/code-fold.contribution.tsx",\n+ "old_path": "app/web/module/code-review/browser/code-fold.contribution.tsx",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 47,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139521,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/module/code-review/browser/comment-common.service.ts",\n+ "old_path": "app/web/module/code-review/browser/comment-common.service.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 15,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 16,\n+ "deleted_file": false,\n+ "id": 139522,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/module/code-review/browser/comment-write.contribution.ts",\n+ "old_path": "app/web/module/code-review/browser/comment-write.contribution.ts",\n',id:1077,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1},line_code:"02699cd6ca65aa6819d7e387678d8ea5359b5e59_0_95",line_type:"new",note:"123",noteable_id:1537,noteable_type:"ReviewComment",outdated:!1,path:"a.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:15929,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,228 @@\n+import { PullRequestChange } from \'../../../submodules/api-server/app/web/module/common/model/antcode\';\n+\n+export const mockChanges: PullRequestChange[] = [\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139517,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/locales/en-us/codeReview.ts",\n+ "old_path": "app/web/locales/en-us/codeReview.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139518,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/locales/zh-cn/codeReview.ts",\n+ "old_path": "app/web/locales/zh-cn/codeReview.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 2,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 6,\n+ "deleted_file": false,\n+ "id": 139519,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/module/browser/index.ts",\n+ "old_path": "app/web/module/browser/index.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "0",\n+ "add_line_num": 298,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139520,\n+ "mark_as_read": false,\n+ "new_file": true,\n+ "new_path": "app/web/module/code-review/browser/code-fold.contribution.tsx",\n+ "old_path": "app/web/module/code-review/browser/code-fold.contribution.tsx",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 47,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n+ "id": 139521,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/module/code-review/browser/comment-common.service.ts",\n+ "old_path": "app/web/module/code-review/browser/comment-common.service.ts",\n+ "renamed_file": false,\n+ "too_large": false,\n+ "updated_after_read": false\n+ },\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 15,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 16,\n+ "deleted_file": false,\n+ "id": 139522,\n+ "mark_as_read": false,\n+ "new_file": false,\n+ "new_path": "app/web/module/code-review/browser/comment-write.contribution.ts",\n+ "old_path": "app/web/module/code-review/browser/comment-write.contribution.ts",\n',id:43,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-08-13T15:11:06+0800",discussion_id:null,id:11,is_award:!1,labels:["中间件规约"],latest_st_diff:{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,228 @@\n+import { PullRequestChange } from \'../../../submodules/api-server/app/web/module/common/model/antcode\';\n+\n+export const mockChanges: PullRequestChange[] = [\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n',id:1077,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1},line_code:"02699cd6ca65aa6819d7e387678d8ea5359b5e59_0_9",line_type:"new",note:"123123",noteable_id:1537,noteable_type:"ReviewComment",outdated:!1,path:"a.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:15929,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,228 @@\n+import { PullRequestChange } from \'../../../submodules/api-server/app/web/module/common/model/antcode\';\n+\n+export const mockChanges: PullRequestChange[] = [\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n',id:43,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-18T10:24:50+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-09-03T22:18:43+08:00",id:1629,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-03T22:18:43+0800",discussion_id:13,id:36,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"测试一条评论看看能不能生效呢",noteable_id:1629,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-09-03T22:18:43+0800"}],updated_at:"2020-09-03T22:18:48+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-09-04T10:52:12+08:00",id:1630,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-04T16:20:22+0800",discussion_id:null,id:38,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_40_37",line_type:"old",note:"测试",noteable_id:1630,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17174,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n',id:311,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-04T10:52:12+0800",discussion_id:null,id:37,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_0_3",line_type:"old",note:"哈哈哈",noteable_id:1630,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17174,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:311,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-04T16:20:30+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-09-04T16:20:38+08:00",id:1633,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-04T16:20:39+0800",discussion_id:null,id:40,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_40_35",line_type:"old",note:"123",noteable_id:1633,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17174,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n',id:311,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-04T16:20:43+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-09-08T19:47:16+08:00",id:1639,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-08T19:47:16+0800",discussion_id:null,id:59,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"v1.16.2-snapshot-3a71cb12",noteable_id:1639,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-09-08T19:47:16+0800"}],updated_at:"2020-09-08T19:47:16+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-09-10T12:04:45+08:00",id:1652,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-10T12:04:45+0800",discussion_id:null,id:69,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:1,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:'@@ -16,7 +16,7 @@ const server = app.listen(app.get("port"), () => {\n app.get("port"),\n',id:1091,new_file:!1,new_path:"src/server.ts",old_path:"src/server.ts",renamed_file:!1,too_large:!1},line_code:"bcc09dcb20cae54f483679309f0403fdcbd98121_15_0",line_type:"old",note:"测试发布一条评论",noteable_id:1652,noteable_type:"ReviewComment",outdated:!1,path:"src/server.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:1,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17921,del_line_num:1,deleted_file:!1,diff:'@@ -16,7 +16,7 @@ const server = app.listen(app.get("port"), () => {\n app.get("port"),\n',id:79,new_file:!1,new_path:"src/server.ts",old_path:"src/server.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-10T12:04:49+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-09-13T22:47:59+08:00",id:1659,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-17T23:03:22+0800",discussion_id:60,id:84,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"123123",noteable_id:1659,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-09-17T23:03:22+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-13T22:47:59+0800",discussion_id:null,id:73,is_award:!1,labels:["内存泄露","日志规约","中间件规约","基础编码规约","安全规约","并发&幂等"],latest_st_diff:{a_mode:"100644",add_line_num:7,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:7,deleted_file:!1,diff:'@@ -1,18 +1,18 @@\n import winston from "winston";\n \n const options: winston.LoggerOptions = {\n- transports: [\n- new winston.transports.Console({\n- level: process.env.NODE_ENV === "production" ? "error" : "debug"\n- }),\n- new winston.transports.File({ filename: "debug.log", level: "debug" })\n- ]\n+ transports: [\n',id:1092,new_file:!1,new_path:"src/util/logger.ts",old_path:"src/util/logger.ts",renamed_file:!1,too_large:!1},line_code:"bd5630fadbfeb531e34aa7539e6a12a247f8b0c6_9_4",line_type:"old",note:"123",noteable_id:1659,noteable_type:"ReviewComment",outdated:!1,path:"src/util/logger.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:7,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17959,del_line_num:7,deleted_file:!1,diff:'@@ -1,18 +1,18 @@\n import winston from "winston";\n \n const options: winston.LoggerOptions = {\n- transports: [\n- new winston.transports.Console({\n- level: process.env.NODE_ENV === "production" ? "error" : "debug"\n- }),\n- new winston.transports.File({ filename: "debug.log", level: "debug" })\n- ]\n+ transports: [\n',id:275,new_file:!1,new_path:"src/util/logger.ts",old_path:"src/util/logger.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-17T23:03:28+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-09-19T22:39:00+08:00",id:1662,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-19T22:39:35+0800",discussion_id:11,id:87,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"test123",noteable_id:1662,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-09-19T22:39:35+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-19T22:39:00+0800",discussion_id:78,id:86,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"123123123",noteable_id:1662,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-09-19T22:39:00+0800"}],updated_at:"2020-09-19T22:40:05+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},body:null,created_at:"2020-10-28T11:42:13+08:00",id:1737,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-11-16T19:52:35+0800",discussion_id:78,id:180,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"*\n*",noteable_id:1737,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-11-16T19:52:35+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-11-11T13:28:08+0800",discussion_id:null,id:170,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n export type UserDocument = mongoose.Document & {\n- email: string;\n- password: string;\n- passwordResetToken: string;\n- passwordResetExpires: Date;\n+ email: string;\n',id:1089,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},line_code:"e9bf216a20e84ee797b9402193000e41dad21aa6_6_6",line_type:"old",note:"123",noteable_id:1737,noteable_type:"ReviewComment",outdated:!1,path:"src/models/User.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n export type UserDocument = mongoose.Document & {\n- email: string;\n- password: string;\n- passwordResetToken: string;\n- passwordResetExpires: Date;\n+ email: string;\n',id:1089,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2020-11-11T13:28:08+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-11-11T13:27:56+0800",discussion_id:null,id:169,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n export type UserDocument = mongoose.Document & {\n- email: string;\n- password: string;\n- passwordResetToken: string;\n- passwordResetExpires: Date;\n+ email: string;\n+ password: string;\n+ passwordResetToken: string;\n+ passwordResetExpires: Date;\n \n',id:1089,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},line_code:"e9bf216a20e84ee797b9402193000e41dad21aa6_10_7",line_type:"old",note:"123",noteable_id:1737,noteable_type:"ReviewComment",outdated:!1,path:"src/models/User.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n export type UserDocument = mongoose.Document & {\n- email: string;\n- password: string;\n- passwordResetToken: string;\n- passwordResetExpires: Date;\n+ email: string;\n+ password: string;\n+ passwordResetToken: string;\n+ passwordResetExpires: Date;\n \n',id:1089,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2020-11-11T13:27:56+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-10-28T11:42:13+0800",discussion_id:52,id:166,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"123123",noteable_id:1737,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-10-28T11:42:13+0800"}],updated_at:"2022-01-25T15:55:52+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-08-18T10:23:46+08:00",id:1563,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-25T20:31:20+0800",discussion_id:null,id:27,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_40_31",line_type:"old",note:"右侧",noteable_id:1563,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-21T15:34:22+0800",discussion_id:20,id:26,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"撒大声地阿斯顿撒",noteable_id:1563,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-08-21T15:34:22+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-21T15:33:34+0800",discussion_id:23,id:25,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"sad",noteable_id:1563,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-08-21T15:33:34+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-21T11:30:27+0800",discussion_id:9,id:16,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"asdsadsa",noteable_id:1563,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-08-21T11:30:27+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-21T11:30:21+0800",discussion_id:9,id:15,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"asdasd",noteable_id:1563,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-08-21T11:30:21+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-18T10:23:46+0800",discussion_id:null,id:13,is_award:!1,labels:[],latest_st_diff:{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,228 @@\n+import { PullRequestChange } from \'../../../submodules/api-server/app/web/module/common/model/antcode\';\n+\n+export const mockChanges: PullRequestChange[] = [\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n',id:1077,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1},line_code:"02699cd6ca65aa6819d7e387678d8ea5359b5e59_0_10",line_type:"new",note:"1111",noteable_id:1563,noteable_type:"ReviewComment",outdated:!1,path:"a.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:15929,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,228 @@\n+import { PullRequestChange } from \'../../../submodules/api-server/app/web/module/common/model/antcode\';\n+\n+export const mockChanges: PullRequestChange[] = [\n+ {\n+ "a_mode": "100644",\n+ "add_line_num": 3,\n+ "b_mode": "100644",\n+ "binary_file": false,\n+ "del_line_num": 0,\n+ "deleted_file": false,\n',id:43,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-25T20:31:24+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-08-28T10:27:38+08:00",id:1609,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-28T11:29:51+0800",discussion_id:null,id:30,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n+ return res.redirect("/");\n+ }\n+ res.render("account/login", {\n+ title: "Login"\n+ });\n };\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_23_17",line_type:"old",note:"大迭代",noteable_id:1609,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n+ return res.redirect("/");\n+ }\n+ res.render("account/login", {\n+ title: "Login"\n+ });\n };\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-28T11:29:43+0800",discussion_id:null,id:29,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_9_0",line_type:"old",note:"撒大声地",noteable_id:1609,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-28T10:27:39+0800",discussion_id:22,id:28,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"ffff",noteable_id:1609,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-08-28T10:27:39+0800"}],updated_at:"2020-08-28T11:30:02+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-08-28T11:30:22+08:00",id:1610,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-28T11:30:22+0800",discussion_id:null,id:31,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_3_0",line_type:"old",note:"333333",noteable_id:1610,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-28T11:30:27+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-08-28T11:30:58+08:00",id:1611,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-08-28T11:30:58+0800",discussion_id:null,id:32,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_37_30",line_type:"old",note:"啊大大",noteable_id:1611,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-28T11:31:04+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-09-07T11:12:17+08:00",id:1635,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-09-07T11:12:18+0800",discussion_id:null,id:43,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_9_0",line_type:"old",note:"ddd",noteable_id:1635,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17598,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:752,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-07T11:19:37+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-09-07T11:58:28+08:00",id:1637,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-09-07T15:44:32+0800",discussion_id:null,id:50,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -252,61 +252,61 @@ export const getReset = (req: Request, res: Response, next: NextFunction) => {\n * Process the reset password request.\n */\n export const postReset = async (req: Request, res: Response, next: NextFunction) => {\n- await check("password", "Password must be at least 4 characters long.").isLength({ min: 4 }).run(req);\n- await check("confirm", "Passwords must match.").equals(req.body.password).run(req);\n+ await check("password", "Password must be at least 4 characters long.").isLength({ min: 4 }).run(req);\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_255_255",line_type:"old",note:"asdsadas",noteable_id:1637,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:265,deleted_file:!1,diff:'@@ -252,61 +252,61 @@ export const getReset = (req: Request, res: Response, next: NextFunction) => {\n * Process the reset password request.\n */\n export const postReset = async (req: Request, res: Response, next: NextFunction) => {\n- await check("password", "Password must be at least 4 characters long.").isLength({ min: 4 }).run(req);\n- await check("confirm", "Passwords must match.").equals(req.body.password).run(req);\n+ await check("password", "Password must be at least 4 characters long.").isLength({ min: 4 }).run(req);\n',id:490,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-09-07T15:44:18+0800",discussion_id:null,id:49,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -252,61 +252,61 @@ export const getReset = (req: Request, res: Response, next: NextFunction) => {\n * Process the reset password request.\n */\n export const postReset = async (req: Request, res: Response, next: NextFunction) => {\n- await check("password", "Password must be at least 4 characters long.").isLength({ min: 4 }).run(req);\n- await check("confirm", "Passwords must match.").equals(req.body.password).run(req);\n+ await check("password", "Password must be at least 4 characters long.").isLength({ min: 4 }).run(req);\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_255_255",line_type:"old",note:"dddd",noteable_id:1637,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:265,deleted_file:!1,diff:'@@ -252,61 +252,61 @@ export const getReset = (req: Request, res: Response, next: NextFunction) => {\n * Process the reset password request.\n */\n export const postReset = async (req: Request, res: Response, next: NextFunction) => {\n- await check("password", "Password must be at least 4 characters long.").isLength({ min: 4 }).run(req);\n- await check("confirm", "Passwords must match.").equals(req.body.password).run(req);\n+ await check("password", "Password must be at least 4 characters long.").isLength({ min: 4 }).run(req);\n',id:490,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-09-07T15:43:49+0800",discussion_id:29,id:48,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"ddd",noteable_id:1637,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-09-07T15:43:49+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-09-07T11:58:29+0800",discussion_id:null,id:46,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_37_30",line_type:"old",note:"十点多",noteable_id:1637,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17598,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n',id:752,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-07T15:44:42+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-09-07T15:47:40+08:00",id:1638,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-09-07T16:39:19+0800",discussion_id:null,id:53,is_award:!1,labels:["内存泄露","中间件规约"],latest_st_diff:{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:4,deleted_file:!1,diff:'@@ -4,7 +4,7 @@ import passportFacebook from "passport-facebook";\n import _ from "lodash";\n \n // import { User, UserType } from \'../models/User\';\n-import { User, UserDocument } from "../models/User";\n+import { User, UserDocument } from "../models/User"\n',id:1087,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1},line_code:"761e3f18c863ddeee900bf74ddd8fed56a4aa2c9_7_7",line_type:"old",note:"test",noteable_id:1638,noteable_type:"ReviewComment",outdated:!1,path:"src/config/passport.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:4,deleted_file:!1,diff:'@@ -4,7 +4,7 @@ import passportFacebook from "passport-facebook";\n import _ from "lodash";\n \n // import { User, UserType } from \'../models/User\';\n-import { User, UserDocument } from "../models/User";\n+import { User, UserDocument } from "../models/User"\n',id:489,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-09-07T15:47:40+0800",discussion_id:null,id:51,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_3_0",line_type:"old",note:"asdasd",noteable_id:1638,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n',id:490,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-16T15:19:24+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-09-22T10:13:52+08:00",id:1663,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-10-27T11:38:24+0800",discussion_id:null,id:159,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:"@@ -1,4 +1,3 @@\n-# TypeScript Node Starter\n > hello world typescript\n \n The main purpose of this repository is to show a working Node.js API Server + front-end project and workflow for writing Node code in TypeScript.\n",id:1075,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1},line_code:"8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_0_24",line_type:"old",note:"",noteable_id:1663,noteable_type:"ReviewComment",outdated:!0,path:"README.md",resolved_at:"2022-01-25T15:10:39+08:00",resolved_by:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"604ed58cc40ed8ed6581d1c10e265da6f8b23496",compare_diff_id:19988,del_line_num:1,deleted_file:!1,diff:"@@ -1,4 +1,3 @@\n-# TypeScript Node Starter\n > hello world typescript\n \n The main purpose of this repository is to show a working Node.js API Server + front-end project and workflow for writing Node code in TypeScript.\n",id:144,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-09-22T10:13:53+0800",discussion_id:null,id:88,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:"@@ -24,7 +24,6 @@ footer {\n \n // Input Fields\n // -------------------------\n-\n textarea {\n resize: vertical;\n",id:1090,new_file:!1,new_path:"src/public/css/main.scss",old_path:"src/public/css/main.scss",renamed_file:!1,too_large:!1},line_code:"4c32a30db22da868cde702e26a724b6a2408a33c_29_27",line_type:"old",note:"右边",noteable_id:1663,noteable_type:"ReviewComment",outdated:!0,path:"src/public/css/main.scss",resolved_at:"2022-01-20T20:10:37+08:00",resolved_by:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:18810,del_line_num:1,deleted_file:!1,diff:"@@ -24,7 +24,6 @@ footer {\n \n // Input Fields\n // -------------------------\n-\n textarea {\n resize: vertical;\n",id:117,new_file:!1,new_path:"src/public/css/main.scss",old_path:"src/public/css/main.scss",renamed_file:!1,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-10-27T11:38:42+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-10-27T11:39:26+08:00",id:1731,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-25T15:16:48+0800",discussion_id:182,id:500022,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to opened",noteable_id:1731,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-25T15:16:48+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-25T15:16:07+0800",discussion_id:182,id:500021,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to resolved",noteable_id:1731,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-25T15:16:07+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-11-19T15:19:18+0800",discussion_id:null,id:182,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:"",id:1096,new_file:!1,new_path:"views/partials/footer-renamed.pug",old_path:"views/partials/footer.pug",renamed_file:!0,too_large:!1},line_code:"cdba7b9c4edb14d31053cfb58047d4183fe1830d_2_2",line_type:"old",note:"2222",noteable_id:1731,noteable_type:"ReviewComment",outdated:!0,path:"views/partials/footer-renamed.pug",resolved_at:"2022-01-25T15:16:07+08:00",resolved_by:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"ac55c77aa72d49280058ed6054610f454ee694b1",compare_diff_id:20699,del_line_num:0,deleted_file:!1,diff:"",id:570,new_file:!1,new_path:"views/partials/footer-renamed.pug",old_path:"views/partials/footer.pug",renamed_file:!0,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-11-19T14:50:02+0800",discussion_id:null,id:181,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:"old",note:"111",noteable_id:1731,noteable_type:"ReviewComment",outdated:!1,path:"views/partials/footer-renamed.pug",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"ac55c77aa72d49280058ed6054610f454ee694b1",compare_diff_id:20699,del_line_num:0,deleted_file:!1,diff:"",id:570,new_file:!1,new_path:"views/partials/footer-renamed.pug",old_path:"views/partials/footer.pug",renamed_file:!0,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2020-11-19T14:50:02+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-10-27T11:39:26+0800",discussion_id:159,id:160,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"",noteable_id:1731,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-10-27T11:39:26+0800"}],updated_at:"2020-11-19T15:19:37+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-11-19T15:20:10+08:00",id:1769,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-11-19T15:20:10+0800",discussion_id:null,id:183,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:"",id:1096,new_file:!1,new_path:"views/partials/footer-renamed.pug",old_path:"views/partials/footer.pug",renamed_file:!0,too_large:!1},line_code:"cdba7b9c4edb14d31053cfb58047d4183fe1830d_5_5",line_type:"old",note:"555",noteable_id:1769,noteable_type:"ReviewComment",outdated:!0,path:"views/partials/footer-renamed.pug",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"ac55c77aa72d49280058ed6054610f454ee694b1",compare_diff_id:20699,del_line_num:0,deleted_file:!1,diff:"",id:570,new_file:!1,new_path:"views/partials/footer-renamed.pug",old_path:"views/partials/footer.pug",renamed_file:!0,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-11-19T15:20:14+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2020-11-19T15:20:34+08:00",id:1770,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2020-11-19T15:20:34+0800",discussion_id:null,id:184,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:2,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:2,deleted_file:!1,diff:"@@ -14,11 +14,11 @@ block content\n .form-group.row.justify-content-md-center\n",id:1094,new_file:!1,new_path:"views/contact123.pug",old_path:"views/contact.pug",renamed_file:!0,too_large:!1},line_code:"01c01633c13afa3e0580e14dbcd3c26e289c5281_0_4",line_type:"old",note:"4444",noteable_id:1770,noteable_type:"ReviewComment",outdated:!0,path:"views/contact123.pug",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:2,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"ac55c77aa72d49280058ed6054610f454ee694b1",compare_diff_id:20699,del_line_num:2,deleted_file:!1,diff:"@@ -14,11 +14,11 @@ block content\n .form-group.row.justify-content-md-center\n",id:568,new_file:!1,new_path:"views/contact123.pug",old_path:"views/contact.pug",renamed_file:!0,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-11-19T15:20:49+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2021-05-28T16:28:46+08:00",id:2106,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-25T20:10:21+0800",discussion_id:205,id:500027,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to opened",noteable_id:2106,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-25T20:10:21+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-25T20:10:07+0800",discussion_id:205,id:500026,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to resolved",noteable_id:2106,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-25T20:10:07+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-25T16:06:08+0800",discussion_id:206,id:500024,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to resolved",noteable_id:2106,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-25T16:06:08+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2021-05-28T16:31:57+0800",discussion_id:null,id:206,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:1,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:'@@ -16,7 +16,7 @@ const server = app.listen(app.get("port"), () => {\n app.get("port"),\n app.get("env")\n',id:1091,new_file:!1,new_path:"src/server.ts",old_path:"src/server.ts",renamed_file:!1,too_large:!1},line_code:"bcc09dcb20cae54f483679309f0403fdcbd98121_17_16",line_type:"old",note:"1111",noteable_id:2106,noteable_type:"ReviewComment",outdated:!0,path:"src/server.ts",resolved_at:"2022-01-25T16:06:08+08:00",resolved_by:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},st_diff:{a_mode:"100644",add_line_num:1,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:'@@ -16,7 +16,7 @@ const server = app.listen(app.get("port"), () => {\n app.get("port"),\n app.get("env")\n',id:1091,new_file:!1,new_path:"src/server.ts",old_path:"src/server.ts",renamed_file:!1,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-05-28T16:31:57+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2021-05-28T16:28:46+0800",discussion_id:null,id:205,is_award:!1,labels:["测试"],latest_st_diff:{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:4,deleted_file:!1,diff:"@@ -14,7 +14,7 @@ passport.serializeUser((user, done) => {\n done(undefined, user.id);\n });\n \n-passport.deserializeUser((id, done) => {\n+passport.deserializeUser((id: string, done) => {\n User.findById(id, (err, user) => {\n",id:1087,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1},line_code:"761e3f18c863ddeee900bf74ddd8fed56a4aa2c9_18_17",line_type:"old",note:"这是啥",noteable_id:2106,noteable_type:"ReviewComment",outdated:!1,path:"src/config/passport.ts",resolved_at:"2022-01-25T20:10:07+08:00",resolved_by:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},st_diff:{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:4,deleted_file:!1,diff:"@@ -14,7 +14,7 @@ passport.serializeUser((user, done) => {\n done(undefined, user.id);\n });\n \n-passport.deserializeUser((id, done) => {\n+passport.deserializeUser((id: string, done) => {\n User.findById(id, (err, user) => {\n",id:1087,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-05-28T16:28:46+0800"}],updated_at:"2021-05-28T16:32:04+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2021-11-04T15:07:06+08:00",id:4200243,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2021-11-04T15:07:07+0800",discussion_id:null,id:400002,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_40_47",line_type:"old",note:"这是一个带图评论\n\n\n\n",noteable_id:4200243,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-11-04T15:07:07+0800"}],updated_at:"2021-11-04T15:07:16+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},body:null,created_at:"2021-11-04T15:08:12+08:00",id:4200244,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-24T11:08:09+0800",discussion_id:400003,id:500014,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to opened",noteable_id:4200244,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-24T11:08:09+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-24T11:07:54+0800",discussion_id:400003,id:500013,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to resolved",noteable_id:4200244,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-24T11:07:54+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"xinglong.wangwxl@test.com",extern_uid:"80222",id:15168,name:"蛋总",state:"active",username:"xinglong.wangwxl",web_url:"https://test.com.com/nwpipe/u/80222"},commit_id:null,created_at:"2021-11-04T15:08:12+0800",discussion_id:null,id:400003,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -327,62 +327,62 @@ export const getForgot = (req: Request, res: Response) => {\n * Create a random token, then the send user an email with a reset link.\n */\n export const postForgot = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Please enter a valid email address.").isEmail().run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/forgot");\n- }\n-\n- async.waterfall([\n- function createRandomToken(done: Function) {\n- crypto.randomBytes(16, (err, buf) => {\n- const token = buf.toString("hex");\n- done(err, token);\n- });\n- },\n- function setRandomToken(token: AuthToken, done: Function) {\n- User.findOne({ email: req.body.email }, (err, user: any) => {\n- if (err) { return done(err); }\n- if (!user) {\n- req.flash("errors", { msg: "Account with that email address does not exist." });\n- return res.redirect("/forgot");\n- }\n- user.passwordResetToken = token;\n- user.passwordResetExpires = Date.now() + 3600000; // 1 hour\n- user.save((err: WriteError) => {\n- done(err, token, user);\n- });\n- });\n- },\n- function sendForgotPasswordEmail(token: AuthToken, user: UserDocument, done: Function) {\n- const transporter = nodemailer.createTransport({\n- service: "SendGrid",\n- auth: {\n- user: process.env.SENDGRID_USER,\n- pass: process.env.SENDGRID_PASSWORD\n- }\n- });\n- const mailOptions = {\n- to: user.email,\n- from: "hackathon@starter.com",\n- subject: "Reset your password on Hackathon Starter",\n- text: `You are receiving this email because you (or someone else) have requested the reset of the password for your account.\\n\\n\n+ await check("email", "Please enter a valid email address.").isEmail().run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/forgot");\n+ }\n+\n+ async.waterfall([\n+ function createRandomToken(done: Function) {\n+ crypto.randomBytes(16, (err, buf) => {\n+ const token = buf.toString("hex");\n+ done(err, token);\n+ });\n+ },\n+ function setRandomToken(token: AuthToken, done: Function) {\n+ User.findOne({ email: req.body.email }, (err, user: any) => {\n+ if (err) { return done(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: "Account with that email address does not exist." });\n+ return res.redirect("/forgot");\n+ }\n+ user.passwordResetToken = token;\n+ user.passwordResetExpires = Date.now() + 3600000; // 1 hour\n+ user.save((err: WriteError) => {\n+ done(err, token, user);\n+ });\n+ });\n+ },\n+ function sendForgotPasswordEmail(token: AuthToken, user: UserDocument, done: Function) {\n+ const transporter = nodemailer.createTransport({\n+ service: "SendGrid",\n+ auth: {\n+ user: process.env.SENDGRID_USER,\n+ pass: process.env.SENDGRID_PASSWORD\n+ }\n+ });\n+ const mailOptions = {\n+ to: user.email,\n+ from: "hackathon@starter.com",\n+ subject: "Reset your password on Hackathon Starter",\n+ text: `You are receiving this email because you (or someone else) have requested the reset of the password for your account.\\n\\n\n Please click on the following link, or paste this into your browser to complete the process:\\n\\n\n http://${req.headers.host}/reset/${token}\\n\\n\n If you did not request this, please ignore this email and your password will remain unchanged.\\n`\n- };\n- transporter.sendMail(mailOptions, (err) => {\n- req.flash("info", { msg: `An e-mail has been sent to ${user.email} with further instructions.` });\n- done(err);\n- });\n- }\n- ], (err) => {\n- if (err) { return next(err); }\n- res.redirect("/forgot");\n- });\n+ };\n+ transporter.sendMail(mailOptions, (err) => {\n+ req.flash("info", { msg: `An e-mail has been sent to ${user.email} with further instructions.` });\n+ done(err);\n+ });\n+ }\n+ ], (err) => {\n+ if (err) { return next(err); }\n+ res.redirect("/forgot");\n+ });\n };\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_388_384",line_type:"old",note:"111 \n\n\n\n",noteable_id:4200244,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:"2022-01-24T11:07:54+08:00",resolved_by:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -327,62 +327,62 @@ export const getForgot = (req: Request, res: Response) => {\n * Create a random token, then the send user an email with a reset link.\n */\n export const postForgot = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Please enter a valid email address.").isEmail().run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/forgot");\n- }\n-\n- async.waterfall([\n- function createRandomToken(done: Function) {\n- crypto.randomBytes(16, (err, buf) => {\n- const token = buf.toString("hex");\n- done(err, token);\n- });\n- },\n- function setRandomToken(token: AuthToken, done: Function) {\n- User.findOne({ email: req.body.email }, (err, user: any) => {\n- if (err) { return done(err); }\n- if (!user) {\n- req.flash("errors", { msg: "Account with that email address does not exist." });\n- return res.redirect("/forgot");\n- }\n- user.passwordResetToken = token;\n- user.passwordResetExpires = Date.now() + 3600000; // 1 hour\n- user.save((err: WriteError) => {\n- done(err, token, user);\n- });\n- });\n- },\n- function sendForgotPasswordEmail(token: AuthToken, user: UserDocument, done: Function) {\n- const transporter = nodemailer.createTransport({\n- service: "SendGrid",\n- auth: {\n- user: process.env.SENDGRID_USER,\n- pass: process.env.SENDGRID_PASSWORD\n- }\n- });\n- const mailOptions = {\n- to: user.email,\n- from: "hackathon@starter.com",\n- subject: "Reset your password on Hackathon Starter",\n- text: `You are receiving this email because you (or someone else) have requested the reset of the password for your account.\\n\\n\n+ await check("email", "Please enter a valid email address.").isEmail().run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/forgot");\n+ }\n+\n+ async.waterfall([\n+ function createRandomToken(done: Function) {\n+ crypto.randomBytes(16, (err, buf) => {\n+ const token = buf.toString("hex");\n+ done(err, token);\n+ });\n+ },\n+ function setRandomToken(token: AuthToken, done: Function) {\n+ User.findOne({ email: req.body.email }, (err, user: any) => {\n+ if (err) { return done(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: "Account with that email address does not exist." });\n+ return res.redirect("/forgot");\n+ }\n+ user.passwordResetToken = token;\n+ user.passwordResetExpires = Date.now() + 3600000; // 1 hour\n+ user.save((err: WriteError) => {\n+ done(err, token, user);\n+ });\n+ });\n+ },\n+ function sendForgotPasswordEmail(token: AuthToken, user: UserDocument, done: Function) {\n+ const transporter = nodemailer.createTransport({\n+ service: "SendGrid",\n+ auth: {\n+ user: process.env.SENDGRID_USER,\n+ pass: process.env.SENDGRID_PASSWORD\n+ }\n+ });\n+ const mailOptions = {\n+ to: user.email,\n+ from: "hackathon@starter.com",\n+ subject: "Reset your password on Hackathon Starter",\n+ text: `You are receiving this email because you (or someone else) have requested the reset of the password for your account.\\n\\n\n Please click on the following link, or paste this into your browser to complete the process:\\n\\n\n http://${req.headers.host}/reset/${token}\\n\\n\n If you did not request this, please ignore this email and your password will remain unchanged.\\n`\n- };\n- transporter.sendMail(mailOptions, (err) => {\n- req.flash("info", { msg: `An e-mail has been sent to ${user.email} with further instructions.` });\n- done(err);\n- });\n- }\n- ], (err) => {\n- if (err) { return next(err); }\n- res.redirect("/forgot");\n- });\n+ };\n+ transporter.sendMail(mailOptions, (err) => {\n+ req.flash("info", { msg: `An e-mail has been sent to ${user.email} with further instructions.` });\n+ done(err);\n+ });\n+ }\n+ ], (err) => {\n+ if (err) { return next(err); }\n+ res.redirect("/forgot");\n+ });\n };\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:"opened",system:!1,type:"Problem",updated_at:"2021-11-04T15:08:12+0800"}],updated_at:"2021-11-04T15:08:18+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-08-21T15:20:06+08:00",id:1585,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-08-21T15:20:25+0800",discussion_id:null,id:18,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n-\n- passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n- if (err) { return next(err); }\n- if (!user) {\n- req.flash("errors", {msg: info.message});\n- return res.redirect("/login");\n- }\n- req.logIn(user, (err) => {\n- if (err) { return next(err); }\n- req.flash("success", { msg: "Success! You are logged in." });\n- res.redirect(req.session.returnTo || "/");\n- });\n- })(req, res, next);\n+ req.logIn(user, (err) => {\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_41_48",line_type:"old",note:"第二次测试",noteable_id:1585,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n-\n- passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n- if (err) { return next(err); }\n- if (!user) {\n- req.flash("errors", {msg: info.message});\n- return res.redirect("/login");\n- }\n- req.logIn(user, (err) => {\n- if (err) { return next(err); }\n- req.flash("success", { msg: "Success! You are logged in." });\n- res.redirect(req.session.returnTo || "/");\n- });\n- })(req, res, next);\n+ req.logIn(user, (err) => {\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-08-21T15:20:06+0800",discussion_id:null,id:17,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n-\n- passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n- if (err) { return next(err); }\n- if (!user) {\n- req.flash("errors", {msg: info.message});\n- return res.redirect("/login");\n- }\n- req.logIn(user, (err) => {\n- if (err) { return next(err); }\n- req.flash("success", { msg: "Success! You are logged in." });\n- res.redirect(req.session.returnTo || "/");\n- });\n- })(req, res, next);\n+ req.logIn(user, (err) => {\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_43_48",line_type:"old",note:"太好了",noteable_id:1585,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n+ await check("password", "Password cannot be blank").isLength({ min: 1 }).run(req);\n+ // eslint-disable-next-line @typescript-eslint/camelcase\n+ await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n+\n+ const errors = validationResult(req);\n+\n+ if (!errors.isEmpty()) {\n+ req.flash("errors", errors.array());\n+ return res.redirect("/login");\n+ }\n+\n+ passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n+ if (err) { return next(err); }\n+ if (!user) {\n+ req.flash("errors", { msg: info.message });\n+ return res.redirect("/login");\n }\n-\n- passport.authenticate("local", (err: Error, user: UserDocument, info: IVerifyOptions) => {\n- if (err) { return next(err); }\n- if (!user) {\n- req.flash("errors", {msg: info.message});\n- return res.redirect("/login");\n- }\n- req.logIn(user, (err) => {\n- if (err) { return next(err); }\n- req.flash("success", { msg: "Success! You are logged in." });\n- res.redirect(req.session.returnTo || "/");\n- });\n- })(req, res, next);\n+ req.logIn(user, (err) => {\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-21T15:20:32+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-08-21T15:28:36+08:00",id:1586,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-08-21T15:28:36+0800",discussion_id:null,id:19,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_30_30",line_type:"old",note:"第三次测试",noteable_id:1586,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -27,30 +27,30 @@ export const getLogin = (req: Request, res: Response) => {\n * Sign in using email and password.\n */\n export const postLogin = async (req: Request, res: Response, next: NextFunction) => {\n- await check("email", "Email is not valid").isEmail().run(req);\n- await check("password", "Password cannot be blank").isLength({min: 1}).run(req);\n- // eslint-disable-next-line @typescript-eslint/camelcase\n- await sanitize("email").normalizeEmail({ gmail_remove_dots: false }).run(req);\n-\n- const errors = validationResult(req);\n-\n- if (!errors.isEmpty()) {\n- req.flash("errors", errors.array());\n- return res.redirect("/login");\n+ await check("email", "Email is not valid").isEmail().run(req);\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-21T15:28:39+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-08-21T15:29:04+08:00",id:1587,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-08-21T15:29:04+0800",discussion_id:null,id:20,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_21_17",line_type:"old",note:"第四次测试",noteable_id:1587,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-21T15:29:07+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-08-21T15:30:06+08:00",id:1588,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-08-21T15:30:07+0800",discussion_id:null,id:21,is_award:!1,labels:["dadada","dada","dadad","LackOfProfessionalField","BusinessArchitectureDesignDefect","DesignPatternDefect","NotFamilierBasicFrame","LackOfJavaBase","CodeStandardsIssue","并发&幂等","基础编码规约","中间件规约"],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_21_17",line_type:"old",note:"第五次测试",noteable_id:1588,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-21T15:30:10+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-08-21T15:30:28+08:00",id:1589,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-08-21T15:30:28+0800",discussion_id:null,id:22,is_award:!1,labels:["内存泄露","日志规约"],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n+ return res.redirect("/");\n+ }\n+ res.render("account/login", {\n+ title: "Login"\n+ });\n };\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_23_17",line_type:"old",note:"第六次测试",noteable_id:1589,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n+ return res.redirect("/");\n+ }\n+ res.render("account/login", {\n+ title: "Login"\n+ });\n };\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-21T15:30:32+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-08-21T15:31:09+08:00",id:1590,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-08-21T15:31:09+0800",discussion_id:null,id:23,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n+ return res.redirect("/");\n+ }\n+ res.render("account/login", {\n+ title: "Login"\n+ });\n };\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_23_18",line_type:"old",note:"第七次测试",noteable_id:1590,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n+ return res.redirect("/");\n+ }\n+ res.render("account/login", {\n+ title: "Login"\n+ });\n };\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-21T15:31:15+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-08-21T15:32:38+08:00",id:1591,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-08-21T15:32:38+0800",discussion_id:null,id:24,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n+ return res.redirect("/");\n+ }\n+ res.render("account/login", {\n+ title: "Login"\n+ });\n };\n',id:1088,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},line_code:"c17950853d6b9677e9822cf07f2616db7ca02797_23_20",line_type:"old",note:"第八次测试",noteable_id:1591,noteable_type:"ReviewComment",outdated:!1,path:"src/controllers/user.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:16382,del_line_num:265,deleted_file:!1,diff:'@@ -14,12 +14,12 @@ import "../config/passport";\n * Login page.\n */\n export const getLogin = (req: Request, res: Response) => {\n- if (req.user) {\n- return res.redirect("/");\n- }\n- res.render("account/login", {\n- title: "Login"\n- });\n+ if (req.user) {\n+ return res.redirect("/");\n+ }\n+ res.render("account/login", {\n+ title: "Login"\n+ });\n };\n',id:34,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-08-21T15:32:41+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-09-04T16:20:30+08:00",id:1632,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-11-16T19:42:40+0800",discussion_id:78,id:179,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to resolved",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2020-11-16T19:42:40+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-11-16T19:42:37+0800",discussion_id:78,id:178,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to invalid",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2020-11-16T19:42:37+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-09-16T11:54:11+0800",discussion_id:78,id:81,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to resolved",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2020-09-16T11:54:11+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-16T11:52:42+0800",discussion_id:null,id:78,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:"@@ -1,4 +1,3 @@\n-# TypeScript Node Starter\n > hello world typescript\n \n The main purpose of this repository is to show a working Node.js API Server + front-end project and workflow for writing Node code in TypeScript.\n",id:1075,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1},line_code:"8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_8_0",line_type:"old",note:"测试",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:"README.md",resolved_at:"2020-11-16T19:42:40+08:00",resolved_by:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17959,del_line_num:1,deleted_file:!1,diff:"@@ -1,4 +1,3 @@\n-# TypeScript Node Starter\n > hello world typescript\n \n The main purpose of this repository is to show a working Node.js API Server + front-end project and workflow for writing Node code in TypeScript.\n",id:267,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1},state:"resolved",system:!1,type:"Problem",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-14T12:10:59+0800",discussion_id:20,id:76,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"对对对\n对对对\n对对对\n对对对对对对\n\n\n\n\n\n\n对对对",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-09-14T12:10:59+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-14T12:10:40+0800",discussion_id:20,id:75,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"@jiankan.hjk(剑侃) ",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2020-09-14T12:10:40+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-09T11:22:29+0800",discussion_id:null,id:61,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n',id:1089,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},line_code:"e9bf216a20e84ee797b9402193000e41dad21aa6_4_4",line_type:"old",note:"test",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:"src/models/User.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17641,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n',id:48,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-09T10:12:09+0800",discussion_id:null,id:60,is_award:!1,labels:[],latest_st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},line_code:"a1cd6d42683feafb8bafa3c3c68369f59d3013e6_0_2",line_type:"new",note:"测试",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:"aaa/package.json",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17641,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n',id:45,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-08T10:21:29+0800",discussion_id:null,id:57,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n export type UserDocument = mongoose.Document & {\n- email: string;\n- password: string;\n- passwordResetToken: string;\n- passwordResetExpires: Date;\n+ email: string;\n',id:1089,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},line_code:"e9bf216a20e84ee797b9402193000e41dad21aa6_7_6",line_type:"old",note:"# test\n# test\n# test\n# test\n# test\n# test\n# test\n# test\n# test\n# test\n# test",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:"src/models/User.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n export type UserDocument = mongoose.Document & {\n- email: string;\n- password: string;\n- passwordResetToken: string;\n- passwordResetExpires: Date;\n+ email: string;\n',id:491,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-08T00:32:18+0800",discussion_id:null,id:56,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:7,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:7,deleted_file:!1,diff:'@@ -1,18 +1,18 @@\n import winston from "winston";\n \n const options: winston.LoggerOptions = {\n- transports: [\n- new winston.transports.Console({\n- level: process.env.NODE_ENV === "production" ? "error" : "debug"\n- }),\n- new winston.transports.File({ filename: "debug.log", level: "debug" })\n- ]\n+ transports: [\n',id:1092,new_file:!1,new_path:"src/util/logger.ts",old_path:"src/util/logger.ts",renamed_file:!1,too_large:!1},line_code:"bd5630fadbfeb531e34aa7539e6a12a247f8b0c6_9_4",line_type:"old",note:"第二条",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:"src/util/logger.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:7,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:7,deleted_file:!1,diff:'@@ -1,18 +1,18 @@\n import winston from "winston";\n \n const options: winston.LoggerOptions = {\n- transports: [\n- new winston.transports.Console({\n- level: process.env.NODE_ENV === "production" ? "error" : "debug"\n- }),\n- new winston.transports.File({ filename: "debug.log", level: "debug" })\n- ]\n+ transports: [\n',id:494,new_file:!1,new_path:"src/util/logger.ts",old_path:"src/util/logger.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-08T00:15:45+0800",discussion_id:null,id:55,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:7,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:7,deleted_file:!1,diff:'@@ -1,18 +1,18 @@\n import winston from "winston";\n \n const options: winston.LoggerOptions = {\n- transports: [\n- new winston.transports.Console({\n- level: process.env.NODE_ENV === "production" ? "error" : "debug"\n- }),\n- new winston.transports.File({ filename: "debug.log", level: "debug" })\n- ]\n+ transports: [\n',id:1092,new_file:!1,new_path:"src/util/logger.ts",old_path:"src/util/logger.ts",renamed_file:!1,too_large:!1},line_code:"bd5630fadbfeb531e34aa7539e6a12a247f8b0c6_9_4",line_type:"old",note:"> h\n# test\n## test\n### test\n#### test\ntest\n @huaqiao.lhq(常浅) ",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:"src/util/logger.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:7,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:7,deleted_file:!1,diff:'@@ -1,18 +1,18 @@\n import winston from "winston";\n \n const options: winston.LoggerOptions = {\n- transports: [\n- new winston.transports.Console({\n- level: process.env.NODE_ENV === "production" ? "error" : "debug"\n- }),\n- new winston.transports.File({ filename: "debug.log", level: "debug" })\n- ]\n+ transports: [\n',id:494,new_file:!1,new_path:"src/util/logger.ts",old_path:"src/util/logger.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-07T17:01:37+0800",discussion_id:null,id:54,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n export type UserDocument = mongoose.Document & {\n- email: string;\n- password: string;\n- passwordResetToken: string;\n- passwordResetExpires: Date;\n+ email: string;\n+ password: string;\n+ passwordResetToken: string;\n+ passwordResetExpires: Date;\n \n- facebook: string;\n- tokens: AuthToken[];\n+ facebook: string;\n+ tokens: AuthToken[];\n \n- profile: {\n- name: string;\n- gender: string;\n- location: string;\n- website: string;\n- picture: string;\n- };\n+ profile: {\n+ name: string;\n+ gender: string;\n+ location: string;\n+ website: string;\n+ picture: string;\n+ };\n \n- comparePassword: comparePasswordFunction;\n- gravatar: (size: number) => string;\n+ comparePassword: comparePasswordFunction;\n+ gravatar: (size: number) => string;\n };\n \n type comparePasswordFunction = (candidatePassword: string, cb: (err: any, isMatch: any) => {}) => void;\n \n export interface AuthToken {\n- accessToken: string;\n- kind: string;\n+ accessToken: string;\n+ kind: string;\n }\n \n const userSchema = new mongoose.Schema({\n- email: { type: String, unique: true },\n- password: String,\n- passwordResetToken: String,\n- passwordResetExpires: Date,\n+ email: { type: String, unique: true },\n+ password: String,\n+ passwordResetToken: String,\n+ passwordResetExpires: Date,\n \n- facebook: String,\n- twitter: String,\n- google: String,\n- tokens: Array,\n+ facebook: String,\n+ twitter: String,\n+ google: String,\n+ tokens: Array,\n \n- profile: {\n- name: String,\n- gender: String,\n- location: String,\n- website: String,\n- picture: String\n- }\n+ profile: {\n+ name: String,\n+ gender: String,\n+ location: String,\n+ website: String,\n+ picture: String\n+ }\n }, { timestamps: true });\n \n /**\n * Password hash middleware.\n */\n userSchema.pre("save", function save(next) {\n- const user = this as UserDocument;\n- if (!user.isModified("password")) { return next(); }\n- bcrypt.genSalt(10, (err, salt) => {\n- if (err) { return next(err); }\n- bcrypt.hash(user.password, salt, undefined, (err: mongoose.Error, hash) => {\n- if (err) { return next(err); }\n- user.password = hash;\n- next();\n- });\n+ const user = this as UserDocument;\n',id:1089,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},line_code:"e9bf216a20e84ee797b9402193000e41dad21aa6_57_57",line_type:"old",note:"测试一下",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:"src/models/User.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:49,deleted_file:!1,diff:'@@ -3,73 +3,73 @@ import crypto from "crypto";\n import mongoose from "mongoose";\n \n export type UserDocument = mongoose.Document & {\n- email: string;\n- password: string;\n- passwordResetToken: string;\n- passwordResetExpires: Date;\n+ email: string;\n+ password: string;\n+ passwordResetToken: string;\n+ passwordResetExpires: Date;\n \n- facebook: string;\n- tokens: AuthToken[];\n+ facebook: string;\n+ tokens: AuthToken[];\n \n- profile: {\n- name: string;\n- gender: string;\n- location: string;\n- website: string;\n- picture: string;\n- };\n+ profile: {\n+ name: string;\n+ gender: string;\n+ location: string;\n+ website: string;\n+ picture: string;\n+ };\n \n- comparePassword: comparePasswordFunction;\n- gravatar: (size: number) => string;\n+ comparePassword: comparePasswordFunction;\n+ gravatar: (size: number) => string;\n };\n \n type comparePasswordFunction = (candidatePassword: string, cb: (err: any, isMatch: any) => {}) => void;\n \n export interface AuthToken {\n- accessToken: string;\n- kind: string;\n+ accessToken: string;\n+ kind: string;\n }\n \n const userSchema = new mongoose.Schema({\n- email: { type: String, unique: true },\n- password: String,\n- passwordResetToken: String,\n- passwordResetExpires: Date,\n+ email: { type: String, unique: true },\n+ password: String,\n+ passwordResetToken: String,\n+ passwordResetExpires: Date,\n \n- facebook: String,\n- twitter: String,\n- google: String,\n- tokens: Array,\n+ facebook: String,\n+ twitter: String,\n+ google: String,\n+ tokens: Array,\n \n- profile: {\n- name: String,\n- gender: String,\n- location: String,\n- website: String,\n- picture: String\n- }\n+ profile: {\n+ name: String,\n+ gender: String,\n+ location: String,\n+ website: String,\n+ picture: String\n+ }\n }, { timestamps: true });\n \n /**\n * Password hash middleware.\n */\n userSchema.pre("save", function save(next) {\n- const user = this as UserDocument;\n- if (!user.isModified("password")) { return next(); }\n- bcrypt.genSalt(10, (err, salt) => {\n- if (err) { return next(err); }\n- bcrypt.hash(user.password, salt, undefined, (err: mongoose.Error, hash) => {\n- if (err) { return next(err); }\n- user.password = hash;\n- next();\n- });\n+ const user = this as UserDocument;\n',id:491,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-09-07T16:18:00+0800",discussion_id:null,id:52,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:4,deleted_file:!1,diff:'@@ -66,7 +66,7 @@ passport.use(new FacebookStrategy({\n callbackURL: "/auth/facebook/callback",\n',id:1087,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1},line_code:"761e3f18c863ddeee900bf74ddd8fed56a4aa2c9_0_38",line_type:"old",note:"测试",noteable_id:1632,noteable_type:"ReviewComment",outdated:!1,path:"src/config/passport.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:17605,del_line_num:4,deleted_file:!1,diff:'@@ -66,7 +66,7 @@ passport.use(new FacebookStrategy({\n callbackURL: "/auth/facebook/callback",\n',id:489,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-09-16T11:52:52+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},body:null,created_at:"2020-11-16T19:37:52+08:00",id:1765,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-26T11:01:53+0800",discussion_id:176,id:500030,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to resolved",noteable_id:1765,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-26T11:01:53+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-25T15:52:22+0800",discussion_id:176,id:500023,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to opened",noteable_id:1765,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2022-01-25T15:52:22+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-11-26T11:23:06+0800",discussion_id:176,id:185,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Problem status changed to resolved",noteable_id:1765,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2020-11-26T11:23:06+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"jiankan.hjk@test.com",extern_uid:"130095",id:15319,name:"剑侃",state:"active",username:"jiankan.hjk",web_url:"https://test.com.com/nwpipe/u/130095"},commit_id:null,created_at:"2020-11-16T19:37:53+0800",discussion_id:null,id:176,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:"@@ -1,4 +1,3 @@\n-# TypeScript Node Starter\n > hello world typescript\n \n The main purpose of this repository is to show a working Node.js API Server + front-end project and workflow for writing Node code in TypeScript.\n",id:1075,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1},line_code:"8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_5_4",line_type:"old",note:"测试",noteable_id:1765,noteable_type:"ReviewComment",outdated:!1,path:"README.md",resolved_at:"2022-01-26T11:01:53+08:00",resolved_by:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:"@@ -1,4 +1,3 @@\n-# TypeScript Node Starter\n > hello world typescript\n \n The main purpose of this repository is to show a working Node.js API Server + front-end project and workflow for writing Node code in TypeScript.\n",id:1075,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1},state:"resolved",system:!1,type:"Problem",updated_at:"2021-05-20T14:27:46+0800"}],updated_at:"2020-11-17T10:31:07+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"winjo.gwj@test.com",extern_uid:"190046",id:15346,name:"彦熹",state:"active",username:"winjo.gwj",web_url:"https://test.com.com/nwpipe/u/190046"},body:null,created_at:"2020-11-12T15:29:34+08:00",id:1759,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"winjo.gwj@test.com",extern_uid:"190046",id:15346,name:"彦熹",state:"active",username:"winjo.gwj",web_url:"https://test.com.com/nwpipe/u/190046"},commit_id:null,created_at:"2021-07-22T17:21:21+0800",discussion_id:null,id:200002,is_award:!1,labels:[],latest_st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},line_code:"a1cd6d42683feafb8bafa3c3c68369f59d3013e6_0_5",line_type:"new",note:"测试下",noteable_id:1759,noteable_type:"ReviewComment",outdated:!1,path:"aaa/package.json",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-07-22T17:21:21+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"winjo.gwj@test.com",extern_uid:"190046",id:15346,name:"彦熹",state:"active",username:"winjo.gwj",web_url:"https://test.com.com/nwpipe/u/190046"},commit_id:null,created_at:"2020-11-12T15:29:34+0800",discussion_id:null,id:171,is_award:!1,labels:[],latest_st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:1,deleted_file:!1,diff:"@@ -1,4 +1,3 @@\n-# TypeScript Node Starter\n > hello world typescript\n \n The main purpose of this repository is to show a working Node.js API Server + front-end project and workflow for writing Node code in TypeScript.\n",id:1075,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1},line_code:"8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_6_4",line_type:"old",note:"test",noteable_id:1759,noteable_type:"ReviewComment",outdated:!0,path:"README.md",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"ac55c77aa72d49280058ed6054610f454ee694b1",compare_diff_id:20699,del_line_num:1,deleted_file:!1,diff:"@@ -1,4 +1,3 @@\n-# TypeScript Node Starter\n > hello world typescript\n \n The main purpose of this repository is to show a working Node.js API Server + front-end project and workflow for writing Node code in TypeScript.\n",id:550,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2020-11-12T15:29:34+0800"}],updated_at:"2021-07-22T17:21:24+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"winjo.gwj@test.com",extern_uid:"190046",id:15346,name:"彦熹",state:"active",username:"winjo.gwj",web_url:"https://test.com.com/nwpipe/u/190046"},body:null,created_at:"2021-07-22T17:21:53+08:00",id:2100002,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"winjo.gwj@test.com",extern_uid:"190046",id:15346,name:"彦熹",state:"active",username:"winjo.gwj",web_url:"https://test.com.com/nwpipe/u/190046"},commit_id:null,created_at:"2021-07-23T16:22:54+0800",discussion_id:null,id:300003,is_award:!1,labels:["LackOfJavaBase"],latest_st_diff:{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:4,deleted_file:!1,diff:'@@ -4,7 +4,7 @@ import passportFacebook from "passport-facebook";\n import _ from "lodash";\n \n // import { User, UserType } from \'../models/User\';\n-import { User, UserDocument } from "../models/User";\n+import { User, UserDocument } from "../models/User"\n import { Request, Response, NextFunction } from "express";\n \n const LocalStrategy = passportLocal.Strategy;\n',id:1087,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1},line_code:"761e3f18c863ddeee900bf74ddd8fed56a4aa2c9_10_10",line_type:"old",note:"test",noteable_id:2100002,noteable_type:"ReviewComment",outdated:!1,path:"src/config/passport.ts",resolved_at:null,resolved_by:null,st_diff:{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:4,deleted_file:!1,diff:'@@ -4,7 +4,7 @@ import passportFacebook from "passport-facebook";\n import _ from "lodash";\n \n // import { User, UserType } from \'../models/User\';\n-import { User, UserDocument } from "../models/User";\n+import { User, UserDocument } from "../models/User"\n import { Request, Response, NextFunction } from "express";\n \n const LocalStrategy = passportLocal.Strategy;\n',id:1087,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2021-07-23T16:22:54+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"winjo.gwj@test.com",extern_uid:"190046",id:15346,name:"彦熹",state:"active",username:"winjo.gwj",web_url:"https://test.com.com/nwpipe/u/190046"},commit_id:null,created_at:"2021-07-23T16:22:44+0800",discussion_id:60,id:300002,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"666",noteable_id:2100002,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2021-07-23T16:22:44+0800"}],updated_at:"2021-07-23T16:23:01+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},body:null,created_at:"2022-01-19T15:20:27+08:00",id:4700002,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-19T15:21:02+0800",discussion_id:null,id:500004,is_award:!1,labels:[],latest_st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n+ "scripts": {\n+ "test": "echo \\"Error: no test specified\\" && exit 1"\n+ },\n+ "keywords": [],\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},line_code:"a1cd6d42683feafb8bafa3c3c68369f59d3013e6_0_9",line_type:"new",note:"333",noteable_id:4700002,noteable_type:"ReviewComment",outdated:!1,path:"aaa/package.json",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n+ "scripts": {\n+ "test": "echo \\"Error: no test specified\\" && exit 1"\n+ },\n+ "keywords": [],\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2022-01-19T15:21:02+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-19T15:20:44+0800",discussion_id:null,id:500003,is_award:!1,labels:[],latest_st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n+ "scripts": {\n+ "test": "echo \\"Error: no test specified\\" && exit 1"\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},line_code:"a1cd6d42683feafb8bafa3c3c68369f59d3013e6_0_7",line_type:"new",note:"222",noteable_id:4700002,noteable_type:"ReviewComment",outdated:!1,path:"aaa/package.json",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n+ "scripts": {\n+ "test": "echo \\"Error: no test specified\\" && exit 1"\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2022-01-19T15:20:44+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-19T15:20:28+0800",discussion_id:null,id:500002,is_award:!1,labels:[],latest_st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},line_code:"a1cd6d42683feafb8bafa3c3c68369f59d3013e6_0_5",line_type:"new",note:"111",noteable_id:4700002,noteable_type:"ReviewComment",outdated:!1,path:"aaa/package.json",resolved_at:null,resolved_by:null,st_diff:{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:"87ed08a7245161fc9675981be01a6effe661b803",compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n',id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},state:null,system:!1,type:"Comment",updated_at:"2022-01-19T15:20:28+0800"}],updated_at:"2022-01-19T15:22:55+08:00"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},body:null,created_at:"2022-01-26T02:16:02+08:00",id:4700010,pending:!1,pull_request_id:13055,review_notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.com",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:"https://test.com.com/nwpipe/u/354626"},commit_id:null,created_at:"2022-01-26T11:01:34+0800",discussion_id:176,id:500029,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:'> \x3c!-- reply id="176" --\x3e\n> 测试\n\n123',noteable_id:4700010,noteable_type:"ReviewComment",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!1,type:"Comment",updated_at:"2022-01-26T11:01:34+0800"}],updated_at:"2022-01-26T11:01:39+08:00"}],notes:[{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-10-12T18:54:04+0800",discussion_id:null,id:121,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"[Force Push] To feat/123123 Of commit: daa3e131 - fix: li in pr desc",noteable_id:13055,noteable_type:"PullRequest",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2020-10-12T18:54:04+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-10-12T18:54:04+0800",discussion_id:null,id:120,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"review tasks reopened",noteable_id:13055,noteable_type:"PullRequest",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2020-10-12T18:54:04+0800"},{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"taian.lta@test.com",extern_uid:"146194",id:15165,name:"伊北",state:"active",username:"taian.lta",web_url:"https://test.com.com/nwpipe/u/146194"},commit_id:null,created_at:"2020-10-12T18:52:43+0800",discussion_id:null,id:117,is_award:!1,labels:[],latest_st_diff:null,line_code:null,line_type:null,note:"Added 2 commits:\n\n* 0cee41f8 - feat: 123\n* 46e1c30f - 123",noteable_id:13055,noteable_type:"PullRequest",outdated:!1,path:null,resolved_at:null,resolved_by:null,st_diff:null,state:null,system:!0,type:"Comment",updated_at:"2020-10-12T18:52:43+0800"}],pending_review:null},"/api/v3/projects/42422/pull_requests/13055/diffs/mark_files":[{file_path_sha:"8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d",mark_as_read:!0,updated_after_read:!1},{file_path_sha:"a1cd6d42683feafb8bafa3c3c68369f59d3013e6",mark_as_read:!0,updated_after_read:!1}],"/webapi/projects/42422/pull_requests/13055/diffs/31918/changes_overview":[{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:1,deleted_file:!1,id:1075,mark_as_read:!0,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:1,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1076,mark_as_read:!1,new_file:!0,new_path:"a.md",old_path:"a.md",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1077,mark_as_read:!1,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:1,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1078,mark_as_read:!1,new_file:!0,new_path:"aa.md",old_path:"aa.md",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1079,mark_as_read:!0,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1080,mark_as_read:!1,new_file:!0,new_path:"apiMeta.json",old_path:"apiMeta.json",renamed_file:!1,too_large:!0,updated_after_read:!1},{a_mode:"0",add_line_num:0,b_mode:"100644",binary_file:!0,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1081,mark_as_read:!1,new_file:!0,new_path:"assets/logo_white.gif",old_path:"assets/logo_white.gif",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1082,mark_as_read:!1,new_file:!1,new_path:"assets/斋藤飞鸟1.jpg",old_path:"assets/斋藤飞鸟.jpg",renamed_file:!0,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1083,mark_as_read:!1,new_file:!0,new_path:"b.md",old_path:"b.md",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:3,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1084,mark_as_read:!1,new_file:!0,new_path:"gbk.ts",old_path:"gbk.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1085,mark_as_read:!1,new_file:!0,new_path:"hk-cdp_ALL_api#space#info#popUp.json",old_path:"hk-cdp_ALL_api#space#info#popUp.json",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:168,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1086,mark_as_read:!1,new_file:!0,new_path:"pom.xml",old_path:"pom.xml",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:4,deleted_file:!1,id:1087,mark_as_read:!1,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:265,deleted_file:!1,id:1088,mark_as_read:!1,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:49,deleted_file:!1,id:1089,mark_as_read:!1,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:1,deleted_file:!1,id:1090,mark_as_read:!1,new_file:!1,new_path:"src/public/css/main.scss",old_path:"src/public/css/main.scss",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:1,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:1,deleted_file:!1,id:1091,mark_as_read:!1,new_file:!1,new_path:"src/server.ts",old_path:"src/server.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:7,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:7,deleted_file:!1,id:1092,mark_as_read:!1,new_file:!1,new_path:"src/util/logger.ts",old_path:"src/util/logger.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"0",binary_file:!1,compare_diff_id:31918,del_line_num:22,deleted_file:!0,id:1093,mark_as_read:!1,new_file:!1,new_path:"tsconfig.json",old_path:"tsconfig.json",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:2,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:2,deleted_file:!1,id:1094,mark_as_read:!1,new_file:!1,new_path:"views/contact123.pug",old_path:"views/contact.pug",renamed_file:!0,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"0",binary_file:!1,compare_diff_id:31918,del_line_num:27,deleted_file:!0,id:1095,mark_as_read:!1,new_file:!1,new_path:"views/home.pug",old_path:"views/home.pug",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:31918,del_line_num:0,deleted_file:!1,id:1096,mark_as_read:!1,new_file:!1,new_path:"views/partials/footer-renamed.pug",old_path:"views/partials/footer.pug",renamed_file:!0,too_large:!1,updated_after_read:!1}],"/api/v3/projects/42422/repository/blobs/df72e4d1c394af6d1c21cd042116f83a792fa8c6":'{\n"name": "bbb",\n"version": "2.0.0",\n"description": "",\n"main": "test.js",\n"scripts": {\n"test": "echo "Error: no test specified" && exit 1"\n},\n"keywords": [],\n"license": "ISC"\n}',"/api/v3/projects/42422/repository/blobs/87ed08a7245161fc9675981be01a6effe661b803":'{\n"name": "aaa",\n"version": "1.0.0",\n"description": "",\n"main": "index.js",\n"scripts": {\n"test": "echo "Error: no test specified" && exit 1"\n},\n"keywords": [],\n"author": "",\n"license": "ISC"\n}',"/webapi/projects/42422/pull_requests/13055/diffs/31918/changes/1079":{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,charset_name:"UTF-8",commit_sha:null,compare_diff_id:31918,del_line_num:0,deleted_file:!1,diff:'@@ -0,0 +1,12 @@\n+{\n+ "name": "aaa",\n+ "version": "1.0.0",\n+ "description": "",\n+ "main": "index.js",\n+ "scripts": {\n+ "test": "echo \\"Error: no test specified\\" && exit 1"\n+ },\n+ "keywords": [],\n+ "author": "",\n+ "license": "ISC"\n+}\n',highlighted_diff:null,id:1079,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1},"/api/v3/projects/42422/pull_requests/13055/reviews":{author:{avatar_url:"https://img.alicdn.com/imgextra/i4/O1CN01tPoJQo20M1TueWZet_!!6000000006834-0-tps-80-80.jpg",email:"guqiankun.gqk@test.net",extern_uid:"354626",id:5600024,name:"轻游",state:"active",username:"guqiankun.gqk",web_url:" "},body:null,created_at:"2022-07-15T16:57:34.591+08:00",id:5100024,pending:!0,pull_request_id:12600136,updated_at:"2022-07-15T16:57:34.591+08:00"},"/webapi/projects/42422/pull_requests/13055/diffs/20699/changes_overview":[{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:1,deleted_file:!1,id:550,mark_as_read:!0,new_file:!1,new_path:"README.md",old_path:"README.md",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:1,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:551,mark_as_read:!1,new_file:!0,new_path:"a.md",old_path:"a.md",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:228,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:552,mark_as_read:!1,new_file:!0,new_path:"a.ts",old_path:"a.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:1,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:553,mark_as_read:!1,new_file:!0,new_path:"aa.md",old_path:"aa.md",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:12,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:554,mark_as_read:!0,new_file:!0,new_path:"aaa/package.json",old_path:"aaa/package.json",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:555,mark_as_read:!1,new_file:!0,new_path:"apiMeta.json",old_path:"apiMeta.json",renamed_file:!1,too_large:!0,updated_after_read:!1},{a_mode:"0",add_line_num:0,b_mode:"100644",binary_file:!0,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:556,mark_as_read:!1,new_file:!0,new_path:"assets/logo_white.gif",old_path:"assets/logo_white.gif",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:557,mark_as_read:!1,new_file:!1,new_path:"assets/斋藤飞鸟1.jpg",old_path:"assets/斋藤飞鸟.jpg",renamed_file:!0,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:558,mark_as_read:!1,new_file:!0,new_path:"b.md",old_path:"b.md",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:3,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:559,mark_as_read:!1,new_file:!0,new_path:"gbk.ts",old_path:"gbk.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"0",add_line_num:168,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:560,mark_as_read:!1,new_file:!0,new_path:"pom.xml",old_path:"pom.xml",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:4,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:4,deleted_file:!1,id:561,mark_as_read:!0,new_file:!1,new_path:"src/config/passport.ts",old_path:"src/config/passport.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:265,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:265,deleted_file:!1,id:562,mark_as_read:!1,new_file:!1,new_path:"src/controllers/user.ts",old_path:"src/controllers/user.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:49,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:49,deleted_file:!1,id:563,mark_as_read:!1,new_file:!1,new_path:"src/models/User.ts",old_path:"src/models/User.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:1,deleted_file:!1,id:564,mark_as_read:!1,new_file:!1,new_path:"src/public/css/main.scss",old_path:"src/public/css/main.scss",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:1,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:1,deleted_file:!1,id:565,mark_as_read:!1,new_file:!1,new_path:"src/server.ts",old_path:"src/server.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:7,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:7,deleted_file:!1,id:566,mark_as_read:!1,new_file:!1,new_path:"src/util/logger.ts",old_path:"src/util/logger.ts",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"0",binary_file:!1,compare_diff_id:20699,del_line_num:22,deleted_file:!0,id:567,mark_as_read:!1,new_file:!1,new_path:"tsconfig.json",old_path:"tsconfig.json",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:2,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:2,deleted_file:!1,id:568,mark_as_read:!1,new_file:!1,new_path:"views/contact123.pug",old_path:"views/contact.pug",renamed_file:!0,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"0",binary_file:!1,compare_diff_id:20699,del_line_num:27,deleted_file:!0,id:569,mark_as_read:!1,new_file:!1,new_path:"views/home.pug",old_path:"views/home.pug",renamed_file:!1,too_large:!1,updated_after_read:!1},{a_mode:"100644",add_line_num:0,b_mode:"100644",binary_file:!1,compare_diff_id:20699,del_line_num:0,deleted_file:!1,id:570,mark_as_read:!1,new_file:!1,new_path:"views/partials/footer-renamed.pug",old_path:"views/partials/footer.pug",renamed_file:!0,too_large:!1,updated_after_read:!1}],"/api/v3/projects/42422/repository/blame":[{commit:{author:null,author_email:"taian.lta@test.com",author_name:"taian.lta",authored_date:"2020-08-18T12:09:32+0800",committed_date:"2020-08-18T12:09:32+0800",committer:null,committer_email:"taian.lta@test.com",committer_name:"taian.lta",created_at:"2020-08-18T12:09:32+0800",id:"7c501a19ae4644814782622af41b72e0f65eaacd",message:" feat: 123",parent_ids:null,short_id:"7c501a19",title:" feat: 123",tree_hash:null},lines:[{current_number:1,effect_line:12,previous_number:1}]},{commit:{author:null,author_email:"taian.lta@test.com",author_name:"taian.lta",authored_date:"2020-08-18T12:09:32+0800",committed_date:"2020-08-18T12:09:32+0800",committer:null,committer_email:"taian.lta@test.com",committer_name:"taian.lta",created_at:"2020-08-18T12:09:32+0800",id:"7c501a19ae4644814782622af41b72e0f65eaacd2",message:" feat: 123",parent_ids:null,short_id:"7c501a19",title:" feat: 123",tree_hash:null},lines:[{current_number:15,effect_line:10,previous_number:1}]}]}}}]);
\ No newline at end of file
diff --git a/static/js/39.f9ab560c.chunk.js.LICENSE.txt b/static/js/39.f9ab560c.chunk.js.LICENSE.txt
new file mode 100644
index 000000000..4a7d586e0
--- /dev/null
+++ b/static/js/39.f9ab560c.chunk.js.LICENSE.txt
@@ -0,0 +1 @@
+/*! For license information please see 39.f9ab560c.chunk.js.LICENSE.txt */
diff --git a/static/js/95.d6ddd512.chunk.js b/static/js/95.d6ddd512.chunk.js
new file mode 100644
index 000000000..3f03f7384
--- /dev/null
+++ b/static/js/95.d6ddd512.chunk.js
@@ -0,0 +1 @@
+(this.webpackJsonp=this.webpackJsonp||[]).push([[95],{"+QRC":function(e,t,a){"use strict";var n=a("E9nw"),r={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var a,o,i,l,s,u=!1;t||(t={}),t.debug;try{if(o=n(),i=document.createRange(),l=document.getSelection(),(s=document.createElement("span")).textContent=e,s.ariaHidden="true",s.style.all="unset",s.style.position="fixed",s.style.top=0,s.style.clip="rect(0, 0, 0, 0)",s.style.whiteSpace="pre",s.style.webkitUserSelect="text",s.style.MozUserSelect="text",s.style.msUserSelect="text",s.style.userSelect="text",s.addEventListener("copy",(function(a){if(a.stopPropagation(),t.format)if(a.preventDefault(),void 0===a.clipboardData){window.clipboardData.clearData();var n=r[t.format]||r.default;window.clipboardData.setData(n,e)}else a.clipboardData.clearData(),a.clipboardData.setData(t.format,e);t.onCopy&&(a.preventDefault(),t.onCopy(a.clipboardData))})),document.body.appendChild(s),i.selectNodeContents(s),l.addRange(i),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(n){try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(n){a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(i):l.removeAllRanges()),s&&document.body.removeChild(s),o()}return u}},"0/zy":function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=d(a("CtXQ")),r=d(a("BvKs")),o=d(a("5rEg")),i=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var a=[],n=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(n=(i=l.next()).done)&&(a.push(i.value),!t||a.length!==t);n=!0);}catch(e){r=!0,o=e}finally{try{!n&&l.return&&l.return()}finally{if(r)throw o}}return a}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")};a("Pwec"),a("lUTK"),a("5NDa");var l=a("cDcd"),s=d(l),u=a("sYIF"),c=d(a("XzCO"));function d(e){return e&&e.__esModule?e:{default:e}}var f=o.default.Search;t.default=function(e,t){var a,o=e.className,d=e.name,m=e.ids,p=e.lists,v=e.size,g=e.imgControl,y=e.searchFunc,h=e.chooseFunc,E=e.update,A=e.double,b=e.names,_=(0,l.useRef)(null),C=(0,l.useState)([]),w=i(C,2),S=w[0],k=w[1],j=(0,l.useState)(void 0),N=i(j,2),x=N[0],O=N[1];return(0,l.useEffect)((function(){k(m?m.split(","):[]),O(b)}),[m,b]),s.default.createElement("li",{className:o||""},s.default.createElement(c.default,{className:o,ref:_,overlay:(a=p,s.default.createElement("div",{className:"overlaydrop "+v},"small"!==v&&s.default.createElement("div",{className:"pb10"},s.default.createElement(f,{placeholder:"搜索"+d,onChange:function(e){return y(e.target.value)}})),a&&a.length>0?s.default.createElement(r.default,{selectedKeys:S},a.map((function(e,t){return s.default.createElement(r.default.Item,{key:e.id},g&&e.image_url&&s.default.createElement("img",{src:(0,u.getImageUrl)(e.image_url),alt:""}),e.color&&s.default.createElement("span",{style:{backgroundColor:e.color,marginRight:"0px"},className:"colorpiece"}),s.default.createElement("span",{className:"task-hide",onClick:function(){return function(e){var t=m,a=e.id.toString();if(A&&"-1"!==a){t=(t=m?m.split(","):[])&&t.length>0?t.filter((function(e){return"-1"!==e.toString()})):[];var n=b?b.split(","):[];t&&t.indexOf(a)>=0?(t=t.filter((function(e){return e.toString()!==a})),n=n.filter((function(t){return t.toString()!==e.name}))):(t.push(a),n.push(e.name)),k(t),O(n.join(",")),h(t,n.join(","))}else t&&t.indexOf(a)>=0?(k([]),O(void 0),h([])):(k([""+e.id]),O([e.name]),h([a],e.name)),_.current&&_.current.clearVisible(!1)}(e)}},e.name))}))):s.default.createElement("div",{className:"pl15"},"暂无",m?s.default.createElement("span",null,"'",d,"'"):d))),placement:"bottomRight"},s.default.createElement("span",{className:"task-hide"},x||(E?"更换"+d:d)),s.default.createElement(n.default,{type:"caret-down",className:"color-grey-6"})))}},"0Ks3":function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=l(a("2/Rp"));a("+L6B");var r=l(a("cDcd")),o=l(a("/k9T")),i=a("spEH");function l(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.visible,a=e.onCancel,l=e.onSuccess,s=e.content,u=e.title;return r.default.createElement(o.default,{visible:t,onCancel:a,title:u||"删除疑修",btn:r.default.createElement("div",null,r.default.createElement(n.default,{size:"large",onClick:a},"取消"),r.default.createElement(n.default,{type:"danger",size:"large",onClick:l},"确认删除"))},r.default.createElement("div",{className:"desc"},r.default.createElement(i.AlignTop,{className:"deldesc"},r.default.createElement("i",{className:"iconfont icon-jinggao1 mr10 font-20 red"}),s||r.default.createElement("div",{style:{paddingTop:"3px"}},r.default.createElement("p",{className:"font-15 mb20"},"您确定要删除所有选中的疑修?"),r.default.createElement("p",{className:"color-grey-6"},"此操作将清空所有已选中的疑修,请谨慎操作")))))}},"0x8O":function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIgAAACICAYAAAA8uqNSAAAABHNCSVQICAgIfAhkiAAACx9JREFUeF7tnV1sXEcVx2euTaMgUBJRqagP4IgKUFQRJxYVUdPdvXbSehdCkocgkZcmL1Qtok1EJaqCIFFBfAi1MRJp+1TngQ/BAwkl3qSJvXe3FVJAjh1KpVaI4LwUFdGSlLaJSvYezti78d10vXfufOzdu3P2qY1nzpz5n9+cmbk7d5Yz+pACHRTgpA4p0EkBAoT46KgAAUKAECDEgLoClEHUtXOiJgHiRJjVO0mAqGvnRE0CxIkwq3eSAFHXzomaBIgTYVbvJAGirp0TNQkQJ8Ks3kkCRF07J2oSIE6EWb2TBIi6dk7U7Aogvj/+GQBvHDjciw1+kjF+G+PsVicUNtVJYP9mDN4Azi6iyTNwvf6HWu2Ff5gyv5Ida4Bs2bJl9apVa/aCxx/ijG+23REX7QODP6O2R1n43q+DILhmQwMrgGDGGAPu/QIdvs2G02SzVQEE5XUP2N5KpVw1rY1xQPJ+6eecs4dMO0r2ZBSAiWCmfECmpGwZo4Dk/eKznPOvtW0cIMB1xywwfgGuw19rtfKcrJNUjrFcrriJD/I7OYONqOFdGLh72usCzyAkD5rSzBgghdHSE+jUdz7gGMBr4HkPVqdPVkw5TXYYy4+VtvMQjjLO72ijx6FgZuqwCZ2MAJLPj3+eD3h/ijoEwK4yDt+szpSfNuEo2WivAE7pD+NffoTT+uqWEiHbFART87q6aQOyZ8+egX+9+c5fcDW9IeoMB7arUpk6oesg1Y9XID9a+ioG8pctJQFeCSrlz+G/hfEWVi6hDYjvl3bi3vx4a/aAn1Qr5W/pOEZ1kymAmeRJzCIHWwdp/UuVyumTySy1ltYGpOCXnsHF5wM3zAJMI7nb8f9BxzGqm1gBjpkkwIDmmjUB4GkcqFo7Sm1A0KlzaOSuG90J69uD4PTZxN2jCtoK5Pzxkse95YwB7FxQmfqCjmETgFxCI59oOhFe/9+na7Uzf9NxiuqqKXDPWHHDAPBXIrUv4W5mSM3aUi1tQHB72zKVoEPaNnU65HLdkZEdH/7omvq7UQ1046EdTAKkt5A0HQ8CpLfiq+0NAaItYX8bIED6O77avSNAtCXsbwMESH/HV7t3BIi2hP1tgADp7/hq944A0Zawvw0QIP0dX+3eESDaEva3AQIkEt/h4eGhgYGBnfi19trmP+OZ2Mv1ev3E/Pz8Qn+j0L53BAjqgmAUEIzv4X8WOkAQICiHEZTAJVCcB2Tz5s3PYZbYJxt0zC6T58+f3y9bPuvlnAZkZGTkdxjAXQpBPD47O7tboV7mqjgLCGaOI5g5HlGNGGaSCcwkRl8qUvXFZj0nAWmsObTfq8E1id/vaxInAcGpRcDRaUEqOygDnGp82cJZLOccII2trLFrDjCLrMMscjku+KJdz/MWd0o4tQ3FlTfw93mcBo+HYTgh499K7TkHCK499mGAnjMQgEUTGIT9uBaZ7GQP4RhGOCrY7o3nK6bal7Az35gKYyFuZ8tFQA5hoMRINvJBQA4jIIc6GTM4pSn5rLOgJkCUJF+uJAlIqi99oY8LCPF6la4SICqqRepkARB09wouppWmNwJEH5CDODqPdDKD654FnNbwLrXUPicQEJUHgsw5QEw9A2mGWuZZCK5BRHDEU9tUPujjJtzJKF3d4BwgIkKmRjROL5cwewzJRB3bPIBZRCxm18iUN1TmCtrZh9mj5baEJLZdBcTITgYBiZ1eosHA7CXWAcNJAqRT1sRTXicBaWSReRzRG1UDgHBcwOzRtWCr+qlbz1lAxMMrPAMSKKb8KzivF1Tndd2gdbO+s4AIkRUhcQYOoZHTgDQgWYuZRGxT75cYmccwcxzQ+W5Doo2eKuI8IM1oxJ0P0Xlc3VMRT+gMAdIQDAHpuLOReWKaUPtMFCdACJCOoBIgBAgBIpPLaYpprxJlkB7KIOJ7IjxYdL/BE2eT+Jj9mMwAWakMAdIjgDS+q3lKJ5gr1J1HSDap2iVAegCQxgM7az9norMDI0B6AJC49Y/q6I/UU84iBIgbgNCJMt1RFjeKddJ0nG8W1x/NpulEWVwQ4v6eJiDinAh+H7SAPlo5TCRz6o12MTGEpAmIcK3x7sxxw2dXr2DmOxD33k4naWgN0gNrkGiAGs9CCnEZT+LvC/hWXaB78Q0B0mOASAS+q0UIEAKkI3AECAFCgMjk5LQXqTI+plGGMsjSDkJsM8WLTZ0Wh+ISu90uHTcUQDoPiLgOAnV4SuZqBtwyiisUxLswk2mM5jTadBqQpDccNgOEoBxBSFp+UzaN4HWjTWcB0b1IRubimG4E0HYbTgJi4hoqMd3ggyjxUvSC7SClad9JQPBte7GGkHkPJi42x/AwjljDSH/EI3Vc71j5zuVmJ+bm5qrSjq1Q0DlAGjuW/+gK16yf4BI78aqnuButa+/zipuFMMvt13mJ2zlALNzVsTvueoXGDYdzMjslU+BG7dD9IAlUjXsglsDUYlGZcyJxb+0lbVOhPJ0HkRXNdLAkAQkwe+RlfTRdTiyocVu+TsWuc1NMShkkbUCU7zIhQFSGVaSOZAYxenlvUpdlfFzJpnOApLFIFeJj5tK60SgpFM3y4iYk3MmIy27opmVZERESIZaJZxHSp8XF9hrfmhM/H7JL5+or2T6KC/awrLir/ZAqHKIt5zJIYzSbusQu9hpu2YD2ajknATF0ilxcRTWkMzp7FYqoX04CIgTQvVBX51WCLIDR9NFZQBpTjdLuwpVvcp1dg0RHcJL3UcTCDxd9u1y4/pIyyE15vnE+RNypvrPNFHBC/HqTSyfJCJAOCwGRVfDP4trsyy5li3aSOL0GydJiMS1fCZC0lM9IuwRIRgKVlpsESFrKZ6RdAiQjgUrLTQIkLeUz0i4BkpFApeUmAZKW8hlpt+cBGfTeX3v27Fnx43z06bIC27ZtW3M9vGX5oBHAtaBSXq3jBtepLOrm/dJFztnyr0SHrBgEU6d07VL95Ark/PGSx72TN2oC/B0BuSO5peUa2oAU/OKLjPOtTZP4HcgT1Ur5uzpOUV01BfJ+8Qd4+u3xCCBVBKSgZm2plj4go6Ufop3HIoD8k8PVDUEQKJ2p1OmMy3XHxsY+Vg9XvYoRvdXkYNUGJJe7d703OHgxGhxg8Hx1pvxllwPW7b4X/NIZhGNbS7thuD4ITi3o+KINyOI6ZLT0GzS0pwUSCL9erZw6quMc1ZVTID9a/AZn/Getg5T9qjoztVfOwsqljABy993bb//QLYOv4VrkI5H57xpmkscREhs/maHb776pn/fHD3LuPdnaIXh3gL//qenp6Td0O2oEkKUsUtyBFP/+Aw4BezXk7IHazFRN11mqv6xAbrSU84A9i9PKZ1szN4DHwh2Vyunl3YyGcMYAET4UCsVvM49/v60/AC8BY3/kAC+HoXehVpt6WcNv56r6/n0b68zbiIPwTs5gS3Tn2LrugMeCoPxjUwIZBWQxk/ilCXwu8rApB8lOEgXgSDBTNnoXm3FARHd8f/w+YN4kpr+PJ+kelVVTANd6r+N0s7dSKWvfUHSzB1YAWZpuCrhgXf0IpsJHERRxXpQ+hhVAMN5iwH/6ztsDE7Ozz79n2PyiOWuANJ3duvWL6wYH4SvMg3EGuE+P7nRs9KjPbQKw/2IXz3AIp65e5b89d678ts0uWwfEpvNk274CBIh9jTPdAgGS6fDZd54Asa9xplsgQDIdPvvOEyD2Nc50CwRIpsNn33kCxL7GmW6BAMl0+Ow7T4DY1zjTLRAgmQ6ffecJEPsaZ7oFAiTT4bPvPAFiX+NMt0CAZDp89p0nQOxrnOkW/g84p5HjcavzMgAAAABJRU5ErkJggg=="},"1pYj":function(e,t,a){"use strict";a.r(t),t.default=a.p+"static/media/emp.35f6c709.png"},"5m32":function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=N(a("W9HT")),r=N(a("NUBc")),o=N(a("2/Rp")),i=N(a("kaz8")),l=N(a("jsC+")),s=N(a("CtXQ")),u=N(a("3S7+")),c=N(a("BvKs")),d=N(a("5rEg")),f=N(a("+eQT")),m=Object.assign||function(e){for(var t=1;t0?n.data.issues.map((function(e){return e.id})):[];_e(r),et(n.data.total_issues_count),st(n.data.has_created_issues);var o=m({},e,{keyword:te,participant_category:W,category:oe,limit:Ye,page:t||1,sort_direction:gt(e&&e.sort_by),begin_date:ue,end_date:me,sort_by:yt(e&&e.sort_by),names:a}),i=new Date((new Date).getTime()+864e5);S.default.save("issuestates",m({},o),{expires:i,path:"/"})}})).then((function(e){}))}(0,v.useEffect)((function(){if(mt){var e=mt.author,t=mt.name;document.title="疑修-"+e.name+"/"+t}}),[mt]),(0,v.useEffect)((function(){var t=S.default.load("issuestates"),a="undefined"===t?void 0:t;a?(X(a.participant_category),ie(a.category),Qe(a.page),Ge(a.limit||15),Re(m({},a)),Oe(a.names),ce(a.begin_date),pe(a.end_date)):ht(),e.location.state&&e.location.state.issue&&_t(e.location.state.issue)}),[]),(0,v.useEffect)((function(){Te&&!(ye&&ye>0)&&(Te.author_id||Te.issue_priorities_id||Te.issue_tag_ids||Te.milestone_id||Te.sort_by||Te.status_id||Te.assigner_id)||Z||me||ue||"all"!==W?rt(!0):rt(!1)}),[Te,Z,ye,ue,me,W]),t=function(){ht(Te,Me,xe)},a=[W,te,oe,Ye,me,Te],d=(0,v.useRef)(!1),(0,v.useEffect)((function(){d.current?t():d.current=!0}),a);var Et=g.default.createElement(c.default,{selectedKeys:[""+W],onClick:function(e){Qe(1),X(e.key)}},g.default.createElement(c.default.Item,{key:"all"},"全部"),g.default.createElement(c.default.Item,{key:"aboutme"},g.default.createElement(u.default,{title:"指我创建的、我负责的和@我的疑修"},"与我相关")),g.default.createElement(c.default.Item,{key:"assignedme"},"我负责的"),g.default.createElement(c.default.Item,{key:"authoredme"},"我创建的"),g.default.createElement(c.default.Item,{key:"atme"},"@我的"));function At(){he([]),ke(!1),ut.current&&ut.current.clearChoose()}function bt(e){if(e!==oe){var t=m({},Te),a=m({},xe);"closed"===e?(a=m({},a,{status_name:"关闭"}),t=m({},t,{status_id:"5"}),Oe(a),Re(t)):(a=m({},a,{status_name:void 0}),t=m({},t,{status_id:void 0}),Oe(a),Re(t)),ie(e),Qe(1),Le(void 0)}}function _t(e){ut.current&&ut.current.setChooseTag(e)}return g.default.createElement("div",null,g.default.createElement(C.default,{visible:I,onCancel:function(){return D(!1)},onSuccess:function(){var t="/v1/"+ct+"/"+dt+"/issues/batch_destroy";w.default.delete(t,{params:{ids:ye}}).then((function(t){t&&(Re(void 0),he([]),D(!1),ke(!1),e.showNotification("疑修删除成功!"),ht())})).catch((function(e){}))}}),g.default.createElement("div",{className:"pageheader"},g.default.createElement("div",null,pt&&pt.login&&g.default.createElement(l.default,{overlay:Et,trigger:["click"],placement:"bottomLeft",arrow:{pointAtCenter:!0}},g.default.createElement("span",{className:"dorpdownButton mr20"},g.default.createElement("span",null,"all"===W?"全部":"aboutme"===W?"与我相关":"assignedme"===W?"我负责的":"authoredme"===W?"我创建的":"@我的"),g.default.createElement(s.default,{type:"caret-down",className:"ml5 color-grey-6"}))),g.default.createElement(O,{placeholder:"输入关键字搜索疑修",value:Z,onChange:function(e){V(e.target.value),""===e.target.value&&ae(void 0)},onSearch:function(){return ae(Z)},style:{width:354,height:32},allowClear:!0}),nt&&g.default.createElement("a",{className:"color-blue ml25",onClick:function(){ae(void 0),X("all"),ie("opened"),Re(void 0),he([]),Qe(1),V(void 0),Oe(void 0),pe(void 0),ce(void 0),ut.current&&ut.current.clearChoose()},style:{display:"flex",alignItems:"center"}},g.default.createElement("i",{className:"iconfont icon-roundclose font-16 mr5"}),"清除筛选条件")),g.default.createElement("div",null,g.default.createElement(x,{value:[ue?(0,j.default)(ue,"YYYY-MM-DD"):"",me?(0,j.default)(me,"YYYY-MM-DD"):""],onChange:function(e,t){Qe(1),ce(t[0]||""),pe(t[1]||"")},style:{width:240,marginRight:20}}),ft&&"Reporter"!==ft&&g.default.createElement(E.Link,{to:"/"+ct+"/"+dt+"/issues/sign",className:"dorpdownButton"},g.default.createElement("img",{src:y.default,alt:"",className:"mr5"}),"标记管理"),g.default.createElement(b.default,m({},e,{sureFunc:function(){e.history.push("/"+ct+"/"+dt+"/issues/new")},checklogin:!0,className:"operateButton ml20"}),"创建疑修"))),g.default.createElement("div",{className:"lists"},g.default.createElement("div",{className:"listheader"},g.default.createElement("div",{style:{display:"flex"}},g.default.createElement(i.default,{value:"all",style:{marginRight:"16px",display:ft&&"Reporter"!==ft?"block":"none"},checked:Se,onChange:function(e){ke(e.target.checked),ut.current&&ut.current.clearChoose(),e.target.checked?he(be):he([])}}),ye&&ye.length>0?g.default.createElement("span",null,"选择",ye.length,"个issue"):g.default.createElement("ul",{className:"statusul"},g.default.createElement("li",{className:"all"===oe?"active":"",onClick:function(){bt("all")}},"全部",g.default.createElement("span",null,$e)),g.default.createElement("li",{className:"opened"===oe?"active":"",onClick:function(){bt("opened")}},"开启中",g.default.createElement("span",null,H)),g.default.createElement("li",{className:"closed"===oe?"active":"",onClick:function(){bt("closed")}},"已关闭",g.default.createElement("span",null,F)))),g.default.createElement("div",{className:"menusul"},g.default.createElement(A.default,{ref:ut,update:ye&&ye.length>0,owner:ct,projectsId:dt,chooseFunc:function(e,t){Oe(t),Qe(1),ye&&ye.length>0?Ue(e):("5"===e.status_id?ie("closed"):ie("opened"),Re(e),Le(void 0))},defaultNames:xe,defaultIds:ye&&ye.length>0?void 0:Te,open_blockchain:vt}),ye&&ye.length>0?g.default.createElement("div",null,g.default.createElement(o.default,{type:"primary",ghost:!0,onClick:function(){var e="/v1/"+ct+"/"+dt+"/issues/batch_update",t=ze.assigner_id,a=ze.issue_tag_ids,n=ze.milestone_id,r=ze.issue_priorities_id,o=ze.status_id,i=t?"-1"===t?[]:t.split(","):void 0,l=a?"-1"===a?[]:a.split(","):void 0,s=n?"-1"===n?"":n:void 0;w.default.patch(e,{assigner_ids:i,ids:ye,issue_tag_ids:l,milestone_id:s,priority_id:r,status_id:o}).then((function(e){e&&(Re(void 0),he([]),Le(void 0),ht(),At())})).catch((function(e){}))}},"确定"),g.default.createElement(o.default,{type:"danger",ghost:!0,className:"ml10",onClick:function(){return D(!0)}},"删除"),g.default.createElement(o.default,{ghost:!0,className:"ml10 mr10",onClick:At},"取消")):"")),0===qe&&(lt?g.default.createElement("div",{className:"dataempty"},g.default.createElement("img",{src:k.default,alt:""})):g.default.createElement("div",{className:"listempty"},g.default.createElement("img",{src:h.default,alt:"",width:"68px"}),g.default.createElement("p",{className:"font-22 mt5 mb10"},"欢迎使用疑修(Issue)"),g.default.createElement("p",{className:"font-15"},"疑修用于记录与跟踪待办事项、项目bug、功能需求等。在使用之前,请您先",g.default.createElement(b.default,m({},e,{checklogin:!0,sureFunc:function(){e.history.push("/"+ct+"/"+dt+"/issues/new")},className:"color-blue"}),"创建一个疑修")))),qe>0&&g.default.createElement(g.default.Fragment,null,g.default.createElement(i.default.Group,{name:"issues",onChange:function(e){ut.current&&ut.current.clearChoose(),he(e),e.length===be.length?ke(!0):ke(!1)},value:ye,style:{width:"100%"}},g.default.createElement("div",{className:"listdatas"},B.map((function(e,t){return g.default.createElement(_.default,{key:t,checkbox:ft&&"Reporter"!==ft&&g.default.createElement(i.default,{value:e.id,key:e.id,style:{marginRight:"16px"}}),item:e,owner:ct,projectsId:dt,chooseTagFunc:_t})})))),qe>15&&g.default.createElement("div",{className:"pt25 pb30",style:{textAlign:"right"}},g.default.createElement(r.default,{total:qe,onShowSizeChange:function(e,t){Qe(1),Ge(t)},current:Me,pageSize:Ye,onChange:function(e){Qe(e),ht(Te,e,xe),document&&(document.documentElement||document.body)&&(document.documentElement.scrollTop=document.body.scrollTop=0)},showSizeChanger:!0,pageSizeOptions:[15,30,40,50],showQuickJumper:!0}))),void 0===qe&&g.default.createElement("div",{style:{height:344,display:"flex",alignItems:"center",justifyContent:"center"}},g.default.createElement(n.default,null))))}},E9nw:function(e,t){e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,a=[],n=0;n0?e.join(","):void 0}),r=n({},ce,{author_name:t});le(a),de(r),m(a,r)}(e,t)}}),p&&i.default.createElement(l.default,{update:p,ids:ie&&ie.issue_priorities_id,name:"优先级",size:"small",lists:ae,names:ce&&ce.issue_priorities_name,chooseFunc:function(e,t){var a=n({},ie,{issue_priorities_id:e&&e.length>0?e.join(","):void 0}),r=n({},ce,{issue_priorities_name:t});de(r),le(a),m(a,r)}}),i.default.createElement(l.default,{update:p,ids:ie&&ie.issue_tag_ids,name:"标记",size:"large",double:!0,names:ce&&ce.issue_tag_name,lists:N,searchFunc:function(e){return T(e)},chooseFunc:function(e,t){var a=n({},ie,{issue_tag_ids:e&&e.length>0?e.join(","):void 0}),r=n({},ce,{issue_tag_name:t});de(r),le(a),m(a,r)}}),i.default.createElement(l.default,{update:p,ids:ie&&ie.milestone_id,name:"里程碑",size:"large",names:ce&&ce.milestone_name,lists:P,searchFunc:function(e){return M(e)},chooseFunc:function(e,t){var a=n({},ie,{milestone_id:e&&e.length>0?e.join(","):void 0}),r=n({},ce,{milestone_name:t});de(r),le(a),m(a,r)}}),i.default.createElement(l.default,{update:p,ids:ie&&ie.assigner_id,name:"负责人",size:"large",imgControl:!0,names:ce&&ce.assigner_name,lists:K,searchFunc:function(e){return q(e)},double:!!p,chooseFunc:function(e,t){var a=n({},ie,{assigner_id:e&&e.length>0?e.join(","):void 0}),r=n({},ce,{assigner_name:t});de(r),le(a),m(a,r)}}),i.default.createElement(l.default,{update:p,ids:ie&&ie.status_id,name:"状态",size:"small",lists:V,names:ce&&ce.status_name,chooseFunc:function(e,t){var a=n({},ie,{status_id:e&&e.length>0?e.join(","):void 0}),r=n({},ce,{status_name:t});de(r),le(a),m(a,r)}}),!p&&i.default.createElement(l.default,{className:"minwidth",ids:ie&&ie.sort_by,name:"排序",size:"small",lists:y?d:f,names:ce&&ce.sortby_name,chooseFunc:function(e,t){var a=n({},ie,{sort_by:e&&e.length>0?e.join(","):void 0}),r=n({},ce,{sortby_name:t});de(r),le(a),m(a,r)}}))}))},Xxpw:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=s(a("3S7+"));a("5Dmo");var r=s(a("cDcd")),o=(a("sYIF"),s(a("xmot"))),i=a("eO8H"),l=s(a("jZ+j"));function s(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.checkbox,a=e.item,s=e.projectsId,u=e.owner,c=e.chooseTagFunc;function d(e){return e.map((function(e){return e.name})).join(",")}return r.default.createElement("div",null,r.default.createElement("div",{className:"issuedetail"},t,r.default.createElement("div",{style:{flex:1}},r.default.createElement("div",{className:"idetails"},r.default.createElement("span",{className:function(e){switch(e){case"低":return"status low";case"正常":return"status normals";case"高":return"status hight";default:return"status urgent"}}(a.priority_name)},a.priority_name),r.default.createElement(i.Link,{to:"/"+u+"/"+s+"/issues/"+a.project_issues_index,style:{maxWidth:(a.tags?735-120*a.tags.length:735)+"px"},title:a.subject},a.subject),a.tags&&a.tags.length>0?a.tags.map((function(e,t){return r.default.createElement("span",{onClick:function(){return c(e)},style:{backgroundColor:""+e.color,cursor:"pointer"},className:"ml8 tagscolor task-hide",title:e.name},e.name)})):""),r.default.createElement("div",null,r.default.createElement("div",{className:"infos"},r.default.createElement("div",{className:"ilog"},a.project_issues_index&&r.default.createElement(l.default,{value:"/"+u+"/"+s+"/issues/"+a.project_issues_index},r.default.createElement("span",{className:"number"},"#",a.project_issues_index))),r.default.createElement(i.Link,{to:"/"+(a.author&&a.author.login)},r.default.createElement("i",{className:"iconfont icon-chengyuan2 mr3 font-12",style:{color:"#898d9d"}})),r.default.createElement("span",{className:"mr12"},r.default.createElement(i.Link,{style:{color:"#898d9d"},to:"/"+(a.author&&a.author.login)},a.author&&a.author.name)),r.default.createElement("span",{className:"mr12"},a.created_at," 发布"),r.default.createElement("span",{className:"mr20"},a.updated_at,"更新"),a.blockchain_token_num&&r.default.createElement("span",{className:"mr30"},r.default.createElement("img",{src:o.default,alt:"",width:"13px",className:"mr3"}),a.blockchain_token_num),a.milestone_name&&r.default.createElement(i.Link,{to:"/"+u+"/"+s+"/milestones/"+a.milestone_id,onClick:function(){window.scrollTo(0,0)},style:{maxWidth:a.blockchain_token_num?"261px":"340px",color:"#898d9d"},title:a.milestone_name,className:"task-hide"},r.default.createElement("i",{className:"iconfont icon-lichengbeiicon1 font-12 mr3"}),a.milestone_name))))),r.default.createElement("div",{className:"issuecondition"},a.assigners&&a.assigners.length>0?r.default.createElement(n.default,{title:d(a.assigners),placement:"bottomRight"},r.default.createElement("div",{className:a.assigners.length>1?"principal hovers":"principal"},r.default.createElement("span",{className:"task-hide",style:{wordBreak:"break-all"}},d(a.assigners)))):"",r.default.createElement("div",{style:{color:"已解决"===a.status_name?"#28bd6c":"#40424a"}},a.status_name),r.default.createElement("div",{className:"commentnum"},r.default.createElement(i.Link,{to:"/"+u+"/"+s+"/issues/"+a.project_issues_index+"#commentList"},r.default.createElement("i",{className:"iconfont icon-a-xiaoxi1 mr5 font-15"}),a.comment_journals_count))))}},XzCO:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=l(a("jsC+"));a("qVdP");var r=a("cDcd"),o=l(r),i=a("faye");function l(e){return e&&e.__esModule?e:{default:e}}t.default=(0,r.forwardRef)((function(e,t){var a=e.overlay,l=e.children,s=e.placement,u=e.overlayClassName,c=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var a=[],n=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(n=(i=l.next()).done)&&(a.push(i.value),!t||a.length!==t);n=!0);}catch(e){r=!0,o=e}finally{try{!n&&l.return&&l.return()}finally{if(r)throw o}}return a}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)(!1),2),d=c[0],f=c[1],m=(0,r.useRef)(null),p=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(function(){return{clearVisible:function(e){f(e)}}})),(0,r.useEffect)((function(){document.addEventListener("click",v,!1)}),[]);var v=function(e){var t=e.target,a=(0,i.findDOMNode)(m.current),n=(0,i.findDOMNode)(p.current);if(a&&n){var r=a.contains(t),o=n.contains(t);r||o||f(!1)}};return o.default.createElement(n.default,{placement:s,visible:d,overlay:o.default.createElement("div",{ref:m},a),trigger:["click"],overlayClassName:u},o.default.createElement("span",{className:"dropspan",ref:p,onClick:function(){return f(!d)}},l))}))},"jZ+j":function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=l(a("3S7+"));a("5Dmo");var r=a("cDcd"),o=l(r),i=a("P5Jw");function l(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.children,a=e.value,l=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var a=[],n=!0,r=!1,o=void 0;try{for(var i,l=e[Symbol.iterator]();!(n=(i=l.next()).done)&&(a.push(i.value),!t||a.length!==t);n=!0);}catch(e){r=!0,o=e}finally{try{!n&&l.return&&l.return()}finally{if(r)throw o}}return a}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}((0,r.useState)("点击复制链接"),2),s=l[0],u=l[1],c="localhost"===window.location.hostname?"testforgeplus.trustie.net":window.location.hostname,d=window.location.protocol;return o.default.createElement(i.CopyToClipboard,{text:d+"//"+c+a,onCopy:function(){return u("复制成功")}},o.default.createElement(n.default,{placement:"bottom",title:s},t))}},rHrb:function(e,t,a){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var r=l(a("cDcd")),o=l(a("+QRC")),i=["text","onCopy","options","children"];function l(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function u(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}(e,i),n=r.default.Children.only(t);return r.default.cloneElement(n,u(u({},a),{},{onClick:this.onClick}))}}])&&d(t.prototype,a),Object.defineProperty(t,"prototype",{writable:!1}),l}(r.default.PureComponent);t.CopyToClipboard=y,g(y,"defaultProps",{onCopy:void 0,options:void 0})},xmot:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAABHNCSVQICAgIfAhkiAAAAntJREFUKFNVU01oE0EUfi8paauW7NJWqz20xYtKoevZgxtPCgW3Fw/izxYUT2J78Nqfi+BB6qmgoo0oCIJ2C4I33XjxJFbBkwc3otKa1KQ/GJPsvOeb2bTiwjKZ5Pt730wQ5OH3jgXt8UVgdIHBBQSLieUHqJJSISoIU+naQzwaVTVeP8ifjjjA6dcabESEYEh6VZTsldlrUi5z7PNyizgcCX9Ag8QBSK/6o1k52WvzWK8cdZz4MmSI9HGYmRKQVk4cWvuWe8vRfL/r5Fc0xPjd4UhI/xwT5RZ5O0ErLnNx9+i3QUNsvj3kMqsAFGe359tx/D9BUaL5XWMroSHW3xzMS3MzMpeLDB4ROyKiExRFaKYprdpjK9IDQOVpr2OfKSXl/Hk1tCyArAADlBewrdh5KjLAzWd9MyJ0WoQcwSzLrIF9vjxriLWXgxKVxJUG9GwUU1Fhu5Nu1kIBj+y0bAo0M4c9l6o53HrRn98z+t3fWOz3QZEHSuWZQDtMy/sBYpiwx8th6Z7lInEgJ5CFmGdx4/n+SJyYYxWQjnK2XKg86pFYagSZc/Z4NSzfyXLPlXUsz3d5qqkWRaCAm0/6XCVRgWhAt2pfWMO1+5ZkZui+vI6l+a7knKXhvdd+48qtDjkEBqw87s7b59b88oLlpxg9RPbjugoFOCIz5XqvboWrc528b7KGqzczniJeFNEC/npgRzopxCRRKYil1VTc8JFgWpSrEtnvu95Y+nEj44nzgoxlCXwSf961nJQQtlvV4Axnhupx0qq5bvom6Ytv/gWw1D+lPHPvKnOW1YSmHL60SuTI2VXqtUYuk26bQGBXKMcFWBCB4MAU3dacv5qY9er52wxiAAAAAElFTkSuQmCC"},ynFz:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAANCAYAAACQN/8FAAAABHNCSVQICAgIfAhkiAAAALZJREFUKFONkIENwiAQRQUW6QYSWKAjdIR2Ah2BERyBUXQAkBF0Al0A2n8NNFStKQm5f/COOz475KW17sZxNDm9e++HckeRlUQpdU0pdSGEN2mA7QrE4YUxdsRrEjHQ5Ye+ocgwgAFC1tW1xkg2xjiDX21qUErZCCF2gS3Afm6NmU5brTnnBq0HAntADTZFmwtq/cAf7MqeYslPe2ofd4N/Da9epLnOMP2F+HTOUb6sZcatX5fzCY5aaODpOAmxAAAAAElFTkSuQmCC"}}]);
\ No newline at end of file
diff --git a/static/js/runtime~main.9b84f3be.js b/static/js/runtime~main.9b84f3be.js
new file mode 100644
index 000000000..df07ae6e2
--- /dev/null
+++ b/static/js/runtime~main.9b84f3be.js
@@ -0,0 +1 @@
+!function(e){function c(c){for(var f,a,r=c[0],n=c[1],o=c[2],u=0,l=[];u