diff --git a/packages/bytes-wasm-crypto/package.json b/packages/bytes-wasm-crypto/package.json index 8201ce0e..63bdfd35 100644 --- a/packages/bytes-wasm-crypto/package.json +++ b/packages/bytes-wasm-crypto/package.json @@ -12,6 +12,7 @@ "bugs": "https://github.com/polkadot-js/wasm/issues", "homepage": "https://github.com/polkadot-js/wasm", "dependencies": { - "@babel/runtime": "^7.12.5" + "@babel/runtime": "^7.12.5", + "fflate": "^0.4.2" } } diff --git a/packages/bytes-wasm-crypto/src/buffer.ts b/packages/bytes-wasm-crypto/src/buffer.ts new file mode 100644 index 00000000..9d35e564 --- /dev/null +++ b/packages/bytes-wasm-crypto/src/buffer.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2020 @polkadot/bytes-wasm-crypto authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export const buffer = Buffer.from([]); diff --git a/packages/bytes-wasm-crypto/src/data.ts b/packages/bytes-wasm-crypto/src/data.ts index b86ce514..0cc5f3b1 100644 --- a/packages/bytes-wasm-crypto/src/data.ts +++ b/packages/bytes-wasm-crypto/src/data.ts @@ -1,4 +1,8 @@ // Copyright 2017-2020 @polkadot/bytes-wasm-crypto authors & contributors // SPDX-License-Identifier: Apache-2.0 -export const wasmBytes = null; +import { unzlibSync } from 'fflate'; + +import { buffer } from './buffer'; + +export const wasmBytes = unzlibSync(buffer); diff --git a/packages/wasm-crypto/package.json b/packages/wasm-crypto/package.json index 12b26081..cd68ff0d 100644 --- a/packages/wasm-crypto/package.json +++ b/packages/wasm-crypto/package.json @@ -10,8 +10,8 @@ }, "devDependencies": { "@polkadot/dev": "^0.60.29", - "@polkadot/util": "^4.2.2-14", - "@polkadot/x-randomvalues": "^4.2.2-14", + "@polkadot/util": "^4.2.2-15", + "@polkadot/x-randomvalues": "^4.2.2-15", "override-require": "^1.1.1" }, "peerDependencies": { diff --git a/scripts/pack-wasm-base.js b/scripts/pack-wasm-base.js index 31dd735f..0df02ce6 100755 --- a/scripts/pack-wasm-base.js +++ b/scripts/pack-wasm-base.js @@ -2,24 +2,43 @@ // SPDX-License-Identifier: Apache-2.0 const fs = require('fs'); +const { formatNumber } = require('@polkadot/util'); const A_NAME = 'bytes-asmjs-crypto'; const W_NAME = 'bytes-wasm-crypto'; -const hdr = (package) => `// Copyright 2019-2020 @polkadot/${package} authors & contributors +function hdr (package) { + return `// Copyright 2019-2020 @polkadot/${package} authors & contributors // SPDX-License-Identifier: Apache-2.0 // Generated as part of the build, do not edit `; +} + +// only one of the deps are included, here are the details for package.json - +// "fflate": "^0.4.2" +// "lz4js": "^0.2.0" +function getWasmBuffer (lib = 'fflate') { + const data = fs.readFileSync('./bytes/wasm_opt.wasm'); + const comp = lib === 'fflate' + ? Buffer.from(require('fflate').zlibSync(data, { level: 9 })) + : Buffer.from(require('lz4js').compress(data)); + + console.log(`*** Compressed WASM via ${lib}: ${formatNumber(data.length)} -> ${formatNumber(comp.length)} (${(100 * comp.length / data.length).toFixed(2)}%)`); + + return comp.toString('base64'); +} fs.writeFileSync(`./${A_NAME}/build/data.mjs`, `${hdr(A_NAME)} export { asmJsInit } from './data.js'; `); -fs.writeFileSync(`./${W_NAME}/build/data.mjs`, `${hdr(W_NAME)} -export { wasmBytes } from './data.js'; +fs.writeFileSync(`./${W_NAME}/build/buffer.mjs`, `${hdr(W_NAME)} +export { buffer } from './buffer.js'; `); -fs.writeFileSync('./bytes-wasm-crypto/build/data.js', `${hdr(W_NAME)} -module.exports = { wasmBytes: Buffer.from('${fs.readFileSync('./bytes/wasm_opt.wasm').toString('base64')}', 'base64') }; +fs.writeFileSync('./bytes-wasm-crypto/build/buffer.js', `${hdr(W_NAME)} +const buffer = Buffer.from('${getWasmBuffer()}', 'base64'); + +module.exports = { buffer }; `); diff --git a/yarn.lock b/yarn.lock index 3c98c48a..85c12ea2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1699,6 +1699,7 @@ __metadata: resolution: "@polkadot/bytes-wasm-crypto@workspace:packages/bytes-wasm-crypto" dependencies: "@babel/runtime": ^7.12.5 + fflate: ^0.4.2 languageName: unknown linkType: soft @@ -1796,18 +1797,18 @@ __metadata: languageName: node linkType: hard -"@polkadot/util@npm:^4.2.2-14": - version: 4.2.2-14 - resolution: "@polkadot/util@npm:4.2.2-14" +"@polkadot/util@npm:^4.2.2-15": + version: 4.2.2-15 + resolution: "@polkadot/util@npm:4.2.2-15" dependencies: "@babel/runtime": ^7.12.5 - "@polkadot/x-textdecoder": 4.2.2-14 - "@polkadot/x-textencoder": 4.2.2-14 + "@polkadot/x-textdecoder": 4.2.2-15 + "@polkadot/x-textencoder": 4.2.2-15 "@types/bn.js": ^4.11.6 bn.js: ^4.11.9 camelcase: ^5.3.1 ip-regex: ^4.2.0 - checksum: bfe13736649b08eb08dbc6cf4a312ef13d6baf179755ecf918cc4b20ed673a551a4e0e0c95a641745a4627d14101c27759247d9f06878457f9cc4d8000a6eb70 + checksum: 268630b60794bcaf6626ba3aee209f7418fecf1417cd985a18cbc25ec0d692a63344cb67f6aaeca395a9ad2fa6e175eed1de921123c20a45ff78e299e5b92041 languageName: node linkType: hard @@ -1819,8 +1820,8 @@ __metadata: "@polkadot/bytes-asmjs-crypto": ^2.0.2-15 "@polkadot/bytes-wasm-crypto": ^2.0.2-15 "@polkadot/dev": ^0.60.29 - "@polkadot/util": ^4.2.2-14 - "@polkadot/x-randomvalues": ^4.2.2-14 + "@polkadot/util": ^4.2.2-15 + "@polkadot/x-randomvalues": ^4.2.2-15 override-require: ^1.1.1 peerDependencies: "@polkadot/util": "*" @@ -1828,30 +1829,30 @@ __metadata: languageName: unknown linkType: soft -"@polkadot/x-randomvalues@npm:^4.2.2-14": - version: 4.2.2-14 - resolution: "@polkadot/x-randomvalues@npm:4.2.2-14" +"@polkadot/x-randomvalues@npm:^4.2.2-15": + version: 4.2.2-15 + resolution: "@polkadot/x-randomvalues@npm:4.2.2-15" dependencies: "@babel/runtime": ^7.12.5 - checksum: b8beaf8371334237607832d6e5e19291c03afcf533fff9ddd6e218e51d94273de5b534afd5b57eca31795165b3771f4f308299391299807f833bbce50776f323 + checksum: 2dcde33e485f6b5f01164d926a31871569f53d31ce9c9a374c99883b142942b127b6bf2050d5b22104af6c1493ff0bdb99bae941644225c7bb718a39c8f43096 languageName: node linkType: hard -"@polkadot/x-textdecoder@npm:4.2.2-14": - version: 4.2.2-14 - resolution: "@polkadot/x-textdecoder@npm:4.2.2-14" +"@polkadot/x-textdecoder@npm:4.2.2-15": + version: 4.2.2-15 + resolution: "@polkadot/x-textdecoder@npm:4.2.2-15" dependencies: "@babel/runtime": ^7.12.5 - checksum: 0516ef3abd8e04fe964f6d2aa95a09c80f9f6d8b3d1a62b9df2aae004393c1660ec5d18ce8be23f61043d0cc9903920731b598d5dd1c49f9f1be8d9ee955684f + checksum: 613e253033947c0049798302226d68941b4cf6a3cd60372766578d13ece7b319d93ddd69e7179f49461031ba0bbed8fc93126157e2cc95afbb5b107c80822e3c languageName: node linkType: hard -"@polkadot/x-textencoder@npm:4.2.2-14": - version: 4.2.2-14 - resolution: "@polkadot/x-textencoder@npm:4.2.2-14" +"@polkadot/x-textencoder@npm:4.2.2-15": + version: 4.2.2-15 + resolution: "@polkadot/x-textencoder@npm:4.2.2-15" dependencies: "@babel/runtime": ^7.12.5 - checksum: 2d9c66b1e6e5e5ceb06c552f48f51bb38e881a77a7134a08ab2d725ab42612964234564064d6fb1d47de6d831469b23f9af3662a18867fe4c50cbd9258279c08 + checksum: a7541e899be2375b4cb1913896e7acbc774fcd891947c53d540afd8ebfcca2216c8f31a84e428d88506dda5325369584b7b7e32559b0e6b91e34644884fc0a2c languageName: node linkType: hard @@ -4456,6 +4457,13 @@ __metadata: languageName: node linkType: hard +"fflate@npm:^0.4.2": + version: 0.4.2 + resolution: "fflate@npm:0.4.2" + checksum: e96c19a1d514f74faa1fe320c022aaf1dade597150510da18dce024ff5a2fa0b6e103daf828fac26c54b647777256638fc7106a3dcff078572b8dee73071df54 + languageName: node + linkType: hard + "figures@npm:^3.0.0": version: 3.2.0 resolution: "figures@npm:3.2.0"