@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-mbazhahf.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
// src/build/resolvePackageImport.ts
|
|
3
|
-
import { resolve, join } from "path";
|
|
4
|
-
import { existsSync, readFileSync } from "fs";
|
|
5
|
-
var resolveExportPath = (entry, conditions) => {
|
|
6
|
-
if (typeof entry === "string")
|
|
7
|
-
return entry;
|
|
8
|
-
if (!entry || typeof entry !== "object")
|
|
9
|
-
return null;
|
|
10
|
-
for (const condition of conditions) {
|
|
11
|
-
const target = Reflect.get(entry, condition);
|
|
12
|
-
if (typeof target === "string") {
|
|
13
|
-
return target;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return null;
|
|
17
|
-
};
|
|
18
|
-
var resolvePackageImport = (specifier, conditions = ["import"]) => {
|
|
19
|
-
if (specifier.startsWith(".") || specifier.startsWith("/"))
|
|
20
|
-
return null;
|
|
21
|
-
const parts = specifier.split("/");
|
|
22
|
-
const isScoped = specifier.startsWith("@");
|
|
23
|
-
const packageName = isScoped ? `${parts[0]}/${parts[1]}` : parts[0];
|
|
24
|
-
const subpath = isScoped ? parts.slice(2).join("/") : parts.slice(1).join("/");
|
|
25
|
-
const exportKey = subpath ? `./${subpath}` : ".";
|
|
26
|
-
const currentPackageJsonPath = resolve(process.cwd(), "package.json");
|
|
27
|
-
const currentPackageJson = existsSync(currentPackageJsonPath) ? JSON.parse(readFileSync(currentPackageJsonPath, "utf-8")) : null;
|
|
28
|
-
const currentPackageDir = currentPackageJson?.name === packageName ? process.cwd() : null;
|
|
29
|
-
const packageDir = currentPackageDir ?? resolve(process.cwd(), "node_modules", packageName ?? "");
|
|
30
|
-
const packageJsonPath = join(packageDir, "package.json");
|
|
31
|
-
if (!existsSync(packageJsonPath))
|
|
32
|
-
return null;
|
|
33
|
-
try {
|
|
34
|
-
const packageJson = currentPackageDir && currentPackageJson ? currentPackageJson : JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
35
|
-
const { exports } = packageJson;
|
|
36
|
-
if (!exports)
|
|
37
|
-
return null;
|
|
38
|
-
const entry = exports[exportKey];
|
|
39
|
-
if (!entry)
|
|
40
|
-
return null;
|
|
41
|
-
const importPath = resolveExportPath(entry, conditions);
|
|
42
|
-
if (!importPath)
|
|
43
|
-
return null;
|
|
44
|
-
if (currentPackageDir && importPath.startsWith("./dist/")) {
|
|
45
|
-
const sourceCandidate = resolve(packageDir, importPath.replace(/^\.\/dist\//, "./src/"));
|
|
46
|
-
if (existsSync(sourceCandidate)) {
|
|
47
|
-
return sourceCandidate;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const resolved = resolve(packageDir, importPath);
|
|
51
|
-
return existsSync(resolved) ? resolved : null;
|
|
52
|
-
} catch {
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
export { resolvePackageImport };
|
|
58
|
-
|
|
59
|
-
//# debugId=A916F1CE5206C7E864756E2164756E21
|
|
60
|
-
//# sourceMappingURL=chunk-mbazhahf.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/build/resolvePackageImport.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { resolve, join } from 'node:path';\nimport { existsSync, readFileSync } from 'node:fs';\n\n/**\n * Resolve a bare module import (e.g. \"@absolutejs/absolute/svelte/components/Image.svelte\")\n * to an absolute file path by reading the package's exports map in package.json.\n *\n * Returns the resolved absolute path, or null if the import can't be resolved.\n */\ntype ExportConditions = 'browser' | 'import';\n\nconst resolveExportPath = (\n\tentry: unknown,\n\tconditions: ExportConditions[]\n) => {\n\tif (typeof entry === 'string') return entry;\n\tif (!entry || typeof entry !== 'object') return null;\n\n\tfor (const condition of conditions) {\n\t\tconst target = Reflect.get(entry, condition);\n\t\tif (typeof target === 'string') {\n\t\t\treturn target;\n\t\t}\n\t}\n\n\treturn null;\n};\n\nexport const resolvePackageImport = (\n\tspecifier: string,\n\tconditions: ExportConditions[] = ['import']\n) => {\n\t// Only handle bare module imports (not relative or absolute paths)\n\tif (specifier.startsWith('.') || specifier.startsWith('/')) return null;\n\n\t// Split into package name and subpath\n\tconst parts = specifier.split('/');\n\tconst isScoped = specifier.startsWith('@');\n\tconst packageName = isScoped ? `${parts[0]}/${parts[1]}` : parts[0];\n\tconst subpath = isScoped ? parts.slice(2).join('/') : parts.slice(1).join('/');\n\tconst exportKey = subpath ? `./${subpath}` : '.';\n\n\tconst currentPackageJsonPath = resolve(process.cwd(), 'package.json');\n\tconst currentPackageJson = existsSync(currentPackageJsonPath)\n\t\t? JSON.parse(readFileSync(currentPackageJsonPath, 'utf-8'))\n\t\t: null;\n\tconst currentPackageDir =\n\t\tcurrentPackageJson?.name === packageName ? process.cwd() : null;\n\tconst packageDir =\n\t\tcurrentPackageDir ?? resolve(process.cwd(), 'node_modules', packageName ?? '');\n\tconst packageJsonPath = join(packageDir, 'package.json');\n\n\tif (!existsSync(packageJsonPath)) return null;\n\n\ttry {\n\t\tconst packageJson =\n\t\t\tcurrentPackageDir && currentPackageJson\n\t\t\t\t? currentPackageJson\n\t\t\t\t: JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n\t\tconst {exports} = packageJson;\n\n\t\tif (!exports) return null;\n\n\t\t// Try exact match first, then try without extension for .svelte/.vue files\n\t\tconst entry = exports[exportKey];\n\n\t\tif (!entry) return null;\n\n\t\tconst importPath = resolveExportPath(entry, conditions);\n\n\t\tif (!importPath) return null;\n\n\t\tif (currentPackageDir && importPath.startsWith('./dist/')) {\n\t\t\tconst sourceCandidate = resolve(\n\t\t\t\tpackageDir,\n\t\t\t\timportPath.replace(/^\\.\\/dist\\//, './src/')\n\t\t\t);\n\t\t\tif (existsSync(sourceCandidate)) {\n\t\t\t\treturn sourceCandidate;\n\t\t\t}\n\t\t}\n\n\t\tconst resolved = resolve(packageDir, importPath);\n\n\t\treturn existsSync(resolved) ? resolved : null;\n\t} catch {\n\t\treturn null;\n\t}\n};\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": ";;AAAA;AACA;AAUA,IAAM,oBAAoB,CACzB,OACA,eACI;AAAA,EACJ,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,IAAI,CAAC,SAAS,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAEhD,WAAW,aAAa,YAAY;AAAA,IACnC,MAAM,SAAS,QAAQ,IAAI,OAAO,SAAS;AAAA,IAC3C,IAAI,OAAO,WAAW,UAAU;AAAA,MAC/B,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,uBAAuB,CACnC,WACA,aAAiC,CAAC,QAAQ,MACtC;AAAA,EAEJ,IAAI,UAAU,WAAW,GAAG,KAAK,UAAU,WAAW,GAAG;AAAA,IAAG,OAAO;AAAA,EAGnE,MAAM,QAAQ,UAAU,MAAM,GAAG;AAAA,EACjC,MAAM,WAAW,UAAU,WAAW,GAAG;AAAA,EACzC,MAAM,cAAc,WAAW,GAAG,MAAM,MAAM,MAAM,OAAO,MAAM;AAAA,EACjE,MAAM,UAAU,WAAW,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,EAC7E,MAAM,YAAY,UAAU,KAAK,YAAY;AAAA,EAE7C,MAAM,yBAAyB,QAAQ,QAAQ,IAAI,GAAG,cAAc;AAAA,EACpE,MAAM,qBAAqB,WAAW,sBAAsB,IACzD,KAAK,MAAM,aAAa,wBAAwB,OAAO,CAAC,IACxD;AAAA,EACH,MAAM,oBACL,oBAAoB,SAAS,cAAc,QAAQ,IAAI,IAAI;AAAA,EAC5D,MAAM,aACL,qBAAqB,QAAQ,QAAQ,IAAI,GAAG,gBAAgB,eAAe,EAAE;AAAA,EAC9E,MAAM,kBAAkB,KAAK,YAAY,cAAc;AAAA,EAEvD,IAAI,CAAC,WAAW,eAAe;AAAA,IAAG,OAAO;AAAA,EAEzC,IAAI;AAAA,IACH,MAAM,cACL,qBAAqB,qBAClB,qBACA,KAAK,MAAM,aAAa,iBAAiB,OAAO,CAAC;AAAA,IACrD,QAAO,YAAW;AAAA,IAElB,IAAI,CAAC;AAAA,MAAS,OAAO;AAAA,IAGrB,MAAM,QAAQ,QAAQ;AAAA,IAEtB,IAAI,CAAC;AAAA,MAAO,OAAO;AAAA,IAEnB,MAAM,aAAa,kBAAkB,OAAO,UAAU;AAAA,IAEtD,IAAI,CAAC;AAAA,MAAY,OAAO;AAAA,IAExB,IAAI,qBAAqB,WAAW,WAAW,SAAS,GAAG;AAAA,MAC1D,MAAM,kBAAkB,QACvB,YACA,WAAW,QAAQ,eAAe,QAAQ,CAC3C;AAAA,MACA,IAAI,WAAW,eAAe,GAAG;AAAA,QAChC,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IAEA,MAAM,WAAW,QAAQ,YAAY,UAAU;AAAA,IAE/C,OAAO,WAAW,QAAQ,IAAI,WAAW;AAAA,IACxC,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;",
|
|
8
|
-
"debugId": "A916F1CE5206C7E864756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-mgfwq18r.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import {
|
|
3
|
-
devtoolsJson,
|
|
4
|
-
normalizeDevtoolsWorkspaceRoot,
|
|
5
|
-
resolveDevtoolsUuidCachePath
|
|
6
|
-
} from "./chunk-xx5b6b9m.js";
|
|
7
|
-
import"./chunk-bmgqm774.js";
|
|
8
|
-
export {
|
|
9
|
-
resolveDevtoolsUuidCachePath,
|
|
10
|
-
normalizeDevtoolsWorkspaceRoot,
|
|
11
|
-
devtoolsJson
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
//# debugId=1D1F01D69CD9200664756E2164756E21
|
|
15
|
-
//# sourceMappingURL=chunk-mgfwq18r.js.map
|
package/dist/chunk-mtgf69xn.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
// src/core/devRouteRegistrationCallsite.ts
|
|
3
|
-
import { AsyncLocalStorage } from "async_hooks";
|
|
4
|
-
import { Elysia } from "elysia";
|
|
5
|
-
var ROUTE_CALLSITE_STORAGE_KEY = Symbol.for("absolutejs.devRouteRegistrationCallsiteStorage");
|
|
6
|
-
var ROUTE_CALLSITE_PATCHED_KEY = Symbol.for("absolutejs.devRouteRegistrationCallsitePatched");
|
|
7
|
-
var ROUTE_METHOD_NAMES = [
|
|
8
|
-
"all",
|
|
9
|
-
"delete",
|
|
10
|
-
"get",
|
|
11
|
-
"head",
|
|
12
|
-
"options",
|
|
13
|
-
"patch",
|
|
14
|
-
"post",
|
|
15
|
-
"put"
|
|
16
|
-
];
|
|
17
|
-
var isObjectRecord = (value) => Boolean(value) && typeof value === "object";
|
|
18
|
-
var isAsyncLocalStorage = (value) => isObjectRecord(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
|
|
19
|
-
var isRouteMethod = (value) => typeof value === "function";
|
|
20
|
-
var getRouteCallsiteStorage = () => {
|
|
21
|
-
const value = Reflect.get(globalThis, ROUTE_CALLSITE_STORAGE_KEY);
|
|
22
|
-
if (value === null || typeof value === "undefined") {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
return isAsyncLocalStorage(value) ? value : undefined;
|
|
26
|
-
};
|
|
27
|
-
var ensureRouteCallsiteStorage = () => {
|
|
28
|
-
const existing = getRouteCallsiteStorage();
|
|
29
|
-
if (existing) {
|
|
30
|
-
return existing;
|
|
31
|
-
}
|
|
32
|
-
const storage = new AsyncLocalStorage;
|
|
33
|
-
Reflect.set(globalThis, ROUTE_CALLSITE_STORAGE_KEY, storage);
|
|
34
|
-
return storage;
|
|
35
|
-
};
|
|
36
|
-
var normalizeCallsitePath = (value) => value.replace(`${process.cwd()}/`, "").replace(process.cwd(), "").replace(/^\.\/+/, "");
|
|
37
|
-
var shouldIgnoreRouteCallsiteFrame = (frame) => frame.includes("/node_modules/") || frame.includes("/dist/") || frame.includes("/src/core/devRouteRegistrationCallsite.");
|
|
38
|
-
var getRouteCallsiteLocation = (frame) => frame.match(/\((\/[^)]+:\d+:\d+)\)$/)?.[1] ?? frame.match(/at (\/[^ ]+:\d+:\d+)$/)?.[1];
|
|
39
|
-
var extractRouteRegistrationCallsite = (stack) => {
|
|
40
|
-
const location = stack.split(`
|
|
41
|
-
`).slice(1).map((line) => line.trim()).filter((frame) => !shouldIgnoreRouteCallsiteFrame(frame)).map((frame) => getRouteCallsiteLocation(frame)).find((frameLocation) => frameLocation !== undefined);
|
|
42
|
-
return location ? normalizeCallsitePath(location) : undefined;
|
|
43
|
-
};
|
|
44
|
-
var captureRouteRegistrationCallsite = () => {
|
|
45
|
-
const { stack } = new Error;
|
|
46
|
-
if (!stack) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
return extractRouteRegistrationCallsite(stack);
|
|
50
|
-
};
|
|
51
|
-
var wrapRouteHandlerWithCallsite = (handler, callsite) => {
|
|
52
|
-
if (typeof handler !== "function" || !callsite) {
|
|
53
|
-
return handler;
|
|
54
|
-
}
|
|
55
|
-
const storage = ensureRouteCallsiteStorage();
|
|
56
|
-
const routeHandler = handler;
|
|
57
|
-
return function wrappedRouteHandler(...args) {
|
|
58
|
-
return storage.run({ callsite }, () => Reflect.apply(routeHandler, this, args));
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
var createPatchedRouteMethod = (originalMethod) => function patchedRouteMethod(path, handler, ...rest) {
|
|
62
|
-
const callsite = captureRouteRegistrationCallsite();
|
|
63
|
-
return Reflect.apply(originalMethod, this, [
|
|
64
|
-
path,
|
|
65
|
-
wrapRouteHandlerWithCallsite(handler, callsite),
|
|
66
|
-
...rest
|
|
67
|
-
]);
|
|
68
|
-
};
|
|
69
|
-
var getCurrentRouteRegistrationCallsite = () => getRouteCallsiteStorage()?.getStore()?.callsite;
|
|
70
|
-
var patchElysiaRouteRegistrationCallsites = () => {
|
|
71
|
-
if (false) {}
|
|
72
|
-
if (Reflect.get(globalThis, ROUTE_CALLSITE_PATCHED_KEY) === true) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
const { prototype } = Elysia;
|
|
76
|
-
ROUTE_METHOD_NAMES.forEach((methodName) => {
|
|
77
|
-
const originalMethod = Reflect.get(prototype, methodName);
|
|
78
|
-
if (!isRouteMethod(originalMethod))
|
|
79
|
-
return;
|
|
80
|
-
Reflect.set(prototype, methodName, createPatchedRouteMethod(originalMethod));
|
|
81
|
-
});
|
|
82
|
-
Reflect.set(globalThis, ROUTE_CALLSITE_PATCHED_KEY, true);
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
export { getCurrentRouteRegistrationCallsite, patchElysiaRouteRegistrationCallsites };
|
|
86
|
-
|
|
87
|
-
//# debugId=4B6B614F7C6043D164756E2164756E21
|
|
88
|
-
//# sourceMappingURL=chunk-mtgf69xn.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/core/devRouteRegistrationCallsite.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { AsyncLocalStorage } from 'node:async_hooks';\nimport { Elysia } from 'elysia';\n\ntype RouteCallsiteStore = { callsite?: string };\ntype RouteCallsiteStorage = AsyncLocalStorage<RouteCallsiteStore>;\ntype RouteMethod = (this: unknown, ...args: unknown[]) => unknown;\n\nconst ROUTE_CALLSITE_STORAGE_KEY = Symbol.for(\n\t'absolutejs.devRouteRegistrationCallsiteStorage'\n);\nconst ROUTE_CALLSITE_PATCHED_KEY = Symbol.for(\n\t'absolutejs.devRouteRegistrationCallsitePatched'\n);\n\nconst ROUTE_METHOD_NAMES = [\n\t'all',\n\t'delete',\n\t'get',\n\t'head',\n\t'options',\n\t'patch',\n\t'post',\n\t'put'\n] as const;\n\nconst isObjectRecord = (value: unknown): value is Record<string, unknown> =>\n\tBoolean(value) && typeof value === 'object';\n\nconst isAsyncLocalStorage = (value: unknown): value is RouteCallsiteStorage =>\n\tisObjectRecord(value) &&\n\t'getStore' in value &&\n\ttypeof value.getStore === 'function' &&\n\t'run' in value &&\n\ttypeof value.run === 'function';\n\nconst isRouteMethod = (value: unknown): value is RouteMethod =>\n\ttypeof value === 'function';\n\nconst getRouteCallsiteStorage = () => {\n\tconst value = Reflect.get(globalThis, ROUTE_CALLSITE_STORAGE_KEY);\n\tif (value === null || typeof value === 'undefined') {\n\t\treturn undefined;\n\t}\n\n\treturn isAsyncLocalStorage(value) ? value : undefined;\n};\n\nconst ensureRouteCallsiteStorage = () => {\n\tconst existing = getRouteCallsiteStorage();\n\tif (existing) {\n\t\treturn existing;\n\t}\n\n\tconst storage = new AsyncLocalStorage<RouteCallsiteStore>();\n\tReflect.set(globalThis, ROUTE_CALLSITE_STORAGE_KEY, storage);\n\n\treturn storage;\n};\n\nconst normalizeCallsitePath = (value: string) =>\n\tvalue\n\t\t.replace(`${process.cwd()}/`, '')\n\t\t.replace(process.cwd(), '')\n\t\t.replace(/^\\.\\/+/, '');\n\nconst shouldIgnoreRouteCallsiteFrame = (frame: string) =>\n\tframe.includes('/node_modules/') ||\n\tframe.includes('/dist/') ||\n\tframe.includes('/src/core/devRouteRegistrationCallsite.');\n\nconst getRouteCallsiteLocation = (frame: string) =>\n\tframe.match(/\\((\\/[^)]+:\\d+:\\d+)\\)$/)?.[1] ??\n\tframe.match(/at (\\/[^ ]+:\\d+:\\d+)$/)?.[1];\n\nconst extractRouteRegistrationCallsite = (stack: string) => {\n\tconst location = stack\n\t\t.split('\\n')\n\t\t.slice(1)\n\t\t.map((line) => line.trim())\n\t\t.filter((frame) => !shouldIgnoreRouteCallsiteFrame(frame))\n\t\t.map((frame) => getRouteCallsiteLocation(frame))\n\t\t.find((frameLocation) => frameLocation !== undefined);\n\n\treturn location ? normalizeCallsitePath(location) : undefined;\n};\n\nconst captureRouteRegistrationCallsite = () => {\n\tconst { stack } = new Error();\n\tif (!stack) {\n\t\treturn undefined;\n\t}\n\n\treturn extractRouteRegistrationCallsite(stack);\n};\n\nconst wrapRouteHandlerWithCallsite = (handler: unknown, callsite?: string) => {\n\tif (typeof handler !== 'function' || !callsite) {\n\t\treturn handler;\n\t}\n\n\tconst storage = ensureRouteCallsiteStorage();\n\tconst routeHandler = handler;\n\n\treturn function wrappedRouteHandler(this: unknown, ...args: unknown[]) {\n\t\treturn storage.run({ callsite }, () =>\n\t\t\tReflect.apply(routeHandler, this, args)\n\t\t);\n\t};\n};\n\nconst createPatchedRouteMethod = (originalMethod: RouteMethod) =>\n\tfunction patchedRouteMethod(\n\t\tthis: unknown,\n\t\tpath: unknown,\n\t\thandler: unknown,\n\t\t...rest: unknown[]\n\t) {\n\t\tconst callsite = captureRouteRegistrationCallsite();\n\n\t\treturn Reflect.apply(originalMethod, this, [\n\t\t\tpath,\n\t\t\twrapRouteHandlerWithCallsite(handler, callsite),\n\t\t\t...rest\n\t\t]);\n\t};\n\nexport const getCurrentRouteRegistrationCallsite = () =>\n\tgetRouteCallsiteStorage()?.getStore()?.callsite;\nexport const patchElysiaRouteRegistrationCallsites = () => {\n\tif (process.env.NODE_ENV === 'production') {\n\t\treturn;\n\t}\n\n\tif (Reflect.get(globalThis, ROUTE_CALLSITE_PATCHED_KEY) === true) {\n\t\treturn;\n\t}\n\n\tconst { prototype } = Elysia;\n\tROUTE_METHOD_NAMES.forEach((methodName) => {\n\t\tconst originalMethod = Reflect.get(prototype, methodName);\n\t\tif (!isRouteMethod(originalMethod)) return;\n\t\tReflect.set(\n\t\t\tprototype,\n\t\t\tmethodName,\n\t\t\tcreatePatchedRouteMethod(originalMethod)\n\t\t);\n\t});\n\n\tReflect.set(globalThis, ROUTE_CALLSITE_PATCHED_KEY, true);\n};\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "4B6B614F7C6043D164756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-mtxzyxpg.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import {
|
|
3
|
-
normalizePath
|
|
4
|
-
} from "./chunk-hyjs4bqs.js";
|
|
5
|
-
import {
|
|
6
|
-
logWarn
|
|
7
|
-
} from "./chunk-cbkrwmvh.js";
|
|
8
|
-
import {
|
|
9
|
-
toPascal
|
|
10
|
-
} from "./chunk-p5504p14.js";
|
|
11
|
-
import {
|
|
12
|
-
UNFOUND_INDEX
|
|
13
|
-
} from "./chunk-qh75agse.js";
|
|
14
|
-
import {
|
|
15
|
-
getIslandManifestKey
|
|
16
|
-
} from "./chunk-3yjzpcne.js";
|
|
17
|
-
|
|
18
|
-
// src/build/generateManifest.ts
|
|
19
|
-
import { extname } from "path";
|
|
20
|
-
var getManifestKey = (folder, pascalName, isClientComponent, isReact, isVue, isSvelte, isAngular) => {
|
|
21
|
-
if (folder === "indexes")
|
|
22
|
-
return `${pascalName}Index`;
|
|
23
|
-
if (isClientComponent)
|
|
24
|
-
return `${pascalName}Client`;
|
|
25
|
-
if (folder !== "pages")
|
|
26
|
-
return pascalName;
|
|
27
|
-
if (isReact)
|
|
28
|
-
return `${pascalName}Page`;
|
|
29
|
-
if (isVue || isSvelte || isAngular)
|
|
30
|
-
return pascalName;
|
|
31
|
-
return `${pascalName}Page`;
|
|
32
|
-
};
|
|
33
|
-
var getCssKey = (pascalName, segments) => {
|
|
34
|
-
const isFromVue = segments.some((seg) => seg === "vue");
|
|
35
|
-
if (isFromVue && segments.includes("css"))
|
|
36
|
-
return `${pascalName}CompiledCSS`;
|
|
37
|
-
const isFromReact = segments.some((seg) => seg === "react");
|
|
38
|
-
const isFromSvelte = segments.some((seg) => seg === "svelte");
|
|
39
|
-
const isFromAngular = segments.some((seg) => seg === "angular");
|
|
40
|
-
if (isFromReact || isFromVue || isFromSvelte || isFromAngular)
|
|
41
|
-
return `${pascalName}BundledCSS`;
|
|
42
|
-
return `${pascalName}CSS`;
|
|
43
|
-
};
|
|
44
|
-
var getArtifactBaseName = (fileName, hash) => {
|
|
45
|
-
const ext = extname(fileName);
|
|
46
|
-
const stem = ext ? fileName.slice(0, -ext.length) : fileName;
|
|
47
|
-
if (!hash)
|
|
48
|
-
return stem;
|
|
49
|
-
const hashSuffix = `.${hash}`;
|
|
50
|
-
if (stem.endsWith(hashSuffix))
|
|
51
|
-
return stem.slice(0, -hashSuffix.length);
|
|
52
|
-
return stem;
|
|
53
|
-
};
|
|
54
|
-
var generateManifest = (outputs, buildPath) => outputs.reduce((manifest, artifact) => {
|
|
55
|
-
const normalizedArtifactPath = normalizePath(artifact.path);
|
|
56
|
-
const normalizedBuildPath = normalizePath(buildPath);
|
|
57
|
-
let relative = normalizedArtifactPath.startsWith(normalizedBuildPath) ? normalizedArtifactPath.slice(normalizedBuildPath.length) : normalizedArtifactPath;
|
|
58
|
-
relative = relative.replace(/^\/+/, "");
|
|
59
|
-
const segments = relative.split("/");
|
|
60
|
-
const fileWithHash = segments.pop();
|
|
61
|
-
if (!fileWithHash)
|
|
62
|
-
return manifest;
|
|
63
|
-
const baseName = getArtifactBaseName(fileWithHash, artifact.hash);
|
|
64
|
-
if (!baseName)
|
|
65
|
-
return manifest;
|
|
66
|
-
const pascalName = toPascal(baseName);
|
|
67
|
-
const ext = extname(fileWithHash);
|
|
68
|
-
const islandIndex = segments.findIndex((seg) => seg === "islands");
|
|
69
|
-
if (ext === ".css") {
|
|
70
|
-
if (segments.includes("server"))
|
|
71
|
-
return manifest;
|
|
72
|
-
const cssKey = getCssKey(pascalName, segments);
|
|
73
|
-
if (manifest[cssKey] && manifest[cssKey] !== `/${relative}`)
|
|
74
|
-
logWarn(`Duplicate manifest key "${cssKey}" \u2014 "${manifest[cssKey]}" will be overwritten by "/${relative}". Use unique page names across frameworks.`);
|
|
75
|
-
manifest[cssKey] = `/${relative}`;
|
|
76
|
-
return manifest;
|
|
77
|
-
}
|
|
78
|
-
const frameworkSegment = islandIndex > UNFOUND_INDEX ? segments[islandIndex + 1] : undefined;
|
|
79
|
-
if (frameworkSegment === "react" || frameworkSegment === "svelte" || frameworkSegment === "vue" || frameworkSegment === "angular") {
|
|
80
|
-
const manifestKey2 = getIslandManifestKey(frameworkSegment, pascalName);
|
|
81
|
-
manifest[manifestKey2] = `/${relative}`;
|
|
82
|
-
return manifest;
|
|
83
|
-
}
|
|
84
|
-
const idx = segments.findIndex((seg) => seg === "indexes" || seg === "pages" || seg === "client");
|
|
85
|
-
const folder = idx > UNFOUND_INDEX ? segments[idx] : segments[0];
|
|
86
|
-
const isReact = segments.some((seg) => seg === "react");
|
|
87
|
-
const isVue = segments.some((seg) => seg === "vue");
|
|
88
|
-
const isSvelte = segments.some((seg) => seg === "svelte");
|
|
89
|
-
const isAngular = segments.some((seg) => seg === "angular");
|
|
90
|
-
const isClientComponent = segments.includes("client");
|
|
91
|
-
const manifestKey = getManifestKey(folder, pascalName, isClientComponent, isReact, isVue, isSvelte, isAngular);
|
|
92
|
-
if (manifest[manifestKey] && manifest[manifestKey] !== `/${relative}`) {
|
|
93
|
-
logWarn(`Duplicate manifest key "${manifestKey}" \u2014 "${manifest[manifestKey]}" will be overwritten by "/${relative}". Use unique page names across frameworks.`);
|
|
94
|
-
}
|
|
95
|
-
manifest[manifestKey] = `/${relative}`;
|
|
96
|
-
return manifest;
|
|
97
|
-
}, {});
|
|
98
|
-
|
|
99
|
-
export { generateManifest };
|
|
100
|
-
|
|
101
|
-
//# debugId=0A117CCD4566069A64756E2164756E21
|
|
102
|
-
//# sourceMappingURL=chunk-mtxzyxpg.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/build/generateManifest.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { extname } from 'node:path';\nimport type { BuildArtifact } from 'bun';\nimport { UNFOUND_INDEX } from '../constants';\nimport { getIslandManifestKey } from '../core/islandManifest';\nimport { logWarn } from '../utils/logger';\nimport { normalizePath } from '../utils/normalizePath';\nimport { toPascal } from '../utils/stringModifiers';\n\nconst getManifestKey = (\n\tfolder: string | undefined,\n\tpascalName: string,\n\tisClientComponent: boolean,\n\tisReact: boolean,\n\tisVue: boolean,\n\tisSvelte: boolean,\n\tisAngular: boolean\n) => {\n\tif (folder === 'indexes') return `${pascalName}Index`;\n\tif (isClientComponent) return `${pascalName}Client`;\n\tif (folder !== 'pages') return pascalName;\n\n\t// Only add \"Page\" suffix for React pages\n\t// Vue and Svelte pages use their base PascalCase name\n\tif (isReact) return `${pascalName}Page`;\n\tif (isVue || isSvelte || isAngular) return pascalName;\n\n\t// Default behavior for other frameworks\n\treturn `${pascalName}Page`;\n};\n\nconst getCssKey = (pascalName: string, segments: string[]) => {\n\tconst isFromVue = segments.some((seg) => seg === 'vue');\n\tif (isFromVue && segments.includes('css'))\n\t\treturn `${pascalName}CompiledCSS`;\n\n\tconst isFromReact = segments.some((seg) => seg === 'react');\n\tconst isFromSvelte = segments.some((seg) => seg === 'svelte');\n\tconst isFromAngular = segments.some((seg) => seg === 'angular');\n\tif (isFromReact || isFromVue || isFromSvelte || isFromAngular)\n\t\treturn `${pascalName}BundledCSS`;\n\n\treturn `${pascalName}CSS`;\n};\n\nconst getArtifactBaseName = (fileName: string, hash: string | null) => {\n\tconst ext = extname(fileName);\n\tconst stem = ext ? fileName.slice(0, -ext.length) : fileName;\n\tif (!hash) return stem;\n\n\tconst hashSuffix = `.${hash}`;\n\tif (stem.endsWith(hashSuffix)) return stem.slice(0, -hashSuffix.length);\n\n\treturn stem;\n};\n\nexport const generateManifest = (outputs: BuildArtifact[], buildPath: string) =>\n\toutputs.reduce<Record<string, string>>((manifest, artifact) => {\n\t\t// Normalize both paths for consistent comparison across platforms\n\t\tconst normalizedArtifactPath = normalizePath(artifact.path);\n\t\tconst normalizedBuildPath = normalizePath(buildPath);\n\n\t\tlet relative = normalizedArtifactPath.startsWith(normalizedBuildPath)\n\t\t\t? normalizedArtifactPath.slice(normalizedBuildPath.length)\n\t\t\t: normalizedArtifactPath;\n\t\trelative = relative.replace(/^\\/+/, '');\n\n\t\tconst segments = relative.split('/');\n\t\tconst fileWithHash = segments.pop();\n\t\tif (!fileWithHash) return manifest;\n\n\t\tconst baseName = getArtifactBaseName(fileWithHash, artifact.hash);\n\t\tif (!baseName) return manifest;\n\n\t\tconst pascalName = toPascal(baseName);\n\t\tconst ext = extname(fileWithHash);\n\t\tconst islandIndex = segments.findIndex((seg) => seg === 'islands');\n\n\t\tif (ext === '.css') {\n\t\t\t// Server bundles auto-emit a sibling .css for any CSS imported by\n\t\t\t// the SSR entry (Vue scoped styles, etc.). It's never linked from\n\t\t\t// HTML — the indexes-pass CSS is — so skip it to avoid clobbering\n\t\t\t// the same `${Page}BundledCSS` key.\n\t\t\tif (segments.includes('server')) return manifest;\n\n\t\t\t// Distinguish CSS from different sources to avoid key collisions.\n\t\t\t// CSS co-emitted from a JS bundle (e.g. CSS Modules) lives under a\n\t\t\t// framework path like react/generated/indexes/, while global\n\t\t\t// stylesheets from the styles directory land directly in indexes/.\n\t\t\t// Vue compiled SFC styles live in assets/css/.\n\t\t\tconst cssKey = getCssKey(pascalName, segments);\n\n\t\t\tif (manifest[cssKey] && manifest[cssKey] !== `/${relative}`)\n\t\t\t\tlogWarn(\n\t\t\t\t\t`Duplicate manifest key \"${cssKey}\" — \"${manifest[cssKey]}\" will be overwritten by \"/${relative}\". Use unique page names across frameworks.`\n\t\t\t\t);\n\n\t\t\tmanifest[cssKey] = `/${relative}`;\n\n\t\t\treturn manifest;\n\t\t}\n\n\t\tconst frameworkSegment =\n\t\t\tislandIndex > UNFOUND_INDEX ? segments[islandIndex + 1] : undefined;\n\t\tif (\n\t\t\tframeworkSegment === 'react' ||\n\t\t\tframeworkSegment === 'svelte' ||\n\t\t\tframeworkSegment === 'vue' ||\n\t\t\tframeworkSegment === 'angular'\n\t\t) {\n\t\t\tconst manifestKey = getIslandManifestKey(\n\t\t\t\tframeworkSegment,\n\t\t\t\tpascalName\n\t\t\t);\n\t\t\tmanifest[manifestKey] = `/${relative}`;\n\n\t\t\treturn manifest;\n\t\t}\n\n\t\tconst idx = segments.findIndex(\n\t\t\t(seg) => seg === 'indexes' || seg === 'pages' || seg === 'client'\n\t\t);\n\t\tconst folder = idx > UNFOUND_INDEX ? segments[idx] : segments[0];\n\n\t\t// Detect framework from path segments\n\t\tconst isReact = segments.some((seg) => seg === 'react');\n\t\tconst isVue = segments.some((seg) => seg === 'vue');\n\t\tconst isSvelte = segments.some((seg) => seg === 'svelte');\n\t\tconst isAngular = segments.some((seg) => seg === 'angular');\n\n\t\t// Check if this is a client component (for official HMR)\n\t\tconst isClientComponent = segments.includes('client');\n\n\t\tconst manifestKey = getManifestKey(\n\t\t\tfolder,\n\t\t\tpascalName,\n\t\t\tisClientComponent,\n\t\t\tisReact,\n\t\t\tisVue,\n\t\t\tisSvelte,\n\t\t\tisAngular\n\t\t);\n\t\tif (manifest[manifestKey] && manifest[manifestKey] !== `/${relative}`) {\n\t\t\tlogWarn(\n\t\t\t\t`Duplicate manifest key \"${manifestKey}\" — \"${manifest[manifestKey]}\" will be overwritten by \"/${relative}\". Use unique page names across frameworks.`\n\t\t\t);\n\t\t}\n\t\tmanifest[manifestKey] = `/${relative}`;\n\n\t\treturn manifest;\n\t}, {});\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAQA,IAAM,iBAAiB,CACtB,QACA,YACA,mBACA,SACA,OACA,UACA,cACI;AAAA,EACJ,IAAI,WAAW;AAAA,IAAW,OAAO,GAAG;AAAA,EACpC,IAAI;AAAA,IAAmB,OAAO,GAAG;AAAA,EACjC,IAAI,WAAW;AAAA,IAAS,OAAO;AAAA,EAI/B,IAAI;AAAA,IAAS,OAAO,GAAG;AAAA,EACvB,IAAI,SAAS,YAAY;AAAA,IAAW,OAAO;AAAA,EAG3C,OAAO,GAAG;AAAA;AAGX,IAAM,YAAY,CAAC,YAAoB,aAAuB;AAAA,EAC7D,MAAM,YAAY,SAAS,KAAK,CAAC,QAAQ,QAAQ,KAAK;AAAA,EACtD,IAAI,aAAa,SAAS,SAAS,KAAK;AAAA,IACvC,OAAO,GAAG;AAAA,EAEX,MAAM,cAAc,SAAS,KAAK,CAAC,QAAQ,QAAQ,OAAO;AAAA,EAC1D,MAAM,eAAe,SAAS,KAAK,CAAC,QAAQ,QAAQ,QAAQ;AAAA,EAC5D,MAAM,gBAAgB,SAAS,KAAK,CAAC,QAAQ,QAAQ,SAAS;AAAA,EAC9D,IAAI,eAAe,aAAa,gBAAgB;AAAA,IAC/C,OAAO,GAAG;AAAA,EAEX,OAAO,GAAG;AAAA;AAGX,IAAM,sBAAsB,CAAC,UAAkB,SAAwB;AAAA,EACtE,MAAM,MAAM,QAAQ,QAAQ;AAAA,EAC5B,MAAM,OAAO,MAAM,SAAS,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI;AAAA,EACpD,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAElB,MAAM,aAAa,IAAI;AAAA,EACvB,IAAI,KAAK,SAAS,UAAU;AAAA,IAAG,OAAO,KAAK,MAAM,GAAG,CAAC,WAAW,MAAM;AAAA,EAEtE,OAAO;AAAA;AAGD,IAAM,mBAAmB,CAAC,SAA0B,cAC1D,QAAQ,OAA+B,CAAC,UAAU,aAAa;AAAA,EAE9D,MAAM,yBAAyB,cAAc,SAAS,IAAI;AAAA,EAC1D,MAAM,sBAAsB,cAAc,SAAS;AAAA,EAEnD,IAAI,WAAW,uBAAuB,WAAW,mBAAmB,IACjE,uBAAuB,MAAM,oBAAoB,MAAM,IACvD;AAAA,EACH,WAAW,SAAS,QAAQ,QAAQ,EAAE;AAAA,EAEtC,MAAM,WAAW,SAAS,MAAM,GAAG;AAAA,EACnC,MAAM,eAAe,SAAS,IAAI;AAAA,EAClC,IAAI,CAAC;AAAA,IAAc,OAAO;AAAA,EAE1B,MAAM,WAAW,oBAAoB,cAAc,SAAS,IAAI;AAAA,EAChE,IAAI,CAAC;AAAA,IAAU,OAAO;AAAA,EAEtB,MAAM,aAAa,SAAS,QAAQ;AAAA,EACpC,MAAM,MAAM,QAAQ,YAAY;AAAA,EAChC,MAAM,cAAc,SAAS,UAAU,CAAC,QAAQ,QAAQ,SAAS;AAAA,EAEjE,IAAI,QAAQ,QAAQ;AAAA,IAKnB,IAAI,SAAS,SAAS,QAAQ;AAAA,MAAG,OAAO;AAAA,IAOxC,MAAM,SAAS,UAAU,YAAY,QAAQ;AAAA,IAE7C,IAAI,SAAS,WAAW,SAAS,YAAY,IAAI;AAAA,MAChD,QACC,2BAA2B,mBAAa,SAAS,qCAAqC,qDACvF;AAAA,IAED,SAAS,UAAU,IAAI;AAAA,IAEvB,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,mBACL,cAAc,gBAAgB,SAAS,cAAc,KAAK;AAAA,EAC3D,IACC,qBAAqB,WACrB,qBAAqB,YACrB,qBAAqB,SACrB,qBAAqB,WACpB;AAAA,IACD,MAAM,eAAc,qBACnB,kBACA,UACD;AAAA,IACA,SAAS,gBAAe,IAAI;AAAA,IAE5B,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,MAAM,SAAS,UACpB,CAAC,QAAQ,QAAQ,aAAa,QAAQ,WAAW,QAAQ,QAC1D;AAAA,EACA,MAAM,SAAS,MAAM,gBAAgB,SAAS,OAAO,SAAS;AAAA,EAG9D,MAAM,UAAU,SAAS,KAAK,CAAC,QAAQ,QAAQ,OAAO;AAAA,EACtD,MAAM,QAAQ,SAAS,KAAK,CAAC,QAAQ,QAAQ,KAAK;AAAA,EAClD,MAAM,WAAW,SAAS,KAAK,CAAC,QAAQ,QAAQ,QAAQ;AAAA,EACxD,MAAM,YAAY,SAAS,KAAK,CAAC,QAAQ,QAAQ,SAAS;AAAA,EAG1D,MAAM,oBAAoB,SAAS,SAAS,QAAQ;AAAA,EAEpD,MAAM,cAAc,eACnB,QACA,YACA,mBACA,SACA,OACA,UACA,SACD;AAAA,EACA,IAAI,SAAS,gBAAgB,SAAS,iBAAiB,IAAI,YAAY;AAAA,IACtE,QACC,2BAA2B,wBAAkB,SAAS,0CAA0C,qDACjG;AAAA,EACD;AAAA,EACA,SAAS,eAAe,IAAI;AAAA,EAE5B,OAAO;AAAA,GACL,CAAC,CAAC;",
|
|
8
|
-
"debugId": "0A117CCD4566069A64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-nehhtthw.js
DELETED
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import"./chunk-bmgqm774.js";
|
|
3
|
-
|
|
4
|
-
// src/core/prerender.ts
|
|
5
|
-
import { mkdirSync, readFileSync } from "fs";
|
|
6
|
-
import { join } from "path";
|
|
7
|
-
var SERVER_OUTPUT_LIMIT = 4000;
|
|
8
|
-
var STARTUP_POLL_INTERVAL_MS = 100;
|
|
9
|
-
var DEFAULT_STARTUP_TIMEOUT_MS = 30000;
|
|
10
|
-
var PRERENDER_BYPASS_HEADER = "X-Absolute-Prerender-Bypass";
|
|
11
|
-
var routeToFilename = (route) => route === "/" ? "index.html" : `${route.slice(1).replace(/\//g, "-")}.html`;
|
|
12
|
-
var writeTimestamp = async (htmlPath) => {
|
|
13
|
-
const metaPath = htmlPath.replace(/\.html$/, ".meta");
|
|
14
|
-
await Bun.write(metaPath, String(Date.now()));
|
|
15
|
-
};
|
|
16
|
-
var readTimestamp = (htmlPath) => {
|
|
17
|
-
const metaPath = htmlPath.replace(/\.html$/, ".meta");
|
|
18
|
-
try {
|
|
19
|
-
const content = readFileSync(metaPath, "utf-8");
|
|
20
|
-
return Number(content) || 0;
|
|
21
|
-
} catch {
|
|
22
|
-
return 0;
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
var extractLinks = (html, visited) => {
|
|
26
|
-
const links = [];
|
|
27
|
-
const linkRegex = /href=["'](\/[^"']*?)["']/g;
|
|
28
|
-
let match;
|
|
29
|
-
while ((match = linkRegex.exec(html)) !== null) {
|
|
30
|
-
const href = match[1] ?? "";
|
|
31
|
-
if (!href || href.includes(".") || href.includes("#") || visited.has(href))
|
|
32
|
-
continue;
|
|
33
|
-
links.push(href);
|
|
34
|
-
}
|
|
35
|
-
return links;
|
|
36
|
-
};
|
|
37
|
-
var fetchRoute = async (baseUrl, path) => {
|
|
38
|
-
const res = await fetch(`${baseUrl}${path}`, { redirect: "manual" });
|
|
39
|
-
if (!res.ok)
|
|
40
|
-
return null;
|
|
41
|
-
const contentType = res.headers.get("content-type") ?? "";
|
|
42
|
-
if (!contentType.includes("text/html"))
|
|
43
|
-
return null;
|
|
44
|
-
return res.text();
|
|
45
|
-
};
|
|
46
|
-
var crawlRoutes = async (baseUrl) => {
|
|
47
|
-
const visited = new Set;
|
|
48
|
-
const queue = ["/"];
|
|
49
|
-
const routes = [];
|
|
50
|
-
const crawlNextRoute = async () => {
|
|
51
|
-
const path = queue.shift();
|
|
52
|
-
if (!path) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
if (visited.has(path)) {
|
|
56
|
-
await crawlNextRoute();
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
visited.add(path);
|
|
60
|
-
const html = await fetchRoute(baseUrl, path).catch(() => null);
|
|
61
|
-
if (!html) {
|
|
62
|
-
await crawlNextRoute();
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
routes.push(path);
|
|
66
|
-
queue.push(...extractLinks(html, visited));
|
|
67
|
-
await crawlNextRoute();
|
|
68
|
-
};
|
|
69
|
-
await crawlNextRoute();
|
|
70
|
-
return routes;
|
|
71
|
-
};
|
|
72
|
-
var rerenderRoute = async (route, port, prerenderDir) => {
|
|
73
|
-
try {
|
|
74
|
-
const res = await fetch(`http://localhost:${port}${route}`, {
|
|
75
|
-
headers: { [PRERENDER_BYPASS_HEADER]: "1" },
|
|
76
|
-
redirect: "manual"
|
|
77
|
-
});
|
|
78
|
-
if (!res.ok)
|
|
79
|
-
return false;
|
|
80
|
-
const html = await res.text();
|
|
81
|
-
const fileName = routeToFilename(route);
|
|
82
|
-
const filePath = join(prerenderDir, fileName);
|
|
83
|
-
await Bun.write(filePath, html);
|
|
84
|
-
await writeTimestamp(filePath);
|
|
85
|
-
return true;
|
|
86
|
-
} catch {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
var prerenderRoute = async (baseUrl, route, prerenderDir, result, log) => {
|
|
91
|
-
const res = await fetch(`${baseUrl}${route}`, {
|
|
92
|
-
redirect: "manual"
|
|
93
|
-
}).catch(() => null);
|
|
94
|
-
if (!res) {
|
|
95
|
-
log?.(` Failed to pre-render ${route}`);
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
if (!res.ok) {
|
|
99
|
-
log?.(` Skipped ${route} (HTTP ${res.status})`);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const contentType = res.headers.get("content-type") ?? "";
|
|
103
|
-
if (!contentType.includes("text/html")) {
|
|
104
|
-
log?.(` Skipped ${route} (non-HTML response)`);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
const html = await res.text();
|
|
108
|
-
const fileName = routeToFilename(route);
|
|
109
|
-
const filePath = join(prerenderDir, fileName);
|
|
110
|
-
await Bun.write(filePath, html);
|
|
111
|
-
await writeTimestamp(filePath);
|
|
112
|
-
result.routes.set(route, filePath);
|
|
113
|
-
log?.(` Pre-rendered ${route} \u2192 ${fileName} (${html.length} bytes)`);
|
|
114
|
-
};
|
|
115
|
-
var prerender = async (port, outDir, staticConfig, log) => {
|
|
116
|
-
const prerenderDir = join(outDir, "_prerendered");
|
|
117
|
-
mkdirSync(prerenderDir, { recursive: true });
|
|
118
|
-
const baseUrl = `http://localhost:${port}`;
|
|
119
|
-
let routes;
|
|
120
|
-
if (staticConfig.routes === "all") {
|
|
121
|
-
log?.("Crawling routes...");
|
|
122
|
-
routes = await crawlRoutes(baseUrl);
|
|
123
|
-
} else {
|
|
124
|
-
({ routes } = staticConfig);
|
|
125
|
-
}
|
|
126
|
-
const result = {
|
|
127
|
-
dir: prerenderDir,
|
|
128
|
-
routes: new Map
|
|
129
|
-
};
|
|
130
|
-
await routes.reduce((chain, route) => chain.then(() => prerenderRoute(baseUrl, route, prerenderDir, result, log)), Promise.resolve());
|
|
131
|
-
return result;
|
|
132
|
-
};
|
|
133
|
-
var getStartupTimeoutMs = () => {
|
|
134
|
-
const rawTimeout = Bun.env.ABSOLUTE_PRERENDER_STARTUP_TIMEOUT_MS;
|
|
135
|
-
const parsedTimeout = rawTimeout ? Number(rawTimeout) : NaN;
|
|
136
|
-
return Number.isFinite(parsedTimeout) && parsedTimeout > 0 ? parsedTimeout : DEFAULT_STARTUP_TIMEOUT_MS;
|
|
137
|
-
};
|
|
138
|
-
var waitForServerReady = async (port) => {
|
|
139
|
-
const deadline = performance.now() + getStartupTimeoutMs();
|
|
140
|
-
const pollServer = async () => {
|
|
141
|
-
if (performance.now() >= deadline) {
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
if (await probePrerenderServer(port)) {
|
|
145
|
-
return true;
|
|
146
|
-
}
|
|
147
|
-
await Bun.sleep(STARTUP_POLL_INTERVAL_MS);
|
|
148
|
-
return pollServer();
|
|
149
|
-
};
|
|
150
|
-
return pollServer();
|
|
151
|
-
};
|
|
152
|
-
var probePrerenderServer = async (port) => {
|
|
153
|
-
const res = await fetch(`http://localhost:${port}/`).catch(() => null);
|
|
154
|
-
if (!res) {
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
await res.body?.cancel().catch(() => {
|
|
158
|
-
return;
|
|
159
|
-
});
|
|
160
|
-
return true;
|
|
161
|
-
};
|
|
162
|
-
var captureStreamOutput = (stream, output) => {
|
|
163
|
-
if (!stream)
|
|
164
|
-
return;
|
|
165
|
-
const reader = stream.getReader();
|
|
166
|
-
const decoder = new TextDecoder;
|
|
167
|
-
const read = () => {
|
|
168
|
-
reader.read().then(({ done, value }) => {
|
|
169
|
-
if (done) {
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
output.push(decoder.decode(value, { stream: true }));
|
|
173
|
-
return read();
|
|
174
|
-
}).catch(() => {});
|
|
175
|
-
};
|
|
176
|
-
read();
|
|
177
|
-
};
|
|
178
|
-
var formatServerOutput = (output) => {
|
|
179
|
-
const text = output.join("").trim();
|
|
180
|
-
if (!text)
|
|
181
|
-
return "";
|
|
182
|
-
return text.length > SERVER_OUTPUT_LIMIT ? text.slice(-SERVER_OUTPUT_LIMIT) : text;
|
|
183
|
-
};
|
|
184
|
-
var createServerStartupError = (output) => {
|
|
185
|
-
const serverOutput = formatServerOutput(output);
|
|
186
|
-
const message = serverOutput ? `Server failed to start for pre-rendering.
|
|
187
|
-
|
|
188
|
-
Server output:
|
|
189
|
-
${serverOutput}` : "Server failed to start for pre-rendering";
|
|
190
|
-
return new Error(message);
|
|
191
|
-
};
|
|
192
|
-
var prerenderWithServer = async (serverBundlePath, port, outDir, staticConfig, env, log) => {
|
|
193
|
-
const serverOutput = [];
|
|
194
|
-
const serverProcess = Bun.spawn(["bun", "run", serverBundlePath], {
|
|
195
|
-
cwd: process.cwd(),
|
|
196
|
-
env: { ...process.env, ...env, PORT: String(port) },
|
|
197
|
-
stderr: "pipe",
|
|
198
|
-
stdout: "pipe"
|
|
199
|
-
});
|
|
200
|
-
captureStreamOutput(serverProcess.stdout, serverOutput);
|
|
201
|
-
captureStreamOutput(serverProcess.stderr, serverOutput);
|
|
202
|
-
const ready = await waitForServerReady(port);
|
|
203
|
-
if (!ready) {
|
|
204
|
-
serverProcess.kill();
|
|
205
|
-
await serverProcess.exited.catch(() => {
|
|
206
|
-
return;
|
|
207
|
-
});
|
|
208
|
-
throw createServerStartupError(serverOutput);
|
|
209
|
-
}
|
|
210
|
-
const result = await prerender(port, outDir, staticConfig, log);
|
|
211
|
-
serverProcess.kill();
|
|
212
|
-
await serverProcess.exited;
|
|
213
|
-
return result;
|
|
214
|
-
};
|
|
215
|
-
export {
|
|
216
|
-
routeToFilename,
|
|
217
|
-
rerenderRoute,
|
|
218
|
-
readTimestamp,
|
|
219
|
-
prerenderWithServer,
|
|
220
|
-
prerender,
|
|
221
|
-
PRERENDER_BYPASS_HEADER
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
//# debugId=5205CCA42BB54FF864756E2164756E21
|
|
225
|
-
//# sourceMappingURL=chunk-nehhtthw.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/core/prerender.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import { mkdirSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { StaticConfig } from '../../types/build';\n\nexport type PrerenderResult = {\n\t/** Map of route path → rendered HTML file path on disk */\n\troutes: Map<string, string>;\n\t/** Directory where pre-rendered files are stored */\n\tdir: string;\n};\n\ntype LogFn = (message: string) => void;\n\nconst SERVER_OUTPUT_LIMIT = 4000;\n\n/** Milliseconds between each startup readiness poll */\nconst STARTUP_POLL_INTERVAL_MS = 100;\n\n/** Default maximum time to wait for the prerender server to become ready. */\nconst DEFAULT_STARTUP_TIMEOUT_MS = 30_000;\n\n/** Header used to bypass the prerender cache during ISR re-renders */\nexport const PRERENDER_BYPASS_HEADER = 'X-Absolute-Prerender-Bypass';\n\n/** Convert a URL path to a filename: \"/\" → \"index.html\", \"/vue\" → \"vue.html\" */\nexport const routeToFilename = (route: string) =>\n\troute === '/' ? 'index.html' : `${route.slice(1).replace(/\\//g, '-')}.html`;\n\n/** Write a timestamp file alongside the pre-rendered HTML */\nconst writeTimestamp = async (htmlPath: string) => {\n\tconst metaPath = htmlPath.replace(/\\.html$/, '.meta');\n\tawait Bun.write(metaPath, String(Date.now()));\n};\n\n/** Read the render timestamp for a pre-rendered page. Returns 0 if not found. */\nexport const readTimestamp = (htmlPath: string) => {\n\tconst metaPath = htmlPath.replace(/\\.html$/, '.meta');\n\ttry {\n\t\tconst content = readFileSync(metaPath, 'utf-8');\n\n\t\treturn Number(content) || 0;\n\t} catch {\n\t\treturn 0;\n\t}\n};\n\n/** Extract internal <a href> links from an HTML string */\nconst extractLinks = (html: string, visited: Set<string>) => {\n\tconst links: string[] = [];\n\tconst linkRegex = /href=[\"'](\\/[^\"']*?)[\"']/g;\n\tlet match;\n\twhile ((match = linkRegex.exec(html)) !== null) {\n\t\tconst href = match[1] ?? '';\n\t\tif (\n\t\t\t!href ||\n\t\t\thref.includes('.') ||\n\t\t\thref.includes('#') ||\n\t\t\tvisited.has(href)\n\t\t)\n\t\t\tcontinue;\n\t\tlinks.push(href);\n\t}\n\n\treturn links;\n};\n\n/** Fetch a single route and return its HTML if it's a valid HTML page */\nconst fetchRoute = async (baseUrl: string, path: string) => {\n\tconst res = await fetch(`${baseUrl}${path}`, { redirect: 'manual' });\n\tif (!res.ok) return null;\n\n\tconst contentType = res.headers.get('content-type') ?? '';\n\tif (!contentType.includes('text/html')) return null;\n\n\treturn res.text();\n};\n\n/**\n * Crawl from \"/\" and discover all linked pages by following internal <a href> links.\n */\nconst crawlRoutes = async (baseUrl: string) => {\n\tconst visited = new Set<string>();\n\tconst queue: string[] = ['/'];\n\tconst routes: string[] = [];\n\n\tconst crawlNextRoute = async () => {\n\t\tconst path = queue.shift();\n\t\tif (!path) {\n\t\t\treturn;\n\t\t}\n\t\tif (visited.has(path)) {\n\t\t\tawait crawlNextRoute();\n\n\t\t\treturn;\n\t\t}\n\t\tvisited.add(path);\n\n\t\tconst html = await fetchRoute(baseUrl, path).catch(() => null);\n\t\tif (!html) {\n\t\t\tawait crawlNextRoute();\n\n\t\t\treturn;\n\t\t}\n\n\t\troutes.push(path);\n\t\tqueue.push(...extractLinks(html, visited));\n\t\tawait crawlNextRoute();\n\t};\n\n\tawait crawlNextRoute();\n\n\treturn routes;\n};\n\n/**\n * Re-render a single route by fetching it from the running server\n * with the bypass header so it hits SSR instead of the cache.\n */\nexport const rerenderRoute = async (\n\troute: string,\n\tport: number,\n\tprerenderDir: string\n) => {\n\ttry {\n\t\tconst res = await fetch(`http://localhost:${port}${route}`, {\n\t\t\theaders: { [PRERENDER_BYPASS_HEADER]: '1' },\n\t\t\tredirect: 'manual'\n\t\t});\n\t\tif (!res.ok) return false;\n\n\t\tconst html = await res.text();\n\t\tconst fileName = routeToFilename(route);\n\t\tconst filePath = join(prerenderDir, fileName);\n\t\tawait Bun.write(filePath, html);\n\t\tawait writeTimestamp(filePath);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\n/** Fetch, render, and save a single route during pre-rendering */\nconst prerenderRoute = async (\n\tbaseUrl: string,\n\troute: string,\n\tprerenderDir: string,\n\tresult: PrerenderResult,\n\tlog?: LogFn\n) => {\n\tconst res = await fetch(`${baseUrl}${route}`, {\n\t\tredirect: 'manual'\n\t}).catch(() => null);\n\tif (!res) {\n\t\tlog?.(` Failed to pre-render ${route}`);\n\n\t\treturn;\n\t}\n\tif (!res.ok) {\n\t\tlog?.(` Skipped ${route} (HTTP ${res.status})`);\n\n\t\treturn;\n\t}\n\n\tconst contentType = res.headers.get('content-type') ?? '';\n\tif (!contentType.includes('text/html')) {\n\t\tlog?.(` Skipped ${route} (non-HTML response)`);\n\n\t\treturn;\n\t}\n\n\tconst html = await res.text();\n\tconst fileName = routeToFilename(route);\n\tconst filePath = join(prerenderDir, fileName);\n\tawait Bun.write(filePath, html);\n\tawait writeTimestamp(filePath);\n\tresult.routes.set(route, filePath);\n\n\tlog?.(` Pre-rendered ${route} → ${fileName} (${html.length} bytes)`);\n};\n\n/**\n * Pre-render routes by fetching them from a running server and saving the HTML to disk.\n *\n * Used by both `absolute start` (SSG) and `absolute compile`.\n */\nexport const prerender = async (\n\tport: number,\n\toutDir: string,\n\tstaticConfig: StaticConfig,\n\tlog?: LogFn\n) => {\n\tconst prerenderDir = join(outDir, '_prerendered');\n\tmkdirSync(prerenderDir, { recursive: true });\n\n\tconst baseUrl = `http://localhost:${port}`;\n\n\tlet routes: string[];\n\tif (staticConfig.routes === 'all') {\n\t\tlog?.('Crawling routes...');\n\t\troutes = await crawlRoutes(baseUrl);\n\t} else {\n\t\t({ routes } = staticConfig);\n\t}\n\n\tconst result: PrerenderResult = {\n\t\tdir: prerenderDir,\n\t\troutes: new Map()\n\t};\n\n\tawait routes.reduce(\n\t\t(chain, route) =>\n\t\t\tchain.then(() =>\n\t\t\t\tprerenderRoute(baseUrl, route, prerenderDir, result, log)\n\t\t\t),\n\t\tPromise.resolve()\n\t);\n\n\treturn result;\n};\n\nconst getStartupTimeoutMs = () => {\n\tconst rawTimeout = Bun.env.ABSOLUTE_PRERENDER_STARTUP_TIMEOUT_MS;\n\tconst parsedTimeout = rawTimeout ? Number(rawTimeout) : NaN;\n\n\treturn Number.isFinite(parsedTimeout) && parsedTimeout > 0\n\t\t? parsedTimeout\n\t\t: DEFAULT_STARTUP_TIMEOUT_MS;\n};\n\n/** Poll the server until it responds or startup timeout elapses */\nconst waitForServerReady = async (port: number) => {\n\tconst deadline = performance.now() + getStartupTimeoutMs();\n\tconst pollServer = async () => {\n\t\tif (performance.now() >= deadline) {\n\t\t\treturn false;\n\t\t}\n\t\tif (await probePrerenderServer(port)) {\n\t\t\treturn true;\n\t\t}\n\t\tawait Bun.sleep(STARTUP_POLL_INTERVAL_MS);\n\n\t\treturn pollServer();\n\t};\n\n\treturn pollServer();\n};\n\nconst probePrerenderServer = async (port: number) => {\n\tconst res = await fetch(`http://localhost:${port}/`).catch(() => null);\n\tif (!res) {\n\t\treturn false;\n\t}\n\n\tawait res.body?.cancel().catch(() => undefined);\n\n\treturn true;\n};\n\nconst captureStreamOutput = (\n\tstream: ReadableStream<Uint8Array> | null,\n\toutput: string[]\n) => {\n\tif (!stream) return;\n\n\tconst reader = stream.getReader();\n\tconst decoder = new TextDecoder();\n\tconst read = () => {\n\t\treader\n\t\t\t.read()\n\t\t\t.then(({ done, value }) => {\n\t\t\t\tif (done) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\toutput.push(decoder.decode(value, { stream: true }));\n\n\t\t\t\treturn read();\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t/* best-effort diagnostics */\n\t\t\t});\n\t};\n\tread();\n};\n\nconst formatServerOutput = (output: string[]) => {\n\tconst text = output.join('').trim();\n\tif (!text) return '';\n\n\treturn text.length > SERVER_OUTPUT_LIMIT\n\t\t? text.slice(-SERVER_OUTPUT_LIMIT)\n\t\t: text;\n};\n\nconst createServerStartupError = (output: string[]) => {\n\tconst serverOutput = formatServerOutput(output);\n\tconst message = serverOutput\n\t\t? `Server failed to start for pre-rendering.\\n\\nServer output:\\n${serverOutput}`\n\t\t: 'Server failed to start for pre-rendering';\n\n\treturn new Error(message);\n};\n\n/**\n * Start the bundled production server, wait for it to be ready, pre-render,\n * then kill it.\n */\nexport const prerenderWithServer = async (\n\tserverBundlePath: string,\n\tport: number,\n\toutDir: string,\n\tstaticConfig: StaticConfig,\n\tenv: Record<string, string>,\n\tlog?: LogFn\n) => {\n\tconst serverOutput: string[] = [];\n\tconst serverProcess = Bun.spawn(['bun', 'run', serverBundlePath], {\n\t\tcwd: process.cwd(),\n\t\tenv: { ...process.env, ...env, PORT: String(port) },\n\t\tstderr: 'pipe',\n\t\tstdout: 'pipe'\n\t});\n\tcaptureStreamOutput(serverProcess.stdout, serverOutput);\n\tcaptureStreamOutput(serverProcess.stderr, serverOutput);\n\n\tconst ready = await waitForServerReady(port);\n\n\tif (!ready) {\n\t\tserverProcess.kill();\n\t\tawait serverProcess.exited.catch(() => undefined);\n\t\tthrow createServerStartupError(serverOutput);\n\t}\n\n\tconst result = await prerender(port, outDir, staticConfig, log);\n\n\tserverProcess.kill();\n\tawait serverProcess.exited;\n\n\treturn result;\n};\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "5205CCA42BB54FF864756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|
package/dist/chunk-p5504p14.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
// src/utils/stringModifiers.ts
|
|
3
|
-
var normalizeSlug = (str) => str.trim().replace(/\s+/g, "-").replace(/[^A-Za-z0-9\-_]+/g, "").replace(/[-_]{2,}/g, "-");
|
|
4
|
-
var toKebab = (str) => normalizeSlug(str).replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
5
|
-
var toPascal = (str) => {
|
|
6
|
-
if (!str.includes("-") && !str.includes("_")) {
|
|
7
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
8
|
-
}
|
|
9
|
-
return normalizeSlug(str).split(/[-_]/).filter(Boolean).map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase()).join("");
|
|
10
|
-
};
|
|
11
|
-
var toScreamingSnake = (str) => str.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toUpperCase();
|
|
12
|
-
|
|
13
|
-
export { toKebab, toPascal, toScreamingSnake };
|
|
14
|
-
|
|
15
|
-
//# debugId=93E61FCF94E3B28D64756E2164756E21
|
|
16
|
-
//# sourceMappingURL=chunk-p5504p14.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/utils/stringModifiers.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"const normalizeSlug = (str: string) =>\n\tstr\n\t\t.trim()\n\t\t.replace(/\\s+/g, '-')\n\t\t.replace(/[^A-Za-z0-9\\-_]+/g, '')\n\t\t.replace(/[-_]{2,}/g, '-');\n\nexport const toKebab = (str: string) =>\n\tnormalizeSlug(str)\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n\t\t.toLowerCase();\nexport const toPascal = (str: string) => {\n\tif (!str.includes('-') && !str.includes('_')) {\n\t\treturn str.charAt(0).toUpperCase() + str.slice(1);\n\t}\n\n\treturn normalizeSlug(str)\n\t\t.split(/[-_]/)\n\t\t.filter(Boolean)\n\t\t.map(\n\t\t\t(segment) =>\n\t\t\t\tsegment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase()\n\t\t)\n\t\t.join('');\n};\nexport const toScreamingSnake = (str: string) =>\n\tstr.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n"
|
|
6
|
-
],
|
|
7
|
-
"mappings": ";;AAAA,IAAM,gBAAgB,CAAC,QACtB,IACE,KAAK,EACL,QAAQ,QAAQ,GAAG,EACnB,QAAQ,qBAAqB,EAAE,EAC/B,QAAQ,aAAa,GAAG;AAEpB,IAAM,UAAU,CAAC,QACvB,cAAc,GAAG,EACf,QAAQ,sBAAsB,OAAO,EACrC,YAAY;AACR,IAAM,WAAW,CAAC,QAAgB;AAAA,EACxC,IAAI,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG;AAAA,IAC7C,OAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA,EACjD;AAAA,EAEA,OAAO,cAAc,GAAG,EACtB,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,IACA,CAAC,YACA,QAAQ,OAAO,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC,EAAE,YAAY,CACjE,EACC,KAAK,EAAE;AAAA;AAEH,IAAM,mBAAmB,CAAC,QAChC,IAAI,QAAQ,sBAAsB,OAAO,EAAE,YAAY;",
|
|
8
|
-
"debugId": "93E61FCF94E3B28D64756E2164756E21",
|
|
9
|
-
"names": []
|
|
10
|
-
}
|