@nifrajs/web 5.5.1 → 5.7.0

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 (481) hide show
  1. package/CHANGELOG.md +243 -0
  2. package/README.md +21 -11
  3. package/dist/boundary.d.ts +67 -7
  4. package/dist/boundary.d.ts.map +1 -1
  5. package/dist/boundary.js +6 -4
  6. package/dist/boundary.js.map +1 -1
  7. package/dist/build-plan.d.ts +3 -0
  8. package/dist/build-plan.d.ts.map +1 -1
  9. package/dist/build-plan.js.map +1 -1
  10. package/dist/build-vite.d.ts.map +1 -1
  11. package/dist/build-vite.js +2 -0
  12. package/dist/build-vite.js.map +1 -1
  13. package/dist/build.d.ts +9 -2
  14. package/dist/build.d.ts.map +1 -1
  15. package/dist/build.js +10 -0
  16. package/dist/build.js.map +1 -1
  17. package/dist/client.d.ts +3 -1
  18. package/dist/client.d.ts.map +1 -1
  19. package/dist/client.js +174 -23
  20. package/dist/client.js.map +1 -1
  21. package/dist/csp.d.ts +8 -0
  22. package/dist/csp.d.ts.map +1 -1
  23. package/dist/csp.js +11 -2
  24. package/dist/csp.js.map +1 -1
  25. package/dist/deferred.d.ts +6 -4
  26. package/dist/deferred.d.ts.map +1 -1
  27. package/dist/deferred.js +10 -6
  28. package/dist/deferred.js.map +1 -1
  29. package/dist/dev-feed.d.ts.map +1 -1
  30. package/dist/dev-feed.js +11 -2
  31. package/dist/dev-feed.js.map +1 -1
  32. package/dist/dev-session.d.ts.map +1 -1
  33. package/dist/dev-session.js +13 -6
  34. package/dist/dev-session.js.map +1 -1
  35. package/dist/dev.d.ts +4 -1
  36. package/dist/dev.d.ts.map +1 -1
  37. package/dist/dev.js +12 -5
  38. package/dist/dev.js.map +1 -1
  39. package/dist/diagnostic-catalog.d.ts +4 -0
  40. package/dist/diagnostic-catalog.d.ts.map +1 -1
  41. package/dist/diagnostic-catalog.js +48 -0
  42. package/dist/diagnostic-catalog.js.map +1 -1
  43. package/dist/diagnostic.d.ts +1 -1
  44. package/dist/diagnostic.d.ts.map +1 -1
  45. package/dist/diagnostic.js +1 -1
  46. package/dist/diagnostic.js.map +1 -1
  47. package/dist/fn.d.ts +5 -3
  48. package/dist/fn.d.ts.map +1 -1
  49. package/dist/fn.js +20 -5
  50. package/dist/fn.js.map +1 -1
  51. package/dist/fs.d.ts.map +1 -1
  52. package/dist/fs.js +13 -3
  53. package/dist/fs.js.map +1 -1
  54. package/dist/identity.d.ts +22 -0
  55. package/dist/identity.d.ts.map +1 -0
  56. package/dist/identity.js +60 -0
  57. package/dist/identity.js.map +1 -0
  58. package/dist/index.d.ts +8 -6
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +6 -3
  61. package/dist/index.js.map +1 -1
  62. package/dist/internal/cdn/cloudflare.d.ts +2 -1
  63. package/dist/internal/cdn/cloudflare.d.ts.map +1 -1
  64. package/dist/internal/cdn/cloudflare.js +2 -1
  65. package/dist/internal/cdn/cloudflare.js.map +1 -1
  66. package/dist/internal/certified-components.d.ts +1 -1
  67. package/dist/internal/certified-components.js +1 -1
  68. package/dist/internal/codegen.d.ts +11 -10
  69. package/dist/internal/codegen.d.ts.map +1 -1
  70. package/dist/internal/codegen.js +73 -10
  71. package/dist/internal/codegen.js.map +1 -1
  72. package/dist/internal/dev-websocket.d.ts +73 -0
  73. package/dist/internal/dev-websocket.d.ts.map +1 -0
  74. package/dist/internal/dev-websocket.js +145 -0
  75. package/dist/internal/dev-websocket.js.map +1 -0
  76. package/dist/internal/hole-runtime.d.ts +66 -0
  77. package/dist/internal/hole-runtime.d.ts.map +1 -0
  78. package/dist/internal/hole-runtime.js +211 -0
  79. package/dist/internal/hole-runtime.js.map +1 -0
  80. package/dist/internal/identity-epoch.d.ts +50 -0
  81. package/dist/internal/identity-epoch.d.ts.map +1 -0
  82. package/dist/internal/identity-epoch.js +180 -0
  83. package/dist/internal/identity-epoch.js.map +1 -0
  84. package/dist/internal/invalidation-contract.d.ts +23 -0
  85. package/dist/internal/invalidation-contract.d.ts.map +1 -0
  86. package/dist/internal/invalidation-contract.js +11 -0
  87. package/dist/internal/invalidation-contract.js.map +1 -0
  88. package/dist/internal/invalidation.d.ts +62 -0
  89. package/dist/internal/invalidation.d.ts.map +1 -0
  90. package/dist/internal/invalidation.js +149 -0
  91. package/dist/internal/invalidation.js.map +1 -0
  92. package/dist/internal/island-bindings.d.ts +51 -0
  93. package/dist/internal/island-bindings.d.ts.map +1 -0
  94. package/dist/internal/island-bindings.js +147 -0
  95. package/dist/internal/island-bindings.js.map +1 -0
  96. package/dist/internal/island-list.d.ts +26 -0
  97. package/dist/internal/island-list.d.ts.map +1 -0
  98. package/dist/internal/island-list.js +78 -0
  99. package/dist/internal/island-list.js.map +1 -0
  100. package/dist/internal/island-mount.d.ts +4 -0
  101. package/dist/internal/island-mount.d.ts.map +1 -0
  102. package/dist/internal/island-mount.js +66 -0
  103. package/dist/internal/island-mount.js.map +1 -0
  104. package/dist/internal/island-owner.d.ts +5 -0
  105. package/dist/internal/island-owner.d.ts.map +1 -0
  106. package/dist/internal/island-owner.js +20 -0
  107. package/dist/internal/island-owner.js.map +1 -0
  108. package/dist/internal/island-resource.d.ts +30 -0
  109. package/dist/internal/island-resource.d.ts.map +1 -0
  110. package/dist/internal/island-resource.js +57 -0
  111. package/dist/internal/island-resource.js.map +1 -0
  112. package/dist/internal/island-signals.d.ts +51 -0
  113. package/dist/internal/island-signals.d.ts.map +1 -0
  114. package/dist/internal/island-signals.js +220 -0
  115. package/dist/internal/island-signals.js.map +1 -0
  116. package/dist/internal/keep-alive-table.d.ts +23 -0
  117. package/dist/internal/keep-alive-table.d.ts.map +1 -0
  118. package/dist/internal/keep-alive-table.js +53 -0
  119. package/dist/internal/keep-alive-table.js.map +1 -0
  120. package/dist/internal/live-contract.d.ts +101 -0
  121. package/dist/internal/live-contract.d.ts.map +1 -0
  122. package/dist/internal/live-contract.js +5 -0
  123. package/dist/internal/live-contract.js.map +1 -0
  124. package/dist/internal/live-queries.d.ts +22 -0
  125. package/dist/internal/live-queries.d.ts.map +1 -0
  126. package/dist/internal/live-queries.js +54 -0
  127. package/dist/internal/live-queries.js.map +1 -0
  128. package/dist/internal/page-events.d.ts +10 -0
  129. package/dist/internal/page-events.d.ts.map +1 -0
  130. package/dist/internal/page-events.js +26 -0
  131. package/dist/internal/page-events.js.map +1 -0
  132. package/dist/internal/page-execution.d.ts +16 -1
  133. package/dist/internal/page-execution.d.ts.map +1 -1
  134. package/dist/internal/page-execution.js +432 -31
  135. package/dist/internal/page-execution.js.map +1 -1
  136. package/dist/internal/parity.d.ts +3 -0
  137. package/dist/internal/parity.d.ts.map +1 -1
  138. package/dist/internal/parity.js +28 -5
  139. package/dist/internal/parity.js.map +1 -1
  140. package/dist/internal/ppr/admission.d.ts +83 -0
  141. package/dist/internal/ppr/admission.d.ts.map +1 -0
  142. package/dist/internal/ppr/admission.js +221 -0
  143. package/dist/internal/ppr/admission.js.map +1 -0
  144. package/dist/internal/ppr/canary.d.ts +24 -0
  145. package/dist/internal/ppr/canary.d.ts.map +1 -0
  146. package/dist/internal/ppr/canary.js +102 -0
  147. package/dist/internal/ppr/canary.js.map +1 -0
  148. package/dist/internal/ppr/compile-shell.d.ts +39 -0
  149. package/dist/internal/ppr/compile-shell.d.ts.map +1 -0
  150. package/dist/internal/ppr/compile-shell.js +298 -0
  151. package/dist/internal/ppr/compile-shell.js.map +1 -0
  152. package/dist/internal/ppr/contract.d.ts +177 -0
  153. package/dist/internal/ppr/contract.d.ts.map +1 -0
  154. package/dist/internal/ppr/contract.js +80 -0
  155. package/dist/internal/ppr/contract.js.map +1 -0
  156. package/dist/internal/ppr/frames.d.ts +71 -0
  157. package/dist/internal/ppr/frames.d.ts.map +1 -0
  158. package/dist/internal/ppr/frames.js +119 -0
  159. package/dist/internal/ppr/frames.js.map +1 -0
  160. package/dist/internal/ppr/integration.d.ts +19 -0
  161. package/dist/internal/ppr/integration.d.ts.map +1 -0
  162. package/dist/internal/ppr/integration.js +106 -0
  163. package/dist/internal/ppr/integration.js.map +1 -0
  164. package/dist/internal/ppr/options.d.ts +96 -0
  165. package/dist/internal/ppr/options.d.ts.map +1 -0
  166. package/dist/internal/ppr/options.js +125 -0
  167. package/dist/internal/ppr/options.js.map +1 -0
  168. package/dist/internal/ppr/route-rules.d.ts +12 -0
  169. package/dist/internal/ppr/route-rules.d.ts.map +1 -0
  170. package/dist/internal/ppr/route-rules.js +53 -0
  171. package/dist/internal/ppr/route-rules.js.map +1 -0
  172. package/dist/internal/ppr/runtime.d.ts +29 -0
  173. package/dist/internal/ppr/runtime.d.ts.map +1 -0
  174. package/dist/internal/ppr/runtime.js +35 -0
  175. package/dist/internal/ppr/runtime.js.map +1 -0
  176. package/dist/internal/ppr/server.d.ts +29 -0
  177. package/dist/internal/ppr/server.d.ts.map +1 -0
  178. package/dist/internal/ppr/server.js +1409 -0
  179. package/dist/internal/ppr/server.js.map +1 -0
  180. package/dist/internal/ppr/shell-store.d.ts +39 -0
  181. package/dist/internal/ppr/shell-store.d.ts.map +1 -0
  182. package/dist/internal/ppr/shell-store.js +106 -0
  183. package/dist/internal/ppr/shell-store.js.map +1 -0
  184. package/dist/internal/prerendered-pages.d.ts +1 -1
  185. package/dist/internal/prerendered-pages.d.ts.map +1 -1
  186. package/dist/internal/prerendered-pages.js +7 -4
  187. package/dist/internal/prerendered-pages.js.map +1 -1
  188. package/dist/internal/present.d.ts +11 -0
  189. package/dist/internal/present.d.ts.map +1 -0
  190. package/dist/internal/present.js +13 -0
  191. package/dist/internal/present.js.map +1 -0
  192. package/dist/internal/query-digest.d.ts +9 -0
  193. package/dist/internal/query-digest.d.ts.map +1 -0
  194. package/dist/internal/query-digest.js +23 -0
  195. package/dist/internal/query-digest.js.map +1 -0
  196. package/dist/internal/query-runtime.d.ts +6 -1
  197. package/dist/internal/query-runtime.d.ts.map +1 -1
  198. package/dist/internal/query-runtime.js +9 -0
  199. package/dist/internal/query-runtime.js.map +1 -1
  200. package/dist/internal/query-seam.d.ts +29 -0
  201. package/dist/internal/query-seam.d.ts.map +1 -0
  202. package/dist/internal/query-seam.js +23 -0
  203. package/dist/internal/query-seam.js.map +1 -0
  204. package/dist/internal/render-document.d.ts +34 -64
  205. package/dist/internal/render-document.d.ts.map +1 -1
  206. package/dist/internal/render-document.js +82 -64
  207. package/dist/internal/render-document.js.map +1 -1
  208. package/dist/internal/request-abort.d.ts +8 -0
  209. package/dist/internal/request-abort.d.ts.map +1 -0
  210. package/dist/internal/request-abort.js +22 -0
  211. package/dist/internal/request-abort.js.map +1 -0
  212. package/dist/internal/server-boundary.d.ts +2 -0
  213. package/dist/internal/server-boundary.d.ts.map +1 -1
  214. package/dist/internal/server-boundary.js +8 -1
  215. package/dist/internal/server-boundary.js.map +1 -1
  216. package/dist/internal/share-data.d.ts +10 -0
  217. package/dist/internal/share-data.d.ts.map +1 -0
  218. package/dist/internal/share-data.js +135 -0
  219. package/dist/internal/share-data.js.map +1 -0
  220. package/dist/internal/status-page.d.ts +68 -0
  221. package/dist/internal/status-page.d.ts.map +1 -0
  222. package/dist/internal/status-page.js +66 -0
  223. package/dist/internal/status-page.js.map +1 -0
  224. package/dist/internal/store-signature.d.ts +15 -0
  225. package/dist/internal/store-signature.d.ts.map +1 -0
  226. package/dist/internal/store-signature.js +114 -0
  227. package/dist/internal/store-signature.js.map +1 -0
  228. package/dist/internal/vite-plugin-compat.d.ts +2 -2
  229. package/dist/internal/vite-plugin-compat.js +2 -2
  230. package/dist/internal/web-app.d.ts +26 -0
  231. package/dist/internal/web-app.d.ts.map +1 -1
  232. package/dist/internal/web-app.js +79 -3
  233. package/dist/internal/web-app.js.map +1 -1
  234. package/dist/islands-swap.d.ts +41 -0
  235. package/dist/islands-swap.d.ts.map +1 -0
  236. package/dist/islands-swap.js +270 -0
  237. package/dist/islands-swap.js.map +1 -0
  238. package/dist/islands.d.ts +86 -24
  239. package/dist/islands.d.ts.map +1 -1
  240. package/dist/islands.js +138 -78
  241. package/dist/islands.js.map +1 -1
  242. package/dist/isr.d.ts +67 -13
  243. package/dist/isr.d.ts.map +1 -1
  244. package/dist/isr.js +247 -99
  245. package/dist/isr.js.map +1 -1
  246. package/dist/keep-alive.d.ts +147 -0
  247. package/dist/keep-alive.d.ts.map +1 -0
  248. package/dist/keep-alive.js +1102 -0
  249. package/dist/keep-alive.js.map +1 -0
  250. package/dist/live/bus.d.ts +70 -0
  251. package/dist/live/bus.d.ts.map +1 -0
  252. package/dist/live/bus.js +55 -0
  253. package/dist/live/bus.js.map +1 -0
  254. package/dist/live/core.d.ts +25 -0
  255. package/dist/live/core.d.ts.map +1 -0
  256. package/dist/live/core.js +29 -0
  257. package/dist/live/core.js.map +1 -0
  258. package/dist/live/history.d.ts +38 -0
  259. package/dist/live/history.d.ts.map +1 -0
  260. package/dist/live/history.js +104 -0
  261. package/dist/live/history.js.map +1 -0
  262. package/dist/live/hub-protocol.d.ts +46 -0
  263. package/dist/live/hub-protocol.d.ts.map +1 -0
  264. package/dist/live/hub-protocol.js +108 -0
  265. package/dist/live/hub-protocol.js.map +1 -0
  266. package/dist/live/hub.d.ts +185 -0
  267. package/dist/live/hub.d.ts.map +1 -0
  268. package/dist/live/hub.js +544 -0
  269. package/dist/live/hub.js.map +1 -0
  270. package/dist/live/keyring.d.ts +92 -0
  271. package/dist/live/keyring.d.ts.map +1 -0
  272. package/dist/live/keyring.js +265 -0
  273. package/dist/live/keyring.js.map +1 -0
  274. package/dist/live/read-capped.d.ts +6 -0
  275. package/dist/live/read-capped.d.ts.map +1 -0
  276. package/dist/live/read-capped.js +42 -0
  277. package/dist/live/read-capped.js.map +1 -0
  278. package/dist/live/revocations.d.ts +52 -0
  279. package/dist/live/revocations.d.ts.map +1 -0
  280. package/dist/live/revocations.js +116 -0
  281. package/dist/live/revocations.js.map +1 -0
  282. package/dist/live/settings.d.ts +14 -0
  283. package/dist/live/settings.d.ts.map +1 -0
  284. package/dist/live/settings.js +38 -0
  285. package/dist/live/settings.js.map +1 -0
  286. package/dist/live-client.d.ts +34 -0
  287. package/dist/live-client.d.ts.map +1 -0
  288. package/dist/live-client.js +878 -0
  289. package/dist/live-client.js.map +1 -0
  290. package/dist/live-hub.d.ts +130 -0
  291. package/dist/live-hub.d.ts.map +1 -0
  292. package/dist/live-hub.js +507 -0
  293. package/dist/live-hub.js.map +1 -0
  294. package/dist/live-redis.d.ts +60 -0
  295. package/dist/live-redis.d.ts.map +1 -0
  296. package/dist/live-redis.js +212 -0
  297. package/dist/live-redis.js.map +1 -0
  298. package/dist/live.d.ts +150 -0
  299. package/dist/live.d.ts.map +1 -0
  300. package/dist/live.js +972 -0
  301. package/dist/live.js.map +1 -0
  302. package/dist/manifest.d.ts +113 -2
  303. package/dist/manifest.d.ts.map +1 -1
  304. package/dist/manifest.js +109 -5
  305. package/dist/manifest.js.map +1 -1
  306. package/dist/navigation.d.ts +9 -3
  307. package/dist/navigation.d.ts.map +1 -1
  308. package/dist/navigation.js +13 -3
  309. package/dist/navigation.js.map +1 -1
  310. package/dist/plugins/vite-zone-guard.d.ts +6 -0
  311. package/dist/plugins/vite-zone-guard.d.ts.map +1 -1
  312. package/dist/plugins/vite-zone-guard.js +8 -2
  313. package/dist/plugins/vite-zone-guard.js.map +1 -1
  314. package/dist/ppr.d.ts +73 -0
  315. package/dist/ppr.d.ts.map +1 -0
  316. package/dist/ppr.js +76 -0
  317. package/dist/ppr.js.map +1 -0
  318. package/dist/query.d.ts +8 -13
  319. package/dist/query.d.ts.map +1 -1
  320. package/dist/query.js +112 -18
  321. package/dist/query.js.map +1 -1
  322. package/dist/render-seam.d.ts +32 -0
  323. package/dist/render-seam.d.ts.map +1 -1
  324. package/dist/render-seam.js +7 -0
  325. package/dist/render-seam.js.map +1 -1
  326. package/dist/route-types.d.ts.map +1 -1
  327. package/dist/route-types.js +2 -2
  328. package/dist/route-types.js.map +1 -1
  329. package/dist/router.d.ts +72 -4
  330. package/dist/router.d.ts.map +1 -1
  331. package/dist/router.js +416 -129
  332. package/dist/router.js.map +1 -1
  333. package/dist/server-components/build.d.ts.map +1 -1
  334. package/dist/server-components/build.js +3 -3
  335. package/dist/server-components/build.js.map +1 -1
  336. package/dist/server-components/client.d.ts +23 -1
  337. package/dist/server-components/client.d.ts.map +1 -1
  338. package/dist/server-components/client.js +92 -5
  339. package/dist/server-components/client.js.map +1 -1
  340. package/dist/server-components/definition.d.ts.map +1 -1
  341. package/dist/server-components/definition.js +2 -1
  342. package/dist/server-components/definition.js.map +1 -1
  343. package/dist/server-components/hole.d.ts +8 -0
  344. package/dist/server-components/hole.d.ts.map +1 -0
  345. package/dist/server-components/hole.js +20 -0
  346. package/dist/server-components/hole.js.map +1 -0
  347. package/dist/server-components/html-policy.d.ts.map +1 -1
  348. package/dist/server-components/html-policy.js +62 -4
  349. package/dist/server-components/html-policy.js.map +1 -1
  350. package/dist/server-components/html-scan.d.ts +17 -0
  351. package/dist/server-components/html-scan.d.ts.map +1 -0
  352. package/dist/server-components/html-scan.js +180 -0
  353. package/dist/server-components/html-scan.js.map +1 -0
  354. package/dist/server-components/html.d.ts.map +1 -1
  355. package/dist/server-components/html.js +19 -4
  356. package/dist/server-components/html.js.map +1 -1
  357. package/dist/server-components/router-integration.d.ts +4 -1
  358. package/dist/server-components/router-integration.d.ts.map +1 -1
  359. package/dist/server-components/router-integration.js +23 -2
  360. package/dist/server-components/router-integration.js.map +1 -1
  361. package/dist/server-components/runtime.d.ts +6 -1
  362. package/dist/server-components/runtime.d.ts.map +1 -1
  363. package/dist/server-components/runtime.js +88 -29
  364. package/dist/server-components/runtime.js.map +1 -1
  365. package/dist/server-components/state.d.ts +3 -1
  366. package/dist/server-components/state.d.ts.map +1 -1
  367. package/dist/server-components/state.js +50 -38
  368. package/dist/server-components/state.js.map +1 -1
  369. package/dist/server-components/types.d.ts +9 -0
  370. package/dist/server-components/types.d.ts.map +1 -1
  371. package/dist/server-components/vite.d.ts.map +1 -1
  372. package/dist/server-components/vite.js +26 -9
  373. package/dist/server-components/vite.js.map +1 -1
  374. package/dist/vite.d.ts +5 -1
  375. package/dist/vite.d.ts.map +1 -1
  376. package/dist/vite.js +58 -4
  377. package/dist/vite.js.map +1 -1
  378. package/package.json +48 -8
  379. package/src/boundary.ts +77 -5
  380. package/src/build-plan.ts +3 -0
  381. package/src/build-vite.ts +2 -0
  382. package/src/build.ts +20 -1
  383. package/src/client.ts +183 -23
  384. package/src/csp.ts +16 -2
  385. package/src/deferred.ts +11 -5
  386. package/src/dev-feed.ts +11 -2
  387. package/src/dev-session.ts +22 -11
  388. package/src/dev.ts +29 -8
  389. package/src/diagnostic-catalog.ts +53 -0
  390. package/src/diagnostic.ts +1 -0
  391. package/src/fn.ts +24 -7
  392. package/src/fs.ts +22 -8
  393. package/src/identity.ts +61 -0
  394. package/src/index.ts +20 -4
  395. package/src/internal/cdn/cloudflare.ts +2 -1
  396. package/src/internal/certified-components.ts +1 -1
  397. package/src/internal/codegen.ts +95 -9
  398. package/src/internal/dev-websocket.ts +230 -0
  399. package/src/internal/hole-runtime.ts +286 -0
  400. package/src/internal/identity-epoch.ts +239 -0
  401. package/src/internal/invalidation-contract.ts +35 -0
  402. package/src/internal/invalidation.ts +213 -0
  403. package/src/internal/island-bindings.ts +191 -0
  404. package/src/internal/island-list.ts +92 -0
  405. package/src/internal/island-mount.ts +68 -0
  406. package/src/internal/island-owner.ts +20 -0
  407. package/src/internal/island-resource.ts +76 -0
  408. package/src/internal/island-signals.ts +249 -0
  409. package/src/internal/keep-alive-table.ts +72 -0
  410. package/src/internal/live-contract.ts +111 -0
  411. package/src/internal/live-queries.ts +60 -0
  412. package/src/internal/page-events.ts +27 -0
  413. package/src/internal/page-execution.ts +605 -45
  414. package/src/internal/parity.ts +35 -6
  415. package/src/internal/ppr/admission.ts +300 -0
  416. package/src/internal/ppr/canary.ts +122 -0
  417. package/src/internal/ppr/compile-shell.ts +379 -0
  418. package/src/internal/ppr/contract.ts +265 -0
  419. package/src/internal/ppr/frames.ts +170 -0
  420. package/src/internal/ppr/integration.ts +137 -0
  421. package/src/internal/ppr/options.ts +221 -0
  422. package/src/internal/ppr/route-rules.ts +77 -0
  423. package/src/internal/ppr/runtime.ts +39 -0
  424. package/src/internal/ppr/server.ts +1766 -0
  425. package/src/internal/ppr/shell-store.ts +152 -0
  426. package/src/internal/prerendered-pages.ts +7 -4
  427. package/src/internal/present.ts +20 -0
  428. package/src/internal/query-digest.ts +34 -0
  429. package/src/internal/query-runtime.ts +14 -1
  430. package/src/internal/query-seam.ts +48 -0
  431. package/src/internal/render-document.ts +158 -113
  432. package/src/internal/request-abort.ts +26 -0
  433. package/src/internal/server-boundary.ts +10 -1
  434. package/src/internal/share-data.ts +136 -0
  435. package/src/internal/status-page.ts +95 -0
  436. package/src/internal/store-signature.ts +149 -0
  437. package/src/internal/vite-plugin-compat.ts +2 -2
  438. package/src/internal/web-app.ts +123 -3
  439. package/src/islands-swap.ts +283 -0
  440. package/src/islands.ts +169 -72
  441. package/src/isr.ts +348 -106
  442. package/src/keep-alive.ts +1354 -0
  443. package/src/live/bus.ts +104 -0
  444. package/src/live/core.ts +52 -0
  445. package/src/live/history.ts +109 -0
  446. package/src/live/hub-protocol.ts +133 -0
  447. package/src/live/hub.ts +620 -0
  448. package/src/live/keyring.ts +384 -0
  449. package/src/live/read-capped.ts +36 -0
  450. package/src/live/revocations.ts +155 -0
  451. package/src/live/settings.ts +46 -0
  452. package/src/live-client.ts +1011 -0
  453. package/src/live-hub.ts +658 -0
  454. package/src/live-redis.ts +284 -0
  455. package/src/live.ts +1257 -0
  456. package/src/manifest.ts +274 -6
  457. package/src/navigation.ts +14 -2
  458. package/src/plugins/vite-zone-guard.ts +15 -2
  459. package/src/ppr.ts +153 -0
  460. package/src/query.ts +147 -20
  461. package/src/render-seam.ts +37 -0
  462. package/src/route-types.ts +3 -1
  463. package/src/router.ts +534 -132
  464. package/src/server-components/build.ts +9 -3
  465. package/src/server-components/client.ts +89 -5
  466. package/src/server-components/definition.ts +2 -1
  467. package/src/server-components/hole.ts +23 -0
  468. package/src/server-components/html-policy.ts +63 -4
  469. package/src/server-components/html-scan.ts +159 -0
  470. package/src/server-components/html.ts +18 -4
  471. package/src/server-components/router-integration.ts +21 -2
  472. package/src/server-components/runtime.ts +114 -31
  473. package/src/server-components/state.ts +66 -44
  474. package/src/server-components/types.ts +16 -0
  475. package/src/server-components/vite.ts +33 -14
  476. package/src/vite.ts +75 -6
  477. package/dist/nano.d.ts +0 -125
  478. package/dist/nano.d.ts.map +0 -1
  479. package/dist/nano.js +0 -190
  480. package/dist/nano.js.map +0 -1
  481. package/src/nano.ts +0 -246
