@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.
Files changed (260) hide show
  1. package/dist/angular/browser.js +9801 -57
  2. package/dist/angular/browser.js.map +246 -4
  3. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  4. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  5. package/dist/angular/index.js +14877 -60
  6. package/dist/angular/index.js.map +281 -4
  7. package/dist/angular/server.js +5610 -45
  8. package/dist/angular/server.js.map +51 -3
  9. package/dist/build.js +18092 -45
  10. package/dist/build.js.map +99 -3
  11. package/dist/cli/index.js +317 -86
  12. package/dist/client/index.js +1091 -70
  13. package/dist/client/index.js.map +24 -4
  14. package/dist/core/streamingSlotRegistrar.js +108 -11
  15. package/dist/core/streamingSlotRegistrar.js.map +4 -3
  16. package/dist/core/streamingSlotRegistry.js +169 -7
  17. package/dist/core/streamingSlotRegistry.js.map +5 -3
  18. package/dist/index.js +19957 -547
  19. package/dist/index.js.map +116 -3
  20. package/dist/islands/browser.js +228 -9
  21. package/dist/islands/browser.js.map +9 -4
  22. package/dist/islands/index.js +1908 -17
  23. package/dist/islands/index.js.map +27 -3
  24. package/dist/react/browser.js +328 -12
  25. package/dist/react/browser.js.map +12 -4
  26. package/dist/react/components/index.js +167 -16
  27. package/dist/react/components/index.js.map +6 -3
  28. package/dist/react/hooks/index.js +183 -8
  29. package/dist/react/hooks/index.js.map +7 -3
  30. package/dist/react/index.js +3627 -36
  31. package/dist/react/index.js.map +45 -4
  32. package/dist/react/jsxDevRuntimeCompat.js +61 -2
  33. package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
  34. package/dist/react/server.js +1789 -18
  35. package/dist/react/server.js.map +21 -3
  36. package/dist/src/angular/injectorPatch.d.ts +1 -0
  37. package/dist/src/angular/islands.d.ts +1 -0
  38. package/dist/src/client/hydrators/react.d.ts +3 -0
  39. package/dist/src/client/hydrators/svelte.d.ts +2 -0
  40. package/dist/src/client/hydrators/vue.d.ts +2 -0
  41. package/dist/src/index.d.ts +1 -0
  42. package/dist/svelte/browser.js +247 -12
  43. package/dist/svelte/browser.js.map +10 -3
  44. package/dist/svelte/index.js +3732 -37
  45. package/dist/svelte/index.js.map +47 -4
  46. package/dist/svelte/server.js +2794 -21
  47. package/dist/svelte/server.js.map +27 -3
  48. package/dist/vue/browser.js +348 -12
  49. package/dist/vue/browser.js.map +12 -4
  50. package/dist/vue/components/Image.js +240 -7
  51. package/dist/vue/components/Image.js.map +6 -3
  52. package/dist/vue/components/index.js +544 -11
  53. package/dist/vue/components/index.js.map +9 -3
  54. package/dist/vue/index.js +4212 -52
  55. package/dist/vue/index.js.map +50 -4
  56. package/dist/vue/server.js +1849 -18
  57. package/dist/vue/server.js.map +21 -3
  58. package/package.json +1 -1
  59. package/dist/chunk-0867j0r0.js +0 -136
  60. package/dist/chunk-0867j0r0.js.map +0 -10
  61. package/dist/chunk-102fp7xe.js +0 -63
  62. package/dist/chunk-102fp7xe.js.map +0 -10
  63. package/dist/chunk-11zpfqz6.js +0 -19
  64. package/dist/chunk-11zpfqz6.js.map +0 -10
  65. package/dist/chunk-1rfh7hw9.js +0 -319
  66. package/dist/chunk-1rfh7hw9.js.map +0 -11
  67. package/dist/chunk-1x4fxm57.js +0 -51
  68. package/dist/chunk-1x4fxm57.js.map +0 -9
  69. package/dist/chunk-25v9t56f.js +0 -29
  70. package/dist/chunk-25v9t56f.js.map +0 -11
  71. package/dist/chunk-2f21eenc.js +0 -21
  72. package/dist/chunk-2f21eenc.js.map +0 -10
  73. package/dist/chunk-2ga2znex.js +0 -13
  74. package/dist/chunk-2ga2znex.js.map +0 -9
  75. package/dist/chunk-30yrw0f6.js +0 -33
  76. package/dist/chunk-30yrw0f6.js.map +0 -10
  77. package/dist/chunk-3g91wb4f.js +0 -358
  78. package/dist/chunk-3g91wb4f.js.map +0 -10
  79. package/dist/chunk-3rea1gam.js +0 -4403
  80. package/dist/chunk-3rea1gam.js.map +0 -28
  81. package/dist/chunk-3yjzpcne.js +0 -34
  82. package/dist/chunk-3yjzpcne.js.map +0 -10
  83. package/dist/chunk-41bf6aqt.js +0 -17
  84. package/dist/chunk-41bf6aqt.js.map +0 -9
  85. package/dist/chunk-4d39r92n.js +0 -81
  86. package/dist/chunk-4d39r92n.js.map +0 -10
  87. package/dist/chunk-5003emhv.js +0 -17
  88. package/dist/chunk-5003emhv.js.map +0 -10
  89. package/dist/chunk-5f67rsed.js +0 -466
  90. package/dist/chunk-5f67rsed.js.map +0 -10
  91. package/dist/chunk-5fhp1jap.js +0 -9169
  92. package/dist/chunk-5fhp1jap.js.map +0 -236
  93. package/dist/chunk-629x0yh4.js +0 -20
  94. package/dist/chunk-629x0yh4.js.map +0 -9
  95. package/dist/chunk-6pdj08z3.js +0 -73
  96. package/dist/chunk-6pdj08z3.js.map +0 -12
  97. package/dist/chunk-6qjbrt0k.js +0 -13
  98. package/dist/chunk-6qjbrt0k.js.map +0 -9
  99. package/dist/chunk-6sccb4jr.js +0 -14
  100. package/dist/chunk-6sccb4jr.js.map +0 -9
  101. package/dist/chunk-798spvzv.js +0 -50
  102. package/dist/chunk-798spvzv.js.map +0 -10
  103. package/dist/chunk-7fw6x3js.js +0 -131
  104. package/dist/chunk-7fw6x3js.js.map +0 -11
  105. package/dist/chunk-7kjj42xm.js +0 -11
  106. package/dist/chunk-7kjj42xm.js.map +0 -10
  107. package/dist/chunk-7mtstdqn.js +0 -90
  108. package/dist/chunk-7mtstdqn.js.map +0 -10
  109. package/dist/chunk-851whwc7.js +0 -17
  110. package/dist/chunk-851whwc7.js.map +0 -10
  111. package/dist/chunk-85n68sy6.js +0 -103
  112. package/dist/chunk-85n68sy6.js.map +0 -10
  113. package/dist/chunk-8kcfffry.js +0 -35
  114. package/dist/chunk-8kcfffry.js.map +0 -10
  115. package/dist/chunk-92fsjfpp.js +0 -1731
  116. package/dist/chunk-92fsjfpp.js.map +0 -11
  117. package/dist/chunk-93sqk7be.js +0 -139
  118. package/dist/chunk-93sqk7be.js.map +0 -12
  119. package/dist/chunk-9c5tj4k3.js +0 -130
  120. package/dist/chunk-9c5tj4k3.js.map +0 -10
  121. package/dist/chunk-9j59emg3.js +0 -184
  122. package/dist/chunk-9j59emg3.js.map +0 -11
  123. package/dist/chunk-9ve9jq72.js +0 -203
  124. package/dist/chunk-9ve9jq72.js.map +0 -10
  125. package/dist/chunk-9xrsjeem.js +0 -12
  126. package/dist/chunk-9xrsjeem.js.map +0 -9
  127. package/dist/chunk-a9mvyp04.js +0 -87
  128. package/dist/chunk-a9mvyp04.js.map +0 -10
  129. package/dist/chunk-b3gbnrwe.js +0 -21
  130. package/dist/chunk-b3gbnrwe.js.map +0 -10
  131. package/dist/chunk-bgb8k1qs.js +0 -672
  132. package/dist/chunk-bgb8k1qs.js.map +0 -15
  133. package/dist/chunk-bmgqm774.js +0 -65
  134. package/dist/chunk-bmgqm774.js.map +0 -9
  135. package/dist/chunk-bxfghpma.js +0 -69
  136. package/dist/chunk-bxfghpma.js.map +0 -10
  137. package/dist/chunk-c1jfjnka.js +0 -74
  138. package/dist/chunk-c1jfjnka.js.map +0 -10
  139. package/dist/chunk-cbkrwmvh.js +0 -80
  140. package/dist/chunk-cbkrwmvh.js.map +0 -10
  141. package/dist/chunk-cdxd7sy2.js +0 -71
  142. package/dist/chunk-cdxd7sy2.js.map +0 -10
  143. package/dist/chunk-cg95827x.js +0 -21
  144. package/dist/chunk-cg95827x.js.map +0 -10
  145. package/dist/chunk-cm0g4q6w.js +0 -149
  146. package/dist/chunk-cm0g4q6w.js.map +0 -10
  147. package/dist/chunk-d7mwkzry.js +0 -261
  148. package/dist/chunk-d7mwkzry.js.map +0 -10
  149. package/dist/chunk-d9c0am65.js +0 -12
  150. package/dist/chunk-d9c0am65.js.map +0 -10
  151. package/dist/chunk-daqghmg8.js +0 -12
  152. package/dist/chunk-daqghmg8.js.map +0 -9
  153. package/dist/chunk-e3r9fxaa.js +0 -149
  154. package/dist/chunk-e3r9fxaa.js.map +0 -10
  155. package/dist/chunk-e8eecyrq.js +0 -244
  156. package/dist/chunk-e8eecyrq.js.map +0 -10
  157. package/dist/chunk-ex2hxe0v.js +0 -160
  158. package/dist/chunk-ex2hxe0v.js.map +0 -11
  159. package/dist/chunk-fak944et.js +0 -91
  160. package/dist/chunk-fak944et.js.map +0 -10
  161. package/dist/chunk-fygx2ymm.js +0 -118
  162. package/dist/chunk-fygx2ymm.js.map +0 -12
  163. package/dist/chunk-g15qj669.js +0 -271
  164. package/dist/chunk-g15qj669.js.map +0 -11
  165. package/dist/chunk-gd6wmknh.js +0 -121
  166. package/dist/chunk-gd6wmknh.js.map +0 -11
  167. package/dist/chunk-gf0ygptk.js +0 -85
  168. package/dist/chunk-gf0ygptk.js.map +0 -11
  169. package/dist/chunk-gytkmthr.js +0 -220
  170. package/dist/chunk-gytkmthr.js.map +0 -10
  171. package/dist/chunk-h5bbfn3n.js +0 -28
  172. package/dist/chunk-h5bbfn3n.js.map +0 -11
  173. package/dist/chunk-h6mye9r3.js +0 -93
  174. package/dist/chunk-h6mye9r3.js.map +0 -10
  175. package/dist/chunk-hcsmxw1v.js +0 -85
  176. package/dist/chunk-hcsmxw1v.js.map +0 -10
  177. package/dist/chunk-hyjs4bqs.js +0 -8
  178. package/dist/chunk-hyjs4bqs.js.map +0 -10
  179. package/dist/chunk-jn91vzkh.js +0 -66
  180. package/dist/chunk-jn91vzkh.js.map +0 -10
  181. package/dist/chunk-jpkjdgsk.js +0 -167
  182. package/dist/chunk-jpkjdgsk.js.map +0 -11
  183. package/dist/chunk-jwxt8gnp.js +0 -13
  184. package/dist/chunk-jwxt8gnp.js.map +0 -9
  185. package/dist/chunk-kk8w9rh5.js +0 -195
  186. package/dist/chunk-kk8w9rh5.js.map +0 -10
  187. package/dist/chunk-kwgh8rmg.js +0 -426
  188. package/dist/chunk-kwgh8rmg.js.map +0 -14
  189. package/dist/chunk-m97ze5hz.js +0 -46
  190. package/dist/chunk-m97ze5hz.js.map +0 -10
  191. package/dist/chunk-mbazhahf.js +0 -60
  192. package/dist/chunk-mbazhahf.js.map +0 -10
  193. package/dist/chunk-mgfwq18r.js +0 -15
  194. package/dist/chunk-mgfwq18r.js.map +0 -9
  195. package/dist/chunk-mtgf69xn.js +0 -88
  196. package/dist/chunk-mtgf69xn.js.map +0 -10
  197. package/dist/chunk-mtxzyxpg.js +0 -102
  198. package/dist/chunk-mtxzyxpg.js.map +0 -10
  199. package/dist/chunk-nehhtthw.js +0 -225
  200. package/dist/chunk-nehhtthw.js.map +0 -10
  201. package/dist/chunk-p5504p14.js +0 -16
  202. package/dist/chunk-p5504p14.js.map +0 -10
  203. package/dist/chunk-p5zgj77m.js +0 -184
  204. package/dist/chunk-p5zgj77m.js.map +0 -10
  205. package/dist/chunk-pnscgw95.js +0 -90
  206. package/dist/chunk-pnscgw95.js.map +0 -10
  207. package/dist/chunk-pvpp4pvs.js +0 -17
  208. package/dist/chunk-pvpp4pvs.js.map +0 -10
  209. package/dist/chunk-qh75agse.js +0 -95
  210. package/dist/chunk-qh75agse.js.map +0 -10
  211. package/dist/chunk-qxq2zcty.js +0 -52
  212. package/dist/chunk-qxq2zcty.js.map +0 -10
  213. package/dist/chunk-r6e8pytx.js +0 -22
  214. package/dist/chunk-r6e8pytx.js.map +0 -9
  215. package/dist/chunk-r7jmgqnw.js +0 -114
  216. package/dist/chunk-r7jmgqnw.js.map +0 -10
  217. package/dist/chunk-s6defjk2.js +0 -116
  218. package/dist/chunk-s6defjk2.js.map +0 -10
  219. package/dist/chunk-sd39p726.js +0 -619
  220. package/dist/chunk-sd39p726.js.map +0 -10
  221. package/dist/chunk-swrnzs4c.js +0 -63
  222. package/dist/chunk-swrnzs4c.js.map +0 -10
  223. package/dist/chunk-tfe3sb44.js +0 -33
  224. package/dist/chunk-tfe3sb44.js.map +0 -10
  225. package/dist/chunk-tjr0kcev.js +0 -41
  226. package/dist/chunk-tjr0kcev.js.map +0 -9
  227. package/dist/chunk-tx9edm1x.js +0 -34
  228. package/dist/chunk-tx9edm1x.js.map +0 -10
  229. package/dist/chunk-txhm2vb5.js +0 -18
  230. package/dist/chunk-txhm2vb5.js.map +0 -9
  231. package/dist/chunk-v5vmsxmy.js +0 -526
  232. package/dist/chunk-v5vmsxmy.js.map +0 -12
  233. package/dist/chunk-vjhxm8n2.js +0 -29
  234. package/dist/chunk-vjhxm8n2.js.map +0 -9
  235. package/dist/chunk-vkrpm7kc.js +0 -247
  236. package/dist/chunk-vkrpm7kc.js.map +0 -12
  237. package/dist/chunk-w3m4m5we.js +0 -4925
  238. package/dist/chunk-w3m4m5we.js.map +0 -12
  239. package/dist/chunk-wrxtn9ve.js +0 -18
  240. package/dist/chunk-wrxtn9ve.js.map +0 -10
  241. package/dist/chunk-x09cskqd.js +0 -377
  242. package/dist/chunk-x09cskqd.js.map +0 -10
  243. package/dist/chunk-xnt8c6h2.js +0 -576
  244. package/dist/chunk-xnt8c6h2.js.map +0 -10
  245. package/dist/chunk-xw0tx842.js +0 -13
  246. package/dist/chunk-xw0tx842.js.map +0 -9
  247. package/dist/chunk-xx5b6b9m.js +0 -69
  248. package/dist/chunk-xx5b6b9m.js.map +0 -10
  249. package/dist/chunk-xz1kdswj.js +0 -21
  250. package/dist/chunk-xz1kdswj.js.map +0 -9
  251. package/dist/chunk-y84qnsd3.js +0 -32
  252. package/dist/chunk-y84qnsd3.js.map +0 -10
  253. package/dist/chunk-ywjn0rad.js +0 -14
  254. package/dist/chunk-ywjn0rad.js.map +0 -9
  255. package/dist/chunk-z9nvhm6r.js +0 -13
  256. package/dist/chunk-z9nvhm6r.js.map +0 -9
  257. package/dist/chunk-zhmvdpk6.js +0 -15
  258. package/dist/chunk-zhmvdpk6.js.map +0 -9
  259. package/dist/chunk-zrg9d4zw.js +0 -784
  260. package/dist/chunk-zrg9d4zw.js.map +0 -10
