@ohos-ports/stacksjs-stx 0.2.287-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (946) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +1042 -0
  3. package/dist/a11y.d.ts +256 -0
  4. package/dist/a11y.js +671 -0
  5. package/dist/analytics.d.ts +40 -0
  6. package/dist/analytics.js +159 -0
  7. package/dist/analyzer.d.ts +68 -0
  8. package/dist/analyzer.js +240 -0
  9. package/dist/animation.d.ts +123 -0
  10. package/dist/animation.js +688 -0
  11. package/dist/app-shell.d.ts +76 -0
  12. package/dist/app-shell.js +209 -0
  13. package/dist/app.d.ts +65 -0
  14. package/dist/app.js +79 -0
  15. package/dist/appearance-bootstrap.d.ts +54 -0
  16. package/dist/appearance-bootstrap.js +92 -0
  17. package/dist/asset-roots.d.ts +32 -0
  18. package/dist/asset-roots.js +7 -0
  19. package/dist/assets.d.ts +21 -0
  20. package/dist/assets.js +155 -0
  21. package/dist/ast.d.ts +265 -0
  22. package/dist/ast.js +630 -0
  23. package/dist/async-components.d.ts +123 -0
  24. package/dist/async-components.js +428 -0
  25. package/dist/auth.d.ts +13 -0
  26. package/dist/auth.js +12 -0
  27. package/dist/broadcasting.d.ts +77 -0
  28. package/dist/broadcasting.js +103 -0
  29. package/dist/browser-composables.d.ts +348 -0
  30. package/dist/browser-composables.js +606 -0
  31. package/dist/browser-core-imports.d.ts +12 -0
  32. package/dist/browser-core-imports.js +28 -0
  33. package/dist/build-assets.d.ts +32 -0
  34. package/dist/build-assets.js +29 -0
  35. package/dist/build-externalize-repeated.d.ts +34 -0
  36. package/dist/build-externalize-repeated.js +101 -0
  37. package/dist/build-externalize.d.ts +73 -0
  38. package/dist/build-externalize.js +80 -0
  39. package/dist/build-id.d.ts +57 -0
  40. package/dist/build-id.js +25 -0
  41. package/dist/build-message.d.ts +81 -0
  42. package/dist/build-message.js +65 -0
  43. package/dist/build-mode-detector.d.ts +26 -0
  44. package/dist/build-mode-detector.js +50 -0
  45. package/dist/build-optimizer.d.ts +101 -0
  46. package/dist/build-optimizer.js +433 -0
  47. package/dist/build-views.d.ts +56 -0
  48. package/dist/build-views.js +180 -0
  49. package/dist/build.d.ts +31 -0
  50. package/dist/build.js +34 -0
  51. package/dist/builtins/attrs.d.ts +49 -0
  52. package/dist/builtins/attrs.js +39 -0
  53. package/dist/builtins/drawer.d.ts +24 -0
  54. package/dist/builtins/drawer.js +37 -0
  55. package/dist/builtins/escape.d.ts +12 -0
  56. package/dist/builtins/escape.js +3 -0
  57. package/dist/builtins/icon.d.ts +45 -0
  58. package/dist/builtins/icon.js +100 -0
  59. package/dist/builtins/image-delivery.d.ts +16 -0
  60. package/dist/builtins/image-delivery.js +115 -0
  61. package/dist/builtins/image-placeholder.d.ts +78 -0
  62. package/dist/builtins/image-placeholder.js +137 -0
  63. package/dist/builtins/index.d.ts +26 -0
  64. package/dist/builtins/index.js +34 -0
  65. package/dist/builtins/modal.d.ts +26 -0
  66. package/dist/builtins/modal.js +38 -0
  67. package/dist/builtins/safe-image.d.ts +44 -0
  68. package/dist/builtins/safe-image.js +45 -0
  69. package/dist/builtins/stx-image.d.ts +29 -0
  70. package/dist/builtins/stx-image.js +222 -0
  71. package/dist/builtins/stx-link.d.ts +11 -0
  72. package/dist/builtins/stx-link.js +35 -0
  73. package/dist/builtins/stx-loading-indicator.d.ts +13 -0
  74. package/dist/builtins/stx-loading-indicator.js +35 -0
  75. package/dist/builtins/suspense.d.ts +30 -0
  76. package/dist/builtins/suspense.js +24 -0
  77. package/dist/builtins/toast.d.ts +19 -0
  78. package/dist/builtins/toast.js +42 -0
  79. package/dist/builtins/tooltip.d.ts +18 -0
  80. package/dist/builtins/tooltip.js +106 -0
  81. package/dist/builtins/transition-group.d.ts +27 -0
  82. package/dist/builtins/transition-group.js +22 -0
  83. package/dist/bun-shim.js +496 -0
  84. package/dist/bundle-analyzer/collector.d.ts +66 -0
  85. package/dist/bundle-analyzer/collector.js +233 -0
  86. package/dist/bundle-analyzer/index.d.ts +98 -0
  87. package/dist/bundle-analyzer/index.js +82 -0
  88. package/dist/bundle-analyzer/report.d.ts +39 -0
  89. package/dist/bundle-analyzer/report.js +318 -0
  90. package/dist/bundle-analyzer/treemap.d.ts +19 -0
  91. package/dist/bundle-analyzer/treemap.js +594 -0
  92. package/dist/bundle-analyzer.js +499 -0
  93. package/dist/caching.d.ts +69 -0
  94. package/dist/caching.js +135 -0
  95. package/dist/chunk-0y46fbkx.js +3 -0
  96. package/dist/chunk-122tyfre.js +2 -0
  97. package/dist/chunk-19nfvxfw.js +43 -0
  98. package/dist/chunk-1kah92n2.js +3 -0
  99. package/dist/chunk-1kms3b9d.js +2 -0
  100. package/dist/chunk-1q4y74mh.js +1194 -0
  101. package/dist/chunk-248e84r1.js +4 -0
  102. package/dist/chunk-24ps8kft.js +2 -0
  103. package/dist/chunk-2et5hxfv.js +2 -0
  104. package/dist/chunk-2r1rd8f0.js +2 -0
  105. package/dist/chunk-2tk1zkrz.js +2 -0
  106. package/dist/chunk-38ejahd9.js +3 -0
  107. package/dist/chunk-3zv4wz87.js +2 -0
  108. package/dist/chunk-4122k1bh.js +2 -0
  109. package/dist/chunk-45az9zht.js +2 -0
  110. package/dist/chunk-4qr85f07.js +2 -0
  111. package/dist/chunk-4ww3znrr.js +15 -0
  112. package/dist/chunk-54st8g2j.js +397 -0
  113. package/dist/chunk-58f0mthg.js +3 -0
  114. package/dist/chunk-5a19dhx5.js +2 -0
  115. package/dist/chunk-5kk8gsj2.js +3 -0
  116. package/dist/chunk-5w1e3yxs.js +499 -0
  117. package/dist/chunk-6gdycmxr.js +2 -0
  118. package/dist/chunk-6hmnaza7.js +4473 -0
  119. package/dist/chunk-71t0yan0.js +5 -0
  120. package/dist/chunk-74cv4ta1.js +3 -0
  121. package/dist/chunk-74v15e8z.js +2 -0
  122. package/dist/chunk-7b329e5v.js +3 -0
  123. package/dist/chunk-7q9mwh4v.js +84 -0
  124. package/dist/chunk-866y9d8b.js +8169 -0
  125. package/dist/chunk-8fwerspy.js +2 -0
  126. package/dist/chunk-8mjdpr94.js +147 -0
  127. package/dist/chunk-92mj1t26.js +60 -0
  128. package/dist/chunk-9b22663r.js +2 -0
  129. package/dist/chunk-9hjdgm4d.js +2 -0
  130. package/dist/chunk-9n0gvfrg.js +4 -0
  131. package/dist/chunk-9wr7zcad.js +18 -0
  132. package/dist/chunk-9y0g8kzt.js +358 -0
  133. package/dist/chunk-a0nfbmeh.js +3 -0
  134. package/dist/chunk-acn1b56m.js +1280 -0
  135. package/dist/chunk-awkq3xfx.js +2 -0
  136. package/dist/chunk-b6ej2fdf.js +1814 -0
  137. package/dist/chunk-b8rrnqry.js +2 -0
  138. package/dist/chunk-bfqfs07m.js +3022 -0
  139. package/dist/chunk-bs6kapy7.js +2 -0
  140. package/dist/chunk-btav940g.js +2 -0
  141. package/dist/chunk-bz820epz.js +3 -0
  142. package/dist/chunk-ccspd3mc.js +2 -0
  143. package/dist/chunk-csbgwaa5.js +2 -0
  144. package/dist/chunk-d8t4sjsp.js +2 -0
  145. package/dist/chunk-dap191q2.js +2 -0
  146. package/dist/chunk-de7fye10.js +4 -0
  147. package/dist/chunk-dgrt76d2.js +2 -0
  148. package/dist/chunk-dhh5q7qt.js +3 -0
  149. package/dist/chunk-dsffsqnt.js +2 -0
  150. package/dist/chunk-dtq7y5ym.js +2 -0
  151. package/dist/chunk-fed3xsp9.js +3 -0
  152. package/dist/chunk-ferav3bw.js +19 -0
  153. package/dist/chunk-fvhm8psm.js +3 -0
  154. package/dist/chunk-g4vpzv6b.js +2 -0
  155. package/dist/chunk-g9csmj0s.js +2 -0
  156. package/dist/chunk-gtcrpmz1.js +2 -0
  157. package/dist/chunk-h4xh8cms.js +4 -0
  158. package/dist/chunk-h8yqsz9m.js +2 -0
  159. package/dist/chunk-hcq5dw7a.js +2 -0
  160. package/dist/chunk-hm0xha6c.js +12 -0
  161. package/dist/chunk-hpybjwwf.js +8 -0
  162. package/dist/chunk-jegt35zh.js +2 -0
  163. package/dist/chunk-jr3jp3ev.js +8 -0
  164. package/dist/chunk-k56rjjc0.js +24 -0
  165. package/dist/chunk-kdh37tp8.js +194 -0
  166. package/dist/chunk-kxzb4et3.js +29 -0
  167. package/dist/chunk-mf4n3x1j.js +14 -0
  168. package/dist/chunk-mkd9kjgb.js +3 -0
  169. package/dist/chunk-mxfh1nxg.js +2 -0
  170. package/dist/chunk-n3ggrhb3.js +3 -0
  171. package/dist/chunk-nkb3scg6.js +8 -0
  172. package/dist/chunk-nnd4wq8j.js +231 -0
  173. package/dist/chunk-nsp1cw38.js +11 -0
  174. package/dist/chunk-nx5qkm8k.js +30 -0
  175. package/dist/chunk-p3242nck.js +2 -0
  176. package/dist/chunk-p98kfh94.js +2 -0
  177. package/dist/chunk-pkaabd8h.js +3 -0
  178. package/dist/chunk-pzm13sdc.js +3 -0
  179. package/dist/chunk-q4p5k2p3.js +2 -0
  180. package/dist/chunk-q9n5swx7.js +3 -0
  181. package/dist/chunk-qc1f74ek.js +3 -0
  182. package/dist/chunk-qpyjak7z.js +2 -0
  183. package/dist/chunk-qr82je1m.js +22 -0
  184. package/dist/chunk-qy73j6m4.js +288 -0
  185. package/dist/chunk-qzkhpsam.js +505 -0
  186. package/dist/chunk-r3ayvdz3.js +2 -0
  187. package/dist/chunk-r7r66978.js +2 -0
  188. package/dist/chunk-rbb7dvja.js +30 -0
  189. package/dist/chunk-refwkt87.js +71 -0
  190. package/dist/chunk-rj4kajww.js +2 -0
  191. package/dist/chunk-rp4rjjmf.js +2 -0
  192. package/dist/chunk-se0p17c2.js +898 -0
  193. package/dist/chunk-sj9pmene.js +2 -0
  194. package/dist/chunk-sscwkffs.js +2 -0
  195. package/dist/chunk-svpqxn2c.js +2 -0
  196. package/dist/chunk-t6nseeb9.js +351 -0
  197. package/dist/chunk-t8y1ggdy.js +2 -0
  198. package/dist/chunk-tndhnk9e.js +2 -0
  199. package/dist/chunk-v5e1gxwm.js +3 -0
  200. package/dist/chunk-vqxmxgaj.js +4 -0
  201. package/dist/chunk-vrrax298.js +2 -0
  202. package/dist/chunk-w3ycm4na.js +3 -0
  203. package/dist/chunk-wcm80anz.js +321 -0
  204. package/dist/chunk-wrzwgkbx.js +22 -0
  205. package/dist/chunk-x650vjcp.js +302 -0
  206. package/dist/chunk-xgnc1wy6.js +116 -0
  207. package/dist/chunk-xpp135ad.js +11 -0
  208. package/dist/chunk-xttsqmkm.js +216 -0
  209. package/dist/chunk-y11cxbxd.js +3757 -0
  210. package/dist/chunk-y7m2dpd3.js +341 -0
  211. package/dist/chunk-y98jsjqq.js +2 -0
  212. package/dist/chunk-ya386h70.js +2 -0
  213. package/dist/chunk-ydrz60kr.js +2 -0
  214. package/dist/chunk-ypmqf7tm.js +4 -0
  215. package/dist/chunk-z4jhj5e5.js +28 -0
  216. package/dist/chunk-zg75gjns.js +2 -0
  217. package/dist/chunk-zqqx1qaj.js +2 -0
  218. package/dist/cli-flags.d.ts +34 -0
  219. package/dist/cli-flags.js +20 -0
  220. package/dist/cli.js +174 -0
  221. package/dist/client/directive.d.ts +17 -0
  222. package/dist/client/directive.js +14 -0
  223. package/dist/client/index.d.ts +7 -0
  224. package/dist/client/index.js +2 -0
  225. package/dist/client-helpers.d.ts +317 -0
  226. package/dist/client-helpers.js +312 -0
  227. package/dist/client-script-bundler.d.ts +103 -0
  228. package/dist/client-script-bundler.js +390 -0
  229. package/dist/client-script.d.ts +215 -0
  230. package/dist/client-script.js +865 -0
  231. package/dist/client.d.ts +21 -0
  232. package/dist/client.js +73 -0
  233. package/dist/codemod.d.ts +33 -0
  234. package/dist/codemod.js +244 -0
  235. package/dist/color-mode-boot.d.ts +92 -0
  236. package/dist/color-mode-boot.js +72 -0
  237. package/dist/component-client-factories.d.ts +33 -0
  238. package/dist/component-client-factories.js +77 -0
  239. package/dist/component-hmr.d.ts +107 -0
  240. package/dist/component-hmr.js +585 -0
  241. package/dist/component-library.d.ts +38 -0
  242. package/dist/component-library.js +994 -0
  243. package/dist/component-processing.d.ts +198 -0
  244. package/dist/component-processing.js +677 -0
  245. package/dist/component-registry.d.ts +127 -0
  246. package/dist/component-registry.js +90 -0
  247. package/dist/component-renderer.d.ts +52 -0
  248. package/dist/component-renderer.js +790 -0
  249. package/dist/components/StxImage.stx +12 -0
  250. package/dist/components/StxLink.stx +18 -0
  251. package/dist/components.d.ts +28 -0
  252. package/dist/components.js +213 -0
  253. package/dist/composable-loader.d.ts +62 -0
  254. package/dist/composable-loader.js +190 -0
  255. package/dist/composables/index.d.ts +417 -0
  256. package/dist/composables/index.js +222 -0
  257. package/dist/composables/use-battery.d.ts +46 -0
  258. package/dist/composables/use-battery.js +101 -0
  259. package/dist/composables/use-broadcast-channel.d.ts +59 -0
  260. package/dist/composables/use-broadcast-channel.js +80 -0
  261. package/dist/composables/use-channel.d.ts +67 -0
  262. package/dist/composables/use-channel.js +124 -0
  263. package/dist/composables/use-clipboard.d.ts +30 -0
  264. package/dist/composables/use-clipboard.js +90 -0
  265. package/dist/composables/use-color-mode.d.ts +67 -0
  266. package/dist/composables/use-color-mode.js +152 -0
  267. package/dist/composables/use-cookie.d.ts +59 -0
  268. package/dist/composables/use-cookie.js +86 -0
  269. package/dist/composables/use-device-orientation.d.ts +116 -0
  270. package/dist/composables/use-device-orientation.js +181 -0
  271. package/dist/composables/use-event-listener.d.ts +35 -0
  272. package/dist/composables/use-event-listener.js +27 -0
  273. package/dist/composables/use-event-source.d.ts +90 -0
  274. package/dist/composables/use-event-source.js +166 -0
  275. package/dist/composables/use-eye-dropper.d.ts +117 -0
  276. package/dist/composables/use-eye-dropper.js +142 -0
  277. package/dist/composables/use-fetch.d.ts +59 -0
  278. package/dist/composables/use-fetch.js +273 -0
  279. package/dist/composables/use-form.d.ts +91 -0
  280. package/dist/composables/use-form.js +112 -0
  281. package/dist/composables/use-fullscreen.d.ts +47 -0
  282. package/dist/composables/use-fullscreen.js +110 -0
  283. package/dist/composables/use-geolocation.d.ts +62 -0
  284. package/dist/composables/use-geolocation.js +101 -0
  285. package/dist/composables/use-idle.d.ts +102 -0
  286. package/dist/composables/use-idle.js +182 -0
  287. package/dist/composables/use-intersection-observer.d.ts +83 -0
  288. package/dist/composables/use-intersection-observer.js +168 -0
  289. package/dist/composables/use-keyboard.d.ts +100 -0
  290. package/dist/composables/use-keyboard.js +224 -0
  291. package/dist/composables/use-media-query.d.ts +56 -0
  292. package/dist/composables/use-media-query.js +62 -0
  293. package/dist/composables/use-meta.d.ts +35 -0
  294. package/dist/composables/use-meta.js +48 -0
  295. package/dist/composables/use-mouse.d.ts +65 -0
  296. package/dist/composables/use-mouse.js +286 -0
  297. package/dist/composables/use-mutation-observer.d.ts +101 -0
  298. package/dist/composables/use-mutation-observer.js +129 -0
  299. package/dist/composables/use-network.d.ts +40 -0
  300. package/dist/composables/use-network.js +85 -0
  301. package/dist/composables/use-notification.d.ts +98 -0
  302. package/dist/composables/use-notification.js +94 -0
  303. package/dist/composables/use-permissions.d.ts +119 -0
  304. package/dist/composables/use-permissions.js +132 -0
  305. package/dist/composables/use-query.d.ts +48 -0
  306. package/dist/composables/use-query.js +0 -0
  307. package/dist/composables/use-resize-observer.d.ts +60 -0
  308. package/dist/composables/use-resize-observer.js +157 -0
  309. package/dist/composables/use-router.d.ts +80 -0
  310. package/dist/composables/use-router.js +105 -0
  311. package/dist/composables/use-scroll-lock.d.ts +13 -0
  312. package/dist/composables/use-scroll-lock.js +55 -0
  313. package/dist/composables/use-share.d.ts +74 -0
  314. package/dist/composables/use-share.js +104 -0
  315. package/dist/composables/use-speech.d.ts +117 -0
  316. package/dist/composables/use-speech.js +294 -0
  317. package/dist/composables/use-storage.d.ts +69 -0
  318. package/dist/composables/use-storage.js +196 -0
  319. package/dist/composables/use-text-selection.d.ts +121 -0
  320. package/dist/composables/use-text-selection.js +205 -0
  321. package/dist/composables/use-timer.d.ts +92 -0
  322. package/dist/composables/use-timer.js +193 -0
  323. package/dist/composables/use-utilities.d.ts +103 -0
  324. package/dist/composables/use-utilities.js +176 -0
  325. package/dist/composables/use-wake-lock.d.ts +85 -0
  326. package/dist/composables/use-wake-lock.js +122 -0
  327. package/dist/composables/use-websocket.d.ts +70 -0
  328. package/dist/composables/use-websocket.js +165 -0
  329. package/dist/composables/use-window.d.ts +84 -0
  330. package/dist/composables/use-window.js +163 -0
  331. package/dist/composables.d.ts +287 -0
  332. package/dist/composables.js +562 -0
  333. package/dist/composition-api.d.ts +197 -0
  334. package/dist/composition-api.js +199 -0
  335. package/dist/compression.d.ts +30 -0
  336. package/dist/compression.js +107 -0
  337. package/dist/computed.d.ts +138 -0
  338. package/dist/computed.js +382 -0
  339. package/dist/conditionals.d.ts +48 -0
  340. package/dist/conditionals.js +626 -0
  341. package/dist/config.d.ts +77 -0
  342. package/dist/config.js +828 -0
  343. package/dist/cookie-serialize.d.ts +40 -0
  344. package/dist/cookie-serialize.js +18 -0
  345. package/dist/craft-bridge.d.ts +525 -0
  346. package/dist/craft-bridge.js +511 -0
  347. package/dist/craft-compiler.d.ts +245 -0
  348. package/dist/craft-compiler.js +810 -0
  349. package/dist/craft-components.d.ts +739 -0
  350. package/dist/craft-components.js +1074 -0
  351. package/dist/craft-entry.d.ts +6 -0
  352. package/dist/craft-entry.js +9 -0
  353. package/dist/craft-ssr.d.ts +147 -0
  354. package/dist/craft-ssr.js +559 -0
  355. package/dist/craft.js +9 -0
  356. package/dist/csp.d.ts +295 -0
  357. package/dist/csp.js +220 -0
  358. package/dist/csrf.d.ts +38 -0
  359. package/dist/csrf.js +38 -0
  360. package/dist/custom-directives.d.ts +5 -0
  361. package/dist/custom-directives.js +136 -0
  362. package/dist/database.d.ts +391 -0
  363. package/dist/database.js +5 -0
  364. package/dist/defer.d.ts +28 -0
  365. package/dist/defer.js +156 -0
  366. package/dist/deploy/config-generators.d.ts +75 -0
  367. package/dist/deploy/config-generators.js +214 -0
  368. package/dist/deploy/index.d.ts +88 -0
  369. package/dist/deploy/index.js +203 -0
  370. package/dist/deploy/netlify.d.ts +109 -0
  371. package/dist/deploy/netlify.js +167 -0
  372. package/dist/desktop.d.ts +16 -0
  373. package/dist/desktop.js +1 -0
  374. package/dist/dev-server/index.d.ts +22 -0
  375. package/dist/dev-server/index.js +7 -0
  376. package/dist/dev-server/keyboard-shortcuts.d.ts +34 -0
  377. package/dist/dev-server/keyboard-shortcuts.js +81 -0
  378. package/dist/dev-server/native-window.d.ts +59 -0
  379. package/dist/dev-server/native-window.js +91 -0
  380. package/dist/dev-server/port-utils.d.ts +27 -0
  381. package/dist/dev-server/port-utils.js +40 -0
  382. package/dist/dev-server/serve-app.d.ts +15 -0
  383. package/dist/dev-server/serve-app.js +727 -0
  384. package/dist/dev-server/serve-file.d.ts +3 -0
  385. package/dist/dev-server/serve-file.js +443 -0
  386. package/dist/dev-server/serve-markdown.d.ts +3 -0
  387. package/dist/dev-server/serve-markdown.js +284 -0
  388. package/dist/dev-server/serve-multi.d.ts +5 -0
  389. package/dist/dev-server/serve-multi.js +596 -0
  390. package/dist/dev-server/terminal-colors.d.ts +56 -0
  391. package/dist/dev-server/terminal-colors.js +45 -0
  392. package/dist/dev-server/theme-selector.d.ts +32 -0
  393. package/dist/dev-server/theme-selector.js +111 -0
  394. package/dist/dev-server/ts-css.d.ts +108 -0
  395. package/dist/dev-server/ts-css.js +438 -0
  396. package/dist/dev-server/types.d.ts +99 -0
  397. package/dist/dev-server/types.js +43 -0
  398. package/dist/dev-server.d.ts +6 -0
  399. package/dist/dev-server.js +4 -0
  400. package/dist/devtools.d.ts +182 -0
  401. package/dist/devtools.js +593 -0
  402. package/dist/directive-api.d.ts +154 -0
  403. package/dist/directive-api.js +355 -0
  404. package/dist/docs.d.ts +56 -0
  405. package/dist/docs.js +567 -0
  406. package/dist/doctor.d.ts +29 -0
  407. package/dist/doctor.js +123 -0
  408. package/dist/document-shell.d.ts +218 -0
  409. package/dist/document-shell.js +338 -0
  410. package/dist/dynamic-components.d.ts +23 -0
  411. package/dist/dynamic-components.js +197 -0
  412. package/dist/edge-runtime.d.ts +193 -0
  413. package/dist/edge-runtime.js +525 -0
  414. package/dist/env.d.ts +3 -0
  415. package/dist/env.js +9 -0
  416. package/dist/error-boundaries.d.ts +78 -0
  417. package/dist/error-boundaries.js +281 -0
  418. package/dist/error-handling.d.ts +14 -0
  419. package/dist/error-handling.js +1 -0
  420. package/dist/errors/codes.d.ts +92 -0
  421. package/dist/errors/codes.js +97 -0
  422. package/dist/errors/formatter.d.ts +84 -0
  423. package/dist/errors/formatter.js +196 -0
  424. package/dist/errors/index.d.ts +12 -0
  425. package/dist/errors/index.js +44 -0
  426. package/dist/errors/logger.d.ts +135 -0
  427. package/dist/errors/logger.js +250 -0
  428. package/dist/errors/sanitizer.d.ts +73 -0
  429. package/dist/errors/sanitizer.js +181 -0
  430. package/dist/errors/types.d.ts +92 -0
  431. package/dist/errors/types.js +86 -0
  432. package/dist/events.d.ts +145 -0
  433. package/dist/events.js +396 -0
  434. package/dist/expressions.d.ts +180 -0
  435. package/dist/expressions.js +719 -0
  436. package/dist/find-body-tag.d.ts +50 -0
  437. package/dist/find-body-tag.js +57 -0
  438. package/dist/formatter.d.ts +19 -0
  439. package/dist/formatter.js +265 -0
  440. package/dist/forms-validation.d.ts +189 -0
  441. package/dist/forms-validation.js +421 -0
  442. package/dist/forms.d.ts +224 -0
  443. package/dist/forms.js +729 -0
  444. package/dist/fragment-container.d.ts +57 -0
  445. package/dist/fragment-container.js +123 -0
  446. package/dist/framework-composables.d.ts +73 -0
  447. package/dist/framework-composables.js +126 -0
  448. package/dist/head-injection.d.ts +61 -0
  449. package/dist/head-injection.js +28 -0
  450. package/dist/head.d.ts +282 -0
  451. package/dist/head.js +231 -0
  452. package/dist/heatmap.d.ts +206 -0
  453. package/dist/heatmap.js +566 -0
  454. package/dist/hot-reload.d.ts +87 -0
  455. package/dist/hot-reload.js +373 -0
  456. package/dist/html-masking.d.ts +125 -0
  457. package/dist/html-masking.js +196 -0
  458. package/dist/hydration-runtime.d.ts +44 -0
  459. package/dist/hydration-runtime.js +195 -0
  460. package/dist/hydration.d.ts +135 -0
  461. package/dist/hydration.js +654 -0
  462. package/dist/i18n.d.ts +342 -0
  463. package/dist/i18n.js +678 -0
  464. package/dist/image-optimization/auto-sibling.d.ts +42 -0
  465. package/dist/image-optimization/auto-sibling.js +88 -0
  466. package/dist/image-optimization/build-plugin.d.ts +54 -0
  467. package/dist/image-optimization/build-plugin.js +241 -0
  468. package/dist/image-optimization/component.d.ts +46 -0
  469. package/dist/image-optimization/component.js +244 -0
  470. package/dist/image-optimization/directive.d.ts +30 -0
  471. package/dist/image-optimization/directive.js +203 -0
  472. package/dist/image-optimization/index.d.ts +156 -0
  473. package/dist/image-optimization/index.js +54 -0
  474. package/dist/image-optimization/processor.d.ts +140 -0
  475. package/dist/image-optimization/processor.js +262 -0
  476. package/dist/image-optimization/serve.d.ts +54 -0
  477. package/dist/image-optimization/serve.js +102 -0
  478. package/dist/import-rebase.d.ts +16 -0
  479. package/dist/import-rebase.js +16 -0
  480. package/dist/imported-signals.d.ts +43 -0
  481. package/dist/imported-signals.js +35 -0
  482. package/dist/includes.d.ts +171 -0
  483. package/dist/includes.js +764 -0
  484. package/dist/index.d.ts +365 -0
  485. package/dist/index.js +202 -0
  486. package/dist/init.d.ts +39 -0
  487. package/dist/init.js +505 -0
  488. package/dist/inline-assets.d.ts +28 -0
  489. package/dist/inline-assets.js +82 -0
  490. package/dist/interactive.d.ts +14 -0
  491. package/dist/interactive.js +383 -0
  492. package/dist/internal-markdown.d.ts +22 -0
  493. package/dist/internal-markdown.js +141 -0
  494. package/dist/island-chunking.d.ts +48 -0
  495. package/dist/island-chunking.js +52 -0
  496. package/dist/isolated-build.d.ts +12 -0
  497. package/dist/isolated-build.js +18 -0
  498. package/dist/js-ts.d.ts +10 -0
  499. package/dist/js-ts.js +60 -0
  500. package/dist/jsx-runtime.d.ts +92 -0
  501. package/dist/jsx-runtime.js +289 -0
  502. package/dist/keep-alive.d.ts +108 -0
  503. package/dist/keep-alive.js +421 -0
  504. package/dist/layout-types.d.ts +45 -0
  505. package/dist/layout-types.js +56 -0
  506. package/dist/lazy-loader.d.ts +90 -0
  507. package/dist/lazy-loader.js +245 -0
  508. package/dist/lazy-module.d.ts +11 -0
  509. package/dist/lazy-module.js +18 -0
  510. package/dist/loading-indicator.d.ts +50 -0
  511. package/dist/loading-indicator.js +322 -0
  512. package/dist/loops.d.ts +91 -0
  513. package/dist/loops.js +690 -0
  514. package/dist/manifest.d.ts +41 -0
  515. package/dist/manifest.js +31 -0
  516. package/dist/markdown-view.d.ts +25 -0
  517. package/dist/markdown-view.js +39 -0
  518. package/dist/markdown.d.ts +10 -0
  519. package/dist/markdown.js +68 -0
  520. package/dist/media/client/blur-up.d.ts +66 -0
  521. package/dist/media/client/blur-up.js +217 -0
  522. package/dist/media/client/index.d.ts +93 -0
  523. package/dist/media/client/index.js +53 -0
  524. package/dist/media/client/lazy-load.d.ts +74 -0
  525. package/dist/media/client/lazy-load.js +283 -0
  526. package/dist/media/client/upload-handler.d.ts +80 -0
  527. package/dist/media/client/upload-handler.js +354 -0
  528. package/dist/media/image/component.d.ts +60 -0
  529. package/dist/media/image/component.js +574 -0
  530. package/dist/media/image/directive.d.ts +23 -0
  531. package/dist/media/image/directive.js +160 -0
  532. package/dist/media/image/editing.d.ts +212 -0
  533. package/dist/media/image/editing.js +193 -0
  534. package/dist/media/image/index.d.ts +142 -0
  535. package/dist/media/image/index.js +80 -0
  536. package/dist/media/image/placeholder.d.ts +89 -0
  537. package/dist/media/image/placeholder.js +188 -0
  538. package/dist/media/image/processor/cache.d.ts +53 -0
  539. package/dist/media/image/processor/cache.js +51 -0
  540. package/dist/media/image/processor/index.d.ts +11 -0
  541. package/dist/media/image/processor/index.js +3 -0
  542. package/dist/media/image/processor/optimizer.d.ts +24 -0
  543. package/dist/media/image/processor/optimizer.js +202 -0
  544. package/dist/media/image/processor/responsive.d.ts +28 -0
  545. package/dist/media/image/processor/responsive.js +162 -0
  546. package/dist/media/image/srcset.d.ts +157 -0
  547. package/dist/media/image/srcset.js +194 -0
  548. package/dist/media/index.d.ts +331 -0
  549. package/dist/media/index.js +198 -0
  550. package/dist/media/manager/embed.d.ts +25 -0
  551. package/dist/media/manager/embed.js +253 -0
  552. package/dist/media/protected/component.d.ts +33 -0
  553. package/dist/media/protected/component.js +235 -0
  554. package/dist/media/protected/index.d.ts +47 -0
  555. package/dist/media/protected/index.js +20 -0
  556. package/dist/media/protected/signature.d.ts +72 -0
  557. package/dist/media/protected/signature.js +205 -0
  558. package/dist/media/shared/cache.d.ts +76 -0
  559. package/dist/media/shared/cache.js +132 -0
  560. package/dist/media/shared/hash.d.ts +31 -0
  561. package/dist/media/shared/hash.js +35 -0
  562. package/dist/media/shared/index.d.ts +7 -0
  563. package/dist/media/shared/index.js +2 -0
  564. package/dist/media/types.d.ts +1477 -0
  565. package/dist/media/types.js +0 -0
  566. package/dist/media/upload/component.d.ts +9 -0
  567. package/dist/media/upload/component.js +320 -0
  568. package/dist/media/upload/index.d.ts +8 -0
  569. package/dist/media/upload/index.js +1 -0
  570. package/dist/media/video/directive.d.ts +23 -0
  571. package/dist/media/video/directive.js +142 -0
  572. package/dist/media/video/index.d.ts +76 -0
  573. package/dist/media/video/index.js +583 -0
  574. package/dist/media/video/processor/cache.d.ts +55 -0
  575. package/dist/media/video/processor/cache.js +52 -0
  576. package/dist/media/video/processor/index.d.ts +12 -0
  577. package/dist/media/video/processor/index.js +4 -0
  578. package/dist/media/video/processor/streaming.d.ts +26 -0
  579. package/dist/media/video/processor/streaming.js +197 -0
  580. package/dist/media/video/processor/thumbnail.d.ts +35 -0
  581. package/dist/media/video/processor/thumbnail.js +134 -0
  582. package/dist/media/video/processor/transcoder.d.ts +19 -0
  583. package/dist/media/video/processor/transcoder.js +283 -0
  584. package/dist/menubar.d.ts +65 -0
  585. package/dist/menubar.js +99 -0
  586. package/dist/method-spoofing.d.ts +20 -0
  587. package/dist/method-spoofing.js +17 -0
  588. package/dist/middleware.d.ts +112 -0
  589. package/dist/middleware.js +40 -0
  590. package/dist/misc-directives.d.ts +55 -0
  591. package/dist/misc-directives.js +328 -0
  592. package/dist/native-build.d.ts +88 -0
  593. package/dist/native-build.js +575 -0
  594. package/dist/owned-routes.d.ts +42 -0
  595. package/dist/owned-routes.js +26 -0
  596. package/dist/page-action.d.ts +73 -0
  597. package/dist/page-action.js +91 -0
  598. package/dist/page-meta.d.ts +38 -0
  599. package/dist/page-meta.js +16 -0
  600. package/dist/page-response.d.ts +120 -0
  601. package/dist/page-response.js +117 -0
  602. package/dist/parser/directive-parser.d.ts +119 -0
  603. package/dist/parser/directive-parser.js +249 -0
  604. package/dist/parser/expression-parser.d.ts +58 -0
  605. package/dist/parser/expression-parser.js +358 -0
  606. package/dist/parser/index.d.ts +13 -0
  607. package/dist/parser/index.js +23 -0
  608. package/dist/parser/tokenizer.d.ts +77 -0
  609. package/dist/parser/tokenizer.js +534 -0
  610. package/dist/partial-hydration.d.ts +123 -0
  611. package/dist/partial-hydration.js +427 -0
  612. package/dist/performance-utils.d.ts +318 -0
  613. package/dist/performance-utils.js +466 -0
  614. package/dist/placeholder.d.ts +54 -0
  615. package/dist/placeholder.js +35 -0
  616. package/dist/plugin-system.d.ts +301 -0
  617. package/dist/plugin-system.js +214 -0
  618. package/dist/plugin.d.ts +3 -0
  619. package/dist/plugin.js +174 -0
  620. package/dist/precompiler.d.ts +43 -0
  621. package/dist/precompiler.js +670 -0
  622. package/dist/process.d.ts +16 -0
  623. package/dist/process.js +879 -0
  624. package/dist/production-build.d.ts +163 -0
  625. package/dist/production-build.js +596 -0
  626. package/dist/production-builder.d.ts +42 -0
  627. package/dist/production-builder.js +146 -0
  628. package/dist/production-server.d.ts +19 -0
  629. package/dist/production-server.js +208 -0
  630. package/dist/prop-sentinels.d.ts +31 -0
  631. package/dist/prop-sentinels.js +7 -0
  632. package/dist/props.d.ts +216 -0
  633. package/dist/props.js +224 -0
  634. package/dist/public-env.d.ts +29 -0
  635. package/dist/public-env.js +19 -0
  636. package/dist/pwa/audit.d.ts +42 -0
  637. package/dist/pwa/audit.js +255 -0
  638. package/dist/pwa/directives.d.ts +38 -0
  639. package/dist/pwa/directives.js +332 -0
  640. package/dist/pwa/icons.d.ts +42 -0
  641. package/dist/pwa/icons.js +109 -0
  642. package/dist/pwa/index.d.ts +104 -0
  643. package/dist/pwa/index.js +47 -0
  644. package/dist/pwa/inject.d.ts +32 -0
  645. package/dist/pwa/inject.js +102 -0
  646. package/dist/pwa/manifest.d.ts +104 -0
  647. package/dist/pwa/manifest.js +186 -0
  648. package/dist/pwa/offline.d.ts +8 -0
  649. package/dist/pwa/offline.js +259 -0
  650. package/dist/pwa/precache.d.ts +35 -0
  651. package/dist/pwa/precache.js +116 -0
  652. package/dist/pwa/service-worker.d.ts +33 -0
  653. package/dist/pwa/service-worker.js +860 -0
  654. package/dist/pwa/workbox-strategies.d.ts +100 -0
  655. package/dist/pwa/workbox-strategies.js +167 -0
  656. package/dist/pwa/workbox.d.ts +51 -0
  657. package/dist/pwa/workbox.js +382 -0
  658. package/dist/pwa.d.ts +52 -0
  659. package/dist/pwa.js +236 -0
  660. package/dist/reactive-bindings.d.ts +47 -0
  661. package/dist/reactive-bindings.js +268 -0
  662. package/dist/reactive-tracking.d.ts +81 -0
  663. package/dist/reactive-tracking.js +49 -0
  664. package/dist/reactive.d.ts +117 -0
  665. package/dist/reactive.js +593 -0
  666. package/dist/reactivity.d.ts +206 -0
  667. package/dist/reactivity.js +574 -0
  668. package/dist/release.d.ts +1 -0
  669. package/dist/release.js +1 -0
  670. package/dist/render-memo.d.ts +40 -0
  671. package/dist/render-memo.js +33 -0
  672. package/dist/render.d.ts +54 -0
  673. package/dist/render.js +153 -0
  674. package/dist/resolve-stx-targets.d.ts +49 -0
  675. package/dist/resolve-stx-targets.js +38 -0
  676. package/dist/route-middleware.d.ts +2 -0
  677. package/dist/route-middleware.js +17 -0
  678. package/dist/route-types.d.ts +134 -0
  679. package/dist/route-types.js +24 -0
  680. package/dist/router.d.ts +9 -0
  681. package/dist/router.js +9 -0
  682. package/dist/routes.d.ts +6 -0
  683. package/dist/routes.js +14 -0
  684. package/dist/runtime-globals.d.ts +236 -0
  685. package/dist/runtime-globals.js +230 -0
  686. package/dist/runtime-injection.d.ts +113 -0
  687. package/dist/runtime-injection.js +156 -0
  688. package/dist/runtime.d.ts +140 -0
  689. package/dist/runtime.js +94 -0
  690. package/dist/safe-evaluator.d.ts +165 -0
  691. package/dist/safe-evaluator.js +461 -0
  692. package/dist/scaffolding.d.ts +113 -0
  693. package/dist/scaffolding.js +897 -0
  694. package/dist/screenshot.d.ts +22 -0
  695. package/dist/screenshot.js +100 -0
  696. package/dist/script-classifier.d.ts +41 -0
  697. package/dist/script-classifier.js +51 -0
  698. package/dist/script-emit.d.ts +50 -0
  699. package/dist/script-emit.js +11 -0
  700. package/dist/script-json.d.ts +36 -0
  701. package/dist/script-json.js +6 -0
  702. package/dist/script-validation.d.ts +26 -0
  703. package/dist/script-validation.js +179 -0
  704. package/dist/seo.d.ts +225 -0
  705. package/dist/seo.js +486 -0
  706. package/dist/serve.d.ts +44 -0
  707. package/dist/serve.js +233 -0
  708. package/dist/server-bindings.d.ts +39 -0
  709. package/dist/server-bindings.js +171 -0
  710. package/dist/server-components.d.ts +138 -0
  711. package/dist/server-components.js +427 -0
  712. package/dist/sfc-template.d.ts +17 -0
  713. package/dist/sfc-template.js +32 -0
  714. package/dist/signal-processing.d.ts +222 -0
  715. package/dist/signal-processing.js +1081 -0
  716. package/dist/signals-api.d.ts +459 -0
  717. package/dist/signals-api.js +172 -0
  718. package/dist/signals.d.ts +41 -0
  719. package/dist/signals.js +8233 -0
  720. package/dist/site-builder/build.d.ts +18 -0
  721. package/dist/site-builder/build.js +252 -0
  722. package/dist/site-builder/i18n.d.ts +104 -0
  723. package/dist/site-builder/i18n.js +150 -0
  724. package/dist/site-builder/index.d.ts +27 -0
  725. package/dist/site-builder/index.js +16 -0
  726. package/dist/site-builder/robots.d.ts +2 -0
  727. package/dist/site-builder/robots.js +26 -0
  728. package/dist/site-builder/router.d.ts +10 -0
  729. package/dist/site-builder/router.js +27 -0
  730. package/dist/site-builder/seo.d.ts +8 -0
  731. package/dist/site-builder/seo.js +67 -0
  732. package/dist/site-builder/sitemap.d.ts +10 -0
  733. package/dist/site-builder/sitemap.js +26 -0
  734. package/dist/site-builder/theme.d.ts +12 -0
  735. package/dist/site-builder/theme.js +38 -0
  736. package/dist/site-builder/types.d.ts +74 -0
  737. package/dist/site-builder/types.js +0 -0
  738. package/dist/site-url.d.ts +46 -0
  739. package/dist/site-url.js +70 -0
  740. package/dist/slots.d.ts +129 -0
  741. package/dist/slots.js +286 -0
  742. package/dist/source-maps.d.ts +98 -0
  743. package/dist/source-maps.js +350 -0
  744. package/dist/source-signature.d.ts +45 -0
  745. package/dist/source-signature.js +20 -0
  746. package/dist/spa-nav.d.ts +49 -0
  747. package/dist/spa-nav.js +12 -0
  748. package/dist/spa-shell.d.ts +21 -0
  749. package/dist/spa-shell.js +34 -0
  750. package/dist/ssg.d.ts +357 -0
  751. package/dist/ssg.js +94 -0
  752. package/dist/ssr.d.ts +116 -0
  753. package/dist/ssr.js +339 -0
  754. package/dist/state-dir.d.ts +36 -0
  755. package/dist/state-dir.js +22 -0
  756. package/dist/state-management.d.ts +299 -0
  757. package/dist/state-management.js +519 -0
  758. package/dist/store-imports.d.ts +47 -0
  759. package/dist/store-imports.js +16 -0
  760. package/dist/store-loader.d.ts +15 -0
  761. package/dist/store-loader.js +111 -0
  762. package/dist/stores-client.d.ts +70 -0
  763. package/dist/stores-client.js +132 -0
  764. package/dist/story/addons.d.ts +123 -0
  765. package/dist/story/addons.js +261 -0
  766. package/dist/story/analytics.d.ts +163 -0
  767. package/dist/story/analytics.js +235 -0
  768. package/dist/story/auto-stories.d.ts +38 -0
  769. package/dist/story/auto-stories.js +158 -0
  770. package/dist/story/bookmarks.d.ts +102 -0
  771. package/dist/story/bookmarks.js +277 -0
  772. package/dist/story/bun-test.d.ts +45 -0
  773. package/dist/story/bun-test.js +102 -0
  774. package/dist/story/cli.d.ts +132 -0
  775. package/dist/story/cli.js +155 -0
  776. package/dist/story/collect/analyzer.d.ts +33 -0
  777. package/dist/story/collect/analyzer.js +305 -0
  778. package/dist/story/collect/index.d.ts +31 -0
  779. package/dist/story/collect/index.js +27 -0
  780. package/dist/story/collect/parser.d.ts +17 -0
  781. package/dist/story/collect/parser.js +129 -0
  782. package/dist/story/collect/scanner.d.ts +17 -0
  783. package/dist/story/collect/scanner.js +101 -0
  784. package/dist/story/collect/tree.d.ts +24 -0
  785. package/dist/story/collect/tree.js +110 -0
  786. package/dist/story/commands/build.d.ts +19 -0
  787. package/dist/story/commands/build.js +172 -0
  788. package/dist/story/commands/dev.d.ts +23 -0
  789. package/dist/story/commands/dev.js +78 -0
  790. package/dist/story/commands/index.d.ts +9 -0
  791. package/dist/story/commands/index.js +3 -0
  792. package/dist/story/commands/preview.d.ts +21 -0
  793. package/dist/story/commands/preview.js +56 -0
  794. package/dist/story/compiled-output.d.ts +27 -0
  795. package/dist/story/compiled-output.js +151 -0
  796. package/dist/story/composition.d.ts +47 -0
  797. package/dist/story/composition.js +261 -0
  798. package/dist/story/config-watcher.d.ts +33 -0
  799. package/dist/story/config-watcher.js +67 -0
  800. package/dist/story/config.d.ts +29 -0
  801. package/dist/story/config.js +64 -0
  802. package/dist/story/context.d.ts +27 -0
  803. package/dist/story/context.js +27 -0
  804. package/dist/story/controls/index.d.ts +54 -0
  805. package/dist/story/controls/index.js +320 -0
  806. package/dist/story/desktop-preview.d.ts +34 -0
  807. package/dist/story/desktop-preview.js +105 -0
  808. package/dist/story/docs-generator.d.ts +30 -0
  809. package/dist/story/docs-generator.js +187 -0
  810. package/dist/story/errors.d.ts +47 -0
  811. package/dist/story/errors.js +239 -0
  812. package/dist/story/figma-export.d.ts +169 -0
  813. package/dist/story/figma-export.js +224 -0
  814. package/dist/story/generator.d.ts +21 -0
  815. package/dist/story/generator.js +165 -0
  816. package/dist/story/hmr.d.ts +62 -0
  817. package/dist/story/hmr.js +131 -0
  818. package/dist/story/hot-swap.d.ts +46 -0
  819. package/dist/story/hot-swap.js +207 -0
  820. package/dist/story/index.d.ts +99 -0
  821. package/dist/story/index.js +49 -0
  822. package/dist/story/interactions.d.ts +53 -0
  823. package/dist/story/interactions.js +225 -0
  824. package/dist/story/keyboard-shortcuts.d.ts +39 -0
  825. package/dist/story/keyboard-shortcuts.js +345 -0
  826. package/dist/story/output.d.ts +115 -0
  827. package/dist/story/output.js +153 -0
  828. package/dist/story/performance.d.ts +129 -0
  829. package/dist/story/performance.js +252 -0
  830. package/dist/story/presets.d.ts +123 -0
  831. package/dist/story/presets.js +289 -0
  832. package/dist/story/props-validation.d.ts +45 -0
  833. package/dist/story/props-validation.js +215 -0
  834. package/dist/story/renderer.d.ts +69 -0
  835. package/dist/story/renderer.js +209 -0
  836. package/dist/story/search-index.d.ts +47 -0
  837. package/dist/story/search-index.js +106 -0
  838. package/dist/story/search.d.ts +56 -0
  839. package/dist/story/search.js +140 -0
  840. package/dist/story/server.d.ts +31 -0
  841. package/dist/story/server.js +965 -0
  842. package/dist/story/setup.d.ts +56 -0
  843. package/dist/story/setup.js +78 -0
  844. package/dist/story/snapshots.d.ts +65 -0
  845. package/dist/story/snapshots.js +171 -0
  846. package/dist/story/testing.d.ts +83 -0
  847. package/dist/story/testing.js +164 -0
  848. package/dist/story/theme.d.ts +68 -0
  849. package/dist/story/theme.js +170 -0
  850. package/dist/story/ts-css.d.ts +29 -0
  851. package/dist/story/ts-css.js +189 -0
  852. package/dist/story/types.d.ts +342 -0
  853. package/dist/story/types.js +0 -0
  854. package/dist/story/ui/code-panel.d.ts +43 -0
  855. package/dist/story/ui/code-panel.js +175 -0
  856. package/dist/story/ui/controls-panel.d.ts +25 -0
  857. package/dist/story/ui/controls-panel.js +168 -0
  858. package/dist/story/ui/index.d.ts +8 -0
  859. package/dist/story/ui/index.js +4 -0
  860. package/dist/story/ui/navigation.d.ts +55 -0
  861. package/dist/story/ui/navigation.js +250 -0
  862. package/dist/story/ui/preview.d.ts +46 -0
  863. package/dist/story/ui/preview.js +251 -0
  864. package/dist/story/visual-testing.d.ts +45 -0
  865. package/dist/story/visual-testing.js +248 -0
  866. package/dist/streaming.d.ts +238 -0
  867. package/dist/streaming.js +537 -0
  868. package/dist/strict-lint.d.ts +52 -0
  869. package/dist/strict-lint.js +269 -0
  870. package/dist/strip-literals.d.ts +40 -0
  871. package/dist/strip-literals.js +149 -0
  872. package/dist/stx-virtual-ts.d.ts +358 -0
  873. package/dist/stx-virtual-ts.js +670 -0
  874. package/dist/stx.d.ts +924 -0
  875. package/dist/style-scoping.d.ts +42 -0
  876. package/dist/style-scoping.js +82 -0
  877. package/dist/suspense.d.ts +98 -0
  878. package/dist/suspense.js +398 -0
  879. package/dist/teleport.d.ts +31 -0
  880. package/dist/teleport.js +109 -0
  881. package/dist/template-compiler.d.ts +33 -0
  882. package/dist/template-compiler.js +68 -0
  883. package/dist/template-hydrator.d.ts +28 -0
  884. package/dist/template-hydrator.js +95 -0
  885. package/dist/template-tag-balance.d.ts +32 -0
  886. package/dist/template-tag-balance.js +93 -0
  887. package/dist/testing.d.ts +330 -0
  888. package/dist/testing.js +588 -0
  889. package/dist/theme-tokens.d.ts +88 -0
  890. package/dist/theme-tokens.js +71 -0
  891. package/dist/transitions.d.ts +99 -0
  892. package/dist/transitions.js +443 -0
  893. package/dist/ts-css-config.d.ts +71 -0
  894. package/dist/ts-css-config.js +44 -0
  895. package/dist/type-checker.d.ts +85 -0
  896. package/dist/type-checker.js +581 -0
  897. package/dist/typecheck.d.ts +70 -0
  898. package/dist/typecheck.js +365 -0
  899. package/dist/types/component-types.d.ts +248 -0
  900. package/dist/types/component-types.js +0 -0
  901. package/dist/types/config-types.d.ts +938 -0
  902. package/dist/types/config-types.js +0 -0
  903. package/dist/types/context-types.d.ts +122 -0
  904. package/dist/types/context-types.js +0 -0
  905. package/dist/types/csp-types.d.ts +83 -0
  906. package/dist/types/csp-types.js +0 -0
  907. package/dist/types/directive-types.d.ts +315 -0
  908. package/dist/types/directive-types.js +3 -0
  909. package/dist/types/index.d.ts +20 -0
  910. package/dist/types/index.js +1 -0
  911. package/dist/types/pwa-types.d.ts +338 -0
  912. package/dist/types/pwa-types.js +0 -0
  913. package/dist/types.d.ts +27 -0
  914. package/dist/types.js +1 -0
  915. package/dist/typescript-templates.d.ts +156 -0
  916. package/dist/typescript-templates.js +386 -0
  917. package/dist/unresolved-identifiers.d.ts +52 -0
  918. package/dist/unresolved-identifiers.js +148 -0
  919. package/dist/utils.d.ts +112 -0
  920. package/dist/utils.js +1170 -0
  921. package/dist/validator.d.ts +80 -0
  922. package/dist/validator.js +171 -0
  923. package/dist/variable-extractor.d.ts +142 -0
  924. package/dist/variable-extractor.js +1306 -0
  925. package/dist/view-composers.d.ts +171 -0
  926. package/dist/view-composers.js +29 -0
  927. package/dist/virtual-scrolling.d.ts +127 -0
  928. package/dist/virtual-scrolling.js +454 -0
  929. package/dist/visual-editor.d.ts +185 -0
  930. package/dist/visual-editor.js +735 -0
  931. package/dist/visual-testing.d.ts +135 -0
  932. package/dist/visual-testing.js +126 -0
  933. package/dist/vue-template.d.ts +39 -0
  934. package/dist/vue-template.js +476 -0
  935. package/dist/web-components/css-scoping.d.ts +64 -0
  936. package/dist/web-components/css-scoping.js +210 -0
  937. package/dist/web-components/index.d.ts +29 -0
  938. package/dist/web-components/index.js +13 -0
  939. package/dist/web-components/reactive-generator.d.ts +72 -0
  940. package/dist/web-components/reactive-generator.js +484 -0
  941. package/dist/web-components.d.ts +253 -0
  942. package/dist/web-components.js +1466 -0
  943. package/dist/x-element.d.ts +42 -0
  944. package/dist/x-element.js +301 -0
  945. package/package.json +107 -0
  946. package/stx.d.ts +924 -0
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Hydrate all islands with the given handlers
3
+ */
4
+ export declare function hydrateIslands(handlers: IslandHandlers): void;
5
+ /**
6
+ * Add preload links for island scripts
7
+ */
8
+ export declare function preloadIslandHandlers(handlers: IslandHandlers): void;
9
+ /**
10
+ * Client-side hydration functionality for stx templates
11
+ * This file is meant to be used in the browser only
12
+ */
13
+ /**
14
+ * Island handler registry
15
+ */
16
+ declare type IslandHandlers = Record<string, () => Promise<any>>;
17
+ /**
18
+ * Island hydration function
19
+ */
20
+ // eslint-disable-next-line pickier/no-unused-vars
21
+ declare type IslandHydrationFn = (element: any, props: any) => void | Promise<void>;
package/dist/client.js ADDED
@@ -0,0 +1,73 @@
1
+ const isBrowser = typeof window < "u" && typeof document < "u";
2
+ async function hydrateIsland(element, name, handler) {
3
+ if (!isBrowser)
4
+ return;
5
+ try {
6
+ const id = element.getAttribute("data-island-id"), propsScript = document.querySelector(`script[data-island-props="${id}"]`), props = propsScript ? JSON.parse(propsScript.textContent || "{}") : {}, module = await handler(), hydrateFn = module.default || module.hydrate;
7
+ if (typeof hydrateFn !== "function") {
8
+ console.error(`Island handler for "${name}" does not export a valid hydration function`);
9
+ return;
10
+ }
11
+ await hydrateFn(element, props);
12
+ element.setAttribute("data-hydrated", "true");
13
+ } catch (error) {
14
+ console.error(`Failed to hydrate island "${name}":`, error);
15
+ }
16
+ }
17
+ export function hydrateIslands(handlers) {
18
+ if (!isBrowser)
19
+ return;
20
+ const islands = document.querySelectorAll("[data-island]"), lazyIslands = [];
21
+ islands.forEach((island) => {
22
+ const name = island.getAttribute("data-island"), priority = island.getAttribute("data-priority") || "lazy";
23
+ if (!name || !handlers[name] || island.getAttribute("data-hydrated") === "true")
24
+ return;
25
+ if (priority === "eager")
26
+ hydrateIsland(island, name, handlers[name]);
27
+ else
28
+ lazyIslands.push([island, name]);
29
+ });
30
+ if (lazyIslands.length > 0 && "IntersectionObserver" in window) {
31
+ const observer = new IntersectionObserver((entries) => {
32
+ entries.forEach((entry) => {
33
+ if (entry.isIntersecting) {
34
+ const element = entry.target, name = element.getAttribute("data-island");
35
+ if (name && handlers[name] && element.getAttribute("data-hydrated") !== "true") {
36
+ hydrateIsland(element, name, handlers[name]);
37
+ observer.unobserve(element);
38
+ }
39
+ }
40
+ });
41
+ }, {
42
+ rootMargin: "200px",
43
+ threshold: 0
44
+ });
45
+ lazyIslands.forEach(([element]) => {
46
+ observer.observe(element);
47
+ });
48
+ } else
49
+ setTimeout(() => {
50
+ lazyIslands.forEach(([element, name]) => {
51
+ if (element.getAttribute("data-hydrated") !== "true")
52
+ hydrateIsland(element, name, handlers[name]);
53
+ });
54
+ }, 1000);
55
+ }
56
+ export function preloadIslandHandlers(handlers) {
57
+ if (!isBrowser)
58
+ return;
59
+ Object.entries(handlers).forEach(([name, getHandler]) => {
60
+ try {
61
+ const moduleMatch = getHandler.toString().match(/import\(['"](.+)['"]\)/);
62
+ if (moduleMatch && moduleMatch[1]) {
63
+ const link = document.createElement("link");
64
+ link.rel = "modulepreload";
65
+ link.href = moduleMatch[1];
66
+ link.setAttribute("data-island-module", name);
67
+ document.head.appendChild(link);
68
+ }
69
+ } catch (error) {
70
+ console.warn(`Failed to preload island handler for "${name}":`, error);
71
+ }
72
+ });
73
+ }
@@ -0,0 +1,33 @@
1
+ /** Run the codemods over one file's source. */
2
+ export declare function codemodSource(source: string, options?: CodemodOptions): CodemodFileResult;
3
+ /** Human-readable report. */
4
+ export declare function formatCodemodFindings(findings: CodemodFinding[], wrote: boolean): string;
5
+ export declare interface CodemodFinding {
6
+ file: string
7
+ line: number
8
+ rule: CodemodRule
9
+ applied: boolean
10
+ reason?: string
11
+ snippet: string
12
+ }
13
+ export declare interface CodemodFileResult {
14
+ code: string
15
+ findings: CodemodFinding[]
16
+ }
17
+ export declare interface CodemodOptions {
18
+ rules?: CodemodRule[]
19
+ file?: string
20
+ }
21
+ export type CodemodRule = | 'confirm'
22
+ | 'alert'
23
+ | 'tooltip'
24
+ | 'route-params'
25
+ | 'search-params'
26
+ | 'navigate'
27
+ | 'fetch'
28
+ | 'polling'
29
+ | 'debounce'
30
+ | 'click-outside'
31
+ | 'focus'
32
+ | 'clipboard'
33
+ | 'watch';
@@ -0,0 +1,244 @@
1
+ import { stripCommentsAndLiterals } from "./strip-literals.js";
2
+ function contextAfter(source, index, length = 240) {
3
+ return source.slice(index, index + length);
4
+ }
5
+ const REPORT_RULES = [
6
+ {
7
+ rule: "route-params",
8
+ pattern: /\blocation\s*\.\s*pathname\s*\.\s*(?:match|split)\s*\(/g,
9
+ primitive: "useRoute() / useRouteParams() / useRouteParam(name)",
10
+ why: "parsing the URL by hand re-implements the router and does not update on SPA navigation"
11
+ },
12
+ {
13
+ rule: "alert",
14
+ pattern: /(?<![.#\w$])(?:(?:window|globalThis)\s*\.\s*)?alert\s*\(/g,
15
+ primitive: "stxAlert(message)",
16
+ why: "themed, focus-trapped and non-blocking \u2014 but `await` it if the code after it " + "depended on the native dialog blocking until dismissal",
17
+ reject: (source) => /\b(?:async\s+)?function\s+alert\s*\(/.test(source) || /\b(?:const|let|var)\s+alert\s*=/.test(source)
18
+ },
19
+ {
20
+ rule: "search-params",
21
+ pattern: /new\s+URLSearchParams\s*\(/g,
22
+ primitive: "useSearchParams()",
23
+ why: "reactive, and writes back through the router instead of history.replaceState",
24
+ reject: (source, index) => {
25
+ const open = source.indexOf("(", index);
26
+ if (open === -1)
27
+ return !0;
28
+ const arg = source.slice(open + 1, source.indexOf(")", open) + 1);
29
+ return !/\b(?:location|search|href|url)\b/i.test(arg);
30
+ }
31
+ },
32
+ {
33
+ rule: "navigate",
34
+ pattern: /\blocation\s*\.\s*(?:assign|replace)\s*\(|\blocation\s*\.\s*href\s*=/g,
35
+ primitive: "navigate(path) / goBack()",
36
+ why: "a full document load throws away every store and the scroll position; navigate() is an SPA transition",
37
+ reject: (source, index) => /^[^\n]*?(?:['"`]\s*)?(?:mailto:|tel:|sms:|https?:\/\/|\/\/)/.test(contextAfter(source, index, 160))
38
+ },
39
+ {
40
+ rule: "fetch",
41
+ pattern: /new\s+AbortController\s*\(/g,
42
+ primitive: "useFetch(url) / useAsyncData(key, fn)",
43
+ why: "cancellation, loading and error state are already wired; hand-rolling them is where the races live"
44
+ },
45
+ {
46
+ rule: "polling",
47
+ pattern: /setInterval\s*\(/g,
48
+ primitive: "useEventSource() / useSSE() / useWebSocket() / useChannel()",
49
+ why: "polling burns requests and lags; the push primitives are delivered",
50
+ reject: (source, index) => !/\bfetch\s*\(|\$fetch\b|useFetch\b|\.get\s*\(|axios\b/.test(contextAfter(source, index))
51
+ },
52
+ {
53
+ rule: "debounce",
54
+ pattern: /\bclearTimeout\s*\(/g,
55
+ primitive: "useDebounce(fn, ms) / useThrottle(fn, ms)",
56
+ why: "a hand-held timer handle per call site is the usual source of stale-result bugs",
57
+ requires: (source) => /setTimeout\s*\(/.test(source)
58
+ },
59
+ {
60
+ rule: "click-outside",
61
+ pattern: /document\s*\.\s*addEventListener\s*\(\s*['"](?:click|mousedown|pointerdown)['"]/g,
62
+ primitive: "useClickOutside(ref, fn)",
63
+ why: "the document-level listener plus the blur race is exactly what this composable exists to remove"
64
+ },
65
+ {
66
+ rule: "focus",
67
+ pattern: /\.\s*(?:getElementById|querySelector)\s*\([^)]*\)\s*(?:\?\.)?\s*\.?focus\s*\(/g,
68
+ primitive: "useFocus(ref) with x-ref",
69
+ why: "a query by id breaks under nested scopes and SPA navigation; a ref does not"
70
+ },
71
+ {
72
+ rule: "clipboard",
73
+ pattern: /navigator\s*\.\s*(?:clipboard|share)\b/g,
74
+ primitive: "useClipboard() / useShare()",
75
+ why: "permission state, the copied flag and the unsupported-browser fallback are already handled"
76
+ },
77
+ {
78
+ rule: "watch",
79
+ pattern: /\beffect\s*\(\s*\(\s*\)\s*=>\s*\{[^}]*\bvoid\s+\w+\s*\(\s*\)/g,
80
+ primitive: "watch(source, cb) / watchMultiple([...], cb)",
81
+ why: "the `void a(); void b()` dance is a manual dependency list; watch takes one directly"
82
+ }
83
+ ], DEFAULT_RULES = ["confirm", "tooltip", ...REPORT_RULES.map((r) => r.rule)];
84
+ function lineOf(source, index) {
85
+ let line = 1;
86
+ for (let i = 0;i < index; i++)
87
+ if (source[i] === `
88
+ `)
89
+ line++;
90
+ return line;
91
+ }
92
+ function snippetAt(source, index) {
93
+ const start = source.lastIndexOf(`
94
+ `, index) + 1, end = source.indexOf(`
95
+ `, index);
96
+ return source.slice(start, end === -1 ? source.length : end).trim().slice(0, 120);
97
+ }
98
+ function isInsideAsyncFunction(source, index) {
99
+ const before = source.slice(0, index), fnKeyword = before.lastIndexOf("function"), arrow = before.lastIndexOf("=>"), boundary = Math.max(fnKeyword, arrow);
100
+ if (boundary === -1)
101
+ return !1;
102
+ const window = source.slice(Math.max(0, boundary - 120), boundary);
103
+ return /\basync\b[^;{}]*$/.test(window);
104
+ }
105
+ function declaresOwnConfirm(source) {
106
+ return /\b(?:async\s+)?function\s+confirm\s*\(/.test(source) || /\b(?:const|let|var)\s+confirm\s*=/.test(source) || /\bimport\s*\{[^}]*\bconfirm\b[^}]*\}/.test(source);
107
+ }
108
+ function applyConfirmRule(source, file, findings) {
109
+ if (declaresOwnConfirm(source))
110
+ return source;
111
+ const pattern = /(^|[^\w$.])(?:(?:window|globalThis)\s*\.\s*)?confirm\s*\(/g, searchable = searchableSource(source);
112
+ let out = "", last = 0, match;
113
+ while ((match = pattern.exec(searchable)) !== null) {
114
+ const callAt = match.index + match[1].length, line = lineOf(source, callAt), snippet = snippetAt(source, callAt);
115
+ if (/stxConfirm\s*\($/.test(source.slice(0, callAt + 8)))
116
+ continue;
117
+ const safe = isInsideAsyncFunction(source, callAt);
118
+ findings.push({
119
+ file,
120
+ line,
121
+ rule: "confirm",
122
+ applied: safe,
123
+ snippet,
124
+ reason: safe ? void 0 : "stxConfirm() returns a Promise and native confirm() is synchronous, so this needs `await` inside an async function. Rewriting it here would make the condition always true."
125
+ });
126
+ if (safe) {
127
+ out += source.slice(last, callAt) + "await stxConfirm(";
128
+ last = callAt + (match[0].length - match[1].length);
129
+ }
130
+ }
131
+ return out + source.slice(last);
132
+ }
133
+ function applyTooltipRule(source, file, findings) {
134
+ const pattern = /(<[a-z][\w-]*\b[^>]*?)\stitle=(["'])(.*?)\2/gis, searchable = markupSearchable(source);
135
+ let out = "", last = 0, match;
136
+ while ((match = pattern.exec(searchable)) !== null) {
137
+ const [whole, openTag, quote, value] = match, line = lineOf(source, match.index), snippet = snippetAt(source, match.index), tagName = openTag.match(/^<([A-Za-z][\w-]*)/)?.[1] ?? "";
138
+ if (/^[A-Z]/.test(tagName)) {
139
+ findings.push({
140
+ file,
141
+ line,
142
+ rule: "tooltip",
143
+ applied: !1,
144
+ snippet,
145
+ reason: `\`title\` on <${tagName}> is a component prop, not an HTML attribute \u2014 ` + "adding x-tooltip here would put a tooltip on a component and may duplicate text it already renders."
146
+ });
147
+ continue;
148
+ }
149
+ if (/\bx-tooltip[=\s]/.test(openTag) || value.trim() === "") {
150
+ findings.push({
151
+ file,
152
+ line,
153
+ rule: "tooltip",
154
+ applied: !1,
155
+ snippet,
156
+ reason: /\bx-tooltip[=\s]/.test(openTag) ? "already has x-tooltip" : "empty title"
157
+ });
158
+ continue;
159
+ }
160
+ findings.push({ file, line, rule: "tooltip", applied: !0, snippet });
161
+ out += source.slice(last, match.index) + `${openTag} x-tooltip=${quote}${value}${quote} title=${quote}${value}${quote}`;
162
+ last = match.index + whole.length;
163
+ }
164
+ return out + source.slice(last);
165
+ }
166
+ function markupSearchable(source) {
167
+ return source.replace(/<!--[\s\S]*?-->/g, (match) => match.replace(/[^\n]/g, " ")).replace(/\{\{--[\s\S]*?--\}\}/g, (match) => match.replace(/[^\n]/g, " "));
168
+ }
169
+ function blankJsComments(source) {
170
+ const blank = (match) => match.replace(/[^\n]/g, " ");
171
+ return source.replace(/\/\*[\s\S]*?\*\//g, blank).replace(/\/\/[^\n]*/g, blank);
172
+ }
173
+ function searchableSource(source, keepStrings = !1) {
174
+ const markupOnly = markupSearchable(source);
175
+ return (keepStrings ? blankJsComments(markupOnly) : stripCommentsAndLiterals(markupOnly)).replace(/<script\b([^>]*)>([\s\S]*?)<\/script\s*>/gi, (match, attrs) => /\bclient\b/i.test(attrs) ? match : match.replace(/[^\n]/g, " "));
176
+ }
177
+ function applyReportRules(source, file, rules, findings) {
178
+ const codeView = searchableSource(source), stringView = searchableSource(source, !0);
179
+ for (const entry of REPORT_RULES) {
180
+ if (!rules.includes(entry.rule))
181
+ continue;
182
+ if (entry.requires && !entry.requires(source))
183
+ continue;
184
+ entry.pattern.lastIndex = 0;
185
+ let match;
186
+ const searchable = /['"]/.test(entry.pattern.source) ? stringView : codeView;
187
+ entry.pattern.lastIndex = 0;
188
+ while ((match = entry.pattern.exec(searchable)) !== null) {
189
+ if (entry.reject?.(source, match.index))
190
+ continue;
191
+ findings.push({
192
+ file,
193
+ line: lineOf(source, match.index),
194
+ rule: entry.rule,
195
+ applied: !1,
196
+ snippet: snippetAt(source, match.index),
197
+ reason: `${entry.primitive} \u2014 ${entry.why}`
198
+ });
199
+ }
200
+ }
201
+ }
202
+ export function codemodSource(source, options = {}) {
203
+ const rules = options.rules ?? DEFAULT_RULES, file = options.file ?? "<source>", findings = [];
204
+ applyReportRules(source, file, rules, findings);
205
+ let code = source;
206
+ if (rules.includes("confirm"))
207
+ code = applyConfirmRule(code, file, findings);
208
+ if (rules.includes("tooltip"))
209
+ code = applyTooltipRule(code, file, findings);
210
+ findings.sort((a, b) => a.line - b.line);
211
+ const seen = new Set, unique = findings.filter((finding) => {
212
+ const key = `${finding.rule}:${finding.line}`;
213
+ if (seen.has(key))
214
+ return !1;
215
+ seen.add(key);
216
+ return !0;
217
+ });
218
+ return { code, findings: unique };
219
+ }
220
+ const REWRITABLE = new Set(["confirm", "tooltip"]);
221
+ export function formatCodemodFindings(findings, wrote) {
222
+ if (findings.length === 0)
223
+ return "No hand-rolled equivalents found.";
224
+ const applied = findings.filter((f) => f.applied), declined = findings.filter((f) => !f.applied && REWRITABLE.has(f.rule)), adopt = findings.filter((f) => !f.applied && !REWRITABLE.has(f.rule)), lines = [];
225
+ if (applied.length > 0) {
226
+ lines.push(wrote ? `Rewrote ${applied.length} site(s):` : `Would rewrite ${applied.length} site(s) (pass --fix):`);
227
+ for (const f of applied)
228
+ lines.push(` ${f.file}:${f.line} [${f.rule}] ${f.snippet}`);
229
+ }
230
+ if (declined.length > 0) {
231
+ lines.push("", `Needs a human \u2014 ${declined.length} site(s):`);
232
+ for (const f of declined)
233
+ lines.push(` ${f.file}:${f.line} [${f.rule}] ${f.snippet}
234
+ ${f.reason}`);
235
+ }
236
+ if (adopt.length > 0) {
237
+ lines.push("", `An stx primitive already covers this \u2014 ${adopt.length} site(s):`);
238
+ for (const f of adopt)
239
+ lines.push(` ${f.file}:${f.line} [${f.rule}] ${f.snippet}
240
+ use ${f.reason}`);
241
+ }
242
+ return lines.join(`
243
+ `);
244
+ }
@@ -0,0 +1,92 @@
1
+ /** Marker attribute — makes injection idempotent and findable by tests. */
2
+ export declare const COLOR_MODE_BOOT_MARKER = "data-stx-color-mode-boot";
3
+ /** The global the boot script publishes its resolved config on. */
4
+ export declare const COLOR_MODE_BOOT_GLOBAL = "__STX_COLOR_MODE__";
5
+ export type ColorModeBootMode = 'light' | 'dark' | 'auto' | 'system';
6
+ /** Spelling written to storage for "follow the system". */
7
+ export type ColorModeBootAutoValue = 'auto' | 'system';
8
+ /**
9
+ * Pre-paint options. A strict subset of `ColorModeOptions` — only the fields
10
+ * that affect what lands on the root element before paint. `disableTransitions`
11
+ * is deliberately absent: nothing has painted yet, so there is no transition to
12
+ * suppress, and forcing a reflow in the critical path would only cost time.
13
+ */
14
+ export interface ColorModeBootConfig {
15
+ /** localStorage key holding the preference. @default 'stx-color-mode' */
16
+ storageKey?: string;
17
+ /**
18
+ * Mode used when nothing valid is stored. @default 'auto'
19
+ * `'system'` is accepted as an alias for `'auto'`.
20
+ */
21
+ initialMode?: ColorModeBootMode;
22
+ /**
23
+ * Class applied to `<html>` when dark. @default 'dark'
24
+ * Pass `null` to opt out — the attribute alone then carries the mode.
25
+ */
26
+ darkClass?: string | null;
27
+ /**
28
+ * Attribute set to the resolved mode on `<html>`, e.g. `'data-theme'`.
29
+ * Applied *alongside* `darkClass`, mirroring `useColorMode` (#1788).
30
+ */
31
+ attribute?: string | null;
32
+ /**
33
+ * Spelling `useColorMode` writes back for "follow the system". Published to
34
+ * the client so the composable doesn't convert an app's existing `'system'`
35
+ * key to `'auto'`. @default whatever is stored, else 'auto'
36
+ */
37
+ autoValue?: ColorModeBootAutoValue;
38
+ }
39
+ /**
40
+ * Build the synchronous pre-paint `<script>`.
41
+ *
42
+ * Every storage access is wrapped: a sandboxed origin or disabled storage must
43
+ * degrade to the default mode, never throw. A throw here is unusually costly
44
+ * because the script sits above the application shell — an uncaught error would
45
+ * block the rest of the document.
46
+ */
47
+ export declare function generateColorModeBootScript(options?: ColorModeBootConfig): string;
48
+ /**
49
+ * Insert the boot script as the first thing in `<head>`.
50
+ *
51
+ * Placement matters twice over: the script must run before the browser paints,
52
+ * and a stylesheet `<link>` above it would block its execution (CSS blocks JS),
53
+ * delaying the very thing it exists to make early.
54
+ *
55
+ * `<meta charset>` is stepped over when it leads the head, so the encoding
56
+ * declaration keeps its place at the top of the document.
57
+ *
58
+ * Idempotent — a document that already carries the marker is returned
59
+ * unchanged, so this is safe on paths that run it more than once.
60
+ */
61
+ export declare function injectColorModeBootScript(html: string, options?: ColorModeBootConfig): string;
62
+ /**
63
+ * Re-assert the ordering of the two head tags whose position is load-bearing:
64
+ * `<meta charset>` first, then the color-mode boot script, then everything else.
65
+ *
66
+ * Run this LAST, after every other head injection. Ordering the injectors
67
+ * against each other would hold only until the next one is added; re-asserting
68
+ * the result once at the end holds regardless of what ran before.
69
+ */
70
+ export declare function normalizeCriticalHeadOrder(html: string): string;
71
+ /**
72
+ * Move an already-injected boot script back to the top of `<head>`.
73
+ *
74
+ * `injectColorModeBootScript` puts it first, but later stages of the pipeline
75
+ * then insert *ahead* of it and push it down (#1803): the signals runtime is
76
+ * relocated before the first `<script>` on the page — which is this one — and
77
+ * the store and composable bundles anchor themselves to the runtime tag. The
78
+ * boot script ended up fifth, behind all three.
79
+ *
80
+ * That is not merely a paint-timing problem. The bundles that overtook it read
81
+ * `window.__STX_COLOR_MODE__`, which this script publishes, so a `useColorMode()`
82
+ * inside a store saw `undefined` and silently fell back to the default storage
83
+ * key and a null attribute — writing the user's preference somewhere the boot
84
+ * script will never read it back, and never applying the configured attribute.
85
+ *
86
+ * Run this last, after every other head injection. Ordering the injectors
87
+ * against each other would work only until the next one is added; re-asserting
88
+ * the position once at the end holds regardless of what ran before.
89
+ *
90
+ * A no-op when the document has no boot script or it is already in place.
91
+ */
92
+ export declare function hoistColorModeBootScript(html: string): string;
@@ -0,0 +1,72 @@
1
+ import { headInsertionPoint } from "./head-injection.js";
2
+ export const COLOR_MODE_BOOT_MARKER = "data-stx-color-mode-boot", COLOR_MODE_BOOT_GLOBAL = "__STX_COLOR_MODE__";
3
+ const MODES = new Set(["light", "dark", "auto", "system"]), AUTO_VALUES = new Set(["auto", "system"]), ATTRIBUTE_PATTERN = /^[a-z][\w:-]*$/i, CLASS_PATTERN = /^[\w-]+$/;
4
+ function resolveConfig(options) {
5
+ const storageKey = options.storageKey ?? "stx-color-mode", rawInitial = options.initialMode ?? "auto", darkClass = options.darkClass === void 0 ? "dark" : options.darkClass, attribute = options.attribute ?? null, autoValue = options.autoValue ?? null;
6
+ if (typeof storageKey !== "string" || storageKey.length === 0)
7
+ throw Error("colorMode.storageKey must be a non-empty string");
8
+ if (!MODES.has(rawInitial))
9
+ throw Error(`colorMode.initialMode must be one of light, dark, auto, system \u2014 got ${JSON.stringify(rawInitial)}`);
10
+ if (darkClass !== null && (typeof darkClass !== "string" || !CLASS_PATTERN.test(darkClass)))
11
+ throw Error(`colorMode.darkClass must be a single CSS class name, or null to opt out \u2014 got ${JSON.stringify(darkClass)}`);
12
+ if (attribute !== null && (typeof attribute !== "string" || !ATTRIBUTE_PATTERN.test(attribute)))
13
+ throw Error(`colorMode.attribute must be a valid HTML attribute name \u2014 got ${JSON.stringify(attribute)}`);
14
+ if (autoValue !== null && !AUTO_VALUES.has(autoValue))
15
+ throw Error(`colorMode.autoValue must be 'auto' or 'system' \u2014 got ${JSON.stringify(autoValue)}`);
16
+ if (darkClass === null && attribute === null)
17
+ throw Error("colorMode needs at least one of darkClass or attribute \u2014 with both null nothing would mark the mode on <html>");
18
+ return { storageKey, initialMode: rawInitial === "system" ? "auto" : rawInitial, darkClass, attribute, autoValue };
19
+ }
20
+ function serializeForScript(value) {
21
+ return JSON.stringify(value).replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/&/g, "\\u0026").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
22
+ }
23
+ export function generateColorModeBootScript(options = {}) {
24
+ const config = resolveConfig(options), body = `(function(){"use strict";var c=${serializeForScript(config)};var p=c.initialMode;var a=c.autoValue;try{var v=localStorage.getItem(c.storageKey);if(v==="light"||v==="dark"){p=v}else if(v==="auto"||v==="system"){p="auto";if(!a)a=v}}catch(e){}var m=p;if(p==="auto"){try{m=matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}catch(e){m="light"}}var r=document.documentElement;if(c.attribute)r.setAttribute(c.attribute,m);if(c.darkClass){if(m==="dark")r.classList.add(c.darkClass);else r.classList.remove(c.darkClass)}try{window.${COLOR_MODE_BOOT_GLOBAL}={storageKey:c.storageKey,initialMode:c.initialMode,darkClass:c.darkClass,attribute:c.attribute,autoValue:a||"auto",preference:p,mode:m}}catch(e){}}());`;
25
+ return `<script ${COLOR_MODE_BOOT_MARKER}>${body}</script>`;
26
+ }
27
+ export function injectColorModeBootScript(html, options = {}) {
28
+ if (html.includes(COLOR_MODE_BOOT_MARKER))
29
+ return html;
30
+ const insertAt = bootInsertionPoint(html);
31
+ if (insertAt === null)
32
+ return html;
33
+ const script = generateColorModeBootScript(options);
34
+ return `${html.slice(0, insertAt)}
35
+ ${script}${html.slice(insertAt)}`;
36
+ }
37
+ const bootInsertionPoint = headInsertionPoint, BOOT_SCRIPT_TAG = new RegExp(`<script\\b[^>]*\\b${COLOR_MODE_BOOT_MARKER}\\b[^>]*>[\\s\\S]*?<\\/script>`, "i"), CHARSET_META = /<meta\b[^>]*\bcharset\b[^>]*>/gi, HEAD_CLOSE = /<\/head>/gi;
38
+ function hoistCharsetMeta(html) {
39
+ const headOpen = /<head\b[^>]*>/i.exec(html);
40
+ if (!headOpen)
41
+ return html;
42
+ const headStart = headOpen.index + headOpen[0].length;
43
+ HEAD_CLOSE.lastIndex = headStart;
44
+ const headClose = HEAD_CLOSE.exec(html), headEnd = headClose ? headClose.index : html.length;
45
+ CHARSET_META.lastIndex = headStart;
46
+ const meta = CHARSET_META.exec(html);
47
+ if (!meta || meta.index >= headEnd)
48
+ return html;
49
+ if (html.slice(headStart, meta.index).trim() === "")
50
+ return html;
51
+ const metaEnd = meta.index + meta[0].length;
52
+ return `${html.slice(0, headStart)}
53
+ ${meta[0]}${html.slice(headStart, meta.index)}${html.slice(metaEnd, headEnd)}${html.slice(headEnd)}`;
54
+ }
55
+ export function normalizeCriticalHeadOrder(html) {
56
+ return hoistColorModeBootScript(hoistCharsetMeta(html));
57
+ }
58
+ export function hoistColorModeBootScript(html) {
59
+ const tag = BOOT_SCRIPT_TAG.exec(html);
60
+ if (!tag)
61
+ return html;
62
+ const target = bootInsertionPoint(html);
63
+ if (target === null)
64
+ return html;
65
+ if (tag.index <= target || html.slice(target, tag.index).trim() === "")
66
+ return html;
67
+ const withoutTag = html.slice(0, tag.index) + html.slice(tag.index + tag[0].length), insertAt = bootInsertionPoint(withoutTag);
68
+ if (insertAt === null)
69
+ return html;
70
+ return `${withoutTag.slice(0, insertAt)}
71
+ ${tag[0]}${withoutTag.slice(insertAt)}`;
72
+ }
@@ -0,0 +1,33 @@
1
+ export declare const COMPONENT_CLIENT_FACTORIES_CONTEXT_KEY = "__stx_component_client_factories";
2
+ export declare function initializeComponentClientFactories(context: Record<string, unknown>): void;
3
+ export declare function registerComponentClientFactory(context: Record<string, unknown>, factoryBody: string): string | null;
4
+ export declare function injectComponentClientFactories(html: string, context: Record<string, unknown>): string;
5
+ /**
6
+ * The registrations a memoised component render would otherwise not make
7
+ * (stacksjs/stx#1945).
8
+ *
9
+ * `instances` decides how a factory reaches the page: at one instance
10
+ * `injectComponentClientFactories` inlines the definition over the call, and at
11
+ * more than one it emits a shared prelude instead. So the count is an input to
12
+ * the document's final bytes, not bookkeeping. A component whose output is
13
+ * served from a cache never reaches `registerComponentClientFactory`, the count
14
+ * stays at zero, and the definition is never inlined — the call survives into
15
+ * the page referring to a factory nothing ever defined, and the component does
16
+ * not hydrate. The whole page also stops being byte-identical between renders,
17
+ * which is the property #1945 exists to establish.
18
+ *
19
+ * Replaying the registrations on a cache hit keeps the count exactly what a
20
+ * full render would have produced. Bodies are replayed rather than ids because
21
+ * the id is derived from the body, so re-registering reproduces it.
22
+ */
23
+ export declare function snapshotComponentClientFactoryCounts(context: Record<string, unknown>): Map<string, number>;
24
+ /** The factories registered since `before`, with how many instances each gained. */
25
+ export declare function componentClientFactoriesRegisteredSince(context: Record<string, unknown>, before: Map<string, number>): Array<{
26
+ body: string;
27
+ count: number;
28
+ }>;
29
+ /** Re-register what a cached render registered, so the instance counts match. */
30
+ export declare function replayComponentClientFactories(context: Record<string, unknown>, registered: Array<{
31
+ body: string;
32
+ count: number;
33
+ }>): void;
@@ -0,0 +1,77 @@
1
+ import { createHash } from "node:crypto";
2
+ export const COMPONENT_CLIENT_FACTORIES_CONTEXT_KEY = "__stx_component_client_factories";
3
+ function registryFrom(context) {
4
+ const registry = context[COMPONENT_CLIENT_FACTORIES_CONTEXT_KEY];
5
+ return registry instanceof Map ? registry : null;
6
+ }
7
+ export function initializeComponentClientFactories(context) {
8
+ context[COMPONENT_CLIENT_FACTORIES_CONTEXT_KEY] = new Map;
9
+ }
10
+ export function registerComponentClientFactory(context, factoryBody) {
11
+ const registry = registryFrom(context);
12
+ if (!registry)
13
+ return null;
14
+ const id = createHash("sha256").update(factoryBody).digest("hex").slice(0, 16), existing = registry.get(id);
15
+ if (existing)
16
+ existing.instances++;
17
+ else
18
+ registry.set(id, { body: factoryBody, instances: 1 });
19
+ return id;
20
+ }
21
+ export function injectComponentClientFactories(html, context) {
22
+ const registry = registryFrom(context);
23
+ if (!registry?.size)
24
+ return html;
25
+ const inlinable = new Map;
26
+ for (const [id, factory] of registry)
27
+ if (factory.instances === 1)
28
+ inlinable.set(id, factory.body);
29
+ let output = html;
30
+ if (inlinable.size > 0) {
31
+ const alternation = [...inlinable.keys()].map((id) => JSON.stringify(id).replace(/[$()*+.?[\\\]^{|}]/g, "\\$&")).join("|"), invocation = new RegExp(`window\\.__stxComponentFactories\\[(${alternation})\\]\\(("[^"]+")\\);`, "g");
32
+ output = output.replace(invocation, (match, idLiteral, scopeId) => {
33
+ const body = inlinable.get(JSON.parse(idLiteral));
34
+ return body === void 0 ? match : `(${body})(${scopeId});`;
35
+ });
36
+ }
37
+ const repeatedFactories = [...registry].filter(([, factory]) => factory.instances > 1);
38
+ if (repeatedFactories.length === 0)
39
+ return output;
40
+ const prelude = `<script data-stx-scoped data-stx-run="always" data-stx-component-factories>
41
+ (function() {
42
+ const factories = window.__stxComponentFactories = window.__stxComponentFactories || {};
43
+ ${repeatedFactories.map(([id, factory]) => ` try { factories[${JSON.stringify(id)}] = factories[${JSON.stringify(id)}] || ${factory.body}; }
44
+ catch (e) { console.error('[stx] component factory ' + ${JSON.stringify(id)} + ' failed to register; instances of it will not hydrate.', e); }`).join(`
45
+ `)}
46
+ })();
47
+ </script>`, firstScopedScript = output.search(/<script\b(?=[^>]*\bdata-stx-scoped\b)/i);
48
+ if (firstScopedScript < 0)
49
+ return `${prelude}
50
+ ${output}`;
51
+ return `${output.slice(0, firstScopedScript)}${prelude}
52
+ ${output.slice(firstScopedScript)}`;
53
+ }
54
+ export function snapshotComponentClientFactoryCounts(context) {
55
+ const registry = registryFrom(context), counts = new Map;
56
+ if (registry)
57
+ for (const [id, factory] of registry)
58
+ counts.set(id, factory.instances);
59
+ return counts;
60
+ }
61
+ export function componentClientFactoriesRegisteredSince(context, before) {
62
+ const registry = registryFrom(context);
63
+ if (!registry)
64
+ return [];
65
+ const registered = [];
66
+ for (const [id, factory] of registry) {
67
+ const gained = factory.instances - (before.get(id) ?? 0);
68
+ if (gained > 0)
69
+ registered.push({ body: factory.body, count: gained });
70
+ }
71
+ return registered;
72
+ }
73
+ export function replayComponentClientFactories(context, registered) {
74
+ for (const { body, count } of registered)
75
+ for (let instance = 0;instance < count; instance++)
76
+ registerComponentClientFactory(context, body);
77
+ }