From f50d6af2bb7f5efe9837e0054c73aaa2b900558d Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Mon, 3 Aug 2020 13:57:34 +0200 Subject: [PATCH] Updates for latest wasm-pack formats (#91) * Updates for latest wasm-pack formats * Cleanup sed output --- scripts/build-package.sh | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/scripts/build-package.sh b/scripts/build-package.sh index e201ade5..eee096c6 100755 --- a/scripts/build-package.sh +++ b/scripts/build-package.sh @@ -45,33 +45,44 @@ sed -i -e 's/export var /module\.exports\./g' $ASM echo "*** Copying package sources" cp src/js/* build/ +echo "const crypto = require('crypto'); +const { stringToU8a, u8aToString } = require('@polkadot/util'); + +const requires = { crypto }; + +$(cat $SRC_WASM) +" > $SRC_WASM + +# whack comments +sed -i -e '/^\/\*\*/d' $SRC_WASM +sed -i -e '/^\*/d' $SRC_WASM +sed -i -e '/^\*\//d' $SRC_WASM + # we are swapping to a async interface for webpack support (wasm limits) -sed -i -e 's/wasm = require/\/\/ wasm = require/g' $SRC_WASM +sed -i -e '/^wasm = require/d' $SRC_WASM # We don't want inline requires -sed -i -e 's/var wasm;/const crypto = require('\''crypto'\''); let wasm; const requires = { crypto };/g' $SRC_WASM -sed -i -e 's/return addHeapObject(require(varg0));/return addHeapObject(requires[varg0]);/g' $SRC_WASM +sed -i -e 's/ret = require(getStringFromWasm0(arg0, arg1));/ret = requires[getStringFromWasm0(arg0, arg1)];/g' $SRC_WASM # this creates issues in both the browser and RN (@polkadot/util has a polyfill) -sed -i -e 's/const { TextEncoder } = require(String.raw`util`);/const { stringToU8a } = require('\''@polkadot\/util'\'');/g' $SRC_WASM -sed -i -e 's/let cachedTextEncoder = new /\/\/ let cachedTextEncoder = new /g' $SRC_WASM +sed -i -e '/^const { TextEncoder } = require/d' $SRC_WASM +sed -i -e '/^let cachedTextEncoder = new /d' $SRC_WASM sed -i -e 's/cachedTextEncoder\.encode/stringToU8a/g' $SRC_WASM # this creates issues in both the browser and RN (@polkadot/util has a polyfill) -sed -i -e 's/const { TextDecoder } = require(String.raw`util`);/const { u8aToString } = require('\''@polkadot\/util'\'');/g' $SRC_WASM -sed -i -e 's/let cachedTextDecoder = new /\/\/ let cachedTextDecoder = new /g' $SRC_WASM +sed -i -e '/^const { TextDecoder } = require/d' $SRC_WASM +sed -i -e '/^let cachedTextDecoder = new/d' $SRC_WASM sed -i -e 's/cachedTextDecoder\.decode/u8aToString/g' $SRC_WASM # this is where we get the actual bg file -sed -i -e 's/const path = require/\/\/ const path = require/g' $SRC_WASM -sed -i -e 's/const bytes = require/\/\/ const bytes = require/g' $SRC_WASM -sed -i -e 's/const wasmModule =/\/\/ const wasmModule =/g' $SRC_WASM -sed -i -e 's/const wasmInstance =/\/\/ const wasmInstance =/g' $SRC_WASM -sed -i -e 's/wasm = wasmInstance/\/\/ wasm = wasmInstance/g' $SRC_WASM +sed -i -e '/^const path = require/d' $SRC_WASM +sed -i -e '/^const bytes = require/d' $SRC_WASM +sed -i -e '/^const wasmModule =/d' $SRC_WASM +sed -i -e '/^const wasmInstance =/d' $SRC_WASM +sed -i -e '/^wasm = wasmInstance/d' $SRC_WASM # construct our promise and add ready helpers (WASM) -echo " -module.exports.abort = function () { throw new Error('abort'); }; +echo "module.exports.abort = function () { throw new Error('abort'); }; const createPromise = require('./wasm_promise'); const wasmPromise = createPromise().catch(() => null);