@absolutejs/absolute 0.19.0-beta.807 → 0.19.0-beta.809
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.
- package/dist/angular/browser.js +9801 -57
- package/dist/angular/browser.js.map +246 -4
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/angular/index.js +14877 -60
- package/dist/angular/index.js.map +281 -4
- package/dist/angular/server.js +5610 -45
- package/dist/angular/server.js.map +51 -3
- package/dist/build.js +18092 -45
- package/dist/build.js.map +99 -3
- package/dist/cli/index.js +317 -86
- package/dist/client/index.js +1091 -70
- package/dist/client/index.js.map +24 -4
- package/dist/core/streamingSlotRegistrar.js +108 -11
- package/dist/core/streamingSlotRegistrar.js.map +4 -3
- package/dist/core/streamingSlotRegistry.js +169 -7
- package/dist/core/streamingSlotRegistry.js.map +5 -3
- package/dist/index.js +19957 -547
- package/dist/index.js.map +116 -3
- package/dist/islands/browser.js +228 -9
- package/dist/islands/browser.js.map +9 -4
- package/dist/islands/index.js +1908 -17
- package/dist/islands/index.js.map +27 -3
- package/dist/react/browser.js +328 -12
- package/dist/react/browser.js.map +12 -4
- package/dist/react/components/index.js +167 -16
- package/dist/react/components/index.js.map +6 -3
- package/dist/react/hooks/index.js +183 -8
- package/dist/react/hooks/index.js.map +7 -3
- package/dist/react/index.js +3627 -36
- package/dist/react/index.js.map +45 -4
- package/dist/react/jsxDevRuntimeCompat.js +61 -2
- package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
- package/dist/react/server.js +1789 -18
- package/dist/react/server.js.map +21 -3
- package/dist/src/angular/injectorPatch.d.ts +1 -0
- package/dist/src/angular/islands.d.ts +1 -0
- package/dist/src/client/hydrators/react.d.ts +3 -0
- package/dist/src/client/hydrators/svelte.d.ts +2 -0
- package/dist/src/client/hydrators/vue.d.ts +2 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/svelte/browser.js +247 -12
- package/dist/svelte/browser.js.map +10 -3
- package/dist/svelte/index.js +3732 -37
- package/dist/svelte/index.js.map +47 -4
- package/dist/svelte/server.js +2794 -21
- package/dist/svelte/server.js.map +27 -3
- package/dist/vue/browser.js +348 -12
- package/dist/vue/browser.js.map +12 -4
- package/dist/vue/components/Image.js +240 -7
- package/dist/vue/components/Image.js.map +6 -3
- package/dist/vue/components/index.js +544 -11
- package/dist/vue/components/index.js.map +9 -3
- package/dist/vue/index.js +4212 -52
- package/dist/vue/index.js.map +50 -4
- package/dist/vue/server.js +1849 -18
- package/dist/vue/server.js.map +21 -3
- package/package.json +1 -1
- package/dist/chunk-0867j0r0.js +0 -136
- package/dist/chunk-0867j0r0.js.map +0 -10
- package/dist/chunk-102fp7xe.js +0 -63
- package/dist/chunk-102fp7xe.js.map +0 -10
- package/dist/chunk-11zpfqz6.js +0 -19
- package/dist/chunk-11zpfqz6.js.map +0 -10
- package/dist/chunk-1rfh7hw9.js +0 -319
- package/dist/chunk-1rfh7hw9.js.map +0 -11
- package/dist/chunk-1x4fxm57.js +0 -51
- package/dist/chunk-1x4fxm57.js.map +0 -9
- package/dist/chunk-25v9t56f.js +0 -29
- package/dist/chunk-25v9t56f.js.map +0 -11
- package/dist/chunk-2f21eenc.js +0 -21
- package/dist/chunk-2f21eenc.js.map +0 -10
- package/dist/chunk-2ga2znex.js +0 -13
- package/dist/chunk-2ga2znex.js.map +0 -9
- package/dist/chunk-30yrw0f6.js +0 -33
- package/dist/chunk-30yrw0f6.js.map +0 -10
- package/dist/chunk-3g91wb4f.js +0 -358
- package/dist/chunk-3g91wb4f.js.map +0 -10
- package/dist/chunk-3rea1gam.js +0 -4403
- package/dist/chunk-3rea1gam.js.map +0 -28
- package/dist/chunk-3yjzpcne.js +0 -34
- package/dist/chunk-3yjzpcne.js.map +0 -10
- package/dist/chunk-41bf6aqt.js +0 -17
- package/dist/chunk-41bf6aqt.js.map +0 -9
- package/dist/chunk-4d39r92n.js +0 -81
- package/dist/chunk-4d39r92n.js.map +0 -10
- package/dist/chunk-5003emhv.js +0 -17
- package/dist/chunk-5003emhv.js.map +0 -10
- package/dist/chunk-5f67rsed.js +0 -466
- package/dist/chunk-5f67rsed.js.map +0 -10
- package/dist/chunk-5fhp1jap.js +0 -9169
- package/dist/chunk-5fhp1jap.js.map +0 -236
- package/dist/chunk-629x0yh4.js +0 -20
- package/dist/chunk-629x0yh4.js.map +0 -9
- package/dist/chunk-6pdj08z3.js +0 -73
- package/dist/chunk-6pdj08z3.js.map +0 -12
- package/dist/chunk-6qjbrt0k.js +0 -13
- package/dist/chunk-6qjbrt0k.js.map +0 -9
- package/dist/chunk-6sccb4jr.js +0 -14
- package/dist/chunk-6sccb4jr.js.map +0 -9
- package/dist/chunk-798spvzv.js +0 -50
- package/dist/chunk-798spvzv.js.map +0 -10
- package/dist/chunk-7fw6x3js.js +0 -131
- package/dist/chunk-7fw6x3js.js.map +0 -11
- package/dist/chunk-7kjj42xm.js +0 -11
- package/dist/chunk-7kjj42xm.js.map +0 -10
- package/dist/chunk-7mtstdqn.js +0 -90
- package/dist/chunk-7mtstdqn.js.map +0 -10
- package/dist/chunk-851whwc7.js +0 -17
- package/dist/chunk-851whwc7.js.map +0 -10
- package/dist/chunk-85n68sy6.js +0 -103
- package/dist/chunk-85n68sy6.js.map +0 -10
- package/dist/chunk-8kcfffry.js +0 -35
- package/dist/chunk-8kcfffry.js.map +0 -10
- package/dist/chunk-92fsjfpp.js +0 -1731
- package/dist/chunk-92fsjfpp.js.map +0 -11
- package/dist/chunk-93sqk7be.js +0 -139
- package/dist/chunk-93sqk7be.js.map +0 -12
- package/dist/chunk-9c5tj4k3.js +0 -130
- package/dist/chunk-9c5tj4k3.js.map +0 -10
- package/dist/chunk-9j59emg3.js +0 -184
- package/dist/chunk-9j59emg3.js.map +0 -11
- package/dist/chunk-9ve9jq72.js +0 -203
- package/dist/chunk-9ve9jq72.js.map +0 -10
- package/dist/chunk-9xrsjeem.js +0 -12
- package/dist/chunk-9xrsjeem.js.map +0 -9
- package/dist/chunk-a9mvyp04.js +0 -87
- package/dist/chunk-a9mvyp04.js.map +0 -10
- package/dist/chunk-b3gbnrwe.js +0 -21
- package/dist/chunk-b3gbnrwe.js.map +0 -10
- package/dist/chunk-bgb8k1qs.js +0 -672
- package/dist/chunk-bgb8k1qs.js.map +0 -15
- package/dist/chunk-bmgqm774.js +0 -65
- package/dist/chunk-bmgqm774.js.map +0 -9
- package/dist/chunk-bxfghpma.js +0 -69
- package/dist/chunk-bxfghpma.js.map +0 -10
- package/dist/chunk-c1jfjnka.js +0 -74
- package/dist/chunk-c1jfjnka.js.map +0 -10
- package/dist/chunk-cbkrwmvh.js +0 -80
- package/dist/chunk-cbkrwmvh.js.map +0 -10
- package/dist/chunk-cdxd7sy2.js +0 -71
- package/dist/chunk-cdxd7sy2.js.map +0 -10
- package/dist/chunk-cg95827x.js +0 -21
- package/dist/chunk-cg95827x.js.map +0 -10
- package/dist/chunk-cm0g4q6w.js +0 -149
- package/dist/chunk-cm0g4q6w.js.map +0 -10
- package/dist/chunk-d7mwkzry.js +0 -261
- package/dist/chunk-d7mwkzry.js.map +0 -10
- package/dist/chunk-d9c0am65.js +0 -12
- package/dist/chunk-d9c0am65.js.map +0 -10
- package/dist/chunk-daqghmg8.js +0 -12
- package/dist/chunk-daqghmg8.js.map +0 -9
- package/dist/chunk-e3r9fxaa.js +0 -149
- package/dist/chunk-e3r9fxaa.js.map +0 -10
- package/dist/chunk-e8eecyrq.js +0 -244
- package/dist/chunk-e8eecyrq.js.map +0 -10
- package/dist/chunk-ex2hxe0v.js +0 -160
- package/dist/chunk-ex2hxe0v.js.map +0 -11
- package/dist/chunk-fak944et.js +0 -91
- package/dist/chunk-fak944et.js.map +0 -10
- package/dist/chunk-fygx2ymm.js +0 -118
- package/dist/chunk-fygx2ymm.js.map +0 -12
- package/dist/chunk-g15qj669.js +0 -271
- package/dist/chunk-g15qj669.js.map +0 -11
- package/dist/chunk-gd6wmknh.js +0 -121
- package/dist/chunk-gd6wmknh.js.map +0 -11
- package/dist/chunk-gf0ygptk.js +0 -85
- package/dist/chunk-gf0ygptk.js.map +0 -11
- package/dist/chunk-gytkmthr.js +0 -220
- package/dist/chunk-gytkmthr.js.map +0 -10
- package/dist/chunk-h5bbfn3n.js +0 -28
- package/dist/chunk-h5bbfn3n.js.map +0 -11
- package/dist/chunk-h6mye9r3.js +0 -93
- package/dist/chunk-h6mye9r3.js.map +0 -10
- package/dist/chunk-hcsmxw1v.js +0 -85
- package/dist/chunk-hcsmxw1v.js.map +0 -10
- package/dist/chunk-hyjs4bqs.js +0 -8
- package/dist/chunk-hyjs4bqs.js.map +0 -10
- package/dist/chunk-jn91vzkh.js +0 -66
- package/dist/chunk-jn91vzkh.js.map +0 -10
- package/dist/chunk-jpkjdgsk.js +0 -167
- package/dist/chunk-jpkjdgsk.js.map +0 -11
- package/dist/chunk-jwxt8gnp.js +0 -13
- package/dist/chunk-jwxt8gnp.js.map +0 -9
- package/dist/chunk-kk8w9rh5.js +0 -195
- package/dist/chunk-kk8w9rh5.js.map +0 -10
- package/dist/chunk-kwgh8rmg.js +0 -426
- package/dist/chunk-kwgh8rmg.js.map +0 -14
- package/dist/chunk-m97ze5hz.js +0 -46
- package/dist/chunk-m97ze5hz.js.map +0 -10
- package/dist/chunk-mbazhahf.js +0 -60
- package/dist/chunk-mbazhahf.js.map +0 -10
- package/dist/chunk-mgfwq18r.js +0 -15
- package/dist/chunk-mgfwq18r.js.map +0 -9
- package/dist/chunk-mtgf69xn.js +0 -88
- package/dist/chunk-mtgf69xn.js.map +0 -10
- package/dist/chunk-mtxzyxpg.js +0 -102
- package/dist/chunk-mtxzyxpg.js.map +0 -10
- package/dist/chunk-nehhtthw.js +0 -225
- package/dist/chunk-nehhtthw.js.map +0 -10
- package/dist/chunk-p5504p14.js +0 -16
- package/dist/chunk-p5504p14.js.map +0 -10
- package/dist/chunk-p5zgj77m.js +0 -184
- package/dist/chunk-p5zgj77m.js.map +0 -10
- package/dist/chunk-pnscgw95.js +0 -90
- package/dist/chunk-pnscgw95.js.map +0 -10
- package/dist/chunk-pvpp4pvs.js +0 -17
- package/dist/chunk-pvpp4pvs.js.map +0 -10
- package/dist/chunk-qh75agse.js +0 -95
- package/dist/chunk-qh75agse.js.map +0 -10
- package/dist/chunk-qxq2zcty.js +0 -52
- package/dist/chunk-qxq2zcty.js.map +0 -10
- package/dist/chunk-r6e8pytx.js +0 -22
- package/dist/chunk-r6e8pytx.js.map +0 -9
- package/dist/chunk-r7jmgqnw.js +0 -114
- package/dist/chunk-r7jmgqnw.js.map +0 -10
- package/dist/chunk-s6defjk2.js +0 -116
- package/dist/chunk-s6defjk2.js.map +0 -10
- package/dist/chunk-sd39p726.js +0 -619
- package/dist/chunk-sd39p726.js.map +0 -10
- package/dist/chunk-swrnzs4c.js +0 -63
- package/dist/chunk-swrnzs4c.js.map +0 -10
- package/dist/chunk-tfe3sb44.js +0 -33
- package/dist/chunk-tfe3sb44.js.map +0 -10
- package/dist/chunk-tjr0kcev.js +0 -41
- package/dist/chunk-tjr0kcev.js.map +0 -9
- package/dist/chunk-tx9edm1x.js +0 -34
- package/dist/chunk-tx9edm1x.js.map +0 -10
- package/dist/chunk-txhm2vb5.js +0 -18
- package/dist/chunk-txhm2vb5.js.map +0 -9
- package/dist/chunk-v5vmsxmy.js +0 -526
- package/dist/chunk-v5vmsxmy.js.map +0 -12
- package/dist/chunk-vjhxm8n2.js +0 -29
- package/dist/chunk-vjhxm8n2.js.map +0 -9
- package/dist/chunk-vkrpm7kc.js +0 -247
- package/dist/chunk-vkrpm7kc.js.map +0 -12
- package/dist/chunk-w3m4m5we.js +0 -4925
- package/dist/chunk-w3m4m5we.js.map +0 -12
- package/dist/chunk-wrxtn9ve.js +0 -18
- package/dist/chunk-wrxtn9ve.js.map +0 -10
- package/dist/chunk-x09cskqd.js +0 -377
- package/dist/chunk-x09cskqd.js.map +0 -10
- package/dist/chunk-xnt8c6h2.js +0 -576
- package/dist/chunk-xnt8c6h2.js.map +0 -10
- package/dist/chunk-xw0tx842.js +0 -13
- package/dist/chunk-xw0tx842.js.map +0 -9
- package/dist/chunk-xx5b6b9m.js +0 -69
- package/dist/chunk-xx5b6b9m.js.map +0 -10
- package/dist/chunk-xz1kdswj.js +0 -21
- package/dist/chunk-xz1kdswj.js.map +0 -9
- package/dist/chunk-y84qnsd3.js +0 -32
- package/dist/chunk-y84qnsd3.js.map +0 -10
- package/dist/chunk-ywjn0rad.js +0 -14
- package/dist/chunk-ywjn0rad.js.map +0 -9
- package/dist/chunk-z9nvhm6r.js +0 -13
- package/dist/chunk-z9nvhm6r.js.map +0 -9
- package/dist/chunk-zhmvdpk6.js +0 -15
- package/dist/chunk-zhmvdpk6.js.map +0 -9
- package/dist/chunk-zrg9d4zw.js +0 -784
- package/dist/chunk-zrg9d4zw.js.map +0 -10
package/dist/chunk-5f67rsed.js
DELETED
|
@@ -1,466 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import {
|
|
3
|
-
buildIslandMetadataExports
|
|
4
|
-
} from "./chunk-a9mvyp04.js";
|
|
5
|
-
import {
|
|
6
|
-
toKebab
|
|
7
|
-
} from "./chunk-p5504p14.js";
|
|
8
|
-
import {
|
|
9
|
-
resolvePackageImport
|
|
10
|
-
} from "./chunk-mbazhahf.js";
|
|
11
|
-
import {
|
|
12
|
-
addStyleImporter,
|
|
13
|
-
compileStyleSource,
|
|
14
|
-
isStylePath
|
|
15
|
-
} from "./chunk-xnt8c6h2.js";
|
|
16
|
-
import {
|
|
17
|
-
BASE_36_RADIX
|
|
18
|
-
} from "./chunk-qh75agse.js";
|
|
19
|
-
import {
|
|
20
|
-
__require
|
|
21
|
-
} from "./chunk-bmgqm774.js";
|
|
22
|
-
|
|
23
|
-
// src/build/compileVue.ts
|
|
24
|
-
import { existsSync } from "fs";
|
|
25
|
-
import { mkdir } from "fs/promises";
|
|
26
|
-
import {
|
|
27
|
-
basename,
|
|
28
|
-
dirname,
|
|
29
|
-
isAbsolute,
|
|
30
|
-
join,
|
|
31
|
-
relative,
|
|
32
|
-
resolve
|
|
33
|
-
} from "path";
|
|
34
|
-
var {file, write, Transpiler } = globalThis.Bun;
|
|
35
|
-
var resolveDevClientDir = () => {
|
|
36
|
-
const projectRoot = process.cwd();
|
|
37
|
-
const fromSource = resolve(import.meta.dir, "../dev/client");
|
|
38
|
-
if (existsSync(fromSource) && fromSource.startsWith(projectRoot)) {
|
|
39
|
-
return fromSource;
|
|
40
|
-
}
|
|
41
|
-
const fromNodeModules = resolve(projectRoot, "node_modules/@absolutejs/absolute/dist/dev/client");
|
|
42
|
-
if (existsSync(fromNodeModules))
|
|
43
|
-
return fromNodeModules;
|
|
44
|
-
return resolve(import.meta.dir, "./dev/client");
|
|
45
|
-
};
|
|
46
|
-
var devClientDir = resolveDevClientDir();
|
|
47
|
-
var hmrClientPath = join(devClientDir, "hmrClient.ts").replace(/\\/g, "/");
|
|
48
|
-
var transpiler = new Transpiler({ loader: "ts", target: "browser" });
|
|
49
|
-
var scriptCache = new Map;
|
|
50
|
-
var scriptSetupCache = new Map;
|
|
51
|
-
var templateCache = new Map;
|
|
52
|
-
var styleCache = new Map;
|
|
53
|
-
var persistentBuildCache = new Map;
|
|
54
|
-
var vueSourceHashCache = new Map;
|
|
55
|
-
var vueHmrMetadata = new Map;
|
|
56
|
-
var clearVueHmrCaches = () => {
|
|
57
|
-
scriptCache.clear();
|
|
58
|
-
scriptSetupCache.clear();
|
|
59
|
-
templateCache.clear();
|
|
60
|
-
styleCache.clear();
|
|
61
|
-
vueHmrMetadata.clear();
|
|
62
|
-
persistentBuildCache.clear();
|
|
63
|
-
vueSourceHashCache.clear();
|
|
64
|
-
};
|
|
65
|
-
var detectVueChangeType = (filePath, descriptor) => {
|
|
66
|
-
const prevScript = scriptCache.get(filePath);
|
|
67
|
-
const prevScriptSetup = scriptSetupCache.get(filePath);
|
|
68
|
-
const prevTemplate = templateCache.get(filePath);
|
|
69
|
-
const prevStyle = styleCache.get(filePath);
|
|
70
|
-
const currentScript = descriptor.script?.content ?? "";
|
|
71
|
-
const currentScriptSetup = descriptor.scriptSetup?.content ?? "";
|
|
72
|
-
const currentTemplate = descriptor.template?.content ?? "";
|
|
73
|
-
const currentStyle = descriptor.styles.map((s) => `${s.scoped ? "scoped:" : ""}${s.content}`).join("|||");
|
|
74
|
-
scriptCache.set(filePath, currentScript);
|
|
75
|
-
scriptSetupCache.set(filePath, currentScriptSetup);
|
|
76
|
-
templateCache.set(filePath, currentTemplate);
|
|
77
|
-
styleCache.set(filePath, currentStyle);
|
|
78
|
-
if (prevScript === undefined && prevScriptSetup === undefined) {
|
|
79
|
-
return "full";
|
|
80
|
-
}
|
|
81
|
-
const scriptChanged = prevScript !== currentScript;
|
|
82
|
-
const scriptSetupChanged = prevScriptSetup !== currentScriptSetup;
|
|
83
|
-
const templateChanged = prevTemplate !== currentTemplate;
|
|
84
|
-
const styleChanged = prevStyle !== currentStyle;
|
|
85
|
-
if (scriptChanged || scriptSetupChanged) {
|
|
86
|
-
return "script";
|
|
87
|
-
}
|
|
88
|
-
if (styleChanged && !templateChanged) {
|
|
89
|
-
return "style-only";
|
|
90
|
-
}
|
|
91
|
-
if (templateChanged) {
|
|
92
|
-
return "template-only";
|
|
93
|
-
}
|
|
94
|
-
return "full";
|
|
95
|
-
};
|
|
96
|
-
var generateVueHmrId = (sourceFilePath, vueRootDir) => relative(vueRootDir, sourceFilePath).replace(/\\/g, "/").replace(/\.vue$/, "");
|
|
97
|
-
var extractImports = (sourceCode) => Array.from(sourceCode.matchAll(/import\s+[\s\S]+?['"]([^'"]+)['"]/g)).map((match) => match[1]).filter((importPath) => importPath !== undefined);
|
|
98
|
-
var toJs = (filePath, sourceDir) => {
|
|
99
|
-
if (filePath.endsWith(".vue"))
|
|
100
|
-
return filePath.replace(/\.vue$/, ".js");
|
|
101
|
-
if (filePath.endsWith(".ts"))
|
|
102
|
-
return filePath.replace(/\.ts$/, ".js");
|
|
103
|
-
if (isStylePath(filePath)) {
|
|
104
|
-
if (sourceDir && (filePath.startsWith("./") || filePath.startsWith("../"))) {
|
|
105
|
-
return resolve(sourceDir, filePath);
|
|
106
|
-
}
|
|
107
|
-
return filePath;
|
|
108
|
-
}
|
|
109
|
-
return `${filePath}.js`;
|
|
110
|
-
};
|
|
111
|
-
var stripExports = (code) => code.replace(/export\s+default/, "const script =").replace(/^export\s+/gm, "");
|
|
112
|
-
var mergeVueImports = (code) => {
|
|
113
|
-
const lines = code.split(`
|
|
114
|
-
`);
|
|
115
|
-
const specifierSet = new Set;
|
|
116
|
-
const vueImportRegex = /^import\s+{([^}]+)}\s+from\s+['"]vue['"];?$/;
|
|
117
|
-
lines.forEach((line) => {
|
|
118
|
-
const match = line.match(vueImportRegex);
|
|
119
|
-
if (match?.[1])
|
|
120
|
-
match[1].split(",").forEach((importSpecifier) => specifierSet.add(importSpecifier.trim()));
|
|
121
|
-
});
|
|
122
|
-
const nonVueLines = lines.filter((line) => !vueImportRegex.test(line));
|
|
123
|
-
return specifierSet.size ? [
|
|
124
|
-
`import { ${[...specifierSet].join(", ")} } from "vue";`,
|
|
125
|
-
...nonVueLines
|
|
126
|
-
].join(`
|
|
127
|
-
`) : nonVueLines.join(`
|
|
128
|
-
`);
|
|
129
|
-
};
|
|
130
|
-
var compileVueFile = async (sourceFilePath, outputDirs, cacheMap, isEntryPoint, vueRootDir, compiler, stylePreprocessors) => {
|
|
131
|
-
const cachedResult = cacheMap.get(sourceFilePath);
|
|
132
|
-
if (cachedResult)
|
|
133
|
-
return cachedResult;
|
|
134
|
-
const relativeFilePath = relative(vueRootDir, sourceFilePath).replace(/\\/g, "/");
|
|
135
|
-
const relativeWithoutExtension = relativeFilePath.replace(/\.vue$/, "");
|
|
136
|
-
const fileBaseName = basename(sourceFilePath, ".vue");
|
|
137
|
-
const componentId = toKebab(fileBaseName);
|
|
138
|
-
const sourceContent = await file(sourceFilePath).text();
|
|
139
|
-
const islandMetadataExports = buildIslandMetadataExports(sourceContent);
|
|
140
|
-
const contentHash = Bun.hash(sourceContent).toString(BASE_36_RADIX);
|
|
141
|
-
const prevHash = vueSourceHashCache.get(sourceFilePath);
|
|
142
|
-
const persistent = persistentBuildCache.get(sourceFilePath);
|
|
143
|
-
if (prevHash === contentHash && persistent) {
|
|
144
|
-
cacheMap.set(sourceFilePath, persistent);
|
|
145
|
-
return persistent;
|
|
146
|
-
}
|
|
147
|
-
vueSourceHashCache.set(sourceFilePath, contentHash);
|
|
148
|
-
const { descriptor } = compiler.parse(sourceContent, {
|
|
149
|
-
filename: sourceFilePath
|
|
150
|
-
});
|
|
151
|
-
const hmrId = generateVueHmrId(sourceFilePath, vueRootDir);
|
|
152
|
-
const changeType = detectVueChangeType(sourceFilePath, descriptor);
|
|
153
|
-
vueHmrMetadata.set(sourceFilePath, { changeType, hmrId });
|
|
154
|
-
const scriptSource = descriptor.scriptSetup?.content ?? descriptor.script?.content ?? "";
|
|
155
|
-
const importPaths = extractImports(scriptSource);
|
|
156
|
-
const resolvedPackageVueImports = new Map;
|
|
157
|
-
const bareImports = importPaths.filter((p) => !p.startsWith(".") && !p.startsWith("/"));
|
|
158
|
-
for (const importPath of bareImports) {
|
|
159
|
-
const resolved = resolvePackageImport(importPath);
|
|
160
|
-
if (!resolved?.endsWith(".vue"))
|
|
161
|
-
continue;
|
|
162
|
-
resolvedPackageVueImports.set(importPath, resolved);
|
|
163
|
-
}
|
|
164
|
-
const childComponentPaths = importPaths.filter((path) => path.startsWith(".") && path.endsWith(".vue"));
|
|
165
|
-
const packageComponentPaths = Array.from(resolvedPackageVueImports.entries());
|
|
166
|
-
const helperModulePaths = importPaths.filter((path) => path.startsWith(".") && !path.endsWith(".vue") && !isStylePath(path));
|
|
167
|
-
const stylePathsImported = importPaths.filter((path) => (path.startsWith(".") || isAbsolute(path)) && isStylePath(path)).map((path) => isAbsolute(path) ? path : resolve(dirname(sourceFilePath), path));
|
|
168
|
-
for (const stylePath of stylePathsImported) {
|
|
169
|
-
addStyleImporter(sourceFilePath, stylePath);
|
|
170
|
-
}
|
|
171
|
-
const childBuildResults = await Promise.all([
|
|
172
|
-
...childComponentPaths.map((relativeChildPath) => compileVueFile(resolve(dirname(sourceFilePath), relativeChildPath), outputDirs, cacheMap, false, vueRootDir, compiler, stylePreprocessors)),
|
|
173
|
-
...packageComponentPaths.map(([, absolutePath]) => compileVueFile(absolutePath, outputDirs, cacheMap, false, vueRootDir, compiler, stylePreprocessors))
|
|
174
|
-
]);
|
|
175
|
-
const hasScript = descriptor.script || descriptor.scriptSetup;
|
|
176
|
-
const compiledScript = hasScript ? compiler.compileScript(descriptor, {
|
|
177
|
-
id: componentId,
|
|
178
|
-
inlineTemplate: false
|
|
179
|
-
}) : { bindings: {}, content: "export default {};" };
|
|
180
|
-
const strippedScript = stripExports(compiledScript.content);
|
|
181
|
-
const sourceDir = dirname(sourceFilePath);
|
|
182
|
-
const transpiledScript = transpiler.transformSync(strippedScript).replace(/(['"])(\.{1,2}\/[^'"]+)(['"])/g, (_, quoteStart, relativeImport, quoteEnd) => `${quoteStart}${toJs(relativeImport, sourceDir)}${quoteEnd}`);
|
|
183
|
-
const packageImportRewrites = new Map;
|
|
184
|
-
for (const [bareImport, absolutePath] of packageComponentPaths) {
|
|
185
|
-
const childResult = cacheMap.get(absolutePath);
|
|
186
|
-
if (!childResult)
|
|
187
|
-
continue;
|
|
188
|
-
packageImportRewrites.set(bareImport, {
|
|
189
|
-
client: childResult.clientPath,
|
|
190
|
-
server: childResult.serverPath
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
const generateRenderFunction = (ssr) => compiler.compileTemplate({
|
|
194
|
-
compilerOptions: {
|
|
195
|
-
bindingMetadata: compiledScript.bindings,
|
|
196
|
-
prefixIdentifiers: true
|
|
197
|
-
},
|
|
198
|
-
filename: sourceFilePath,
|
|
199
|
-
id: componentId,
|
|
200
|
-
scoped: descriptor.styles.some((styleBlock) => styleBlock.scoped),
|
|
201
|
-
source: descriptor.template?.content ?? "",
|
|
202
|
-
ssr,
|
|
203
|
-
ssrCssVars: descriptor.cssVars
|
|
204
|
-
}).code.replace(/(['"])(\.{1,2}\/[^'"]+)(['"])/g, (_, quoteStart, relativeImport, quoteEnd) => `${quoteStart}${toJs(relativeImport, sourceDir)}${quoteEnd}`);
|
|
205
|
-
const localCss = await Promise.all(descriptor.styles.map(async (styleBlock) => compiler.compileStyle({
|
|
206
|
-
filename: sourceFilePath,
|
|
207
|
-
id: componentId,
|
|
208
|
-
scoped: styleBlock.scoped,
|
|
209
|
-
source: styleBlock.lang ? await compileStyleSource(sourceFilePath, styleBlock.content, styleBlock.lang, stylePreprocessors) : styleBlock.content,
|
|
210
|
-
trim: true
|
|
211
|
-
}).code));
|
|
212
|
-
const allCss = [
|
|
213
|
-
...localCss,
|
|
214
|
-
...childBuildResults.flatMap((result2) => result2.cssCodes)
|
|
215
|
-
];
|
|
216
|
-
let cssOutputPaths = [];
|
|
217
|
-
if (isEntryPoint && allCss.length) {
|
|
218
|
-
const cssOutputFile = join(outputDirs.css, `${toKebab(fileBaseName)}-compiled.css`);
|
|
219
|
-
await mkdir(dirname(cssOutputFile), { recursive: true });
|
|
220
|
-
await write(cssOutputFile, allCss.join(`
|
|
221
|
-
`));
|
|
222
|
-
cssOutputPaths = [cssOutputFile];
|
|
223
|
-
}
|
|
224
|
-
const assembleModule = (renderCode, renderFnName, includeHmr) => {
|
|
225
|
-
const hasScoped = descriptor.styles.some((styleBlock) => styleBlock.scoped);
|
|
226
|
-
const scopeIdCode = hasScoped ? `script.__scopeId = "data-v-${componentId}";` : "";
|
|
227
|
-
const hmrCode = includeHmr ? `
|
|
228
|
-
// Vue Native HMR Registration
|
|
229
|
-
script.__hmrId = ${JSON.stringify(hmrId)};
|
|
230
|
-
if (typeof __VUE_HMR_RUNTIME__ !== 'undefined') {
|
|
231
|
-
__VUE_HMR_RUNTIME__.createRecord(script.__hmrId, script);
|
|
232
|
-
if (typeof window !== 'undefined') {
|
|
233
|
-
window.__VUE_HMR_COMPONENTS__ = window.__VUE_HMR_COMPONENTS__ || {};
|
|
234
|
-
window.__VUE_HMR_COMPONENTS__[script.__hmrId] = script;
|
|
235
|
-
}
|
|
236
|
-
}` : "";
|
|
237
|
-
return mergeVueImports([
|
|
238
|
-
transpiledScript,
|
|
239
|
-
renderCode,
|
|
240
|
-
`script.${renderFnName} = ${renderFnName};`,
|
|
241
|
-
scopeIdCode,
|
|
242
|
-
hmrCode,
|
|
243
|
-
"export default script;"
|
|
244
|
-
].join(`
|
|
245
|
-
`));
|
|
246
|
-
};
|
|
247
|
-
const clientCode = assembleModule(generateRenderFunction(false), "render", true) + islandMetadataExports;
|
|
248
|
-
const serverCode = assembleModule(generateRenderFunction(true), "ssrRender", false) + islandMetadataExports;
|
|
249
|
-
const clientOutputPath = join(outputDirs.client, `${relativeWithoutExtension}.js`);
|
|
250
|
-
const serverOutputPath = join(outputDirs.server, `${relativeWithoutExtension}.js`);
|
|
251
|
-
const relDir = dirname(relativeFilePath);
|
|
252
|
-
const relDepth = relDir === "." ? 0 : relDir.split("/").length;
|
|
253
|
-
const adjustImports = (code) => code.replace(/(from\s+['"])(\.\.\/(?:\.\.\/)*)/g, (_, prefix, dots) => {
|
|
254
|
-
const upCount = dots.split("/").length - 1;
|
|
255
|
-
if (upCount <= relDepth)
|
|
256
|
-
return `${prefix}${dots}`;
|
|
257
|
-
return `${prefix}../../${dots}`;
|
|
258
|
-
});
|
|
259
|
-
const rewritePackageImports = (code, outputPath, mode) => {
|
|
260
|
-
let result2 = code;
|
|
261
|
-
for (const [bareImport, paths] of packageImportRewrites) {
|
|
262
|
-
const targetPath = mode === "server" ? paths.server : paths.client;
|
|
263
|
-
let rel = relative(dirname(outputPath), targetPath).replace(/\\/g, "/");
|
|
264
|
-
if (!rel.startsWith("."))
|
|
265
|
-
rel = `./${rel}`;
|
|
266
|
-
result2 = result2.replaceAll(bareImport, rel);
|
|
267
|
-
}
|
|
268
|
-
return result2;
|
|
269
|
-
};
|
|
270
|
-
await mkdir(dirname(clientOutputPath), { recursive: true });
|
|
271
|
-
await mkdir(dirname(serverOutputPath), { recursive: true });
|
|
272
|
-
await write(clientOutputPath, rewritePackageImports(adjustImports(clientCode), clientOutputPath, "client"));
|
|
273
|
-
await write(serverOutputPath, rewritePackageImports(adjustImports(serverCode), serverOutputPath, "server"));
|
|
274
|
-
const result = {
|
|
275
|
-
clientPath: clientOutputPath,
|
|
276
|
-
cssCodes: allCss,
|
|
277
|
-
cssPaths: cssOutputPaths,
|
|
278
|
-
hmrId,
|
|
279
|
-
serverPath: serverOutputPath,
|
|
280
|
-
tsHelperPaths: [
|
|
281
|
-
...helperModulePaths.map((helper) => resolve(dirname(sourceFilePath), helper.endsWith(".ts") ? helper : `${helper}.ts`)),
|
|
282
|
-
...childBuildResults.flatMap((child) => child.tsHelperPaths)
|
|
283
|
-
]
|
|
284
|
-
};
|
|
285
|
-
cacheMap.set(sourceFilePath, result);
|
|
286
|
-
persistentBuildCache.set(sourceFilePath, result);
|
|
287
|
-
return result;
|
|
288
|
-
};
|
|
289
|
-
var compileVue = async (entryPoints, vueRootDir, isDev = false, stylePreprocessors) => {
|
|
290
|
-
const compiler = await import("@vue/compiler-sfc");
|
|
291
|
-
const generatedDir = join(vueRootDir, "generated");
|
|
292
|
-
const clientOutputDir = join(generatedDir, "client");
|
|
293
|
-
const indexOutputDir = join(generatedDir, "indexes");
|
|
294
|
-
const serverOutputDir = join(generatedDir, "server");
|
|
295
|
-
const cssOutputDir = join(generatedDir, "compiled");
|
|
296
|
-
await Promise.all([
|
|
297
|
-
mkdir(clientOutputDir, { recursive: true }),
|
|
298
|
-
mkdir(indexOutputDir, { recursive: true }),
|
|
299
|
-
mkdir(serverOutputDir, { recursive: true }),
|
|
300
|
-
mkdir(cssOutputDir, { recursive: true })
|
|
301
|
-
]);
|
|
302
|
-
const buildCache = new Map;
|
|
303
|
-
const allTsHelperPaths = new Set;
|
|
304
|
-
const compiledPages = await Promise.all(entryPoints.map(async (entryPath) => {
|
|
305
|
-
const result = await compileVueFile(resolve(entryPath), {
|
|
306
|
-
client: clientOutputDir,
|
|
307
|
-
css: cssOutputDir,
|
|
308
|
-
server: serverOutputDir
|
|
309
|
-
}, buildCache, true, vueRootDir, compiler, stylePreprocessors);
|
|
310
|
-
result.tsHelperPaths.forEach((path) => allTsHelperPaths.add(path));
|
|
311
|
-
const entryBaseName = basename(entryPath, ".vue");
|
|
312
|
-
const indexOutputFile = join(indexOutputDir, `${entryBaseName}.js`);
|
|
313
|
-
const clientOutputFile = join(clientOutputDir, relative(vueRootDir, entryPath).replace(/\\/g, "/").replace(/\.vue$/, ".js"));
|
|
314
|
-
await mkdir(dirname(indexOutputFile), { recursive: true });
|
|
315
|
-
const vueHmrImports = isDev ? [
|
|
316
|
-
`window.__HMR_FRAMEWORK__ = "vue";`,
|
|
317
|
-
`import "${hmrClientPath}";`
|
|
318
|
-
] : [];
|
|
319
|
-
await write(indexOutputFile, [
|
|
320
|
-
...vueHmrImports,
|
|
321
|
-
`import Comp from "${relative(dirname(indexOutputFile), clientOutputFile).replace(/\\/g, "/")}";`,
|
|
322
|
-
'import { createSSRApp, createApp } from "vue";',
|
|
323
|
-
"",
|
|
324
|
-
"// HMR State Preservation: Check for preserved state from HMR",
|
|
325
|
-
'let preservedState = (typeof window !== "undefined" && window.__HMR_PRESERVED_STATE__) ? window.__HMR_PRESERVED_STATE__ : {};',
|
|
326
|
-
"",
|
|
327
|
-
"// Fallback: check sessionStorage if window state is empty (only during active HMR, not full page refresh)",
|
|
328
|
-
'if (typeof window !== "undefined" && Object.keys(preservedState).length === 0 && sessionStorage.getItem("__HMR_ACTIVE__")) {',
|
|
329
|
-
" try {",
|
|
330
|
-
' const stored = sessionStorage.getItem("__VUE_HMR_STATE__");',
|
|
331
|
-
" if (stored) {",
|
|
332
|
-
" preservedState = JSON.parse(stored);",
|
|
333
|
-
' sessionStorage.removeItem("__VUE_HMR_STATE__");',
|
|
334
|
-
" }",
|
|
335
|
-
" } catch (e) {}",
|
|
336
|
-
"}",
|
|
337
|
-
"// Clean up stale HMR state on full page refresh",
|
|
338
|
-
'if (typeof window !== "undefined" && !sessionStorage.getItem("__HMR_ACTIVE__")) {',
|
|
339
|
-
' sessionStorage.removeItem("__VUE_HMR_STATE__");',
|
|
340
|
-
"}",
|
|
341
|
-
"",
|
|
342
|
-
"const initialProps = window.__INITIAL_PROPS__ ?? {};",
|
|
343
|
-
"// Only merge preserved state keys that match declared props (avoids passing refs/components as attributes)",
|
|
344
|
-
"const mergedProps = { ...initialProps };",
|
|
345
|
-
"Object.keys(preservedState).forEach(function(key) {",
|
|
346
|
-
" if (key in initialProps) {",
|
|
347
|
-
" mergedProps[key] = preservedState[key];",
|
|
348
|
-
" }",
|
|
349
|
-
"});",
|
|
350
|
-
"",
|
|
351
|
-
"// During HMR or after SSR dirty, use createApp (fresh mount) to avoid hydration mismatch with stale DOM",
|
|
352
|
-
'const isHMR = typeof window !== "undefined" && sessionStorage.getItem("__HMR_ACTIVE__");',
|
|
353
|
-
'const isSsrDirty = typeof window !== "undefined" && window.__SSR_DIRTY__;',
|
|
354
|
-
'const shouldHydrate = typeof window === "undefined" ? false : !(isHMR || isSsrDirty);',
|
|
355
|
-
"const app = shouldHydrate ? createSSRApp(Comp, mergedProps) : createApp(Comp, mergedProps);",
|
|
356
|
-
'app.mount("#root");',
|
|
357
|
-
"",
|
|
358
|
-
"// Store app instance for HMR - used for manual component updates",
|
|
359
|
-
'if (typeof window !== "undefined") {',
|
|
360
|
-
" window.__VUE_APP__ = app;",
|
|
361
|
-
"}",
|
|
362
|
-
"",
|
|
363
|
-
"// Post-mount: Apply preserved state to reactive refs in component tree",
|
|
364
|
-
"// This restores state that lives in refs (like count) rather than props",
|
|
365
|
-
'if (typeof window !== "undefined" && Object.keys(preservedState).length > 0) {',
|
|
366
|
-
" requestAnimationFrame(function() {",
|
|
367
|
-
" if (window.__VUE_APP__ && window.__VUE_APP__._instance) {",
|
|
368
|
-
" applyPreservedState(window.__VUE_APP__._instance, preservedState);",
|
|
369
|
-
" }",
|
|
370
|
-
" });",
|
|
371
|
-
"}",
|
|
372
|
-
"",
|
|
373
|
-
"function applyPreservedState(instance, state) {",
|
|
374
|
-
" // Apply to root component setupState",
|
|
375
|
-
" if (instance.setupState) {",
|
|
376
|
-
" Object.keys(state).forEach(function(key) {",
|
|
377
|
-
" const ref = instance.setupState[key];",
|
|
378
|
-
' if (ref && typeof ref === "object" && "value" in ref) {',
|
|
379
|
-
" ref.value = state[key];",
|
|
380
|
-
" }",
|
|
381
|
-
" });",
|
|
382
|
-
" }",
|
|
383
|
-
" // Also apply to child components",
|
|
384
|
-
" if (instance.subTree) {",
|
|
385
|
-
" walkAndApply(instance.subTree, state);",
|
|
386
|
-
" }",
|
|
387
|
-
"}",
|
|
388
|
-
"",
|
|
389
|
-
"function walkAndApply(vnode, state) {",
|
|
390
|
-
" if (!vnode) return;",
|
|
391
|
-
" if (vnode.component && vnode.component.setupState) {",
|
|
392
|
-
" Object.keys(state).forEach(function(key) {",
|
|
393
|
-
" const ref = vnode.component.setupState[key];",
|
|
394
|
-
' if (ref && typeof ref === "object" && "value" in ref) {',
|
|
395
|
-
" ref.value = state[key];",
|
|
396
|
-
" }",
|
|
397
|
-
" });",
|
|
398
|
-
" }",
|
|
399
|
-
" if (vnode.children && Array.isArray(vnode.children)) {",
|
|
400
|
-
" vnode.children.forEach(function(child) { walkAndApply(child, state); });",
|
|
401
|
-
" }",
|
|
402
|
-
" if (vnode.component && vnode.component.subTree) {",
|
|
403
|
-
" walkAndApply(vnode.component.subTree, state);",
|
|
404
|
-
" }",
|
|
405
|
-
"}",
|
|
406
|
-
"",
|
|
407
|
-
"// Clear preserved state after applying",
|
|
408
|
-
'if (typeof window !== "undefined") {',
|
|
409
|
-
" window.__ABS_SLOT_HYDRATION_PENDING__ = shouldHydrate;",
|
|
410
|
-
" var releaseStreamingSlots = function() {",
|
|
411
|
-
" window.__ABS_SLOT_HYDRATION_PENDING__ = false;",
|
|
412
|
-
' if (typeof window.__ABS_SLOT_FLUSH__ === "function") {',
|
|
413
|
-
" window.__ABS_SLOT_FLUSH__();",
|
|
414
|
-
" }",
|
|
415
|
-
" };",
|
|
416
|
-
' if (shouldHydrate && typeof requestAnimationFrame === "function") {',
|
|
417
|
-
" requestAnimationFrame(function() {",
|
|
418
|
-
" requestAnimationFrame(releaseStreamingSlots);",
|
|
419
|
-
" });",
|
|
420
|
-
' } else if (typeof window.__ABS_SLOT_FLUSH__ === "function") {',
|
|
421
|
-
" window.__ABS_SLOT_FLUSH__();",
|
|
422
|
-
' } else if (typeof setTimeout === "function") {',
|
|
423
|
-
" setTimeout(releaseStreamingSlots, 0);",
|
|
424
|
-
" }",
|
|
425
|
-
"}",
|
|
426
|
-
'if (typeof window !== "undefined") {',
|
|
427
|
-
" window.__HMR_PRESERVED_STATE__ = undefined;",
|
|
428
|
-
"}"
|
|
429
|
-
].join(`
|
|
430
|
-
`));
|
|
431
|
-
return {
|
|
432
|
-
clientPath: clientOutputFile,
|
|
433
|
-
cssPaths: result.cssPaths,
|
|
434
|
-
indexPath: indexOutputFile,
|
|
435
|
-
serverPath: result.serverPath
|
|
436
|
-
};
|
|
437
|
-
}));
|
|
438
|
-
await Promise.all(Array.from(allTsHelperPaths).map(async (tsPath) => {
|
|
439
|
-
const sourceCode = await file(tsPath).text();
|
|
440
|
-
const transpiledCode = transpiler.transformSync(sourceCode);
|
|
441
|
-
const relativeJsPath = relative(vueRootDir, tsPath).replace(/\.ts$/, ".js");
|
|
442
|
-
const outClientPath = join(clientOutputDir, relativeJsPath);
|
|
443
|
-
const outServerPath = join(serverOutputDir, relativeJsPath);
|
|
444
|
-
await mkdir(dirname(outClientPath), { recursive: true });
|
|
445
|
-
await mkdir(dirname(outServerPath), { recursive: true });
|
|
446
|
-
await write(outClientPath, transpiledCode);
|
|
447
|
-
await write(outServerPath, transpiledCode);
|
|
448
|
-
}));
|
|
449
|
-
return {
|
|
450
|
-
hmrMetadata: new Map(vueHmrMetadata),
|
|
451
|
-
vueClientPaths: compiledPages.map((result) => result.clientPath),
|
|
452
|
-
vueCssPaths: compiledPages.flatMap((result) => result.cssPaths),
|
|
453
|
-
vueIndexPaths: compiledPages.map((result) => result.indexPath),
|
|
454
|
-
vueServerPaths: compiledPages.map((result) => result.serverPath)
|
|
455
|
-
};
|
|
456
|
-
};
|
|
457
|
-
export {
|
|
458
|
-
vueHmrMetadata,
|
|
459
|
-
generateVueHmrId,
|
|
460
|
-
detectVueChangeType,
|
|
461
|
-
compileVue,
|
|
462
|
-
clearVueHmrCaches
|
|
463
|
-
};
|
|
464
|
-
|
|
465
|
-
//# debugId=09DC66352653B6F864756E2164756E21
|
|
466
|
-
//# sourceMappingURL=chunk-5f67rsed.js.map
|
|
@@ -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 {\n\tbasename,\n\tdirname,\n\tisAbsolute,\n\tjoin,\n\trelative,\n\tresolve\n} 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 {\n\taddStyleImporter,\n\tcompileStyleSource,\n\tisStylePath\n} 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 (\n\t\t\tsourceDir &&\n\t\t\t(filePath.startsWith('./') || filePath.startsWith('../'))\n\t\t) {\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('.') && !path.endsWith('.vue') && !isStylePath(path)\n\t);\n\n\t// Record JS → CSS-module imports for HMR dep tracking. When a Vue\n\t// component imports a `.module.scss`, an edit to that style file\n\t// has to invalidate the importing component's bundle so the new\n\t// hashed class names land in the served output.\n\tconst stylePathsImported = importPaths\n\t\t.filter(\n\t\t\t(path) =>\n\t\t\t\t(path.startsWith('.') || isAbsolute(path)) && isStylePath(path)\n\t\t)\n\t\t.map((path) =>\n\t\t\tisAbsolute(path) ? path : resolve(dirname(sourceFilePath), path)\n\t\t);\n\tfor (const stylePath of stylePathsImported) {\n\t\taddStyleImporter(sourceFilePath, stylePath);\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": "09DC66352653B6F864756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|