@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.
- package/LICENSE.md +21 -0
- package/README.md +1042 -0
- package/dist/a11y.d.ts +256 -0
- package/dist/a11y.js +671 -0
- package/dist/analytics.d.ts +40 -0
- package/dist/analytics.js +159 -0
- package/dist/analyzer.d.ts +68 -0
- package/dist/analyzer.js +240 -0
- package/dist/animation.d.ts +123 -0
- package/dist/animation.js +688 -0
- package/dist/app-shell.d.ts +76 -0
- package/dist/app-shell.js +209 -0
- package/dist/app.d.ts +65 -0
- package/dist/app.js +79 -0
- package/dist/appearance-bootstrap.d.ts +54 -0
- package/dist/appearance-bootstrap.js +92 -0
- package/dist/asset-roots.d.ts +32 -0
- package/dist/asset-roots.js +7 -0
- package/dist/assets.d.ts +21 -0
- package/dist/assets.js +155 -0
- package/dist/ast.d.ts +265 -0
- package/dist/ast.js +630 -0
- package/dist/async-components.d.ts +123 -0
- package/dist/async-components.js +428 -0
- package/dist/auth.d.ts +13 -0
- package/dist/auth.js +12 -0
- package/dist/broadcasting.d.ts +77 -0
- package/dist/broadcasting.js +103 -0
- package/dist/browser-composables.d.ts +348 -0
- package/dist/browser-composables.js +606 -0
- package/dist/browser-core-imports.d.ts +12 -0
- package/dist/browser-core-imports.js +28 -0
- package/dist/build-assets.d.ts +32 -0
- package/dist/build-assets.js +29 -0
- package/dist/build-externalize-repeated.d.ts +34 -0
- package/dist/build-externalize-repeated.js +101 -0
- package/dist/build-externalize.d.ts +73 -0
- package/dist/build-externalize.js +80 -0
- package/dist/build-id.d.ts +57 -0
- package/dist/build-id.js +25 -0
- package/dist/build-message.d.ts +81 -0
- package/dist/build-message.js +65 -0
- package/dist/build-mode-detector.d.ts +26 -0
- package/dist/build-mode-detector.js +50 -0
- package/dist/build-optimizer.d.ts +101 -0
- package/dist/build-optimizer.js +433 -0
- package/dist/build-views.d.ts +56 -0
- package/dist/build-views.js +180 -0
- package/dist/build.d.ts +31 -0
- package/dist/build.js +34 -0
- package/dist/builtins/attrs.d.ts +49 -0
- package/dist/builtins/attrs.js +39 -0
- package/dist/builtins/drawer.d.ts +24 -0
- package/dist/builtins/drawer.js +37 -0
- package/dist/builtins/escape.d.ts +12 -0
- package/dist/builtins/escape.js +3 -0
- package/dist/builtins/icon.d.ts +45 -0
- package/dist/builtins/icon.js +100 -0
- package/dist/builtins/image-delivery.d.ts +16 -0
- package/dist/builtins/image-delivery.js +115 -0
- package/dist/builtins/image-placeholder.d.ts +78 -0
- package/dist/builtins/image-placeholder.js +137 -0
- package/dist/builtins/index.d.ts +26 -0
- package/dist/builtins/index.js +34 -0
- package/dist/builtins/modal.d.ts +26 -0
- package/dist/builtins/modal.js +38 -0
- package/dist/builtins/safe-image.d.ts +44 -0
- package/dist/builtins/safe-image.js +45 -0
- package/dist/builtins/stx-image.d.ts +29 -0
- package/dist/builtins/stx-image.js +222 -0
- package/dist/builtins/stx-link.d.ts +11 -0
- package/dist/builtins/stx-link.js +35 -0
- package/dist/builtins/stx-loading-indicator.d.ts +13 -0
- package/dist/builtins/stx-loading-indicator.js +35 -0
- package/dist/builtins/suspense.d.ts +30 -0
- package/dist/builtins/suspense.js +24 -0
- package/dist/builtins/toast.d.ts +19 -0
- package/dist/builtins/toast.js +42 -0
- package/dist/builtins/tooltip.d.ts +18 -0
- package/dist/builtins/tooltip.js +106 -0
- package/dist/builtins/transition-group.d.ts +27 -0
- package/dist/builtins/transition-group.js +22 -0
- package/dist/bun-shim.js +496 -0
- package/dist/bundle-analyzer/collector.d.ts +66 -0
- package/dist/bundle-analyzer/collector.js +233 -0
- package/dist/bundle-analyzer/index.d.ts +98 -0
- package/dist/bundle-analyzer/index.js +82 -0
- package/dist/bundle-analyzer/report.d.ts +39 -0
- package/dist/bundle-analyzer/report.js +318 -0
- package/dist/bundle-analyzer/treemap.d.ts +19 -0
- package/dist/bundle-analyzer/treemap.js +594 -0
- package/dist/bundle-analyzer.js +499 -0
- package/dist/caching.d.ts +69 -0
- package/dist/caching.js +135 -0
- package/dist/chunk-0y46fbkx.js +3 -0
- package/dist/chunk-122tyfre.js +2 -0
- package/dist/chunk-19nfvxfw.js +43 -0
- package/dist/chunk-1kah92n2.js +3 -0
- package/dist/chunk-1kms3b9d.js +2 -0
- package/dist/chunk-1q4y74mh.js +1194 -0
- package/dist/chunk-248e84r1.js +4 -0
- package/dist/chunk-24ps8kft.js +2 -0
- package/dist/chunk-2et5hxfv.js +2 -0
- package/dist/chunk-2r1rd8f0.js +2 -0
- package/dist/chunk-2tk1zkrz.js +2 -0
- package/dist/chunk-38ejahd9.js +3 -0
- package/dist/chunk-3zv4wz87.js +2 -0
- package/dist/chunk-4122k1bh.js +2 -0
- package/dist/chunk-45az9zht.js +2 -0
- package/dist/chunk-4qr85f07.js +2 -0
- package/dist/chunk-4ww3znrr.js +15 -0
- package/dist/chunk-54st8g2j.js +397 -0
- package/dist/chunk-58f0mthg.js +3 -0
- package/dist/chunk-5a19dhx5.js +2 -0
- package/dist/chunk-5kk8gsj2.js +3 -0
- package/dist/chunk-5w1e3yxs.js +499 -0
- package/dist/chunk-6gdycmxr.js +2 -0
- package/dist/chunk-6hmnaza7.js +4473 -0
- package/dist/chunk-71t0yan0.js +5 -0
- package/dist/chunk-74cv4ta1.js +3 -0
- package/dist/chunk-74v15e8z.js +2 -0
- package/dist/chunk-7b329e5v.js +3 -0
- package/dist/chunk-7q9mwh4v.js +84 -0
- package/dist/chunk-866y9d8b.js +8169 -0
- package/dist/chunk-8fwerspy.js +2 -0
- package/dist/chunk-8mjdpr94.js +147 -0
- package/dist/chunk-92mj1t26.js +60 -0
- package/dist/chunk-9b22663r.js +2 -0
- package/dist/chunk-9hjdgm4d.js +2 -0
- package/dist/chunk-9n0gvfrg.js +4 -0
- package/dist/chunk-9wr7zcad.js +18 -0
- package/dist/chunk-9y0g8kzt.js +358 -0
- package/dist/chunk-a0nfbmeh.js +3 -0
- package/dist/chunk-acn1b56m.js +1280 -0
- package/dist/chunk-awkq3xfx.js +2 -0
- package/dist/chunk-b6ej2fdf.js +1814 -0
- package/dist/chunk-b8rrnqry.js +2 -0
- package/dist/chunk-bfqfs07m.js +3022 -0
- package/dist/chunk-bs6kapy7.js +2 -0
- package/dist/chunk-btav940g.js +2 -0
- package/dist/chunk-bz820epz.js +3 -0
- package/dist/chunk-ccspd3mc.js +2 -0
- package/dist/chunk-csbgwaa5.js +2 -0
- package/dist/chunk-d8t4sjsp.js +2 -0
- package/dist/chunk-dap191q2.js +2 -0
- package/dist/chunk-de7fye10.js +4 -0
- package/dist/chunk-dgrt76d2.js +2 -0
- package/dist/chunk-dhh5q7qt.js +3 -0
- package/dist/chunk-dsffsqnt.js +2 -0
- package/dist/chunk-dtq7y5ym.js +2 -0
- package/dist/chunk-fed3xsp9.js +3 -0
- package/dist/chunk-ferav3bw.js +19 -0
- package/dist/chunk-fvhm8psm.js +3 -0
- package/dist/chunk-g4vpzv6b.js +2 -0
- package/dist/chunk-g9csmj0s.js +2 -0
- package/dist/chunk-gtcrpmz1.js +2 -0
- package/dist/chunk-h4xh8cms.js +4 -0
- package/dist/chunk-h8yqsz9m.js +2 -0
- package/dist/chunk-hcq5dw7a.js +2 -0
- package/dist/chunk-hm0xha6c.js +12 -0
- package/dist/chunk-hpybjwwf.js +8 -0
- package/dist/chunk-jegt35zh.js +2 -0
- package/dist/chunk-jr3jp3ev.js +8 -0
- package/dist/chunk-k56rjjc0.js +24 -0
- package/dist/chunk-kdh37tp8.js +194 -0
- package/dist/chunk-kxzb4et3.js +29 -0
- package/dist/chunk-mf4n3x1j.js +14 -0
- package/dist/chunk-mkd9kjgb.js +3 -0
- package/dist/chunk-mxfh1nxg.js +2 -0
- package/dist/chunk-n3ggrhb3.js +3 -0
- package/dist/chunk-nkb3scg6.js +8 -0
- package/dist/chunk-nnd4wq8j.js +231 -0
- package/dist/chunk-nsp1cw38.js +11 -0
- package/dist/chunk-nx5qkm8k.js +30 -0
- package/dist/chunk-p3242nck.js +2 -0
- package/dist/chunk-p98kfh94.js +2 -0
- package/dist/chunk-pkaabd8h.js +3 -0
- package/dist/chunk-pzm13sdc.js +3 -0
- package/dist/chunk-q4p5k2p3.js +2 -0
- package/dist/chunk-q9n5swx7.js +3 -0
- package/dist/chunk-qc1f74ek.js +3 -0
- package/dist/chunk-qpyjak7z.js +2 -0
- package/dist/chunk-qr82je1m.js +22 -0
- package/dist/chunk-qy73j6m4.js +288 -0
- package/dist/chunk-qzkhpsam.js +505 -0
- package/dist/chunk-r3ayvdz3.js +2 -0
- package/dist/chunk-r7r66978.js +2 -0
- package/dist/chunk-rbb7dvja.js +30 -0
- package/dist/chunk-refwkt87.js +71 -0
- package/dist/chunk-rj4kajww.js +2 -0
- package/dist/chunk-rp4rjjmf.js +2 -0
- package/dist/chunk-se0p17c2.js +898 -0
- package/dist/chunk-sj9pmene.js +2 -0
- package/dist/chunk-sscwkffs.js +2 -0
- package/dist/chunk-svpqxn2c.js +2 -0
- package/dist/chunk-t6nseeb9.js +351 -0
- package/dist/chunk-t8y1ggdy.js +2 -0
- package/dist/chunk-tndhnk9e.js +2 -0
- package/dist/chunk-v5e1gxwm.js +3 -0
- package/dist/chunk-vqxmxgaj.js +4 -0
- package/dist/chunk-vrrax298.js +2 -0
- package/dist/chunk-w3ycm4na.js +3 -0
- package/dist/chunk-wcm80anz.js +321 -0
- package/dist/chunk-wrzwgkbx.js +22 -0
- package/dist/chunk-x650vjcp.js +302 -0
- package/dist/chunk-xgnc1wy6.js +116 -0
- package/dist/chunk-xpp135ad.js +11 -0
- package/dist/chunk-xttsqmkm.js +216 -0
- package/dist/chunk-y11cxbxd.js +3757 -0
- package/dist/chunk-y7m2dpd3.js +341 -0
- package/dist/chunk-y98jsjqq.js +2 -0
- package/dist/chunk-ya386h70.js +2 -0
- package/dist/chunk-ydrz60kr.js +2 -0
- package/dist/chunk-ypmqf7tm.js +4 -0
- package/dist/chunk-z4jhj5e5.js +28 -0
- package/dist/chunk-zg75gjns.js +2 -0
- package/dist/chunk-zqqx1qaj.js +2 -0
- package/dist/cli-flags.d.ts +34 -0
- package/dist/cli-flags.js +20 -0
- package/dist/cli.js +174 -0
- package/dist/client/directive.d.ts +17 -0
- package/dist/client/directive.js +14 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.js +2 -0
- package/dist/client-helpers.d.ts +317 -0
- package/dist/client-helpers.js +312 -0
- package/dist/client-script-bundler.d.ts +103 -0
- package/dist/client-script-bundler.js +390 -0
- package/dist/client-script.d.ts +215 -0
- package/dist/client-script.js +865 -0
- package/dist/client.d.ts +21 -0
- package/dist/client.js +73 -0
- package/dist/codemod.d.ts +33 -0
- package/dist/codemod.js +244 -0
- package/dist/color-mode-boot.d.ts +92 -0
- package/dist/color-mode-boot.js +72 -0
- package/dist/component-client-factories.d.ts +33 -0
- package/dist/component-client-factories.js +77 -0
- package/dist/component-hmr.d.ts +107 -0
- package/dist/component-hmr.js +585 -0
- package/dist/component-library.d.ts +38 -0
- package/dist/component-library.js +994 -0
- package/dist/component-processing.d.ts +198 -0
- package/dist/component-processing.js +677 -0
- package/dist/component-registry.d.ts +127 -0
- package/dist/component-registry.js +90 -0
- package/dist/component-renderer.d.ts +52 -0
- package/dist/component-renderer.js +790 -0
- package/dist/components/StxImage.stx +12 -0
- package/dist/components/StxLink.stx +18 -0
- package/dist/components.d.ts +28 -0
- package/dist/components.js +213 -0
- package/dist/composable-loader.d.ts +62 -0
- package/dist/composable-loader.js +190 -0
- package/dist/composables/index.d.ts +417 -0
- package/dist/composables/index.js +222 -0
- package/dist/composables/use-battery.d.ts +46 -0
- package/dist/composables/use-battery.js +101 -0
- package/dist/composables/use-broadcast-channel.d.ts +59 -0
- package/dist/composables/use-broadcast-channel.js +80 -0
- package/dist/composables/use-channel.d.ts +67 -0
- package/dist/composables/use-channel.js +124 -0
- package/dist/composables/use-clipboard.d.ts +30 -0
- package/dist/composables/use-clipboard.js +90 -0
- package/dist/composables/use-color-mode.d.ts +67 -0
- package/dist/composables/use-color-mode.js +152 -0
- package/dist/composables/use-cookie.d.ts +59 -0
- package/dist/composables/use-cookie.js +86 -0
- package/dist/composables/use-device-orientation.d.ts +116 -0
- package/dist/composables/use-device-orientation.js +181 -0
- package/dist/composables/use-event-listener.d.ts +35 -0
- package/dist/composables/use-event-listener.js +27 -0
- package/dist/composables/use-event-source.d.ts +90 -0
- package/dist/composables/use-event-source.js +166 -0
- package/dist/composables/use-eye-dropper.d.ts +117 -0
- package/dist/composables/use-eye-dropper.js +142 -0
- package/dist/composables/use-fetch.d.ts +59 -0
- package/dist/composables/use-fetch.js +273 -0
- package/dist/composables/use-form.d.ts +91 -0
- package/dist/composables/use-form.js +112 -0
- package/dist/composables/use-fullscreen.d.ts +47 -0
- package/dist/composables/use-fullscreen.js +110 -0
- package/dist/composables/use-geolocation.d.ts +62 -0
- package/dist/composables/use-geolocation.js +101 -0
- package/dist/composables/use-idle.d.ts +102 -0
- package/dist/composables/use-idle.js +182 -0
- package/dist/composables/use-intersection-observer.d.ts +83 -0
- package/dist/composables/use-intersection-observer.js +168 -0
- package/dist/composables/use-keyboard.d.ts +100 -0
- package/dist/composables/use-keyboard.js +224 -0
- package/dist/composables/use-media-query.d.ts +56 -0
- package/dist/composables/use-media-query.js +62 -0
- package/dist/composables/use-meta.d.ts +35 -0
- package/dist/composables/use-meta.js +48 -0
- package/dist/composables/use-mouse.d.ts +65 -0
- package/dist/composables/use-mouse.js +286 -0
- package/dist/composables/use-mutation-observer.d.ts +101 -0
- package/dist/composables/use-mutation-observer.js +129 -0
- package/dist/composables/use-network.d.ts +40 -0
- package/dist/composables/use-network.js +85 -0
- package/dist/composables/use-notification.d.ts +98 -0
- package/dist/composables/use-notification.js +94 -0
- package/dist/composables/use-permissions.d.ts +119 -0
- package/dist/composables/use-permissions.js +132 -0
- package/dist/composables/use-query.d.ts +48 -0
- package/dist/composables/use-query.js +0 -0
- package/dist/composables/use-resize-observer.d.ts +60 -0
- package/dist/composables/use-resize-observer.js +157 -0
- package/dist/composables/use-router.d.ts +80 -0
- package/dist/composables/use-router.js +105 -0
- package/dist/composables/use-scroll-lock.d.ts +13 -0
- package/dist/composables/use-scroll-lock.js +55 -0
- package/dist/composables/use-share.d.ts +74 -0
- package/dist/composables/use-share.js +104 -0
- package/dist/composables/use-speech.d.ts +117 -0
- package/dist/composables/use-speech.js +294 -0
- package/dist/composables/use-storage.d.ts +69 -0
- package/dist/composables/use-storage.js +196 -0
- package/dist/composables/use-text-selection.d.ts +121 -0
- package/dist/composables/use-text-selection.js +205 -0
- package/dist/composables/use-timer.d.ts +92 -0
- package/dist/composables/use-timer.js +193 -0
- package/dist/composables/use-utilities.d.ts +103 -0
- package/dist/composables/use-utilities.js +176 -0
- package/dist/composables/use-wake-lock.d.ts +85 -0
- package/dist/composables/use-wake-lock.js +122 -0
- package/dist/composables/use-websocket.d.ts +70 -0
- package/dist/composables/use-websocket.js +165 -0
- package/dist/composables/use-window.d.ts +84 -0
- package/dist/composables/use-window.js +163 -0
- package/dist/composables.d.ts +287 -0
- package/dist/composables.js +562 -0
- package/dist/composition-api.d.ts +197 -0
- package/dist/composition-api.js +199 -0
- package/dist/compression.d.ts +30 -0
- package/dist/compression.js +107 -0
- package/dist/computed.d.ts +138 -0
- package/dist/computed.js +382 -0
- package/dist/conditionals.d.ts +48 -0
- package/dist/conditionals.js +626 -0
- package/dist/config.d.ts +77 -0
- package/dist/config.js +828 -0
- package/dist/cookie-serialize.d.ts +40 -0
- package/dist/cookie-serialize.js +18 -0
- package/dist/craft-bridge.d.ts +525 -0
- package/dist/craft-bridge.js +511 -0
- package/dist/craft-compiler.d.ts +245 -0
- package/dist/craft-compiler.js +810 -0
- package/dist/craft-components.d.ts +739 -0
- package/dist/craft-components.js +1074 -0
- package/dist/craft-entry.d.ts +6 -0
- package/dist/craft-entry.js +9 -0
- package/dist/craft-ssr.d.ts +147 -0
- package/dist/craft-ssr.js +559 -0
- package/dist/craft.js +9 -0
- package/dist/csp.d.ts +295 -0
- package/dist/csp.js +220 -0
- package/dist/csrf.d.ts +38 -0
- package/dist/csrf.js +38 -0
- package/dist/custom-directives.d.ts +5 -0
- package/dist/custom-directives.js +136 -0
- package/dist/database.d.ts +391 -0
- package/dist/database.js +5 -0
- package/dist/defer.d.ts +28 -0
- package/dist/defer.js +156 -0
- package/dist/deploy/config-generators.d.ts +75 -0
- package/dist/deploy/config-generators.js +214 -0
- package/dist/deploy/index.d.ts +88 -0
- package/dist/deploy/index.js +203 -0
- package/dist/deploy/netlify.d.ts +109 -0
- package/dist/deploy/netlify.js +167 -0
- package/dist/desktop.d.ts +16 -0
- package/dist/desktop.js +1 -0
- package/dist/dev-server/index.d.ts +22 -0
- package/dist/dev-server/index.js +7 -0
- package/dist/dev-server/keyboard-shortcuts.d.ts +34 -0
- package/dist/dev-server/keyboard-shortcuts.js +81 -0
- package/dist/dev-server/native-window.d.ts +59 -0
- package/dist/dev-server/native-window.js +91 -0
- package/dist/dev-server/port-utils.d.ts +27 -0
- package/dist/dev-server/port-utils.js +40 -0
- package/dist/dev-server/serve-app.d.ts +15 -0
- package/dist/dev-server/serve-app.js +727 -0
- package/dist/dev-server/serve-file.d.ts +3 -0
- package/dist/dev-server/serve-file.js +443 -0
- package/dist/dev-server/serve-markdown.d.ts +3 -0
- package/dist/dev-server/serve-markdown.js +284 -0
- package/dist/dev-server/serve-multi.d.ts +5 -0
- package/dist/dev-server/serve-multi.js +596 -0
- package/dist/dev-server/terminal-colors.d.ts +56 -0
- package/dist/dev-server/terminal-colors.js +45 -0
- package/dist/dev-server/theme-selector.d.ts +32 -0
- package/dist/dev-server/theme-selector.js +111 -0
- package/dist/dev-server/ts-css.d.ts +108 -0
- package/dist/dev-server/ts-css.js +438 -0
- package/dist/dev-server/types.d.ts +99 -0
- package/dist/dev-server/types.js +43 -0
- package/dist/dev-server.d.ts +6 -0
- package/dist/dev-server.js +4 -0
- package/dist/devtools.d.ts +182 -0
- package/dist/devtools.js +593 -0
- package/dist/directive-api.d.ts +154 -0
- package/dist/directive-api.js +355 -0
- package/dist/docs.d.ts +56 -0
- package/dist/docs.js +567 -0
- package/dist/doctor.d.ts +29 -0
- package/dist/doctor.js +123 -0
- package/dist/document-shell.d.ts +218 -0
- package/dist/document-shell.js +338 -0
- package/dist/dynamic-components.d.ts +23 -0
- package/dist/dynamic-components.js +197 -0
- package/dist/edge-runtime.d.ts +193 -0
- package/dist/edge-runtime.js +525 -0
- package/dist/env.d.ts +3 -0
- package/dist/env.js +9 -0
- package/dist/error-boundaries.d.ts +78 -0
- package/dist/error-boundaries.js +281 -0
- package/dist/error-handling.d.ts +14 -0
- package/dist/error-handling.js +1 -0
- package/dist/errors/codes.d.ts +92 -0
- package/dist/errors/codes.js +97 -0
- package/dist/errors/formatter.d.ts +84 -0
- package/dist/errors/formatter.js +196 -0
- package/dist/errors/index.d.ts +12 -0
- package/dist/errors/index.js +44 -0
- package/dist/errors/logger.d.ts +135 -0
- package/dist/errors/logger.js +250 -0
- package/dist/errors/sanitizer.d.ts +73 -0
- package/dist/errors/sanitizer.js +181 -0
- package/dist/errors/types.d.ts +92 -0
- package/dist/errors/types.js +86 -0
- package/dist/events.d.ts +145 -0
- package/dist/events.js +396 -0
- package/dist/expressions.d.ts +180 -0
- package/dist/expressions.js +719 -0
- package/dist/find-body-tag.d.ts +50 -0
- package/dist/find-body-tag.js +57 -0
- package/dist/formatter.d.ts +19 -0
- package/dist/formatter.js +265 -0
- package/dist/forms-validation.d.ts +189 -0
- package/dist/forms-validation.js +421 -0
- package/dist/forms.d.ts +224 -0
- package/dist/forms.js +729 -0
- package/dist/fragment-container.d.ts +57 -0
- package/dist/fragment-container.js +123 -0
- package/dist/framework-composables.d.ts +73 -0
- package/dist/framework-composables.js +126 -0
- package/dist/head-injection.d.ts +61 -0
- package/dist/head-injection.js +28 -0
- package/dist/head.d.ts +282 -0
- package/dist/head.js +231 -0
- package/dist/heatmap.d.ts +206 -0
- package/dist/heatmap.js +566 -0
- package/dist/hot-reload.d.ts +87 -0
- package/dist/hot-reload.js +373 -0
- package/dist/html-masking.d.ts +125 -0
- package/dist/html-masking.js +196 -0
- package/dist/hydration-runtime.d.ts +44 -0
- package/dist/hydration-runtime.js +195 -0
- package/dist/hydration.d.ts +135 -0
- package/dist/hydration.js +654 -0
- package/dist/i18n.d.ts +342 -0
- package/dist/i18n.js +678 -0
- package/dist/image-optimization/auto-sibling.d.ts +42 -0
- package/dist/image-optimization/auto-sibling.js +88 -0
- package/dist/image-optimization/build-plugin.d.ts +54 -0
- package/dist/image-optimization/build-plugin.js +241 -0
- package/dist/image-optimization/component.d.ts +46 -0
- package/dist/image-optimization/component.js +244 -0
- package/dist/image-optimization/directive.d.ts +30 -0
- package/dist/image-optimization/directive.js +203 -0
- package/dist/image-optimization/index.d.ts +156 -0
- package/dist/image-optimization/index.js +54 -0
- package/dist/image-optimization/processor.d.ts +140 -0
- package/dist/image-optimization/processor.js +262 -0
- package/dist/image-optimization/serve.d.ts +54 -0
- package/dist/image-optimization/serve.js +102 -0
- package/dist/import-rebase.d.ts +16 -0
- package/dist/import-rebase.js +16 -0
- package/dist/imported-signals.d.ts +43 -0
- package/dist/imported-signals.js +35 -0
- package/dist/includes.d.ts +171 -0
- package/dist/includes.js +764 -0
- package/dist/index.d.ts +365 -0
- package/dist/index.js +202 -0
- package/dist/init.d.ts +39 -0
- package/dist/init.js +505 -0
- package/dist/inline-assets.d.ts +28 -0
- package/dist/inline-assets.js +82 -0
- package/dist/interactive.d.ts +14 -0
- package/dist/interactive.js +383 -0
- package/dist/internal-markdown.d.ts +22 -0
- package/dist/internal-markdown.js +141 -0
- package/dist/island-chunking.d.ts +48 -0
- package/dist/island-chunking.js +52 -0
- package/dist/isolated-build.d.ts +12 -0
- package/dist/isolated-build.js +18 -0
- package/dist/js-ts.d.ts +10 -0
- package/dist/js-ts.js +60 -0
- package/dist/jsx-runtime.d.ts +92 -0
- package/dist/jsx-runtime.js +289 -0
- package/dist/keep-alive.d.ts +108 -0
- package/dist/keep-alive.js +421 -0
- package/dist/layout-types.d.ts +45 -0
- package/dist/layout-types.js +56 -0
- package/dist/lazy-loader.d.ts +90 -0
- package/dist/lazy-loader.js +245 -0
- package/dist/lazy-module.d.ts +11 -0
- package/dist/lazy-module.js +18 -0
- package/dist/loading-indicator.d.ts +50 -0
- package/dist/loading-indicator.js +322 -0
- package/dist/loops.d.ts +91 -0
- package/dist/loops.js +690 -0
- package/dist/manifest.d.ts +41 -0
- package/dist/manifest.js +31 -0
- package/dist/markdown-view.d.ts +25 -0
- package/dist/markdown-view.js +39 -0
- package/dist/markdown.d.ts +10 -0
- package/dist/markdown.js +68 -0
- package/dist/media/client/blur-up.d.ts +66 -0
- package/dist/media/client/blur-up.js +217 -0
- package/dist/media/client/index.d.ts +93 -0
- package/dist/media/client/index.js +53 -0
- package/dist/media/client/lazy-load.d.ts +74 -0
- package/dist/media/client/lazy-load.js +283 -0
- package/dist/media/client/upload-handler.d.ts +80 -0
- package/dist/media/client/upload-handler.js +354 -0
- package/dist/media/image/component.d.ts +60 -0
- package/dist/media/image/component.js +574 -0
- package/dist/media/image/directive.d.ts +23 -0
- package/dist/media/image/directive.js +160 -0
- package/dist/media/image/editing.d.ts +212 -0
- package/dist/media/image/editing.js +193 -0
- package/dist/media/image/index.d.ts +142 -0
- package/dist/media/image/index.js +80 -0
- package/dist/media/image/placeholder.d.ts +89 -0
- package/dist/media/image/placeholder.js +188 -0
- package/dist/media/image/processor/cache.d.ts +53 -0
- package/dist/media/image/processor/cache.js +51 -0
- package/dist/media/image/processor/index.d.ts +11 -0
- package/dist/media/image/processor/index.js +3 -0
- package/dist/media/image/processor/optimizer.d.ts +24 -0
- package/dist/media/image/processor/optimizer.js +202 -0
- package/dist/media/image/processor/responsive.d.ts +28 -0
- package/dist/media/image/processor/responsive.js +162 -0
- package/dist/media/image/srcset.d.ts +157 -0
- package/dist/media/image/srcset.js +194 -0
- package/dist/media/index.d.ts +331 -0
- package/dist/media/index.js +198 -0
- package/dist/media/manager/embed.d.ts +25 -0
- package/dist/media/manager/embed.js +253 -0
- package/dist/media/protected/component.d.ts +33 -0
- package/dist/media/protected/component.js +235 -0
- package/dist/media/protected/index.d.ts +47 -0
- package/dist/media/protected/index.js +20 -0
- package/dist/media/protected/signature.d.ts +72 -0
- package/dist/media/protected/signature.js +205 -0
- package/dist/media/shared/cache.d.ts +76 -0
- package/dist/media/shared/cache.js +132 -0
- package/dist/media/shared/hash.d.ts +31 -0
- package/dist/media/shared/hash.js +35 -0
- package/dist/media/shared/index.d.ts +7 -0
- package/dist/media/shared/index.js +2 -0
- package/dist/media/types.d.ts +1477 -0
- package/dist/media/types.js +0 -0
- package/dist/media/upload/component.d.ts +9 -0
- package/dist/media/upload/component.js +320 -0
- package/dist/media/upload/index.d.ts +8 -0
- package/dist/media/upload/index.js +1 -0
- package/dist/media/video/directive.d.ts +23 -0
- package/dist/media/video/directive.js +142 -0
- package/dist/media/video/index.d.ts +76 -0
- package/dist/media/video/index.js +583 -0
- package/dist/media/video/processor/cache.d.ts +55 -0
- package/dist/media/video/processor/cache.js +52 -0
- package/dist/media/video/processor/index.d.ts +12 -0
- package/dist/media/video/processor/index.js +4 -0
- package/dist/media/video/processor/streaming.d.ts +26 -0
- package/dist/media/video/processor/streaming.js +197 -0
- package/dist/media/video/processor/thumbnail.d.ts +35 -0
- package/dist/media/video/processor/thumbnail.js +134 -0
- package/dist/media/video/processor/transcoder.d.ts +19 -0
- package/dist/media/video/processor/transcoder.js +283 -0
- package/dist/menubar.d.ts +65 -0
- package/dist/menubar.js +99 -0
- package/dist/method-spoofing.d.ts +20 -0
- package/dist/method-spoofing.js +17 -0
- package/dist/middleware.d.ts +112 -0
- package/dist/middleware.js +40 -0
- package/dist/misc-directives.d.ts +55 -0
- package/dist/misc-directives.js +328 -0
- package/dist/native-build.d.ts +88 -0
- package/dist/native-build.js +575 -0
- package/dist/owned-routes.d.ts +42 -0
- package/dist/owned-routes.js +26 -0
- package/dist/page-action.d.ts +73 -0
- package/dist/page-action.js +91 -0
- package/dist/page-meta.d.ts +38 -0
- package/dist/page-meta.js +16 -0
- package/dist/page-response.d.ts +120 -0
- package/dist/page-response.js +117 -0
- package/dist/parser/directive-parser.d.ts +119 -0
- package/dist/parser/directive-parser.js +249 -0
- package/dist/parser/expression-parser.d.ts +58 -0
- package/dist/parser/expression-parser.js +358 -0
- package/dist/parser/index.d.ts +13 -0
- package/dist/parser/index.js +23 -0
- package/dist/parser/tokenizer.d.ts +77 -0
- package/dist/parser/tokenizer.js +534 -0
- package/dist/partial-hydration.d.ts +123 -0
- package/dist/partial-hydration.js +427 -0
- package/dist/performance-utils.d.ts +318 -0
- package/dist/performance-utils.js +466 -0
- package/dist/placeholder.d.ts +54 -0
- package/dist/placeholder.js +35 -0
- package/dist/plugin-system.d.ts +301 -0
- package/dist/plugin-system.js +214 -0
- package/dist/plugin.d.ts +3 -0
- package/dist/plugin.js +174 -0
- package/dist/precompiler.d.ts +43 -0
- package/dist/precompiler.js +670 -0
- package/dist/process.d.ts +16 -0
- package/dist/process.js +879 -0
- package/dist/production-build.d.ts +163 -0
- package/dist/production-build.js +596 -0
- package/dist/production-builder.d.ts +42 -0
- package/dist/production-builder.js +146 -0
- package/dist/production-server.d.ts +19 -0
- package/dist/production-server.js +208 -0
- package/dist/prop-sentinels.d.ts +31 -0
- package/dist/prop-sentinels.js +7 -0
- package/dist/props.d.ts +216 -0
- package/dist/props.js +224 -0
- package/dist/public-env.d.ts +29 -0
- package/dist/public-env.js +19 -0
- package/dist/pwa/audit.d.ts +42 -0
- package/dist/pwa/audit.js +255 -0
- package/dist/pwa/directives.d.ts +38 -0
- package/dist/pwa/directives.js +332 -0
- package/dist/pwa/icons.d.ts +42 -0
- package/dist/pwa/icons.js +109 -0
- package/dist/pwa/index.d.ts +104 -0
- package/dist/pwa/index.js +47 -0
- package/dist/pwa/inject.d.ts +32 -0
- package/dist/pwa/inject.js +102 -0
- package/dist/pwa/manifest.d.ts +104 -0
- package/dist/pwa/manifest.js +186 -0
- package/dist/pwa/offline.d.ts +8 -0
- package/dist/pwa/offline.js +259 -0
- package/dist/pwa/precache.d.ts +35 -0
- package/dist/pwa/precache.js +116 -0
- package/dist/pwa/service-worker.d.ts +33 -0
- package/dist/pwa/service-worker.js +860 -0
- package/dist/pwa/workbox-strategies.d.ts +100 -0
- package/dist/pwa/workbox-strategies.js +167 -0
- package/dist/pwa/workbox.d.ts +51 -0
- package/dist/pwa/workbox.js +382 -0
- package/dist/pwa.d.ts +52 -0
- package/dist/pwa.js +236 -0
- package/dist/reactive-bindings.d.ts +47 -0
- package/dist/reactive-bindings.js +268 -0
- package/dist/reactive-tracking.d.ts +81 -0
- package/dist/reactive-tracking.js +49 -0
- package/dist/reactive.d.ts +117 -0
- package/dist/reactive.js +593 -0
- package/dist/reactivity.d.ts +206 -0
- package/dist/reactivity.js +574 -0
- package/dist/release.d.ts +1 -0
- package/dist/release.js +1 -0
- package/dist/render-memo.d.ts +40 -0
- package/dist/render-memo.js +33 -0
- package/dist/render.d.ts +54 -0
- package/dist/render.js +153 -0
- package/dist/resolve-stx-targets.d.ts +49 -0
- package/dist/resolve-stx-targets.js +38 -0
- package/dist/route-middleware.d.ts +2 -0
- package/dist/route-middleware.js +17 -0
- package/dist/route-types.d.ts +134 -0
- package/dist/route-types.js +24 -0
- package/dist/router.d.ts +9 -0
- package/dist/router.js +9 -0
- package/dist/routes.d.ts +6 -0
- package/dist/routes.js +14 -0
- package/dist/runtime-globals.d.ts +236 -0
- package/dist/runtime-globals.js +230 -0
- package/dist/runtime-injection.d.ts +113 -0
- package/dist/runtime-injection.js +156 -0
- package/dist/runtime.d.ts +140 -0
- package/dist/runtime.js +94 -0
- package/dist/safe-evaluator.d.ts +165 -0
- package/dist/safe-evaluator.js +461 -0
- package/dist/scaffolding.d.ts +113 -0
- package/dist/scaffolding.js +897 -0
- package/dist/screenshot.d.ts +22 -0
- package/dist/screenshot.js +100 -0
- package/dist/script-classifier.d.ts +41 -0
- package/dist/script-classifier.js +51 -0
- package/dist/script-emit.d.ts +50 -0
- package/dist/script-emit.js +11 -0
- package/dist/script-json.d.ts +36 -0
- package/dist/script-json.js +6 -0
- package/dist/script-validation.d.ts +26 -0
- package/dist/script-validation.js +179 -0
- package/dist/seo.d.ts +225 -0
- package/dist/seo.js +486 -0
- package/dist/serve.d.ts +44 -0
- package/dist/serve.js +233 -0
- package/dist/server-bindings.d.ts +39 -0
- package/dist/server-bindings.js +171 -0
- package/dist/server-components.d.ts +138 -0
- package/dist/server-components.js +427 -0
- package/dist/sfc-template.d.ts +17 -0
- package/dist/sfc-template.js +32 -0
- package/dist/signal-processing.d.ts +222 -0
- package/dist/signal-processing.js +1081 -0
- package/dist/signals-api.d.ts +459 -0
- package/dist/signals-api.js +172 -0
- package/dist/signals.d.ts +41 -0
- package/dist/signals.js +8233 -0
- package/dist/site-builder/build.d.ts +18 -0
- package/dist/site-builder/build.js +252 -0
- package/dist/site-builder/i18n.d.ts +104 -0
- package/dist/site-builder/i18n.js +150 -0
- package/dist/site-builder/index.d.ts +27 -0
- package/dist/site-builder/index.js +16 -0
- package/dist/site-builder/robots.d.ts +2 -0
- package/dist/site-builder/robots.js +26 -0
- package/dist/site-builder/router.d.ts +10 -0
- package/dist/site-builder/router.js +27 -0
- package/dist/site-builder/seo.d.ts +8 -0
- package/dist/site-builder/seo.js +67 -0
- package/dist/site-builder/sitemap.d.ts +10 -0
- package/dist/site-builder/sitemap.js +26 -0
- package/dist/site-builder/theme.d.ts +12 -0
- package/dist/site-builder/theme.js +38 -0
- package/dist/site-builder/types.d.ts +74 -0
- package/dist/site-builder/types.js +0 -0
- package/dist/site-url.d.ts +46 -0
- package/dist/site-url.js +70 -0
- package/dist/slots.d.ts +129 -0
- package/dist/slots.js +286 -0
- package/dist/source-maps.d.ts +98 -0
- package/dist/source-maps.js +350 -0
- package/dist/source-signature.d.ts +45 -0
- package/dist/source-signature.js +20 -0
- package/dist/spa-nav.d.ts +49 -0
- package/dist/spa-nav.js +12 -0
- package/dist/spa-shell.d.ts +21 -0
- package/dist/spa-shell.js +34 -0
- package/dist/ssg.d.ts +357 -0
- package/dist/ssg.js +94 -0
- package/dist/ssr.d.ts +116 -0
- package/dist/ssr.js +339 -0
- package/dist/state-dir.d.ts +36 -0
- package/dist/state-dir.js +22 -0
- package/dist/state-management.d.ts +299 -0
- package/dist/state-management.js +519 -0
- package/dist/store-imports.d.ts +47 -0
- package/dist/store-imports.js +16 -0
- package/dist/store-loader.d.ts +15 -0
- package/dist/store-loader.js +111 -0
- package/dist/stores-client.d.ts +70 -0
- package/dist/stores-client.js +132 -0
- package/dist/story/addons.d.ts +123 -0
- package/dist/story/addons.js +261 -0
- package/dist/story/analytics.d.ts +163 -0
- package/dist/story/analytics.js +235 -0
- package/dist/story/auto-stories.d.ts +38 -0
- package/dist/story/auto-stories.js +158 -0
- package/dist/story/bookmarks.d.ts +102 -0
- package/dist/story/bookmarks.js +277 -0
- package/dist/story/bun-test.d.ts +45 -0
- package/dist/story/bun-test.js +102 -0
- package/dist/story/cli.d.ts +132 -0
- package/dist/story/cli.js +155 -0
- package/dist/story/collect/analyzer.d.ts +33 -0
- package/dist/story/collect/analyzer.js +305 -0
- package/dist/story/collect/index.d.ts +31 -0
- package/dist/story/collect/index.js +27 -0
- package/dist/story/collect/parser.d.ts +17 -0
- package/dist/story/collect/parser.js +129 -0
- package/dist/story/collect/scanner.d.ts +17 -0
- package/dist/story/collect/scanner.js +101 -0
- package/dist/story/collect/tree.d.ts +24 -0
- package/dist/story/collect/tree.js +110 -0
- package/dist/story/commands/build.d.ts +19 -0
- package/dist/story/commands/build.js +172 -0
- package/dist/story/commands/dev.d.ts +23 -0
- package/dist/story/commands/dev.js +78 -0
- package/dist/story/commands/index.d.ts +9 -0
- package/dist/story/commands/index.js +3 -0
- package/dist/story/commands/preview.d.ts +21 -0
- package/dist/story/commands/preview.js +56 -0
- package/dist/story/compiled-output.d.ts +27 -0
- package/dist/story/compiled-output.js +151 -0
- package/dist/story/composition.d.ts +47 -0
- package/dist/story/composition.js +261 -0
- package/dist/story/config-watcher.d.ts +33 -0
- package/dist/story/config-watcher.js +67 -0
- package/dist/story/config.d.ts +29 -0
- package/dist/story/config.js +64 -0
- package/dist/story/context.d.ts +27 -0
- package/dist/story/context.js +27 -0
- package/dist/story/controls/index.d.ts +54 -0
- package/dist/story/controls/index.js +320 -0
- package/dist/story/desktop-preview.d.ts +34 -0
- package/dist/story/desktop-preview.js +105 -0
- package/dist/story/docs-generator.d.ts +30 -0
- package/dist/story/docs-generator.js +187 -0
- package/dist/story/errors.d.ts +47 -0
- package/dist/story/errors.js +239 -0
- package/dist/story/figma-export.d.ts +169 -0
- package/dist/story/figma-export.js +224 -0
- package/dist/story/generator.d.ts +21 -0
- package/dist/story/generator.js +165 -0
- package/dist/story/hmr.d.ts +62 -0
- package/dist/story/hmr.js +131 -0
- package/dist/story/hot-swap.d.ts +46 -0
- package/dist/story/hot-swap.js +207 -0
- package/dist/story/index.d.ts +99 -0
- package/dist/story/index.js +49 -0
- package/dist/story/interactions.d.ts +53 -0
- package/dist/story/interactions.js +225 -0
- package/dist/story/keyboard-shortcuts.d.ts +39 -0
- package/dist/story/keyboard-shortcuts.js +345 -0
- package/dist/story/output.d.ts +115 -0
- package/dist/story/output.js +153 -0
- package/dist/story/performance.d.ts +129 -0
- package/dist/story/performance.js +252 -0
- package/dist/story/presets.d.ts +123 -0
- package/dist/story/presets.js +289 -0
- package/dist/story/props-validation.d.ts +45 -0
- package/dist/story/props-validation.js +215 -0
- package/dist/story/renderer.d.ts +69 -0
- package/dist/story/renderer.js +209 -0
- package/dist/story/search-index.d.ts +47 -0
- package/dist/story/search-index.js +106 -0
- package/dist/story/search.d.ts +56 -0
- package/dist/story/search.js +140 -0
- package/dist/story/server.d.ts +31 -0
- package/dist/story/server.js +965 -0
- package/dist/story/setup.d.ts +56 -0
- package/dist/story/setup.js +78 -0
- package/dist/story/snapshots.d.ts +65 -0
- package/dist/story/snapshots.js +171 -0
- package/dist/story/testing.d.ts +83 -0
- package/dist/story/testing.js +164 -0
- package/dist/story/theme.d.ts +68 -0
- package/dist/story/theme.js +170 -0
- package/dist/story/ts-css.d.ts +29 -0
- package/dist/story/ts-css.js +189 -0
- package/dist/story/types.d.ts +342 -0
- package/dist/story/types.js +0 -0
- package/dist/story/ui/code-panel.d.ts +43 -0
- package/dist/story/ui/code-panel.js +175 -0
- package/dist/story/ui/controls-panel.d.ts +25 -0
- package/dist/story/ui/controls-panel.js +168 -0
- package/dist/story/ui/index.d.ts +8 -0
- package/dist/story/ui/index.js +4 -0
- package/dist/story/ui/navigation.d.ts +55 -0
- package/dist/story/ui/navigation.js +250 -0
- package/dist/story/ui/preview.d.ts +46 -0
- package/dist/story/ui/preview.js +251 -0
- package/dist/story/visual-testing.d.ts +45 -0
- package/dist/story/visual-testing.js +248 -0
- package/dist/streaming.d.ts +238 -0
- package/dist/streaming.js +537 -0
- package/dist/strict-lint.d.ts +52 -0
- package/dist/strict-lint.js +269 -0
- package/dist/strip-literals.d.ts +40 -0
- package/dist/strip-literals.js +149 -0
- package/dist/stx-virtual-ts.d.ts +358 -0
- package/dist/stx-virtual-ts.js +670 -0
- package/dist/stx.d.ts +924 -0
- package/dist/style-scoping.d.ts +42 -0
- package/dist/style-scoping.js +82 -0
- package/dist/suspense.d.ts +98 -0
- package/dist/suspense.js +398 -0
- package/dist/teleport.d.ts +31 -0
- package/dist/teleport.js +109 -0
- package/dist/template-compiler.d.ts +33 -0
- package/dist/template-compiler.js +68 -0
- package/dist/template-hydrator.d.ts +28 -0
- package/dist/template-hydrator.js +95 -0
- package/dist/template-tag-balance.d.ts +32 -0
- package/dist/template-tag-balance.js +93 -0
- package/dist/testing.d.ts +330 -0
- package/dist/testing.js +588 -0
- package/dist/theme-tokens.d.ts +88 -0
- package/dist/theme-tokens.js +71 -0
- package/dist/transitions.d.ts +99 -0
- package/dist/transitions.js +443 -0
- package/dist/ts-css-config.d.ts +71 -0
- package/dist/ts-css-config.js +44 -0
- package/dist/type-checker.d.ts +85 -0
- package/dist/type-checker.js +581 -0
- package/dist/typecheck.d.ts +70 -0
- package/dist/typecheck.js +365 -0
- package/dist/types/component-types.d.ts +248 -0
- package/dist/types/component-types.js +0 -0
- package/dist/types/config-types.d.ts +938 -0
- package/dist/types/config-types.js +0 -0
- package/dist/types/context-types.d.ts +122 -0
- package/dist/types/context-types.js +0 -0
- package/dist/types/csp-types.d.ts +83 -0
- package/dist/types/csp-types.js +0 -0
- package/dist/types/directive-types.d.ts +315 -0
- package/dist/types/directive-types.js +3 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.js +1 -0
- package/dist/types/pwa-types.d.ts +338 -0
- package/dist/types/pwa-types.js +0 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.js +1 -0
- package/dist/typescript-templates.d.ts +156 -0
- package/dist/typescript-templates.js +386 -0
- package/dist/unresolved-identifiers.d.ts +52 -0
- package/dist/unresolved-identifiers.js +148 -0
- package/dist/utils.d.ts +112 -0
- package/dist/utils.js +1170 -0
- package/dist/validator.d.ts +80 -0
- package/dist/validator.js +171 -0
- package/dist/variable-extractor.d.ts +142 -0
- package/dist/variable-extractor.js +1306 -0
- package/dist/view-composers.d.ts +171 -0
- package/dist/view-composers.js +29 -0
- package/dist/virtual-scrolling.d.ts +127 -0
- package/dist/virtual-scrolling.js +454 -0
- package/dist/visual-editor.d.ts +185 -0
- package/dist/visual-editor.js +735 -0
- package/dist/visual-testing.d.ts +135 -0
- package/dist/visual-testing.js +126 -0
- package/dist/vue-template.d.ts +39 -0
- package/dist/vue-template.js +476 -0
- package/dist/web-components/css-scoping.d.ts +64 -0
- package/dist/web-components/css-scoping.js +210 -0
- package/dist/web-components/index.d.ts +29 -0
- package/dist/web-components/index.js +13 -0
- package/dist/web-components/reactive-generator.d.ts +72 -0
- package/dist/web-components/reactive-generator.js +484 -0
- package/dist/web-components.d.ts +253 -0
- package/dist/web-components.js +1466 -0
- package/dist/x-element.d.ts +42 -0
- package/dist/x-element.js +301 -0
- package/package.json +107 -0
- package/stx.d.ts +924 -0
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
const componentRegistry = new Map, componentCache = new Map;
|
|
2
|
+
export function registerServerComponent(component) {
|
|
3
|
+
componentRegistry.set(component.name, {
|
|
4
|
+
component,
|
|
5
|
+
type: "server"
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
export function registerClientComponent(component) {
|
|
9
|
+
componentRegistry.set(component.name, {
|
|
10
|
+
component,
|
|
11
|
+
type: "client"
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export function getComponent(name) {
|
|
15
|
+
return componentRegistry.get(name);
|
|
16
|
+
}
|
|
17
|
+
export function hasComponent(name) {
|
|
18
|
+
return componentRegistry.has(name);
|
|
19
|
+
}
|
|
20
|
+
export function getComponentNames() {
|
|
21
|
+
return Array.from(componentRegistry.keys());
|
|
22
|
+
}
|
|
23
|
+
export function clearComponents() {
|
|
24
|
+
componentRegistry.clear();
|
|
25
|
+
componentCache.clear();
|
|
26
|
+
}
|
|
27
|
+
function generateCacheKey(name, props) {
|
|
28
|
+
const propsHash = JSON.stringify(props);
|
|
29
|
+
return `${name}:${hashString(propsHash)}`;
|
|
30
|
+
}
|
|
31
|
+
function hashString(str) {
|
|
32
|
+
let hash = 0;
|
|
33
|
+
for (let i = 0;i < str.length; i++) {
|
|
34
|
+
const char = str.charCodeAt(i);
|
|
35
|
+
hash = (hash << 5) - hash + char;
|
|
36
|
+
hash = hash | 0;
|
|
37
|
+
}
|
|
38
|
+
return Math.abs(hash).toString(36);
|
|
39
|
+
}
|
|
40
|
+
function getCached(name, props, config) {
|
|
41
|
+
if (!config?.enabled)
|
|
42
|
+
return null;
|
|
43
|
+
const key = (config.keyGenerator || ((p) => generateCacheKey(name, p)))(props), cached = componentCache.get(key);
|
|
44
|
+
if (!cached)
|
|
45
|
+
return null;
|
|
46
|
+
const now = Date.now(), ttl = config.ttl || 60000;
|
|
47
|
+
if (now - cached.timestamp > ttl) {
|
|
48
|
+
if (config.staleWhileRevalidate)
|
|
49
|
+
return { html: cached.html, data: cached.data };
|
|
50
|
+
componentCache.delete(key);
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return { html: cached.html, data: cached.data };
|
|
54
|
+
}
|
|
55
|
+
function setCached(name, props, html, data, config) {
|
|
56
|
+
if (!config?.enabled)
|
|
57
|
+
return;
|
|
58
|
+
const key = (config.keyGenerator || ((p) => generateCacheKey(name, p)))(props);
|
|
59
|
+
componentCache.set(key, {
|
|
60
|
+
html,
|
|
61
|
+
timestamp: Date.now(),
|
|
62
|
+
data
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
export function clearComponentCache(name) {
|
|
66
|
+
if (name) {
|
|
67
|
+
for (const key of componentCache.keys())
|
|
68
|
+
if (key.startsWith(`${name}:`))
|
|
69
|
+
componentCache.delete(key);
|
|
70
|
+
} else
|
|
71
|
+
componentCache.clear();
|
|
72
|
+
}
|
|
73
|
+
export async function renderServerComponent(name, options = {}) {
|
|
74
|
+
const startTime = performance.now(), { props = {}, signal } = options, entry = componentRegistry.get(name);
|
|
75
|
+
if (!entry)
|
|
76
|
+
throw Error(`Server component "${name}" not found`);
|
|
77
|
+
if (entry.type !== "server")
|
|
78
|
+
throw Error(`Component "${name}" is not a server component`);
|
|
79
|
+
const component = entry.component, cached = getCached(name, props, component.cache);
|
|
80
|
+
if (cached)
|
|
81
|
+
return {
|
|
82
|
+
html: cached.html,
|
|
83
|
+
renderTime: performance.now() - startTime,
|
|
84
|
+
data: cached.data,
|
|
85
|
+
dependencies: component.dependencies || [],
|
|
86
|
+
cached: !0
|
|
87
|
+
};
|
|
88
|
+
if (signal?.aborted)
|
|
89
|
+
throw Error("Render aborted");
|
|
90
|
+
try {
|
|
91
|
+
let data = { ...props };
|
|
92
|
+
if (component.loader)
|
|
93
|
+
data = {
|
|
94
|
+
...data,
|
|
95
|
+
...await component.loader(props)
|
|
96
|
+
};
|
|
97
|
+
const html = await processServerTemplate(component.template, data);
|
|
98
|
+
setCached(name, props, html, data, component.cache);
|
|
99
|
+
return {
|
|
100
|
+
html,
|
|
101
|
+
renderTime: performance.now() - startTime,
|
|
102
|
+
data,
|
|
103
|
+
dependencies: component.dependencies || [],
|
|
104
|
+
cached: !1
|
|
105
|
+
};
|
|
106
|
+
} catch (error) {
|
|
107
|
+
if (component.errorBoundary)
|
|
108
|
+
return {
|
|
109
|
+
html: await processServerTemplate(component.errorBoundary, {
|
|
110
|
+
error: error instanceof Error ? error.message : String(error),
|
|
111
|
+
...props
|
|
112
|
+
}),
|
|
113
|
+
renderTime: performance.now() - startTime,
|
|
114
|
+
dependencies: component.dependencies || [],
|
|
115
|
+
cached: !1
|
|
116
|
+
};
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export async function renderClientComponent(name, options = {}) {
|
|
121
|
+
const startTime = performance.now(), { props = {} } = options, entry = componentRegistry.get(name);
|
|
122
|
+
if (!entry)
|
|
123
|
+
throw Error(`Client component "${name}" not found`);
|
|
124
|
+
if (entry.type !== "client")
|
|
125
|
+
throw Error(`Component "${name}" is not a client component`);
|
|
126
|
+
const component = entry.component, id = `cc-${name}-${Math.random().toString(36).slice(2, 9)}`, innerHtml = await processServerTemplate(component.template, props), clientPropsData = {};
|
|
127
|
+
if (component.clientProps) {
|
|
128
|
+
for (const prop of component.clientProps)
|
|
129
|
+
if (prop in props)
|
|
130
|
+
clientPropsData[prop] = props[prop];
|
|
131
|
+
}
|
|
132
|
+
const html = `<div data-client-component="${name}" data-component-id="${id}" data-priority="${component.priority || "lazy"}">
|
|
133
|
+
${innerHtml}
|
|
134
|
+
<script type="application/json" data-component-props="${id}">${JSON.stringify(clientPropsData)}</script>
|
|
135
|
+
</div>`, hydrationScript = component.clientScript ? `<script type="module" data-component-script="${id}">${component.clientScript}</script>` : void 0;
|
|
136
|
+
return {
|
|
137
|
+
html,
|
|
138
|
+
renderTime: performance.now() - startTime,
|
|
139
|
+
data: props,
|
|
140
|
+
dependencies: [],
|
|
141
|
+
cached: !1,
|
|
142
|
+
hydrationScript
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
export async function renderComponent(name, options = {}) {
|
|
146
|
+
const entry = componentRegistry.get(name);
|
|
147
|
+
if (!entry)
|
|
148
|
+
throw Error(`Component "${name}" not found`);
|
|
149
|
+
if (entry.type === "server")
|
|
150
|
+
return renderServerComponent(name, options);
|
|
151
|
+
else
|
|
152
|
+
return renderClientComponent(name, options);
|
|
153
|
+
}
|
|
154
|
+
const suspenseStates = new Map;
|
|
155
|
+
export function cleanupSuspenseStates() {
|
|
156
|
+
for (const [id, state] of suspenseStates)
|
|
157
|
+
if (state.status === "resolved" || state.status === "error")
|
|
158
|
+
suspenseStates.delete(id);
|
|
159
|
+
}
|
|
160
|
+
export function createSuspenseBoundary(id, fallback) {
|
|
161
|
+
const state = {
|
|
162
|
+
id,
|
|
163
|
+
status: "pending"
|
|
164
|
+
};
|
|
165
|
+
suspenseStates.set(id, state);
|
|
166
|
+
return {
|
|
167
|
+
wrap: async (promise) => {
|
|
168
|
+
state.promise = promise;
|
|
169
|
+
try {
|
|
170
|
+
state.result = await promise;
|
|
171
|
+
state.status = "resolved";
|
|
172
|
+
return state.result;
|
|
173
|
+
} catch (error) {
|
|
174
|
+
state.error = error instanceof Error ? error : Error(String(error));
|
|
175
|
+
state.status = "error";
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
getFallback: () => fallback
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
export function getSuspenseState(id) {
|
|
183
|
+
return suspenseStates.get(id);
|
|
184
|
+
}
|
|
185
|
+
export function clearSuspenseState(id) {
|
|
186
|
+
if (id)
|
|
187
|
+
suspenseStates.delete(id);
|
|
188
|
+
else
|
|
189
|
+
suspenseStates.clear();
|
|
190
|
+
}
|
|
191
|
+
export function createStreamingRenderer(components, options = {}) {
|
|
192
|
+
return {
|
|
193
|
+
renderToStream: () => {
|
|
194
|
+
return new ReadableStream({
|
|
195
|
+
async start(controller) {
|
|
196
|
+
for (const name of components)
|
|
197
|
+
try {
|
|
198
|
+
const result = await renderComponent(name, options);
|
|
199
|
+
controller.enqueue(result.html);
|
|
200
|
+
if (result.hydrationScript)
|
|
201
|
+
controller.enqueue(result.hydrationScript);
|
|
202
|
+
} catch (error) {
|
|
203
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
204
|
+
controller.enqueue(`<!-- Error rendering ${name}: ${message} -->`);
|
|
205
|
+
}
|
|
206
|
+
controller.close();
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
},
|
|
210
|
+
renderToString: async () => {
|
|
211
|
+
const parts = [];
|
|
212
|
+
for (const name of components)
|
|
213
|
+
try {
|
|
214
|
+
const result = await renderComponent(name, options);
|
|
215
|
+
parts.push(result.html);
|
|
216
|
+
if (result.hydrationScript)
|
|
217
|
+
parts.push(result.hydrationScript);
|
|
218
|
+
} catch (error) {
|
|
219
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
220
|
+
parts.push(`<!-- Error rendering ${name}: ${message} -->`);
|
|
221
|
+
}
|
|
222
|
+
return parts.join(`
|
|
223
|
+
`);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
async function processServerTemplate(template, context) {
|
|
228
|
+
let result = template;
|
|
229
|
+
result = result.replace(/@foreach\s*\((\w+(?:\.\w+)*)\s+as\s+(\w+)\)([\s\S]*?)@endforeach/g, (_match, arrayExpr, itemVar, content) => {
|
|
230
|
+
const array = getNestedValue(context, arrayExpr.trim());
|
|
231
|
+
if (!Array.isArray(array))
|
|
232
|
+
return "";
|
|
233
|
+
return array.map((item, index) => {
|
|
234
|
+
const itemContext = { ...context, [itemVar]: item, loop: { index, first: index === 0, last: index === array.length - 1 } };
|
|
235
|
+
return processServerTemplateSync(content, itemContext);
|
|
236
|
+
}).join("");
|
|
237
|
+
});
|
|
238
|
+
result = result.replace(/@if\s*\(([^)]+)\)([\s\S]*?)@endif/g, (_match, condition, content) => {
|
|
239
|
+
return evaluateCondition(condition.trim(), context) ? content : "";
|
|
240
|
+
});
|
|
241
|
+
result = result.replace(/\{\{([^}]+)\}\}/g, (match, expr) => {
|
|
242
|
+
const trimmed = expr.trim();
|
|
243
|
+
if (trimmed.startsWith("await ")) {
|
|
244
|
+
const varName = trimmed.slice(6).split("(")[0].trim();
|
|
245
|
+
return String(context[varName] ?? match);
|
|
246
|
+
}
|
|
247
|
+
const parts = trimmed.split(".");
|
|
248
|
+
let value = context;
|
|
249
|
+
for (const part of parts) {
|
|
250
|
+
if (value === null || value === void 0)
|
|
251
|
+
break;
|
|
252
|
+
value = value[part];
|
|
253
|
+
}
|
|
254
|
+
if (value === void 0 || value === null)
|
|
255
|
+
return "";
|
|
256
|
+
return escapeHtmlValue(String(value));
|
|
257
|
+
});
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
function processServerTemplateSync(template, context) {
|
|
261
|
+
let result = template;
|
|
262
|
+
result = result.replace(/\{\{([^}]+)\}\}/g, (_match, expr) => {
|
|
263
|
+
const value = getNestedValue(context, expr.trim());
|
|
264
|
+
if (value === void 0 || value === null)
|
|
265
|
+
return "";
|
|
266
|
+
return escapeHtmlValue(String(value));
|
|
267
|
+
});
|
|
268
|
+
return result;
|
|
269
|
+
}
|
|
270
|
+
function getNestedValue(obj, path) {
|
|
271
|
+
const parts = path.split(".");
|
|
272
|
+
let value = obj;
|
|
273
|
+
for (const part of parts) {
|
|
274
|
+
if (value === null || value === void 0)
|
|
275
|
+
return;
|
|
276
|
+
value = value[part];
|
|
277
|
+
}
|
|
278
|
+
return value;
|
|
279
|
+
}
|
|
280
|
+
function evaluateCondition(condition, context) {
|
|
281
|
+
const value = getNestedValue(context, condition);
|
|
282
|
+
return Boolean(value);
|
|
283
|
+
}
|
|
284
|
+
function escapeHtml(str) {
|
|
285
|
+
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
286
|
+
}
|
|
287
|
+
function escapeHtmlValue(str) {
|
|
288
|
+
return escapeHtml(str).replace(/\{{2,}/g, (match) => Array.from({ length: match.length }, () => "{").join("⁠")).replace(/\{(?=!)/g, "{⁠");
|
|
289
|
+
}
|
|
290
|
+
export const serverComponentDirective = {
|
|
291
|
+
name: "serverComponent",
|
|
292
|
+
hasEndTag: !0,
|
|
293
|
+
handler: (content, params, _context, _filePath) => {
|
|
294
|
+
if (!params || params.length === 0)
|
|
295
|
+
throw Error("@serverComponent requires a name parameter");
|
|
296
|
+
const name = params[0].replace(/['"`]/g, ""), id = `sc-${name}-${Math.random().toString(36).slice(2, 9)}`;
|
|
297
|
+
registerServerComponent({
|
|
298
|
+
name,
|
|
299
|
+
template: content
|
|
300
|
+
});
|
|
301
|
+
return `<div data-server-component="${name}" data-component-id="${id}">${content}</div>`;
|
|
302
|
+
}
|
|
303
|
+
}, clientComponentDirective = {
|
|
304
|
+
name: "clientComponent",
|
|
305
|
+
hasEndTag: !0,
|
|
306
|
+
handler: (content, params, _context, _filePath) => {
|
|
307
|
+
if (!params || params.length === 0)
|
|
308
|
+
throw Error("@clientComponent requires a name parameter");
|
|
309
|
+
const name = params[0].replace(/['"`]/g, ""), priority = params[1]?.replace(/['"`]/g, ""), id = `cc-${name}-${Math.random().toString(36).slice(2, 9)}`, scriptMatch = content.match(/<script\b[^>]*>([\s\S]*?)<\/script>/i), clientScript = scriptMatch ? scriptMatch[1] : void 0, templateContent = scriptMatch ? content.replace(scriptMatch[0], "") : content;
|
|
310
|
+
registerClientComponent({
|
|
311
|
+
name,
|
|
312
|
+
template: templateContent,
|
|
313
|
+
clientScript,
|
|
314
|
+
priority: priority || "lazy"
|
|
315
|
+
});
|
|
316
|
+
return `<div data-client-component="${name}" data-component-id="${id}" data-priority="${priority || "lazy"}">
|
|
317
|
+
${templateContent}
|
|
318
|
+
</div>`;
|
|
319
|
+
}
|
|
320
|
+
}, suspenseDirective = {
|
|
321
|
+
name: "suspense",
|
|
322
|
+
hasEndTag: !0,
|
|
323
|
+
handler: (content, params, _context, _filePath) => {
|
|
324
|
+
const fallback = params[0]?.replace(/['"`]/g, "") || "Loading...", id = `suspense-${Math.random().toString(36).slice(2, 9)}`;
|
|
325
|
+
createSuspenseBoundary(id, fallback);
|
|
326
|
+
return `<div data-suspense="${id}" data-fallback="${escapeHtml(fallback)}">
|
|
327
|
+
${content}
|
|
328
|
+
</div>`;
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
export function registerServerComponentDirectives() {
|
|
332
|
+
return [
|
|
333
|
+
serverComponentDirective,
|
|
334
|
+
clientComponentDirective,
|
|
335
|
+
suspenseDirective
|
|
336
|
+
];
|
|
337
|
+
}
|
|
338
|
+
export function generateServerComponentsRuntime() {
|
|
339
|
+
return `
|
|
340
|
+
(function() {
|
|
341
|
+
'use strict';
|
|
342
|
+
|
|
343
|
+
const stxServerComponents = {
|
|
344
|
+
components: new Map(),
|
|
345
|
+
|
|
346
|
+
registerComponent(name, hydrator) {
|
|
347
|
+
this.components.set(name, hydrator);
|
|
348
|
+
},
|
|
349
|
+
|
|
350
|
+
hydrateComponent(element) {
|
|
351
|
+
const name = element.dataset.clientComponent;
|
|
352
|
+
const id = element.dataset.componentId;
|
|
353
|
+
const hydrator = this.components.get(name);
|
|
354
|
+
|
|
355
|
+
if (!hydrator) {
|
|
356
|
+
console.warn('[stx] No hydrator for component:', name);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
const propsEl = element.querySelector('[data-component-props="' + id + '"]');
|
|
361
|
+
const props = propsEl ? JSON.parse(propsEl.textContent || '{}') : {};
|
|
362
|
+
|
|
363
|
+
try {
|
|
364
|
+
hydrator(element, props);
|
|
365
|
+
element.dataset.hydrated = 'true';
|
|
366
|
+
}
|
|
367
|
+
catch (error) {
|
|
368
|
+
console.error('[stx] Hydration error:', name, error);
|
|
369
|
+
}
|
|
370
|
+
},
|
|
371
|
+
|
|
372
|
+
hydrateAll() {
|
|
373
|
+
const components = document.querySelectorAll('[data-client-component]');
|
|
374
|
+
const eager = [];
|
|
375
|
+
const lazy = [];
|
|
376
|
+
const idle = [];
|
|
377
|
+
|
|
378
|
+
components.forEach(el => {
|
|
379
|
+
const priority = el.dataset.priority || 'lazy';
|
|
380
|
+
if (priority === 'eager') eager.push(el);
|
|
381
|
+
else if (priority === 'idle') idle.push(el);
|
|
382
|
+
else lazy.push(el);
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
// Hydrate eager immediately
|
|
386
|
+
eager.forEach(el => this.hydrateComponent(el));
|
|
387
|
+
|
|
388
|
+
// Hydrate lazy on intersection
|
|
389
|
+
if (lazy.length && 'IntersectionObserver' in window) {
|
|
390
|
+
const observer = new IntersectionObserver(entries => {
|
|
391
|
+
entries.forEach(entry => {
|
|
392
|
+
if (entry.isIntersecting) {
|
|
393
|
+
observer.unobserve(entry.target);
|
|
394
|
+
this.hydrateComponent(entry.target);
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
}, { rootMargin: '50px' });
|
|
398
|
+
lazy.forEach(el => observer.observe(el));
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
lazy.forEach(el => this.hydrateComponent(el));
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// Hydrate idle during browser idle
|
|
405
|
+
if (idle.length && 'requestIdleCallback' in window) {
|
|
406
|
+
requestIdleCallback(() => {
|
|
407
|
+
idle.forEach(el => this.hydrateComponent(el));
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
setTimeout(() => {
|
|
412
|
+
idle.forEach(el => this.hydrateComponent(el));
|
|
413
|
+
}, 100);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
window.__stxServerComponents = stxServerComponents;
|
|
419
|
+
|
|
420
|
+
if (document.readyState === 'loading') {
|
|
421
|
+
document.addEventListener('DOMContentLoaded', () => stxServerComponents.hydrateAll());
|
|
422
|
+
}
|
|
423
|
+
else {
|
|
424
|
+
stxServerComponents.hydrateAll();
|
|
425
|
+
}
|
|
426
|
+
})();`;
|
|
427
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locate the explicit wrapper `<template>` in an STX single-file component.
|
|
3
|
+
*
|
|
4
|
+
* A bare `<template>` can be an SFC wrapper, while a template carrying a
|
|
5
|
+
* client directive (`:for`, `@if`, `x-else`, slots, or an id) is runtime DOM
|
|
6
|
+
* and must stay in the rendered body. Keeping this distinction in one scanner
|
|
7
|
+
* avoids subtle regex boundary bugs for punctuation-prefixed attributes.
|
|
8
|
+
*/
|
|
9
|
+
export interface SfcTemplateBlock {
|
|
10
|
+
start: number;
|
|
11
|
+
openEnd: number;
|
|
12
|
+
closeStart: number;
|
|
13
|
+
end: number;
|
|
14
|
+
content: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function isClientTemplateTag(openingTag: string): boolean;
|
|
17
|
+
export declare function findSfcTemplateBlock(source: string): SfcTemplateBlock | null;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const TEMPLATE_TAG_RE = /<\/?template\b[^>]*>/gi, CLIENT_TEMPLATE_ATTRIBUTE_RE = /(?:^|\s)(?:id\s*=|(?:x-|[@:])(?:for|if|else(?:-if)?)(?=\s|=|$)|#[\w-]+(?:\s*=|\s|$)|v-slot(?::[\w-]+)?(?=\s|=|$)|slot\s*=)/i;
|
|
2
|
+
export function isClientTemplateTag(openingTag) {
|
|
3
|
+
const attrs = openingTag.replace(/^<template\b/i, "").replace(/>$/, "");
|
|
4
|
+
return CLIENT_TEMPLATE_ATTRIBUTE_RE.test(attrs);
|
|
5
|
+
}
|
|
6
|
+
export function findSfcTemplateBlock(source) {
|
|
7
|
+
TEMPLATE_TAG_RE.lastIndex = 0;
|
|
8
|
+
let opening;
|
|
9
|
+
while ((opening = TEMPLATE_TAG_RE.exec(source)) !== null) {
|
|
10
|
+
if (opening[0].startsWith("</") || isClientTemplateTag(opening[0]))
|
|
11
|
+
continue;
|
|
12
|
+
const start = opening.index, openEnd = TEMPLATE_TAG_RE.lastIndex;
|
|
13
|
+
let depth = 1, nested;
|
|
14
|
+
while ((nested = TEMPLATE_TAG_RE.exec(source)) !== null)
|
|
15
|
+
if (nested[0].startsWith("</")) {
|
|
16
|
+
depth--;
|
|
17
|
+
if (depth === 0) {
|
|
18
|
+
const closeStart = nested.index;
|
|
19
|
+
return {
|
|
20
|
+
start,
|
|
21
|
+
openEnd,
|
|
22
|
+
closeStart,
|
|
23
|
+
end: TEMPLATE_TAG_RE.lastIndex,
|
|
24
|
+
content: source.slice(openEnd, closeStart)
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
} else
|
|
28
|
+
depth++;
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signal Processing Module
|
|
3
|
+
*
|
|
4
|
+
* Handles detection, conversion, and setup of STX signals in templates.
|
|
5
|
+
* Converts directive-style syntax (@if, @for) to attribute-style for the
|
|
6
|
+
* client-side signals runtime, and wraps signal scripts in setup functions.
|
|
7
|
+
*
|
|
8
|
+
* @module signal-processing
|
|
9
|
+
*/
|
|
10
|
+
import type { StxOptions } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* Scan a template for `<script>` tags in browser order: each opening tag is
|
|
13
|
+
* closed by the **first** subsequent `</script>` (case-insensitive), and the
|
|
14
|
+
* scanner then continues from after that close tag. This matches how HTML
|
|
15
|
+
* parsers tokenize `<script>` as a RAWTEXT element — they don't re-scan the
|
|
16
|
+
* body for more `<script` openings.
|
|
17
|
+
*
|
|
18
|
+
* A plain regex like `/<script[^>]*>([\s\S]*?)<\/script>/g` doesn't give you
|
|
19
|
+
* this property: if a script body contains the literal text `<script client>`
|
|
20
|
+
* (e.g. inside a JS comment), the regex matches it as a fresh script tag,
|
|
21
|
+
* which breaks downstream TypeScript transpilation and directive parsing.
|
|
22
|
+
*
|
|
23
|
+
* `skipAttrs` lets callers drop tags whose attribute string contains certain
|
|
24
|
+
* patterns (e.g. `server`, `src=`, `data-stx-scoped`).
|
|
25
|
+
*/
|
|
26
|
+
export interface ScannedScriptTag {
|
|
27
|
+
readonly fullMatch: string;
|
|
28
|
+
readonly attrs: string;
|
|
29
|
+
readonly body: string;
|
|
30
|
+
readonly start: number;
|
|
31
|
+
readonly end: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Drop cached script scans.
|
|
35
|
+
*
|
|
36
|
+
* Nothing in the framework calls this, and nothing needs to. Entries are keyed
|
|
37
|
+
* on the input document itself, so an edited template is a different key and
|
|
38
|
+
* can never be answered with a stale result -- there is no invalidation to
|
|
39
|
+
* perform. It exists for callers that want a cold cache, such as tests.
|
|
40
|
+
*/
|
|
41
|
+
export declare function clearScriptScanCache(): void;
|
|
42
|
+
export declare function scanScriptTags(html: string, opts?: {
|
|
43
|
+
skipAttrs?: RegExp;
|
|
44
|
+
}): ScannedScriptTag[];
|
|
45
|
+
/**
|
|
46
|
+
* Parsed form of a loop expression (`@for` / `@foreach` argument).
|
|
47
|
+
*
|
|
48
|
+
* `style: 'as'` — "iterable as item" / "iterable as idx => item" / "iterable as (item, idx)"
|
|
49
|
+
* `style: 'in'` — "item in iterable" / "(item, idx) in iterable" / "item of iterable"
|
|
50
|
+
* `style: 'unknown'` — fell through all parsers; iterable is `null`
|
|
51
|
+
*/
|
|
52
|
+
export interface ParsedLoopExpression {
|
|
53
|
+
style: 'as' | 'in' | 'unknown';
|
|
54
|
+
iterable: string | null;
|
|
55
|
+
itemVar: string | null;
|
|
56
|
+
indexVar: string | null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Parse a loop argument — accepts every syntax stx supports at runtime.
|
|
60
|
+
*
|
|
61
|
+
* ```
|
|
62
|
+
* parseLoopExpression('items as item') → { style:'as', iterable:'items', itemVar:'item', indexVar:null }
|
|
63
|
+
* parseLoopExpression('items as idx => item') → { style:'as', iterable:'items', itemVar:'item', indexVar:'idx' }
|
|
64
|
+
* parseLoopExpression('items as item, idx') → { style:'as', iterable:'items', itemVar:'item', indexVar:'idx' }
|
|
65
|
+
* parseLoopExpression('items as (item, idx)') → { style:'as', iterable:'items', itemVar:'item', indexVar:'idx' }
|
|
66
|
+
* parseLoopExpression('obj.list as item') → { style:'as', iterable:'obj.list', itemVar:'item', indexVar:null }
|
|
67
|
+
* parseLoopExpression('item in items') → { style:'in', iterable:'items', itemVar:'item', indexVar:null }
|
|
68
|
+
* parseLoopExpression('(item, idx) in items') → { style:'in', iterable:'items', itemVar:'item', indexVar:'idx' }
|
|
69
|
+
* parseLoopExpression('item of items') → { style:'in', iterable:'items', itemVar:'item', indexVar:null }
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function parseLoopExpression(expr: string): ParsedLoopExpression;
|
|
73
|
+
/**
|
|
74
|
+
* Check if template uses STX signals syntax.
|
|
75
|
+
*
|
|
76
|
+
* STX directives work seamlessly on both server and client:
|
|
77
|
+
* - `@if`, `@else` - Conditional rendering
|
|
78
|
+
* - `@for` - List iteration
|
|
79
|
+
* - `@show` - Toggle visibility (keeps element in DOM)
|
|
80
|
+
* - `@model` - Two-way binding
|
|
81
|
+
* - `@bind:attr` - Dynamic attribute binding
|
|
82
|
+
* - `@class`, `@style` - Dynamic class/style binding
|
|
83
|
+
* - `@click`, `@submit` - Event handling
|
|
84
|
+
* - Scripts containing `state(`, `derived(`, `effect(` - Signal APIs
|
|
85
|
+
*
|
|
86
|
+
* Server-side directives are processed at build time.
|
|
87
|
+
* Remaining directives with reactive values are handled by the client runtime.
|
|
88
|
+
*/
|
|
89
|
+
export declare function hasSignalsSyntax(template: string, filePath?: string): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Convert @if(expr)...@endif directive blocks to attribute-style for signal templates.
|
|
92
|
+
*
|
|
93
|
+
* This allows the signals runtime to handle reactive conditionals instead of
|
|
94
|
+
* evaluating them at build time with mock values. `@if`/`v-if` (which compiles to
|
|
95
|
+
* `@if`) thus behave as interchangeable sugar for `:if` on signal pages — including
|
|
96
|
+
* `@if`/`@elseif`/`@else` chains, which become a reactive sibling chain driven by
|
|
97
|
+
* the runtime's `findIfChain`/`bindIfChain` (it already understands `@else-if`/`@else`).
|
|
98
|
+
*
|
|
99
|
+
* Converts:
|
|
100
|
+
* @if(loading())
|
|
101
|
+
* <div>Loading...</div>
|
|
102
|
+
* @endif
|
|
103
|
+
*
|
|
104
|
+
* To:
|
|
105
|
+
* <template @if="loading()">
|
|
106
|
+
* <div>Loading...</div>
|
|
107
|
+
* </template>
|
|
108
|
+
*
|
|
109
|
+
* And a branching chain:
|
|
110
|
+
* @if(a()) <p>A</p> @elseif(b()) <p>B</p> @else <p>C</p> @endif
|
|
111
|
+
*
|
|
112
|
+
* To adjacent siblings the runtime walks via nextElementSibling:
|
|
113
|
+
* <p @if="a()">A</p>
|
|
114
|
+
* <p @else-if="b()">B</p>
|
|
115
|
+
* <p @else>C</p>
|
|
116
|
+
*
|
|
117
|
+
* Note: Uses <template> wrapper for branches with multiple children or text nodes.
|
|
118
|
+
*/
|
|
119
|
+
export declare function convertSignalDirectivesToAttributes(template: string, context?: Record<string, any>): string;
|
|
120
|
+
/**
|
|
121
|
+
* SSR pre-eval for literal-valued reactive conditional attributes
|
|
122
|
+
* (stacksjs/stx#1739, Phase A).
|
|
123
|
+
*
|
|
124
|
+
* The reactive `:if` / `:show` family (and the `x-if` / `x-show` /
|
|
125
|
+
* attribute-form `@if` aliases) is normally bound at runtime via
|
|
126
|
+
* `bindIf` / `bindShow`. When the attribute value is a pure literal
|
|
127
|
+
* — feature-flag constants like `:if="false"`, dev-only debug blocks
|
|
128
|
+
* like `:if="true"`, etc. — there's no reason to ship the element +
|
|
129
|
+
* runtime binding. Pre-evaluate and:
|
|
130
|
+
*
|
|
131
|
+
* - truthy literal ⇒ strip the attribute, keep the element
|
|
132
|
+
* - falsy literal ⇒ drop the element entirely (children included)
|
|
133
|
+
*
|
|
134
|
+
* Phase A intentionally handles ONE element at a time — `:else-if` /
|
|
135
|
+
* `:else` chain rebalancing is Phase B. So `:if="false"` with a sibling
|
|
136
|
+
* `:else` still drops the if-element; the else still emits as it would
|
|
137
|
+
* have, and the runtime picks correctly (chains where the first
|
|
138
|
+
* branch is gone become "always show the else branch").
|
|
139
|
+
*
|
|
140
|
+
* Skips:
|
|
141
|
+
* - non-literal expressions (let the runtime own them)
|
|
142
|
+
* - the block-form `@if(...)@endif` directive — that has its own
|
|
143
|
+
* server-side handler (`processConditionals`)
|
|
144
|
+
* - elements inside `<script>` / `<style>` bodies
|
|
145
|
+
*/
|
|
146
|
+
export declare function preEvalLiteralReactiveIfs(template: string): string;
|
|
147
|
+
/**
|
|
148
|
+
* Convert @for(item in items())...@endfor directive blocks to attribute-style.
|
|
149
|
+
*
|
|
150
|
+
* Converts:
|
|
151
|
+
* @for(item in items())
|
|
152
|
+
* <div>{{ item.name }}</div>
|
|
153
|
+
* @endfor
|
|
154
|
+
*
|
|
155
|
+
* To:
|
|
156
|
+
* <template @for="item in items()">
|
|
157
|
+
* <div>{{ item.name }}</div>
|
|
158
|
+
* </template>
|
|
159
|
+
*/
|
|
160
|
+
export declare function convertSignalLoopsToAttributes(template: string, context?: Record<string, any>): string;
|
|
161
|
+
export declare function processScriptSetup(template: string, filePath?: string, serverData?: Record<string, unknown>): Promise<{
|
|
162
|
+
output: string;
|
|
163
|
+
setupCode: string | null;
|
|
164
|
+
}>;
|
|
165
|
+
/**
|
|
166
|
+
* Extract exported variable names from setup script.
|
|
167
|
+
* Returns variables that should be exposed to the template.
|
|
168
|
+
* Only extracts TOP-LEVEL declarations, not variables inside nested functions.
|
|
169
|
+
*/
|
|
170
|
+
export declare function extractExports(setupContent: string): string;
|
|
171
|
+
/**
|
|
172
|
+
* Main orchestrator for signal processing.
|
|
173
|
+
*
|
|
174
|
+
* Detects signal syntax, wraps scripts in setup functions, and injects the
|
|
175
|
+
* signals runtime. Browser helpers and model bootstraps enter the same client
|
|
176
|
+
* bundle as the setup code, so rendered pages never depend on bare specifiers.
|
|
177
|
+
*/
|
|
178
|
+
export declare function processSignals(template: string, options: StxOptions, filePath?: string, serverData?: Record<string, unknown>): Promise<string>;
|
|
179
|
+
/**
|
|
180
|
+
* Index of the first `pattern` match in `html` that is not inside a `<script>`
|
|
181
|
+
* or `<style>` block, or -1 when every match is embedded.
|
|
182
|
+
*
|
|
183
|
+
* Markup landmarks cannot be located with a plain `indexOf` / `String.replace`
|
|
184
|
+
* once a runtime has been inlined: those scripts are hundreds of kilobytes of
|
|
185
|
+
* JavaScript that legitimately mention `<body>` and `</head>` in comments,
|
|
186
|
+
* strings and regex literals. Anchoring on the first textual hit splices
|
|
187
|
+
* generated markup into the middle of a script tag, which both corrupts the
|
|
188
|
+
* script and — when the inserted markup contains `</script>` — silently ends
|
|
189
|
+
* the tag early.
|
|
190
|
+
*/
|
|
191
|
+
export declare function findMarkupIndexOutsideScripts(html: string, pattern: RegExp): number;
|
|
192
|
+
/**
|
|
193
|
+
* Turn the specifier list of an `import { … } from 'stx'` into local aliases.
|
|
194
|
+
*
|
|
195
|
+
* The setup function already destructures the stx API from `window.stx`, so a
|
|
196
|
+
* plain `{ state }` specifier needs nothing. A RENAMED one does: when the
|
|
197
|
+
* bundler inlines a composable that imports a name the outer script already
|
|
198
|
+
* binds, it emits `import { state as state2 } from '@stacksjs/stx'`. Dropping
|
|
199
|
+
* that line loses the mapping and every `state2(…)` call in the inlined module
|
|
200
|
+
* throws `state2 is not defined` — which aborts the whole setup, so no
|
|
201
|
+
* directive on the page ever binds.
|
|
202
|
+
*
|
|
203
|
+
* Type-only specifiers are erased: they have no runtime binding to alias.
|
|
204
|
+
*/
|
|
205
|
+
export declare function rewriteStxImportSpecifiers(specifiers: string): string;
|
|
206
|
+
/**
|
|
207
|
+
* Strip the runtime imports a bundled client script carries, keeping aliases.
|
|
208
|
+
*
|
|
209
|
+
* Every wrapper that hosts bundled client code destructures the stx API from
|
|
210
|
+
* `window.stx` first, so a plain specifier needs no binding and the line can
|
|
211
|
+
* go. A renamed one (`state as state2`) must survive as a local alias or the
|
|
212
|
+
* inlined module's calls throw.
|
|
213
|
+
*
|
|
214
|
+
* Shared by all three wrapping paths — the merged page setup below, the
|
|
215
|
+
* component renderer in utils.ts, and the include/partial renderer in
|
|
216
|
+
* includes.ts. It lives in one place because it did not: includes.ts had no
|
|
217
|
+
* strip at all, so a partial whose `<script client>` imported a composable
|
|
218
|
+
* that imports from 'stx' emitted a bare `import` into a classic script and
|
|
219
|
+
* threw `SyntaxError: Cannot use import statement outside a module`, killing
|
|
220
|
+
* that scope's hydration on every page the partial appeared on.
|
|
221
|
+
*/
|
|
222
|
+
export declare function stripStxRuntimeImports(code: string): string;
|