rollup-plugin-inline-ts
Version:
A Rollup plugin to process TypeScript code inside <script lang="ts"> tags.
1 lines • 1.69 kB
JavaScript
async function e(e,t){let n={},r={jsc:{parser:{syntax:`typescript`}}},i={loader:`ts`},a={target:99};if(e==`oxc`){let{transform:e}=await import(`oxc-transform`);return r=>e(`_.ts`,r,t??n).code}else if(e==`swc`){let{transformSync:e}=await import(`@swc/core`);return n=>e(n,t??r).code}else if(e==`esbuild`){let{transformSync:e}=await import(`esbuild`);return n=>e(n,t??i).code}else if(e==`typescript`){let{transpile:e}=await import(`typescript`);return n=>e(n,t??a)}else throw Error(`Unsupported engine: ${e}`)}function t(t){let n={engine:`oxc`,extensions:[`.html`],tsScriptAttr:`lang="ts"`,jsScriptAttr:``,keepComponentImports:!0,logPrefix:`[inline-ts]`,debug:!1},r={...n,...t},i=r.logPrefix?` ${r.logPrefix}`:``,a=r.tsScriptAttr.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`),o=RegExp(`(<script.*?\\s+${a}(?:\\s+.*?|)>)([\\s\\S]*?)<\\/script>`,`g`),s=/import\s+([\w$]+)\s+from\s+["']([^"']+\.(\w+)(?:\?[^"']*)?)["'];?/g,c=r.extensions.map(e=>e.replaceAll(/\W/g,``)),l;return{name:`inline-ts`,async buildStart(){l=await e(r.engine,r.options)},transform(e,t){try{let n=t.split(`.`).pop();if(!c.includes(n))return e;let a=r.debug?performance.now():0,o=u(e);return r.debug&&console.info(`✅${i} \u001B[32mDone\u001B[0m: ${t} in ${(performance.now()-a).toFixed(2)} ms`),o}catch(t){return console.error(`❌${i}`,t),e}}};function u(e){return e.replace(o,(e,t,n)=>{let i=[];r.keepComponentImports&&(n=n.replaceAll(s,(e,t,n,r)=>{if(e=e.trimEnd().endsWith(`;`)?e:`${e};`,c.includes(r)){let n=`void ${t};`;return i.push(n),`${e} ${n}`}return e}));let o=l(n);if(r.keepComponentImports)for(let e of i)o=o.replace(e,``);return`${t.replace(a,r.jsScriptAttr)}\n${o}\n</script>`})}}export{t as default};