@absolutejs/absolute 0.19.0-beta.786 → 0.19.0-beta.789

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 (53) hide show
  1. package/dist/angular/index.js +5 -5
  2. package/dist/angular/server.js +5 -5
  3. package/dist/build.js +6 -6
  4. package/dist/{chunk-4bq79t8v.js → chunk-0867j0r0.js} +3 -3
  5. package/dist/{chunk-xpkjbmd3.js → chunk-2j2cvn7e.js} +4 -4
  6. package/dist/{chunk-vvz7dcvq.js → chunk-3qswe70c.js} +244 -6
  7. package/dist/chunk-3qswe70c.js.map +15 -0
  8. package/dist/{chunk-xrmjy8kk.js → chunk-5f67rsed.js} +16 -4
  9. package/dist/chunk-5f67rsed.js.map +10 -0
  10. package/dist/{chunk-gq0zxpm0.js → chunk-7mtstdqn.js} +2 -2
  11. package/dist/{chunk-4m75s5xf.js → chunk-8cyvzcmc.js} +2 -2
  12. package/dist/{chunk-g3j22qf6.js → chunk-9939da67.js} +7 -7
  13. package/dist/{chunk-dr9yqsdb.js → chunk-9ve9jq72.js} +2 -2
  14. package/dist/{chunk-kndkjsya.js → chunk-d7mwkzry.js} +2 -2
  15. package/dist/{chunk-nhzf4az4.js → chunk-e3r9fxaa.js} +2 -2
  16. package/dist/{chunk-hep68ja7.js → chunk-rmc1aqky.js} +51 -145
  17. package/dist/{chunk-hep68ja7.js.map → chunk-rmc1aqky.js.map} +4 -5
  18. package/dist/{chunk-yfqhr31t.js → chunk-tjr0kcev.js} +6 -4
  19. package/dist/{chunk-yfqhr31t.js.map → chunk-tjr0kcev.js.map} +1 -1
  20. package/dist/{chunk-smgj0epn.js → chunk-txhm2vb5.js} +3 -3
  21. package/dist/{chunk-qk8kd3hr.js → chunk-v5vmsxmy.js} +3 -3
  22. package/dist/{chunk-qk8kd3hr.js.map → chunk-v5vmsxmy.js.map} +1 -1
  23. package/dist/{chunk-xzvy9hr4.js → chunk-x09cskqd.js} +2 -2
  24. package/dist/{chunk-6fkgm9s5.js → chunk-xnt8c6h2.js} +10 -3
  25. package/dist/{chunk-6fkgm9s5.js.map → chunk-xnt8c6h2.js.map} +3 -3
  26. package/dist/{chunk-9a307ca6.js → chunk-ynb0qx79.js} +2 -2
  27. package/dist/{chunk-3c7mpj3m.js → chunk-zrg9d4zw.js} +2 -2
  28. package/dist/index.js +62 -14
  29. package/dist/index.js.map +4 -3
  30. package/dist/islands/index.js +3 -3
  31. package/dist/react/index.js +5 -5
  32. package/dist/react/server.js +2 -2
  33. package/dist/src/build/stylePreprocessor.d.ts +1 -0
  34. package/dist/src/core/index.d.ts +2 -0
  35. package/dist/svelte/index.js +5 -5
  36. package/dist/svelte/server.js +4 -4
  37. package/dist/vue/index.js +5 -5
  38. package/dist/vue/server.js +2 -2
  39. package/package.json +1 -1
  40. package/dist/chunk-vvz7dcvq.js.map +0 -13
  41. package/dist/chunk-xrmjy8kk.js.map +0 -10
  42. /package/dist/{chunk-4bq79t8v.js.map → chunk-0867j0r0.js.map} +0 -0
  43. /package/dist/{chunk-xpkjbmd3.js.map → chunk-2j2cvn7e.js.map} +0 -0
  44. /package/dist/{chunk-gq0zxpm0.js.map → chunk-7mtstdqn.js.map} +0 -0
  45. /package/dist/{chunk-4m75s5xf.js.map → chunk-8cyvzcmc.js.map} +0 -0
  46. /package/dist/{chunk-g3j22qf6.js.map → chunk-9939da67.js.map} +0 -0
  47. /package/dist/{chunk-dr9yqsdb.js.map → chunk-9ve9jq72.js.map} +0 -0
  48. /package/dist/{chunk-kndkjsya.js.map → chunk-d7mwkzry.js.map} +0 -0
  49. /package/dist/{chunk-nhzf4az4.js.map → chunk-e3r9fxaa.js.map} +0 -0
  50. /package/dist/{chunk-smgj0epn.js.map → chunk-txhm2vb5.js.map} +0 -0
  51. /package/dist/{chunk-xzvy9hr4.js.map → chunk-x09cskqd.js.map} +0 -0
  52. /package/dist/{chunk-9a307ca6.js.map → chunk-ynb0qx79.js.map} +0 -0
  53. /package/dist/{chunk-3c7mpj3m.js.map → chunk-zrg9d4zw.js.map} +0 -0
@@ -1,11 +1,11 @@
1
1
  // @bun
2
2
  import {
3
3
  renderIslandMarkup
4
- } from "../chunk-4m75s5xf.js";
5
- import"../chunk-dr9yqsdb.js";
4
+ } from "../chunk-8cyvzcmc.js";
5
+ import"../chunk-9ve9jq72.js";
6
6
  import"../chunk-7fw6x3js.js";
7
7
  import"../chunk-mbazhahf.js";
8
- import"../chunk-6fkgm9s5.js";
8
+ import"../chunk-xnt8c6h2.js";
9
9
  import"../chunk-qh75agse.js";
10
10
  import"../chunk-2f21eenc.js";
11
11
  import {
@@ -1,13 +1,13 @@
1
1
  // @bun
2
2
  import {
3
3
  handleReactPageRequest
4
- } from "../chunk-gq0zxpm0.js";
4
+ } from "../chunk-7mtstdqn.js";
5
5
  import {
6
6
  useIslandStore
7
7
  } from "../chunk-pvpp4pvs.js";
8
8
  import"../chunk-gd6wmknh.js";
9
9
  import"../chunk-mtgf69xn.js";
10
- import"../chunk-qk8kd3hr.js";
10
+ import"../chunk-v5vmsxmy.js";
11
11
  import"../chunk-c1jfjnka.js";
12
12
  import"../chunk-d9c0am65.js";
13
13
  import"../chunk-cbkrwmvh.js";
@@ -22,11 +22,11 @@ import"../chunk-s6defjk2.js";
22
22
  import"../chunk-p5504p14.js";
23
23
  import {
24
24
  renderIslandResult
25
- } from "../chunk-4m75s5xf.js";
26
- import"../chunk-dr9yqsdb.js";
25
+ } from "../chunk-8cyvzcmc.js";
26
+ import"../chunk-9ve9jq72.js";
27
27
  import"../chunk-7fw6x3js.js";
28
28
  import"../chunk-mbazhahf.js";
29
- import"../chunk-6fkgm9s5.js";
29
+ import"../chunk-xnt8c6h2.js";
30
30
  import"../chunk-qh75agse.js";
31
31
  import {
32
32
  getIslandMarkerAttributes
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleReactPageRequest
4
- } from "../chunk-gq0zxpm0.js";
4
+ } from "../chunk-7mtstdqn.js";
5
5
  import"../chunk-gd6wmknh.js";
6
6
  import"../chunk-mtgf69xn.js";
7
- import"../chunk-qk8kd3hr.js";
7
+ import"../chunk-v5vmsxmy.js";
8
8
  import"../chunk-c1jfjnka.js";
9
9
  import"../chunk-d9c0am65.js";
10
10
  import"../chunk-cbkrwmvh.js";
@@ -5,6 +5,7 @@ export declare const isStyleModulePath: (filePath: string) => boolean;
5
5
  export declare const isStylePath: (filePath: string) => boolean;
6
6
  export declare const getStyleBaseName: (filePath: string) => string;
7
7
  export declare const createStyleTransformConfig: (stylePreprocessors?: StylePreprocessorConfig, postcss?: PostCSSConfig) => StylePreprocessorConfig | undefined;
8
+ export declare const addStyleImporter: (importerPath: string, stylePath: string) => void;
8
9
  export declare const findStyleEntriesImporting: (changedPath: string) => string[];
9
10
  export declare const recordStyleOutput: (entry: string, css: string) => boolean;
10
11
  export declare const forgetStyleEntry: (entry: string) => void;
@@ -1,5 +1,7 @@
1
1
  export * from './lookup';
2
2
  export * from './islands';
3
+ export * from './pageHandlers';
3
4
  export * from './prepare';
5
+ export * from './renderIslandMarkup';
4
6
  export * from './responseEnhancers';
5
7
  export * from './wrapPageHandlerWithStreamingSlots';
@@ -7,10 +7,10 @@ import {
7
7
  } from "../chunk-wrxtn9ve.js";
8
8
  import {
9
9
  handleSveltePageRequest
10
- } from "../chunk-4bq79t8v.js";
10
+ } from "../chunk-0867j0r0.js";
11
11
  import"../chunk-gd6wmknh.js";
12
12
  import"../chunk-mtgf69xn.js";
13
- import"../chunk-qk8kd3hr.js";
13
+ import"../chunk-v5vmsxmy.js";
14
14
  import"../chunk-c1jfjnka.js";
15
15
  import"../chunk-d9c0am65.js";
16
16
  import"../chunk-cbkrwmvh.js";
@@ -25,11 +25,11 @@ import"../chunk-s6defjk2.js";
25
25
  import"../chunk-p5504p14.js";
26
26
  import {
27
27
  renderIslandMarkup
28
- } from "../chunk-4m75s5xf.js";
29
- import"../chunk-dr9yqsdb.js";
28
+ } from "../chunk-8cyvzcmc.js";
29
+ import"../chunk-9ve9jq72.js";
30
30
  import"../chunk-7fw6x3js.js";
31
31
  import"../chunk-mbazhahf.js";
32
- import"../chunk-6fkgm9s5.js";
32
+ import"../chunk-xnt8c6h2.js";
33
33
  import"../chunk-qh75agse.js";
