# Joplin Markdown export: controlled module replay

This package accompanies ReverseAI's investigation of the installed Joplin Desktop 3.7.21 Windows application. It is not a replacement Joplin application or a capture of its desktop UI.

Run with Node.js (recorded with 24.15.0):

    node verify.mjs

An optional first argument selects an existing output parent directory. The script creates a fresh joplin-export-replay-* directory, writes synthetic SVG inputs, executes the selected exporter, verifies the resulting links and files, and saves checks.json. No npm packages are required. No Joplin profile, account or existing note database is read.

ORIGINAL SHIPPED CODE

exporter.js and service.js are unchanged variable-declarator regions from main-html.bundle.js. base.js, friendly.js, unique.js, escape.js, safe.js, _Xn.js and Kea.js are unchanged supporting regions. selections.json records their source offsets, lengths and SHA-256 digests. No readability rewrite was applied to these files.

ADAPTERS AND LIMITS

verify.mjs runs those regions in a Node VM with injected names for their surrounding bundle imports. The database/model layer contains synthetic folders, notes and resources. Model serialization returns the fixture body. Exporter selection is injected. Filesystem and path adapters support ordinary test paths. Function-name annotations are inert. This checks the selected export coordination, filename and link-rewriting mechanism, not a full desktop export, arbitrary serialization or every path/Markdown edge case.

LICENSING AND ATTRIBUTION

The selected Joplin code is copyright (c) Laurent Cozic and contributors, AGPL-3.0-or-later. Original project: https://github.com/laurent22/joplin
Matching release: https://github.com/laurent22/joplin/releases/tag/v3.7.21
Upstream source paths include packages/lib/services/interop/InteropService.ts, InteropService_Exporter_Md.ts and InteropService_Exporter_Base.ts.

The replay harness is supplied under AGPL-3.0-or-later as well. The complete license is in LICENSE.txt. Joplin's names and trademarks remain with their owners; no Joplin logo or private note content is included.
