
Security News
Ruby's Bundler 4.0.18 Extends Cooldown to bundle lock and bundle cache
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.
@nostr-wot/blossom
Advanced tools
Blossom file upload / mirror / delete helpers for Nostr. Content-addressed (sha256), kind-24242 BUD-01 auth, configurable server failover.
Blossom helpers for Nostr — content-addressed file hosting with kind-24242 BUD-01 signed auth. Upload, mirror across servers, delete.
npm i @nostr-wot/blossom @nostr-wot/signers nostr-tools
import { uploadToBlossom } from "@nostr-wot/blossom";
import { Nip07Signer } from "@nostr-wot/signers";
const signer = new Nip07Signer();
const blob = await uploadToBlossom(file, { signer });
// → { url, sha256, size, type, uploaded }
// blob.url is e.g. https://blossom.primal.net/<sha256>.<ext>
By default, the SDK tries a curated server list in order — blossom.primal.net, cdn.nostr.build, blossom.band — and returns the first 2xx. Override with your own:
const blob = await uploadToBlossom(file, {
signer,
servers: ["https://my.blossom", "https://blossom.primal.net"],
});
Backup an already-uploaded blob to additional servers — Blossom is content-addressed, so any server hosting the same SHA-256 returns the same content.
import { mirrorBlob } from "@nostr-wot/blossom";
const results = await mirrorBlob(existingBlob.url, {
signer,
servers: ["https://blossom.band", "https://cdn.nostr.build"],
});
// → [{ server, ok, url? } | { server, ok: false, error }]
Best-effort — Blossom servers may keep blobs that other users have also uploaded.
import { deleteBlob } from "@nostr-wot/blossom";
await deleteBlob(blob.sha256, {
signer,
servers: [blob.url.split("/").slice(0, 3).join("/")],
});
Every Blossom request is signed with a kind-24242 event. The SDK builds + signs the event with your NostrSigner and attaches it via the Authorization header. You don't need to construct the auth event manually — it's transparent.
If you need access to the raw event for debugging:
import { buildBlossomAuthEvent } from "@nostr-wot/blossom";
const authEvent = await buildBlossomAuthEvent(signer, {
kind: "upload", // "upload" | "delete" | "list" | "get"
fileSha256: hex,
expiration: Math.floor(Date.now() / 1000) + 60,
});
interface BlossomBlob {
url: string;
sha256: string;
size: number;
type: string;
uploaded: number;
}
MIT
FAQs
Blossom file upload / mirror / delete helpers for Nostr. Content-addressed (sha256), kind-24242 BUD-01 auth, configurable server failover.
The npm package @nostr-wot/blossom receives a total of 2 weekly downloads. As such, @nostr-wot/blossom popularity was classified as not popular.
We found that @nostr-wot/blossom demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.

Company News
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.