cosray / legacy-richtext-converter
Migration-only converter turning pre-structured-richtext HTML into Cosray rich-text documents
Package info
github.com/cosraycms/legacy-richtext-converter
Language:JavaScript
pkg:composer/cosray/legacy-richtext-converter
Requires
- php: ^8.5
Requires (Dev)
- carthage-software/mago: ~1.47.0
- phpunit/phpunit: ^13.0
README
Converts pre-structured-richtext HTML into Cosray rich-text documents. It exists for one-shot migrations and legacy imports — not for request-time conversion or newly authored content.
[!IMPORTANT] This package is transitional. It carries a 3 MB generated bundle that has no place in
cosray/cms's history. It will be deleted once every downstream production database has run the000000-000020-richtext-html-to-jsonmigration. Do not build anything new on top of it.
Why it is a separate package
The bundle is a self-contained build of the Cosray panel's own rich-text schema, so migrated content is identical to what the editor itself produces. Shipping it inside cosray/cms meant a multi-megabyte artifact in that repository's permanent history and in every dev-main install. Here it can be required while it is needed and dropped afterwards.
Requirements
PHP 8.5+ and a node executable on PATH. No panel checkout, panel installation, or npm dependencies are needed — the bundle is self-contained.
Usage
use Cosray\LegacyRichtext\Converter; $documents = new Converter()->convert([ 'intro:de' => '<p>Alter <strong>Inhalt</strong></p>', ]);
Input is a map of caller-chosen unit ids to HTML. Output is the same keys mapped to rich-text documents, with null for units whose HTML was empty. Normalize and validate the documents before persisting them when the surrounding migration does not already do so — cosray/cms provides Cosray\Richtext\Normalizer for that.
Undeclared paragraph classes and text styles are preserved here; dropping or resetting them is the caller's decision.
Rebuilding the bundle
The converter's source lives in the Cosray panel because it imports the panel's rich-text schema and cannot build standalone. To rebuild, run this from a cosray/cms checkout beside this repository:
cd panel && pnpm run build:converter
That writes resources/legacy-richtext-html-converter.mjs and resources/THIRD-PARTY-NOTICES.md here. Commit the result in this repository, not in cosray/cms.
Tests
composer install composer ci
The conversion test skips when node is unavailable.