cosray/legacy-richtext-converter

Migration-only converter turning pre-structured-richtext HTML into Cosray rich-text documents

Maintainers

Package info

github.com/cosraycms/legacy-richtext-converter

Homepage

Language:JavaScript

pkg:composer/cosray/legacy-richtext-converter

Transparency log

Statistics

Installs: 36

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-08-20 18:25 UTC

This package is auto-updated.

Last update: 2026-08-20 18:36:53 UTC


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 the 000000-000020-richtext-html-to-json migration. 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.