🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@mdscript/mds

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mdscript/mds

Universal JavaScript/TypeScript bindings for the MDS (Markdown Script) compiler — native addon with WASM fallback

latest
Source
npmnpm
Version
0.2.0
Version published
Maintainers
1
Created
Source

@mdscript/mds

JavaScript/TypeScript bindings for the MDS compiler.

Installation

npm install @mdscript/mds

Note: This package is pre-release and not yet published to npm.

Node.js usage (zero-config)

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'

Browser usage

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' } });

compileFile and checkFile are not available in browser environments.

Backend selection (MDS_BACKEND)

Set the MDS_BACKEND environment variable in Node.js to force a specific backend:

ValueBehavior
(unset)Native addon, WASM fallback
nativeNative only, throws if addon unavailable
wasmWASM only
MDS_BACKEND=wasm node my-script.js

Error handling

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;
  }
}

API

FunctionDescription
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::")

Options

// CompileOptions / FileOptions
{ vars?: Record<string, unknown> }

// InitOptions
{ wasmUrl?: string | URL | Response | BufferSource }

Keywords

markdown

FAQs

Package last updated on 06 Jun 2026

Did you know?

Socket

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.

Install

Related posts