@unbound-app/rollup-plugin-hermes 1.2.0 → 1.3.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.
Files changed (2) hide show
  1. package/dist/index.js +2 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("fs/promises"),r=require("child_process"),i=require("crypto"),t=require("path"),s=require("fs"),n=require("os"),o=require("./manifest");async function compile(o,a,l){let c="win32"===process.platform?".exe":"",d=(0,t.resolve)(a,process.platform,"hermesc"+c);if(!(0,s.existsSync)(d))return o.warn(`The hermesc binary is either not supported for your OS or cannot be found at ${d}. Skipping.`),null;let m=(0,t.join)((0,n.tmpdir)(),"hermesc");(0,s.existsSync)(m)||await (0,e.mkdir)(m);let u=(0,t.join)(m,(0,i.randomBytes)(8).readUint32LE(0)+".bundle"),f=["--emit-binary","--out",u,"-Wno-direct-eval","-Wno-undefined-variable",l],{code:p,stderr:h}=await new Promise((e,i)=>{let t=(0,r.spawn)(d,f,{shell:!0}),s="";t.stdout.setEncoding("utf8"),t.stdout.on("data",o.debug),t.stderr.setEncoding("utf8"),t.stderr.on("data",e=>s+=e),t.on("error",i),t.on("close",r=>e({code:r,stderr:s}))});if(0!==p){let e=h.trim()||`hermesc exited with code ${p}.`;o.error(`hermesc failed to compile:
2
- ${e}`)}h.trim()&&o.warn(h.trim());let w=await (0,e.readFile)(u);return await (0,e.rm)(u,{force:!0}),w}function hermesc(r){let a;return{name:"hermesc",async generateBundle(l,c,d){let m=l.file?.split("/");if(!m)return;let u=m.pop(),f=u.split(".").shift(),p=c[u];if(!p)return;a??=r?.hermesc?[{version:null,dir:r.hermesc}]:await (0,o.resolveHermesTargets)(this,r??{});let h=(0,t.join)((0,n.tmpdir)(),"hermesc");(0,s.existsSync)(h)||await (0,e.mkdir)(h);let w=(0,t.join)(h,(0,i.randomBytes)(8).readUint32LE(0)+".js");for(let r of(await (0,e.writeFile)(w,p.code,"utf-8"),a)){if(!r.dir){this.warn(`hermesc for bytecode version ${r.version} could not be resolved from the manifest cache. Skipping.`);continue}let e=null===r.version?`${f}.bundle`:`${f}.${r.version}.bundle`;this.info(`${l.file} -> ${l.file.replace(u,e)}...`);let i=await compile(this,r.dir,w);i&&(this.emitFile({type:"asset",fileName:e,source:i}),this.info(`( ͡\xb0 ͜ʖ ͡\xb0) Bytecode compiled to ${e}`))}await (0,e.rm)(w,{force:!0})},async buildEnd(){let r=(0,t.join)((0,n.tmpdir)(),"hermesc");(0,s.existsSync)(r)&&await (0,e.rm)(r,{recursive:!0,force:!0})}}}module.exports=hermesc;
1
+ "use strict";const e=require("fs/promises"),r=require("child_process"),t=require("crypto"),i=require("path"),s=require("fs"),o=require("os"),n=require("./manifest");async function compile(n,a,c,l){let m="win32"===process.platform?".exe":"",u=(0,i.resolve)(a,process.platform,"hermesc"+m);if(!(0,s.existsSync)(u))return n.warn(`The hermesc binary is either not supported for your OS or cannot be found at ${u}. Skipping.`),null;let d=(0,i.join)((0,o.tmpdir)(),"hermesc");(0,s.existsSync)(d)||await (0,e.mkdir)(d);let p=(0,i.join)(d,(0,t.randomBytes)(8).readUint32LE(0)+".bundle"),f=["--emit-binary","--out",p,"-Wno-direct-eval","-Wno-undefined-variable",...l,c],{code:h,stderr:w}=await new Promise((e,t)=>{let i=(0,r.spawn)(u,f,{shell:!0}),s="";i.stdout.setEncoding("utf8"),i.stdout.on("data",n.debug),i.stderr.setEncoding("utf8"),i.stderr.on("data",e=>s+=e),i.on("error",t),i.on("close",r=>e({code:r,stderr:s}))});if(0!==h){let e=w.trim()||`hermesc exited with code ${h}.`;n.error(`hermesc failed to compile:
2
+ ${e}`)}w.trim()&&n.warn(w.trim());let y=await (0,e.readFile)(p);await (0,e.rm)(p,{force:!0});let b=p+".map";if(!(0,s.existsSync)(b))return l.includes("-output-source-map")&&n.error(`hermesc was passed -output-source-map but wrote no map at ${b}.`),{bytecode:y,map:null};let v=await (0,e.readFile)(b,"utf-8");return await (0,e.rm)(b,{force:!0}),{bytecode:y,map:v}}function hermesc(r){let a;return{name:"hermesc",async generateBundle(c,l,m){let u=c.file?.split("/");if(!u)return;let d=u.pop(),p=d.split(".").shift(),f=l[d];if(!f)return;a??=r?.hermesc?[{version:null,dir:r.hermesc}]:await (0,n.resolveHermesTargets)(this,r??{});let h=(0,i.join)((0,o.tmpdir)(),"hermesc");(0,s.existsSync)(h)||await (0,e.mkdir)(h);let w=(0,i.join)(h,(0,t.randomBytes)(8).readUint32LE(0)+".js");for(let t of(await (0,e.writeFile)(w,f.code,"utf-8"),a)){if(!t.dir){this.warn(`hermesc for bytecode version ${t.version} could not be resolved from the manifest cache. Skipping.`);continue}let e=null===t.version?`${p}.bundle`:`${p}.${t.version}.bundle`;this.info(`${c.file} -> ${c.file.replace(d,e)}...`);let i=await compile(this,t.dir,w,r?.flags??[]);if(i){if(this.emitFile({type:"asset",fileName:e,source:i.bytecode}),i.map){let r={...JSON.parse(i.map),sources:[d]};this.emitFile({type:"asset",fileName:e+".map",source:JSON.stringify(r)})}this.info(`( ͡\xb0 ͜ʖ ͡\xb0) Bytecode compiled to ${e}`)}}await (0,e.rm)(w,{force:!0})},async buildEnd(){let r=(0,i.join)((0,o.tmpdir)(),"hermesc");(0,s.existsSync)(r)&&await (0,e.rm)(r,{recursive:!0,force:!0})}}}module.exports=hermesc;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbound-app/rollup-plugin-hermes",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Compile JavaScript bundles to hermes binaries.",
5
5
  "repository": "https://github.com/unbound-app/rollup-plugin-hermes",
6
6
  "main": "dist/index.js",