oxc-codegen 0.145.0 → 0.147.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/print_js.js +47 -47
- package/dist/print_js_maps.js +53 -53
- package/dist/print_ts.js +69 -69
- package/dist/print_ts_maps.js +77 -77
- package/package.json +7 -5
package/dist/print_ts.js
CHANGED
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
const e=(e,t,n)=>{e.last=n,e.output+=t},t=(e,t)=>{e.output+=t},n={__proto__:null,"**":17,"*":16,"/":16,"%":16,"+":15,"-":15,"<<":14,">>":14,">>>":14,"<":13,">":13,"<=":13,">=":13,instanceof:13,in:13,"==":12,"!=":12,"===":12,"!==":12,"&":11,"^":10,"|":9,"&&":8,"||":7,"??":6},
|
|
2
|
-
`,3),
|
|
3
|
-
`,3);
|
|
1
|
+
Uint8Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,e=>e.charCodeAt(0));const e=(e,t,n)=>{e.last=n,e.output+=t},t=(e,t)=>{e.last=0,e.output+=t},n=(e,t)=>{e.last=0,e.output+=`#`,e.output+=t},r=(e,t)=>{e.output+=t},i={__proto__:null,"**":17,"*":16,"/":16,"%":16,"+":15,"-":15,"<<":14,">>":14,">>>":14,"<":13,">":13,"<=":13,">=":13,instanceof:13,in:13,"==":12,"!=":12,"===":12,"!==":12,"&":11,"^":10,"|":9,"&&":8,"||":7,"??":6},a={__proto__:null,"**":` ** `,"*":` * `,"/":` / `,"%":` % `,"+":` + `,"-":` - `,"<<":` << `,">>":` >> `,">>>":` >>> `,"<":` < `,">":` > `,"<=":` <= `,">=":` >= `,instanceof:` instanceof `,in:` in `,"==":` == `,"!=":` != `,"===":` === `,"!==":` !== `,"&":` & `,"^":` ^ `,"|":` | `,"&&":` && `,"||":` || `,"??":` ?? `},o={__proto__:null,"=":` = `,"+=":` += `,"-=":` -= `,"*=":` *= `,"/=":` /= `,"%=":` %= `,"**=":` **= `,"<<=":` <<= `,">>=":` >>= `,">>>=":` >>>= `,"&=":` &= `,"^=":` ^= `,"|=":` |= `,"&&=":` &&= `,"||=":` ||= `,"??=":` ??= `},s=e=>{switch(e){case`+`:return 12;case`-`:return 14;case`!`:return 10;default:return 3}},c=e=>e===`++`?13:15,l=e=>{for(;e.type===`ParenthesizedExpression`;)e=e.expression;return e},ee=(e,t,n,r)=>{let i={e,precedence:n,ctx:r,leftPrecedence:0,operator:e.operator,wrap:!1,rightPrecedence:0,parent:null};for(;;){te(i,t);let e=l(i.e.left);if(e.type===`BinaryExpression`||e.type===`LogicalExpression`){if(e.type===`BinaryExpression`&&e.left.type===`PrivateIdentifier`){Je(e,t,0),u(i,t);break}i={e,precedence:i.leftPrecedence,ctx:i.ctx,leftPrecedence:0,operator:i.operator,wrap:!1,rightPrecedence:0,parent:i}}else{U(i.e.left,t,i.leftPrecedence,i.ctx),u(i,t);break}}for(;(i=i.parent)!==null;)u(i,t)},te=(t,n)=>{let{e:r}=t,a=r.operator,o=i[a],s=t.precedence>=o&&(!ne(t.operator)||t.precedence!==i[t.operator]);t.operator=a,t.wrap=s||a===`in`&&!!(t.ctx&1),t.wrap&&(e(n,`(`,3),t.ctx&=-2);let c=o-1;if(t.leftPrecedence=c,t.rightPrecedence=c,o===17?t.leftPrecedence=o:t.rightPrecedence=o,a===`??`){let e=l(r.left);e.type===`LogicalExpression`&&e.operator!==`??`&&(t.leftPrecedence=18);let n=l(r.right);n.type===`LogicalExpression`&&n.operator!==`??`&&(t.rightPrecedence=18)}else if(a===`**`){let e=l(r.left);(e.type===`UnaryExpression`||e.type===`AwaitExpression`||e.type===`TSTypeAssertion`||e.type===`Literal`&&(typeof e.value==`number`||e.bigint!=null))&&(t.leftPrecedence=21)}},ne=e=>e===`&&`||e===`||`||e===`??`,u=(t,n)=>{e(n,a[t.operator],3),U(t.e.right,n,t.rightPrecedence,t.ctx),t.wrap&&e(n,`)`,9)},d=t=>{t.last<=2&&e(t,` `,3)},f=(e,t)=>{let n=e.last;n>=11&&re(e,n,t)},re=(t,n,r)=>{(n===12&&(r===12||r===13)||n===14&&(r===14||r===15)||n===11&&r===15)&&e(t,` `,3)},p=t=>{if(t.pendingIndentAsSpace){e(t,` `,3),t.pendingIndentAsSpace=!1;return}let n=t.indentLevel;if(n>0){let{indents:r}=t;e(t,n<r.length?r[n]:ie(t,n),3)}},ie=(e,t)=>{let{indents:n,indentString:r}=e,{length:i}=n,a=n[i-1];for(;i<=t;i++)a+=r,a.charCodeAt(0),n.push(a);return a},m=(t,n)=>{Number.isInteger(n)?n<1e3?e(t,String(n),1):ae(t,n):oe(t,n)},ae=(n,i)=>{let a=String(i);if(i>=1e21){if(se(n,i,a.length-1))return;h(n,a,a.indexOf(`e`));return}let{length:o}=a;if(!se(n,i,o)){if(a.charCodeAt(o-1)===48){let e=1;for(;a.charCodeAt(o-1-e)===48;)e++;let i=String(e);if(i.length+1<e){r(n,a.slice(0,o-e)),r(n,`e`),t(n,i);return}}e(n,a,1)}},oe=(e,n)=>{let i=String(n);if(i.charCodeAt(0)===48){if(i.charCodeAt(2)===48){let n=3;for(;i.charCodeAt(n)===48;)n++;let a=String(i.length-2);if(a.length+2<n-1){r(e,i.slice(n)),r(e,`e-`),t(e,a);return}}t(e,i.slice(1));return}let a=i.indexOf(`e`);if(a===-1){t(e,i);return}h(e,i,a)},h=(e,n,i)=>{let a=n.charCodeAt(i+1)===43?n.slice(i+2):n.slice(i+1);if(i>1){let o=String(Number(a)-(i-2));if(o.length<=a.length){r(e,n[0]),r(e,n.slice(2,i)),r(e,`e`),t(e,o);return}}r(e,n.slice(0,i+1)),t(e,a)},se=(e,n,i)=>{if(i<13)return!1;let a=BigInt(n).toString(16);return a.length+2>=i?!1:(r(e,`0x`),t(e,a),!0)},ce=/[\0\x07\b\v\f\n\r\x1B\\"\u2028\u2029\xA0\uD800-\uDFFF]|<\/script/i,g=(t,n)=>{r(t,`"`),ce.test(n)?le(t,n):r(t,n),e(t,`"`,3)},le=(e,t)=>{let n=0,{length:i}=t;for(let a=0;a<i;a++){let o=null,s=t.charCodeAt(a);switch(s){case 0:if(a+1<i){let e=t.charCodeAt(a+1);if(e>=48&&e<=57){o=`\\x00`;break}}o=`\\0`;break;case 7:o=`\\x07`;break;case 8:o=`\\b`;break;case 11:o=`\\v`;break;case 12:o=`\\f`;break;case 10:o=`\\n`;break;case 13:o=`\\r`;break;case 27:o=`\\x1B`;break;case 92:o=`\\\\`;break;case 34:o=`\\"`;break;case 60:if(/^<\/script/i.test(t.slice(a,a+8))){o=`<\\`;break}continue;case 8232:o=`\\u2028`;break;case 8233:o=`\\u2029`;break;case 160:o=`\\xA0`;break;default:if(s>=55296&&s<=57343){if(s<=56319&&a+1<i){let e=t.charCodeAt(a+1);if(e>=56320&&e<=57343){a++;continue}}o=`\\u`+s.toString(16);break}continue}r(e,t.slice(n,a)),r(e,o),n=a+1}r(e,t.slice(n))},ue=e=>e.includes(`</`)?e.replace(/<\/(script)/gi,`<\\/$1`):e,_=(t,n,r,i)=>{let{value:a}=t;switch(typeof a){case`string`:g(n,a);break;case`number`:de(t,n,r,i);break;case`boolean`:d(n),e(n,a?`true`:`false`,0);break;default:t.regex==null?t.bigint==null?(d(n),e(n,`null`,0)):pe(t,n,r):fe(t,n)}},de=(t,n,i,a)=>{let{value:o}=t;if(a&4&&t.raw!=null){let{raw:r}=t;e(n,r,r[r.length-1]===`.`?3:0);return}if(o>0&&o<1/0)d(n),m(n,o);else if(Number.isNaN(o))d(n),e(n,`NaN`,0);else if(Number.isFinite(o))Object.is(o,0)?(d(n),e(n,`0`,1)):i>=18?(r(n,`(-`),m(n,-o),e(n,`)`,9)):(f(n,14),r(n,`-`),m(n,-o));else{let t=o<0,a=t&&i>=18;a&&e(n,`(`,3),t?(f(n,14),r(n,`-`)):d(n),e(n,`Infinity`,0),a&&e(n,`)`,9)}},fe=(n,i)=>{r(i,`/`),r(i,n.regex.pattern);let{flags:a}=n.regex;a===``?e(i,`/`,2):(r(i,`/`),t(i,a))},pe=(n,i,a)=>{d(i);let o=n.bigint;o.startsWith(`-`)&&a>=18?(r(i,`(`),r(i,o),e(i,`n)`,9)):(r(i,o),t(i,`n`))},me=(t,n,r,i)=>{let a=r>=13;a&&e(n,`(`,3),U(t.expression,n,17,i),e(n,t.type===`TSAsExpression`?` as `:` satisfies `,3),v(t.typeAnnotation,n),a&&e(n,`)`,9)},v=(n,i)=>{switch(n.type){case`TSTypeReference`:y(n.typeName,i),b(n.typeArguments,i);break;case`TSStringKeyword`:d(i),t(i,`string`);break;case`TSNumberKeyword`:d(i),t(i,`number`);break;case`TSBooleanKeyword`:d(i),t(i,`boolean`);break;case`TSAnyKeyword`:d(i),t(i,`any`);break;case`TSVoidKeyword`:d(i),t(i,`void`);break;case`TSUnknownKeyword`:d(i),t(i,`unknown`);break;case`TSNeverKeyword`:d(i),t(i,`never`);break;case`TSUndefinedKeyword`:d(i),t(i,`undefined`);break;case`TSNullKeyword`:d(i),t(i,`null`);break;case`TSObjectKeyword`:d(i),t(i,`object`);break;case`TSSymbolKeyword`:d(i),t(i,`symbol`);break;case`TSBigIntKeyword`:d(i),t(i,`bigint`);break;case`TSIntrinsicKeyword`:d(i),t(i,`intrinsic`);break;case`TSThisType`:d(i),t(i,`this`);break;case`TSLiteralType`:he(n.literal,i);break;case`TSUnionType`:ge(n,i);break;case`TSIntersectionType`:ve(n,i);break;case`TSArrayType`:{let t=x(n.elementType);t&&e(i,`(`,3),v(n.elementType,i),t&&r(i,`)`),e(i,`[]`,9);break}case`TSTypeLiteral`:be(n,i);break;case`TSFunctionType`:Ce(n,i);break;case`TSConstructorType`:n.abstract&&e(i,`abstract `,3),e(i,`new `,3),T(n.typeParameters,i),L(n.params,i),v(C(n.returnType),i);break;case`TSTupleType`:{e(i,`[`,3);let{elementTypes:t}=n,{length:r}=t;for(let n=0;n<r;n++)n>0&&e(i,`, `,3),D(t[n],i);e(i,`]`,9);break}case`TSConditionalType`:we(n,i);break;case`TSInferType`:e(i,`infer `,3),E(n.typeParameter,i);break;case`TSIndexedAccessType`:{let t=x(n.objectType);t&&e(i,`(`,3),v(n.objectType,i),t&&e(i,`)`,9),e(i,`[`,3),v(n.indexType,i),e(i,`]`,9);break}case`TSMappedType`:Te(n,i);break;case`TSTypeOperator`:Ee(n,i);break;case`TSTypePredicate`:De(n,i);break;case`TSTypeQuery`:e(i,`typeof `,3),Oe(n.exprName,i),b(n.typeArguments,i);break;case`TSImportType`:ke(n,i);break;case`TSTemplateLiteralType`:{r(i,"`");let{quasis:t,types:a}=n,{length:o}=t;for(let n=0;n<o;n++)n!==0&&(e(i,"${",3),v(a[n-1],i),r(i,`}`)),r(i,t[n].value.raw);e(i,"`",3);break}case`TSParenthesizedType`:e(i,`(`,3),v(n.typeAnnotation,i),e(i,`)`,9);break;case`TSNamedTupleMember`:D(n,i);break;case`TSQualifiedName`:y(n,i);break;case`TSOptionalType`:case`TSRestType`:D(n,i);break;case`TSJSDocUnknownType`:d(i),t(i,`unknown`);break;case`TSJSDocNullableType`:n.postfix?(v(C(n.typeAnnotation),i),e(i,`?`,5)):(i.last===5&&e(i,` `,3),e(i,`?`,5),v(C(n.typeAnnotation),i));break;case`TSJSDocNonNullableType`:n.postfix?(v(C(n.typeAnnotation),i),e(i,`!`,10)):(e(i,`!`,10),v(C(n.typeAnnotation),i));break;default:throw Error(`Unknown type node: ${n.type}`)}},y=(n,r)=>{n.type===`TSQualifiedName`?(y(n.left,r),e(r,`.`,3),t(r,n.right.name)):n.type===`ThisExpression`?(d(r),e(r,`this`,0)):(d(r),t(r,n.name))},b=(t,n)=>{if(t==null)return;e(n,`<`,4);let{params:r}=t,{length:i}=r;for(let t=0;t<i;t++)t>0&&e(n,`, `,3),v(r[t],n);e(n,`>`,3)},he=(e,t)=>{e.type===`Literal`?_(e,t,0,4):U(e,t,+(e.type===`UnaryExpression`),4)},ge=(t,n)=>{let{types:r}=t,{length:i}=r;for(let t=0;t<i;t++){t>0&&e(n,` | `,3);let i=_e(r[t]);i&&e(n,`(`,3),v(r[t],n),i&&e(n,`)`,9)}},_e=e=>{switch(e.type){case`TSUnionType`:return e.types.length>1;case`TSFunctionType`:case`TSConstructorType`:case`TSConditionalType`:case`TSInferType`:return!0;default:return!1}},ve=(t,n)=>{let{types:r}=t,{length:i}=r;for(let t=0;t<i;t++){t>0&&e(n,` & `,3);let i=ye(r[t]);i&&e(n,`(`,3),v(r[t],n),i&&e(n,`)`,9)}},ye=e=>e.type===`TSIntersectionType`?e.types.length>1:_e(e),x=e=>{switch(e.type){case`TSUnionType`:case`TSIntersectionType`:case`TSFunctionType`:case`TSConstructorType`:case`TSConditionalType`:case`TSInferType`:case`TSTypeOperator`:return!0;default:return!1}},be=(t,n)=>{let{members:i}=t,{length:a}=i;if(a===0){r(n,`{`),e(n,`}`,3);return}e(n,`{
|
|
2
|
+
`,3),n.indentLevel++;for(let t=0;t<a;t++)p(n),xe(i[t],n,4),e(n,`;
|
|
3
|
+
`,3);n.indentLevel--,p(n),e(n,`}`,3)},xe=(t,n,r)=>{switch(t.type){case`TSPropertySignature`:t.readonly&&e(n,`readonly `,3),t.computed?(e(n,`[`,3),U(t.key,n,1,r),e(n,`]`,9)):Se(t.key,n,r),t.optional&&e(n,`?`,5),t.typeAnnotation!=null&&S(t.typeAnnotation,n);break;case`TSIndexSignature`:w(t,n);break;case`TSMethodSignature`:t.kind===`get`?e(n,`get `,3):t.kind===`set`&&e(n,`set `,3),t.computed?(e(n,`[`,3),U(t.key,n,1,r),e(n,`]`,9)):Se(t.key,n,r),t.optional&&e(n,`?`,5),T(t.typeParameters,n),P(t.params,n),t.returnType!=null&&S(t.returnType,n);break;case`TSCallSignatureDeclaration`:T(t.typeParameters,n),P(t.params,n),t.returnType!=null&&S(t.returnType,n);break;case`TSConstructSignatureDeclaration`:e(n,`new `,3),T(t.typeParameters,n),P(t.params,n),t.returnType!=null&&S(t.returnType,n);break;default:throw Error(`Unknown signature type: ${t.type}`)}},Se=(e,r,i)=>{switch(e.type){case`Identifier`:d(r),t(r,e.name);break;case`PrivateIdentifier`:n(r,e.name);break;case`Literal`:typeof e.value==`string`?g(r,e.value):_(e,r,1,i);break;default:U(e,r,1,i)}},S=(t,n)=>{e(n,`: `,3),v(C(t),n)},C=e=>e.type===`TSTypeAnnotation`?e.typeAnnotation:e,w=(n,r)=>{n.static&&e(r,`static `,3),n.readonly&&e(r,`readonly `,3),e(r,`[`,3);let i=n.parameters[0];t(r,i.name),e(r,`: `,3),v(C(i.typeAnnotation),r),e(r,`]: `,3),v(C(n.typeAnnotation),r)},T=(t,n)=>{if(t==null)return;let{params:r}=t,{length:i}=r,a=i>=2;if(e(n,`<`,4),a){n.indentLevel++;for(let t=0;t<i;t++)e(n,t===0?`
|
|
4
4
|
`:`,
|
|
5
|
-
`,3),p(n),
|
|
6
|
-
`,3),n.indentLevel--,p(n)}else{for(let t=0;t<i;t++)t>0&&e(n,`, `,3),
|
|
7
|
-
`,3),
|
|
8
|
-
`,3),
|
|
9
|
-
`,3);
|
|
10
|
-
`,3),
|
|
5
|
+
`,3),p(n),E(r[t],n);e(n,`
|
|
6
|
+
`,3),n.indentLevel--,p(n)}else{for(let t=0;t<i;t++)t>0&&e(n,`, `,3),E(r[t],n);n.isJsx&&e(n,`,`,3)}e(n,`>`,3)},E=(n,i)=>{n.const&&r(i,`const `),n.in&&r(i,`in `),n.out&&r(i,`out `),t(i,n.name.name),n.constraint!=null&&(e(i,` extends `,3),v(n.constraint,i)),n.default!=null&&(e(i,` = `,3),v(n.default,i))},Ce=(e,t)=>{T(e.typeParameters,t),L(e.params,t),v(C(e.returnType),t)},D=(n,r)=>{switch(n.type){case`TSOptionalType`:{let t=x(n.typeAnnotation);t&&e(r,`(`,3),v(n.typeAnnotation,r),t&&e(r,`)`,9),e(r,`?`,5);break}case`TSRestType`:e(r,`...`,3),v(n.typeAnnotation,r);break;case`TSNamedTupleMember`:t(r,n.label.name),n.optional&&e(r,`?`,5),e(r,`: `,3),v(n.elementType,r);break;default:v(n,r)}},we=(t,n)=>{let{checkType:r,extendsType:i}=t,a=r.type===`TSFunctionType`||r.type===`TSConstructorType`||r.type===`TSConditionalType`;a&&e(n,`(`,3),v(r,n),a&&e(n,`)`,9),e(n,` extends `,3);let o=i.type===`TSConditionalType`;o&&e(n,`(`,3),v(i,n),o&&e(n,`)`,9),e(n,` ? `,3),v(t.trueType,n),e(n,` : `,3),v(t.falseType,n)},Te=(t,n)=>{r(n,`{ `);let{readonly:i}=t;i===!0?r(n,`readonly `):i===`+`?r(n,`+readonly `):i===`-`&&r(n,`-readonly `),r(n,`[`),r(n,t.key.name),e(n,` in `,3),v(t.constraint,n),t.nameType!=null&&(e(n,` as `,3),v(t.nameType,n)),r(n,`]`);let{optional:a}=t;a===!0?r(n,`?`):a===`+`?r(n,`+?`):a===`-`&&r(n,`-?`),t.typeAnnotation!=null&&(e(n,`: `,3),v(C(t.typeAnnotation),n)),e(n,` }`,3)},Ee=(n,r)=>{t(r,n.operator),e(r,` `,3);let i=C(n.typeAnnotation),a=i.type,o=a===`TSUnionType`||a===`TSIntersectionType`||a===`TSFunctionType`||a===`TSConstructorType`||a===`TSConditionalType`;o&&e(r,`(`,3),v(i,r),o&&e(r,`)`,9)},De=(n,r)=>{n.asserts&&e(r,`asserts `,3);let{parameterName:i}=n;i.type===`TSThisType`?t(r,`this`):(d(r),t(r,i.name)),n.typeAnnotation!=null&&(e(r,` is `,3),v(C(n.typeAnnotation),r))},Oe=(e,t)=>{e.type===`TSImportType`?ke(e,t):y(e,t)},ke=(t,n)=>{e(n,`import(`,3),g(n,t.source.value),t.options!=null&&(e(n,`, `,3),U(t.options,n,0,4)),e(n,`)`,9),t.qualifier!=null&&(e(n,`.`,3),Ae(t.qualifier,n)),b(t.typeArguments,n)},Ae=(n,r)=>{n.type===`TSQualifiedName`?(Ae(n.left,r),e(r,`.`,3),t(r,n.right.name)):t(r,n.name)},je=(t,n,r,i)=>{let a=r>=18;a&&e(n,`(`,3),n.last===4&&e(n,` `,3),e(n,`<`,4),t.typeAnnotation.type===`TSFunctionType`&&e(n,` `,3),v(t.typeAnnotation,n),e(n,`>`,3),U(t.expression,n,17,i),a&&e(n,`)`,9)},O=(n,r)=>{n.declare&&e(r,`declare `,3);let{kind:i}=n;if(t(r,i),i!==`global`){e(r,` `,3);let{id:t}=n;t.type===`Literal`?g(r,t.value):y(t,r)}let{body:a}=n;if(a==null){e(r,`;`,3);return}e(r,` `,3),Me(a,r)},Me=(t,n)=>{let i=t.body;if(i.length===0){r(n,`{`),e(n,`}`,3);return}e(n,`{
|
|
7
|
+
`,3),n.indentLevel++,Y(i,n),n.indentLevel--,p(n),e(n,`}`,3)},k=(n,i)=>{d(i),n.declare&&e(i,`declare `,3),e(i,`interface `,3),t(i,n.id.name),T(n.typeParameters,i);let a=n.extends;if(a!=null&&a.length>0){e(i,` extends `,3);let{length:t}=a;for(let n=0;n<t;n++){n>0&&e(i,`, `,3);let t=a[n];U(t.expression,i,21,0),b(t.typeArguments,i)}}e(i,` `,3);let o=n.body.body,{length:s}=o;if(s===0){r(i,`{`),e(i,`}`,3);return}e(i,`{
|
|
8
|
+
`,3),i.indentLevel++;for(let t=0;t<s;t++)p(i),xe(o[t],i,0),e(i,`;
|
|
9
|
+
`,3);i.indentLevel--,p(i),e(i,`}`,3)},A=(n,r)=>{n.declare&&e(r,`declare `,3),e(r,`type `,3),t(r,n.id.name),T(n.typeParameters,r),e(r,` = `,3);let i=Ne(n.typeAnnotation);i&&e(r,`(`,3),v(n.typeAnnotation,r),i&&e(r,`)`,9)},Ne=e=>{for(;;)switch(e.type){case`TSTypeReference`:return e.typeArguments==null&&e.typeName.type===`Identifier`&&e.typeName.name===`intrinsic`;case`TSArrayType`:e=e.elementType;break;case`TSIndexedAccessType`:e=e.objectType;break;case`TSUnionType`:case`TSIntersectionType`:if(e.types.length===0)return!1;e=e.types[0];break;case`TSConditionalType`:e=e.checkType;break;default:return!1}},j=(n,i)=>{d(i),n.declare&&e(i,`declare `,3),n.const&&e(i,`const `,3),e(i,`enum `,3),t(i,n.id.name),e(i,` `,3);let{body:a}=n,{members:o}=a,{length:s}=o;if(s===0){r(i,`{`),e(i,`}`,3);return}e(i,`{
|
|
10
|
+
`,3),i.indentLevel++;let c=s-1;for(let t=0;t<s;t++)p(i),Pe(o[t],i),e(i,t===c?`
|
|
11
11
|
`:`,
|
|
12
|
-
`,3);
|
|
13
|
-
`,3),
|
|
14
|
-
`,3),
|
|
15
|
-
`,3);break;case`PropertyDefinition`:case`TSAbstractPropertyDefinition`:
|
|
16
|
-
`,3);break;case`StaticBlock`:
|
|
17
|
-
`,3);break;case`AccessorProperty`:case`TSAbstractAccessorProperty`:
|
|
18
|
-
`,3);break;case`TSIndexSignature`:
|
|
19
|
-
`,3);break;default:throw Error(`Unknown class element type: ${
|
|
20
|
-
`,3),
|
|
12
|
+
`,3);i.indentLevel--,p(i),e(i,`}`,3)},Pe=(n,i)=>{let{id:a}=n;a.type===`Identifier`?(d(i),t(i,a.name)):a.type===`Literal`?g(i,a.value):(a.type===`TemplateLiteral`?(r(i,"[`"),r(i,a.quasis[0].value.raw),e(i,"`",3)):(e(i,`[`,3),U(a,i,1,0)),e(i,`]`,9)),n.initializer!=null&&(e(i,` = `,3),U(n.initializer,i,0,0))},M=(n,r)=>{e(r,`import `,3),n.importKind===`type`&&e(r,`type `,3),t(r,n.id.name),e(r,` = `,3);let i=n.moduleReference;i.type===`TSExternalModuleReference`?(e(r,`require(`,3),g(r,i.expression.value),e(r,`)`,9)):y(i,r)},N=(n,r)=>{let i=!1;n.type===`FunctionExpression`&&(i=(r.last|1)==7),i&&e(r,`(`,3),d(r),n.declare?(e(r,`declare `,3),t(r,n.async?`async function`:`function`)):e(r,n.async?`async function`:`function`,0),n.generator&&e(r,`* `,3);let{id:a}=n;a!=null&&(d(r),t(r,a.name)),T(n.typeParameters,r),P(n.params,r),n.returnType!=null&&S(n.returnType,r),n.body==null?e(r,`;`,3):(e(r,` `,3),I(n.body,r)),i&&e(r,`)`,9)},P=(t,n)=>{if(t.length===0){e(n,`()`,9);return}e(n,`(`,3),F(t,n),e(n,`)`,9)},F=(n,i)=>{let{length:a}=n;for(let o=0;o<a;o++){o>0&&e(i,`, `,3);let a=n[o];if(a.type===`Identifier`&&a.name===`this`){t(i,`this`),a.typeAnnotation!=null&&S(a.typeAnnotation,i);continue}let{decorators:s}=a;s!=null&&s.length>0&&z(s,i),a.type===`TSParameterProperty`?(a.accessibility!=null&&(d(i),r(i,a.accessibility),e(i,` `,3)),a.override&&(d(i),e(i,`override `,3)),a.readonly&&(d(i),e(i,`readonly `,3)),W(a.parameter,i)):W(a,i)}},I=(t,n)=>{let i=t.body;if(i.length===0){r(n,`{`),e(n,`}`,3);return}e(n,`{
|
|
13
|
+
`,3),n.indentLevel++,Y(i,n),n.indentLevel--,p(n),e(n,`}`,3)},L=(t,n)=>{if(t.length===0){e(n,`() => `,3);return}e(n,`(`,3),F(t,n),e(n,`) => `,3)},R=(n,r)=>{let i=!1;n.type===`ClassExpression`&&(i=(r.last|1)==7),i&&e(r,`(`,3);let{decorators:a}=n;a!=null&&a.length>0&&z(a,r),d(r);let o=n.declare,s=n.abstract;o&&e(r,`declare `,3),s&&e(r,`abstract `,3),o||s?t(r,`class`):e(r,`class`,0),n.id!=null&&(e(r,` `,3),t(r,n.id.name)),T(n.typeParameters,r),n.superClass!=null&&(e(r,` extends `,3),U(n.superClass,r,19,0),b(n.superTypeArguments,r));let{implements:c}=n;if(c!=null&&c.length>0){e(r,` implements `,3);let{length:t}=c;for(let n=0;n<t;n++){n>0&&e(r,`, `,3);let t=c[n];U(t.expression,r,21,0),b(t.typeArguments,r)}}e(r,` `,3),Ie(n.body,r),i&&e(r,`)`,9)},z=(t,n)=>{let{length:r}=t;for(let i=0;i<r;i++){let r=t[i];e(n,`@`,3);let{expression:a}=r,o=Fe(a);o&&e(n,`(`,3),U(a,n,0,0),o&&e(n,`)`,9),e(n,` `,3)}},Fe=e=>{for(;;)switch(e.type){case`Identifier`:return!1;case`MemberExpression`:return e.computed;case`CallExpression`:e=e.callee;break;default:return!0}},Ie=(t,n)=>{let{body:i}=t,{length:a}=i;if(a===0){r(n,`{`),e(n,`}`,3);return}e(n,`{
|
|
14
|
+
`,3),n.indentLevel++;for(let t=0;t<a;t++){p(n);let r=i[t];switch(r.type){case`MethodDefinition`:case`TSAbstractMethodDefinition`:Le(r,n),e(n,`
|
|
15
|
+
`,3);break;case`PropertyDefinition`:case`TSAbstractPropertyDefinition`:Re(r,n),e(n,`;
|
|
16
|
+
`,3);break;case`StaticBlock`:ze(r,n),e(n,`
|
|
17
|
+
`,3);break;case`AccessorProperty`:case`TSAbstractAccessorProperty`:Be(r,n),e(n,`;
|
|
18
|
+
`,3);break;case`TSIndexSignature`:w(r,n),e(n,`;
|
|
19
|
+
`,3);break;default:throw Error(`Unknown class element type: ${r.type}`)}}n.indentLevel--,p(n),e(n,`}`,3)},Le=(t,n)=>{let{decorators:i}=t;i!=null&&i.length>0&&z(i,n),t.accessibility!=null&&(d(n),r(n,t.accessibility),e(n,` `,3)),(t.type===`TSAbstractMethodDefinition`||t.abstract)&&(d(n),e(n,`abstract `,3)),t.static&&(d(n),e(n,`static `,3)),t.override&&(d(n),e(n,`override `,3));let{kind:a}=t;a===`get`?(d(n),e(n,`get `,3)):a===`set`&&(d(n),e(n,`set `,3));let o=t.value;o.async&&(d(n),e(n,`async `,3)),o.generator&&e(n,`*`,3),t.computed?(e(n,`[`,3),U(t.key,n,1,0),e(n,`]`,9)):G(t.key,n),t.optional&&e(n,`?`,5),T(o.typeParameters,n),P(o.params,n),o.returnType!=null&&S(o.returnType,n),o.body==null?e(n,`;`,3):(e(n,` `,3),I(o.body,n))},Re=(t,n)=>{let{decorators:i}=t;i!=null&&i.length>0&&z(i,n),t.declare&&(d(n),e(n,`declare `,3)),t.accessibility!=null&&(d(n),r(n,t.accessibility),e(n,` `,3)),(t.type===`TSAbstractPropertyDefinition`||t.abstract)&&(d(n),e(n,`abstract `,3)),t.static&&(d(n),e(n,`static `,3)),t.override&&(d(n),e(n,`override `,3)),t.readonly&&(d(n),e(n,`readonly `,3)),t.computed?(e(n,`[`,3),U(t.key,n,1,0),e(n,`]`,9)):G(t.key,n),t.optional&&e(n,`?`,5),t.definite&&e(n,`!`,10),t.typeAnnotation!=null&&S(t.typeAnnotation,n),t.value!=null&&(e(n,` = `,3),U(t.value,n,1,0))},ze=(t,n)=>{d(n),e(n,`static `,3);let{body:i}=t,{length:a}=i;if(a===0){r(n,`{`),e(n,`}`,3);return}e(n,`{
|
|
20
|
+
`,3),n.indentLevel++;for(let e=0;e<a;e++)X(i[e],n);n.indentLevel--,p(n),e(n,`}`,3)},Be=(n,i)=>{let{decorators:a}=n;a!=null&&a.length>0&&z(a,i),(n.type===`TSAbstractAccessorProperty`||n.abstract)&&(d(i),e(i,`abstract `,3)),n.accessibility!=null&&(d(i),r(i,n.accessibility),e(i,` `,3)),n.static&&(d(i),e(i,`static `,3)),n.override&&(d(i),e(i,`override `,3)),d(i),t(i,`accessor`),n.computed?(e(i,` [`,3),U(n.key,i,1,0),e(i,`]`,9)):(e(i,` `,3),G(n.key,i)),n.definite&&e(i,`!`,10),n.typeAnnotation!=null&&S(n.typeAnnotation,i),n.value!=null&&(e(i,` = `,3),U(n.value,i,1,0))},B=(t,n)=>{let{openingElement:i}=t;r(n,`<`),V(i.name,n),b(i.typeArguments,n);let{attributes:a}=i,{length:o}=a;for(let t=0;t<o;t++){r(n,` `);let i=a[t];i.type===`JSXSpreadAttribute`?(e(n,`{...`,3),U(i.argument,n,1,0),e(n,`}`,3)):Ve(i,n)}let{closingElement:s}=t;if(s==null){e(n,` />`,3);return}r(n,`>`);let{children:c}=t,l=c.length;for(let e=0;e<l;e++)We(c[e],n);r(n,`</`),V(s.name,n),e(n,`>`,3)},V=(e,t)=>{switch(e.type){case`JSXIdentifier`:r(t,e.name);break;case`JSXMemberExpression`:V(e.object,t),r(t,`.`),V(e.property,t);break;case`JSXNamespacedName`:r(t,e.namespace.name),r(t,`:`),r(t,e.name.name);break;case`ThisExpression`:r(t,`this`);break;default:throw Error(`Unknown JSX name type: ${e.type}`)}},Ve=(e,t)=>{let{name:n}=e;n.type===`JSXNamespacedName`?(r(t,n.namespace.name),r(t,`:`),r(t,n.name.name)):r(t,n.name);let{value:i}=e;i!=null&&(r(t,`=`),He(i,t))},He=(e,t)=>{switch(e.type){case`Literal`:{let{raw:n}=e,i=n==null?String(e.value):n.slice(1,-1),a=i.includes(`"`)?`'`:`"`;r(t,a),r(t,i),r(t,a);break}case`JSXExpressionContainer`:Ue(e,t);break;case`JSXElement`:B(e,t);break;case`JSXFragment`:H(e,t);break;default:throw Error(`Unknown JSX attribute value type: ${e.type}`)}},Ue=(t,n)=>{e(n,`{`,3),t.expression.type!==`JSXEmptyExpression`&&U(t.expression,n,0,0),r(n,`}`)},H=(t,n)=>{r(n,`<>`);let{children:i}=t,{length:a}=i;for(let e=0;e<a;e++)We(i[e],n);e(n,`</>`,3)},We=(t,n)=>{switch(t.type){case`JSXText`:r(n,t.raw==null?t.value:t.raw);break;case`JSXExpressionContainer`:Ue(t,n);break;case`JSXElement`:B(t,n);break;case`JSXFragment`:H(t,n);break;case`JSXSpreadChild`:e(n,`{...`,3),U(t.expression,n,0,0),r(n,`}`);break;default:throw Error(`Unknown JSX child type: ${t.type}`)}},U=(n,i,a,o)=>{switch(n.type){case`Identifier`:d(i),t(i,n.name);break;case`MemberExpression`:Ge(n,i,o);break;case`CallExpression`:Ke(n,i,a,o);break;case`Literal`:_(n,i,a,o);break;case`BinaryExpression`:n.left.type===`PrivateIdentifier`?Je(n,i,a):ee(n,i,a,o);break;case`LogicalExpression`:ee(n,i,a,o);break;case`ObjectExpression`:Ye(n,i);break;case`ArrayExpression`:Ze(n,i);break;case`AssignmentExpression`:Qe(n,i,a,o);break;case`UpdateExpression`:$e(n,i,a,o);break;case`UnaryExpression`:et(n,i,a,o);break;case`ConditionalExpression`:tt(n,i,a,o);break;case`SequenceExpression`:nt(n,i,a,o);break;case`ArrowFunctionExpression`:rt(n,i,a,o);break;case`FunctionExpression`:N(n,i);break;case`ThisExpression`:d(i),e(i,`this`,0);break;case`Super`:d(i),e(i,`super`,0);break;case`NewExpression`:it(n,i,a);break;case`TemplateLiteral`:at(n,i);break;case`TaggedTemplateExpression`:U(n.tag,i,19,o&2),b(n.typeArguments,i),at(n.quasi,i);break;case`ClassExpression`:R(n,i);break;case`AwaitExpression`:st(n,i,a,o);break;case`YieldExpression`:ct(n,i,a);break;case`ImportExpression`:lt(n,i,a,o);break;case`MetaProperty`:d(i),r(i,n.meta.name),r(i,`.`),t(i,n.property.name);break;case`ChainExpression`:ut(n,i,a,o);break;case`ParenthesizedExpression`:{let{expression:t}=n,r=l(t);r.type===`FunctionExpression`||r.type===`ArrowFunctionExpression`?(e(i,`(`,3),U(r,i,0,0),e(i,`)`,9)):U(t,i,a,o);break}case`JSXElement`:B(n,i);break;case`JSXFragment`:H(n,i);break;case`TSAsExpression`:case`TSSatisfiesExpression`:me(n,i,a,o);break;case`TSNonNullExpression`:U(n.expression,i,19,o),e(i,`!`,10);break;case`TSInstantiationExpression`:U(n.expression,i,18,o),b(n.typeArguments,i);break;case`TSTypeAssertion`:je(n,i,a,o);break;default:throw Error(`Unknown expression type: ${n.type}`)}},Ge=(r,i,a)=>{let{object:o}=r;if(r.computed){let t=l(o),n=t.type===`Identifier`&&t.name===`let`;n&&e(i,`(`,3),U(o,i,19,a&2),n&&e(i,`)`,9),r.optional&&e(i,`?.`,3),e(i,`[`,3),U(r.property,i,0,0),e(i,`]`,9)}else{U(o,i,19,a&2),r.optional?e(i,`?`,5):i.last===1&&e(i,` `,3),e(i,`.`,3);let{property:s}=r;s.type===`PrivateIdentifier`?n(i,s.name):t(i,s.name)}},Ke=(t,n,i,a)=>{let o=i>=20||!!(a&2);o&&(r(n,`(`),(n.last|1)!=7&&(n.last=3)),U(t.callee,n,19,0),t.optional&&e(n,`?.`,3),b(t.typeArguments,n),qe(t,t.arguments,n),o&&e(n,`)`,9)},qe=(t,n,i)=>{let{length:a}=n;if(a===0){r(i,`(`),e(i,`)`,9);return}e(i,`(`,3);for(let t=0;t<a;t++){t>0&&e(i,`, `,3);let r=n[t];r.type===`SpreadElement`?(e(i,`...`,3),U(r.argument,i,1,0)):U(r,i,1,0)}e(i,`)`,9)},Je=(t,r,i)=>{let a=i>=13;a&&e(r,`(`,3),n(r,t.left.name),e(r,` in `,3),U(t.right,r,12,1),a&&e(r,`)`,9)},Ye=(t,n)=>{let r=(n.last-1|1)==7;r&&e(n,`(`,3);let{properties:i}=t,{length:a}=i,o=a>1;if(e(n,`{`,3),o){n.indentLevel++;for(let t=0;t<a;t++)e(n,t>0?`,
|
|
21
21
|
`:`
|
|
22
|
-
`,3),p(n),
|
|
23
|
-
`,3),n.indentLevel--,p(n)}else a===1&&(e(n,` `,3),
|
|
22
|
+
`,3),p(n),Xe(i[t],n);e(n,`
|
|
23
|
+
`,3),n.indentLevel--,p(n)}else a===1&&(e(n,` `,3),Xe(i[0],n),e(n,` `,3));e(n,`}`,3),r&&e(n,`)`,9)},Xe=(n,r)=>{if(n.type===`SpreadElement`){e(r,`...`,3),U(n.argument,r,1,0);return}let{key:i,value:a}=n;if(a.type===`FunctionExpression`||a.type===`TSEmptyBodyFunctionExpression`){let{kind:t}=n,o=t===`get`,s=o||t===`set`;if(s&&e(r,o?`get `:`set `,3),n.method||s){a.async&&(d(r),e(r,`async `,3)),a.generator&&e(r,`*`,3),n.computed?(e(r,`[`,3),U(i,r,1,0),e(r,`]`,9)):G(i,r),T(a.typeParameters,r),P(a.params,r),a.returnType!=null&&S(a.returnType,r),a.body!=null&&(e(r,` `,3),I(a.body,r));return}}let o=!1,s=null;if(!n.computed&&i.type===`Identifier`){if(i.name===`__proto__`)o=n.shorthand;else{let e=l(a);e.type===`Identifier`&&i.name===e.name&&(o=!0,s=e)}}let{computed:c}=n;!c&&i.type===`Literal`&&typeof i.value==`number`&&(i.value<0||Object.is(i.value,-0)||!Number.isFinite(i.value))&&(c=!0),o?s===null?U(l(a),r,1,0):(d(r),t(r,s.name)):(c?(e(r,`[`,3),U(i,r,1,0),e(r,`]`,9)):G(i,r),e(r,`: `,3),U(a,r,1,0))},Ze=(t,n)=>{let{elements:r}=t,{length:i}=r,a=i>2;e(n,`[`,3),a&&n.indentLevel++;for(let t=0;t<i;t++){a?(e(n,t===0?`
|
|
24
24
|
`:`,
|
|
25
25
|
`,3),p(n)):t!==0&&e(n,`, `,3);let o=r[t];o!=null&&(o.type===`SpreadElement`?(e(n,`...`,3),U(o.argument,n,1,0)):U(o,n,1,0)),t===i-1&&o==null&&e(n,`,`,3)}a&&(e(n,`
|
|
26
|
-
`,3),n.indentLevel--,p(n)),e(n,`]`,
|
|
27
|
-
`)),
|
|
28
|
-
`,3);return}let
|
|
29
|
-
`,3)},q=(
|
|
30
|
-
`,3);break;case`FunctionDeclaration`:case`TSDeclareFunction`:
|
|
26
|
+
`,3),n.indentLevel--,p(n)),e(n,`]`,9)},Qe=(t,n,r,i)=>{let{left:a}=t,s=r>=4;!s&&a.type===`ObjectPattern`&&(s=(n.last-1|1)==7),s&&e(n,`(`,3),K(a,n),e(n,o[t.operator],3),U(t.right,n,1,i),s&&e(n,`)`,9)},$e=(t,n,r,i)=>{let a=r>=(t.prefix?18:19);a&&e(n,`(`,3);let o=c(t.operator);t.prefix?(f(n,o),e(n,t.operator,o),U(t.argument,n,18,i)):(U(t.argument,n,19,i),f(n,o),e(n,t.operator,o)),a&&e(n,`)`,9)},et=(t,n,r,i)=>{let a=r>=18;a&&e(n,`(`,3);let{operator:o}=t,c=!1;if(o.length>1)d(n),e(n,o,0),e(n,` `,3),c=o===`delete`&&t.argument.type===`Literal`&&t.argument.value===1/0;else{let t=s(o);f(n,t),t===10&&n.last===4&&(t=11),e(n,o,t)}c&&e(n,`(0, `,3),U(t.argument,n,17,i),c&&e(n,`)`,9),a&&e(n,`)`,9)},tt=(t,n,r,i)=>{let a=r>=5,o=0;a?e(n,`(`,3):o=i&1;let s=5;{let e=l(t.test).type;(e===`TSAsExpression`||e===`TSSatisfiesExpression`)&&(s=13)}U(t.test,n,s,o),e(n,` ? `,3),U(t.consequent,n,3,0),e(n,` : `,3),U(t.alternate,n,3,o),a&&e(n,`)`,9)},nt=(t,n,r,i)=>{let a=r>=1;a&&e(n,`(`,3);let o=i&-3,{expressions:s}=t,{length:c}=s;for(let t=0;t<c;t++)t>0&&e(n,`, `,3),U(s[t],n,0,o);a&&e(n,`)`,9)},rt=(t,n,r,i)=>{let a=r>=4,o=a?i&-2:i;a&&e(n,`(`,3),t.async&&(d(n),e(n,`async `,3)),T(t.typeParameters,n);let{returnType:s}=t;s==null?L(t.params,n):(P(t.params,n),S(s,n),e(n,` => `,3));let{body:c}=t;c.type===`BlockStatement`?I(c,n):(n.last=8,U(c,n,1,o)),a&&e(n,`)`,9)},it=(t,n,r)=>{let i=r>=21;i&&e(n,`(`,3),d(n),e(n,`new `,3),U(t.callee,n,20,2),b(t.typeArguments,n),qe(t,t.arguments,n),i&&e(n,`)`,9)},at=(t,n)=>{r(n,"`");let{quasis:i,expressions:a}=t,{length:o}=a,s=i[0];r(n,ot(s));for(let t=0;t<o;t++){e(n,"${",3),U(a[t],n,0,0),r(n,`}`);let o=i[t+1],s=ot(o);s.length,r(n,s)}e(n,"`",3)},ot=e=>{let{raw:t}=e.value;return t.includes(`\r`)&&(t=t.replace(/\r\n?/g,`
|
|
27
|
+
`)),ue(t)},st=(t,n,r,i)=>{let a=r>=18;a&&e(n,`(`,3),d(n),e(n,`await `,3),U(t.argument,n,17,i),a&&e(n,`)`,9)},ct=(t,n,r)=>{let i=r>=4;i&&e(n,`(`,3),d(n),e(n,`yield`,0),t.delegate&&e(n,`*`,3),t.argument!=null&&(e(n,` `,3),U(t.argument,n,3,0)),i&&e(n,`)`,9)},lt=(n,i,a,o)=>{let s=a>=20||!!(o&2);s&&e(i,`(`,3),d(i),e(i,`import`,0),n.phase!=null&&(r(i,`.`),t(i,n.phase)),e(i,`(`,3),U(n.source,i,1,0),n.options!=null&&(e(i,`, `,3),U(n.options,i,1,0)),e(i,`)`,9),s&&e(i,`)`,9)},ut=(t,n,r,i)=>{r>=19||i&2?(e(n,`(`,3),U(t.expression,n,0,0),e(n,`)`,9)):U(t.expression,n,r,i)},W=(n,r)=>{switch(n.type){case`Identifier`:d(r),t(r,n.name),n.optional&&e(r,`?`,5),n.typeAnnotation!=null&&S(n.typeAnnotation,r);break;case`ObjectPattern`:dt(n,r),n.optional&&e(r,`?`,5),n.typeAnnotation!=null&&S(n.typeAnnotation,r);break;case`ArrayPattern`:pt(n,r),n.optional&&e(r,`?`,5),n.typeAnnotation!=null&&S(n.typeAnnotation,r);break;case`AssignmentPattern`:W(n.left,r),e(r,` = `,3),U(n.right,r,1,0);break;case`RestElement`:e(r,`...`,3),W(n.argument,r),n.typeAnnotation!=null&&S(n.typeAnnotation,r);break;default:throw Error(`Unknown binding pattern type: ${n.type}`)}},dt=(t,n)=>{let{properties:r}=t,{length:i}=r;if(i===0){e(n,`{}`,3);return}e(n,`{ `,3);for(let t=0;t<i;t++){t>0&&e(n,`, `,3);let i=r[t];i.type===`RestElement`?(e(n,`...`,3),W(i.argument,n)):ft(i,n)}e(n,` }`,3)},ft=(t,n)=>{let{key:r,value:i}=t,a=!1;!t.computed&&r.type===`Identifier`&&(i.type===`Identifier`&&r.name===i.name||i.type===`AssignmentPattern`&&i.left.type===`Identifier`&&r.name===i.left.name)&&(a=!0),a||(t.computed?(e(n,`[`,3),U(r,n,1,0),e(n,`]`,9)):G(r,n),e(n,`: `,3)),W(i,n)},G=(e,r)=>{switch(e.type){case`Identifier`:d(r),t(r,e.name);break;case`PrivateIdentifier`:n(r,e.name);break;case`Literal`:typeof e.value==`string`?g(r,e.value):_(e,r,1,0);break;default:U(e,r,1,0)}},pt=(t,n)=>{let{elements:r}=t,{length:i}=r,a=null;if(i>0){let e=r[i-1];e!=null&&e.type===`RestElement`&&(a=e,i--)}e(n,`[`,3);for(let t=0;t<i;t++){t!==0&&e(n,`, `,3);let o=r[t];o!=null&&W(o,n),t===i-1&&(o==null||a!==null)&&e(n,`,`,3)}a!==null&&(e(n,` `,3),W(a,n)),e(n,`]`,9)},K=(e,n)=>{switch(e.type){case`Identifier`:d(n),t(n,e.name);break;case`MemberExpression`:Ge(e,n,0);break;case`ObjectPattern`:mt(e,n);break;case`ArrayPattern`:_t(e,n);break;case`TSAsExpression`:case`TSSatisfiesExpression`:U(e,n,13,0);break;case`TSTypeAssertion`:U(e,n,18,0);break;default:U(e,n,1,0)}},mt=(t,n)=>{e(n,`{`,3);let{properties:r}=t,{length:i}=r;for(let t=0;t<i;t++){t>0&&e(n,`, `,3);let i=r[t];i.type===`RestElement`?(e(n,`...`,3),K(i.argument,n)):ht(i,n)}e(n,`}`,3)},ht=(n,r)=>{if(n.shorthand){let{value:i}=n;i.type===`AssignmentPattern`?(d(r),t(r,i.left.name),e(r,` = `,3),U(i.right,r,1,0)):(d(r),t(r,i.name))}else{let{key:t}=n;n.computed?(e(r,`[`,3),U(t,r,1,0),e(r,`]`,9)):G(t,r),e(r,`: `,3),gt(n.value,r)}},gt=(t,n)=>{t.type===`AssignmentPattern`?(K(t.left,n),e(n,` = `,3),U(t.right,n,1,0)):K(t,n)},_t=(t,n)=>{let{elements:r}=t,{length:i}=r,a=null;if(i>0){let e=r[i-1];e!=null&&e.type===`RestElement`&&(a=e,i--)}e(n,`[`,3);for(let t=0;t<i;t++){t!==0&&e(n,`, `,3);let o=r[t];o!=null&>(o,n),t===i-1&&(o==null||a!==null)&&e(n,`,`,3)}a!==null&&(i>0&&e(n,` `,3),e(n,`...`,3),K(a.argument,n)),e(n,`]`,9)},vt=(n,i)=>{p(i),d(i),e(i,`import`,0),n.importKind===`type`&&t(i,` type`),n.phase!=null&&(r(i,` `),t(i,n.phase));let{specifiers:a}=n,{length:o}=a;if(o===0){e(i,` `,3),g(i,n.source.value),q(n.attributes,i),e(i,`;
|
|
28
|
+
`,3);return}let s=!1;for(let n=0;n<o;n++){let r=a[n];switch(r.type){case`ImportDefaultSpecifier`:s?(e(i,` },`,3),s=!1):n===0?e(i,` `,3):e(i,`, `,3),d(i),e(i,r.local.name,0),n===o-1&&e(i,` `,3);break;case`ImportNamespaceSpecifier`:s?(e(i,` },`,3),s=!1):n===0?e(i,` `,3):e(i,`, `,3),e(i,`* as `,3),t(i,r.local.name),e(i,` `,3);break;default:{s?e(i,`, `,3):(n!==0&&e(i,`,`,3),s=!0,e(i,` { `,3)),r.importKind===`type`&&e(i,`type `,3);let a=J(r.imported,i),{local:o}=r;a!==o.name&&(e(i,` as `,3),t(i,o.name));break}}}e(i,s?` } from `:`from `,3),g(i,n.source.value),q(n.attributes,i),e(i,`;
|
|
29
|
+
`,3)},q=(n,i)=>{if(n==null)return;let{length:a}=n;if(a!==0){r(i,` `),e(i,`with { `,3);for(let r=0;r<a;r++){r>0&&e(i,`, `,3);let a=n[r],{key:o}=a;o.type===`Identifier`?t(i,o.name):g(i,o.value),e(i,`: `,3),g(i,a.value.value)}e(i,` }`,3)}},J=(e,n)=>e.type===`Identifier`?(d(n),t(n,e.name),e.name):(g(n,e.value),e.value),yt=(t,n)=>{p(n),e(n,`export `,3);let{declaration:r}=t;if(r!=null){switch(r.type){case`VariableDeclaration`:Z(r,n,0),e(n,`;
|
|
30
|
+
`,3);break;case`FunctionDeclaration`:case`TSDeclareFunction`:N(r,n),e(n,`
|
|
31
31
|
`,3);break;case`ClassDeclaration`:R(r,n),e(n,`
|
|
32
|
-
`,3);break;case`TSModuleDeclaration`:
|
|
33
|
-
`,3);break;case`TSInterfaceDeclaration`:
|
|
34
|
-
`,3);break;case`TSEnumDeclaration`:
|
|
35
|
-
`,3);break;case`TSTypeAliasDeclaration`:
|
|
36
|
-
`,3);break;case`TSImportEqualsDeclaration`:
|
|
37
|
-
`,3);break;default:throw Error(`Unknown export declaration type: ${r.type}`)}return}t.exportKind===`type`&&e(n,`type `,3),e(n,`{`,3);let{specifiers:i}=t,{length:a}=i;if(a>0){e(n,` `,3);for(let t=0;t<a;t++){t>0&&e(n,`, `,3);let r=i[t];r.exportKind===`type`&&e(n,`type `,3),J(r.local,n)!==(r.exported.type===`Identifier`?r.exported.name:r.exported.value)&&(e(n,` as `,3),J(r.exported,n))}e(n,` `,3)}e(n,`}`,3),t.source!=null&&(e(n,` from `,3),
|
|
38
|
-
`,3)},
|
|
39
|
-
`,3)},
|
|
32
|
+
`,3);break;case`TSModuleDeclaration`:O(r,n),e(n,`
|
|
33
|
+
`,3);break;case`TSInterfaceDeclaration`:k(r,n),e(n,`
|
|
34
|
+
`,3);break;case`TSEnumDeclaration`:j(r,n),e(n,`
|
|
35
|
+
`,3);break;case`TSTypeAliasDeclaration`:A(r,n),e(n,`;
|
|
36
|
+
`,3);break;case`TSImportEqualsDeclaration`:M(r,n),e(n,`;
|
|
37
|
+
`,3);break;default:throw Error(`Unknown export declaration type: ${r.type}`)}return}t.exportKind===`type`&&e(n,`type `,3),e(n,`{`,3);let{specifiers:i}=t,{length:a}=i;if(a>0){e(n,` `,3);for(let t=0;t<a;t++){t>0&&e(n,`, `,3);let r=i[t];r.exportKind===`type`&&e(n,`type `,3),J(r.local,n)!==(r.exported.type===`Identifier`?r.exported.name:r.exported.value)&&(e(n,` as `,3),J(r.exported,n))}e(n,` `,3)}e(n,`}`,3),t.source!=null&&(e(n,` from `,3),g(n,t.source.value),q(t.attributes,n)),e(n,`;
|
|
38
|
+
`,3)},bt=(t,n)=>{p(n),e(n,t.exportKind===`type`?`export type *`:`export *`,3),t.exported!=null&&(e(n,` as `,3),J(t.exported,n)),e(n,` from `,3),g(n,t.source.value),q(t.attributes,n),e(n,`;
|
|
39
|
+
`,3)},xt=(t,n)=>{p(n),e(n,`export default `,3);let{declaration:r}=t;switch(r.type){case`FunctionDeclaration`:case`TSDeclareFunction`:N(r,n),e(n,`
|
|
40
40
|
`,3);break;case`ClassDeclaration`:R(r,n),e(n,`
|
|
41
|
-
`,3);break;case`TSInterfaceDeclaration`:
|
|
41
|
+
`,3);break;case`TSInterfaceDeclaration`:k(r,n),e(n,`
|
|
42
42
|
`,3);break;default:n.last=6,U(r,n,1,0),e(n,`;
|
|
43
|
-
`,3)}},
|
|
44
|
-
`,3)),Y(
|
|
45
|
-
`,3),a++);break}for(;a<i;a++)X(
|
|
46
|
-
`,3)},X=(
|
|
47
|
-
`,3);break;case`BlockStatement`:p(
|
|
48
|
-
`,3);break;case`IfStatement`:p(
|
|
49
|
-
`,3);break;case`ForStatement`:
|
|
50
|
-
`,3);break;case`ContinueStatement`:p(
|
|
51
|
-
`,3);break;case`TryStatement`:
|
|
52
|
-
`,3);break;case`ForInStatement`:
|
|
53
|
-
`,3);break;case`LabeledStatement`:p(
|
|
54
|
-
`,3);break;case`ImportDeclaration`:
|
|
55
|
-
`,3);break;case`TSModuleDeclaration`:p(
|
|
56
|
-
`,3);break;case`TSInterfaceDeclaration`:p(
|
|
57
|
-
`,3);break;case`TSTypeAliasDeclaration`:p(
|
|
58
|
-
`,3);break;case`TSEnumDeclaration`:p(
|
|
59
|
-
`,3);break;case`TSImportEqualsDeclaration`:p(
|
|
60
|
-
`,3);break;case`TSDeclareFunction`:p(
|
|
61
|
-
`,3);break;case`TSExportAssignment`:p(
|
|
62
|
-
`,3);break;case`TSNamespaceExportDeclaration`:p(
|
|
63
|
-
`,3);break;default:throw Error(`Unknown statement type: ${
|
|
64
|
-
`,3)},Z=(
|
|
65
|
-
`,3),
|
|
66
|
-
`:` `,3)):
|
|
67
|
-
`,3),
|
|
68
|
-
`:` `,3)):(e(
|
|
69
|
-
`,3)):
|
|
70
|
-
`,3)},
|
|
71
|
-
`,3)},
|
|
72
|
-
`,3);return}e(
|
|
73
|
-
`,3),
|
|
74
|
-
`,3)},
|
|
75
|
-
`,3),n.indentLevel++;for(let e=0;e<i;e++)X(r[e],n);n.indentLevel--},
|
|
43
|
+
`,3)}},St=(t,n)=>{t.hashbang!=null&&(r(n,`#!`),r(n,t.hashbang.value),e(n,`
|
|
44
|
+
`,3)),Y(t.body,n)},Y=(t,n)=>{let{length:i}=t;if(i===0)return;let a=0,o=t[0];for(;o.type===`ExpressionStatement`;)if(o.directive!=null){if(Ct(o,n),++a>=i)return;o=t[a]}else{let t=l(o.expression);t.type===`Literal`&&typeof t.value==`string`&&(n.indentLevel>0||n.pendingIndentAsSpace,p(n),r(n,`(`),g(n,t.value),e(n,`);
|
|
45
|
+
`,3),a++);break}for(;a<i;a++)X(t[a],n)},Ct=(t,n)=>{p(n);let{directive:i}=t,a=`"`,{length:o}=i;for(let e=0;e<o;e++){let t=i[e];if(t===`"`){a=`'`;break}if(t===`'`)break;t===`\\`&&e++}r(n,a),r(n,i),r(n,a),e(n,`;
|
|
46
|
+
`,3)},X=(n,r)=>{switch(n.type){case`ExpressionStatement`:wt(n,r);break;case`VariableDeclaration`:p(r),Z(n,r,0),e(r,`;
|
|
47
|
+
`,3);break;case`BlockStatement`:p(r),Q(n,r),e(r,`
|
|
48
|
+
`,3);break;case`IfStatement`:p(r),Tt(n,r);break;case`ReturnStatement`:Dt(n,r);break;case`FunctionDeclaration`:p(r),N(n,r),e(r,`
|
|
49
|
+
`,3);break;case`ForStatement`:Nt(n,r);break;case`WhileStatement`:jt(n,r);break;case`DoWhileStatement`:Mt(n,r);break;case`SwitchStatement`:kt(n,r);break;case`BreakStatement`:p(r),d(r),e(r,`break`,0),n.label!=null&&(e(r,` `,3),t(r,n.label.name)),e(r,`;
|
|
50
|
+
`,3);break;case`ContinueStatement`:p(r),d(r),e(r,`continue`,0),n.label!=null&&(e(r,` `,3),t(r,n.label.name)),e(r,`;
|
|
51
|
+
`,3);break;case`TryStatement`:Ot(n,r);break;case`ThrowStatement`:p(r),d(r),e(r,`throw `,3),U(n.argument,r,0,0),e(r,`;
|
|
52
|
+
`,3);break;case`ForInStatement`:Pt(n,r);break;case`ForOfStatement`:Ft(n,r);break;case`ClassDeclaration`:p(r),R(n,r),e(r,`
|
|
53
|
+
`,3);break;case`LabeledStatement`:p(r),d(r),t(r,n.label.name),e(r,`:`,3),$(n.body,r);break;case`EmptyStatement`:p(r),e(r,`;
|
|
54
|
+
`,3);break;case`ImportDeclaration`:vt(n,r);break;case`ExportNamedDeclaration`:yt(n,r);break;case`ExportDefaultDeclaration`:xt(n,r);break;case`ExportAllDeclaration`:bt(n,r);break;case`WithStatement`:p(r),d(r),e(r,`with(`,3),U(n.object,r,0,0),e(r,`)`,9),$(n.body,r);break;case`DebuggerStatement`:p(r),d(r),e(r,`debugger;
|
|
55
|
+
`,3);break;case`TSModuleDeclaration`:p(r),O(n,r),e(r,`
|
|
56
|
+
`,3);break;case`TSInterfaceDeclaration`:p(r),k(n,r),e(r,`
|
|
57
|
+
`,3);break;case`TSTypeAliasDeclaration`:p(r),A(n,r),e(r,`;
|
|
58
|
+
`,3);break;case`TSEnumDeclaration`:p(r),j(n,r),e(r,`
|
|
59
|
+
`,3);break;case`TSImportEqualsDeclaration`:p(r),M(n,r),e(r,`;
|
|
60
|
+
`,3);break;case`TSDeclareFunction`:p(r),N(n,r),e(r,`
|
|
61
|
+
`,3);break;case`TSExportAssignment`:p(r),e(r,`export = `,3),U(n.expression,r,0,0),e(r,`;
|
|
62
|
+
`,3);break;case`TSNamespaceExportDeclaration`:p(r),e(r,`export as namespace `,3),t(r,n.id.name),e(r,`;
|
|
63
|
+
`,3);break;default:throw Error(`Unknown statement type: ${n.type}`)}},wt=(t,n)=>{n.indentLevel>0||n.pendingIndentAsSpace,p(n),n.last=7,U(t.expression,n,0,0),e(n,`;
|
|
64
|
+
`,3)},Z=(n,r,i)=>{d(r),n.declare?(e(r,`declare `,3),t(r,n.kind)):e(r,n.kind,0);let{declarations:a}=n,{length:o}=a;o>0&&e(r,` `,3);for(let n=0;n<o;n++){n>0&&e(r,`, `,3);let o=a[n],{id:s}=o;o.definite?(d(r),t(r,s.name),e(r,`!`,10),s.typeAnnotation!=null&&S(s.typeAnnotation,r)):W(s,r),o.init!=null&&(e(r,` = `,3),U(o.init,r,1,i))}},Q=(t,n)=>{let{body:i}=t,{length:a}=i;if(a===0){r(n,`{`),e(n,`}`,3);return}e(n,`{
|
|
65
|
+
`,3),n.indentLevel++;for(let e=0;e<a;e++)X(i[e],n);n.indentLevel--,p(n),e(n,`}`,3)},Tt=(n,i)=>{d(i),e(i,`if (`,3),U(n.test,i,0,0);let{consequent:a,alternate:o}=n;a.type===`BlockStatement`?(e(i,`) `,3),Q(a,i),e(i,o==null?`
|
|
66
|
+
`:` `,3)):Et(a)?(r(i,`) `),e(i,`{
|
|
67
|
+
`,3),i.indentLevel++,X(a,i),i.indentLevel--,p(i),e(i,`}`,3),e(i,o==null?`
|
|
68
|
+
`:` `,3)):(e(i,`)`,9),$(a,i),o!=null&&p(i)),o!=null&&(d(i),t(i,`else`),o.type===`BlockStatement`?(e(i,` `,3),Q(o,i),e(i,`
|
|
69
|
+
`,3)):o.type===`IfStatement`?(e(i,` `,3),Tt(o,i)):$(o,i))},Et=e=>{for(;;)switch(e.type){case`IfStatement`:if(e.alternate==null)return!0;e=e.alternate;break;case`ForStatement`:case`ForOfStatement`:case`ForInStatement`:case`WhileStatement`:case`WithStatement`:case`LabeledStatement`:e=e.body;break;default:return!1}},Dt=(t,n)=>{p(n),d(n);let{argument:r}=t;r==null?e(n,`return`,0):(e(n,`return `,3),U(r,n,0,0)),e(n,`;
|
|
70
|
+
`,3)},Ot=(n,r)=>{p(r),d(r),e(r,`try `,3),Q(n.block,r);let{handler:i}=n;i!=null&&(t(r,` catch`),i.param!=null&&(e(r,` (`,3),W(i.param,r),e(r,`)`,9)),e(r,` `,3),Q(i.body,r)),n.finalizer!=null&&(e(r,` finally `,3),Q(n.finalizer,r)),e(r,`
|
|
71
|
+
`,3)},kt=(t,n)=>{p(n),d(n),e(n,`switch (`,3),U(t.discriminant,n,0,0),e(n,`) `,3);let{cases:i}=t,{length:a}=i;if(a===0){r(n,`{`),e(n,`}
|
|
72
|
+
`,3);return}e(n,`{
|
|
73
|
+
`,3),n.indentLevel++;for(let e=0;e<a;e++)At(i[e],n);n.indentLevel--,p(n),e(n,`}
|
|
74
|
+
`,3)},At=(t,n)=>{p(n),t.test==null?e(n,`default`,0):(e(n,`case `,3),U(t.test,n,0,0)),e(n,`:`,3);let{consequent:r}=t,{length:i}=r;if(i===1){$(r[0],n);return}e(n,`
|
|
75
|
+
`,3),n.indentLevel++;for(let e=0;e<i;e++)X(r[e],n);n.indentLevel--},jt=(t,n)=>{p(n),d(n),e(n,`while (`,3),U(t.test,n,0,0),e(n,`)`,9),$(t.body,n)},Mt=(t,n)=>{p(n),d(n),e(n,`do`,0);let{body:r}=t;r.type===`BlockStatement`?(e(n,` `,3),Q(r,n),e(n,` `,3)):r.type===`EmptyStatement`?(p(n),e(n,`;
|
|
76
76
|
`,3)):(e(n,`
|
|
77
77
|
`,3),n.indentLevel++,X(r,n),n.indentLevel--,p(n)),e(n,`while (`,3),U(t.test,n,0,0),e(n,`);
|
|
78
|
-
`,3)},
|
|
78
|
+
`,3)},Nt=(t,n)=>{p(n),d(n),e(n,`for (`,3);let{init:r}=t;r!=null&&(r.type===`VariableDeclaration`?Z(r,n,1):U(r,n,0,1));let{test:i,update:a}=t;i==null?e(n,`;`,3):(e(n,`; `,3),U(i,n,0,0)),a==null?e(n,`;)`,9):(e(n,`; `,3),U(a,n,0,0),e(n,`)`,9)),$(t.body,n)},Pt=(t,n)=>{p(n),d(n),e(n,`for (`,3);let{left:r}=t;r.type===`VariableDeclaration`?Z(r,n,1):K(r,n),e(n,` in `,3),U(t.right,n,0,0),e(n,`)`,9),$(t.body,n)},Ft=(n,r)=>{p(r),d(r),e(r,`for`,0),n.await&&t(r,` await`),e(r,` (`,3);let{left:i}=n;if(i.type===`VariableDeclaration`)Z(i,r,0);else{let t=l(i),a=It(i)||!n.await&&t.type===`Identifier`&&t.name===`async`;a&&e(r,`(`,3),K(i,r),a&&e(r,`)`,9)}e(r,` of `,3),U(n.right,r,1,0),e(r,`)`,9),$(n.body,r)},It=e=>{for(;;)switch(e.type){case`Identifier`:return e.name===`let`;case`MemberExpression`:if(e.computed){let t=l(e.object);if(t.type===`Identifier`&&t.name===`let`)return!1}e=e.object;break;case`ParenthesizedExpression`:e=e.expression;break;default:return!1}},$=(t,n)=>{t.type===`BlockStatement`?(e(n,` `,3),Q(t,n),e(n,`
|
|
79
79
|
`,3)):t.type===`EmptyStatement`?e(n,`;
|
|
80
|
-
`,3):(n.pendingIndentAsSpace=!0,X(t,n))},
|
|
80
|
+
`,3):(n.pendingIndentAsSpace=!0,X(t,n))},Lt=(e,t,n)=>(e.type===`Program`?St(e,t):X(e,t),{code:t.output,map:null});export{Lt as printSync};
|