npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mdscript/mds-wasm

v0.4.3

Published

WebAssembly build of the MDS (Markdown Script) compiler — used as the portable fallback by @mdscript/mds

Downloads

299

Readme

@mdscript/mds-wasm

WebAssembly build of the MDS (Markdown Script) compiler.

This package is the portable fallback used by @mdscript/mds when the native addon (@mdscript/mds-napi) is unavailable, and it powers the browser build. Most users should depend on @mdscript/mds, not this package directly. @mdscript/mds selects the native addon on Node and this WASM build on the web (or as a Node fallback) automatically.

What's inside

Two builds, selected by package exports conditions:

| Condition | Entry | Module type | Init | |-----------|-------|-------------|------| | node | dist/node/mds_wasm.js | CommonJS (wasm-pack --target nodejs) | none | | browser / default | dist/web/mds_wasm.js | ESM (wasm-pack --target web) | call default() with the .wasm URL |

Each build exposes compile(source, options), check(source, options), lint(source, options), lintVirtual(modules, entry, options), and scanImports(source).

Options

// compile(source, options)
// options.filename — string (default "input.mds"): key used for this source in the
//   virtual FS and as sources[0] in the generated source map. Override when you want
//   a meaningful name to appear in source maps or import paths.
// options.modules — { [key: string]: string }: additional virtual modules for
//   @import resolution. The entry source is inserted under options.filename.
// options.vars — { [key: string]: any }: runtime variable overrides.
// options.sourceMap — boolean: generate a Source Map v3 document; result gains .sourceMap.
//   sources[0] is options.filename (default "input.mds").
// options.sourcesContent — boolean: embed original source text in sourcesContent[]
//   (requires sourceMap: true). ⚠ Privacy: embeds the full template source.
const result = compile(source, { sourceMap: true, vars: { name: 'World' } });
// result.sourceMap is a Source Map v3 object when sourceMap: true

// check(source, options)
// Accepted keys: filename, modules, vars. (sourceMap/sourcesContent are parsed but
// not applied — check does not generate output. Use compile for source maps.)
const checked = check(source, { vars: { name: 'World' } });
// returns { warnings: string[] }

// lint(source, options)
// Accepted keys: filename, modules, vars, rules.
// options.rules — { [ruleName: string]: 'off' | 'info' | 'warn' | 'error' }
//   Unknown rule names emit a warning and lint continues — the unknown name has no effect
//   (the rule is not enforced); unknown severity values throw.
//   When unknown rule names are present, lintResult.lint_warnings is a non-empty string[].
const lintResult = lint(source, { rules: { 'shadow-variable': 'warn' } });
// lintResult: { version: 1, files: [...], truncated: boolean, lint_warnings?: string[] }

// lintVirtual(modules, entry, options)
// modules: { [key: string]: string } — the full virtual module map.
// entry: string — key of the entry module within modules.
// Accepted option keys: vars, rules. (filename and modules are top-level args, not options.)
const vResult = lintVirtual({ 'main.mds': source }, 'main.mds', { rules: {} });
// files[].file key: lint() sets this to options.filename (default "input.mds");
// lintVirtual() sets it to the caller-supplied entry key.

Build

npm run build -w @mdscript/mds-wasm

Requires wasm-pack and the wasm32-unknown-unknown Rust target. Output is written to dist/node and dist/web.

License

MIT. See LICENSE.