
Research
/Security News
Chrome and Firefox Extensions Posing as Free VPNs Add Clipboard Stealers via Malicious Updates
Malicious Chrome and Firefox extensions posed as free VPNs while stealing clipboard data through later extension updates.
@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
The npm package @mdscript/mds receives a total of 8 weekly downloads. As such, @mdscript/mds popularity was classified as not popular.
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.

Research
/Security News
Malicious Chrome and Firefox extensions posed as free VPNs while stealing clipboard data through later extension updates.

Research
/Security News
Miasma Mini Shai-Hulud hits @immobiliarelabs Backstage plugins, targeting GitLab and LDAP auth packages on npm.

Security News
Rolldown paused Rust React Compiler integration after a 5MB binary size increase raised concerns about shipping React-specific code to all Vite users.