Don't run auto-init, but set input (#319)
* Don't run auto-init, but set input * Adjust
This commit is contained in:
@@ -18,6 +18,8 @@
|
||||
"sideEffects": [
|
||||
"./detectPackage.js",
|
||||
"./detectPackage.cjs",
|
||||
"./initNone.js",
|
||||
"./initNone.cjs",
|
||||
"./initOnlyAsm.js",
|
||||
"./initOnlyAsm.cjs",
|
||||
"./initOnlyWasm.js",
|
||||
|
||||
@@ -15,6 +15,7 @@ type PopFirst<T extends unknown[]> =
|
||||
interface Bridge {
|
||||
cachegetInt32: Int32Array | null;
|
||||
cachegetUint8: Uint8Array | null;
|
||||
initFn: null | (() => Promise<void>);
|
||||
type: 'wasm' | 'asm';
|
||||
wasm: WasmCryptoInstance | null;
|
||||
wasmPromise: Promise<void> | null;
|
||||
@@ -23,6 +24,7 @@ interface Bridge {
|
||||
export const __bridge: Bridge = {
|
||||
cachegetInt32: null,
|
||||
cachegetUint8: null,
|
||||
initFn: null,
|
||||
type: 'wasm',
|
||||
wasm: null,
|
||||
wasmPromise: null
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { __bridge, allocString, allocU8a, getWasm, resultString, resultU8a, withWasm } from './bridge';
|
||||
import { setWasmOnlyPromise } from './initOnlyWasmBase';
|
||||
import { initWasm } from './init';
|
||||
|
||||
export { packageInfo } from './packageInfo';
|
||||
|
||||
@@ -202,10 +202,17 @@ export function isReady (): boolean {
|
||||
return !!getWasm();
|
||||
}
|
||||
|
||||
export function waitReady (): Promise<boolean> {
|
||||
return (
|
||||
__bridge.wasmPromise || setWasmOnlyPromise()
|
||||
)
|
||||
export async function waitReady (): Promise<boolean> {
|
||||
if (!__bridge.wasmPromise) {
|
||||
if (!__bridge.initFn) {
|
||||
__bridge.initFn = initWasm;
|
||||
}
|
||||
|
||||
__bridge.wasmPromise = __bridge.initFn().catch(() => undefined);
|
||||
}
|
||||
|
||||
return __bridge
|
||||
.wasmPromise
|
||||
.then(() => isReady())
|
||||
.catch(() => false);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
import type { AsmCreator, WasmCryptoInstance } from './types';
|
||||
|
||||
import { assert } from '@polkadot/util';
|
||||
import { wasmBytes } from '@polkadot/wasm-crypto-wasm';
|
||||
|
||||
import { __bridge } from './bridge';
|
||||
import * as wbg from './imports';
|
||||
@@ -28,10 +29,12 @@ async function createPromise (wasmBytes: Uint8Array | null, asmFn: AsmCreator |
|
||||
}
|
||||
}
|
||||
|
||||
export function setPromise (wasmBytes: Uint8Array | null, asmFn: AsmCreator | null, force = false): Promise<void> {
|
||||
if (!__bridge.wasmPromise || force) {
|
||||
__bridge.wasmPromise = createPromise(wasmBytes, asmFn);
|
||||
}
|
||||
export function setPromise (wasmBytes: Uint8Array | null, asmFn: AsmCreator | null): Promise<void> {
|
||||
__bridge.wasmPromise = createPromise(wasmBytes, asmFn);
|
||||
|
||||
return __bridge.wasmPromise;
|
||||
}
|
||||
|
||||
export function initWasm (): Promise<void> {
|
||||
return setPromise(wasmBytes, null);
|
||||
}
|
||||
|
||||
@@ -20,4 +20,4 @@ export function initWasm (): Promise<void> {
|
||||
return setWasmOnlyPromise();
|
||||
}
|
||||
|
||||
initWasm().catch(() => undefined);
|
||||
__bridge.initFn = initWasm;
|
||||
|
||||
@@ -3,10 +3,11 @@
|
||||
|
||||
import { asmJsInit } from '@polkadot/wasm-crypto-asmjs';
|
||||
|
||||
import { __bridge } from './bridge';
|
||||
import { setPromise } from './init';
|
||||
|
||||
export function initWasm (): Promise<void> {
|
||||
return setPromise(null, asmJsInit, true);
|
||||
return setPromise(null, asmJsInit);
|
||||
}
|
||||
|
||||
initWasm().catch(() => undefined);
|
||||
__bridge.initFn = initWasm;
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-crypto authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { setWasmOnlyPromise } from './initOnlyWasmBase';
|
||||
import { __bridge } from './bridge';
|
||||
import { initWasm } from './init';
|
||||
|
||||
export function initWasm (): Promise<void> {
|
||||
return setWasmOnlyPromise();
|
||||
}
|
||||
|
||||
initWasm().catch(() => undefined);
|
||||
__bridge.initFn = initWasm;
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
// Copyright 2019-2022 @polkadot/wasm-crypto authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { wasmBytes } from '@polkadot/wasm-crypto-wasm';
|
||||
|
||||
import { setPromise } from './init';
|
||||
|
||||
export function setWasmOnlyPromise (force = false): Promise<void> {
|
||||
return setPromise(wasmBytes, null, force);
|
||||
}
|
||||
@@ -4,10 +4,11 @@
|
||||
import { asmJsInit } from '@polkadot/wasm-crypto-asmjs';
|
||||
import { wasmBytes } from '@polkadot/wasm-crypto-wasm';
|
||||
|
||||
import { __bridge } from './bridge';
|
||||
import { setPromise } from './init';
|
||||
|
||||
export function initWasm (): Promise<void> {
|
||||
return setPromise(wasmBytes, asmJsInit, true);
|
||||
return setPromise(wasmBytes, asmJsInit);
|
||||
}
|
||||
|
||||
initWasm().catch(() => undefined);
|
||||
__bridge.initFn = initWasm;
|
||||
|
||||
Reference in New Issue
Block a user