Skip to main content

Overview

The createModuleMap() function provides a Node.js compatibility layer, allowing you to use familiar Node.js modules in the runtime environment.

createModuleMap()

Creates a map of Node.js-compatible modules that can be dynamically loaded.

Signature

function createModuleMap(ctx: NodeContext): Record<string, () => unknown>

Parameters

  • ctx NodeContext - Runtime context containing:
    • vfs - Virtual file system
    • cwd - Current working directory
    • env - Environment variables
    • stdout / stderr - Output streams
    • argv - Command-line arguments
    • filename / dirname - Current file paths
    • signal - Abort signal
    • executeCapture - Command execution function (optional)
    • portRegistry - HTTP port registry (optional)

Returns

Object mapping module names to factory functions.

Usage

import { createModuleMap } from '@core/node-compat';

const modules = createModuleMap({
  vfs,
  cwd: '/home/user',
  env: process.env,
  stdout,
  stderr,
  argv: ['node', 'script.js'],
  filename: '/home/user/script.js',
  dirname: '/home/user',
  signal: new AbortController().signal,
});

// Access modules
const fs = modules.fs();
const path = modules.path();

Available Modules

The following 15 Node.js core modules are available:

File System

const fs = modules.fs();
const fsPromises = modules['fs/promises']();
Provides file system operations (read, write, stat, etc.)

Path

const path = modules.path();
Path manipulation utilities. See Path API for details.

Events

const { EventEmitter } = modules.events();
Event emitter implementation for publish-subscribe patterns.

Buffer

const { Buffer } = modules.buffer();
Binary data manipulation. See Buffer API for details.

Utilities

const util = modules.util();
Common utility functions (promisify, inspect, etc.)

Operating System

const os = modules.os();
OS-level information (platform, hostname, etc.)

Process

const process = modules.process();
Current process information and control.

HTTP/HTTPS

const http = modules.http();
HTTP server and client functionality.

Child Process

const child_process = modules.child_process();
Spawn and execute child processes.

Stream

const stream = modules.stream();
Streaming data interfaces.

URL

const url = modules.url();
URL parsing and manipulation.

Timers

const timers = modules.timers();
Timing functions (setTimeout, setInterval, etc.)

Crypto

const crypto = modules.crypto();
Cryptographic operations.

Zlib

const zlib = modules.zlib();
Compression and decompression.

String Decoder

const string_decoder = modules.string_decoder();
Decode buffers to strings.

Additional Modules

Query String

const qs = modules.querystring();

// Parse query string
const params = qs.parse('foo=bar&baz=qux');
// { foo: 'bar', baz: 'qux' }

// Stringify object
const str = qs.stringify({ foo: 'bar', baz: 'qux' });
// 'foo=bar&baz=qux'

Assert

const assert = modules.assert();

assert(value, 'Value must be truthy');
assert.equal(a, b);
assert.strictEqual(a, b);
assert.deepStrictEqual(obj1, obj2);
assert.throws(() => { throw new Error(); });

Example: Loading Multiple Modules

import { createModuleMap } from '@core/node-compat';

const modules = createModuleMap(context);

// Load filesystem and path modules
const fs = modules.fs();
const path = modules.path();

// Use them together
const filePath = path.join('/home', 'user', 'file.txt');
const content = fs.readFileSync(filePath, 'utf8');

Build docs developers (and LLMs) love