'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.str = str; exports.raw = raw; exports.vec = vec; exports.bytevec = bytevec; exports.uint = uint; exports.int = int; exports.makeSimple = makeSimple var I32 = exports.I32 = [127]; var I64 = exports.I64 = [126]; var F32 = exports.F32 = [125]; var F64 = exports.F64 = [124]; var ANYFUNC = exports.ANYFUNC = [112]; var FUNC = exports.FUNC = [96]; var EMPTY = exports.EMPTY = [64]; var MAGIC_NUMBER = exports.MAGIC_NUMBER = [0, 97, 115, 109]; var VERSION_1 = exports.VERSION_1 = [1, 0, 0, 0]; var SECTION_CUSTOM = exports.SECTION_CUSTOM = [0]; var SECTION_TYPE = exports.SECTION_TYPE = [1]; var SECTION_IMPORT = exports.SECTION_IMPORT = [2]; var SECTION_FUNCTION = exports.SECTION_FUNCTION = [3]; var SECTION_TABLE = exports.SECTION_TABLE = [4]; var SECTION_MEMORY = exports.SECTION_MEMORY = [5]; var SECTION_GLOBAL = exports.SECTION_GLOBAL = [6]; var SECTION_EXPORT = exports.SECTION_EXPORT = [7]; var SECTION_START = exports.SECTION_START = [8]; var SECTION_ELEMENT = exports.SECTION_ELEMENT = [9]; var SECTION_CODE = exports.SECTION_CODE = [10]; var SECTION_DATA = exports.SECTION_DATA = [11]; var UNREACHABLE = exports.UNREACHABLE = [0]; var NOP = exports.NOP = [1]; var BLOCK = exports.BLOCK = [2]; var LOOP = exports.LOOP = [3]; var IF = exports.IF = [4]; var ELSE = exports.ELSE = [5]; var END = exports.END = [11]; var BR = exports.BR = [12]; var BR_IF = exports.BR_IF = [13]; var BR_TABLE = exports.BR_TABLE = [14]; var RETURN = exports.RETURN = [15]; var CALL = exports.CALL = [16]; var CALL_INDIRECT = exports.CALL_INDIRECT = [17]; var DROP = exports.DROP = [26]; var SELECT = exports.SELECT = [27]; var LOCAL_GET = exports.LOCAL_GET = [32]; var LOCAL_SET = exports.LOCAL_SET = [33]; var LOCAL_TEE = exports.LOCAL_TEE = [34]; var GLOBAL_GET = exports.GLOBAL_GET = [35]; var GLOBAL_SET = exports.GLOBAL_SET = [36]; var I32_LOAD = exports.I32_LOAD = [40]; var I64_LOAD = exports.I64_LOAD = [41]; var F32_LOAD = exports.F32_LOAD = [42]; var F64_LOAD = exports.F64_LOAD = [43]; var I32_LOAD8_S = exports.I32_LOAD8_S = [44]; var I32_LOAD8_U = exports.I32_LOAD8_U = [45]; var I32_LOAD16_S = exports.I32_LOAD16_S = [46]; var I32_LOAD16_U = exports.I32_LOAD16_U = [47]; var I64_LOAD8_S = exports.I64_LOAD8_S = [48]; var I64_LOAD8_U = exports.I64_LOAD8_U = [49]; var I64_LOAD16_S = exports.I64_LOAD16_S = [50]; var I64_LOAD16_U = exports.I64_LOAD16_U = [51]; var I64_LOAD32_S = exports.I64_LOAD32_S = [52]; var I64_LOAD32_U = exports.I64_LOAD32_U = [53]; var I32_STORE = exports.I32_STORE = [54]; var I64_STORE = exports.I64_STORE = [55]; var F32_STORE = exports.F32_STORE = [56]; var F64_STORE = exports.F64_STORE = [57]; var I32_STORE8 = exports.I32_STORE8 = [58]; var I32_STORE16 = exports.I32_STORE16 = [59]; var I64_STORE8 = exports.I64_STORE8 = [60]; var I64_STORE16 = exports.I64_STORE16 = [61]; var I64_STORE32 = exports.I64_STORE32 = [62]; var CURRENT_MEMORY = exports.CURRENT_MEMORY = [63]; var GROW_MEMORY = exports.GROW_MEMORY = [64]; var I32_CONST = exports.I32_CONST = [65]; var I64_CONST = exports.I64_CONST = [66]; var F32_CONST = exports.F32_CONST = [67]; var F64_CONST = exports.F64_CONST = [68]; var I32_EQZ = exports.I32_EQZ = [69]; var I32_EQ = exports.I32_EQ = [70]; var I32_NE = exports.I32_NE = [71]; var I32_LT_S = exports.I32_LT_S = [72]; var I32_LT_U = exports.I32_LT_U = [73]; var I32_GT_S = exports.I32_GT_S = [74]; var I32_GT_U = exports.I32_GT_U = [75]; var I32_LE_S = exports.I32_LE_S = [76]; var I32_LE_U = exports.I32_LE_U = [77]; var I32_GE_S = exports.I32_GE_S = [78]; var I32_GE_U = exports.I32_GE_U = [79]; var I64_EQZ = exports.I64_EQZ = [80]; var I64_EQ = exports.I64_EQ = [81]; var I64_NE = exports.I64_NE = [82]; var I64_LT_S = exports.I64_LT_S = [83]; var I64_LT_U = exports.I64_LT_U = [84]; var I64_GT_S = exports.I64_GT_S = [85]; var I64_GT_U = exports.I64_GT_U = [86]; var I64_LE_S = exports.I64_LE_S = [87]; var I64_LE_U = exports.I64_LE_U = [88]; var I64_GE_S = exports.I64_GE_S = [89]; var I64_GE_U = exports.I64_GE_U = [90]; var F32_EQ = exports.F32_EQ = [91]; var F32_NE = exports.F32_NE = [92]; var F32_LT = exports.F32_LT = [93]; var F32_GT = exports.F32_GT = [94]; var F32_LE = exports.F32_LE = [95]; var F32_GE = exports.F32_GE = [96]; var F64_EQ = exports.F64_EQ = [97]; var F64_NE = exports.F64_NE = [98]; var F64_LT = exports.F64_LT = [99]; var F64_GT = exports.F64_GT = [100]; var F64_LE = exports.F64_LE = [101]; var F64_GE = exports.F64_GE = [102]; var I32_CLZ = exports.I32_CLZ = [103]; var I32_CTZ = exports.I32_CTZ = [104]; var I32_POPCNT = exports.I32_POPCNT = [105]; var I32_ADD = exports.I32_ADD = [106]; var I32_SUB = exports.I32_SUB = [107]; var I32_MUL = exports.I32_MUL = [108]; var I32_DIV_S = exports.I32_DIV_S = [109]; var I32_DIV_U = exports.I32_DIV_U = [110]; var I32_REM_S = exports.I32_REM_S = [111]; var I32_REM_U = exports.I32_REM_U = [112]; var I32_AND = exports.I32_AND = [113]; var I32_OR = exports.I32_OR = [114]; var I32_XOR = exports.I32_XOR = [115]; var I32_SHL = exports.I32_SHL = [116]; var I32_SHR_S = exports.I32_SHR_S = [117]; var I32_SHR_U = exports.I32_SHR_U = [118]; var I32_ROTL = exports.I32_ROTL = [119]; var I32_ROTR = exports.I32_ROTR = [120]; var I64_CLZ = exports.I64_CLZ = [121]; var I64_CTZ = exports.I64_CTZ = [122]; var I64_POPCNT = exports.I64_POPCNT = [123]; var I64_ADD = exports.I64_ADD = [124]; var I64_SUB = exports.I64_SUB = [125]; var I64_MUL = exports.I64_MUL = [126]; var I64_DIV_S = exports.I64_DIV_S = [127]; var I64_DIV_U = exports.I64_DIV_U = [128]; var I64_REM_S = exports.I64_REM_S = [129]; var I64_REM_U = exports.I64_REM_U = [130]; var I64_AND = exports.I64_AND = [131]; var I64_OR = exports.I64_OR = [132]; var I64_XOR = exports.I64_XOR = [133]; var I64_SHL = exports.I64_SHL = [134]; var I64_SHR_S = exports.I64_SHR_S = [135]; var I64_SHR_U = exports.I64_SHR_U = [136]; var I64_ROTL = exports.I64_ROTL = [137]; var I64_ROTR = exports.I64_ROTR = [138]; var F32_ABS = exports.F32_ABS = [139]; var F32_NEG = exports.F32_NEG = [140]; var F32_CEIL = exports.F32_CEIL = [141]; var F32_FLOOR = exports.F32_FLOOR = [142]; var F32_TRUNC = exports.F32_TRUNC = [143]; var F32_NEAREST = exports.F32_NEAREST = [144]; var F32_SQRT = exports.F32_SQRT = [145]; var F32_ADD = exports.F32_ADD = [146]; var F32_SUB = exports.F32_SUB = [147]; var F32_MUL = exports.F32_MUL = [148]; var F32_DIV = exports.F32_DIV = [149]; var F32_MIN = exports.F32_MIN = [150]; var F32_MAX = exports.F32_MAX = [151]; var F32_COPYSIGN = exports.F32_COPYSIGN = [152]; var F64_ABS = exports.F64_ABS = [153]; var F64_NEG = exports.F64_NEG = [154]; var F64_CEIL = exports.F64_CEIL = [155]; var F64_FLOOR = exports.F64_FLOOR = [156]; var F64_TRUNC = exports.F64_TRUNC = [157]; var F64_NEAREST = exports.F64_NEAREST = [158]; var F64_SQRT = exports.F64_SQRT = [159]; var F64_ADD = exports.F64_ADD = [160]; var F64_SUB = exports.F64_SUB = [161]; var F64_MUL = exports.F64_MUL = [162]; var F64_DIV = exports.F64_DIV = [163]; var F64_MIN = exports.F64_MIN = [164]; var F64_MAX = exports.F64_MAX = [165]; var F64_COPYSIGN = exports.F64_COPYSIGN = [166]; var I32_WRAP_F64 = exports.I32_WRAP_F64 = [167]; var I32_TRUNC_S_F32 = exports.I32_TRUNC_S_F32 = [168]; var I32_TRUNC_U_F32 = exports.I32_TRUNC_U_F32 = [169]; var I32_TRUNC_S_F64 = exports.I32_TRUNC_S_F64 = [170]; var I32_TRUNC_U_F64 = exports.I32_TRUNC_U_F64 = [171]; var I64_EXTEND_S_I32 = exports.I64_EXTEND_S_I32 = [172]; var I64_EXTEND_U_I32 = exports.I64_EXTEND_U_I32 = [173]; var I64_TRUNC_S_F32 = exports.I64_TRUNC_S_F32 = [174]; var I64_TRUNC_U_F32 = exports.I64_TRUNC_U_F32 = [175]; var I64_TRUNC_S_F64 = exports.I64_TRUNC_S_F64 = [176]; var I64_TRUNC_U_F64 = exports.I64_TRUNC_U_F64 = [177]; var F32_CONVERT_S_I32 = exports.F32_CONVERT_S_I32 = [178]; var F32_CONVERT_U_I32 = exports.F32_CONVERT_U_I32 = [179]; var F32_CONVERT_S_I64 = exports.F32_CONVERT_S_I64 = [180]; var F32_CONVERT_U_I64 = exports.F32_CONVERT_U_I64 = [181]; var F32_DEMOTE_F64 = exports.F32_DEMOTE_F64 = [182]; var F64_CONVERT_S_I32 = exports.F64_CONVERT_S_I32 = [183]; var F64_CONVERT_U_I32 = exports.F64_CONVERT_U_I32 = [184]; var F64_CONVERT_S_I64 = exports.F64_CONVERT_S_I64 = [185]; var F64_CONVERT_U_I64 = exports.F64_CONVERT_U_I64 = [186]; var F64_PROMOTE_F32 = exports.F64_PROMOTE_F32 = [187]; var I32_REINTERPRET_F32 = exports.I32_REINTERPRET_F32 = [188]; var I64_REINTERPRET_F64 = exports.I64_REINTERPRET_F64 = [189]; var F32_REINTERPRET_I32 = exports.F32_REINTERPRET_I32 = [190]; var F64_REINTERPRET_I64 = exports.F64_REINTERPRET_I64 = [191]; var DESC_FUNCTION = exports.DESC_FUNCTION = [0]; var DESC_TABLE = exports.DESC_TABLE = [1]; var DESC_MEMORY = exports.DESC_MEMORY = [2]; var DESC_GLOBAL = exports.DESC_GLOBAL = [3]; var LIMIT_MIN = exports.LIMIT_MIN = [0]; var LIMIT_MIN_MAX = exports.LIMIT_MIN_MAX = [1]; var IMMUTABLE = exports.IMMUTABLE = [0] var MUTABLE = exports.MUTABLE = [1] // HELPERS // this function flattens out a nested array of bytes var flatten = exports.flatten = require('flattenbytes'); // turns a string into byte array function str(s) { var bytes = []; for (var i in s) { bytes.push(s.charCodeAt(i)); } return [bytes.length, bytes]; } function raw(s) { var bytes = []; for (var i in s) { bytes.push(s.charCodeAt(i)); } return bytes; } // helper to create a common data structure in bytes [count(items), item[0], item[1] ...] function vec(vals) { return [uint(vals.length), vals]; } // helper to create a common vector of bytes [count(bytes), byte[0], byte[1] ... ] function bytevec(vals) { return vec(flatten(vals)); } let {varint7,varint32,varint64,varuint1,varuint7,varuint32,varuint64} = require('wasm-leb128'); // create a compressed uint function uint(v,b) { if(b===1){ return Array.from(varuint1(v)); } else if(b===7){ return Array.from(varuint7(v)); } else if(b===32){ return Array.from(varuint32(v)); } else if(b===64){ return Array.from(varuint64(v)); } return Array.from(varuint32(v)); } // create a compressed int function int(v,b) { if(b===7){ return Array.from(varint7(v)); } else if(b===32){ return Array.from(varint32(v)); } else if(b===64){ return Array.from(varint64(v)); } return Array.from(varint32(v)); } function makeSimple(inputs,outputs,code){ let main_function_signature = [FUNC,vec(inputs),vec([outputs])]; let main_function_code = bytevec(code); let memory = [LIMIT_MIN_MAX,uint(2),uint(10)]; return flatten([ MAGIC_NUMBER, VERSION_1, [SECTION_TYPE,bytevec(vec([main_function_signature]))], [SECTION_FUNCTION,bytevec(vec([0]))], [SECTION_MEMORY,bytevec(vec([memory]))], [SECTION_EXPORT,bytevec(vec([ [str("main"),DESC_FUNCTION,0], [str("memory"),DESC_MEMORY,0] ]))], [SECTION_CODE,bytevec(vec([main_function_code]))] ]); }