@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,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse the supported subset of CSS selector syntax.
|
|
3
|
+
*
|
|
4
|
+
* Returns null for anything unsupported (descendant combinators, `:has()`,
|
|
5
|
+
* comma lists) rather than guessing — a wrong container is worse than a
|
|
6
|
+
* reported one.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseContainerSelector(selector: string): ParsedSelector | null;
|
|
9
|
+
/**
|
|
10
|
+
* Find the region of `html` occupied by the first element matching `selector`.
|
|
11
|
+
*
|
|
12
|
+
* The closing tag is found by depth counting over same-named tags, so a
|
|
13
|
+
* container that contains another element of the same name — or a page that has
|
|
14
|
+
* two of them — resolves to the container's OWN close rather than the last one
|
|
15
|
+
* in the document.
|
|
16
|
+
*/
|
|
17
|
+
export declare function findContainerRegion(html: string, selector?: string): ContainerRegion | null;
|
|
18
|
+
/**
|
|
19
|
+
* Locating the SPA swap container in rendered HTML.
|
|
20
|
+
*
|
|
21
|
+
* The client resolves the container with a CSS selector (`router.container`,
|
|
22
|
+
* falling back to `[data-stx-content]` then `main`). The server used to ignore
|
|
23
|
+
* that entirely and string-slice from the first `<main …>` to the LAST
|
|
24
|
+
* `</main>`, which produced three separate failures:
|
|
25
|
+
*
|
|
26
|
+
* - configuring `router: { container: '[data-stx-content]' }` still produced a
|
|
27
|
+
* `<main>`-shaped fragment, which the client then injected into a different
|
|
28
|
+
* element, duplicating the page chrome;
|
|
29
|
+
* - a page with two `<main>` elements swapped everything between the first open
|
|
30
|
+
* and the last close, i.e. the wrong span;
|
|
31
|
+
* - a page with no `<main>` shipped its whole body as the "fragment", silently
|
|
32
|
+
* disabling SPA navigation for every link on it, at HTTP 200.
|
|
33
|
+
*
|
|
34
|
+
* This module resolves the same selector the client uses and finds the container's
|
|
35
|
+
* OWN matching close tag by depth counting, so nesting and repetition behave.
|
|
36
|
+
*
|
|
37
|
+
* It is deliberately a small matcher, not a CSS engine: it covers the selector
|
|
38
|
+
* shapes a swap container realistically uses — a tag name, an attribute, an id,
|
|
39
|
+
* a class, and a tag qualified by one of those. Anything else returns null, and
|
|
40
|
+
* the caller is expected to say so rather than silently ship the whole body.
|
|
41
|
+
*
|
|
42
|
+
* @module fragment-container
|
|
43
|
+
*/
|
|
44
|
+
export declare interface ContainerRegion {
|
|
45
|
+
openTag: string
|
|
46
|
+
openIndex: number
|
|
47
|
+
start: number
|
|
48
|
+
end: number
|
|
49
|
+
tagName: string
|
|
50
|
+
}
|
|
51
|
+
declare interface ParsedSelector {
|
|
52
|
+
tag?: string
|
|
53
|
+
attr?: string
|
|
54
|
+
attrValue?: string
|
|
55
|
+
id?: string
|
|
56
|
+
className?: string
|
|
57
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
const VOID_ELEMENTS = new Set([
|
|
2
|
+
"area",
|
|
3
|
+
"base",
|
|
4
|
+
"br",
|
|
5
|
+
"col",
|
|
6
|
+
"embed",
|
|
7
|
+
"hr",
|
|
8
|
+
"img",
|
|
9
|
+
"input",
|
|
10
|
+
"link",
|
|
11
|
+
"meta",
|
|
12
|
+
"param",
|
|
13
|
+
"source",
|
|
14
|
+
"track",
|
|
15
|
+
"wbr"
|
|
16
|
+
]);
|
|
17
|
+
function ignoredMarkupRanges(html) {
|
|
18
|
+
const ranges = [], ignoredRe = /<!--[\s\S]*?(?:-->|$)|<(script|style|textarea|title|template)\b[^>]*>[\s\S]*?<\/\1\s*>/gi;
|
|
19
|
+
let match;
|
|
20
|
+
while ((match = ignoredRe.exec(html)) !== null)
|
|
21
|
+
ranges.push({ start: match.index, end: match.index + match[0].length });
|
|
22
|
+
return ranges;
|
|
23
|
+
}
|
|
24
|
+
function isIgnoredOffset(offset, ranges) {
|
|
25
|
+
return ranges.some((range) => offset >= range.start && offset < range.end);
|
|
26
|
+
}
|
|
27
|
+
export function parseContainerSelector(selector) {
|
|
28
|
+
const trimmed = (selector || "").trim();
|
|
29
|
+
if (!trimmed)
|
|
30
|
+
return null;
|
|
31
|
+
if (/[\s>+~,:]/.test(trimmed))
|
|
32
|
+
return null;
|
|
33
|
+
const parsed = {};
|
|
34
|
+
let rest = trimmed;
|
|
35
|
+
const tagMatch = rest.match(/^[a-z][\w-]*/i);
|
|
36
|
+
if (tagMatch) {
|
|
37
|
+
parsed.tag = tagMatch[0].toLowerCase();
|
|
38
|
+
rest = rest.slice(tagMatch[0].length);
|
|
39
|
+
}
|
|
40
|
+
while (rest.length > 0) {
|
|
41
|
+
const attr = rest.match(/^\[([\w-]+)(?:=(["']?)([^\]"']*)\2)?\]/);
|
|
42
|
+
if (attr) {
|
|
43
|
+
parsed.attr = attr[1];
|
|
44
|
+
if (attr[3] !== void 0 && attr[3] !== "")
|
|
45
|
+
parsed.attrValue = attr[3];
|
|
46
|
+
rest = rest.slice(attr[0].length);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const id = rest.match(/^#([\w-]+)/);
|
|
50
|
+
if (id) {
|
|
51
|
+
parsed.id = id[1];
|
|
52
|
+
rest = rest.slice(id[0].length);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const cls = rest.match(/^\.([\w-]+)/);
|
|
56
|
+
if (cls) {
|
|
57
|
+
parsed.className = cls[1];
|
|
58
|
+
rest = rest.slice(cls[0].length);
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
if (!parsed.tag && !parsed.attr && !parsed.id && !parsed.className)
|
|
64
|
+
return null;
|
|
65
|
+
return parsed;
|
|
66
|
+
}
|
|
67
|
+
function attributesMatch(attrs, parsed) {
|
|
68
|
+
if (parsed.attr) {
|
|
69
|
+
if (!(parsed.attrValue === void 0 ? new RegExp(`\\b${parsed.attr}(?=[\\s=>/]|$)`, "i") : new RegExp(`\\b${parsed.attr}\\s*=\\s*(["'])\\s*${parsed.attrValue}\\s*\\1`, "i")).test(attrs))
|
|
70
|
+
return !1;
|
|
71
|
+
}
|
|
72
|
+
if (parsed.id) {
|
|
73
|
+
if (!new RegExp(`\\bid\\s*=\\s*(["'])\\s*${parsed.id}\\s*\\1`, "i").test(attrs))
|
|
74
|
+
return !1;
|
|
75
|
+
}
|
|
76
|
+
if (parsed.className) {
|
|
77
|
+
const classMatch = attrs.match(/\bclass\s*=\s*(["'])([\s\S]*?)\1/i);
|
|
78
|
+
if (!classMatch)
|
|
79
|
+
return !1;
|
|
80
|
+
if (!classMatch[2].split(/\s+/).includes(parsed.className))
|
|
81
|
+
return !1;
|
|
82
|
+
}
|
|
83
|
+
return !0;
|
|
84
|
+
}
|
|
85
|
+
export function findContainerRegion(html, selector = "main") {
|
|
86
|
+
const parsed = parseContainerSelector(selector);
|
|
87
|
+
if (!parsed)
|
|
88
|
+
return null;
|
|
89
|
+
const openRe = /<([a-z][\w-]*)\b([^>]*)>/gi, ignoredRanges = ignoredMarkupRanges(html);
|
|
90
|
+
let match;
|
|
91
|
+
while ((match = openRe.exec(html)) !== null) {
|
|
92
|
+
if (isIgnoredOffset(match.index, ignoredRanges))
|
|
93
|
+
continue;
|
|
94
|
+
const tagName = match[1].toLowerCase(), attrs = match[2] || "";
|
|
95
|
+
if (attrs.trimEnd().endsWith("/") || VOID_ELEMENTS.has(tagName))
|
|
96
|
+
continue;
|
|
97
|
+
if (parsed.tag && parsed.tag !== tagName)
|
|
98
|
+
continue;
|
|
99
|
+
if (!attributesMatch(attrs, parsed))
|
|
100
|
+
continue;
|
|
101
|
+
const openTag = match[0], contentStart = match.index + openTag.length, pairRe = new RegExp(`<(/?)${tagName}\\b([^>]*)>`, "gi");
|
|
102
|
+
pairRe.lastIndex = contentStart;
|
|
103
|
+
let depth = 1, pair;
|
|
104
|
+
while ((pair = pairRe.exec(html)) !== null) {
|
|
105
|
+
if (isIgnoredOffset(pair.index, ignoredRanges))
|
|
106
|
+
continue;
|
|
107
|
+
const isClose = pair[1] === "/";
|
|
108
|
+
if (!isClose && (pair[2] || "").trimEnd().endsWith("/"))
|
|
109
|
+
continue;
|
|
110
|
+
depth += isClose ? -1 : 1;
|
|
111
|
+
if (depth === 0)
|
|
112
|
+
return {
|
|
113
|
+
openTag,
|
|
114
|
+
openIndex: match.index,
|
|
115
|
+
start: contentStart,
|
|
116
|
+
end: pair.index,
|
|
117
|
+
tagName
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ship the framework's own browser-only composables to the client
|
|
3
|
+
* (stacksjs/stx#1805).
|
|
4
|
+
*
|
|
5
|
+
* `src/composables/` exports 149 functions; 120 of them have no counterpart in
|
|
6
|
+
* the client runtime. They are exported from the package, they type-check, they
|
|
7
|
+
* autocomplete — and they are unreachable from the only environment where their
|
|
8
|
+
* underlying API exists. `useClipboard`, `useGeolocation`, `useFullscreen`,
|
|
9
|
+
* `useBattery` and the observer family all wrap browser APIs and all threw
|
|
10
|
+
* `ReferenceError` when called from a `<script client>` block.
|
|
11
|
+
*
|
|
12
|
+
* There are two ways to close that gap. Hand-porting each one into the runtime's
|
|
13
|
+
* template literal duplicates 120 implementations that already exist and would
|
|
14
|
+
* drift the same way the auto-import list did (#1804). Instead this bundles the
|
|
15
|
+
* real modules — one source of truth — and merges them onto `window.stx`.
|
|
16
|
+
*
|
|
17
|
+
* DEMAND-DRIVEN: only composables the page actually references are emitted, so
|
|
18
|
+
* a page calling `useClipboard` ships a couple of KB rather than the whole tree.
|
|
19
|
+
*
|
|
20
|
+
* SKIP, NEVER CLOBBER: a name the runtime already provides wins. The runtime
|
|
21
|
+
* versions are the signal-based ones that #1710/#1726/#1797 unified; replacing
|
|
22
|
+
* them with the module versions would be a regression, not a fix.
|
|
23
|
+
*
|
|
24
|
+
* KNOWN LIMITATION, and it is why this is a bridge rather than the end state:
|
|
25
|
+
* these are pre-unification shapes — a getter plus `subscribe()` plus a manual
|
|
26
|
+
* `stop()`, not signals. So `useClipboard().copy(text)` works, `subscribe()`
|
|
27
|
+
* works, and imperative use is correct; but reading `.copied` in a template does
|
|
28
|
+
* not re-render on its own. Converting them to the Signal contract is the real
|
|
29
|
+
* fix and is tracked separately.
|
|
30
|
+
*
|
|
31
|
+
* @module framework-composables
|
|
32
|
+
*/
|
|
33
|
+
/** Clear the cache. Dev HMR calls this when composables change on disk. */
|
|
34
|
+
export declare function clearFrameworkComposableCache(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Choose which files in the composables directory carry runtime code.
|
|
37
|
+
*
|
|
38
|
+
* This ran against a `*.ts` glob, which is only ever right when stx runs from
|
|
39
|
+
* `src/`. A released package runs from `dist/`, where the directory holds 37
|
|
40
|
+
* `.js` files and 37 `.d.ts` files and not one plain `.ts` — so every file the
|
|
41
|
+
* bundler opened was type-only, nothing was ever emitted, and every requested
|
|
42
|
+
* name was reported as unbundlable. The one configuration where the old glob
|
|
43
|
+
* worked is the one the repo's own tests run in, which is why it never showed
|
|
44
|
+
* up here (stacksjs/stx#1832).
|
|
45
|
+
*
|
|
46
|
+
* Two compounding details, both fixed by going through this function:
|
|
47
|
+
*
|
|
48
|
+
* - `.d.ts` can never contribute runtime code, so it is excluded outright
|
|
49
|
+
* rather than left to be caught downstream.
|
|
50
|
+
* - The barrel exclusion compared `endsWith('index.ts')`, and `'index.d.ts'`
|
|
51
|
+
* does not end with that. The one file the filter existed to skip was the
|
|
52
|
+
* only one it let through — and being a barrel of `export … from …`, it was
|
|
53
|
+
* also the one shape the export-stripping below cannot parse.
|
|
54
|
+
*
|
|
55
|
+
* Exported so the selection can be tested against a dist-shaped listing without
|
|
56
|
+
* a built package.
|
|
57
|
+
*/
|
|
58
|
+
export declare function selectComposableFiles(files: string[]): string[];
|
|
59
|
+
/**
|
|
60
|
+
* Which framework composables does this source actually call?
|
|
61
|
+
*
|
|
62
|
+
* Restricted to the server-only set, so a page calling `useLocalStorage` (which
|
|
63
|
+
* the runtime provides) never drags in a module copy.
|
|
64
|
+
*/
|
|
65
|
+
export declare function referencedFrameworkComposables(source: string): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Build a script exposing `names` on `window.stx` and as bare globals.
|
|
68
|
+
*
|
|
69
|
+
* Returns null when nothing is needed.
|
|
70
|
+
*/
|
|
71
|
+
export declare function getFrameworkComposableScript(source: string, composablesDir?: string): Promise<string | null>;
|
|
72
|
+
/** @internal test-only — declare names the runtime provides. */
|
|
73
|
+
export declare function __setRuntimeOwnedForTest(names: string[]): void;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getPublicEnvDefine } from "./public-env.js";
|
|
3
|
+
import { SERVER_ONLY_COMPOSABLES } from "./unresolved-identifiers.js";
|
|
4
|
+
import { getSharedTranspiler } from "./utils.js";
|
|
5
|
+
import { contentKey, renderMemo } from "./render-memo.js";
|
|
6
|
+
const _cache = new Map, referenced = renderMemo(64), RUNTIME_OWNED = new Set;
|
|
7
|
+
let runtimeOwnedGeneration = 0;
|
|
8
|
+
const SERVER_ONLY = new Set(SERVER_ONLY_COMPOSABLES);
|
|
9
|
+
export function clearFrameworkComposableCache() {
|
|
10
|
+
_cache.clear();
|
|
11
|
+
referenced.clear();
|
|
12
|
+
}
|
|
13
|
+
export function selectComposableFiles(files) {
|
|
14
|
+
const byBase = new Map;
|
|
15
|
+
for (const file of files) {
|
|
16
|
+
const base = path.basename(file);
|
|
17
|
+
if (base.endsWith(".d.ts"))
|
|
18
|
+
continue;
|
|
19
|
+
const stem = base.replace(/\.[jt]s$/, "");
|
|
20
|
+
if (stem === "index")
|
|
21
|
+
continue;
|
|
22
|
+
if (stem === base)
|
|
23
|
+
continue;
|
|
24
|
+
const existing = byBase.get(stem);
|
|
25
|
+
if (existing && !existing.endsWith(".js"))
|
|
26
|
+
continue;
|
|
27
|
+
byBase.set(stem, file);
|
|
28
|
+
}
|
|
29
|
+
return [...byBase.values()].sort();
|
|
30
|
+
}
|
|
31
|
+
function declaresLocally(source, name) {
|
|
32
|
+
const escaped = name.replace(/[$()*+.?[\\\]^{|}-]/g, "\\$&");
|
|
33
|
+
return new RegExp(`(?:^|[^\\w$.])(?:const|let|var|function|class)\\s+${escaped}\\b`).test(source);
|
|
34
|
+
}
|
|
35
|
+
export function referencedFrameworkComposables(source) {
|
|
36
|
+
if (!source)
|
|
37
|
+
return [];
|
|
38
|
+
const key = contentKey(source, runtimeOwnedGeneration), remembered = referenced.get(key);
|
|
39
|
+
if (remembered)
|
|
40
|
+
return remembered.slice();
|
|
41
|
+
const authored = source.replace(/<script\b[^>]*\bdata-stx-runtime\b[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<script\b[^>]*\bdata-stx-framework-composables\b[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<script\b[^>]*\bdata-stx-stores\b[^>]*>[\s\S]*?<\/script>/gi, "").replace(/<script\b[^>]*\bdata-stx-composables\b[^>]*>[\s\S]*?<\/script>/gi, ""), found = [];
|
|
42
|
+
for (const name of SERVER_ONLY) {
|
|
43
|
+
if (RUNTIME_OWNED.has(name))
|
|
44
|
+
continue;
|
|
45
|
+
const escaped = name.replace(/[$()*+.?[\\\]^{|}-]/g, "\\$&");
|
|
46
|
+
if (new RegExp(`(^|[^\\w$.])${escaped}\\s*\\(`).test(authored))
|
|
47
|
+
found.push(name);
|
|
48
|
+
}
|
|
49
|
+
found.sort();
|
|
50
|
+
referenced.set(key, found);
|
|
51
|
+
return found.slice();
|
|
52
|
+
}
|
|
53
|
+
export async function getFrameworkComposableScript(source, composablesDir) {
|
|
54
|
+
const names = referencedFrameworkComposables(source);
|
|
55
|
+
if (names.length === 0)
|
|
56
|
+
return null;
|
|
57
|
+
const dir = composablesDir ?? path.join(import.meta.dir, "composables"), key = `${dir}\x00${names.join(",")}`, cached = _cache.get(key);
|
|
58
|
+
if (cached !== void 0)
|
|
59
|
+
return cached || null;
|
|
60
|
+
const transpiler = getSharedTranspiler({ loader: "ts", target: "browser", define: getPublicEnvDefine() }), wanted = new Set(names), chunks = [], emitted = new Set;
|
|
61
|
+
let files = [];
|
|
62
|
+
try {
|
|
63
|
+
const glob = new Bun.Glob("*.{ts,js}");
|
|
64
|
+
for await (const file of glob.scan({ cwd: dir, absolute: !0 }))
|
|
65
|
+
files.push(file);
|
|
66
|
+
} catch {
|
|
67
|
+
_cache.set(key, "");
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
files = selectComposableFiles(files);
|
|
71
|
+
for (const file of files) {
|
|
72
|
+
let code;
|
|
73
|
+
try {
|
|
74
|
+
code = await Bun.file(file).text();
|
|
75
|
+
} catch {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
let exports = [];
|
|
79
|
+
try {
|
|
80
|
+
exports = transpiler.scan(code).exports.filter((n) => n !== "default");
|
|
81
|
+
} catch {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (!exports.some((n) => wanted.has(n)))
|
|
85
|
+
continue;
|
|
86
|
+
try {
|
|
87
|
+
code = code.replace(/^import\s+.*from\s+['"][^'"]+['"]\s*;?\s*$/gm, "");
|
|
88
|
+
code = code.replace(/^import\s+type\s+.*$/gm, "");
|
|
89
|
+
code = code.replace(/^export\s+\*\s+(?:as\s+\w+\s+)?from\s*['"][^'"]+['"]\s*;?\s*$/gm, "");
|
|
90
|
+
code = code.replace(/^export\s+(?:type\s+)?\{[\s\S]*?\}\s*(?:from\s*['"][^'"]+['"]\s*)?;?\s*$/gm, "");
|
|
91
|
+
code = code.replace(/^export\s+default\s+/gm, "");
|
|
92
|
+
code = code.replace(/^export\s+(?=(?:declare\s+)?(?:abstract\s+)?(?:async\s+)?(?:function|class|const|let|var|type|interface|enum)\b)/gm, "");
|
|
93
|
+
chunks.push(`// ${path.basename(file).replace(/\.[jt]s$/, "")}
|
|
94
|
+
${transpiler.transformSync(code).trim()}`);
|
|
95
|
+
for (const name of exports)
|
|
96
|
+
emitted.add(name);
|
|
97
|
+
} catch (error) {
|
|
98
|
+
console.warn(`[stx] framework composable ${path.basename(file)} could not be bundled:`, error);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const missing = names.filter((n) => !emitted.has(n) && !declaresLocally(source, n));
|
|
102
|
+
if (missing.length > 0)
|
|
103
|
+
console.warn(`[stx] could not bundle ${missing.join(", ")} from @stacksjs/stx/composables \u2014 ` + "calls to them will throw ReferenceError in the browser. Import them explicitly so the bundler inlines them, or use a runtime equivalent from window.stx.");
|
|
104
|
+
if (chunks.length === 0) {
|
|
105
|
+
_cache.set(key, "");
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const assignments = [...emitted].map((name) => ` try { if (!(${JSON.stringify(name)} in __s)) { __s[${JSON.stringify(name)}] = ${name}; if (!(${JSON.stringify(name)} in window)) window[${JSON.stringify(name)}] = ${name}; } } catch (e) {}`).join(`
|
|
109
|
+
`), script = `<script data-stx-framework-composables>
|
|
110
|
+
;(function(){
|
|
111
|
+
var __s = window.stx = window.stx || {};
|
|
112
|
+
${chunks.join(`
|
|
113
|
+
|
|
114
|
+
`)}
|
|
115
|
+
${assignments}
|
|
116
|
+
})();
|
|
117
|
+
</script>`;
|
|
118
|
+
_cache.set(key, script);
|
|
119
|
+
return script;
|
|
120
|
+
}
|
|
121
|
+
export function __setRuntimeOwnedForTest(names) {
|
|
122
|
+
RUNTIME_OWNED.clear();
|
|
123
|
+
for (const n of names)
|
|
124
|
+
RUNTIME_OWNED.add(n);
|
|
125
|
+
runtimeOwnedGeneration++;
|
|
126
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One splice into `<head>` instead of one per thing being injected
|
|
3
|
+
* (stacksjs/stx#1945).
|
|
4
|
+
*
|
|
5
|
+
* Several passes each add a small fragment to the head of a finished page: the
|
|
6
|
+
* x-cloak style, the color-mode boot script, the build-id meta. Each was
|
|
7
|
+
* written the obvious way -- find the anchor, return
|
|
8
|
+
* `slice(0, i) + fragment + slice(i)` -- and each of those returns a NEW copy
|
|
9
|
+
* of the whole document. On a 212KB page that is 212KB allocated to insert a
|
|
10
|
+
* few hundred bytes, three times over, and the measured cost of the top-level
|
|
11
|
+
* pipeline was dominated by exactly this shape: of 86 assignments in a render,
|
|
12
|
+
* only ten produced a new string, and six of them were whole-document copies
|
|
13
|
+
* made to insert something small.
|
|
14
|
+
*
|
|
15
|
+
* A pass that contributes a fragment instead of splicing it lets all of them
|
|
16
|
+
* share one rebuild. Order is preserved within each anchor, which is the part
|
|
17
|
+
* that matters: the boot script has to precede the cloak style in the head, and
|
|
18
|
+
* both have to be live before first paint.
|
|
19
|
+
*
|
|
20
|
+
* Nothing here decides WHETHER a fragment applies. Each caller keeps its own
|
|
21
|
+
* guard -- idempotence checks, config gates -- and simply contributes nothing
|
|
22
|
+
* when it does not apply, so a page that needs no injections is not rebuilt.
|
|
23
|
+
*
|
|
24
|
+
* @module head-injection
|
|
25
|
+
*/
|
|
26
|
+
/** Fragments waiting to be spliced into one document. */
|
|
27
|
+
export interface HeadInjections {
|
|
28
|
+
/** Inserted immediately after the `<head ...>` open tag, in push order. */
|
|
29
|
+
afterOpen: string[];
|
|
30
|
+
/** Inserted immediately before `</head>`, in push order. */
|
|
31
|
+
beforeClose: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare function createHeadInjections(): HeadInjections;
|
|
34
|
+
/** Whether anything was contributed, so a caller can skip the rebuild entirely. */
|
|
35
|
+
export declare function hasHeadInjections(injections: HeadInjections): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Apply every collected fragment in a single pass.
|
|
38
|
+
*
|
|
39
|
+
* Returns `html` untouched -- the same reference, not a copy -- when there is
|
|
40
|
+
* nothing to add or the document has no head to add it to. A page without a
|
|
41
|
+
* `<head>` is not an error here: SPA fragments have nowhere to put these and
|
|
42
|
+
* are served with the same information in response headers instead.
|
|
43
|
+
*/
|
|
44
|
+
export declare function applyHeadInjections(html: string, injections: HeadInjections): string;
|
|
45
|
+
/**
|
|
46
|
+
* Offset of the canonical head-injection position: just inside `<head>`, after
|
|
47
|
+
* a `<meta charset>` that leads it. `null` when the document has no head.
|
|
48
|
+
*
|
|
49
|
+
* Stepping over the charset is not cosmetic. The encoding declaration has to
|
|
50
|
+
* land inside the document's first 1024 bytes, and what gets inserted here is
|
|
51
|
+
* big enough to push it out -- the signals runtime is the whole client library,
|
|
52
|
+
* the default SEO block ~500 bytes. Displacing it was then repaired at the end
|
|
53
|
+
* of the pipeline by hoisting the charset back up, which rebuilt the whole
|
|
54
|
+
* document (186KB on a 199KB page) to move three bytes. Every injector landing
|
|
55
|
+
* after the charset means the order is right the first time and there is
|
|
56
|
+
* nothing to repair (stacksjs/stx#1945).
|
|
57
|
+
*
|
|
58
|
+
* `hoistCharsetMeta` stays as the backstop for anything that does not come
|
|
59
|
+
* through here.
|
|
60
|
+
*/
|
|
61
|
+
export declare function headInsertionPoint(html: string): number | null;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function createHeadInjections() {
|
|
2
|
+
return { afterOpen: [], beforeClose: [] };
|
|
3
|
+
}
|
|
4
|
+
export function hasHeadInjections(injections) {
|
|
5
|
+
return injections.afterOpen.length > 0 || injections.beforeClose.length > 0;
|
|
6
|
+
}
|
|
7
|
+
export function applyHeadInjections(html, injections) {
|
|
8
|
+
if (!hasHeadInjections(injections))
|
|
9
|
+
return html;
|
|
10
|
+
const afterOpen = injections.afterOpen.join(""), beforeClose = injections.beforeClose.join(""), headCloseIdx = html.lastIndexOf("</head>"), openAt = afterOpen ? headInsertionPoint(html) : null, closeAt = beforeClose && headCloseIdx !== -1 ? headCloseIdx : null;
|
|
11
|
+
if (openAt === null && closeAt === null)
|
|
12
|
+
return html;
|
|
13
|
+
if (openAt !== null && closeAt !== null)
|
|
14
|
+
return `${html.slice(0, openAt)}${afterOpen}${html.slice(openAt, closeAt)}${beforeClose}${html.slice(closeAt)}`;
|
|
15
|
+
if (openAt !== null)
|
|
16
|
+
return `${html.slice(0, openAt)}${afterOpen}${html.slice(openAt)}`;
|
|
17
|
+
return `${html.slice(0, closeAt)}${beforeClose}${html.slice(closeAt)}`;
|
|
18
|
+
}
|
|
19
|
+
const LEADING_CHARSET_META = /\s*<meta\b[^>]*\bcharset\b[^>]*>/iy;
|
|
20
|
+
export function headInsertionPoint(html) {
|
|
21
|
+
const headOpen = /<head\b[^>]*>/i.exec(html);
|
|
22
|
+
if (!headOpen)
|
|
23
|
+
return null;
|
|
24
|
+
const afterTag = headOpen.index + headOpen[0].length;
|
|
25
|
+
LEADING_CHARSET_META.lastIndex = afterTag;
|
|
26
|
+
const charset = LEADING_CHARSET_META.exec(html);
|
|
27
|
+
return charset ? afterTag + charset[0].length : afterTag;
|
|
28
|
+
}
|