/** * `@aeriz/wysiwyg/server` — DOM 없는 런타임용 진입점. * * 이 모듈은 **CSS 를 import 하지 않으며**, import 그래프 전체가 * `document` / `window` 를 참조하지 않는다. Cloudflare Workers(workerd) · * Node · Deno · Bun 에서 그대로 쓸 수 있다. * * 브라우저용 기본 진입점(`@aeriz/wysiwyg`) 은 스타일시트를 부수 효과로 * 불러오고 에디터/뷰어가 DOM 을 직접 만들기 때문에 서버에서 쓸 수 없다. * 저장된 스냅샷을 HTML · 마크다운 · 평문으로 바꾸는 일만 필요하면 여기서 * 가져오면 된다. * * @example * // Cloudflare Worker — 저장된 글을 HTML 로 재렌더 * import { renderBlocksToHTML, blocksToPlainText } from '@aeriz/wysiwyg/server'; * * export default { * async fetch(req, env) { * const post = await env.DB.get('post:1', 'json'); * return new Response( * renderBlocksToHTML(post.blocks, { wrapper: 'content' }), * { headers: { 'content-type': 'text/html; charset=utf-8' } }, * ); * }, * }; */ export { renderBlockToHTML, renderBlocksToHTML, } from '../core/render-string.cjs'; export type { RenderHtmlOptions } from '../core/render-string.cjs'; export { blocksToMarkdown } from '../core/markdown-export.cjs'; export type { MarkdownOptions } from '../core/markdown-export.cjs'; export { blocksToPlainText } from '../core/plain-text.cjs'; export type { PlainTextOptions } from '../core/plain-text.cjs'; export { SNAPSHOT_VERSION, snapshotVersionOf, upgradeSnapshot, upgradeSnapshots, } from '../core/snapshot.cjs'; export type { Block, BlockAttrs, BlockAttrsByKind, BlockKind, BlockSnapshot, BlockquoteAttrs, BulletListAttrs, CodeBlockAttrs, FileAttrs, HeadingAttrs, HeadingLevel, HrAttrs, ImageAttrs, ImportedHtmlAttrs, InlineMarkName, LinkCardAttrs, OrderedListAttrs, ParagraphAttrs, Snapshot, TableAttrs, UnknownAttrs, YoutubeAttrs, } from '../core/blocks.cjs'; export { decodeEntities, escapeAttr, escapeHtml, parseHtmlFragment, serializeNodes, textOf, textWithBlockBreaks, } from '../core/html-mini.cjs'; export type { HtmlElementNode, HtmlNode, HtmlText } from '../core/html-mini.cjs'; // (소스맵은 CJS 선언 사본에서 제외됨 — scripts/finalize-types.mjs)