@useavalon/avalon 0.1.89 → 0.1.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/src/build/integration-bundler-plugin.d.ts +1 -1
  2. package/dist/src/build/integration-detection-plugin.d.ts +1 -1
  3. package/dist/src/build/integration-detection-plugin.js +1 -1
  4. package/dist/src/build/integration-resolver-plugin.d.ts +1 -1
  5. package/dist/src/build/island-code-splitting.d.ts +1 -1
  6. package/dist/src/build/island-manifest.d.ts +2 -2
  7. package/dist/src/build/island-manifest.js +1 -1
  8. package/dist/src/build/island-types-generator.js +4 -4
  9. package/dist/src/build/mdx-island-transform.js +1 -1
  10. package/dist/src/build/mdx-plugin.d.ts +2 -2
  11. package/dist/src/build/prop-extractors/index.d.ts +3 -3
  12. package/dist/src/build/prop-extractors/index.js +1 -1
  13. package/dist/src/build/prop-extractors/lit.js +1 -1
  14. package/dist/src/build/prop-extractors/svelte.js +1 -1
  15. package/dist/src/build/sidecar-file-manager.js +1 -1
  16. package/dist/src/client/adapters/index.d.ts +1 -1
  17. package/dist/src/client/adapters/index.js +1 -1
  18. package/dist/src/client/css-hmr-handler.d.ts +2 -2
  19. package/dist/src/client/framework-adapter.d.ts +2 -2
  20. package/dist/src/client/hmr-coordinator.d.ts +6 -6
  21. package/dist/src/client/types/framework-runtime.d.ts +54 -55
  22. package/dist/src/client/types/vite-hmr.d.ts +35 -35
  23. package/dist/src/client/types/vite-virtual-modules.d.ts +56 -28
  24. package/dist/src/core/components/component-analyzer.d.ts +3 -3
  25. package/dist/src/core/components/component-analyzer.js +1 -1
  26. package/dist/src/core/components/component-detection.d.ts +8 -8
  27. package/dist/src/core/components/component-detection.js +1 -1
  28. package/dist/src/core/components/enhanced-framework-detector.d.ts +2 -2
  29. package/dist/src/core/components/enhanced-framework-detector.js +1 -1
  30. package/dist/src/core/components/framework-registry.d.ts +1 -1
  31. package/dist/src/core/integrations/index.d.ts +1 -1
  32. package/dist/src/core/integrations/index.js +1 -1
  33. package/dist/src/core/integrations/registry.js +1 -1
  34. package/dist/src/core/layout/enhanced-layout-resolver.d.ts +8 -8
  35. package/dist/src/core/layout/enhanced-layout-resolver.js +1 -1
  36. package/dist/src/core/layout/layout-cache-manager.d.ts +1 -1
  37. package/dist/src/core/layout/layout-composer.d.ts +2 -2
  38. package/dist/src/core/layout/layout-composer.js +1 -1
  39. package/dist/src/core/layout/layout-data-loader.d.ts +2 -2
  40. package/dist/src/core/layout/layout-discovery.d.ts +2 -2
  41. package/dist/src/core/layout/layout-discovery.js +1 -1
  42. package/dist/src/core/layout/layout-matcher.d.ts +1 -1
  43. package/dist/src/core/layout/layout-matcher.js +1 -1
  44. package/dist/src/core/layout/layout-types.d.ts +3 -3
  45. package/dist/src/islands/component-analysis.d.ts +4 -4
  46. package/dist/src/islands/component-analysis.js +1 -1
  47. package/dist/src/islands/css-utils.js +1 -1
  48. package/dist/src/islands/discovery/index.d.ts +9 -9
  49. package/dist/src/islands/discovery/index.js +1 -1
  50. package/dist/src/islands/discovery/registry.d.ts +1 -1
  51. package/dist/src/islands/discovery/resolver.d.ts +1 -1
  52. package/dist/src/islands/discovery/resolver.js +2 -2
  53. package/dist/src/islands/discovery/scanner.d.ts +1 -1
  54. package/dist/src/islands/discovery/scanner.js +1 -1
  55. package/dist/src/islands/discovery/validator.d.ts +1 -1
  56. package/dist/src/islands/discovery/validator.js +9 -9
  57. package/dist/src/islands/discovery/watcher.d.ts +1 -1
  58. package/dist/src/islands/discovery/watcher.js +1 -1
  59. package/dist/src/islands/framework-detection.d.ts +3 -3
  60. package/dist/src/islands/framework-detection.js +1 -1
  61. package/dist/src/islands/island.js +1 -1
  62. package/dist/src/islands/universal-head-collector.d.ts +2 -2
  63. package/dist/src/middleware/discovery.d.ts +1 -1
  64. package/dist/src/middleware/discovery.js +1 -1
  65. package/dist/src/middleware/executor.d.ts +2 -2
  66. package/dist/src/middleware/index.d.ts +3 -3
  67. package/dist/src/middleware/index.js +1 -1
  68. package/dist/src/middleware/types.d.ts +2 -2
  69. package/dist/src/nitro/error-handler.d.ts +2 -2
  70. package/dist/src/nitro/error-handler.js +2 -2
  71. package/dist/src/nitro/index.d.ts +8 -8
  72. package/dist/src/nitro/index.js +1 -1
  73. package/dist/src/nitro/island-manifest.d.ts +1 -1
  74. package/dist/src/nitro/island-manifest.js +1 -1
  75. package/dist/src/nitro/middleware-adapter.d.ts +2 -2
  76. package/dist/src/nitro/types.d.ts +4 -4
  77. package/dist/src/render/isolated-ssr-renderer.d.ts +2 -2
  78. package/dist/src/render/isolated-ssr-renderer.js +1 -1
  79. package/dist/src/render/ssr.d.ts +5 -5
  80. package/dist/src/render/ssr.js +4 -4
  81. package/dist/src/schemas/api.d.ts +1 -1
  82. package/dist/src/schemas/core.d.ts +1 -1
  83. package/dist/src/schemas/index.d.ts +8 -8
  84. package/dist/src/schemas/index.js +1 -1
  85. package/dist/src/schemas/routing/index.d.ts +1 -1
  86. package/dist/src/schemas/routing/index.js +1 -1
  87. package/dist/src/schemas/routing.d.ts +4 -4
  88. package/dist/src/schemas/routing.js +1 -1
  89. package/dist/src/types/image.d.ts +38 -38
  90. package/dist/src/types/island-jsx.d.ts +16 -16
  91. package/dist/src/types/mdx.d.ts +2 -2
  92. package/dist/src/types/routing.d.ts +7 -7
  93. package/dist/src/types/routing.js +1 -1
  94. package/dist/src/types/virtual-modules.d.ts +1 -1
  95. package/dist/src/types/vite-env.d.ts +1 -1
  96. package/dist/src/vite-plugin/auto-discover.js +1 -1
  97. package/dist/src/vite-plugin/config.d.ts +1 -1
  98. package/dist/src/vite-plugin/image-optimization.d.ts +2 -2
  99. package/dist/src/vite-plugin/image-optimization.js +1 -1
  100. package/dist/src/vite-plugin/island-sidecar-plugin.js +1 -1
  101. package/dist/src/vite-plugin/module-discovery.js +1 -1
  102. package/dist/src/vite-plugin/plugin.d.ts +2 -2
  103. package/dist/src/vite-plugin/plugin.js +1 -1
  104. package/dist/src/vite-plugin/types.d.ts +1 -2
  105. package/package.json +3 -2
  106. package/dist/src/client/main-slim.js +0 -1
  107. package/dist/src/client/strategies.js +0 -1
