watr 3.2.1 → 4.0.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.
@@ -0,0 +1,5 @@
1
+ var ue=Object.defineProperty;var _e=(e,t)=>{for(var i in t)ue(e,i,{get:t[i],enumerable:!0})};var F={};_e(F,{f32:()=>B,f64:()=>q,i16:()=>ye,i32:()=>I,i64:()=>E,i8:()=>ge,uleb:()=>o,uleb5:()=>he});var _=(e,t=_.i)=>{if(t!=null&&_.src){let i=1,r=1;for(let a=0;a<t&&a<_.src.length;a++)_.src[a]===`
2
+ `?(i++,r=1):r++;e+=` at ${i}:${r}`}throw Error(e)};var Z=/^_|_$|[^\da-f]_|_[^\da-f]/i,ee=/^[+-]?(?:0x[\da-f]+|\d+)$/i,ce=new TextEncoder,pe=new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0}),Q={n:10,r:13,t:9,'"':34,"'":39,"\\":92},C=e=>{let t=[],i=1,r,a,l="",f=()=>(l&&t.push(...ce.encode(l)),l="");for(;i<e.length-1;)a=e[i++],r=null,a==="\\"&&(e[i]==="u"?(i++,i++,a=String.fromCodePoint(parseInt(e.slice(i,i=e.indexOf("}",i)),16)),i++):Q[e[i]]?r=Q[e[i++]]:isNaN(r=parseInt(e[i]+e[i+1],16))?a+=e[i]:(i++,i++)),r!=null?(f(),t.push(r)):l+=a;return f(),t.valueOf=()=>e,t},te=e=>pe.decode(new Uint8Array(C(e)));var o=(e,t=[])=>{if(e==null)return t;if(typeof e=="string"&&(e=/[_x]/i.test(e)?BigInt(e.replaceAll("_","")):I.parse(e)),typeof e=="bigint"){for(;;){let r=Number(e&0x7Fn);if(e>>=7n,e===0n){t.push(r);break}t.push(r|128)}return t}let i=e&127;return e>>>=7,e===0?(t.push(i),t):(t.push(i|128),o(e,t))};function he(e){let t=[];for(let i=0;i<5;i++){let r=e&127;e>>>=7,i<4&&(r|=128),t.push(r)}return t}function I(e,t=[]){for(typeof e=="string"&&(e=I.parse(e));;){let i=Number(e&127);if(e>>=7,e===0&&!(i&64)||e===-1&&i&64){t.push(i);break}t.push(i|128)}return t}var ie=e=>!Z.test(e)&&ee.test(e=e.replaceAll("_",""))?e:_(`Bad int ${e}`),ge=I,ye=I;I.parse=e=>(e=parseInt(ie(e)),(e<-2147483648||e>4294967295)&&_("i32 constant out of range"),e);function E(e,t=[]){for(typeof e=="string"&&(e=E.parse(e));;){let i=Number(e&0x7Fn);if(e>>=7n,e===0n&&!(i&64)||e===-1n&&i&64){t.push(i);break}t.push(i|128)}return t}E.parse=e=>(e=ie(e),e=e[0]==="-"?-BigInt(e.slice(1)):BigInt(e),(e<-0x8000000000000000n||e>0xffffffffffffffffn)&&_("i64 constant out of range"),y.setBigInt64(0,e),y.getBigInt64(0));var y=new DataView(new Float64Array(1).buffer),de=2147483648,be=2139095040;function B(e,t,i){return typeof e=="string"&&~(i=e.indexOf("nan:"))?(t=I.parse(e.slice(i+4)),t|=be,e[0]==="-"&&(t|=de),y.setInt32(0,t)):(t=typeof e=="string"?B.parse(e):e,y.setFloat32(0,t)),[y.getUint8(3),y.getUint8(2),y.getUint8(1),y.getUint8(0)]}var we=0x8000000000000000n,Ae=0x7ff0000000000000n;function q(e,t,i){return typeof e=="string"&&~(i=e.indexOf("nan:"))?(t=E.parse(e.slice(i+4)),t|=Ae,e[0]==="-"&&(t|=we),y.setBigInt64(0,t)):(t=typeof e=="string"?q.parse(e):e,y.setFloat64(0,t)),[y.getUint8(7),y.getUint8(6),y.getUint8(5),y.getUint8(4),y.getUint8(3),y.getUint8(2),y.getUint8(1),y.getUint8(0)]}q.parse=(e,t=Number.MAX_VALUE)=>{e=e.replaceAll("_","");let i=1;if(e[0]==="-"?(i=-1,e=e.slice(1)):e[0]==="+"&&(e=e.slice(1)),e[1]==="x"){let[r,a="0"]=e.split(/p/i),[l,f=""]=r.split("."),s=f.length??0,n=parseInt(l);isNaN(n)&&_();let m=f?parseInt("0x"+f)/16**s:0;a=parseInt(a,10);let x=i*(n+m)*2**a;return x=Math.max(-t,Math.min(t,x)),x}return e.includes("nan")?i<0?NaN:NaN:e.includes("inf")?i*(1/0):i*parseFloat(e)};B.parse=e=>q.parse(e,34028234663852886e22);var M=["unreachable","nop","block block","loop block","if block","else null","then null",,"throw tagidx",,"throw_ref","end end","br labelidx","br_if labelidx","br_table br_table","return","call funcidx","call_indirect call_indirect","return_call funcidx","return_call_indirect call_indirect","call_ref typeidx","return_call_ref typeidx",,,,,"drop","select select","",,,"try_table try_table","local.get localidx","local.set localidx","local.tee localidx","global.get globalidx","global.set globalidx","table.get tableidx","table.set tableidx",,"i32.load memarg","i64.load memarg","f32.load memarg","f64.load memarg","i32.load8_s memarg","i32.load8_u memarg","i32.load16_s memarg","i32.load16_u memarg","i64.load8_s memarg","i64.load8_u memarg","i64.load16_s memarg","i64.load16_u memarg","i64.load32_s memarg","i64.load32_u memarg","i32.store memarg","i64.store memarg","f32.store memarg","f64.store memarg","i32.store8 memarg","i32.store16 memarg","i64.store8 memarg","i64.store16 memarg","i64.store32 memarg","memory.size opt_memory","memory.grow opt_memory","i32.const i32","i64.const i64","f32.const f32","f64.const f64","i32.eqz","i32.eq","i32.ne","i32.lt_s","i32.lt_u","i32.gt_s","i32.gt_u","i32.le_s","i32.le_u","i32.ge_s","i32.ge_u","i64.eqz","i64.eq","i64.ne","i64.lt_s","i64.lt_u","i64.gt_s","i64.gt_u","i64.le_s","i64.le_u","i64.ge_s","i64.ge_u","f32.eq","f32.ne","f32.lt","f32.gt","f32.le","f32.ge","f64.eq","f64.ne","f64.lt","f64.gt","f64.le","f64.ge","i32.clz","i32.ctz","i32.popcnt","i32.add","i32.sub","i32.mul","i32.div_s","i32.div_u","i32.rem_s","i32.rem_u","i32.and","i32.or","i32.xor","i32.shl","i32.shr_s","i32.shr_u","i32.rotl","i32.rotr","i64.clz","i64.ctz","i64.popcnt","i64.add","i64.sub","i64.mul","i64.div_s","i64.div_u","i64.rem_s","i64.rem_u","i64.and","i64.or","i64.xor","i64.shl","i64.shr_s","i64.shr_u","i64.rotl","i64.rotr","f32.abs","f32.neg","f32.ceil","f32.floor","f32.trunc","f32.nearest","f32.sqrt","f32.add","f32.sub","f32.mul","f32.div","f32.min","f32.max","f32.copysign","f64.abs","f64.neg","f64.ceil","f64.floor","f64.trunc","f64.nearest","f64.sqrt","f64.add","f64.sub","f64.mul","f64.div","f64.min","f64.max","f64.copysign","i32.wrap_i64","i32.trunc_f32_s","i32.trunc_f32_u","i32.trunc_f64_s","i32.trunc_f64_u","i64.extend_i32_s","i64.extend_i32_u","i64.trunc_f32_s","i64.trunc_f32_u","i64.trunc_f64_s","i64.trunc_f64_u","f32.convert_i32_s","f32.convert_i32_u","f32.convert_i64_s","f32.convert_i64_u","f32.demote_f64","f64.convert_i32_s","f64.convert_i32_u","f64.convert_i64_s","f64.convert_i64_u","f64.promote_f32","i32.reinterpret_f32","i64.reinterpret_f64","f32.reinterpret_i32","f64.reinterpret_i64","i32.extend8_s","i32.extend16_s","i64.extend8_s","i64.extend16_s","i64.extend32_s",,,,,,,,,,,,"ref.null ref_null","ref.is_null","ref.func funcidx","ref.eq","ref.as_non_null","br_on_null labelidx","br_on_non_null labelidx",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,["struct.new typeidx","struct.new_default typeidx","struct.get typeidx_field","struct.get_s typeidx_field","struct.get_u typeidx_field","struct.set typeidx_field","array.new typeidx","array.new_default typeidx","array.new_fixed typeidx_multi","array.new_data typeidx_dataidx","array.new_elem typeidx_elemidx","array.get typeidx","array.get_s typeidx","array.get_u typeidx","array.set typeidx","array.len","array.fill typeidx","array.copy typeidx_typeidx","array.init_data typeidx_dataidx","array.init_elem typeidx_elemidx","ref.test reftype","","ref.cast reftype","","br_on_cast reftype2","br_on_cast_fail reftype2","any.convert_extern","extern.convert_any","ref.i31","i31.get_s","i31.get_u"],["i32.trunc_sat_f32_s","i32.trunc_sat_f32_u","i32.trunc_sat_f64_s","i32.trunc_sat_f64_u","i64.trunc_sat_f32_s","i64.trunc_sat_f32_u","i64.trunc_sat_f64_s","i64.trunc_sat_f64_u","memory.init dataidx_memoryidx","data.drop dataidx","memory.copy memoryidx_memoryidx","memory.fill memoryidx?","table.init reversed","elem.drop elemidx","table.copy tableidx_tableidx","table.grow tableidx","table.size tableidx","table.fill tableidx",,"i64.add128","i64.sub128","i64.mul_wide_s","i64.mul_wide_u"],["v128.load memarg","v128.load8x8_s memarg","v128.load8x8_u memarg","v128.load16x4_s memarg","v128.load16x4_u memarg","v128.load32x2_s memarg","v128.load32x2_u memarg","v128.load8_splat memarg","v128.load16_splat memarg","v128.load32_splat memarg","v128.load64_splat memarg","v128.store memarg","v128.const v128const","i8x16.shuffle shuffle","i8x16.swizzle","i8x16.splat","i16x8.splat","i32x4.splat","i64x2.splat","f32x4.splat","f64x2.splat","i8x16.extract_lane_s laneidx","i8x16.extract_lane_u laneidx","i8x16.replace_lane laneidx","i16x8.extract_lane_s laneidx","i16x8.extract_lane_u laneidx","i16x8.replace_lane laneidx","i32x4.extract_lane laneidx","i32x4.replace_lane laneidx","i64x2.extract_lane laneidx","i64x2.replace_lane laneidx","f32x4.extract_lane laneidx","f32x4.replace_lane laneidx","f64x2.extract_lane laneidx","f64x2.replace_lane laneidx","i8x16.eq","i8x16.ne","i8x16.lt_s","i8x16.lt_u","i8x16.gt_s","i8x16.gt_u","i8x16.le_s","i8x16.le_u","i8x16.ge_s","i8x16.ge_u","i16x8.eq","i16x8.ne","i16x8.lt_s","i16x8.lt_u","i16x8.gt_s","i16x8.gt_u","i16x8.le_s","i16x8.le_u","i16x8.ge_s","i16x8.ge_u","i32x4.eq","i32x4.ne","i32x4.lt_s","i32x4.lt_u","i32x4.gt_s","i32x4.gt_u","i32x4.le_s","i32x4.le_u","i32x4.ge_s","i32x4.ge_u","f32x4.eq","f32x4.ne","f32x4.lt","f32x4.gt","f32x4.le","f32x4.ge","f64x2.eq","f64x2.ne","f64x2.lt","f64x2.gt","f64x2.le","f64x2.ge","v128.not","v128.and","v128.andnot","v128.or","v128.xor","v128.bitselect","v128.any_true","v128.load8_lane memlane","v128.load16_lane memlane","v128.load32_lane memlane","v128.load64_lane memlane","v128.store8_lane memlane","v128.store16_lane memlane","v128.store32_lane memlane","v128.store64_lane memlane","v128.load32_zero memarg","v128.load64_zero memarg","f32x4.demote_f64x2_zero","f64x2.promote_low_f32x4","i8x16.abs","i8x16.neg","i8x16.popcnt","i8x16.all_true","i8x16.bitmask","i8x16.narrow_i16x8_s","i8x16.narrow_i16x8_u","f32x4.ceil","f32x4.floor","f32x4.trunc","f32x4.nearest","i8x16.shl","i8x16.shr_s","i8x16.shr_u","i8x16.add","i8x16.add_sat_s","i8x16.add_sat_u","i8x16.sub","i8x16.sub_sat_s","i8x16.sub_sat_u","f64x2.ceil","f64x2.floor","i8x16.min_s","i8x16.min_u","i8x16.max_s","i8x16.max_u","f64x2.trunc","i8x16.avgr_u","i16x8.extadd_pairwise_i8x16_s","i16x8.extadd_pairwise_i8x16_u","i32x4.extadd_pairwise_i16x8_s","i32x4.extadd_pairwise_i16x8_u","i16x8.abs","i16x8.neg","i16x8.q15mulr_sat_s","i16x8.all_true","i16x8.bitmask","i16x8.narrow_i32x4_s","i16x8.narrow_i32x4_u","i16x8.extend_low_i8x16_s","i16x8.extend_high_i8x16_s","i16x8.extend_low_i8x16_u","i16x8.extend_high_i8x16_u","i16x8.shl","i16x8.shr_s","i16x8.shr_u","i16x8.add","i16x8.add_sat_s","i16x8.add_sat_u","i16x8.sub","i16x8.sub_sat_s","i16x8.sub_sat_u","f64x2.nearest","i16x8.mul","i16x8.min_s","i16x8.min_u","i16x8.max_s","i16x8.max_u",,"i16x8.avgr_u","i16x8.extmul_low_i8x16_s","i16x8.extmul_high_i8x16_s","i16x8.extmul_low_i8x16_u","i16x8.extmul_high_i8x16_u","i32x4.abs","i32x4.neg",,"i32x4.all_true","i32x4.bitmask",,,"i32x4.extend_low_i16x8_s","i32x4.extend_high_i16x8_s","i32x4.extend_low_i16x8_u","i32x4.extend_high_i16x8_u","i32x4.shl","i32x4.shr_s","i32x4.shr_u","i32x4.add",,,"i32x4.sub",,,,"i32x4.mul","i32x4.min_s","i32x4.min_u","i32x4.max_s","i32x4.max_u","i32x4.dot_i16x8_s",,"i32x4.extmul_low_i16x8_s","i32x4.extmul_high_i16x8_s","i32x4.extmul_low_i16x8_u","i32x4.extmul_high_i16x8_u","i64x2.abs","i64x2.neg",,"i64x2.all_true","i64x2.bitmask",,,"i64x2.extend_low_i32x4_s","i64x2.extend_high_i32x4_s","i64x2.extend_low_i32x4_u","i64x2.extend_high_i32x4_u","i64x2.shl","i64x2.shr_s","i64x2.shr_u","i64x2.add",,,"i64x2.sub",,,,"i64x2.mul","i64x2.eq","i64x2.ne","i64x2.lt_s","i64x2.gt_s","i64x2.le_s","i64x2.ge_s","i64x2.extmul_low_i32x4_s","i64x2.extmul_high_i32x4_s","i64x2.extmul_low_i32x4_u","i64x2.extmul_high_i32x4_u","f32x4.abs","f32x4.neg",,"f32x4.sqrt","f32x4.add","f32x4.sub","f32x4.mul","f32x4.div","f32x4.min","f32x4.max","f32x4.pmin","f32x4.pmax","f64x2.abs","f64x2.neg",,"f64x2.sqrt","f64x2.add","f64x2.sub","f64x2.mul","f64x2.div","f64x2.min","f64x2.max","f64x2.pmin","f64x2.pmax","i32x4.trunc_sat_f32x4_s","i32x4.trunc_sat_f32x4_u","f32x4.convert_i32x4_s","f32x4.convert_i32x4_u","i32x4.trunc_sat_f64x2_s_zero","i32x4.trunc_sat_f64x2_u_zero","f64x2.convert_low_i32x4_s","f64x2.convert_low_i32x4_u","i8x16.relaxed_swizzle","i32x4.relaxed_trunc_f32x4_s","i32x4.relaxed_trunc_f32x4_u","i32x4.relaxed_trunc_f64x2_s_zero","i32x4.relaxed_trunc_f64x2_u_zero","f32x4.relaxed_madd","f32x4.relaxed_nmadd","f64x2.relaxed_madd","f64x2.relaxed_nmadd","i8x16.relaxed_laneselect","i16x8.relaxed_laneselect","i32x4.relaxed_laneselect","i64x2.relaxed_laneselect","f32x4.relaxed_min","f32x4.relaxed_max","f64x2.relaxed_min","f64x2.relaxed_max","i16x8.relaxed_q15mulr_s","i16x8.relaxed_dot_i8x16_i7x16_s","i32x4.relaxed_dot_i8x16_i7x16_add_s"],["memory.atomic.notify memarg","memory.atomic.wait32 memarg","memory.atomic.wait64 memarg","atomic.fence opt_memory",,,,,,,,,,,,,"i32.atomic.load memarg","i64.atomic.load memarg","i32.atomic.load8_u memarg","i32.atomic.load16_u memarg","i64.atomic.load8_u memarg","i64.atomic.load16_u memarg","i64.atomic.load32_u memarg","i32.atomic.store memarg","i64.atomic.store memarg","i32.atomic.store8 memarg","i32.atomic.store16 memarg","i64.atomic.store8 memarg","i64.atomic.store16 memarg","i64.atomic.store32 memarg","i32.atomic.rmw.add memarg","i64.atomic.rmw.add memarg","i32.atomic.rmw8.add_u memarg","i32.atomic.rmw16.add_u memarg","i64.atomic.rmw8.add_u memarg","i64.atomic.rmw16.add_u memarg","i64.atomic.rmw32.add_u memarg","i32.atomic.rmw.sub memarg","i64.atomic.rmw.sub memarg","i32.atomic.rmw8.sub_u memarg","i32.atomic.rmw16.sub_u memarg","i64.atomic.rmw8.sub_u memarg","i64.atomic.rmw16.sub_u memarg","i64.atomic.rmw32.sub_u memarg","i32.atomic.rmw.and memarg","i64.atomic.rmw.and memarg","i32.atomic.rmw8.and_u memarg","i32.atomic.rmw16.and_u memarg","i64.atomic.rmw8.and_u memarg","i64.atomic.rmw16.and_u memarg","i64.atomic.rmw32.and_u memarg","i32.atomic.rmw.or memarg","i64.atomic.rmw.or memarg","i32.atomic.rmw8.or_u memarg","i32.atomic.rmw16.or_u memarg","i64.atomic.rmw8.or_u memarg","i64.atomic.rmw16.or_u memarg","i64.atomic.rmw32.or_u memarg","i32.atomic.rmw.xor memarg","i64.atomic.rmw.xor memarg","i32.atomic.rmw8.xor_u memarg","i32.atomic.rmw16.xor_u memarg","i64.atomic.rmw8.xor_u memarg","i64.atomic.rmw16.xor_u memarg","i64.atomic.rmw32.xor_u memarg","i32.atomic.rmw.xchg memarg","i64.atomic.rmw.xchg memarg","i32.atomic.rmw8.xchg_u memarg","i32.atomic.rmw16.xchg_u memarg","i64.atomic.rmw8.xchg_u memarg","i64.atomic.rmw16.xchg_u memarg","i64.atomic.rmw32.xchg_u memarg","i32.atomic.rmw.cmpxchg memarg","i64.atomic.rmw.cmpxchg memarg","i32.atomic.rmw8.cmpxchg_u memarg","i32.atomic.rmw16.cmpxchg_u memarg","i64.atomic.rmw8.cmpxchg_u memarg","i64.atomic.rmw16.cmpxchg_u memarg","i64.atomic.rmw32.cmpxchg_u memarg"]],g={custom:0,type:1,import:2,func:3,table:4,memory:5,tag:13,global:6,export:7,start:8,elem:9,datacount:12,code:10,data:11},w={i8:120,i16:119,i32:127,i64:126,f32:125,f64:124,void:64,v128:123,exn:105,noexn:116,nofunc:115,noextern:114,none:113,func:112,extern:111,any:110,eq:109,i31:108,struct:107,array:106,nullfuncref:115,nullexternref:114,nullexnref:116,nullref:113,funcref:112,externref:111,exnref:105,anyref:110,eqref:109,i31ref:108,structref:107,arrayref:106,ref:100,refnull:99,sub:80,subfinal:79,rec:78},re={func:96,struct:95,array:94,sub:80,subfinal:79,rec:78},Y={func:0,table:1,memory:2,global:3,tag:4};var k=e=>{let t=0,i=[],r="",a=0,l=0,f=()=>r&&(i.push(r),r=""),s=n=>{i.i=n;for(let m,x,p;t<e.length;)if(m=e.charCodeAt(t),a===34)r+=e[t++],m===92?r+=e[t++]:m===34&&(f(),a=0);else if(a>59)m===40&&e.charCodeAt(t+1)===59?(a++,r+=e[t++]+e[t++]):m===59&&e.charCodeAt(t+1)===41?(r+=e[t++]+e[t++],--a===59&&(f(),a=0)):r+=e[t++];else if(a<0)m===10||m===13?(r+=e[t++],f(),a=0):r+=e[t++];else if(m===34)r!=="$"&&f(),a=34,r+=e[t++];else if(m===40&&e.charCodeAt(t+1)===59)f(),a=60,r=e[t++]+e[t++];else if(m===59&&e.charCodeAt(t+1)===59)f(),a=-1,r=e[t++]+e[t++];else if(m===40&&e.charCodeAt(t+1)===64)f(),p=t,t+=2,r="@",l++,(x=i).push(i=[]),s(p),i=x;else if(m===40)f(),p=t++,l++,(x=i).push(i=[]),s(p),i=x;else{if(m===41)return f(),t++,l--;m<=32?(f(),t++):r+=e[t++]}a<0&&f(),f()};return s(0),a===34&&_("Unclosed quote",t),a>59&&_("Unclosed block comment",t),l>0&&_("Unclosed parenthesis",t),t<e.length&&_("Unexpected closing parenthesis",t),i.length>1?i:i[0]||[]};var se=(e,t)=>Array.isArray(e)?e[0]?.[0]==="@"&&e[0]!=="@custom"&&!e[0]?.startsWith?.("@metadata.code.")?null:(t=e.map(se).filter(i=>i!=null),t.i=e.i,t.length===1&&t[0]?.[0]==="module"?t[0]:t):typeof e!="string"?e:e[0]===";"||e[1]===";"?null:e[0]==="$"&&e[1]==='"'?e.includes("\\")?"$"+te(e.slice(1)):"$"+e.slice(2,-1):e[0]==='"'?C(e):e;function T(e){typeof e=="string"?(_.src=e,e=k(e)||[]):_.src="",_.i=0,e=se(e)||[];let t=0;if(e[0]==="module"?(t++,A(e[t])&&t++):typeof e[0]=="string"&&(e=[e]),e[t]==="binary")return Uint8Array.from(e.slice(++t).flat());if(e[t]==="quote")return T(e.slice(++t).map(l=>l.valueOf().slice(1,-1)).flat().join(""));let i=[];for(let l in g)(i[g[l]]=i[l]=[]).name=l;i.metadata={},e.slice(t).filter(l=>{if(!Array.isArray(l)){let n=_.src?.indexOf(l,_.i);n>=0&&(_.i=n),_(`Unexpected token ${l}`)}let[f,...s]=l;if(_.i=l.i,f==="@custom")i.custom.push(s);else if(f==="rec")for(let n=0;n<s.length;n++){let[,...m]=s[n];G(m,i.type),(m=ae(m,i)).push(n?!0:[i.type.length,s.length]),i.type.push(m)}else if(f==="type")G(s,i.type),i.type.push(ae(s,i));else if(f==="start"||f==="export")i[f].push(s);else return!0}).forEach(l=>{let[f,...s]=l;_.i=l.i;let n;f==="import"&&([f,...s]=(n=s).pop());let m=i[f];for(m||_(`Unknown section ${f}`),G(s,m);s[0]?.[0]==="export";)i.export.push([s.shift()[1],[f,m?.length]]);if(s[0]?.[0]==="import"&&([,...n]=s.shift()),f==="table"){let x=s[0]==="i64",p=x?1:0;if(s[p+1]?.[0]==="elem"){let[d,[,...c]]=[s[p],s[p+1]];s=x?["i64",c.length,c.length,d]:[c.length,c.length,d],i.elem.push([["table",m.length],["offset",[x?"i64.const":"i32.const",x?0n:0]],d,...c])}}else if(f==="memory"){let x=s[0]==="i64",p=x?1:0;if(s[p]?.[0]==="data"){let[,...d]=s.splice(p,1)[0],c=""+Math.ceil(d.reduce((v,b)=>v+b.length,0)/65536);i.data.push([["memory",m.length],[x?"i64.const":"i32.const",x?0n:0],...d]),s=x?["i64",c,c]:[c,c]}}else if(f==="func"){let[x,p,d]=L(s,i);x??=R(p,d,i),!n&&i.code.push([[x,p,d],...N(s,i)]),s=[["type",x]]}else if(f==="tag"){let[x,p]=L(s,i);x??=R(p,[],i),s=[["type",x]]}n&&(i.import.push([...n,[f,...s]]),s=null),m.push(s)});let r=(l,f=!0)=>{let s=i[l].filter(Boolean).map(n=>X[l](n,i)).filter(Boolean);return l===g.custom?s.flatMap(n=>[l,...h(n)]):s.length?[l,...h(f?h(s):s)]:[]},a=()=>{let l=[];for(let f in i.metadata){let s=h(C(`"metadata.code.${f}"`)),n=h(i.metadata[f].map(([m,x])=>[...o(m),...h(x.map(([p,d])=>[...o(p),...h(d)]))]));l.push(0,...h([...s,...n]))}return l};return Uint8Array.from([0,97,115,109,1,0,0,0,...r(g.custom),...r(g.type),...r(g.import),...r(g.func),...r(g.table),...r(g.memory),...r(g.tag),...r(g.global),...r(g.export),...r(g.start,!1),...r(g.elem),...r(g.datacount,!1),...r(g.code),...a(),...r(g.data)])}var U=e=>e?.[0]==="$"||!isNaN(e),A=e=>e?.[0]==="$",K=e=>e?.[0]==="a"||e?.[0]==="o";function N(e,t){let i=[];for(e=[...e];e.length;){let r=e.shift();if(typeof r=="string")if(i.push(r),r==="block"||r==="if"||r==="loop")A(e[0])&&i.push(e.shift()),i.push(D(e,t));else if(r==="else"||r==="end")A(e[0])&&e.shift();else if(r==="select")i.push(V(e)[1]);else if(r.endsWith("call_indirect")){let a=U(e[0])?e.shift():0,[l,f,s]=L(e,t);i.push(a,["type",l??R(f,s,t)])}else r==="table.init"?i.push(U(e[1])?e.shift():0,e.shift()):r==="table.copy"||r==="memory.copy"?i.push(U(e[0])?e.shift():0,U(e[0])?e.shift():0):r.startsWith("table.")?i.push(U(e[0])?e.shift():0):r==="memory.init"?(i.push(...U(e[1])?[e.shift(),e.shift()].reverse():[e.shift(),0]),t.datacount&&(t.datacount[0]=!0)):r==="data.drop"||r==="array.new_data"||r==="array.init_data"?(r==="data.drop"&&i.push(e.shift()),t.datacount&&(t.datacount[0]=!0)):(r.startsWith("memory.")||r.endsWith("load")||r.endsWith("store"))&&U(e[0])&&i.push(e.shift());else if(Array.isArray(r)){let a=r[0];if(r.i!=null&&(_.i=r.i),a?.startsWith?.("@metadata.code.")){let f=a.slice(15);i.push(["@metadata",f,r[1]]);continue}if(typeof a!="string"||!Array.isArray(M[a])){i.push(r);continue}let l=r.slice(1);if(a==="block"||a==="loop")i.push(a),A(l[0])&&i.push(l.shift()),i.push(D(l,t),...N(l,t),"end");else if(a==="if"){let f=[],s=[];l.at(-1)?.[0]==="else"&&(s=N(l.pop().slice(1),t)),l.at(-1)?.[0]==="then"&&(f=N(l.pop().slice(1),t));let n=[a];A(l[0])&&n.push(l.shift()),n.push(D(l,t)),i.push(...N(l,t),...n,...f),s.length&&i.push("else",...s),i.push("end")}else if(a==="try_table"){for(i.push(a),A(l[0])&&i.push(l.shift()),i.push(D(l,t));l[0]?.[0]==="catch"||l[0]?.[0]==="catch_ref"||l[0]?.[0]==="catch_all"||l[0]?.[0]==="catch_all_ref";)i.push(l.shift());i.push(...N(l,t),"end")}else{let f=[];for(;l.length&&(!Array.isArray(l[0])||"type,param,result,ref".includes(l[0][0]));)f.push(l.shift());i.push(...N(l,t),a,...f),e.unshift(...i.splice(i.length-1-f.length))}}else i.push(r)}return i}var R=(e,t,i,r="$"+e+">"+t)=>(i.type[r]??=i.type.push(["func",[e,t]])-1,r),H=(e,t)=>{let i=[];for(;e[0]?.[0]===t;){let[,...r]=e.shift(),a=A(r[0])&&r.shift();a&&(a in i?(()=>{throw Error(`Duplicate ${t} ${a}`)})():i[a]=i.length),i.push(...r)}return i},V=e=>{let t=H(e,"param"),i=H(e,"result");if(e[0]?.[0]==="param")throw Error("Unexpected param");return[t,i]},L=(e,t)=>{if(e[0]?.[0]!=="type")return[,...V(e)];let[,i]=e.shift(),[r,a]=V(e),l=t.type[typeof i=="string"&&isNaN(i)?t.type[i]:+i];if(!l)throw Error(`Unknown type ${i}`);if((r.length||a.length)&&l[1].join(">")!==r+">"+a)throw Error(`Type ${i} mismatch`);return[i,...l[1]]},D=(e,t)=>{let[i,r,a]=L(e,t);if(!(!r.length&&!a.length))return!r.length&&a.length===1?["result",...a]:["type",i??R(r,a,t)]},G=(e,t)=>{let i=A(e[0])&&e.shift();return i&&(i in t?_(`Duplicate ${t.name} ${i}`):t[i]=t.length),i},ae=([e],t)=>{let i="subfinal",r=[],a;return e[0]==="sub"&&(i=e.shift(),e[0]==="final"&&(i+=e.shift()),e=(r=e).pop()),[a,...e]=e,a==="func"?(e=V(e),t.type["$"+e.join(">")]??=t.type.length):a==="struct"?e=H(e,"field"):a==="array"&&([e]=e),[a,e,i,r]},X=[([e,...t],i)=>{let r=t;return(t[0]?.[0]==="before"||t[0]?.[0]==="after")&&(r=t.slice(1)),[...h(e),...r.flat()]},([e,t,i,r,a],l)=>{if(a===!0)return;let f;if(a){e="rec";let[s,n]=a,m=Array.from({length:n},(x,p)=>X[g.type](l.type[s+p].slice(0,4),l));f=h(m)}else i==="sub"||r?.length?(f=[...h(r.map(s=>u(s,l.type))),...X[g.type]([e,t],l)],e=i):e==="func"?f=[...h(t[0].map(s=>$(s,l))),...h(t[1].map(s=>$(s,l)))]:e==="array"?f=W(t,l):e==="struct"&&(f=h(t.map(s=>W(s,l))));return[re[e],...f]},([e,t,[i,...r]],a)=>{let l;if(i==="func"){let[[,f]]=r;l=o(u(f,a.type))}else if(i==="tag"){let[[,f]]=r;l=[0,...o(u(f,a.type))]}else i==="memory"?l=j(r):i==="global"?l=W(r[0],a):i==="table"?l=[...$(r.pop(),a),...j(r)]:_(`Unknown kind ${i}`);return[...h(e),...h(t),Y[i],...l]},([[,e]],t)=>o(u(e,t.type)),(e,t)=>{let i=j(e),r=$(e.shift(),t),[a]=e;return a?[64,0,...r,...i,...z(a,t)]:[...r,...i]},(e,t)=>j(e),([e,t],i)=>[...W(e,i),...z(t,i)],([e,[t,i]],r)=>[...h(e),Y[t],...o(u(i,r[t]))],([e],t)=>o(u(e,t.func)),(e,t)=>{let i=0,r=0,a=0,l=0,f,s,n;e[0]==="declare"&&(e.shift(),r=1),e[0]?.[0]==="table"?([,f]=e.shift(),f=u(f,t.table)):(typeof e[0]=="string"||typeof e[0]=="number")&&(e[1]?.[0]==="offset"||Array.isArray(e[1])&&e[1][0]!=="item"&&!e[1][0]?.startsWith("ref"))&&(f=u(e.shift(),t.table)),e[0]?.[0]==="offset"||Array.isArray(e[0])&&e[0][0]!=="item"&&!e[0][0].startsWith("ref")?(s=e.shift(),s[0]==="offset"&&([,s]=s),s=z(s,t)):r||(i=1),w[e[0]]||e[0]?.[0]==="ref"?n=$(e.shift(),t):e[0]==="func"?n=[w[e.shift()]]:n=[w.func],e=e.map(x=>(x[0]==="item"&&(x=x.length===3&&x[1]==="ref.func"?x[2]:x[1]),x[0]==="ref.func"&&([,x]=x),typeof x!="string"&&(a=1),x)),n[0]!==w.funcref&&(l=1,a=1);let m=a<<2|(i||r?r:!!f||l)<<1|(i||r);return[m,...m===0?s:m===1?[0]:m===2?[...o(f||0),...s,0]:m===3?[0]:m===4?s:m===5?n:m===6?[...o(f||0),...s,...n]:n,...h(e.map(a?x=>z(typeof x=="string"?["ref.func",x]:x,t):x=>o(u(x,t.func))))]},(e,t)=>{let[i,r]=e.shift();r||([,[r]]=t.type[u(i,t.type)]),t.local=Object.create(r),t.block=[],t.local.name="local",t.block.name="block",t._codeIdx===void 0&&(t._codeIdx=0);let a=t._codeIdx++;for(;e[0]?.[0]==="local";){let[,...n]=e.shift();if(A(n[0])){let m=n.shift();m in t.local?_(`Duplicate local ${m}`):t.local[m]=t.local.length}t.local.push(...n)}t.meta={};let l=me(e,t),f=t.import.filter(n=>n[2][0]==="func").length+a;for(let n in t.meta)((t.metadata??={})[n]??=[]).push([f,t.meta[n]]);let s=t.local.slice(r.length).reduce((n,m)=>(m==n[n.length-1]?.[1]?n[n.length-1][0]++:n.push([1,m]),n),[]);return t.local=t.block=t.meta=null,h([...h(s.map(([n,m])=>[...o(n),...$(m,t)])),...l])},(e,t)=>{let i,r=0;return e[0]?.[0]==="memory"?([,r]=e.shift(),r=u(r,t.memory)):(typeof e[0]=="string"||typeof e[0]=="number")&&(e[1]?.[0]==="offset"||Array.isArray(e[1])&&typeof e[1][0]=="string")&&(r=u(e.shift(),t.memory)),Array.isArray(e[0])&&typeof e[0]?.[0]=="string"&&(i=e.shift(),i[0]==="offset"&&([,i]=i),i??_("Bad offset",i)),[...r?[2,...o(r),...z(i,t)]:i?[0,...z(i,t)]:[1],...h(e.flat())]},(e,t)=>o(t.data.length),([[,e]],t)=>[0,...o(u(e,t.type))]],$=(e,t)=>e[0]==="ref"?e[1]=="null"?w[e[2]]?[w[e[2]]]:[w.refnull,...o(u(e[e.length-1],t.type))]:[w.ref,...o(w[e[e.length-1]]||u(e[e.length-1],t.type))]:[w[e]??_(`Unknown type ${e}`)],W=(e,t,i=e[0]==="mut"?1:0)=>[...$(i?e[1]:e,t),i],fe={null:()=>[],reversed:(e,t)=>{let i=e.shift(),r=e.shift();return[...o(u(r,t.elem)),...o(u(i,t.table))]},block:(e,t)=>{t.block.push(1),A(e[0])&&(t.block[e.shift()]=t.block.length);let i=e.shift();return i?i[0]==="result"?$(i[1],t):o(u(i[1],t.type)):[w.void]},try_table:(e,t)=>{A(e[0])&&(t.block[e.shift()]=t.block.length+1);let i=e.shift(),r=i?i[0]==="result"?$(i[1],t):o(u(i[1],t.type)):[w.void],a=[],l=0;for(;e[0]?.[0]==="catch"||e[0]?.[0]==="catch_ref"||e[0]?.[0]==="catch_all"||e[0]?.[0]==="catch_all_ref";){let f=e.shift(),s=f[0]==="catch"?0:f[0]==="catch_ref"?1:f[0]==="catch_all"?2:3;s<=1?a.push(s,...o(u(f[1],t.tag)),...o(O(f[2],t.block))):a.push(s,...o(O(f[1],t.block))),l++}return t.block.push(1),[...r,...o(l),...a]},end:(e,t)=>(t.block.pop(),[]),call_indirect:(e,t)=>{let i=e.shift(),[,r]=e.shift();return[...o(u(r,t.type)),...o(u(i,t.table))]},br_table:(e,t)=>{let i=[],r=0;for(;e[0]&&(!isNaN(e[0])||A(e[0]));)i.push(...o(O(e.shift(),t.block))),r++;return[...o(r-1),...i]},select:(e,t)=>{let i=e.shift()||[];return i.length?h(i.map(r=>$(r,t))):[]},ref_null:(e,t)=>{let i=e.shift();return w[i]?[w[i]]:o(u(i,t.type))},memarg:(e,t,i)=>le(e,i,U(e[0])&&!K(e[0])?u(e.shift(),t.memory):0),opt_memory:(e,t)=>o(u(U(e[0])?e.shift():0,t.memory)),reftype:(e,t)=>{let i=$(e.shift(),t);return i.length>1?i.slice(1):i},reftype2:(e,t)=>{let i=O(e.shift(),t.block),r=$(e.shift(),t),a=$(e.shift(),t);return[(a[0]!==w.ref)<<1|r[0]!==w.ref,...o(i),r.pop(),a.pop()]},v128const:e=>{let[t,i]=e.shift().split("x"),r=+t.slice(1),a=r>>>3;if(i=+i,t[0]==="i"){let f=i===16?new Uint8Array(16):i===8?new Uint16Array(8):i===4?new Uint32Array(4):new BigUint64Array(2);for(let s=0;s<i;s++)f[s]=F[t].parse(e.shift());return[...new Uint8Array(f.buffer)]}let l=new Uint8Array(16);for(let f=0;f<i;f++)l.set(F[t](e.shift()),f*a);return[...l]},shuffle:e=>{let t=[];for(let i=0;i<16;i++)t.push(P(e.shift(),32));return typeof e[0]=="string"&&!isNaN(e[0])&&_("invalid lane length"),t},memlane:(e,t,i)=>{let r=A(e[0])||U(e[0])&&(K(e[1])||U(e[1]))?u(e.shift(),t.memory):0;return[...le(e,i,r),...o(P(e.shift()))]},"*":e=>o(e.shift()),labelidx:(e,t)=>o(O(e.shift(),t.block)),laneidx:e=>[P(e.shift(),255)],funcidx:(e,t)=>o(u(e.shift(),t.func)),typeidx:(e,t)=>o(u(e.shift(),t.type)),tableidx:(e,t)=>o(u(e.shift(),t.table)),memoryidx:(e,t)=>o(u(e.shift(),t.memory)),globalidx:(e,t)=>o(u(e.shift(),t.global)),localidx:(e,t)=>o(u(e.shift(),t.local)),dataidx:(e,t)=>o(u(e.shift(),t.data)),elemidx:(e,t)=>o(u(e.shift(),t.elem)),tagidx:(e,t)=>o(u(e.shift(),t.tag)),"memoryidx?":(e,t)=>o(u(U(e[0])?e.shift():0,t.memory)),i32:e=>I(e.shift()),i64:e=>E(e.shift()),f32:e=>B(e.shift()),f64:e=>q(e.shift()),v128:e=>(void 0)(e.shift()),typeidx_field:(e,t)=>{let i=u(e.shift(),t.type);return[...o(i),...o(u(e.shift(),t.type[i][1]))]},typeidx_multi:(e,t)=>[...o(u(e.shift(),t.type)),...o(e.shift())],typeidx_dataidx:(e,t)=>[...o(u(e.shift(),t.type)),...o(u(e.shift(),t.data))],typeidx_elemidx:(e,t)=>[...o(u(e.shift(),t.type)),...o(u(e.shift(),t.elem))],typeidx_typeidx:(e,t)=>[...o(u(e.shift(),t.type)),...o(u(e.shift(),t.type))],dataidx_memoryidx:(e,t)=>[...o(u(e.shift(),t.data)),...o(u(e.shift(),t.memory))],memoryidx_memoryidx:(e,t)=>[...o(u(e.shift(),t.memory)),...o(u(e.shift(),t.memory))],tableidx_tableidx:(e,t)=>[...o(u(e.shift(),t.table)),...o(u(e.shift(),t.table))]},S={};(function e(t,i){for(let r=0,a,l,f;r<t.length;r++)(a=t[r])&&(Array.isArray(a)?e(a,r):([l,f]=a.split(" "),M[l]=i?[i,...o(r)]:[r],f&&(S[l]=fe[f])))})(M);var me=(e,t)=>{let i=[],r=[];for(;e?.length;){let a=e.shift();if(a?.[0]==="@metadata"){r.push(a.slice(1));continue}Array.isArray(a)&&(a.i!=null&&(_.i=a.i),_(`Unknown instruction ${a[0]}`));let[...l]=M[a]||_(`Unknown instruction ${a}`);S[a]&&(a==="select"&&e[0]?.length?l[0]++:S[a]===fe.reftype&&(e[0][1]==="null"||e[0][0]!=="ref")&&l[l.length-1]++,l.push(...S[a](e,t,a)));for(let[f,s]of r)(t.meta[f]??=[]).push([i.length,s]);i.push(...l)}return i.push(11),i},z=(e,t)=>me(N([e],t),t),u=(e,t,i)=>(i=A(e)?t[e]:+e,i in t?i:_(`Unknown ${t.name} ${e}`)),O=(e,t,i)=>(i=A(e)?t.length-t[e]:+e,isNaN(i)||i>t.length?_(`Bad label ${e}`):i),ve=e=>{let t,i,r,a;for(;K(e[0]);)[r,a]=e.shift().split("="),r==="offset"?i=+a:r==="align"?t=+a:_(`Unknown param ${r}=${a}`);return(i<0||i>4294967295)&&_(`Bad offset ${i}`),(t<=0||t>4294967295)&&_(`Bad align ${t}`),t&&(t=Math.log2(t))%1&&_(`Bad align ${t}`),[t,i]},le=(e,t,i=0)=>{let[r,a]=ve(e),l=(r??$e(t))|(i&&64);return i?[...o(l),...o(i),...o(a??0)]:[...o(l),...o(a??0)]},$e=e=>{let t=e.indexOf(".",3)+1,i=e.slice(1,e[0]==="v"?4:3);if(e[t]==="a"&&(t=e.indexOf(".",t)+1),e[0]==="m")return e.includes("64")?3:2;if(e[t]==="r"){let l=e.slice(t,t+6).match(/\d+/);return Math.log2(l?l[0]/8:+i/8)}let r=e[t]==="l"?t+4:t+5,a=e.slice(r).match(/(\d+)(x|_|$)/);return Math.log2(a?a[2]==="x"?8:a[1]/8:+i/8)},j=e=>{let t=e[0]==="i64"&&e.shift(),i=e[e.length-1]==="shared"&&e.pop(),r=!isNaN(parseInt(e[1])),a=(t?4:0)|(i?2:0)|(r?1:0),l=t?f=>{if(typeof f=="bigint")return f;let s=typeof f=="string"?f.replaceAll("_",""):String(f);return BigInt(s)}:P;return r?[a,...o(l(e.shift())),...o(l(e.shift()))]:[a,...o(l(e.shift()))]},P=(e,t=4294967295)=>{let i=typeof e=="string"&&e[0]!=="+"?I.parse(e):typeof e=="number"?e:_(`Bad int ${e}`);return i>t?_(`Value out of range ${e}`):i},h=e=>[...o(e.length),...e.flat()];function ne(e,t={}){typeof e=="string"&&(e=k(e));let{indent:i=" ",newline:r=`
3
+ `,comments:a=!0}=t;if(i||="",r||="",typeof e[0]=="string"&&e[0][0]!==";")return f(e);return e.filter(s=>a||!l(s)).map(s=>f(s)).join(r);function l(s){return typeof s=="string"&&s[1]===";"}function f(s,n=0){if(!Array.isArray(s))return s;let m=s[0];if(!m)return"";let x=!1;if(m==="try_table"){let c=1;for(typeof s[c]=="string"&&s[c][0]==="$"&&(m+=" "+s[c++]),Array.isArray(s[c])&&(s[c][0]==="result"||s[c][0]==="type")&&(m+=" "+f(s[c++],n));Array.isArray(s[c])&&/^catch/.test(s[c][0]);)m+=" "+f(s[c++],n).trim();for(;c<s.length;c++)m+=Array.isArray(s[c])?r+i.repeat(n+1)+f(s[c],n+1):" "+s[c];return`(${m+r+i.repeat(n)})`}let p=!!r&&s.length<4&&!s.some(c=>typeof c=="string"&&c[0]===";"&&c[1]===";"),d=i.repeat(n+1);for(let c=1;c<s.length;c++){let v=s[c].valueOf();if(typeof v=="string"&&v[1]===";"){if(!a)continue;if(v[0]===";")if(r)m+=r+d+v.trimEnd(),x=!0;else{let b=m[m.length-1];b&&b!==" "&&b!=="("&&(m+=" "),m+=v.trimEnd()+`
4
+ `}else{let b=m[m.length-1];b&&b!==" "&&b!=="("&&(m+=" "),m+=v.trimEnd()}}else if(Array.isArray(v))p&&(p=v.every(b=>!Array.isArray(b))),m+=r+d+f(v,n+1),x=!1;else if(s[0]==="data")p=!1,(r||m[m.length-1]!==")")&&(m+=r||" "),m+=d+v,x=!1;else{let b=m[m.length-1];x&&r?m+=r+d:b===`
5
+ `?m+="":(b&&b!==")"&&b!==" "||r||b===")")&&(m+=" "),m+=v,x=!1}}return p?`(${m.replaceAll(r+d+"("," (")})`:`(${m+r+i.repeat(n)})`}}var oe="\uE000",xe=e=>{if(!e||typeof e!="string")return null;let t=e.split(".")[0];return/^[if](32|64)|v128/.test(t)?t:/\.(eq|ne|[lg][te]|eqz)/.test(e)||e==="memory.size"||e==="memory.grow"?"i32":null},Ue=(e,t={})=>{if(!Array.isArray(e))return typeof e=="string"&&e[0]==="$"&&t.locals?.[e]?t.locals[e]:null;let[i,...r]=e;return xe(i)?xe(i):i==="local.get"&&t.locals?.[r[0]]?t.locals[r[0]]:i==="call"&&t.funcs?.[r[0]]?t.funcs[r[0]].result?.[0]:null};function J(e,t){if(e=t(e),Array.isArray(e))for(let i=0;i<e.length;i++){let r=J(e[i],t);r?._splice?(e.splice(i,1,...r),i+=r.length-1):e[i]=r}return e}function Ie(e,t){let i=[],r=new Map;return J(e,a=>{if(!Array.isArray(a))return a;if(a[0]==="call"&&typeof a[1]=="function"){let l=a[1];if(!r.has(l)){let s=[];for(let x=2;x<a.length;x++){let p=Ue(a[x]);p&&s.push(p)}let n=i.length,m=l.name||`$fn${n}`;r.set(l,{idx:n,name:m.startsWith("$")?m:"$"+m,params:s,fn:l}),i.push(r.get(l))}let f=r.get(l);a[1]=f.name}return a}),i}function Ne(e){return e.map(({name:t,params:i})=>["import",'"env"',`"${t.slice(1)}"`,["func",t,...i.map(r=>["param",r])]])}function ke(e,...t){if(Array.isArray(e)&&e.raw){let i=e[0];for(let n=0;n<t.length;n++)i+=oe+e[n+1];let r=k(i),a=[],l=0;r=J(r,n=>{if(n===oe){let m=t[l++];if(typeof m=="function")return a.push(m),m;if(typeof m=="string"&&(m[0]==="("||/^\s*\(/.test(m))){let x=k(m);return Array.isArray(x)&&Array.isArray(x[0])&&(x._splice=!0),x}return m instanceof Uint8Array?[...m]:m}return n});let f=null;if(a.length){let n=Ie(r,a);if(n.length){let m=Ne(n);r[0]==="module"?r.splice(1,0,...m):typeof r[0]=="string"?r=[...m,r]:r.unshift(...m),f={env:{}};for(let x of n)f.env[x.name.slice(1)]=x.fn}}let s=T(r);return f&&(s._imports=f),s}return T(e)}function Ee(e,...t){let i=ke(e,...t),r=new WebAssembly.Module(i);return new WebAssembly.Instance(r,i._imports).exports}var Ge=Ee;export{ke as compile,Ge as default,k as parse,ne as print,Ee as watr};
package/package.json CHANGED
@@ -1,18 +1,53 @@
1
1
  {
2
2
  "name": "watr",
3
- "version": "3.2.1",
4
- "description": "Ligth & fast WAT compiler",
3
+ "version": "4.0.0",
4
+ "description": "Light & fast WAT compiler – WebAssembly Text to binary, parse, print, transform",
5
5
  "main": "watr.js",
6
+ "bin": {
7
+ "watr": "./bin/watr.js"
8
+ },
9
+ "types": "types/watr.d.ts",
6
10
  "exports": {
7
- ".": "./watr.js",
8
- "./parse": "./src/parse.js",
9
- "./print": "./src/print.js",
10
- "./compile": "./src/compile.js"
11
+ ".": {
12
+ "types": "./types/watr.d.ts",
13
+ "default": "./watr.js"
14
+ },
15
+ "./dist": "./dist/watr.js",
16
+ "./dist/watr.min.js": "./dist/watr.min.js",
17
+ "./parse": {
18
+ "types": "./types/src/parse.d.ts",
19
+ "default": "./src/parse.js"
20
+ },
21
+ "./print": {
22
+ "types": "./types/src/print.d.ts",
23
+ "default": "./src/print.js"
24
+ },
25
+ "./compile": {
26
+ "types": "./types/src/compile.d.ts",
27
+ "default": "./src/compile.js"
28
+ }
29
+ },
30
+ "typesVersions": {
31
+ "*": {
32
+ "parse": [
33
+ "./types/src/parse.d.ts"
34
+ ],
35
+ "print": [
36
+ "./types/src/print.d.ts"
37
+ ],
38
+ "compile": [
39
+ "./types/src/compile.d.ts"
40
+ ]
41
+ }
11
42
  },
12
43
  "type": "module",
13
44
  "scripts": {
45
+ "build": "esbuild watr.js --bundle --format=esm --outfile=dist/watr.js && esbuild watr.js --bundle --format=esm --minify --outfile=dist/watr.min.js",
14
46
  "test": "node test",
15
- "postinstall": "git submodule update --init --recursive"
47
+ "test:repl": "npx playwright test",
48
+ "types": "npx tsc src/*.js watr.js --allowJs --declaration --emitDeclarationOnly --declarationMap --outDir types",
49
+ "prepublishOnly": "npm run build && npm run types",
50
+ "prepare": "git submodule update --init --recursive 2>/dev/null || true"
16
51
  },
17
52
  "repository": {
18
53
  "type": "git",
@@ -20,20 +55,30 @@
20
55
  },
21
56
  "files": [
22
57
  "src",
58
+ "types",
23
59
  "watr.js",
24
- "watr.d.ts"
60
+ "dist",
61
+ "bin"
25
62
  ],
26
63
  "keywords": [
27
64
  "wat",
28
65
  "wasm",
29
- "wat2wasm",
66
+ "webassembly",
30
67
  "compiler",
68
+ "wat2wasm",
31
69
  "wabt",
32
- "pretty-print",
33
- "webassembly",
34
- "wasm-text",
35
70
  "wast",
36
- "wat-compiler"
71
+ "parser",
72
+ "printer",
73
+ "formatter",
74
+ "bytecode",
75
+ "binary",
76
+ "text-format",
77
+ "s-expression",
78
+ "assembly",
79
+ "jit",
80
+ "codegen",
81
+ "zero-dependency"
37
82
  ],
38
83
  "author": "Dmitry Iv",
39
84
  "license": "MIT",
@@ -42,6 +87,8 @@
42
87
  },
43
88
  "homepage": "https://github.com/dy/watr#readme",
44
89
  "devDependencies": {
45
- "tst": "^8.0.2"
90
+ "@playwright/test": "^1.57.0",
91
+ "esbuild": "^0.24.2",
92
+ "tst": "^9.0.0"
46
93
  }
47
94
  }
