@absolutejs/absolute 0.20.0-beta.169 → 0.20.0-beta.170

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 (238) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +232 -0
  3. package/changelog.json +228 -0
  4. package/dist/angular/browser.js +7 -8
  5. package/dist/angular/browser.js.map +6 -5
  6. package/dist/angular/components/core/streamingSlotRegistrar.js +6 -2
  7. package/dist/angular/components/core/streamingSlotRegistry.js +7 -3
  8. package/dist/angular/index.js +555 -156
  9. package/dist/angular/index.js.map +29 -23
  10. package/dist/angular/server.js +555 -156
  11. package/dist/angular/server.js.map +29 -23
  12. package/dist/build/buildWorker.js +14 -8
  13. package/dist/build.js +4949 -1941
  14. package/dist/build.js.map +72 -42
  15. package/dist/cli/{add-7azr0c83.js → add-6a7pjkn9.js} +11 -7
  16. package/dist/cli/{analyze-3cyek6v3.js → analyze-606fshwa.js} +1 -1
  17. package/dist/cli/{build-25rz8v25.js → build-g81xqbb9.js} +1 -1
  18. package/dist/cli/{compile-4jnfxts9.js → compile-9y1w9zpj.js} +3 -3
  19. package/dist/cli/config/server.js +10699 -1538
  20. package/dist/cli/{dev-9tk5hn2e.js → dev-hyeb89hp.js} +5 -1
  21. package/dist/cli/{doctor-4nv2c2j3.js → doctor-h55y9hj1.js} +1 -1
  22. package/dist/cli/{generate-v75p2fct.js → generate-20x1pkf7.js} +4 -4
  23. package/dist/cli/{htmx-427swtdz.js → htmx-6mz2h7k1.js} +2 -2
  24. package/dist/cli/{index-bhbs6d5z.js → index-32ge2w1f.js} +12 -4
  25. package/dist/cli/{index-a4ws2jwd.js → index-3wz3mktm.js} +1 -1
  26. package/dist/cli/{index-b7hjgknf.js → index-9sksd8c8.js} +13 -4
  27. package/dist/cli/{index-eyzwc7gz.js → index-qbrzvmh9.js} +4 -2
  28. package/dist/cli/index-qw98g1p6.js +269 -0
  29. package/dist/cli/{index-434b7j4a.js → index-vtp20gwf.js} +69 -1
  30. package/dist/cli/{index-h7qhz02e.js → index-wk0pyxrg.js} +3 -0
  31. package/dist/cli/{index-k3y8cb6c.js → index-z6f43b20.js} +1 -1
  32. package/dist/cli/index.js +16 -16
  33. package/dist/cli/{islands-8sgky9gh.js → islands-dc54e5y1.js} +1 -1
  34. package/dist/cli/{ls-4m4yqwww.js → ls-b6zz24nt.js} +1 -1
  35. package/dist/cli/{mobile-hcxjr2gf.js → mobile-ajnnvqtv.js} +3 -3
  36. package/dist/cli/prerender-fqpp0m1j.js +10 -0
  37. package/dist/cli/{remove-1ycjx85k.js → remove-t8x1mrxg.js} +4 -4
  38. package/dist/cli/{start-mbaejxhm.js → start-d6p831ny.js} +3 -3
  39. package/dist/cli/{typecheck-dr068pmh.js → typecheck-stbt0qt5.js} +6 -1
  40. package/dist/cli/{workspace-1sycp9g1.js → workspace-61hh6jq1.js} +1 -1
  41. package/dist/client/chunks/index-6b66nzyf.js +381 -0
  42. package/dist/client/chunks/index-6b66nzyf.js.map +11 -0
  43. package/dist/client/chunks/{islands-rc28k5sx.js → islands-s2ta5ajb.js} +5 -2
  44. package/dist/client/chunks/{islands-rc28k5sx.js.map → islands-s2ta5ajb.js.map} +7 -6
  45. package/dist/client/index.js +160 -3
  46. package/dist/client/index.js.map +6 -4
  47. package/dist/client/navigation.js +764 -0
  48. package/dist/client/navigation.js.map +10 -0
  49. package/dist/client/prefetch.js +33 -375
  50. package/dist/client/prefetch.js.map +3 -4
  51. package/dist/core/streamingSlotRegistrar.js +5 -2
  52. package/dist/core/streamingSlotRegistrar.js.map +5 -4
  53. package/dist/core/streamingSlotRegistry.js +5 -2
  54. package/dist/core/streamingSlotRegistry.js.map +5 -4
  55. package/dist/dev/client/cspNonce.ts +28 -0
  56. package/dist/dev/client/handlers/html.ts +4 -3
  57. package/dist/dev/client/handlers/htmx.ts +3 -2
  58. package/dist/dev/client/handlers/svelte.ts +15 -90
  59. package/dist/dev/client/syncDevtools.ts +2 -1
  60. package/dist/dev/serverBootstrap.js +11 -4
  61. package/dist/i18n/index.js +543 -0
  62. package/dist/i18n/index.js.map +15 -0
  63. package/dist/index.js +6339 -2233
  64. package/dist/index.js.map +89 -54
  65. package/dist/islands/index.js +282 -40
  66. package/dist/islands/index.js.map +14 -10
  67. package/dist/mobile/browser.js +7 -2
  68. package/dist/mobile/browser.js.map +5 -4
  69. package/dist/mobile/index.js +7 -2
  70. package/dist/mobile/index.js.map +5 -4
  71. package/dist/mobile/remoteMacAgentEntry.js +1 -1
  72. package/dist/react/components/browser/index.js +94 -4
  73. package/dist/react/components/index.js +150 -10
  74. package/dist/react/components/index.js.map +15 -10
  75. package/dist/react/hooks/index.js +479 -13
  76. package/dist/react/hooks/index.js.map +12 -4
  77. package/dist/react/index.js +769 -166
  78. package/dist/react/index.js.map +32 -21
  79. package/dist/react/router/browser.js +21 -4
  80. package/dist/react/router/browser.js.map +5 -4
  81. package/dist/react/router/index.js +21 -4
  82. package/dist/react/router/index.js.map +5 -4
  83. package/dist/react/server.js +597 -203
  84. package/dist/react/server.js.map +25 -15
  85. package/dist/src/angular/zoneRuntime.d.ts +5 -0
  86. package/dist/src/build/buildReactServerComponents.d.ts +22 -0
  87. package/dist/src/build/downlevelAsyncForZone.d.ts +1 -0
  88. package/dist/src/build/fileRoutes.d.ts +65 -0
  89. package/dist/src/build/fonts/buildFonts.d.ts +25 -0
  90. package/dist/src/build/fonts/fallbackMetrics.d.ts +13 -0
  91. package/dist/src/build/fonts/googleFonts.d.ts +18 -0
  92. package/dist/src/build/fonts/injectFontTags.d.ts +7 -0
  93. package/dist/src/build/fonts/parseFontMetrics.d.ts +4 -0
  94. package/dist/src/build/generateReactIndexes.d.ts +7 -1
  95. package/dist/src/build/htmlIncludes.d.ts +16 -0
  96. package/dist/src/build/inlineSourceMapComment.d.ts +1 -0
  97. package/dist/src/build/scanConventions.d.ts +3 -0
  98. package/dist/src/build/vitals.d.ts +21 -0
  99. package/dist/src/client/formActions.d.ts +29 -0
  100. package/dist/src/client/index.d.ts +2 -0
  101. package/dist/src/client/navigation.d.ts +16 -0
  102. package/dist/src/client/prefetch.d.ts +2 -30
  103. package/dist/src/core/build.d.ts +2 -2
  104. package/dist/src/core/cspNonce.d.ts +12 -0
  105. package/dist/src/core/fileRouteAdapter.d.ts +15 -0
  106. package/dist/src/core/fileRoutes.d.ts +5 -0
  107. package/dist/src/core/formActionFlash.d.ts +25 -0
  108. package/dist/src/core/formActions.d.ts +249 -0
  109. package/dist/src/core/index.d.ts +5 -0
  110. package/dist/src/core/partialPrerender.d.ts +28 -0
  111. package/dist/src/core/partialPrerenderServe.d.ts +24 -0
  112. package/dist/src/core/precompressed.d.ts +11 -1
  113. package/dist/src/core/prerenderNonce.d.ts +9 -0
  114. package/dist/src/core/productionRuntime.d.ts +4 -2
  115. package/dist/src/core/serverOnlyStaticFiles.d.ts +8 -0
  116. package/dist/src/core/staticHtmlNonce.d.ts +2 -0
  117. package/dist/src/core/vitals.d.ts +108 -0
  118. package/dist/src/dev/angular/fastHmrCompiler.d.ts +1 -1
  119. package/dist/src/dev/client/cspNonce.d.ts +2 -0
  120. package/dist/src/dev/fileRouteRefresher.d.ts +5 -0
  121. package/dist/src/dev/importCost/instrument.d.ts +1 -1
  122. package/dist/src/dev/reactServerComponentsRebuild.d.ts +3 -0
  123. package/dist/src/i18n/defineMessages.d.ts +5 -0
  124. package/dist/src/i18n/formatMessage.d.ts +26 -0
  125. package/dist/src/i18n/index.d.ts +6 -0
  126. package/dist/src/i18n/intlCache.d.ts +5 -0
  127. package/dist/src/i18n/routing.d.ts +28 -0
  128. package/dist/src/i18n/translator.d.ts +11 -0
  129. package/dist/src/mobile/androidRelease.d.ts +2 -2
  130. package/dist/src/mobile/iosRelease.d.ts +4 -4
  131. package/dist/src/mobile/materializedBundle.d.ts +1 -1
  132. package/dist/src/mobile/mobileInspect.d.ts +1 -1
  133. package/dist/src/mobile/releaseArtifact.d.ts +2 -2
  134. package/dist/src/mobile/remoteMacProtocol.d.ts +2 -2
  135. package/dist/src/plugins/i18n.d.ts +30 -0
  136. package/dist/src/plugins/index.d.ts +2 -1
  137. package/dist/src/plugins/secureHeaders.d.ts +48 -0
  138. package/dist/src/react/components/Head.d.ts +1 -1
  139. package/dist/src/react/components/StreamSlot.browser.d.ts +1 -0
  140. package/dist/src/react/components/StreamSlot.d.ts +5 -1
  141. package/dist/src/react/components/SuspenseSlot.browser.d.ts +2 -0
  142. package/dist/src/react/components/SuspenseSlot.d.ts +12 -0
  143. package/dist/src/react/fileRoute.d.ts +18 -0
  144. package/dist/src/react/hooks/index.d.ts +4 -0
  145. package/dist/src/react/hooks/useFormAction.d.ts +42 -0
  146. package/dist/src/react/hooks/useI18n.d.ts +15 -0
  147. package/dist/src/react/index.d.ts +2 -0
  148. package/dist/src/react/server.d.ts +2 -0
  149. package/dist/src/react/serverComponents/constants.d.ts +11 -0
  150. package/dist/src/react/serverComponents/flightPayload.d.ts +2 -0
  151. package/dist/src/react/serverComponents/pageHandler.d.ts +14 -0
  152. package/dist/src/svelte/browser.d.ts +1 -0
  153. package/dist/src/svelte/fileRoute.d.ts +15 -0
  154. package/dist/src/svelte/i18n.d.ts +8 -0
  155. package/dist/src/svelte/index.d.ts +2 -0
  156. package/dist/src/svelte/lowerAwaitSlotSyntax.d.ts +5 -1
  157. package/dist/src/svelte/renderToReadableStream.d.ts +10 -2
  158. package/dist/src/svelte/router/browser.d.ts +3 -1
  159. package/dist/src/svelte/router/goto.d.ts +13 -10
  160. package/dist/src/svelte/router/guards.d.ts +43 -0
  161. package/dist/src/svelte/router/index.d.ts +3 -1
  162. package/dist/src/svelte/router/lazy.d.ts +17 -0
  163. package/dist/src/svelte/router/lazyModule.d.ts +29 -0
  164. package/dist/src/svelte/router/navigation.d.ts +55 -0
  165. package/dist/src/svelte/router/pushState.d.ts +4 -2
  166. package/dist/src/svelte/router/scroll.d.ts +34 -0
  167. package/dist/src/svelte/routerSsr.d.ts +9 -0
  168. package/dist/src/svelte/server.d.ts +1 -0
  169. package/dist/src/utils/cspNonceRef.d.ts +8 -0
  170. package/dist/src/utils/fontAssets.d.ts +17 -0
  171. package/dist/src/utils/formActionProtocol.d.ts +10 -0
  172. package/dist/src/utils/generateHeadElement.d.ts +1 -1
  173. package/dist/src/utils/index.d.ts +1 -0
  174. package/dist/src/utils/inlinePageCss.d.ts +18 -0
  175. package/dist/src/utils/loadConfig.d.ts +5 -0
  176. package/dist/src/utils/localeRef.d.ts +10 -0
  177. package/dist/src/utils/resolveConvention.d.ts +6 -1
  178. package/dist/src/utils/streamingSlots.d.ts +5 -0
  179. package/dist/src/vue/browser.d.ts +2 -0
  180. package/dist/src/vue/components/Image.d.ts +2 -2
  181. package/dist/src/vue/index.d.ts +2 -0
  182. package/dist/src/vue/serverDataPayload.d.ts +32 -0
  183. package/dist/src/vue/serverDataState.d.ts +9 -0
  184. package/dist/src/vue/useServerData.browser.d.ts +6 -0
  185. package/dist/src/vue/useServerData.d.ts +24 -0
  186. package/dist/svelte/browser.js +330 -3
  187. package/dist/svelte/browser.js.map +8 -4
  188. package/dist/svelte/components/AwaitSlot.svelte +5 -0
  189. package/dist/svelte/components/Head.svelte +50 -0
  190. package/dist/svelte/components/JsonLd.svelte +9 -1
  191. package/dist/svelte/components/StreamSlot.svelte +5 -0
  192. package/dist/svelte/index.js +1017 -117
  193. package/dist/svelte/index.js.map +38 -24
  194. package/dist/svelte/router/Link.svelte +40 -8
  195. package/dist/svelte/router/Route.svelte +157 -12
  196. package/dist/svelte/router/Route.svelte.d.ts +39 -5
  197. package/dist/svelte/router/Router.svelte +140 -25
  198. package/dist/svelte/router/Router.svelte.d.ts +5 -1
  199. package/dist/svelte/router/browser.ts +10 -0
  200. package/dist/svelte/router/goto.ts +15 -86
  201. package/dist/svelte/router/guards.ts +112 -0
  202. package/dist/svelte/router/index.ts +10 -0
  203. package/dist/svelte/router/lazy.ts +82 -0
  204. package/dist/svelte/router/lazyModule.ts +74 -0
  205. package/dist/svelte/router/navigation.ts +412 -0
  206. package/dist/svelte/router/pushState.ts +7 -4
  207. package/dist/svelte/router/scroll.ts +286 -0
  208. package/dist/svelte/server.js +747 -252
  209. package/dist/svelte/server.js.map +30 -20
  210. package/dist/types/angular.d.ts +2 -0
  211. package/dist/types/build.d.ts +37 -0
  212. package/dist/types/conventions.d.ts +3 -0
  213. package/dist/types/fileRoutes.d.ts +72 -0
  214. package/dist/types/fonts.d.ts +86 -0
  215. package/dist/types/formAction.d.ts +54 -0
  216. package/dist/types/globals.d.ts +10 -0
  217. package/dist/types/i18n.d.ts +185 -0
  218. package/dist/types/index.d.ts +4 -0
  219. package/dist/types/metadata.d.ts +11 -0
  220. package/dist/types/navigation.d.ts +37 -0
  221. package/dist/types/prefetch.d.ts +10 -0
  222. package/dist/types/sitemap.d.ts +4 -0
  223. package/dist/types/svelteRouter.d.ts +89 -2
  224. package/dist/types/svelteRouter.ts +112 -2
  225. package/dist/types/vue.d.ts +46 -1
  226. package/dist/utils/iconVersion.ts +34 -0
  227. package/dist/vue/browser.js +107 -11
  228. package/dist/vue/browser.js.map +7 -4
  229. package/dist/vue/components/index.js +5 -2
  230. package/dist/vue/components/index.js.map +5 -4
  231. package/dist/vue/index.js +712 -158
  232. package/dist/vue/index.js.map +32 -23
  233. package/dist/vue/server.js +310 -79
  234. package/dist/vue/server.js.map +20 -15
  235. package/package.json +9 -1
  236. package/dist/cli/prerender-mfnwsvyt.js +0 -7
  237. package/dist/src/plugins/pageRouter.d.ts +0 -1
  238. /package/dist/cli/{index-j7m8pq48.js → index-rervww4p.js} +0 -0