@@ -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
- }
@@ -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
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "1D1F01D69CD9200664756E2164756E21",
8
- "names": []
9
- }
@@ -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
- }
@@ -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": "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",
8
- "debugId": "0A117CCD4566069A64756E2164756E21",
9
- "names": []
10
- }
@@ -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": ";;;;AAAA;AACA;AAYA,IAAM,sBAAsB;AAG5B,IAAM,2BAA2B;AAGjC,IAAM,6BAA6B;AAG5B,IAAM,0BAA0B;AAGhC,IAAM,kBAAkB,CAAC,UAC/B,UAAU,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,EAAE,QAAQ,OAAO,GAAG;AAGpE,IAAM,iBAAiB,OAAO,aAAqB;AAAA,EAClD,MAAM,WAAW,SAAS,QAAQ,WAAW,OAAO;AAAA,EACpD,MAAM,IAAI,MAAM,UAAU,OAAO,KAAK,IAAI,CAAC,CAAC;AAAA;AAItC,IAAM,gBAAgB,CAAC,aAAqB;AAAA,EAClD,MAAM,WAAW,SAAS,QAAQ,WAAW,OAAO;AAAA,EACpD,IAAI;AAAA,IACH,MAAM,UAAU,aAAa,UAAU,OAAO;AAAA,IAE9C,OAAO,OAAO,OAAO,KAAK;AAAA,IACzB,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAKT,IAAM,eAAe,CAAC,MAAc,YAAyB;AAAA,EAC5D,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,YAAY;AAAA,EAClB,IAAI;AAAA,EACJ,QAAQ,QAAQ,UAAU,KAAK,IAAI,OAAO,MAAM;AAAA,IAC/C,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,IACC,CAAC,QACD,KAAK,SAAS,GAAG,KACjB,KAAK,SAAS,GAAG,KACjB,QAAQ,IAAI,IAAI;AAAA,MAEhB;AAAA,IACD,MAAM,KAAK,IAAI;AAAA,EAChB;AAAA,EAEA,OAAO;AAAA;AAIR,IAAM,aAAa,OAAO,SAAiB,SAAiB;AAAA,EAC3D,MAAM,MAAM,MAAM,MAAM,GAAG,UAAU,QAAQ,EAAE,UAAU,SAAS,CAAC;AAAA,EACnE,IAAI,CAAC,IAAI;AAAA,IAAI,OAAO;AAAA,EAEpB,MAAM,cAAc,IAAI,QAAQ,IAAI,cAAc,KAAK;AAAA,EACvD,IAAI,CAAC,YAAY,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EAE/C,OAAO,IAAI,KAAK;AAAA;AAMjB,IAAM,cAAc,OAAO,YAAoB;AAAA,EAC9C,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,QAAkB,CAAC,GAAG;AAAA,EAC5B,MAAM,SAAmB,CAAC;AAAA,EAE1B,MAAM,iBAAiB,YAAY;AAAA,IAClC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,IAAI,CAAC,MAAM;AAAA,MACV;AAAA,IACD;AAAA,IACA,IAAI,QAAQ,IAAI,IAAI,GAAG;AAAA,MACtB,MAAM,eAAe;AAAA,MAErB;AAAA,IACD;AAAA,IACA,QAAQ,IAAI,IAAI;AAAA,IAEhB,MAAM,OAAO,MAAM,WAAW,SAAS,IAAI,EAAE,MAAM,MAAM,IAAI;AAAA,IAC7D,IAAI,CAAC,MAAM;AAAA,MACV,MAAM,eAAe;AAAA,MAErB;AAAA,IACD;AAAA,IAEA,OAAO,KAAK,IAAI;AAAA,IAChB,MAAM,KAAK,GAAG,aAAa,MAAM,OAAO,CAAC;AAAA,IACzC,MAAM,eAAe;AAAA;AAAA,EAGtB,MAAM,eAAe;AAAA,EAErB,OAAO;AAAA;AAOD,IAAM,gBAAgB,OAC5B,OACA,MACA,iBACI;AAAA,EACJ,IAAI;AAAA,IACH,MAAM,MAAM,MAAM,MAAM,oBAAoB,OAAO,SAAS;AAAA,MAC3D,SAAS,GAAG,0BAA0B,IAAI;AAAA,MAC1C,UAAU;AAAA,IACX,CAAC;AAAA,IACD,IAAI,CAAC,IAAI;AAAA,MAAI,OAAO;AAAA,IAEpB,MAAM,OAAO,MAAM,IAAI,KAAK;AAAA,IAC5B,MAAM,WAAW,gBAAgB,KAAK;AAAA,IACtC,MAAM,WAAW,KAAK,cAAc,QAAQ;AAAA,IAC5C,MAAM,IAAI,MAAM,UAAU,IAAI;AAAA,IAC9B,MAAM,eAAe,QAAQ;AAAA,IAE7B,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAKT,IAAM,iBAAiB,OACtB,SACA,OACA,cACA,QACA,QACI;AAAA,EACJ,MAAM,MAAM,MAAM,MAAM,GAAG,UAAU,SAAS;AAAA,IAC7C,UAAU;AAAA,EACX,CAAC,EAAE,MAAM,MAAM,IAAI;AAAA,EACnB,IAAI,CAAC,KAAK;AAAA,IACT,MAAM,0BAA0B,OAAO;AAAA,IAEvC;AAAA,EACD;AAAA,EACA,IAAI,CAAC,IAAI,IAAI;AAAA,IACZ,MAAM,aAAa,eAAe,IAAI,SAAS;AAAA,IAE/C;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,IAAI,QAAQ,IAAI,cAAc,KAAK;AAAA,EACvD,IAAI,CAAC,YAAY,SAAS,WAAW,GAAG;AAAA,IACvC,MAAM,aAAa,2BAA2B;AAAA,IAE9C;AAAA,EACD;AAAA,EAEA,MAAM,OAAO,MAAM,IAAI,KAAK;AAAA,EAC5B,MAAM,WAAW,gBAAgB,KAAK;AAAA,EACtC,MAAM,WAAW,KAAK,cAAc,QAAQ;AAAA,EAC5C,MAAM,IAAI,MAAM,UAAU,IAAI;AAAA,EAC9B,MAAM,eAAe,QAAQ;AAAA,EAC7B,OAAO,OAAO,IAAI,OAAO,QAAQ;AAAA,EAEjC,MAAM,kBAAkB,gBAAU,aAAa,KAAK,eAAe;AAAA;AAQ7D,IAAM,YAAY,OACxB,MACA,QACA,cACA,QACI;AAAA,EACJ,MAAM,eAAe,KAAK,QAAQ,cAAc;AAAA,EAChD,UAAU,cAAc,EAAE,WAAW,KAAK,CAAC;AAAA,EAE3C,MAAM,UAAU,oBAAoB;AAAA,EAEpC,IAAI;AAAA,EACJ,IAAI,aAAa,WAAW,OAAO;AAAA,IAClC,MAAM,oBAAoB;AAAA,IAC1B,SAAS,MAAM,YAAY,OAAO;AAAA,EACnC,EAAO;AAAA,KACL,EAAE,OAAO,IAAI;AAAA;AAAA,EAGf,MAAM,SAA0B;AAAA,IAC/B,KAAK;AAAA,IACL,QAAQ,IAAI;AAAA,EACb;AAAA,EAEA,MAAM,OAAO,OACZ,CAAC,OAAO,UACP,MAAM,KAAK,MACV,eAAe,SAAS,OAAO,cAAc,QAAQ,GAAG,CACzD,GACD,QAAQ,QAAQ,CACjB;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,sBAAsB,MAAM;AAAA,EACjC,MAAM,aAAa,IAAI,IAAI;AAAA,EAC3B,MAAM,gBAAgB,aAAa,OAAO,UAAU,IAAI;AAAA,EAExD,OAAO,OAAO,SAAS,aAAa,KAAK,gBAAgB,IACtD,gBACA;AAAA;AAIJ,IAAM,qBAAqB,OAAO,SAAiB;AAAA,EAClD,MAAM,WAAW,YAAY,IAAI,IAAI,oBAAoB;AAAA,EACzD,MAAM,aAAa,YAAY;AAAA,IAC9B,IAAI,YAAY,IAAI,KAAK,UAAU;AAAA,MAClC,OAAO;AAAA,IACR;AAAA,IACA,IAAI,MAAM,qBAAqB,IAAI,GAAG;AAAA,MACrC,OAAO;AAAA,IACR;AAAA,IACA,MAAM,IAAI,MAAM,wBAAwB;AAAA,IAExC,OAAO,WAAW;AAAA;AAAA,EAGnB,OAAO,WAAW;AAAA;AAGnB,IAAM,uBAAuB,OAAO,SAAiB;AAAA,EACpD,MAAM,MAAM,MAAM,MAAM,oBAAoB,OAAO,EAAE,MAAM,MAAM,IAAI;AAAA,EACrE,IAAI,CAAC,KAAK;AAAA,IACT,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,IAAI,MAAM,OAAO,EAAE,MAAM,MAAG;AAAA,IAAG;AAAA,GAAS;AAAA,EAE9C,OAAO;AAAA;AAGR,IAAM,sBAAsB,CAC3B,QACA,WACI;AAAA,EACJ,IAAI,CAAC;AAAA,IAAQ;AAAA,EAEb,MAAM,SAAS,OAAO,UAAU;AAAA,EAChC,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,OAAO,MAAM;AAAA,IAClB,OACE,KAAK,EACL,KAAK,GAAG,MAAM,YAAY;AAAA,MAC1B,IAAI,MAAM;AAAA,QACT;AAAA,MACD;AAAA,MACA,OAAO,KAAK,QAAQ,OAAO,OAAO,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,MAEnD,OAAO,KAAK;AAAA,KACZ,EACA,MAAM,MAAM,EAEZ;AAAA;AAAA,EAEH,KAAK;AAAA;AAGN,IAAM,qBAAqB,CAAC,WAAqB;AAAA,EAChD,MAAM,OAAO,OAAO,KAAK,EAAE,EAAE,KAAK;AAAA,EAClC,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAElB,OAAO,KAAK,SAAS,sBAClB,KAAK,MAAM,CAAC,mBAAmB,IAC/B;AAAA;AAGJ,IAAM,2BAA2B,CAAC,WAAqB;AAAA,EACtD,MAAM,eAAe,mBAAmB,MAAM;AAAA,EAC9C,MAAM,UAAU,eACb;AAAA;AAAA;AAAA,EAAgE,iBAChE;AAAA,EAEH,OAAO,IAAI,MAAM,OAAO;AAAA;AAOlB,IAAM,sBAAsB,OAClC,kBACA,MACA,QACA,cACA,KACA,QACI;AAAA,EACJ,MAAM,eAAyB,CAAC;AAAA,EAChC,MAAM,gBAAgB,IAAI,MAAM,CAAC,OAAO,OAAO,gBAAgB,GAAG;AAAA,IACjE,KAAK,QAAQ,IAAI;AAAA,IACjB,KAAK,KAAK,QAAQ,QAAQ,KAAK,MAAM,OAAO,IAAI,EAAE;AAAA,IAClD,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT,CAAC;AAAA,EACD,oBAAoB,cAAc,QAAQ,YAAY;AAAA,EACtD,oBAAoB,cAAc,QAAQ,YAAY;AAAA,EAEtD,MAAM,QAAQ,MAAM,mBAAmB,IAAI;AAAA,EAE3C,IAAI,CAAC,OAAO;AAAA,IACX,cAAc,KAAK;AAAA,IACnB,MAAM,cAAc,OAAO,MAAM,MAAG;AAAA,MAAG;AAAA,KAAS;AAAA,IAChD,MAAM,yBAAyB,YAAY;AAAA,EAC5C;AAAA,EAEA,MAAM,SAAS,MAAM,UAAU,MAAM,QAAQ,cAAc,GAAG;AAAA,EAE9D,cAAc,KAAK;AAAA,EACnB,MAAM,cAAc;AAAA,EAEpB,OAAO;AAAA;",
8
- "debugId": "5205CCA42BB54FF864756E2164756E21",
9
- "names": []
10
- }
@@ -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
- }