UNPKG

@senx/discovery-code

Version:

Discovery Code Editor

1 lines 5.11 kB
class e{static mergeDeep(...t){const s={};let a=0;for(;a<t.length;a++)e.merge(t[a],s,!0);return s}static unsescape(e){return e.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&")}static merge(t,s,a){for(const r in t)t.hasOwnProperty(r)&&(s[r]=a&&"[object Object]"===Object.prototype.toString.call(t[r])?e.mergeDeep(s[r],t[r]):t[r])}static toArray(e){const t=[];return Object.keys(e).forEach((s=>t.push(e[s]))),t}static httpPost(e,t,s){return new Promise(((a,r)=>{const n=new XMLHttpRequest,i={};n.onreadystatechange=()=>{n.getAllResponseHeaders().split("\n").forEach((e=>{if(""!==e.trim()){const t=e.split(":");i[t[0].trim()]=t[1].trim().replace("\r","")}})),4===n.readyState&&200===n.status?a({data:n.responseText,headers:i,status:{ops:parseInt(i["x-warp10-ops"],10),elapsed:parseInt(i["x-warp10-elapsed"],10),fetched:parseInt(i["x-warp10-fetched"],10)}}):4===n.readyState&&n.status>=400?r({statusText:n.statusText,status:n.status,url:e,message:`line #${i["x-warp10-error-line"]}: ${i["x-warp10-error-message"]}`,detail:{mess:i["x-warp10-error-message"],line:i["x-warp10-error-line"]}}):4===n.readyState&&0===n.status&&r({statusText:e+" is unreachable",status:404,url:e,message:e+" is unreachable",detail:{mess:e+" is unreachable",line:-1}})},n.open("POST",e,!0),n.setRequestHeader("Content-Type","text/plain; charset=utf-8"),Object.keys(s||{}).filter((e=>"accept"!==e.toLowerCase()&&"content-type"!==e.toLowerCase())).forEach((e=>n.setRequestHeader(e,s[e]))),n.send(t)}))}static isArray(e){return e&&"object"==typeof e&&e instanceof Array&&"number"==typeof e.length&&"function"==typeof e.splice&&!e.propertyIsEnumerable("length")}}class t{constructor(){this.buttons={class:""},this.execButton={class:"",label:"Execute"},this.datavizButton={class:"",label:"Visualize"},this.hover=!0,this.readOnly=!1,this.messageClass="",this.errorClass="",this.addLocalHeader=!1,this.editor={quickSuggestionsDelay:10,quickSuggestions:!0,tabSize:2,minLineNumber:10,enableDebug:!1,rawResultsReadOnly:!1},this.codeReview={enabled:!1,readonly:!1,cancelButton:{class:"",label:"Cancel"},addButton:{class:"",label:"Add comment"},replyButton:{label:"Reply"},removeButton:{label:"Remove"},editButton:{label:"Edit"}}}}class s{constructor(){this.quickSuggestionsDelay=10,this.quickSuggestions=!0,this.tabSize=2,this.minLineNumber=10,this.enableDebug=!1,this.rawResultsReadOnly=!1}}class a{constructor(e,t){this.statement=e,this.offset=t}}class r{static findMacrosBeforePosition(e,t,s){for(let r=0;r<e.length;r++){if(e[r]instanceof a&&e[r].offset==t){let t=r-1,n=0,i=[];for(;t>=0&&n<s&&!(e[t]instanceof a);)"number"!=typeof e[t]&&(i.push([e[t][0],e[t][e[t].length-1]]),n++),t--;return i}if("number"==typeof e[r]);else{let a=this.findMacrosBeforePosition(e[r],t,s);if(null!==a)return a}}return null}static parseWarpScriptStatements(e,t=!1){let s=0,a=[];for(;s<e.length-1;){if("<"==e.charAt(s)&&"'"==e.charAt(s+1)){let t=e.substring(s,e.length).split("\n"),a=0;for(;a<t.length&&"'>"!=t[a].trim();)s+=t[a].length+1,a++;s+=t[a].length+1}if("/"==e.charAt(s)&&"*"==e.charAt(s+1)){for(s++;s<e.length-1&&("*"!=e.charAt(s)||"/"!=e.charAt(s+1));)s++;s+=2}if("/"==e.charAt(s)&&"/"==e.charAt(s+1))for(s++;s<e.length-1&&"\n"!=e.charAt(s);)s++;if("'"==e.charAt(s)){let t=s;for(s++;s<e.length&&"'"!=e.charAt(s)&&"\n"!=e.charAt(s);)s++;s++,a.push(e.substring(t,s).replace("\r",""))}if('"'==e.charAt(s)){let t=s;for(s++;s<e.length&&'"'!=e.charAt(s)&&"\n"!=e.charAt(s);)s++;s++,a.push(e.substring(t,s).replace("\r",""))}if("<"==e.charAt(s)&&"%"==e.charAt(s+1)&&(a.push("<%"),s+=2),"%"==e.charAt(s)&&">"==e.charAt(s+1)&&(a.push("%>"),s+=2)," "!=e.charAt(s)&&"\n"!=e.charAt(s)){let r=s;for(;s<e.length&&" "!=e.charAt(s)&&"\n"!=e.charAt(s);)s++;a.push(t?[e.substring(r,s).replace("\r",""),r,s]:e.substring(r,s).replace("\r",""))}s++}return a}static extractSpecialComments(e){let t={},s=e.split("\n");t.listOfMacroInclusion=[],t.listOfMacroInclusionRange=[];for(let e=0;e<s.length;e++){let a=s[e];if(a.startsWith("//")){let s,r=RegExp(/\/\/\s*@(\w*)\s*(.*)$/g);for(;s=r.exec(a.replace("\r",""));){let r=s[2];switch(s[1]){case"endpoint":t.endpoint=r;break;case"localmacrosubstitution":t.localmacrosubstitution="true"===r.trim().toLowerCase();break;case"timeunit":["us","ms","ns"].indexOf(r.trim())>-1&&(t.timeunit=r.trim());break;case"preview":switch(r.toLowerCase().substring(0,4)){case"none":t.displayPreviewOpt="X";break;case"gts":t.displayPreviewOpt="G";break;case"imag":t.displayPreviewOpt="I";break;case"json":t.displayPreviewOpt="J";break;case"disc":t.displayPreviewOpt="D";break;default:t.displayPreviewOpt=""}break;case"include":let s=r.trim();if(s.startsWith("macro:")){s=s.substring(6).trim(),t.listOfMacroInclusion.push(s);let r={startLineNumber:e,startColumn:3,endLineNumber:e,endColumn:a.trim().length};t.listOfMacroInclusionRange.push(r)}break;case"theme":t.theme=r.trim().toLowerCase()}}}else if(a.trim().length>0)break}return t}static IsWsLitteralString(e){return e.length>=2&&(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))}}export{t as C,s as E,e as U,r as W}