@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
package/dist/doctor.js ADDED
@@ -0,0 +1,123 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ function mtimeMs(p) {
4
+ try {
5
+ return fs.statSync(p).mtimeMs;
6
+ } catch {
7
+ return null;
8
+ }
9
+ }
10
+ function ago(ms, now) {
11
+ const s = Math.max(0, Math.round((now - ms) / 1000));
12
+ if (s < 60)
13
+ return `${s}s ago`;
14
+ if (s < 3600)
15
+ return `${Math.round(s / 60)}m ago`;
16
+ return `${Math.round(s / 3600)}h ago`;
17
+ }
18
+ function defaultResolve(specifier, from) {
19
+ try {
20
+ return globalThis.Bun?.resolveSync(specifier, from) ?? null;
21
+ } catch {
22
+ return null;
23
+ }
24
+ }
25
+ export function findPantryPackage(cwd, name = "stx") {
26
+ let dir = path.resolve(cwd);
27
+ for (let i = 0;i < 10; i++) {
28
+ const candidate = path.join(dir, "pantry", "@stacksjs", name);
29
+ if (fs.existsSync(candidate))
30
+ return candidate;
31
+ const parent = path.dirname(dir);
32
+ if (parent === dir)
33
+ break;
34
+ dir = parent;
35
+ }
36
+ return null;
37
+ }
38
+ export async function runDoctor(options = {}) {
39
+ const cwd = options.cwd ? path.resolve(options.cwd) : process.cwd(), resolve = options.resolve ?? defaultResolve, now = Date.now(), checks = [], stxEntry = resolve("@stacksjs/stx", cwd);
40
+ checks.push(stxEntry ? { name: "@stacksjs/stx resolves to", status: "ok", detail: stxEntry } : { name: "@stacksjs/stx resolves to", status: "info", detail: "not resolvable from here (running inside the stx repo, or not installed)" });
41
+ const pluginEntry = resolve("bun-plugin-stx", cwd);
42
+ if (pluginEntry)
43
+ checks.push({ name: "bun-plugin-stx resolves to", status: "ok", detail: pluginEntry });
44
+ const pantry = findPantryPackage(cwd, "stx");
45
+ if (!pantry)
46
+ checks.push({ name: "pantry", status: "info", detail: "no pantry/@stacksjs/stx found \u2014 standard install (nothing to rebuild)" });
47
+ else {
48
+ const srcSignals = path.join(pantry, "src/signals.ts"), distEntry = [path.join(pantry, "dist/index.js"), path.join(pantry, "dist/signals.js")].find((p) => fs.existsSync(p)) || null, srcMtime = mtimeMs(srcSignals), distMtime = distEntry ? mtimeMs(distEntry) : null;
49
+ if (srcMtime == null)
50
+ checks.push({ name: "pantry dist freshness", status: "info", detail: `found pantry at ${pantry} but no src/signals.ts to compare` });
51
+ else if (distMtime == null)
52
+ checks.push({
53
+ name: "pantry dist freshness",
54
+ status: "error",
55
+ detail: "pantry has src but no built dist \u2014 the dev server will resolve nothing (or a stale copy elsewhere)",
56
+ fix: `cd ${pantry} && bun build.ts`
57
+ });
58
+ else if (distMtime < srcMtime) {
59
+ const lagS = Math.round((srcMtime - distMtime) / 1000);
60
+ checks.push({
61
+ name: "pantry dist freshness",
62
+ status: "error",
63
+ detail: `dist (${ago(distMtime, now)}) is OLDER than src/signals.ts (${ago(srcMtime, now)}) by ${lagS}s \u2014 your edit isn't built`,
64
+ fix: `cd ${pantry} && bun build.ts`
65
+ });
66
+ } else
67
+ checks.push({ name: "pantry dist freshness", status: "ok", detail: `dist rebuilt after src (src ${ago(srcMtime, now)}, dist ${ago(distMtime, now)})` });
68
+ const nm = path.join(cwd, "node_modules/@stacksjs/stx");
69
+ let lst = null;
70
+ try {
71
+ lst = fs.lstatSync(nm);
72
+ } catch {
73
+ lst = null;
74
+ }
75
+ if (!lst)
76
+ checks.push({ name: "node_modules \u2192 pantry", status: "info", detail: "node_modules/@stacksjs/stx not present (not installed here)" });
77
+ else if (lst.isSymbolicLink()) {
78
+ let target = null;
79
+ try {
80
+ target = fs.realpathSync(nm);
81
+ } catch {}
82
+ const pantryReal = (() => {
83
+ try {
84
+ return fs.realpathSync(pantry);
85
+ } catch {
86
+ return pantry;
87
+ }
88
+ })();
89
+ checks.push(target === pantryReal ? { name: "node_modules \u2192 pantry", status: "ok", detail: "symlinked to pantry" } : { name: "node_modules \u2192 pantry", status: "warn", detail: `symlinked to ${target || "(dangling)"}, not pantry` });
90
+ } else
91
+ checks.push({
92
+ name: "node_modules \u2192 pantry",
93
+ status: "warn",
94
+ detail: "is a real directory, NOT symlinked to pantry \u2014 edits to pantry src/dist won't be resolved",
95
+ fix: "rm -rf node_modules/@stacksjs/stx && ln -s ../../pantry/@stacksjs/stx node_modules/@stacksjs/stx"
96
+ });
97
+ }
98
+ checks.push({
99
+ name: "dev runtime cache",
100
+ status: "info",
101
+ detail: "cleared automatically on source edits by the dev watcher (clearDevCaches, #1745 item C)"
102
+ });
103
+ if (options.generateRuntime)
104
+ try {
105
+ const len = options.generateRuntime().length;
106
+ checks.push(len > 1000 ? { name: "signals runtime", status: "ok", detail: `generated ${len.toLocaleString()} chars` } : { name: "signals runtime", status: "warn", detail: `generated only ${len} chars \u2014 suspiciously short` });
107
+ } catch (e) {
108
+ checks.push({ name: "signals runtime", status: "error", detail: `failed to generate: ${e.message}` });
109
+ }
110
+ return { checks, ok: !checks.some((c) => c.status === "error") };
111
+ }
112
+ export function formatDoctorReport(report) {
113
+ const icon = { ok: "\u2713", warn: "\u26A0", error: "\u2717", info: "\xB7" }, lines = ["stx runtime resolution:"];
114
+ for (const c of report.checks) {
115
+ lines.push(` ${icon[c.status]} ${c.name}: ${c.detail}`);
116
+ if (c.fix)
117
+ lines.push(` \u2192 ${c.fix}`);
118
+ }
119
+ lines.push("");
120
+ lines.push(report.ok ? "\u2713 All framework-runtime layers are aligned." : "\u2717 A runtime layer is stale \u2014 see the fixes above.");
121
+ return lines.join(`
122
+ `);
123
+ }
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Document Shell Generator
3
+ *
4
+ * Auto-generates the HTML document wrapper around page content.
5
+ * No .stx file needs to write <!DOCTYPE>, <html>, <head>, or <body>.
6
+ * The shell is configured via stx.config.ts `app.head` and enhanced
7
+ * at build/serve time with runtime scripts, CSS, and meta tags.
8
+ *
9
+ * @module document-shell
10
+ */
11
+ import type { ColorModeBootConfig } from './color-mode-boot';
12
+ import type { AppHeadConfig } from './types/config-types';
13
+ /**
14
+ * Inline x-cloak rule shipped in the SSR <head> (stacksjs/stx#1736).
15
+ *
16
+ * Must be parsed by the browser BEFORE first paint — so it goes in the head
17
+ * as static markup, not injected by the runtime script (which runs after the
18
+ * body has already painted, the window where false `:if` branches / hidden
19
+ * `:show` elements flash). The `data-stx-cloak` marker makes injection
20
+ * idempotent. The runtime's own late injection (signals.ts) is retained as a
21
+ * belt-and-suspenders for SPA-nav fragments that arrive without SSR head
22
+ * emission.
23
+ */
24
+ export declare const CLOAK_STYLE = "<style data-stx-cloak>[x-cloak]{display:none !important}</style>";
25
+ /**
26
+ * Markers recording which `<html>` attributes stx itself wrote from `htmlAttrs`
27
+ * (stacksjs/stx#1798).
28
+ *
29
+ * The router needs them to reconcile the root element across an SPA layout
30
+ * change. It cannot just diff `<html>` against the incoming document: by then
31
+ * the color-mode boot script has added its own `dark` class / `data-theme`, and
32
+ * `animation.ts` has added `data-reduced-motion`, none of which exist in the
33
+ * server response — a blind diff would strip them on every navigation and
34
+ * flash the wrong theme. These say exactly what stx put there, so the router
35
+ * can remove precisely that much and leave runtime state alone.
36
+ *
37
+ * `class` is tracked separately because it is the one attribute that gets
38
+ * *merged* into at runtime, so it has to be reconciled token-by-token rather
39
+ * than replaced wholesale.
40
+ */
41
+ export declare const HTML_ATTRS_MARKER = "data-stx-html-attrs";
42
+ export declare const HTML_CLASS_MARKER = "data-stx-html-class";
43
+ /** Emit `k="v"` pairs with every value attribute-escaped. */
44
+ /**
45
+ * The identity of a `<meta>` tag, for deduplication.
46
+ *
47
+ * Shared by both places that merge config head tags into a page, because they
48
+ * disagreed: injectConfigHeadTags deduped and generateDocumentShell just
49
+ * concatenated, so the same `app.head.meta` produced one `<meta charset>` on a
50
+ * page that owned its document and two on a page built through the shell
51
+ * (stacksjs/stx#1840). One key, one answer.
52
+ *
53
+ * Returns '' for a tag with no identifying attribute, which the callers treat
54
+ * as "cannot dedup, keep it".
55
+ */
56
+ export declare function metaDedupKey(m: Record<string, string>): string;
57
+ /**
58
+ * Build the attribute string for the shell's `<html>` open tag.
59
+ *
60
+ * `htmlAttrs.lang` wins over the `lang` option so `useHead({ htmlAttrs: { lang } })`
61
+ * is not emitted twice (two `lang=` attributes on one element is a parse error
62
+ * that browsers resolve by keeping the first — i.e. silently ignoring the
63
+ * more specific one).
64
+ *
65
+ * @param htmlAttrs - Attributes from config `app.head.htmlAttrs` / `useHead()`
66
+ * @param lang - The `lang` option, used unless `htmlAttrs.lang` overrides it
67
+ * @returns Leading-space-prefixed attribute string, e.g. ` lang="en" class="marketing"`
68
+ */
69
+ export declare function buildHtmlAttrs(htmlAttrs?: Record<string, string>, lang?: string): string;
70
+ /**
71
+ * Merge a page's `htmlAttrs` over the config's.
72
+ *
73
+ * Per-key override, except `class`, which unions: a global
74
+ * `app.head.htmlAttrs.class` (`h-full`, a font class, …) shouldn't silently
75
+ * vanish the moment one page adds a class of its own. Same rule as
76
+ * `applyHtmlAttrs`, so "class unions, everything else overrides" holds at every
77
+ * point htmlAttrs are combined.
78
+ */
79
+ export declare function mergeHtmlAttrs(base?: Record<string, string>, override?: Record<string, string>): Record<string, string>;
80
+ /**
81
+ * Merge `htmlAttrs` into a document that rendered its OWN `<html>` tag.
82
+ *
83
+ * `generateDocumentShell` only runs for pages without a shell, so a page or
84
+ * layout that writes `<html>` itself — the common case, and what SSG emits —
85
+ * would otherwise drop `useHead({ htmlAttrs })` entirely. Whether the attribute
86
+ * lands should not depend on who wrote the document element.
87
+ *
88
+ * `class` unions with what the template already put there (the template's own
89
+ * classes are never dropped); every other attribute is overwritten. Only the
90
+ * classes stx contributed are recorded in the marker, so an SPA navigation
91
+ * removes those and leaves the hand-written ones in place.
92
+ */
93
+ export declare function applyHtmlAttrs(html: string, htmlAttrs?: Record<string, string>): string;
94
+ /**
95
+ * Insert the inline x-cloak <style> before </head> if a head exists and the
96
+ * style isn't already present. Idempotent (guards on the data-stx-cloak
97
+ * marker). No-op when the output has no </head> — those paths fall back to
98
+ * the runtime's late injection.
99
+ */
100
+ export declare function injectCloakStyle(html: string): string;
101
+ /**
102
+ * The same decision as `injectCloakStyle`, without the splice
103
+ * (stacksjs/stx#1945).
104
+ *
105
+ * Returns what belongs before `</head>`, or null when nothing does -- the style
106
+ * is already present, or there is no head to put it in. A caller collecting
107
+ * several of these rebuilds the document once instead of once each; the guards
108
+ * stay here, because whether this applies is this module's business.
109
+ */
110
+ export declare function cloakStyleFragment(html: string): string | null;
111
+ /**
112
+ * Pull the page's own `<link>` / `<style>` off the front of a fragment so the
113
+ * shell can put them in `<head>` where they belong.
114
+ *
115
+ * A fragment page (no `<html>/<head>/<body>` of its own) writes its font links
116
+ * and scoped styles at the top of the file. Without this they land verbatim in
117
+ * `<body>`, which *renders* fine — browsers honour `<link>` and `<style>` in
118
+ * body — but breaks SPA navigation: the router reconciles `head style` and
119
+ * `head link[rel=stylesheet]` only, so on a container-only swap the incoming
120
+ * page's CSS is never applied and the form/page paints unstyled. It looked
121
+ * correct on reload and wrong on navigation, which is what made it hard to see.
122
+ *
123
+ * Deliberately conservative: only the leading run is hoisted (whitespace,
124
+ * comments and `<script>` blocks are stepped over, never moved), so a `<style>`
125
+ * sitting next to the markup it styles further down the page is left alone.
126
+ */
127
+ export declare function hoistLeadingHeadTags(content: string): {
128
+ body: string;
129
+ hoisted: string[];
130
+ };
131
+ /**
132
+ * Generate the full HTML document shell wrapping page content.
133
+ *
134
+ * @param content - The rendered page/layout HTML (no document wrapper)
135
+ * @param headConfig - Head configuration from stx.config.ts
136
+ * @param options - Additional options for script/style injection
137
+ * @returns Complete HTML document
138
+ */
139
+ export declare function generateDocumentShell(content: string, headConfig?: AppHeadConfig, options?: {
140
+ /** Page-specific title (overrides config) */
141
+ title?: string;
142
+ /**
143
+ * The title is already HTML and must NOT be escaped again.
144
+ *
145
+ * Set when the title was lifted out of author-written markup — an
146
+ * `@head <title>` block or `@section('title')` — where entities are already
147
+ * in their final form and any interpolation has already been escaped by
148
+ * `{{ }}`. Escaping it a second time renders `Caf&eacute; &amp; Bar` as
149
+ * `Caf&amp;eacute; &amp;amp; Bar`.
150
+ *
151
+ * A title from `useHead({ title })` is a plain JS string and must stay
152
+ * escaped — that is the XSS path (#1792 item 4).
153
+ */
154
+ titleIsHtml?: boolean;
155
+ /** Extra styles to inject in <head> (e.g. Css CSS, scoped styles) */
156
+ styles?: string[];
157
+ /** Extra scripts to inject before </body> (e.g. signals runtime, router) */
158
+ bodyScripts?: string[];
159
+ /** Extra scripts/tags for <head> */
160
+ headScripts?: string[];
161
+ /** Stacks to inject (from @push directives) */
162
+ headStack?: string;
163
+ bodyStack?: string;
164
+ /**
165
+ * Pre-paint color-mode config (stacksjs/stx#1794). When present, the boot
166
+ * script is emitted at the very top of <head> — above the stylesheets,
167
+ * because a stylesheet link ahead of it would block its execution and
168
+ * delay the one thing it exists to do early.
169
+ */
170
+ colorMode?: ColorModeBootConfig;
171
+ }): string;
172
+ export declare function startsDocument(html: string): boolean;
173
+ /**
174
+ * Does this output already carry a document wrapper?
175
+ *
176
+ * ANCHORED, and it has to be. The test used to be an unanchored
177
+ * `/<html[\s>]/i.test(html)`, so a DOCTYPE or an html tag mentioned ANYWHERE —
178
+ * including inside an HTML comment — reported a shell that was not there
179
+ * (stacksjs/stx#1792, part one item 3).
180
+ *
181
+ * The cascade was silent and severe: no shell means no `<head>`, so
182
+ * `injectCloakStyle` bails and every element stx deliberately cloaked renders
183
+ * VISIBLE; no `<meta name="stx-layout">`; and with neither that meta nor
184
+ * `data-stx-content` the router's document sniff fails, so every navigation
185
+ * hard-reloads. One comment mentioning the root element was enough, and the
186
+ * reporter ended up writing a house rule telling authors not to name the tag in
187
+ * prose.
188
+ *
189
+ * Shares `startsDocument` with the app-shell path, which was anchored for the
190
+ * same reason in #1787 and had been the outlier's correct twin ever since.
191
+ */
192
+ export declare function hasDocumentShell(html: string): boolean;
193
+ /**
194
+ * Inject the config `app.head` tags — script / meta / link / headRaw, but NOT
195
+ * `title` — into an EXISTING `<head>`.
196
+ *
197
+ * `generateDocumentShell` populates config head only when IT builds the shell.
198
+ * A page whose layout already renders `<html><head>` (the common case, and what
199
+ * SSG/static builds emit) skips that path, so global config head never lands —
200
+ * most visibly a site-wide analytics `<script>` (Fathom/Contentsquare/…) that
201
+ * silently never injects on layout-based or statically-built pages.
202
+ *
203
+ * Idempotent: skips a `<script src>`, `<link href>`, meta name/property/charset/
204
+ * http-equiv, or inline `<script>` content already present in the head, so it's
205
+ * safe to run even when the layout or `useHead` already emitted the same tag.
206
+ * `title` is intentionally excluded — the page/layout owns its own title.
207
+ */
208
+ export declare function injectConfigHeadTags(html: string, headConfig?: AppHeadConfig): string;
209
+ /**
210
+ * Wrap HTML in a document shell if it doesn't already have one.
211
+ * This is the main entry point — called at the top level after all
212
+ * directive processing is complete.
213
+ *
214
+ * When the html ALREADY has a shell we don't re-wrap (and don't touch its
215
+ * head here — the caller injects config-only head via `injectConfigHeadTags`,
216
+ * so runtime `useHead` tags aren't double-emitted).
217
+ */
218
+ export declare function ensureDocumentShell(html: string, headConfig?: AppHeadConfig, options?: Parameters<typeof generateDocumentShell>[2], alreadyHasShell?: boolean): string;
@@ -0,0 +1,338 @@
1
+ import { generateColorModeBootScript } from "./color-mode-boot.js";
2
+ export const CLOAK_STYLE = "<style data-stx-cloak>[x-cloak]{display:none !important}</style>", HTML_ATTRS_MARKER = "data-stx-html-attrs", HTML_CLASS_MARKER = "data-stx-html-class";
3
+ const SAFE_ATTR_NAME = /^[A-Za-z_:][\w:.-]*$/;
4
+ function escapeAttr(value) {
5
+ return String(value).replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
6
+ }
7
+ function escapeText(value) {
8
+ return String(value).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
9
+ }
10
+ export function metaDedupKey(m) {
11
+ if (m.name)
12
+ return `name="${m.name}"`;
13
+ if (m.property)
14
+ return `property="${m.property}"`;
15
+ if (m.charset != null)
16
+ return "charset=";
17
+ if (m["http-equiv"])
18
+ return `http-equiv="${m["http-equiv"]}"`;
19
+ return "";
20
+ }
21
+ function attrPairs(entries, skip) {
22
+ return Object.entries(entries).filter(([k]) => !skip?.(k)).map(([k, v]) => `${k}="${escapeAttr(String(v))}"`).join(" ");
23
+ }
24
+ export function buildHtmlAttrs(htmlAttrs = {}, lang = "en") {
25
+ const rest = [], managed = [];
26
+ let className = "", resolvedLang = lang;
27
+ for (const [rawName, value] of Object.entries(htmlAttrs || {})) {
28
+ if (value == null)
29
+ continue;
30
+ const name = rawName.trim();
31
+ if (!SAFE_ATTR_NAME.test(name))
32
+ continue;
33
+ const lower = name.toLowerCase();
34
+ if (lower === "lang") {
35
+ resolvedLang = String(value);
36
+ continue;
37
+ }
38
+ if (lower === "class") {
39
+ className = String(value).trim();
40
+ continue;
41
+ }
42
+ rest.push(` ${name}="${escapeAttr(String(value))}"`);
43
+ managed.push(name);
44
+ }
45
+ let out = ` lang="${escapeAttr(resolvedLang)}"`;
46
+ if (className)
47
+ out += ` class="${escapeAttr(className)}"`;
48
+ out += rest.join("");
49
+ if (className)
50
+ out += ` ${HTML_CLASS_MARKER}="${escapeAttr(className)}"`;
51
+ if (managed.length)
52
+ out += ` ${HTML_ATTRS_MARKER}="${escapeAttr(managed.join(" "))}"`;
53
+ return out;
54
+ }
55
+ export function mergeHtmlAttrs(base = {}, override = {}) {
56
+ const merged = { ...base, ...override };
57
+ if (base.class && override.class) {
58
+ const tokens = base.class.split(/\s+/).filter(Boolean);
59
+ for (const token of override.class.split(/\s+/).filter(Boolean))
60
+ if (!tokens.includes(token))
61
+ tokens.push(token);
62
+ merged.class = tokens.join(" ");
63
+ }
64
+ return merged;
65
+ }
66
+ export function applyHtmlAttrs(html, htmlAttrs = {}) {
67
+ if (!htmlAttrs || Object.keys(htmlAttrs).length === 0)
68
+ return html;
69
+ const openTag = html.match(/<html\b([^>]*)>/i);
70
+ if (!openTag)
71
+ return html;
72
+ const existing = {}, order = [], attrRe = /([A-Za-z_:][\w:.-]*)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+)))?/g;
73
+ let m;
74
+ while ((m = attrRe.exec(openTag[1])) !== null) {
75
+ const name = m[1];
76
+ if (!(name in existing))
77
+ order.push(name);
78
+ existing[name] = m[2] ?? m[3] ?? m[4] ?? "";
79
+ }
80
+ const addedClasses = [], managed = [];
81
+ for (const [rawName, value] of Object.entries(htmlAttrs)) {
82
+ if (value == null)
83
+ continue;
84
+ const name = rawName.trim();
85
+ if (!SAFE_ATTR_NAME.test(name))
86
+ continue;
87
+ const lower = name.toLowerCase();
88
+ if (lower === "class") {
89
+ const present = (existing.class || "").split(/\s+/).filter(Boolean);
90
+ for (const token of String(value).split(/\s+/).filter(Boolean))
91
+ if (!present.includes(token)) {
92
+ present.push(token);
93
+ addedClasses.push(token);
94
+ }
95
+ if (!("class" in existing))
96
+ order.push("class");
97
+ existing.class = present.join(" ");
98
+ continue;
99
+ }
100
+ if (!(name in existing))
101
+ order.push(name);
102
+ existing[name] = String(value);
103
+ if (lower !== "lang")
104
+ managed.push(name);
105
+ }
106
+ if (addedClasses.length) {
107
+ if (!(HTML_CLASS_MARKER in existing))
108
+ order.push(HTML_CLASS_MARKER);
109
+ existing[HTML_CLASS_MARKER] = addedClasses.join(" ");
110
+ }
111
+ if (managed.length) {
112
+ if (!(HTML_ATTRS_MARKER in existing))
113
+ order.push(HTML_ATTRS_MARKER);
114
+ existing[HTML_ATTRS_MARKER] = managed.join(" ");
115
+ }
116
+ const rebuilt = order.map((name) => ` ${name}="${escapeAttr(existing[name])}"`).join("");
117
+ return html.replace(openTag[0], () => `<html${rebuilt}>`);
118
+ }
119
+ export function injectCloakStyle(html) {
120
+ const fragment = cloakStyleFragment(html);
121
+ if (fragment === null)
122
+ return html;
123
+ const headCloseIdx = html.lastIndexOf("</head>");
124
+ return `${html.slice(0, headCloseIdx)}${fragment}${html.slice(headCloseIdx)}`;
125
+ }
126
+ export function cloakStyleFragment(html) {
127
+ if (html.includes("data-stx-cloak"))
128
+ return null;
129
+ if (html.lastIndexOf("</head>") === -1)
130
+ return null;
131
+ return `${CLOAK_STYLE}
132
+ `;
133
+ }
134
+ export function hoistLeadingHeadTags(content) {
135
+ const hoisted = [];
136
+ let i = 0;
137
+ while (i < content.length) {
138
+ const rest = content.slice(i), ws = rest.match(/^\s+/);
139
+ if (ws) {
140
+ i += ws[0].length;
141
+ continue;
142
+ }
143
+ if (rest.startsWith("<!--")) {
144
+ const end = content.indexOf("-->", i);
145
+ if (end === -1)
146
+ break;
147
+ i = end + 3;
148
+ continue;
149
+ }
150
+ const scriptOpen = rest.match(/^<script\b[^>]*>/i);
151
+ if (scriptOpen) {
152
+ const end = content.toLowerCase().indexOf("</script>", i + scriptOpen[0].length);
153
+ if (end === -1)
154
+ break;
155
+ i = end + 9;
156
+ continue;
157
+ }
158
+ const link = rest.match(/^<link\b[^>]*>/i);
159
+ if (link) {
160
+ hoisted.push(link[0]);
161
+ i += link[0].length;
162
+ continue;
163
+ }
164
+ const meta = rest.match(/^<meta\b[^>]*>/i);
165
+ if (meta) {
166
+ hoisted.push(meta[0]);
167
+ i += meta[0].length;
168
+ continue;
169
+ }
170
+ const style = rest.match(/^<style\b[^>]*>[\s\S]*?<\/style>/i);
171
+ if (style) {
172
+ hoisted.push(style[0]);
173
+ i += style[0].length;
174
+ continue;
175
+ }
176
+ break;
177
+ }
178
+ if (hoisted.length === 0)
179
+ return { body: content, hoisted };
180
+ let body = "", j = 0;
181
+ while (j < content.length && j < i) {
182
+ const rest = content.slice(j), link = rest.match(/^<link\b[^>]*>/i);
183
+ if (link && hoisted.includes(link[0])) {
184
+ j += link[0].length;
185
+ continue;
186
+ }
187
+ const meta = rest.match(/^<meta\b[^>]*>/i);
188
+ if (meta && hoisted.includes(meta[0])) {
189
+ j += meta[0].length;
190
+ continue;
191
+ }
192
+ const style = rest.match(/^<style\b[^>]*>[\s\S]*?<\/style>/i);
193
+ if (style && hoisted.includes(style[0])) {
194
+ j += style[0].length;
195
+ continue;
196
+ }
197
+ body += content[j];
198
+ j++;
199
+ }
200
+ body += content.slice(i);
201
+ return { body, hoisted };
202
+ }
203
+ export function generateDocumentShell(content, headConfig = {}, options = {}) {
204
+ const {
205
+ title: configTitle = "stx App",
206
+ lang = "en",
207
+ meta = [],
208
+ link = [],
209
+ script: headScriptTags = [],
210
+ headRaw = "",
211
+ htmlAttrs = {},
212
+ bodyClass = "",
213
+ bodyAttrs = {}
214
+ } = headConfig, pageTitle = options.title || configTitle, defaultMeta = [
215
+ { charset: "UTF-8" },
216
+ { name: "viewport", content: "width=device-width, initial-scale=1.0" }
217
+ ], configuredMetaKeys = new Set(meta.map(metaDedupKey).filter(Boolean)), metaTags = [
218
+ ...defaultMeta.filter((d) => !configuredMetaKeys.has(metaDedupKey(d))),
219
+ ...meta
220
+ ].map((m) => {
221
+ return ` <meta ${attrPairs(m)}>`;
222
+ }).join(`
223
+ `), linkTags = link.map((l) => {
224
+ return ` <link ${attrPairs(l)}>`;
225
+ }).join(`
226
+ `), configHeadScripts = headScriptTags.map((s) => {
227
+ if (s.src)
228
+ return ` <script ${attrPairs(s, (k) => k === "content")}></script>`;
229
+ if (s.content)
230
+ return ` <script>${s.content}</script>`;
231
+ return "";
232
+ }).filter(Boolean).join(`
233
+ `), htmlAttrStr = buildHtmlAttrs(htmlAttrs, lang), bodyAttrStr = Object.entries(bodyAttrs).map(([k, v]) => ` ${k}="${escapeAttr(String(v))}"`).join(""), bodyClassStr = bodyClass ? ` class="${escapeAttr(bodyClass)}"` : "", { body: pageBody, hoisted: pageHeadTags } = hoistLeadingHeadTags(content), headParts = [
234
+ metaTags,
235
+ options.colorMode ? ` ${generateColorModeBootScript(options.colorMode)}` : "",
236
+ ` <title>${options.titleIsHtml ? pageTitle : escapeText(pageTitle)}</title>`,
237
+ ` ${CLOAK_STYLE}`,
238
+ linkTags,
239
+ configHeadScripts,
240
+ headRaw ? ` ${headRaw}` : "",
241
+ ...(options.styles || []).map((s) => ` ${s}`),
242
+ ...pageHeadTags.map((s) => ` ${s}`),
243
+ ...(options.headScripts || []).map((s) => ` ${s}`),
244
+ options.headStack || ""
245
+ ].filter(Boolean), bodyParts = [
246
+ pageBody,
247
+ ...(options.bodyScripts || []).map((s) => s),
248
+ options.bodyStack || ""
249
+ ].filter(Boolean);
250
+ return `<!DOCTYPE html>
251
+ <html${htmlAttrStr}>
252
+ <head>
253
+ ${headParts.join(`
254
+ `)}
255
+ </head>
256
+ <body${bodyClassStr}${bodyAttrStr}>
257
+ ${bodyParts.join(`
258
+ `)}
259
+ </body>
260
+ </html>`;
261
+ }
262
+ const DOCUMENT_PREFIX_WHITESPACE = /\s+/y, DOCUMENT_PREFIX_PREAMBLE = /<(script|style)\b[^>]*>/iy, DOCUMENT_PREFIX_SCRIPT_CLOSE = /<\/script>/gi, DOCUMENT_PREFIX_STYLE_CLOSE = /<\/style>/gi, DOCUMENT_PREFIX_DOCTYPE = /<!DOCTYPE\b/iy, DOCUMENT_PREFIX_HTML = /<html[\s>]/iy;
263
+ export function startsDocument(html) {
264
+ let i = 0;
265
+ while (i < html.length) {
266
+ DOCUMENT_PREFIX_WHITESPACE.lastIndex = i;
267
+ if (DOCUMENT_PREFIX_WHITESPACE.exec(html)) {
268
+ i = DOCUMENT_PREFIX_WHITESPACE.lastIndex;
269
+ continue;
270
+ }
271
+ if (html.startsWith("<!--", i)) {
272
+ const end = html.indexOf("-->", i);
273
+ if (end === -1)
274
+ return !1;
275
+ i = end + 3;
276
+ continue;
277
+ }
278
+ DOCUMENT_PREFIX_PREAMBLE.lastIndex = i;
279
+ const preamble = DOCUMENT_PREFIX_PREAMBLE.exec(html);
280
+ if (preamble) {
281
+ const close = preamble[1].toLowerCase() === "script" ? DOCUMENT_PREFIX_SCRIPT_CLOSE : DOCUMENT_PREFIX_STYLE_CLOSE;
282
+ close.lastIndex = DOCUMENT_PREFIX_PREAMBLE.lastIndex;
283
+ const end = close.exec(html);
284
+ if (end === null)
285
+ return !1;
286
+ i = end.index + end[0].length;
287
+ continue;
288
+ }
289
+ DOCUMENT_PREFIX_DOCTYPE.lastIndex = i;
290
+ if (DOCUMENT_PREFIX_DOCTYPE.test(html))
291
+ return !0;
292
+ DOCUMENT_PREFIX_HTML.lastIndex = i;
293
+ return DOCUMENT_PREFIX_HTML.test(html);
294
+ }
295
+ return !1;
296
+ }
297
+ export function hasDocumentShell(html) {
298
+ return startsDocument(html);
299
+ }
300
+ export function injectConfigHeadTags(html, headConfig = {}) {
301
+ const headCloseIdx = html.lastIndexOf("</head>");
302
+ if (headCloseIdx === -1)
303
+ return html;
304
+ const { meta = [], link = [], script = [], headRaw = "" } = headConfig, head = html.slice(0, headCloseIdx), parts = [];
305
+ for (const m of meta) {
306
+ const dedup = metaDedupKey(m);
307
+ if (dedup && head.includes(dedup))
308
+ continue;
309
+ parts.push(` <meta ${attrPairs(m)}>`);
310
+ }
311
+ for (const l of link) {
312
+ if (l.href && head.includes(`href="${l.href}"`))
313
+ continue;
314
+ parts.push(` <link ${attrPairs(l)}>`);
315
+ }
316
+ for (const s of script)
317
+ if (s.src) {
318
+ if (head.includes(`src="${s.src}"`))
319
+ continue;
320
+ parts.push(` <script ${attrPairs(s, (k) => k === "content")}></script>`);
321
+ } else if (s.content) {
322
+ if (head.includes(s.content))
323
+ continue;
324
+ parts.push(` <script>${s.content}</script>`);
325
+ }
326
+ if (headRaw && !head.includes(headRaw))
327
+ parts.push(` ${headRaw}`);
328
+ if (parts.length === 0)
329
+ return html;
330
+ return `${html.slice(0, headCloseIdx)}${parts.join(`
331
+ `)}
332
+ ${html.slice(headCloseIdx)}`;
333
+ }
334
+ export function ensureDocumentShell(html, headConfig = {}, options = {}, alreadyHasShell) {
335
+ if (alreadyHasShell ?? hasDocumentShell(html))
336
+ return html;
337
+ return generateDocumentShell(html, headConfig, options);
338
+ }