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()andserializeTree()moved topackages/transform/src/serialize.tsmatchRouteRule()moved topackages/transform/src/route-rules.ts- Both are exported from
@refrakt-md/transformpublic API (packages/transform/src/index.ts) @refrakt-md/sveltere-exports both modules — no breaking change for existing consumers@refrakt-md/transformadds@markdoc/markdocas a dependency (needed byserialize())- All existing tests pass without modification
- Build succeeds in dependency order (types → transform → svelte)
Approach
- Copy
packages/svelte/src/serialize.ts→packages/transform/src/serialize.ts - Copy
packages/svelte/src/route-rules.ts→packages/transform/src/route-rules.ts - Update imports in both files if needed (type imports should already point at
@refrakt-md/types) - Export from
packages/transform/src/index.ts - Replace original files in
packages/svelte/src/with re-exports from@refrakt-md/transform - Update any internal imports within
packages/svelte/that reference these modules directly
References
- Framework Adapter System (Phase 0)
- Astro Readiness Investigation, Framework Readiness Investigation: Next.js, Eleventy, Nuxt (both identify this as a shared prerequisite)
Resolution
Completed: 2026-04-02
Branch: claude/implement-spec-030-F0LFn
What was done
- Moved
serialize()andserializeTree()frompackages/svelte/src/serialize.tstopackages/transform/src/serialize.ts matchRouteRule()was already inpackages/transform/src/route-rules.ts(previously extracted)- Added
@markdoc/markdocas dependency to@refrakt-md/transform - Exported both
serializeandserializeTreefrom transform's public API - Updated
@refrakt-md/svelteserialize.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
Relationships
Dependency of
ID:WORK-089Status:in-progress11/12
Create @refrakt-md/astro adapter package
Priority:highComplexity:moderateMilestone:v1.0.0
ID:WORK-092Status:done0/10
Create @refrakt-md/eleventy adapter package
Priority:lowComplexity:simpleMilestone:v1.0.0
ID:WORK-091Status:done0/11
Create @refrakt-md/next adapter package
Priority:mediumComplexity:moderateMilestone:v1.0.0
ID:WORK-090Status:done0/10
Create @refrakt-md/nuxt adapter package
Priority:mediumComplexity:moderateMilestone:v1.0.0
ID:WORK-094Status:ready0/13
Create @refrakt-md/vite plugin — Level 1 static transform
Priority:highComplexity:moderateMilestone:v1.0.0