34
34
  import"../chunk-2f21eenc.js";
35
35
  import"../chunk-fygx2ymm.js";
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleSveltePageRequest
4
- } from "../chunk-4bq79t8v.js";
4
+ } from "../chunk-0867j0r0.js";
5
5
  import"../chunk-gd6wmknh.js";
6
6
  import"../chunk-mtgf69xn.js";
7
- import"../chunk-qk8kd3hr.js";
7
+ import"../chunk-v5vmsxmy.js";
8
8
  import"../chunk-c1jfjnka.js";
9
9
  import"../chunk-d9c0am65.js";
10
10
  import"../chunk-cbkrwmvh.js";
@@ -14,10 +14,10 @@ import"../chunk-851whwc7.js";
14
14
  import"../chunk-qxq2zcty.js";
15
15
  import"../chunk-s6defjk2.js";
16
16
  import"../chunk-p5504p14.js";
17
- import"../chunk-dr9yqsdb.js";
17
+ import"../chunk-9ve9jq72.js";
18
18
  import"../chunk-7fw6x3js.js";
19
19
  import"../chunk-mbazhahf.js";
20
- import"../chunk-6fkgm9s5.js";
20
+ import"../chunk-xnt8c6h2.js";
21
21
  import"../chunk-qh75agse.js";
22
22
  import"../chunk-bmgqm774.js";
23
23
  export {
package/dist/vue/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-tx9edm1x.js";
5
5
  import {
6
6
  handleVuePageRequest
7
- } from "../chunk-nhzf4az4.js";
7
+ } from "../chunk-e3r9fxaa.js";
8
8
  import {
9
9
  StreamSlot,
10
10
  SuspenseSlot
@@ -15,7 +15,7 @@ import {
15
15
  import"../chunk-798spvzv.js";
16
16
  import"../chunk-gd6wmknh.js";
17
17
  import"../chunk-mtgf69xn.js";
18
- import"../chunk-qk8kd3hr.js";
18
+ import"../chunk-v5vmsxmy.js";
19
19
  import"../chunk-c1jfjnka.js";
20
20
  import"../chunk-d9c0am65.js";
21
21
  import"../chunk-cbkrwmvh.js";
@@ -33,11 +33,11 @@ import"../chunk-s6defjk2.js";
33
33
  import"../chunk-p5504p14.js";
34
34
  import {
35
35
  renderIslandResult
36
- } from "../chunk-4m75s5xf.js";
37
- import"../chunk-dr9yqsdb.js";
36
+ } from "../chunk-8cyvzcmc.js";
37
+ import"../chunk-9ve9jq72.js";
38
38
  import"../chunk-7fw6x3js.js";
39
39
  import"../chunk-mbazhahf.js";
40
- import"../chunk-6fkgm9s5.js";
40
+ import"../chunk-xnt8c6h2.js";
41
41
  import"../chunk-qh75agse.js";
42
42
  import {
43
43
  getIslandMarkerAttributes
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleVuePageRequest
4
- } from "../chunk-nhzf4az4.js";
4
+ } from "../chunk-e3r9fxaa.js";
5
5
  import"../chunk-gd6wmknh.js";
6
6
  import"../chunk-mtgf69xn.js";
7
- import"../chunk-qk8kd3hr.js";
7
+ import"../chunk-v5vmsxmy.js";
8
8
  import"../chunk-c1jfjnka.js";
9
9
  import"../chunk-d9c0am65.js";
10
10
  import"../chunk-cbkrwmvh.js";
package/package.json CHANGED
@@ -344,5 +344,5 @@
344
344
  ]
345
345
  }
346
346
  },
347
- "version": "0.19.0-beta.786"
347
+ "version": "0.19.0-beta.789"
348
348
  }
