@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,127 @@
1
+ import { find_og_calls, og_js_regions } from "../parse/scan.js";
2
+ import { parse_module } from "../parse/oxc.js";
3
+ import { og_member } from "./wire.js";
4
+ // src/compiler/macros/source.ts
5
+ /**
6
+ * `import.meta.og.source(fn)` — declared data sources, as a compile construct (the postrender
7
+ * reverse index; internal/notes/freeze.md §L2):
8
+ *
9
+ * export const loadBuilderContent = import.meta.og.source(async (event, category) => { … });
10
+ *
11
+ * The macro stamps the id from THIS definition's `file#export` (root-relative; the ogygia.files
12
+ * identity rail applies to package paths upstream) and rewrites to
13
+ * `__og_source('<id>', fn, opts?)` with the runtime-wrapper import injected. Loads stay
14
+ * untouched plain TS forever; `postrender.invalidate(loadBuilderContent, [args])` reads the stamp
15
+ * off the function — no strings anywhere.
16
+ *
17
+ * STRICT BY CONSTRUCTION — legal in exactly ONE position:
18
+ * • a top-level `export const <name> = import.meta.og.source(fn)` (or `(fn, { key })`);
19
+ * • 1 or 2 arguments; the first is the function.
20
+ * Anything else — un-exported, nested, bare access, argument-less — is a BUILD ERROR naming the
21
+ * file and line (the wire/asRegion macro laws).
22
+ */
23
+ const EXPORT_CONST_TAIL_RE = /\bexport\s+const\s+([A-Za-z_$][\w$]*)\s*=\s*$/;
24
+ const MARKER = "import.meta.og.source";
25
+ const IMPORT_LINE = `import { __og_source } from 'ogygia/internal';\n`;
26
+ function line_of(src, offset) {
27
+ let line = 1;
28
+ for (let i = 0; i < offset && i < src.length; i++) if (src[i] === "\n") line++;
29
+ return line;
30
+ }
31
+ function misuse(id, src, offset, what) {
32
+ throw new Error(`[ogygia] ${id}:${line_of(src, offset)} — ${what}. import.meta.og.source is legal in exactly one position: \`export const <name> = import.meta.og.source(fn)\` (optionally \`(fn, { key })\`) at module top level. The compiler stamps the source id from that export's identity.`);
33
+ }
34
+ function walk(node, visit) {
35
+ visit(node);
36
+ for (const key in node) {
37
+ if (key === "type" || key === "start" || key === "end") continue;
38
+ const child = node[key];
39
+ if (Array.isArray(child)) {
40
+ for (const c of child) if (c && typeof c === "object" && typeof c.type === "string") walk(c, visit);
41
+ } else if (child && typeof child === "object" && typeof child.type === "string") walk(child, visit);
42
+ }
43
+ }
44
+ /** AST pass over one JS region; null when it doesn't parse (caller uses the scanner fallback). */
45
+ function ast_edits(src, region, id, rel) {
46
+ const { program, ok } = parse_module(region.code, id);
47
+ if (!ok || !program) return null;
48
+ const edits = [];
49
+ const claimed = /* @__PURE__ */ new Set();
50
+ for (const stmt of program.body ?? []) {
51
+ if (stmt.type !== "ExportNamedDeclaration") continue;
52
+ const decl = stmt.declaration;
53
+ if (!decl || decl.type !== "VariableDeclaration") continue;
54
+ for (const d of decl.declarations ?? []) {
55
+ const init = d.init;
56
+ if (init?.type !== "CallExpression" || og_member(init.callee) !== "source") continue;
57
+ const abs = region.offset + init.start;
58
+ if (decl.kind !== "const") misuse(id, src, abs, `a source must be \`export const\` (got \`${decl.kind}\`)`);
59
+ const name = d.id?.type === "Identifier" ? d.id.name : null;
60
+ if (!name) misuse(id, src, abs, `a source export must be a plain identifier (no destructuring)`);
61
+ const args = init.arguments ?? [];
62
+ if (args.length < 1 || args.length > 2) misuse(id, src, abs, `source() takes the function (+ optional { key }) — got ${args.length} args`);
63
+ claimed.add(init);
64
+ claimed.add(init.callee);
65
+ const callee = init.callee;
66
+ edits.push({
67
+ start: region.offset + callee.start,
68
+ end: region.offset + callee.end,
69
+ text: `__og_source`
70
+ });
71
+ edits.push({
72
+ start: region.offset + args[0].start,
73
+ end: region.offset + args[0].start,
74
+ text: `${JSON.stringify(`${rel}#${name}`)}, `
75
+ });
76
+ }
77
+ }
78
+ walk(program, (n) => {
79
+ if (n.type === "CallExpression" && og_member(n.callee) === "source" && !claimed.has(n)) misuse(id, src, region.offset + n.start, `source() outside an \`export const\` initializer`);
80
+ if (og_member(n) === "source" && !claimed.has(n)) misuse(id, src, region.offset + n.start, `bare import.meta.og.source used as a value`);
81
+ });
82
+ edits.sort((a, b) => a.start - b.start);
83
+ return edits;
84
+ }
85
+ /** Scanner fallback for mid-edit source: rewrite only the exact legal spelling; strictness is
86
+ * enforced by the next parseable state's AST pass. */
87
+ function scan_edits(src, region, rel) {
88
+ const edits = [];
89
+ const code = region.code;
90
+ for (const call of find_og_calls(code, "import.meta.og.")) {
91
+ if (call.method !== "source") continue;
92
+ const before = code.slice(0, call.start);
93
+ const m = EXPORT_CONST_TAIL_RE.exec(before);
94
+ if (!m) continue;
95
+ const inner = call.args.trim();
96
+ if (!inner) continue;
97
+ edits.push({
98
+ start: region.offset + call.start,
99
+ end: region.offset + call.end,
100
+ text: `__og_source(${JSON.stringify(`${rel}#${m[1]}`)}, ${inner})`
101
+ });
102
+ }
103
+ return edits;
104
+ }
105
+ /**
106
+ * Rewrite every source mark in `src` (strict position rules), injecting the runtime-wrapper
107
+ * import once. `rel` is the module's root-relative posix path (the id rail). Returns the input
108
+ * unchanged (same reference) when there is nothing to do.
109
+ */
110
+ function rewrite_source(src, id, rel, markup_exts) {
111
+ if (!src.includes(MARKER)) return src;
112
+ const regions = og_js_regions(src, id, markup_exts);
113
+ if (!regions) return src;
114
+ const edits = [];
115
+ for (const region of regions) edits.push(...ast_edits(src, region, id, rel) ?? scan_edits(src, region, rel));
116
+ if (!edits.length) return src;
117
+ edits.sort((a, b) => a.start - b.start);
118
+ let out = "";
119
+ let last = 0;
120
+ for (const e of edits) {
121
+ out += src.slice(last, e.start) + e.text;
122
+ last = e.end;
123
+ }
124
+ out += src.slice(last);
125
+ return IMPORT_LINE + out;
126
+ }
127
+ export { rewrite_source };
@@ -0,0 +1,17 @@
1
+ /** Rewrite every `import.meta.og.store` mark. Same-reference return when nothing to do. */
2
+ export declare function rewrite_store(src: string, id: string, rel_id: string, markup_exts: readonly string[]): string;
3
+ /**
4
+ * AUTO-DETECT tier: brand exported factories whose body PROVABLY returns a store, with zero
5
+ * authoring. v1 scope (deliberately narrow — no guessing, under-branding is always safe since
6
+ * the generic writable tier still carries the value):
7
+ *
8
+ * export const createX = (seed) => ({ subscribe, … }) // object literal w/ subscribe
9
+ * export const createY = (seed) => writable(seed) // direct writable()/readable()
10
+ * export const createZ = (seed) => { … return { subscribe } } // every return provable
11
+ *
12
+ * Skipped (→ generic tier / the og.store assert): function declarations, re-exports, factories
13
+ * returning call results (`return make(x)`), mixed/ambiguous returns, non-exported consts.
14
+ * Requires the module to import from 'svelte/store' when the proof is a writable()/readable()
15
+ * call (a local function named `writable` must not count).
16
+ */
17
+ export declare function auto_brand_stores(src: string, id: string, rel_id: string, markup_exts: readonly string[]): string;
@@ -0,0 +1,244 @@
1
+ import { og_js_regions } from "../parse/scan.js";
2
+ import { parse_module } from "../parse/oxc.js";
3
+ import { og_member } from "./wire.js";
4
+ // src/compiler/macros/store.ts
5
+ /**
6
+ * `import.meta.og.store()` — the store-factory assert mark, as a compile construct.
7
+ *
8
+ * The store kind's registered-factory tier needs a build tag ↔ factory pairing so decode can
9
+ * rebuild a store THROUGH its factory (custom methods survive the wire). Provable factories
10
+ * can be auto-branded later; this construct is the floor that always works — the author
11
+ * asserts "this returns a store", and the compiler does the mechanical part:
12
+ *
13
+ * export const createCart = import.meta.og.store((seed = []) => { … });
14
+ * ↓
15
+ * export const createCart = __og_store('src/lib/cart.ts#store0', (seed = []) => { … });
16
+ *
17
+ * `__og_store` (store-transport.ts) registers the factory at module load (the island importing
18
+ * the factory module IS what fills decode's registry) and brands every product with the tag.
19
+ * The factory's FIRST PARAMETER is the seed: decode calls `factory(currentValue)`.
20
+ *
21
+ * STRICT BY CONSTRUCTION (og-wire's playbook): legal in exactly ONE shape — a direct call
22
+ * `import.meta.og.store(<inline function or identifier>)`. Bare access, aliasing, zero/multiple
23
+ * arguments, or a non-function argument are BUILD ERRORS naming file:line. AST-precise over
24
+ * the module's JS regions; a mid-edit unparseable file doesn't transform (the marker then
25
+ * fails loudly at runtime — `import.meta.og` is undefined without the transform).
26
+ */
27
+ const MARKER = "import.meta.og.store";
28
+ function walk(node, visit) {
29
+ visit(node);
30
+ for (const key in node) {
31
+ if (key === "type" || key === "start" || key === "end") continue;
32
+ const child = node[key];
33
+ if (Array.isArray(child)) {
34
+ for (const c of child) if (c && typeof c === "object" && typeof c.type === "string") walk(c, visit);
35
+ } else if (child && typeof child === "object" && typeof child.type === "string") walk(child, visit);
36
+ }
37
+ }
38
+ function line_of(src, offset) {
39
+ let line = 1;
40
+ for (let i = 0; i < offset && i < src.length; i++) if (src[i] === "\n") line++;
41
+ return line;
42
+ }
43
+ function misuse(id, src, offset, what) {
44
+ throw new Error(`[ogygia] ${id}:${line_of(src, offset)} — ${what}. import.meta.og.store is legal in exactly one shape: a direct call wrapping a store factory — import.meta.og.store((seed) => ({ subscribe, … })). It registers the factory under a build tag so islands rebuild the store THROUGH it (custom methods survive); the factory's first parameter is the seed value.`);
45
+ }
46
+ /** Unwrap oxc's preserved parens. */
47
+ function unparen(v) {
48
+ while (v && v.type === "ParenthesizedExpression") v = v.expression;
49
+ return v;
50
+ }
51
+ /** Provably NOT a store — the literal tier only: bare return, undefined, void, null, primitive
52
+ * literals. Identifiers, calls, members, ternaries are never flagged: they could be stores, the
53
+ * mark is the author's assertion, and dynamic values get the runtime floor instead. */
54
+ function literal_non_store(v) {
55
+ v = unparen(v);
56
+ if (!v) return true;
57
+ if (v.type === "Identifier") return v.name === "undefined";
58
+ if (v.type === "UnaryExpression") return v.operator === "void";
59
+ return v.type === "NullLiteral" || v.type === "BooleanLiteral" || v.type === "NumericLiteral" || v.type === "StringLiteral" || v.type === "BigIntLiteral" || v.type === "TemplateLiteral";
60
+ }
61
+ /** First provably-non-store return inside an EXPLICITLY marked inline factory (top-level returns
62
+ * only — nested functions' returns are theirs). Region-relative offset, or undefined. */
63
+ function first_non_store_return(fn) {
64
+ const body = fn.body;
65
+ if (body.type !== "BlockStatement") return literal_non_store(body) ? body.start : void 0;
66
+ let found;
67
+ (function collect(n) {
68
+ for (const key in n) {
69
+ if (found !== void 0) return;
70
+ if (key === "type" || key === "start" || key === "end") continue;
71
+ const child = n[key];
72
+ const kids = Array.isArray(child) ? child : child && typeof child === "object" && typeof child.type === "string" ? [child] : [];
73
+ for (const c of kids) {
74
+ if (c.type === "ArrowFunctionExpression" || c.type === "FunctionExpression" || c.type === "FunctionDeclaration") continue;
75
+ if (c.type === "ReturnStatement" && literal_non_store(c.argument)) {
76
+ found = c.start;
77
+ return;
78
+ }
79
+ collect(c);
80
+ }
81
+ }
82
+ })(body);
83
+ return found;
84
+ }
85
+ /** Rewrite every `import.meta.og.store` mark. Same-reference return when nothing to do. */
86
+ function rewrite_store(src, id, rel_id, markup_exts) {
87
+ if (!src.includes(MARKER)) return src;
88
+ const regions = og_js_regions(src, id, markup_exts);
89
+ if (!regions) return src;
90
+ const edits = [];
91
+ let seq = 0;
92
+ let needs_import = false;
93
+ for (const region of regions) {
94
+ const { program, ok } = parse_module(region.code, id);
95
+ if (!ok || !program) continue;
96
+ const claimed = /* @__PURE__ */ new Set();
97
+ walk(program, (n) => {
98
+ if (n.type === "CallExpression" && og_member(n.callee) === "store") {
99
+ const abs = region.offset + n.start;
100
+ const args = n.arguments;
101
+ if (!args || args.length !== 1) misuse(id, src, abs, `store() takes exactly one argument — the factory`);
102
+ const fn = args[0];
103
+ if (fn.type !== "ArrowFunctionExpression" && fn.type !== "FunctionExpression" && fn.type !== "Identifier") misuse(id, src, abs, `store()'s argument must be a function expression or an identifier (got ${fn.type})`);
104
+ claimed.add(n);
105
+ claimed.add(n.callee);
106
+ if (fn.type !== "Identifier") {
107
+ const bad = first_non_store_return(fn);
108
+ if (bad !== void 0 && typeof console !== "undefined") console.warn(`[ogygia] ${id}:${line_of(src, region.offset + bad)} — this import.meta.og.store factory has a return that is provably not a store (undefined/null/primitive). Where that branch runs, the product crosses as plain data, unbranded. If it is an environment guard, return a store there too (e.g. writable(seed)) and guard the side effects inside the factory instead.`);
109
+ }
110
+ const fn_text = region.code.slice(fn.start, fn.end);
111
+ const tag = `${rel_id}#store${seq++}`;
112
+ needs_import = true;
113
+ edits.push({
114
+ start: abs,
115
+ end: region.offset + n.end,
116
+ text: `__og_store(${JSON.stringify(tag)}, ${fn_text})`
117
+ });
118
+ return;
119
+ }
120
+ if (og_member(n) === "store" && !claimed.has(n)) misuse(id, src, region.offset + n.start, `bare import.meta.og.store used as a value`);
121
+ });
122
+ if (needs_import && !edits.some((e) => e.text.startsWith("import"))) {
123
+ edits.push({
124
+ start: region.offset,
125
+ end: region.offset,
126
+ text: `import { __og_store } from 'ogygia/internal';`
127
+ });
128
+ needs_import = false;
129
+ }
130
+ }
131
+ if (!edits.length) return src;
132
+ edits.sort((a, b) => a.start - b.start);
133
+ let out = "";
134
+ let last = 0;
135
+ for (const e of edits) {
136
+ out += src.slice(last, e.start) + e.text;
137
+ last = e.end;
138
+ }
139
+ out += src.slice(last);
140
+ return out;
141
+ }
142
+ /**
143
+ * AUTO-DETECT tier: brand exported factories whose body PROVABLY returns a store, with zero
144
+ * authoring. v1 scope (deliberately narrow — no guessing, under-branding is always safe since
145
+ * the generic writable tier still carries the value):
146
+ *
147
+ * export const createX = (seed) => ({ subscribe, … }) // object literal w/ subscribe
148
+ * export const createY = (seed) => writable(seed) // direct writable()/readable()
149
+ * export const createZ = (seed) => { … return { subscribe } } // every return provable
150
+ *
151
+ * Skipped (→ generic tier / the og.store assert): function declarations, re-exports, factories
152
+ * returning call results (`return make(x)`), mixed/ambiguous returns, non-exported consts.
153
+ * Requires the module to import from 'svelte/store' when the proof is a writable()/readable()
154
+ * call (a local function named `writable` must not count).
155
+ */
156
+ function auto_brand_stores(src, id, rel_id, markup_exts) {
157
+ if (!src.includes("subscribe") && !src.includes("writable") && !src.includes("readable")) return src;
158
+ const regions = og_js_regions(src, id, markup_exts);
159
+ if (!regions) return src;
160
+ const edits = [];
161
+ let seq = 0;
162
+ let needs_import = false;
163
+ const has_subscribe_prop = (obj) => (obj.properties ?? []).some((p) => {
164
+ if (p.type !== "Property" && p.type !== "ObjectProperty") return false;
165
+ const k = p.key;
166
+ return !p.computed && k?.type === "Identifier" && k.name === "subscribe" || k?.type === "StringLiteral" && k.value === "subscribe" || p.shorthand === true && k?.type === "Identifier" && k.name === "subscribe";
167
+ });
168
+ for (const region of regions) {
169
+ const { program, ok } = parse_module(region.code, id);
170
+ if (!ok || !program) continue;
171
+ const store_fns = /* @__PURE__ */ new Set();
172
+ for (const node of program.body ?? []) {
173
+ if (node.type !== "ImportDeclaration" || node.source?.value !== "svelte/store") continue;
174
+ for (const sp of node.specifiers ?? []) if (sp.type === "ImportSpecifier" && (sp.imported?.name === "writable" || sp.imported?.name === "readable")) store_fns.add(sp.local?.name ?? sp.imported.name);
175
+ }
176
+ const provable_value = (v) => {
177
+ while (v && v.type === "ParenthesizedExpression") v = v.expression;
178
+ if (!v) return false;
179
+ if (v.type === "ObjectExpression") return has_subscribe_prop(v);
180
+ if (v.type === "CallExpression" && v.callee?.type === "Identifier") return store_fns.has(v.callee.name);
181
+ return false;
182
+ };
183
+ const provable_factory = (fn) => {
184
+ if (fn.type !== "ArrowFunctionExpression" && fn.type !== "FunctionExpression") return false;
185
+ const body = fn.body;
186
+ if (body.type !== "BlockStatement") return provable_value(body);
187
+ const returns = [];
188
+ (function collect(n) {
189
+ for (const key in n) {
190
+ if (key === "type" || key === "start" || key === "end") continue;
191
+ const child = n[key];
192
+ const kids = Array.isArray(child) ? child : child && typeof child === "object" && typeof child.type === "string" ? [child] : [];
193
+ for (const c of kids) {
194
+ if (c.type === "ArrowFunctionExpression" || c.type === "FunctionExpression" || c.type === "FunctionDeclaration") continue;
195
+ if (c.type === "ReturnStatement") returns.push(c);
196
+ collect(c);
197
+ }
198
+ }
199
+ })(body);
200
+ return returns.length > 0 && returns.every((r) => provable_value(r.argument));
201
+ };
202
+ for (const node of program.body ?? []) {
203
+ if (node.type !== "ExportNamedDeclaration") continue;
204
+ const decl = node.declaration;
205
+ if (decl?.type !== "VariableDeclaration") continue;
206
+ for (const d of decl.declarations ?? []) {
207
+ const init = d.init;
208
+ if (!init || !provable_factory(init)) continue;
209
+ const tag = `${rel_id}#auto:${d.id?.type === "Identifier" ? d.id.name : `auto`}${seq ? seq : ""}`;
210
+ seq++;
211
+ needs_import = true;
212
+ edits.push({
213
+ start: region.offset + init.start,
214
+ end: region.offset + init.start,
215
+ text: `__og_store(${JSON.stringify(tag)}, `
216
+ });
217
+ edits.push({
218
+ start: region.offset + init.end,
219
+ end: region.offset + init.end,
220
+ text: `)`
221
+ });
222
+ }
223
+ }
224
+ if (needs_import && !edits.some((e) => e.text.startsWith("import"))) {
225
+ edits.push({
226
+ start: region.offset,
227
+ end: region.offset,
228
+ text: `import { __og_store } from 'ogygia/internal';`
229
+ });
230
+ needs_import = false;
231
+ }
232
+ }
233
+ if (!edits.length) return src;
234
+ edits.sort((a, b) => a.start - b.start);
235
+ let out = "";
236
+ let last = 0;
237
+ for (const e of edits) {
238
+ out += src.slice(last, e.start) + e.text;
239
+ last = e.end;
240
+ }
241
+ out += src.slice(last);
242
+ return out;
243
+ }
244
+ export { auto_brand_stores, rewrite_store };
@@ -0,0 +1,14 @@
1
+ import { AstNode } from "../parse/oxc.js";
2
+ /** The key expression a wire member rewrites to — the same symbol the runtime registry uses. */
3
+ export declare const WIRE_EXPR = "Symbol.for('ogygia.wire')";
4
+ type Node = AstNode;
5
+ /** If `node` is the member expression `import.meta.og.<name>`, return `<name>`; else null. */
6
+ export declare function og_member(node: Node | undefined): string | null;
7
+ /**
8
+ * Rewrite every wire mark in `src`, enforcing the strict position rules. Extension-aware:
9
+ * whole-file for JS/TS, `<script>` blocks for `.svelte`. Returns the input unchanged (same
10
+ * reference) when there is nothing to do. Throws (build-error voice, file:line) on any misuse.
11
+ * `markup_exts` is the resolved construct-host set (the plugin passes `['.svelte']`).
12
+ */
13
+ export declare function rewrite_wire(src: string, id: string, markup_exts: readonly string[]): string;
14
+ export {};
@@ -0,0 +1,160 @@
1
+ import { find_og_calls, og_js_regions } from "../parse/scan.js";
2
+ import { parse_module } from "../parse/oxc.js";
3
+ // src/compiler/macros/wire.ts
4
+ /**
5
+ * `import.meta.og.wire()` — the transportable mark, as a compile construct. A class opts into
6
+ * crossing island boundaries by declaring how it travels:
7
+ *
8
+ * export class Cart {
9
+ * items = $state<Item[]>([]);
10
+ * static wire = import.meta.og.wire({
11
+ * encode: (c) => ({ items: $state.snapshot(c.items) }),
12
+ * decode: (d) => new Cart(d.items)
13
+ * });
14
+ * }
15
+ *
16
+ * The macro CONSUMES the member and MINTS the key: the compiled output is
17
+ * `static [Symbol.for('ogygia.wire')] = <codec>` — a symbol-keyed protocol member the runtime
18
+ * looks codecs up by. The symbol never exists in source, so there is nothing to import, alias,
19
+ * or leak. (A literal `static [import.meta.og.wire]` KEY is grammatically impossible in
20
+ * TypeScript — TS1166: a computed class key must be a plain dotted name, and `import.meta` is
21
+ * meta-syntax. The call form is the strict, typechecked equivalent.)
22
+ *
23
+ * STRICT BY CONSTRUCTION — the construct is legal in exactly ONE position:
24
+ * • a static member named exactly `wire`, initialized with the call, inside a class body;
25
+ * • with exactly one argument, the codec (`{ encode, decode, id?, merge? }`).
26
+ * Anything else — another member name, a variable, an argument, a bare `import.meta.og.wire`
27
+ * access, an arg-less call — is a BUILD ERROR naming the file and line. And if the transform
28
+ * somehow never runs, `import.meta.og` is undefined at runtime, so it fails on load rather than
29
+ * half-working.
30
+ *
31
+ * Detection is AST-precise over the module's JS regions (whole file for `.ts`/`.js`, each
32
+ * `<script>` block for `.svelte`), with a string scanner as the fallback for source that doesn't
33
+ * parse mid-edit — so the marker in a comment or string is never rewritten.
34
+ */
35
+ const STATIC_WIRE_TAIL_RE = /\bstatic\s+wire\s*=\s*$/;
36
+ /** The key expression a wire member rewrites to — the same symbol the runtime registry uses. */
37
+ const WIRE_EXPR = "Symbol.for('ogygia.wire')";
38
+ const MARKER = "import.meta.og.wire";
39
+ /** If `node` is the member expression `import.meta.og.<name>`, return `<name>`; else null. */
40
+ function og_member(node) {
41
+ if (!node || node.type !== "MemberExpression" || node.computed) return null;
42
+ const name = node.property?.name;
43
+ if (typeof name !== "string") return null;
44
+ const og = node.object;
45
+ if (og?.type !== "MemberExpression" || og.computed || og.property?.name !== "og") return null;
46
+ const meta = og.object;
47
+ if (meta?.type !== "MetaProperty" || meta.meta?.name !== "import" || meta.property?.name !== "meta") return null;
48
+ return name;
49
+ }
50
+ /** Depth-first walk of an oxc AST, visiting every node object. */
51
+ function walk(node, visit) {
52
+ visit(node);
53
+ for (const key in node) {
54
+ if (key === "type" || key === "start" || key === "end") continue;
55
+ const child = node[key];
56
+ if (Array.isArray(child)) {
57
+ for (const c of child) if (c && typeof c === "object" && typeof c.type === "string") walk(c, visit);
58
+ } else if (child && typeof child === "object" && typeof child.type === "string") walk(child, visit);
59
+ }
60
+ }
61
+ /** 1-based line of an absolute offset in `src` — for build-error voice. */
62
+ function line_of(src, offset) {
63
+ let line = 1;
64
+ for (let i = 0; i < offset && i < src.length; i++) if (src[i] === "\n") line++;
65
+ return line;
66
+ }
67
+ /** The strict-position build error. `id` + line point at the offending spelling. */
68
+ function misuse(id, src, offset, what) {
69
+ throw new Error(`[ogygia] ${id}:${line_of(src, offset)} — ${what}. import.meta.og.wire is legal in exactly one position: \`static wire = import.meta.og.wire({ encode, decode })\` inside a class body. The macro consumes that member and mints the symbol key; the construct is not a value.`);
70
+ }
71
+ /**
72
+ * AST pass over one JS region. The ONLY legal shape rewrites; every other appearance of the
73
+ * construct throws the strict-position error. Returns null when the region doesn't parse
74
+ * (caller falls back to the scanner).
75
+ */
76
+ function ast_edits(src, region, id) {
77
+ const { program, ok } = parse_module(region.code, id);
78
+ if (!ok || !program) return null;
79
+ const edits = [];
80
+ const claimed = /* @__PURE__ */ new Set();
81
+ walk(program, (n) => {
82
+ if ((n.type === "PropertyDefinition" || n.type === "ClassProperty") && n.static === true) {
83
+ const v = n.value;
84
+ if (v?.type === "CallExpression" && og_member(v.callee) === "wire") {
85
+ const abs = region.offset + n.start;
86
+ const key = n.key;
87
+ const name = !n.computed && key?.type === "Identifier" ? key.name : null;
88
+ if (name !== "wire") misuse(id, src, abs, `the wire member must be named exactly \`wire\` (got \`${name ?? "<computed>"}\`)`);
89
+ const args = v.arguments;
90
+ if (!args || args.length !== 1) misuse(id, src, abs, `wire() takes exactly one argument — the codec ({ encode, decode })`);
91
+ claimed.add(v);
92
+ claimed.add(v.callee);
93
+ const a = args[0];
94
+ edits.push({
95
+ start: abs,
96
+ end: region.offset + a.start,
97
+ text: `static [${WIRE_EXPR}] = `
98
+ });
99
+ edits.push({
100
+ start: region.offset + a.end,
101
+ end: region.offset + v.end,
102
+ text: ""
103
+ });
104
+ }
105
+ return;
106
+ }
107
+ if (n.type === "CallExpression" && og_member(n.callee) === "wire" && !claimed.has(n)) misuse(id, src, region.offset + n.start, `wire() called outside a static class member`);
108
+ if (og_member(n) === "wire" && !claimed.has(n)) misuse(id, src, region.offset + n.start, `bare import.meta.og.wire used as a value`);
109
+ });
110
+ edits.sort((a, b) => a.start - b.start);
111
+ return edits;
112
+ }
113
+ /** Scanner fallback for source that doesn't parse mid-edit: rewrite only the exact legal spelling
114
+ * (`static wire = import.meta.og.wire(…)`). Uses the STRING-AWARE {@link find_og_calls} to locate
115
+ * the wire CALL — so a marker inside a string/comment/regex is never a hit (a naive regex here once
116
+ * corrupted `"static wire = import.meta.og.wire({})"` inside a string) — then confirms the call is
117
+ * the initializer of a `static wire =` member by inspecting the immediately-preceding tokens. Misuse
118
+ * isn't judged here — the next parseable state goes through the AST pass, which enforces strictness. */
119
+ function scan_edits(src, region) {
120
+ const edits = [];
121
+ const code = region.code;
122
+ for (const call of find_og_calls(code, "import.meta.og.")) {
123
+ if (call.method !== "wire") continue;
124
+ const before = code.slice(0, call.start);
125
+ const m = STATIC_WIRE_TAIL_RE.exec(before);
126
+ if (!m) continue;
127
+ const inner = call.args.trim();
128
+ if (!inner) continue;
129
+ edits.push({
130
+ start: region.offset + m.index,
131
+ end: region.offset + call.end,
132
+ text: `static [${WIRE_EXPR}] = ${inner}`
133
+ });
134
+ }
135
+ return edits;
136
+ }
137
+ /**
138
+ * Rewrite every wire mark in `src`, enforcing the strict position rules. Extension-aware:
139
+ * whole-file for JS/TS, `<script>` blocks for `.svelte`. Returns the input unchanged (same
140
+ * reference) when there is nothing to do. Throws (build-error voice, file:line) on any misuse.
141
+ * `markup_exts` is the resolved construct-host set (the plugin passes `['.svelte']`).
142
+ */
143
+ function rewrite_wire(src, id, markup_exts) {
144
+ if (!src.includes(MARKER)) return src;
145
+ const regions = og_js_regions(src, id, markup_exts);
146
+ if (!regions) return src;
147
+ const edits = [];
148
+ for (const region of regions) edits.push(...ast_edits(src, region, id) ?? scan_edits(src, region));
149
+ if (!edits.length) return src;
150
+ edits.sort((a, b) => a.start - b.start);
151
+ let out = "";
152
+ let last = 0;
153
+ for (const e of edits) {
154
+ out += src.slice(last, e.start) + e.text;
155
+ last = e.end;
156
+ }
157
+ out += src.slice(last);
158
+ return out;
159
+ }
160
+ export { WIRE_EXPR, og_member, rewrite_wire };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `source` with every opaque element stamped, or `null` when there is nothing to stamp (or the file
3
+ * does not parse — the real compile reports that). Outermost wins: nothing is stamped inside a stamped
4
+ * element (the repair never enters it anyway).
5
+ */
6
+ export declare function stamp_opaque(raw: string, filename: string): string | null;