@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,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STX Signals API — module-import path for reactive primitives.
|
|
3
|
+
* =============================================================
|
|
4
|
+
*
|
|
5
|
+
* This module exports `state`, `derived`, `effect`, `batch`, `untrack`,
|
|
6
|
+
* `peek`, `isSignal`, `isDerived`, `onMount`, `onDestroy` as standalone
|
|
7
|
+
* TypeScript functions. They have their own subscriber sets, effect
|
|
8
|
+
* tracking, and batching — fully self-contained reactivity.
|
|
9
|
+
*
|
|
10
|
+
* ## Why this exists alongside `signals.ts`
|
|
11
|
+
*
|
|
12
|
+
* stx ships TWO independent reactive implementations:
|
|
13
|
+
*
|
|
14
|
+
* 1. **This file (`signals-api.ts`)** — module-import path. Used by
|
|
15
|
+
* composables, stores, SSR/server code, and tests that import
|
|
16
|
+
* from `'@stacksjs/stx'` and run in Node (or browser) without
|
|
17
|
+
* going through the stx bundler.
|
|
18
|
+
*
|
|
19
|
+
* 2. **The runtime template literal in `signals.ts`** — generated as
|
|
20
|
+
* a JS string and injected into client pages. Owns its own
|
|
21
|
+
* subscribers; populates `window.stx.{state, derived, …}`.
|
|
22
|
+
*
|
|
23
|
+
* The stx bundler rewrites `<script client>` imports of these symbols
|
|
24
|
+
* to destructure from `window.stx`. So a `const count = state(0)` in a
|
|
25
|
+
* client script ends up using the runtime version (#2). The same call
|
|
26
|
+
* in an unbundled context — a composable test, an SSR helper — uses
|
|
27
|
+
* this file (#1).
|
|
28
|
+
*
|
|
29
|
+
* **Important**: signals created in one impl are invisible to the other.
|
|
30
|
+
* A `state()` returned by this module cannot be `.set()`-ed from inside
|
|
31
|
+
* a client page's `<script>` block (and vice versa). The two reactive
|
|
32
|
+
* worlds are disjoint by design — they exist because bundled and
|
|
33
|
+
* non-bundled contexts need different code-generation strategies.
|
|
34
|
+
*
|
|
35
|
+
* ## Parity contract
|
|
36
|
+
*
|
|
37
|
+
* Both implementations expose the same public surface and must behave
|
|
38
|
+
* equivalently. Pinned by `test/reactivity/dual-impl-parity.test.ts`,
|
|
39
|
+
* which executes the same suite against both. When parity drifts, fix
|
|
40
|
+
* the lagging side — don't update only one.
|
|
41
|
+
*
|
|
42
|
+
* See stacksjs/stx#1712 for the architectural rationale.
|
|
43
|
+
*
|
|
44
|
+
* @module signals-api
|
|
45
|
+
*/
|
|
46
|
+
/**
|
|
47
|
+
* ## The canonical set (stacksjs/stx#1885 asks 3 and 4)
|
|
48
|
+
*
|
|
49
|
+
* `state` / `derived` / `effect`, exported here, are the primitives to reach
|
|
50
|
+
* for. They are what the client runtime puts on `window.stx`, what a
|
|
51
|
+
* `<script client>` block sees as bare identifiers, and what stx's own
|
|
52
|
+
* composables and stores are written against — the only set that reads the
|
|
53
|
+
* same in a module, in a component, and in a template.
|
|
54
|
+
*
|
|
55
|
+
* `reactivity.ts` exports a Vue-shaped family beside them — `ref`, `reactive`,
|
|
56
|
+
* `computed`, `watch`, `watchEffect` — from the same package entry. Both are
|
|
57
|
+
* backed by one dependency tracker now (`reactive-tracking.ts`), so mixing
|
|
58
|
+
* them works; four of the six pairings used to be silently inert. They are
|
|
59
|
+
* kept for code ported from Vue, not recommended for new code.
|
|
60
|
+
*
|
|
61
|
+
* Note `ref()` returns a `.value` object while `state()` returns a callable
|
|
62
|
+
* signal, so the two are not interchangeable at the call site.
|
|
63
|
+
*/
|
|
64
|
+
/**
|
|
65
|
+
* A reactive state signal.
|
|
66
|
+
*
|
|
67
|
+
* Call it to read the value, use `.set()` to write, or `.update()` to transform.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const count = state(0)
|
|
72
|
+
* count() // Read: 0
|
|
73
|
+
* count.set(5) // Write: 5
|
|
74
|
+
* count.update(n => n + 1) // Update: 6
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export interface Signal<T> {
|
|
78
|
+
/** Read the current value */
|
|
79
|
+
(): T;
|
|
80
|
+
/** Vue-compatible value accessor */
|
|
81
|
+
value: T;
|
|
82
|
+
/** Set a new value */
|
|
83
|
+
set(value: T): void;
|
|
84
|
+
/** Update the value using a function */
|
|
85
|
+
update(fn: (current: T) => T): void;
|
|
86
|
+
/** Subscribe to changes (returns unsubscribe function) */
|
|
87
|
+
subscribe(callback: (value: T, prev: T) => void): () => void;
|
|
88
|
+
/** Internal marker */
|
|
89
|
+
readonly _isSignal: true;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* A derived (computed) signal that automatically updates when dependencies change.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const doubled = derived(() => count() * 2)
|
|
97
|
+
* doubled() // Read the computed value
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export interface DerivedSignal<T> {
|
|
101
|
+
/** Read the current computed value */
|
|
102
|
+
(): T;
|
|
103
|
+
/** Vue-compatible read-only value accessor */
|
|
104
|
+
readonly value: T;
|
|
105
|
+
/** Internal marker */
|
|
106
|
+
readonly _isDerived: true;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Options for creating effects.
|
|
110
|
+
*/
|
|
111
|
+
export interface EffectOptions {
|
|
112
|
+
/** Run the effect immediately (default: true) */
|
|
113
|
+
immediate?: boolean;
|
|
114
|
+
/** Name for debugging */
|
|
115
|
+
name?: string;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Cleanup function returned by effects.
|
|
119
|
+
*/
|
|
120
|
+
export type CleanupFn = () => void;
|
|
121
|
+
/**
|
|
122
|
+
* Lifecycle hook callback.
|
|
123
|
+
*/
|
|
124
|
+
export type LifecycleCallback = () => void | CleanupFn | Promise<void>;
|
|
125
|
+
/**
|
|
126
|
+
* Creates a reactive state signal.
|
|
127
|
+
*
|
|
128
|
+
* State signals are the foundation of STX reactivity. They hold a value that,
|
|
129
|
+
* when changed, automatically updates any derived signals or effects that
|
|
130
|
+
* depend on it.
|
|
131
|
+
*
|
|
132
|
+
* @param initialValue - The initial value for the signal
|
|
133
|
+
* @returns A signal that can be read, set, and subscribed to
|
|
134
|
+
*
|
|
135
|
+
* @example Basic usage
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const count = state(0)
|
|
138
|
+
*
|
|
139
|
+
* // Read the value
|
|
140
|
+
* console.log(count()) // 0
|
|
141
|
+
*
|
|
142
|
+
* // Set a new value
|
|
143
|
+
* count.set(5)
|
|
144
|
+
* console.log(count()) // 5
|
|
145
|
+
*
|
|
146
|
+
* // Update based on current value
|
|
147
|
+
* count.update(n => n + 1)
|
|
148
|
+
* console.log(count()) // 6
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* @example With objects
|
|
152
|
+
* ```typescript
|
|
153
|
+
* const user = state({ name: 'Alice', age: 30 })
|
|
154
|
+
*
|
|
155
|
+
* // Update the whole object
|
|
156
|
+
* user.set({ name: 'Bob', age: 25 })
|
|
157
|
+
*
|
|
158
|
+
* // Or update a property (creates new object for immutability)
|
|
159
|
+
* user.update(u => ({ ...u, age: u.age + 1 }))
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* @example With arrays
|
|
163
|
+
* ```typescript
|
|
164
|
+
* const items = state<string[]>([])
|
|
165
|
+
*
|
|
166
|
+
* // Add an item
|
|
167
|
+
* items.update(arr => [...arr, 'new item'])
|
|
168
|
+
*
|
|
169
|
+
* // Remove an item
|
|
170
|
+
* items.update(arr => arr.filter(i => i !== 'remove me'))
|
|
171
|
+
* ```
|
|
172
|
+
*/
|
|
173
|
+
export declare function state<T>(initialValue: T): Signal<T>;
|
|
174
|
+
/**
|
|
175
|
+
* Creates a derived signal that automatically computes its value from other signals.
|
|
176
|
+
*
|
|
177
|
+
* Derived signals are lazy - they only recompute when read after a dependency
|
|
178
|
+
* has changed. They're perfect for computed values that depend on other state.
|
|
179
|
+
*
|
|
180
|
+
* @param compute - A function that computes the derived value
|
|
181
|
+
* @returns A read-only signal with the computed value
|
|
182
|
+
*
|
|
183
|
+
* @example Basic derived value
|
|
184
|
+
* ```typescript
|
|
185
|
+
* const count = state(5)
|
|
186
|
+
* const doubled = derived(() => count() * 2)
|
|
187
|
+
*
|
|
188
|
+
* console.log(doubled()) // 10
|
|
189
|
+
* count.set(10)
|
|
190
|
+
* console.log(doubled()) // 20
|
|
191
|
+
* ```
|
|
192
|
+
*
|
|
193
|
+
* @example Combining multiple signals
|
|
194
|
+
* ```typescript
|
|
195
|
+
* const firstName = state('John')
|
|
196
|
+
* const lastName = state('Doe')
|
|
197
|
+
*
|
|
198
|
+
* const fullName = derived(() => `${firstName()} ${lastName()}`)
|
|
199
|
+
* console.log(fullName()) // "John Doe"
|
|
200
|
+
* ```
|
|
201
|
+
*
|
|
202
|
+
* @example Filtering and transforming
|
|
203
|
+
* ```typescript
|
|
204
|
+
* const items = state([1, 2, 3, 4, 5])
|
|
205
|
+
* const filter = state('even')
|
|
206
|
+
*
|
|
207
|
+
* const filteredItems = derived(() => {
|
|
208
|
+
* const list = items()
|
|
209
|
+
* return filter() === 'even'
|
|
210
|
+
* ? list.filter(n => n % 2 === 0)
|
|
211
|
+
* : list.filter(n => n % 2 !== 0)
|
|
212
|
+
* })
|
|
213
|
+
* ```
|
|
214
|
+
*/
|
|
215
|
+
export declare function derived<T>(compute: () => T): DerivedSignal<T>;
|
|
216
|
+
/**
|
|
217
|
+
* Creates a side effect that runs when its dependencies change.
|
|
218
|
+
*
|
|
219
|
+
* Effects automatically track which signals they read and re-run whenever
|
|
220
|
+
* those signals change. They're perfect for syncing state with external
|
|
221
|
+
* systems, logging, or triggering side effects.
|
|
222
|
+
*
|
|
223
|
+
* @param fn - The effect function to run
|
|
224
|
+
* @param options - Optional configuration
|
|
225
|
+
* @returns A cleanup function to stop the effect
|
|
226
|
+
*
|
|
227
|
+
* @example Basic effect
|
|
228
|
+
* ```typescript
|
|
229
|
+
* const count = state(0)
|
|
230
|
+
*
|
|
231
|
+
* effect(() => {
|
|
232
|
+
* console.log(`Count changed to: ${count()}`)
|
|
233
|
+
* })
|
|
234
|
+
*
|
|
235
|
+
* count.set(1) // Logs: "Count changed to: 1"
|
|
236
|
+
* count.set(2) // Logs: "Count changed to: 2"
|
|
237
|
+
* ```
|
|
238
|
+
*
|
|
239
|
+
* @example Effect with cleanup
|
|
240
|
+
* ```typescript
|
|
241
|
+
* const isActive = state(true)
|
|
242
|
+
*
|
|
243
|
+
* effect(() => {
|
|
244
|
+
* if (isActive()) {
|
|
245
|
+
* const interval = setInterval(() => console.log('tick'), 1000)
|
|
246
|
+
* // Return cleanup function
|
|
247
|
+
* return () => clearInterval(interval)
|
|
248
|
+
* }
|
|
249
|
+
* })
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* @example Fetching data
|
|
253
|
+
* ```typescript
|
|
254
|
+
* const userId = state(1)
|
|
255
|
+
* const user = state(null)
|
|
256
|
+
*
|
|
257
|
+
* effect(async () => {
|
|
258
|
+
* const id = userId()
|
|
259
|
+
* const response = await fetch(`/api/users/${id}`)
|
|
260
|
+
* user.set(await response.json())
|
|
261
|
+
* })
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
export declare function effect(fn: () => void | CleanupFn, options?: EffectOptions): CleanupFn;
|
|
265
|
+
/**
|
|
266
|
+
* Batches multiple signal updates into a single effect run.
|
|
267
|
+
*
|
|
268
|
+
* Use this when updating multiple signals at once to avoid redundant
|
|
269
|
+
* effect executions.
|
|
270
|
+
*
|
|
271
|
+
* @param fn - Function containing multiple signal updates
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ```typescript
|
|
275
|
+
* const firstName = state('John')
|
|
276
|
+
* const lastName = state('Doe')
|
|
277
|
+
*
|
|
278
|
+
* // Without batch: effect runs twice
|
|
279
|
+
* // With batch: effect runs once
|
|
280
|
+
* batch(() => {
|
|
281
|
+
* firstName.set('Jane')
|
|
282
|
+
* lastName.set('Smith')
|
|
283
|
+
* })
|
|
284
|
+
* ```
|
|
285
|
+
*/
|
|
286
|
+
export declare function batch(fn: () => void): void;
|
|
287
|
+
/**
|
|
288
|
+
* Registers a callback to run when the component mounts (is inserted into the DOM).
|
|
289
|
+
*
|
|
290
|
+
* @param callback - Function to run on mount. Can return a cleanup function.
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* onMount(() => {
|
|
295
|
+
* console.log('Component is now in the DOM')
|
|
296
|
+
*
|
|
297
|
+
* // Optional: return cleanup function
|
|
298
|
+
* return () => console.log('Cleanup on unmount')
|
|
299
|
+
* })
|
|
300
|
+
* ```
|
|
301
|
+
*
|
|
302
|
+
* @example Fetching initial data
|
|
303
|
+
* ```typescript
|
|
304
|
+
* const data = state(null)
|
|
305
|
+
*
|
|
306
|
+
* onMount(async () => {
|
|
307
|
+
* data.set(await fetchInitialData())
|
|
308
|
+
* })
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
export declare function onMount(callback: LifecycleCallback): void;
|
|
312
|
+
/**
|
|
313
|
+
* Registers a callback to run when the component is destroyed (removed from the DOM).
|
|
314
|
+
*
|
|
315
|
+
* @param callback - Function to run on destroy
|
|
316
|
+
*
|
|
317
|
+
* @example
|
|
318
|
+
* ```typescript
|
|
319
|
+
* onDestroy(() => {
|
|
320
|
+
* console.log('Component is being removed')
|
|
321
|
+
* // Clean up subscriptions, timers, etc.
|
|
322
|
+
* })
|
|
323
|
+
* ```
|
|
324
|
+
*/
|
|
325
|
+
export declare function onDestroy(callback: LifecycleCallback): void;
|
|
326
|
+
/**
|
|
327
|
+
* Run and clear every callback registered with {@link onMount}.
|
|
328
|
+
*
|
|
329
|
+
* Both queues used to be write-only: `onMount` and `onDestroy` pushed, and
|
|
330
|
+
* nothing anywhere drained them (stacksjs/stx#1811). Two consequences, and the
|
|
331
|
+
* first is the one that bites — a composable registering cleanup via
|
|
332
|
+
* `onDestroy` got no cleanup, silently. The code reads as correct, passes
|
|
333
|
+
* review, and does nothing. The second is a slow leak: nothing cleared the
|
|
334
|
+
* arrays, so every registration retained its closure for the life of the
|
|
335
|
+
* process, and the retained objects were precisely the ones the author expected
|
|
336
|
+
* to be released.
|
|
337
|
+
*
|
|
338
|
+
* The client runtime drains its equivalents, so leaving these undrained also
|
|
339
|
+
* broke the dual-implementation parity CLAUDE.md item 40 requires: the same
|
|
340
|
+
* public API did something on one side and nothing on the other.
|
|
341
|
+
*
|
|
342
|
+
* Drains before invoking, so a callback that registers another is queued for
|
|
343
|
+
* the next drain rather than running inside this one.
|
|
344
|
+
*
|
|
345
|
+
* Errors are contained per callback: one throwing hook must not swallow the
|
|
346
|
+
* rest, which is the same lesson as the page-setup loop in #1805.
|
|
347
|
+
*/
|
|
348
|
+
export declare function runMountCallbacks(): void;
|
|
349
|
+
/** Run and clear every callback registered with {@link onDestroy}. */
|
|
350
|
+
export declare function runDestroyCallbacks(): void;
|
|
351
|
+
/**
|
|
352
|
+
* How many callbacks are queued. Exposed for tests and diagnostics — a queue
|
|
353
|
+
* that only ever grows is the shape of the defect above.
|
|
354
|
+
*/
|
|
355
|
+
export declare function pendingLifecycleCounts(): {
|
|
356
|
+
mount: number;
|
|
357
|
+
destroy: number;
|
|
358
|
+
};
|
|
359
|
+
/**
|
|
360
|
+
* Checks if a value is a signal.
|
|
361
|
+
*
|
|
362
|
+
* @param value - Value to check
|
|
363
|
+
* @returns True if the value is a signal
|
|
364
|
+
*
|
|
365
|
+
* @example
|
|
366
|
+
* ```typescript
|
|
367
|
+
* const count = state(0)
|
|
368
|
+
* isSignal(count) // true
|
|
369
|
+
* isSignal(5) // false
|
|
370
|
+
* ```
|
|
371
|
+
*/
|
|
372
|
+
export declare function isSignal(value: unknown): value is Signal<unknown>;
|
|
373
|
+
/**
|
|
374
|
+
* Checks if a value is a derived signal.
|
|
375
|
+
*
|
|
376
|
+
* @param value - Value to check
|
|
377
|
+
* @returns True if the value is a derived signal
|
|
378
|
+
*/
|
|
379
|
+
export declare function isDerived(value: unknown): value is DerivedSignal<unknown>;
|
|
380
|
+
/**
|
|
381
|
+
* Unwraps a signal to get its raw value.
|
|
382
|
+
* If the value is not a signal, returns it as-is.
|
|
383
|
+
*
|
|
384
|
+
* @param value - A signal or plain value
|
|
385
|
+
* @returns The unwrapped value
|
|
386
|
+
*
|
|
387
|
+
* @example
|
|
388
|
+
* ```typescript
|
|
389
|
+
* const count = state(5)
|
|
390
|
+
* untrack(count) // 5
|
|
391
|
+
* untrack(10) // 10
|
|
392
|
+
* ```
|
|
393
|
+
*/
|
|
394
|
+
export declare function untrack<T>(value: T | Signal<T> | DerivedSignal<T>): T;
|
|
395
|
+
/**
|
|
396
|
+
* Reads a signal's value without tracking it as a dependency.
|
|
397
|
+
*
|
|
398
|
+
* Use this when you need to read a signal inside an effect but don't want
|
|
399
|
+
* the effect to re-run when that signal changes.
|
|
400
|
+
*
|
|
401
|
+
* @param fn - Function to run without tracking
|
|
402
|
+
* @returns The function's return value
|
|
403
|
+
*
|
|
404
|
+
* @example
|
|
405
|
+
* ```typescript
|
|
406
|
+
* const count = state(0)
|
|
407
|
+
* const other = state(0)
|
|
408
|
+
*
|
|
409
|
+
* effect(() => {
|
|
410
|
+
* // This effect only re-runs when `count` changes
|
|
411
|
+
* console.log(count())
|
|
412
|
+
*
|
|
413
|
+
* // Reading `other` without tracking
|
|
414
|
+
* const otherValue = peek(() => other())
|
|
415
|
+
* })
|
|
416
|
+
* ```
|
|
417
|
+
*/
|
|
418
|
+
export declare function peek<T>(fn: () => T): T;
|
|
419
|
+
/**
|
|
420
|
+
* The function returned by {@link useOptimistic} to apply an optimistic update.
|
|
421
|
+
* Returns a `settle` function that removes this specific optimistic entry (call
|
|
422
|
+
* it to roll back, e.g. in a `catch`). If a `settleWhen` promise is passed, the
|
|
423
|
+
* entry is removed automatically when that promise settles (success or error).
|
|
424
|
+
*/
|
|
425
|
+
export type AddOptimistic<A> = (action: A, settleWhen?: PromiseLike<unknown>) => () => void;
|
|
426
|
+
/**
|
|
427
|
+
* React-19-style optimistic state, adapted to signals.
|
|
428
|
+
*
|
|
429
|
+
* Shows an immediate, optimistic value layered on top of `base` while an async
|
|
430
|
+
* action is in flight, then falls back to `base` as the source of truth once the
|
|
431
|
+
* real update lands. Returns `[optimistic, addOptimistic]`:
|
|
432
|
+
*
|
|
433
|
+
* - `optimistic` is a derived signal: `base` with every pending action folded in
|
|
434
|
+
* via `reducer`.
|
|
435
|
+
* - `addOptimistic(action)` queues an optimistic action (visible immediately) and
|
|
436
|
+
* returns a `settle()` to remove it. Pass a promise as the 2nd arg to auto-settle.
|
|
437
|
+
*
|
|
438
|
+
* The optimistic overlay is discarded automatically the moment `base` changes —
|
|
439
|
+
* i.e. when the server/store confirms the real value — so the happy path needs
|
|
440
|
+
* no cleanup. On error, `base` doesn't change, so call the returned `settle()`
|
|
441
|
+
* (or pass the action promise) to roll back.
|
|
442
|
+
*
|
|
443
|
+
* Unlike React, there is no render cycle: pass the SIGNAL (or a getter) as `base`
|
|
444
|
+
* so the overlay stays reactive. A plain value is accepted but won't track changes.
|
|
445
|
+
*
|
|
446
|
+
* ```ts
|
|
447
|
+
* const likes = state(10)
|
|
448
|
+
* const [optimisticLikes, addOptimistic] = useOptimistic(likes, (cur, delta) => cur + delta)
|
|
449
|
+
*
|
|
450
|
+
* async function toggleLike() {
|
|
451
|
+
* const settle = addOptimistic(liked() ? -1 : 1) // optimisticLikes() updates now
|
|
452
|
+
* try { await api.like() } // on success, `likes` updates → overlay clears
|
|
453
|
+
* catch { settle() } // on error, roll back
|
|
454
|
+
* }
|
|
455
|
+
* ```
|
|
456
|
+
*
|
|
457
|
+
* @see stacksjs/stx#1742
|
|
458
|
+
*/
|
|
459
|
+
export declare function useOptimistic<T, A>(base: Signal<T> | DerivedSignal<T> | (() => T) | T, reducer: (current: T, action: A) => T): [DerivedSignal<T>, AddOptimistic<A>];
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {
|
|
2
|
+
enqueueEffect,
|
|
3
|
+
getActiveSubscriber,
|
|
4
|
+
isBatching,
|
|
5
|
+
restoreActiveSubscriber,
|
|
6
|
+
runBatched,
|
|
7
|
+
setActiveSubscriber,
|
|
8
|
+
withoutTracking
|
|
9
|
+
} from "./reactive-tracking.js";
|
|
10
|
+
const mountCallbacks = [], destroyCallbacks = [];
|
|
11
|
+
export function state(initialValue) {
|
|
12
|
+
let value = initialValue;
|
|
13
|
+
const subscribers = new Set, effects = new Set, signal = () => {
|
|
14
|
+
const subscriber = getActiveSubscriber();
|
|
15
|
+
if (subscriber)
|
|
16
|
+
effects.add(subscriber);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
signal.set = (newValue) => {
|
|
20
|
+
if (!Object.is(newValue, value)) {
|
|
21
|
+
const prev = value;
|
|
22
|
+
value = newValue;
|
|
23
|
+
subscribers.forEach((cb) => cb(value, prev));
|
|
24
|
+
if (isBatching())
|
|
25
|
+
effects.forEach((effect) => enqueueEffect(effect));
|
|
26
|
+
else
|
|
27
|
+
effects.forEach((effect) => effect());
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
signal.update = (fn) => {
|
|
31
|
+
signal.set(fn(value));
|
|
32
|
+
};
|
|
33
|
+
signal.subscribe = (callback) => {
|
|
34
|
+
subscribers.add(callback);
|
|
35
|
+
return () => subscribers.delete(callback);
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(signal, "_isSignal", { value: !0, writable: !1 });
|
|
38
|
+
Object.defineProperty(signal, "value", {
|
|
39
|
+
get: () => signal(),
|
|
40
|
+
set: (newValue) => signal.set(newValue),
|
|
41
|
+
configurable: !0
|
|
42
|
+
});
|
|
43
|
+
return signal;
|
|
44
|
+
}
|
|
45
|
+
export function derived(compute) {
|
|
46
|
+
let cachedValue, isDirty = !0;
|
|
47
|
+
const effects = new Set, markDirty = () => {
|
|
48
|
+
if (!isDirty) {
|
|
49
|
+
isDirty = !0;
|
|
50
|
+
if (isBatching())
|
|
51
|
+
effects.forEach((effect) => enqueueEffect(effect));
|
|
52
|
+
else
|
|
53
|
+
effects.forEach((effect) => effect());
|
|
54
|
+
}
|
|
55
|
+
}, signal = () => {
|
|
56
|
+
const subscriber = getActiveSubscriber();
|
|
57
|
+
if (subscriber)
|
|
58
|
+
effects.add(subscriber);
|
|
59
|
+
if (isDirty) {
|
|
60
|
+
const prevEffect = setActiveSubscriber(markDirty);
|
|
61
|
+
try {
|
|
62
|
+
cachedValue = compute();
|
|
63
|
+
} finally {
|
|
64
|
+
restoreActiveSubscriber(prevEffect);
|
|
65
|
+
}
|
|
66
|
+
isDirty = !1;
|
|
67
|
+
}
|
|
68
|
+
return cachedValue;
|
|
69
|
+
};
|
|
70
|
+
Object.defineProperty(signal, "_isDerived", { value: !0, writable: !1 });
|
|
71
|
+
Object.defineProperty(signal, "value", {
|
|
72
|
+
get: () => signal(),
|
|
73
|
+
configurable: !0
|
|
74
|
+
});
|
|
75
|
+
return signal;
|
|
76
|
+
}
|
|
77
|
+
export function effect(fn, options = {}) {
|
|
78
|
+
let cleanup, isDisposed = !1;
|
|
79
|
+
const runEffect = () => {
|
|
80
|
+
if (isDisposed)
|
|
81
|
+
return;
|
|
82
|
+
if (cleanup) {
|
|
83
|
+
cleanup();
|
|
84
|
+
cleanup = void 0;
|
|
85
|
+
}
|
|
86
|
+
const prevEffect = setActiveSubscriber(runEffect);
|
|
87
|
+
try {
|
|
88
|
+
const result = fn();
|
|
89
|
+
cleanup = typeof result === "function" ? result : void 0;
|
|
90
|
+
} finally {
|
|
91
|
+
restoreActiveSubscriber(prevEffect);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
if (options.immediate !== !1)
|
|
95
|
+
runEffect();
|
|
96
|
+
return () => {
|
|
97
|
+
isDisposed = !0;
|
|
98
|
+
if (cleanup) {
|
|
99
|
+
const pending = cleanup;
|
|
100
|
+
cleanup = void 0;
|
|
101
|
+
pending();
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export function batch(fn) {
|
|
106
|
+
runBatched(fn);
|
|
107
|
+
}
|
|
108
|
+
export function onMount(callback) {
|
|
109
|
+
mountCallbacks.push(callback);
|
|
110
|
+
}
|
|
111
|
+
export function onDestroy(callback) {
|
|
112
|
+
destroyCallbacks.push(callback);
|
|
113
|
+
}
|
|
114
|
+
export function runMountCallbacks() {
|
|
115
|
+
drain(mountCallbacks, "onMount", destroyCallbacks);
|
|
116
|
+
}
|
|
117
|
+
export function runDestroyCallbacks() {
|
|
118
|
+
drain(destroyCallbacks, "onDestroy");
|
|
119
|
+
}
|
|
120
|
+
function drain(queue, label, sink) {
|
|
121
|
+
const pending = queue.splice(0, queue.length);
|
|
122
|
+
for (const callback of pending)
|
|
123
|
+
try {
|
|
124
|
+
const cleanup = callback();
|
|
125
|
+
if (sink && typeof cleanup === "function")
|
|
126
|
+
sink.push(cleanup);
|
|
127
|
+
} catch (error) {
|
|
128
|
+
console.error(`[stx] ${label} callback threw:`, error);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export function pendingLifecycleCounts() {
|
|
132
|
+
return { mount: mountCallbacks.length, destroy: destroyCallbacks.length };
|
|
133
|
+
}
|
|
134
|
+
export function isSignal(value) {
|
|
135
|
+
return typeof value === "function" && value._isSignal === !0;
|
|
136
|
+
}
|
|
137
|
+
export function isDerived(value) {
|
|
138
|
+
return typeof value === "function" && value._isDerived === !0;
|
|
139
|
+
}
|
|
140
|
+
export function untrack(value) {
|
|
141
|
+
if (isSignal(value) || isDerived(value))
|
|
142
|
+
return value();
|
|
143
|
+
return value;
|
|
144
|
+
}
|
|
145
|
+
export function peek(fn) {
|
|
146
|
+
return withoutTracking(fn);
|
|
147
|
+
}
|
|
148
|
+
export function useOptimistic(base, reducer) {
|
|
149
|
+
const readBase = typeof base === "function" ? base : () => base, pending = state([]), optimistic = derived(() => pending().reduce((acc, entry) => reducer(acc, entry.action), readBase()));
|
|
150
|
+
let primed = !1;
|
|
151
|
+
effect(() => {
|
|
152
|
+
readBase();
|
|
153
|
+
if (!primed) {
|
|
154
|
+
primed = !0;
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (peek(() => pending().length))
|
|
158
|
+
pending.set([]);
|
|
159
|
+
});
|
|
160
|
+
return [optimistic, (action, settleWhen) => {
|
|
161
|
+
const entry = { action };
|
|
162
|
+
pending.set([...pending(), entry]);
|
|
163
|
+
const settle = () => {
|
|
164
|
+
const next = pending().filter((e) => e !== entry);
|
|
165
|
+
if (next.length !== pending().length)
|
|
166
|
+
pending.set(next);
|
|
167
|
+
};
|
|
168
|
+
if (settleWhen && typeof settleWhen.then === "function")
|
|
169
|
+
Promise.resolve(settleWhen).then(settle, settle);
|
|
170
|
+
return settle;
|
|
171
|
+
}];
|
|
172
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STX Signals - Reactive State Management
|
|
3
|
+
* =========================================
|
|
4
|
+
*
|
|
5
|
+
* This module re-exports the build-time signals API from signals-api.ts
|
|
6
|
+
* and provides the client runtime string generators.
|
|
7
|
+
*
|
|
8
|
+
* @module signals
|
|
9
|
+
*/
|
|
10
|
+
import { state, derived, effect, batch, onMount, onDestroy, isSignal, isDerived, untrack, peek } from './signals-api';
|
|
11
|
+
export * from './signals-api';
|
|
12
|
+
/**
|
|
13
|
+
* Generates the browser runtime for STX signals.
|
|
14
|
+
*
|
|
15
|
+
* This runtime is automatically injected into pages that use signals.
|
|
16
|
+
* It provides the full reactivity system and template binding.
|
|
17
|
+
*
|
|
18
|
+
* @returns Minified JavaScript runtime code
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateSignalsRuntime(): string;
|
|
21
|
+
/**
|
|
22
|
+
* Generates readable (non-minified) runtime for development.
|
|
23
|
+
*
|
|
24
|
+
* @returns Human-readable JavaScript runtime code
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateSignalsRuntimeDev(): string;
|
|
27
|
+
declare const _default: {
|
|
28
|
+
state: typeof state;
|
|
29
|
+
derived: typeof derived;
|
|
30
|
+
effect: typeof effect;
|
|
31
|
+
batch: typeof batch;
|
|
32
|
+
onMount: typeof onMount;
|
|
33
|
+
onDestroy: typeof onDestroy;
|
|
34
|
+
isSignal: typeof isSignal;
|
|
35
|
+
isDerived: typeof isDerived;
|
|
36
|
+
untrack: typeof untrack;
|
|
37
|
+
peek: typeof peek;
|
|
38
|
+
generateSignalsRuntime: typeof generateSignalsRuntime;
|
|
39
|
+
generateSignalsRuntimeDev: typeof generateSignalsRuntimeDev;
|
|
40
|
+
};
|
|
41
|
+
export default _default;
|