@ogygia/core 0.0.0 → 0.11.1

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 (548) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -1
  3. package/ambient.d.ts +194 -0
  4. package/dist/ClientBindingStub.svelte +6 -0
  5. package/dist/ClientBindingStub.svelte.d.ts +26 -0
  6. package/dist/KeepHost.svelte +19 -0
  7. package/dist/KeepHost.svelte.d.ts +10 -0
  8. package/dist/LakeBoundary.svelte +16 -0
  9. package/dist/LakeBoundary.svelte.d.ts +11 -0
  10. package/dist/LateIsland.svelte +22 -0
  11. package/dist/LateIsland.svelte.d.ts +15 -0
  12. package/dist/LateIslandAwait.svelte +17 -0
  13. package/dist/LateIslandAwait.svelte.d.ts +15 -0
  14. package/dist/LiveHost.svelte +19 -0
  15. package/dist/LiveHost.svelte.d.ts +10 -0
  16. package/dist/NestedProvider.svelte +13 -0
  17. package/dist/NestedProvider.svelte.d.ts +8 -0
  18. package/dist/OgygiaBoundary.svelte +5 -0
  19. package/dist/OgygiaBoundary.svelte.d.ts +17 -0
  20. package/dist/PromiseRegion.svelte +40 -0
  21. package/dist/PromiseRegion.svelte.d.ts +15 -0
  22. package/dist/PromiseRegionAwait.svelte +27 -0
  23. package/dist/PromiseRegionAwait.svelte.d.ts +15 -0
  24. package/dist/Provide.svelte +27 -0
  25. package/dist/Provide.svelte.d.ts +8 -0
  26. package/dist/RawHtml.svelte +9 -0
  27. package/dist/RawHtml.svelte.d.ts +6 -0
  28. package/dist/Region.svelte +1173 -0
  29. package/dist/Region.svelte.d.ts +68 -0
  30. package/dist/SlotBoundary.svelte +13 -0
  31. package/dist/SlotBoundary.svelte.d.ts +7 -0
  32. package/dist/app.d.ts +4 -0
  33. package/dist/app.js +3 -0
  34. package/dist/boundary.d.ts +35 -0
  35. package/dist/boundary.js +127 -0
  36. package/dist/build-cache.d.ts +13 -0
  37. package/dist/build-cache.js +77 -0
  38. package/dist/compiler/blank-styles.d.ts +1 -0
  39. package/dist/compiler/blank-styles.js +63 -0
  40. package/dist/compiler/bom.d.ts +2 -0
  41. package/dist/compiler/bom.js +15 -0
  42. package/dist/compiler/browser-full.d.ts +8 -0
  43. package/dist/compiler/browser-full.js +8 -0
  44. package/dist/compiler/browser.d.ts +11 -0
  45. package/dist/compiler/browser.js +11 -0
  46. package/dist/compiler/content/transportables.d.ts +26 -0
  47. package/dist/compiler/content/transportables.js +219 -0
  48. package/dist/compiler/ctx.d.ts +185 -0
  49. package/dist/compiler/ctx.js +203 -0
  50. package/dist/compiler/debarrel/barrel.d.ts +55 -0
  51. package/dist/compiler/debarrel/barrel.js +248 -0
  52. package/dist/compiler/debarrel/options.d.ts +67 -0
  53. package/dist/compiler/debarrel/options.js +31 -0
  54. package/dist/compiler/debarrel/parse.d.ts +65 -0
  55. package/dist/compiler/debarrel/parse.js +256 -0
  56. package/dist/compiler/debarrel/plugin.d.ts +31 -0
  57. package/dist/compiler/debarrel/plugin.js +190 -0
  58. package/dist/compiler/debarrel/rewrite.d.ts +27 -0
  59. package/dist/compiler/debarrel/rewrite.js +118 -0
  60. package/dist/compiler/debarrel/svelte.d.ts +13 -0
  61. package/dist/compiler/debarrel/svelte.js +56 -0
  62. package/dist/compiler/dev/css-scope.d.ts +16 -0
  63. package/dist/compiler/dev/css-scope.js +38 -0
  64. package/dist/compiler/dev/dev-hmr.d.ts +25 -0
  65. package/dist/compiler/dev/dev-hmr.js +29 -0
  66. package/dist/compiler/dev/hmr.d.ts +34 -0
  67. package/dist/compiler/dev/hmr.js +57 -0
  68. package/dist/compiler/dev/region-bytes.d.ts +34 -0
  69. package/dist/compiler/dev/region-bytes.js +126 -0
  70. package/dist/compiler/driver.d.ts +280 -0
  71. package/dist/compiler/driver.js +1352 -0
  72. package/dist/compiler/flags.d.ts +16 -0
  73. package/dist/compiler/flags.js +101 -0
  74. package/dist/compiler/fouc-css.d.ts +97 -0
  75. package/dist/compiler/fouc-css.js +335 -0
  76. package/dist/compiler/free-vars.d.ts +20 -0
  77. package/dist/compiler/free-vars.js +327 -0
  78. package/dist/compiler/host.d.ts +65 -0
  79. package/dist/compiler/host.js +51 -0
  80. package/dist/compiler/ids.d.ts +84 -0
  81. package/dist/compiler/ids.js +86 -0
  82. package/dist/compiler/index.d.ts +11 -0
  83. package/dist/compiler/index.js +11 -0
  84. package/dist/compiler/kit.d.ts +129 -0
  85. package/dist/compiler/kit.js +563 -0
  86. package/dist/compiler/link/build-output.d.ts +44 -0
  87. package/dist/compiler/link/build-output.js +147 -0
  88. package/dist/compiler/link/caps.d.ts +48 -0
  89. package/dist/compiler/link/caps.js +64 -0
  90. package/dist/compiler/link/context-detect.d.ts +23 -0
  91. package/dist/compiler/link/context-detect.js +137 -0
  92. package/dist/compiler/link/emit-gate.d.ts +11 -0
  93. package/dist/compiler/link/emit-gate.js +40 -0
  94. package/dist/compiler/link/entry-shim.d.ts +4 -0
  95. package/dist/compiler/link/entry-shim.js +29 -0
  96. package/dist/compiler/link/island-deps.d.ts +142 -0
  97. package/dist/compiler/link/island-deps.js +525 -0
  98. package/dist/compiler/link/manifest.d.ts +5 -0
  99. package/dist/compiler/link/manifest.js +9 -0
  100. package/dist/compiler/link/page-keys.d.ts +64 -0
  101. package/dist/compiler/link/page-keys.js +683 -0
  102. package/dist/compiler/link/registry-stub.d.ts +41 -0
  103. package/dist/compiler/link/registry-stub.js +212 -0
  104. package/dist/compiler/link/router-config.d.ts +11 -0
  105. package/dist/compiler/link/router-config.js +15 -0
  106. package/dist/compiler/link/router-css.d.ts +22 -0
  107. package/dist/compiler/link/router-css.js +142 -0
  108. package/dist/compiler/link/runtime-entry.d.ts +71 -0
  109. package/dist/compiler/link/runtime-entry.js +132 -0
  110. package/dist/compiler/link/server-manifest.d.ts +12 -0
  111. package/dist/compiler/link/server-manifest.js +45 -0
  112. package/dist/compiler/link/speculation.d.ts +17 -0
  113. package/dist/compiler/link/speculation.js +36 -0
  114. package/dist/compiler/link/transport.d.ts +31 -0
  115. package/dist/compiler/link/transport.js +67 -0
  116. package/dist/compiler/macros/bake.d.ts +20 -0
  117. package/dist/compiler/macros/bake.js +317 -0
  118. package/dist/compiler/macros/browser.d.ts +11 -0
  119. package/dist/compiler/macros/browser.js +69 -0
  120. package/dist/compiler/macros/dedent.d.ts +12 -0
  121. package/dist/compiler/macros/dedent.js +36 -0
  122. package/dist/compiler/macros/dollar.d.ts +15 -0
  123. package/dist/compiler/macros/dollar.js +387 -0
  124. package/dist/compiler/macros/pipeline.d.ts +31 -0
  125. package/dist/compiler/macros/pipeline.js +106 -0
  126. package/dist/compiler/macros/source.d.ts +6 -0
  127. package/dist/compiler/macros/source.js +127 -0
  128. package/dist/compiler/macros/store.d.ts +17 -0
  129. package/dist/compiler/macros/store.js +244 -0
  130. package/dist/compiler/macros/wire.d.ts +14 -0
  131. package/dist/compiler/macros/wire.js +160 -0
  132. package/dist/compiler/ownership-stamps.d.ts +6 -0
  133. package/dist/compiler/ownership-stamps.js +144 -0
  134. package/dist/compiler/parse/oxc.d.ts +34 -0
  135. package/dist/compiler/parse/oxc.js +59 -0
  136. package/dist/compiler/parse/scan.d.ts +43 -0
  137. package/dist/compiler/parse/scan.js +232 -0
  138. package/dist/compiler/program.d.ts +140 -0
  139. package/dist/compiler/program.js +242 -0
  140. package/dist/compiler/region/emit.d.ts +169 -0
  141. package/dist/compiler/region/emit.js +286 -0
  142. package/dist/compiler/region/identity.d.ts +28 -0
  143. package/dist/compiler/region/identity.js +75 -0
  144. package/dist/compiler/region/ir.d.ts +65 -0
  145. package/dist/compiler/region/ir.js +0 -0
  146. package/dist/compiler/region/transform.d.ts +178 -0
  147. package/dist/compiler/region/transform.js +1933 -0
  148. package/dist/compiler/script-request.d.ts +1 -0
  149. package/dist/compiler/script-request.js +43 -0
  150. package/dist/context-bridge.d.ts +65 -0
  151. package/dist/context-bridge.js +217 -0
  152. package/dist/context-registry.d.ts +40 -0
  153. package/dist/context-registry.js +15 -0
  154. package/dist/context.d.ts +72 -0
  155. package/dist/context.js +158 -0
  156. package/dist/current-region.d.ts +14 -0
  157. package/dist/current-region.js +36 -0
  158. package/dist/document.d.ts +41 -0
  159. package/dist/document.js +125 -0
  160. package/dist/entry-hydrate.d.ts +5 -0
  161. package/dist/entry-hydrate.js +42 -0
  162. package/dist/escape.d.ts +18 -0
  163. package/dist/escape.js +37 -0
  164. package/dist/events/bus.d.ts +33 -0
  165. package/dist/events/bus.js +153 -0
  166. package/dist/events/index.d.ts +4 -0
  167. package/dist/events/index.js +4 -0
  168. package/dist/events/schema.d.ts +389 -0
  169. package/dist/events/schema.js +23 -0
  170. package/dist/events/server-registry.d.ts +7 -0
  171. package/dist/events/server-registry.js +13 -0
  172. package/dist/events/sinks.d.ts +64 -0
  173. package/dist/events/sinks.js +85 -0
  174. package/dist/fn-transport.d.ts +33 -0
  175. package/dist/fn-transport.js +140 -0
  176. package/dist/frame.d.ts +20 -0
  177. package/dist/frame.js +19 -0
  178. package/dist/holes-record.d.ts +6 -0
  179. package/dist/holes-record.js +8 -0
  180. package/dist/hooks.d.ts +43 -0
  181. package/dist/hooks.js +1191 -0
  182. package/dist/hydration-info.d.ts +1 -0
  183. package/dist/hydration-info.js +31 -0
  184. package/dist/index.d.ts +21 -0
  185. package/dist/index.js +17 -0
  186. package/dist/insights/attr-rules.d.ts +15 -0
  187. package/dist/insights/attr-rules.js +27 -0
  188. package/dist/insights/cpu.d.ts +82 -0
  189. package/dist/insights/cpu.js +177 -0
  190. package/dist/insights/fp-drift.d.ts +28 -0
  191. package/dist/insights/fp-drift.js +148 -0
  192. package/dist/insights/hole-segments.d.ts +26 -0
  193. package/dist/insights/hole-segments.js +50 -0
  194. package/dist/insights/html-diff.d.ts +25 -0
  195. package/dist/insights/html-diff.js +157 -0
  196. package/dist/insights/hydration-hazards.d.ts +36 -0
  197. package/dist/insights/hydration-hazards.js +136 -0
  198. package/dist/insights/hydration-status.d.ts +2 -0
  199. package/dist/insights/hydration-status.js +0 -0
  200. package/dist/insights/index.d.ts +14 -0
  201. package/dist/insights/index.js +12 -0
  202. package/dist/insights/page-assets.d.ts +211 -0
  203. package/dist/insights/page-assets.js +608 -0
  204. package/dist/insights/page-insights.d.ts +749 -0
  205. package/dist/insights/page-insights.js +2157 -0
  206. package/dist/insights/session-data.d.ts +108 -0
  207. package/dist/insights/session-data.js +0 -0
  208. package/dist/insights/session-insights.d.ts +121 -0
  209. package/dist/insights/session-insights.js +548 -0
  210. package/dist/insights/switch.d.ts +53 -0
  211. package/dist/insights/switch.js +91 -0
  212. package/dist/insights/testing-version.d.ts +19 -0
  213. package/dist/insights/testing-version.js +21 -0
  214. package/dist/insights/third-party.d.ts +75 -0
  215. package/dist/insights/third-party.js +160 -0
  216. package/dist/internal-instruments.d.ts +13 -0
  217. package/dist/internal-instruments.js +12 -0
  218. package/dist/internal-reconcile.d.ts +3 -0
  219. package/dist/internal-reconcile.js +3 -0
  220. package/dist/internal-register.d.ts +7 -0
  221. package/dist/internal-register.js +7 -0
  222. package/dist/internal-server.d.ts +7 -0
  223. package/dist/internal-server.js +7 -0
  224. package/dist/internal.d.ts +13 -0
  225. package/dist/internal.js +13 -0
  226. package/dist/island-graph.d.ts +36 -0
  227. package/dist/island-graph.js +89 -0
  228. package/dist/keep-fallback-marker.d.ts +7 -0
  229. package/dist/keep-fallback-marker.js +9 -0
  230. package/dist/keep-fallback.d.ts +13 -0
  231. package/dist/keep-fallback.js +39 -0
  232. package/dist/kit-paths.d.ts +2 -0
  233. package/dist/kit-paths.js +39 -0
  234. package/dist/late-region-registry.d.ts +40 -0
  235. package/dist/late-region-registry.js +36 -0
  236. package/dist/live-transport.d.ts +57 -0
  237. package/dist/live-transport.js +145 -0
  238. package/dist/markup.d.ts +4 -0
  239. package/dist/markup.js +4 -0
  240. package/dist/own-package.d.ts +15 -0
  241. package/dist/own-package.js +20 -0
  242. package/dist/page-defer.d.ts +33 -0
  243. package/dist/page-defer.js +35 -0
  244. package/dist/page-facts-script.d.ts +7 -0
  245. package/dist/page-facts-script.js +9 -0
  246. package/dist/page-seed-registry.d.ts +72 -0
  247. package/dist/page-seed-registry.js +31 -0
  248. package/dist/plugin/capability.d.ts +14 -0
  249. package/dist/plugin/capability.js +44 -0
  250. package/dist/plugin/client.d.ts +39 -0
  251. package/dist/plugin/client.js +6 -0
  252. package/dist/plugin/css.d.ts +3 -0
  253. package/dist/plugin/css.js +54 -0
  254. package/dist/plugin/facts.d.ts +42 -0
  255. package/dist/plugin/facts.js +37 -0
  256. package/dist/plugin/hooks.d.ts +33 -0
  257. package/dist/plugin/hooks.js +38 -0
  258. package/dist/plugin/index.d.ts +127 -0
  259. package/dist/plugin/index.js +26 -0
  260. package/dist/plugin/routes.d.ts +32 -0
  261. package/dist/plugin/routes.js +35 -0
  262. package/dist/plugin/server.d.ts +27 -0
  263. package/dist/plugin/server.js +92 -0
  264. package/dist/plugin/standard-schema.d.ts +27 -0
  265. package/dist/plugin/standard-schema.js +0 -0
  266. package/dist/plugin/testing.d.ts +13 -0
  267. package/dist/plugin/testing.js +54 -0
  268. package/dist/plugin/utils.d.ts +13 -0
  269. package/dist/plugin/utils.js +19 -0
  270. package/dist/portable-form.d.ts +22 -0
  271. package/dist/portable-form.js +52 -0
  272. package/dist/preference.d.ts +35 -0
  273. package/dist/preference.js +84 -0
  274. package/dist/preload.d.ts +1 -0
  275. package/dist/preload.js +21 -0
  276. package/dist/ref-watch.d.ts +31 -0
  277. package/dist/ref-watch.js +66 -0
  278. package/dist/ref.d.ts +124 -0
  279. package/dist/ref.js +272 -0
  280. package/dist/region-brand.d.ts +8 -0
  281. package/dist/region-brand.js +10 -0
  282. package/dist/region-core.d.ts +2 -0
  283. package/dist/region-core.js +1 -0
  284. package/dist/region-snippet.d.ts +73 -0
  285. package/dist/region-snippet.js +351 -0
  286. package/dist/region.d.ts +127 -0
  287. package/dist/region.js +162 -0
  288. package/dist/request-event.d.ts +1 -0
  289. package/dist/request-event.js +37 -0
  290. package/dist/router-css.d.ts +39 -0
  291. package/dist/router-css.js +66 -0
  292. package/dist/runtime/app-transport.d.ts +2 -0
  293. package/dist/runtime/app-transport.js +13 -0
  294. package/dist/runtime/beacon.d.ts +271 -0
  295. package/dist/runtime/beacon.js +2190 -0
  296. package/dist/runtime/boot-link.d.ts +1 -0
  297. package/dist/runtime/boot-link.js +44 -0
  298. package/dist/runtime/client-hooks.d.ts +5 -0
  299. package/dist/runtime/client-hooks.js +22 -0
  300. package/dist/runtime/client-plugins.d.ts +8 -0
  301. package/dist/runtime/client-plugins.js +34 -0
  302. package/dist/runtime/concurrency.d.ts +12 -0
  303. package/dist/runtime/concurrency.js +29 -0
  304. package/dist/runtime/connected.d.ts +12 -0
  305. package/dist/runtime/connected.js +16 -0
  306. package/dist/runtime/context.d.ts +1 -0
  307. package/dist/runtime/context.js +19 -0
  308. package/dist/runtime/core.d.ts +15 -0
  309. package/dist/runtime/core.js +1173 -0
  310. package/dist/runtime/drift-watch.d.ts +9 -0
  311. package/dist/runtime/drift-watch.js +60 -0
  312. package/dist/runtime/entry-locations.d.ts +33 -0
  313. package/dist/runtime/entry-locations.js +119 -0
  314. package/dist/runtime/foreign-props.d.ts +8 -0
  315. package/dist/runtime/foreign-props.js +14 -0
  316. package/dist/runtime/form-continuity.d.ts +10 -0
  317. package/dist/runtime/form-continuity.js +107 -0
  318. package/dist/runtime/frame-nav.d.ts +36 -0
  319. package/dist/runtime/frame-nav.js +225 -0
  320. package/dist/runtime/frame-store.d.ts +62 -0
  321. package/dist/runtime/frame-store.js +214 -0
  322. package/dist/runtime/frames.d.ts +1 -0
  323. package/dist/runtime/frames.js +25 -0
  324. package/dist/runtime/full.d.ts +4 -0
  325. package/dist/runtime/full.js +32 -0
  326. package/dist/runtime/hash.d.ts +41 -0
  327. package/dist/runtime/hash.js +79 -0
  328. package/dist/runtime/hole-facts.d.ts +8 -0
  329. package/dist/runtime/hole-facts.js +57 -0
  330. package/dist/runtime/host-classes.d.ts +24 -0
  331. package/dist/runtime/host-classes.js +43 -0
  332. package/dist/runtime/hydrate-core.d.ts +101 -0
  333. package/dist/runtime/hydrate-core.js +605 -0
  334. package/dist/runtime/index.d.ts +2 -0
  335. package/dist/runtime/index.js +1 -0
  336. package/dist/runtime/interaction-replay.d.ts +11 -0
  337. package/dist/runtime/interaction-replay.js +70 -0
  338. package/dist/runtime/interaction.d.ts +33 -0
  339. package/dist/runtime/interaction.js +217 -0
  340. package/dist/runtime/island-graph-preload.d.ts +13 -0
  341. package/dist/runtime/island-graph-preload.js +99 -0
  342. package/dist/runtime/kit-boot.d.ts +29 -0
  343. package/dist/runtime/kit-boot.js +60 -0
  344. package/dist/runtime/kit-page-thread.svelte.d.ts +1 -0
  345. package/dist/runtime/kit-page-thread.svelte.js +116 -0
  346. package/dist/runtime/lake-anchors.d.ts +13 -0
  347. package/dist/runtime/lake-anchors.js +19 -0
  348. package/dist/runtime/lakes.d.ts +15 -0
  349. package/dist/runtime/lakes.js +212 -0
  350. package/dist/runtime/live.d.ts +3 -0
  351. package/dist/runtime/live.js +17 -0
  352. package/dist/runtime/load-scheduler.d.ts +53 -0
  353. package/dist/runtime/load-scheduler.js +317 -0
  354. package/dist/runtime/morph.d.ts +42 -0
  355. package/dist/runtime/morph.js +671 -0
  356. package/dist/runtime/nav-handle.d.ts +25 -0
  357. package/dist/runtime/nav-handle.js +71 -0
  358. package/dist/runtime/nav-hooks.d.ts +2 -0
  359. package/dist/runtime/nav-hooks.js +23 -0
  360. package/dist/runtime/nearest-attr.d.ts +4 -0
  361. package/dist/runtime/nearest-attr.js +16 -0
  362. package/dist/runtime/observe.d.ts +27 -0
  363. package/dist/runtime/observe.js +63 -0
  364. package/dist/runtime/own-cost.d.ts +9 -0
  365. package/dist/runtime/own-cost.js +35 -0
  366. package/dist/runtime/ownership.d.ts +101 -0
  367. package/dist/runtime/ownership.js +115 -0
  368. package/dist/runtime/page-cache.d.ts +23 -0
  369. package/dist/runtime/page-cache.js +74 -0
  370. package/dist/runtime/page-defer.d.ts +14 -0
  371. package/dist/runtime/page-defer.js +103 -0
  372. package/dist/runtime/parse-html.d.ts +40 -0
  373. package/dist/runtime/parse-html.js +81 -0
  374. package/dist/runtime/reconcile.d.ts +41 -0
  375. package/dist/runtime/reconcile.js +194 -0
  376. package/dist/runtime/region-attrs.d.ts +95 -0
  377. package/dist/runtime/region-attrs.js +153 -0
  378. package/dist/runtime/region-endpoint-url.d.ts +76 -0
  379. package/dist/runtime/region-endpoint-url.js +169 -0
  380. package/dist/runtime/region-ids.d.ts +8 -0
  381. package/dist/runtime/region-ids.js +33 -0
  382. package/dist/runtime/remote-seeds.d.ts +2 -0
  383. package/dist/runtime/remote-seeds.js +21 -0
  384. package/dist/runtime/render-blocking.d.ts +2 -0
  385. package/dist/runtime/render-blocking.js +30 -0
  386. package/dist/runtime/restore.d.ts +34 -0
  387. package/dist/runtime/restore.js +390 -0
  388. package/dist/runtime/router-nav.d.ts +63 -0
  389. package/dist/runtime/router-nav.js +740 -0
  390. package/dist/runtime/router.d.ts +201 -0
  391. package/dist/runtime/router.js +593 -0
  392. package/dist/runtime/schedule.d.ts +49 -0
  393. package/dist/runtime/schedule.js +256 -0
  394. package/dist/runtime/seeds.d.ts +50 -0
  395. package/dist/runtime/seeds.js +208 -0
  396. package/dist/runtime/session.d.ts +52 -0
  397. package/dist/runtime/session.js +130 -0
  398. package/dist/runtime/sidecar.d.ts +3 -0
  399. package/dist/runtime/sidecar.js +56 -0
  400. package/dist/runtime/slots.d.ts +183 -0
  401. package/dist/runtime/slots.js +44 -0
  402. package/dist/runtime/spa-cacheable.d.ts +7 -0
  403. package/dist/runtime/spa-cacheable.js +18 -0
  404. package/dist/runtime/speculate-hint.d.ts +1 -0
  405. package/dist/runtime/speculate-hint.js +35 -0
  406. package/dist/runtime/svelte-warnings.d.ts +28 -0
  407. package/dist/runtime/svelte-warnings.js +71 -0
  408. package/dist/runtime/wire-classes.d.ts +3 -0
  409. package/dist/runtime/wire-classes.js +69 -0
  410. package/dist/runtime/wire-format.d.ts +7 -0
  411. package/dist/runtime/wire-format.js +22 -0
  412. package/dist/script.d.ts +134 -0
  413. package/dist/script.js +184 -0
  414. package/dist/seed-refs.d.ts +105 -0
  415. package/dist/seed-refs.js +487 -0
  416. package/dist/server/capability-lifetime.d.ts +28 -0
  417. package/dist/server/capability-lifetime.js +31 -0
  418. package/dist/server/dead-kit-resolves.d.ts +1 -0
  419. package/dist/server/dead-kit-resolves.js +39 -0
  420. package/dist/server/document-assembly.d.ts +30 -0
  421. package/dist/server/document-assembly.js +26 -0
  422. package/dist/server/document-tail.d.ts +113 -0
  423. package/dist/server/document-tail.js +208 -0
  424. package/dist/server/endpoint.d.ts +51 -0
  425. package/dist/server/endpoint.js +90 -0
  426. package/dist/server/entry-location.d.ts +8 -0
  427. package/dist/server/entry-location.js +29 -0
  428. package/dist/server/fingerprint.d.ts +1 -0
  429. package/dist/server/fingerprint.js +25 -0
  430. package/dist/server/head-presence.d.ts +45 -0
  431. package/dist/server/head-presence.js +156 -0
  432. package/dist/server/hmac.d.ts +38 -0
  433. package/dist/server/hmac.js +89 -0
  434. package/dist/server/hole-graph.d.ts +7 -0
  435. package/dist/server/hole-graph.js +71 -0
  436. package/dist/server/hole-urls.d.ts +3 -0
  437. package/dist/server/hole-urls.js +76 -0
  438. package/dist/server/html-scan.d.ts +19 -0
  439. package/dist/server/html-scan.js +60 -0
  440. package/dist/server/kit-context.d.ts +78 -0
  441. package/dist/server/kit-context.js +110 -0
  442. package/dist/server/late-wire.d.ts +22 -0
  443. package/dist/server/late-wire.js +28 -0
  444. package/dist/server/page-facts.d.ts +25 -0
  445. package/dist/server/page-facts.js +138 -0
  446. package/dist/server/page-seed.d.ts +33 -0
  447. package/dist/server/page-seed.js +60 -0
  448. package/dist/server/page-stream.d.ts +55 -0
  449. package/dist/server/page-stream.js +121 -0
  450. package/dist/server/payload.d.ts +6 -0
  451. package/dist/server/payload.js +22 -0
  452. package/dist/server/personal-response.d.ts +6 -0
  453. package/dist/server/personal-response.js +13 -0
  454. package/dist/server/props-wire.d.ts +56 -0
  455. package/dist/server/props-wire.js +178 -0
  456. package/dist/server/rate-limit.d.ts +22 -0
  457. package/dist/server/rate-limit.js +63 -0
  458. package/dist/server/region-css.d.ts +5 -0
  459. package/dist/server/region-css.js +30 -0
  460. package/dist/server/region-endpoint.d.ts +35 -0
  461. package/dist/server/region-endpoint.js +142 -0
  462. package/dist/server/region-props.d.ts +6 -0
  463. package/dist/server/region-props.js +44 -0
  464. package/dist/server/remote-seed-gate.d.ts +50 -0
  465. package/dist/server/remote-seed-gate.js +66 -0
  466. package/dist/server/render-cache.d.ts +26 -0
  467. package/dist/server/render-cache.js +51 -0
  468. package/dist/server/render-page.d.ts +51 -0
  469. package/dist/server/render-page.js +176 -0
  470. package/dist/server/render-region-html.d.ts +2 -0
  471. package/dist/server/render-region-html.js +19 -0
  472. package/dist/server/request-stats.d.ts +174 -0
  473. package/dist/server/request-stats.js +54 -0
  474. package/dist/server/reversible.d.ts +83 -0
  475. package/dist/server/reversible.js +994 -0
  476. package/dist/server/seed-shape.d.ts +22 -0
  477. package/dist/server/seed-shape.js +24 -0
  478. package/dist/server/shared-cache.d.ts +35 -0
  479. package/dist/server/shared-cache.js +104 -0
  480. package/dist/server/signing-key.d.ts +11 -0
  481. package/dist/server/signing-key.js +47 -0
  482. package/dist/server/sized-lru.d.ts +20 -0
  483. package/dist/server/sized-lru.js +68 -0
  484. package/dist/server/split-regions.d.ts +81 -0
  485. package/dist/server/split-regions.js +368 -0
  486. package/dist/server/stream-regions.d.ts +5 -0
  487. package/dist/server/stream-regions.js +36 -0
  488. package/dist/shared-state.d.ts +7 -0
  489. package/dist/shared-state.js +152 -0
  490. package/dist/shims/app-environment.d.ts +4 -0
  491. package/dist/shims/app-environment.js +6 -0
  492. package/dist/shims/app-navigation.d.ts +33 -0
  493. package/dist/shims/app-navigation.js +119 -0
  494. package/dist/shims/app-paths.d.ts +6 -0
  495. package/dist/shims/app-paths.js +18 -0
  496. package/dist/shims/app-state.svelte.d.ts +23 -0
  497. package/dist/shims/app-state.svelte.js +50 -0
  498. package/dist/shims/app-stores.d.ts +21 -0
  499. package/dist/shims/app-stores.js +54 -0
  500. package/dist/shims/kit-bridge.d.ts +29 -0
  501. package/dist/shims/kit-bridge.js +7 -0
  502. package/dist/shims/kit-remote/client-stub.d.ts +27 -0
  503. package/dist/shims/kit-remote/client-stub.js +43 -0
  504. package/dist/shims/kit-remote/paths-internal-stub.d.ts +3 -0
  505. package/dist/shims/kit-remote/paths-internal-stub.js +5 -0
  506. package/dist/shims/kit-remote/remote-cache.d.ts +49 -0
  507. package/dist/shims/kit-remote/remote-cache.js +73 -0
  508. package/dist/shims/kit-remote/state-stub.d.ts +8 -0
  509. package/dist/shims/kit-remote/state-stub.js +8 -0
  510. package/dist/shims/page-store.svelte.d.ts +39 -0
  511. package/dist/shims/page-store.svelte.js +77 -0
  512. package/dist/source.d.ts +29 -0
  513. package/dist/source.js +87 -0
  514. package/dist/store-transport.d.ts +86 -0
  515. package/dist/store-transport.js +229 -0
  516. package/dist/tool-fetches.d.ts +5 -0
  517. package/dist/tool-fetches.js +41 -0
  518. package/dist/transport.d.ts +48 -0
  519. package/dist/transport.js +181 -0
  520. package/dist/unscoped-css.d.ts +26 -0
  521. package/dist/unscoped-css.js +53 -0
  522. package/dist/vite/dev-maps.d.ts +33 -0
  523. package/dist/vite/dev-maps.js +140 -0
  524. package/dist/vite/index.d.ts +19 -0
  525. package/dist/vite/index.js +820 -0
  526. package/dist/vite/kit-dirs.d.ts +7 -0
  527. package/dist/vite/kit-dirs.js +67 -0
  528. package/dist/vite/late-island.d.ts +25 -0
  529. package/dist/vite/late-island.js +33 -0
  530. package/dist/vite/module-map.d.ts +8 -0
  531. package/dist/vite/module-map.js +144 -0
  532. package/dist/vite/options.d.ts +208 -0
  533. package/dist/vite/options.js +74 -0
  534. package/dist/vite/package-files.d.ts +3 -0
  535. package/dist/vite/package-files.js +84 -0
  536. package/dist/vite/paths.d.ts +45 -0
  537. package/dist/vite/paths.js +112 -0
  538. package/dist/vite/plugin-api.d.ts +166 -0
  539. package/dist/vite/plugin-api.js +212 -0
  540. package/dist/vite/profiler-maps.d.ts +23 -0
  541. package/dist/vite/profiler-maps.js +178 -0
  542. package/dist/vite/server-sourcemaps.d.ts +8 -0
  543. package/dist/vite/server-sourcemaps.js +80 -0
  544. package/dist/vite/sourcemaps.d.ts +18 -0
  545. package/dist/vite/sourcemaps.js +80 -0
  546. package/dist/vite/style-preprocess.d.ts +2 -0
  547. package/dist/vite/style-preprocess.js +96 -0
  548. package/package.json +180 -6
