WORK-088
ID:WORK-088Status:done

Extract shared utilities from @refrakt-md/svelte to @refrakt-md/transform

Prerequisite for all framework adapters. Two modules in @refrakt-md/svelte are framework-agnostic and needed by every adapter package.

Priority:highComplexity:simpleMilestone:v1.0.0Source:ADR-001,ADR-002,SPEC-030

Acceptance Criteria

  • serialize() and serializeTree() moved to packages/transform/src/serialize.ts
  • matchRouteRule() moved to packages/transform/src/route-rules.ts
  • Both are exported from @refrakt-md/transform public API (packages/transform/src/index.ts)
  • @refrakt-md/svelte re-exports both modules — no breaking change for existing consumers
  • @refrakt-md/transform adds @markdoc/markdoc as a dependency (needed by serialize())
  • All existing tests pass without modification
  • Build succeeds in dependency order (types → transform → svelte)

Approach

  1. Copy packages/svelte/src/serialize.tspackages/transform/src/serialize.ts
  2. Copy packages/svelte/src/route-rules.tspackages/transform/src/route-rules.ts
  3. Update imports in both files if needed (type imports should already point at @refrakt-md/types)
  4. Export from packages/transform/src/index.ts
  5. Replace original files in packages/svelte/src/ with re-exports from @refrakt-md/transform
  6. Update any internal imports within packages/svelte/ that reference these modules directly

References

Resolution

Completed: 2026-04-02

Branch: claude/implement-spec-030-F0LFn

What was done

  • Moved serialize() and serializeTree() from packages/svelte/src/serialize.ts to packages/transform/src/serialize.ts
  • matchRouteRule() was already in packages/transform/src/route-rules.ts (previously extracted)
  • Added @markdoc/markdoc as dependency to @refrakt-md/transform
  • Exported both serialize and serializeTree from transform's public API
  • Updated @refrakt-md/svelte serialize.ts to re-export from transform
  • All 167 test files (1877 tests) pass, build succeeds

Notes

  • Route rules extraction was already done in a prior session — only serialize needed moving

History

  1. 59ded4a
    Resolution recorded
  2. f262d7b
    source+ADR-001,ADR-002,SPEC-030
  3. e5a255f
    statusreadydone
    • ☑ Build succeeds in dependency order (types → transform → svelte)
  4. 11e81a8
    milestone+v1.0.0
  5. ead9531
    Created (ready, high, simple, frameworks, transform, svelte)