micromark Numeric Character Reference Decoder
micromark-util-decode-numeric-character-reference is a focused utility within the micromark ecosystem designed to safely decode numeric character references found in markdown (e.g., `A` for 'A'). The current stable major version is `2.x.x`, with `2.0.2` being the latest patch. As part of the unified collective, it follows a regular release cadence, often aligned with broader micromark updates. A key differentiator is its robust handling of non-characters and control characters, ensuring safe output by replacing them with the Unicode replacement character. This package is ESM-only and ships with full TypeScript type definitions, making it suitable for modern JavaScript and TypeScript environments, and is compatible with Node.js 16+.
Common errors
-
Error [ERR_REQUIRE_ESM]: require() of ES module /path/to/node_modules/micromark-util-decode-numeric-character-reference/index.js from /path/to/your/file.js not supported.
cause Attempting to import an ESM-only package using CommonJS `require()` syntax.fixChange your import statement to `import { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';` and ensure your environment supports ES modules (e.g., `"type": "module"` in `package.json`). -
ReferenceError: decodeNumericCharacterReference is not defined
cause Incorrectly importing the named export `decodeNumericCharacterReference` without destructuring in CommonJS, or a typo in the import.fixIf using ESM, ensure `import { decodeNumericCharacterReference } from '...'`. If you are stuck with CommonJS, you cannot directly import named exports this way for an ESM package; you must refactor to ESM.
Warnings
- breaking This package is ESM-only and no longer supports CommonJS `require()`. Applications must use ES modules.
- breaking The package requires Node.js version 16 or higher.
- gotcha This utility is designed for compatibility with `micromark@3`. While it might work with other versions, compatibility is only guaranteed with `micromark@3`.
Install
-
npm install micromark-util-decode-numeric-character-reference -
yarn add micromark-util-decode-numeric-character-reference -
pnpm add micromark-util-decode-numeric-character-reference
Imports
- decodeNumericCharacterReference
const { decodeNumericCharacterReference } = require('micromark-util-decode-numeric-character-reference')import { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference' - decodeNumericCharacterReference (Type)
import type { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference'
Quickstart
import { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';
// Example 1: Basic ASCII character decoding from hexadecimal
const charA_hex = decodeNumericCharacterReference('41', 16);
console.log(`Hex '41' (16-base) decodes to: '${charA_hex}'`); // Expected: 'A'
// Example 2: Basic ASCII character decoding from decimal
const charA_dec = decodeNumericCharacterReference('65', 10);
console.log(`Dec '65' (10-base) decodes to: '${charA_dec}'`); // Expected: 'A'
// Example 3: Decoding a newline character (common in references)
const newline_hex = decodeNumericCharacterReference('A', 16);
console.log(`Hex 'A' (16-base) decodes to: '${JSON.stringify(newline_hex)}' (newline)`); // Expected: '\n'
// Example 4: Handling control characters (these are replaced with a replacement character)
const controlChar_hex = decodeNumericCharacterReference('7F', 16); // DEL character
console.log(`Hex '7F' (16-base) decodes to: '${controlChar_hex}'`); // Expected: '�' (replacement character)
// Example 5: Handling out-of-range Unicode code points
const outOfRange_hex = decodeNumericCharacterReference('110000', 16); // Beyond U+10FFFF
console.log(`Hex '110000' (16-base) decodes to: '${outOfRange_hex}'`); // Expected: '�' (replacement character)
console.log("\nThis utility ensures safe decoding, replacing invalid or control characters with the Unicode replacement character.");