Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
@@ -0,0 +1 @@
|
||||
6.2.3
|
||||
+6
-2
@@ -1,4 +1,4 @@
|
||||
7
|
||||
8
|
||||
|
||||
3.2.2
|
||||
3.2.3
|
||||
@@ -10,4 +10,8 @@
|
||||
6.1.2
|
||||
6.1.3
|
||||
6.1.4
|
||||
6.1.5
|
||||
6.1.5
|
||||
6.2.2
|
||||
|
||||
|
||||
6.2.3
|
||||
|
||||
+3
-1
@@ -8,7 +8,9 @@ module.exports = {
|
||||
ignorePatterns: [
|
||||
...base.ignorePatterns,
|
||||
'**/target/*',
|
||||
'**/build-wasm/*'
|
||||
'**/build-wasm/*',
|
||||
'**/deno/*.ts',
|
||||
'**/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
|
||||
|
||||
@@ -13,7 +13,10 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- 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 ${{ matrix.step }}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
name: deno
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
pr:
|
||||
strategy:
|
||||
matrix:
|
||||
step: ['check', 'build']
|
||||
name: ${{ matrix.step }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
WITH_DENO: true
|
||||
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'
|
||||
if [ "${{ matrix.step }}" != "check" ]; then
|
||||
./scripts/install-build-deps.sh
|
||||
fi
|
||||
yarn deno:setup
|
||||
yarn deno:${{ matrix.step }}
|
||||
@@ -1,5 +1,28 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 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:
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
439 Jaco 6.1.5 (#374)
|
||||
457 Jaco 6.2.3 (w/ dev publish fix) (#391)
|
||||
1 Evgeny Fixed type (#121)
|
||||
1 Shunfan Zhou Support sr25519 agreement (#209)
|
||||
1 Steve Degosserie Expose Schnorrkel's VRF capabilities (#170)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// auto-generated via deno/setup.ts, do not edit
|
||||
|
||||
export * as wasmBridge from 'https://deno.land/x/polkadot/wasm-bridge/mod.ts';
|
||||
export * as wasmCrypto from 'https://deno.land/x/polkadot/wasm-crypto/mod.ts';
|
||||
export * as wasmCryptoAsmjs from 'https://deno.land/x/polkadot/wasm-crypto-asmjs/mod.ts';
|
||||
export * as wasmCryptoInit from 'https://deno.land/x/polkadot/wasm-crypto-init/mod.ts';
|
||||
export * as wasmCryptoWasm from 'https://deno.land/x/polkadot/wasm-crypto-wasm/mod.ts';
|
||||
export * as wasmUtil from 'https://deno.land/x/polkadot/wasm-util/mod.ts';
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"imports": {
|
||||
"crypto": "https://deno.land/std/node/crypto.ts",
|
||||
"@polkadot/util": "https://deno.land/x/polkadot/common/mod.ts",
|
||||
"https://deno.land/x/polkadot/wasm-crypto-init/": "../packages/wasm-crypto-init/build-deno/",
|
||||
"https://deno.land/x/polkadot/wasm-bridge/": "../packages/wasm-bridge/build-deno/",
|
||||
"https://deno.land/x/polkadot/wasm-crypto-wasm/": "../packages/wasm-crypto-wasm/build-deno/",
|
||||
"https://deno.land/x/polkadot/wasm-crypto/": "../packages/wasm-crypto/build-deno/",
|
||||
"https://deno.land/x/polkadot/wasm-crypto-asmjs/": "../packages/wasm-crypto-asmjs/build-deno/",
|
||||
"https://deno.land/x/polkadot/wasm-util/": "../packages/wasm-util/build-deno/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
/* eslint-disable sort-keys */
|
||||
|
||||
import { stringCamelCase } from 'https://deno.land/x/polkadot/util/mod.ts';
|
||||
|
||||
const exports: string[] = [];
|
||||
const imports: Record<string, string> = {
|
||||
'@polkadot/util': 'https://deno.land/x/polkadot/common/mod.ts',
|
||||
crypto: 'https://deno.land/std/node/crypto.ts'
|
||||
};
|
||||
|
||||
for await (const entry of Deno.readDir('packages')) {
|
||||
if (entry.isDirectory) {
|
||||
try {
|
||||
await Deno.readTextFile(`packages/${entry.name}/src/mod.ts`);
|
||||
|
||||
exports.push(`export * as ${stringCamelCase(entry.name)} from 'https://deno.land/x/polkadot/${entry.name}/mod.ts';`);
|
||||
|
||||
imports[`https://deno.land/x/polkadot/${entry.name}/`] = `../packages/${entry.name}/build-deno/`;
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await Deno.writeTextFile('deno/check.ts', `// Copyright 2019-${new Date().getFullYear()} @polkadot/wasm authors & contributors\n// SPDX-License-Identifier: Apache-2.0\n\n// auto-generated via deno/setup.ts, do not edit\n\n${exports.sort().join('\n')}\n`);
|
||||
|
||||
await Deno.writeTextFile('deno/import_map.json', `${JSON.stringify({ imports }, null, 2)}\n`);
|
||||
+7
-3
@@ -10,7 +10,7 @@
|
||||
"url": "https://github.com/polkadot-js/wasm.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"version": "6.1.5",
|
||||
"version": "6.2.3",
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
@@ -22,17 +22,21 @@
|
||||
"build:rollup": "polkadot-exec-rollup --config",
|
||||
"build:wasm": "./scripts/build.sh",
|
||||
"clean": "./scripts/clean.sh",
|
||||
"deno:build": "yarn build",
|
||||
"deno:check": "yarn build:js && deno check --import-map=deno/import_map.json deno/check.ts",
|
||||
"deno:setup": "deno run --import-map=deno/import_map.json --allow-read --allow-write deno/setup.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=deno/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.36",
|
||||
"@babel/core": "^7.18.6",
|
||||
"@polkadot/dev": "^0.67.57",
|
||||
"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.5",
|
||||
"version": "6.2.3",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3"
|
||||
"@babel/runtime": "^7.18.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1",
|
||||
"@polkadot/x-randomvalues": "^9.5.1"
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/x-randomvalues": "^9.7.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.5' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-bridge', path: 'auto', type: 'auto', version: '6.2.3' };
|
||||
|
||||
@@ -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.5",
|
||||
"version": "6.2.3",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3"
|
||||
"@babel/runtime": "^7.18.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^9.7.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*"
|
||||
|
||||
@@ -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.5' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-asmjs', path: 'auto', type: 'auto', version: '6.2.3' };
|
||||
|
||||
@@ -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.5",
|
||||
"version": "6.2.3",
|
||||
"browser": "wasm.js",
|
||||
"main": "wasm.js",
|
||||
"react-native": "asm.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@polkadot/wasm-bridge": "6.1.5",
|
||||
"@polkadot/wasm-crypto-asmjs": "6.1.5",
|
||||
"@polkadot/wasm-crypto-wasm": "6.1.5"
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/wasm-bridge": "6.2.3",
|
||||
"@polkadot/wasm-crypto-asmjs": "6.2.3",
|
||||
"@polkadot/wasm-crypto-wasm": "6.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/x-randomvalues": "^9.7.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.5' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-init', path: 'auto', type: 'auto', version: '6.2.3' };
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
## @polkadot/wasm-crypto-wasm
|
||||
|
||||
Wasm build outputs.
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
},
|
||||
"sideEffects": false,
|
||||
"type": "module",
|
||||
"version": "6.1.5",
|
||||
"version": "6.2.3",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@polkadot/wasm-util": "6.1.5"
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/wasm-util": "6.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^9.7.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import { base64Decode, unzlibSync } from '@polkadot/wasm-util';
|
||||
|
||||
import { bytes, sizeUncompressed } from './cjs/bytes.js';
|
||||
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;
|
||||
|
||||
@@ -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.5' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto-wasm', path: 'auto', type: 'auto', version: '6.2.3' };
|
||||
|
||||
@@ -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.5",
|
||||
"version": "6.2.3",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3",
|
||||
"@polkadot/wasm-bridge": "6.1.5",
|
||||
"@polkadot/wasm-crypto-asmjs": "6.1.5",
|
||||
"@polkadot/wasm-crypto-init": "6.1.5",
|
||||
"@polkadot/wasm-crypto-wasm": "6.1.5",
|
||||
"@polkadot/wasm-util": "6.1.5"
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/wasm-bridge": "6.2.3",
|
||||
"@polkadot/wasm-crypto-asmjs": "6.2.3",
|
||||
"@polkadot/wasm-crypto-init": "6.2.3",
|
||||
"@polkadot/wasm-crypto-wasm": "6.2.3",
|
||||
"@polkadot/wasm-util": "6.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/x-randomvalues": "^9.7.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.5' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-crypto', path: 'auto', type: 'auto', version: '6.2.3' };
|
||||
|
||||
@@ -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,7 +22,7 @@ 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}`);
|
||||
@@ -33,7 +32,7 @@ async function beforeAll (name) {
|
||||
return result;
|
||||
}
|
||||
|
||||
function runAll (name) {
|
||||
function runAll (name, wasm) {
|
||||
const failed = [];
|
||||
let count = 0;
|
||||
|
||||
@@ -63,11 +62,11 @@ function runAll (name) {
|
||||
}
|
||||
}
|
||||
|
||||
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 +81,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,19 @@
|
||||
// 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>;
|
||||
declare const require: (name: string) => any;
|
||||
|
||||
globalThis.require = createRequire(import.meta.url);
|
||||
|
||||
const exp = require('./all/index.js');
|
||||
|
||||
await exp.beforeAll('wasm', wasm);
|
||||
|
||||
Object.keys(exp.tests).forEach((name) => {
|
||||
Deno.test(name, () => exp.tests[name](wasm));
|
||||
});
|
||||
@@ -5,11 +5,14 @@
|
||||
* @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';
|
||||
|
||||
globalThis.wasm = wasm;
|
||||
|
||||
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.5",
|
||||
"version": "6.2.3",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.18.3"
|
||||
"@babel/runtime": "^7.18.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^9.5.1"
|
||||
"@polkadot/util": "^9.7.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*"
|
||||
|
||||
@@ -1,31 +1,37 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-util authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
const chr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
||||
const map: Record<string, number> = {};
|
||||
|
||||
for (let i = 0; i < chr.length; i++) {
|
||||
map[chr[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.
|
||||
*/
|
||||
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 {
|
||||
let byte = 0;
|
||||
let bits = 0;
|
||||
let pos = -1;
|
||||
|
||||
for (let i = 0; i < data.length && data[i] !== '='; i++) {
|
||||
// each character represents 6 bits
|
||||
byte = (byte << 6) | chars.indexOf(data[i]);
|
||||
byte = (byte << 6) | map[data[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.5' };
|
||||
export const packageInfo = { name: '@polkadot/wasm-util', path: 'auto', type: 'auto', version: '6.2.3' };
|
||||
|
||||
+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
|
||||
|
||||
@@ -19,11 +19,11 @@ fs.writeFileSync(`./${process.env.PKG_NAME}-wasm/build/cjs/bytes.js`, `// Copyri
|
||||
|
||||
// Generated as part of the build, do not edit
|
||||
|
||||
const sizeCompressed = ${compressed.length};
|
||||
const sizeUncompressed = ${data.length};
|
||||
const lenIn = ${compressed.length};
|
||||
const lenOut = ${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
|
||||
@@ -31,9 +31,9 @@ fs.writeFileSync(`${denoDir}/bytes.js`, `// Copyright 2019-${new Date().getFullY
|
||||
|
||||
// Generated as part of the build, do not edit
|
||||
|
||||
export const sizeCompressed = ${compressed.length};
|
||||
export const lenIn = ${compressed.length};
|
||||
|
||||
export const sizeUncompressed = ${data.length};
|
||||
export const lenOut = ${data.length};
|
||||
|
||||
export const bytes = '${compressed.toString('base64')}';
|
||||
`);
|
||||
|
||||
Reference in New Issue
Block a user