nip07-awaiter provides a few utilities to detect initialization of NIP-07 interface (window.nostr
).
npm install nip07-awaiter
or
<script type="module" src="https://cdn.jsdelivr.net/npm/nip07-awaiter@latest/dist/index.mjs">
Return a promise. It is to be resolved as window.nostr
when it is installed or as soon as possible thereafter.
If window.nostr
is not installed after waiting the given time, it is to be resolved as undefined
.
import { waitNostr } from "nip07-awaiter";
// It will be resolved as `window.nostr` or `undefined` within 1 sec.
const nostrOrUndefined = await waitNostr(1000);
If needed, you can pass a AbortSignal. When aborted waitNostr()
rejects and return the reason.
const controller = new AbortController();
const { signal } = controller;
waitNostr(10 * 1000, { signal });
getNostr()
return synchronously NIP-07 interface if exists.
import { getNostr } from "nip07-awaiter";
const pubkey = await getNostr()?.getPublicKey();
isNostr()
is a type gurad function. Return true if the given value is a NIP-07 extension.
import { isNostr } from "nip07-awaiter";
if (isNostr(window.nostr)) {
console.log(await window.nostr.getPublicKey());
}