UNPKG

@daimo/pay

Version:

Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.

37 lines (35 loc) 1.08 kB
function createStore(reducer, init) { let state = init; const listeners = /* @__PURE__ */ new Set(); return { getState: () => state, dispatch: (e) => { const prev = state; state = reducer(state, e); listeners.forEach((l) => l({ prev, next: state, event: e })); }, subscribe: (l) => { listeners.add(l); return () => listeners.delete(l); } }; } function waitForState(store, predicates, isError, getErrorMessage) { const guards = typeof predicates === "function" ? [predicates] : predicates; const matches = (s) => guards.some((g) => g(s)); return new Promise((resolve, reject) => { const first = store.getState(); if (matches(first)) return resolve(first); const unsubscribe = store.subscribe(({ next }) => { if (matches(next)) { unsubscribe(); resolve(next); } else if (isError?.(next)) { unsubscribe(); reject(new Error(getErrorMessage?.(next) ?? "error")); } }); }); } export { createStore, waitForState }; //# sourceMappingURL=stateStore.js.map