@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,73 @@
|
|
|
1
|
+
import { type SetCookieOptions } from './cookie-serialize';
|
|
2
|
+
/**
|
|
3
|
+
* Parse a form submission body into a plain object.
|
|
4
|
+
*
|
|
5
|
+
* Handles both encodings a browser form can send: `multipart/form-data` and
|
|
6
|
+
* `application/x-www-form-urlencoded`. A repeated field name collapses to an
|
|
7
|
+
* array, so `<input name="tag">` twice reads as `['a', 'b']` rather than
|
|
8
|
+
* silently keeping only the last one — checkbox groups are the common case.
|
|
9
|
+
*
|
|
10
|
+
* File parts are skipped: the value would be a `File`, and a page action that
|
|
11
|
+
* wants uploads should read `request.formData()` itself rather than have this
|
|
12
|
+
* hand it something that cannot round-trip into a re-rendered form field.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseFormBody(request: Request): Promise<Record<string, string | string[]>>;
|
|
15
|
+
/**
|
|
16
|
+
* Whether this request should run a page action at all.
|
|
17
|
+
*
|
|
18
|
+
* GET and HEAD never do — a page action is for submissions, and running one on
|
|
19
|
+
* a GET would make every page load a mutation.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isActionableMethod(method: string | undefined): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Run a page's own `action`, if it declared one, and merge what it returned.
|
|
24
|
+
*
|
|
25
|
+
* The action is picked up off the render context rather than parsed out of the
|
|
26
|
+
* source: the server block has already run by this point, so a declared
|
|
27
|
+
* `action` is simply there — and it can close over anything else the block
|
|
28
|
+
* defined, which a regex-extracted function could not.
|
|
29
|
+
*
|
|
30
|
+
* Inert on GET and for any page without an action, so a page that does not opt
|
|
31
|
+
* in pays one `typeof` check.
|
|
32
|
+
*/
|
|
33
|
+
export declare function runPageAction(context: Record<string, any>, options?: RunPageActionOptions): Promise<PageActionResult>;
|
|
34
|
+
/**
|
|
35
|
+
* The response a redirecting action should produce.
|
|
36
|
+
*
|
|
37
|
+
* 303 rather than 302 deliberately: it is the status that makes a browser
|
|
38
|
+
* follow up with a GET, so a reload or a Back does not resubmit the form.
|
|
39
|
+
*/
|
|
40
|
+
export declare function actionRedirectResponse(to: string, cookies?: readonly string[], pageHeaders?: Record<string, string>): Response;
|
|
41
|
+
/**
|
|
42
|
+
* Everything an action is given about the request.
|
|
43
|
+
*
|
|
44
|
+
* A plain object rather than the `Request` alone, so an action is a pure
|
|
45
|
+
* function of its inputs and unit-tests without a server around it.
|
|
46
|
+
*/
|
|
47
|
+
export declare interface PageActionContext {
|
|
48
|
+
request: Request
|
|
49
|
+
form: Record<string, string | string[]>
|
|
50
|
+
params: Record<string, string>
|
|
51
|
+
query: Record<string, unknown>
|
|
52
|
+
cookies: Record<string, string>
|
|
53
|
+
}
|
|
54
|
+
/** What running an action produced. */
|
|
55
|
+
export declare interface PageActionResult {
|
|
56
|
+
redirect?: string
|
|
57
|
+
cookies?: string[]
|
|
58
|
+
ran: boolean
|
|
59
|
+
}
|
|
60
|
+
/** Request data a caller has already parsed, if it has. */
|
|
61
|
+
export declare interface RunPageActionOptions {
|
|
62
|
+
request?: Request
|
|
63
|
+
method?: string
|
|
64
|
+
params?: Record<string, string>
|
|
65
|
+
cookies?: Record<string, string>
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A cookie an action wants set on the response.
|
|
69
|
+
*
|
|
70
|
+
* A bare string is the whole cookie for the common case; the object form adds
|
|
71
|
+
* the attributes a session cookie needs.
|
|
72
|
+
*/
|
|
73
|
+
export type PageActionCookie = string | (SetCookieOptions & { value: string });
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { serializeSetCookie } from "./cookie-serialize.js";
|
|
2
|
+
export async function parseFormBody(request) {
|
|
3
|
+
const type = request.headers.get("content-type") || "", form = {}, put = (key, value) => {
|
|
4
|
+
const existing = form[key];
|
|
5
|
+
if (existing === void 0)
|
|
6
|
+
form[key] = value;
|
|
7
|
+
else if (Array.isArray(existing))
|
|
8
|
+
existing.push(value);
|
|
9
|
+
else
|
|
10
|
+
form[key] = [existing, value];
|
|
11
|
+
};
|
|
12
|
+
if (type.includes("multipart/form-data")) {
|
|
13
|
+
const data = await request.formData();
|
|
14
|
+
for (const [key, value] of data.entries())
|
|
15
|
+
if (typeof value === "string")
|
|
16
|
+
put(key, value);
|
|
17
|
+
return form;
|
|
18
|
+
}
|
|
19
|
+
if (type.includes("application/x-www-form-urlencoded")) {
|
|
20
|
+
for (const [key, value] of new URLSearchParams(await request.text()).entries())
|
|
21
|
+
put(key, value);
|
|
22
|
+
return form;
|
|
23
|
+
}
|
|
24
|
+
return form;
|
|
25
|
+
}
|
|
26
|
+
export function isActionableMethod(method) {
|
|
27
|
+
if (!method)
|
|
28
|
+
return !1;
|
|
29
|
+
const verb = method.toUpperCase();
|
|
30
|
+
return verb !== "GET" && verb !== "HEAD";
|
|
31
|
+
}
|
|
32
|
+
export async function runPageAction(context, options = {}) {
|
|
33
|
+
const request = options.request, method = options.method ?? request?.method;
|
|
34
|
+
if (!request || !isActionableMethod(method))
|
|
35
|
+
return { ran: !1 };
|
|
36
|
+
if (typeof context.action !== "function")
|
|
37
|
+
return { ran: !1 };
|
|
38
|
+
let form = {};
|
|
39
|
+
try {
|
|
40
|
+
form = await parseFormBody(request);
|
|
41
|
+
} catch {}
|
|
42
|
+
const result = await context.action({
|
|
43
|
+
request,
|
|
44
|
+
form,
|
|
45
|
+
params: options.params ?? {},
|
|
46
|
+
query: context.query ?? {},
|
|
47
|
+
cookies: options.cookies ?? {}
|
|
48
|
+
});
|
|
49
|
+
if (result && typeof result === "object") {
|
|
50
|
+
const returned = result, cookies = serializeActionCookies(returned.cookies), to = returned.redirect;
|
|
51
|
+
if (typeof to === "string" && to)
|
|
52
|
+
return { redirect: to, ran: !0, ...cookies.length > 0 ? { cookies } : {} };
|
|
53
|
+
const { cookies: _cookies, redirect: _redirect, ...data } = returned;
|
|
54
|
+
Object.assign(context, data);
|
|
55
|
+
if (cookies.length > 0)
|
|
56
|
+
return { ran: !0, cookies };
|
|
57
|
+
}
|
|
58
|
+
return { ran: !0 };
|
|
59
|
+
}
|
|
60
|
+
function serializeActionCookies(value) {
|
|
61
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
62
|
+
return [];
|
|
63
|
+
const headers = [];
|
|
64
|
+
for (const [name, entry] of Object.entries(value)) {
|
|
65
|
+
if (!name)
|
|
66
|
+
continue;
|
|
67
|
+
if (typeof entry === "string") {
|
|
68
|
+
headers.push(serializeSetCookie(name, entry));
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (entry && typeof entry === "object") {
|
|
72
|
+
const options = entry;
|
|
73
|
+
if (typeof options.value !== "string")
|
|
74
|
+
continue;
|
|
75
|
+
headers.push(serializeSetCookie(name, options.value, options));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return headers;
|
|
79
|
+
}
|
|
80
|
+
export function actionRedirectResponse(to, cookies = [], pageHeaders) {
|
|
81
|
+
const headers = new Headers({
|
|
82
|
+
Location: to,
|
|
83
|
+
"Cache-Control": "no-store"
|
|
84
|
+
});
|
|
85
|
+
for (const cookie of cookies)
|
|
86
|
+
headers.append("Set-Cookie", cookie);
|
|
87
|
+
for (const [name, value] of Object.entries(pageHeaders ?? {}))
|
|
88
|
+
if (name.toLowerCase() !== "location")
|
|
89
|
+
headers.set(name, value);
|
|
90
|
+
return new Response(null, { status: 303, headers });
|
|
91
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading `definePageMeta({ … })` out of a template's source.
|
|
3
|
+
*
|
|
4
|
+
* `PageMeta.layout` was part of the public type and appeared in
|
|
5
|
+
* `definePageMeta`'s own documentation example, but no code path read it. A
|
|
6
|
+
* page declaring `definePageMeta({ layout: 'app' })` type-checked, looked like
|
|
7
|
+
* the idiomatic declaration, and rendered with no layout at all
|
|
8
|
+
* (stacksjs/stx#1879).
|
|
9
|
+
*
|
|
10
|
+
* The cost was not just the missing layout. With no working typed way to say
|
|
11
|
+
* "this page belongs to the app layout group", pages hand-wrote
|
|
12
|
+
* `<meta name="stx-layout" content="app">` — a copy of a marker stx emits
|
|
13
|
+
* itself. The router's full-document-vs-fragment swap decision hinges on that
|
|
14
|
+
* string, so a page asserting a group it does not belong to is a routing
|
|
15
|
+
* hazard, not a cosmetic one.
|
|
16
|
+
*
|
|
17
|
+
* The extraction lives here because four separate regexes over
|
|
18
|
+
* `definePageMeta` had accumulated across `ssg.ts`, `page-response.ts` and
|
|
19
|
+
* `bun-plugin`'s serve path, each recognising a slightly different subset.
|
|
20
|
+
*
|
|
21
|
+
* @module page-meta
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Parse the first `definePageMeta({ … })` call in `source`.
|
|
25
|
+
*
|
|
26
|
+
* Object literals only — the call is read statically, before any script has
|
|
27
|
+
* run, so a computed argument cannot be resolved and returns `null` rather
|
|
28
|
+
* than half a result.
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractPageMetaFromSource(source: string): Record<string, any> | null;
|
|
31
|
+
/**
|
|
32
|
+
* The layout a page declares, if any.
|
|
33
|
+
*
|
|
34
|
+
* `false` is meaningful and distinct from "not declared" — it means the same
|
|
35
|
+
* as `@nolayout`, so it must survive as `false` rather than collapsing into
|
|
36
|
+
* `undefined`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function pageMetaLayout(meta: Record<string, any> | null | undefined): string | false | undefined;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function extractPageMetaFromSource(source) {
|
|
2
|
+
const match = source.match(/\bdefinePageMeta\s*\(\s*(\{[\s\S]*?\})\s*\)/m);
|
|
3
|
+
if (!match)
|
|
4
|
+
return null;
|
|
5
|
+
try {
|
|
6
|
+
return Function(`return ${match[1]}`)();
|
|
7
|
+
} catch {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function pageMetaLayout(meta) {
|
|
12
|
+
const layout = meta?.layout;
|
|
13
|
+
if (layout === !1)
|
|
14
|
+
return !1;
|
|
15
|
+
return typeof layout === "string" && layout.trim() ? layout.trim() : void 0;
|
|
16
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The HTTP status and headers a page decides for its own response.
|
|
3
|
+
*
|
|
4
|
+
* Three shapes reach the same place, so a host reads one key and gets all
|
|
5
|
+
* three:
|
|
6
|
+
*
|
|
7
|
+
* - `definePageMeta({ status })` — read statically out of the source, before
|
|
8
|
+
* anything runs. Right for a page that is *always* an error page.
|
|
9
|
+
* - `@status(expr)` — a template directive, evaluated where the rest of the
|
|
10
|
+
* template is. It sits inside the branch it belongs to, so a page says
|
|
11
|
+
* `@if (!feature) @status(404) @endif` next to the markup that explains it.
|
|
12
|
+
* - `setResponseStatus(code)` / `notFound()` / `setResponseHeader(n, v)` —
|
|
13
|
+
* callable from `<script server>`, for a decision that needs the lookup's
|
|
14
|
+
* result.
|
|
15
|
+
*
|
|
16
|
+
* The last two record on the render context under `__stxResponseStatus` and
|
|
17
|
+
* `__stxResponseHeaders`. Every host that renders a view — the dev/production
|
|
18
|
+
* serve in `bun-plugin`, `stx`'s own `serve`, the app dev server, the
|
|
19
|
+
* precompiled production server — reads them back with `readResponseStatus`
|
|
20
|
+
* and answers with what it finds.
|
|
21
|
+
*
|
|
22
|
+
* That read-back is the whole point. Recording without it is the failure this
|
|
23
|
+
* module exists to prevent: a page that says 404 renders its not-found body
|
|
24
|
+
* under a 200, which tells a crawler, a cache and an uptime check that the URL
|
|
25
|
+
* is a real page.
|
|
26
|
+
*
|
|
27
|
+
* @module page-response
|
|
28
|
+
*/
|
|
29
|
+
/** Context key holding the status a render asked for. */
|
|
30
|
+
export declare const RESPONSE_STATUS_KEY = "__stxResponseStatus";
|
|
31
|
+
/** Context key holding the headers a render asked for. */
|
|
32
|
+
export declare const RESPONSE_HEADERS_KEY = "__stxResponseHeaders";
|
|
33
|
+
/**
|
|
34
|
+
* Is this a status a response can actually carry?
|
|
35
|
+
*
|
|
36
|
+
* Out of range is ignored rather than thrown everywhere below. A status is not
|
|
37
|
+
* worth failing an already-rendered page over, and the range check is what
|
|
38
|
+
* stops a typo becoming a 500 from whichever host reads it back.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isHttpStatus(value: unknown): value is number;
|
|
41
|
+
/**
|
|
42
|
+
* Read the static HTTP status declared by `definePageMeta`.
|
|
43
|
+
*
|
|
44
|
+
* The development server needs this before client scripts execute so error
|
|
45
|
+
* pages and other non-200 documents carry the correct response semantics.
|
|
46
|
+
*/
|
|
47
|
+
export declare function extractPageResponseStatus(source: string): number | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Record a status on the render context, if it is one.
|
|
50
|
+
*
|
|
51
|
+
* Last call wins, so a page can look, decide, then change its mind — the
|
|
52
|
+
* lookup that finds the record after all must be able to take the 404 back.
|
|
53
|
+
* Returns whether the status was accepted, so a caller can warn about one that
|
|
54
|
+
* was not.
|
|
55
|
+
*/
|
|
56
|
+
export declare function recordResponseStatus(context: Record<string, any> | undefined, status: unknown): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Record a response header on the render context.
|
|
59
|
+
*
|
|
60
|
+
* The pair is not optional: a page that works out mid-render that a handle has
|
|
61
|
+
* moved can say 301 and, without this, cannot say where to — so the response
|
|
62
|
+
* it produces is a redirect with no destination, which is worse than the 404
|
|
63
|
+
* it replaced.
|
|
64
|
+
*/
|
|
65
|
+
export declare function recordResponseHeader(context: Record<string, any> | undefined, name: unknown, value: unknown): void;
|
|
66
|
+
/** The status a finished render asked for, or `undefined` if it asked for none. */
|
|
67
|
+
export declare function readResponseStatus(context: Record<string, any> | undefined | null): number | undefined;
|
|
68
|
+
/** The headers a finished render asked for, or `undefined` if it asked for none. */
|
|
69
|
+
export declare function readResponseHeaders(context: Record<string, any> | undefined | null): Record<string, string> | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* Move a recorded status/headers from one context object onto another.
|
|
72
|
+
*
|
|
73
|
+
* Renderers build a fresh internal context from the caller's — so a page that
|
|
74
|
+
* records a status records it on an object nobody outside can read. This is
|
|
75
|
+
* how the intent gets back out: call it with the internal context and the
|
|
76
|
+
* caller's, after the render.
|
|
77
|
+
*
|
|
78
|
+
* Only copies what is there. A render that asked for nothing leaves the target
|
|
79
|
+
* untouched rather than stamping it with a 200, so a caller can tell "the page
|
|
80
|
+
* said 200" from "the page said nothing" — the second is what lets an outer
|
|
81
|
+
* status (an error page's `definePageMeta`) survive.
|
|
82
|
+
*/
|
|
83
|
+
export declare function syncRecordedResponse(from: Record<string, any> | undefined | null, to: Record<string, any> | undefined | null): void;
|
|
84
|
+
/**
|
|
85
|
+
* The `<script server>` bindings for deciding a response, bound to one context.
|
|
86
|
+
*
|
|
87
|
+
* Handed to every server script by `extractVariables`, so no host can render a
|
|
88
|
+
* view and leave them out. A host that wants the calls to go somewhere of its
|
|
89
|
+
* own — the dev serve puts them straight on its per-request context — overrides
|
|
90
|
+
* them through the render context, which is appended after these and wins.
|
|
91
|
+
*/
|
|
92
|
+
export declare function responseBindings(context: Record<string, any>): {
|
|
93
|
+
setResponseStatus: (status: number) => void;
|
|
94
|
+
setResponseHeader: (name: string, value: string) => void;
|
|
95
|
+
notFound: (status?: number) => void;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* `@status(expr)` — the template-side spelling.
|
|
99
|
+
*
|
|
100
|
+
* Runs after `processConditionals`, so a `@status` in a branch that lost is
|
|
101
|
+
* already gone from the template and never fires. That ordering is the feature:
|
|
102
|
+
* it lets the status live beside the markup that justifies it,
|
|
103
|
+
*
|
|
104
|
+
* @if (!feature)
|
|
105
|
+
* @status(404)
|
|
106
|
+
* <h1>No feature by that name.</h1>
|
|
107
|
+
* @endif
|
|
108
|
+
*
|
|
109
|
+
* rather than being re-derived from a flag at the top of the server block.
|
|
110
|
+
*
|
|
111
|
+
* A literal is taken as written; anything else goes through `safeEvaluate`
|
|
112
|
+
* against the render context. An argument that evaluates to a non-status is
|
|
113
|
+
* ignored — see `isHttpStatus` — but *is* warned about, because unlike a
|
|
114
|
+
* runtime call this one was typed out in the template and a silent no-op there
|
|
115
|
+
* reads as the feature not existing.
|
|
116
|
+
*/
|
|
117
|
+
export declare function processStatusDirective(template: string, context: Record<string, any>, options?: {
|
|
118
|
+
filePath?: string;
|
|
119
|
+
buildMode?: string;
|
|
120
|
+
}): string;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { safeEvaluate } from "./safe-evaluator.js";
|
|
2
|
+
const MIN_HTTP_STATUS = 100, MAX_HTTP_STATUS = 599;
|
|
3
|
+
export const RESPONSE_STATUS_KEY = "__stxResponseStatus", RESPONSE_HEADERS_KEY = "__stxResponseHeaders";
|
|
4
|
+
export function isHttpStatus(value) {
|
|
5
|
+
return typeof value === "number" && Number.isInteger(value) && value >= MIN_HTTP_STATUS && value <= MAX_HTTP_STATUS;
|
|
6
|
+
}
|
|
7
|
+
export function extractPageResponseStatus(source) {
|
|
8
|
+
for (const call of source.matchAll(/\bdefinePageMeta\s*\(\s*\{([\s\S]*?)\}\s*\)/g)) {
|
|
9
|
+
const match = call[1].match(/(?:^|,)\s*status\s*:\s*(\d{3})(?=\s*(?:,|$))/);
|
|
10
|
+
if (!match)
|
|
11
|
+
continue;
|
|
12
|
+
const status = Number(match[1]);
|
|
13
|
+
if (isHttpStatus(status))
|
|
14
|
+
return status;
|
|
15
|
+
}
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
export function recordResponseStatus(context, status) {
|
|
19
|
+
if (!context || typeof context !== "object")
|
|
20
|
+
return !1;
|
|
21
|
+
const code = typeof status === "string" && /^\d+$/.test(status.trim()) ? Number(status.trim()) : status;
|
|
22
|
+
if (!isHttpStatus(code))
|
|
23
|
+
return !1;
|
|
24
|
+
context[RESPONSE_STATUS_KEY] = code;
|
|
25
|
+
return !0;
|
|
26
|
+
}
|
|
27
|
+
export function recordResponseHeader(context, name, value) {
|
|
28
|
+
if (!context || typeof context !== "object")
|
|
29
|
+
return;
|
|
30
|
+
const header = String(name ?? "").trim();
|
|
31
|
+
if (!header)
|
|
32
|
+
return;
|
|
33
|
+
context[RESPONSE_HEADERS_KEY] = { ...context[RESPONSE_HEADERS_KEY], [header]: String(value) };
|
|
34
|
+
}
|
|
35
|
+
export function readResponseStatus(context) {
|
|
36
|
+
const status = context?.[RESPONSE_STATUS_KEY];
|
|
37
|
+
return isHttpStatus(status) ? status : void 0;
|
|
38
|
+
}
|
|
39
|
+
export function readResponseHeaders(context) {
|
|
40
|
+
const headers = context?.[RESPONSE_HEADERS_KEY];
|
|
41
|
+
if (!headers || typeof headers !== "object")
|
|
42
|
+
return;
|
|
43
|
+
const entries = Object.entries(headers).map(([k, v]) => [k, String(v)]);
|
|
44
|
+
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
|
|
45
|
+
}
|
|
46
|
+
export function syncRecordedResponse(from, to) {
|
|
47
|
+
if (!from || !to || from === to || typeof to !== "object")
|
|
48
|
+
return;
|
|
49
|
+
const status = readResponseStatus(from);
|
|
50
|
+
if (status !== void 0)
|
|
51
|
+
to[RESPONSE_STATUS_KEY] = status;
|
|
52
|
+
const headers = readResponseHeaders(from);
|
|
53
|
+
if (headers)
|
|
54
|
+
to[RESPONSE_HEADERS_KEY] = { ...to[RESPONSE_HEADERS_KEY], ...headers };
|
|
55
|
+
}
|
|
56
|
+
export function responseBindings(context) {
|
|
57
|
+
return {
|
|
58
|
+
setResponseStatus: (status) => {
|
|
59
|
+
recordResponseStatus(context, status);
|
|
60
|
+
},
|
|
61
|
+
notFound: (status = 404) => {
|
|
62
|
+
const code = isHttpStatus(status) && status >= 400 ? status : 404;
|
|
63
|
+
recordResponseStatus(context, code);
|
|
64
|
+
},
|
|
65
|
+
setResponseHeader: (name, value) => {
|
|
66
|
+
recordResponseHeader(context, name, value);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export function processStatusDirective(template, context, options = {}) {
|
|
71
|
+
if (!template.includes("@status"))
|
|
72
|
+
return template;
|
|
73
|
+
const { filePath, buildMode } = options, precompiling = buildMode === "compile";
|
|
74
|
+
let result = "", cursor = 0;
|
|
75
|
+
const pattern = /@status\s*\(/g;
|
|
76
|
+
let match;
|
|
77
|
+
while ((match = pattern.exec(template)) !== null) {
|
|
78
|
+
const close = closingParen(template, match.index + match[0].length - 1);
|
|
79
|
+
if (close < 0)
|
|
80
|
+
break;
|
|
81
|
+
const arg = template.slice(match.index + match[0].length, close).trim(), value = /^\d+$/.test(arg) ? Number(arg) : safeEvaluate(arg, context), where = filePath ? ` in ${filePath}` : "";
|
|
82
|
+
if (precompiling)
|
|
83
|
+
console.warn(`[stx] @status(${arg})${where} is skipped when precompiling: the build has no request, so the branch it sits in is not the one a visitor will get. Call notFound() or setResponseStatus(${arg}) from <script server> instead \u2014 that runs per request.`);
|
|
84
|
+
else if (!recordResponseStatus(context, value))
|
|
85
|
+
console.warn(`[stx] @status(${arg})${where} is not an HTTP status (100-599) \u2014 ignoring it.`);
|
|
86
|
+
result += template.slice(cursor, match.index);
|
|
87
|
+
cursor = close + 1 + (template.slice(close + 1).match(/^[^\S\n]*\n?/)?.[0].length ?? 0);
|
|
88
|
+
pattern.lastIndex = cursor;
|
|
89
|
+
}
|
|
90
|
+
return cursor === 0 ? template : result + template.slice(cursor);
|
|
91
|
+
}
|
|
92
|
+
function closingParen(source, open) {
|
|
93
|
+
let depth = 1, quote = null, escaped = !1;
|
|
94
|
+
for (let i = open + 1;i < source.length; i++) {
|
|
95
|
+
const char = source[i];
|
|
96
|
+
if (escaped) {
|
|
97
|
+
escaped = !1;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (quote) {
|
|
101
|
+
if (char === "\\")
|
|
102
|
+
escaped = !0;
|
|
103
|
+
else if (char === quote)
|
|
104
|
+
quote = null;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (char === '"' || char === "'" || char === "`") {
|
|
108
|
+
quote = char;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (char === "(")
|
|
112
|
+
depth++;
|
|
113
|
+
else if (char === ")" && --depth === 0)
|
|
114
|
+
return i;
|
|
115
|
+
}
|
|
116
|
+
return -1;
|
|
117
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directive Parser
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for parsing directives with proper handling of
|
|
5
|
+
* nested structures, balanced tags, and expressions.
|
|
6
|
+
*
|
|
7
|
+
* @module parser/directive-parser
|
|
8
|
+
*/
|
|
9
|
+
export interface DirectiveMatch {
|
|
10
|
+
fullMatch: string;
|
|
11
|
+
name: string;
|
|
12
|
+
params: string;
|
|
13
|
+
content: string;
|
|
14
|
+
start: number;
|
|
15
|
+
end: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ConditionalBranch {
|
|
18
|
+
type: 'if' | 'elseif' | 'else';
|
|
19
|
+
condition?: string;
|
|
20
|
+
content: string;
|
|
21
|
+
start: number;
|
|
22
|
+
end: number;
|
|
23
|
+
}
|
|
24
|
+
export interface ParsedConditional {
|
|
25
|
+
fullMatch: string;
|
|
26
|
+
branches: ConditionalBranch[];
|
|
27
|
+
start: number;
|
|
28
|
+
end: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extract a parenthesized expression from a string, handling nested parens
|
|
32
|
+
* e.g., "func(a, fn(b, c))" -> { expression: "func(a, fn(b, c))", endPos: 17 }
|
|
33
|
+
*
|
|
34
|
+
* Returns `null` for the legacy callers; use `extractParenthesizedExpressionDetailed`
|
|
35
|
+
* when you need to know WHY extraction failed (helpful for directive error
|
|
36
|
+
* messages pointing at the source location of a malformed `@if(`).
|
|
37
|
+
*/
|
|
38
|
+
export declare function extractParenthesizedExpression(source: string, startPos: number): {
|
|
39
|
+
expression: string;
|
|
40
|
+
endPos: number;
|
|
41
|
+
} | null;
|
|
42
|
+
/**
|
|
43
|
+
* Structured variant of `extractParenthesizedExpression` — returns either a
|
|
44
|
+
* successful parse or a `{ ok: false, reason, pos }` record explaining the
|
|
45
|
+
* failure. Use this when emitting user-facing errors ("missing opening
|
|
46
|
+
* paren", "unclosed paren at column N", etc.).
|
|
47
|
+
*/
|
|
48
|
+
export type ExtractParenResult = {
|
|
49
|
+
ok: true;
|
|
50
|
+
expression: string;
|
|
51
|
+
endPos: number;
|
|
52
|
+
} | {
|
|
53
|
+
ok: false;
|
|
54
|
+
reason: 'missing-open-paren' | 'unclosed-paren';
|
|
55
|
+
pos: number;
|
|
56
|
+
};
|
|
57
|
+
export declare function extractParenthesizedExpressionDetailed(source: string, startPos: number): ExtractParenResult;
|
|
58
|
+
/**
|
|
59
|
+
* Whether `pos` in `source` falls INSIDE an HTML tag (`<...>`) — i.e. the nearest
|
|
60
|
+
* angle bracket looking backwards is an unclosed `<`.
|
|
61
|
+
*
|
|
62
|
+
* Directive tokens (`@if`/`@elseif`/`@else`/`@endif`) only ever occur in text
|
|
63
|
+
* content, never inside a tag. The reactive-signal pass, however, rewrites a
|
|
64
|
+
* NESTED reactive conditional into HTML-attribute markers BEFORE this server pass
|
|
65
|
+
* runs — e.g. `@if (isPro())A@else B@endif` becomes
|
|
66
|
+
* `<template @if="isPro()">A</template><template @else>B</template>`. Without this
|
|
67
|
+
* guard the branch scanner matches that `@else` ATTRIBUTE as the enclosing server
|
|
68
|
+
* `@if`'s top-level `@else`, mismatching branch/`@endif` boundaries and corrupting
|
|
69
|
+
* the rest of the template. Skipping tag-interior tokens keeps the two passes from
|
|
70
|
+
* disagreeing on what is a directive.
|
|
71
|
+
*/
|
|
72
|
+
export declare function isInsideTag(source: string, pos: number): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Find the matching end tag for a directive, handling nested instances
|
|
75
|
+
*
|
|
76
|
+
* @param source - The source string to search in
|
|
77
|
+
* @param startName - The opening directive name (e.g., "if", "foreach")
|
|
78
|
+
* @param endName - The closing directive name (e.g., "endif", "endforeach")
|
|
79
|
+
* @param startPos - Position to start searching from (after the opening directive)
|
|
80
|
+
* @returns The position of the matching end tag, or -1 if not found
|
|
81
|
+
*/
|
|
82
|
+
export declare function findMatchingEndTag(source: string, startName: string, endName: string, startPos: number): number;
|
|
83
|
+
/**
|
|
84
|
+
* Parse a complete conditional block (@if, @elseif, @else, @endif)
|
|
85
|
+
*
|
|
86
|
+
* @param source - The source string
|
|
87
|
+
* @param startPos - Position where @if starts
|
|
88
|
+
* @returns Parsed conditional with all branches, or null if malformed
|
|
89
|
+
*/
|
|
90
|
+
export declare function parseConditionalBlock(source: string, startPos: number): ParsedConditional | null;
|
|
91
|
+
/**
|
|
92
|
+
* Find all @if blocks in source (non-nested, outermost only)
|
|
93
|
+
*/
|
|
94
|
+
export declare function findIfBlocks(source: string): ParsedConditional[];
|
|
95
|
+
/**
|
|
96
|
+
* Find a directive with its content
|
|
97
|
+
*
|
|
98
|
+
* @param source - Source string
|
|
99
|
+
* @param directiveName - Name without @ (e.g., "foreach")
|
|
100
|
+
* @param endDirectiveName - End name without @ (e.g., "endforeach")
|
|
101
|
+
* @returns All matches found
|
|
102
|
+
*/
|
|
103
|
+
export declare function findDirectiveBlocks(source: string, directiveName: string, endDirectiveName: string): DirectiveMatch[];
|
|
104
|
+
/**
|
|
105
|
+
* Parse @switch block with proper handling of nested switches
|
|
106
|
+
*/
|
|
107
|
+
export interface SwitchCase {
|
|
108
|
+
type: 'case' | 'default';
|
|
109
|
+
value?: string;
|
|
110
|
+
content: string;
|
|
111
|
+
}
|
|
112
|
+
export interface ParsedSwitch {
|
|
113
|
+
fullMatch: string;
|
|
114
|
+
expression: string;
|
|
115
|
+
cases: SwitchCase[];
|
|
116
|
+
start: number;
|
|
117
|
+
end: number;
|
|
118
|
+
}
|
|
119
|
+
export declare function parseSwitchBlock(source: string, startPos: number): ParsedSwitch | null;
|