@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,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STX Story - Setup file support
|
|
3
|
+
* Handles global story setup configuration
|
|
4
|
+
*/
|
|
5
|
+
import type { StoryContext } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Setup function signature
|
|
8
|
+
*/
|
|
9
|
+
export type SetupFunction = (ctx: SetupContext) => void | Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Context passed to setup function
|
|
12
|
+
*/
|
|
13
|
+
export interface SetupContext {
|
|
14
|
+
/** Story context */
|
|
15
|
+
storyContext: StoryContext;
|
|
16
|
+
/** Register a global component */
|
|
17
|
+
registerComponent: (name: string, component: any) => void;
|
|
18
|
+
/** Add global CSS */
|
|
19
|
+
addCSS: (css: string) => void;
|
|
20
|
+
/** Add global script */
|
|
21
|
+
addScript: (script: string) => void;
|
|
22
|
+
/** Set global state */
|
|
23
|
+
setState: (key: string, value: any) => void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Load and execute the setup file
|
|
27
|
+
*/
|
|
28
|
+
export declare function loadSetupFile(ctx: StoryContext): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Get all registered global components
|
|
31
|
+
*/
|
|
32
|
+
export declare function getGlobalComponents(): Map<string, any>;
|
|
33
|
+
/**
|
|
34
|
+
* Get all global CSS
|
|
35
|
+
*/
|
|
36
|
+
export declare function getGlobalCSS(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Get all global scripts
|
|
39
|
+
*/
|
|
40
|
+
export declare function getGlobalScripts(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Get global state
|
|
43
|
+
*/
|
|
44
|
+
export declare function getGlobalState(): Map<string, any>;
|
|
45
|
+
/**
|
|
46
|
+
* Get a specific global state value
|
|
47
|
+
*/
|
|
48
|
+
export declare function getState<T = any>(key: string): T | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Reset all global setup (for testing)
|
|
51
|
+
*/
|
|
52
|
+
export declare function resetSetup(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Generate HTML for global setup (CSS + scripts)
|
|
55
|
+
*/
|
|
56
|
+
export declare function getSetupHTML(): string;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const globalComponents = new Map;
|
|
4
|
+
let globalCSS = [], globalScripts = [];
|
|
5
|
+
const globalState = new Map;
|
|
6
|
+
export async function loadSetupFile(ctx) {
|
|
7
|
+
const setupFile = ctx.config.setupFile;
|
|
8
|
+
if (!setupFile)
|
|
9
|
+
return;
|
|
10
|
+
const setupPath = path.resolve(ctx.root, setupFile);
|
|
11
|
+
try {
|
|
12
|
+
await fs.promises.access(setupPath);
|
|
13
|
+
} catch {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const setupCtx = {
|
|
17
|
+
storyContext: ctx,
|
|
18
|
+
registerComponent: (name, component) => {
|
|
19
|
+
globalComponents.set(name, component);
|
|
20
|
+
},
|
|
21
|
+
addCSS: (css) => {
|
|
22
|
+
globalCSS.push(css);
|
|
23
|
+
},
|
|
24
|
+
addScript: (script) => {
|
|
25
|
+
globalScripts.push(script);
|
|
26
|
+
},
|
|
27
|
+
setState: (key, value) => {
|
|
28
|
+
globalState.set(key, value);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
try {
|
|
32
|
+
const setupModule = await import(setupPath);
|
|
33
|
+
if (typeof setupModule.default === "function")
|
|
34
|
+
await setupModule.default(setupCtx);
|
|
35
|
+
else if (typeof setupModule.setupStory === "function")
|
|
36
|
+
await setupModule.setupStory(setupCtx);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
console.warn(`Warning: Failed to load setup file: ${error}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function getGlobalComponents() {
|
|
42
|
+
return globalComponents;
|
|
43
|
+
}
|
|
44
|
+
export function getGlobalCSS() {
|
|
45
|
+
return globalCSS.join(`
|
|
46
|
+
`);
|
|
47
|
+
}
|
|
48
|
+
export function getGlobalScripts() {
|
|
49
|
+
return globalScripts.join(`
|
|
50
|
+
`);
|
|
51
|
+
}
|
|
52
|
+
export function getGlobalState() {
|
|
53
|
+
return globalState;
|
|
54
|
+
}
|
|
55
|
+
export function getState(key) {
|
|
56
|
+
return globalState.get(key);
|
|
57
|
+
}
|
|
58
|
+
export function resetSetup() {
|
|
59
|
+
globalComponents.clear();
|
|
60
|
+
globalCSS = [];
|
|
61
|
+
globalScripts = [];
|
|
62
|
+
globalState.clear();
|
|
63
|
+
}
|
|
64
|
+
export function getSetupHTML() {
|
|
65
|
+
const css = getGlobalCSS(), scripts = getGlobalScripts();
|
|
66
|
+
let html = "";
|
|
67
|
+
if (css)
|
|
68
|
+
html += `<style>
|
|
69
|
+
${css}
|
|
70
|
+
</style>
|
|
71
|
+
`;
|
|
72
|
+
if (scripts)
|
|
73
|
+
html += `<script>
|
|
74
|
+
${scripts}
|
|
75
|
+
</script>
|
|
76
|
+
`;
|
|
77
|
+
return html;
|
|
78
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { StoryContext } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Get snapshot directory
|
|
4
|
+
*/
|
|
5
|
+
export declare function getSnapshotDir(ctx: StoryContext): string;
|
|
6
|
+
/**
|
|
7
|
+
* Load snapshot versions
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadSnapshotVersions(ctx: StoryContext, storyId: string): Promise<VersionedSnapshot | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Save snapshot version
|
|
12
|
+
*/
|
|
13
|
+
export declare function saveSnapshotVersion(ctx: StoryContext, storyId: string, description?: string): Promise<SnapshotVersion>;
|
|
14
|
+
/**
|
|
15
|
+
* Restore snapshot to a previous version
|
|
16
|
+
*/
|
|
17
|
+
export declare function restoreSnapshotVersion(ctx: StoryContext, storyId: string, version: number): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Generate diff between two HTML snapshots
|
|
20
|
+
* Returns a simple text-based diff (for actual image diff, you'd need canvas/image processing)
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateTextDiff(oldHtml: string, newHtml: string): DiffResult;
|
|
23
|
+
/**
|
|
24
|
+
* Generate visual diff HTML
|
|
25
|
+
*/
|
|
26
|
+
export declare function generateDiffHTML(oldHtml: string, newHtml: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Get diff styles
|
|
29
|
+
*/
|
|
30
|
+
export declare function getDiffStyles(): string;
|
|
31
|
+
/**
|
|
32
|
+
* List all snapshot versions for a story
|
|
33
|
+
*/
|
|
34
|
+
export declare function listSnapshotVersions(ctx: StoryContext, storyId: string): Promise<SnapshotVersion[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Delete old snapshot versions
|
|
37
|
+
*/
|
|
38
|
+
export declare function pruneSnapshotVersions(ctx: StoryContext, storyId: string, keepCount?: number): Promise<number>;
|
|
39
|
+
/**
|
|
40
|
+
* Snapshot version info
|
|
41
|
+
*/
|
|
42
|
+
export declare interface SnapshotVersion {
|
|
43
|
+
version: number
|
|
44
|
+
timestamp: number
|
|
45
|
+
commit?: string
|
|
46
|
+
description?: string
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Snapshot with version history
|
|
50
|
+
*/
|
|
51
|
+
export declare interface VersionedSnapshot {
|
|
52
|
+
current: SnapshotVersion
|
|
53
|
+
history: SnapshotVersion[]
|
|
54
|
+
maxVersions: number
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Diff result
|
|
58
|
+
*/
|
|
59
|
+
export declare interface DiffResult {
|
|
60
|
+
hasDiff: boolean
|
|
61
|
+
percentage: number
|
|
62
|
+
diffImagePath?: string
|
|
63
|
+
changedPixels: number
|
|
64
|
+
totalPixels: number
|
|
65
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { stateDir } from "../state-dir.js";
|
|
4
|
+
export function getSnapshotDir(ctx) {
|
|
5
|
+
return stateDir(ctx.root, "story", "snapshots");
|
|
6
|
+
}
|
|
7
|
+
function getVersionFilePath(snapshotDir, storyId) {
|
|
8
|
+
return path.join(snapshotDir, `${storyId}.versions.json`);
|
|
9
|
+
}
|
|
10
|
+
export async function loadSnapshotVersions(ctx, storyId) {
|
|
11
|
+
const snapshotDir = getSnapshotDir(ctx), versionFile = getVersionFilePath(snapshotDir, storyId);
|
|
12
|
+
try {
|
|
13
|
+
const content = await fs.promises.readFile(versionFile, "utf-8");
|
|
14
|
+
return JSON.parse(content);
|
|
15
|
+
} catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function saveSnapshotVersion(ctx, storyId, description) {
|
|
20
|
+
const snapshotDir = getSnapshotDir(ctx), versionFile = getVersionFilePath(snapshotDir, storyId);
|
|
21
|
+
await fs.promises.mkdir(snapshotDir, { recursive: !0 });
|
|
22
|
+
let versioned = await loadSnapshotVersions(ctx, storyId);
|
|
23
|
+
if (!versioned)
|
|
24
|
+
versioned = {
|
|
25
|
+
current: { version: 0, timestamp: 0 },
|
|
26
|
+
history: [],
|
|
27
|
+
maxVersions: 10
|
|
28
|
+
};
|
|
29
|
+
const newVersion = {
|
|
30
|
+
version: versioned.current.version + 1,
|
|
31
|
+
timestamp: Date.now(),
|
|
32
|
+
commit: await getGitCommit(ctx.root),
|
|
33
|
+
description
|
|
34
|
+
};
|
|
35
|
+
if (versioned.current.version > 0) {
|
|
36
|
+
versioned.history.unshift(versioned.current);
|
|
37
|
+
if (versioned.history.length > versioned.maxVersions)
|
|
38
|
+
versioned.history = versioned.history.slice(0, versioned.maxVersions);
|
|
39
|
+
}
|
|
40
|
+
versioned.current = newVersion;
|
|
41
|
+
await fs.promises.writeFile(versionFile, JSON.stringify(versioned, null, 2));
|
|
42
|
+
return newVersion;
|
|
43
|
+
}
|
|
44
|
+
async function getGitCommit(root) {
|
|
45
|
+
try {
|
|
46
|
+
const gitHeadPath = path.join(root, ".git", "HEAD"), head = await fs.promises.readFile(gitHeadPath, "utf-8");
|
|
47
|
+
if (head.startsWith("ref:")) {
|
|
48
|
+
const refPath = path.join(root, ".git", head.slice(5).trim());
|
|
49
|
+
return (await fs.promises.readFile(refPath, "utf-8")).trim().slice(0, 8);
|
|
50
|
+
}
|
|
51
|
+
return head.trim().slice(0, 8);
|
|
52
|
+
} catch {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export async function restoreSnapshotVersion(ctx, storyId, version) {
|
|
57
|
+
const versioned = await loadSnapshotVersions(ctx, storyId);
|
|
58
|
+
if (!versioned)
|
|
59
|
+
return !1;
|
|
60
|
+
const targetVersion = versioned.history.find((v) => v.version === version);
|
|
61
|
+
if (!targetVersion)
|
|
62
|
+
return !1;
|
|
63
|
+
const snapshotDir = getSnapshotDir(ctx), versionedPath = path.join(snapshotDir, `${storyId}.v${version}.html`), currentPath = path.join(snapshotDir, `${storyId}.html`);
|
|
64
|
+
try {
|
|
65
|
+
await fs.promises.copyFile(versionedPath, currentPath);
|
|
66
|
+
versioned.current = targetVersion;
|
|
67
|
+
const versionFile = getVersionFilePath(snapshotDir, storyId);
|
|
68
|
+
await fs.promises.writeFile(versionFile, JSON.stringify(versioned, null, 2));
|
|
69
|
+
return !0;
|
|
70
|
+
} catch {
|
|
71
|
+
return !1;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function generateTextDiff(oldHtml, newHtml) {
|
|
75
|
+
const oldLines = oldHtml.split(`
|
|
76
|
+
`), newLines = newHtml.split(`
|
|
77
|
+
`);
|
|
78
|
+
let changedLines = 0;
|
|
79
|
+
const maxLines = Math.max(oldLines.length, newLines.length);
|
|
80
|
+
for (let i = 0;i < maxLines; i++)
|
|
81
|
+
if (oldLines[i] !== newLines[i])
|
|
82
|
+
changedLines++;
|
|
83
|
+
const percentage = maxLines > 0 ? changedLines / maxLines * 100 : 0;
|
|
84
|
+
return {
|
|
85
|
+
hasDiff: changedLines > 0,
|
|
86
|
+
percentage,
|
|
87
|
+
changedPixels: changedLines,
|
|
88
|
+
totalPixels: maxLines
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function generateDiffHTML(oldHtml, newHtml) {
|
|
92
|
+
const oldLines = oldHtml.split(`
|
|
93
|
+
`), newLines = newHtml.split(`
|
|
94
|
+
`), diffLines = [], maxLines = Math.max(oldLines.length, newLines.length);
|
|
95
|
+
for (let i = 0;i < maxLines; i++) {
|
|
96
|
+
const oldLine = oldLines[i] || "", newLine = newLines[i] || "";
|
|
97
|
+
if (oldLine === newLine)
|
|
98
|
+
diffLines.push(`<div class="diff-line diff-same">${escapeHtml(oldLine)}</div>`);
|
|
99
|
+
else if (!oldLine)
|
|
100
|
+
diffLines.push(`<div class="diff-line diff-added">+ ${escapeHtml(newLine)}</div>`);
|
|
101
|
+
else if (!newLine)
|
|
102
|
+
diffLines.push(`<div class="diff-line diff-removed">- ${escapeHtml(oldLine)}</div>`);
|
|
103
|
+
else {
|
|
104
|
+
diffLines.push(`<div class="diff-line diff-removed">- ${escapeHtml(oldLine)}</div>`);
|
|
105
|
+
diffLines.push(`<div class="diff-line diff-added">+ ${escapeHtml(newLine)}</div>`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return `
|
|
109
|
+
<div class="stx-diff-view">
|
|
110
|
+
<div class="diff-content">
|
|
111
|
+
${diffLines.join(`
|
|
112
|
+
`)}
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
`;
|
|
116
|
+
}
|
|
117
|
+
export function getDiffStyles() {
|
|
118
|
+
return `
|
|
119
|
+
.stx-diff-view {
|
|
120
|
+
font-family: var(--code-font-family);
|
|
121
|
+
font-size: 12px;
|
|
122
|
+
line-height: 1.5;
|
|
123
|
+
overflow: auto;
|
|
124
|
+
}
|
|
125
|
+
.diff-content {
|
|
126
|
+
padding: 12px;
|
|
127
|
+
}
|
|
128
|
+
.diff-line {
|
|
129
|
+
padding: 2px 8px;
|
|
130
|
+
white-space: pre;
|
|
131
|
+
}
|
|
132
|
+
.diff-same {
|
|
133
|
+
color: var(--text);
|
|
134
|
+
}
|
|
135
|
+
.diff-added {
|
|
136
|
+
background: rgba(34, 197, 94, 0.2);
|
|
137
|
+
color: #22c55e;
|
|
138
|
+
}
|
|
139
|
+
.diff-removed {
|
|
140
|
+
background: rgba(239, 68, 68, 0.2);
|
|
141
|
+
color: #ef4444;
|
|
142
|
+
}
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
function escapeHtml(str) {
|
|
146
|
+
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
147
|
+
}
|
|
148
|
+
export async function listSnapshotVersions(ctx, storyId) {
|
|
149
|
+
const versioned = await loadSnapshotVersions(ctx, storyId);
|
|
150
|
+
if (!versioned)
|
|
151
|
+
return [];
|
|
152
|
+
return [versioned.current, ...versioned.history];
|
|
153
|
+
}
|
|
154
|
+
export async function pruneSnapshotVersions(ctx, storyId, keepCount = 5) {
|
|
155
|
+
const versioned = await loadSnapshotVersions(ctx, storyId);
|
|
156
|
+
if (!versioned)
|
|
157
|
+
return 0;
|
|
158
|
+
const toDelete = versioned.history.slice(keepCount), snapshotDir = getSnapshotDir(ctx);
|
|
159
|
+
let deleted = 0;
|
|
160
|
+
for (const version of toDelete) {
|
|
161
|
+
const versionPath = path.join(snapshotDir, `${storyId}.v${version.version}.html`);
|
|
162
|
+
try {
|
|
163
|
+
await fs.promises.unlink(versionPath);
|
|
164
|
+
deleted++;
|
|
165
|
+
} catch {}
|
|
166
|
+
}
|
|
167
|
+
versioned.history = versioned.history.slice(0, keepCount);
|
|
168
|
+
const versionFile = getVersionFilePath(snapshotDir, storyId);
|
|
169
|
+
await fs.promises.writeFile(versionFile, JSON.stringify(versioned, null, 2));
|
|
170
|
+
return deleted;
|
|
171
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STX Story - Visual Regression Testing
|
|
3
|
+
* Snapshot-based testing for component renders
|
|
4
|
+
*/
|
|
5
|
+
import type { StoryContext } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Test options
|
|
8
|
+
*/
|
|
9
|
+
export interface TestOptions {
|
|
10
|
+
/** Update snapshots instead of comparing */
|
|
11
|
+
update?: boolean;
|
|
12
|
+
/** Only test specific components */
|
|
13
|
+
filter?: string[];
|
|
14
|
+
/** Threshold for pixel difference (0-1) */
|
|
15
|
+
threshold?: number;
|
|
16
|
+
/** Directory to store snapshots */
|
|
17
|
+
snapshotDir?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Test result
|
|
21
|
+
*/
|
|
22
|
+
export interface TestResult {
|
|
23
|
+
/** Total number of tests */
|
|
24
|
+
total: number;
|
|
25
|
+
/** Number of passed tests */
|
|
26
|
+
passed: number;
|
|
27
|
+
/** Number of failed tests */
|
|
28
|
+
failed: number;
|
|
29
|
+
/** Number of new snapshots */
|
|
30
|
+
new: number;
|
|
31
|
+
/** Test failures */
|
|
32
|
+
failures: TestFailure[];
|
|
33
|
+
/** Duration in milliseconds */
|
|
34
|
+
duration: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Test failure details
|
|
38
|
+
*/
|
|
39
|
+
export interface TestFailure {
|
|
40
|
+
/** Story ID */
|
|
41
|
+
storyId: string;
|
|
42
|
+
/** Variant ID */
|
|
43
|
+
variantId: string;
|
|
44
|
+
/** Component name */
|
|
45
|
+
component: string;
|
|
46
|
+
/** Error message */
|
|
47
|
+
message: string;
|
|
48
|
+
/** Path to diff image (if applicable) */
|
|
49
|
+
diffPath?: string;
|
|
50
|
+
/** Difference percentage */
|
|
51
|
+
difference?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Snapshot metadata
|
|
55
|
+
*/
|
|
56
|
+
export interface SnapshotMeta {
|
|
57
|
+
/** Story ID */
|
|
58
|
+
storyId: string;
|
|
59
|
+
/** Variant ID */
|
|
60
|
+
variantId: string;
|
|
61
|
+
/** Component name */
|
|
62
|
+
component: string;
|
|
63
|
+
/** Timestamp of snapshot creation */
|
|
64
|
+
timestamp: number;
|
|
65
|
+
/** Hash of the rendered content */
|
|
66
|
+
hash: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Run visual regression tests
|
|
70
|
+
*/
|
|
71
|
+
export declare function runVisualTests(ctx: StoryContext, options?: TestOptions): Promise<TestResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Update all snapshots
|
|
74
|
+
*/
|
|
75
|
+
export declare function updateSnapshots(ctx: StoryContext, options?: TestOptions): Promise<number>;
|
|
76
|
+
/**
|
|
77
|
+
* Format test results for console output
|
|
78
|
+
*/
|
|
79
|
+
export declare function formatTestResults(result: TestResult): string;
|
|
80
|
+
/**
|
|
81
|
+
* Run accessibility tests on stories
|
|
82
|
+
*/
|
|
83
|
+
export declare function runA11yTests(ctx: StoryContext, _options?: TestOptions): Promise<TestResult>;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { checkA11y } from "../a11y.js";
|
|
4
|
+
import { stateDir } from "../state-dir.js";
|
|
5
|
+
export async function runVisualTests(ctx, options = {}) {
|
|
6
|
+
const startTime = Date.now(), result = {
|
|
7
|
+
total: 0,
|
|
8
|
+
passed: 0,
|
|
9
|
+
failed: 0,
|
|
10
|
+
new: 0,
|
|
11
|
+
failures: [],
|
|
12
|
+
duration: 0
|
|
13
|
+
}, snapshotDir = options.snapshotDir || stateDir(ctx.root, "story", "snapshots");
|
|
14
|
+
await fs.promises.mkdir(snapshotDir, { recursive: !0 });
|
|
15
|
+
let storyFiles = ctx.storyFiles;
|
|
16
|
+
if (options.filter && options.filter.length > 0)
|
|
17
|
+
storyFiles = storyFiles.filter((f) => options.filter.some((filter) => f.fileName.toLowerCase().includes(filter.toLowerCase())));
|
|
18
|
+
for (const storyFile of storyFiles)
|
|
19
|
+
await testStoryFile(storyFile, snapshotDir, options, result);
|
|
20
|
+
result.duration = Date.now() - startTime;
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
async function testStoryFile(storyFile, snapshotDir, options, result) {
|
|
24
|
+
const story = storyFile.story;
|
|
25
|
+
if (!story)
|
|
26
|
+
return;
|
|
27
|
+
for (const variant of story.variants) {
|
|
28
|
+
result.total++;
|
|
29
|
+
const snapshotPath = path.join(snapshotDir, `${storyFile.id}-${variant.id}.snap`), currentHash = generateHash(variant.source || ""), snapshotExists = await fileExists(snapshotPath);
|
|
30
|
+
if (options.update || !snapshotExists) {
|
|
31
|
+
const meta = {
|
|
32
|
+
storyId: storyFile.id,
|
|
33
|
+
variantId: variant.id,
|
|
34
|
+
component: storyFile.fileName,
|
|
35
|
+
timestamp: Date.now(),
|
|
36
|
+
hash: currentHash
|
|
37
|
+
};
|
|
38
|
+
await fs.promises.writeFile(snapshotPath, JSON.stringify(meta, null, 2));
|
|
39
|
+
if (!snapshotExists)
|
|
40
|
+
result.new++;
|
|
41
|
+
result.passed++;
|
|
42
|
+
} else
|
|
43
|
+
try {
|
|
44
|
+
const snapshotContent = await fs.promises.readFile(snapshotPath, "utf-8"), snapshot = JSON.parse(snapshotContent);
|
|
45
|
+
if (snapshot.hash === currentHash)
|
|
46
|
+
result.passed++;
|
|
47
|
+
else {
|
|
48
|
+
result.failed++;
|
|
49
|
+
result.failures.push({
|
|
50
|
+
storyId: storyFile.id,
|
|
51
|
+
variantId: variant.id,
|
|
52
|
+
component: storyFile.fileName,
|
|
53
|
+
message: "Snapshot mismatch",
|
|
54
|
+
difference: calculateDifference(snapshot.hash, currentHash)
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
} catch (error) {
|
|
58
|
+
result.failed++;
|
|
59
|
+
result.failures.push({
|
|
60
|
+
storyId: storyFile.id,
|
|
61
|
+
variantId: variant.id,
|
|
62
|
+
component: storyFile.fileName,
|
|
63
|
+
message: `Error reading snapshot: ${error}`
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export async function updateSnapshots(ctx, options = {}) {
|
|
69
|
+
return (await runVisualTests(ctx, { ...options, update: !0 })).total;
|
|
70
|
+
}
|
|
71
|
+
function generateHash(content) {
|
|
72
|
+
let hash = 0;
|
|
73
|
+
for (let i = 0;i < content.length; i++) {
|
|
74
|
+
const char = content.charCodeAt(i);
|
|
75
|
+
hash = (hash << 5) - hash + char;
|
|
76
|
+
hash = hash & hash;
|
|
77
|
+
}
|
|
78
|
+
return hash.toString(16);
|
|
79
|
+
}
|
|
80
|
+
function calculateDifference(hash1, hash2) {
|
|
81
|
+
if (hash1 === hash2)
|
|
82
|
+
return 0;
|
|
83
|
+
const diff = Math.abs(Number.parseInt(hash1, 16) - Number.parseInt(hash2, 16));
|
|
84
|
+
return Math.min(diff / 1e6, 1);
|
|
85
|
+
}
|
|
86
|
+
async function fileExists(filePath) {
|
|
87
|
+
try {
|
|
88
|
+
await fs.promises.access(filePath);
|
|
89
|
+
return !0;
|
|
90
|
+
} catch {
|
|
91
|
+
return !1;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export function formatTestResults(result) {
|
|
95
|
+
const lines = [];
|
|
96
|
+
lines.push("");
|
|
97
|
+
lines.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501");
|
|
98
|
+
lines.push(" STX Story Visual Regression Tests");
|
|
99
|
+
lines.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501");
|
|
100
|
+
lines.push("");
|
|
101
|
+
if (result.failures.length > 0) {
|
|
102
|
+
lines.push(" \u274C Failures:");
|
|
103
|
+
lines.push("");
|
|
104
|
+
for (const failure of result.failures) {
|
|
105
|
+
lines.push(` \u2022 ${failure.component} / ${failure.variantId}`);
|
|
106
|
+
lines.push(` ${failure.message}`);
|
|
107
|
+
if (failure.difference !== void 0)
|
|
108
|
+
lines.push(` Difference: ${(failure.difference * 100).toFixed(2)}%`);
|
|
109
|
+
lines.push("");
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
lines.push(" Summary:");
|
|
113
|
+
lines.push(` Total: ${result.total}`);
|
|
114
|
+
lines.push(` Passed: ${result.passed} \u2713`);
|
|
115
|
+
lines.push(` Failed: ${result.failed} \u2717`);
|
|
116
|
+
if (result.new > 0)
|
|
117
|
+
lines.push(` New: ${result.new} \u26A1`);
|
|
118
|
+
lines.push(` Time: ${result.duration}ms`);
|
|
119
|
+
lines.push("");
|
|
120
|
+
lines.push("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501");
|
|
121
|
+
lines.push("");
|
|
122
|
+
return lines.join(`
|
|
123
|
+
`);
|
|
124
|
+
}
|
|
125
|
+
export async function runA11yTests(ctx, _options = {}) {
|
|
126
|
+
const startTime = performance.now(), failures = [];
|
|
127
|
+
let passed = 0, failed = 0;
|
|
128
|
+
for (const storyFile of ctx.storyFiles)
|
|
129
|
+
try {
|
|
130
|
+
const htmlContent = await Bun.file(storyFile.path).text(), violations = await checkA11y(htmlContent, storyFile.path);
|
|
131
|
+
if (violations.length > 0) {
|
|
132
|
+
for (const violation of violations)
|
|
133
|
+
failures.push({
|
|
134
|
+
storyId: storyFile.id,
|
|
135
|
+
variantId: "default",
|
|
136
|
+
component: storyFile.component,
|
|
137
|
+
message: `A11y: ${violation.message}`,
|
|
138
|
+
expected: "No accessibility violations",
|
|
139
|
+
actual: `${violation.type}: ${violation.message} (impact: ${violation.impact})`
|
|
140
|
+
});
|
|
141
|
+
failed++;
|
|
142
|
+
} else
|
|
143
|
+
passed++;
|
|
144
|
+
} catch (error) {
|
|
145
|
+
failures.push({
|
|
146
|
+
storyId: storyFile.id,
|
|
147
|
+
variantId: "default",
|
|
148
|
+
component: storyFile.component,
|
|
149
|
+
message: `Failed to check a11y: ${error instanceof Error ? error.message : String(error)}`,
|
|
150
|
+
expected: "File readable for a11y check",
|
|
151
|
+
actual: "File read error"
|
|
152
|
+
});
|
|
153
|
+
failed++;
|
|
154
|
+
}
|
|
155
|
+
const duration = performance.now() - startTime;
|
|
156
|
+
return {
|
|
157
|
+
total: ctx.storyFiles.length,
|
|
158
|
+
passed,
|
|
159
|
+
failed,
|
|
160
|
+
new: 0,
|
|
161
|
+
failures,
|
|
162
|
+
duration
|
|
163
|
+
};
|
|
164
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { StoryContext } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Get current theme
|
|
4
|
+
*/
|
|
5
|
+
export declare function getCurrentTheme(): ThemeConfig;
|
|
6
|
+
/**
|
|
7
|
+
* Check if dark mode is active
|
|
8
|
+
*/
|
|
9
|
+
export declare function isDark(): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Toggle dark mode
|
|
12
|
+
*/
|
|
13
|
+
export declare function toggleDarkMode(): void;
|
|
14
|
+
/**
|
|
15
|
+
* Set theme
|
|
16
|
+
*/
|
|
17
|
+
export declare function setTheme(theme: Partial<ThemeConfig>): void;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize theme from context
|
|
20
|
+
*/
|
|
21
|
+
export declare function initializeTheme(ctx: StoryContext): void;
|
|
22
|
+
/**
|
|
23
|
+
* Generate CSS variables from theme
|
|
24
|
+
*/
|
|
25
|
+
export declare function generateThemeCSS(theme?: ThemeConfig): string;
|
|
26
|
+
/**
|
|
27
|
+
* Generate theme toggle button HTML
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateThemeToggle(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Get theme toggle script
|
|
32
|
+
*/
|
|
33
|
+
export declare function getThemeToggleScript(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Export theme tokens to JSON
|
|
36
|
+
*/
|
|
37
|
+
export declare function exportThemeTokensJSON(theme?: ThemeConfig): string;
|
|
38
|
+
/**
|
|
39
|
+
* Export theme tokens to CSS custom properties
|
|
40
|
+
*/
|
|
41
|
+
export declare function exportThemeTokensCSS(theme?: ThemeConfig): string;
|
|
42
|
+
/**
|
|
43
|
+
* Get theme styles
|
|
44
|
+
*/
|
|
45
|
+
export declare function getThemeStyles(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Default light theme
|
|
48
|
+
*/
|
|
49
|
+
export declare const lightTheme: ThemeConfig;
|
|
50
|
+
/**
|
|
51
|
+
* Default dark theme
|
|
52
|
+
*/
|
|
53
|
+
export declare const darkTheme: ThemeConfig;
|
|
54
|
+
/**
|
|
55
|
+
* Theme configuration
|
|
56
|
+
*/
|
|
57
|
+
export declare interface ThemeConfig {
|
|
58
|
+
colorScheme: 'light' | 'dark' | 'auto'
|
|
59
|
+
primaryColor: string
|
|
60
|
+
backgroundColor: string
|
|
61
|
+
textColor: string
|
|
62
|
+
borderColor: string
|
|
63
|
+
secondaryBackground: string
|
|
64
|
+
secondaryText: string
|
|
65
|
+
fontFamily: string
|
|
66
|
+
codeFontFamily: string
|
|
67
|
+
borderRadius: string
|
|
68
|
+
}
|