@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,146 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { CONVENTIONAL_ASSET_OUTPUT, CONVENTIONAL_ASSET_ROOT, resolveConventionalAssetRoot } from "./asset-roots.js";
|
|
4
|
+
import { createRouter } from "./router.js";
|
|
5
|
+
import { buildRuntimeAsset, buildRouterAsset } from "./build-assets.js";
|
|
6
|
+
import { compileTemplate } from "./template-compiler.js";
|
|
7
|
+
import { generateManifest, writeManifest } from "./manifest.js";
|
|
8
|
+
import { injectColorModeBootScript } from "./color-mode-boot.js";
|
|
9
|
+
import { applyHtmlAttrs, ensureDocumentShell } from "./document-shell.js";
|
|
10
|
+
import { extractContainerContent } from "./app-shell.js";
|
|
11
|
+
import { injectCss } from "./dev-server/ts-css.js";
|
|
12
|
+
import { loadStxConfig } from "./config.js";
|
|
13
|
+
const PUBLIC_ASSET_BLOCKLIST = new Set([
|
|
14
|
+
".DS_Store",
|
|
15
|
+
"Thumbs.db",
|
|
16
|
+
"desktop.ini",
|
|
17
|
+
".gitkeep",
|
|
18
|
+
".gitignore"
|
|
19
|
+
]);
|
|
20
|
+
function copyPublicAssets(srcDir, destDir) {
|
|
21
|
+
let copied = 0, bytes = 0;
|
|
22
|
+
if (!fs.existsSync(srcDir))
|
|
23
|
+
return { copied, bytes };
|
|
24
|
+
fs.mkdirSync(destDir, { recursive: !0 });
|
|
25
|
+
function walk(currentSrc, currentDest) {
|
|
26
|
+
const entries = fs.readdirSync(currentSrc, { withFileTypes: !0 });
|
|
27
|
+
for (const entry of entries) {
|
|
28
|
+
if (PUBLIC_ASSET_BLOCKLIST.has(entry.name))
|
|
29
|
+
continue;
|
|
30
|
+
const srcPath = path.join(currentSrc, entry.name), destPath = path.join(currentDest, entry.name);
|
|
31
|
+
if (entry.isDirectory()) {
|
|
32
|
+
fs.mkdirSync(destPath, { recursive: !0 });
|
|
33
|
+
walk(srcPath, destPath);
|
|
34
|
+
} else if (entry.isFile()) {
|
|
35
|
+
if (fs.existsSync(destPath))
|
|
36
|
+
continue;
|
|
37
|
+
fs.copyFileSync(srcPath, destPath);
|
|
38
|
+
copied++;
|
|
39
|
+
bytes += fs.statSync(destPath).size;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
walk(srcDir, destDir);
|
|
44
|
+
return { copied, bytes };
|
|
45
|
+
}
|
|
46
|
+
export async function buildForProduction(options = {}) {
|
|
47
|
+
const startTime = Date.now(), root = path.resolve(options.root || process.cwd()), outputDir = path.resolve(root, options.outputDir || ".output");
|
|
48
|
+
console.log("[stx build] Starting production build...");
|
|
49
|
+
let projectConfig = {};
|
|
50
|
+
try {
|
|
51
|
+
projectConfig = await loadStxConfig();
|
|
52
|
+
} catch {}
|
|
53
|
+
const componentsDir = options.componentsDir ?? projectConfig.componentsDir ?? "components", partialsDir = options.partialsDir ?? projectConfig.partialsDir ?? "partials", layoutsDir = options.layoutsDir ?? projectConfig.layoutsDir ?? "layouts", publicDir = options.publicDir ?? projectConfig.publicDir ?? "public", headConfigDefault = projectConfig.app?.head || {}, colorModeConfig = projectConfig.app?.colorMode, routerContainer = projectConfig.router?.container || "main";
|
|
54
|
+
if (fs.existsSync(outputDir))
|
|
55
|
+
fs.rmSync(outputDir, { recursive: !0 });
|
|
56
|
+
const dirs = [
|
|
57
|
+
path.join(outputDir, "public", "__stx"),
|
|
58
|
+
path.join(outputDir, "public", "assets"),
|
|
59
|
+
path.join(outputDir, "server", "pages"),
|
|
60
|
+
path.join(outputDir, "server", "fragments")
|
|
61
|
+
];
|
|
62
|
+
for (const dir of dirs)
|
|
63
|
+
fs.mkdirSync(dir, { recursive: !0 });
|
|
64
|
+
console.log("[stx build] Discovering routes...");
|
|
65
|
+
const allRoutes = createRouter(root), excludeDirs = ["components", "layouts", "partials"], routes = allRoutes.filter((r) => {
|
|
66
|
+
return !excludeDirs.some((dir) => r.pattern.startsWith(`/${dir}/`) || r.pattern === `/${dir}`);
|
|
67
|
+
});
|
|
68
|
+
console.log(`[stx build] Found ${routes.length} page routes (${allRoutes.length - routes.length} non-page files excluded)`);
|
|
69
|
+
console.log("[stx build] Generating shared assets...");
|
|
70
|
+
const runtimeAsset = buildRuntimeAsset(options.debug), routerAsset = buildRouterAsset();
|
|
71
|
+
await Bun.write(path.join(outputDir, "public", "__stx", runtimeAsset.filename), runtimeAsset.content);
|
|
72
|
+
await Bun.write(path.join(outputDir, "public", "__stx", routerAsset.filename), routerAsset.content);
|
|
73
|
+
console.log(`[stx build] Runtime: ${runtimeAsset.filename} (${(runtimeAsset.content.length / 1024).toFixed(1)}KB)`);
|
|
74
|
+
console.log(`[stx build] Router: ${routerAsset.filename} (${(routerAsset.content.length / 1024).toFixed(1)}KB)`);
|
|
75
|
+
console.log("[stx build] Compiling templates...");
|
|
76
|
+
const compiledPages = [], manifestRoutes = [];
|
|
77
|
+
for (const route of routes)
|
|
78
|
+
try {
|
|
79
|
+
const compiled = await compileTemplate(route.filePath, route.pattern, {
|
|
80
|
+
componentsDir,
|
|
81
|
+
partialsDir,
|
|
82
|
+
layoutsDir,
|
|
83
|
+
debug: options.debug
|
|
84
|
+
});
|
|
85
|
+
compiledPages.push(compiled);
|
|
86
|
+
compiled.html = compiled.html.replace(/runtime\.__STX_HASH__\.js/g, runtimeAsset.filename).replace(/router\.__STX_HASH__\.js/g, routerAsset.filename);
|
|
87
|
+
compiled.html = ensureDocumentShell(compiled.html, headConfigDefault, {
|
|
88
|
+
bodyScripts: [`<script src="/__stx/${routerAsset.filename}"></script>`],
|
|
89
|
+
...colorModeConfig && { colorMode: colorModeConfig }
|
|
90
|
+
});
|
|
91
|
+
if (colorModeConfig)
|
|
92
|
+
compiled.html = injectColorModeBootScript(compiled.html, colorModeConfig);
|
|
93
|
+
if (headConfigDefault.htmlAttrs)
|
|
94
|
+
compiled.html = applyHtmlAttrs(compiled.html, headConfigDefault.htmlAttrs);
|
|
95
|
+
if (!/<body[^>]*\bdata-stx=/.test(compiled.html)) {
|
|
96
|
+
const dataStxMatch = compiled.html.match(/<(?!body\b)[a-zA-Z][a-zA-Z0-9-]*\b[^>]*?\s(data-stx="[^"]+")[^>]*>/);
|
|
97
|
+
if (dataStxMatch && dataStxMatch[1]) {
|
|
98
|
+
const dataStxAttr = dataStxMatch[1];
|
|
99
|
+
compiled.html = compiled.html.replace(" " + dataStxAttr, "");
|
|
100
|
+
compiled.html = compiled.html.replace(/<body([^>]*)>/, `<body$1 ${dataStxAttr}>`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
compiled.html = compiled.html.replace(/<style data-css="generated">[\s\S]*?<\/style>\s*/g, "");
|
|
104
|
+
compiled.html = await injectCss(compiled.html);
|
|
105
|
+
compiled.fragment = extractContainerContent(compiled.html, routerContainer);
|
|
106
|
+
const safeRouteName = route.pattern === "/" ? "index" : route.pattern.slice(1).replace(/\//g, "-").replace(/[[\]]/g, "_"), compiledPath = path.join("server", "pages", `${safeRouteName}.compiled.json`), fragmentPath = path.join("server", "fragments", `${safeRouteName}.html`);
|
|
107
|
+
await Bun.write(path.join(outputDir, compiledPath), JSON.stringify(compiled, null, 2));
|
|
108
|
+
await Bun.write(path.join(outputDir, fragmentPath), compiled.fragment);
|
|
109
|
+
manifestRoutes.push({
|
|
110
|
+
pattern: route.pattern,
|
|
111
|
+
compiledPath,
|
|
112
|
+
fragmentPath,
|
|
113
|
+
isDynamic: compiled.hasServerScripts,
|
|
114
|
+
hasParams: route.pattern.includes(":") || route.pattern.includes("[")
|
|
115
|
+
});
|
|
116
|
+
console.log(`[stx build] \u2713 ${route.pattern}`);
|
|
117
|
+
} catch (error) {
|
|
118
|
+
console.error(`[stx build] \u2717 ${route.pattern}:`, error instanceof Error ? error.message : error);
|
|
119
|
+
}
|
|
120
|
+
const userPublicSrc = path.resolve(root, publicDir);
|
|
121
|
+
if (fs.existsSync(userPublicSrc)) {
|
|
122
|
+
const { copied, bytes } = copyPublicAssets(userPublicSrc, path.join(outputDir, "public"));
|
|
123
|
+
if (copied > 0)
|
|
124
|
+
console.log(`[stx build] Copied ${copied} public asset${copied === 1 ? "" : "s"} (${(bytes / 1024).toFixed(1)}KB) from ${publicDir}/`);
|
|
125
|
+
}
|
|
126
|
+
const conventionalAssetSrc = resolveConventionalAssetRoot(root);
|
|
127
|
+
if (conventionalAssetSrc) {
|
|
128
|
+
const { copied, bytes } = copyPublicAssets(conventionalAssetSrc, path.join(outputDir, "public", CONVENTIONAL_ASSET_OUTPUT));
|
|
129
|
+
if (copied > 0)
|
|
130
|
+
console.log(`[stx build] Copied ${copied} asset${copied === 1 ? "" : "s"} (${(bytes / 1024).toFixed(1)}KB) from ${CONVENTIONAL_ASSET_ROOT}/`);
|
|
131
|
+
}
|
|
132
|
+
const assets = {
|
|
133
|
+
runtime: runtimeAsset.filename,
|
|
134
|
+
router: routerAsset.filename
|
|
135
|
+
}, manifest = generateManifest(manifestRoutes, assets, outputDir);
|
|
136
|
+
writeManifest(manifest, outputDir);
|
|
137
|
+
const duration = Date.now() - startTime;
|
|
138
|
+
console.log(`
|
|
139
|
+
[stx build] Done in ${duration}ms \u2014 ${compiledPages.length} pages compiled`);
|
|
140
|
+
return {
|
|
141
|
+
pageCount: compiledPages.length,
|
|
142
|
+
assets,
|
|
143
|
+
outputDir,
|
|
144
|
+
duration
|
|
145
|
+
};
|
|
146
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Start the production server.
|
|
3
|
+
*
|
|
4
|
+
* Serves pre-built pages from .output/ with minimal per-request work:
|
|
5
|
+
* - Static assets: served from disk with immutable cache headers
|
|
6
|
+
* - SPA fragments: served from pre-extracted HTML files
|
|
7
|
+
* - Static pages: served directly (zero processing)
|
|
8
|
+
* - Dynamic pages: hydrated with request-time data
|
|
9
|
+
*/
|
|
10
|
+
export declare function startProductionServer(options?: ProductionServerOptions): Promise<{ port: number, stop: () => void }>;
|
|
11
|
+
/**
|
|
12
|
+
* Production server configuration.
|
|
13
|
+
*/
|
|
14
|
+
export declare interface ProductionServerOptions {
|
|
15
|
+
outputDir?: string
|
|
16
|
+
port?: number
|
|
17
|
+
onRequest?: (req: Request) => Response | Promise<Response> | null | Promise<null>
|
|
18
|
+
apiRoutes?: Record<string, (req: Request) => Response | Promise<Response>>
|
|
19
|
+
}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { serve, default as Bun } from "./bun-shim.js";
|
|
4
|
+
import { loadManifest } from "./manifest.js";
|
|
5
|
+
import { hydrateTemplateStream, hydrateFragment } from "./template-hydrator.js";
|
|
6
|
+
import { extractLayoutMetadata } from "./app-shell.js";
|
|
7
|
+
import { pageShipsSignalsRuntime } from "./runtime-injection.js";
|
|
8
|
+
import { patternToRegex } from "stx-router";
|
|
9
|
+
import { compressResponse } from "./compression.js";
|
|
10
|
+
import { actionRedirectResponse, isActionableMethod } from "./page-action.js";
|
|
11
|
+
import { FRAGMENT_CACHE_CONTROL, isSpaNavRequest, spaNavVaryHeaders } from "./spa-nav.js";
|
|
12
|
+
const MIME_TYPES = {
|
|
13
|
+
".js": "application/javascript",
|
|
14
|
+
".mjs": "application/javascript",
|
|
15
|
+
".css": "text/css",
|
|
16
|
+
".json": "application/json",
|
|
17
|
+
".html": "text/html",
|
|
18
|
+
".txt": "text/plain",
|
|
19
|
+
".xml": "application/xml",
|
|
20
|
+
".pdf": "application/pdf",
|
|
21
|
+
".png": "image/png",
|
|
22
|
+
".jpg": "image/jpeg",
|
|
23
|
+
".jpeg": "image/jpeg",
|
|
24
|
+
".gif": "image/gif",
|
|
25
|
+
".webp": "image/webp",
|
|
26
|
+
".avif": "image/avif",
|
|
27
|
+
".svg": "image/svg+xml",
|
|
28
|
+
".ico": "image/x-icon",
|
|
29
|
+
".bmp": "image/bmp",
|
|
30
|
+
".mp4": "video/mp4",
|
|
31
|
+
".webm": "video/webm",
|
|
32
|
+
".ogg": "audio/ogg",
|
|
33
|
+
".mp3": "audio/mpeg",
|
|
34
|
+
".wav": "audio/wav",
|
|
35
|
+
".woff": "font/woff",
|
|
36
|
+
".woff2": "font/woff2",
|
|
37
|
+
".ttf": "font/ttf",
|
|
38
|
+
".otf": "font/otf",
|
|
39
|
+
".eot": "application/vnd.ms-fontobject"
|
|
40
|
+
};
|
|
41
|
+
export async function startProductionServer(options = {}) {
|
|
42
|
+
const outputDir = path.resolve(options.outputDir || ".output"), port = options.port || 3000, manifest = loadManifest(outputDir);
|
|
43
|
+
if (!manifest) {
|
|
44
|
+
console.error("[stx] No build manifest found. Run `stx build` first.");
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
console.log(`[stx] Production server loading ${manifest.routes.length} routes...`);
|
|
48
|
+
const compiledTemplates = new Map, fragmentCache = new Map, layoutMetadataCache = new Map, runtimeCache = new Map;
|
|
49
|
+
for (const route of manifest.routes)
|
|
50
|
+
try {
|
|
51
|
+
const compiledPath = path.join(outputDir, route.compiledPath), compiled = JSON.parse(await Bun.file(compiledPath).text());
|
|
52
|
+
compiledTemplates.set(route.pattern, compiled);
|
|
53
|
+
layoutMetadataCache.set(route.pattern, extractLayoutMetadata(compiled.html));
|
|
54
|
+
runtimeCache.set(route.pattern, pageShipsSignalsRuntime(compiled.html));
|
|
55
|
+
const fragmentPath = path.join(outputDir, route.fragmentPath);
|
|
56
|
+
if (await Bun.file(fragmentPath).exists())
|
|
57
|
+
fragmentCache.set(route.pattern, await Bun.file(fragmentPath).text());
|
|
58
|
+
} catch (error) {
|
|
59
|
+
console.warn(`[stx] Failed to load route ${route.pattern}:`, error);
|
|
60
|
+
}
|
|
61
|
+
const exactRoutes = new Map, paramRoutes = [];
|
|
62
|
+
for (const route of manifest.routes)
|
|
63
|
+
if (route.hasParams) {
|
|
64
|
+
const { regex, params: paramNames } = patternToRegex(route.pattern);
|
|
65
|
+
paramRoutes.push({ regex, route, paramNames });
|
|
66
|
+
} else
|
|
67
|
+
exactRoutes.set(route.pattern, route);
|
|
68
|
+
const server = serve({
|
|
69
|
+
port,
|
|
70
|
+
async fetch(request) {
|
|
71
|
+
return compressResponse(request, await (async () => {
|
|
72
|
+
const pathname = new URL(request.url).pathname;
|
|
73
|
+
if (options.onRequest) {
|
|
74
|
+
const response = await options.onRequest(request);
|
|
75
|
+
if (response)
|
|
76
|
+
return response;
|
|
77
|
+
}
|
|
78
|
+
if (options.apiRoutes?.[pathname])
|
|
79
|
+
return options.apiRoutes[pathname](request);
|
|
80
|
+
if ((request.method === "GET" || request.method === "HEAD") && pathname !== "/") {
|
|
81
|
+
const publicRoot = path.resolve(outputDir, "public");
|
|
82
|
+
let safePathname;
|
|
83
|
+
try {
|
|
84
|
+
safePathname = decodeURIComponent(pathname);
|
|
85
|
+
} catch {
|
|
86
|
+
safePathname = pathname;
|
|
87
|
+
}
|
|
88
|
+
if (!safePathname.includes("\x00")) {
|
|
89
|
+
const resolvedPath = path.resolve(publicRoot, `.${safePathname}`);
|
|
90
|
+
if (resolvedPath === publicRoot || resolvedPath.startsWith(`${publicRoot}${path.sep}`))
|
|
91
|
+
try {
|
|
92
|
+
if (fs.existsSync(resolvedPath) && fs.statSync(resolvedPath).isFile()) {
|
|
93
|
+
const ext = path.extname(resolvedPath).toLowerCase(), contentType = MIME_TYPES[ext] || "application/octet-stream", isFingerprinted = pathname.startsWith("/__stx/") || /\.[0-9a-f]{8}\./.test(pathname);
|
|
94
|
+
return new Response(Bun.file(resolvedPath), {
|
|
95
|
+
headers: {
|
|
96
|
+
"Content-Type": contentType,
|
|
97
|
+
"Cache-Control": isFingerprinted ? "public, max-age=31536000, immutable" : "public, max-age=3600"
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
} catch {}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const isSpaNav = isSpaNavRequest(request);
|
|
105
|
+
let matchedRoute = null, params = {};
|
|
106
|
+
matchedRoute = exactRoutes.get(pathname) || null;
|
|
107
|
+
if (!matchedRoute)
|
|
108
|
+
for (const { regex, route, paramNames } of paramRoutes) {
|
|
109
|
+
const match = pathname.match(regex);
|
|
110
|
+
if (match) {
|
|
111
|
+
matchedRoute = route;
|
|
112
|
+
paramNames.forEach((name, i) => {
|
|
113
|
+
params[name] = match[i + 1];
|
|
114
|
+
});
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (!matchedRoute) {
|
|
119
|
+
const errorPage = exactRoutes.get("/404") || null;
|
|
120
|
+
if (errorPage) {
|
|
121
|
+
const compiled = compiledTemplates.get(errorPage.pattern);
|
|
122
|
+
if (compiled)
|
|
123
|
+
return new Response(compiled.html, {
|
|
124
|
+
status: 404,
|
|
125
|
+
headers: { "Content-Type": "text/html" }
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return new Response("Not Found", { status: 404 });
|
|
129
|
+
}
|
|
130
|
+
if (isSpaNav) {
|
|
131
|
+
const fragment = fragmentCache.get(matchedRoute.pattern);
|
|
132
|
+
if (fragment) {
|
|
133
|
+
const layoutMetadata = layoutMetadataCache.get(matchedRoute.pattern);
|
|
134
|
+
return new Response(fragment, {
|
|
135
|
+
headers: {
|
|
136
|
+
"Content-Type": "text/html",
|
|
137
|
+
"X-STX-Fragment": "true",
|
|
138
|
+
...runtimeCache.has(matchedRoute.pattern) ? { "X-STX-Runtime": runtimeCache.get(matchedRoute.pattern) ? "true" : "false" } : {},
|
|
139
|
+
...layoutMetadata ? {
|
|
140
|
+
"X-STX-Layout": layoutMetadata.layout,
|
|
141
|
+
"X-STX-Layout-Group": layoutMetadata.group
|
|
142
|
+
} : {},
|
|
143
|
+
...spaNavVaryHeaders(),
|
|
144
|
+
"Cache-Control": FRAGMENT_CACHE_CONTROL
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const isMutating = isActionableMethod(request.method), compiled = compiledTemplates.get(matchedRoute.pattern);
|
|
150
|
+
if (!compiled) {
|
|
151
|
+
const errorPage = exactRoutes.get("/500") || null;
|
|
152
|
+
if (errorPage) {
|
|
153
|
+
const compiledError = compiledTemplates.get(errorPage.pattern);
|
|
154
|
+
if (compiledError)
|
|
155
|
+
return new Response(compiledError.html, {
|
|
156
|
+
status: 500,
|
|
157
|
+
headers: { "Content-Type": "text/html" }
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return new Response("Internal Server Error", { status: 500 });
|
|
161
|
+
}
|
|
162
|
+
if (!isMutating && !compiled.hasServerScripts && Object.keys(compiled.placeholders).length === 0)
|
|
163
|
+
return new Response(compiled.html, {
|
|
164
|
+
status: compiled.status ?? 200,
|
|
165
|
+
headers: {
|
|
166
|
+
"Content-Type": "text/html",
|
|
167
|
+
...spaNavVaryHeaders(),
|
|
168
|
+
"Cache-Control": "public, max-age=60"
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
try {
|
|
172
|
+
const { html, boundaries, redirect, cookies, status, headers: pageHeaders } = await hydrateTemplateStream(compiled, {
|
|
173
|
+
params,
|
|
174
|
+
request,
|
|
175
|
+
method: request.method
|
|
176
|
+
});
|
|
177
|
+
if (redirect)
|
|
178
|
+
return actionRedirectResponse(redirect, cookies, pageHeaders);
|
|
179
|
+
if (boundaries && boundaries.length > 0) {
|
|
180
|
+
const { renderStreamingPage, streamToResponse } = await import("./streaming.js");
|
|
181
|
+
return streamToResponse(renderStreamingPage(html, boundaries, { timeoutMs: 30000 }), {
|
|
182
|
+
status: status ?? compiled.status ?? 200,
|
|
183
|
+
headers: { "Cache-Control": "no-cache", ...pageHeaders }
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
const headers = new Headers({
|
|
187
|
+
"Content-Type": "text/html",
|
|
188
|
+
...spaNavVaryHeaders(),
|
|
189
|
+
"Cache-Control": "no-cache"
|
|
190
|
+
});
|
|
191
|
+
for (const cookie of cookies ?? [])
|
|
192
|
+
headers.append("Set-Cookie", cookie);
|
|
193
|
+
for (const [name, value] of Object.entries(pageHeaders ?? {}))
|
|
194
|
+
headers.set(name, value);
|
|
195
|
+
return new Response(html, { status: status ?? compiled.status ?? 200, headers });
|
|
196
|
+
} catch (error) {
|
|
197
|
+
console.error(`[stx] Hydration error for ${pathname}:`, error);
|
|
198
|
+
return new Response(compiled.html, {
|
|
199
|
+
headers: { "Content-Type": "text/html" }
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
})());
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
console.log(`[stx] Production server running at http://localhost:${port}`);
|
|
206
|
+
console.log(`[stx] Serving ${manifest.routes.length} routes (${compiledTemplates.size} pre-loaded)`);
|
|
207
|
+
return { port, stop: () => server.stop() };
|
|
208
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentinel values used while resolving component props.
|
|
3
|
+
*
|
|
4
|
+
* A leaf module on purpose: `component-renderer.ts` imports `./builtins`, so a
|
|
5
|
+
* builtin importing the renderer back would be a cycle. Both sides import this
|
|
6
|
+
* instead.
|
|
7
|
+
*
|
|
8
|
+
* @module prop-sentinels
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Marks a prop that was written as a bare HTML boolean attribute — `<X open>`
|
|
12
|
+
* rather than `<X open="true">`.
|
|
13
|
+
*
|
|
14
|
+
* It carries a leading NUL precisely so it cannot collide with an author-written
|
|
15
|
+
* value, which also means it must never survive into a response: a NUL byte
|
|
16
|
+
* makes the document invalid UTF-8, and tools treat the file as binary. `grep`
|
|
17
|
+
* in particular goes SILENT on it — not zero matches, no output at all — so a
|
|
18
|
+
* verification step that greps rendered HTML returns an empty string and reads
|
|
19
|
+
* as a pass (stacksjs/stx#1816).
|
|
20
|
+
*/
|
|
21
|
+
export declare const BOOLEAN_ATTRIBUTE_SENTINEL = "\0stx-boolean-attribute";
|
|
22
|
+
/** Is this value the bare-boolean-attribute marker? */
|
|
23
|
+
export declare function isBooleanAttributeSentinel(value: unknown): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Last-resort guard for anything about to be written into a response.
|
|
26
|
+
*
|
|
27
|
+
* Nothing should reach output carrying a NUL, but the cost of one escaping is
|
|
28
|
+
* an invalid document and a silent grep, which is far worse than the cost of
|
|
29
|
+
* this check.
|
|
30
|
+
*/
|
|
31
|
+
export declare function stripControlChars(value: string): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const BOOLEAN_ATTRIBUTE_SENTINEL = "\x00stx-boolean-attribute";
|
|
2
|
+
export function isBooleanAttributeSentinel(value) {
|
|
3
|
+
return value === BOOLEAN_ATTRIBUTE_SENTINEL;
|
|
4
|
+
}
|
|
5
|
+
export function stripControlChars(value) {
|
|
6
|
+
return value.indexOf("\x00") === -1 ? value : value.replace(/\0/g, "");
|
|
7
|
+
}
|
package/dist/props.d.ts
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Define component props with type safety and validation.
|
|
3
|
+
*
|
|
4
|
+
* Takes an inline object type or a named `interface`/`type` — the named form is
|
|
5
|
+
* shown first because it is the one the framework scaffolds, and because every
|
|
6
|
+
* example here used to be inline. An inline literal has an implicit index
|
|
7
|
+
* signature and a named `interface` does not, so an inline-only docstring
|
|
8
|
+
* demonstrated the one spelling that could not fail (stacksjs/stx#1917).
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // A named type, inline or imported — interface and type alias both work
|
|
13
|
+
* interface CardProps {
|
|
14
|
+
* title: string
|
|
15
|
+
* count: number
|
|
16
|
+
* }
|
|
17
|
+
* const props = defineProps<CardProps>()
|
|
18
|
+
*
|
|
19
|
+
* // Or inline
|
|
20
|
+
* const props = defineProps<{
|
|
21
|
+
* title: string
|
|
22
|
+
* count: number
|
|
23
|
+
* }>()
|
|
24
|
+
*
|
|
25
|
+
* // With validation and defaults
|
|
26
|
+
* const props = defineProps<{
|
|
27
|
+
* title: string
|
|
28
|
+
* count?: number
|
|
29
|
+
* status: 'active' | 'inactive'
|
|
30
|
+
* }>({
|
|
31
|
+
* title: { required: true },
|
|
32
|
+
* count: { default: 0 },
|
|
33
|
+
* status: {
|
|
34
|
+
* default: 'active',
|
|
35
|
+
* validator: (v) => ['active', 'inactive'].includes(v)
|
|
36
|
+
* }
|
|
37
|
+
* })
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function defineProps<T extends PropsShape>(definitions?: PropsDefinition<T>): T;
|
|
41
|
+
/**
|
|
42
|
+
* Define props with runtime validation.
|
|
43
|
+
* Use this when you need validation errors at runtime.
|
|
44
|
+
*/
|
|
45
|
+
export declare function definePropsWithValidation<T extends PropsShape>(definitions: PropsDefinition<T>, options?: {
|
|
46
|
+
componentName?: string
|
|
47
|
+
throwOnError?: boolean
|
|
48
|
+
logWarnings?: boolean
|
|
49
|
+
}): { props: T; validation: PropValidationResult };
|
|
50
|
+
/**
|
|
51
|
+
* Define default values for props.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const props = withDefaults(defineProps<{
|
|
56
|
+
* title: string
|
|
57
|
+
* count?: number
|
|
58
|
+
* items?: string[]
|
|
59
|
+
* }>(), {
|
|
60
|
+
* count: 0,
|
|
61
|
+
* items: () => []
|
|
62
|
+
* })
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function withDefaults<T extends PropsShape>(props: T, defaults: Partial<{ [K in keyof T]: T[K] | (() => T[K]) }>): T;
|
|
66
|
+
/**
|
|
67
|
+
* Create a prop type definition for a specific type.
|
|
68
|
+
*/
|
|
69
|
+
export declare function prop<T>(options: PropOptions<T>): PropOptions<T>;
|
|
70
|
+
/**
|
|
71
|
+
* Create a required prop.
|
|
72
|
+
*/
|
|
73
|
+
export declare function required<T>(type?: PropType<T>): PropOptions<T>;
|
|
74
|
+
/**
|
|
75
|
+
* Create an optional prop with default.
|
|
76
|
+
*/
|
|
77
|
+
export declare function optional<T>(defaultValue: T | (() => T), type?: PropType<T>): PropOptions<T>;
|
|
78
|
+
/**
|
|
79
|
+
* Create a prop with a validator.
|
|
80
|
+
*/
|
|
81
|
+
export declare function validated<T>(validator: (value: T) => boolean, options?: Omit<PropOptions<T>, 'validator'>): PropOptions<T>;
|
|
82
|
+
/**
|
|
83
|
+
* Create a prop that accepts one of specific values.
|
|
84
|
+
*/
|
|
85
|
+
export declare function oneOf<T extends string | number>(values: readonly T[], options?: Omit<PropOptions<T>, 'validator'>): PropOptions<T>;
|
|
86
|
+
/**
|
|
87
|
+
* Create a prop for array of specific type.
|
|
88
|
+
*/
|
|
89
|
+
export declare function arrayOf<T>(_itemType: PropType<T>, options?: Omit<PropOptions<T[]>, 'type'>): PropOptions<T[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Create a prop for object with specific shape.
|
|
92
|
+
*/
|
|
93
|
+
export declare function shape<T extends PropsShape>(_shape: PropsDefinition<T>, options?: Omit<PropOptions<T>, 'type'>): PropOptions<T>;
|
|
94
|
+
/**
|
|
95
|
+
* Process props passed to a component.
|
|
96
|
+
* Called internally during component rendering.
|
|
97
|
+
*/
|
|
98
|
+
export declare function processComponentProps(rawProps: Record<string, unknown>, definitions?: PropsDefinition<Record<string, unknown>>, componentName?: string): Record<string, unknown>;
|
|
99
|
+
/**
|
|
100
|
+
* Define component events (emits).
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const emit = defineEmits<{
|
|
105
|
+
* 'update:value': string
|
|
106
|
+
* 'submit': { data: FormData }
|
|
107
|
+
* 'close': void
|
|
108
|
+
* }>()
|
|
109
|
+
*
|
|
110
|
+
* // Usage
|
|
111
|
+
* emit('update:value', 'new value')
|
|
112
|
+
* emit('submit', { data: formData })
|
|
113
|
+
* emit('close', undefined)
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare function defineEmits<E extends PropsShape>(): EmitFn<E>;
|
|
117
|
+
/**
|
|
118
|
+
* Expose component methods/properties to parent.
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* defineExpose({
|
|
123
|
+
* focus: () => inputRef.value?.focus(),
|
|
124
|
+
* reset: () => { value = '' },
|
|
125
|
+
* value: computed(() => internalValue)
|
|
126
|
+
* })
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function defineExpose<T extends PropsShape>(exposed: T): void;
|
|
130
|
+
/**
|
|
131
|
+
* Generate TypeScript interface from prop definitions.
|
|
132
|
+
* Useful for documentation and type generation.
|
|
133
|
+
*/
|
|
134
|
+
export declare function generatePropsInterface(componentName: string, definitions: PropsDefinition<Record<string, unknown>>): string;
|
|
135
|
+
/** Prop definition options */
|
|
136
|
+
export declare interface PropOptions<T = unknown> {
|
|
137
|
+
type?: PropType<T> | PropType<T>[]
|
|
138
|
+
required?: boolean
|
|
139
|
+
default?: T | (() => T)
|
|
140
|
+
validator?: (value: T) => boolean
|
|
141
|
+
description?: string
|
|
142
|
+
}
|
|
143
|
+
/** Prop validation error */
|
|
144
|
+
export declare interface PropValidationError {
|
|
145
|
+
prop: string
|
|
146
|
+
message: string
|
|
147
|
+
value: unknown
|
|
148
|
+
expected?: string
|
|
149
|
+
}
|
|
150
|
+
/** Prop validation result */
|
|
151
|
+
export declare interface PropValidationResult {
|
|
152
|
+
valid: boolean
|
|
153
|
+
errors: PropValidationError[]
|
|
154
|
+
warnings: string[]
|
|
155
|
+
}
|
|
156
|
+
/** Supported prop types */
|
|
157
|
+
export type PropType<T> = | StringConstructor
|
|
158
|
+
| NumberConstructor
|
|
159
|
+
| BooleanConstructor
|
|
160
|
+
| ArrayConstructor
|
|
161
|
+
| ObjectConstructor
|
|
162
|
+
| FunctionConstructor
|
|
163
|
+
| DateConstructor
|
|
164
|
+
| SymbolConstructor
|
|
165
|
+
| { new (...args: unknown[]): T }
|
|
166
|
+
| PropType<T>[];
|
|
167
|
+
/**
|
|
168
|
+
* The constraint every props, emits and expose generic is bounded by.
|
|
169
|
+
*
|
|
170
|
+
* `object` rather than `Record<string, unknown>`, and the difference is not
|
|
171
|
+
* cosmetic: **a TypeScript `interface` does not satisfy an index signature.**
|
|
172
|
+
* Only a type alias gets an implicit one, so
|
|
173
|
+
*
|
|
174
|
+
* interface CardProps { title: string }
|
|
175
|
+
* defineProps<CardProps>() // TS2344, TS2345
|
|
176
|
+
* type CardProps = { title: string }
|
|
177
|
+
* defineProps<CardProps>() // fine
|
|
178
|
+
*
|
|
179
|
+
* differ on the keyword alone. `interface` is the form the framework scaffolds
|
|
180
|
+
* — `storage/framework/defaults/` declares props with it 44 times and with a
|
|
181
|
+
* type alias zero times — so the constraint rejected the entire scaffolded
|
|
182
|
+
* corpus (stacksjs/stx#1917).
|
|
183
|
+
*
|
|
184
|
+
* Two things hid it. Every example in the docstrings passes an inline object
|
|
185
|
+
* literal, which HAS an implicit index signature and so always passed; the
|
|
186
|
+
* error appears only once the type is named, which is the moment it is reused
|
|
187
|
+
* or exported. And apps import from `stx`, which is not a package anyone can
|
|
188
|
+
* install — the module resolved to `any`, the constraint was never enforced,
|
|
189
|
+
* and the component type-checked. Correcting the specifier in one app turned 18
|
|
190
|
+
* "Cannot find module" errors into 36 constraint errors.
|
|
191
|
+
*
|
|
192
|
+
* Named rather than written out seven times so the reason lives in one place
|
|
193
|
+
* and the sites cannot drift apart. `object` still rejects `string`, `number`
|
|
194
|
+
* and `undefined`, which is everything this constraint has to do.
|
|
195
|
+
*/
|
|
196
|
+
export type PropsShape = object;
|
|
197
|
+
/** Props definition object */
|
|
198
|
+
export type PropsDefinition<T> = {
|
|
199
|
+
[K in keyof T]?: PropOptions<T[K]> | PropType<T[K]>
|
|
200
|
+
}
|
|
201
|
+
/** Extracted prop types */
|
|
202
|
+
export type ExtractPropTypes<T extends PropsDefinition<unknown>> = {
|
|
203
|
+
[K in keyof T]: T[K] extends PropOptions<infer V>
|
|
204
|
+
? V
|
|
205
|
+
: T[K] extends PropType<infer V>
|
|
206
|
+
? V
|
|
207
|
+
: unknown
|
|
208
|
+
}
|
|
209
|
+
/** Event handler type */
|
|
210
|
+
// eslint-disable-next-line pickier/no-unused-vars
|
|
211
|
+
export type EventHandler<T = unknown> = (payload: T) => void;
|
|
212
|
+
/** Emit function type */
|
|
213
|
+
export type EmitFn<E extends PropsShape> = <K extends keyof E>(
|
|
214
|
+
event: K,
|
|
215
|
+
payload: E[K],
|
|
216
|
+
) => void;
|