@@ -1,14 +1,19 @@
1
1
  import { emitRequestErrorLog } from "@nifrajs/core/edge-kit";
2
2
  import { jsonLogger } from "@nifrajs/core/logger";
3
3
  import { NIFRA_BACKEND_EVIDENCE, NIFRA_BACKEND_MOUNT, NIFRA_BACKEND_WS_MOUNT, NIFRA_BACKEND_WS_RUNTIME, preRouteMountPaths, } from "@nifrajs/core/mount";
4
- import { server } from "@nifrajs/core/server";
4
+ import { withResponseObserver } from "@nifrajs/core/response-observer";
5
+ import { replacedRequestOf, server } from "@nifrajs/core/server";
5
6
  import { cspNonceResolver, DOCUMENT_POLICY, isCspPolicy } from "../csp.js";
6
7
  import { hostPolicyGate, isHostPolicy, } from "../host-policy.js";
7
8
  import { CACHE_CHANNEL } from "../isr.js";
8
9
  import { generateLlmsTxt } from "../llms-txt.js";
9
10
  import { createMatcher, PRERENDERED_LIST_PATH } from "../router.js";
11
+ import { identityEpochHook } from "./identity-epoch.js";
12
+ import { INVALIDATION, invalidationOf } from "./invalidation-contract.js";
13
+ import { LIVE_ATTACH } from "./live-contract.js";
10
14
  import { formatShadowedPages, shadowedPages } from "./mount-shadow.js";
