JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 148
  • Score
    100M100P100Q85043F
  • License MIT

Meta-package re-exporting @nostr-wot/{wot,relay,data}. Existing imports keep working; new code should depend on the scoped packages directly.

Package Exports

  • nostr-wot-sdk
  • nostr-wot-sdk/data
  • nostr-wot-sdk/data/cache
  • nostr-wot-sdk/react
  • nostr-wot-sdk/relay
  • nostr-wot-sdk/relay/react
  • nostr-wot-sdk/solid

Readme

nostr-wot-sdk

Meta-package and unified React provider for the @nostr-wot/* family. Re-exports every scoped package, plus the recommended top-level <NostrSdkProvider> that wires up the data layer and (optionally) WoT context with one component.

Install

npm i nostr-wot-sdk

This installs the meta and pulls in the scoped packages as transitive deps. New code can also depend on the scoped packages directly:

npm i @nostr-wot/data
npm i @nostr-wot/dm
npm i @nostr-wot/wot
npm i @nostr-wot/relay
npm i @nostr-wot/signers
npm i @nostr-wot/blossom
npm i @nostr-wot/wallet
import { NostrSdkProvider } from "nostr-wot-sdk/react";

<NostrSdkProvider
  relays={["wss://relay.damus.io", "wss://nos.lol"]}
  profileAggregators={["wss://purplepag.es"]}
  persistence={{ namespace: "myapp", ttlMs: 86400_000 }}
  wot={{ enabled: true, options: { maxHops: 2 } }}
>
  <App />
</NostrSdkProvider>;

<NostrSdkProvider> is the recommended root for any app using the SDK. It composes:

  • <NostrDataProvider> from @nostr-wot/data/react — configures default relays, profile aggregators, and SWR cache persistence
  • <WoTProvider> from @nostr-wot/wot/react (only when wot.enabled: true) — provides WoT scoring context

WoT hooks (useWoT, useTrustScore, useIsInWoT, useBatchWoT) require wot.enabled: true. Data hooks (useProfile, useNote, useThread, …) work either way.

Re-export map

Import from nostr-wot-sdk Equivalent scoped package
nostr-wot-sdk @nostr-wot/wot
nostr-wot-sdk/react @nostr-wot/wot/react + @nostr-wot/data/react + <NostrSdkProvider>
nostr-wot-sdk/solid @nostr-wot/wot/solid
nostr-wot-sdk/relay @nostr-wot/relay
nostr-wot-sdk/relay/react @nostr-wot/relay/react
nostr-wot-sdk/data @nostr-wot/data
nostr-wot-sdk/data/cache @nostr-wot/data/cache

For DM, signers, blossom, and wallet, use the scoped packages directly — they're not re-exported from this meta:

import { Nip07Signer } from "@nostr-wot/signers";
import { sealAndGiftWrap } from "@nostr-wot/dm";
import { useDMSession } from "@nostr-wot/dm/react";
import { uploadToBlossom } from "@nostr-wot/blossom";
import { NwcClient, requestZapInvoice } from "@nostr-wot/wallet";

Architecture

                 ┌────────────────────┐
                 │   Your app         │
                 └─────────┬──────────┘
                           │
                 ┌─────────▼──────────┐
                 │ <NostrSdkProvider> │  ← unified config
                 └─────────┬──────────┘
            ┌──────────────┼─────────────┐
            ▼              ▼             ▼
      data fetchers   WoT scoring    DM cache
            │              │             │
            └──────────────┼─────────────┘
                           ▼
                ┌──────────────────┐
                │ shared SimplePool│  ← one set of WebSocket
                └──────────────────┘     connections

Every @nostr-wot/* package shares the same connection pool via getPool() / setPool() from @nostr-wot/data. Subscribe-once-fan-out-everywhere is enforced by sharedCoalescer, so DM inbox, profile reads, follower lists, and engagement queries are all coalesced on the wire.

Per-package docs

License

MIT