@@ -0,0 +1,77 @@
1
+ import { foreign_hydrate } from "../current-region.js";
2
+ // src/shims/page-store.svelte.ts
3
+ const FALLBACK = {
4
+ url: typeof location !== "undefined" ? new URL(location.href) : new URL("http://localhost/"),
5
+ params: {},
6
+ route: { id: null },
7
+ status: 200,
8
+ data: {},
9
+ form: null,
10
+ error: null,
11
+ state: {}
12
+ };
13
+ var PageState = class {
14
+ url = $state.raw(FALLBACK.url);
15
+ params = $state.raw(FALLBACK.params);
16
+ route = $state.raw(FALLBACK.route);
17
+ status = $state.raw(FALLBACK.status);
18
+ data = $state.raw(FALLBACK.data);
19
+ form = $state.raw(FALLBACK.form);
20
+ error = $state.raw(FALLBACK.error);
21
+ state = $state.raw(FALLBACK.state);
22
+ #subscribers = /* @__PURE__ */ new Set();
23
+ set(snap) {
24
+ const s = snap || FALLBACK;
25
+ this.url = s.url instanceof URL ? s.url : FALLBACK.url;
26
+ this.params = s.params ?? {};
27
+ this.route = s.route ?? { id: null };
28
+ this.status = s.status ?? 200;
29
+ this.data = s.data ?? {};
30
+ this.form = s.form ?? null;
31
+ this.error = s.error ?? null;
32
+ this.state = s.state ?? {};
33
+ for (const fn of this.#subscribers) try {
34
+ fn();
35
+ } catch {}
36
+ }
37
+ reset() {
38
+ this.set({
39
+ url: typeof location !== "undefined" ? new URL(location.href) : FALLBACK.url,
40
+ params: {},
41
+ route: { id: null },
42
+ status: 200,
43
+ data: {},
44
+ form: null,
45
+ error: null,
46
+ state: {}
47
+ });
48
+ }
49
+ subscribe(fn) {
50
+ this.#subscribers.add(fn);
51
+ return () => this.#subscribers.delete(fn);
52
+ }
53
+ };
54
+ const PAGE_STATE_KEY = Symbol.for("ogygia.page-state");
55
+ const global_scope = globalThis;
56
+ const page_state = global_scope[PAGE_STATE_KEY] ??= new PageState();
57
+ /** Seed from an island's SSR snapshot (pre-hydration / SPA remount). */
58
+ function set_page(snap) {
59
+ page_state.set(snap);
60
+ }
61
+ /** Reset to location-based fallback between SPA body swaps (clears stale route data). */
62
+ function reset_page() {
63
+ page_state.reset();
64
+ }
65
+ function subscribe_page(fn) {
66
+ return page_state.subscribe(fn);
67
+ }
68
+ const WARNED_FOREIGN_KEY = Symbol.for("ogygia.foreign-page-warned");
69
+ const warned_foreign_entries = globalThis[WARNED_FOREIGN_KEY] ??= /* @__PURE__ */ new Set();
70
+ function warn_foreign_page_read(expr) {
71
+ if (!import.meta.env.DEV) return;
72
+ const f = foreign_hydrate();
73
+ if (!f || warned_foreign_entries.has(f.entry)) return;
74
+ warned_foreign_entries.add(f.entry);
75
+ console.warn(`[ogygia] ${expr} was read inside a mounted MFE island (${f.entry}, from ${f.origin}).\nIn the browser this is the SHELL's page, not the MFE's. The HTML you see was rendered with the MFE's own load data, so this island will repaint with different values after hydrate.\nPass the value as a prop, or read it with a remote function.`);
76
+ }
77
+ export { PageState, page_state, reset_page, set_page, subscribe_page, warn_foreign_page_read };
@@ -0,0 +1,29 @@
1
+ /** hooks.ts installs this once — files a receipt with the current request's facts. */
2
+ export declare function set_source_recorder(fn: ((tag: string) => void) | null): void;
3
+ /** federate() installs this once — every receipt tag. */
4
+ export declare function set_source_observer(fn: ((tag: string) => void) | null): void;
5
+ /** Called by the `__og_source` wrapper on every invocation (and by a peer handle for the tags it
6
+ * ADOPTS from a remote fragment). Neither seam may fail the app's own call. */
7
+ export declare function record_source_read(tag: string): void;
8
+ /** The identity stamp — read by `postrender.invalidate(fn, args)`. */
9
+ export declare const SOURCE_ID: unique symbol;
10
+ /** The optional `{ key }` canonicalizer stamp (exotic signatures). */
11
+ export declare const SOURCE_KEY: unique symbol;
12
+ export interface SourceOptions<A extends unknown[]> {
13
+ /** Canonicalize exotic args to a stable string yourself; default = structural fingerprint. */
14
+ key?: (...args: A) => string;
15
+ }
16
+ /** The structural fingerprint of a call's args — stable across processes and time. */
17
+ export declare function fingerprint_args(args: unknown[]): string;
18
+ /** `s:<id>:<fp>` — the receipt/eviction tag for one (source, args) pair. */
19
+ export declare function source_tag(id: string, fingerprint: string): string;
20
+ /** The compiled form of `export const X = import.meta.og.source(fn, opts?)`. */
21
+ export declare function __og_source<A extends unknown[], R>(id: string, fn: (...args: A) => R, opts?: SourceOptions<A>): (...args: A) => R;
22
+ /** A function stamped by the macro. */
23
+ type SourceFn = ((...args: never[]) => unknown) & {
24
+ [SOURCE_ID]?: string;
25
+ [SOURCE_KEY]?: (...args: unknown[]) => string;
26
+ };
27
+ /** The receipt tag one `(source, args)` call files, or null when `fn` is not a declared source. */
28
+ export declare function source_tag_of(fn: SourceFn, args?: unknown[]): string | null;
29
+ export {};
package/dist/source.js ADDED
@@ -0,0 +1,87 @@
1
+ import { fnv1a } from "./runtime/hash.js";
2
+ // src/source.ts
3
+ /**
4
+ * DATA SOURCES — `import.meta.og.source(fn)`, the RUNTIME half (the compiler rewrites the macro to
5
+ * `__og_source('<file#export>', fn, opts?)`, injecting the import from `ogygia/internal`).
6
+ * Isomorphic + tiny: on the server, each call records a receipt tag (`s:<id>:<fingerprint(args)>`)
7
+ * — kept with the request's facts while its render may be stored (the invalidation reverse
8
+ * index), and shown to an observer (a federated fragment reporting what its render read);
9
+ * everywhere else it is a pure pass-through. `sourceTag(fn, args)` (the plugin door) reads the
10
+ * stamped id back off the function — one side, no strings, typos are type errors.
11
+ *
12
+ * The recorder and observer ride ONE `globalThis` slot: several module instances (dist entries,
13
+ * a plugin package beside core) must share the seam.
14
+ */
15
+ const slots = globalThis[Symbol.for("ogygia.sources")] ??= {
16
+ recorder: null,
17
+ observer: null
18
+ };
19
+ /** hooks.ts installs this once — files a receipt with the current request's facts. */
20
+ function set_source_recorder(fn) {
21
+ slots.recorder = fn;
22
+ }
23
+ /** federate() installs this once — every receipt tag. */
24
+ function set_source_observer(fn) {
25
+ slots.observer = fn;
26
+ }
27
+ /** Called by the `__og_source` wrapper on every invocation (and by a peer handle for the tags it
28
+ * ADOPTS from a remote fragment). Neither seam may fail the app's own call. */
29
+ function record_source_read(tag) {
30
+ try {
31
+ slots.recorder?.(tag);
32
+ } catch {}
33
+ try {
34
+ slots.observer?.(tag);
35
+ } catch {}
36
+ }
37
+ /** The identity stamp — read by `postrender.invalidate(fn, args)`. */
38
+ const SOURCE_ID = Symbol.for("ogygia.source.id");
39
+ /** The optional `{ key }` canonicalizer stamp (exotic signatures). */
40
+ const SOURCE_KEY = Symbol.for("ogygia.source.key");
41
+ /** Canonicalize one argument: event-ish shapes collapse to their route identity (a whole
42
+ * RequestEvent can never ride a fingerprint), URLs to pathnames, functions to a marker. */
43
+ function canonical(value, depth = 0) {
44
+ if (value === null || typeof value !== "object") return typeof value === "function" ? "[fn]" : value;
45
+ if (depth > 4) return "[deep]";
46
+ if (value instanceof URL) return value.pathname;
47
+ const v = value;
48
+ if (v.url instanceof URL && ("request" in v || "cookies" in v)) return {
49
+ __route: v.route?.id ?? null,
50
+ __path: v.url.pathname
51
+ };
52
+ if (typeof Request !== "undefined" && value instanceof Request) return "[request]";
53
+ if (Array.isArray(value)) return value.map((x) => canonical(x, depth + 1));
54
+ const out = {};
55
+ for (const key of Object.keys(v).sort()) out[key] = canonical(v[key], depth + 1);
56
+ return out;
57
+ }
58
+ /** The structural fingerprint of a call's args — stable across processes and time. */
59
+ function fingerprint_args(args) {
60
+ try {
61
+ return fnv1a(JSON.stringify(canonical(args)));
62
+ } catch {
63
+ return "opaque";
64
+ }
65
+ }
66
+ /** `s:<id>:<fp>` — the receipt/eviction tag for one (source, args) pair. */
67
+ function source_tag(id, fingerprint) {
68
+ return `s:${id}:${fingerprint}`;
69
+ }
70
+ /** The compiled form of `export const X = import.meta.og.source(fn, opts?)`. */
71
+ function __og_source(id, fn, opts) {
72
+ const wrapped = (...args) => {
73
+ record_source_read(source_tag(id, opts?.key ? opts.key(...args) : fingerprint_args(args)));
74
+ return fn(...args);
75
+ };
76
+ Object.defineProperty(wrapped, SOURCE_ID, { value: id });
77
+ if (opts?.key) Object.defineProperty(wrapped, SOURCE_KEY, { value: opts.key });
78
+ return wrapped;
79
+ }
80
+ /** The receipt tag one `(source, args)` call files, or null when `fn` is not a declared source. */
81
+ function source_tag_of(fn, args = []) {
82
+ const id = fn[SOURCE_ID];
83
+ if (!id) return null;
84
+ const key_fn = fn[SOURCE_KEY];
85
+ return source_tag(id, key_fn ? key_fn(...args) : fingerprint_args(args));
86
+ }
87
+ export { SOURCE_ID, SOURCE_KEY, __og_source, fingerprint_args, record_source_read, set_source_observer, set_source_recorder, source_tag, source_tag_of };
@@ -0,0 +1,86 @@
1
+ /** Devalue custom-type name for store payloads on the wire. */
2
+ export declare const STORE_WIRE_KEY = "OgygiaW";
3
+ /** Brand carrying a factory tag on a store object (non-enumerable, set by `mark_store`). */
4
+ declare const STORE_TAG: unique symbol;
5
+ interface StoreLike {
6
+ subscribe: (run: (value: unknown) => void) => unknown;
7
+ set?: (value: unknown) => void;
8
+ update?: (fn: (value: unknown) => unknown) => void;
9
+ [STORE_TAG]?: string;
10
+ }
11
+ /** Legacy wire shape (`t` factory tag, `i` id, `d` current value) — a hub Ref minus its kind. */
12
+ interface StorePayload {
13
+ t: string;
14
+ i: string;
15
+ d: unknown;
16
+ }
17
+ /** Subscribe-shaped, NOT a `[ogygia.wire]` class instance (wire kind), and NOT an `og_derived`
18
+ * (the derived kind carries its recipe — the store kind would freeze it to a seed). */
19
+ export declare function is_store(value: unknown): value is StoreLike;
20
+ /** A readable with no way back in — seeding it loses the derivation (classifier warns). */
21
+ export declare function is_derived_like(value: StoreLike): boolean;
22
+ /**
23
+ * Register a store factory under a stable tag (root-relative module path + export name, same
24
+ * scheme as transportable classes). Decode calls `factory(seed)`, so the rebuilt store keeps
25
+ * every method the factory grafts on. Over-registration is harmless.
26
+ */
27
+ export declare function __register_store_factory(tag: string, factory: unknown): void;
28
+ /**
29
+ * Brand a store with its factory tag so encode ships the tag instead of the generic one.
30
+ * Returns the store (chainable at a return site). Hand-written today; the auto-wire compiler
31
+ * pass will emit this into provably store-returning factories.
32
+ *
33
+ * THE FLOOR: never detonate on a product that can't carry a brand. A factory may legitimately
34
+ * return undefined/a primitive on one side (SSR-guard pattern) — that passes through unbranded
35
+ * (the `__og_store` wrapper owns the warning, so hand callers stay silent-by-contract). A
36
+ * frozen/sealed store can't take the stamp either — it degrades to the generic tier (value
37
+ * still crosses; only factory-grafted methods are lost), with a warning naming the tag.
38
+ */
39
+ export declare function mark_store<T extends object>(store: T, tag: string): T;
40
+ /** The hub kind: subscribe-shaped values. The moment of crossing is the value snapshot. */
41
+ export declare function register_store_kind(): void;
42
+ /**
43
+ * Devalue reducer: encode a store, or return undefined to fall through. Reads the store's
44
+ * CURRENT value with `get()` — the moment of crossing is the snapshot. Same instance → same
45
+ * wire id (hub-memoized), which is what lets the client reunite every copy into one live store.
46
+ */
47
+ export declare function reduce_store(value: unknown): StorePayload | undefined;
48
+ /**
49
+ * Devalue reviver: rebuild a live store via the hub. `remember: true` (browser) memoizes by
50
+ * wire id — every island decoding this handle gets the SAME store, which is the liveness
51
+ * mechanism. `remember: false` (server) always builds fresh: per-request isolation.
52
+ */
53
+ export declare function revive_store(payload: StorePayload, remember: boolean): unknown;
54
+ export declare function __og_store<F extends (...args: never[]) => object>(tag: string, factory: F): F;
55
+ type AnyStore = {
56
+ subscribe: (run: (v: unknown) => void) => unknown;
57
+ };
58
+ /**
59
+ * A `derived` that CROSSES boundaries ALIVE — resumability for the reactive graph.
60
+ *
61
+ * Svelte's `derived` is a live computation: sources + a formula. The value can serialize; the
62
+ * computation can't — so a plain derived crosses as a FROZEN seed (the classifier warns). This
63
+ * primitive remembers its RECIPE, and the recipe is made of exactly the two things the seam
64
+ * already carries: sources are STORES (they reunify to one live instance per island page) and
65
+ * the formula is a FUNCTION (mark it with `import.meta.og.$` so it travels as a fn ref).
66
+ *
67
+ * ```ts
68
+ * const doubled = og_derived(tally, import.meta.og.$((n) => n * 2));
69
+ * ```
70
+ *
71
+ * Locally it IS `svelte/store`'s derived — same laziness, same semantics. At a boundary the
72
+ * derived kind ships `{ sources, formula, seed }`; the island decodes by re-deriving against
73
+ * the REUNIFIED sources with the REBOUND formula: bump the source in any island and every
74
+ * island's derived follows. The seed rides along only for exactness of the first paint.
75
+ *
76
+ * An UNMARKED formula still works same-tree, but the derived then can't cross (the fn ref
77
+ * can't be built) — the boundary explains this at the seam rather than freezing silently.
78
+ */
79
+ export declare function og_derived<T>(sources: AnyStore | AnyStore[], fn: (...vals: never[]) => T, initial?: T): {
80
+ subscribe: (run: (v: T) => void) => () => void;
81
+ };
82
+ /** The hub kind: an `og_derived` recipe. Sources and formula are shipped as NESTED refs (devalue
83
+ * recursion runs the reducer over `d`'s contents), so by decode time they are already LIVE —
84
+ * sources reunified, formula rebound — and re-deriving is one call. */
85
+ export declare function register_derived_kind(): void;
86
+ export {};
@@ -0,0 +1,229 @@
1
+ import { wire } from "./live-transport.js";
2
+ import { mint, register_kind, resolve } from "./ref.js";
3
+ import { derived, get, writable } from "svelte/store";
4
+ // src/store-transport.ts
5
+ /**
6
+ * Transportable stores — the hub's STORE kind.
7
+ *
8
+ * A Svelte store is a live object (closure + methods), so devalue rejects it and a
9
+ * `setContext('cart', store)` silently died at the island boundary. This kind lets a
10
+ * subscribe-shaped value cross the same way `[import.meta.og.wire]` classes do: the CURRENT
11
+ * VALUE travels as data, the CODE comes from a module on the other side, and hub identity
12
+ * makes it live — every encode of one store mints ONE id, and the browser resolves by id,
13
+ * so five islands reading the same context key share one client store. `set` in island A
14
+ * repaints `$store` in island B.
15
+ *
16
+ * Two tiers:
17
+ * - REGISTERED FACTORY (`__register_store_factory(tag, factory)`): decode calls
18
+ * `factory(seed)` from the registered module, so custom methods (`add`, `reset`,
19
+ * `useLocalStorage`, …) are REBUILT, not serialized. A store is branded with its factory
20
+ * tag via `mark_store` (hand-written today, compiler-emitted later).
21
+ * - GENERIC (`svelte:writable`): any unbranded subscribe-shaped value. Decode is a plain
22
+ * `writable(seed)` — value + set/update/subscribe survive; bespoke methods do not (the
23
+ * boundary classifier warns, naming them).
24
+ *
25
+ * Identity, reunification, per-request server isolation: the hub's (see ref.ts).
26
+ */
27
+ /** Brand on an `og_derived` store: the RECIPE (sources + formula) it was made from. */
28
+ const DERIVED_BRAND = Symbol.for("ogygia.derived");
29
+ /** Devalue custom-type name for store payloads on the wire. */
30
+ const STORE_WIRE_KEY = "OgygiaW";
31
+ /** Generic tag: decode with a bare `writable(seed)`. */
32
+ const GENERIC_TAG = "svelte:writable";
33
+ /** Brand carrying a factory tag on a store object (non-enumerable, set by `mark_store`). */
34
+ const STORE_TAG = Symbol.for("ogygia.store.tag");
35
+ const REGISTRY_KEY = Symbol.for("ogygia.stores");
36
+ function store_registry() {
37
+ const g = globalThis;
38
+ return g[REGISTRY_KEY] ??= { factories: /* @__PURE__ */ new Map() };
39
+ }
40
+ /** Subscribe-shaped, NOT a `[ogygia.wire]` class instance (wire kind), and NOT an `og_derived`
41
+ * (the derived kind carries its recipe — the store kind would freeze it to a seed). */
42
+ function is_store(value) {
43
+ if (value === null || typeof value !== "object") return false;
44
+ if (typeof value.subscribe !== "function") return false;
45
+ if (value[DERIVED_BRAND] !== void 0) return false;
46
+ const cls = value.constructor;
47
+ if (typeof cls === "function" && cls[wire]) return false;
48
+ return true;
49
+ }
50
+ /** A readable with no way back in — seeding it loses the derivation (classifier warns). */
51
+ function is_derived_like(value) {
52
+ return typeof value.set !== "function" && typeof value.update !== "function";
53
+ }
54
+ /**
55
+ * Register a store factory under a stable tag (root-relative module path + export name, same
56
+ * scheme as transportable classes). Decode calls `factory(seed)`, so the rebuilt store keeps
57
+ * every method the factory grafts on. Over-registration is harmless.
58
+ */
59
+ function __register_store_factory(tag, factory) {
60
+ if (typeof factory !== "function") return;
61
+ store_registry().factories.set(tag, factory);
62
+ }
63
+ /** For warnings: `null` is an object to typeof, and the distinction matters at this seam. */
64
+ const type_of = (v) => v === null ? "null" : typeof v;
65
+ /**
66
+ * Brand a store with its factory tag so encode ships the tag instead of the generic one.
67
+ * Returns the store (chainable at a return site). Hand-written today; the auto-wire compiler
68
+ * pass will emit this into provably store-returning factories.
69
+ *
70
+ * THE FLOOR: never detonate on a product that can't carry a brand. A factory may legitimately
71
+ * return undefined/a primitive on one side (SSR-guard pattern) — that passes through unbranded
72
+ * (the `__og_store` wrapper owns the warning, so hand callers stay silent-by-contract). A
73
+ * frozen/sealed store can't take the stamp either — it degrades to the generic tier (value
74
+ * still crosses; only factory-grafted methods are lost), with a warning naming the tag.
75
+ */
76
+ function mark_store(store, tag) {
77
+ if (store === null || typeof store !== "object" && typeof store !== "function") return store;
78
+ try {
79
+ Object.defineProperty(store, STORE_TAG, {
80
+ value: tag,
81
+ enumerable: false
82
+ });
83
+ } catch {
84
+ if (typeof console !== "undefined") console.warn(`[ogygia] store "${tag}": the store object is not extensible (frozen/sealed), so it cannot carry its factory brand — it will cross boundaries as a plain writable (custom methods unavailable). Brand before freezing, or leave the store extensible.`);
85
+ }
86
+ return store;
87
+ }
88
+ /** The hub kind: subscribe-shaped values. The moment of crossing is the value snapshot. */
89
+ function register_store_kind() {
90
+ register_kind({
91
+ k: "store",
92
+ match: is_store,
93
+ encode(value) {
94
+ return {
95
+ t: value[STORE_TAG] ?? GENERIC_TAG,
96
+ d: get(value)
97
+ };
98
+ },
99
+ decode(ref) {
100
+ const t = ref.t ?? GENERIC_TAG;
101
+ const factory = t === GENERIC_TAG ? void 0 : store_registry().factories.get(t);
102
+ if (t !== GENERIC_TAG && factory === void 0) {
103
+ if (typeof console !== "undefined") console.warn(`[ogygia] store "${t}": factory not loaded in this bundle — degraded to a plain writable (custom methods unavailable). Import the factory's module in the island (or its graph) so \`__register_store_factory\` runs there.`);
104
+ return writable(ref.d);
105
+ }
106
+ const built = factory ? factory(ref.d) : writable(ref.d);
107
+ if (built === null || typeof built !== "object") {
108
+ if (typeof console !== "undefined") console.warn(`[ogygia] store "${t}": factory returned ${type_of(built)} while rebuilding — degraded to a plain writable (custom methods unavailable). A store factory must return a store on every call; move environment guards inside the factory body.`);
109
+ return writable(ref.d);
110
+ }
111
+ return built;
112
+ }
113
+ });
114
+ }
115
+ const STORE_ONLY = /* @__PURE__ */ new Set(["store"]);
116
+ /**
117
+ * Devalue reducer: encode a store, or return undefined to fall through. Reads the store's
118
+ * CURRENT value with `get()` — the moment of crossing is the snapshot. Same instance → same
119
+ * wire id (hub-memoized), which is what lets the client reunite every copy into one live store.
120
+ */
121
+ function reduce_store(value) {
122
+ register_store_kind();
123
+ const ref = mint(value, STORE_ONLY);
124
+ if (ref === void 0) return void 0;
125
+ return {
126
+ t: ref.t,
127
+ i: ref.i,
128
+ d: ref.d
129
+ };
130
+ }
131
+ /**
132
+ * Devalue reviver: rebuild a live store via the hub. `remember: true` (browser) memoizes by
133
+ * wire id — every island decoding this handle gets the SAME store, which is the liveness
134
+ * mechanism. `remember: false` (server) always builds fresh: per-request isolation.
135
+ */
136
+ function revive_store(payload, remember) {
137
+ register_store_kind();
138
+ const ref = {
139
+ k: "store",
140
+ i: payload.i,
141
+ t: payload.t,
142
+ d: payload.d
143
+ };
144
+ return resolve(ref, remember);
145
+ }
146
+ /**
147
+ * The `import.meta.og.store` rewrite target: register the factory under its build tag (module
148
+ * load IS the moment decode needs the registry filled — an island imports the factory module,
149
+ * registration rides that import) and return a wrapper whose every product is BRANDED with the
150
+ * tag, so encode ships the tag instead of the generic one and decode rebuilds THROUGH the
151
+ * factory — custom methods survive the wire.
152
+ */
153
+ /** Tags already warned about non-store products — once per tag, not once per call (a hot
154
+ * SSR path would otherwise warn on every request). */
155
+ const warned_unbranded = /* @__PURE__ */ new Set();
156
+ function __og_store(tag, factory) {
157
+ __register_store_factory(tag, (seed) => mark_store(factory(seed), tag));
158
+ return ((...args) => {
159
+ const product = factory(...args);
160
+ if (product === null || typeof product !== "object") {
161
+ if (!warned_unbranded.has(tag) && typeof console !== "undefined") {
162
+ warned_unbranded.add(tag);
163
+ console.warn(`[ogygia] store "${tag}": factory returned ${type_of(product)} — nothing to brand, value passed through as-is. Fine for a client-only store; a store that must cross an island boundary has to exist on the server too — return e.g. writable(seed) under your guard and gate the side effects inside the factory instead.`);
164
+ }
165
+ return product;
166
+ }
167
+ return mark_store(product, tag);
168
+ });
169
+ }
170
+ /**
171
+ * A `derived` that CROSSES boundaries ALIVE — resumability for the reactive graph.
172
+ *
173
+ * Svelte's `derived` is a live computation: sources + a formula. The value can serialize; the
174
+ * computation can't — so a plain derived crosses as a FROZEN seed (the classifier warns). This
175
+ * primitive remembers its RECIPE, and the recipe is made of exactly the two things the seam
176
+ * already carries: sources are STORES (they reunify to one live instance per island page) and
177
+ * the formula is a FUNCTION (mark it with `import.meta.og.$` so it travels as a fn ref).
178
+ *
179
+ * ```ts
180
+ * const doubled = og_derived(tally, import.meta.og.$((n) => n * 2));
181
+ * ```
182
+ *
183
+ * Locally it IS `svelte/store`'s derived — same laziness, same semantics. At a boundary the
184
+ * derived kind ships `{ sources, formula, seed }`; the island decodes by re-deriving against
185
+ * the REUNIFIED sources with the REBOUND formula: bump the source in any island and every
186
+ * island's derived follows. The seed rides along only for exactness of the first paint.
187
+ *
188
+ * An UNMARKED formula still works same-tree, but the derived then can't cross (the fn ref
189
+ * can't be built) — the boundary explains this at the seam rather than freezing silently.
190
+ */
191
+ function og_derived(sources, fn, initial) {
192
+ const single = !Array.isArray(sources);
193
+ const store = derived(sources, fn, initial);
194
+ Object.defineProperty(store, DERIVED_BRAND, {
195
+ value: {
196
+ s: single ? [sources] : sources,
197
+ f: fn,
198
+ single
199
+ },
200
+ enumerable: false
201
+ });
202
+ return store;
203
+ }
204
+ /** The hub kind: an `og_derived` recipe. Sources and formula are shipped as NESTED refs (devalue
205
+ * recursion runs the reducer over `d`'s contents), so by decode time they are already LIVE —
206
+ * sources reunified, formula rebound — and re-deriving is one call. */
207
+ function register_derived_kind() {
208
+ register_kind({
209
+ k: "derived",
210
+ match(value) {
211
+ return value !== null && typeof value === "object" && value[DERIVED_BRAND] !== void 0;
212
+ },
213
+ encode(value) {
214
+ const r = value[DERIVED_BRAND];
215
+ return { d: {
216
+ s: r.s,
217
+ f: r.f,
218
+ single: r.single,
219
+ seed: get(value)
220
+ } };
221
+ },
222
+ decode(ref) {
223
+ const d = ref.d;
224
+ if (typeof d.f !== "function") throw new Error("[ogygia] cannot resume og_derived: its formula did not cross — mark it with import.meta.og.$ at the og_derived call site so it travels as a fn ref.");
225
+ return og_derived(d.single ? d.s[0] : d.s, d.f, d.seed);
226
+ }
227
+ });
228
+ }
229
+ export { STORE_WIRE_KEY, __og_store, __register_store_factory, is_derived_like, is_store, mark_store, og_derived, reduce_store, register_derived_kind, register_store_kind, revive_store };
@@ -0,0 +1,5 @@
1
+ /** `fetch`, noted as the tools' own: the page's file lists leave its Resource Timing entry out. */
2
+ export declare function tool_fetch(url: string, init?: RequestInit): Promise<Response>;
3
+ /** Whether this Resource Timing entry is one of the tools' own requests (a `fetch` of a noted
4
+ * address that started when the tools asked), not the page's. */
5
+ export declare function tool_made(e: PerformanceResourceTiming): boolean;
@@ -0,0 +1,41 @@
1
+ // src/tool-fetches.ts
2
+ /**
3
+ * THE TOOLS' OWN REQUESTS — the devtools read the page's files too: a chunk's text to find the
4
+ * runtime's parts, a stylesheet's rules, a HEAD to ask how a file is cached. The browser lists each
5
+ * of those in its Resource Timing beside the page's own loads, and a reader of that list then counts
6
+ * a file the page never loaded as loaded, takes a HEAD's empty body for a file's size, and sees the
7
+ * page "fetch again" what it fetched once.
8
+ *
9
+ * So the tools ask through `tool_fetch`, which notes the address and the moment, and every reader of
10
+ * the list (the byte ledger, an island's sizes, the beacon's files) leaves out what `tool_made` says
11
+ * the tools caused. The notes live on a global: the runtime's beacon and the devtools are separate
12
+ * bundles, and a page can carry two copies of either.
13
+ *
14
+ * Universal leaf: no imports.
15
+ */
16
+ const KEY = Symbol.for("ogygia.tool-fetches");
17
+ function notes() {
18
+ return globalThis[KEY];
19
+ }
20
+ /** `fetch`, noted as the tools' own: the page's file lists leave its Resource Timing entry out. */
21
+ function tool_fetch(url, init) {
22
+ let href = url;
23
+ try {
24
+ href = new URL(url, location.href).href;
25
+ const all = globalThis[KEY] ??= /* @__PURE__ */ new Map();
26
+ const at = all.get(href);
27
+ if (at) at.push(performance.now());
28
+ else all.set(href, [performance.now()]);
29
+ } catch {}
30
+ return fetch(href, init);
31
+ }
32
+ /** Whether this Resource Timing entry is one of the tools' own requests (a `fetch` of a noted
33
+ * address that started when the tools asked), not the page's. */
34
+ function tool_made(e) {
35
+ if (e.initiatorType !== "fetch") return false;
36
+ const at = notes()?.get(e.name);
37
+ if (!at) return false;
38
+ for (const t of at) if (e.startTime >= t - 1 && e.startTime - t < 1e3) return true;
39
+ return false;
40
+ }
41
+ export { tool_fetch, tool_made };
@@ -0,0 +1,48 @@
1
+ import { REF_WIRE_KEY, Ref } from "./ref.js";
2
+ type EncodedRegion = {
3
+ i: string;
4
+ p: Record<string, unknown>;
5
+ u: string;
6
+ m: string;
7
+ h?: string;
8
+ g?: string;
9
+ x?: string;
10
+ /** HUB IDENTITY — minted per live region instance (one id however many payloads carry it).
11
+ * The browser memoizes decode by it, so every consumer of one region value shares one
12
+ * descriptor, and the future reconciler diffs by it. Absent on legacy payloads. */
13
+ hi?: string;
14
+ };
15
+ /**
16
+ * A region value AS THE BROWSER RECEIVES IT: through the crossing (encode, then decode) on the server,
17
+ * itself in the browser (it already crossed). A promise `of` resolves to a wire value — a remote's
18
+ * answer — so a server render that awaits one renders this form, the same shape the browser hydrates
19
+ * against (PromiseRegionAwait.svelte). Not a region: unchanged. A plain inline region nothing awaited
20
+ * throws, exactly as the crossing would.
21
+ */
22
+ export declare function wire_form<T>(value: T): T;
23
+ /** The hub kind: a held/dual/awaited region — the RENDERABLE Ref. `d` is the EncodedRegion.
24
+ * Decode is deliberately un-memoized at the legacy seam (the wrapper below passes ids through
25
+ * raw); hub-memoized region identity arrives with the one-key collapse, where it becomes the
26
+ * foundation for persistent regions (the reconciler resolves by id). */
27
+ export declare function register_region_kind(): void;
28
+ /**
29
+ * The SvelteKit `transport` entry (install once in universal hooks). TWO entries, ONE codec
30
+ * underneath (hub v2 phase Y): `Region` preserves the legacy region wire shape/tag for
31
+ * compatibility; `OgygiaRef` carries EVERY OTHER hub kind through the same `ref_reducer` /
32
+ * `ref_reviver` the island seams use — so a universal `load` can put a store, wire class, fn or
33
+ * resumable derived in `page.data`, and a remote function can take/return one, all by identity.
34
+ * Kit routes remote args + load data through this same `transport`, so the symmetry is total.
35
+ * Decode is REQUEST-scoped on the server (no `document`) — client-sent identity never memoizes
36
+ * across requests — and PAGE-scoped in the browser (reunification).
37
+ */
38
+ export declare const ogygiaTransport: {
39
+ Region: {
40
+ encode(value: unknown): false | EncodedRegion;
41
+ decode(raw: EncodedRegion): unknown;
42
+ };
43
+ [REF_WIRE_KEY]: {
44
+ encode(value: unknown): Ref | false;
45
+ decode(ref: Ref): unknown;
46
+ };
47
+ };
48
+ export {};