@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,76 @@
|
|
|
1
|
+
import type { StxOptions } from './types';
|
|
2
|
+
export type { LayoutMetadata } from 'stx-router/layout-metadata';
|
|
3
|
+
/**
|
|
4
|
+
* Detect an app shell file in the given directory.
|
|
5
|
+
*
|
|
6
|
+
* @deprecated Use `layouts/default.stx` instead. The framework now auto-generates
|
|
7
|
+
* the document shell from `stx.config.ts` `app.head` configuration.
|
|
8
|
+
* The app.stx shell pattern is kept for backwards compatibility.
|
|
9
|
+
*
|
|
10
|
+
* Checks for `app.stx` in the project root (or configured shell path).
|
|
11
|
+
* Returns the absolute path if found, null otherwise.
|
|
12
|
+
*/
|
|
13
|
+
export declare function detectShell(appDir: string, shellConfig?: string | false): Promise<string | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Process the app shell template and split it at the `<slot />` injection point.
|
|
16
|
+
*
|
|
17
|
+
* The shell is processed through `processDirectives()` with a placeholder
|
|
18
|
+
* for the slot, then split into before/after parts for fast page composition.
|
|
19
|
+
*/
|
|
20
|
+
export declare function processShell(shellPath: string, options: StxOptions): Promise<ProcessedShell | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Compose a full page by injecting page content into the processed shell.
|
|
23
|
+
*
|
|
24
|
+
* Wraps the page content in a document structure with the shell's layout,
|
|
25
|
+
* shell scripts, shell styles, and the router.
|
|
26
|
+
*/
|
|
27
|
+
export declare function composeShellWithPage(shell: ProcessedShell, pageContent: string, pageTitle?: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Strip document wrapper (DOCTYPE, html, head, body) from page content,
|
|
30
|
+
* returning just the body content as a fragment.
|
|
31
|
+
*
|
|
32
|
+
* If the content has no document wrapper, it's returned as-is.
|
|
33
|
+
*
|
|
34
|
+
* Preserves:
|
|
35
|
+
* - `<script>` tags from `<body>` (page scripts)
|
|
36
|
+
* - `<style>` tags from `<head>` (page styles, moved to fragment)
|
|
37
|
+
* - Body content
|
|
38
|
+
*
|
|
39
|
+
* Strips:
|
|
40
|
+
* - `<!DOCTYPE>`, `<html>`, `<head>`, `<body>` wrappers
|
|
41
|
+
* - `<meta>`, `<title>`, `<link>` tags from `<head>` — unless
|
|
42
|
+
* `preserveHead` is set, which carries them through the fragment as an
|
|
43
|
+
* inert marker comment for `composeShellWithPage` to hoist (#1756)
|
|
44
|
+
*/
|
|
45
|
+
export declare function stripDocumentWrapper(html: string, options?: { preserveHead?: boolean }): string;
|
|
46
|
+
/**
|
|
47
|
+
* Check if a request is an SPA navigation request (from the stx router).
|
|
48
|
+
*/
|
|
49
|
+
export declare function isSpaNavigation(request: Request): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Extract the inner content of the router container element from a full HTML
|
|
52
|
+
* document, preserving page styles and route state found in `<head>`.
|
|
53
|
+
*
|
|
54
|
+
* This is what fragment files should contain — NOT the whole body. The SPA
|
|
55
|
+
* router injects fragments directly into the container element via innerHTML,
|
|
56
|
+
* so the fragment must already match the shape of the container's content.
|
|
57
|
+
* If you pass it the whole body (nav + main + footer), the router will dump
|
|
58
|
+
* all of that inside `<main>`, producing a duplicated nav.
|
|
59
|
+
*
|
|
60
|
+
* Falls back to `stripDocumentWrapper` if the container cannot be located.
|
|
61
|
+
*
|
|
62
|
+
* @param html - Full HTML document (with or without doctype/html/head/body)
|
|
63
|
+
* @param containerSelector - Tag name or selector for the router container (e.g. `main`)
|
|
64
|
+
*/
|
|
65
|
+
export declare function extractContainerContent(html: string, containerSelector?: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Processed shell ready for page injection
|
|
68
|
+
*/
|
|
69
|
+
export declare interface ProcessedShell {
|
|
70
|
+
beforeSlot: string
|
|
71
|
+
afterSlot: string
|
|
72
|
+
filePath: string
|
|
73
|
+
shellScripts: string[]
|
|
74
|
+
shellStyles: string[]
|
|
75
|
+
}
|
|
76
|
+
export { extractLayoutMetadata } from 'stx-router/layout-metadata';
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
var {require}=import.meta;import path from "node:path";
|
|
2
|
+
import { classifyAllScripts } from "./script-classifier.js";
|
|
3
|
+
import { startsDocument } from "./document-shell.js";
|
|
4
|
+
import { findContainerRegion } from "./fragment-container.js";
|
|
5
|
+
import { isSpaNavRequest } from "./spa-nav.js";
|
|
6
|
+
export { extractLayoutMetadata } from "stx-router/layout-metadata";
|
|
7
|
+
const PAGE_HEAD_MARKER = "stx-page-head:", PAGE_HEAD_MARKER_RE = /<!--stx-page-head:([A-Za-z0-9+/=]+)-->\n?/;
|
|
8
|
+
let _cachedRouterScript = null;
|
|
9
|
+
function getRouterScriptCached() {
|
|
10
|
+
if (_cachedRouterScript !== null)
|
|
11
|
+
return _cachedRouterScript;
|
|
12
|
+
try {
|
|
13
|
+
const { getRouterScript } = require("stx-router");
|
|
14
|
+
_cachedRouterScript = `<script>${getRouterScript()}</script>`;
|
|
15
|
+
} catch {
|
|
16
|
+
_cachedRouterScript = "";
|
|
17
|
+
}
|
|
18
|
+
return _cachedRouterScript;
|
|
19
|
+
}
|
|
20
|
+
export async function detectShell(appDir, shellConfig) {
|
|
21
|
+
if (shellConfig === !1)
|
|
22
|
+
return null;
|
|
23
|
+
if (shellConfig && typeof shellConfig === "string") {
|
|
24
|
+
const shellPath = path.resolve(appDir, shellConfig);
|
|
25
|
+
if (await Bun.file(shellPath).exists())
|
|
26
|
+
return shellPath;
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const defaultShellPath = path.join(appDir, "app.stx");
|
|
30
|
+
if (await Bun.file(defaultShellPath).exists())
|
|
31
|
+
return defaultShellPath;
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
export async function processShell(shellPath, options) {
|
|
35
|
+
try {
|
|
36
|
+
const content = await Bun.file(shellPath).text();
|
|
37
|
+
let shellTemplate = content;
|
|
38
|
+
const templateMatch = content.match(/<template\b[^>]*>([\s\S]*?)<\/template>/i);
|
|
39
|
+
if (templateMatch)
|
|
40
|
+
shellTemplate = templateMatch[1].trim();
|
|
41
|
+
const classified = classifyAllScripts(content), shellScripts = [
|
|
42
|
+
...classified.client.map((s) => s.fullTag),
|
|
43
|
+
...classified.signals.map((s) => s.fullTag)
|
|
44
|
+
], shellStyles = [], styleRegex = /<style\b[^>]*>([\s\S]*?)<\/style>/gi;
|
|
45
|
+
let styleMatch;
|
|
46
|
+
while ((styleMatch = styleRegex.exec(content)) !== null)
|
|
47
|
+
shellStyles.push(styleMatch[0]);
|
|
48
|
+
let cleanTemplate = shellTemplate;
|
|
49
|
+
for (const s of classified.server)
|
|
50
|
+
cleanTemplate = cleanTemplate.replace(s.fullTag, "");
|
|
51
|
+
for (const s of classified.client)
|
|
52
|
+
cleanTemplate = cleanTemplate.replace(s.fullTag, "");
|
|
53
|
+
cleanTemplate = cleanTemplate.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi, "");
|
|
54
|
+
const SLOT_PLACEHOLDER = "<!--__STX_PAGE_SLOT__-->";
|
|
55
|
+
cleanTemplate = cleanTemplate.replace(/<slot\s*\/>/gi, SLOT_PLACEHOLDER).replace(/<slot\s*>\s*<\/slot>/gi, SLOT_PLACEHOLDER);
|
|
56
|
+
if (!cleanTemplate.includes(SLOT_PLACEHOLDER)) {
|
|
57
|
+
console.warn(`[stx] Shell ${shellPath} has no <slot /> \u2014 pages won't be injected`);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const { processDirectives, extractVariables, defaultConfig, loadStxConfig } = await import("./index.js"), projectConfig = await loadStxConfig(), shellContext = {
|
|
61
|
+
__filename: shellPath,
|
|
62
|
+
__dirname: path.dirname(shellPath)
|
|
63
|
+
};
|
|
64
|
+
for (const script of shellScripts) {
|
|
65
|
+
const scriptContent = script.match(/<script\b[^>]*>([\s\S]*?)<\/script>/i);
|
|
66
|
+
if (scriptContent && !script.includes("client") && !script.includes('type="module"'))
|
|
67
|
+
await extractVariables(scriptContent[1], shellContext, shellPath);
|
|
68
|
+
}
|
|
69
|
+
const processedShell = await processDirectives(cleanTemplate, shellContext, shellPath, { ...defaultConfig, ...projectConfig, ...options }, new Set), slotIndex = processedShell.indexOf(SLOT_PLACEHOLDER);
|
|
70
|
+
if (slotIndex === -1) {
|
|
71
|
+
console.warn("[stx] Shell slot placeholder lost during processing");
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
beforeSlot: processedShell.substring(0, slotIndex),
|
|
76
|
+
afterSlot: processedShell.substring(slotIndex + SLOT_PLACEHOLDER.length),
|
|
77
|
+
filePath: shellPath,
|
|
78
|
+
shellScripts,
|
|
79
|
+
shellStyles
|
|
80
|
+
};
|
|
81
|
+
} catch (error) {
|
|
82
|
+
console.error(`[stx] Error processing shell ${shellPath}:`, error);
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export function composeShellWithPage(shell, pageContent, pageTitle) {
|
|
87
|
+
let hoistedTitle, hoistedHead = "";
|
|
88
|
+
const markerMatch = pageContent.match(PAGE_HEAD_MARKER_RE);
|
|
89
|
+
if (markerMatch) {
|
|
90
|
+
pageContent = pageContent.replace(markerMatch[0], "");
|
|
91
|
+
try {
|
|
92
|
+
const tags = Buffer.from(markerMatch[1], "base64").toString("utf8"), titleMatch = tags.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
|
|
93
|
+
if (titleMatch)
|
|
94
|
+
hoistedTitle = titleMatch[1].trim();
|
|
95
|
+
hoistedHead = tags.replace(/<title[^>]*>[\s\S]*?<\/title>/i, "").trim();
|
|
96
|
+
} catch {}
|
|
97
|
+
}
|
|
98
|
+
const title = pageTitle || hoistedTitle || "stx App", routerScript = getRouterScriptCached(), routerConfig = "<script>window.__stxRouterConfig={container:'[data-stx-content]'};</script>";
|
|
99
|
+
return `<!DOCTYPE html>
|
|
100
|
+
<html lang="en">
|
|
101
|
+
<head>
|
|
102
|
+
<meta charset="UTF-8">
|
|
103
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
104
|
+
<title>${title}</title>
|
|
105
|
+
${hoistedHead ? ` ${hoistedHead}
|
|
106
|
+
` : ""} ${shell.shellStyles.join(`
|
|
107
|
+
`)}
|
|
108
|
+
</head>
|
|
109
|
+
<body>
|
|
110
|
+
${shell.beforeSlot}
|
|
111
|
+
<div data-stx-content>${pageContent}</div>
|
|
112
|
+
${shell.afterSlot}
|
|
113
|
+
${shell.shellScripts.filter((s) => !s.includes("server")).join(`
|
|
114
|
+
`)}
|
|
115
|
+
${routerConfig}
|
|
116
|
+
${routerScript}
|
|
117
|
+
</body>
|
|
118
|
+
</html>`;
|
|
119
|
+
}
|
|
120
|
+
export function stripDocumentWrapper(html, options = {}) {
|
|
121
|
+
const trimmed = html.trim();
|
|
122
|
+
if (!startsDocument(trimmed))
|
|
123
|
+
return html;
|
|
124
|
+
const headStyles = [], headMatch = trimmed.match(/<head\b[^>]*>([\s\S]*?)<\/head>/i);
|
|
125
|
+
if (headMatch) {
|
|
126
|
+
const headContent = headMatch[1], styleRegex = /<style\b[^>]*>[\s\S]*?<\/style>/gi;
|
|
127
|
+
let m;
|
|
128
|
+
while ((m = styleRegex.exec(headContent)) !== null)
|
|
129
|
+
headStyles.push(m[0]);
|
|
130
|
+
}
|
|
131
|
+
if (options.preserveHead && headMatch) {
|
|
132
|
+
const headTags = [], tagRegex = /<title\b[^>]*>[\s\S]*?<\/title>|<meta\b[^>]*>|<link\b[^>]*>/gi;
|
|
133
|
+
let m;
|
|
134
|
+
while ((m = tagRegex.exec(headMatch[1])) !== null) {
|
|
135
|
+
if (/<meta\b[^>]*(?:\bcharset|name="viewport")/i.test(m[0]))
|
|
136
|
+
continue;
|
|
137
|
+
headTags.push(m[0]);
|
|
138
|
+
}
|
|
139
|
+
if (headTags.length > 0)
|
|
140
|
+
headStyles.unshift(`<!--${PAGE_HEAD_MARKER}${Buffer.from(headTags.join(`
|
|
141
|
+
`), "utf8").toString("base64")}-->`);
|
|
142
|
+
}
|
|
143
|
+
const bodyOpenMatch = trimmed.match(/<body\b[^>]*>/i), bodyCloseIdx = trimmed.lastIndexOf("</body>");
|
|
144
|
+
if (bodyOpenMatch && bodyCloseIdx !== -1) {
|
|
145
|
+
const bodyStart = bodyOpenMatch.index + bodyOpenMatch[0].length, bodyContent = trimmed.slice(bodyStart, bodyCloseIdx).trim();
|
|
146
|
+
if (headStyles.length > 0)
|
|
147
|
+
return headStyles.join(`
|
|
148
|
+
`) + `
|
|
149
|
+
` + bodyContent;
|
|
150
|
+
return bodyContent;
|
|
151
|
+
}
|
|
152
|
+
let result = trimmed;
|
|
153
|
+
result = result.replace(/<!DOCTYPE\b[^>]*>/i, "");
|
|
154
|
+
result = result.replace(/<html\b[^>]*>/i, "");
|
|
155
|
+
result = result.replace(/<\/html\s*>/i, "");
|
|
156
|
+
if (headMatch)
|
|
157
|
+
result = result.replace(/<head\b[^>]*>[\s\S]*?<\/head>/i, headStyles.join(`
|
|
158
|
+
`));
|
|
159
|
+
result = result.replace(/<body\b[^>]*>/i, "");
|
|
160
|
+
result = result.replace(/<\/body\s*>/i, "");
|
|
161
|
+
return result.trim();
|
|
162
|
+
}
|
|
163
|
+
export function isSpaNavigation(request) {
|
|
164
|
+
return isSpaNavRequest(request);
|
|
165
|
+
}
|
|
166
|
+
export function extractContainerContent(html, containerSelector = "main") {
|
|
167
|
+
const trimmed = html.trim(), headStyles = [], headScripts = [], headMatch = trimmed.match(/<head\b[^>]*>([\s\S]*?)<\/head>/i);
|
|
168
|
+
if (headMatch) {
|
|
169
|
+
const headContent = headMatch[1], styleRegex = /<style\b[^>]*>[\s\S]*?<\/style>/gi;
|
|
170
|
+
let m;
|
|
171
|
+
while ((m = styleRegex.exec(headContent)) !== null)
|
|
172
|
+
headStyles.push(m[0]);
|
|
173
|
+
const routeParamsRegex = /<script\b[^>]*data-stx-route-params[^>]*>[\s\S]*?<\/script>/gi;
|
|
174
|
+
while ((m = routeParamsRegex.exec(headContent)) !== null)
|
|
175
|
+
headScripts.push(m[0]);
|
|
176
|
+
}
|
|
177
|
+
const containerRegion = findContainerRegion(trimmed, containerSelector);
|
|
178
|
+
if (!containerRegion)
|
|
179
|
+
return stripDocumentWrapper(html);
|
|
180
|
+
const { tagName: tag, start: openEnd, end: closeIdx } = containerRegion, innerContent = trimmed.slice(openEnd, closeIdx).trim(), bodyScripts = [], bodyOpenMatch = trimmed.match(/<body\b[^>]*>/i), bodyCloseIdx = trimmed.lastIndexOf("</body>");
|
|
181
|
+
if (bodyOpenMatch && bodyOpenMatch.index !== void 0 && bodyCloseIdx !== -1) {
|
|
182
|
+
const regions = [
|
|
183
|
+
[bodyOpenMatch.index + bodyOpenMatch[0].length, containerRegion.openIndex],
|
|
184
|
+
[closeIdx + `</${tag}>`.length, bodyCloseIdx]
|
|
185
|
+
], scriptRe = /<script\b[^>]*>[\s\S]*?<\/script>/gi;
|
|
186
|
+
for (const [start, end] of regions) {
|
|
187
|
+
if (start >= end)
|
|
188
|
+
continue;
|
|
189
|
+
const region = trimmed.slice(start, end);
|
|
190
|
+
let sm;
|
|
191
|
+
scriptRe.lastIndex = 0;
|
|
192
|
+
while ((sm = scriptRe.exec(region)) !== null)
|
|
193
|
+
bodyScripts.push(sm[0]);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const parts = [];
|
|
197
|
+
if (headStyles.length > 0)
|
|
198
|
+
parts.push(headStyles.join(`
|
|
199
|
+
`));
|
|
200
|
+
if (headScripts.length > 0)
|
|
201
|
+
parts.push(headScripts.join(`
|
|
202
|
+
`));
|
|
203
|
+
if (bodyScripts.length > 0)
|
|
204
|
+
parts.push(bodyScripts.join(`
|
|
205
|
+
`));
|
|
206
|
+
parts.push(innerContent);
|
|
207
|
+
return parts.join(`
|
|
208
|
+
`);
|
|
209
|
+
}
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { CustomDirective } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Create an stx application instance.
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { createApp } from '@stacksjs/stx'
|
|
7
|
+
*
|
|
8
|
+
* const app = createApp()
|
|
9
|
+
*
|
|
10
|
+
* app.use(myPlugin)
|
|
11
|
+
* app.provide('theme', 'dark')
|
|
12
|
+
* app.component('MyButton', MyButton)
|
|
13
|
+
* app.mount('#app')
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @param rootComponent - Optional root component definition
|
|
17
|
+
* @param rootProps - Optional props for the root component
|
|
18
|
+
*/
|
|
19
|
+
export declare function createApp(_rootComponent?: any, _rootProps?: Record<string, any>): StxApp;
|
|
20
|
+
/**
|
|
21
|
+
* Define a custom element from a component definition.
|
|
22
|
+
*
|
|
23
|
+
* Wraps the component as an HTMLElement subclass suitable for
|
|
24
|
+
* `customElements.define()`.
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { defineCustomElement } from '@stacksjs/stx'
|
|
28
|
+
* import MyComponent from './MyComponent.stx'
|
|
29
|
+
*
|
|
30
|
+
* const MyElement = defineCustomElement(MyComponent)
|
|
31
|
+
* customElements.define('my-component', MyElement)
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function defineCustomElement(component: any): CustomElementConstructor;
|
|
35
|
+
/** A Vue-compatible plugin with install method */
|
|
36
|
+
export declare interface StxAppPlugin {
|
|
37
|
+
install: (app: StxApp, ...options: any[]) => void
|
|
38
|
+
}
|
|
39
|
+
/** The stx application instance */
|
|
40
|
+
export declare interface StxApp {
|
|
41
|
+
use(plugin: StxPluginInput, ...options: any[]): StxApp
|
|
42
|
+
provide<T>(key: string | symbol, value: T): StxApp
|
|
43
|
+
component(name: string, definition?: any): StxApp | any
|
|
44
|
+
directive(name: string, definition?: CustomDirective | Record<string, any>): StxApp | any
|
|
45
|
+
mount(rootContainer?: string | Element): StxApp
|
|
46
|
+
unmount(): void
|
|
47
|
+
config: StxAppConfig
|
|
48
|
+
_components: Map<string, any>
|
|
49
|
+
_directives: Map<string, any>
|
|
50
|
+
_installedPlugins: Set<StxPluginInput>
|
|
51
|
+
}
|
|
52
|
+
/** Application configuration */
|
|
53
|
+
export declare interface StxAppConfig {
|
|
54
|
+
errorHandler?: (error: Error, instance: any, info: string) => void
|
|
55
|
+
warnHandler?: (msg: string, instance: any, trace: string) => void
|
|
56
|
+
globalProperties: Record<string, any>
|
|
57
|
+
performance: boolean
|
|
58
|
+
compilerOptions: {
|
|
59
|
+
isCustomElement?: (tag: string) => boolean
|
|
60
|
+
whitespace?: 'condense' | 'preserve'
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** Plugin can be an object with install() or a plain function */
|
|
64
|
+
// eslint-disable-next-line pickier/no-unused-vars
|
|
65
|
+
export type StxPluginInput = StxAppPlugin | ((app: StxApp, ...options: any[]) => void);
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { setGlobalProvide } from "./composition-api.js";
|
|
2
|
+
export function createApp(_rootComponent, _rootProps) {
|
|
3
|
+
const installedPlugins = new Set, components = new Map, directives = new Map, config = {
|
|
4
|
+
globalProperties: {},
|
|
5
|
+
performance: !1,
|
|
6
|
+
compilerOptions: {}
|
|
7
|
+
}, app = {
|
|
8
|
+
config,
|
|
9
|
+
_components: components,
|
|
10
|
+
_directives: directives,
|
|
11
|
+
_installedPlugins: installedPlugins,
|
|
12
|
+
use(plugin, ...options) {
|
|
13
|
+
if (installedPlugins.has(plugin))
|
|
14
|
+
return app;
|
|
15
|
+
installedPlugins.add(plugin);
|
|
16
|
+
if (typeof plugin === "function")
|
|
17
|
+
plugin(app, ...options);
|
|
18
|
+
else if (typeof plugin.install === "function")
|
|
19
|
+
plugin.install(app, ...options);
|
|
20
|
+
return app;
|
|
21
|
+
},
|
|
22
|
+
provide(key, value) {
|
|
23
|
+
setGlobalProvide(key, value);
|
|
24
|
+
return app;
|
|
25
|
+
},
|
|
26
|
+
component(name, definition) {
|
|
27
|
+
if (!definition)
|
|
28
|
+
return components.get(name);
|
|
29
|
+
components.set(name, definition);
|
|
30
|
+
return app;
|
|
31
|
+
},
|
|
32
|
+
directive(name, definition) {
|
|
33
|
+
if (!definition)
|
|
34
|
+
return directives.get(name);
|
|
35
|
+
directives.set(name, definition);
|
|
36
|
+
return app;
|
|
37
|
+
},
|
|
38
|
+
mount(_rootContainer) {
|
|
39
|
+
if (typeof document < "u") {
|
|
40
|
+
const globalObj = globalThis.__stx_globals || (globalThis.__stx_globals = {});
|
|
41
|
+
Object.assign(globalObj, config.globalProperties);
|
|
42
|
+
document.querySelectorAll("[v-cloak]").forEach((el) => {
|
|
43
|
+
el.removeAttribute("v-cloak");
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return app;
|
|
47
|
+
},
|
|
48
|
+
unmount() {
|
|
49
|
+
components.clear();
|
|
50
|
+
directives.clear();
|
|
51
|
+
installedPlugins.clear();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
return app;
|
|
55
|
+
}
|
|
56
|
+
export function defineCustomElement(component) {
|
|
57
|
+
return class extends HTMLElement {
|
|
58
|
+
_component;
|
|
59
|
+
_shadow;
|
|
60
|
+
constructor() {
|
|
61
|
+
super();
|
|
62
|
+
this._shadow = this.attachShadow({ mode: "open" });
|
|
63
|
+
this._component = component;
|
|
64
|
+
}
|
|
65
|
+
connectedCallback() {
|
|
66
|
+
if (this._component?.render) {
|
|
67
|
+
const result = this._component.render();
|
|
68
|
+
if (typeof result === "string")
|
|
69
|
+
this._shadow.innerHTML = result;
|
|
70
|
+
} else if (this._component?.template)
|
|
71
|
+
this._shadow.innerHTML = this._component.template;
|
|
72
|
+
else if (typeof this._component === "string")
|
|
73
|
+
this._shadow.innerHTML = this._component;
|
|
74
|
+
}
|
|
75
|
+
disconnectedCallback() {
|
|
76
|
+
this._shadow.innerHTML = "";
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declarative pre-paint appearance bootstrapping.
|
|
3
|
+
*
|
|
4
|
+
* Client composables apply appearance reactively after mount, but that is too
|
|
5
|
+
* late for the first paint. This directive emits a compiler-owned synchronous
|
|
6
|
+
* script at the directive location so persisted root attributes and the dark
|
|
7
|
+
* class are present before the browser parses the application shell.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```stx
|
|
11
|
+
* @appearanceBootstrap({
|
|
12
|
+
* storageKey: 'app-appearance',
|
|
13
|
+
* appearance: {
|
|
14
|
+
* key: 'sidebarStyle',
|
|
15
|
+
* attribute: 'appearance',
|
|
16
|
+
* allowed: ['macos', 'arc'],
|
|
17
|
+
* default: 'macos',
|
|
18
|
+
* },
|
|
19
|
+
* colorMode: {
|
|
20
|
+
* key: 'colorMode',
|
|
21
|
+
* attribute: 'color-mode',
|
|
22
|
+
* default: 'system',
|
|
23
|
+
* },
|
|
24
|
+
* })
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface AppearanceBootstrapValue {
|
|
28
|
+
/** Property read from the persisted JSON object. */
|
|
29
|
+
key: string;
|
|
30
|
+
/** Root data attribute name without the `data-` prefix. */
|
|
31
|
+
attribute: string;
|
|
32
|
+
/** Persisted values accepted by the bootstrap. */
|
|
33
|
+
allowed: string[];
|
|
34
|
+
/** Value used when storage is absent, malformed, or outside the allowlist. */
|
|
35
|
+
default: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ColorModeBootstrapValue {
|
|
38
|
+
/** Property read from the persisted JSON object. */
|
|
39
|
+
key: string;
|
|
40
|
+
/** Root data attribute name without the `data-` prefix. */
|
|
41
|
+
attribute: string;
|
|
42
|
+
/** Mode used when storage is absent or malformed. */
|
|
43
|
+
default: 'light' | 'dark' | 'system';
|
|
44
|
+
}
|
|
45
|
+
export interface AppearanceBootstrapOptions {
|
|
46
|
+
/** localStorage key containing the persisted JSON preference object. */
|
|
47
|
+
storageKey: string;
|
|
48
|
+
appearance: AppearanceBootstrapValue;
|
|
49
|
+
colorMode: ColorModeBootstrapValue;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Transform every `@appearanceBootstrap({...})` directive in a template.
|
|
53
|
+
*/
|
|
54
|
+
export declare function processAppearanceBootstrapDirective(template: string, context: Record<string, unknown>): string;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { safeEvaluate } from "./safe-evaluator.js";
|
|
2
|
+
const DATA_ATTRIBUTE_PATTERN = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/, PROPERTY_PATTERN = /^[A-Za-z_$][\w$]*$/, COLOR_MODES = new Set(["light", "dark", "system"]);
|
|
3
|
+
function assertString(value, label) {
|
|
4
|
+
if (typeof value !== "string" || value.length === 0)
|
|
5
|
+
throw Error(`@appearanceBootstrap ${label} must be a non-empty string`);
|
|
6
|
+
}
|
|
7
|
+
function normalizeOptions(value) {
|
|
8
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
9
|
+
throw Error("@appearanceBootstrap expects an options object");
|
|
10
|
+
const input = value, appearance = input.appearance, colorMode = input.colorMode;
|
|
11
|
+
assertString(input.storageKey, "storageKey");
|
|
12
|
+
if (!appearance || typeof appearance !== "object" || Array.isArray(appearance))
|
|
13
|
+
throw Error("@appearanceBootstrap appearance must be an object");
|
|
14
|
+
if (!colorMode || typeof colorMode !== "object" || Array.isArray(colorMode))
|
|
15
|
+
throw Error("@appearanceBootstrap colorMode must be an object");
|
|
16
|
+
assertString(appearance.key, "appearance.key");
|
|
17
|
+
assertString(appearance.attribute, "appearance.attribute");
|
|
18
|
+
assertString(appearance.default, "appearance.default");
|
|
19
|
+
assertString(colorMode.key, "colorMode.key");
|
|
20
|
+
assertString(colorMode.attribute, "colorMode.attribute");
|
|
21
|
+
assertString(colorMode.default, "colorMode.default");
|
|
22
|
+
if (!PROPERTY_PATTERN.test(appearance.key) || !PROPERTY_PATTERN.test(colorMode.key))
|
|
23
|
+
throw Error("@appearanceBootstrap preference keys must be JavaScript property names");
|
|
24
|
+
if (!DATA_ATTRIBUTE_PATTERN.test(appearance.attribute) || !DATA_ATTRIBUTE_PATTERN.test(colorMode.attribute))
|
|
25
|
+
throw Error("@appearanceBootstrap attributes must be lowercase data attribute names");
|
|
26
|
+
if (!Array.isArray(appearance.allowed) || appearance.allowed.length === 0 || appearance.allowed.some((item) => typeof item !== "string" || item.length === 0))
|
|
27
|
+
throw Error("@appearanceBootstrap appearance.allowed must contain one or more strings");
|
|
28
|
+
if (!appearance.allowed.includes(appearance.default))
|
|
29
|
+
throw Error("@appearanceBootstrap appearance.default must be in appearance.allowed");
|
|
30
|
+
if (!COLOR_MODES.has(colorMode.default))
|
|
31
|
+
throw Error("@appearanceBootstrap colorMode.default must be light, dark, or system");
|
|
32
|
+
return {
|
|
33
|
+
storageKey: input.storageKey,
|
|
34
|
+
appearance: {
|
|
35
|
+
key: appearance.key,
|
|
36
|
+
attribute: appearance.attribute,
|
|
37
|
+
allowed: [...new Set(appearance.allowed)],
|
|
38
|
+
default: appearance.default
|
|
39
|
+
},
|
|
40
|
+
colorMode: {
|
|
41
|
+
key: colorMode.key,
|
|
42
|
+
attribute: colorMode.attribute,
|
|
43
|
+
default: colorMode.default
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function serializeForScript(value) {
|
|
48
|
+
return JSON.stringify(value).replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/&/g, "\\u0026").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
49
|
+
}
|
|
50
|
+
function generateBootstrap(options) {
|
|
51
|
+
return `<script data-stx-scoped data-stx-appearance-bootstrap>(function(){"use strict";const config=${serializeForScript(options)};const root=document.documentElement;const MODES=["light","dark","system"];function read(){let stored={};try{const raw=localStorage.getItem(config.storageKey);const parsed=raw?JSON.parse(raw):{};if(parsed&&typeof parsed==="object"&&!Array.isArray(parsed))stored=parsed}catch{}return stored}function write(stored){try{localStorage.setItem(config.storageKey,JSON.stringify(stored))}catch{}}function resolve(){const stored=read();return{appearance:config.appearance.allowed.includes(stored[config.appearance.key])?stored[config.appearance.key]:config.appearance.default,colorMode:MODES.includes(stored[config.colorMode.key])?stored[config.colorMode.key]:config.colorMode.default}}function prefersDark(){try{return matchMedia("(prefers-color-scheme: dark)").matches}catch{return false}}function apply(){const state=resolve();const dark=state.colorMode==="dark"||(state.colorMode==="system"&&prefersDark());root.setAttribute("data-"+config.appearance.attribute,state.appearance);root.setAttribute("data-"+config.colorMode.attribute,state.colorMode);root.classList.toggle("dark",dark);root.dataset.theme=dark?"dark":"light";state.dark=dark;try{window.dispatchEvent(new CustomEvent("stx:appearance",{detail:state}))}catch{}return state}function store(key,allowed,value){if(allowed.includes(value)){const stored=read();stored[key]=value;write(stored)}return apply()}window.__stxAppearance={config:config,read:read,resolve:resolve,apply:apply,setColorMode:function(mode){return store(config.colorMode.key,MODES,mode)},setAppearance:function(name){return store(config.appearance.key,config.appearance.allowed,name)},watchSystem:function(){try{matchMedia("(prefers-color-scheme: dark)").addEventListener("change",function(){if(resolve().colorMode==="system")apply()})}catch{}}};apply()}());</script>`;
|
|
52
|
+
}
|
|
53
|
+
function findClosingParenthesis(source, openIndex) {
|
|
54
|
+
let depth = 1, quote = null, escaped = !1;
|
|
55
|
+
for (let index = openIndex + 1;index < source.length; index++) {
|
|
56
|
+
const character = source[index];
|
|
57
|
+
if (escaped) {
|
|
58
|
+
escaped = !1;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (quote) {
|
|
62
|
+
if (character === "\\")
|
|
63
|
+
escaped = !0;
|
|
64
|
+
else if (character === quote)
|
|
65
|
+
quote = null;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (character === '"' || character === "'" || character === "`") {
|
|
69
|
+
quote = character;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (character === "(")
|
|
73
|
+
depth++;
|
|
74
|
+
else if (character === ")" && --depth === 0)
|
|
75
|
+
return index;
|
|
76
|
+
}
|
|
77
|
+
return -1;
|
|
78
|
+
}
|
|
79
|
+
export function processAppearanceBootstrapDirective(template, context) {
|
|
80
|
+
let output = template;
|
|
81
|
+
const pattern = /@appearanceBootstrap\s*\(/g;
|
|
82
|
+
let match;
|
|
83
|
+
while ((match = pattern.exec(output)) !== null) {
|
|
84
|
+
const openIndex = match.index + match[0].length - 1, closeIndex = findClosingParenthesis(output, openIndex);
|
|
85
|
+
if (closeIndex === -1)
|
|
86
|
+
throw Error("@appearanceBootstrap has an unclosed options object");
|
|
87
|
+
const expression = output.slice(openIndex + 1, closeIndex).trim(), evaluated = safeEvaluate(`(${expression})`, context), replacement = generateBootstrap(normalizeOptions(evaluated));
|
|
88
|
+
output = output.slice(0, match.index) + replacement + output.slice(closeIndex + 1);
|
|
89
|
+
pattern.lastIndex = match.index + replacement.length;
|
|
90
|
+
}
|
|
91
|
+
return output;
|
|
92
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The conventional asset root, shared by the serve path and every build path.
|
|
3
|
+
*
|
|
4
|
+
* `serve()` resolves `/assets/*` from `resources/assets/*` as well as from
|
|
5
|
+
* `publicDir` — the Stacks/Laravel-style layout that `buddy make:*` produces.
|
|
6
|
+
* No build path had ever heard of it: they copy `publicDir` and nothing else.
|
|
7
|
+
*
|
|
8
|
+
* So `<script src="/assets/scripts/site-mode.js">` resolved under `stx dev` and
|
|
9
|
+
* 404'd in `dist/`, with nothing in the build reporting it. The only way to
|
|
10
|
+
* notice was to diff the build output against the served tree
|
|
11
|
+
* (stacksjs/stx#1876).
|
|
12
|
+
*
|
|
13
|
+
* It lives here rather than in one of the three builders because there are
|
|
14
|
+
* three of them — ssg.ts, site-builder/build.ts and production-builder.ts —
|
|
15
|
+
* each with its own copy mechanism, and a convention restated three times is
|
|
16
|
+
* one that will be fixed in one place and left behind in the others.
|
|
17
|
+
*
|
|
18
|
+
* @module asset-roots
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Directory whose contents are served at `/assets/*`, in addition to
|
|
22
|
+
* `publicDir`. Relative to the project root, and deliberately not a config
|
|
23
|
+
* option — it mirrors what `serve()` hardcodes.
|
|
24
|
+
*/
|
|
25
|
+
export declare const CONVENTIONAL_ASSET_ROOT = "resources/assets";
|
|
26
|
+
/** Where its contents must land so `/assets/*` resolves in built output. */
|
|
27
|
+
export declare const CONVENTIONAL_ASSET_OUTPUT = "assets";
|
|
28
|
+
/**
|
|
29
|
+
* Absolute path to the conventional asset root, or `null` when the project
|
|
30
|
+
* does not use that layout.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveConventionalAssetRoot(root?: string): string | null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export const CONVENTIONAL_ASSET_ROOT = "resources/assets", CONVENTIONAL_ASSET_OUTPUT = "assets";
|
|
4
|
+
export function resolveConventionalAssetRoot(root = process.cwd()) {
|
|
5
|
+
const dir = path.resolve(root, CONVENTIONAL_ASSET_ROOT);
|
|
6
|
+
return fs.existsSync(dir) && fs.statSync(dir).isDirectory() ? dir : null;
|
|
7
|
+
}
|
package/dist/assets.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { StxOptions } from './types';
|
|
2
|
+
export declare const markdownCache: Map<string, {
|
|
3
|
+
content: string;
|
|
4
|
+
data: Record<string, any>;
|
|
5
|
+
updatedAt: number;
|
|
6
|
+
}>;
|
|
7
|
+
/**
|
|
8
|
+
* Read and parse a markdown file with frontmatter
|
|
9
|
+
* @param filePath Path to the markdown file
|
|
10
|
+
* @param options stx options
|
|
11
|
+
* @returns Object containing parsed content and frontmatter data
|
|
12
|
+
*/
|
|
13
|
+
export declare function readMarkdownFile(filePath: string, options?: StxOptions): Promise<{
|
|
14
|
+
content: string;
|
|
15
|
+
data: Record<string, any>;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Process @markdown-file directive
|
|
19
|
+
* This directive includes markdown files in templates
|
|
20
|
+
*/
|
|
21
|
+
export declare function processMarkdownFileDirectives(template: string, context: Record<string, any>, filePath?: string, options?: StxOptions): Promise<string>;
|