Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ce3e3d67c | ||
|
|
af4ed8a1db | ||
|
|
57248e7ce4 | ||
|
|
fe91118385 | ||
|
|
b36cd04348 | ||
|
|
8ae4176af6 | ||
|
|
775b64f1bd | ||
|
|
66ebae8c62 | ||
|
|
c925bcf8d9 | ||
|
|
beb995d507 | ||
|
|
1523a53e10 | ||
|
|
188f7d3edc | ||
|
|
6da14ce25b | ||
|
|
9cacf07fe3 | ||
|
|
d0258cb3f3 | ||
|
|
b5ae0089d1 | ||
|
|
e07bd1eb00 | ||
|
|
6d79a71d93 | ||
|
|
c3289ca919 | ||
|
|
b7648e5883 | ||
|
|
03b487ae81 | ||
|
|
b1350bd8b4 | ||
|
|
1516d23ea4 | ||
|
|
9abaae980f | ||
|
|
370a529668 | ||
|
|
b7486f4f3b | ||
|
|
ff4a877ef9 | ||
|
|
e0f741db37 | ||
|
|
3107861322 | ||
|
|
7eff345003 | ||
|
|
00f7da2136 | ||
|
|
150a143163 | ||
|
|
f31ec881ef | ||
|
|
0b838d2055 | ||
|
|
b68aefe64d | ||
|
|
9340c296ee | ||
|
|
132ed20d18 | ||
|
|
2927c37776 | ||
|
|
ac63788ecd | ||
|
|
0a64c9d329 | ||
|
|
81c9f3aa33 | ||
|
|
6fae33074a | ||
|
|
679b282061 | ||
|
|
396b4cb598 | ||
|
|
8b67b82047 | ||
|
|
da7d771898 | ||
|
|
42b5942886 | ||
|
|
d848c42bd3 | ||
|
|
e9d034928f | ||
|
|
2f042819ac | ||
|
|
2177d2f2cc | ||
|
|
4d974e4d7f | ||
|
|
cb05a1782a | ||
|
|
5f7cb7641a | ||
|
|
ff62f24cd4 | ||
|
|
d45dfb7dd2 | ||
|
|
1d4de873cb | ||
|
|
edfc1f0610 | ||
|
|
a662a23d19 | ||
|
|
7cff1c8736 | ||
|
|
6bfdebcff5 | ||
|
|
5b3158cb15 | ||
|
|
baa3439646 | ||
|
|
ac040bd62b | ||
|
|
e0a9e33623 |
-11
@@ -1,11 +0,0 @@
|
||||
7
|
||||
|
||||
3.2.2
|
||||
3.2.3
|
||||
3.2.4
|
||||
|
||||
4.0.2
|
||||
4.1.2
|
||||
|
||||
6.1.2
|
||||
6.1.3
|
||||
@@ -8,7 +8,7 @@ module.exports = {
|
||||
ignorePatterns: [
|
||||
...base.ignorePatterns,
|
||||
'**/target/*',
|
||||
'**/build-wasm/*'
|
||||
'**/test/*.ts'
|
||||
],
|
||||
parserOptions: {
|
||||
...base.parserOptions,
|
||||
+49
-13
@@ -1,50 +1,86 @@
|
||||
<!--
|
||||
|
||||
For general support, howto, coding and bundling questions, please use the Substrate & Polkadot StackExchange at https://substrate.stackexchange.com/ and get other ecosystem developers involved. This issues in this repository are meant for the tracking of feature requests and bug reports.
|
||||
For general support, howto, coding and bundling questions, please
|
||||
use the Substrate & Polkadot StackExchange at
|
||||
|
||||
While all issues are looked at non-bug and non-features would take quite a bit longer to get to and may yield less than satisfactory responses in this format.
|
||||
https://substrate.stackexchange.com/
|
||||
|
||||
Additionally, please ensure you have done a search on the existing and closed issues before logging a new request. This saves time on all sides.
|
||||
and get other ecosystem developers involved. This issues in this
|
||||
repository are meant for the tracking of feature requests and bug
|
||||
reports.
|
||||
|
||||
While all issues are looked at non-bug and non-features would take
|
||||
quite a bit longer to get to and may yield less than satisfactory
|
||||
responses in this format.
|
||||
|
||||
Additionally, please ensure you have done a search on the existing
|
||||
and closed issues before logging a new request. This saves time on
|
||||
all sides.
|
||||
|
||||
-->
|
||||
|
||||
|
||||
* **I'm submitting a ...**
|
||||
|
||||
<!--- Try and classify your actual report -->
|
||||
<!---
|
||||
|
||||
REQUIRED:
|
||||
|
||||
Classify the type of report your are submitting
|
||||
|
||||
-->
|
||||
|
||||
- [ ] Bug report
|
||||
- [ ] Feature request
|
||||
- [ ] Support request (please bear the comments above in mind)
|
||||
- [ ] Support request
|
||||
- [ ] Other
|
||||
|
||||
|
||||
* **What is the current behavior and expected behavior?**
|
||||
|
||||
<!--- If you're describing a bug, tell us what should happen -->
|
||||
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
||||
<!---
|
||||
|
||||
REQUIRED:
|
||||
|
||||
If you're describing a bug, tell us what should happen. If you're
|
||||
suggesting a change/improvement, tell us how it should work.
|
||||
|
||||
-->
|
||||
|
||||
|
||||
* **What is the motivation for changing the behavior?**
|
||||
|
||||
<!--- Not obligatory, but suggest a motivation for the request -->
|
||||
<!--- or ideas how to implement the addition or change -->
|
||||
<!---
|
||||
|
||||
OPTIONAL:
|
||||
|
||||
Suggest a motivation for the request or ideas how to implement the
|
||||
addition or change
|
||||
|
||||
-->
|
||||
|
||||
|
||||
* **Please tell us about your environment:**
|
||||
|
||||
<!--- Include as many relevant details about the environment you experienced the issue in -->
|
||||
<!--- Also snsure that you have tested against the latest stable releases if a bug -->
|
||||
<!---
|
||||
|
||||
REQUIRED:
|
||||
|
||||
Include as many relevant details about the environment in which you
|
||||
experienced the issue. Also ensure that you have tested against the
|
||||
latest stable releases if you believe this to be a bug
|
||||
|
||||
-->
|
||||
|
||||
- Version:
|
||||
- Environment:
|
||||
|
||||
- [ ] Node.js
|
||||
- [ ] Browser
|
||||
- [ ] Other (limited support for other environments available)
|
||||
- [ ] Other (limited support for other environments)
|
||||
|
||||
- Language:
|
||||
|
||||
- [ ] JavaScript
|
||||
- [ ] TypeScript
|
||||
- [ ] TypeScript (include tsc --version)
|
||||
- [ ] Other
|
||||
|
||||
@@ -5,15 +5,22 @@ jobs:
|
||||
pr:
|
||||
strategy:
|
||||
matrix:
|
||||
step: ['lint', 'test', 'build']
|
||||
step: ['lint', 'test', 'build', 'deno']
|
||||
name: ${{ matrix.step }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: denoland/setup-deno@v1
|
||||
with:
|
||||
deno-version: vx.x.x
|
||||
- name: ${{ matrix.step }}
|
||||
if: always()
|
||||
run: |
|
||||
yarn install --immutable | grep -v 'YN0013'
|
||||
./scripts/install-build-deps.sh
|
||||
if [ "${{ matrix.step }}" != "lint" ]; then
|
||||
./scripts/install-build-deps.sh
|
||||
fi
|
||||
yarn polkadot-dev-deno-map
|
||||
yarn ${{ matrix.step }}
|
||||
|
||||
+3
-6
@@ -1,19 +1,16 @@
|
||||
binaryen/
|
||||
bindgen/
|
||||
build/
|
||||
build-cjs/
|
||||
build-esm/
|
||||
build-deno/
|
||||
build-docs/
|
||||
build-wasm/
|
||||
build-*/
|
||||
bytes/
|
||||
coverage/
|
||||
docs/.vuepress/dist/
|
||||
node_modules/
|
||||
pkg/
|
||||
target/
|
||||
tmp/
|
||||
wabt/
|
||||
/import_map.json
|
||||
/mod.ts
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
|
||||
@@ -1,5 +1,52 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 6.3.1 Jul 21, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Optimize packed WASM base64 decoding loop
|
||||
- Adjust test environment (no duplication)
|
||||
- Adjust CI check steps, align with other org repos
|
||||
- Remove unneeded `import_map.in.json` for Deno tests
|
||||
|
||||
|
||||
## 6.2.3 Jul 7, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Optimize WASM init with pre-allocated buffers
|
||||
- Additional platform-specific tests
|
||||
|
||||
|
||||
## 6.2.2 Jul 4, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Protect against potential low-level double-sign leak in dalek-ed25519 (Don't use provided input pubKey, see https://github.com/MystenLabs/ed25519-unsafe-libs)
|
||||
|
||||
|
||||
## 6.2.1 Jul 1, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Add missing `peerDependencies` to `wasm-crypto` (`bridge` requirement)
|
||||
- Adjust `WebAssembly.{Memory, ModuleImports}` usage to cater for non-dom TS
|
||||
|
||||
|
||||
## 6.1.5 Jun 23, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust build outputs for Deno targets
|
||||
|
||||
|
||||
## 6.1.4 Jun 22, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust build outputs for Deno targets
|
||||
|
||||
|
||||
## 6.1.3 Jun 21, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
436 Jaco 6.1.3 (#371)
|
||||
469 Jaco 6.3.1 (#405)
|
||||
1 Evgeny Fixed type (#121)
|
||||
1 Shunfan Zhou Support sr25519 agreement (#209)
|
||||
1 Steve Degosserie Expose Schnorrkel's VRF capabilities (#170)
|
||||
|
||||
+12
-3
@@ -10,7 +10,12 @@
|
||||
"url": "https://github.com/polkadot-js/wasm.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"version": "6.1.3",
|
||||
"type": "module",
|
||||
"version": "6.3.1",
|
||||
"versions": {
|
||||
"git": "6.3.1",
|
||||
"npm": "6.3.1"
|
||||
},
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
@@ -22,17 +27,21 @@
|
||||
"build:rollup": "polkadot-exec-rollup --config",
|
||||
"build:wasm": "./scripts/build.sh",
|
||||
"clean": "./scripts/clean.sh",
|
||||
"deno": "yarn deno:build && yarn deno:check",
|
||||
"deno:build": "WITH_DENO=1 yarn build",
|
||||
"deno:check": "deno check --import-map=import_map.json mod.ts",
|
||||
"lint": "polkadot-dev-run-lint",
|
||||
"postinstall": "polkadot-dev-yarn-only",
|
||||
"test": "yarn test:wasm-crypto:rust",
|
||||
"test:wasm-crypto:deno": "deno test --allow-read --import-map=import_map.json packages/wasm-crypto/test/deno.ts",
|
||||
"test:wasm-crypto:js": "yarn test:wasm-crypto:js:jest && yarn test:wasm-crypto:js:node",
|
||||
"test:wasm-crypto:js:jest": "polkadot-dev-run-test ./test/jest.spec.js",
|
||||
"test:wasm-crypto:js:node": "cd packages/wasm-crypto && node ./test/wasm.cjs && node ./test/asm.cjs",
|
||||
"test:wasm-crypto:rust": "cd packages/wasm-crypto && RUST_BACKTRACE=full cargo test --release -- --test-threads=1 --nocapture"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.18.5",
|
||||
"@polkadot/dev": "^0.67.20",
|
||||
"@babel/core": "^7.18.9",
|
||||
"@polkadot/dev": "^0.67.84",
|
||||
"fflate": "^0.7.3",
|
||||
"override-require": "^1.1.1"
|
||||
},
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
# @polkadot/wasm-bridge
|
||||
|
||||
A re-usable bridge between JS & WASM interfaces. It is used internally by `@polkadot/wasm-crypto`.
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "6.1.3",
|
||||
"version": "6.3.1",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3"
|
||||
"@babel/runtime": "^7.18.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1",
|
||||
"@polkadot/x-randomvalues": "^9.5.1"
|
||||
"@polkadot/util": "^10.0.2",
|
||||
"@polkadot/x-randomvalues": "^10.0.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
// then ensures that the internal wasm instance here is available
|
||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||
|
||||
import type { BridgeBase, InitFn, InitPromise, WasmBaseInstance } from './types';
|
||||
import type { BridgeBase, InitFn, InitPromise, WasmBaseInstance, WasmImports } from './types';
|
||||
|
||||
import { stringToU8a, u8aToString } from '@polkadot/util';
|
||||
|
||||
@@ -31,7 +31,7 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
|
||||
#wasm: C | null;
|
||||
#wasmError: string | null;
|
||||
#wasmPromise: InitPromise<C> | null;
|
||||
#wbg: WebAssembly.ModuleImports;
|
||||
#wbg: WasmImports;
|
||||
#type: 'asm' | 'wasm' | 'none';
|
||||
|
||||
constructor (createWasm: InitFn<C>) {
|
||||
@@ -59,11 +59,6 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
|
||||
return this.#type;
|
||||
}
|
||||
|
||||
/** @description Returns the created wbg interface */
|
||||
get wbg (): WebAssembly.ModuleImports {
|
||||
return this.#wbg;
|
||||
}
|
||||
|
||||
/** @description Returns the created wasm interface */
|
||||
get wasm (): C | null {
|
||||
return this.#wasm;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-bundle authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { InitFn, InitPromise, InitResult, WasmBaseInstance } from './types';
|
||||
import type { InitFn, InitPromise, InitResult, WasmBaseInstance, WasmImports } from './types';
|
||||
|
||||
/**
|
||||
* @name createWasmFn
|
||||
@@ -11,8 +11,8 @@ import type { InitFn, InitPromise, InitResult, WasmBaseInstance } from './types'
|
||||
* It will attempt to create a WASM interface first and if this fails or is not available in
|
||||
* the environment, will fallback to attempting to create an ASM.js interface.
|
||||
*/
|
||||
export function createWasmFn <C extends WasmBaseInstance> (root: string, wasmBytes: null | Uint8Array, asmFn: null | ((wbg: WebAssembly.ModuleImports) => C)): InitFn<C> {
|
||||
return async (wbg: WebAssembly.ModuleImports): InitPromise<C> => {
|
||||
export function createWasmFn <C extends WasmBaseInstance> (root: string, wasmBytes: null | Uint8Array, asmFn: null | ((wbg: WasmImports) => C)): InitFn<C> {
|
||||
return async (wbg: WasmImports): InitPromise<C> => {
|
||||
const result: InitResult<C> = {
|
||||
error: null,
|
||||
type: 'none',
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/wasm-bridge', path: 'auto', type: 'auto', version: '6.1.3' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-bridge', path: 'auto', type: 'auto', version: '6.3.1' };
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-bridge authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Use non-strong types instead of WasmImports which may not
|
||||
// be available as part of the TS environment types (it needs dom)
|
||||
export type WasmImports = Record<string, (...args: never[]) => unknown>;
|
||||
|
||||
// Use non-strong types instead of WebAssembly.Memory which may not
|
||||
// be available as part of the TS environment types (it needs dom)
|
||||
export type WasmMemory = { buffer: ArrayBuffer };
|
||||
|
||||
export declare interface InitResult<C extends WasmBaseInstance> {
|
||||
error: string | null;
|
||||
type: 'asm' | 'wasm' | 'none';
|
||||
@@ -9,11 +17,9 @@ export declare interface InitResult<C extends WasmBaseInstance> {
|
||||
|
||||
export type InitPromise <C extends WasmBaseInstance> = Promise<InitResult<C>>;
|
||||
|
||||
export type InitFn <C extends WasmBaseInstance> = (wbg: WebAssembly.ModuleImports) => InitPromise<C>;
|
||||
export type InitFn <C extends WasmBaseInstance> = (wbg: WasmImports) => InitPromise<C>;
|
||||
|
||||
export interface BridgeBase<C extends WasmBaseInstance> extends InitResult<C> {
|
||||
wbg: WebAssembly.ModuleImports;
|
||||
|
||||
init (createWasm?: InitFn<C>): Promise<C | null>;
|
||||
getObject (idx: number): unknown;
|
||||
dropObject (idx: number): void;
|
||||
@@ -30,7 +36,7 @@ export interface BridgeBase<C extends WasmBaseInstance> extends InitResult<C> {
|
||||
}
|
||||
|
||||
export interface WasmBaseInstance {
|
||||
memory: WebAssembly.Memory;
|
||||
memory: WasmMemory;
|
||||
|
||||
// wbindgen functions (required and used internally)
|
||||
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
## @polkadot/wasm-crypto-asmjs
|
||||
|
||||
Asm.js build outputs.
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
},
|
||||
"sideEffects": false,
|
||||
"type": "module",
|
||||
"version": "6.1.3",
|
||||
"version": "6.3.1",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3"
|
||||
"@babel/runtime": "^7.18.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^10.0.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*"
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export * from '../data.js';
|
||||
@@ -1,5 +1,4 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-crypto-asmjs authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export { asmJsInit } from './deno/data.js';
|
||||
export { packageInfo } from './packageInfo';
|
||||
export * from './index';
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-asmjs', path: 'auto', type: 'auto', version: '6.1.3' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-asmjs', path: 'auto', type: 'auto', version: '6.3.1' };
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
## @polkadot/wasm-crypto-init
|
||||
|
||||
Internal `@polkadot/wasm-crypto` initialization functions for Browser, Node & RN.
|
||||
|
||||
@@ -20,20 +20,22 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "6.1.3",
|
||||
"version": "6.3.1",
|
||||
"browser": "wasm.js",
|
||||
"main": "wasm.js",
|
||||
"react-native": "asm.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@polkadot/wasm-bridge": "6.1.3",
|
||||
"@polkadot/wasm-crypto-asmjs": "6.1.3",
|
||||
"@polkadot/wasm-crypto-wasm": "6.1.3"
|
||||
"@babel/runtime": "^7.18.9",
|
||||
"@polkadot/wasm-bridge": "6.3.1",
|
||||
"@polkadot/wasm-crypto-asmjs": "6.3.1",
|
||||
"@polkadot/wasm-crypto-wasm": "6.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^10.0.2",
|
||||
"@polkadot/x-randomvalues": "^10.0.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*"
|
||||
"@polkadot/util": "*",
|
||||
"@polkadot/x-randomvalues": "*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-init', path: 'auto', type: 'auto', version: '6.1.3' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-init', path: 'auto', type: 'auto', version: '6.3.1' };
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
## @polkadot/wasm-crypto-wasm
|
||||
|
||||
Wasm build outputs.
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
},
|
||||
"sideEffects": false,
|
||||
"type": "module",
|
||||
"version": "6.1.3",
|
||||
"version": "6.3.1",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@polkadot/wasm-util": "6.1.3"
|
||||
"@babel/runtime": "^7.18.9",
|
||||
"@polkadot/wasm-util": "6.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^10.0.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import { base64Decode, unzlibSync } from '@polkadot/wasm-util';
|
||||
|
||||
import { bytes, sizeUncompressed } from './cjs/bytes';
|
||||
import { bytes, lenIn, lenOut } from './cjs/bytes.js';
|
||||
|
||||
export { packageInfo } from './packageInfo';
|
||||
|
||||
@@ -16,4 +16,4 @@ export { packageInfo } from './packageInfo';
|
||||
* Upon loading the exposed bytes will be decoded and decompressed form this
|
||||
* specific format and returned.
|
||||
*/
|
||||
export const wasmBytes = unzlibSync(base64Decode(bytes), new Uint8Array(sizeUncompressed));
|
||||
export const wasmBytes = unzlibSync(base64Decode(bytes, new Uint8Array(lenIn)), new Uint8Array(lenOut));
|
||||
|
||||
+2
-2
@@ -3,6 +3,6 @@
|
||||
|
||||
export declare const bytes: string;
|
||||
|
||||
export declare const sizeCompressed: number;
|
||||
export declare const lenIn: number;
|
||||
|
||||
export declare const sizeUncompressed: number;
|
||||
export declare const lenOut: number;
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
|
||||
module.exports.bytes = '';
|
||||
|
||||
module.exports.sizeCompressed = 0;
|
||||
module.exports.lenIn = 0;
|
||||
|
||||
module.exports.sizeUncompressed = 0;
|
||||
module.exports.lenOut = 0;
|
||||
|
||||
+2
-2
@@ -3,6 +3,6 @@
|
||||
|
||||
export declare const bytes: string;
|
||||
|
||||
export declare const sizeCompressed: number;
|
||||
export declare const lenIn: number;
|
||||
|
||||
export declare const sizeUncompressed: number;
|
||||
export declare const lenOut: number;
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
|
||||
export const bytes = '';
|
||||
|
||||
export const sizeCompressed = 0;
|
||||
export const lenIn = 0;
|
||||
|
||||
export const sizeUncompressed = 0;
|
||||
export const lenOut = 0;
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export * from '../bytes.js';
|
||||
@@ -1,21 +1,4 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import './detectPackage';
|
||||
|
||||
import { base64Decode, unzlibSync } from '@polkadot/wasm-util';
|
||||
|
||||
import { bytes, sizeUncompressed } from './deno/bytes.js';
|
||||
|
||||
export { packageInfo } from './packageInfo';
|
||||
|
||||
/**
|
||||
* @name wasmBytes
|
||||
* @description
|
||||
* The decoded WASM interface as exposed by this package.
|
||||
*
|
||||
* The build process will output into cjs/* into a compressed base64 format.
|
||||
* Upon loading the exposed bytes will be decoded and decompressed form this
|
||||
* specific format and returned.
|
||||
*/
|
||||
export const wasmBytes = unzlibSync(base64Decode(bytes), new Uint8Array(sizeUncompressed));
|
||||
export * from './index';
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-wasm', path: 'auto', type: 'auto', version: '6.1.3' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-wasm', path: 'auto', type: 'auto', version: '6.3.1' };
|
||||
|
||||
@@ -11,21 +11,19 @@ Install the package (also requires `@polkadot/util` for `TextEncoder` polyfills
|
||||
Use it -
|
||||
|
||||
```js
|
||||
const { u8aToHex } = require('@polkadot/util');
|
||||
const { bip39Generate, bip39ToSeed, waitReady } = require('@polkadot/wasm-crypto');
|
||||
import { u8aToHex } from '@polkadot/util';
|
||||
import { bip39Generate, bip39ToSeed, waitReady } from '@polkadot/wasm-crypto';
|
||||
|
||||
async function main () {
|
||||
// first wait until the WASM has been loaded (async init)
|
||||
await waitReady();
|
||||
// first wait until the WASM has been loaded (async init)
|
||||
await waitReady();
|
||||
|
||||
// generate phrase
|
||||
const phrase = bip39Generate(12);
|
||||
// generate phrase
|
||||
const phrase = bip39Generate(12);
|
||||
|
||||
// get ed25519 seed from phrase
|
||||
const seed = bip39ToSeed(phrase, '');
|
||||
// get ed25519 seed from phrase
|
||||
const seed = bip39ToSeed(phrase, '');
|
||||
|
||||
// display
|
||||
console.log('phrase:', phrase);
|
||||
console.log('seed:', u8aToHex(seed));
|
||||
}
|
||||
// display
|
||||
console.log('phrase:', phrase);
|
||||
console.log('seed:', u8aToHex(seed));
|
||||
```
|
||||
|
||||
@@ -28,20 +28,22 @@
|
||||
"./initWasmAsm.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "6.1.3",
|
||||
"version": "6.3.1",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@polkadot/wasm-bridge": "6.1.3",
|
||||
"@polkadot/wasm-crypto-asmjs": "6.1.3",
|
||||
"@polkadot/wasm-crypto-init": "6.1.3",
|
||||
"@polkadot/wasm-crypto-wasm": "6.1.3",
|
||||
"@polkadot/wasm-util": "6.1.3"
|
||||
"@babel/runtime": "^7.18.9",
|
||||
"@polkadot/wasm-bridge": "6.3.1",
|
||||
"@polkadot/wasm-crypto-asmjs": "6.3.1",
|
||||
"@polkadot/wasm-crypto-init": "6.3.1",
|
||||
"@polkadot/wasm-crypto-wasm": "6.3.1",
|
||||
"@polkadot/wasm-util": "6.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^10.0.2",
|
||||
"@polkadot/x-randomvalues": "^10.0.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*"
|
||||
"@polkadot/util": "*",
|
||||
"@polkadot/x-randomvalues": "*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto', path: 'auto', type: 'auto', version: '6.1.3' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto', path: 'auto', type: 'auto', version: '6.3.1' };
|
||||
|
||||
@@ -6,15 +6,14 @@ use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature, Signer as _, Verif
|
||||
use wasm_bindgen::prelude::*;
|
||||
|
||||
/// Keypair helper function
|
||||
fn new_from_parts(pubkey: &[u8], seckey: &[u8]) -> Keypair {
|
||||
let mut pair = vec![];
|
||||
fn new_from_seed(seed: &[u8]) -> Keypair {
|
||||
match SecretKey::from_bytes(seed) {
|
||||
Ok(secret) => {
|
||||
let public: PublicKey = (&secret).into();
|
||||
|
||||
pair.extend_from_slice(seckey);
|
||||
pair.extend_from_slice(pubkey);
|
||||
|
||||
match Keypair::from_bytes(&pair) {
|
||||
Ok(p) => p,
|
||||
_ => panic!("Provided pair is invalid.")
|
||||
Keypair { secret: secret, public: public }
|
||||
},
|
||||
_ => panic!("Invalid seed provided.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,16 +25,9 @@ fn new_from_parts(pubkey: &[u8], seckey: &[u8]) -> Keypair {
|
||||
/// followed by the public key (32) bytes, as the full secret keys.
|
||||
#[wasm_bindgen]
|
||||
pub fn ext_ed_from_seed(seed: &[u8]) -> Vec<u8> {
|
||||
match &SecretKey::from_bytes(seed) {
|
||||
Ok(s) => {
|
||||
let pubkey: PublicKey = s.into();
|
||||
|
||||
new_from_parts(pubkey.as_bytes(), seed)
|
||||
.to_bytes()
|
||||
.to_vec()
|
||||
},
|
||||
_ => panic!("Invalid seed provided.")
|
||||
}
|
||||
new_from_seed(seed)
|
||||
.to_bytes()
|
||||
.to_vec()
|
||||
}
|
||||
|
||||
/// Sign a message
|
||||
@@ -43,14 +35,16 @@ pub fn ext_ed_from_seed(seed: &[u8]) -> Vec<u8> {
|
||||
/// The combination of both public and private key must be provided.
|
||||
/// This is effectively equivalent to a keypair.
|
||||
///
|
||||
/// * pubkey: UIntArray with 32 element
|
||||
/// * _: UIntArray with 32 element (was pubkey, now ignored)
|
||||
/// * private: UIntArray with 64 element
|
||||
/// * message: Arbitrary length UIntArray
|
||||
///
|
||||
/// * returned vector is the signature consisting of 64 bytes.
|
||||
#[wasm_bindgen]
|
||||
pub fn ext_ed_sign(pubkey: &[u8], seckey: &[u8], message: &[u8]) -> Vec<u8> {
|
||||
new_from_parts(pubkey, seckey)
|
||||
pub fn ext_ed_sign(_: &[u8], seckey: &[u8], message: &[u8]) -> Vec<u8> {
|
||||
// https://github.com/MystenLabs/ed25519-unsafe-libs
|
||||
// we never use the provided pubkey
|
||||
new_from_seed(seckey)
|
||||
.sign(message)
|
||||
.to_bytes()
|
||||
.to_vec()
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
|
||||
const { assert } = require('@polkadot/util');
|
||||
|
||||
const wasm = require('../../build');
|
||||
const bip39 = require('./bip39.cjs');
|
||||
const ed25519 = require('./ed25519.cjs');
|
||||
const hashing = require('./hashing.cjs');
|
||||
const secp256k1 = require('./secp256k1.cjs');
|
||||
const sr25519 = require('./sr25519.cjs');
|
||||
const vrf = require('./vrf.cjs');
|
||||
const bip39 = require('./bip39.js');
|
||||
const ed25519 = require('./ed25519.js');
|
||||
const hashing = require('./hashing.js');
|
||||
const secp256k1 = require('./secp256k1.js');
|
||||
const sr25519 = require('./sr25519.js');
|
||||
const vrf = require('./vrf.js');
|
||||
|
||||
const tests = {
|
||||
// We place secp256k1 first, this allows the interaction with it in the
|
||||
@@ -23,51 +22,53 @@ const tests = {
|
||||
...hashing
|
||||
};
|
||||
|
||||
async function beforeAll (name) {
|
||||
async function beforeAll (name, wasm) {
|
||||
const result = await wasm.waitReady();
|
||||
|
||||
console.log(`*** waitReady()=${result} for ${wasm.bridge.type}`);
|
||||
|
||||
assert(name.toLowerCase() === wasm.bridge.type, `Incorrect environment laucnhed, expected ${name.toLowerCase()}, found ${wasm.bridge.type}`);
|
||||
assert(name.toLowerCase() === wasm.bridge.type, `Incorrect environment launched, expected ${name.toLowerCase()}, found ${wasm.bridge.type}`);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function runAll (name) {
|
||||
function runAll (name, wasm) {
|
||||
const failed = [];
|
||||
let count = 0;
|
||||
|
||||
Object.keys(tests).forEach((name) => {
|
||||
const timerId = `\t${name}`;
|
||||
Object
|
||||
.entries(tests)
|
||||
.forEach(([name, test]) => {
|
||||
const timerId = `\t${name}`;
|
||||
|
||||
count++;
|
||||
count++;
|
||||
|
||||
try {
|
||||
console.time(timerId);
|
||||
console.log();
|
||||
console.log(timerId);
|
||||
try {
|
||||
console.time(timerId);
|
||||
console.log();
|
||||
console.log(timerId);
|
||||
|
||||
tests[name](wasm);
|
||||
test(wasm);
|
||||
|
||||
console.timeEnd(timerId);
|
||||
} catch (error) {
|
||||
console.error();
|
||||
console.error(error);
|
||||
console.timeEnd(timerId);
|
||||
} catch (error) {
|
||||
console.error();
|
||||
console.error(error);
|
||||
|
||||
failed.push(name);
|
||||
}
|
||||
});
|
||||
failed.push(name);
|
||||
}
|
||||
});
|
||||
|
||||
if (failed.length) {
|
||||
throw new Error(`\n*** ${name}: FAILED: ${failed.length} of ${count}: ${failed.join(', ')}`);
|
||||
}
|
||||
}
|
||||
|
||||
function runUnassisted (name) {
|
||||
function runUnassisted (name, wasm) {
|
||||
console.log(`\n*** ${name}: Running tests`);
|
||||
|
||||
beforeAll(name)
|
||||
.then(() => runAll(name))
|
||||
beforeAll(name, wasm)
|
||||
.then(() => runAll(name, wasm))
|
||||
.then(() => {
|
||||
console.log(`\n*** ${name}: All passed`);
|
||||
process.exit(0);
|
||||
@@ -82,6 +83,5 @@ module.exports = {
|
||||
beforeAll,
|
||||
runAll,
|
||||
runUnassisted,
|
||||
tests,
|
||||
wasm
|
||||
tests
|
||||
};
|
||||
@@ -0,0 +1 @@
|
||||
{ "type": "commonjs" }
|
||||
@@ -4,6 +4,7 @@
|
||||
require('./alias-imports.cjs');
|
||||
require('@polkadot/wasm-crypto/initOnlyAsm');
|
||||
|
||||
const { runUnassisted } = require('./all/index.cjs');
|
||||
const wasm = require('../build');
|
||||
const { runUnassisted } = require('./all/index.js');
|
||||
|
||||
runUnassisted('ASM');
|
||||
runUnassisted('ASM', wasm);
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-crypto authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { createRequire } from 'https://deno.land/std@0.107.0/node/module.ts';
|
||||
|
||||
import * as wasm from '../build-deno/mod.ts';
|
||||
|
||||
declare const globalThis: Record<string, unknown>;
|
||||
|
||||
// ensure we set require on globalThis, it is used is all/*.js
|
||||
const require = globalThis.require = createRequire(import.meta.url);
|
||||
const { beforeAll, tests } = require('./all/index.js');
|
||||
|
||||
await beforeAll('wasm', wasm);
|
||||
|
||||
Object
|
||||
.entries<(wasm: unknown) => void>(tests)
|
||||
.forEach(([name, test]) => {
|
||||
Deno.test(name, () => test(wasm));
|
||||
});
|
||||
@@ -5,11 +5,12 @@
|
||||
* @jest-environment jsdom
|
||||
*/
|
||||
|
||||
import { beforeAll as beforeAllFn, tests, wasm } from './all/index.cjs';
|
||||
import * as wasm from '../build';
|
||||
import { beforeAll as beforeAllFn, tests } from './all/index.js';
|
||||
|
||||
describe('wasm-crypto', () => {
|
||||
beforeAll(async () => {
|
||||
await beforeAllFn('wasm');
|
||||
await beforeAllFn('wasm', wasm);
|
||||
});
|
||||
|
||||
Object.keys(tests).forEach((name) => {
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
require('./alias-imports.cjs');
|
||||
|
||||
const { runUnassisted } = require('./all/index.cjs');
|
||||
const wasm = require('../build');
|
||||
const { runUnassisted } = require('./all/index.js');
|
||||
|
||||
runUnassisted('WASM');
|
||||
runUnassisted('WASM', wasm);
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"exclude": [
|
||||
"**/test/*.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../wasm-bridge/tsconfig.build.json" },
|
||||
{ "path": "../wasm-crypto-init/tsconfig.build.json" },
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
## @polkadot/wasm-util
|
||||
|
||||
Wasm utility functions, used internally in `@polkadot/wasm-crypto`.
|
||||
|
||||
@@ -20,13 +20,13 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "6.1.3",
|
||||
"version": "6.3.1",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3"
|
||||
"@babel/runtime": "^7.18.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^10.0.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*"
|
||||
|
||||
@@ -1,31 +1,44 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-util authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
// Use an array for our indexer - this is faster than using map access. In
|
||||
// this case we assume ASCII-only inputs, so we cannot overflow the array
|
||||
const chr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
const map = new Array<number>(256);
|
||||
|
||||
// We use charCodeAt for access here and in the decoder loop - this is faster
|
||||
// on lookups (array + numbers) and also faster than accessing the specific
|
||||
// character via data[i]
|
||||
for (let i = 0; i < chr.length; i++) {
|
||||
map[chr.charCodeAt(i)] = i;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name base64Decode
|
||||
* @description
|
||||
* A fail-safe base64Decoding function that operates in all environments. Unlike
|
||||
* decoding from Buffer (Node.js only) or atob (browser-only) this implementation
|
||||
* is slightly slower, but it is platform independent.
|
||||
* A base64Decoding function that operates in all environments. Unlike decoding
|
||||
* from Buffer (Node.js only) or atob (browser-only) this implementation is
|
||||
* slightly slower, but it is platform independent.
|
||||
*
|
||||
* For our usage, since we have access to the static final size (where used), we
|
||||
* decode to a specified output buffer. This also means we have applied a number
|
||||
* of optimizations based on this - checking output position instead of chars.
|
||||
*/
|
||||
export function base64Decode (data: string): Uint8Array {
|
||||
// TODO: For Node.js speedups, we could add an explicit base64Node.ts implementation
|
||||
// that would be (via export maps) be available in that environment only
|
||||
const bytes = [];
|
||||
export function base64Decode (data: string, out: Uint8Array): Uint8Array {
|
||||
const len = out.length;
|
||||
let byte = 0;
|
||||
let bits = 0;
|
||||
let pos = -1;
|
||||
|
||||
for (let i = 0; i < data.length && data[i] !== '='; i++) {
|
||||
for (let i = 0; pos < len; i++) {
|
||||
// each character represents 6 bits
|
||||
byte = (byte << 6) | chars.indexOf(data[i]);
|
||||
byte = (byte << 6) | map[data.charCodeAt(i)];
|
||||
|
||||
// each byte needs to contain 8 bits
|
||||
if ((bits += 6) >= 8) {
|
||||
bytes.push((byte >>> (bits -= 8)) & 0xff);
|
||||
out[++pos] = (byte >>> (bits -= 8)) & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
return Uint8Array.from(bytes);
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/wasm-util', path: 'auto', type: 'auto', version: '6.1.3' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-util', path: 'auto', type: 'auto', version: '6.3.1' };
|
||||
|
||||
+17
-11
@@ -13,18 +13,24 @@ cd packages
|
||||
|
||||
PKG_NAME=wasm-crypto ../scripts/build-wasm.sh
|
||||
|
||||
yarn test:wasm-crypto:js
|
||||
if [ -z "$WITH_DENO" ]; then
|
||||
yarn test:wasm-crypto:js
|
||||
else
|
||||
yarn test:wasm-crypto:deno
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "*** wasm-crypto"
|
||||
ls -alR wasm-crypto/build
|
||||
echo ""
|
||||
echo "*** wasm-crypto-asmjs"
|
||||
ls -alR wasm-crypto-asmjs/build
|
||||
echo ""
|
||||
echo "*** wasm-crypto-wasm"
|
||||
ls -alR wasm-crypto-wasm/build
|
||||
# echo ""
|
||||
# echo "*** wasm-crypto"
|
||||
# ls -alR wasm-crypto/build
|
||||
# echo ""
|
||||
# echo "*** wasm-crypto-asmjs"
|
||||
# ls -alR wasm-crypto-asmjs/build
|
||||
# echo ""
|
||||
# echo "*** wasm-crypto-wasm"
|
||||
# ls -alR wasm-crypto-wasm/build
|
||||
|
||||
cd ..
|
||||
|
||||
yarn build:rollup
|
||||
if [ -z "$WITH_DENO" ]; then
|
||||
yarn build:rollup
|
||||
fi
|
||||
|
||||
@@ -48,12 +48,12 @@ if [ ! -d "binaryen" ]; then
|
||||
echo "*** Downloading binaryen"
|
||||
curl -L $BINARYEN_REPO/releases/download/$BINARYEN_VER/$BINARYEN_ZIP.tar.gz | tar xz
|
||||
mv binaryen-$BINARYEN_VER binaryen
|
||||
ls -alR binaryen
|
||||
# ls -alR binaryen
|
||||
fi
|
||||
|
||||
if [ ! -d "bindgen" ]; then
|
||||
echo "*** Downloading bindgen"
|
||||
curl -L $BINDGEN_REPO/releases/download/$BINDGEN_VER/$BINDGEN_ZIP.tar.gz | tar xz
|
||||
mv $BINDGEN_ZIP bindgen
|
||||
ls -alR bindgen
|
||||
# ls -alR bindgen
|
||||
fi
|
||||
|
||||
+16
-20
@@ -6,34 +6,30 @@ const fs = require('fs');
|
||||
const mkdirp = require('mkdirp');
|
||||
const { formatNumber } = require('@polkadot/util');
|
||||
|
||||
const DIR_DENO = `./${process.env.PKG_NAME}-wasm/build-deno/deno`;
|
||||
const DIR_CJS = `./${process.env.PKG_NAME}-wasm/build/cjs`;
|
||||
const HDR = `// Copyright 2019-${new Date().getFullYear()} @polkadot/${process.env.PKG_NAME}-wasm authors & contributors\n// SPDX-License-Identifier: Apache-2.0\n\n// Generated as part of the build, do not edit\n`;
|
||||
|
||||
const data = fs.readFileSync(`./${process.env.PKG_NAME}/build-wasm/wasm_opt.wasm`);
|
||||
const compressed = Buffer.from(fflate.zlibSync(data, { level: 9 }));
|
||||
const denoDir = `./${process.env.PKG_NAME}-wasm/build-deno/deno`;
|
||||
const base64 = compressed.toString('base64');
|
||||
|
||||
console.log(`*** Compressed WASM: ${formatNumber(data.length)} -> ${formatNumber(compressed.length)} (${(100 * compressed.length / data.length).toFixed(2)}%)`);
|
||||
console.log(`*** Compressed WASM: in=${formatNumber(data.length)}, out=${formatNumber(compressed.length)}, opt=${(100 * compressed.length / data.length).toFixed(2)}%, base64=${formatNumber(base64.length)}`);
|
||||
|
||||
mkdirp.sync(denoDir);
|
||||
mkdirp.sync(DIR_DENO);
|
||||
|
||||
fs.writeFileSync(`./${process.env.PKG_NAME}-wasm/build/cjs/bytes.js`, `// Copyright 2019-${new Date().getFullYear()} @polkadot/${process.env.PKG_NAME}-wasm authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
fs.writeFileSync(`${DIR_CJS}/bytes.js`, `${HDR}
|
||||
const lenIn = ${compressed.length};
|
||||
const lenOut = ${data.length};
|
||||
const bytes = '${base64}';
|
||||
|
||||
// Generated as part of the build, do not edit
|
||||
|
||||
const sizeCompressed = ${compressed.length};
|
||||
const sizeUncompressed = ${data.length};
|
||||
const bytes = '${compressed.toString('base64')}';
|
||||
|
||||
module.exports = { bytes, sizeCompressed, sizeUncompressed };
|
||||
module.exports = { bytes, lenIn, lenOut };
|
||||
`);
|
||||
|
||||
fs.writeFileSync(`${denoDir}/bytes.js`, `// Copyright 2019-${new Date().getFullYear()} @polkadot/${process.env.PKG_NAME}-wasm authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
fs.writeFileSync(`${DIR_DENO}/bytes.js`, `${HDR}
|
||||
export const lenIn = ${compressed.length};
|
||||
|
||||
// Generated as part of the build, do not edit
|
||||
export const lenOut = ${data.length};
|
||||
|
||||
export const sizeCompressed = ${compressed.length};
|
||||
|
||||
export const sizeUncompressed = ${data.length};
|
||||
|
||||
export const bytes = '${compressed.toString('base64')}';
|
||||
export const bytes = '${base64}';
|
||||
`);
|
||||
|
||||
Reference in New Issue
Block a user