package/readme.md CHANGED
@@ -1,115 +1,65 @@
1
- # watr [![test](https://github.com/audio-lab/watr/actions/workflows/test.js.yml/badge.svg)](https://github.com/audio-lab/watr/actions/workflows/test.js.yml) [![npm bundle size](https://img.shields.io/bundlephobia/minzip/watr/latest?color=brightgreen&label=gzip)](https://bundlephobia.com/package/watr) [![npm](https://img.shields.io/npm/v/watr?color=white)](https://npmjs.org/watr)
1
+ # watr [![test](https://github.com/dy/watr/actions/workflows/test.js.yml/badge.svg)](https://github.com/dy/watr/actions/workflows/test.js.yml) [![npm bundle size](https://img.shields.io/bundlephobia/minzip/watr/latest?color=brightgreen&label=gzip)](https://bundlephobia.com/package/watr) [![npm](https://img.shields.io/npm/v/watr?color=white)](https://npmjs.org/watr) [![ॐ](https://img.shields.io/badge/MIT-%E0%A5%90-white)](https://krishnized.github.io/license)
2
2
 
3
- Light & fast WAT compiler.<br/>
4
- Useful for high-level languages or dynamic (in-browser) compilation.<br/>
5
- Supports full [spec text syntax](https://webassembly.github.io/spec/core/text/index.html) and [official testsuite](https://github.com/WebAssembly/testsuite).
3
+ Light & fast WAT compiler.
6
4
 
7
- **[REPL](https://dy.github.io/watr/docs/repl)**
5
+ * [feature](https://webassembly.org/features/) & [spec](https://webassembly.github.io/spec/core/text/index.html)-complete, zero deps
6
+ * parse · compile · print · minify
7
+ * instant wasm, JS interop, clear errors
8
8
 
9
- ## Usage
10
-
11
- ### Compile
12
-
13
- Compile wasm text or syntax tree into wasm binary.
14
-
15
- ```js
16
- import { compile } from 'watr'
17
-
18
- const buffer = compile(`(func (export "double")
19
- (param f64) (result f64)
20
- (f64.mul (local.get 0) (f64.const 2))
21
- )`)
22
- const module = new WebAssembly.Module(buffer)
23
- const instance = new WebAssembly.Instance(module)
24
- const {double} = instance.exports
9
+ Useful for backends, JIT compilers, DSLs, code generators, dev tools.
25
10
 
26
- double(108) // 216
27
- ```
11
+ **[Docs](./docs.md)** · **[Repl](https://dy.github.io/watr/repl/)**
28
12
 
29
- ### Parse
30
13
 
31
- Parse input wasm text into syntax tree.
14
+ ## Usage
32
15
 
33
16
  ```js
34
- import { parse } from 'watr'
17
+ import watr, { compile, parse, print } from 'watr'
35
18
 
36
- parse(`(func (export "double") (param f64) (result f64) (f64.mul (local.get 0) (f64.const 2)))`)
37
- // [
38
- // 'func', ['export', '"double"'], ['param', 'f64'], ['result', 'f64'],
39
- // ['f64.mul', ['local.get', 0], ['f64.const', 2]]
40
- // ]
41
- ```
42
-
43
- ### Print
19
+ // instant wasm function
20
+ const { add } = watr`(func (export "add") (param i32 i32) (result i32)
21
+ (i32.add (local.get 0) (local.get 1))
22
+ )`
23
+ add(2, 3) // 5
44
24
 
45
- Format input wasm text or syntax tree into minified or pretty form.
25
+ // auto-import functions
26
+ const { test } = watr`(func (export "test") (call ${console.log} (i32.const 42)))`
27
+ test() // logs 42
46
28
 
47
- ```js
48
- import { print } from 'watr'
29
+ // interpolate values
30
+ const { pi } = watr`(global (export "pi") f64 (f64.const ${Math.PI}))`
49
31
 
50
- const src = `(func (export "double")
51
- (param f64) (result f64)
52
- (f64.mul (local.get 0) (f64.const 2))
53
- )`
32
+ // compile to binary
33
+ const binary = compile(`(func (export "f") (result f64) (f64.const 1))`)
34
+ const module = new WebAssembly.Module(binary)
35
+ const { f } = new WebAssembly.Instance(module).exports
54
36
 
55
- // pretty-print (default)
56
- print(src, {
57
- indent: ' ',
58
- newline: '\n',
59
- })
60
- // (func
61
- // (export "double")
62
- // (param f64)
63
- // (result f64)
64
- // (f64.mul (local.get 0) (f64.const 2))
65
- // )
66
-
67
- // minify
68
- print(src, {
69
- indent: false,
70
- newline: false
71
- })
72
- // (func(export "double")(param f64)(result f64)(f64.mul(local.get 0)(f64.const 2)))
37
+ // parse / print
38
+ parse('(i32.const 42)') // ['i32.const', 42]
39
+ print('(module(func(result i32)i32.const 42))') // (module\n (func (result i32)\n ...
73
40
  ```
74
41
 
75
- <!-- See [REPL](https://audio-lab.github.io/watr/repl.html).-->
76
-
77
- ## Status
42
+ ## CLI
78
43
 
79
- * [x] core
80
- * [x] [mutable globals](https://github.com/WebAssembly/mutable-global), [extended const](https://github.com/WebAssembly/extended-const/blob/main/proposals/extended-const/Overview.md), [nontrapping float to int](https://github.com/WebAssembly/nontrapping-float-to-int-conversions), [sign extension](https://github.com/WebAssembly/sign-extension-ops)
81
- * [x] [multi-value](https://github.com/WebAssembly/spec/blob/master/proposals/multi-value/Overview.md), [bulk memory ops](https://github.com/WebAssembly/bulk-memory-operations/blob/master/proposals/bulk-memory-operations/Overview.md), [multiple memories](https://github.com/WebAssembly/multi-memory/blob/master/proposals/multi-memory/Overview.md)
82
- * [x] [simd](https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md), [relaxed simd](https://github.com/WebAssembly/relaxed-simd), [fixed-width simd](https://github.com/WebAssembly/simd/blob/master/proposals/simd/SIMD.md)
83
- * [x] [tail_call](https://github.com/WebAssembly/tail-call)
84
- * [x] [ref types](https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md), [func refs](https://github.com/WebAssembly/function-references/blob/main/proposals/function-references/Overview.md)
85
- * [x] [gc](https://github.com/WebAssembly/gc)
86
- * [ ] [exceptions](https://github.com/WebAssembly/exception-handling)
87
- * [ ] [memory64](https://github.com/WebAssembly/memory64)
88
- * [ ] [annotations](https://github.com/WebAssembly/annotations), [code_metadata](https://github.com/WebAssembly/tool-conventions/blob/main/CodeMetadata.md)
89
- * [ ] [js strings](https://github.com/WebAssembly/js-string-builtins/blob/main/proposals/js-string-builtins/Overview.md)
44
+ ```sh
45
+ npx watr input.wat # input.wasm
46
+ npx watr input.wat -o out.wasm # custom output
47
+ npx watr input.wat --print # pretty-print
48
+ npx watr input.wat --minify # minify
49
+ ```
90
50
 
91
- ## Alternatives
51
+ ## Metrics
92
52
 
93
- &nbsp; | Size (gzipped) | Performance
53
+ &nbsp; | Size | Speed
94
54
  ---|---|---
95
- watr | 6.2 kb | 11.6 op/s
96
- [spec/wast.js](https://github.com/WebAssembly/spec/tree/main/interpreter#javascript-library) | 216 kb | 7.1 op/s
97
- [wabt](https://github.com/WebAssembly/wabt) | 282 kb | 2.3 op/s
98
- [wat-compiler](https://github.com/stagas/wat-compiler) | 7.7 kb | 1.34 op/s
99
-
100
- <!--
101
- ## Projects using watr
55
+ **watr** | **10 KB** | **4,460 op/s**
56
+ [spec/wast.js](https://github.com/WebAssembly/spec) | 216 KB | 2,185 op/s
57
+ [wabt](https://github.com/WebAssembly/wabt) | 282 KB | 1,273 op/s
58
+ [binaryen](https://github.com/WebAssembly/binaryen) | 1,100 KB | 718 op/s
59
+ [wat-compiler](https://github.com/stagas/wat-compiler) | 7.7 KB (MVP) | 539 op/s |
102
60
 
103
- * [piezo](https://github.com/audio-lab/piezo) – audio processing language
104
- -->
105
61
 
106
- <!--
107
- ## Useful links
108
62
 
109
- * [watlings](https://github.com/EmNudge/watlings) – learn Wasm text by examples.
110
- * [MDN: control flow](https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/Control_flow)
111
- * [WASM reference manual](https://github.com/sunfishcode/wasm-reference-manual/blob/master/WebAssembly.md#loop)
112
- * [WASM binary encoding](https://github.com/WebAssembly/design/blob/main/BinaryEncoding.md)
113
- -->
63
+ ## Used by
114
64
 
115
- <p align=center><a href="https://github.com/krsnzd/license/">🕉</a></p>
65
+ * [jz](https://github.com/dy/jz) – minimal static JS subset