@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,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STX Async Components
|
|
3
|
+
*
|
|
4
|
+
* Provides lazy loading capabilities for components with loading and error states.
|
|
5
|
+
*
|
|
6
|
+
* @module async-components
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```html
|
|
10
|
+
* @async(component: 'HeavyChart', timeout: 5000)
|
|
11
|
+
* <div class="loading">Loading chart...</div>
|
|
12
|
+
* @error
|
|
13
|
+
* <div class="error">Failed to load chart</div>
|
|
14
|
+
* @endasync
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* Or inline:
|
|
18
|
+
* ```html
|
|
19
|
+
* <AsyncComponent
|
|
20
|
+
* :component="() => import('./HeavyChart.stx')"
|
|
21
|
+
* :timeout="5000"
|
|
22
|
+
* >
|
|
23
|
+
* <template #loading>Loading...</template>
|
|
24
|
+
* <template #error="{ error }">Error: {{ error.message }}</template>
|
|
25
|
+
* </AsyncComponent>
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export interface AsyncComponentOptions {
|
|
29
|
+
/** Component path or name to load */
|
|
30
|
+
component: string;
|
|
31
|
+
/** Timeout in milliseconds (default: 30000) */
|
|
32
|
+
timeout?: number;
|
|
33
|
+
/** Delay before showing loading state in ms (default: 200) */
|
|
34
|
+
delay?: number;
|
|
35
|
+
/** Whether to suspend parent Suspense boundary */
|
|
36
|
+
suspensible?: boolean;
|
|
37
|
+
/** Custom loading component */
|
|
38
|
+
loadingComponent?: string;
|
|
39
|
+
/** Custom error component */
|
|
40
|
+
errorComponent?: string;
|
|
41
|
+
/** Retry attempts on failure (default: 0) */
|
|
42
|
+
retries?: number;
|
|
43
|
+
/** Props to pass to the loaded component */
|
|
44
|
+
props?: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
export interface AsyncComponentState {
|
|
47
|
+
/** Current loading state */
|
|
48
|
+
status: 'pending' | 'loading' | 'resolved' | 'rejected';
|
|
49
|
+
/** The loaded component content */
|
|
50
|
+
component: string | null;
|
|
51
|
+
/** Error if loading failed */
|
|
52
|
+
error: Error | null;
|
|
53
|
+
/** Number of retry attempts made */
|
|
54
|
+
attempts: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Process @async directives in templates.
|
|
58
|
+
*
|
|
59
|
+
* Syntax:
|
|
60
|
+
* @async(component: 'ComponentName', timeout: 5000)
|
|
61
|
+
* <loading content>
|
|
62
|
+
* @error
|
|
63
|
+
* <error content>
|
|
64
|
+
* @endasync
|
|
65
|
+
*/
|
|
66
|
+
export declare function processAsyncDirectives(template: string, _context?: Record<string, unknown>, _filePath?: string): string;
|
|
67
|
+
/**
|
|
68
|
+
* Define an async component for programmatic use.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const AsyncChart = defineAsyncComponent({
|
|
73
|
+
* loader: () => import('./Chart.stx'),
|
|
74
|
+
* loadingComponent: LoadingSpinner,
|
|
75
|
+
* errorComponent: ErrorDisplay,
|
|
76
|
+
* delay: 200,
|
|
77
|
+
* timeout: 3000
|
|
78
|
+
* })
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export interface DefineAsyncComponentOptions {
|
|
82
|
+
/** Function that returns a Promise resolving to the component */
|
|
83
|
+
loader: () => Promise<{
|
|
84
|
+
default: string;
|
|
85
|
+
} | string>;
|
|
86
|
+
/** Component to show while loading */
|
|
87
|
+
loadingComponent?: string;
|
|
88
|
+
/** Component to show on error */
|
|
89
|
+
errorComponent?: string;
|
|
90
|
+
/** Delay before showing loading component (ms) */
|
|
91
|
+
delay?: number;
|
|
92
|
+
/** Timeout before showing error (ms) */
|
|
93
|
+
timeout?: number;
|
|
94
|
+
/** Whether to suspend parent Suspense */
|
|
95
|
+
suspensible?: boolean;
|
|
96
|
+
/** Called when loading starts */
|
|
97
|
+
onLoadStart?: () => void;
|
|
98
|
+
/** Called when component is loaded */
|
|
99
|
+
onLoadEnd?: () => void;
|
|
100
|
+
/** Called on error */
|
|
101
|
+
onError?: (error: Error, retry: () => void, fail: () => void, attempts: number) => void;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Define an async component.
|
|
105
|
+
*/
|
|
106
|
+
export declare function defineAsyncComponent(options: DefineAsyncComponentOptions | (() => Promise<{
|
|
107
|
+
default: string;
|
|
108
|
+
} | string>)): AsyncComponentDefinition;
|
|
109
|
+
export interface AsyncComponentDefinition extends DefineAsyncComponentOptions {
|
|
110
|
+
__asyncComponent: true;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if a value is an async component definition.
|
|
114
|
+
*/
|
|
115
|
+
export declare function isAsyncComponent(value: unknown): value is AsyncComponentDefinition;
|
|
116
|
+
/**
|
|
117
|
+
* Generate CSS for async component styling.
|
|
118
|
+
*/
|
|
119
|
+
export declare function generateAsyncComponentCSS(): string;
|
|
120
|
+
/**
|
|
121
|
+
* Generate client-side runtime for async components.
|
|
122
|
+
*/
|
|
123
|
+
export declare function generateAsyncComponentRuntime(): string;
|
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
let asyncIdCounter = 0;
|
|
2
|
+
function generateAsyncId() {
|
|
3
|
+
return `async-${++asyncIdCounter}-${Date.now().toString(36)}`;
|
|
4
|
+
}
|
|
5
|
+
export function processAsyncDirectives(template, _context = {}, _filePath) {
|
|
6
|
+
const asyncWithErrorRegex = /@async\s*\(([^)]*)\)\s*([\s\S]*?)@error\s*([\s\S]*?)@endasync/gi, asyncWithoutErrorRegex = /@async\s*\(([^)]*)\)\s*([\s\S]*?)@endasync/gi;
|
|
7
|
+
let result = template;
|
|
8
|
+
result = result.replace(asyncWithErrorRegex, (_match, optionsStr, loadingContent, errorContent) => {
|
|
9
|
+
const asyncId = generateAsyncId(), options = parseAsyncOptions(optionsStr);
|
|
10
|
+
return generateAsyncComponentHtml(asyncId, options, loadingContent.trim(), errorContent.trim());
|
|
11
|
+
});
|
|
12
|
+
result = result.replace(asyncWithoutErrorRegex, (_match, optionsStr, loadingContent) => {
|
|
13
|
+
const asyncId = generateAsyncId(), options = parseAsyncOptions(optionsStr);
|
|
14
|
+
return generateAsyncComponentHtml(asyncId, options, loadingContent.trim(), '<div class="stx-async-error">Failed to load component</div>');
|
|
15
|
+
});
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
function parseAsyncOptions(optionsStr) {
|
|
19
|
+
const options = {
|
|
20
|
+
component: "",
|
|
21
|
+
timeout: 30000,
|
|
22
|
+
delay: 200,
|
|
23
|
+
suspensible: !0,
|
|
24
|
+
retries: 0
|
|
25
|
+
}, keyValueRegex = /(\w+)\s*:\s*(?:'([^']*)'|"([^"]*)"|(\d+)|(\w+))/g;
|
|
26
|
+
let match;
|
|
27
|
+
while ((match = keyValueRegex.exec(optionsStr)) !== null) {
|
|
28
|
+
const key = match[1], strValue = match[2] || match[3], numValue = match[4], boolOrId = match[5];
|
|
29
|
+
switch (key) {
|
|
30
|
+
case "component":
|
|
31
|
+
options.component = strValue || boolOrId || "";
|
|
32
|
+
break;
|
|
33
|
+
case "timeout":
|
|
34
|
+
options.timeout = numValue ? parseInt(numValue, 10) : 30000;
|
|
35
|
+
break;
|
|
36
|
+
case "delay":
|
|
37
|
+
options.delay = numValue ? parseInt(numValue, 10) : 200;
|
|
38
|
+
break;
|
|
39
|
+
case "suspensible":
|
|
40
|
+
options.suspensible = boolOrId === "true";
|
|
41
|
+
break;
|
|
42
|
+
case "retries":
|
|
43
|
+
options.retries = numValue ? parseInt(numValue, 10) : 0;
|
|
44
|
+
break;
|
|
45
|
+
case "loadingComponent":
|
|
46
|
+
options.loadingComponent = strValue || boolOrId;
|
|
47
|
+
break;
|
|
48
|
+
case "errorComponent":
|
|
49
|
+
options.errorComponent = strValue || boolOrId;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return options;
|
|
54
|
+
}
|
|
55
|
+
function generateAsyncComponentHtml(asyncId, options, loadingContent, errorContent) {
|
|
56
|
+
const { component, timeout, delay, suspensible, retries } = options;
|
|
57
|
+
return `
|
|
58
|
+
<div class="stx-async-component" data-async-id="${asyncId}" data-component="${component}" data-status="pending">
|
|
59
|
+
<div class="stx-async-loading" data-async-loading="${asyncId}">
|
|
60
|
+
${loadingContent}
|
|
61
|
+
</div>
|
|
62
|
+
<div class="stx-async-content" data-async-content="${asyncId}" style="display: none;">
|
|
63
|
+
</div>
|
|
64
|
+
<div class="stx-async-error" data-async-error="${asyncId}" style="display: none;">
|
|
65
|
+
${errorContent}
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
<script>
|
|
69
|
+
(function() {
|
|
70
|
+
const asyncId = '${asyncId}';
|
|
71
|
+
const componentPath = '${component}';
|
|
72
|
+
const timeout = ${timeout};
|
|
73
|
+
const delay = ${delay};
|
|
74
|
+
const suspensible = ${suspensible};
|
|
75
|
+
const maxRetries = ${retries};
|
|
76
|
+
|
|
77
|
+
const container = document.querySelector('[data-async-id="' + asyncId + '"]');
|
|
78
|
+
const loadingEl = document.querySelector('[data-async-loading="' + asyncId + '"]');
|
|
79
|
+
const contentEl = document.querySelector('[data-async-content="' + asyncId + '"]');
|
|
80
|
+
const errorEl = document.querySelector('[data-async-error="' + asyncId + '"]');
|
|
81
|
+
|
|
82
|
+
if (!container || !loadingEl || !contentEl || !errorEl) return;
|
|
83
|
+
|
|
84
|
+
let attempts = 0;
|
|
85
|
+
let delayTimer = null;
|
|
86
|
+
let timeoutTimer = null;
|
|
87
|
+
let resolved = false;
|
|
88
|
+
let aborted = false;
|
|
89
|
+
|
|
90
|
+
// AbortController + container detachment guards (stacksjs/stx#1720). Without
|
|
91
|
+
// these, an in-flight fetch from a previous page would write innerHTML on
|
|
92
|
+
// a detached container after the user SPA-navigated away, or \u2014 for
|
|
93
|
+
// components removed via :if/parent toggle \u2014 would log a "rejected" state
|
|
94
|
+
// on a node that no longer exists. The router dispatches stx:navigate
|
|
95
|
+
// when a navigation starts; we treat that as a teardown signal. The
|
|
96
|
+
// isConnected check covers non-router unmounts (:if false, parent remove).
|
|
97
|
+
const controller = new AbortController();
|
|
98
|
+
function teardown() {
|
|
99
|
+
if (aborted) return;
|
|
100
|
+
aborted = true;
|
|
101
|
+
controller.abort();
|
|
102
|
+
clearTimeout(delayTimer);
|
|
103
|
+
clearTimeout(timeoutTimer);
|
|
104
|
+
window.removeEventListener('stx:navigate', teardown);
|
|
105
|
+
}
|
|
106
|
+
window.addEventListener('stx:navigate', teardown);
|
|
107
|
+
|
|
108
|
+
// Update state
|
|
109
|
+
function setState(status) {
|
|
110
|
+
container.setAttribute('data-status', status);
|
|
111
|
+
loadingEl.style.display = status === 'loading' ? '' : 'none';
|
|
112
|
+
contentEl.style.display = status === 'resolved' ? '' : 'none';
|
|
113
|
+
errorEl.style.display = status === 'rejected' ? '' : 'none';
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Show loading after delay
|
|
117
|
+
function showLoading() {
|
|
118
|
+
if (!resolved) {
|
|
119
|
+
setState('loading');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Load component
|
|
124
|
+
async function loadComponent() {
|
|
125
|
+
attempts++;
|
|
126
|
+
|
|
127
|
+
// Start delay timer for loading state
|
|
128
|
+
delayTimer = setTimeout(showLoading, delay);
|
|
129
|
+
|
|
130
|
+
// Start timeout timer
|
|
131
|
+
timeoutTimer = setTimeout(function() {
|
|
132
|
+
if (!resolved) {
|
|
133
|
+
handleError(new Error('Component load timeout after ' + timeout + 'ms'));
|
|
134
|
+
}
|
|
135
|
+
}, timeout);
|
|
136
|
+
|
|
137
|
+
try {
|
|
138
|
+
// Notify Suspense boundary if suspensible
|
|
139
|
+
if (suspensible && window.STX && window.STX.suspense) {
|
|
140
|
+
window.STX.suspense.register(asyncId);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Fetch the component with the AbortController signal so a teardown
|
|
144
|
+
// (SPA navigation, component unmount) cancels the in-flight request.
|
|
145
|
+
const response = await fetch('/_stx/component/' + encodeURIComponent(componentPath), {
|
|
146
|
+
signal: controller.signal
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
if (!response.ok) {
|
|
150
|
+
throw new Error('Failed to load component: ' + response.statusText);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const html = await response.text();
|
|
154
|
+
|
|
155
|
+
// Clear timers
|
|
156
|
+
clearTimeout(delayTimer);
|
|
157
|
+
clearTimeout(timeoutTimer);
|
|
158
|
+
|
|
159
|
+
// Belt-and-suspenders: if the container was removed between the fetch
|
|
160
|
+
// starting and now (e.g. :if flipped to false, or a non-router parent
|
|
161
|
+
// mutation), bail before writing innerHTML on a detached node.
|
|
162
|
+
if (aborted || !container.isConnected) return;
|
|
163
|
+
|
|
164
|
+
resolved = true;
|
|
165
|
+
contentEl.innerHTML = html;
|
|
166
|
+
setState('resolved');
|
|
167
|
+
|
|
168
|
+
// Execute any scripts in the loaded component
|
|
169
|
+
contentEl.querySelectorAll('script').forEach(function(script) {
|
|
170
|
+
const newScript = document.createElement('script');
|
|
171
|
+
if (script.src) {
|
|
172
|
+
newScript.src = script.src;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
newScript.textContent = script.textContent;
|
|
176
|
+
}
|
|
177
|
+
script.parentNode.replaceChild(newScript, script);
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
// Process signals/bindings on the loaded content ({{ }}, :attr, @event, etc.)
|
|
181
|
+
if (window.stx && window.stx._latestSetup) {
|
|
182
|
+
window.dispatchEvent(new Event('stx:load'));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Notify Suspense boundary
|
|
186
|
+
if (suspensible && window.STX && window.STX.suspense) {
|
|
187
|
+
window.STX.suspense.resolve(asyncId);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Dispatch loaded event
|
|
191
|
+
container.dispatchEvent(new CustomEvent('stx:async:loaded', {
|
|
192
|
+
detail: { asyncId: asyncId, component: componentPath },
|
|
193
|
+
bubbles: true
|
|
194
|
+
}));
|
|
195
|
+
|
|
196
|
+
// Load succeeded \u2014 drop the navigate-teardown listener so it doesn't
|
|
197
|
+
// accumulate per async component across an app's lifetime.
|
|
198
|
+
window.removeEventListener('stx:navigate', teardown);
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
// AbortError fires when teardown() runs during an in-flight fetch.
|
|
202
|
+
// That's not a load failure \u2014 the component is being unmounted, so
|
|
203
|
+
// don't render the rejected state, don't retry, don't dispatch error.
|
|
204
|
+
if (aborted || (error && error.name === 'AbortError')) return;
|
|
205
|
+
handleError(error);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Handle errors
|
|
210
|
+
function handleError(error) {
|
|
211
|
+
clearTimeout(delayTimer);
|
|
212
|
+
clearTimeout(timeoutTimer);
|
|
213
|
+
|
|
214
|
+
// The container may have been removed (e.g., a non-router :if toggle)
|
|
215
|
+
// between the failure and now. No DOM left to write the error state to.
|
|
216
|
+
if (aborted || !container.isConnected) return;
|
|
217
|
+
|
|
218
|
+
if (attempts < maxRetries) {
|
|
219
|
+
// Retry
|
|
220
|
+
console.warn('[stx:async:' + asyncId + '] Retrying... (' + attempts + '/' + maxRetries + ')');
|
|
221
|
+
setTimeout(loadComponent, 1000 * attempts); // Exponential backoff
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
resolved = true;
|
|
226
|
+
setState('rejected');
|
|
227
|
+
|
|
228
|
+
// Update error content with error message
|
|
229
|
+
const errorMsgEl = errorEl.querySelector('[data-error-message]');
|
|
230
|
+
if (errorMsgEl) {
|
|
231
|
+
errorMsgEl.textContent = error.message;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Notify Suspense boundary
|
|
235
|
+
if (suspensible && window.STX && window.STX.suspense) {
|
|
236
|
+
window.STX.suspense.reject(asyncId, error);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Dispatch error event
|
|
240
|
+
container.dispatchEvent(new CustomEvent('stx:async:error', {
|
|
241
|
+
detail: { asyncId: asyncId, component: componentPath, error: error },
|
|
242
|
+
bubbles: true
|
|
243
|
+
}));
|
|
244
|
+
|
|
245
|
+
console.error('[stx:async:' + asyncId + ']', error);
|
|
246
|
+
|
|
247
|
+
// Final error state \u2014 no more retries. Drop the navigate listener so it
|
|
248
|
+
// doesn't outlive the (failed) component.
|
|
249
|
+
window.removeEventListener('stx:navigate', teardown);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Retry function
|
|
253
|
+
function retry() {
|
|
254
|
+
resolved = false;
|
|
255
|
+
attempts = 0;
|
|
256
|
+
setState('pending');
|
|
257
|
+
loadComponent();
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Expose retry function
|
|
261
|
+
window['$stxAsyncRetry_' + asyncId.replace(/-/g, '_')] = retry;
|
|
262
|
+
|
|
263
|
+
// Make $retry available within the error content
|
|
264
|
+
errorEl.querySelectorAll('[onclick*="$retry"]').forEach(function(el) {
|
|
265
|
+
const onclick = el.getAttribute('onclick');
|
|
266
|
+
if (onclick) {
|
|
267
|
+
el.setAttribute('onclick', onclick.replace(/\\$retry\\(\\)/g, "window['$stxAsyncRetry_" + asyncId.replace(/-/g, '_') + "']()"));
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
// Expose API
|
|
272
|
+
window.STX = window.STX || {};
|
|
273
|
+
window.STX.asyncComponents = window.STX.asyncComponents || {};
|
|
274
|
+
window.STX.asyncComponents[asyncId] = {
|
|
275
|
+
getStatus: function() { return container.getAttribute('data-status'); },
|
|
276
|
+
retry: retry,
|
|
277
|
+
getAttempts: function() { return attempts; }
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
// Start loading
|
|
281
|
+
loadComponent();
|
|
282
|
+
})();
|
|
283
|
+
</script>
|
|
284
|
+
`;
|
|
285
|
+
}
|
|
286
|
+
export function defineAsyncComponent(options) {
|
|
287
|
+
return {
|
|
288
|
+
__asyncComponent: !0,
|
|
289
|
+
...typeof options === "function" ? { loader: options } : options
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
export function isAsyncComponent(value) {
|
|
293
|
+
return typeof value === "object" && value !== null && "__asyncComponent" in value && value.__asyncComponent === !0;
|
|
294
|
+
}
|
|
295
|
+
export function generateAsyncComponentCSS() {
|
|
296
|
+
return `
|
|
297
|
+
/* STX Async Component Styles */
|
|
298
|
+
.stx-async-component {
|
|
299
|
+
position: relative;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.stx-async-loading {
|
|
303
|
+
display: flex;
|
|
304
|
+
align-items: center;
|
|
305
|
+
justify-content: center;
|
|
306
|
+
min-height: 100px;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.stx-async-error {
|
|
310
|
+
padding: 1rem;
|
|
311
|
+
border: 1px solid #ef4444;
|
|
312
|
+
border-radius: 0.5rem;
|
|
313
|
+
background-color: #fef2f2;
|
|
314
|
+
color: #991b1b;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.stx-async-error button {
|
|
318
|
+
margin-top: 0.5rem;
|
|
319
|
+
padding: 0.5rem 1rem;
|
|
320
|
+
border: 1px solid #ef4444;
|
|
321
|
+
border-radius: 0.25rem;
|
|
322
|
+
background-color: #ef4444;
|
|
323
|
+
color: white;
|
|
324
|
+
cursor: pointer;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.stx-async-error button:hover {
|
|
328
|
+
background-color: #dc2626;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* Loading spinner animation */
|
|
332
|
+
@keyframes stx-async-spin {
|
|
333
|
+
to { transform: rotate(360deg); }
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.stx-async-spinner {
|
|
337
|
+
width: 24px;
|
|
338
|
+
height: 24px;
|
|
339
|
+
border: 2px solid #e5e7eb;
|
|
340
|
+
border-top-color: #3b82f6;
|
|
341
|
+
border-radius: 50%;
|
|
342
|
+
animation: stx-async-spin 0.8s linear infinite;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/* Skeleton loading */
|
|
346
|
+
.stx-async-skeleton {
|
|
347
|
+
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
|
|
348
|
+
background-size: 200% 100%;
|
|
349
|
+
animation: stx-async-shimmer 1.5s infinite;
|
|
350
|
+
border-radius: 0.25rem;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
@keyframes stx-async-shimmer {
|
|
354
|
+
0% { background-position: 200% 0; }
|
|
355
|
+
100% { background-position: -200% 0; }
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/* Dark mode */
|
|
359
|
+
@media (prefers-color-scheme: dark) {
|
|
360
|
+
.stx-async-error {
|
|
361
|
+
background-color: #450a0a;
|
|
362
|
+
color: #fecaca;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.stx-async-skeleton {
|
|
366
|
+
background: linear-gradient(90deg, #374151 25%, #4b5563 50%, #374151 75%);
|
|
367
|
+
background-size: 200% 100%;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
`;
|
|
371
|
+
}
|
|
372
|
+
export function generateAsyncComponentRuntime() {
|
|
373
|
+
return `
|
|
374
|
+
// STX Async Component Runtime
|
|
375
|
+
(function() {
|
|
376
|
+
if (typeof window === 'undefined') return;
|
|
377
|
+
|
|
378
|
+
window.STX = window.STX || {};
|
|
379
|
+
window.STX.asyncComponents = window.STX.asyncComponents || {};
|
|
380
|
+
|
|
381
|
+
// Load a component dynamically
|
|
382
|
+
window.STX.loadComponent = async function(componentPath, targetSelector, options) {
|
|
383
|
+
options = options || {};
|
|
384
|
+
const target = document.querySelector(targetSelector);
|
|
385
|
+
if (!target) {
|
|
386
|
+
throw new Error('Target element not found: ' + targetSelector);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
const loadingHtml = options.loading || '<div class="stx-async-spinner"></div>';
|
|
390
|
+
target.innerHTML = loadingHtml;
|
|
391
|
+
|
|
392
|
+
try {
|
|
393
|
+
const response = await fetch('/_stx/component/' + encodeURIComponent(componentPath));
|
|
394
|
+
if (!response.ok) {
|
|
395
|
+
throw new Error('Failed to load: ' + response.statusText);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
const html = await response.text();
|
|
399
|
+
target.innerHTML = html;
|
|
400
|
+
|
|
401
|
+
// Execute scripts
|
|
402
|
+
target.querySelectorAll('script').forEach(function(script) {
|
|
403
|
+
const newScript = document.createElement('script');
|
|
404
|
+
if (script.src) {
|
|
405
|
+
newScript.src = script.src;
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
newScript.textContent = script.textContent;
|
|
409
|
+
}
|
|
410
|
+
script.parentNode.replaceChild(newScript, script);
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
if (options.onLoad) options.onLoad();
|
|
414
|
+
return true;
|
|
415
|
+
}
|
|
416
|
+
catch (error) {
|
|
417
|
+
if (options.error) {
|
|
418
|
+
target.innerHTML = options.error;
|
|
419
|
+
}
|
|
420
|
+
if (options.onError) options.onError(error);
|
|
421
|
+
throw error;
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
console.log('[stx] Async component runtime initialized');
|
|
426
|
+
})();
|
|
427
|
+
`;
|
|
428
|
+
}
|
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module for handling authentication and authorization in templates
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Safely evaluates an auth expression within the given context
|
|
6
|
+
* Similar to evaluateExpression but specialized for auth conditionals
|
|
7
|
+
* Uses the safe evaluator to prevent code injection
|
|
8
|
+
*
|
|
9
|
+
* @param {string} expression - The expression to evaluate
|
|
10
|
+
* @param {Record<string, any>} context - The context object containing variables
|
|
11
|
+
* @returns The evaluated result
|
|
12
|
+
*/
|
|
13
|
+
export declare function evaluateAuthExpression(expression: string, context: Record<string, any>): any;
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createSafeFunction, isExpressionSafe, safeEvaluate } from "./safe-evaluator.js";
|
|
2
|
+
export function evaluateAuthExpression(expression, context) {
|
|
3
|
+
try {
|
|
4
|
+
const trimmedExpr = expression.trim();
|
|
5
|
+
if (isExpressionSafe(trimmedExpr))
|
|
6
|
+
return createSafeFunction(trimmedExpr, Object.keys(context))(...Object.values(context));
|
|
7
|
+
else
|
|
8
|
+
return safeEvaluate(trimmedExpr, context);
|
|
9
|
+
} catch {
|
|
10
|
+
return !1;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Broadcast, BroadcastServer, type ServerConfig } from 'ts-broadcasting';
|
|
2
|
+
import type { BroadcastingConfig } from './types/config-types';
|
|
3
|
+
export type {
|
|
4
|
+
ServerConfig,
|
|
5
|
+
} from 'ts-broadcasting';
|
|
6
|
+
/**
|
|
7
|
+
* Get the active BroadcastServer instance (or null if not started).
|
|
8
|
+
*/
|
|
9
|
+
export declare function getBroadcastServer(): BroadcastServer | null;
|
|
10
|
+
/**
|
|
11
|
+
* Start the broadcasting WebSocket server.
|
|
12
|
+
*
|
|
13
|
+
* Called automatically by the stx dev-server when `broadcasting.enabled`
|
|
14
|
+
* is true in stx.config.ts. You normally don't need to call this yourself.
|
|
15
|
+
*/
|
|
16
|
+
export declare function startBroadcasting(config: BroadcastingConfig): Promise<BroadcastServer>;
|
|
17
|
+
/**
|
|
18
|
+
* Stop the broadcasting server and clean up resources.
|
|
19
|
+
*/
|
|
20
|
+
export declare function stopBroadcasting(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Load and execute a `routes/channels.ts` file, wiring up every
|
|
23
|
+
* channel definition to the running broadcasting server.
|
|
24
|
+
*
|
|
25
|
+
* Called automatically by the stx dev-server after `startBroadcasting()`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function loadChannels(channelsPath: string): Promise<number>;
|
|
28
|
+
/**
|
|
29
|
+
* Broadcast an event to a channel (or multiple channels).
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* broadcast('chat', 'message.sent', { text: 'Hello!' })
|
|
34
|
+
* broadcast(['chat', 'admin'], 'alert', { level: 'warn' })
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function broadcast<T = unknown>(channels: string | string[], event: string, data: T): void;
|
|
38
|
+
/**
|
|
39
|
+
* Broadcast to a specific user's private channel.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* toUser(42, 'notification', { title: 'You have mail' })
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function toUser<T = unknown>(userId: string | number, event: string, data: T): void;
|
|
47
|
+
/**
|
|
48
|
+
* Broadcast to multiple users.
|
|
49
|
+
*/
|
|
50
|
+
export declare function toUsers<T = unknown>(userIds: Array<string | number>, event: string, data: T): void;
|
|
51
|
+
/**
|
|
52
|
+
* Broadcast to a private channel.
|
|
53
|
+
*/
|
|
54
|
+
export declare function broadcastPrivate<T = unknown>(channelName: string, event: string, data: T): void;
|
|
55
|
+
/**
|
|
56
|
+
* Broadcast to a presence channel.
|
|
57
|
+
*/
|
|
58
|
+
export declare function broadcastPresence<T = unknown>(channelName: string, event: string, data: T): void;
|
|
59
|
+
// ── Types ──────────────────────────────────────────────────────
|
|
60
|
+
export declare interface ChannelDefinition<T = unknown> {
|
|
61
|
+
event?: string
|
|
62
|
+
interval?: number
|
|
63
|
+
data?: () => T | Promise<T>
|
|
64
|
+
authorize?: (socket: any, params: Record<string, string>) => boolean | object | Promise<boolean | object>
|
|
65
|
+
}
|
|
66
|
+
export declare interface ChannelRegistrar {
|
|
67
|
+
channel: <T = unknown>(name: string, definition: ChannelDefinition<T>) => void
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Register channel authorization (ad-hoc, outside routes/channels.ts).
|
|
71
|
+
*/
|
|
72
|
+
export { channel } from 'ts-broadcasting';
|
|
73
|
+
// ── Re-exports for advanced usage ──────────────────────────────
|
|
74
|
+
export {
|
|
75
|
+
Broadcast,
|
|
76
|
+
BroadcastServer,
|
|
77
|
+
} from 'ts-broadcasting';
|