@@ -1,4 +1,4 @@
1
- import type { Plugin } from 'vite';
1
+ import type { Plugin } from "vite";
2
2
  export interface IntegrationBundlerOptions {
3
3
  /** Integrations to include in the build */
4
4
  integrations: string[];
@@ -1,4 +1,4 @@
1
- import type { Plugin } from 'vite';
1
+ import type { Plugin } from "vite";
2
2
  export interface IntegrationDetectionResult {
3
3
  preact: boolean;
4
4
  vue: boolean;
@@ -1 +1 @@
1
- import{resolve as e}from"node:path";import{readdir as t,readFile as n}from"node:fs/promises";export function integrationDetectionPlugin(){let t=null;return{name:`avalon:integration-detection`,enforce:`pre`,async buildStart(){t=await detectUsedIntegrations()},resolveId(n){if(n.startsWith(`@useavalon/integration-`)){let r=n.replace(`@useavalon/integration-`,``).split(`/`)[0];return t&&!t[r]&&console.warn(`⚠️ Integration ${r} is imported but not detected in project files`),e(process.cwd(),`packages/integrations/${r}/mod.ts`)}return null},transform(e,t){return t.includes(`/islands/`)||t.includes(`/components/`),null}}}export async function detectUsedIntegrations(){let r={preact:!1,vue:!1,solid:!1,svelte:!1},i=[`islands`,`components`,`src/islands`,`src/components`],a=process.cwd();for(let o of i)try{let i=e(a,o),s=await t(i,{withFileTypes:!0});for(let t of s)t.isFile()&&(t.name.endsWith(`.vue`)?r.vue=!0:t.name.endsWith(`.svelte`)?r.svelte=!0:(t.name.endsWith(`.tsx`)||t.name.endsWith(`.jsx`))&&((await n(e(i,t.name),`utf-8`)).includes(`solid-js`)?r.solid=!0:r.preact=!0))}catch{}return r}export function getRequiredIntegrations(e){let t=[];return e.preact&&t.push(`preact`),e.vue&&t.push(`vue`),e.solid&&t.push(`solid`),e.svelte&&t.push(`svelte`),t}
1
+ import{readdir as e,readFile as t}from"node:fs/promises";import{resolve as n}from"node:path";export function integrationDetectionPlugin(){let e=null;return{name:`avalon:integration-detection`,enforce:`pre`,async buildStart(){e=await detectUsedIntegrations()},resolveId(t){if(t.startsWith(`@useavalon/integration-`)){let r=t.replace(`@useavalon/integration-`,``).split(`/`)[0];return e&&!e[r]&&console.warn(`⚠️ Integration ${r} is imported but not detected in project files`),n(process.cwd(),`packages/integrations/${r}/mod.ts`)}return null},transform(e,t){return t.includes(`/islands/`)||t.includes(`/components/`),null}}}export async function detectUsedIntegrations(){let r={preact:!1,vue:!1,solid:!1,svelte:!1},i=[`islands`,`components`,`src/islands`,`src/components`],a=process.cwd();for(let o of i)try{let i=n(a,o),s=await e(i,{withFileTypes:!0});for(let e of s)e.isFile()&&(e.name.endsWith(`.vue`)?r.vue=!0:e.name.endsWith(`.svelte`)?r.svelte=!0:(e.name.endsWith(`.tsx`)||e.name.endsWith(`.jsx`))&&((await t(n(i,e.name),`utf-8`)).includes(`solid-js`)?r.solid=!0:r.preact=!0))}catch{}return r}export function getRequiredIntegrations(e){let t=[];return e.preact&&t.push(`preact`),e.vue&&t.push(`vue`),e.solid&&t.push(`solid`),e.svelte&&t.push(`svelte`),t}
@@ -1,4 +1,4 @@
1
- import type { Plugin } from 'vite';
1
+ import type { Plugin } from "vite";
2
2
  /**
3
3
  * Vite plugin to resolve integration package imports
4
4
  * Handles both @useavalon/integration-* imports and relative imports within integrations
@@ -22,8 +22,8 @@
22
22
  * @module build/island-code-splitting
23
23
  */
24
24
  import type { Plugin } from "vite";
25
- import type { ResolvedAvalonConfig } from "../vite-plugin/types.ts";
26
25
  import type { AvalonNitroConfig } from "../nitro/config.ts";
26
+ import type { ResolvedAvalonConfig } from "../vite-plugin/types.ts";
27
27
  /** Default size threshold (in bytes) below which island chunks are consolidated. */
28
28
  export declare const DEFAULT_CHUNK_SIZE_THRESHOLD = 4096;
29
29
  /** Minimal chunk shape used by the consolidation logic (compatible with both Rollup and Rolldown). */
@@ -1,4 +1,4 @@
1
- import { type IslandDirectory, type IslandCollision } from '../islands/discovery/index.ts';
1
+ import { type IslandCollision, type IslandDirectory } from "../islands/discovery/index.ts";
2
2
  export interface IslandManifest {
3
3
  islands: Record<string, IslandEntry>;
4
4
  version: string;
@@ -21,7 +21,7 @@ export interface IslandEntry {
21
21
  /** Bundle hash for cache busting */
22
22
  hash: string;
23
23
  /** Framework type (preact, solid, vue, svelte, qwik, lit, react) */
24
- framework: 'preact' | 'solid' | 'vue' | 'svelte' | 'qwik' | 'lit' | 'react' | 'unknown';
24
+ framework: "preact" | "solid" | "vue" | "svelte" | "qwik" | "lit" | "react" | "unknown";
25
25
  /** Import dependencies */
26
26
  deps: string[];
27
27
  }
@@ -1 +1 @@
1
- import{readFile as e}from"node:fs/promises";import{getQualifiedIslandName as t,createIslandRegistry as n}from"../islands/discovery/index.js";export async function generateIslandManifest(){let r={},s=process.cwd();try{let c=await n(s),l=c.getAllIslands(),u=c.directories,d=c.collisions;for(let n of l){let s=t(n),c=`/${n.relativePath}`,l=await e(n.filePath,`utf-8`),u=i(n.framework),d=a(l),f=await o(l);r[s]={src:c,bundle:n.namespace===``?`/islands/${n.name}.${f}.js`:`/islands/${s}.${f}.js`,hash:f,framework:u,deps:d,namespace:n.namespace,qualifiedName:s,sourceDirectory:n.directory.relativePath}}return{islands:r,directories:u,collisions:d,version:`1.0.0`,buildTime:Date.now()}}catch(e){return console.warn(`Failed to generate island manifest:`,e),{islands:{},directories:[],collisions:[],version:`1.0.0`,buildTime:Date.now()}}}function i(e){switch(e){case`preact`:return`preact`;case`react`:return`react`;case`solid`:return`solid`;case`vue`:return`vue`;case`svelte`:return`svelte`;case`lit`:return`lit`;case`qwik`:return`qwik`;default:return`unknown`}}function a(e){let t=[],n=/import\s+.*?\s+from\s+['"]([^'"]+)['"]/g,r;for(;(r=n.exec(e))!==null;){let e=r[1];!e.startsWith(`.`)&&!e.startsWith(`/`)&&t.push(e)}return[...new Set(t)]}async function o(e){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-256`,t);return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``).slice(0,8)}export async function loadIslandManifest(){try{let t=await e(`dist/island-manifest.json`,`utf-8`);return JSON.parse(t)}catch(e){return console.warn(`Failed to load island manifest:`,e),null}}export function getIslandBundlePath(e,t){let n=globalThis.__avalonHydrationMode===void 0?process.env.NODE_ENV!==`production`:globalThis.__avalonHydrationMode===`entry-client`,r=process.cwd();if(r&&e.startsWith(r+`/`)&&(e=e.slice(r.length)),t){let n=l(e),r=t;if(r.islands[n])return r.islands[n].bundle;let i=e.replace(/^\/islands\//,``).replace(/\.(tsx?|jsx?)$/,``),a=t.islands[i];if(a)return a.bundle}return n?e.startsWith(`/islands/`)?e.replaceAll(`/islands/`,`/src/islands/`):e.startsWith(`/src/`)||e.startsWith(`/app/`)||e.startsWith(`/`)?e:`/src/${e}`:`/islands/${l(e)}.js`}function l(e){let t=e.replace(/^\//,``);t=t.replace(/\.(tsx?|jsx?)$/,``);let n=new RegExp(/^src\/(.+)\/islands\/([^/]+)$/).exec(t);if(n){let[,e,t]=n;return`${e}/${t}`}let r=new RegExp(/^(?:src\/)?islands\/([^/]+)$/).exec(t);return r?r[1]:t}export function getIslandEntry(e,t){if(t.islands[e])return t.islands[e];if(t.directories){for(let[n,r]of Object.entries(t.islands))if(n.split(`/`).pop()===e)return r}return null}
1
+ import{readFile as e}from"node:fs/promises";import{createIslandRegistry as t,getQualifiedIslandName as n}from"../islands/discovery/index.js";export async function generateIslandManifest(){let r={},s=process.cwd();try{let c=await t(s),l=c.getAllIslands(),u=c.directories,d=c.collisions;for(let t of l){let s=n(t),c=`/${t.relativePath}`,l=await e(t.filePath,`utf-8`),u=i(t.framework),d=a(l),f=await o(l);r[s]={src:c,bundle:t.namespace===``?`/islands/${t.name}.${f}.js`:`/islands/${s}.${f}.js`,hash:f,framework:u,deps:d,namespace:t.namespace,qualifiedName:s,sourceDirectory:t.directory.relativePath}}return{islands:r,directories:u,collisions:d,version:`1.0.0`,buildTime:Date.now()}}catch(e){return console.warn(`Failed to generate island manifest:`,e),{islands:{},directories:[],collisions:[],version:`1.0.0`,buildTime:Date.now()}}}function i(e){switch(e){case`preact`:return`preact`;case`react`:return`react`;case`solid`:return`solid`;case`vue`:return`vue`;case`svelte`:return`svelte`;case`lit`:return`lit`;case`qwik`:return`qwik`;default:return`unknown`}}function a(e){let t=[],n=/import\s+.*?\s+from\s+['"]([^'"]+)['"]/g;for(let r=n.exec(e);r!==null;r=n.exec(e)){let e=r[1];!e.startsWith(`.`)&&!e.startsWith(`/`)&&t.push(e)}return[...new Set(t)]}async function o(e){let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-256`,t);return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``).slice(0,8)}export async function loadIslandManifest(){try{let t=await e(`dist/island-manifest.json`,`utf-8`);return JSON.parse(t)}catch(e){return console.warn(`Failed to load island manifest:`,e),null}}export function getIslandBundlePath(e,t){let n=globalThis.__avalonHydrationMode===void 0?process.env.NODE_ENV!==`production`:globalThis.__avalonHydrationMode===`entry-client`,r=process.cwd();if(r&&e.startsWith(r+`/`)&&(e=e.slice(r.length)),t){let n=l(e),r=t;if(r.islands[n])return r.islands[n].bundle;let i=e.replace(/^\/islands\//,``).replace(/\.(tsx?|jsx?)$/,``),a=t.islands[i];if(a)return a.bundle}return n?e.startsWith(`/islands/`)?e.replaceAll(`/islands/`,`/src/islands/`):e.startsWith(`/src/`)||e.startsWith(`/app/`)||e.startsWith(`/`)?e:`/src/${e}`:`/islands/${l(e)}.js`}function l(e){let t=e.replace(/^\//,``);t=t.replace(/\.(tsx?|jsx?)$/,``);let n=new RegExp(/^src\/(.+)\/islands\/([^/]+)$/).exec(t);if(n){let[,e,t]=n;return`${e}/${t}`}let r=new RegExp(/^(?:src\/)?islands\/([^/]+)$/).exec(t);return r?r[1]:t}export function getIslandEntry(e,t){if(t.islands[e])return t.islands[e];if(t.directories){for(let[n,r]of Object.entries(t.islands))if(n.split(`/`).pop()===e)return r}return null}
@@ -1,5 +1,5 @@
1
- import{resolve as e,dirname as t,relative as n}from"node:path";import{writeFile as r,mkdir as i}from"node:fs/promises";import{createIslandRegistry as a,getQualifiedIslandName as o}from"../islands/discovery/index.js";const s={outputDir:`src/types`,mode:`single`,moduleName:`avalon-islands`,includeJsDoc:!0};export async function generateIslandTypes(n,i={}){let o={...s,...i},c={success:!0,files:[],islandCount:0,errors:[]};try{let i=await a(n),s=i.getAllIslands(),d=i.directories,f=i.collisions;if(c.islandCount=s.length,s.length===0)return c;if(o.mode===`single`){let i=l(s,d,f,o),a=e(n,o.outputDir,`islands.d.ts`);await v(t(a)),await r(a,i),c.files.push(a)}else{let e=await u(s,d,n,o);c.files.push(...e)}}catch(e){c.success=!1,c.errors.push(e instanceof Error?e.message:String(e))}return c}function l(e,t,n,r){let i=[];i.push(`/**`),i.push(` * Auto-generated TypeScript declarations for Avalon islands.`),i.push(` * Do not edit this file manually - it will be overwritten.`),i.push(` * Generated at: ${new Date().toISOString()}`),i.push(` */`),i.push(``),i.push(`declare module "${r.moduleName}" {`),i.push(``),r.includeJsDoc&&(i.push(` /**`),i.push(` * Discovered island directories`),i.push(` */`)),i.push(` export const islandDirectories: readonly string[];`),i.push(``);let a=g(e);for(let[e,t]of a){if(e===``){i.push(` // Default islands (src/islands/)`);for(let e of t)i.push(...p(e,r,` `))}else{let n=e.split(`/`).map(e=>_(e)).join(``);i.push(` // Islands from ${e}/islands/`),i.push(` export namespace ${n} {`);for(let e of t)i.push(...p(e,r,` `));i.push(` }`)}i.push(``)}i.push(` /**`),i.push(` * Map of all island qualified names to their component types`),i.push(` */`),i.push(` export interface IslandMap {`);for(let t of e){let e=o(t);i.push(` "${e}": typeof ${m(t)};`)}if(i.push(` }`),i.push(``),n.length>0){i.push(` /**`),i.push(` * Warning: The following island names have collisions.`),i.push(` * Use qualified names (namespace/name) to disambiguate.`),i.push(` */`),i.push(` export type CollidingIslandNames =`);let e=n.map(e=>` | "${e.name}"`);i.push(e.join(`
1
+ import{mkdir as e,writeFile as t}from"node:fs/promises";import{dirname as n,relative as r,resolve as i}from"node:path";import{createIslandRegistry as a,getQualifiedIslandName as o}from"../islands/discovery/index.js";const s={outputDir:`src/types`,mode:`single`,moduleName:`avalon-islands`,includeJsDoc:!0};export async function generateIslandTypes(e,r={}){let o={...s,...r},c={success:!0,files:[],islandCount:0,errors:[]};try{let r=await a(e),s=r.getAllIslands(),d=r.directories,f=r.collisions;if(c.islandCount=s.length,s.length===0)return c;if(o.mode===`single`){let r=l(s,d,f,o),a=i(e,o.outputDir,`islands.d.ts`);await v(n(a)),await t(a,r),c.files.push(a)}else{let t=await u(s,d,e,o);c.files.push(...t)}}catch(e){c.success=!1,c.errors.push(e instanceof Error?e.message:String(e))}return c}function l(e,t,n,r){let i=[];i.push(`/**`),i.push(` * Auto-generated TypeScript declarations for Avalon islands.`),i.push(` * Do not edit this file manually - it will be overwritten.`),i.push(` * Generated at: ${new Date().toISOString()}`),i.push(` */`),i.push(``),i.push(`declare module "${r.moduleName}" {`),i.push(``),r.includeJsDoc&&(i.push(` /**`),i.push(` * Discovered island directories`),i.push(` */`)),i.push(` export const islandDirectories: readonly string[];`),i.push(``);let a=g(e);for(let[e,t]of a){if(e===``){i.push(` // Default islands (src/islands/)`);for(let e of t)i.push(...p(e,r,` `))}else{let n=e.split(`/`).map(e=>_(e)).join(``);i.push(` // Islands from ${e}/islands/`),i.push(` export namespace ${n} {`);for(let e of t)i.push(...p(e,r,` `));i.push(` }`)}i.push(``)}i.push(` /**`),i.push(` * Map of all island qualified names to their component types`),i.push(` */`),i.push(` export interface IslandMap {`);for(let t of e){let e=o(t);i.push(` "${e}": typeof ${m(t)};`)}if(i.push(` }`),i.push(``),n.length>0){i.push(` /**`),i.push(` * Warning: The following island names have collisions.`),i.push(` * Use qualified names (namespace/name) to disambiguate.`),i.push(` */`),i.push(` export type CollidingIslandNames =`);let e=n.map(e=>` | "${e.name}"`);i.push(e.join(`
2
2
  `)+`;`),i.push(``)}i.push(` /**`),i.push(` * Get the component type for an island by name or qualified name`),i.push(` */`),i.push(` export type GetIsland<K extends keyof IslandMap> = IslandMap[K];`),i.push(``),i.push(`}`),i.push(``),i.push(`// Augment the Island component props with discovered islands`),i.push(`declare global {`),i.push(` namespace Avalon {`),i.push(` interface DiscoveredIslands {`);for(let t of e){let e=o(t);i.push(` "${e}": true;`)}return i.push(` }`),i.push(` }`),i.push(`}`),i.push(``),i.join(`
3
- `)}async function u(n,i,a,o){let s=[],c=new Map;for(let e of n){let t=e.directory.path,n=c.get(t)||[];n.push(e),c.set(t,n)}for(let n of i){let i=c.get(n.path)||[];if(i.length===0)continue;let l=d(n,i,o),u=e(a,n.path,`islands.d.ts`);await v(t(u)),await r(u,l),s.push(u)}let l=f(i,a,o),u=e(a,o.outputDir,`islands.d.ts`);return await v(t(u)),await r(u,l),s.push(u),s}function d(e,t,n){let r=[];r.push(`/**`),r.push(` * Auto-generated TypeScript declarations for islands in ${e.relativePath}`),r.push(` * Do not edit this file manually - it will be overwritten.`),r.push(` */`),r.push(``);for(let e of t)r.push(...p(e,n,``));return r.join(`
4
- `)}function f(t,r,i){let a=[];a.push(`/**`),a.push(` * Auto-generated index for all island type declarations.`),a.push(` * Do not edit this file manually - it will be overwritten.`),a.push(` */`),a.push(``);for(let o of t){let t=n(e(r,i.outputDir),e(r,o.path,`islands.d.ts`)).replace(/\\/g,`/`).replace(/\.d\.ts$/,``);a.push(`export * from "${t}";`)}return a.join(`
5
- `)}function p(e,t,n){let r=[],i=m(e);t.includeJsDoc&&(r.push(`${n}/**`),r.push(`${n} * Island component: ${e.name}`),r.push(`${n} * Framework: ${e.framework}`),r.push(`${n} * Source: ${e.relativePath}`),e.namespace&&r.push(`${n} * Namespace: ${e.namespace}`),r.push(`${n} */`));let a=h(e.framework);return r.push(`${n}export const ${i}: ${a};`),r}function m(e){return e.name}function h(e){switch(e){case`preact`:return`import('preact').FunctionComponent<any>`;case`react`:return`import('react').FC<any>`;case`vue`:return`import('vue').DefineComponent<any, any, any>`;case`svelte`:return`import('svelte').SvelteComponent`;case`solid`:return`import('solid-js').Component<any>`;case`lit`:return`typeof import('lit').LitElement`;default:return`unknown`}}function g(e){let t=new Map;for(let n of e){let e=t.get(n.namespace)||[];e.push(n),t.set(n.namespace,e)}let n=new Map,r=Array.from(t.keys()).sort((e,t)=>e===``?-1:t===``?1:e.localeCompare(t));for(let e of r)n.set(e,t.get(e));return n}function _(e){return e.split(/[-_\s]+/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``)}async function v(e){try{await i(e,{recursive:!0})}catch(e){if(!(e instanceof Error)||e.code!==`EEXIST`)throw e}}export async function watchAndGenerateTypes(e,t={}){let{createIslandWatcher:n,createIslandRegistry:r}=await import(`../islands/discovery/index.js`),i=await r(e),a=n(e,i);await generateIslandTypes(e,t);let o=await a.watch(async n=>{await i.rebuild();let r=await generateIslandTypes(e,t);r.success||console.error(`❌ Failed to regenerate types:`,r.errors)});return()=>{o(),a.stop()}}
3
+ `)}async function u(e,r,a,o){let s=[],c=new Map;for(let t of e){let e=t.directory.path,n=c.get(e)||[];n.push(t),c.set(e,n)}for(let e of r){let r=c.get(e.path)||[];if(r.length===0)continue;let l=d(e,r,o),u=i(a,e.path,`islands.d.ts`);await v(n(u)),await t(u,l),s.push(u)}let l=f(r,a,o),u=i(a,o.outputDir,`islands.d.ts`);return await v(n(u)),await t(u,l),s.push(u),s}function d(e,t,n){let r=[];r.push(`/**`),r.push(` * Auto-generated TypeScript declarations for islands in ${e.relativePath}`),r.push(` * Do not edit this file manually - it will be overwritten.`),r.push(` */`),r.push(``);for(let e of t)r.push(...p(e,n,``));return r.join(`
4
+ `)}function f(e,t,n){let a=[];a.push(`/**`),a.push(` * Auto-generated index for all island type declarations.`),a.push(` * Do not edit this file manually - it will be overwritten.`),a.push(` */`),a.push(``);for(let o of e){let e=r(i(t,n.outputDir),i(t,o.path,`islands.d.ts`)).replace(/\\/g,`/`).replace(/\.d\.ts$/,``);a.push(`export * from "${e}";`)}return a.join(`
5
+ `)}function p(e,t,n){let r=[],i=m(e);t.includeJsDoc&&(r.push(`${n}/**`),r.push(`${n} * Island component: ${e.name}`),r.push(`${n} * Framework: ${e.framework}`),r.push(`${n} * Source: ${e.relativePath}`),e.namespace&&r.push(`${n} * Namespace: ${e.namespace}`),r.push(`${n} */`));let a=h(e.framework);return r.push(`${n}export const ${i}: ${a};`),r}function m(e){return e.name}function h(e){switch(e){case`preact`:return`import('preact').FunctionComponent<any>`;case`react`:return`import('react').FC<any>`;case`vue`:return`import('vue').DefineComponent<any, any, any>`;case`svelte`:return`import('svelte').SvelteComponent`;case`solid`:return`import('solid-js').Component<any>`;case`lit`:return`typeof import('lit').LitElement`;default:return`unknown`}}function g(e){let t=new Map;for(let n of e){let e=t.get(n.namespace)||[];e.push(n),t.set(n.namespace,e)}let n=new Map,r=Array.from(t.keys()).sort((e,t)=>e===``?-1:t===``?1:e.localeCompare(t));for(let e of r)n.set(e,t.get(e));return n}function _(e){return e.split(/[-_\s]+/).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``)}async function v(t){try{await e(t,{recursive:!0})}catch(e){if(!(e instanceof Error)||e.code!==`EEXIST`)throw e}}export async function watchAndGenerateTypes(e,t={}){let{createIslandWatcher:n,createIslandRegistry:r}=await import(`../islands/discovery/index.js`),i=await r(e),a=n(e,i);await generateIslandTypes(e,t);let o=await a.watch(async n=>{await i.rebuild();let r=await generateIslandTypes(e,t);r.success||console.error(`❌ Failed to regenerate types:`,r.errors)});return()=>{o(),a.stop()}}
@@ -1,2 +1,2 @@
1
- import{dirname as e}from"node:path";const t=[/['"]\.\.\/islands\//,/['"]\.\/islands\//,/['"]\.\.\/\.\.\/islands\//,/['"]\$islands\//,/['"]@\/islands\//,/['"]\/src\/islands\//];function n(e){let t=new Map,n=/import\s+([A-Z]\w*)\s+from\s+(['"][^'"]+['"])/g,r;for(;(r=n.exec(e))!==null;){let e=r[1],n=r[2].slice(1,-1);t.set(e,n)}return t}function r(e){let t=new Set,n=/<([A-Z]\w*)\s+[^>]*\bisland\s*[={]/g,r;for(;(r=n.exec(e))!==null;)t.add(r[1]);let i=/(?:_?jsxs?(?:DEV)?)\s*\(\s*([A-Z]\w*)\s*,\s*\{[^}]*\bisland\s*:/g;for(;(r=i.exec(e))!==null;)t.add(r[1]);return t}function i(e,t){let i=[],a=n(e),o=r(e);for(let[e,n]of a){let r=`"${n}"`,a=t.some(e=>e.test(r)),s=o.has(e);(a||s)&&i.push({localName:e,importPath:n,islandPropUsage:s})}return i}function a(t,n,r=[]){if(t.startsWith(`/src/`)||t.startsWith(`/app/`)||t.startsWith(`/`))return t;for(let e of r){let n=e.find;if(typeof n==`string`){if(t===n||t.startsWith(`${n}/`)){let r=t.slice(n.length);return`${e.replacement.startsWith(`/`)?e.replacement:`/${e.replacement}`}${r}`}}else if(n instanceof RegExp&&n.test(t)){let r=e.replacement.startsWith(`/`)?e.replacement:`/${e.replacement}`;return t.replace(n,r)}}if(t.startsWith(`@/`))return`/app/${t.slice(2)}`;if(t.startsWith(`@shared/`))return`/app/shared/${t.slice(8)}`;if(t.startsWith(`@modules/`))return`/app/modules/${t.slice(9)}`;if(t.startsWith(`$components/`))return`/src/components/${t.slice(12)}`;if(t.startsWith(`$islands/`))return`/src/islands/${t.slice(9)}`;if(t.startsWith(`~/`))return`/src/${t.slice(2)}`;if(t.startsWith(`.`)){let r=n.replaceAll(`\\`,`/`),i=r.indexOf(`/app/`);if(i===-1&&(i=r.indexOf(`/src/`)),i!==-1){let n=e(r.slice(i)).split(`/`),a=t.split(`/`);for(let e of a)e===`..`?n.pop():e!==`.`&&n.push(e);return n.join(`/`)}}return t.includes(`/islands/`)?`/src/islands/${t.split(`/`).at(-1)}`:`/src/${t.split(`/`).pop()}`}function o(e){if(e.endsWith(`.vue`))return`vue`;if(e.endsWith(`.svelte`))return`svelte`;if(e.includes(`.solid.`))return`solid`;if(e.includes(`.lit.`))return`lit`;if(e.includes(`.qwik.`))return`qwik`;if(e.endsWith(`.tsx`)||e.endsWith(`.jsx`))return`preact`}function s(e,t){let n=t+1,r=1;for(;n<e.length&&r>0;){let t=e[n];t===`{`?(r++,n++):t===`}`?(r--,r>0&&n++):t===`'`||t===`"`||t==="`"?n=c(e,n):n++}return n<e.length?n+1:n}function c(e,t){let n=e[t];for(t++;t<e.length&&e[t]!==n;)e[t]===`\\`&&t++,t++;return t<e.length?t+1:t}function l(e,t){let n=t,r=0;for(;n<e.length&&e[n]!==`(`;)n++;if(n>=e.length)return t;for(;n<e.length;){let t=e[n];if(t===`(`)r++,n++;else if(t===`)`){if(r--,n++,r===0)return n}else t===`{`?n=s(e,n):t===`'`||t===`"`||t==="`"?n=c(e,n):n++}return n}function u(e){let t=e.match(/\bisland\s*:\s*/);if(!t)return null;let n=t.index+t[0].length,r;if(e[n]===`{`)r=s(e,n);else{let t=n,i=0;for(;t<e.length;){let n=e[t];if(n===`{`||n===`[`||n===`(`)i++,t++;else if(n===`}`||n===`]`||n===`)`){if(i===0)break;i--,t++}else if(n===`,`&&i===0)break;else t++}r=t}let i=e.slice(n,r).trim(),a=e.slice(0,t.index).trim(),o=e.slice(r).trim(),c=a;return o.startsWith(`,`)?c+=o.slice(1):c+=o,c=c.replace(/,\s*}$/,`}`).replace(/{\s*,/,`{`),{islandValue:i,otherProps:c}}function d(e,t,n,r){let i=RegExp(`(_?jsxs?(?:DEV)?)\\s*\\(\\s*${t}\\s*,`,`g`),a=``,o=0,c;for(;(c=i.exec(e))!==null;){let t=c.index;c[1];let i=l(e,t),d=e.slice(t,i);if(!d.includes(`island`)){a+=e.slice(o,i),o=i;continue}let f=d.indexOf(`{`);if(f===-1){a+=e.slice(o,i),o=i;continue}let p=s(d,f),m=u(d.slice(f,p));if(!m){a+=e.slice(o,i),o=i;continue}let{islandValue:h,otherProps:g}=m,_=`(await __AvalonRenderIsland({ src: "${n}", ${r?`framework: "${r}",`:``} ...(${h}), ${g.trim()!==`{}`&&g.trim()!==``?`props: ${g},`:``} ssr: (${h}).ssr !== undefined ? (${h}).ssr : true }))`;a+=e.slice(o,t)+_,o=i}return a+=e.slice(o),a}export function mdxIslandTransform(e={}){let{islandPathPatterns:n=t,verbose:r=!1}=e,s=[];return{name:`avalon:mdx-island-transform`,enforce:`post`,configResolved(e){s=e.resolve?.alias??[]},transform(e,t){if(!t.endsWith(`.mdx`)&&!t.includes(`.mdx?`))return null;let c=i(e,n);if(c.length===0)return null;if(r){console.log(`[mdx-island-transform] Found ${c.length} island import(s) in ${t}`);for(let e of c)console.log(` - ${e.localName} from ${e.importPath}${e.islandPropUsage?` (island prop)`:` (islands dir)`}`)}let l=e;if(!(l.includes(`from "@useavalon/avalon"`)||l.includes(`from '@useavalon/avalon'`))){let e=/^(import\s.+?from\s+.+?\n)/m.exec(l);if(e){let t=l.indexOf(e[0])+e[0].length;l=l.slice(0,t)+`import { renderIsland as __AvalonRenderIsland } from "@useavalon/avalon";
1
+ import{dirname as e}from"node:path";const t=[/['"]\.\.\/islands\//,/['"]\.\/islands\//,/['"]\.\.\/\.\.\/islands\//,/['"]\$islands\//,/['"]@\/islands\//,/['"]\/src\/islands\//];function n(e){let t=new Map,n=/import\s+([A-Z]\w*)\s+from\s+(['"][^'"]+['"])/g;for(let r=n.exec(e);r!==null;r=n.exec(e)){let e=r[1],n=r[2].slice(1,-1);t.set(e,n)}return t}function r(e){let t=new Set,n=/<([A-Z]\w*)\s+[^>]*\bisland\s*[={]/g;for(let r=n.exec(e);r!==null;r=n.exec(e))t.add(r[1]);let r=/(?:_?jsxs?(?:DEV)?)\s*\(\s*([A-Z]\w*)\s*,\s*\{[^}]*\bisland\s*:/g;for(let n=r.exec(e);n!==null;n=r.exec(e))t.add(n[1]);return t}function i(e,t){let i=[],a=n(e),o=r(e);for(let[e,n]of a){let r=`"${n}"`,a=t.some(e=>e.test(r)),s=o.has(e);(a||s)&&i.push({localName:e,importPath:n,islandPropUsage:s})}return i}function a(t,n,r=[]){if(t.startsWith(`/src/`)||t.startsWith(`/app/`)||t.startsWith(`/`))return t;for(let e of r){let n=e.find;if(typeof n==`string`){if(t===n||t.startsWith(`${n}/`)){let r=t.slice(n.length);return`${e.replacement.startsWith(`/`)?e.replacement:`/${e.replacement}`}${r}`}}else if(n instanceof RegExp&&n.test(t)){let r=e.replacement.startsWith(`/`)?e.replacement:`/${e.replacement}`;return t.replace(n,r)}}if(t.startsWith(`@/`))return`/app/${t.slice(2)}`;if(t.startsWith(`@shared/`))return`/app/shared/${t.slice(8)}`;if(t.startsWith(`@modules/`))return`/app/modules/${t.slice(9)}`;if(t.startsWith(`$components/`))return`/src/components/${t.slice(12)}`;if(t.startsWith(`$islands/`))return`/src/islands/${t.slice(9)}`;if(t.startsWith(`~/`))return`/src/${t.slice(2)}`;if(t.startsWith(`.`)){let r=n.replaceAll(`\\`,`/`),i=r.indexOf(`/app/`);if(i===-1&&(i=r.indexOf(`/src/`)),i!==-1){let n=e(r.slice(i)).split(`/`),a=t.split(`/`);for(let e of a)e===`..`?n.pop():e!==`.`&&n.push(e);return n.join(`/`)}}return t.includes(`/islands/`)?`/src/islands/${t.split(`/`).at(-1)}`:`/src/${t.split(`/`).pop()}`}function o(e){if(e.endsWith(`.vue`))return`vue`;if(e.endsWith(`.svelte`))return`svelte`;if(e.includes(`.solid.`))return`solid`;if(e.includes(`.lit.`))return`lit`;if(e.includes(`.qwik.`))return`qwik`;if(e.endsWith(`.tsx`)||e.endsWith(`.jsx`))return`preact`}function s(e,t){let n=t+1,r=1;for(;n<e.length&&r>0;){let t=e[n];t===`{`?(r++,n++):t===`}`?(r--,r>0&&n++):t===`'`||t===`"`||t==="`"?n=c(e,n):n++}return n<e.length?n+1:n}function c(e,t){let n=e[t];for(t++;t<e.length&&e[t]!==n;)e[t]===`\\`&&t++,t++;return t<e.length?t+1:t}function l(e,t){let n=t,r=0;for(;n<e.length&&e[n]!==`(`;)n++;if(n>=e.length)return t;for(;n<e.length;){let t=e[n];if(t===`(`)r++,n++;else if(t===`)`){if(r--,n++,r===0)return n}else t===`{`?n=s(e,n):t===`'`||t===`"`||t==="`"?n=c(e,n):n++}return n}function u(e){let t=e.match(/\bisland\s*:\s*/);if(!t)return null;let n=t.index+t[0].length,r;if(e[n]===`{`)r=s(e,n);else{let t=n,i=0;for(;t<e.length;){let n=e[t];if(n===`{`||n===`[`||n===`(`)i++,t++;else if(n===`}`||n===`]`||n===`)`){if(i===0)break;i--,t++}else if(n===`,`&&i===0)break;else t++}r=t}let i=e.slice(n,r).trim(),a=e.slice(0,t.index).trim(),o=e.slice(r).trim(),c=a;return o.startsWith(`,`)?c+=o.slice(1):c+=o,c=c.replace(/,\s*}$/,`}`).replace(/{\s*,/,`{`),{islandValue:i,otherProps:c}}function d(e,t,n,r){let i=RegExp(`(_?jsxs?(?:DEV)?)\\s*\\(\\s*${t}\\s*,`,`g`),a=``,o=0;for(let t=i.exec(e);t!==null;t=i.exec(e)){let i=t.index;t[1];let c=l(e,i),d=e.slice(i,c);if(!d.includes(`island`)){a+=e.slice(o,c),o=c;continue}let f=d.indexOf(`{`);if(f===-1){a+=e.slice(o,c),o=c;continue}let p=s(d,f),m=u(d.slice(f,p));if(!m){a+=e.slice(o,c),o=c;continue}let{islandValue:h,otherProps:g}=m,_=`(await __AvalonRenderIsland({ src: "${n}", ${r?`framework: "${r}",`:``} ...(${h}), ${g.trim()!==`{}`&&g.trim()!==``?`props: ${g},`:``} ssr: (${h}).ssr !== undefined ? (${h}).ssr : true }))`;a+=e.slice(o,i)+_,o=c}return a+=e.slice(o),a}export function mdxIslandTransform(e={}){let{islandPathPatterns:n=t,verbose:r=!1}=e,s=[];return{name:`avalon:mdx-island-transform`,enforce:`post`,configResolved(e){s=e.resolve?.alias??[]},transform(e,t){if(!t.endsWith(`.mdx`)&&!t.includes(`.mdx?`))return null;let c=i(e,n);if(c.length===0)return null;if(r){console.log(`[mdx-island-transform] Found ${c.length} island import(s) in ${t}`);for(let e of c)console.log(` - ${e.localName} from ${e.importPath}${e.islandPropUsage?` (island prop)`:` (islands dir)`}`)}let l=e;if(!(l.includes(`from "@useavalon/avalon"`)||l.includes(`from '@useavalon/avalon'`))){let e=/^(import\s.+?from\s+.+?\n)/m.exec(l);if(e){let t=l.indexOf(e[0])+e[0].length;l=l.slice(0,t)+`import { renderIsland as __AvalonRenderIsland } from "@useavalon/avalon";
2
2
  `+l.slice(t)}}for(let e of c){let n=a(e.importPath,t,s),r=o(n);l=d(l,e.localName,n,r)}for(let e of c){let t=RegExp(`import\\s+${e.localName}\\s+from\\s+(['"][^'"]+['"])`,`g`);l=l.replace(t,`import $1; // [mdx-island-transform] kept for CSS: ${e.localName}`)}return l=l.replace(/function\s+_createMdxContent\s*\(/g,`async function _createMdxContent(`),l=l.replace(/export\s+default\s+function\s+MDXContent\s*\(/g,`export default async function MDXContent(`),r&&console.log(`[mdx-island-transform] Transformed ${t}`),{code:l,map:null}}}}
@@ -1,5 +1,5 @@
1
- import type { Plugin } from 'vite';
2
- import type { Pluggable } from 'unified';
1
+ import type { Pluggable } from "unified";
2
+ import type { Plugin } from "vite";
3
3
  export interface MDXPluginOptions {
4
4
  remarkPlugins?: Pluggable[];
5
5
  rehypePlugins?: Pluggable[];
@@ -1,8 +1,8 @@
1
- export { type PropExtractionResult, FALLBACK_PROPS, extractVueProps } from "./vue.ts";
2
- export { extractSvelteProps } from "./svelte.ts";
3
1
  export { extractLitProps } from "./lit.ts";
4
- export { extractSolidProps } from "./solid.ts";
5
2
  export { extractQwikProps } from "./qwik.ts";
3
+ export { extractSolidProps } from "./solid.ts";
4
+ export { extractSvelteProps } from "./svelte.ts";
5
+ export { extractVueProps, FALLBACK_PROPS, type PropExtractionResult } from "./vue.ts";
6
6
  import type { PropExtractionResult } from "./vue.ts";
7
7
  /** Maps framework name to its prop extractor function */
8
8
  export declare const EXTRACTOR_MAP: Record<string, (source: string) => PropExtractionResult>;
@@ -1 +1 @@
1
- export{FALLBACK_PROPS,extractVueProps}from"./vue.js";export{extractSvelteProps}from"./svelte.js";export{extractLitProps}from"./lit.js";export{extractSolidProps}from"./solid.js";export{extractQwikProps}from"./qwik.js";import{extractVueProps as e}from"./vue.js";import{extractSvelteProps as t}from"./svelte.js";import{extractLitProps as n}from"./lit.js";import{extractSolidProps as r}from"./solid.js";import{extractQwikProps as i}from"./qwik.js";export const EXTRACTOR_MAP={vue:e,svelte:t,lit:n,solid:r,qwik:i};
1
+ export{extractLitProps}from"./lit.js";export{extractQwikProps}from"./qwik.js";export{extractSolidProps}from"./solid.js";export{extractSvelteProps}from"./svelte.js";export{extractVueProps,FALLBACK_PROPS}from"./vue.js";import{extractLitProps as e}from"./lit.js";import{extractQwikProps as t}from"./qwik.js";import{extractSolidProps as n}from"./solid.js";import{extractSvelteProps as r}from"./svelte.js";import{extractVueProps as i}from"./vue.js";export const EXTRACTOR_MAP={vue:i,svelte:r,lit:e,solid:n,qwik:t};
@@ -1 +1 @@
1
- import{FALLBACK_PROPS as e}from"./vue.js";const t={String:`string`,Number:`number`,Boolean:`boolean`,Array:`unknown[]`,Object:`Record<string, unknown>`};export function extractLitProps(t){try{let n=r(t);if(n===null)return{propsType:e,fallback:!0};let a=i(n);return a.length===0?{propsType:e,fallback:!0}:{propsType:`{ `+a.map(e=>e.name+`?: `+e.tsType).join(`; `)+` }`,fallback:!1}}catch{return console.warn(`[avalon] Failed to extract Lit props — falling back to Record<string, unknown>`),{propsType:e,fallback:!0}}}function r(e){let t=/static\s+properties\s*=\s*\{/.exec(e);if(!t)return null;let n=t.index+t[0].length-1,r=1,i=n+1;for(;i<e.length&&r>0;)e[i]===`{`?r++:e[i]===`}`&&r--,i++;return r===0?e.slice(n+1,i-1):null}function i(e){let n=[],r=/(\w+)\s*:\s*\{/g,i;for(;(i=r.exec(e))!==null;){let o=i[1],s=i.index+i[0].length-1,c=a(e,s);if(c===null||/\bstate\s*:\s*true\b/.test(c))continue;let l=new RegExp(/\btype\s*:\s*(\w+)/).exec(c),u=l?l[1]:null,d=u&&u in t?t[u]:`unknown`;n.push({name:o,tsType:d}),r.lastIndex=s+c.length}return n}function a(e,t){if(e[t]!==`{`)return null;let n=0,r=t;for(;r<e.length;){if(e[r]===`{`?n++:e[r]===`}`&&n--,n===0)return e.slice(t+1,r);r++}return null}
1
+ import{FALLBACK_PROPS as e}from"./vue.js";const t={String:`string`,Number:`number`,Boolean:`boolean`,Array:`unknown[]`,Object:`Record<string, unknown>`};export function extractLitProps(t){try{let n=r(t);if(n===null)return{propsType:e,fallback:!0};let a=i(n);return a.length===0?{propsType:e,fallback:!0}:{propsType:`{ `+a.map(e=>e.name+`?: `+e.tsType).join(`; `)+` }`,fallback:!1}}catch{return console.warn(`[avalon] Failed to extract Lit props — falling back to Record<string, unknown>`),{propsType:e,fallback:!0}}}function r(e){let t=/static\s+properties\s*=\s*\{/.exec(e);if(!t)return null;let n=t.index+t[0].length-1,r=1,i=n+1;for(;i<e.length&&r>0;)e[i]===`{`?r++:e[i]===`}`&&r--,i++;return r===0?e.slice(n+1,i-1):null}function i(e){let n=[],r=/(\w+)\s*:\s*\{/g;for(let i=r.exec(e);i!==null;i=r.exec(e)){let o=i[1],s=i.index+i[0].length-1,c=a(e,s);if(c===null||/\bstate\s*:\s*true\b/.test(c))continue;let l=new RegExp(/\btype\s*:\s*(\w+)/).exec(c),u=l?l[1]:null,d=u&&u in t?t[u]:`unknown`;n.push({name:o,tsType:d}),r.lastIndex=s+c.length}return n}function a(e,t){if(e[t]!==`{`)return null;let n=0,r=t;for(;r<e.length;){if(e[r]===`{`?n++:e[r]===`}`&&n--,n===0)return e.slice(t+1,r);r++}return null}
@@ -1 +1 @@
1
- import{FALLBACK_PROPS as e}from"./vue.js";export function extractSvelteProps(t){try{let i=n(t);if(i===null)return{propsType:e,fallback:!0};let a=r(i);if(a!==null)return{propsType:a,fallback:!1};let s=o(i);return s===null?{propsType:e,fallback:!0}:{propsType:s,fallback:!1}}catch{return console.warn(`[avalon] Failed to extract Svelte props — falling back to Record<string, unknown>`),{propsType:e,fallback:!0}}}function n(e){let t=new RegExp(/<script\b[^>]*>([\s\S]*?)<\/script>/i).exec(e);return t?t[1]:null}function r(e){let t=new RegExp(/let\s+(?:\{[^}]*\}|\w+)\s*:\s*([\s\S]*?)\s*=\s*\$props\s*\(\s*\)/).exec(e);if(!t)return null;let n=t[1].trim();return n.length===0?null:n.startsWith(`{`)?s(n)?n:(console.warn(`[avalon] Unbalanced braces in Svelte $props() type — falling back`),null):i(e,n)}function i(e,t){let n=new RegExp(String.raw`interface\s+${c(t)}\s*\{`).exec(e);if(n){let t=a(e,n.index+n[0].length-1);if(t!==null)return t}let r=new RegExp(String.raw`type\s+${c(t)}\s*=\s*\{`).exec(e);if(r){let t=a(e,r.index+r[0].length-1);if(t!==null)return t}return null}function a(e,t){if(e[t]!==`{`)return null;let n=0,r=t;for(;r<e.length;){if(e[r]===`{`)n++;else if(e[r]===`}`&&(n--,n===0))return e.slice(t,r+1).trim();r++}return null}function o(e){let t=/export\s+let\s+(\w+)\s*:\s*([^;=]+)/g,n=[],r;for(;(r=t.exec(e))!==null;){let e=r[1].trim(),t=r[2].trim();e&&t&&n.push(`${e}: ${t}`)}return n.length===0?null:`{ ${n.join(`; `)} }`}function s(e){let t=0;for(let n of e)if(n===`{`?t++:n===`}`&&t--,t<0)return!1;return t===0}function c(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)}
1
+ import{FALLBACK_PROPS as e}from"./vue.js";export function extractSvelteProps(t){try{let i=n(t);if(i===null)return{propsType:e,fallback:!0};let a=r(i);if(a!==null)return{propsType:a,fallback:!1};let s=o(i);return s===null?{propsType:e,fallback:!0}:{propsType:s,fallback:!1}}catch{return console.warn(`[avalon] Failed to extract Svelte props — falling back to Record<string, unknown>`),{propsType:e,fallback:!0}}}function n(e){let t=new RegExp(/<script\b[^>]*>([\s\S]*?)<\/script>/i).exec(e);return t?t[1]:null}function r(e){let t=new RegExp(/let\s+(?:\{[^}]*\}|\w+)\s*:\s*([\s\S]*?)\s*=\s*\$props\s*\(\s*\)/).exec(e);if(!t)return null;let n=t[1].trim();return n.length===0?null:n.startsWith(`{`)?s(n)?n:(console.warn(`[avalon] Unbalanced braces in Svelte $props() type — falling back`),null):i(e,n)}function i(e,t){let n=new RegExp(String.raw`interface\s+${c(t)}\s*\{`).exec(e);if(n){let t=a(e,n.index+n[0].length-1);if(t!==null)return t}let r=new RegExp(String.raw`type\s+${c(t)}\s*=\s*\{`).exec(e);if(r){let t=a(e,r.index+r[0].length-1);if(t!==null)return t}return null}function a(e,t){if(e[t]!==`{`)return null;let n=0,r=t;for(;r<e.length;){if(e[r]===`{`)n++;else if(e[r]===`}`&&(n--,n===0))return e.slice(t,r+1).trim();r++}return null}function o(e){let t=/export\s+let\s+(\w+)\s*:\s*([^;=]+)/g,n=[];for(let r=t.exec(e);r!==null;r=t.exec(e)){let e=r[1].trim(),t=r[2].trim();e&&t&&n.push(`${e}: ${t}`)}return n.length===0?null:`{ ${n.join(`; `)} }`}function s(e){let t=0;for(let n of e)if(n===`{`?t++:n===`}`&&t--,t<0)return!1;return t===0}function c(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)}
@@ -1 +1 @@
1
- import e from"node:path";import{readFile as t,writeFile as n,unlink as r,stat as i}from"node:fs/promises";const a=[`.solid.tsx`,`.qwik.tsx`,`.lit.ts`,`.svelte`,`.vue`],o=new Set([`.lit.ts`,`.solid.tsx`,`.qwik.tsx`]);export function getSidecarPath(t){let n=e.dirname(t),r=e.basename(t);for(let t of a)if(r.endsWith(t)){let i=r.slice(0,-t.length);if(o.has(t)){let r=t.endsWith(`.ts`)?t.slice(0,-3):t.slice(0,-4);return e.join(n,`${i}${r}.d.ts`)}return e.join(n,`${i}.d${t}.ts`)}let i=e.extname(t),s=r.slice(0,-i.length);return e.join(n,`${s}.d${i}.ts`)}export async function isSidecarFresh(e,t){try{let[n,r]=await Promise.all([i(e),i(t)]);return r.mtimeMs>=n.mtimeMs}catch{return!1}}export async function writeSidecarIfChanged(e,r){try{if(await t(e,`utf-8`)===r)return!1}catch{}return await n(e,r,`utf-8`),!0}export async function deleteSidecar(e){try{return await r(e),!0}catch{return!1}}
1
+ import{readFile as e,stat as t,unlink as n,writeFile as r}from"node:fs/promises";import i from"node:path";const a=[`.solid.tsx`,`.qwik.tsx`,`.lit.ts`,`.svelte`,`.vue`],o=new Set([`.lit.ts`,`.solid.tsx`,`.qwik.tsx`]);export function getSidecarPath(e){let t=i.dirname(e),n=i.basename(e);for(let e of a)if(n.endsWith(e)){let r=n.slice(0,-e.length);if(o.has(e)){let n=e.endsWith(`.ts`)?e.slice(0,-3):e.slice(0,-4);return i.join(t,`${r}${n}.d.ts`)}return i.join(t,`${r}.d${e}.ts`)}let r=i.extname(e),s=n.slice(0,-r.length);return i.join(t,`${s}.d${r}.ts`)}export async function isSidecarFresh(e,n){try{let[r,i]=await Promise.all([t(e),t(n)]);return i.mtimeMs>=r.mtimeMs}catch{return!1}}export async function writeSidecarIfChanged(t,n){try{if(await e(t,`utf-8`)===n)return!1}catch{}return await r(t,n,`utf-8`),!0}export async function deleteSidecar(e){try{return await n(e),!0}catch{return!1}}
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * Framework HMR Adapter base types and registry.
3
3
  */
4
- export { BaseFrameworkAdapter, AdapterRegistry, type FrameworkHMRAdapter, type StateSnapshot, } from '../framework-adapter.ts';
4
+ export { AdapterRegistry, BaseFrameworkAdapter, type FrameworkHMRAdapter, type StateSnapshot, } from "../framework-adapter.ts";
@@ -1 +1 @@
1
- export{BaseFrameworkAdapter,AdapterRegistry}from"../framework-adapter.js";
1
+ export{AdapterRegistry,BaseFrameworkAdapter}from"../framework-adapter.js";
@@ -6,11 +6,11 @@
6
6
  * - CSS modules
7
7
  * - Component-scoped styles (Svelte, Vue)
8
8
  */
9
- import type { Update } from './hmr-coordinator.ts';
9
+ import type { Update } from "./hmr-coordinator.ts";
10
10
  /**
11
11
  * CSS update types
12
12
  */
13
- export type CSSUpdateType = 'global' | 'module' | 'scoped';
13
+ export type CSSUpdateType = "global" | "module" | "scoped";
14
14
  /**
15
15
  * CSS update information
16
16
  */
@@ -213,11 +213,11 @@ export declare abstract class BaseFrameworkAdapter implements FrameworkHMRAdapte
213
213
  /**
214
214
  * Capture DOM state (scroll, focus, form values)
215
215
  */
216
- protected captureDOMState(island: HTMLElement): StateSnapshot['dom'];
216
+ protected captureDOMState(island: HTMLElement): StateSnapshot["dom"];
217
217
  /**
218
218
  * Restore DOM state (scroll, focus, form values)
219
219
  */
220
- protected restoreDOMState(island: HTMLElement, dom: StateSnapshot['dom']): void;
220
+ protected restoreDOMState(island: HTMLElement, dom: StateSnapshot["dom"]): void;
221
221
  /**
222
222
  * Get a CSS selector for an element
223
223
  */
@@ -4,7 +4,7 @@
4
4
  * Central orchestrator for all HMR operations in Avalon.
5
5
  * Integrates with Vite's HMR API and coordinates island updates across frameworks.
6
6
  */
7
- import { type FrameworkHMRAdapter, AdapterRegistry } from './framework-adapter.ts';
7
+ import { AdapterRegistry, type FrameworkHMRAdapter } from "./framework-adapter.ts";
8
8
  /**
9
9
  * Vite HMR types (defined locally to avoid import issues)
10
10
  */
@@ -14,7 +14,7 @@ export interface HMRPayload {
14
14
  timestamp?: number;
15
15
  }
16
16
  export interface ErrorPayload {
17
- type: 'error';
17
+ type: "error";
18
18
  err: {
19
19
  message: string;
20
20
  stack: string;
@@ -30,7 +30,7 @@ export interface ErrorPayload {
30
30
  };
31
31
  }
32
32
  export interface Update {
33
- type: 'js-update' | 'css-update';
33
+ type: "js-update" | "css-update";
34
34
  path: string;
35
35
  acceptedPath: string;
36
36
  timestamp: number;
@@ -40,7 +40,7 @@ export interface Update {
40
40
  * HMR update payload from Vite
41
41
  */
42
42
  export interface HMRUpdatePayload extends HMRPayload {
43
- type: 'update' | 'full-reload' | 'prune' | 'error';
43
+ type: "update" | "full-reload" | "prune" | "error";
44
44
  updates?: ModuleUpdate[];
45
45
  timestamp?: number;
46
46
  err?: ErrorPayload;
@@ -49,12 +49,12 @@ export interface HMRUpdatePayload extends HMRPayload {
49
49
  * Individual module update information
50
50
  */
51
51
  export interface ModuleUpdate {
52
- type: 'js-update' | 'css-update';
52
+ type: "js-update" | "css-update";
53
53
  path: string;
54
54
  acceptedPath: string;
55
55
  timestamp: number;
56
56
  }
57
- export type { FrameworkHMRAdapter, StateSnapshot } from './framework-adapter.ts';
57
+ export type { FrameworkHMRAdapter, StateSnapshot } from "./framework-adapter.ts";
58
58
  /**
59
59
  * HMR Coordinator class
60
60
  * Manages HMR lifecycle and coordinates updates across islands
@@ -1,68 +1,67 @@
1
1
  /**
2
2
  * Type declarations for framework runtime imports
3
- *
3
+ *
4
4
  * These are dynamic imports that are resolved by Vite at runtime in the browser.
5
5
  * The actual packages are provided by the user's project dependencies.
6
6
  */
7
7
 
8
- declare module 'react' {
9
- export function createElement<P = Record<string, unknown>>(
10
- component: unknown,
11
- props: P | null,
12
- ...children: unknown[]
13
- ): unknown;
14
- export const version: string;
8
+ declare module "react" {
9
+ export function createElement<P = Record<string, unknown>>(
10
+ component: unknown,
11
+ props: P | null,
12
+ ...children: unknown[]
13
+ ): unknown;
14
+ export const version: string;
15
15
  }
16
16
 
17
- declare module 'react-dom/client' {
18
- export interface Root {
19
- render(element: unknown): void;
20
- unmount(): void;
21
- }
22
-
23
- export function hydrateRoot(
24
- container: HTMLElement,
25
- element: unknown,
26
- options?: {
27
- onRecoverableError?: (error: Error) => void;
28
- }
29
- ): Root;
30
-
31
- export function createRoot(container: HTMLElement): Root;
32
- }
17
+ declare module "react-dom/client" {
18
+ export interface Root {
19
+ render(element: unknown): void;
20
+ unmount(): void;
21
+ }
22
+
23
+ export function hydrateRoot(
24
+ container: HTMLElement,
25
+ element: unknown,
26
+ options?: {
27
+ onRecoverableError?: (error: Error) => void;
28
+ },
29
+ ): Root;
33
30
 
34
- declare module 'vue' {
35
- export interface App {
36
- mount(rootContainer: HTMLElement | string, isHydrate?: boolean): unknown;
37
- unmount(): void;
38
- use(plugin: unknown, ...options: unknown[]): App;
39
- component(name: string, component: unknown): App;
40
- directive(name: string, directive: unknown): App;
41
- provide(key: string | symbol, value: unknown): App;
42
- config: {
43
- errorHandler?: (err: Error, instance: unknown, info: string) => void;
44
- warnHandler?: (msg: string, instance: unknown, trace: string) => void;
45
- };
46
- }
47
-
48
- export function createApp(rootComponent: unknown, rootProps?: Record<string, unknown>): App;
49
- export const version: string;
31
+ export function createRoot(container: HTMLElement): Root;
50
32
  }
51
33
 
34
+ declare module "vue" {
35
+ export interface App {
36
+ mount(rootContainer: HTMLElement | string, isHydrate?: boolean): unknown;
37
+ unmount(): void;
38
+ use(plugin: unknown, ...options: unknown[]): App;
39
+ component(name: string, component: unknown): App;
40
+ directive(name: string, directive: unknown): App;
41
+ provide(key: string | symbol, value: unknown): App;
42
+ config: {
43
+ errorHandler?: (err: Error, instance: unknown, info: string) => void;
44
+ warnHandler?: (msg: string, instance: unknown, trace: string) => void;
45
+ };
46
+ }
47
+
48
+ export function createApp(rootComponent: unknown, rootProps?: Record<string, unknown>): App;
49
+ export const version: string;
50
+ }
52
51
 
53
- declare module 'svelte' {
54
- export interface SvelteComponent {
55
- new (options: {
56
- target: HTMLElement;
57
- props?: Record<string, unknown>;
58
- hydrate?: boolean;
59
- intro?: boolean;
60
- anchor?: Element | null;
61
- context?: Map<unknown, unknown>;
62
- }): {
63
- $set(props: Record<string, unknown>): void;
64
- $destroy(): void;
65
- $on?(event: string, handler: (...args: unknown[]) => void): () => void;
66
- };
67
- }
52
+ declare module "svelte" {
53
+ export interface SvelteComponent {
54
+ new (options: {
55
+ target: HTMLElement;
56
+ props?: Record<string, unknown>;
57
+ hydrate?: boolean;
58
+ intro?: boolean;
59
+ anchor?: Element | null;
60
+ context?: Map<unknown, unknown>;
61
+ }): {
62
+ $set(props: Record<string, unknown>): void;
63
+ $destroy(): void;
64
+ $on?(event: string, handler: (...args: unknown[]) => void): () => void;
65
+ };
66
+ }
68
67
  }
@@ -2,45 +2,45 @@
2
2
  * Type definitions for Vite HMR API
3
3
  */
4
4
 
5
- declare module 'vite/types/hmrPayload' {
6
- export interface HMRPayload {
7
- type: 'update' | 'full-reload' | 'prune' | 'error' | 'connected' | 'custom';
8
- updates?: Update[];
9
- timestamp?: number;
10
- path?: string;
11
- err?: Error;
12
- data?: unknown;
13
- event?: string;
14
- }
5
+ declare module "vite/types/hmrPayload" {
6
+ export interface HMRPayload {
7
+ type: "update" | "full-reload" | "prune" | "error" | "connected" | "custom";
8
+ updates?: Update[];
9
+ timestamp?: number;
10
+ path?: string;
11
+ err?: Error;
12
+ data?: unknown;
13
+ event?: string;
14
+ }
15
15
 
16
- export interface Update {
17
- type: 'js-update' | 'css-update';
18
- path: string;
19
- acceptedPath: string;
20
- timestamp: number;
21
- explicitImportRequired?: boolean;
22
- }
16
+ export interface Update {
17
+ type: "js-update" | "css-update";
18
+ path: string;
19
+ acceptedPath: string;
20
+ timestamp: number;
21
+ explicitImportRequired?: boolean;
22
+ }
23
23
  }
24
24
 
25
25
  declare global {
26
- interface ImportMeta {
27
- hot?: {
28
- accept(): void;
29
- accept(cb: (mod: unknown) => void): void;
30
- accept(dep: string, cb: (mod: unknown) => void): void;
31
- accept(deps: readonly string[], cb: (mods: unknown[]) => void): void;
32
-
33
- dispose(cb: (data: unknown) => void): void;
34
- decline(): void;
35
- invalidate(): void;
36
-
37
- on(event: string, cb: (payload: unknown) => void): void;
38
- off(event: string, cb: (payload: unknown) => void): void;
39
- send(event: string, data?: unknown): void;
40
-
41
- data: unknown;
42
- };
43
- }
26
+ interface ImportMeta {
27
+ hot?: {
28
+ accept(): void;
29
+ accept(cb: (mod: unknown) => void): void;
30
+ accept(dep: string, cb: (mod: unknown) => void): void;
31
+ accept(deps: readonly string[], cb: (mods: unknown[]) => void): void;
32
+
33
+ dispose(cb: (data: unknown) => void): void;
34
+ decline(): void;
35
+ invalidate(): void;
36
+
37
+ on(event: string, cb: (payload: unknown) => void): void;
38
+ off(event: string, cb: (payload: unknown) => void): void;
39
+ send(event: string, data?: unknown): void;
40
+
41
+ data: unknown;
42
+ };
43
+ }
44
44
  }
45
45
 
46
46
  export {};
@@ -5,66 +5,94 @@
5
5
  * They don't exist as actual files but are provided by Vite's plugin system.
6
6
  */
7
7
 
8
- declare module '/@useavalon/preact/client' {
9
- export function hydrate(container: Element, component: unknown, props?: Record<string, unknown>): void;
8
+ declare module "/@useavalon/preact/client" {
9
+ export function hydrate(
10
+ container: Element,
11
+ component: unknown,
12
+ props?: Record<string, unknown>,
13
+ ): void;
10
14
  export function getHydrationScript(): string;
11
15
  }
12
16
 
13
- declare module '/@useavalon/react/client' {
14
- export function hydrate(container: Element, component: unknown, props?: Record<string, unknown>): void;
17
+ declare module "/@useavalon/react/client" {
18
+ export function hydrate(
19
+ container: Element,
20
+ component: unknown,
21
+ props?: Record<string, unknown>,
22
+ ): void;
15
23
  export function getHydrationScript(): string;
16
24
  }
17
25
 
18
- declare module '/@useavalon/vue/client' {
19
- export function hydrate(container: Element, component: unknown, props?: Record<string, unknown>): void;
26
+ declare module "/@useavalon/vue/client" {
27
+ export function hydrate(
28
+ container: Element,
29
+ component: unknown,
30
+ props?: Record<string, unknown>,
31
+ ): void;
20
32
  export function getHydrationScript(): string;
21
33
  }
22
34
 
23
- declare module '/@useavalon/svelte/client' {
24
- export function hydrate(container: Element, component: unknown, props?: Record<string, unknown>): void;
35
+ declare module "/@useavalon/svelte/client" {
36
+ export function hydrate(
37
+ container: Element,
38
+ component: unknown,
39
+ props?: Record<string, unknown>,
40
+ ): void;
25
41
  export function getHydrationScript(): string;
26
42
  }
27
43
 
28
- declare module '/@useavalon/solid/client' {
29
- export function hydrate(container: Element, component: unknown, props?: Record<string, unknown>): void;
44
+ declare module "/@useavalon/solid/client" {
45
+ export function hydrate(
46
+ container: Element,
47
+ component: unknown,
48
+ props?: Record<string, unknown>,
49
+ ): void;
30
50
  export function getHydrationScript(): string;
31
51
  }
32
52
 
33
- declare module '/@useavalon/lit/client' {
34
- export function hydrate(container: Element, component: unknown, props?: Record<string, unknown>): void;
53
+ declare module "/@useavalon/lit/client" {
54
+ export function hydrate(
55
+ container: Element,
56
+ component: unknown,
57
+ props?: Record<string, unknown>,
58
+ ): void;
35
59
  export function getHydrationScript(): string;
36
60
  }
37
61
 
38
- declare module '/@useavalon/qwik/client' {
39
- export function hydrate(container: Element, component: unknown, props?: Record<string, unknown>): void;
62
+ declare module "/@useavalon/qwik/client" {
63
+ export function hydrate(
64
+ container: Element,
65
+ component: unknown,
66
+ props?: Record<string, unknown>,
67
+ ): void;
40
68
  export function getHydrationScript(): string;
41
69
  }
42
70
 
43
71
  // HMR adapter virtual modules
44
- declare module '/@useavalon/react/client/hmr' {
45
- export { reactAdapter } from '@useavalon/react/client/hmr';
72
+ declare module "/@useavalon/react/client/hmr" {
73
+ export { reactAdapter } from "@useavalon/react/client/hmr";
46
74
  }
47
75
 
48
- declare module '/@useavalon/preact/client/hmr' {
49
- export { preactAdapter } from '@useavalon/preact/client/hmr';
76
+ declare module "/@useavalon/preact/client/hmr" {
77
+ export { preactAdapter } from "@useavalon/preact/client/hmr";
50
78
  }
51
79
 
52
- declare module '/@useavalon/vue/client/hmr' {
53
- export { vueAdapter } from '@useavalon/vue/client/hmr';
80
+ declare module "/@useavalon/vue/client/hmr" {
81
+ export { vueAdapter } from "@useavalon/vue/client/hmr";
54
82
  }
55
83
 
56
- declare module '/@useavalon/svelte/client/hmr' {
57
- export { svelteAdapter } from '@useavalon/svelte/client/hmr';
84
+ declare module "/@useavalon/svelte/client/hmr" {
85
+ export { svelteAdapter } from "@useavalon/svelte/client/hmr";
58
86
  }
59
87
 
60
- declare module '/@useavalon/solid/client/hmr' {
61
- export { solidAdapter } from '@useavalon/solid/client/hmr';
88
+ declare module "/@useavalon/solid/client/hmr" {
89
+ export { solidAdapter } from "@useavalon/solid/client/hmr";
62
90
  }
63
91
 
64
- declare module '/@useavalon/lit/client/hmr' {
65
- export { litAdapter } from '@useavalon/lit/client/hmr';
92
+ declare module "/@useavalon/lit/client/hmr" {
93
+ export { litAdapter } from "@useavalon/lit/client/hmr";
66
94
  }
67
95
 
68
- declare module '/@useavalon/qwik/client/hmr' {
69
- export { qwikAdapter } from '@useavalon/qwik/client/hmr';
96
+ declare module "/@useavalon/qwik/client/hmr" {
97
+ export { qwikAdapter } from "@useavalon/qwik/client/hmr";
70
98
  }