11
15
  import { createPageRequestExecutor } from "./page-execution.js";
16
+ import { PPR_SERVER, PPR_SETUP } from "./ppr/contract.js";
12
17
  import { servePrerenderedPages } from "./prerendered-pages.js";
13
18
  import { requestPattern } from "./route-path.js";
14
19
  function pageI18n(routing) {
@@ -44,6 +49,11 @@ function pageI18n(routing) {
44
49
  * The `Request` is rebuilt rather than mutated (`url` is read-only), preserving method, headers, body,
45
50
  * and duplex streaming - the body is passed through unread, so a large or streamed upload is untouched.
46
51
  */
52
+ /** Publish what a write named, for an app with `live` and no cache wrapper to run the pipeline. */
53
+ async function publishOwn(op, request, publish) {
54
+ const { settleInvalidation } = await import("./invalidation.js");
55
+ await settleInvalidation(op, { publish }, request, undefined);
56
+ }
47
57
  /**
48
58
  * Resolve the explicit symbol-keyed backend mount interface. The symbol seam forwards platform
49
59
  * context without making web depend on client.
@@ -125,14 +135,23 @@ export function createWebApp(options) {
125
135
  }
126
136
  app.use(hostPolicyGate(options.hostPolicy, options.buildAssets));
127
137
  }
138
+ // Before every app hook: a live load becomes the target page's GET here, so each hook, middleware,
139
+ // gate and loader sees that path once, as a navigation would.
140
+ const liveAttachment = options.live?.[LIVE_ATTACH]({
141
+ matchRoute: (path) => pageExecutor.matchRoute(path),
142
+ app,
143
+ });
144
+ if (liveAttachment !== undefined)
145
+ app.onRequest(liveAttachment.onRequest);
128
146
  // Before the mount hooks and before every page route, so the order-scoped hooks (`derive`,
129
147
  // `beforeHandle`, assurance evidence) actually bind to them - see the `use` option. A caller
130
148
  // cannot do this after the fact: by the time this function returns, the routes are declared.
131
149
  options.use?.(app);
132
150
  if (options.serverComponents !== undefined) {
133
151
  const runtime = options.serverComponents;
152
+ // A route whose holes show server components is one visitor's too.
134
153
  const match = createMatcher(manifest.routes
135
- .filter((route) => runtime.owns(route.id))
154
+ .filter((route) => runtime.owns(route.id) || runtime.hosts?.(route.id) === true)
136
155
  .map((route) => ({ routeId: route.id, pattern: route.pattern })));
137
156
  const privateRoute = (request) => request.headers.has("x-nifra-component") || match(new URL(request.url).pathname) !== undefined;
138
157
  Object.defineProperty(app, Symbol.for("nifra.web.private-route"), { value: privateRoute });
@@ -173,6 +192,36 @@ export function createWebApp(options) {
173
192
  cacheChannel.enabled = true;
174
193
  },
175
194
  });
195
+ // One owner per write. A cache wrapper that opened the channel runs the whole pipeline and takes
196
+ // the operation here, by the request it passed in; without one, the app publishes the write's keys
197
+ // and tags itself, and a write with nothing to publish needs nothing at all.
198
+ const handedOver = new WeakMap();
199
+ const live = options.live;
200
+ const publish = live === undefined ? undefined : (keys) => live.publish(...keys);
201
+ Object.defineProperty(app, INVALIDATION, {
202
+ value: {
203
+ take: (request) => {
204
+ const op = handedOver.get(request);
205
+ handedOver.delete(request);
206
+ return op;
207
+ },
208
+ publish,
209
+ },
210
+ });
211
+ const invalidate = (revalidation, request) => {
212
+ if (cacheChannel.enabled) {
213
+ const op = invalidationOf(revalidation);
214
+ // Every request in a hook's replacement chain: the wrapper holds the first one.
215
+ for (let held = request; held !== undefined; held = replacedRequestOf(held))
216
+ handedOver.set(held, op);
217
+ return undefined;
218
+ }
219
+ // Paths alone refresh only the submitting page, which the response header already does.
220
+ const named = revalidation.__nifraInvalidate;
221
+ if (publish === undefined || named === undefined || named.keys.length + named.tags.length === 0)
222
+ return undefined;
223
+ return publishOwn(invalidationOf(revalidation), request, publish);
224
+ };
176
225
  // Mount the in-process backend over HTTP at `apiPrefix`, when one is given, BEFORE page routing.
177
226
  // Core's pre-route mount seam runs before the page wildcard `/*`; parent request hooks run first,
178
227
  // child request hooks run inside the mount, and parent response hooks still wrap the result.
@@ -209,6 +258,14 @@ export function createWebApp(options) {
209
258
  const prerenderedList = ownPatterns.has(PRERENDERED_LIST_PATH)
210
259
  ? undefined
211
260
  : servedPrerenderedList(options.prerenderedPaths);
261
+ const ppr = options.experimental?.ppr?.[PPR_SETUP]({
262
+ adapter,
263
+ // biome-ignore lint/plugin/noConditionalEmptyObjectSpread: partial prerendering lists its scripts by hash only under an app's own policy.
264
+ ...(options.csp === undefined ? {} : { csp: options.csp }),
265
+ // The content-hashed entry changes with every client build; the store is per process.
266
+ deployment: clientEntry,
267
+ perRequestNonce: options.nonce !== undefined,
268
+ });
212
269
  const pageExecutor = createPageRequestExecutor({
213
270
  ...(options.cacheRouteModules === undefined
214
271
  ? {}
@@ -252,7 +309,16 @@ export function createWebApp(options) {
252
309
  ...(options.onLoaderError === undefined ? {} : { onLoaderError: options.onLoaderError }),
253
310
  logBoundaryError: boundaryErrorLog(options.server),
254
311
  cacheChannel,
312
+ // biome-ignore lint/plugin/noConditionalEmptyObjectSpread: the executor takes a route's shell path only when partial prerendering is set up.
313
+ ...(ppr === undefined ? {} : { ppr }),
314
+ invalidate,
315
+ liveLoadOf: liveAttachment?.loadOf,
316
+ liveSeedOf: liveAttachment?.seedOf,
255
317
  });
318
+ if (ppr !== undefined) {
319
+ Object.defineProperty(app, PPR_SERVER, { value: ppr.server });
320
+ app.register("POST", ppr.cancelPath, undefined, (c) => ppr.cancel(c.req));
321
+ }
256
322
  // A nonce app's documents authorize their scripts per request, which a file rendered once cannot.
257
323
  const prerendered = options.prerenderedPages === undefined || options.nonce !== undefined
258
324
  ? undefined
@@ -263,7 +329,8 @@ export function createWebApp(options) {
263
329
  if (pattern.startsWith("/*"))
264
330
  ownsRootCatchAll = true;
265
331
  const render = pageExecutor.get(route);
266
- app.register("GET", pattern, options.serverComponents?.owns(route.id)
332
+ app.register("GET", pattern, options.serverComponents?.owns(route.id) ||
333
+ options.serverComponents?.hosts?.(route.id) === true
267
334
  ? { capabilities: options.serverComponents.capabilities(route.id) }
268
335
  : undefined, prerendered === undefined ? render : prerendered(render));
269
336
  app.register("POST", pattern, undefined, pageExecutor.post(route));
@@ -312,6 +379,15 @@ export function createWebApp(options) {
312
379
  // and the router refuses a second `/*` under another param name.
313
380
  if (!ownsRootCatchAll)
314
381
  app.register("GET", "/*", undefined, pageExecutor.fallback);
382
+ // Last, after every hook the caller's `use` added: a cookie any of them sets is seen here.
383
+ if (manifest.routes.some((route) => route.keepAlive === true)) {
384
+ // As for error details: only a run that says it is development or test reports, and an unset
385
+ // NODE_ENV (an unbuilt `bun app.ts`, a Worker) counts as production.
386
+ const nodeEnv = typeof process === "undefined" ? undefined : process.env?.NODE_ENV;
387
+ app.use(withResponseObserver({
388
+ onResponseHeaders: identityEpochHook(options.keepAlive ?? {}, nodeEnv === "development" || nodeEnv === "test"),
389
+ }));
390
+ }
315
391
  const evidenceProvider = async (passed) => {
316
392
  const { traverseEvidence } = await import("./evidence-traversal.js");
317
393
  return traverseEvidence(evidenceProvider, passed, async (ancestry) => {
@@ -1 +1 @@
1
- {"version":3,"file":"web-app.js","sourceRoot":"","sources":["../../src/internal/web-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-app.js","sourceRoot":"","sources":["../../src/internal/web-app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @nifrajs/web/islands/swap - refresh one region of a server-rendered page from a plain link or form,
3
+ * without a full reload and without a client router.
4
+ *
5
+ * <form action="/hotels" data-swap="replace:results"><input name="q"></form>
6
+ * <ul data-swap-slot="results">...</ul>
7
+ * <a href="/hotels?page=2" data-swap="append:results">More</a>
8
+ *
9
+ * The request is the one the link or form makes anyway, plus an `x-nifra-swap: <slot>` header. The
10
+ * server runs the page as usual and answers with that slot's HTML alone (`slot()` in
11
+ * `@nifrajs/web-vanilla`), so the fragment is a slice of the real page. Any other answer - a redirect,
12
+ * another origin, a page without that slot - loads the URL normally. Only GET requests are enhanced:
13
+ * a POST form submits natively, so the browser applies its response's security policy and scripts,
14
+ * and the form is never sent twice.
15
+ */
16
+ import type { IslandEnhancer } from "./islands.js";
17
+ /** Where `enableSwap` looks for links, forms, slots and islands. */
18
+ export interface SwapOptions {
19
+ /** Default `document`. */
20
+ readonly root?: Document | Element;
21
+ }
22
+ /**
23
+ * Mount the page's islands, as `mountIslands` does, and make every `data-swap` link and GET form under
24
+ * `root` refresh its slot in place. Call it instead of `mountIslands`.
25
+ *
26
+ * - `data-swap="replace:<slot>"` replaces the content of the `data-swap-slot="<slot>"` element;
27
+ * `append:<slot>` adds to it, and a link or form inside that slot is spent: the slot's child holding
28
+ * it is removed when the next content arrives, so a "more" link at the end of a list gives way to
29
+ * the next page and its own "more" link.
30
+ * - A replacing GET pushes its URL, so a filtered list survives reload and can be shared; back and
31
+ * forward fetch the slots again for the URL they land on.
32
+ * - The islands inside a slot mount with it and unmount when it is replaced.
33
+ * - While a slot loads it carries `aria-busy="true"`; a newer swap of the same slot cancels the
34
+ * older one. When the request fails, the page stays as it is and the link or form gets
35
+ * `data-swap-error`.
36
+ *
37
+ * Nothing inside a `data-island-ignore` element swaps. Returns a disposer that removes the listeners,
38
+ * cancels pending swaps and unmounts every island.
39
+ */
40
+ export declare function enableSwap(enhancers: Readonly<Record<string, IslandEnhancer<never>>>, options?: SwapOptions): () => void;
41
+ //# sourceMappingURL=islands-swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"islands-swap.d.ts","sourceRoot":"","sources":["../src/islands-swap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAGlD,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CACnC;AAmBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAExB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAC1D,OAAO,GAAE,WAAgB,GACxB,MAAM,IAAI,CAyNZ"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * @nifrajs/web/islands/swap - refresh one region of a server-rendered page from a plain link or form,
3
+ * without a full reload and without a client router.
4
+ *
5
+ * <form action="/hotels" data-swap="replace:results"><input name="q"></form>
6
+ * <ul data-swap-slot="results">...</ul>
7
+ * <a href="/hotels?page=2" data-swap="append:results">More</a>
8
+ *
9
+ * The request is the one the link or form makes anyway, plus an `x-nifra-swap: <slot>` header. The
10
+ * server runs the page as usual and answers with that slot's HTML alone (`slot()` in
11
+ * `@nifrajs/web-vanilla`), so the fragment is a slice of the real page. Any other answer - a redirect,
12
+ * another origin, a page without that slot - loads the URL normally. Only GET requests are enhanced:
13
+ * a POST form submits natively, so the browser applies its response's security policy and scripts,
14
+ * and the form is never sent twice.
15
+ */
16
+ import { mountIsland } from "./internal/island-mount.js";
17
+ import { SWAP_HEADER } from "./render-seam.js";
18
+ const MODE = /^(replace|append):([A-Za-z][\w-]{0,63})$/;
19
+ const SLOTS = "[data-swap-slot]:not([data-island-ignore],[data-island-ignore] *)";
20
+ const HISTORY_KEY = "nifraSwap";
21
+ // A control named like a DOM method shadows it on its form (`<input name="closest">`).
22
+ const attr = (el, name) => Element.prototype.getAttribute.call(el, name);
23
+ const here = () => location.pathname + location.search;
24
+ /** The slot names a history entry's swaps changed, from the first one in this tab up to it. */
25
+ const swappedIn = (state) => {
26
+ const names = typeof state === "object" && state !== null ? Reflect.get(state, HISTORY_KEY) : undefined;
27
+ return Array.isArray(names) ? names.filter((name) => typeof name === "string") : [];
28
+ };
29
+ /**
30
+ * Mount the page's islands, as `mountIslands` does, and make every `data-swap` link and GET form under
31
+ * `root` refresh its slot in place. Call it instead of `mountIslands`.
32
+ *
33
+ * - `data-swap="replace:<slot>"` replaces the content of the `data-swap-slot="<slot>"` element;
34
+ * `append:<slot>` adds to it, and a link or form inside that slot is spent: the slot's child holding
35
+ * it is removed when the next content arrives, so a "more" link at the end of a list gives way to
36
+ * the next page and its own "more" link.
37
+ * - A replacing GET pushes its URL, so a filtered list survives reload and can be shared; back and
38
+ * forward fetch the slots again for the URL they land on.
39
+ * - The islands inside a slot mount with it and unmount when it is replaced.
40
+ * - While a slot loads it carries `aria-busy="true"`; a newer swap of the same slot cancels the
41
+ * older one. When the request fails, the page stays as it is and the link or form gets
42
+ * `data-swap-error`.
43
+ *
44
+ * Nothing inside a `data-island-ignore` element swaps. Returns a disposer that removes the listeners,
45
+ * cancels pending swaps and unmounts every island.
46
+ */
47
+ export function enableSwap(
48
+ // `never` admits an enhancer of any props type, as in `mountIslands`.
49
+ enhancers, options = {}) {
50
+ const root = options.root ?? document;
51
+ const stops = new Map();
52
+ const pending = new Map();
53
+ let swapped = swappedIn(history.state);
54
+ let shown = here();
55
+ const islands = "[data-island]:not([data-island-ignore],[data-island-ignore] *)";
56
+ const attach = (scope) => {
57
+ const mount = (el) => {
58
+ const stop = mountIsland(el, enhancers);
59
+ if (stop !== undefined)
60
+ stops.set(el, stop);
61
+ };
62
+ if (scope instanceof HTMLElement && scope.matches(islands))
63
+ mount(scope);
64
+ for (const el of scope.querySelectorAll(islands))
65
+ if (scope.contains(el))
66
+ mount(el);
67
+ };
68
+ const release = (scope) => {
69
+ const cleanups = [];
70
+ for (const [node, stop] of stops)
71
+ if (scope.contains(node)) {
72
+ stops.delete(node);
73
+ cleanups.push(stop);
74
+ }
75
+ // Cleanup may itself detach descendants, so collect every owner before stopping any of them.
76
+ for (const stop of cleanups)
77
+ stop();
78
+ };
79
+ // The server answers with the first slot of a name in the page, so the client takes the first too.
80
+ const slotNamed = (name) => {
81
+ for (const slot of root.querySelectorAll(SLOTS))
82
+ if (slot.getAttribute("data-swap-slot") === name)
83
+ return slot;
84
+ return undefined;
85
+ };
86
+ const put = (slot, html, append, source) => {
87
+ const template = document.createElement("template");
88
+ // Parsed inert: scripts in it never run, as for any HTML set this way.
89
+ template.innerHTML = html;
90
+ const focused = slot.contains(document.activeElement);
91
+ if (append) {
92
+ for (const child of [...slot.children])
93
+ if (child === source || (source !== undefined && child.contains(source))) {
94
+ release(child);
95
+ slot.removeChild(child);
96
+ }
97
+ slot.append(template.content);
98
+ }
99
+ else {
100
+ release(slot);
101
+ slot.replaceChildren(template.content);
102
+ }
103
+ attach(slot);
104
+ if (focused && !slot.contains(document.activeElement) && slot instanceof HTMLElement) {
105
+ if (!slot.hasAttribute("tabindex"))
106
+ slot.tabIndex = -1;
107
+ slot.focus({ preventScroll: true });
108
+ }
109
+ };
110
+ const swap = async (slot, name, append, url, source) => {
111
+ pending.get(slot)?.abort();
112
+ const abort = new AbortController();
113
+ pending.set(slot, abort);
114
+ slot.setAttribute("aria-busy", "true");
115
+ try {
116
+ const response = await fetch(url, {
117
+ cache: "no-store",
118
+ headers: { [SWAP_HEADER]: name },
119
+ signal: abort.signal,
120
+ redirect: "manual",
121
+ });
122
+ const load = () => {
123
+ if (source === undefined)
124
+ location.reload();
125
+ else
126
+ location.assign(response.redirected ? response.url : url);
127
+ };
128
+ if (response.type !== "basic" ||
129
+ !response.headers.get("content-type")?.startsWith("text/html")) {
130
+ load();
131
+ return;
132
+ }
133
+ // A slot answer joins this document, so this document's CSP governs it, whatever headers the
134
+ // fetch carried; anything that is not one loads as its own document under its own policy.
135
+ if (response.headers.get(SWAP_HEADER) !== name) {
136
+ load();
137
+ return;
138
+ }
139
+ const html = await response.text();
140
+ if (!slot.isConnected)
141
+ return;
142
+ try {
143
+ put(slot, html, append, source);
144
+ }
145
+ catch {
146
+ // Trusted Types without a default policy refuses the HTML before the slot changes.
147
+ load();
148
+ return;
149
+ }
150
+ if (!append && source !== undefined) {
151
+ if (!swapped.includes(name))
152
+ swapped = [...swapped, name];
153
+ history.pushState({ [HISTORY_KEY]: swapped }, "", url);
154
+ shown = url.pathname + url.search;
155
+ }
156
+ }
157
+ catch {
158
+ if (abort.signal.aborted)
159
+ return;
160
+ // Back or forward left the URL ahead of the page: show what the URL shows.
161
+ if (source === undefined)
162
+ location.reload();
163
+ else
164
+ Element.prototype.setAttribute.call(source, "data-swap-error", "");
165
+ }
166
+ finally {
167
+ if (pending.get(slot) === abort) {
168
+ pending.delete(slot);
169
+ slot.removeAttribute("aria-busy");
170
+ }
171
+ }
172
+ };
173
+ const start = (event, source, url) => {
174
+ const mode = MODE.exec(attr(source, "data-swap") ?? "");
175
+ const name = mode?.[2];
176
+ if (name === undefined ||
177
+ url.origin !== location.origin ||
178
+ Element.prototype.closest.call(source, "[data-island-ignore]") !== null)
179
+ return;
180
+ const slot = slotNamed(name);
181
+ if (slot === undefined)
182
+ return;
183
+ event.preventDefault();
184
+ Element.prototype.removeAttribute.call(source, "data-swap-error");
185
+ void swap(slot, name, mode?.[1] === "append", url, source);
186
+ };
187
+ const onClick = (event) => {
188
+ if (!(event instanceof MouseEvent) || event.defaultPrevented || event.button !== 0)
189
+ return;
190
+ if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)
191
+ return;
192
+ const link = event.target instanceof Element ? event.target.closest("a[data-swap]") : null;
193
+ if (!(link instanceof HTMLAnchorElement) || !link.hasAttribute("href"))
194
+ return;
195
+ const target = link.getAttribute("target");
196
+ if ((target !== null && target !== "" && target !== "_self") || link.hasAttribute("download"))
197
+ return;
198
+ const url = new URL(link.href);
199
+ // An in-page anchor keeps its native jump.
200
+ if (url.hash !== "" && url.pathname + url.search === here())
201
+ return;
202
+ start(event, link, url);
203
+ };
204
+ const onSubmit = (event) => {
205
+ const form = event.target;
206
+ if (!(event instanceof SubmitEvent) ||
207
+ event.defaultPrevented ||
208
+ !(form instanceof HTMLFormElement) ||
209
+ attr(form, "data-swap") === null)
210
+ return;
211
+ const submitter = event.submitter;
212
+ // The button that submitted can override the form's method, action, target and encoding.
213
+ const pick = (name) => submitter?.hasAttribute(`form${name}`)
214
+ ? submitter.getAttribute(`form${name}`)
215
+ : attr(form, name);
216
+ // An empty method is a GET, as for the browser.
217
+ const method = (pick("method") || "get").toUpperCase();
218
+ const target = pick("target");
219
+ const enctype = pick("enctype")?.toLowerCase();
220
+ if (method !== "GET" ||
221
+ (target !== null && target !== "" && target !== "_self") ||
222
+ enctype === "text/plain")
223
+ return;
224
+ const action = pick("action");
225
+ const url = new URL(action === null || action === "" ? location.href : action, document.baseURI);
226
+ const data = new FormData(form, submitter);
227
+ const fields = new URLSearchParams();
228
+ for (const [key, value] of data)
229
+ fields.append(key, typeof value === "string" ? value : value.name);
230
+ url.search = fields.toString();
231
+ start(event, form, url);
232
+ };
233
+ const onPopState = (event) => {
234
+ if (here() === shown)
235
+ return;
236
+ shown = here();
237
+ const reached = swappedIn(event.state);
238
+ // Every slot a swap changed between the entry left and the one reached is in the later one's list.
239
+ const names = new Set([...swapped, ...reached]);
240
+ swapped = reached;
241
+ const targets = [];
242
+ for (const name of names) {
243
+ const slot = slotNamed(name);
244
+ if (slot === undefined) {
245
+ location.reload();
246
+ return;
247
+ }
248
+ targets.push([name, slot]);
249
+ }
250
+ for (const [name, slot] of targets)
251
+ void swap(slot, name, false, new URL(location.href));
252
+ };
253
+ const listen = (method) => {
254
+ root[method]("click", onClick);
255
+ root[method]("submit", onSubmit);
256
+ };
257
+ attach(root);
258
+ listen("addEventListener");
259
+ window.addEventListener("popstate", onPopState);
260
+ return () => {
261
+ listen("removeEventListener");
262
+ window.removeEventListener("popstate", onPopState);
263
+ for (const abort of pending.values())
264
+ abort.abort();
265
+ for (const stop of stops.values())
266
+ stop();
267
+ stops.clear();
268
+ };
269
+ }
270
+ //# sourceMappingURL=islands-swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"islands-swap.js","sourceRoot":"","sources":["../src/islands-swap.ts"],"names":[],"mappings":"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"}