UNPKG

escaya-codegen

Version:

lightweight and blazing fast JavaScript code generator from an EScaya-compliant AST

2 lines (1 loc) 14.8 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).escayaCodegen={})}(this,(function(e){"use strict";function n(e,n,t){let r="[";const a=e.elements.length;if(a>0)for(let i=0;i<a;i++)r+=f(e.elements[i],n,t),i!==a-1&&"Elison"!==e.elements[i].type&&(r+=","+n.space);return r+="]",r}function t(e){return e.name}function r(e,n,t){return f(e.left,n,t)+n.space+"="+n.space+f(e.right,n,t)}function a(e,n,t){let r="{";const{directives:a,leafs:i}=e;if((i.length||a.length)>0){r+=n.lineEnd;const{length:e}=a;if(e>0){const u=l(n.indent,n.currentIndent++);let c=e-1;for(let i=0;i<e;)i===c&&(t|=8),r+=u+n.indent+f(a[i],n,t),++i<e&&(r+=";"+n.lineEnd);n.currentIndent--,r+=u+(8&t&&0===i.length?"":";")+n.lineEnd}i.length>0&&(r+=function(e,n,t){const r=l(n.indent,n.currentIndent++);let a="";if(e.length>0){let i=e.length-1;for(let u=0;u<e.length;u++)u===i&&(t|=8),a+=r+n.indent+f(e[u],n,t)+n.lineEnd;a+=r}return n.currentIndent--,a}(i,n,8^(8|t)))}return r+="}",r}const i=[(e,n,t,r)=>105===r?function(e,n,t){return p(e.value,t)}(e,0,t):function(e,n,t){return(e.static?"static ":"")+f(e.method,n,t)}(e,n,t),(e,t,r)=>{switch(e.type.charCodeAt(3)){case 97:return n(e,t,r);case 108:return function(e){return JSON.stringify(e.value)}(e);case 73:return function(e,n,t){return"for"+n.space+"("+f(e.initializer,n,t|(null!==e.initializer.isConst||"ForBinding"===e.initializer.type?1:0))+" in "+f(e.expression,n,t)+") "+f(e.statement,n,t)}(e,t,r);case 79:return function(e,n,t){return"for"+(e.await?" await":"")+n.space+"("+f(e.initializer,n,t|(null!==e.initializer.isConst||"ForBinding"===e.initializer.type?1:0))+" of "+f(e.expression,n,t)+") "+f(e.statement,n,t)}(e,t,r);case 111:return function(e,n,t){let r=null!==e.defaultBinding?e.defaultBinding.name:"";return null!==e.nameSpaceImport?r+(e.defaultBinding?", ":"")+"*"+n.space+"as "+e.nameSpaceImport.name:null!==e.namedImports?r+(e.defaultBinding?", ":"")+f(e.namedImports,n,t):r}(e,t,r);default:return function(e,n,t){return e.operator.length>2?e.operator+" "+f(e.operand,n,t):e.operator+("!+-~".includes(e.operator)&&"++"!==e.operand.operator&&"+"!==e.operand.operator&&"-"!==e.operand.operator&&"--"!==e.operand.operator?"":n.space)+f(e.operand,n,t)}(e,t,r)}},(e,n,t)=>{switch(e.type.charCodeAt(0)){case 66:return function(e,n,t){return s(e.leafs,n,8^(8|t))}(e,n,t);case 67:return function(e,n,t){let r="";const a=e.expressions.length;for(let i=0;i<a;)r+=f(e.expressions[i],n,t),++i<a&&(r+=","+n.space);return r}(e,n,t);case 79:return function(e,n,t){return f(e.member,n,t)+"?."+f(e.chain,n,t)}(e,n,t);case 73:return function(e){return null===e.name?e.binding.name:e.name.name+" as "+e.binding.name}(e);default:return r(e,n,t)}},(e,n,t)=>{switch(e.type.charCodeAt(2)){case 97:return function(e,n,t){return"class"+(e.name?" "+f(e.name,n,t)+n.space:n.space)+(e.heritage?"extends "+f(e.heritage,n,t):"")+s(e.elements,n,8^(8|t))}(e,n,t);case 112:return";";default:return function(e,n,t){return"for"+n.space+"("+(e.variableDeclarationList?"var "+o(e.initializer,n,1|t):null!==e.initializer?f(e.initializer,n,t|(null!==e.isConst?1:0)):"")+";"+(e.incrementor?f(e.incrementor,n,t):"")+";"+(e.condition?f(e.condition,n,t):"")+") "+f(e.statement,n,t)}(e,n,t)}},(e,t,r)=>{switch(e.type.charCodeAt(2)){case 103:return function(e){return e.value+"n"}(e);case 101:return function(e,n,t){return e.operator+f(e.operand,n,t)}(e,t,r);case 114:return n(e,t,r);default:return function(e,n,t){return"with ("+f(e.expression,n,t)+")"+n.space+f(e.statement,n,t)}(e,t,r)}},(e,n,t,r)=>111===r?function(e,n,t){return"var "+o(e.declarations,n,t)}(e,n,t):function(e,n,t){return"..."+f(e.argument,n,t)}(e,n,t),(e,n,t)=>{switch(e.type.charCodeAt(4)){case 116:return function(e,n,t){return(e.async?"async ":"")+"function"+(e.generator?"*"+n.space:"")+(e.name?" "+f(e.name,n,t):"")+"("+o(e.params,n,t)+")"+n.space+f(e.contents,n,t)}(e,n,t);case 69:return"this";case 119:return function(e,n,t){return"throw "+f(e.expression,n,t)+c(t)}(e,n,t);case 101:return function(e,n,t){return"while"+n.space+"("+f(e.expression,n,t)+")"+n.space+f(e.statement,n,t)}(e,n,t);case 103:return function(e,n,t){return"..."+f(e.argument,n,t)}(e,n,t);default:return function(e,n,t){const r=e.argument;return"yield"+(e.delegate?n.space+"*":"")+(r?("NumericLiteral"===r.type||"IdentifierReference"===r.type||"FloatingPointLiteral"===r.type?" ":n.space)+f(r,n,t):"")}(e,n,t)}},(e,n,t)=>{switch(e.type.charCodeAt(6)){case 77:return"import.meta";case 67:return function(e,n,t){return"import("+f(e.import,n,t)+")"}(e,n,t);case 109:return function(e,n,t){return f(e.left,n,t)+n.space+e.operator+n.space+f(e.right,n,t)}(e,n,t);case 103:return r(e,n,t);default:return function(e,n,t){return(e.async?"async ":"")+"function"+(e.generator?"*":"")+(e.name?" "+f(e.name,n,t):n.space)+"("+o(e.params,n,t)+")"+n.space+f(e.contents,n,t)}(e,n,t)}},(e,n,t,r)=>{switch(r){case 97:return function(e,n,t){return(null!==e.chain?f(e.chain,n,t):"")+"("+o(e.arguments,n,t)+")"}(e,n,t);case 120:return function(e){return null===e.moduleExportName&&null===e.namedBinding?"*":"* as "+e.namedBinding.name}(e);default:return function(e,n,t){return"new "+f(e.expression,n,t)+(16&t||!e.arguments?o(e.arguments,n,t):"("+o(e.arguments,n,t)+")")}(e,n,t)}},(e,n,t,r)=>function(e,n,t){return null!==e.declaration?"export "+f(e.declaration,n,t):null!==e.exportFromClause?"export "+f(e.exportFromClause,n,t)+" from "+p(e.fromClause.value,t)+c(t):"export {"+o(e.namedExports,n,t)+"}"+(null!==e.fromClause?" from "+p(e.fromClause.value,t):"")}(e,n,t),(e,n,r)=>{switch(e.type.charCodeAt(8)){case 117:return function(e,n,t){return"catch"+n.space+(e.binding?"("+f(e.binding,n,t)+")"+n.space:"")+f(e.block,n,8^(8|t))}(e,n,r);case 97:return function(e,n,t){return"return"+(e.expression?n.space+f(e.expression,n,1024|t):"")+c(t)}(e,n,r);case 101:return t(e);case 76:return function(e){return"`"+e.value+"`"}(e);case 69:return function(e,n,t){return e.value+(e.expression?"${"+f(e.expression,n,t)+"}":"")}(e,n,r);default:return","}},(e,n,t,r)=>101===r?function(e,n,t){return f(e.binding,n,t)+(e.initializer?n.space+"="+n.space+f(e.initializer,n,t):"")}(e,n,t):function(e,n,t){return f(e.expression,n,t)+c(t)}(e,n,t),e=>78===e.type.charCodeAt(0)?"new.target":";",(e,n,t,r)=>97===r?function(e,n,t){return"{"+o(e.importsList,n,t)+"}"}(e,n,t):function(e,n,t){return"if"+n.space+"("+f(e.expression,n,t)+")"+n.space+(e.alternate?f(e.consequent,n,8^(8|t))+n.space+"else "+f(e.alternate,n,t):f(e.consequent,n,t))}(e,n,t),(e,n,r,a)=>101===a?function(e,n,t){return(null!==e.chain?f(e.chain,n,t):"")+(e.computed?"["+f(e.property,n,t)+"]":(null!==e.chain&&"OptionalChain"===e.chain.type?".":"")+f(e.property,n,t))}(e,n,r):t(e),(e,n,t)=>{switch(e.type.charCodeAt(2)){case 103:return function(e,n,t){return f(e.member,n,t)+f(e.literal,n,t)}(e,n,t);case 108:return function(e,n,t){return f(e.expression,n,t)+"("+o(e.arguments,n,t)+")"}(e,n,t);default:return function(e,n,t){const r=l(n.indent,n.currentIndent++);let a="{";const i=e.properties.length,u=r+n.indent,c=","+n.lineEnd;if(i>0){a+=n.lineEnd;for(let r=0;r<i;r+1)a+=u+f(e.properties[r],n,t),++r<i&&(a+=c);a+=n.lineEnd+r}return a+="}",n.currentIndent--,a}(e,n,t)}},(e,n,t)=>114===e.type.charCodeAt(2)?function(e,n,t){return"var "+o(e.declarations,n,1^(1|t))+(1&t||8&t?"":";")}(e,n,t):function(e,n,t){return f(e.label,n,t)+":"+n.space+f(e.labelledItem,n,t)}(e,n,t),()=>{},(e,n,t)=>function(e,n,t){return f(e.binding,n,t)+(e.initializer?n.space+"="+n.space+f(e.initializer,n,t):"")}(e,n,t),()=>{},(e,n,t)=>function(e,n,t){return"debugger"+c(t)}(0,0,t),(e,n,t)=>{switch(e.type.charCodeAt(2)){case 109:return function(e,n,t){const r=f(e.member,n,t);return r+(e.computed?"["+f(e.expression,n,t)+"]":("FloatingPointLiteral"===e.member.type&&r.indexOf(".")<0?".":"")+"."+e.expression.name)}(e,n,t);case 106:return function(e,n,t){let r="{";const a=e.properties.length;if(a>0)for(let i=0;i<a;)r+=f(e.properties[i],n,t),++i<a&&(r+=","+n.space);return r+="}",r}(e,n,t);case 112:return function(e,n,t){return"export default "+f(e.declaration,n,t)+c(t)}(e,n,t);default:return function(e,n,t){return(e.getter?"get ":"")+(e.setter?"set ":"")+(e.async?"async ":"")+(e.generator?"*":"")+(e.name.expression?"["+f(e.name.expression,n,t)+"]":f(e.name,n,t))+"("+(e.getter?"":e.setter?f(e.propertySetParameterList,n,t):o(e.uniqueFormalParameters,n,t))+")"+n.space+f(e.contents,n,t)}(e,n,t)}},(e,n,t,r)=>98===r?function(e,n,t){let r="{";const a=e.properties.length;if(a>0)for(let i=0;i<a;)r+=f(e.properties[i],n,t),++i<a&&(r+=","+n.space);return r+="}",r}(e,n,t):function(e,n,t){return"("+f(e.expression,n,t)+")"}(e,n,t),(e,n,r)=>{switch(e.type.charCodeAt(2)){case 109:return function(e,n,t){let r="`";for(let a=0;a<e.elements.length;a++)r+=f(e.elements[a],n,t);return r+="`",r}(e,n,r);case 120:return function(e,n,t){return(e.isConst?"const":"let")+" "+o(e.declarations,n,1^(1|t))+(1&t||8&t?"":";")}(e,n,r);case 112:return function(e){return null===e.binding?e.name.name:e.name.name+" as "+e.binding.name}(e);default:return t(e)}},(e,n,r)=>{switch(e.type.charCodeAt(2)){case 110:return t(e);case 97:return function(e,n,t){return(128&t&&1024&t?" ":"")+"await "+f(e.expression,n,1024^(1024|t))}(e,n,r);case 115:return function(e,n,t){return f(e.operand,n,t)+e.operator}(e,n,r);case 111:return function(e,n,t){const r=""+e.value;return 128&t&&"0"===r.charAt(0)?r.slice(1):JSON.stringify(e.value)}(e,0,r);case 112:return function(e,n,t){return"super"+(e.computed?n.space+"["+f(e.super,n,t)+"]":"."+f(e.super,n,t))}(e,n,r);default:return function(e,n,t){const r=l(n.indent,n.currentIndent++),a=r+n.indent+n.indent;n.currentIndent++;let i="switch"+n.space+"("+f(e.expression,n,t)+")"+n.space+"{"+n.lineEnd;const{clauses:u}=e;for(let e=0;e<u.length;e++){const c=u[e];"CaseClause"===c.type?i+=r+n.indent+"case "+f(c.expression,n,t)+":"+n.lineEnd:i+=r+n.indent+"default:"+n.lineEnd;const s=c.leafs;for(let e=0;e<s.length;e++)i+=a+f(s[e],n,t)+n.lineEnd}return n.currentIndent-=2,i+=r+"}",i}(e,n,r)}},(e,n,t)=>{switch(e.type.charCodeAt(0)){case 66:return function(e,n,t){const{operator:r,left:a,right:i}=e,u=a.type;return f(a,n,t)+(128&t&&"in"===r&&("RegularExpressionLiteral"===u||"IdentifierReference"===u||"NumericLiteral"===u||"FloatingPointLiteral"===u)?" ":n.space)+r+(128&t&&"in"===r&&"IdentifierReference"===i.type?" ":n.space)+f(i,n,t)}(e,n,t);case 70:return a(e,n,8^(8|t));default:return function(e,n,t){return p(e.value,t)}(e,0,t)}},(e,n,t,r)=>111===r?function(e,n,t){return f(e.shortCircuit,n,t)+n.space+"?"+n.space+f(e.consequent,n,t)+n.space+":"+n.space+f(e.alternate,n,t)}(e,n,t):function(e,n,t){return"..."+f(e.argument,n,t)}(e,n,t),(e,n,t,r)=>{switch(r){case 105:return function(e,n,t){return"..."+f(e.argument,n,t)}(e,n,t);case 111:return function(e,n,t){return"["+f(e.expression,n,t)+"]"}(e,n,t);default:return function(e){return JSON.stringify(e.value)}(e)}},(e,n,t,r)=>{switch(r){case 114:return function(e,n,t){return"break"+(e.label?n.space+f(e.label,n,t):"")+c(t)}(e,n,t);case 117:return function(e,n,t){return"super("+o(e.arguments,n,t)+")"}(e,n,t);case 109:return function(e,n,t){return null!==e.moduleSpecifier?"import "+p(e.fromClause.value,t):"import "+f(e.importClause,n,t)+" from "+p(e.fromClause.value,t)}(e,n,t);default:return function(e,n,t){return"class "+(e.name?f(e.name,n,t):"")+(e.heritage?" extends "+f(e.heritage,n,t):"")+n.space+s(e.elements,n,8^(8|t))}(e,n,t)}},(e,n,t)=>{switch(e.type.charCodeAt(0)){case 82:return function(e,n){return"/"+e.pattern+"/"+e.flag+n.space}(e,n);case 79:return function(e,n,t){return f(e.chain,n,t)}(e,n,t);default:return function(e,n,t){return"..."+f(e.argument,n,t)}(e,n,t)}},(e,t,r)=>{switch(e.type.charCodeAt(0)){case 84:return function(e,n,t){return"try "+f(e.block,n,8^(8|t))+(e.catchClause?n.space+f(e.catchClause,n,t):"")+(e.finalizer?" finally "+f(e.finalizer,n,t):"")}(e,t,r);case 65:return n(e,t,r);case 78:return"null";case 83:return function(e,n,t){return"..."+f(e.argument,n,t)}(e,t,r);case 67:return function(e,n,t){return"continue"+(e.label?n.space+f(e.label,n,t):"")+c(t)}(e,t,r);default:return function(e,n,t){return f(e.key,n,t)+":"+n.space+f(e.value,n,t)}(e,t,r)}},(e,n,t)=>65===e.type.charCodeAt(0)?function(e,n,t){return(e.async?"async"+n.space:"")+(e.arrowParameters?"("+o(e.params,n,t)+")":32&t?"("+f(e.params,n,t)+")":f(e.params,n,t))+n.space+"=>"+n.space+f(e.contents,n,t)}(e,n,t):function(e,n,t){return"do"+n.space+f(e.statement,n,8^(8|t))+" while"+n.space+"("+f(e.expression,n,t)+")"+c(t)}(e,n,t),()=>{}],u=[0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function c(e){return 4!=(4&e)&&8&e?"":";"}function s(e,n,t){const r=l(n.indent,n.currentIndent++);let a="{";if(e.length>0){a+=n.lineEnd;let i=e.length-1;for(let u=0;u<e.length;u++)u===i&&(t|=8),a+=r+n.indent+f(e[u],n,t)+n.lineEnd;a+=r}return a+="}",n.currentIndent--,a}function o(e,n,t){let r="";for(let a=0;a<e.length;a+1)r+=f(e[a],n,t),++a<e.length&&(r+=","+n.space);return r}function l(e,n){if(n<1)return"";let t="";for(;n>1;)1&n&&(t+=e),n>>=1,e+=e;return t+=e,t}function f(e,n,t){const r=e.type,a=r.charCodeAt(1);return i[r.length^a-96](e,n,t,a)}function p(e,n,t){let r,a="",i=768&n;for(let t=0;t<e.length;t++)if(r=e.charCodeAt(t),2&u[r])a+="\\",92===r?a+="\\":10===r&&(a+="n"),13===r&&(a+="r");else if(512&n&&r<32||!(i||r>=32&&r<=126))switch(a+="\\",r){case 8:a+="b";break;case 12:a+="f";break;case 9:a+="t";break;default:if(0===r&&0==(1&u[e.charCodeAt(t+1)]))a+="0";else if(11===r)a+="x0B";else{const e=r.toString(16).toUpperCase();a+=512&n||r>65519?"u"+"0000".slice(e.length)+e:"x"+"00".slice(e.length)+e}}else a+=String.fromCharCode(r);const c=64&n?"'":'"';return c+a+c}e.generate=function(e,n){let t="",r=" ",a="\n",i=" ",u=0,c=0;if(null!=n)if(n.minify)u|=128,r=a="",i="";else if(n.json&&(u|=512),!1===n.doubleQuotes&&(u|=64),n.disallowStringEscape&&(u|=256),n.semicolons&&(u|=4),n.arrowParens&&(u|=32),n.parentheses&&(u|=16),n.tabs&&(r="\t"),n.removeWhiteSpace&&(r=""),n.tabWidth&&(c=n.tabWidth),n.endOfLine){const e=n.endOfLine;"lf"===e&&(a="\n"),"crlf"===e&&(a="\n\r"),"cr"===e&&(a="\r"),"none"===e&&(a="")}const s=function(e,n,t,r){return{lineEnd:n,space:e,currentIndent:r,indent:t}}(r,a,i,c),o=l(s.indent,s.currentIndent),{directives:p,leafs:d}=e;let m=-1;if(p.length>0){m=p.length-1;for(let n=0;n<p.length;)n===m&&(u|=8),t+=o+f(e.directives[n],s,u),++n<p.length&&(t+=";"+s.lineEnd);t+=o+(8&u&&0===d.length?"":";")+s.lineEnd}m=d.length-1;for(let e=0;e<d.length;e++)e===m&&(u|=8),t+=o+f(d[e],s,u)+s.lineEnd;return t},Object.defineProperty(e,"__esModule",{value:!0})}));