{"id":18365,"library":"extended-markdown-adf-parser","title":"Extended ADF Markdown Parser","description":"A bidirectional parser v2.4.0 for converting between Atlassian Document Format (ADF) and Extended Markdown. Released under MIT license with monthly updates, it supports all major ADF elements including panels, expands, media, tables, status, emoji, mentions, dates, and code blocks. Key differentiators: advanced nested processing via multi-pass parsing, metadata annotation for full fidelity, zero runtime dependencies, dual CJS/ESM module support, and 100% test coverage. Requires Node >=20.11.1 and ships TypeScript types.","status":"active","version":"2.4.0","language":"javascript","source_language":"en","source_url":"https://github.com/JeromeErasmus/extended-markdown-adf-parser","tags":["javascript","adf","atlassian","markdown","parser","confluence","jira","typescript"],"install":[{"cmd":"npm install extended-markdown-adf-parser","lang":"bash","label":"npm"},{"cmd":"yarn add extended-markdown-adf-parser","lang":"bash","label":"yarn"},{"cmd":"pnpm add extended-markdown-adf-parser","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Default function exported as named export, not default. ESM and CJS both supported since v1.1.0.","wrong":"const parseAdfToMarkdown = require('extended-markdown-adf-parser').parseAdfToMarkdown","symbol":"parseAdfToMarkdown","correct":"import { parseAdfToMarkdown } from 'extended-markdown-adf-parser'"},{"note":"Named export only. Default export is not provided.","wrong":"import parseMarkdownToAdf from 'extended-markdown-adf-parser'","symbol":"parseMarkdownToAdf","correct":"import { parseMarkdownToAdf } from 'extended-markdown-adf-parser'"},{"note":"Class export, available as named export in both ESM and CJS. TypeScript type definitions included.","wrong":"const Parser = require('extended-markdown-adf-parser').Parser","symbol":"Parser","correct":"import { Parser } from 'extended-markdown-adf-parser'"},{"note":"Named export for advanced parsing with multi-pass processing. Only in v2.2.0+.","wrong":"import ExtendedMarkdownParser from 'extended-markdown-adf-parser'","symbol":"ExtendedMarkdownParser","correct":"import { ExtendedMarkdownParser } from 'extended-markdown-adf-parser'"}],"quickstart":{"code":"import { parseAdfToMarkdown, parseMarkdownToAdf } from 'extended-markdown-adf-parser';\n\n// Extended Markdown string\nconst markdown = `# Hello World\n\nThis is a paragraph with **bold** and *italic* text.\n\n{info}A note panel{info}\n\n{expand:Expandable Section}\nContent inside the expand block.\n{expand}\n`;\n\n// Convert to ADF\nconst adf = parseMarkdownToAdf(markdown);\nconsole.log(JSON.stringify(adf, null, 2));\n\n// Convert back to Markdown\nconst markdownAgain = parseAdfToMarkdown(adf);\nconsole.log(markdownAgain);","lang":"typescript","description":"Shows bidirectional conversion between Extended Markdown and Atlassian Document Format, including panels and expands."},"warnings":[{"fix":"Upgrade to v2.3.0+ or remove custom performance monitoring calls.","message":"v2.3.0 replaced performance monitor with browser-compatible implementation, removing process.memoryUsage(). Code relying on that functionality will break.","severity":"breaking","affected_versions":"<2.3.0"},{"fix":"Replace Parser usage with named function imports.","message":"parseAdfToMarkdown and parseMarkdownToAdf are the preferred imports over Parser class since v2.0.0. Using Parser will still work but may be removed in future major version.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Use this library for both parsing and rendering, or convert to ADF first and use Atlassian renderer.","message":"Extended Markdown syntax uses non-standard extensions like {info}, {expand}, and {status}. Standard Markdown parsers will not render these correctly.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use colon-enclosed short names like :grinning: instead of grinning.","message":"Emoji short names must include colons (e.g., :grinning:) in v2.2.0+; older v1.x required no colons.","severity":"gotcha","affected_versions":">=2.2.0"},{"fix":"Use color:green|red|yellow|blue|purple in status syntax instead of style attribute.","message":"Status element color attribute changed in v2.3.1: 'style' attribute removed in favor of 'color' with official Atlassian color names.","severity":"deprecated","affected_versions":">=2.3.1"},{"fix":"Update any custom parser extensions to use the new multi-pass API.","message":"v2.2.0 introduced multi-pass nested processing which changed the internal API of ExtendedMarkdownParser. Custom implementations depending on earlier pass logic may break.","severity":"breaking","affected_versions":"<2.2.0"},{"fix":"Upgrade Node.js to v20.11.1+.","message":"The package requires Node.js >=20.11.1. Older Node versions will fail to install or run.","severity":"gotcha","affected_versions":">=2.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Upgrade to v2.3.0+ which removes performance monitor dependencies.","cause":"Using v2.2.x or earlier in browser environment (React, Vite, etc.) due to Node-specific API.","error":"TypeError: process.memoryUsage is not a function"},{"fix":"Upgrade to v1.1.0+ which provides dual CJS/ESM support; ensure bundler is configured correctly.","cause":"Using named ESM imports with a CJS module in older versions without proper dual module support.","error":"SyntaxError: Named export 'parseAdfToMarkdown' not found. The requested module 'extended-markdown-adf-parser' is a CommonJS module."},{"fix":"Use official 'color' attribute with valid color names: neutral, green, red, yellow, blue, purple.","cause":"Using deprecated 'style' attribute in status syntax after v2.3.1.","error":"ValidationError: Unknown attribute 'style' in node type 'status'"},{"fix":"Install or switch to Node.js v20.11.1 or higher using nvm or similar.","cause":"Attempting to install or run on a Node.js version below the required minimum.","error":"Error: Node.js version must be >=20.11.1"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}