
Security News
Frontier AI Is Now Critical Infrastructure
The Fable shutdown shows how quickly model access can become a business continuity risk for AI-dependent engineering teams.
@mdscript/mds
Advanced tools
Universal JavaScript/TypeScript bindings for the MDS (Markdown Script) compiler — native addon with WASM fallback
JavaScript/TypeScript bindings for the MDS compiler.
npm install @mdscript/mds
Note: This package is pre-release and not yet published to npm.
Node.js auto-selects the native addon and falls back to WASM if unavailable. No initialization required.
import { compile, check, compileFile, checkFile, getBackend, isMdsError } from '@mdscript/mds';
// Compile MDS source to Markdown
const result = compile('Hello {name}', { vars: { name: 'world' } });
console.log(result.output); // "Hello world"
console.log(result.warnings); // string[]
console.log(result.dependencies); // string[] of imported file paths
// Validate without rendering
const checked = check('Hello {name}', { vars: { name: 'world' } });
// File-based operations (resolves @import directives)
const fileResult = await compileFile('./my-template.mds');
await checkFile('./my-template.mds');
// Which backend is active?
console.log(getBackend()); // 'native' | 'wasm'
The browser entry requires an explicit init() call before any compile/check
operations. init() is idempotent and safe to call multiple times.
import { init, compile, check, isMdsError } from '@mdscript/mds';
await init();
// or with a custom WASM URL:
await init({ wasmUrl: '/assets/mds_bg.wasm' });
const result = compile('# {title}', { vars: { title: 'Hello' } });
compileFileandcheckFileare not available in browser environments.
MDS_BACKEND)Set the MDS_BACKEND environment variable in Node.js to force a specific backend:
| Value | Behavior |
|---|---|
| (unset) | Native addon, WASM fallback |
native | Native only, throws if addon unavailable |
wasm | WASM only |
MDS_BACKEND=wasm node my-script.js
Use isMdsError to distinguish MDS compiler errors from other exceptions:
import { compile, isMdsError } from '@mdscript/mds';
try {
compile(source);
} catch (err) {
if (isMdsError(err)) {
console.error(err.code); // e.g. "mds::undefined_variable"
console.error(err.message);
console.error(err.help); // optional guidance string
console.error(err.span); // optional { offset, length, line, column }
} else {
throw err;
}
}
| Function | Description |
|---|---|
compile(source, options?) | Compile MDS source string to Markdown |
check(source, options?) | Validate MDS source without rendering |
compileFile(path, options?) | Compile an MDS file, resolving imports |
checkFile(path, options?) | Validate an MDS file, resolving imports |
getBackend() | Returns the active backend: 'native' or 'wasm' |
init(options?) | Initialize the WASM backend (browser/explicit WASM only) |
isMdsError(err) | Type guard for MDS compiler errors (requires code starting with "mds::") |
// CompileOptions / FileOptions
{ vars?: Record<string, unknown> }
// InitOptions
{ wasmUrl?: string | URL | Response | BufferSource }
FAQs
Universal JavaScript/TypeScript bindings for the MDS (Markdown Script) compiler — native addon with WASM fallback
We found that @mdscript/mds 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 Fable shutdown shows how quickly model access can become a business continuity risk for AI-dependent engineering teams.

Security News
AI agents are pulling packages into environments no scanner is watching, creating exposure before security teams can see it.

Security News
GitHub Actions checkout now blocks risky pull_request_target checkouts by default to help prevent pwn request supply chain attacks.