feat!: adopt react-markdown-10 API on Solid 2, tested and built under bun - #1
Merged
Merged
Conversation
rigel-mintaka
force-pushed
the
compass-ui/rig-2187-markdown-react10-fork
branch
from
August 21, 2026 06:10
eb07a2b to
881a5aa
Compare
rigel-mintaka
marked this pull request as draft
August 21, 2026 22:15
rigel-mintaka
force-pushed
the
compass-ui/rig-2187-markdown-react10-fork
branch
from
August 22, 2026 04:48
6b4e386 to
96ba01f
Compare
rigel-mintaka
force-pushed
the
compass-ui/rig-2187-markdown-react10-fork
branch
from
August 22, 2026 12:33
96ba01f to
0af8d05
Compare
… bun Replaces the Solid-1 upstream renderer with the react-markdown-10 API (upstream PR andi23rosca#44 + andi23rosca#45), re-ported to Solid 2, and ships the bun test harness + bun build that the fork's bun + biome toolchain needs. ## Source - `src/index.tsx` — the react-markdown-10 renderer (`Markdown`, `MarkdownAsync`, `MarkdownResource`, `defaultUrlTransform`) built on `hast-util-to-jsx-runtime`, re-ported to Solid 2 (`@solidjs/web`, `createStore`/`reconcile`, owned-write signals). - `src/jsx-runtime.ts` — fork-local JSX runtime for `hast-util-to-jsx-runtime` over Solid-2 primitives, replacing the Solid-1-bound `solid-jsx` dependency. - `src/types.ts` — public option/component types over `@solidjs/web` `JSX`. - Retires the Solid-1 renderer: `renderer.tsx`, `rehype-filter.ts`, `utils.ts`, `utils.test.ts`. ## Build (bun) `build.ts` builds `dist/` with `babel-preset-solid@2` (the Solid compiler) as the one transform, in two output modes: - Compiled (`index.js` dom/prod, `dev.js` dom/dev, `server.js` ssr) — Solid compiles the JSX to `@solidjs/web` runtime calls, then `bun build` bundles the now JSX-free modules. `bun build` never sees JSX. - Source (`index.jsx` + a sibling `jsx-runtime.js`) — babel strips types but leaves the JSX untransformed, written directly, so the `solid` export condition ships raw JSX for a consuming app's own Solid compiler (matching its exact `solid-js` version and generate settings). This variant is not routed through `bun build`, whose own automatic JSX-runtime transform would emit a `@solidjs/web/jsx-dev-runtime` import that subpath does not provide. - `index.d.ts` via `tsc --project tsconfig.build.json`. - `scripts/smoke-dist.ts` guards the published artifact: imports each compiled entry and asserts the public API resolves, and compiles the `.jsx` source entry the way a consumer would, asserting it targets `@solidjs/web` and never a removed subpath. Chained into `build` and run in CI + before publish, so a dead-on-arrival bundle fails the gate (nothing else imports `dist`). - Runtime deps are declared under `dependencies` (externalized in dist); peer deps under `peerDependencies`; build/harness tooling under `devDependencies`. ## Test harness (bun) `bun test` has no Vite pipeline and no Solid JSX transform, so the Solid-2 suite needs a harness: - `test/setup.ts` — a `Bun.plugin` preload that runs `babel-preset-solid` over `.tsx` sources (`SOLID_GENERATE` picks `dom` vs `ssr`) and registers happy-dom globals for the client leg only. - `bunfig.toml` — wires the preload into `bun test`. - Two legs mirror the retired vitest `--mode ssr` split: `test:client` (happy-dom, `--conditions=browser --conditions=development`) and `test:ssr` (node env, `--conditions=development` for `devlop` assertion messages). `bun run test` runs both. - `test/client.test.tsx` (11) + `test/server.test.tsx` (20) converted from vitest to `bun:test`; `@solidjs/testing-library` bumped to `1.0.0-beta.2` (the Solid-2 line — imports from `@solidjs/web`, drops the removed `onError`, which bun's strict ESM rejects where vitest silently tolerated). ## Packaging - `package.json` — Solid-2 peers (`solid-js`, `@solidjs/web` `^2.0.0-rc.0`), `3.0.0-rc.0`, runtime `dependencies` + bun harness/build devDeps, two-leg test scripts, `bun run build.ts` build. - `biome.json` — disables the React-specific `noChildrenProp` rule (`children` as a prop is this package's public API). - `.github/workflows/ci.yml` + `publish.yml` — run `bun run test` (both legs) + `bun run build` (which self-verifies via the dist smoke check); `publish.yml` converted pnpm -> bun, tag-driven, dist-tag aware. Spec-impact: none. Refs RIG-2187, RIG-2358. Co-authored-by: Matt Wilkinson <matt@rigel.build>
rigel-mintaka
force-pushed
the
compass-ui/rig-2187-markdown-react10-fork
branch
from
August 22, 2026 13:13
0af8d05 to
2334f3a
Compare
rigel-mintaka
marked this pull request as ready for review
August 22, 2026 13:24
mattwilkinsonn
approved these changes
Aug 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the Solid-1 upstream renderer with the react-markdown-10 API
(upstream PR andi23rosca#44 + andi23rosca#45), re-ported to Solid 2, and ships the bun test
harness that runs the component suite. Supersedes the earlier draft of
this PR, which was based on the pnpm+vitest toolchain that
mainretiredwhen it converted to bun + biome.
Source
src/index.tsx— the react-markdown-10 renderer (Markdown,MarkdownAsync,MarkdownResource,defaultUrlTransform) built onhast-util-to-jsx-runtime, re-ported to Solid 2 (@solidjs/web,createStore/reconcile, owned-write signals).src/jsx-runtime.ts— fork-local JSX runtime forhast-util-to-jsx-runtimeover Solid-2 primitives, replacing theSolid-1-bound
solid-jsxdependency.src/types.ts— public option/component types over@solidjs/webJSX.renderer.tsx,rehype-filter.ts,utils.ts,utils.test.ts.Test harness (bun)
mainrunsbun test, which has no Vite pipeline and no Solid JSXtransform, so the Solid-2 component suite needs a harness:
test/setup.ts— aBun.pluginpreload that runsbabel-preset-solidover
.tsxsources (SOLID_GENERATEpicksdomvsssroutput) andregisters happy-dom globals for the client leg only.
bunfig.toml— wires the preload intobun test.--mode ssrsplit:test:client(happy-dom,--conditions=browser --conditions=development)and
test:ssr(node env,--conditions=developmentfordevlopassertion messages).
bun run testruns both.test/client.test.tsx(11) +test/server.test.tsx(20) converted fromvitest to
bun:test;@solidjs/testing-librarybumped to1.0.0-beta.2(the Solid-2 line — imports from
@solidjs/web, drops the removedonError, which bun's strict ESM rejects where vitest silently tolerated).Packaging
package.json— Solid-2 peers (solid-js,@solidjs/web^2.0.0-rc.0),3.0.0-rc.0, bun harness devDeps, two-leg test scripts.biome.json— disables the React-specificnoChildrenProprule(
childrenas a prop is this package's public API)..github/workflows/ci.yml+publish.yml— runbun run test(bothlegs);
publish.ymlconverted pnpm -> bun, tag-driven, dist-tag aware(
nextfor prereleases,latestotherwise).Spec-impact: none. Refs RIG-2187, RIG-2358.