UNPKG

@ceramicnetwork/base-test-utils

Version:

Ceramic Test Utils

49 lines 1.82 kB
import { randomCID, StreamID } from '@ceramicnetwork/streamid'; export class BaseTestUtils { static randomCID(version = 1, codec = 0x71, hasher = 0x12) { return randomCID(version, codec, hasher); } static randomStreamID() { return new StreamID(0, BaseTestUtils.randomCID()); } static async waitForConditionOrTimeout(predicate, timeoutMs = 1000 * 30, errMsgGenerator) { const startTime = new Date(); const deadline = new Date(startTime.getTime() + timeoutMs); let now = startTime; while (now < deadline) { await BaseTestUtils.delay(100); now = new Date(); try { const res = await predicate(); if (res) { return; } } catch (err) { console.warn(err); } } const baseErrMsg = `timed out after ${timeoutMs}ms waiting for condition to be true`; if (!errMsgGenerator) { throw new Error(baseErrMsg); } const customMsg = typeof errMsgGenerator == 'string' ? errMsgGenerator : errMsgGenerator(); throw new Error(baseErrMsg + ': ' + customMsg); } static async delay(ms, signal) { return new Promise((resolve, reject) => { const timeout = setTimeout(() => resolve(), ms); if (signal) { const handleAbort = () => { clearTimeout(timeout); signal.removeEventListener('abort', handleAbort); reject(signal.reason); }; if (signal.aborted) handleAbort(); signal.addEventListener('abort', handleAbort); } }); } } //# sourceMappingURL=index.js.map