/** * The live-mode framework registry. * * Before this existed, framework knowledge was smeared across live-inject.mjs * (detection order, the Nuxt adapter, the Astro `is:inline` branch), the two * adapter modules, and live-wrap.mjs (which extension gets component preview, * which gets Astro's global-prefixed CSS, which gets JSX comments). Adding or * fixing a framework meant reading all of them. * * One entry per framework now declares everything the live scripts need: * * name stable identifier; also the `adapter` value in inject JSON. * detect (cwd, config) → falsy when this is not the project, otherwise * a truthy project descriptor that apply/remove/artifacts read. * Order in FRAMEWORKS is priority order; first truthy wins. * inject { kind: 'adapter', apply, remove, ignorePatterns, artifacts, * unpatch } for frameworks that server-render their document * shell, or { kind: 'tag' } for the generic marker-wrapped *