
Product
Socket Threat Intel Now Shows Which Malware Campaigns Were Blocked or Detected
Socket Threat Intel now shows which malware campaigns were blocked or detected in your organization, with links to scans and Firewall events.
@firecrawl/anydoc-wasm
Advanced tools
WebAssembly bindings for anydoc: convert documents (doc, docx, odt, rtf, epub, pdf, presentations, spreadsheets, csv) to GitHub-Flavored Markdown in the browser
WebAssembly bindings for anydoc, plus the source of the demo page at firecrawl.github.io/anydoc.
The API mirrors the Rust library, minus the path-based to_markdown: wasm has no filesystem, so conversion always starts from bytes.
npm install @firecrawl/anydoc-wasm
import init, {
formatFromBytes,
toMarkdownBytes,
toDocument,
} from '@firecrawl/anydoc-wasm';
await init();
// With the format detected from the content:
const markdown = toMarkdownBytes(bytes);
// Or name it, which signature-less formats (CSV) need:
const fromCsv = toMarkdownBytes(bytes, 'csv');
// Or stop at the document model, which also carries embedded assets:
const document = toDocument(bytes);
// Format detection on its own:
formatFromBytes(bytes); // 'docx', or undefined when nothing matches
The package is built with wasm-pack --target web: it loads with a plain <script type="module"> and with bundlers that handle the new URL(..., import.meta.url) asset pattern (Vite, webpack 5, Rollup). In Node, pass the module bytes to initSync instead of calling init (see test.mjs).
Calls are synchronous: wasm runs single-threaded on the calling thread, so convert on a worker if the main thread must stay responsive.
A conversion throws only when no meaningful Markdown could come out of the bytes. The thrown value is an Error whose code names what went wrong:
try {
return toMarkdownBytes(bytes);
} catch (error) {
// No document comes out of these, so record the file and take the next one.
if (error.code === 'encrypted' || error.code === 'unsupported') {
unconverted.push({ name, reason: error.code });
return null;
}
throw error;
}
code | Meaning |
|---|---|
unsupported | Unknown format, or one that cannot be converted (an image-only PDF) |
malformed | Structurally unusable: no meaningful content could be extracted |
encrypted | Encrypted or password-protected |
resourceLimit | Crossed a fixed safety limit (decompression, nesting, node count) |
missingPart | A part required for any meaningful output is absent |
error.message carries the detail, naming the package part at fault where the format identifies one. TypeScript gets the union as ConvertErrorCode. The crate's io code has no counterpart here: there is no filesystem to read from.
wasm-pack build wasm --release --target web --scope firecrawl
node --test wasm/test.mjs
This produces the npm package in wasm/pkg/: the module, the JS glue, and TypeScript definitions. Publishing runs from ../.github/workflows/release.yml on release tags.
www/ holds the static demo site, which imports the module from www/pkg/. Build into that directory, then serve www/:
wasm-pack build wasm --release --target web --no-pack --out-dir www/pkg
python -m http.server -d wasm/www
../.github/workflows/pages.yml builds and deploys the same layout to GitHub Pages on every push to main.
FAQs
WebAssembly bindings for anydoc: convert documents (doc, docx, odt, rtf, epub, pdf, presentations, spreadsheets, csv) to GitHub-Flavored Markdown in the browser
The npm package @firecrawl/anydoc-wasm receives a total of 0 weekly downloads. As such, @firecrawl/anydoc-wasm popularity was classified as not popular.
We found that @firecrawl/anydoc-wasm demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.

Product
Socket Threat Intel now shows which malware campaigns were blocked or detected in your organization, with links to scans and Firewall events.

Security News
Fixes for eMudhra and Brotli are out. Getting them everywhere they’re needed means tracking down bundled libraries, runtimes, and certificate stores.

Threat Research
/Security News
Socket uncovered secret-stealing workflows that ran in LiteLLM’s GitHub repository 11 days before the supply chain attack on PyPI and Docker.