@@ -1,13 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/build/compileTailwind.ts", "../src/utils/startupTimings.ts", "../src/build/islandEntries.ts", "../src/islands/pageMetadata.ts"],
4
- "sourcesContent": [
5
- "import { mkdir } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport type {\n\tStylePreprocessorConfig,\n\tTailwindConfig\n} from '../../types/build';\nimport { incrementalTailwindBuild } from './tailwindCompiler';\n\n/* Files Tailwind v4 may scan for candidate utility classes via the `@source`\n directive. When any of these change in dev, the Tailwind output must be\n regenerated so newly referenced utilities show up in the CSS — otherwise\n classes appear in markup with no rules behind them. */\nconst TAILWIND_CANDIDATE_EXTENSION_PATTERN =\n\t/\\.(html?|m?[jt]sx?|cjs|vue|svelte|astro|mdx?|css|s[ac]ss|less|styl(?:us)?)$/i;\n\nexport const isTailwindCandidate = (filePath: string) =>\n\tTAILWIND_CANDIDATE_EXTENSION_PATTERN.test(filePath);\n\n/* Production / cold-start build of the Tailwind output CSS.\n\n Uses the same persistent-compiler path as HMR — calling\n `incrementalTailwindBuild` with no changed-file hint forces a fresh\n compile + full source scan. The compiler instance is then cached for\n the remainder of the process, so subsequent rebuilds (HMR ticks during\n `absolute dev`) get the per-candidate cache for free.\n\n This replaces the old `bun.build` + `bun-plugin-tailwind` pipeline:\n the bundler was being spun up just to drive Tailwind, which made every\n call pay bundler-init cost and discarded Tailwind's internal caches\n between calls. Going directly through `tailwindcss`'s own `compile()`\n API drops both costs and brings the production build into the same\n fast path as dev. */\nexport const compileTailwind = async (\n\tinput: string,\n\toutput: string,\n\tbuildPath: string,\n\tstyleTransformConfig?: StylePreprocessorConfig\n) => {\n\tconst outputPath = join(buildPath, output);\n\tawait mkdir(dirname(outputPath), { recursive: true });\n\tawait incrementalTailwindBuild(\n\t\t{ input, output },\n\t\tbuildPath,\n\t\t[],\n\t\tstyleTransformConfig\n\t);\n};\n\nexport const compileTailwindConfig = async (\n\ttailwind: TailwindConfig,\n\tbuildPath: string,\n\tstyleTransformConfig?: StylePreprocessorConfig\n) =>\n\tcompileTailwind(\n\t\ttailwind.input,\n\t\ttailwind.output,\n\t\tbuildPath,\n\t\tstyleTransformConfig\n\t);\n",
6
- "import { getDurationString } from './getDurationString';\n\nexport type StartupTimingStep = {\n\tlabel: string;\n\tdurationMs: number;\n};\n\nexport const startupTimingsEnabled =\n\tprocess.env.ABSOLUTE_STARTUP_TIMINGS === '1' ||\n\tprocess.env.ABSOLUTE_STARTUP_TIMINGS === 'true';\n\nexport const formatStartupTimingBlock = (\n\ttitle: string,\n\tsteps: StartupTimingStep[]\n) => {\n\tconst totalDuration = steps.reduce((sum, step) => sum + step.durationMs, 0);\n\n\treturn [\n\t\ttitle,\n\t\t...steps.map(\n\t\t\t(step) => ` - ${step.label}: ${getDurationString(step.durationMs)}`\n\t\t),\n\t\t` Total: ${getDurationString(totalDuration)}`\n\t].join('\\n');\n};\n\nexport const logStartupTimingBlock = (\n\ttitle: string,\n\tsteps: StartupTimingStep[]\n) => {\n\tif (!startupTimingsEnabled || steps.length === 0) {\n\t\treturn;\n\t}\n\n\tconsole.log(formatStartupTimingBlock(title, steps));\n};\n",
7
- "import { mkdirSync, rmSync, writeFileSync } from 'node:fs';\nimport { dirname, extname, join, relative, resolve } from 'node:path';\nimport ts from 'typescript';\nimport type { IslandFramework, IslandRegistryInput } from '../../types/island';\nimport { getIslandBuildReference } from '../core/islands';\n\ntype RegistryModuleExport = {\n\tdefault?: unknown;\n\tislandRegistry?: unknown;\n};\n\ntype IslandBuildEntry = {\n\tcomponent: string;\n\tentryPath: string;\n\tframework: IslandFramework;\n};\n\ntype IslandDefinition = {\n\tbuildReference: {\n\t\texport?: string;\n\t\tsource: string;\n\t} | null;\n\tcomponent: string;\n\tframework: IslandFramework;\n};\n\ntype IslandRegistryBuildInfo = {\n\tdefinitions: IslandDefinition[];\n\thasNamedExport: boolean;\n\tregistry: IslandRegistryInput;\n\tresolvedRegistryPath: string;\n};\n\ntype ParsedImportReference = {\n\texport?: string;\n\tsource: string;\n};\n\ntype ParsedRegistryBuildInfo = {\n\tdefinitions: IslandDefinition[];\n\thasNamedExport: boolean;\n\tregistry: IslandRegistryInput;\n};\n\ntype IslandEntryPathMaps = Partial<\n\tRecord<IslandFramework, Map<string, string>>\n>;\n\nconst frameworks: IslandFramework[] = ['react', 'svelte', 'vue', 'angular'];\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst resolveRegistryExport = (mod: RegistryModuleExport) => {\n\tif (isRecord(mod.islandRegistry)) return mod.islandRegistry;\n\tif (isRecord(mod.default)) return mod.default;\n\n\tthrow new Error(\n\t\t'Island registry module must export `islandRegistry` or a default registry object.'\n\t);\n};\n\nconst hasSvelteImport = (source: string) =>\n\t/from\\s+['\"][^'\"]+\\.svelte['\"]/.test(source);\n\nconst normalizeImportPath = (wrapperPath: string, targetPath: string) => {\n\tconst importPath = relative(dirname(wrapperPath), targetPath).replace(\n\t\t/\\\\/g,\n\t\t'/'\n\t);\n\n\treturn importPath.startsWith('.') ? importPath : `./${importPath}`;\n};\n\nconst isIdentifier = (value: string) =>\n\t/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n\nconst resolveIslandSourcePath = (registryPath: string, sourcePath: string) => {\n\tif (sourcePath.startsWith('file://')) {\n\t\treturn new URL(sourcePath).pathname;\n\t}\n\n\treturn resolve(dirname(registryPath), sourcePath);\n};\n\nconst getObjectPropertyName = (name: ts.PropertyName) => {\n\tif (ts.isIdentifier(name) || ts.isStringLiteral(name)) {\n\t\treturn name.text;\n\t}\n\n\treturn null;\n};\n\nconst collectDefaultImport = (\n\timports: Map<string, ParsedImportReference>,\n\timportClause: ts.ImportClause,\n\tsource: string\n) => {\n\tif (!importClause.name) return;\n\n\timports.set(importClause.name.text, {\n\t\texport: 'default',\n\t\tsource\n\t});\n};\n\nconst collectNamedImports = (\n\timports: Map<string, ParsedImportReference>,\n\timportClause: ts.ImportClause,\n\tsource: string\n) => {\n\tconst bindings = importClause.namedBindings;\n\tif (!bindings || !ts.isNamedImports(bindings)) return;\n\n\tfor (const element of bindings.elements) {\n\t\timports.set(element.name.text, {\n\t\t\texport: element.propertyName?.text ?? element.name.text,\n\t\t\tsource\n\t\t});\n\t}\n};\n\nconst isIslandRegistryHelperImport = (source: string) =>\n\tsource === '@absolutejs/absolute/islands' ||\n\tsource.endsWith('/islands') ||\n\tsource.endsWith('/core/islands');\n\nconst collectRegistryHelperImports = (\n\timportClause: ts.ImportClause,\n\tsource: string,\n\tregistryFactoryNames: Set<string>,\n\tregistryNamespaceNames: Set<string>\n) => {\n\tif (!isIslandRegistryHelperImport(source)) return;\n\n\tconst bindings = importClause.namedBindings;\n\tif (!bindings) return;\n\n\tif (ts.isNamespaceImport(bindings)) {\n\t\tregistryNamespaceNames.add(bindings.name.text);\n\n\t\treturn;\n\t}\n\n\tfor (const element of bindings.elements) {\n\t\tconst importedName = element.propertyName?.text ?? element.name.text;\n\t\tif (importedName === 'defineIslandRegistry') {\n\t\t\tregistryFactoryNames.add(element.name.text);\n\t\t}\n\t}\n};\n\nconst createRegistryEntryValue = (reference: ParsedImportReference) => ({\n\tcomponent: reference.source,\n\texport: reference.export,\n\tsource: reference.source\n});\n\nconst addRegistryEntries = (\n\tframeworkNode: ts.ObjectLiteralExpression,\n\tframework: IslandFramework,\n\timports: Map<string, ParsedImportReference>,\n\tdefinitions: IslandDefinition[],\n\tregistry: IslandRegistryInput\n) => {\n\tconst frameworkRegistry = registry[framework] ?? {};\n\tregistry[framework] = frameworkRegistry;\n\n\tfor (const property of frameworkNode.properties) {\n\t\tif (\n\t\t\t!ts.isPropertyAssignment(property) &&\n\t\t\t!ts.isShorthandPropertyAssignment(property)\n\t\t)\n\t\t\tcontinue;\n\n\t\tconst componentName = getObjectPropertyName(property.name);\n\t\tif (!componentName) continue;\n\n\t\tconst initializer = ts.isPropertyAssignment(property)\n\t\t\t? property.initializer\n\t\t\t: property.name;\n\t\tif (!ts.isIdentifier(initializer)) continue;\n\n\t\tconst reference = imports.get(initializer.text);\n\t\tif (!reference) continue;\n\n\t\tframeworkRegistry[componentName] = createRegistryEntryValue(reference);\n\t\tdefinitions.push({\n\t\t\tbuildReference: reference,\n\t\t\tcomponent: componentName,\n\t\t\tframework\n\t\t});\n\t}\n};\n\nconst processDefineIslandRegistry = (\n\tnode: ts.CallExpression,\n\timports: Map<string, ParsedImportReference>,\n\tdefinitions: IslandDefinition[],\n\tregistry: IslandRegistryInput\n) => {\n\tconst [firstArg] = node.arguments;\n\tif (!firstArg || !ts.isObjectLiteralExpression(firstArg)) return;\n\n\tconst validFrameworks: IslandFramework[] = [\n\t\t'react',\n\t\t'svelte',\n\t\t'vue',\n\t\t'angular'\n\t];\n\tfor (const property of firstArg.properties) {\n\t\tif (!ts.isPropertyAssignment(property)) continue;\n\t\tconst frameworkName = getObjectPropertyName(property.name);\n\t\tif (!frameworkName) continue;\n\t\tconst framework = validFrameworks.find((f) => f === frameworkName);\n\t\tif (!framework) continue;\n\t\tif (!ts.isObjectLiteralExpression(property.initializer)) continue;\n\n\t\taddRegistryEntries(\n\t\t\tproperty.initializer,\n\t\t\tframework,\n\t\t\timports,\n\t\t\tdefinitions,\n\t\t\tregistry\n\t\t);\n\t}\n};\n\nconst walkRegistryNode = (\n\tnode: ts.Node,\n\timports: Map<string, ParsedImportReference>,\n\tregistryFactoryNames: Set<string>,\n\tregistryNamespaceNames: Set<string>,\n\tdefinitions: IslandDefinition[],\n\tregistry: IslandRegistryInput\n) => {\n\tif (\n\t\tts.isCallExpression(node) &&\n\t\tisDefineIslandRegistryCall(\n\t\t\tnode.expression,\n\t\t\tregistryFactoryNames,\n\t\t\tregistryNamespaceNames\n\t\t)\n\t) {\n\t\tprocessDefineIslandRegistry(node, imports, definitions, registry);\n\t}\n\n\tts.forEachChild(node, (child) =>\n\t\twalkRegistryNode(\n\t\t\tchild,\n\t\t\timports,\n\t\t\tregistryFactoryNames,\n\t\t\tregistryNamespaceNames,\n\t\t\tdefinitions,\n\t\t\tregistry\n\t\t)\n\t);\n};\n\nconst isDefineIslandRegistryCall = (\n\texpression: ts.Expression,\n\tregistryFactoryNames: Set<string>,\n\tregistryNamespaceNames: Set<string>\n) => {\n\tif (ts.isIdentifier(expression)) {\n\t\treturn registryFactoryNames.has(expression.text);\n\t}\n\n\treturn (\n\t\tts.isPropertyAccessExpression(expression) &&\n\t\texpression.name.text === 'defineIslandRegistry' &&\n\t\tts.isIdentifier(expression.expression) &&\n\t\tregistryNamespaceNames.has(expression.expression.text)\n\t);\n};\n\nconst hasIslandRegistryNamedExport = (sourceFile: ts.SourceFile) => {\n\tfor (const statement of sourceFile.statements) {\n\t\tif (\n\t\t\tts.isVariableStatement(statement) &&\n\t\t\tstatement.modifiers?.some(\n\t\t\t\t(modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword\n\t\t\t) &&\n\t\t\tstatement.declarationList.declarations.some(\n\t\t\t\t(declaration) =>\n\t\t\t\t\tts.isIdentifier(declaration.name) &&\n\t\t\t\t\tdeclaration.name.text === 'islandRegistry'\n\t\t\t)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!ts.isExportDeclaration(statement) || !statement.exportClause)\n\t\t\tcontinue;\n\t\tif (!ts.isNamedExports(statement.exportClause)) continue;\n\n\t\tif (\n\t\t\tstatement.exportClause.elements.some(\n\t\t\t\t(element) => element.name.text === 'islandRegistry'\n\t\t\t)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nconst collectImportDeclarations = (\n\tsourceFile: ts.SourceFile,\n\tregistryPath: string,\n\timports: Map<string, ParsedImportReference>,\n\tregistryFactoryNames: Set<string>,\n\tregistryNamespaceNames: Set<string>\n) => {\n\tfor (const statement of sourceFile.statements) {\n\t\tif (\n\t\t\t!ts.isImportDeclaration(statement) ||\n\t\t\t!ts.isStringLiteral(statement.moduleSpecifier)\n\t\t)\n\t\t\tcontinue;\n\n\t\tconst { importClause } = statement;\n\t\tif (!importClause) continue;\n\n\t\tconst source = resolveIslandSourcePath(\n\t\t\tregistryPath,\n\t\t\tstatement.moduleSpecifier.text\n\t\t);\n\n\t\tcollectDefaultImport(imports, importClause, source);\n\t\tcollectNamedImports(imports, importClause, source);\n\t\tcollectRegistryHelperImports(\n\t\t\timportClause,\n\t\t\tstatement.moduleSpecifier.text,\n\t\t\tregistryFactoryNames,\n\t\t\tregistryNamespaceNames\n\t\t);\n\t}\n};\n\nconst parseIslandRegistryBuildInfo = (\n\tregistrySource: string,\n\tregistryPath: string\n): ParsedRegistryBuildInfo => {\n\tconst sourceFile = ts.createSourceFile(\n\t\tregistryPath,\n\t\tregistrySource,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS\n\t);\n\tconst imports = new Map<string, ParsedImportReference>();\n\tconst registryFactoryNames = new Set<string>(['defineIslandRegistry']);\n\tconst registryNamespaceNames = new Set<string>();\n\tconst definitions: IslandDefinition[] = [];\n\tconst registry: IslandRegistryInput = {};\n\n\tcollectImportDeclarations(\n\t\tsourceFile,\n\t\tregistryPath,\n\t\timports,\n\t\tregistryFactoryNames,\n\t\tregistryNamespaceNames\n\t);\n\twalkRegistryNode(\n\t\tsourceFile,\n\t\timports,\n\t\tregistryFactoryNames,\n\t\tregistryNamespaceNames,\n\t\tdefinitions,\n\t\tregistry\n\t);\n\n\treturn {\n\t\tdefinitions,\n\t\thasNamedExport: hasIslandRegistryNamedExport(sourceFile),\n\t\tregistry\n\t};\n};\n\nconst loadDynamicIslandRegistryBuildInfo = async (\n\tresolvedRegistryPath: string\n) => {\n\tconst registryModule: RegistryModuleExport = await import(\n\t\tresolvedRegistryPath\n\t);\n\tconst registry: IslandRegistryInput = resolveRegistryExport(registryModule);\n\tconst definitions = frameworks.flatMap((framework) => {\n\t\tconst frameworkRegistry = registry[framework];\n\t\tif (!isRecord(frameworkRegistry)) return [];\n\n\t\treturn Object.entries(frameworkRegistry).map(([component, value]) => ({\n\t\t\tbuildReference: getIslandBuildReference(value),\n\t\t\tcomponent,\n\t\t\tframework\n\t\t}));\n\t});\n\n\treturn {\n\t\tdefinitions,\n\t\thasNamedExport: isRecord(registryModule.islandRegistry),\n\t\tregistry\n\t};\n};\n\nconst createRegistryImportCode = (\n\twrapperPath: string,\n\tregistryPath: string,\n\thasNamedExport: boolean\n) => {\n\tconst normalizedPath = normalizeImportPath(wrapperPath, registryPath);\n\n\tif (hasNamedExport) {\n\t\treturn {\n\t\t\timportStatement: `import { islandRegistry as __absoluteIslandRegistry } from ${JSON.stringify(normalizedPath)};`,\n\t\t\tregistryReference: '__absoluteIslandRegistry'\n\t\t};\n\t}\n\n\treturn {\n\t\timportStatement: `import __absoluteIslandRegistry from ${JSON.stringify(normalizedPath)};`,\n\t\tregistryReference: '__absoluteIslandRegistry'\n\t};\n};\n\nconst createDirectEntrySource = (\n\twrapperPath: string,\n\timportPath: string,\n\texportName?: string\n) => {\n\tconst normalizedImportPath = normalizeImportPath(wrapperPath, importPath);\n\tif (!exportName || exportName === 'default') {\n\t\treturn `export { default } from ${JSON.stringify(normalizedImportPath)};\\n`;\n\t}\n\n\treturn `export { ${exportName} as default } from ${JSON.stringify(normalizedImportPath)};\\n`;\n};\n\nconst createRegistryEntrySource = (\n\twrapperPath: string,\n\tregistryPath: string,\n\thasNamedExport: boolean,\n\tframework: IslandFramework,\n\tcomponent: string\n) => {\n\tconst { importStatement, registryReference } = createRegistryImportCode(\n\t\twrapperPath,\n\t\tregistryPath,\n\t\thasNamedExport\n\t);\n\tconst frameworkAccess = isIdentifier(framework)\n\t\t? `${registryReference}.${framework}`\n\t\t: `${registryReference}[${JSON.stringify(framework)}]`;\n\tconst componentAccess = isIdentifier(component)\n\t\t? `${frameworkAccess}.${component}`\n\t\t: `${frameworkAccess}[${JSON.stringify(component)}]`;\n\n\treturn `${importStatement}\n\nconst component = ${componentAccess};\n\nexport default component;\n`;\n};\n\nconst shouldUseCompiledClientPath = (\n\tframework: IslandFramework,\n\tsourcePath: string\n) => {\n\tif (framework === 'svelte') {\n\t\treturn /\\.svelte(?:\\.(?:ts|js))?$/.test(sourcePath);\n\t}\n\n\tif (framework === 'vue') {\n\t\treturn extname(sourcePath) === '.vue';\n\t}\n\n\tif (framework === 'angular') {\n\t\treturn /\\.(?:ts|js|tsx|jsx|mjs|cjs)$/.test(sourcePath);\n\t}\n\n\treturn false;\n};\n\nexport const collectIslandFrameworkSources = (\n\tbuildInfo: IslandRegistryBuildInfo\n) => {\n\tconst sources: Partial<Record<IslandFramework, string[]>> = {};\n\n\tfor (const definition of buildInfo.definitions) {\n\t\tconst { buildReference } = definition;\n\t\tif (!buildReference) continue;\n\n\t\tconst resolvedSourcePath = resolveIslandSourcePath(\n\t\t\tbuildInfo.resolvedRegistryPath,\n\t\t\tbuildReference.source\n\t\t);\n\t\tif (\n\t\t\t!shouldUseCompiledClientPath(\n\t\t\t\tdefinition.framework,\n\t\t\t\tresolvedSourcePath\n\t\t\t)\n\t\t)\n\t\t\tcontinue;\n\n\t\tconst frameworkSources = sources[definition.framework] ?? [];\n\t\tif (frameworkSources.includes(resolvedSourcePath)) continue;\n\n\t\tframeworkSources.push(resolvedSourcePath);\n\t\tsources[definition.framework] = frameworkSources;\n\t}\n\n\treturn sources;\n};\nexport const generateIslandEntryPoints = async ({\n\tbuildInfo,\n\tbuildPath,\n\tclientPathMaps = {}\n}: {\n\tbuildInfo: IslandRegistryBuildInfo;\n\tbuildPath: string;\n\tclientPathMaps?: IslandEntryPathMaps;\n}) => {\n\tconst generatedRoot = join(buildPath, '_island_entries');\n\n\trmSync(generatedRoot, { force: true, recursive: true });\n\n\tconst entries: IslandBuildEntry[] = [];\n\n\tfor (const definition of buildInfo.definitions) {\n\t\tconst entryPath = join(\n\t\t\tgeneratedRoot,\n\t\t\t'islands',\n\t\t\tdefinition.framework,\n\t\t\t`${definition.component}.ts`\n\t\t);\n\t\tconst { buildReference } = definition;\n\t\tconst source = buildReference\n\t\t\t? resolveIslandSourcePath(\n\t\t\t\t\tbuildInfo.resolvedRegistryPath,\n\t\t\t\t\tbuildReference.source\n\t\t\t\t)\n\t\t\t: null;\n\t\tconst compiledSourcePath =\n\t\t\tsource && shouldUseCompiledClientPath(definition.framework, source)\n\t\t\t\t? clientPathMaps[definition.framework]?.get(source)\n\t\t\t\t: undefined;\n\t\tconst entrySource =\n\t\t\tsource &&\n\t\t\t(compiledSourcePath ||\n\t\t\t\t!shouldUseCompiledClientPath(definition.framework, source))\n\t\t\t\t? createDirectEntrySource(\n\t\t\t\t\t\tentryPath,\n\t\t\t\t\t\tcompiledSourcePath ?? source,\n\t\t\t\t\t\tcompiledSourcePath ? undefined : buildReference?.export\n\t\t\t\t\t)\n\t\t\t\t: createRegistryEntrySource(\n\t\t\t\t\t\tentryPath,\n\t\t\t\t\t\tbuildInfo.resolvedRegistryPath,\n\t\t\t\t\t\tbuildInfo.hasNamedExport,\n\t\t\t\t\t\tdefinition.framework,\n\t\t\t\t\t\tdefinition.component\n\t\t\t\t\t);\n\n\t\tmkdirSync(dirname(entryPath), { recursive: true });\n\t\twriteFileSync(entryPath, entrySource);\n\t\tentries.push({\n\t\t\tcomponent: definition.component,\n\t\t\tentryPath,\n\t\t\tframework: definition.framework\n\t\t});\n\t}\n\n\treturn {\n\t\tentries,\n\t\tgeneratedRoot\n\t};\n};\nexport const loadIslandRegistryBuildInfo = async (\n\tregistryPath: string\n): Promise<IslandRegistryBuildInfo> => {\n\tconst resolvedRegistryPath = resolve(registryPath);\n\tconst registrySource = Bun.file(resolvedRegistryPath);\n\tconst registrySourceText = await registrySource.text();\n\tconst parsedInfo = parseIslandRegistryBuildInfo(\n\t\tregistrySourceText,\n\t\tresolvedRegistryPath\n\t);\n\tif (parsedInfo.definitions.length > 0) {\n\t\treturn {\n\t\t\tdefinitions: parsedInfo.definitions,\n\t\t\thasNamedExport: parsedInfo.hasNamedExport,\n\t\t\tregistry: parsedInfo.registry,\n\t\t\tresolvedRegistryPath\n\t\t};\n\t}\n\tif (hasSvelteImport(registrySourceText)) {\n\t\tthrow new Error(\n\t\t\t'Unable to statically analyze the island registry. Registries that import .svelte files must use defineIslandRegistry({ ... }) with direct imported component references.'\n\t\t);\n\t}\n\n\tconst dynamicInfo =\n\t\tawait loadDynamicIslandRegistryBuildInfo(resolvedRegistryPath);\n\n\treturn {\n\t\tdefinitions: dynamicInfo.definitions,\n\t\thasNamedExport: dynamicInfo.hasNamedExport,\n\t\tregistry: dynamicInfo.registry,\n\t\tresolvedRegistryPath\n\t};\n};\n",
8
- "import { readFileSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\nimport type { BuildConfig } from '../../types/build';\nimport type { IslandFramework } from '../../types/island';\nimport { loadIslandRegistryBuildInfo } from '../build/islandEntries';\nimport { scanEntryPoints } from '../build/scanEntryPoints';\nimport {\n\textractIslandUsagesFromSource,\n\ttype PageIslandUsage\n} from './sourceMetadata';\n\nexport type PageIslandMetadata = {\n\tislands: PageIslandUsage[];\n\tpagePath: string;\n};\n\ndeclare global {\n\tvar __absolutePageIslandMetadata:\n\t\t| Map<string, PageIslandMetadata>\n\t\t| undefined;\n}\n\nconst pagePatterns: Partial<Record<IslandFramework | 'html' | 'htmx', string>> =\n\t{\n\t\tangular: 'pages/**/*.{ts,js}',\n\t\thtml: 'pages/**/*.html',\n\t\thtmx: 'pages/**/*.html',\n\t\treact: 'pages/**/*.{ts,tsx,js,jsx}',\n\t\tsvelte: 'pages/**/*.svelte',\n\t\tvue: 'pages/**/*.vue'\n\t};\n\ntype PageDirectoryEntry = {\n\tdir: string;\n\tframework: keyof typeof pagePatterns;\n};\n\nconst getPageDirs = (config: BuildConfig) =>\n\t(\n\t\t[\n\t\t\t{ dir: config.angularDirectory, framework: 'angular' },\n\t\t\t{ dir: config.reactDirectory, framework: 'react' },\n\t\t\t{ dir: config.svelteDirectory, framework: 'svelte' },\n\t\t\t{ dir: config.vueDirectory, framework: 'vue' },\n\t\t\t{ dir: config.htmlDirectory, framework: 'html' },\n\t\t\t{ dir: config.htmxDirectory, framework: 'htmx' }\n\t\t] satisfies Array<{\n\t\t\tdir: string | undefined;\n\t\t\tframework: keyof typeof pagePatterns;\n\t\t}>\n\t).filter(\n\t\t(entry): entry is PageDirectoryEntry =>\n\t\t\ttypeof entry.dir === 'string' && entry.dir.length > 0\n\t);\n\nconst buildIslandSourceLookup = async (config: BuildConfig) => {\n\tconst registryPath = config.islands?.registry;\n\tif (!registryPath) {\n\t\treturn new Map<string, string>();\n\t}\n\n\tconst buildInfo = await loadIslandRegistryBuildInfo(registryPath);\n\tconst lookup = new Map<string, string>();\n\n\tfor (const definition of buildInfo.definitions) {\n\t\tconst source = definition.buildReference?.source;\n\t\tif (!source) continue;\n\n\t\tconst resolvedSource = source.startsWith('file://')\n\t\t\t? new URL(source).pathname\n\t\t\t: resolve(dirname(buildInfo.resolvedRegistryPath), source);\n\n\t\tlookup.set(\n\t\t\t`${definition.framework}:${definition.component}`,\n\t\t\tresolve(resolvedSource)\n\t\t);\n\t}\n\n\treturn lookup;\n};\n\nexport const getCurrentPageIslandMetadata = () =>\n\tglobalThis.__absolutePageIslandMetadata ??\n\tnew Map<string, PageIslandMetadata>();\nconst metadataUsesSource = (metadata: PageIslandMetadata, target: string) =>\n\tmetadata.islands.some((usage) => {\n\t\tconst candidate = usage.source;\n\n\t\treturn candidate ? resolve(candidate) === target : false;\n\t});\n\nexport const getPagesUsingIslandSource = (sourcePath: string) => {\n\tconst target = resolve(sourcePath);\n\n\treturn [...getCurrentPageIslandMetadata().values()]\n\t\t.filter((metadata) => metadataUsesSource(metadata, target))\n\t\t.map((metadata) => metadata.pagePath);\n};\nconst resolveIslandUsages = (\n\tislands: PageIslandUsage[],\n\tislandSourceLookup: Map<string, string>\n) =>\n\tislands.map((usage) => {\n\t\tconst sourcePath = islandSourceLookup.get(\n\t\t\t`${usage.framework}:${usage.component}`\n\t\t);\n\n\t\treturn sourcePath\n\t\t\t? {\n\t\t\t\t\t...usage,\n\t\t\t\t\tsource: sourcePath\n\t\t\t\t}\n\t\t\t: usage;\n\t});\n\nconst loadPageIslandFiles = async (\n\tentry: PageDirectoryEntry,\n\tislandSourceLookup: Map<string, string>,\n\tpageMetadata: Map<string, PageIslandMetadata>\n) => {\n\tconst pattern = pagePatterns[entry.framework];\n\tif (!pattern) return;\n\n\tconst files = await scanEntryPoints(resolve(entry.dir), pattern);\n\tfor (const filePath of files) {\n\t\tconst source = readFileSync(filePath, 'utf-8');\n\t\tconst islands = extractIslandUsagesFromSource(source);\n\t\tpageMetadata.set(resolve(filePath), {\n\t\t\tislands: resolveIslandUsages(islands, islandSourceLookup),\n\t\t\tpagePath: resolve(filePath)\n\t\t});\n\t}\n};\n\nexport const loadPageIslandMetadata = async (config: BuildConfig) => {\n\tconst pageMetadata = new Map<string, PageIslandMetadata>();\n\tconst islandSourceLookup = await buildIslandSourceLookup(config);\n\n\tawait Promise.all(\n\t\tgetPageDirs(config).map((entry) =>\n\t\t\tloadPageIslandFiles(entry, islandSourceLookup, pageMetadata)\n\t\t)\n\t);\n\n\treturn pageMetadata;\n};\nexport const setCurrentPageIslandMetadata = (\n\tmetadata: Map<string, PageIslandMetadata>\n) => {\n\tglobalThis.__absolutePageIslandMetadata = metadata;\n};\n"
9
- ],
10
- "mappings": "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",
11
- "debugId": "4479D65CB77F51F464756E2164756E21",
12
- "names": []
13
- }
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/build/compileVue.ts"],
4
- "sourcesContent": [
5
- "import { BASE_36_RADIX } from '../constants';\nimport { existsSync } from 'node:fs';\nimport { mkdir } from 'node:fs/promises';\nimport { basename, dirname, join, relative, resolve } from 'node:path';\nimport type {\n\tSFCDescriptor,\n\tcompileScript as CompileScriptFn,\n\tcompileStyle as CompileStyleFn,\n\tcompileTemplate as CompileTemplateFn,\n\tparse as ParseFn\n} from '@vue/compiler-sfc';\nimport { file, write, Transpiler } from 'bun';\nimport { toKebab } from '../utils/stringModifiers';\nimport { resolvePackageImport } from './resolvePackageImport';\nimport { buildIslandMetadataExports } from '../islands/sourceMetadata';\nimport { compileStyleSource, isStylePath } from './stylePreprocessor';\nimport type { StylePreprocessorConfig } from '../../types/build';\n\nconst resolveDevClientDir = () => {\n\tconst projectRoot = process.cwd();\n\tconst fromSource = resolve(import.meta.dir, '../dev/client');\n\n\tif (existsSync(fromSource) && fromSource.startsWith(projectRoot)) {\n\t\treturn fromSource;\n\t}\n\n\tconst fromNodeModules = resolve(\n\t\tprojectRoot,\n\t\t'node_modules/@absolutejs/absolute/dist/dev/client'\n\t);\n\tif (existsSync(fromNodeModules)) return fromNodeModules;\n\n\treturn resolve(import.meta.dir, './dev/client');\n};\n\nconst devClientDir = resolveDevClientDir();\n\nconst hmrClientPath = join(devClientDir, 'hmrClient.ts').replace(/\\\\/g, '/');\n\nconst transpiler = new Transpiler({ loader: 'ts', target: 'browser' });\n\ntype BuildResult = {\n\tclientPath: string;\n\tserverPath: string;\n\tcssPaths: string[];\n\tcssCodes: string[];\n\ttsHelperPaths: string[];\n\thmrId: string;\n};\n\n// HMR change type detection\nexport type VueChangeType = 'style-only' | 'template-only' | 'script' | 'full';\n\n// Descriptor caches for change detection\nconst scriptCache = new Map<string, string>();\nconst scriptSetupCache = new Map<string, string>();\nconst templateCache = new Map<string, string>();\nconst styleCache = new Map<string, string>();\n\n// Persistent build result cache across HMR cycles — avoids recompiling unchanged Vue components\nconst persistentBuildCache = new Map<string, BuildResult>();\n\n// Source content hash cache to detect unchanged files\nconst vueSourceHashCache = new Map<string, string>();\n\n// HMR metadata storage (exported for rebuildTrigger to access)\nexport const vueHmrMetadata = new Map<\n\tstring,\n\t{ hmrId: string; changeType: VueChangeType }\n>();\nexport const clearVueHmrCaches = () => {\n\tscriptCache.clear();\n\tscriptSetupCache.clear();\n\ttemplateCache.clear();\n\tstyleCache.clear();\n\tvueHmrMetadata.clear();\n\tpersistentBuildCache.clear();\n\tvueSourceHashCache.clear();\n};\nexport const detectVueChangeType = (\n\tfilePath: string,\n\tdescriptor: SFCDescriptor\n) => {\n\tconst prevScript = scriptCache.get(filePath);\n\tconst prevScriptSetup = scriptSetupCache.get(filePath);\n\tconst prevTemplate = templateCache.get(filePath);\n\tconst prevStyle = styleCache.get(filePath);\n\n\tconst currentScript = descriptor.script?.content ?? '';\n\tconst currentScriptSetup = descriptor.scriptSetup?.content ?? '';\n\tconst currentTemplate = descriptor.template?.content ?? '';\n\t// Serialize styles: include scoped flag and content for each style block\n\t// Uses ||| delimiter to detect changes to any block, additions, removals, or reordering\n\tconst currentStyle = descriptor.styles\n\t\t.map((s) => `${s.scoped ? 'scoped:' : ''}${s.content}`)\n\t\t.join('|||');\n\n\t// Update caches with current values\n\tscriptCache.set(filePath, currentScript);\n\tscriptSetupCache.set(filePath, currentScriptSetup);\n\ttemplateCache.set(filePath, currentTemplate);\n\tstyleCache.set(filePath, currentStyle);\n\n\t// First compile - no previous data\n\tif (prevScript === undefined && prevScriptSetup === undefined) {\n\t\treturn 'full';\n\t}\n\n\tconst scriptChanged = prevScript !== currentScript;\n\tconst scriptSetupChanged = prevScriptSetup !== currentScriptSetup;\n\tconst templateChanged = prevTemplate !== currentTemplate;\n\tconst styleChanged = prevStyle !== currentStyle;\n\n\t// Priority order:\n\t// 1. Script changes → 'script' (requires reload)\n\t// 2. Template-only (no script, no style) → 'template-only' (rerender)\n\t// 3. Style-only (no script, no template) → 'style-only' (CSS hot-swap, state preserved)\n\t// 4. Template + style → 'template-only' (CSS swapped alongside rerender)\n\n\t// Script change: script or scriptSetup changed (may also include template/style)\n\tif (scriptChanged || scriptSetupChanged) {\n\t\treturn 'script';\n\t}\n\n\t// Style-only change: only styles changed, no script or template\n\tif (styleChanged && !templateChanged) {\n\t\treturn 'style-only';\n\t}\n\n\t// Template-only change: template changed (with or without styles), script unchanged\n\tif (templateChanged) {\n\t\treturn 'template-only';\n\t}\n\n\t// No changes detected (shouldn't happen in practice)\n\treturn 'full';\n};\nexport const generateVueHmrId = (sourceFilePath: string, vueRootDir: string) =>\n\trelative(vueRootDir, sourceFilePath)\n\t\t.replace(/\\\\/g, '/')\n\t\t.replace(/\\.vue$/, '');\n\nconst extractImports = (sourceCode: string) =>\n\tArray.from(sourceCode.matchAll(/import\\s+[\\s\\S]+?['\"]([^'\"]+)['\"]/g))\n\t\t.map((match) => match[1])\n\t\t.filter((importPath): importPath is string => importPath !== undefined);\n\nconst toJs = (filePath: string, sourceDir?: string) => {\n\tif (filePath.endsWith('.vue')) return filePath.replace(/\\.vue$/, '.js');\n\tif (filePath.endsWith('.ts')) return filePath.replace(/\\.ts$/, '.js');\n\t// Style imports (.css / .module.scss / .less / .styl / etc.) keep their\n\t// original extension — the bun-side style preprocessor plugin loads them\n\t// directly. Appending `.js` would break the resolver and the build.\n\t//\n\t// We also rewrite relative style imports to absolute paths so they\n\t// resolve correctly: the compiled .js lives in `generated/{mode}/...`\n\t// (a different directory tree than the source), and a bare `./foo.scss`\n\t// would point to the wrong location once the bundler runs from the\n\t// output directory.\n\tif (isStylePath(filePath)) {\n\t\tif (sourceDir && (filePath.startsWith('./') || filePath.startsWith('../'))) {\n\t\t\treturn resolve(sourceDir, filePath);\n\t\t}\n\n\t\treturn filePath;\n\t}\n\n\treturn `${filePath}.js`;\n};\n\nconst stripExports = (code: string) =>\n\tcode\n\t\t.replace(/export\\s+default/, 'const script =')\n\t\t.replace(/^export\\s+/gm, '');\n\nconst mergeVueImports = (code: string) => {\n\tconst lines = code.split('\\n');\n\tconst specifierSet = new Set<string>();\n\tconst vueImportRegex = /^import\\s+{([^}]+)}\\s+from\\s+['\"]vue['\"];?$/;\n\n\tlines.forEach((line) => {\n\t\tconst match = line.match(vueImportRegex);\n\t\tif (match?.[1])\n\t\t\tmatch[1]\n\t\t\t\t.split(',')\n\t\t\t\t.forEach((importSpecifier) =>\n\t\t\t\t\tspecifierSet.add(importSpecifier.trim())\n\t\t\t\t);\n\t});\n\n\tconst nonVueLines = lines.filter((line) => !vueImportRegex.test(line));\n\n\treturn specifierSet.size\n\t\t? [\n\t\t\t\t`import { ${[...specifierSet].join(', ')} } from \"vue\";`,\n\t\t\t\t...nonVueLines\n\t\t\t].join('\\n')\n\t\t: nonVueLines.join('\\n');\n};\n\ntype VueCompiler = {\n\tparse: typeof ParseFn;\n\tcompileScript: typeof CompileScriptFn;\n\tcompileTemplate: typeof CompileTemplateFn;\n\tcompileStyle: typeof CompileStyleFn;\n};\n\nconst compileVueFile = async (\n\tsourceFilePath: string,\n\toutputDirs: { client: string; server: string; css: string },\n\tcacheMap: Map<string, BuildResult>,\n\tisEntryPoint: boolean,\n\tvueRootDir: string,\n\tcompiler: VueCompiler,\n\tstylePreprocessors?: StylePreprocessorConfig\n) => {\n\tconst cachedResult = cacheMap.get(sourceFilePath);\n\tif (cachedResult) return cachedResult;\n\n\tconst relativeFilePath = relative(vueRootDir, sourceFilePath).replace(\n\t\t/\\\\/g,\n\t\t'/'\n\t);\n\tconst relativeWithoutExtension = relativeFilePath.replace(/\\.vue$/, '');\n\tconst fileBaseName = basename(sourceFilePath, '.vue');\n\tconst componentId = toKebab(fileBaseName);\n\n\tconst sourceContent = await file(sourceFilePath).text();\n\tconst islandMetadataExports = buildIslandMetadataExports(sourceContent);\n\n\t// Check persistent cache — skip recompilation if source unchanged\n\tconst contentHash = Bun.hash(sourceContent).toString(BASE_36_RADIX);\n\tconst prevHash = vueSourceHashCache.get(sourceFilePath);\n\tconst persistent = persistentBuildCache.get(sourceFilePath);\n\n\tif (prevHash === contentHash && persistent) {\n\t\tcacheMap.set(sourceFilePath, persistent);\n\n\t\treturn persistent;\n\t}\n\n\tvueSourceHashCache.set(sourceFilePath, contentHash);\n\tconst { descriptor } = compiler.parse(sourceContent, {\n\t\tfilename: sourceFilePath\n\t});\n\n\t// Generate HMR ID and detect change type\n\tconst hmrId = generateVueHmrId(sourceFilePath, vueRootDir);\n\tconst changeType = detectVueChangeType(sourceFilePath, descriptor);\n\n\t// Store HMR metadata for rebuildTrigger to access\n\tvueHmrMetadata.set(sourceFilePath, { changeType, hmrId });\n\n\tconst scriptSource =\n\t\tdescriptor.scriptSetup?.content ?? descriptor.script?.content ?? '';\n\n\tconst importPaths = extractImports(scriptSource);\n\n\t// Resolve bare module imports that point to .vue files\n\tconst resolvedPackageVueImports = new Map<string, string>();\n\tconst bareImports = importPaths.filter(\n\t\t(p) => !p.startsWith('.') && !p.startsWith('/')\n\t);\n\tfor (const importPath of bareImports) {\n\t\tconst resolved = resolvePackageImport(importPath);\n\t\tif (!resolved?.endsWith('.vue')) continue;\n\t\tresolvedPackageVueImports.set(importPath, resolved);\n\t}\n\n\tconst childComponentPaths = importPaths.filter(\n\t\t(path) => path.startsWith('.') && path.endsWith('.vue')\n\t);\n\tconst packageComponentPaths = Array.from(\n\t\tresolvedPackageVueImports.entries()\n\t);\n\t// Helper modules are TS/JS imports that need to be transpiled and copied\n\t// alongside the component (e.g. shared utilities). Style imports including\n\t// CSS modules (.module.scss / .module.less / .module.styl / .module.css)\n\t// are handled by the bun-side style preprocessor plugin and must not be\n\t// treated as TS helpers — otherwise we'd try to read the source as a `.ts`\n\t// file and crash at build time.\n\tconst helperModulePaths = importPaths.filter(\n\t\t(path) =>\n\t\t\tpath.startsWith('.') &&\n\t\t\t!path.endsWith('.vue') &&\n\t\t\t!isStylePath(path)\n\t);\n\n\tconst childBuildResults: BuildResult[] = await Promise.all([\n\t\t...childComponentPaths.map((relativeChildPath) =>\n\t\t\tcompileVueFile(\n\t\t\t\tresolve(dirname(sourceFilePath), relativeChildPath),\n\t\t\t\toutputDirs,\n\t\t\t\tcacheMap,\n\t\t\t\tfalse,\n\t\t\t\tvueRootDir,\n\t\t\t\tcompiler,\n\t\t\t\tstylePreprocessors\n\t\t\t)\n\t\t),\n\t\t...packageComponentPaths.map(([, absolutePath]) =>\n\t\t\tcompileVueFile(\n\t\t\t\tabsolutePath,\n\t\t\t\toutputDirs,\n\t\t\t\tcacheMap,\n\t\t\t\tfalse,\n\t\t\t\tvueRootDir,\n\t\t\t\tcompiler,\n\t\t\t\tstylePreprocessors\n\t\t\t)\n\t\t)\n\t]);\n\n\tconst hasScript = descriptor.script || descriptor.scriptSetup;\n\tconst compiledScript = hasScript\n\t\t? compiler.compileScript(descriptor, {\n\t\t\t\tid: componentId,\n\t\t\t\tinlineTemplate: false\n\t\t\t})\n\t\t: { bindings: {}, content: 'export default {};' };\n\tconst strippedScript = stripExports(compiledScript.content);\n\tconst sourceDir = dirname(sourceFilePath);\n\tconst transpiledScript = transpiler\n\t\t.transformSync(strippedScript)\n\t\t.replace(\n\t\t\t/(['\"])(\\.{1,2}\\/[^'\"]+)(['\"])/g,\n\t\t\t(_, quoteStart, relativeImport, quoteEnd) =>\n\t\t\t\t`${quoteStart}${toJs(relativeImport, sourceDir)}${quoteEnd}`\n\t\t);\n\n\t// Build rewrite map for bare module .vue imports → compiled output paths\n\tconst packageImportRewrites = new Map<\n\t\tstring,\n\t\t{ client: string; server: string }\n\t>();\n\tfor (const [bareImport, absolutePath] of packageComponentPaths) {\n\t\tconst childResult = cacheMap.get(absolutePath);\n\t\tif (!childResult) continue;\n\n\t\tpackageImportRewrites.set(bareImport, {\n\t\t\tclient: childResult.clientPath,\n\t\t\tserver: childResult.serverPath\n\t\t});\n\t}\n\n\tconst generateRenderFunction = (ssr: boolean) =>\n\t\tcompiler\n\t\t\t.compileTemplate({\n\t\t\t\tcompilerOptions: {\n\t\t\t\t\tbindingMetadata: compiledScript.bindings,\n\t\t\t\t\tprefixIdentifiers: true\n\t\t\t\t},\n\t\t\t\tfilename: sourceFilePath,\n\t\t\t\tid: componentId,\n\t\t\t\tscoped: descriptor.styles.some(\n\t\t\t\t\t(styleBlock) => styleBlock.scoped\n\t\t\t\t),\n\t\t\t\tsource: descriptor.template?.content ?? '',\n\t\t\t\tssr,\n\t\t\t\tssrCssVars: descriptor.cssVars\n\t\t\t})\n\t\t\t.code.replace(\n\t\t\t\t/(['\"])(\\.{1,2}\\/[^'\"]+)(['\"])/g,\n\t\t\t\t(_, quoteStart, relativeImport, quoteEnd) =>\n\t\t\t\t\t`${quoteStart}${toJs(relativeImport, sourceDir)}${quoteEnd}`\n\t\t\t);\n\n\tconst localCss = await Promise.all(\n\t\tdescriptor.styles.map(\n\t\t\tasync (styleBlock) =>\n\t\t\t\tcompiler.compileStyle({\n\t\t\t\t\tfilename: sourceFilePath,\n\t\t\t\t\tid: componentId,\n\t\t\t\t\tscoped: styleBlock.scoped,\n\t\t\t\t\tsource: styleBlock.lang\n\t\t\t\t\t\t? await compileStyleSource(\n\t\t\t\t\t\t\t\tsourceFilePath,\n\t\t\t\t\t\t\t\tstyleBlock.content,\n\t\t\t\t\t\t\t\tstyleBlock.lang,\n\t\t\t\t\t\t\t\tstylePreprocessors\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: styleBlock.content,\n\t\t\t\t\ttrim: true\n\t\t\t\t}).code\n\t\t)\n\t);\n\tconst allCss = [\n\t\t...localCss,\n\t\t...childBuildResults.flatMap((result) => result.cssCodes)\n\t];\n\n\tlet cssOutputPaths: string[] = [];\n\tif (isEntryPoint && allCss.length) {\n\t\tconst cssOutputFile = join(\n\t\t\toutputDirs.css,\n\t\t\t`${toKebab(fileBaseName)}-compiled.css`\n\t\t);\n\t\tawait mkdir(dirname(cssOutputFile), { recursive: true });\n\t\tawait write(cssOutputFile, allCss.join('\\n'));\n\t\tcssOutputPaths = [cssOutputFile];\n\t}\n\n\tconst assembleModule = (\n\t\trenderCode: string,\n\t\trenderFnName: 'render' | 'ssrRender',\n\t\tincludeHmr: boolean\n\t) => {\n\t\tconst hasScoped = descriptor.styles.some(\n\t\t\t(styleBlock) => styleBlock.scoped\n\t\t);\n\n\t\t// __scopeId is required for Vue runtime to add scoped style attributes to dynamic elements\n\t\t// Without this, scoped styles only work on static VNodes that have the attribute baked in\n\t\tconst scopeIdCode = hasScoped\n\t\t\t? `script.__scopeId = \"data-v-${componentId}\";`\n\t\t\t: '';\n\n\t\t// For client bundles, inject HMR registration code that uses Vue's native __VUE_HMR_RUNTIME__\n\t\t// This enables state-preserving hot updates via rerender() for template changes\n\t\t// and reload() for script changes\n\t\tconst hmrCode = includeHmr\n\t\t\t? `\n// Vue Native HMR Registration\nscript.__hmrId = ${JSON.stringify(hmrId)};\nif (typeof __VUE_HMR_RUNTIME__ !== 'undefined') {\n __VUE_HMR_RUNTIME__.createRecord(script.__hmrId, script);\n if (typeof window !== 'undefined') {\n window.__VUE_HMR_COMPONENTS__ = window.__VUE_HMR_COMPONENTS__ || {};\n window.__VUE_HMR_COMPONENTS__[script.__hmrId] = script;\n }\n}`\n\t\t\t: '';\n\n\t\treturn mergeVueImports(\n\t\t\t[\n\t\t\t\ttranspiledScript,\n\t\t\t\trenderCode,\n\t\t\t\t`script.${renderFnName} = ${renderFnName};`,\n\t\t\t\tscopeIdCode,\n\t\t\t\thmrCode,\n\t\t\t\t'export default script;'\n\t\t\t].join('\\n')\n\t\t);\n\t};\n\n\t// Client bundles include HMR registration code; server bundles do not\n\tconst clientCode =\n\t\tassembleModule(generateRenderFunction(false), 'render', true) +\n\t\tislandMetadataExports;\n\tconst serverCode =\n\t\tassembleModule(generateRenderFunction(true), 'ssrRender', false) +\n\t\tislandMetadataExports;\n\n\tconst clientOutputPath = join(\n\t\toutputDirs.client,\n\t\t`${relativeWithoutExtension}.js`\n\t);\n\tconst serverOutputPath = join(\n\t\toutputDirs.server,\n\t\t`${relativeWithoutExtension}.js`\n\t);\n\n\t// Rewrite relative imports that escape the framework root.\n\t// Source file is at vueRoot/<relDir>/file.vue, but compiled\n\t// output is at vueRoot/generated/{mode}/<relDir>/file.js —\n\t// 2 extra directory levels. Imports going above vueRoot need\n\t// ../../ prepended so they resolve to the same target.\n\tconst relDir = dirname(relativeFilePath);\n\tconst relDepth = relDir === '.' ? 0 : relDir.split('/').length;\n\tconst adjustImports = (code: string) =>\n\t\tcode.replace(/(from\\s+['\"])(\\.\\.\\/(?:\\.\\.\\/)*)/g, (_, prefix, dots) => {\n\t\t\tconst upCount = dots.split('/').length - 1;\n\t\t\tif (upCount <= relDepth) return `${prefix}${dots}`;\n\n\t\t\treturn `${prefix}../../${dots}`;\n\t\t});\n\n\t// Rewrite bare module imports to relative paths pointing at compiled output\n\tconst rewritePackageImports = (\n\t\tcode: string,\n\t\toutputPath: string,\n\t\tmode: 'client' | 'server'\n\t) => {\n\t\tlet result = code;\n\t\tfor (const [bareImport, paths] of packageImportRewrites) {\n\t\t\tconst targetPath = mode === 'server' ? paths.server : paths.client;\n\t\t\tlet rel = relative(dirname(outputPath), targetPath).replace(\n\t\t\t\t/\\\\/g,\n\t\t\t\t'/'\n\t\t\t);\n\t\t\tif (!rel.startsWith('.')) rel = `./${rel}`;\n\t\t\tresult = result.replaceAll(bareImport, rel);\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tawait mkdir(dirname(clientOutputPath), { recursive: true });\n\tawait mkdir(dirname(serverOutputPath), { recursive: true });\n\tawait write(\n\t\tclientOutputPath,\n\t\trewritePackageImports(\n\t\t\tadjustImports(clientCode),\n\t\t\tclientOutputPath,\n\t\t\t'client'\n\t\t)\n\t);\n\tawait write(\n\t\tserverOutputPath,\n\t\trewritePackageImports(\n\t\t\tadjustImports(serverCode),\n\t\t\tserverOutputPath,\n\t\t\t'server'\n\t\t)\n\t);\n\n\tconst result: BuildResult = {\n\t\tclientPath: clientOutputPath,\n\t\tcssCodes: allCss,\n\t\tcssPaths: cssOutputPaths,\n\t\thmrId,\n\t\tserverPath: serverOutputPath,\n\t\ttsHelperPaths: [\n\t\t\t...helperModulePaths.map((helper) =>\n\t\t\t\tresolve(\n\t\t\t\t\tdirname(sourceFilePath),\n\t\t\t\t\thelper.endsWith('.ts') ? helper : `${helper}.ts`\n\t\t\t\t)\n\t\t\t),\n\t\t\t...childBuildResults.flatMap((child) => child.tsHelperPaths)\n\t\t]\n\t};\n\n\tcacheMap.set(sourceFilePath, result);\n\tpersistentBuildCache.set(sourceFilePath, result);\n\n\treturn result;\n};\n\nexport const compileVue = async (\n\tentryPoints: string[],\n\tvueRootDir: string,\n\tisDev = false,\n\tstylePreprocessors?: StylePreprocessorConfig\n) => {\n\tconst compiler: VueCompiler = await import('@vue/compiler-sfc');\n\n\tconst generatedDir = join(vueRootDir, 'generated');\n\tconst clientOutputDir = join(generatedDir, 'client');\n\tconst indexOutputDir = join(generatedDir, 'indexes');\n\tconst serverOutputDir = join(generatedDir, 'server');\n\tconst cssOutputDir = join(generatedDir, 'compiled');\n\n\tawait Promise.all([\n\t\tmkdir(clientOutputDir, { recursive: true }),\n\t\tmkdir(indexOutputDir, { recursive: true }),\n\t\tmkdir(serverOutputDir, { recursive: true }),\n\t\tmkdir(cssOutputDir, { recursive: true })\n\t]);\n\n\tconst buildCache = new Map<string, BuildResult>();\n\tconst allTsHelperPaths = new Set<string>();\n\n\tconst compiledPages = await Promise.all(\n\t\tentryPoints.map(async (entryPath) => {\n\t\t\tconst result = await compileVueFile(\n\t\t\t\tresolve(entryPath),\n\t\t\t\t{\n\t\t\t\t\tclient: clientOutputDir,\n\t\t\t\t\tcss: cssOutputDir,\n\t\t\t\t\tserver: serverOutputDir\n\t\t\t\t},\n\t\t\t\tbuildCache,\n\t\t\t\ttrue,\n\t\t\t\tvueRootDir,\n\t\t\t\tcompiler,\n\t\t\t\tstylePreprocessors\n\t\t\t);\n\n\t\t\tresult.tsHelperPaths.forEach((path) => allTsHelperPaths.add(path));\n\n\t\t\tconst entryBaseName = basename(entryPath, '.vue');\n\t\t\tconst indexOutputFile = join(indexOutputDir, `${entryBaseName}.js`);\n\t\t\tconst clientOutputFile = join(\n\t\t\t\tclientOutputDir,\n\t\t\t\trelative(vueRootDir, entryPath)\n\t\t\t\t\t.replace(/\\\\/g, '/')\n\t\t\t\t\t.replace(/\\.vue$/, '.js')\n\t\t\t);\n\n\t\t\tawait mkdir(dirname(indexOutputFile), { recursive: true });\n\t\t\tconst vueHmrImports = isDev\n\t\t\t\t? [\n\t\t\t\t\t\t`window.__HMR_FRAMEWORK__ = \"vue\";`,\n\t\t\t\t\t\t`import \"${hmrClientPath}\";`\n\t\t\t\t\t]\n\t\t\t\t: [];\n\t\t\tawait write(\n\t\t\t\tindexOutputFile,\n\t\t\t\t[\n\t\t\t\t\t...vueHmrImports,\n\t\t\t\t\t`import Comp from \"${relative(dirname(indexOutputFile), clientOutputFile).replace(/\\\\/g, '/')}\";`,\n\t\t\t\t\t'import { createSSRApp, createApp } from \"vue\";',\n\t\t\t\t\t'',\n\t\t\t\t\t'// HMR State Preservation: Check for preserved state from HMR',\n\t\t\t\t\t'let preservedState = (typeof window !== \"undefined\" && window.__HMR_PRESERVED_STATE__) ? window.__HMR_PRESERVED_STATE__ : {};',\n\t\t\t\t\t'',\n\t\t\t\t\t'// Fallback: check sessionStorage if window state is empty (only during active HMR, not full page refresh)',\n\t\t\t\t\t'if (typeof window !== \"undefined\" && Object.keys(preservedState).length === 0 && sessionStorage.getItem(\"__HMR_ACTIVE__\")) {',\n\t\t\t\t\t' try {',\n\t\t\t\t\t' const stored = sessionStorage.getItem(\"__VUE_HMR_STATE__\");',\n\t\t\t\t\t' if (stored) {',\n\t\t\t\t\t' preservedState = JSON.parse(stored);',\n\t\t\t\t\t' sessionStorage.removeItem(\"__VUE_HMR_STATE__\");',\n\t\t\t\t\t' }',\n\t\t\t\t\t' } catch (e) {}',\n\t\t\t\t\t'}',\n\t\t\t\t\t'// Clean up stale HMR state on full page refresh',\n\t\t\t\t\t'if (typeof window !== \"undefined\" && !sessionStorage.getItem(\"__HMR_ACTIVE__\")) {',\n\t\t\t\t\t' sessionStorage.removeItem(\"__VUE_HMR_STATE__\");',\n\t\t\t\t\t'}',\n\t\t\t\t\t'',\n\t\t\t\t\t'const initialProps = window.__INITIAL_PROPS__ ?? {};',\n\t\t\t\t\t'// Only merge preserved state keys that match declared props (avoids passing refs/components as attributes)',\n\t\t\t\t\t'const mergedProps = { ...initialProps };',\n\t\t\t\t\t'Object.keys(preservedState).forEach(function(key) {',\n\t\t\t\t\t' if (key in initialProps) {',\n\t\t\t\t\t' mergedProps[key] = preservedState[key];',\n\t\t\t\t\t' }',\n\t\t\t\t\t'});',\n\t\t\t\t\t'',\n\t\t\t\t\t'// During HMR or after SSR dirty, use createApp (fresh mount) to avoid hydration mismatch with stale DOM',\n\t\t\t\t\t'const isHMR = typeof window !== \"undefined\" && sessionStorage.getItem(\"__HMR_ACTIVE__\");',\n\t\t\t\t\t'const isSsrDirty = typeof window !== \"undefined\" && window.__SSR_DIRTY__;',\n\t\t\t\t\t'const shouldHydrate = typeof window === \"undefined\" ? false : !(isHMR || isSsrDirty);',\n\t\t\t\t\t'const app = shouldHydrate ? createSSRApp(Comp, mergedProps) : createApp(Comp, mergedProps);',\n\t\t\t\t\t'app.mount(\"#root\");',\n\t\t\t\t\t'',\n\t\t\t\t\t'// Store app instance for HMR - used for manual component updates',\n\t\t\t\t\t'if (typeof window !== \"undefined\") {',\n\t\t\t\t\t' window.__VUE_APP__ = app;',\n\t\t\t\t\t'}',\n\t\t\t\t\t'',\n\t\t\t\t\t'// Post-mount: Apply preserved state to reactive refs in component tree',\n\t\t\t\t\t'// This restores state that lives in refs (like count) rather than props',\n\t\t\t\t\t'if (typeof window !== \"undefined\" && Object.keys(preservedState).length > 0) {',\n\t\t\t\t\t' requestAnimationFrame(function() {',\n\t\t\t\t\t' if (window.__VUE_APP__ && window.__VUE_APP__._instance) {',\n\t\t\t\t\t' applyPreservedState(window.__VUE_APP__._instance, preservedState);',\n\t\t\t\t\t' }',\n\t\t\t\t\t' });',\n\t\t\t\t\t'}',\n\t\t\t\t\t'',\n\t\t\t\t\t'function applyPreservedState(instance, state) {',\n\t\t\t\t\t' // Apply to root component setupState',\n\t\t\t\t\t' if (instance.setupState) {',\n\t\t\t\t\t' Object.keys(state).forEach(function(key) {',\n\t\t\t\t\t' const ref = instance.setupState[key];',\n\t\t\t\t\t' if (ref && typeof ref === \"object\" && \"value\" in ref) {',\n\t\t\t\t\t' ref.value = state[key];',\n\t\t\t\t\t' }',\n\t\t\t\t\t' });',\n\t\t\t\t\t' }',\n\t\t\t\t\t' // Also apply to child components',\n\t\t\t\t\t' if (instance.subTree) {',\n\t\t\t\t\t' walkAndApply(instance.subTree, state);',\n\t\t\t\t\t' }',\n\t\t\t\t\t'}',\n\t\t\t\t\t'',\n\t\t\t\t\t'function walkAndApply(vnode, state) {',\n\t\t\t\t\t' if (!vnode) return;',\n\t\t\t\t\t' if (vnode.component && vnode.component.setupState) {',\n\t\t\t\t\t' Object.keys(state).forEach(function(key) {',\n\t\t\t\t\t' const ref = vnode.component.setupState[key];',\n\t\t\t\t\t' if (ref && typeof ref === \"object\" && \"value\" in ref) {',\n\t\t\t\t\t' ref.value = state[key];',\n\t\t\t\t\t' }',\n\t\t\t\t\t' });',\n\t\t\t\t\t' }',\n\t\t\t\t\t' if (vnode.children && Array.isArray(vnode.children)) {',\n\t\t\t\t\t' vnode.children.forEach(function(child) { walkAndApply(child, state); });',\n\t\t\t\t\t' }',\n\t\t\t\t\t' if (vnode.component && vnode.component.subTree) {',\n\t\t\t\t\t' walkAndApply(vnode.component.subTree, state);',\n\t\t\t\t\t' }',\n\t\t\t\t\t'}',\n\t\t\t\t\t'',\n\t\t\t\t\t'// Clear preserved state after applying',\n\t\t\t\t\t'if (typeof window !== \"undefined\") {',\n\t\t\t\t\t' window.__ABS_SLOT_HYDRATION_PENDING__ = shouldHydrate;',\n\t\t\t\t\t' var releaseStreamingSlots = function() {',\n\t\t\t\t\t' window.__ABS_SLOT_HYDRATION_PENDING__ = false;',\n\t\t\t\t\t' if (typeof window.__ABS_SLOT_FLUSH__ === \"function\") {',\n\t\t\t\t\t' window.__ABS_SLOT_FLUSH__();',\n\t\t\t\t\t' }',\n\t\t\t\t\t' };',\n\t\t\t\t\t' if (shouldHydrate && typeof requestAnimationFrame === \"function\") {',\n\t\t\t\t\t' requestAnimationFrame(function() {',\n\t\t\t\t\t' requestAnimationFrame(releaseStreamingSlots);',\n\t\t\t\t\t' });',\n\t\t\t\t\t' } else if (typeof window.__ABS_SLOT_FLUSH__ === \"function\") {',\n\t\t\t\t\t' window.__ABS_SLOT_FLUSH__();',\n\t\t\t\t\t' } else if (typeof setTimeout === \"function\") {',\n\t\t\t\t\t' setTimeout(releaseStreamingSlots, 0);',\n\t\t\t\t\t' }',\n\t\t\t\t\t'}',\n\t\t\t\t\t'if (typeof window !== \"undefined\") {',\n\t\t\t\t\t' window.__HMR_PRESERVED_STATE__ = undefined;',\n\t\t\t\t\t'}'\n\t\t\t\t].join('\\n')\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tclientPath: clientOutputFile,\n\t\t\t\tcssPaths: result.cssPaths,\n\t\t\t\tindexPath: indexOutputFile,\n\t\t\t\tserverPath: result.serverPath\n\t\t\t};\n\t\t})\n\t);\n\n\tawait Promise.all(\n\t\tArray.from(allTsHelperPaths).map(async (tsPath) => {\n\t\t\tconst sourceCode = await file(tsPath).text();\n\t\t\tconst transpiledCode = transpiler.transformSync(sourceCode);\n\t\t\tconst relativeJsPath = relative(vueRootDir, tsPath).replace(\n\t\t\t\t/\\.ts$/,\n\t\t\t\t'.js'\n\t\t\t);\n\t\t\tconst outClientPath = join(clientOutputDir, relativeJsPath);\n\t\t\tconst outServerPath = join(serverOutputDir, relativeJsPath);\n\t\t\tawait mkdir(dirname(outClientPath), { recursive: true });\n\t\t\tawait mkdir(dirname(outServerPath), { recursive: true });\n\t\t\tawait write(outClientPath, transpiledCode);\n\t\t\tawait write(outServerPath, transpiledCode);\n\t\t})\n\t);\n\n\treturn {\n\t\t// Export HMR metadata from vueHmrMetadata map (populated during compilation)\n\t\thmrMetadata: new Map(vueHmrMetadata),\n\t\tvueClientPaths: compiledPages.map((result) => result.clientPath),\n\t\tvueCssPaths: compiledPages.flatMap((result) => result.cssPaths),\n\t\tvueIndexPaths: compiledPages.map((result) => result.indexPath),\n\t\tvueServerPaths: compiledPages.map((result) => result.serverPath)\n\t};\n};\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "12EDE19C68C85FED64756E2164756E21",
9
- "names": []
10
- }