package/dist/cli/index.js CHANGED
@@ -54,7 +54,7 @@ if (command === "dev") {
54
54
  }
55
55
  const positionalArgs = stripNamedArgs("--config", "--android-device", "--ios-device").filter((arg) => arg !== "--no-mobile" && arg !== "--eager");
56
56
  const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
57
- const { dev } = await import("./dev-9tk5hn2e.js");
57
+ const { dev } = await import("./dev-hyeb89hp.js");
58
58
  await dev(serverEntry, configPath, {
59
59
  androidDevice,
60
60
  eager: args.includes("--eager"),
@@ -70,7 +70,7 @@ if (command === "dev") {
70
70
  const configPath = parseNamedArg("--config");
71
71
  const positionalArgs = stripNamedArgs("--outdir", "--config").filter((arg) => arg !== "--prebuilt");
72
72
  const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
73
- const { start } = await import("./start-mbaejxhm.js");
73
+ const { start } = await import("./start-d6p831ny.js");
74
74
  await start(serverEntry, outdir, configPath, {
75
75
  prebuilt: args.includes("--prebuilt")
76
76
  });
@@ -80,20 +80,20 @@ if (command === "dev") {
80
80
  const configPath = parseNamedArg("--config");
81
81
  const positionalArgs = stripNamedArgs("--outdir", "--config");
82
82
  const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
83
- const { start } = await import("./start-mbaejxhm.js");
83
+ const { start } = await import("./start-d6p831ny.js");
84
84
  await start(serverEntry, outdir, configPath, { prepareOnly: true });
85
85
  } else if (command === "build") {
86
86
  sendTelemetryEvent("cli:command", { command });
87
87
  const outdir = parseNamedArg("--outdir");
88
88
  const configPath = parseNamedArg("--config");
89
- const { build } = await import("./build-25rz8v25.js");
89
+ const { build } = await import("./build-g81xqbb9.js");
90
90
  await build(outdir, configPath, args.includes("--profile"));
91
91
  } else if (command === "workspace") {
92
92
  sendTelemetryEvent("cli:command", {
93
93
  command: `workspace:${workspaceCommand ?? "unknown"}`
94
94
  });
95
95
  const configPath = parseNamedArg("--config");
96
- const { workspace } = await import("./workspace-1sycp9g1.js");
96
+ const { workspace } = await import("./workspace-61hh6jq1.js");
97
97
  await workspace(workspaceCommand, {
98
98
  configPath,
99
99
  noTui: args.includes("--no-tui")
@@ -121,7 +121,7 @@ if (command === "dev") {
121
121
  await prettier(args);
122
122
  } else if (command === "ls") {
123
123
  sendTelemetryEvent("cli:command", { command: "ls" });
124
- const { runLs } = await import("./ls-4m4yqwww.js");
124
+ const { runLs } = await import("./ls-b6zz24nt.js");
125
125
  await runLs(args);
126
126
  } else if (command === "ps") {
127
127
  sendTelemetryEvent("cli:command", { command: "ps" });
@@ -133,15 +133,15 @@ if (command === "dev") {
133
133
  await runMem(args);
134
134
  } else if (command === "generate" || command === "g") {
135
135
  sendTelemetryEvent("cli:command", { command: "generate" });
136
- const { runGenerate } = await import("./generate-v75p2fct.js");
136
+ const { runGenerate } = await import("./generate-20x1pkf7.js");
137
137
  await runGenerate(args);
138
138
  } else if (command === "add") {
139
139
  sendTelemetryEvent("cli:command", { command: "add" });
140
- const { runAdd } = await import("./add-7azr0c83.js");
140
+ const { runAdd } = await import("./add-6a7pjkn9.js");
141
141
  await runAdd(args);
142
142
  } else if (command === "analyze") {
143
143
  sendTelemetryEvent("cli:command", { command: "analyze" });
144
- const { runAnalyze } = await import("./analyze-3cyek6v3.js");
144
+ const { runAnalyze } = await import("./analyze-606fshwa.js");
145
145
  await runAnalyze(args);
146
146
  } else if (command === "api") {
147
147
  sendTelemetryEvent("cli:command", { command: "api" });
@@ -149,11 +149,11 @@ if (command === "dev") {
149
149
  await runApi(args);
150
150
  } else if (command === "remove") {
151
151
  sendTelemetryEvent("cli:command", { command: "remove" });
152
- const { runRemove } = await import("./remove-1ycjx85k.js");
152
+ const { runRemove } = await import("./remove-t8x1mrxg.js");
153
153
  await runRemove(args);
154
154
  } else if (command === "htmx") {
155
155
  sendTelemetryEvent("cli:command", { command: "htmx" });
156
- const { runHtmx } = await import("./htmx-427swtdz.js");
156
+ const { runHtmx } = await import("./htmx-6mz2h7k1.js");
157
157
  await runHtmx(args);
158
158
  } else if (command === "env") {
159
159
  sendTelemetryEvent("cli:command", { command: "env" });
@@ -176,7 +176,7 @@ if (command === "dev") {
176
176
  await runLogs(args);
177
177
  } else if (command === "doctor") {
178
178
  sendTelemetryEvent("cli:command", { command: "doctor" });
179
- const { runDoctor } = await import("./doctor-4nv2c2j3.js");
179
+ const { runDoctor } = await import("./doctor-h55y9hj1.js");
180
180
  await runDoctor(args);
181
181
  } else if (command === "routes") {
182
182
  sendTelemetryEvent("cli:command", { command: "routes" });
@@ -188,7 +188,7 @@ if (command === "dev") {
188
188
  await runInspect(args);
189
189
  } else if (command === "islands") {
190
190
  sendTelemetryEvent("cli:command", { command: "islands" });
191
- const { runIslands } = await import("./islands-8sgky9gh.js");
191
+ const { runIslands } = await import("./islands-dc54e5y1.js");
192
192
  await runIslands(args);
193
193
  } else if (command === "info") {
194
194
  sendTelemetryEvent("cli:command", { command });
@@ -205,13 +205,13 @@ if (command === "dev") {
205
205
  const configPath = parseNamedArg("--config");
206
206
  const positionalArgs = stripNamedArgs("--outdir", "--outfile", "--config");
207
207
  const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
208
- const { compile } = await import("./compile-4jnfxts9.js");
208
+ const { compile } = await import("./compile-9y1w9zpj.js");
209
209
  await compile(serverEntry, outdir, outfile, configPath);
210
210
  } else if (command === "mobile") {
211
211
  sendTelemetryEvent("cli:command", {
212
212
  command: `mobile:${workspaceCommand ?? "unknown"}`
213
213
  });
214
- const { runMobile } = await import("./mobile-hcxjr2gf.js");
214
+ const { runMobile } = await import("./mobile-ajnnvqtv.js");
215
215
  try {
216
216
  await runMobile(args);
217
217
  } catch (error) {
@@ -221,7 +221,7 @@ if (command === "dev") {
221
221
  } else if (command === "typecheck") {
222
222
  sendTelemetryEvent("cli:command", { command });
223
223
  const configPath = parseNamedArg("--config");
224
- const { typecheck } = await import("./typecheck-dr068pmh.js");
224
+ const { typecheck } = await import("./typecheck-stbt0qt5.js");
225
225
  await typecheck(configPath);
226
226
  } else if (command === "migrate") {
227
227
  sendTelemetryEvent("cli:command", { command });
@@ -5,7 +5,7 @@ import {
5
5
  } from "./index-z794p5qg.js";
6
6
  import {
7
7
  loadConfig
8
- } from "./index-h7qhz02e.js";
8
+ } from "./index-wk0pyxrg.js";
9
9
  import"./index-fgz435qn.js";
10
10
  import {
11
11
  colors,
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  isWorkspaceConfig,
8
8
  loadRawConfig
9
- } from "./index-h7qhz02e.js";
9
+ } from "./index-wk0pyxrg.js";
10
10
  import {
11
11
  colors,
12
12
  padLine,
@@ -47,7 +47,7 @@ import {
47
47
  } from "./index-3vmc30gf.js";
48
48
  import {
49
49
  loadConfig
50
- } from "./index-h7qhz02e.js";
50
+ } from "./index-wk0pyxrg.js";
51
51
  import {
52
52
  listLiveInstances
53
53
  } from "./index-71gchbzt.js";
@@ -62,7 +62,7 @@ import {
62
62
  resolveAbsoluteMobileRoute,
63
63
  ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,
64
64
  ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT
65
- } from "./index-j7m8pq48.js";
65
+ } from "./index-rervww4p.js";
66
66
  import {
67
67
  buildAbsoluteExpoAndroidWslBundle2
68
68
  } from "./index-zd3cna19.js";
@@ -79,7 +79,7 @@ import {
79
79
  import"./index-z794p5qg.js";
80
80
  import {
81
81
  start2
82
- } from "./index-bhbs6d5z.js";
82
+ } from "./index-32ge2w1f.js";
83
83
  import {
84
84
  captureAbsoluteRemoteMacCommand2,
85
85
  getAbsoluteRemoteMacProfile2,
@@ -0,0 +1,10 @@
1
+ // @bun
2
+ import {
3
+ prerenderWithServer2
4
+ } from "./index-vtp20gwf.js";
5
+ import"./index-74m7kh8c.js";
6
+ import"./index-kye08pjx.js";
7
+ import"./index-fgz435qn.js";
8
+ export {
9
+ prerenderWithServer2 as prerenderWithServer
10
+ };
@@ -3,15 +3,15 @@ import {
3
3
  isFrameworkKey,
4
4
  frameworks,
5
5
  resolveProject
6
- } from "./index-eyzwc7gz.js";
6
+ } from "./index-qbrzvmh9.js";
7
7
  import {
8
8
  applyAbsoluteConfigEdit
9
- } from "./index-k3y8cb6c.js";
10
- import"./index-h7qhz02e.js";
9
+ } from "./index-z6f43b20.js";
10
+ import"./index-wk0pyxrg.js";
11
11
  import"./index-fgz435qn.js";
12
12
  import {
13
13
  findRoutingFile
14
- } from "./index-a4ws2jwd.js";
14
+ } from "./index-3wz3mktm.js";
15
15
  import {
16
16
  colors
17
17
  } from "./index-xw1byvzp.js";
@@ -1,11 +1,11 @@
1
1
  // @bun
2
2
  import {
3
3
  start2
4
- } from "./index-bhbs6d5z.js";
5
- import"./index-j7m8pq48.js";
4
+ } from "./index-32ge2w1f.js";
5
+ import"./index-rervww4p.js";
6
6
  import"./index-z794p5qg.js";
7
7
  import"./index-71gchbzt.js";
8
- import"./index-h7qhz02e.js";
8
+ import"./index-wk0pyxrg.js";
9
9
  import"./index-qyxd5n9a.js";
10
10
  import"./index-43a1vvb7.js";
11
11
  import"./index-t7yf3vxs.js";
@@ -4,10 +4,13 @@ import {
4
4
  getWorkspaceServices,
5
5
  loadConfig,
6
6
  loadRawConfig
7
- } from "./index-h7qhz02e.js";
7
+ } from "./index-wk0pyxrg.js";
8
8
  import {
9
9
  ANSI_ESCAPE_CODE
10
10
  } from "./index-fgz435qn.js";
11
+ import {
12
+ ensureFileRouteModule
13
+ } from "./index-qw98g1p6.js";
11
14
  import {
12
15
  getString,
13
16
  isRecord
@@ -1588,6 +1591,8 @@ var typecheck = async (configPath) => {
1588
1591
  await mkdir2(cacheDir, { recursive: true });
1589
1592
  if (hasSvelte)
1590
1593
  await prepareSvelteDeclarations(svelteDirs);
1594
+ for (const config of targets)
1595
+ ensureFileRouteModule(config);
1591
1596
  const checks = [];
1592
1597
  const plainCheck = bunCheckSupported() ? buildBunCheck : buildTscCheck;
1593
1598
  checks.push(hasVue ? buildVueTscCheck(cacheDir) : plainCheck(cacheDir));
@@ -29,7 +29,7 @@ import {
29
29
  import {
30
30
  getWorkspaceServices,
31
31
  loadRawConfig
32
- } from "./index-h7qhz02e.js";
32
+ } from "./index-wk0pyxrg.js";
33
33
  import {
34
34
  deregisterInstance,
35
35
  registerInstance
@@ -0,0 +1,381 @@
1
+ // src/dev/client/cspNonce.ts
2
+ var applyPageNonce = (element) => {
3
+ const nonce = readPageNonce();
4
+ if (nonce)
5
+ element.nonce = nonce;
6
+ return element;
7
+ };
8
+ var readPageNonce = () => {
9
+ if (typeof document === "undefined")
10
+ return;
11
+ const carrier = document.querySelector("script[nonce], style[nonce]");
12
+ return carrier?.nonce || undefined;
13
+ };
14
+
15
+ // src/client/prefetch.ts
16
+ var PREFETCH_CACHE_LIMIT = 16;
17
+ var HOVER_DEBOUNCE_MS = 250;
18
+ var MAX_IN_FLIGHT = 2;
19
+ var MAX_LIVE_SPECULATION_RULES = 2;
20
+ var VIEWPORT_ROOT_MARGIN = "128px";
21
+ var SLOW_EFFECTIVE_TYPES = new Set(["slow-2g", "2g"]);
22
+ var NOT_FOUND = 404;
23
+ var NOT_ACCEPTABLE = 406;
24
+ var ROUTE_DATA_MEDIA_TYPE2 = "application/vnd.absolute.route+json";
25
+ var cache = new Map;
26
+ var queue = [];
27
+ var inFlight = 0;
28
+ var preloadedModules = new Set;
29
+ var prefetchedStyles = new Set;
30
+ var liveSpeculationRules = new Map;
31
+ var offlineResponse = () => new Response(null, { status: 0 });
32
+ var storageKind = (kind) => kind === "route" ? "document" : kind;
33
+ var cacheKey = (kind, url) => `${storageKind(kind)}:${url}`;
34
+ var resolveHref = (url) => {
35
+ if (typeof window === "undefined")
36
+ return url;
37
+ try {
38
+ return new URL(url, window.location.href).href;
39
+ } catch {
40
+ return url;
41
+ }
42
+ };
43
+ var isGloballyDisabled = () => typeof window !== "undefined" && Reflect.get(window, "__ABSOLUTE_PREFETCH__") === false;
44
+ var isSlowConnection = () => {
45
+ if (typeof navigator === "undefined")
46
+ return false;
47
+ const connection = Reflect.get(navigator, "connection");
48
+ if (typeof connection !== "object" || connection === null)
49
+ return false;
50
+ if (Reflect.get(connection, "saveData") === true)
51
+ return true;
52
+ const effectiveType = Reflect.get(connection, "effectiveType");
53
+ return typeof effectiveType === "string" && SLOW_EFFECTIVE_TYPES.has(effectiveType);
54
+ };
55
+ var prefersReducedData = () => {
56
+ if (typeof window === "undefined" || !window.matchMedia)
57
+ return false;
58
+ return window.matchMedia("(prefers-reduced-data: reduce)").matches;
59
+ };
60
+ var canPrefetch2 = () => typeof window !== "undefined" && !isGloballyDisabled() && !isSlowConnection() && !prefersReducedData();
61
+ var readNodeEnv = () => {
62
+ const processLike = Reflect.get(globalThis, "process");
63
+ if (typeof processLike !== "object" || processLike === null) {
64
+ return;
65
+ }
66
+ const env = Reflect.get(processLike, "env");
67
+ if (typeof env !== "object" || env === null)
68
+ return;
69
+ const value = Reflect.get(env, "NODE_ENV");
70
+ return typeof value === "string" ? value : undefined;
71
+ };
72
+ var isDevelopmentClient2 = () => {
73
+ if (typeof window === "undefined")
74
+ return false;
75
+ if (Reflect.get(window, "__HMR_FRAMEWORK__") !== undefined)
76
+ return true;
77
+ if (Reflect.get(window, "__HMR_WS__") !== undefined)
78
+ return true;
79
+ if (typeof document !== "undefined" && document.querySelector("script[data-hmr-client]") !== null) {
80
+ return true;
81
+ }
82
+ return readNodeEnv() === "development";
83
+ };
84
+ var isPrefetchableHref2 = (href) => {
85
+ if (typeof window === "undefined")
86
+ return false;
87
+ if (href === "" || href.startsWith("#"))
88
+ return false;
89
+ try {
90
+ const url = new URL(href, window.location.href);
91
+ if (url.protocol !== "http:" && url.protocol !== "https:")
92
+ return false;
93
+ return url.origin === window.location.origin;
94
+ } catch {
95
+ return false;
96
+ }
97
+ };
98
+ var resolveDefaultPrefetchMode2 = () => isDevelopmentClient2() ? "hover" : "viewport";
99
+ var runQueue = () => {
100
+ while (inFlight < MAX_IN_FLIGHT) {
101
+ const next = queue.shift();
102
+ if (!next)
103
+ return;
104
+ if (next.cancelled)
105
+ continue;
106
+ next.start();
107
+ }
108
+ };
109
+ var finishTask = () => {
110
+ inFlight = Math.max(0, inFlight - 1);
111
+ runQueue();
112
+ };
113
+ var runWhenReleased = async (gate, task, signal) => {
114
+ await gate;
115
+ try {
116
+ return await task(signal);
117
+ } catch {
118
+ return offlineResponse();
119
+ } finally {
120
+ finishTask();
121
+ }
122
+ };
123
+ var enqueue = (task) => {
124
+ const controller = new AbortController;
125
+ let release = () => {
126
+ return;
127
+ };
128
+ const gate = new Promise((resolve) => {
129
+ release = resolve;
130
+ });
131
+ const queued = {
132
+ cancelled: false,
133
+ start: () => {
134
+ inFlight += 1;
135
+ release();
136
+ }
137
+ };
138
+ const promise = runWhenReleased(gate, task, controller.signal);
139
+ queue.push(queued);
140
+ runQueue();
141
+ const abort = () => {
142
+ if (queued.cancelled)
143
+ return;
144
+ queued.cancelled = true;
145
+ controller.abort();
146
+ };
147
+ return { abort, promise };
148
+ };
149
+ var evictOldest = () => {
150
+ const oldest = cache.keys().next();
151
+ if (oldest.done)
152
+ return;
153
+ cache.get(oldest.value)?.abort();
154
+ cache.delete(oldest.value);
155
+ };
156
+ var touch = (key, entry) => {
157
+ cache.delete(key);
158
+ cache.set(key, entry);
159
+ };
160
+ var clearPrefetchCache2 = () => {
161
+ for (const entry of cache.values())
162
+ entry.abort();
163
+ cache.clear();
164
+ };
165
+ var consumePrefetch2 = (url, kind = "document") => {
166
+ const key = cacheKey(kind, url);
167
+ const entry = cache.get(key);
168
+ if (!entry)
169
+ return;
170
+ cache.delete(key);
171
+ return entry.promise;
172
+ };
173
+ var hasPrefetched2 = (url, kind = "document") => cache.has(cacheKey(kind, url));
174
+ var injectLink = (rel, href, asType) => {
175
+ if (typeof document === "undefined")
176
+ return;
177
+ const link = document.createElement("link");
178
+ link.rel = rel;
179
+ link.href = href;
180
+ if (asType)
181
+ link.setAttribute("as", asType);
182
+ document.head.append(link);
183
+ };
184
+ var injectPrefetchFallback = (kind, url) => {
185
+ if (kind !== "document" || !supportsLinkRel("prefetch"))
186
+ return;
187
+ injectLink("prefetch", url, "document");
188
+ };
189
+ var supportsLinkRel = (rel) => {
190
+ if (typeof document === "undefined")
191
+ return false;
192
+ const link = document.createElement("link");
193
+ return typeof link.relList?.supports === "function" && link.relList.supports(rel);
194
+ };
195
+ var prefetchStylesheet2 = (href) => {
196
+ if (typeof document === "undefined")
197
+ return false;
198
+ const resolved = resolveHref(href);
199
+ if (prefetchedStyles.has(resolved))
200
+ return false;
201
+ prefetchedStyles.add(resolved);
202
+ injectLink("prefetch", href, "style");
203
+ return true;
204
+ };
205
+ var preloadModule2 = (href) => {
206
+ if (typeof document === "undefined")
207
+ return false;
208
+ const resolved = resolveHref(href);
209
+ if (preloadedModules.has(resolved))
210
+ return false;
211
+ const existing = Array.from(document.querySelectorAll('link[rel="modulepreload"]'));
212
+ if (existing.some((link) => resolveHref(link.href) === resolved)) {
213
+ preloadedModules.add(resolved);
214
+ return false;
215
+ }
216
+ preloadedModules.add(resolved);
217
+ injectLink("modulepreload", href);
218
+ return true;
219
+ };
220
+ var isRecord = (value) => typeof value === "object" && value !== null;
221
+ var isHref = (value) => typeof value === "string" && value.length > 0;
222
+ var warmRouteDataAssets = (envelope) => {
223
+ if (!isRecord(envelope))
224
+ return;
225
+ const { assets } = envelope;
226
+ if (!isRecord(assets))
227
+ return;
228
+ const { client, css, index } = assets;
229
+ for (const href of [index, client].filter(isHref))
230
+ preloadModule2(href);
231
+ if (!Array.isArray(css))
232
+ return;
233
+ for (const href of css.filter(isHref))
234
+ prefetchStylesheet2(href);
235
+ };
236
+ var warmFromRouteData = async (response) => {
237
+ try {
238
+ warmRouteDataAssets(await response.clone().json());
239
+ } catch {}
240
+ return response;
241
+ };
242
+ var fetchDocument = (url, signal) => fetch(url, { credentials: "same-origin", signal });
243
+ var fetchRouteData = async (url, signal) => {
244
+ const response = await fetch(url, {
245
+ credentials: "same-origin",
246
+ headers: { Accept: ROUTE_DATA_MEDIA_TYPE2 },
247
+ signal
248
+ });
249
+ const contentType = response.headers.get("content-type") ?? "";
250
+ const isRouteData = response.ok && contentType.includes(ROUTE_DATA_MEDIA_TYPE2);
251
+ if (isRouteData)
252
+ return warmFromRouteData(response);
253
+ await response.body?.cancel().catch(() => {
254
+ return;
255
+ });
256
+ const status = response.status === NOT_FOUND || response.status === NOT_ACCEPTABLE ? response.status : NOT_ACCEPTABLE;
257
+ return new Response(null, { status });
258
+ };
259
+ var prefetch2 = (url, options = {}) => {
260
+ const kind = options.kind ?? "document";
261
+ if (!canPrefetch2())
262
+ return;
263
+ if (kind === "module") {
264
+ preloadModule2(url);
265
+ return;
266
+ }
267
+ if (kind === "route") {
268
+ prefetch2(url, { kind: "document" });
269
+ prefetch2(url, { kind: "data" });
270
+ return;
271
+ }
272
+ const key = cacheKey(kind, url);
273
+ const existing = cache.get(key);
274
+ if (existing) {
275
+ touch(key, existing);
276
+ return;
277
+ }
278
+ if (typeof fetch === "undefined") {
279
+ injectPrefetchFallback(kind, url);
280
+ return;
281
+ }
282
+ while (cache.size >= PREFETCH_CACHE_LIMIT)
283
+ evictOldest();
284
+ const { abort, promise } = enqueue((signal) => kind === "data" ? fetchRouteData(url, signal) : fetchDocument(url, signal));
285
+ cache.set(key, { abort, kind, promise, url });
286
+ };
287
+ var supportsSpeculationRules = () => typeof HTMLScriptElement !== "undefined" && typeof HTMLScriptElement.supports === "function" && HTMLScriptElement.supports("speculationrules");
288
+ var speculate2 = (url) => {
289
+ if (!canPrefetch2() || !supportsSpeculationRules())
290
+ return false;
291
+ if (typeof document === "undefined")
292
+ return false;
293
+ const resolved = resolveHref(url);
294
+ if (liveSpeculationRules.has(resolved))
295
+ return false;
296
+ while (liveSpeculationRules.size >= MAX_LIVE_SPECULATION_RULES) {
297
+ const oldest = liveSpeculationRules.keys().next();
298
+ if (oldest.done)
299
+ break;
300
+ liveSpeculationRules.get(oldest.value)?.remove();
301
+ liveSpeculationRules.delete(oldest.value);
302
+ }
303
+ const script = applyPageNonce(document.createElement("script"));
304
+ script.type = "speculationrules";
305
+ script.textContent = JSON.stringify({
306
+ prerender: [{ eagerness: "immediate", urls: [url] }]
307
+ });
308
+ document.head.append(script);
309
+ liveSpeculationRules.set(resolved, script);
310
+ return true;
311
+ };
312
+ var noopHandle = {
313
+ cancel: () => {}
314
+ };
315
+ var scheduleHoverPrefetch2 = (url, options = {}) => {
316
+ if (typeof window === "undefined")
317
+ return noopHandle;
318
+ const timer = window.setTimeout(() => {
319
+ prefetch2(url, { kind: options.kind ?? "route" });
320
+ if (options.prerender)
321
+ speculate2(url);
322
+ options.onPrefetch?.();
323
+ }, HOVER_DEBOUNCE_MS);
324
+ return {
325
+ cancel: () => window.clearTimeout(timer)
326
+ };
327
+ };
328
+ var viewportTargets = new WeakMap;
329
+ var viewportObserver = null;
330
+ var handleIntersections = (entries) => {
331
+ for (const entry of entries) {
332
+ if (!entry.isIntersecting)
333
+ continue;
334
+ const target = viewportTargets.get(entry.target);
335
+ viewportObserver?.unobserve(entry.target);
336
+ viewportTargets.delete(entry.target);
337
+ if (!target)
338
+ continue;
339
+ prefetch2(target.url, { kind: target.options.kind });
340
+ target.options.onVisible?.();
341
+ }
342
+ };
343
+ var getViewportObserver = () => {
344
+ if (viewportObserver)
345
+ return viewportObserver;
346
+ if (typeof IntersectionObserver === "undefined")
347
+ return null;
348
+ viewportObserver = new IntersectionObserver(handleIntersections, {
349
+ rootMargin: VIEWPORT_ROOT_MARGIN
350
+ });
351
+ return viewportObserver;
352
+ };
353
+ var observeViewport2 = (element, url, options = {}) => {
354
+ const observer = getViewportObserver();
355
+ if (!observer || !canPrefetch2())
356
+ return () => {
357
+ return;
358
+ };
359
+ viewportTargets.set(element, { options, url });
360
+ observer.observe(element);
361
+ return () => {
362
+ observer.unobserve(element);
363
+ viewportTargets.delete(element);
364
+ };
365
+ };
366
+ var resetPrefetchState2 = () => {
367
+ clearPrefetchCache2();
368
+ queue.length = 0;
369
+ preloadedModules.clear();
370
+ prefetchedStyles.clear();
371
+ for (const script of liveSpeculationRules.values())
372
+ script.remove();
373
+ liveSpeculationRules.clear();
374
+ viewportObserver?.disconnect();
375
+ viewportObserver = null;
376
+ };
377
+
378
+ export { readPageNonce, ROUTE_DATA_MEDIA_TYPE2, canPrefetch2, isDevelopmentClient2, isPrefetchableHref2, resolveDefaultPrefetchMode2, clearPrefetchCache2, consumePrefetch2, hasPrefetched2, prefetchStylesheet2, preloadModule2, prefetch2, speculate2, scheduleHoverPrefetch2, observeViewport2, resetPrefetchState2 };
379
+
380
+ //# debugId=A1B3BE211D0225E064756E2164756E21
381
+ //# sourceMappingURL=index-6b66nzyf.js.map