@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,140 @@
1
+ import path from 'node:path';
2
+ /**
3
+ * Check if sharp is available (returns true only if sharp is installed).
4
+ *
5
+ * Note: image processing always works now via `ts-images`; this only reports
6
+ * whether the optional sharp fast-path is present. Use {@link isImageBackendAvailable}
7
+ * to gate "can we optimize at all" — the answer is always yes.
8
+ */
9
+ export declare function isSharpAvailable(): Promise<boolean>;
10
+ /**
11
+ * Whether any image-processing backend is available. Always true now that
12
+ * `ts-images` is bundled as a hard dependency — kept as a function for
13
+ * symmetry with `isSharpAvailable` and so callers can future-proof against
14
+ * a hypothetical "headless" build that strips ts-images.
15
+ */
16
+ export declare function isImageBackendAvailable(): Promise<boolean>;
17
+ /**
18
+ * Process an image and generate responsive variants
19
+ */
20
+ export declare function processImage(input: string | Buffer, options?: ImageOptions): Promise<ProcessedImage>;
21
+ /**
22
+ * Get image metadata
23
+ */
24
+ export declare function getImageMetadata(input: Buffer | string): Promise<ImageMetadata>;
25
+ /**
26
+ * Resize and convert image.
27
+ *
28
+ * Tries sharp first if installed (faster on large images), falls back to
29
+ * `ts-images` (pure-TS codecs, always available). `ts-images` is file-
30
+ * oriented so we route the output through a temp file and read it back.
31
+ */
32
+ export declare function resizeAndConvert(buffer: Buffer, options: {
33
+ width: number
34
+ height: number
35
+ format: ImageFormat
36
+ quality: number
37
+ fit: string
38
+ }): Promise<Buffer>;
39
+ /**
40
+ * Generate srcset attribute from variants
41
+ */
42
+ export declare function generateSrcSet(variants: ImageVariant[], format?: ImageFormat): string;
43
+ /**
44
+ * Generate sizes attribute
45
+ */
46
+ export declare function generateSizes(breakpoints?: Record<string, string>): string;
47
+ /**
48
+ * Get best fallback variant (middle resolution JPEG)
49
+ */
50
+ export declare function getFallbackVariant(variants: ImageVariant[]): ImageVariant | undefined;
51
+ /**
52
+ * Group variants by format
53
+ */
54
+ export declare function groupVariantsByFormat(variants: ImageVariant[]): Map<ImageFormat, ImageVariant[]>;
55
+ /**
56
+ * Check if file is an image
57
+ */
58
+ export declare function isImageFile(filePath: string): boolean;
59
+ /**
60
+ * Get MIME type for format
61
+ */
62
+ export declare function getMimeType(format: ImageFormat): string;
63
+ /**
64
+ * Calculate total size of variants
65
+ */
66
+ export declare function getTotalSize(variants: ImageVariant[]): number;
67
+ /**
68
+ * Format file size for display
69
+ */
70
+ export declare function formatSize(bytes: number): string;
71
+ /**
72
+ * ============================================================================
73
+ // Constants
74
+ // ============================================================================
75
+ * @defaultValue `[320, 640, 768, 1024, 1280, 1536, 1920]`
76
+ */
77
+ export declare const DEFAULT_WIDTHS: number[];
78
+ export declare const DEFAULT_FORMATS: ImageFormat[];
79
+ export declare const DEFAULT_QUALITY: 80;
80
+ // ============================================================================
81
+ // Types
82
+ // ============================================================================
83
+ export declare interface ImageOptions {
84
+ widths?: number[]
85
+ formats?: ImageFormat[]
86
+ quality?: number
87
+ fit?: 'cover' | 'contain' | 'fill' | 'inside' | 'outside'
88
+ placeholder?: 'blur' | 'dominant-color' | 'thumbhash' | 'none'
89
+ outputDir?: string
90
+ baseUrl?: string
91
+ }
92
+ export declare interface ProcessedImage {
93
+ src: string
94
+ variants: ImageVariant[]
95
+ placeholder?: string
96
+ width: number
97
+ height: number
98
+ aspectRatio: number
99
+ hash: string
100
+ }
101
+ export declare interface ImageVariant {
102
+ path: string
103
+ url: string
104
+ width: number
105
+ height: number
106
+ format: ImageFormat
107
+ size: number
108
+ }
109
+ export declare interface ImageMetadata {
110
+ width: number
111
+ height: number
112
+ format: string
113
+ hasAlpha?: boolean
114
+ }
115
+ export type ImageFormat = 'webp' | 'avif' | 'jpeg' | 'png';
116
+ // ============================================================================
117
+ // Sharp Integration
118
+ // ============================================================================
119
+ declare type SharpInstance = {
120
+ metadata(): Promise<ImageMetadata>
121
+ resize(width: number, height?: number, options?: { fit?: string }): SharpInstance
122
+ webp(options?: { quality?: number }): SharpInstance
123
+ avif(options?: { quality?: number }): SharpInstance
124
+ jpeg(options?: { quality?: number }): SharpInstance
125
+ png(options?: { quality?: number }): SharpInstance
126
+ toBuffer(): Promise<Buffer>
127
+ blur(sigma: number): SharpInstance
128
+ toFormat(format: string, options?: { quality?: number }): SharpInstance
129
+ }
130
+ declare type SharpModule = {
131
+ (input: Buffer | string): SharpInstance
132
+ default?: (input: Buffer | string) => SharpInstance
133
+ }
134
+ // ============================================================================
135
+ // Error Handling
136
+ // ============================================================================
137
+ export declare class ImageProcessingError extends Error {
138
+ code: string;
139
+ constructor(message: string, code: string);
140
+ }
@@ -0,0 +1,262 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import os from "node:os";
4
+ import crypto from "node:crypto";
5
+ import { generatePlaceholder as tsGeneratePlaceholder, processImage as tsProcessImage } from "ts-images";
6
+ export const DEFAULT_WIDTHS = [320, 640, 768, 1024, 1280, 1536, 1920], DEFAULT_FORMATS = ["webp", "jpeg"], DEFAULT_QUALITY = 80;
7
+ const IMAGE_EXTENSIONS = [".jpg", ".jpeg", ".png", ".webp", ".avif", ".gif", ".svg"], MIME_TYPES = {
8
+ webp: "image/webp",
9
+ avif: "image/avif",
10
+ jpeg: "image/jpeg",
11
+ png: "image/png"
12
+ };
13
+ let sharp = null, sharpLoadAttempted = !1;
14
+ async function loadSharp() {
15
+ if (sharpLoadAttempted)
16
+ return sharp;
17
+ sharpLoadAttempted = !0;
18
+ try {
19
+ const sharpModule = await import("sharp");
20
+ sharp = sharpModule.default || sharpModule;
21
+ return sharp;
22
+ } catch {
23
+ return null;
24
+ }
25
+ }
26
+ export async function isSharpAvailable() {
27
+ return await loadSharp() !== null;
28
+ }
29
+ export async function isImageBackendAvailable() {
30
+ return !0;
31
+ }
32
+ export async function processImage(input, options = {}) {
33
+ const {
34
+ widths = DEFAULT_WIDTHS,
35
+ formats = DEFAULT_FORMATS,
36
+ quality = DEFAULT_QUALITY,
37
+ fit = "cover",
38
+ placeholder = "none",
39
+ outputDir = ".stx/images",
40
+ baseUrl = "/images"
41
+ } = options;
42
+ let buffer, srcPath;
43
+ if (typeof input === "string") {
44
+ srcPath = input;
45
+ if (!await Bun.file(input).exists())
46
+ throw new ImageProcessingError(`Image not found: ${input}`, "NOT_FOUND");
47
+ buffer = await Bun.file(input).arrayBuffer().then((ab) => Buffer.from(ab));
48
+ } else {
49
+ srcPath = "buffer-input";
50
+ buffer = input;
51
+ }
52
+ const hash = crypto.createHash("sha256").update(buffer).digest("hex").slice(0, 12), metadata = await getImageMetadata(buffer), { width: originalWidth, height: originalHeight } = metadata, aspectRatio = originalWidth / originalHeight;
53
+ await fs.promises.mkdir(outputDir, { recursive: !0 });
54
+ const variants = [], baseName = path.basename(srcPath, path.extname(srcPath)), validWidths = widths.filter((w) => w <= originalWidth);
55
+ if (!validWidths.includes(originalWidth) && originalWidth <= Math.max(...widths))
56
+ validWidths.push(originalWidth);
57
+ validWidths.sort((a, b) => a - b);
58
+ for (const targetWidth of validWidths) {
59
+ const targetHeight = Math.round(targetWidth / aspectRatio);
60
+ for (const format of formats) {
61
+ const fileName = `${baseName}-${targetWidth}w-${hash}.${format}`, outputPath = path.join(outputDir, fileName), urlPath = `${baseUrl}/${fileName}`, processedBuffer = await resizeAndConvert(buffer, {
62
+ width: targetWidth,
63
+ height: targetHeight,
64
+ format,
65
+ quality,
66
+ fit
67
+ });
68
+ await Bun.write(outputPath, processedBuffer);
69
+ variants.push({
70
+ path: outputPath,
71
+ url: urlPath,
72
+ width: targetWidth,
73
+ height: targetHeight,
74
+ format,
75
+ size: processedBuffer.length
76
+ });
77
+ }
78
+ }
79
+ let placeholderData;
80
+ if (placeholder !== "none")
81
+ placeholderData = await generatePlaceholder(buffer, placeholder);
82
+ return {
83
+ src: srcPath,
84
+ variants,
85
+ placeholder: placeholderData,
86
+ width: originalWidth,
87
+ height: originalHeight,
88
+ aspectRatio,
89
+ hash
90
+ };
91
+ }
92
+ export async function getImageMetadata(input) {
93
+ const buffer = typeof input === "string" ? Buffer.from(await Bun.file(input).arrayBuffer()) : input, s = await loadSharp();
94
+ if (s) {
95
+ const meta = await s(buffer).metadata();
96
+ return {
97
+ width: meta.width || 0,
98
+ height: meta.height || 0,
99
+ format: meta.format || "unknown",
100
+ hasAlpha: meta.hasAlpha
101
+ };
102
+ }
103
+ return parseImageHeaders(buffer);
104
+ }
105
+ function parseImageHeaders(buffer) {
106
+ if (buffer[0] === 137 && buffer[1] === 80 && buffer[2] === 78 && buffer[3] === 71) {
107
+ const width = buffer.readUInt32BE(16), height = buffer.readUInt32BE(20);
108
+ return { width, height, format: "png", hasAlpha: !0 };
109
+ }
110
+ if (buffer[0] === 255 && buffer[1] === 216) {
111
+ let offset = 2;
112
+ while (offset < buffer.length) {
113
+ if (buffer[offset] !== 255)
114
+ break;
115
+ const marker = buffer[offset + 1];
116
+ if (marker >= 192 && marker <= 207 && marker !== 196 && marker !== 200 && marker !== 204) {
117
+ const height = buffer.readUInt16BE(offset + 5);
118
+ return { width: buffer.readUInt16BE(offset + 7), height, format: "jpeg", hasAlpha: !1 };
119
+ }
120
+ const length = buffer.readUInt16BE(offset + 2);
121
+ offset += 2 + length;
122
+ }
123
+ }
124
+ if (buffer.toString("utf8", 0, 4) === "RIFF" && buffer.toString("utf8", 8, 12) === "WEBP") {
125
+ const chunk = buffer.toString("utf8", 12, 16);
126
+ if (chunk === "VP8 ") {
127
+ const width = buffer.readUInt16LE(26) & 16383, height = buffer.readUInt16LE(28) & 16383;
128
+ return { width, height, format: "webp", hasAlpha: !1 };
129
+ }
130
+ if (chunk === "VP8L") {
131
+ const bits = buffer.readUInt32LE(21), width = (bits & 16383) + 1, height = (bits >> 14 & 16383) + 1;
132
+ return { width, height, format: "webp", hasAlpha: !0 };
133
+ }
134
+ }
135
+ if (buffer.toString("utf8", 0, 3) === "GIF") {
136
+ const width = buffer.readUInt16LE(6), height = buffer.readUInt16LE(8);
137
+ return { width, height, format: "gif", hasAlpha: !0 };
138
+ }
139
+ throw new ImageProcessingError("Unable to parse image dimensions", "PARSE_ERROR");
140
+ }
141
+ export async function resizeAndConvert(buffer, options) {
142
+ const s = await loadSharp();
143
+ if (s) {
144
+ let instance = s(buffer).resize(options.width, options.height, { fit: options.fit });
145
+ switch (options.format) {
146
+ case "webp":
147
+ instance = instance.webp({ quality: options.quality });
148
+ break;
149
+ case "avif":
150
+ instance = instance.avif({ quality: options.quality });
151
+ break;
152
+ case "jpeg":
153
+ instance = instance.jpeg({ quality: options.quality });
154
+ break;
155
+ case "png":
156
+ instance = instance.png({ quality: options.quality });
157
+ break;
158
+ }
159
+ return instance.toBuffer();
160
+ }
161
+ const tempOut = path.join(os.tmpdir(), `stx-img-${crypto.randomBytes(8).toString("hex")}.${options.format}`);
162
+ try {
163
+ await tsProcessImage({
164
+ input: buffer,
165
+ output: tempOut,
166
+ format: options.format,
167
+ quality: options.quality,
168
+ resize: {
169
+ width: options.width,
170
+ height: options.height,
171
+ fit: options.fit
172
+ }
173
+ });
174
+ return Buffer.from(await Bun.file(tempOut).arrayBuffer());
175
+ } finally {
176
+ await fs.promises.unlink(tempOut).catch(() => {});
177
+ }
178
+ }
179
+ async function generatePlaceholder(buffer, type) {
180
+ const s = await loadSharp();
181
+ if (type === "blur" && s) {
182
+ const base64 = (await s(buffer).resize(20).blur(10).toBuffer()).toString("base64"), meta = await getImageMetadata(buffer);
183
+ return `data:${MIME_TYPES[meta.format] || "image/jpeg"};base64,${base64}`;
184
+ }
185
+ if (type === "dominant-color" && s) {
186
+ const { dominant } = await s(buffer).resize(1, 1).toBuffer().then(async (b) => {
187
+ const meta = await s(b).metadata();
188
+ return { dominant: { r: 128, g: 128, b: 128 } };
189
+ }).catch(() => ({ dominant: { r: 128, g: 128, b: 128 } }));
190
+ return `rgb(${dominant.r}, ${dominant.g}, ${dominant.b})`;
191
+ }
192
+ const meta = await getImageMetadata(buffer), tempIn = path.join(os.tmpdir(), `stx-ph-${crypto.randomBytes(8).toString("hex")}.${meta.format === "unknown" ? "bin" : meta.format}`);
193
+ try {
194
+ await Bun.write(tempIn, buffer);
195
+ const tsStrategy = type === "blur" ? "blur" : type === "thumbhash" ? "thumbhash" : "dominant-color", ph = await tsGeneratePlaceholder(tempIn, {
196
+ strategy: tsStrategy,
197
+ width: tsStrategy === "thumbhash" ? void 0 : 32
198
+ });
199
+ if (type === "dominant-color" && ph.dominantColor)
200
+ return ph.dominantColor;
201
+ if (ph.dataURL)
202
+ return ph.dataURL;
203
+ return "rgb(128, 128, 128)";
204
+ } catch {
205
+ return "rgb(128, 128, 128)";
206
+ } finally {
207
+ await fs.promises.unlink(tempIn).catch(() => {});
208
+ }
209
+ }
210
+ export function generateSrcSet(variants, format) {
211
+ return (format ? variants.filter((v) => v.format === format) : variants).sort((a, b) => a.width - b.width).map((v) => `${v.url} ${v.width}w`).join(", ");
212
+ }
213
+ export function generateSizes(breakpoints) {
214
+ if (!breakpoints || Object.keys(breakpoints).length === 0)
215
+ return "100vw";
216
+ return Object.entries(breakpoints).sort((a, b) => {
217
+ const aVal = Number.parseInt(a[0].replace(/\D/g, "")) || 0;
218
+ return (Number.parseInt(b[0].replace(/\D/g, "")) || 0) - aVal;
219
+ }).map(([bp, size]) => `(max-width: ${bp}) ${size}`).join(", ") + ", 100vw";
220
+ }
221
+ export function getFallbackVariant(variants) {
222
+ const jpegs = variants.filter((v) => v.format === "jpeg");
223
+ if (jpegs.length === 0)
224
+ return variants[Math.floor(variants.length / 2)];
225
+ const sorted = jpegs.sort((a, b) => a.width - b.width);
226
+ return sorted[Math.floor(sorted.length / 2)];
227
+ }
228
+ export function groupVariantsByFormat(variants) {
229
+ const grouped = new Map;
230
+ for (const variant of variants) {
231
+ const existing = grouped.get(variant.format) || [];
232
+ existing.push(variant);
233
+ grouped.set(variant.format, existing);
234
+ }
235
+ return grouped;
236
+ }
237
+ export function isImageFile(filePath) {
238
+ const ext = path.extname(filePath).toLowerCase();
239
+ return IMAGE_EXTENSIONS.includes(ext);
240
+ }
241
+ export function getMimeType(format) {
242
+ return MIME_TYPES[format] || "application/octet-stream";
243
+ }
244
+ export function getTotalSize(variants) {
245
+ return variants.reduce((sum, v) => sum + v.size, 0);
246
+ }
247
+ export function formatSize(bytes) {
248
+ if (bytes < 1024)
249
+ return `${bytes} B`;
250
+ if (bytes < 1048576)
251
+ return `${(bytes / 1024).toFixed(1)} KB`;
252
+ return `${(bytes / 1048576).toFixed(2)} MB`;
253
+ }
254
+
255
+ export class ImageProcessingError extends Error {
256
+ code;
257
+ constructor(message, code) {
258
+ super(message);
259
+ this.name = "ImageProcessingError";
260
+ this.code = code;
261
+ }
262
+ }
@@ -0,0 +1,54 @@
1
+ import { type ImageFormat } from './processor';
2
+ /**
3
+ * Probe the request URL and return a Response if it matches the image
4
+ * route, or `null` if the caller should keep trying other handlers.
5
+ *
6
+ * Designed to be a drop-in inside any Bun/fetch-style server:
7
+ *
8
+ * const imgResponse = await handleImageRequest(request, { publicDir })
9
+ * if (imgResponse) return imgResponse
10
+ * // …other routes
11
+ */
12
+ export declare function handleImageRequest(request: Request, options: ImageServeOptions): Promise<Response | null>;
13
+ /**
14
+ * Wrap {@link handleImageRequest} into a self-contained route handler.
15
+ *
16
+ * Most router slots type their handlers as `(req: Request) => Promise<Response>`
17
+ * — they don't accept `null` inside the Promise the way the chainable
18
+ * `handleImageRequest` returns it. Use this factory when plugging into a
19
+ * router slot of that shape:
20
+ *
21
+ * const handler = createImageHandler({ publicDir: 'public' })
22
+ * router.get('/_stx/img', handler)
23
+ *
24
+ * When the request URL doesn't match the configured route path, the
25
+ * returned handler responds with `404 Not Found`. Use the lower-level
26
+ * `handleImageRequest` directly if you want to chain to a fallback.
27
+ */
28
+ export declare function createImageHandler(options: ImageServeOptions): (request: Request) => Promise<Response>;
29
+ // ============================================================================
30
+ // Public types
31
+ // ============================================================================
32
+ export declare interface ImageServeOptions {
33
+ publicDir: string
34
+ cacheDir?: string
35
+ maxWidth?: number
36
+ maxHeight?: number
37
+ defaultQuality?: number
38
+ defaultFit?: 'cover' | 'contain' | 'fill' | 'inside' | 'outside'
39
+ routePath?: string
40
+ }
41
+ // ============================================================================
42
+ // Parsing & validation
43
+ // ============================================================================
44
+ declare type ParseResult = | {
45
+ ok: true
46
+ srcFsPath: string
47
+ srcUrl: string
48
+ width: number
49
+ height: number
50
+ format: ImageFormat
51
+ quality: number
52
+ fit: 'cover' | 'contain' | 'fill' | 'inside' | 'outside'
53
+ }
54
+ | { ok: false, error: string, status: number }
@@ -0,0 +1,102 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import crypto from "node:crypto";
4
+ import { getMimeType } from "./processor.js";
5
+ const VALID_FORMATS = new Set(["webp", "avif", "jpeg", "png"]), VALID_FITS = new Set(["cover", "contain", "fill", "inside", "outside"]), SOURCE_EXTS = new Set([".jpg", ".jpeg", ".png", ".webp", ".avif", ".gif"]), DEFAULT_MAX_DIMENSION = 4096, DEFAULT_QUALITY = 80, DEFAULT_FIT = "cover";
6
+ export async function handleImageRequest(request, options) {
7
+ const routePath = options.routePath ?? "/_stx/img", url = new URL(request.url);
8
+ if (url.pathname !== routePath)
9
+ return null;
10
+ const parsed = parseRequest(url, options);
11
+ if (!parsed.ok)
12
+ return new Response(parsed.error, { status: parsed.status, headers: { "Content-Type": "text/plain" } });
13
+ const { srcFsPath, srcUrl, width, height, format, quality, fit } = parsed;
14
+ let srcStat;
15
+ try {
16
+ srcStat = fs.statSync(srcFsPath);
17
+ } catch {
18
+ return new Response(`Source image not found: ${srcUrl}`, {
19
+ status: 404,
20
+ headers: { "Content-Type": "text/plain" }
21
+ });
22
+ }
23
+ if (!srcStat.isFile())
24
+ return new Response("Not a file", { status: 404, headers: { "Content-Type": "text/plain" } });
25
+ const cacheDir = options.cacheDir ?? ".stx/cache/img";
26
+ await fs.promises.mkdir(cacheDir, { recursive: !0 });
27
+ const fingerprint = `${srcFsPath}:${srcStat.mtimeMs}:${srcStat.size}`, paramKey = `${width}x${height}:${format}:${quality}:${fit}`, cacheKey = crypto.createHash("sha256").update(`${fingerprint}|${paramKey}`).digest("hex").slice(0, 16), cachePath = path.join(cacheDir, `${cacheKey}.${format}`), headers = {
28
+ "Content-Type": getMimeType(format),
29
+ "Cache-Control": "public, max-age=31536000, immutable",
30
+ ETag: `"${cacheKey}"`,
31
+ "X-Stx-Image-Cache": "HIT"
32
+ };
33
+ if (request.headers.get("if-none-match") === `"${cacheKey}"`)
34
+ return new Response(null, { status: 304, headers });
35
+ const cached = Bun.file(cachePath);
36
+ if (await cached.exists())
37
+ return new Response(cached, { headers });
38
+ try {
39
+ const sourceBuffer = Buffer.from(await Bun.file(srcFsPath).arrayBuffer()), { resizeAndConvert } = await loadResize(), outputBuffer = await resizeAndConvert(sourceBuffer, { width, height, format, quality, fit });
40
+ await Bun.write(cachePath, outputBuffer);
41
+ headers["X-Stx-Image-Cache"] = "MISS";
42
+ return new Response(new Uint8Array(outputBuffer), { headers });
43
+ } catch (err) {
44
+ const msg = err.message;
45
+ return new Response(`Image processing failed: ${msg}`, {
46
+ status: 500,
47
+ headers: { "Content-Type": "text/plain" }
48
+ });
49
+ }
50
+ }
51
+ export function createImageHandler(options) {
52
+ return async (request) => {
53
+ return await handleImageRequest(request, options) ?? new Response("Not Found", {
54
+ status: 404,
55
+ headers: { "Content-Type": "text/plain" }
56
+ });
57
+ };
58
+ }
59
+ function parseRequest(url, options) {
60
+ const srcUrl = url.searchParams.get("src");
61
+ if (!srcUrl)
62
+ return { ok: !1, error: "Missing required param: src", status: 400 };
63
+ if (!srcUrl.startsWith("/"))
64
+ return { ok: !1, error: "src must be an absolute URL path (start with /)", status: 400 };
65
+ if (srcUrl.startsWith("//"))
66
+ return { ok: !1, error: "src must be a local path", status: 400 };
67
+ const srcExt = path.extname(srcUrl).toLowerCase();
68
+ if (!SOURCE_EXTS.has(srcExt))
69
+ return { ok: !1, error: `Unsupported source extension: ${srcExt}`, status: 400 };
70
+ const publicDir = path.resolve(options.publicDir), candidate = path.resolve(publicDir, srcUrl.slice(1));
71
+ if (!candidate.startsWith(`${publicDir}${path.sep}`) && candidate !== publicDir)
72
+ return { ok: !1, error: "src is outside publicDir", status: 400 };
73
+ const maxWidth = options.maxWidth ?? DEFAULT_MAX_DIMENSION, maxHeight = options.maxHeight ?? DEFAULT_MAX_DIMENSION, widthParam = url.searchParams.get("w"), heightParam = url.searchParams.get("h"), width = widthParam ? Number.parseInt(widthParam, 10) : 0, height = heightParam ? Number.parseInt(heightParam, 10) : 0;
74
+ if (widthParam && (!Number.isFinite(width) || width <= 0))
75
+ return { ok: !1, error: "Invalid w (must be positive integer)", status: 400 };
76
+ if (heightParam && (!Number.isFinite(height) || height <= 0))
77
+ return { ok: !1, error: "Invalid h (must be positive integer)", status: 400 };
78
+ if (!widthParam && !heightParam)
79
+ return { ok: !1, error: "At least one of w or h is required", status: 400 };
80
+ const clampedWidth = Math.min(width || maxWidth, maxWidth), clampedHeight = Math.min(height || maxHeight, maxHeight), formatParam = url.searchParams.get("f") || "webp";
81
+ if (!VALID_FORMATS.has(formatParam))
82
+ return { ok: !1, error: `Invalid f (must be one of: ${[...VALID_FORMATS].join(", ")})`, status: 400 };
83
+ const format = formatParam, qualityParam = url.searchParams.get("q"), quality = qualityParam ? Number.parseInt(qualityParam, 10) : options.defaultQuality ?? DEFAULT_QUALITY;
84
+ if (!Number.isFinite(quality) || quality < 1 || quality > 100)
85
+ return { ok: !1, error: "Invalid q (must be 1-100)", status: 400 };
86
+ const fitParam = url.searchParams.get("fit") || options.defaultFit || DEFAULT_FIT;
87
+ if (!VALID_FITS.has(fitParam))
88
+ return { ok: !1, error: `Invalid fit (must be one of: ${[...VALID_FITS].join(", ")})`, status: 400 };
89
+ return {
90
+ ok: !0,
91
+ srcFsPath: candidate,
92
+ srcUrl,
93
+ width: clampedWidth,
94
+ height: clampedHeight,
95
+ format,
96
+ quality,
97
+ fit: fitParam
98
+ };
99
+ }
100
+ async function loadResize() {
101
+ return await import("./processor.js");
102
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Absolutise the relative import specifiers in `code`, as written in
3
+ * `sourceFile`.
4
+ *
5
+ * The path is emitted with forward slashes on every platform: it goes into
6
+ * JavaScript source, where a Windows backslash would be an escape character.
7
+ */
8
+ export declare function absolutizeRelativeImports(code: string, sourceFile: string): string;
9
+ /**
10
+ * The same, applied only inside `<script>` blocks of a template.
11
+ *
12
+ * A template is markup as well as code, and a string like `'../foo'` in an
13
+ * attribute or in prose is not an import. Scoping to script blocks keeps the
14
+ * rewrite to the only place an import specifier can appear.
15
+ */
16
+ export declare function absolutizeTemplateImports(template: string, sourceFile: string): string;
@@ -0,0 +1,16 @@
1
+ import path from "node:path";
2
+ const SPECIFIER = /(\bfrom\s*|\bimport\s*\(\s*|\bimport\s+)(['"])(\.\.?\/[^'"]*)\2/g, SCRIPT_BLOCK = /(<script\b[^>]*>)([\s\S]*?)(<\/script>)/gi;
3
+ export function absolutizeRelativeImports(code, sourceFile) {
4
+ if (!sourceFile || !code.includes("/"))
5
+ return code;
6
+ const dir = path.dirname(sourceFile);
7
+ return code.replace(SPECIFIER, (match, lead, quote, request) => {
8
+ const resolved = path.resolve(dir, request);
9
+ return `${lead}${quote}${resolved.split(path.sep).join("/")}${quote}`;
10
+ });
11
+ }
12
+ export function absolutizeTemplateImports(template, sourceFile) {
13
+ if (!sourceFile || !template.includes("<script"))
14
+ return template;
15
+ return template.replace(SCRIPT_BLOCK, (_match, open, body, close) => `${open}${absolutizeRelativeImports(body, sourceFile)}${close}`);
16
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Does a client script reach signal APIs through a module it imports?
3
+ *
4
+ * Every signal decision in the pipeline is a syntactic scan for `state(`,
5
+ * `derived(`, `effect(` and friends in the script's own text. That is exact
6
+ * for a script that declares its own signals and blind to one that factors
7
+ * them out:
8
+ *
9
+ * ```stx
10
+ * <script client>
11
+ * import { makeProbe } from '../functions/probe-factory'
12
+ * const { signal } = makeProbe() // <- names no signal API
13
+ * </script>
14
+ * ```
15
+ *
16
+ * With no match, the page is treated as static: `{{ signal() }}` is evaluated
17
+ * server-side (undefined, so empty), no setup function is generated, and
18
+ * `<body>` gets no `data-stx` for the runtime to invoke. Nothing logs. The
19
+ * page renders its static half and every binding is inert, which reads as a
20
+ * data problem rather than a hydration one. stacksjs/stacks#2394.
21
+ *
22
+ * The bundler resolves this authoritatively, but it is async and expensive,
23
+ * and the gate that decides whether to preserve `{{ }}` for the client is
24
+ * synchronous and runs once per template, partial and component. So this walks
25
+ * the same edges the bundler would, cheaply: read the imported file, look for
26
+ * the same API calls, recurse a bounded distance.
27
+ *
28
+ * Deliberately a subset of what bundling sees - relative specifiers only, a
29
+ * few levels deep. Anything it misses is caught later by the async
30
+ * bundle-and-retest in signal-processing.ts, which can only ever be MORE
31
+ * permissive. The reverse (a gate that says signals where the setup pass finds
32
+ * none) would leave a literal mustache on the page, so the two must lean this
33
+ * way round.
34
+ *
35
+ * @module imported-signals
36
+ */
37
+ /**
38
+ * Whether `script` declares signals somewhere in the modules it imports.
39
+ *
40
+ * `fromFile` is the file the script lives in; without it nothing can be
41
+ * resolved and this returns false, which is the pre-existing behaviour.
42
+ */
43
+ export declare function importsSignalDeclarations(script: string, fromFile: string | undefined, depth?: number, seen?: Set<string>): boolean;
@@ -0,0 +1,35 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ const SIGNAL_API_CALL = /\b(?:state|derived|effect|ref|reactive|computed|watch|watchEffect)\s*(?:<[^<>()]*>)?\s*\(/, RELATIVE_IMPORT = /(?:^|\n)\s*(?:import|export)\s+(?:[^'"]*?\sfrom\s+)?['"](\.[^'"]*)['"]/g, EXTENSIONS = ["", ".ts", ".tsx", ".js", ".jsx", ".mts", ".mjs", "/index.ts", "/index.js"], MAX_DEPTH = 3;
4
+ function resolveImport(specifier, fromFile) {
5
+ const base = path.resolve(path.dirname(fromFile), specifier);
6
+ for (const extension of EXTENSIONS) {
7
+ const candidate = base + extension;
8
+ try {
9
+ if (fs.statSync(candidate).isFile())
10
+ return candidate;
11
+ } catch {}
12
+ }
13
+ return null;
14
+ }
15
+ export function importsSignalDeclarations(script, fromFile, depth = 0, seen = new Set) {
16
+ if (!fromFile || depth >= MAX_DEPTH)
17
+ return !1;
18
+ for (const match of script.matchAll(RELATIVE_IMPORT)) {
19
+ const resolved = resolveImport(match[1], fromFile);
20
+ if (!resolved || seen.has(resolved))
21
+ continue;
22
+ seen.add(resolved);
23
+ let source;
24
+ try {
25
+ source = fs.readFileSync(resolved, "utf8");
26
+ } catch {
27
+ continue;
28
+ }
29
+ if (SIGNAL_API_CALL.test(source))
30
+ return !0;
31
+ if (importsSignalDeclarations(source, resolved, depth + 1, seen))
32
+ return !0;
33
+ }
34
+ return !1;
35
+ }