@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,121 +0,0 @@
1
- // @bun
2
- import {
3
- logWarn
4
- } from "./chunk-cbkrwmvh.js";
5
- import {
6
- setStreamingSlotWarningController
7
- } from "./chunk-qxq2zcty.js";
8
-
9
- // src/utils/ssrErrorPage.ts
10
- var ssrErrorPage = (framework, error) => {
11
- const frameworkColors = {
12
- angular: "#dd0031",
13
- html: "#e34c26",
14
- htmx: "#1a365d",
15
- react: "#61dafb",
16
- svelte: "#ff3e00",
17
- vue: "#42b883"
18
- };
19
- const accent = frameworkColors[framework] ?? "#94a3b8";
20
- const label = framework.charAt(0).toUpperCase() + framework.slice(1);
21
- const message = error instanceof Error ? error.message : String(error);
22
- return `<!DOCTYPE html>
23
- <html>
24
- <head>
25
- <meta charset="utf-8">
26
- <meta name="viewport" content="width=device-width, initial-scale=1">
27
- <title>SSR Error - AbsoluteJS</title>
28
- <style>
29
- *{margin:0;padding:0;box-sizing:border-box}
30
- body{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:"JetBrains Mono","Fira Code",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}
31
- .card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}
32
- .header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}
33
- .brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}
34
- .badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}
35
- .kind{color:#94a3b8;font-size:13px;font-weight:500}
36
- .content{padding:24px}
37
- .label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}
38
- .message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}
39
- .hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}
40
- </style>
41
- </head>
42
- <body>
43
- <div class="card">
44
- <div class="header">
45
- <div style="display:flex;align-items:center;gap:12px">
46
- <span class="brand">AbsoluteJS</span>
47
- <span class="badge">${label}</span>
48
- </div>
49
- <span class="kind">Server Render Error</span>
50
- </div>
51
- <div class="content">
52
- <div class="label">What went wrong</div>
53
- <pre class="message">${message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")}</pre>
54
- <div class="hint">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>
55
- </div>
56
- </div>
57
- </body>
58
- </html>`;
59
- };
60
-
61
- // src/core/streamingSlotWarningScope.ts
62
- import { AsyncLocalStorage } from "async_hooks";
63
- var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningAsyncLocalStorage");
64
- var isObjectRecord = (value) => Boolean(value) && typeof value === "object";
65
- var isAsyncLocalStorage = (value) => isObjectRecord(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
66
- var getWarningStorage = () => {
67
- const value = Reflect.get(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY);
68
- if (value === null || typeof value === "undefined") {
69
- return;
70
- }
71
- return isAsyncLocalStorage(value) ? value : undefined;
72
- };
73
- var ensureWarningStorage = () => {
74
- const existing = getWarningStorage();
75
- if (existing) {
76
- return existing;
77
- }
78
- const storage = new AsyncLocalStorage;
79
- Reflect.set(globalThis, STREAMING_SLOT_WARNING_STORAGE_KEY, storage);
80
- return storage;
81
- };
82
- var normalizeCallsitePath = (value) => value.replace(`${process.cwd()}/`, "").replace(process.cwd(), "").replace(/^\.\/+/, "");
83
- var formatWarningCallsite = (callsite) => {
84
- const match = callsite.match(/^(.*?)(:\d+:\d+)$/);
85
- if (!match) {
86
- return `\x1B[36m${callsite}\x1B[0m`;
87
- }
88
- return `\x1B[36m${match[1]}\x1B[33m${match[2]}\x1B[0m`;
89
- };
90
- var shouldIgnoreWarningFrame = (frame) => frame.includes("/node_modules/") || frame.includes("/dist/") || frame.includes("/src/react/pageHandler.") || frame.includes("/src/vue/pageHandler.") || frame.includes("/src/svelte/pageHandler.") || frame.includes("/src/angular/pageHandler.") || frame.includes("/src/core/streamingSlotWarningScope.");
91
- var getWarningLocation = (frame) => frame.match(/\((\/[^)]+:\d+:\d+)\)$/)?.[1] ?? frame.match(/at (\/[^ ]+:\d+:\d+)$/)?.[1];
92
- var extractCallsiteFromStack = (stack) => {
93
- const location = stack.split(`
94
- `).slice(1).map((line) => line.trim()).filter((frame) => !shouldIgnoreWarningFrame(frame)).map((frame) => getWarningLocation(frame)).find((frameLocation) => frameLocation !== undefined);
95
- return location ? normalizeCallsitePath(location) : undefined;
96
- };
97
- var buildMissingCollectorWarning = (primitiveName, handlerCallsite) => `${primitiveName} rendered during SSR without streaming slot collection enabled. Add { collectStreamingSlots: true } to this page handler to enable out-of-order streaming for this route.${handlerCallsite ? ` Update ${formatWarningCallsite(handlerCallsite)}.` : ""}`;
98
- setStreamingSlotWarningController({
99
- maybeWarn: (primitiveName) => {
100
- const store = getWarningStorage()?.getStore();
101
- if (!store || store.hasWarned) {
102
- return;
103
- }
104
- store.hasWarned = true;
105
- logWarn(buildMissingCollectorWarning(primitiveName, store.handlerCallsite));
106
- }
107
- });
108
- var captureStreamingSlotWarningCallsite = () => {
109
- if (false) {}
110
- const { stack } = new Error;
111
- if (!stack) {
112
- return;
113
- }
114
- return extractCallsiteFromStack(stack);
115
- };
116
- var runWithStreamingSlotWarningScope = (task, metadata) => ensureWarningStorage().run({ handlerCallsite: metadata?.handlerCallsite, hasWarned: false }, task);
117
-
118
- export { ssrErrorPage, captureStreamingSlotWarningCallsite, runWithStreamingSlotWarningScope };
119
-
120
- //# debugId=68B2E060C3E7E4BF64756E2164756E21
121
- //# sourceMappingURL=chunk-gd6wmknh.js.map
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/ssrErrorPage.ts", "../src/core/streamingSlotWarningScope.ts"],
4
- "sourcesContent": [
5
- "export const ssrErrorPage = (framework: string, error: unknown) => {\n\tconst frameworkColors: Record<string, string> = {\n\t\tangular: '#dd0031',\n\t\thtml: '#e34c26',\n\t\thtmx: '#1a365d',\n\t\treact: '#61dafb',\n\t\tsvelte: '#ff3e00',\n\t\tvue: '#42b883'\n\t};\n\n\tconst accent = frameworkColors[framework] ?? '#94a3b8';\n\tconst label = framework.charAt(0).toUpperCase() + framework.slice(1);\n\tconst message = error instanceof Error ? error.message : String(error);\n\n\treturn `<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>SSR Error - AbsoluteJS</title>\n<style>\n*{margin:0;padding:0;box-sizing:border-box}\nbody{min-height:100vh;background:linear-gradient(135deg,rgba(15,23,42,0.98) 0%,rgba(30,41,59,0.98) 100%);color:#e2e8f0;font-family:\"JetBrains Mono\",\"Fira Code\",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:14px;line-height:1.6;display:flex;align-items:flex-start;justify-content:center;padding:32px}\n.card{max-width:720px;width:100%;background:rgba(30,41,59,0.6);border:1px solid rgba(71,85,105,0.5);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,0.5),0 0 0 1px rgba(255,255,255,0.05);overflow:hidden}\n.header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:rgba(15,23,42,0.5);border-bottom:1px solid rgba(71,85,105,0.4)}\n.brand{font-weight:700;font-size:20px;color:#fff;letter-spacing:-0.02em}\n.badge{padding:5px 10px;border-radius:8px;font-size:12px;font-weight:600;background:${accent};color:#fff;opacity:0.95;box-shadow:0 2px 4px rgba(0,0,0,0.2)}\n.kind{color:#94a3b8;font-size:13px;font-weight:500}\n.content{padding:24px}\n.label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:#94a3b8;margin-bottom:8px}\n.message{margin:0;padding:16px 20px;background:rgba(239,68,68,0.12);border:1px solid rgba(239,68,68,0.25);border-radius:10px;overflow-x:auto;white-space:pre-wrap;word-break:break-word;color:#fca5a5;font-size:13px;line-height:1.5}\n.hint{margin-top:20px;padding:12px 20px;background:rgba(71,85,105,0.3);border-radius:10px;border:1px solid rgba(71,85,105,0.4);color:#cbd5e1;font-size:13px}\n</style>\n</head>\n<body>\n<div class=\"card\">\n<div class=\"header\">\n<div style=\"display:flex;align-items:center;gap:12px\">\n<span class=\"brand\">AbsoluteJS</span>\n<span class=\"badge\">${label}</span>\n</div>\n<span class=\"kind\">Server Render Error</span>\n</div>\n<div class=\"content\">\n<div class=\"label\">What went wrong</div>\n<pre class=\"message\">${message.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}</pre>\n<div class=\"hint\">A component threw during server-side rendering. Check the terminal for the full stack trace.</div>\n</div>\n</div>\n</body>\n</html>`;\n};\n",
6
- "import { AsyncLocalStorage } from 'node:async_hooks';\nimport { logWarn } from '../utils/logger';\nimport { setStreamingSlotWarningController } from './streamingSlotRegistrar';\n\ntype WarningStore = {\n\thandlerCallsite?: string;\n\thasWarned: boolean;\n};\n\ntype WarningStorage = AsyncLocalStorage<WarningStore>;\n\nconst STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for(\n\t'absolutejs.streamingSlotWarningAsyncLocalStorage'\n);\n\nconst isObjectRecord = (value: unknown): value is Record<string, unknown> =>\n\tBoolean(value) && typeof value === 'object';\n\nconst isAsyncLocalStorage = (value: unknown): value is WarningStorage =>\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 getWarningStorage = () => {\n\tconst value = Reflect.get(globalThis, STREAMING_SLOT_WARNING_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 ensureWarningStorage = () => {\n\tconst existing = getWarningStorage();\n\tif (existing) {\n\t\treturn existing;\n\t}\n\n\tconst storage = new AsyncLocalStorage<WarningStore>();\n\tReflect.set(globalThis, STREAMING_SLOT_WARNING_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 formatWarningCallsite = (callsite: string) => {\n\tconst match = callsite.match(/^(.*?)(:\\d+:\\d+)$/);\n\tif (!match) {\n\t\treturn `\\x1b[36m${callsite}\\x1b[0m`;\n\t}\n\n\treturn `\\x1b[36m${match[1]}\\x1b[33m${match[2]}\\x1b[0m`;\n};\n\nconst shouldIgnoreWarningFrame = (frame: string) =>\n\tframe.includes('/node_modules/') ||\n\tframe.includes('/dist/') ||\n\tframe.includes('/src/react/pageHandler.') ||\n\tframe.includes('/src/vue/pageHandler.') ||\n\tframe.includes('/src/svelte/pageHandler.') ||\n\tframe.includes('/src/angular/pageHandler.') ||\n\tframe.includes('/src/core/streamingSlotWarningScope.');\n\nconst getWarningLocation = (frame: string) =>\n\tframe.match(/\\((\\/[^)]+:\\d+:\\d+)\\)$/)?.[1] ??\n\tframe.match(/at (\\/[^ ]+:\\d+:\\d+)$/)?.[1];\n\nconst extractCallsiteFromStack = (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) => !shouldIgnoreWarningFrame(frame))\n\t\t.map((frame) => getWarningLocation(frame))\n\t\t.find((frameLocation) => frameLocation !== undefined);\n\n\treturn location ? normalizeCallsitePath(location) : undefined;\n};\n\nconst buildMissingCollectorWarning = (\n\tprimitiveName: string,\n\thandlerCallsite?: string\n) =>\n\t`${primitiveName} rendered during SSR without streaming slot collection enabled. Add { collectStreamingSlots: true } to this page handler to enable out-of-order streaming for this route.${handlerCallsite ? ` Update ${formatWarningCallsite(handlerCallsite)}.` : ''}`;\n\nsetStreamingSlotWarningController({\n\tmaybeWarn: (primitiveName: string) => {\n\t\tconst store = getWarningStorage()?.getStore();\n\t\tif (!store || store.hasWarned) {\n\t\t\treturn;\n\t\t}\n\n\t\tstore.hasWarned = true;\n\t\tlogWarn(\n\t\t\tbuildMissingCollectorWarning(primitiveName, store.handlerCallsite)\n\t\t);\n\t}\n});\n\nexport const captureStreamingSlotWarningCallsite = () => {\n\tif (process.env.NODE_ENV === 'production') {\n\t\treturn undefined;\n\t}\n\n\tconst { stack } = new Error();\n\tif (!stack) {\n\t\treturn undefined;\n\t}\n\n\treturn extractCallsiteFromStack(stack);\n};\n\nexport const runWithStreamingSlotWarningScope = <T>(\n\ttask: () => Promise<T> | T,\n\tmetadata?: {\n\t\thandlerCallsite?: string;\n\t}\n) =>\n\tensureWarningStorage().run(\n\t\t{ handlerCallsite: metadata?.handlerCallsite, hasWarned: false },\n\t\ttask\n\t);\n"
7
- ],
8
- "mappings": "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",
9
- "debugId": "68B2E060C3E7E4BF64756E2164756E21",
10
- "names": []
11
- }
@@ -1,85 +0,0 @@
1
- // @bun
2
- import {
3
- HOURS_IN_HALF_DAY,
4
- MILLISECONDS_IN_A_MINUTE,
5
- MILLISECONDS_IN_A_SECOND,
6
- TIME_PRECISION
7
- } from "./chunk-qh75agse.js";
8
-
9
- // src/utils/getDurationString.ts
10
- var getDurationString = (duration) => {
11
- let durationString;
12
- if (duration < MILLISECONDS_IN_A_SECOND) {
13
- durationString = `${duration.toFixed(TIME_PRECISION)}ms`;
14
- } else if (duration < MILLISECONDS_IN_A_MINUTE) {
15
- durationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;
16
- } else {
17
- const totalSeconds = Math.round(duration / MILLISECONDS_IN_A_SECOND);
18
- const minutes = Math.floor(totalSeconds / 60);
19
- const seconds = totalSeconds % 60;
20
- durationString = seconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;
21
- }
22
- return durationString;
23
- };
24
-
25
- // src/utils/startupBanner.ts
26
- var colors = {
27
- bold: "\x1B[1m",
28
- cyan: "\x1B[36m",
29
- dim: "\x1B[2m",
30
- green: "\x1B[32m",
31
- reset: "\x1B[0m"
32
- };
33
- var MONTHS = [
34
- "Jan",
35
- "Feb",
36
- "Mar",
37
- "Apr",
38
- "May",
39
- "Jun",
40
- "Jul",
41
- "Aug",
42
- "Sep",
43
- "Oct",
44
- "Nov",
45
- "Dec"
46
- ];
47
- var formatTimestamp = () => {
48
- const now = new Date;
49
- const month = MONTHS[now.getMonth()];
50
- const day = now.getDate().toString().padStart(2, "0");
51
- let hours = now.getHours();
52
- const minutes = now.getMinutes().toString().padStart(2, "0");
53
- const seconds = now.getSeconds().toString().padStart(2, "0");
54
- const ampm = hours >= HOURS_IN_HALF_DAY ? "PM" : "AM";
55
- hours = hours % HOURS_IN_HALF_DAY || HOURS_IN_HALF_DAY;
56
- return `${month} ${day} ${hours}:${minutes}:${seconds} ${ampm}`;
57
- };
58
- var startupBanner = (options) => {
59
- const {
60
- version,
61
- readyDuration,
62
- buildDuration,
63
- port,
64
- host,
65
- networkUrl,
66
- protocol = "http"
67
- } = options;
68
- const name = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset}`;
69
- const ver = `${colors.dim}v${version}${colors.reset}`;
70
- const time = `${colors.dim}ready in${colors.reset} ${colors.bold}${getDurationString(readyDuration)}${colors.reset}`;
71
- const build = typeof buildDuration === "number" && Number.isFinite(buildDuration) ? ` ${colors.dim}(build ${getDurationString(buildDuration)})${colors.reset}` : "";
72
- console.log("");
73
- console.log(` ${name} ${ver} ${time}${build}`);
74
- console.log("");
75
- console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Local:${colors.reset} ${protocol}://${host === "0.0.0.0" ? "localhost" : host}:${port}/`);
76
- if (networkUrl) {
77
- console.log(` ${colors.green}\u279C${colors.reset} ${colors.bold}Network:${colors.reset} ${networkUrl}`);
78
- }
79
- console.log("");
80
- };
81
-
82
- export { getDurationString, formatTimestamp, startupBanner };
83
-
84
- //# debugId=B3B5C2FCAC136C6264756E2164756E21
85
- //# sourceMappingURL=chunk-gf0ygptk.js.map
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/utils/getDurationString.ts", "../src/utils/startupBanner.ts"],
4
- "sourcesContent": [
5
- "import {\n\tMILLISECONDS_IN_A_SECOND,\n\tTIME_PRECISION,\n\tMILLISECONDS_IN_A_MINUTE\n} from '../constants';\n\nexport const getDurationString = (duration: number) => {\n\tlet durationString;\n\n\tif (duration < MILLISECONDS_IN_A_SECOND) {\n\t\tdurationString = `${duration.toFixed(TIME_PRECISION)}ms`;\n\t} else if (duration < MILLISECONDS_IN_A_MINUTE) {\n\t\tdurationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;\n\t} else {\n\t\tconst totalSeconds = Math.round(duration / MILLISECONDS_IN_A_SECOND);\n\t\tconst minutes = Math.floor(totalSeconds / 60);\n\t\tconst seconds = totalSeconds % 60;\n\t\tdurationString =\n\t\t\tseconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;\n\t}\n\n\treturn durationString;\n};\n",
6
- "import { HOURS_IN_HALF_DAY } from '../constants';\nimport { getDurationString } from './getDurationString';\n\nconst colors = {\n\tbold: '\\x1b[1m',\n\tcyan: '\\x1b[36m',\n\tdim: '\\x1b[2m',\n\tgreen: '\\x1b[32m',\n\treset: '\\x1b[0m'\n} as const;\n\nconst MONTHS = [\n\t'Jan',\n\t'Feb',\n\t'Mar',\n\t'Apr',\n\t'May',\n\t'Jun',\n\t'Jul',\n\t'Aug',\n\t'Sep',\n\t'Oct',\n\t'Nov',\n\t'Dec'\n] as const;\n\nexport const formatTimestamp = () => {\n\tconst now = new Date();\n\tconst month = MONTHS[now.getMonth()];\n\tconst day = now.getDate().toString().padStart(2, '0');\n\tlet hours = now.getHours();\n\tconst minutes = now.getMinutes().toString().padStart(2, '0');\n\tconst seconds = now.getSeconds().toString().padStart(2, '0');\n\tconst ampm = hours >= HOURS_IN_HALF_DAY ? 'PM' : 'AM';\n\thours = hours % HOURS_IN_HALF_DAY || HOURS_IN_HALF_DAY;\n\n\treturn `${month} ${day} ${hours}:${minutes}:${seconds} ${ampm}`;\n};\n\nexport const startupBanner = (options: {\n\tversion: string;\n\treadyDuration: number;\n\tbuildDuration?: number;\n\tport: string | number;\n\thost: string;\n\tnetworkUrl?: string;\n\tprotocol?: string;\n}) => {\n\tconst {\n\t\tversion,\n\t\treadyDuration,\n\t\tbuildDuration,\n\t\tport,\n\t\thost,\n\t\tnetworkUrl,\n\t\tprotocol = 'http'\n\t} = options;\n\tconst name = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset}`;\n\tconst ver = `${colors.dim}v${version}${colors.reset}`;\n\tconst time = `${colors.dim}ready in${colors.reset} ${colors.bold}${getDurationString(readyDuration)}${colors.reset}`;\n\tconst build =\n\t\ttypeof buildDuration === 'number' && Number.isFinite(buildDuration)\n\t\t\t? ` ${colors.dim}(build ${getDurationString(buildDuration)})${colors.reset}`\n\t\t\t: '';\n\tconsole.log('');\n\tconsole.log(` ${name} ${ver} ${time}${build}`);\n\tconsole.log('');\n\tconsole.log(\n\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Local:${colors.reset} ${protocol}://${host === '0.0.0.0' ? 'localhost' : host}:${port}/`\n\t);\n\tif (networkUrl) {\n\t\tconsole.log(\n\t\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Network:${colors.reset} ${networkUrl}`\n\t\t);\n\t}\n\tconsole.log('');\n};\n"
7
- ],
8
- "mappings": ";;;;;;;;;AAMO,IAAM,oBAAoB,CAAC,aAAqB;AAAA,EACtD,IAAI;AAAA,EAEJ,IAAI,WAAW,0BAA0B;AAAA,IACxC,iBAAiB,GAAG,SAAS,QAAQ,cAAc;AAAA,EACpD,EAAO,SAAI,WAAW,0BAA0B;AAAA,IAC/C,iBAAiB,IAAI,WAAW,0BAA0B,QAAQ,cAAc;AAAA,EACjF,EAAO;AAAA,IACN,MAAM,eAAe,KAAK,MAAM,WAAW,wBAAwB;AAAA,IACnE,MAAM,UAAU,KAAK,MAAM,eAAe,EAAE;AAAA,IAC5C,MAAM,UAAU,eAAe;AAAA,IAC/B,iBACC,YAAY,IAAI,GAAG,aAAa,GAAG,YAAY;AAAA;AAAA,EAGjD,OAAO;AAAA;;;AClBR,IAAM,SAAS;AAAA,EACd,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AACR;AAEA,IAAM,SAAS;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEO,IAAM,kBAAkB,MAAM;AAAA,EACpC,MAAM,MAAM,IAAI;AAAA,EAChB,MAAM,QAAQ,OAAO,IAAI,SAAS;AAAA,EAClC,MAAM,MAAM,IAAI,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA,EACpD,IAAI,QAAQ,IAAI,SAAS;AAAA,EACzB,MAAM,UAAU,IAAI,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA,EAC3D,MAAM,UAAU,IAAI,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AAAA,EAC3D,MAAM,OAAO,SAAS,oBAAoB,OAAO;AAAA,EACjD,QAAQ,QAAQ,qBAAqB;AAAA,EAErC,OAAO,GAAG,SAAS,OAAO,SAAS,WAAW,WAAW;AAAA;AAGnD,IAAM,gBAAgB,CAAC,YAQxB;AAAA,EACL;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,MACR;AAAA,EACJ,MAAM,OAAO,GAAG,OAAO,OAAO,OAAO,iBAAiB,OAAO;AAAA,EAC7D,MAAM,MAAM,GAAG,OAAO,OAAO,UAAU,OAAO;AAAA,EAC9C,MAAM,OAAO,GAAG,OAAO,cAAc,OAAO,SAAS,OAAO,OAAO,kBAAkB,aAAa,IAAI,OAAO;AAAA,EAC7G,MAAM,QACL,OAAO,kBAAkB,YAAY,OAAO,SAAS,aAAa,IAC/D,IAAI,OAAO,aAAa,kBAAkB,aAAa,KAAK,OAAO,UACnE;AAAA,EACJ,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IAAI,KAAK,QAAQ,QAAQ,OAAO,OAAO;AAAA,EAC/C,QAAQ,IAAI,EAAE;AAAA,EACd,QAAQ,IACP,KAAK,OAAO,cAAQ,OAAO,UAAU,OAAO,aAAa,OAAO,WAAW,cAAc,SAAS,YAAY,cAAc,QAAQ,OACrI;AAAA,EACA,IAAI,YAAY;AAAA,IACf,QAAQ,IACP,KAAK,OAAO,cAAQ,OAAO,UAAU,OAAO,eAAe,OAAO,SAAS,YAC5E;AAAA,EACD;AAAA,EACA,QAAQ,IAAI,EAAE;AAAA;",
9
- "debugId": "B3B5C2FCAC136C6264756E2164756E21",
10
- "names": []
11
- }
@@ -1,220 +0,0 @@
1
- // @bun
2
- import {
3
- generateVendorEntrySource
4
- } from "./chunk-7kjj42xm.js";
5
- import {
6
- __require
7
- } from "./chunk-bmgqm774.js";
8
-
9
- // src/build/buildDepVendor.ts
10
- import { mkdirSync } from "fs";
11
- import { join } from "path";
12
- import { rm } from "fs/promises";
13
- var {build: bunBuild, Glob } = globalThis.Bun;
14
- var toSafeFileName = (specifier) => specifier.replace(/\//g, "_").replace(/@/g, "").replace(/-/g, "_");
15
- var isResolvable = (specifier) => {
16
- try {
17
- Bun.resolveSync(specifier, process.cwd());
18
- return true;
19
- } catch {
20
- return false;
21
- }
22
- };
23
- var isBareSpecifier = (spec) => !spec.startsWith(".") && !spec.startsWith("/") && !spec.startsWith("@src/");
24
- var isAbsolutePackageSpecifier = (spec) => spec === "@absolutejs/absolute" || spec.startsWith("@absolutejs/absolute/");
25
- var FRAMEWORK_SPECIFIERS = new Set([
26
- "react",
27
- "react-dom",
28
- "react-dom/client",
29
- "react-dom/server",
30
- "react/jsx-runtime",
31
- "react/jsx-dev-runtime",
32
- "react-refresh/runtime",
33
- "svelte",
34
- "svelte/internal",
35
- "svelte/internal/flags/async",
36
- "svelte/internal/flags/legacy",
37
- "svelte/internal/client",
38
- "svelte/internal/disclose-version",
39
- "svelte/server",
40
- "svelte/store",
41
- "svelte/compiler",
42
- "vue",
43
- "vue/server-renderer",
44
- "@vue/compiler-sfc"
45
- ]);
46
- var FRAMEWORK_NAMESPACE_PREFIXES = ["@angular/"];
47
- var isFrameworkSpecifier = (spec) => FRAMEWORK_SPECIFIERS.has(spec) || FRAMEWORK_NAMESPACE_PREFIXES.some((prefix) => spec.startsWith(prefix));
48
- var FRAMEWORK_EXTERNALS = [
49
- ...FRAMEWORK_SPECIFIERS,
50
- ...FRAMEWORK_NAMESPACE_PREFIXES.map((prefix) => `${prefix}*`)
51
- ];
52
- var isSkippedFile = (file) => file.includes("node_modules") || file.includes("/build/") || file.includes("/dist/") || file.includes("/indexes/");
53
- var isDepSpecifier = (path) => isBareSpecifier(path) && !isFrameworkSpecifier(path) && !isAbsolutePackageSpecifier(path);
54
- var isFrameworkRootCandidate = (path) => isBareSpecifier(path) && isFrameworkSpecifier(path) && !isAbsolutePackageSpecifier(path);
55
- var readFileSpecifiers = async (file, transpiler) => {
56
- const dep = [];
57
- const framework = [];
58
- try {
59
- const content = await Bun.file(file).text();
60
- for (const imp of transpiler.scanImports(content)) {
61
- if (isDepSpecifier(imp.path))
62
- dep.push(imp.path);
63
- else if (isFrameworkRootCandidate(imp.path))
64
- framework.push(imp.path);
65
- }
66
- } catch {}
67
- return { dep, framework };
68
- };
69
- var scanDirFiles = async (dir) => {
70
- const empty = [];
71
- const glob = new Glob("**/*.{ts,tsx,js,jsx}");
72
- try {
73
- const all = await Array.fromAsync(glob.scan({ absolute: true, cwd: dir }));
74
- return all.filter((file) => !isSkippedFile(file));
75
- } catch {
76
- return empty;
77
- }
78
- };
79
- var collectDirSpecifiers = async (dir, transpiler, dep, framework) => {
80
- const files = await scanDirFiles(dir);
81
- const results = await Promise.all(files.map((file) => readFileSpecifiers(file, transpiler)));
82
- for (const result of results) {
83
- for (const spec of result.dep)
84
- dep.add(spec);
85
- for (const spec of result.framework)
86
- framework.add(spec);
87
- }
88
- };
89
- var scanBareImports = async (directories) => {
90
- const dep = new Set;
91
- const framework = new Set;
92
- const transpiler = new Bun.Transpiler({ loader: "tsx" });
93
- await Promise.all(directories.map((dir) => collectDirSpecifiers(dir, transpiler, dep, framework)));
94
- return {
95
- dep: Array.from(dep).filter(isResolvable),
96
- framework: Array.from(framework).filter(isResolvable)
97
- };
98
- };
99
- var collectTransitiveImports = async (specs, alreadyVendored, alreadyScanned) => {
100
- const { readFileSync } = await import("fs");
101
- const transpiler = new Bun.Transpiler({ loader: "js" });
102
- const newSpecs = new Set;
103
- for (const spec of specs) {
104
- if (alreadyScanned.has(spec))
105
- continue;
106
- alreadyScanned.add(spec);
107
- let resolved;
108
- try {
109
- resolved = Bun.resolveSync(spec, process.cwd());
110
- } catch {
111
- continue;
112
- }
113
- let content;
114
- try {
115
- content = readFileSync(resolved, "utf-8");
116
- } catch {
117
- continue;
118
- }
119
- let imports;
120
- try {
121
- imports = transpiler.scanImports(content);
122
- } catch {
123
- continue;
124
- }
125
- for (const imp of imports) {
126
- const child = imp.path;
127
- if (!isBareSpecifier(child))
128
- continue;
129
- if (isFrameworkSpecifier(child))
130
- continue;
131
- if (isAbsolutePackageSpecifier(child))
132
- continue;
133
- if (alreadyVendored.has(child))
134
- continue;
135
- if (!isResolvable(child))
136
- continue;
137
- newSpecs.add(child);
138
- }
139
- }
140
- return newSpecs;
141
- };
142
- var buildDepVendorPass = async (specifiers, vendorDir, tmpDir) => {
143
- const entrypoints = await Promise.all(specifiers.map(async (specifier) => {
144
- const safeName = toSafeFileName(specifier);
145
- const entryPath = join(tmpDir, `${safeName}.ts`);
146
- await Bun.write(entryPath, generateVendorEntrySource(specifier));
147
- return entryPath;
148
- }));
149
- return bunBuild({
150
- entrypoints,
151
- external: FRAMEWORK_EXTERNALS,
152
- format: "esm",
153
- minify: false,
154
- naming: "[name].[ext]",
155
- outdir: vendorDir,
156
- splitting: true,
157
- target: "browser",
158
- throw: false
159
- });
160
- };
161
- var MAX_VENDOR_DISCOVERY_PASSES = 5;
162
- var buildDepVendor = async (buildDir, directories) => {
163
- const { dep: initialSpecs, framework: frameworkRoots } = await scanBareImports(directories);
164
- if (initialSpecs.length === 0 && frameworkRoots.length === 0)
165
- return {};
166
- const vendorDir = join(buildDir, "vendor");
167
- mkdirSync(vendorDir, { recursive: true });
168
- const tmpDir = join(buildDir, "_dep_vendor_tmp");
169
- mkdirSync(tmpDir, { recursive: true });
170
- const allSpecs = new Set(initialSpecs);
171
- const alreadyScanned = new Set;
172
- let frontier = [...allSpecs, ...frameworkRoots];
173
- for (let pass = 0;pass < MAX_VENDOR_DISCOVERY_PASSES; pass++) {
174
- const additional = await collectTransitiveImports(frontier, allSpecs, alreadyScanned);
175
- if (additional.size === 0)
176
- break;
177
- for (const spec of additional)
178
- allSpecs.add(spec);
179
- frontier = additional;
180
- }
181
- if (allSpecs.size === 0)
182
- return {};
183
- const result = await buildDepVendorPass(Array.from(allSpecs), vendorDir, tmpDir);
184
- const success = result.success;
185
- if (!success) {
186
- console.warn("\u26A0\uFE0F Dependency vendor build had errors:", result.logs);
187
- }
188
- await rm(tmpDir, { force: true, recursive: true });
189
- const paths = {};
190
- for (const specifier of allSpecs) {
191
- paths[specifier] = `/vendor/${toSafeFileName(specifier)}.js`;
192
- }
193
- return paths;
194
- };
195
- var computeDepVendorPaths = async (directories) => {
196
- const { dep: initialSpecs, framework: frameworkRoots } = await scanBareImports(directories);
197
- const allSpecs = new Set(initialSpecs);
198
- const alreadyScanned = new Set;
199
- let frontier = [...allSpecs, ...frameworkRoots];
200
- for (let pass = 0;pass < MAX_VENDOR_DISCOVERY_PASSES; pass++) {
201
- const additional = await collectTransitiveImports(frontier, allSpecs, alreadyScanned);
202
- if (additional.size === 0)
203
- break;
204
- for (const spec of additional)
205
- allSpecs.add(spec);
206
- frontier = additional;
207
- }
208
- const paths = {};
209
- for (const specifier of allSpecs) {
210
- paths[specifier] = `/vendor/${toSafeFileName(specifier)}.js`;
211
- }
212
- return paths;
213
- };
214
- export {
215
- computeDepVendorPaths,
216
- buildDepVendor
217
- };
218
-
219
- //# debugId=823CF040B4D0FA0164756E2164756E21
220
- //# sourceMappingURL=chunk-gytkmthr.js.map
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/build/buildDepVendor.ts"],
4
- "sourcesContent": [
5
- "import { mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { rm } from 'node:fs/promises';\nimport { build as bunBuild, Glob } from 'bun';\nimport { generateVendorEntrySource } from './vendorEntrySource';\n\nconst toSafeFileName = (specifier: string) =>\n\tspecifier.replace(/\\//g, '_').replace(/@/g, '').replace(/-/g, '_');\n\nconst isResolvable = (specifier: string) => {\n\ttry {\n\t\tBun.resolveSync(specifier, process.cwd());\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst isBareSpecifier = (spec: string) =>\n\t!spec.startsWith('.') &&\n\t!spec.startsWith('/') &&\n\t!spec.startsWith('@src/');\n\nconst isAbsolutePackageSpecifier = (spec: string) =>\n\tspec === '@absolutejs/absolute' ||\n\tspec.startsWith('@absolutejs/absolute/');\n\n// Known specifiers that are already handled by framework-specific vendors.\n// React/Svelte/Vue have finite, well-known entrypoints so they're listed\n// exactly. Angular publishes an open-ended ecosystem under @angular/* (router,\n// forms, common/http, animations, material, cdk, …); we externalize the whole\n// namespace via FRAMEWORK_NAMESPACE_PREFIXES so users can adopt new @angular/*\n// packages without DI identity-mismatch bugs.\nconst FRAMEWORK_SPECIFIERS = new Set([\n\t'react',\n\t'react-dom',\n\t'react-dom/client',\n\t'react-dom/server',\n\t'react/jsx-runtime',\n\t'react/jsx-dev-runtime',\n\t'react-refresh/runtime',\n\t'svelte',\n\t'svelte/internal',\n\t'svelte/internal/flags/async',\n\t'svelte/internal/flags/legacy',\n\t'svelte/internal/client',\n\t'svelte/internal/disclose-version',\n\t'svelte/server',\n\t'svelte/store',\n\t'svelte/compiler',\n\t'vue',\n\t'vue/server-renderer',\n\t'@vue/compiler-sfc'\n]);\n\nconst FRAMEWORK_NAMESPACE_PREFIXES = ['@angular/'];\n\nconst isFrameworkSpecifier = (spec: string) =>\n\tFRAMEWORK_SPECIFIERS.has(spec) ||\n\tFRAMEWORK_NAMESPACE_PREFIXES.some((prefix) => spec.startsWith(prefix));\n\nconst FRAMEWORK_EXTERNALS = [\n\t...FRAMEWORK_SPECIFIERS,\n\t...FRAMEWORK_NAMESPACE_PREFIXES.map((prefix) => `${prefix}*`)\n];\n\nconst isSkippedFile = (file: string) =>\n\tfile.includes('node_modules') ||\n\tfile.includes('/build/') ||\n\tfile.includes('/dist/') ||\n\tfile.includes('/indexes/');\n\nconst isDepSpecifier = (path: string) =>\n\tisBareSpecifier(path) &&\n\t!isFrameworkSpecifier(path) &&\n\t!isAbsolutePackageSpecifier(path);\n\nconst isFrameworkRootCandidate = (path: string) =>\n\tisBareSpecifier(path) &&\n\tisFrameworkSpecifier(path) &&\n\t!isAbsolutePackageSpecifier(path);\n\ninterface ScannedSpecifiers {\n\tdep: string[];\n\tframework: string[];\n}\n\nconst readFileSpecifiers = async (\n\tfile: string,\n\ttranspiler: Bun.Transpiler\n): Promise<ScannedSpecifiers> => {\n\tconst dep: string[] = [];\n\tconst framework: string[] = [];\n\ttry {\n\t\tconst content = await Bun.file(file).text();\n\t\tfor (const imp of transpiler.scanImports(content)) {\n\t\t\tif (isDepSpecifier(imp.path)) dep.push(imp.path);\n\t\t\telse if (isFrameworkRootCandidate(imp.path)) framework.push(imp.path);\n\t\t}\n\t} catch {\n\t\t// unreadable file, skip\n\t}\n\n\treturn { dep, framework };\n};\n\nconst scanDirFiles = async (dir: string) => {\n\tconst empty: string[] = [];\n\tconst glob = new Glob('**/*.{ts,tsx,js,jsx}');\n\ttry {\n\t\tconst all = await Array.fromAsync(\n\t\t\tglob.scan({ absolute: true, cwd: dir })\n\t\t);\n\n\t\treturn all.filter((file) => !isSkippedFile(file));\n\t} catch {\n\t\treturn empty;\n\t}\n};\n\nconst collectDirSpecifiers = async (\n\tdir: string,\n\ttranspiler: Bun.Transpiler,\n\tdep: Set<string>,\n\tframework: Set<string>\n) => {\n\tconst files = await scanDirFiles(dir);\n\tconst results = await Promise.all(\n\t\tfiles.map((file) => readFileSpecifiers(file, transpiler))\n\t);\n\tfor (const result of results) {\n\t\tfor (const spec of result.dep) dep.add(spec);\n\t\tfor (const spec of result.framework) framework.add(spec);\n\t}\n};\n\n// Scan source files to find all bare import specifiers\nconst scanBareImports = async (\n\tdirectories: string[]\n): Promise<ScannedSpecifiers> => {\n\tconst dep = new Set<string>();\n\tconst framework = new Set<string>();\n\tconst transpiler = new Bun.Transpiler({ loader: 'tsx' });\n\n\tawait Promise.all(\n\t\tdirectories.map((dir) =>\n\t\t\tcollectDirSpecifiers(dir, transpiler, dep, framework)\n\t\t)\n\t);\n\n\treturn {\n\t\tdep: Array.from(dep).filter(isResolvable),\n\t\tframework: Array.from(framework).filter(isResolvable)\n\t};\n};\n\n\n// Resolve each bare specifier and scan its entry file for further bare imports\n// (subpaths of the same or other packages). Bun's `external: [\"rxjs\"]` matches\n// subpaths like `rxjs/operators` as a prefix, so any subpath a transitive dep\n// imports needs its own vendor entry — otherwise the page bundle ends up with\n// an un-resolvable `import \"rxjs/operators\"` and hydration 404s.\n//\n// Framework specs (e.g. `@angular/fire/compat/auth`) can appear as scan roots\n// — their content is read and their non-framework descendants harvested — but\n// the framework specs themselves are never added to the vendor list. Their own\n// vendor pipeline (Angular/React/etc.) handles them. This is what surfaces\n// subpaths like `@firebase/auth/internal` that an Angular package transitively\n// imports through firebase-compat layers.\nconst collectTransitiveImports = async (\n\tspecs: Iterable<string>,\n\talreadyVendored: Set<string>,\n\talreadyScanned: Set<string>\n) => {\n\tconst { readFileSync } = await import('node:fs');\n\tconst transpiler = new Bun.Transpiler({ loader: 'js' });\n\tconst newSpecs = new Set<string>();\n\n\tfor (const spec of specs) {\n\t\tif (alreadyScanned.has(spec)) continue;\n\t\talreadyScanned.add(spec);\n\t\tlet resolved: string;\n\t\ttry {\n\t\t\tresolved = Bun.resolveSync(spec, process.cwd());\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tlet content: string;\n\t\ttry {\n\t\t\tcontent = readFileSync(resolved, 'utf-8');\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tlet imports;\n\t\ttry {\n\t\t\timports = transpiler.scanImports(content);\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const imp of imports) {\n\t\t\tconst child = imp.path;\n\t\t\tif (!isBareSpecifier(child)) continue;\n\t\t\tif (isFrameworkSpecifier(child)) continue;\n\t\t\tif (isAbsolutePackageSpecifier(child)) continue;\n\t\t\tif (alreadyVendored.has(child)) continue;\n\t\t\tif (!isResolvable(child)) continue;\n\t\t\tnewSpecs.add(child);\n\t\t}\n\t}\n\n\treturn newSpecs;\n};\n\nconst buildDepVendorPass = async (\n\tspecifiers: string[],\n\tvendorDir: string,\n\ttmpDir: string\n) => {\n\tconst entrypoints = await Promise.all(\n\t\tspecifiers.map(async (specifier) => {\n\t\t\tconst safeName = toSafeFileName(specifier);\n\t\t\tconst entryPath = join(tmpDir, `${safeName}.ts`);\n\t\t\tawait Bun.write(entryPath, generateVendorEntrySource(specifier));\n\n\t\t\treturn entryPath;\n\t\t})\n\t);\n\n\t// Externalize framework packages so vendor files import from the\n\t// same vendor instances — prevents duplicate React/Svelte/Vue/Angular\n\treturn bunBuild({\n\t\tentrypoints,\n\t\texternal: FRAMEWORK_EXTERNALS,\n\t\tformat: 'esm',\n\t\tminify: false,\n\t\tnaming: '[name].[ext]',\n\t\toutdir: vendorDir,\n\t\tsplitting: true,\n\t\ttarget: 'browser',\n\t\tthrow: false\n\t});\n};\n\nconst MAX_VENDOR_DISCOVERY_PASSES = 5;\n\nexport const buildDepVendor = async (\n\tbuildDir: string,\n\tdirectories: string[]\n) => {\n\tconst { dep: initialSpecs, framework: frameworkRoots } =\n\t\tawait scanBareImports(directories);\n\tif (initialSpecs.length === 0 && frameworkRoots.length === 0) return {};\n\n\tconst vendorDir = join(buildDir, 'vendor');\n\tmkdirSync(vendorDir, { recursive: true });\n\n\tconst tmpDir = join(buildDir, '_dep_vendor_tmp');\n\tmkdirSync(tmpDir, { recursive: true });\n\n\tconst allSpecs = new Set<string>(initialSpecs);\n\tconst alreadyScanned = new Set<string>();\n\n\t// Discover transitive subpath imports BEFORE the vendor build, because the\n\t// page bundle build (in core/build.ts) externalizes any spec that's the\n\t// prefix of an `external: [\"pkg\"]` entry — including subpaths like\n\t// `rxjs/operators` that aren't directly imported in user source.\n\t//\n\t// Seed pass 0 with framework roots in addition to dep specs so non-framework\n\t// transitive deps reachable only through a framework package\n\t// (e.g. `@angular/fire/compat/auth` → `firebase/compat/auth` →\n\t// `@firebase/auth-compat` → `@firebase/auth/internal`) are still discovered.\n\tlet frontier: Iterable<string> = [...allSpecs, ...frameworkRoots];\n\tfor (let pass = 0; pass < MAX_VENDOR_DISCOVERY_PASSES; pass++) {\n\t\tconst additional = await collectTransitiveImports(\n\t\t\tfrontier,\n\t\t\tallSpecs,\n\t\t\talreadyScanned\n\t\t);\n\t\tif (additional.size === 0) break;\n\t\tfor (const spec of additional) allSpecs.add(spec);\n\t\tfrontier = additional;\n\t}\n\n\tif (allSpecs.size === 0) return {};\n\n\tconst result = await buildDepVendorPass(\n\t\tArray.from(allSpecs),\n\t\tvendorDir,\n\t\ttmpDir\n\t);\n\tconst success = result.success;\n\tif (!success) {\n\t\tconsole.warn('⚠️ Dependency vendor build had errors:', result.logs);\n\t}\n\n\tawait rm(tmpDir, { force: true, recursive: true });\n\n\t// Cross-vendor specifier rewriting (e.g. a dep-vendor wrapping `@sentry/angular`\n\t// externalizes `@angular/core` and leaves it bare in the output) happens in a\n\t// centralized step after ALL vendor builds finish — see `rewriteVendorDirectories`\n\t// in rewriteImports.ts, called from devBuild/rebuildTrigger.\n\n\tconst paths: Record<string, string> = {};\n\tfor (const specifier of allSpecs) {\n\t\tpaths[specifier] = `/vendor/${toSafeFileName(specifier)}.js`;\n\t}\n\n\treturn paths;\n};\n\nexport const computeDepVendorPaths = async (directories: string[]) => {\n\tconst { dep: initialSpecs, framework: frameworkRoots } =\n\t\tawait scanBareImports(directories);\n\tconst allSpecs = new Set<string>(initialSpecs);\n\tconst alreadyScanned = new Set<string>();\n\n\t// Mirror buildDepVendor's transitive discovery so the path map handed to\n\t// the main page build (which uses these as both externals and rewrite\n\t// targets) already includes subpaths like `rxjs/operators` that transitive\n\t// deps import — including non-framework subpaths that are only reachable\n\t// through a framework root. Without this, page bundles end up with\n\t// un-resolvable bare specifiers after externalization.\n\tlet frontier: Iterable<string> = [...allSpecs, ...frameworkRoots];\n\tfor (let pass = 0; pass < MAX_VENDOR_DISCOVERY_PASSES; pass++) {\n\t\tconst additional = await collectTransitiveImports(\n\t\t\tfrontier,\n\t\t\tallSpecs,\n\t\t\talreadyScanned\n\t\t);\n\t\tif (additional.size === 0) break;\n\t\tfor (const spec of additional) allSpecs.add(spec);\n\t\tfrontier = additional;\n\t}\n\n\tconst paths: Record<string, string> = {};\n\tfor (const specifier of allSpecs) {\n\t\tpaths[specifier] = `/vendor/${toSafeFileName(specifier)}.js`;\n\t}\n\n\treturn paths;\n};\n"
6
- ],
7
- "mappings": ";;;;;;;;;AAAA;AACA;AACA;AACA;AAGA,IAAM,iBAAiB,CAAC,cACvB,UAAU,QAAQ,OAAO,GAAG,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,MAAM,GAAG;AAElE,IAAM,eAAe,CAAC,cAAsB;AAAA,EAC3C,IAAI;AAAA,IACH,IAAI,YAAY,WAAW,QAAQ,IAAI,CAAC;AAAA,IAExC,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,kBAAkB,CAAC,SACxB,CAAC,KAAK,WAAW,GAAG,KACpB,CAAC,KAAK,WAAW,GAAG,KACpB,CAAC,KAAK,WAAW,OAAO;AAEzB,IAAM,6BAA6B,CAAC,SACnC,SAAS,0BACT,KAAK,WAAW,uBAAuB;AAQxC,IAAM,uBAAuB,IAAI,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,+BAA+B,CAAC,WAAW;AAEjD,IAAM,uBAAuB,CAAC,SAC7B,qBAAqB,IAAI,IAAI,KAC7B,6BAA6B,KAAK,CAAC,WAAW,KAAK,WAAW,MAAM,CAAC;AAEtE,IAAM,sBAAsB;AAAA,EAC3B,GAAG;AAAA,EACH,GAAG,6BAA6B,IAAI,CAAC,WAAW,GAAG,SAAS;AAC7D;AAEA,IAAM,gBAAgB,CAAC,SACtB,KAAK,SAAS,cAAc,KAC5B,KAAK,SAAS,SAAS,KACvB,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,WAAW;AAE1B,IAAM,iBAAiB,CAAC,SACvB,gBAAgB,IAAI,KACpB,CAAC,qBAAqB,IAAI,KAC1B,CAAC,2BAA2B,IAAI;AAEjC,IAAM,2BAA2B,CAAC,SACjC,gBAAgB,IAAI,KACpB,qBAAqB,IAAI,KACzB,CAAC,2BAA2B,IAAI;AAOjC,IAAM,qBAAqB,OAC1B,MACA,eACgC;AAAA,EAChC,MAAM,MAAgB,CAAC;AAAA,EACvB,MAAM,YAAsB,CAAC;AAAA,EAC7B,IAAI;AAAA,IACH,MAAM,UAAU,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,IAC1C,WAAW,OAAO,WAAW,YAAY,OAAO,GAAG;AAAA,MAClD,IAAI,eAAe,IAAI,IAAI;AAAA,QAAG,IAAI,KAAK,IAAI,IAAI;AAAA,MAC1C,SAAI,yBAAyB,IAAI,IAAI;AAAA,QAAG,UAAU,KAAK,IAAI,IAAI;AAAA,IACrE;AAAA,IACC,MAAM;AAAA,EAIR,OAAO,EAAE,KAAK,UAAU;AAAA;AAGzB,IAAM,eAAe,OAAO,QAAgB;AAAA,EAC3C,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,OAAO,IAAI,KAAK,sBAAsB;AAAA,EAC5C,IAAI;AAAA,IACH,MAAM,MAAM,MAAM,MAAM,UACvB,KAAK,KAAK,EAAE,UAAU,MAAM,KAAK,IAAI,CAAC,CACvC;AAAA,IAEA,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC;AAAA,IAC/C,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,IAAM,uBAAuB,OAC5B,KACA,YACA,KACA,cACI;AAAA,EACJ,MAAM,QAAQ,MAAM,aAAa,GAAG;AAAA,EACpC,MAAM,UAAU,MAAM,QAAQ,IAC7B,MAAM,IAAI,CAAC,SAAS,mBAAmB,MAAM,UAAU,CAAC,CACzD;AAAA,EACA,WAAW,UAAU,SAAS;AAAA,IAC7B,WAAW,QAAQ,OAAO;AAAA,MAAK,IAAI,IAAI,IAAI;AAAA,IAC3C,WAAW,QAAQ,OAAO;AAAA,MAAW,UAAU,IAAI,IAAI;AAAA,EACxD;AAAA;AAID,IAAM,kBAAkB,OACvB,gBACgC;AAAA,EAChC,MAAM,MAAM,IAAI;AAAA,EAChB,MAAM,YAAY,IAAI;AAAA,EACtB,MAAM,aAAa,IAAI,IAAI,WAAW,EAAE,QAAQ,MAAM,CAAC;AAAA,EAEvD,MAAM,QAAQ,IACb,YAAY,IAAI,CAAC,QAChB,qBAAqB,KAAK,YAAY,KAAK,SAAS,CACrD,CACD;AAAA,EAEA,OAAO;AAAA,IACN,KAAK,MAAM,KAAK,GAAG,EAAE,OAAO,YAAY;AAAA,IACxC,WAAW,MAAM,KAAK,SAAS,EAAE,OAAO,YAAY;AAAA,EACrD;AAAA;AAgBD,IAAM,2BAA2B,OAChC,OACA,iBACA,mBACI;AAAA,EACJ,QAAQ,iBAAiB,MAAa;AAAA,EACtC,MAAM,aAAa,IAAI,IAAI,WAAW,EAAE,QAAQ,KAAK,CAAC;AAAA,EACtD,MAAM,WAAW,IAAI;AAAA,EAErB,WAAW,QAAQ,OAAO;AAAA,IACzB,IAAI,eAAe,IAAI,IAAI;AAAA,MAAG;AAAA,IAC9B,eAAe,IAAI,IAAI;AAAA,IACvB,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,WAAW,IAAI,YAAY,MAAM,QAAQ,IAAI,CAAC;AAAA,MAC7C,MAAM;AAAA,MACP;AAAA;AAAA,IAED,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,UAAU,aAAa,UAAU,OAAO;AAAA,MACvC,MAAM;AAAA,MACP;AAAA;AAAA,IAED,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,UAAU,WAAW,YAAY,OAAO;AAAA,MACvC,MAAM;AAAA,MACP;AAAA;AAAA,IAED,WAAW,OAAO,SAAS;AAAA,MAC1B,MAAM,QAAQ,IAAI;AAAA,MAClB,IAAI,CAAC,gBAAgB,KAAK;AAAA,QAAG;AAAA,MAC7B,IAAI,qBAAqB,KAAK;AAAA,QAAG;AAAA,MACjC,IAAI,2BAA2B,KAAK;AAAA,QAAG;AAAA,MACvC,IAAI,gBAAgB,IAAI,KAAK;AAAA,QAAG;AAAA,MAChC,IAAI,CAAC,aAAa,KAAK;AAAA,QAAG;AAAA,MAC1B,SAAS,IAAI,KAAK;AAAA,IACnB;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,IAAM,qBAAqB,OAC1B,YACA,WACA,WACI;AAAA,EACJ,MAAM,cAAc,MAAM,QAAQ,IACjC,WAAW,IAAI,OAAO,cAAc;AAAA,IACnC,MAAM,WAAW,eAAe,SAAS;AAAA,IACzC,MAAM,YAAY,KAAK,QAAQ,GAAG,aAAa;AAAA,IAC/C,MAAM,IAAI,MAAM,WAAW,0BAA0B,SAAS,CAAC;AAAA,IAE/D,OAAO;AAAA,GACP,CACF;AAAA,EAIA,OAAO,SAAS;AAAA,IACf;AAAA,IACA,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,EACR,CAAC;AAAA;AAGF,IAAM,8BAA8B;AAE7B,IAAM,iBAAiB,OAC7B,UACA,gBACI;AAAA,EACJ,QAAQ,KAAK,cAAc,WAAW,mBACrC,MAAM,gBAAgB,WAAW;AAAA,EAClC,IAAI,aAAa,WAAW,KAAK,eAAe,WAAW;AAAA,IAAG,OAAO,CAAC;AAAA,EAEtE,MAAM,YAAY,KAAK,UAAU,QAAQ;AAAA,EACzC,UAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,EAExC,MAAM,SAAS,KAAK,UAAU,iBAAiB;AAAA,EAC/C,UAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,EAErC,MAAM,WAAW,IAAI,IAAY,YAAY;AAAA,EAC7C,MAAM,iBAAiB,IAAI;AAAA,EAW3B,IAAI,WAA6B,CAAC,GAAG,UAAU,GAAG,cAAc;AAAA,EAChE,SAAS,OAAO,EAAG,OAAO,6BAA6B,QAAQ;AAAA,IAC9D,MAAM,aAAa,MAAM,yBACxB,UACA,UACA,cACD;AAAA,IACA,IAAI,WAAW,SAAS;AAAA,MAAG;AAAA,IAC3B,WAAW,QAAQ;AAAA,MAAY,SAAS,IAAI,IAAI;AAAA,IAChD,WAAW;AAAA,EACZ;AAAA,EAEA,IAAI,SAAS,SAAS;AAAA,IAAG,OAAO,CAAC;AAAA,EAEjC,MAAM,SAAS,MAAM,mBACpB,MAAM,KAAK,QAAQ,GACnB,WACA,MACD;AAAA,EACA,MAAM,UAAU,OAAO;AAAA,EACvB,IAAI,CAAC,SAAS;AAAA,IACb,QAAQ,KAAK,oDAAyC,OAAO,IAAI;AAAA,EAClE;AAAA,EAEA,MAAM,GAAG,QAAQ,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EAOjD,MAAM,QAAgC,CAAC;AAAA,EACvC,WAAW,aAAa,UAAU;AAAA,IACjC,MAAM,aAAa,WAAW,eAAe,SAAS;AAAA,EACvD;AAAA,EAEA,OAAO;AAAA;AAGD,IAAM,wBAAwB,OAAO,gBAA0B;AAAA,EACrE,QAAQ,KAAK,cAAc,WAAW,mBACrC,MAAM,gBAAgB,WAAW;AAAA,EAClC,MAAM,WAAW,IAAI,IAAY,YAAY;AAAA,EAC7C,MAAM,iBAAiB,IAAI;AAAA,EAQ3B,IAAI,WAA6B,CAAC,GAAG,UAAU,GAAG,cAAc;AAAA,EAChE,SAAS,OAAO,EAAG,OAAO,6BAA6B,QAAQ;AAAA,IAC9D,MAAM,aAAa,MAAM,yBACxB,UACA,UACA,cACD;AAAA,IACA,IAAI,WAAW,SAAS;AAAA,MAAG;AAAA,IAC3B,WAAW,QAAQ;AAAA,MAAY,SAAS,IAAI,IAAI;AAAA,IAChD,WAAW;AAAA,EACZ;AAAA,EAEA,MAAM,QAAgC,CAAC;AAAA,EACvC,WAAW,aAAa,UAAU;AAAA,IACjC,MAAM,aAAa,WAAW,eAAe,SAAS;AAAA,EACvD;AAAA,EAEA,OAAO;AAAA;",
8
- "debugId": "823CF040B4D0FA0164756E2164756E21",
9
- "names": []
10
- }
@@ -1,28 +0,0 @@
1
- // @bun
2
- // types/typeGuards.ts
3
- var isValidHMRClientMessage = (data) => {
4
- if (!data || typeof data !== "object") {
5
- return false;
6
- }
7
- if (!("type" in data) || typeof data.type !== "string") {
8
- return false;
9
- }
10
- switch (data.type) {
11
- case "ping":
12
- case "ready":
13
- case "request-rebuild":
14
- case "hydration-error":
15
- case "hmr-timing":
16
- return true;
17
- default:
18
- return false;
19
- }
20
- };
21
-
22
- // types/websocket.ts
23
- var WS_READY_STATE_OPEN = 1;
24
-
25
- export { isValidHMRClientMessage, WS_READY_STATE_OPEN };
26
-
27
- //# debugId=86EBD4E45219431A64756E2164756E21
28
- //# sourceMappingURL=chunk-h5bbfn3n.js.map
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../types/typeGuards.ts", "../types/websocket.ts"],
4
- "sourcesContent": [
5
- "import type { HMRClientMessage } from './messages';\n\n/* Type guard for HMR client messages */\nexport const isValidHMRClientMessage = (\n\tdata: unknown\n): data is HMRClientMessage => {\n\tif (!data || typeof data !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (!('type' in data) || typeof data.type !== 'string') {\n\t\treturn false;\n\t}\n\n\tswitch (data.type) {\n\t\tcase 'ping':\n\t\tcase 'ready':\n\t\tcase 'request-rebuild':\n\t\tcase 'hydration-error':\n\t\tcase 'hmr-timing':\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n",
6
- "/* WebSocket ready state constant */\nexport const WS_READY_STATE_OPEN = 1;\n\n/* Minimal WebSocket interface for HMR clients\n Compatible with Elysia's WebSocket implementation */\nexport type HMRWebSocket = {\n\tsend(data: string): void;\n\tclose(code?: number, reason?: string): void;\n\treadyState: number;\n};\n"
7
- ],
8
- "mappings": ";;AAGO,IAAM,0BAA0B,CACtC,SAC8B;AAAA,EAC9B,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,EAAE,UAAU,SAAS,OAAO,KAAK,SAAS,UAAU;AAAA,IACvD,OAAO;AAAA,EACR;AAAA,EAEA,QAAQ,KAAK;AAAA,SACP;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACJ,OAAO;AAAA;AAAA,MAEP,OAAO;AAAA;AAAA;;;ACrBH,IAAM,sBAAsB;",
9
- "debugId": "86EBD4E45219431A64756E2164756E21",
10
- "names": []
11
- }
@@ -1,93 +0,0 @@
1
- // @bun
2
- import"./chunk-bmgqm774.js";
3
-
4
- // src/utils/generateSitemap.ts
5
- var {write } = globalThis.Bun;
6
- var DEFAULT_PRIORITY = 0.8;
7
- var escapeXml = (str) => str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
8
- var isExcluded = (path, patterns) => {
9
- for (const pattern of patterns) {
10
- if (typeof pattern === "string" && path === pattern)
11
- return true;
12
- if (pattern instanceof RegExp && pattern.test(path))
13
- return true;
14
- }
15
- return false;
16
- };
17
- var PAGE_HANDLER_NAMES = [
18
- "handleReactPageRequest",
19
- "handleSveltePageRequest",
20
- "handleVuePageRequest",
21
- "handleAngularPageRequest",
22
- "handleHTMLPageRequest",
23
- "handleHTMXPageRequest"
24
- ];
25
- var isPageHandler = (handler) => {
26
- if (typeof handler !== "function")
27
- return false;
28
- const source = handler.toString();
29
- return PAGE_HANDLER_NAMES.some((name) => source.includes(name));
30
- };
31
- var discoverPageRoutes = (routes, exclude) => {
32
- const seen = new Set;
33
- return routes.filter((route) => {
34
- if (route.method !== "GET")
35
- return false;
36
- if (route.path.includes("*") || route.path.includes(":"))
37
- return false;
38
- if (seen.has(route.path))
39
- return false;
40
- if (isExcluded(route.path, exclude))
41
- return false;
42
- if (!isPageHandler(route.handler))
43
- return false;
44
- seen.add(route.path);
45
- return true;
46
- }).map((route) => route.path);
47
- };
48
- var buildSitemapXml = (pageRoutes, baseUrl, config) => {
49
- const normalizedBase = baseUrl.replace(/\/$/, "");
50
- const entries = [];
51
- for (const path of pageRoutes) {
52
- const override = config.overrides?.[path];
53
- const changefreq = override?.changefreq ?? config.defaultChangefreq ?? "weekly";
54
- const priority = override?.priority ?? config.defaultPriority ?? DEFAULT_PRIORITY;
55
- const lastmod = override?.lastmod;
56
- const url = escapeXml(`${normalizedBase}${path}`);
57
- let entry = ` <url>
58
- <loc>${url}</loc>`;
59
- if (lastmod)
60
- entry += `
61
- <lastmod>${lastmod}</lastmod>`;
62
- entry += `
63
- <changefreq>${changefreq}</changefreq>`;
64
- entry += `
65
- <priority>${priority}</priority>`;
66
- entry += `
67
- </url>`;
68
- entries.push(entry);
69
- }
70
- return [
71
- '<?xml version="1.0" encoding="UTF-8"?>',
72
- '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
73
- ...entries,
74
- "</urlset>"
75
- ].join(`
76
- `);
77
- };
78
- var generateSitemap = async (routes, serverUrl, outDir, config = {}) => {
79
- const exclude = config.exclude ?? [];
80
- const discoveredRoutes = discoverPageRoutes(routes, exclude);
81
- const dynamicRoutes = config.routes ? await config.routes() : [];
82
- const filteredDynamic = dynamicRoutes.filter((path) => !isExcluded(path, exclude));
83
- const allRoutes = [...discoveredRoutes, ...filteredDynamic];
84
- const baseUrl = config.baseUrl ?? serverUrl;
85
- const xml = buildSitemapXml(allRoutes, baseUrl, config);
86
- await write(`${outDir}/sitemap.xml`, xml);
87
- };
88
- export {
89
- generateSitemap
90
- };
91
-
92
- //# debugId=7BD7FD53AB9DEADD64756E2164756E21
93
- //# sourceMappingURL=chunk-h6mye9r3.js.map