@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,22 @@
|
|
|
1
|
+
/** Capture a single page to `output` using Bun's headless WebView. */
|
|
2
|
+
export declare function captureScreenshot(input: string, output: string, opts?: ScreenshotOptions): Promise<ShotResult>;
|
|
3
|
+
/**
|
|
4
|
+
* Capture `input` — a file, URL, or directory of `*.html` — to PNG(s) in
|
|
5
|
+
* `outDir`. Returns one result per page.
|
|
6
|
+
*/
|
|
7
|
+
export declare function captureScreenshots(input: string, outDir: string, opts?: ScreenshotOptions): Promise<ShotResult[]>;
|
|
8
|
+
export declare interface ScreenshotOptions {
|
|
9
|
+
width?: number
|
|
10
|
+
height?: number
|
|
11
|
+
waitMs?: number
|
|
12
|
+
timeoutMs?: number
|
|
13
|
+
format?: 'png' | 'jpeg' | 'webp'
|
|
14
|
+
backend?: 'webkit' | 'chrome'
|
|
15
|
+
fullPage?: boolean
|
|
16
|
+
waitSelector?: string
|
|
17
|
+
}
|
|
18
|
+
export declare interface ShotResult {
|
|
19
|
+
input: string
|
|
20
|
+
output: string
|
|
21
|
+
bytes: number
|
|
22
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { WebView, default as Bun } from "./bun-shim.js";
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, statSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
const MAX_DIMENSION = 16384;
|
|
5
|
+
function toUrl(input) {
|
|
6
|
+
if (/^https?:\/\//.test(input) || input.startsWith("file://"))
|
|
7
|
+
return input;
|
|
8
|
+
return `file://${path.resolve(input)}`;
|
|
9
|
+
}
|
|
10
|
+
function navigateAndWait(view, url, waitMs, timeoutMs) {
|
|
11
|
+
return new Promise((resolve) => {
|
|
12
|
+
let settled = !1, settleTimer, timeoutTimer;
|
|
13
|
+
const finish = () => {
|
|
14
|
+
if (!settled) {
|
|
15
|
+
settled = !0;
|
|
16
|
+
clearTimeout(timeoutTimer);
|
|
17
|
+
if (settleTimer)
|
|
18
|
+
clearTimeout(settleTimer);
|
|
19
|
+
view.onNavigated = void 0;
|
|
20
|
+
resolve();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
timeoutTimer = setTimeout(finish, timeoutMs);
|
|
24
|
+
view.onNavigated = () => {
|
|
25
|
+
if (!settled)
|
|
26
|
+
settleTimer = setTimeout(finish, waitMs);
|
|
27
|
+
};
|
|
28
|
+
try {
|
|
29
|
+
const navigation = view.navigate(url);
|
|
30
|
+
if (navigation && typeof navigation.catch === "function")
|
|
31
|
+
navigation.catch(finish);
|
|
32
|
+
} catch {
|
|
33
|
+
finish();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async function waitForSelector(view, selector, timeoutMs) {
|
|
38
|
+
const expr = `!!document.querySelector(${JSON.stringify(selector)})`, deadline = Date.now() + timeoutMs;
|
|
39
|
+
while (Date.now() < deadline) {
|
|
40
|
+
try {
|
|
41
|
+
if (await view.evaluate(expr))
|
|
42
|
+
return;
|
|
43
|
+
} catch {}
|
|
44
|
+
await new Promise((r) => setTimeout(r, 100));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function measureFullHeight(view) {
|
|
48
|
+
try {
|
|
49
|
+
const h = await view.evaluate("Math.ceil(Math.max(document.documentElement.scrollHeight, document.documentElement.offsetHeight, document.body ? document.body.scrollHeight : 0, document.body ? document.body.offsetHeight : 0))");
|
|
50
|
+
return typeof h === "number" && Number.isFinite(h) && h > 0 ? Math.min(h, MAX_DIMENSION) : 0;
|
|
51
|
+
} catch {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export async function captureScreenshot(input, output, opts = {}) {
|
|
56
|
+
const width = Math.min(opts.width ?? 1440, MAX_DIMENSION), height = Math.min(opts.height ?? 2200, MAX_DIMENSION), waitMs = opts.waitMs ?? 800, timeoutMs = opts.timeoutMs ?? 15000, format = opts.format ?? "png", url = toUrl(input), open = (h) => new WebView({
|
|
57
|
+
width,
|
|
58
|
+
height: h,
|
|
59
|
+
headless: !0,
|
|
60
|
+
...opts.backend ? { backend: opts.backend } : {}
|
|
61
|
+
});
|
|
62
|
+
let view = open(height);
|
|
63
|
+
try {
|
|
64
|
+
await navigateAndWait(view, url, waitMs, timeoutMs);
|
|
65
|
+
if (opts.waitSelector)
|
|
66
|
+
await waitForSelector(view, opts.waitSelector, timeoutMs);
|
|
67
|
+
if (opts.fullPage) {
|
|
68
|
+
const full = await measureFullHeight(view);
|
|
69
|
+
if (full > height) {
|
|
70
|
+
view.close();
|
|
71
|
+
view = open(full);
|
|
72
|
+
await navigateAndWait(view, url, waitMs, timeoutMs);
|
|
73
|
+
if (opts.waitSelector)
|
|
74
|
+
await waitForSelector(view, opts.waitSelector, timeoutMs);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const buf = await view.screenshot({ encoding: "buffer", format });
|
|
78
|
+
mkdirSync(path.dirname(path.resolve(output)), { recursive: !0 });
|
|
79
|
+
await Bun.write(output, buf);
|
|
80
|
+
} finally {
|
|
81
|
+
view.close();
|
|
82
|
+
}
|
|
83
|
+
if (!existsSync(output))
|
|
84
|
+
throw Error(`Screenshot was not produced for ${input}`);
|
|
85
|
+
return { input, output, bytes: statSync(output).size };
|
|
86
|
+
}
|
|
87
|
+
export async function captureScreenshots(input, outDir, opts = {}) {
|
|
88
|
+
mkdirSync(outDir, { recursive: !0 });
|
|
89
|
+
let pages;
|
|
90
|
+
if (!/^https?:\/\//.test(input) && existsSync(input) && statSync(input).isDirectory())
|
|
91
|
+
pages = readdirSync(input).filter((f) => f.endsWith(".html")).map((f) => path.join(input, f));
|
|
92
|
+
else
|
|
93
|
+
pages = [input];
|
|
94
|
+
const ext = opts.format ?? "png", results = [];
|
|
95
|
+
for (const page of pages) {
|
|
96
|
+
const name = /^https?:\/\//.test(page) ? new URL(page).pathname.replace(/\W+/g, "-").replace(/^-|-$/g, "") || "index" : path.basename(page).replace(/\.html?$/, "");
|
|
97
|
+
results.push(await captureScreenshot(page, path.join(outDir, `${name}.${ext}`), opts));
|
|
98
|
+
}
|
|
99
|
+
return results;
|
|
100
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classify a `<script>` tag as signals, client, or server.
|
|
3
|
+
*
|
|
4
|
+
* Classification rules (in priority order):
|
|
5
|
+
* 1. Explicit `server` attribute → server
|
|
6
|
+
* 2. Uses signals API (state, derived, effect, etc.) → signals
|
|
7
|
+
* 3. Has `client` attribute, `type="module"`, or `src=` → client
|
|
8
|
+
* 4. Everything else → server (executed at build time for variable extraction)
|
|
9
|
+
*/
|
|
10
|
+
export declare function classifyScript(attrs: string, content: string, fullTag: string): ScriptClassification;
|
|
11
|
+
/**
|
|
12
|
+
* Classify all `<script>` tags in a template.
|
|
13
|
+
*
|
|
14
|
+
* The scan walks the template rather than running a global regex so that HTML
|
|
15
|
+
* comments are inert. A comment whose prose merely mentions a script tag — e.g.
|
|
16
|
+
* `<!-- the <script server> block owner-scopes the switcher -->` — used to be
|
|
17
|
+
* matched as a REAL opening tag, and the non-greedy regex then ran on to the
|
|
18
|
+
* next `</script>`. The resulting bogus `fullTag` spanned from inside the comment
|
|
19
|
+
* to the end of an unrelated script, so callers that delete `fullTag`
|
|
20
|
+
* (app-shell's `cleanTemplate`, serve-app's `templateContent`) erased the
|
|
21
|
+
* comment's `-->` terminator AND every real script in between — producing a
|
|
22
|
+
* runaway comment node that swallowed the rest of the document.
|
|
23
|
+
*
|
|
24
|
+
* `<template>` contents are deliberately still scanned: stx SFC files wrap their
|
|
25
|
+
* whole markup in `<template>`, and callers rely on scripts authored inside it
|
|
26
|
+
* being classified so they can be stripped from the rendered output.
|
|
27
|
+
*
|
|
28
|
+
* Returns arrays of scripts grouped by type.
|
|
29
|
+
*/
|
|
30
|
+
export declare function classifyAllScripts(content: string): {
|
|
31
|
+
signals: ScriptClassification[]
|
|
32
|
+
client: ScriptClassification[]
|
|
33
|
+
server: ScriptClassification[]
|
|
34
|
+
};
|
|
35
|
+
export declare interface ScriptClassification {
|
|
36
|
+
type: ScriptType
|
|
37
|
+
fullTag: string
|
|
38
|
+
content: string
|
|
39
|
+
attrs: string
|
|
40
|
+
}
|
|
41
|
+
export type ScriptType = 'signals' | 'client' | 'server';
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { matchHtmlComment, matchScriptElement } from "./html-masking.js";
|
|
2
|
+
const SIGNALS_PATTERN = /\b(?:state|derived|effect|batch|ref|reactive|computed|watch|watchEffect)\s*(?:<[^>]*>)?\s*\(/;
|
|
3
|
+
export function classifyScript(attrs, content, fullTag) {
|
|
4
|
+
const result = { fullTag, content, attrs };
|
|
5
|
+
if (/\bserver\b/.test(attrs))
|
|
6
|
+
return { ...result, type: "server" };
|
|
7
|
+
if (/\bdata-stx-scoped\b/.test(attrs))
|
|
8
|
+
return { ...result, type: "client" };
|
|
9
|
+
if (SIGNALS_PATTERN.test(content))
|
|
10
|
+
return { ...result, type: "signals" };
|
|
11
|
+
if (/\bclient\b/.test(attrs) || /\btype\s*=\s*["']module["']/.test(attrs) || /\bsrc\s*=/.test(attrs))
|
|
12
|
+
return { ...result, type: "client" };
|
|
13
|
+
return { ...result, type: "server" };
|
|
14
|
+
}
|
|
15
|
+
const SCRIPT_PARTS = /^<script\b([^>]*)>([\s\S]*)<\/script\s*>$/i;
|
|
16
|
+
export function classifyAllScripts(content) {
|
|
17
|
+
const signals = [], client = [], server = [];
|
|
18
|
+
let i = 0;
|
|
19
|
+
while (i < content.length) {
|
|
20
|
+
const lt = content.indexOf("<", i);
|
|
21
|
+
if (lt === -1)
|
|
22
|
+
break;
|
|
23
|
+
const commentEnd = matchHtmlComment(content, lt);
|
|
24
|
+
if (commentEnd > lt) {
|
|
25
|
+
i = commentEnd;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const scriptEnd = matchScriptElement(content, lt);
|
|
29
|
+
if (scriptEnd > lt) {
|
|
30
|
+
const fullTag = content.slice(lt, scriptEnd), parts = SCRIPT_PARTS.exec(fullTag);
|
|
31
|
+
if (parts) {
|
|
32
|
+
const classification = classifyScript(parts[1], parts[2], fullTag);
|
|
33
|
+
switch (classification.type) {
|
|
34
|
+
case "signals":
|
|
35
|
+
signals.push(classification);
|
|
36
|
+
break;
|
|
37
|
+
case "client":
|
|
38
|
+
client.push(classification);
|
|
39
|
+
break;
|
|
40
|
+
case "server":
|
|
41
|
+
server.push(classification);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
i = scriptEnd;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
i = lt + (content.startsWith("<!--", lt) ? 4 : 1);
|
|
49
|
+
}
|
|
50
|
+
return { signals, client, server };
|
|
51
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escape script bodies at EMIT time (stacksjs/stx#1792, part one item 2).
|
|
3
|
+
*
|
|
4
|
+
* A `</script>` anywhere inside a script body — in a string, a comment, or a
|
|
5
|
+
* runtime value — ends the element as far as the HTML parser is concerned. The
|
|
6
|
+
* rest of the script is then painted onto the page as text, and everything
|
|
7
|
+
* defined below the offending line silently does not exist.
|
|
8
|
+
*
|
|
9
|
+
* The documented workaround is to write `<\/script>` in the source. It does not
|
|
10
|
+
* work, and that is the crux of the report: `transpileTypeScript` runs every
|
|
11
|
+
* non-server block through Bun's transpiler, which NORMALISES the escape away
|
|
12
|
+
* before the browser ever sees it.
|
|
13
|
+
*
|
|
14
|
+
* in : const s = "<\/script>"
|
|
15
|
+
* out: const s = "</script>";
|
|
16
|
+
*
|
|
17
|
+
* So the escape protects the source from stx's own scanners and is then
|
|
18
|
+
* stripped, leaving the HTML parser to apply exactly the rule it was meant to
|
|
19
|
+
* dodge. Escaping on emit is the only place the protection can survive, because
|
|
20
|
+
* it happens after the transpiler.
|
|
21
|
+
*
|
|
22
|
+
* The transform is semantically inert for JavaScript: `\/` inside a string, a
|
|
23
|
+
* template literal, a regex literal or a comment parses as `/`. It is also
|
|
24
|
+
* valid inside JSON, where `\/` is an explicit escape — so a JSON-LD or
|
|
25
|
+
* importmap body would survive it, though those bodies are excluded upstream
|
|
26
|
+
* and never reach here.
|
|
27
|
+
*
|
|
28
|
+
* This is a leaf module on purpose: no stx imports, so every emit site can use
|
|
29
|
+
* it without creating a cycle.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Neutralise closing script tags in a JavaScript body about to be embedded in
|
|
33
|
+
* an HTML `<script>` element.
|
|
34
|
+
*
|
|
35
|
+
* Idempotent: an already-escaped `<\/script` contains no `</script`, so
|
|
36
|
+
* re-running this is a no-op rather than a double-escape.
|
|
37
|
+
*/
|
|
38
|
+
export declare function escapeScriptBody(js: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Warn when a body still carries a raw closing tag at emit time.
|
|
41
|
+
*
|
|
42
|
+
* A truncated script is never the intent, so this is worth saying out loud —
|
|
43
|
+
* both of the reported production incidents were diagnosed from the browser's
|
|
44
|
+
* "Unexpected end of input" rather than from anything stx said.
|
|
45
|
+
*
|
|
46
|
+
* Deliberately a warning rather than the `StxSyntaxError` the issue proposes: a
|
|
47
|
+
* hard throw here could brick a production build over a vendor bundle inlined
|
|
48
|
+
* through `stx-inline`, which is a worse failure than the one being reported.
|
|
49
|
+
*/
|
|
50
|
+
export declare function assertNoRawClose(js: string, site: string, filePath?: string): void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const RAW_CLOSE = /<\/(script)/gi;
|
|
2
|
+
export function escapeScriptBody(js) {
|
|
3
|
+
if (!js || js.indexOf("</") === -1)
|
|
4
|
+
return js;
|
|
5
|
+
return js.replace(RAW_CLOSE, "<\\/$1");
|
|
6
|
+
}
|
|
7
|
+
export function assertNoRawClose(js, site, filePath) {
|
|
8
|
+
if (!js || !/<\/script/i.test(js))
|
|
9
|
+
return;
|
|
10
|
+
console.warn(`[stx] ${filePath ? `${filePath}: ` : ""}a script body emitted by ${site} still contains a literal closing script tag. The HTML parser will end the element there, so everything after it becomes page text and every declaration below it silently disappears. See stacksjs/stx#1792.`);
|
|
11
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embed JSON inside a `<script>` tag safely.
|
|
3
|
+
*
|
|
4
|
+
* `JSON.stringify` alone is not enough for script content, in two ways that both
|
|
5
|
+
* end with the browser parsing something the author did not write:
|
|
6
|
+
*
|
|
7
|
+
* - A `</script>` sequence inside any string value closes the tag early. The
|
|
8
|
+
* rest of the JSON then lands in the document as markup, so whoever controls
|
|
9
|
+
* that string controls the page.
|
|
10
|
+
* - U+2028 and U+2029 are literal line terminators in JavaScript, though legal
|
|
11
|
+
* unescaped in JSON. A value containing one splits the statement it sits in.
|
|
12
|
+
*
|
|
13
|
+
* This existed as five separate private copies — `spa-shell.ts`,
|
|
14
|
+
* `appearance-bootstrap.ts`, `color-mode-boot.ts`, `misc-directives.ts` and
|
|
15
|
+
* `bun-plugin/src/serve.ts`. That is the shape of bug this repo keeps paying
|
|
16
|
+
* for: a sixth injection site (`runtime-injection.ts`, added with the
|
|
17
|
+
* `ownedRoutes` table in #1864) had no escaping at all, because nothing
|
|
18
|
+
* connected it to the others.
|
|
19
|
+
*
|
|
20
|
+
* The escapes below are written as `\u` sequences rather than literal
|
|
21
|
+
* characters, and that is load-bearing. Writing a raw U+2028 inside the regex
|
|
22
|
+
* terminates the line mid-literal and the file stops parsing — this module's
|
|
23
|
+
* own first draft did exactly that, which is a fair demonstration of why the
|
|
24
|
+
* function needs to exist.
|
|
25
|
+
*
|
|
26
|
+
* @module script-json
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Escape an already-serialised JSON string for inclusion in a `<script>` body.
|
|
30
|
+
*
|
|
31
|
+
* `<` and `>` are escaped rather than only the `</script>` sequence, so no
|
|
32
|
+
* variant spelling (`</SCRIPT`, `</script foo`) can slip through.
|
|
33
|
+
*/
|
|
34
|
+
export declare function escapeJsonForScript(json: string): string;
|
|
35
|
+
/** Serialise a value and escape it for a `<script>` body in one step. */
|
|
36
|
+
export declare function toScriptJson(value: unknown): string;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { StrictModeConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Prohibited DOM API patterns in client scripts.
|
|
4
|
+
* STX provides Vue-style alternatives via the STX global object.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PROHIBITED_DOM_PATTERNS: Array<{
|
|
7
|
+
pattern: RegExp;
|
|
8
|
+
message: string;
|
|
9
|
+
suggestion: string;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Validate client script content for prohibited DOM API patterns.
|
|
13
|
+
* When strict mode is enabled with `failOnViolation`, throws an error.
|
|
14
|
+
* Otherwise, emits warnings.
|
|
15
|
+
*
|
|
16
|
+
* @param content - The script content to validate
|
|
17
|
+
* @param filePath - The file path for error reporting
|
|
18
|
+
* @param strict - Strict mode configuration
|
|
19
|
+
*/
|
|
20
|
+
export declare function validateClientScript(content: string, filePath: string, strict?: boolean | StrictModeConfig,
|
|
21
|
+
/**
|
|
22
|
+
* The view this script was authored in, when `filePath` is a layout that view
|
|
23
|
+
* was composed into. Reported alongside, because naming only the layout sends
|
|
24
|
+
* the reader to a file that does not contain the offending code (#1836).
|
|
25
|
+
*/
|
|
26
|
+
originFilePath?: string): void;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { contentKey, renderMemo } from "./render-memo.js";
|
|
2
|
+
import { stripCommentsAndLiterals } from "./strip-literals.js";
|
|
3
|
+
const verdicts = renderMemo(256);
|
|
4
|
+
export const PROHIBITED_DOM_PATTERNS = [
|
|
5
|
+
{
|
|
6
|
+
pattern: /document\.getElementById\s*\(/g,
|
|
7
|
+
message: "document.getElementById() is prohibited",
|
|
8
|
+
suggestion: 'Use useRef("name") instead'
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
pattern: /document\.querySelector\s*\(/g,
|
|
12
|
+
message: "document.querySelector() is prohibited",
|
|
13
|
+
suggestion: 'Use useRef("name") instead'
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
pattern: /document\.querySelectorAll\s*\(/g,
|
|
17
|
+
message: "document.querySelectorAll() is prohibited",
|
|
18
|
+
suggestion: 'Use useRef("name") and access children instead'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
pattern: /document\.getElementsBy\w+\s*\(/g,
|
|
22
|
+
message: "document.getElementsBy*() is prohibited",
|
|
23
|
+
suggestion: 'Use useRef("name") instead'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
pattern: /document\.createElement\s*\(/g,
|
|
27
|
+
message: "document.createElement() is prohibited",
|
|
28
|
+
suggestion: "Use template directives or component composition instead"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
pattern: /document\.activeElement(?![A-Za-z])/g,
|
|
32
|
+
message: "document.activeElement is prohibited",
|
|
33
|
+
suggestion: "Use useRef() to track focused elements"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
pattern: /document\.title\s*=/g,
|
|
37
|
+
message: "document.title assignment is prohibited",
|
|
38
|
+
suggestion: "Use useTitle() from composables"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
pattern: /document\.cookie(?![A-Za-z])/g,
|
|
42
|
+
message: "document.cookie is prohibited",
|
|
43
|
+
suggestion: "Use useCookie() from composables"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
pattern: /document\.addEventListener\s*\(/g,
|
|
47
|
+
message: "document.addEventListener() is prohibited",
|
|
48
|
+
suggestion: "Use useEventListener() or template @event directives"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
pattern: /window\.location(?![A-Za-z])/g,
|
|
52
|
+
message: "window.location is prohibited",
|
|
53
|
+
suggestion: "Use navigate() or useRoute()"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
pattern: /window\.history(?![A-Za-z])/g,
|
|
57
|
+
message: "window.history is prohibited",
|
|
58
|
+
suggestion: "Use navigate(), goBack(), goForward()"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
pattern: /window\.addEventListener\s*\(/g,
|
|
62
|
+
message: "window.addEventListener() is prohibited",
|
|
63
|
+
suggestion: "Use useEventListener() or @click directives"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
pattern: /(?:\bwindow\.)?localStorage(?![A-Za-z])/g,
|
|
67
|
+
message: "window.localStorage is prohibited",
|
|
68
|
+
suggestion: "Use useLocalStorage() from composables \u2014 or @appearanceBootstrap if this must run before first paint, where the runtime does not exist yet"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
pattern: /window\.sessionStorage(?![A-Za-z])/g,
|
|
72
|
+
message: "window.sessionStorage is prohibited",
|
|
73
|
+
suggestion: "Use useSessionStorage() from composables"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
pattern: /window\.scrollTo\s*\(/g,
|
|
77
|
+
message: "window.scrollTo() is prohibited",
|
|
78
|
+
suggestion: "Use useScroll().scrollTo() from composables"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
pattern: /window\.alert\s*\(/g,
|
|
82
|
+
message: "window.alert() is prohibited",
|
|
83
|
+
suggestion: "Use stx modal/dialog APIs instead"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
pattern: /window\.confirm\s*\(/g,
|
|
87
|
+
message: "window.confirm() is prohibited",
|
|
88
|
+
suggestion: "Use stx modal/dialog APIs instead"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
pattern: /window\.prompt\s*\(/g,
|
|
92
|
+
message: "window.prompt() is prohibited",
|
|
93
|
+
suggestion: "Use stx modal/dialog APIs instead"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
pattern: /(?<!\w)setTimeout\s*\(/g,
|
|
97
|
+
message: "setTimeout() is prohibited",
|
|
98
|
+
suggestion: "Use useTimeout() or useDebounce() from composables"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
pattern: /(?<!\w)setInterval\s*\(/g,
|
|
102
|
+
message: "setInterval() is prohibited",
|
|
103
|
+
suggestion: "Use useInterval() from composables"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
pattern: /(?<!\w)clearTimeout\s*\(/g,
|
|
107
|
+
message: "clearTimeout() is prohibited",
|
|
108
|
+
suggestion: "Use useTimeout().stop() or useDebounce().cancel()"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
pattern: /(?<!\w)clearInterval\s*\(/g,
|
|
112
|
+
message: "clearInterval() is prohibited",
|
|
113
|
+
suggestion: "Use useInterval().pause()"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
pattern: /(?<!\w)location\.href\s*=/g,
|
|
117
|
+
message: "location.href assignment is prohibited",
|
|
118
|
+
suggestion: "Use navigate() instead"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
pattern: /(?<!\w)location\.assign\s*\(/g,
|
|
122
|
+
message: "location.assign() is prohibited",
|
|
123
|
+
suggestion: "Use navigate() instead"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
pattern: /(?<!\w)location\.replace\s*\(/g,
|
|
127
|
+
message: "location.replace() is prohibited",
|
|
128
|
+
suggestion: "Use navigate() instead"
|
|
129
|
+
}
|
|
130
|
+
];
|
|
131
|
+
export function validateClientScript(content, filePath, strict, originFilePath) {
|
|
132
|
+
const strictConfig = typeof strict === "boolean" ? { enabled: strict, failOnViolation: strict } : strict ?? { enabled: !1 };
|
|
133
|
+
if (!strictConfig.enabled)
|
|
134
|
+
return;
|
|
135
|
+
const memoKey = contentKey(content, filePath, originFilePath, JSON.stringify(strictConfig)), remembered = verdicts.get(memoKey);
|
|
136
|
+
if (remembered !== void 0) {
|
|
137
|
+
if (remembered && strictConfig.failOnViolation)
|
|
138
|
+
throw Error(remembered);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const allowPatterns = strictConfig.allowPatterns ?? [], errors = [], scannable = stripCommentsAndLiterals(content.replace(/\{\{--[\s\S]*?--\}\}/g, (match) => match.replace(/[^\n]/g, " ")));
|
|
142
|
+
for (const { pattern, message, suggestion } of PROHIBITED_DOM_PATTERNS) {
|
|
143
|
+
if (allowPatterns.some((allowed) => /\w/.test(allowed) && message.includes(allowed)))
|
|
144
|
+
continue;
|
|
145
|
+
pattern.lastIndex = 0;
|
|
146
|
+
const matches = scannable.match(pattern);
|
|
147
|
+
if (matches && matches.length > 0) {
|
|
148
|
+
const lines = scannable.split(`
|
|
149
|
+
`), sourceLines = content.split(`
|
|
150
|
+
`), lineNumbers = [];
|
|
151
|
+
lines.forEach((line, index) => {
|
|
152
|
+
pattern.lastIndex = 0;
|
|
153
|
+
if (pattern.test(line))
|
|
154
|
+
lineNumbers.push(index + 1);
|
|
155
|
+
});
|
|
156
|
+
const locationInfo = lineNumbers.length > 0 ? ` (script line${lineNumbers.length > 1 ? "s" : ""} ${lineNumbers.join(", ")})` : "", quoted = lineNumbers.slice(0, 3).map((n) => ` ${n} | ${(sourceLines[n - 1] ?? "").trim().slice(0, 100)}`).join(`
|
|
157
|
+
`), snippet = quoted ? `
|
|
158
|
+
${quoted}` : "";
|
|
159
|
+
errors.push(` \u2717 ${message}${locationInfo}
|
|
160
|
+
\u2192 ${suggestion}${snippet}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (errors.length === 0) {
|
|
164
|
+
verdicts.set(memoKey, "");
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const rel = (p) => {
|
|
168
|
+
const cwd = `${process.cwd()}/`;
|
|
169
|
+
return p.startsWith(cwd) ? p.slice(cwd.length) : p;
|
|
170
|
+
}, baseMessage = `[STX] DOM API violation in ${originFilePath && originFilePath !== filePath ? `${rel(originFilePath)} (composed into ${rel(filePath)})` : rel(filePath)}:
|
|
171
|
+
${errors.join(`
|
|
172
|
+
`)}
|
|
173
|
+
Tip: prefer useRef(), navigate(), and composables for component code`;
|
|
174
|
+
verdicts.set(memoKey, baseMessage);
|
|
175
|
+
if (strictConfig.failOnViolation)
|
|
176
|
+
throw Error(baseMessage);
|
|
177
|
+
else
|
|
178
|
+
console.warn(baseMessage);
|
|
179
|
+
}
|