@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,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin System for stx
|
|
3
|
+
*
|
|
4
|
+
* Provides a robust plugin architecture with lifecycle hooks for extending
|
|
5
|
+
* the template processing pipeline.
|
|
6
|
+
*
|
|
7
|
+
* ## Plugin Lifecycle
|
|
8
|
+
*
|
|
9
|
+
* Plugins can hook into various stages of template processing:
|
|
10
|
+
*
|
|
11
|
+
* 1. **beforeProcess** - Before any directive processing begins
|
|
12
|
+
* 2. **afterParse** - After template is parsed but before directives run
|
|
13
|
+
* 3. **beforeDirective** - Before each directive type is processed
|
|
14
|
+
* 4. **afterDirective** - After each directive type is processed
|
|
15
|
+
* 5. **beforeRender** - Before final output is generated
|
|
16
|
+
* 6. **afterRender** - After final output is generated
|
|
17
|
+
* 7. **onError** - When an error occurs during processing
|
|
18
|
+
*
|
|
19
|
+
* ## Example Plugin
|
|
20
|
+
*
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const myPlugin: StxPlugin = {
|
|
23
|
+
* name: 'my-plugin',
|
|
24
|
+
* version: '1.0.0',
|
|
25
|
+
*
|
|
26
|
+
* beforeProcess({ template, context }) {
|
|
27
|
+
* // Add global variables
|
|
28
|
+
* context.myPluginData = { initialized: true }
|
|
29
|
+
* return { template, context }
|
|
30
|
+
* },
|
|
31
|
+
*
|
|
32
|
+
* registerDirectives() {
|
|
33
|
+
* return [{
|
|
34
|
+
* name: 'myDirective',
|
|
35
|
+
* handler: (content, params) => content.toUpperCase(),
|
|
36
|
+
* hasEndTag: true
|
|
37
|
+
* }]
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @module plugin-system
|
|
43
|
+
*/
|
|
44
|
+
import type { CustomDirective, StxOptions } from './types';
|
|
45
|
+
/**
|
|
46
|
+
* Context passed to lifecycle hooks
|
|
47
|
+
*/
|
|
48
|
+
export interface PluginContext {
|
|
49
|
+
/** Current template content */
|
|
50
|
+
template: string;
|
|
51
|
+
/** Template context/variables */
|
|
52
|
+
context: Record<string, unknown>;
|
|
53
|
+
/** Source file path */
|
|
54
|
+
filePath: string;
|
|
55
|
+
/** Stx options */
|
|
56
|
+
options: StxOptions;
|
|
57
|
+
/** Dependencies tracked during processing */
|
|
58
|
+
dependencies: Set<string>;
|
|
59
|
+
/** Metadata for plugin communication */
|
|
60
|
+
metadata: Record<string, unknown>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Result from a lifecycle hook
|
|
64
|
+
*/
|
|
65
|
+
export interface PluginHookResult {
|
|
66
|
+
/** Modified template (optional) */
|
|
67
|
+
template?: string;
|
|
68
|
+
/** Modified context (optional) */
|
|
69
|
+
context?: Record<string, unknown>;
|
|
70
|
+
/** Whether to skip further processing (optional) */
|
|
71
|
+
skip?: boolean;
|
|
72
|
+
/** Additional metadata to pass along */
|
|
73
|
+
metadata?: Record<string, unknown>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Error context passed to onError hook
|
|
77
|
+
*/
|
|
78
|
+
export interface PluginErrorContext extends PluginContext {
|
|
79
|
+
/** The error that occurred */
|
|
80
|
+
error: Error;
|
|
81
|
+
/** Phase where error occurred */
|
|
82
|
+
phase: string;
|
|
83
|
+
/** Directive being processed (if applicable) */
|
|
84
|
+
directive?: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Directive type identifier for beforeDirective/afterDirective hooks
|
|
88
|
+
*/
|
|
89
|
+
export type DirectivePhase = 'comments' | 'escaped' | 'stacks' | 'layouts' | 'includes' | 'js' | 'ts' | 'custom' | 'components' | 'animation' | 'routes' | 'auth' | 'csrf' | 'method' | 'loops' | 'conditionals' | 'forms' | 'markdown' | 'i18n' | 'a11y' | 'seo' | 'expressions';
|
|
90
|
+
/**
|
|
91
|
+
* Plugin definition interface
|
|
92
|
+
*/
|
|
93
|
+
export interface StxPlugin {
|
|
94
|
+
/** Unique plugin name */
|
|
95
|
+
name: string;
|
|
96
|
+
/** Plugin version (semver) */
|
|
97
|
+
version?: string;
|
|
98
|
+
/** Plugin description */
|
|
99
|
+
description?: string;
|
|
100
|
+
/** Plugin dependencies (other plugin names) */
|
|
101
|
+
dependencies?: string[];
|
|
102
|
+
/** Order priority (lower runs first, default: 100) */
|
|
103
|
+
priority?: number;
|
|
104
|
+
/**
|
|
105
|
+
* Called before any template processing begins.
|
|
106
|
+
* Use this to initialize plugin state or modify the initial template.
|
|
107
|
+
*/
|
|
108
|
+
beforeProcess?: (ctx: PluginContext) => PluginHookResult | Promise<PluginHookResult> | void;
|
|
109
|
+
/**
|
|
110
|
+
* Called after the template is parsed but before directives are processed.
|
|
111
|
+
* Useful for template analysis or pre-processing.
|
|
112
|
+
*/
|
|
113
|
+
afterParse?: (ctx: PluginContext) => PluginHookResult | Promise<PluginHookResult> | void;
|
|
114
|
+
/**
|
|
115
|
+
* Called before a specific directive type is processed.
|
|
116
|
+
* @param phase - The directive phase being processed
|
|
117
|
+
* @param ctx - Plugin context
|
|
118
|
+
*/
|
|
119
|
+
beforeDirective?: (phase: DirectivePhase, ctx: PluginContext) => PluginHookResult | Promise<PluginHookResult> | void;
|
|
120
|
+
/**
|
|
121
|
+
* Called after a specific directive type is processed.
|
|
122
|
+
* @param phase - The directive phase that was processed
|
|
123
|
+
* @param ctx - Plugin context
|
|
124
|
+
*/
|
|
125
|
+
afterDirective?: (phase: DirectivePhase, ctx: PluginContext) => PluginHookResult | Promise<PluginHookResult> | void;
|
|
126
|
+
/**
|
|
127
|
+
* Called before the final render output is generated.
|
|
128
|
+
*/
|
|
129
|
+
beforeRender?: (ctx: PluginContext) => PluginHookResult | Promise<PluginHookResult> | void;
|
|
130
|
+
/**
|
|
131
|
+
* Called after the final render output is generated.
|
|
132
|
+
*/
|
|
133
|
+
afterRender?: (ctx: PluginContext) => PluginHookResult | Promise<PluginHookResult> | void;
|
|
134
|
+
/**
|
|
135
|
+
* Called when an error occurs during processing.
|
|
136
|
+
* Can return a recovery template or rethrow the error.
|
|
137
|
+
*/
|
|
138
|
+
onError?: (ctx: PluginErrorContext) => PluginHookResult | Promise<PluginHookResult> | void;
|
|
139
|
+
/**
|
|
140
|
+
* Register custom directives provided by this plugin.
|
|
141
|
+
* Called during plugin initialization.
|
|
142
|
+
*/
|
|
143
|
+
registerDirectives?: () => CustomDirective[];
|
|
144
|
+
/**
|
|
145
|
+
* Register custom expression filters.
|
|
146
|
+
* Called during plugin initialization.
|
|
147
|
+
*/
|
|
148
|
+
registerFilters?: () => Record<string, (value: unknown, ...args: unknown[]) => unknown>;
|
|
149
|
+
/**
|
|
150
|
+
* Called when the plugin is registered.
|
|
151
|
+
* Use for one-time initialization.
|
|
152
|
+
*/
|
|
153
|
+
onRegister?: (options: StxOptions) => void | Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Called when the plugin is unregistered.
|
|
156
|
+
* Use for cleanup.
|
|
157
|
+
*/
|
|
158
|
+
onUnregister?: () => void | Promise<void>;
|
|
159
|
+
/** Directory of .stx components — auto-registered, available in all templates */
|
|
160
|
+
/**
|
|
161
|
+
* Component directory, or directories.
|
|
162
|
+
*
|
|
163
|
+
* An array lets one package register several roots — @stacksjs/components
|
|
164
|
+
* ships src/ui and src/components as siblings (#1823).
|
|
165
|
+
*/
|
|
166
|
+
components?: string | string[];
|
|
167
|
+
/** Directory of composable functions — importable via @/functions/ */
|
|
168
|
+
functions?: string;
|
|
169
|
+
/** Directory of store definitions — auto-registered */
|
|
170
|
+
stores?: string;
|
|
171
|
+
/** Directory of page templates — merged into file-based routing */
|
|
172
|
+
pages?: string;
|
|
173
|
+
/** Directory of route middleware */
|
|
174
|
+
middleware?: string;
|
|
175
|
+
/** Setup function called when plugin is loaded — receives options and stx context */
|
|
176
|
+
setup?: (options: Record<string, any>, stx: PluginSetupContext) => void | Promise<void>;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Context passed to plugin setup() function
|
|
180
|
+
*/
|
|
181
|
+
export interface PluginSetupContext {
|
|
182
|
+
/** Register a custom directive */
|
|
183
|
+
addDirective: (directive: CustomDirective) => void;
|
|
184
|
+
/** Register an API route handler */
|
|
185
|
+
addRoute: (path: string, handler: (req: Request) => Response | Promise<Response>) => void;
|
|
186
|
+
/** Register route middleware */
|
|
187
|
+
addMiddleware: (middleware: any) => void;
|
|
188
|
+
/** The resolved plugin directory path */
|
|
189
|
+
pluginDir: string;
|
|
190
|
+
/** The stx config */
|
|
191
|
+
config: StxOptions;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Define an stx plugin with type safety.
|
|
195
|
+
*
|
|
196
|
+
* Usage:
|
|
197
|
+
* ```typescript
|
|
198
|
+
* import { definePlugin } from 'stx'
|
|
199
|
+
*
|
|
200
|
+
* export default definePlugin({
|
|
201
|
+
* name: 'my-plugin',
|
|
202
|
+
* components: './components',
|
|
203
|
+
* functions: './functions',
|
|
204
|
+
* setup(options, stx) {
|
|
205
|
+
* stx.addRoute('/api/custom', handler)
|
|
206
|
+
* },
|
|
207
|
+
* })
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
export declare function definePlugin(config: StxPlugin): StxPlugin;
|
|
211
|
+
/**
|
|
212
|
+
* Plugin manager that handles registration, lifecycle, and execution
|
|
213
|
+
*/
|
|
214
|
+
export declare class PluginManager {
|
|
215
|
+
private plugins;
|
|
216
|
+
private sortedPlugins;
|
|
217
|
+
private initialized;
|
|
218
|
+
/**
|
|
219
|
+
* Register a plugin
|
|
220
|
+
*/
|
|
221
|
+
register(plugin: StxPlugin, options: StxOptions): Promise<void>;
|
|
222
|
+
/**
|
|
223
|
+
* Unregister a plugin
|
|
224
|
+
*/
|
|
225
|
+
unregister(name: string): Promise<boolean>;
|
|
226
|
+
/**
|
|
227
|
+
* Get a registered plugin by name
|
|
228
|
+
*/
|
|
229
|
+
get(name: string): StxPlugin | undefined;
|
|
230
|
+
/**
|
|
231
|
+
* Check if a plugin is registered
|
|
232
|
+
*/
|
|
233
|
+
has(name: string): boolean;
|
|
234
|
+
/**
|
|
235
|
+
* Get all registered plugins (sorted by priority)
|
|
236
|
+
*/
|
|
237
|
+
getAll(): StxPlugin[];
|
|
238
|
+
/**
|
|
239
|
+
* Get all custom directives from all plugins
|
|
240
|
+
*/
|
|
241
|
+
getAllDirectives(): CustomDirective[];
|
|
242
|
+
/**
|
|
243
|
+
* Get all filters from all plugins
|
|
244
|
+
*/
|
|
245
|
+
getAllFilters(): Record<string, (value: unknown, ...args: unknown[]) => unknown>;
|
|
246
|
+
/**
|
|
247
|
+
* Run beforeProcess hooks on all plugins
|
|
248
|
+
*/
|
|
249
|
+
runBeforeProcess(ctx: PluginContext): Promise<PluginContext>;
|
|
250
|
+
/**
|
|
251
|
+
* Run afterParse hooks on all plugins
|
|
252
|
+
*/
|
|
253
|
+
runAfterParse(ctx: PluginContext): Promise<PluginContext>;
|
|
254
|
+
/**
|
|
255
|
+
* Run beforeDirective hooks on all plugins
|
|
256
|
+
*/
|
|
257
|
+
runBeforeDirective(phase: DirectivePhase, ctx: PluginContext): Promise<PluginContext>;
|
|
258
|
+
/**
|
|
259
|
+
* Run afterDirective hooks on all plugins
|
|
260
|
+
*/
|
|
261
|
+
runAfterDirective(phase: DirectivePhase, ctx: PluginContext): Promise<PluginContext>;
|
|
262
|
+
/**
|
|
263
|
+
* Run beforeRender hooks on all plugins
|
|
264
|
+
*/
|
|
265
|
+
runBeforeRender(ctx: PluginContext): Promise<PluginContext>;
|
|
266
|
+
/**
|
|
267
|
+
* Run afterRender hooks on all plugins
|
|
268
|
+
*/
|
|
269
|
+
runAfterRender(ctx: PluginContext): Promise<PluginContext>;
|
|
270
|
+
/**
|
|
271
|
+
* Run onError hooks on all plugins
|
|
272
|
+
*/
|
|
273
|
+
runOnError(ctx: PluginErrorContext): Promise<PluginContext | null>;
|
|
274
|
+
private sortPlugins;
|
|
275
|
+
private runHooks;
|
|
276
|
+
private runDirectiveHooks;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Global plugin manager instance
|
|
280
|
+
*/
|
|
281
|
+
export declare const pluginManager: PluginManager;
|
|
282
|
+
/**
|
|
283
|
+
* Create a simple directive plugin
|
|
284
|
+
*/
|
|
285
|
+
export declare function createDirectivePlugin(name: string, directives: CustomDirective[], options?: Partial<Omit<StxPlugin, 'name' | 'registerDirectives'>>): StxPlugin;
|
|
286
|
+
/**
|
|
287
|
+
* Create a simple filter plugin
|
|
288
|
+
*/
|
|
289
|
+
export declare function createFilterPlugin(name: string, filters: Record<string, (value: unknown, ...args: unknown[]) => unknown>, options?: Partial<Omit<StxPlugin, 'name' | 'registerFilters'>>): StxPlugin;
|
|
290
|
+
/**
|
|
291
|
+
* Debug plugin that logs all lifecycle events
|
|
292
|
+
*/
|
|
293
|
+
export declare const debugPlugin: StxPlugin;
|
|
294
|
+
/**
|
|
295
|
+
* Timing plugin that measures processing time
|
|
296
|
+
*/
|
|
297
|
+
export declare const timingPlugin: StxPlugin;
|
|
298
|
+
/**
|
|
299
|
+
* Variables plugin that adds common variables to context
|
|
300
|
+
*/
|
|
301
|
+
export declare function createVariablesPlugin(variables: Record<string, unknown>): StxPlugin;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
export function definePlugin(config) {
|
|
2
|
+
return config;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
export class PluginManager {
|
|
6
|
+
plugins = new Map;
|
|
7
|
+
sortedPlugins = [];
|
|
8
|
+
initialized = !1;
|
|
9
|
+
async register(plugin, options) {
|
|
10
|
+
if (this.plugins.has(plugin.name))
|
|
11
|
+
throw Error(`Plugin "${plugin.name}" is already registered`);
|
|
12
|
+
if (plugin.dependencies) {
|
|
13
|
+
for (const dep of plugin.dependencies)
|
|
14
|
+
if (!this.plugins.has(dep))
|
|
15
|
+
throw Error(`Plugin "${plugin.name}" depends on "${dep}" which is not registered`);
|
|
16
|
+
}
|
|
17
|
+
this.plugins.set(plugin.name, plugin);
|
|
18
|
+
if (plugin.onRegister)
|
|
19
|
+
await plugin.onRegister(options);
|
|
20
|
+
this.sortPlugins();
|
|
21
|
+
}
|
|
22
|
+
async unregister(name) {
|
|
23
|
+
const plugin = this.plugins.get(name);
|
|
24
|
+
if (!plugin)
|
|
25
|
+
return !1;
|
|
26
|
+
for (const [otherName, otherPlugin] of this.plugins)
|
|
27
|
+
if (otherPlugin.dependencies?.includes(name))
|
|
28
|
+
throw Error(`Cannot unregister "${name}" because "${otherName}" depends on it`);
|
|
29
|
+
if (plugin.onUnregister)
|
|
30
|
+
await plugin.onUnregister();
|
|
31
|
+
this.plugins.delete(name);
|
|
32
|
+
this.sortPlugins();
|
|
33
|
+
return !0;
|
|
34
|
+
}
|
|
35
|
+
get(name) {
|
|
36
|
+
return this.plugins.get(name);
|
|
37
|
+
}
|
|
38
|
+
has(name) {
|
|
39
|
+
return this.plugins.has(name);
|
|
40
|
+
}
|
|
41
|
+
getAll() {
|
|
42
|
+
return [...this.sortedPlugins];
|
|
43
|
+
}
|
|
44
|
+
getAllDirectives() {
|
|
45
|
+
const directives = [];
|
|
46
|
+
for (const plugin of this.sortedPlugins)
|
|
47
|
+
if (plugin.registerDirectives)
|
|
48
|
+
directives.push(...plugin.registerDirectives());
|
|
49
|
+
return directives;
|
|
50
|
+
}
|
|
51
|
+
getAllFilters() {
|
|
52
|
+
const filters = {};
|
|
53
|
+
for (const plugin of this.sortedPlugins)
|
|
54
|
+
if (plugin.registerFilters)
|
|
55
|
+
Object.assign(filters, plugin.registerFilters());
|
|
56
|
+
return filters;
|
|
57
|
+
}
|
|
58
|
+
async runBeforeProcess(ctx) {
|
|
59
|
+
return this.runHooks("beforeProcess", ctx);
|
|
60
|
+
}
|
|
61
|
+
async runAfterParse(ctx) {
|
|
62
|
+
return this.runHooks("afterParse", ctx);
|
|
63
|
+
}
|
|
64
|
+
async runBeforeDirective(phase, ctx) {
|
|
65
|
+
return this.runDirectiveHooks("beforeDirective", phase, ctx);
|
|
66
|
+
}
|
|
67
|
+
async runAfterDirective(phase, ctx) {
|
|
68
|
+
return this.runDirectiveHooks("afterDirective", phase, ctx);
|
|
69
|
+
}
|
|
70
|
+
async runBeforeRender(ctx) {
|
|
71
|
+
return this.runHooks("beforeRender", ctx);
|
|
72
|
+
}
|
|
73
|
+
async runAfterRender(ctx) {
|
|
74
|
+
return this.runHooks("afterRender", ctx);
|
|
75
|
+
}
|
|
76
|
+
async runOnError(ctx) {
|
|
77
|
+
for (const plugin of this.sortedPlugins)
|
|
78
|
+
if (plugin.onError)
|
|
79
|
+
try {
|
|
80
|
+
const result = await plugin.onError(ctx);
|
|
81
|
+
if (result) {
|
|
82
|
+
if (result.template !== void 0)
|
|
83
|
+
ctx.template = result.template;
|
|
84
|
+
if (result.context)
|
|
85
|
+
ctx.context = { ...ctx.context, ...result.context };
|
|
86
|
+
if (result.metadata)
|
|
87
|
+
ctx.metadata = { ...ctx.metadata, ...result.metadata };
|
|
88
|
+
if (result.skip)
|
|
89
|
+
return ctx;
|
|
90
|
+
}
|
|
91
|
+
} catch (hookError) {
|
|
92
|
+
console.error(`Error in plugin "${plugin.name}" onError hook:`, hookError);
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
sortPlugins() {
|
|
97
|
+
this.sortedPlugins = Array.from(this.plugins.values()).sort((a, b) => (a.priority ?? 100) - (b.priority ?? 100));
|
|
98
|
+
}
|
|
99
|
+
async runHooks(hookName, ctx) {
|
|
100
|
+
const currentCtx = { ...ctx };
|
|
101
|
+
for (const plugin of this.sortedPlugins) {
|
|
102
|
+
const hook = plugin[hookName];
|
|
103
|
+
if (hook)
|
|
104
|
+
try {
|
|
105
|
+
const result = await hook(currentCtx);
|
|
106
|
+
if (result) {
|
|
107
|
+
if (result.template !== void 0)
|
|
108
|
+
currentCtx.template = result.template;
|
|
109
|
+
if (result.context)
|
|
110
|
+
currentCtx.context = { ...currentCtx.context, ...result.context };
|
|
111
|
+
if (result.metadata)
|
|
112
|
+
currentCtx.metadata = { ...currentCtx.metadata, ...result.metadata };
|
|
113
|
+
if (result.skip)
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
} catch (error) {
|
|
117
|
+
console.error(`Error in plugin "${plugin.name}" ${hookName} hook:`, error);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return currentCtx;
|
|
121
|
+
}
|
|
122
|
+
async runDirectiveHooks(hookName, phase, ctx) {
|
|
123
|
+
const currentCtx = { ...ctx };
|
|
124
|
+
for (const plugin of this.sortedPlugins) {
|
|
125
|
+
const hook = plugin[hookName];
|
|
126
|
+
if (hook)
|
|
127
|
+
try {
|
|
128
|
+
const result = await hook(phase, currentCtx);
|
|
129
|
+
if (result) {
|
|
130
|
+
if (result.template !== void 0)
|
|
131
|
+
currentCtx.template = result.template;
|
|
132
|
+
if (result.context)
|
|
133
|
+
currentCtx.context = { ...currentCtx.context, ...result.context };
|
|
134
|
+
if (result.metadata)
|
|
135
|
+
currentCtx.metadata = { ...currentCtx.metadata, ...result.metadata };
|
|
136
|
+
if (result.skip)
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
} catch (error) {
|
|
140
|
+
console.error(`Error in plugin "${plugin.name}" ${hookName} hook:`, error);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return currentCtx;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export const pluginManager = new PluginManager;
|
|
147
|
+
export function createDirectivePlugin(name, directives, options = {}) {
|
|
148
|
+
return {
|
|
149
|
+
name,
|
|
150
|
+
...options,
|
|
151
|
+
registerDirectives: () => directives
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
export function createFilterPlugin(name, filters, options = {}) {
|
|
155
|
+
return {
|
|
156
|
+
name,
|
|
157
|
+
...options,
|
|
158
|
+
registerFilters: () => filters
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
export const debugPlugin = definePlugin({
|
|
162
|
+
name: "stx-debug",
|
|
163
|
+
version: "1.0.0",
|
|
164
|
+
description: "Logs all plugin lifecycle events for debugging",
|
|
165
|
+
priority: 0,
|
|
166
|
+
beforeProcess(ctx) {
|
|
167
|
+
console.log("[stx-debug] beforeProcess:", ctx.filePath);
|
|
168
|
+
},
|
|
169
|
+
afterParse(ctx) {
|
|
170
|
+
console.log("[stx-debug] afterParse:", ctx.template.length, "chars");
|
|
171
|
+
},
|
|
172
|
+
beforeDirective(phase, _ctx) {
|
|
173
|
+
console.log("[stx-debug] beforeDirective:", phase);
|
|
174
|
+
},
|
|
175
|
+
afterDirective(phase, _ctx) {
|
|
176
|
+
console.log("[stx-debug] afterDirective:", phase);
|
|
177
|
+
},
|
|
178
|
+
beforeRender(_ctx) {
|
|
179
|
+
console.log("[stx-debug] beforeRender");
|
|
180
|
+
},
|
|
181
|
+
afterRender(ctx) {
|
|
182
|
+
console.log("[stx-debug] afterRender:", ctx.template.length, "chars");
|
|
183
|
+
},
|
|
184
|
+
onError(ctx) {
|
|
185
|
+
console.error("[stx-debug] onError:", ctx.error.message, "in phase:", ctx.phase);
|
|
186
|
+
}
|
|
187
|
+
}), timingPlugin = definePlugin({
|
|
188
|
+
name: "stx-timing",
|
|
189
|
+
version: "1.0.0",
|
|
190
|
+
description: "Measures template processing time",
|
|
191
|
+
priority: 1,
|
|
192
|
+
beforeProcess(ctx) {
|
|
193
|
+
ctx.metadata.startTime = performance.now();
|
|
194
|
+
},
|
|
195
|
+
afterRender(ctx) {
|
|
196
|
+
const startTime = ctx.metadata.startTime;
|
|
197
|
+
if (startTime) {
|
|
198
|
+
const duration = performance.now() - startTime;
|
|
199
|
+
console.log(`[stx-timing] Processing took ${duration.toFixed(2)}ms`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
export function createVariablesPlugin(variables) {
|
|
204
|
+
return definePlugin({
|
|
205
|
+
name: "stx-variables",
|
|
206
|
+
version: "1.0.0",
|
|
207
|
+
description: "Adds predefined variables to template context",
|
|
208
|
+
beforeProcess(ctx) {
|
|
209
|
+
return {
|
|
210
|
+
context: { ...ctx.context, ...variables }
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
}
|
package/dist/plugin.d.ts
ADDED
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { buildWebComponents, cacheTemplate, checkCache, extractVariables, loadStxConfig, processDirectives } from "./index.js";
|
|
3
|
+
import { devHelpers, errorLogger, safeExecuteAsync, StxFileError, StxRuntimeError } from "./error-handling.js";
|
|
4
|
+
import { isDevelopment } from "./env.js";
|
|
5
|
+
import { escapeHtml } from "./expressions.js";
|
|
6
|
+
import { performanceMonitor } from "./performance-utils.js";
|
|
7
|
+
import { injectRouterScript } from "./process.js";
|
|
8
|
+
import { findSfcTemplateBlock } from "./sfc-template.js";
|
|
9
|
+
export const plugin = {
|
|
10
|
+
name: "bun-plugin-stx",
|
|
11
|
+
async setup(build) {
|
|
12
|
+
const options = {
|
|
13
|
+
...await loadStxConfig(),
|
|
14
|
+
...build.config?.stx
|
|
15
|
+
}, allDependencies = new Set, webComponentsPath = options.webComponents?.enabled ? `./${path.relative(path.dirname(build.config?.outdir || "dist"), options.webComponents.outputDir || "dist/web-components")}` : "/web-components", builtComponents = [];
|
|
16
|
+
if (options.webComponents?.enabled)
|
|
17
|
+
try {
|
|
18
|
+
const components = await buildWebComponents(options, allDependencies);
|
|
19
|
+
builtComponents.push(...components);
|
|
20
|
+
if (options.debug && components.length > 0)
|
|
21
|
+
console.log(`Successfully built ${components.length} web components`);
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.error("Failed to build web components:", error);
|
|
24
|
+
}
|
|
25
|
+
build.onLoad({ filter: /\.stx$/ }, async ({ path: filePath }) => {
|
|
26
|
+
try {
|
|
27
|
+
const dependencies = new Set;
|
|
28
|
+
if (options.cache && options.cachePath) {
|
|
29
|
+
const cachedOutput = await checkCache(filePath, options);
|
|
30
|
+
if (cachedOutput) {
|
|
31
|
+
if (options.debug)
|
|
32
|
+
console.log(`Using cached version of ${filePath}`);
|
|
33
|
+
return {
|
|
34
|
+
contents: cachedOutput,
|
|
35
|
+
loader: "html"
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const content = await safeExecuteAsync(() => Bun.file(filePath).text(), "", (error) => {
|
|
40
|
+
throw new StxFileError(`Failed to read stx file: ${filePath}`, filePath, void 0, void 0, `File read error: ${error.message}`);
|
|
41
|
+
});
|
|
42
|
+
if (!content)
|
|
43
|
+
throw new StxFileError(`stx file is empty: ${filePath}`, filePath);
|
|
44
|
+
const { scriptContent, templateContent, allScripts } = performanceMonitor.time("script-extraction", () => {
|
|
45
|
+
let workingContent = content;
|
|
46
|
+
const templateBlock = findSfcTemplateBlock(content);
|
|
47
|
+
if (templateBlock)
|
|
48
|
+
workingContent = templateBlock.content.trim();
|
|
49
|
+
const allScriptMatches = content.match(/<script\b[^>]*>[\s\S]*?<\/script>/gi) || [];
|
|
50
|
+
let serverScriptContent = "";
|
|
51
|
+
const clientScripts = [];
|
|
52
|
+
for (const scriptTag of allScriptMatches) {
|
|
53
|
+
const innerContent = scriptTag.match(/<script\b[^>]*>([\s\S]*?)<\/script>/i)?.[1] || "", attrsMatch = scriptTag.match(/<script\b([^>]*)>/i), attrs = attrsMatch ? attrsMatch[1] : "";
|
|
54
|
+
if (/\bserver\b/i.test(attrs))
|
|
55
|
+
serverScriptContent = innerContent;
|
|
56
|
+
else
|
|
57
|
+
clientScripts.push(scriptTag);
|
|
58
|
+
}
|
|
59
|
+
const templateContent = workingContent.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi, "");
|
|
60
|
+
return { scriptContent: serverScriptContent, templateContent, allScripts: clientScripts };
|
|
61
|
+
}), context = {
|
|
62
|
+
__filename: filePath,
|
|
63
|
+
__dirname: path.dirname(filePath),
|
|
64
|
+
__stx: {
|
|
65
|
+
webComponentsPath,
|
|
66
|
+
builtComponents
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
await safeExecuteAsync(() => extractVariables(scriptContent, context, filePath), void 0, (error) => {
|
|
70
|
+
const scriptError = new StxRuntimeError(`Script execution failed in ${filePath}: ${error.message}`, filePath, void 0, void 0, scriptContent.substring(0, 100));
|
|
71
|
+
errorLogger.log(scriptError, { filePath, scriptContent });
|
|
72
|
+
if (options.debug)
|
|
73
|
+
throw scriptError;
|
|
74
|
+
});
|
|
75
|
+
let output = await performanceMonitor.timeAsync("directive-processing", async () => {
|
|
76
|
+
return await processDirectives(templateContent, context, filePath, options, dependencies);
|
|
77
|
+
});
|
|
78
|
+
if (allScripts.length > 0) {
|
|
79
|
+
const { interpolateScriptsInTemplate } = await import("./expressions.js"), scriptsHtml = interpolateScriptsInTemplate(allScripts.join(`
|
|
80
|
+
`), context), bodyCloseIdx = output.search(/<\/body>/i);
|
|
81
|
+
if (bodyCloseIdx !== -1)
|
|
82
|
+
output = output.slice(0, bodyCloseIdx) + scriptsHtml + `
|
|
83
|
+
` + output.slice(bodyCloseIdx);
|
|
84
|
+
else
|
|
85
|
+
output += `
|
|
86
|
+
${scriptsHtml}`;
|
|
87
|
+
}
|
|
88
|
+
output = await injectRouterScript(output);
|
|
89
|
+
dependencies.forEach((dep) => allDependencies.add(dep));
|
|
90
|
+
if (options.cache && options.cachePath) {
|
|
91
|
+
await cacheTemplate(filePath, output, dependencies, options);
|
|
92
|
+
if (options.debug)
|
|
93
|
+
console.log(`Cached template ${filePath} with ${dependencies.size} dependencies`);
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
contents: output,
|
|
97
|
+
loader: "html"
|
|
98
|
+
};
|
|
99
|
+
} catch (error) {
|
|
100
|
+
const enhancedError = error instanceof Error ? error : new StxRuntimeError(`Plugin processing failed: ${String(error)}`, filePath);
|
|
101
|
+
errorLogger.log(enhancedError, { filePath, buildConfig: build.config });
|
|
102
|
+
devHelpers.logDetailedError(enhancedError, { filePath, plugin: "bun-plugin-stx" });
|
|
103
|
+
if (options.debug)
|
|
104
|
+
console.error("stx Plugin Error:", enhancedError);
|
|
105
|
+
const stxError = enhancedError, errorLine = stxError.line || null, errorContext = stxError.context || null;
|
|
106
|
+
return {
|
|
107
|
+
contents: options.debug || isDevelopment() ? `<!DOCTYPE html>
|
|
108
|
+
<html lang="en">
|
|
109
|
+
<head>
|
|
110
|
+
<meta charset="UTF-8">
|
|
111
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
112
|
+
<title>stx Rendering Error</title>
|
|
113
|
+
<style>
|
|
114
|
+
body { font-family: system-ui, -apple-system, sans-serif; max-width: 800px; margin: 40px auto; padding: 20px; line-height: 1.6; }
|
|
115
|
+
.error-header { color: #dc3545; border-left: 4px solid #dc3545; padding-left: 16px; margin-bottom: 24px; }
|
|
116
|
+
.error-details { background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 16px; margin: 16px 0; }
|
|
117
|
+
.error-code { background: #2d3748; color: #e2e8f0; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Monaco', 'Menlo', monospace; font-size: 14px; }
|
|
118
|
+
.help-section { background: #e3f2fd; border-left: 4px solid #2196f3; padding: 16px; margin-top: 24px; }
|
|
119
|
+
.file-path { font-family: monospace; background: #f1f3f4; padding: 2px 6px; border-radius: 4px; }
|
|
120
|
+
</style>
|
|
121
|
+
</head>
|
|
122
|
+
<body>
|
|
123
|
+
<div class="error-header">
|
|
124
|
+
<h1>stx Template Error</h1>
|
|
125
|
+
<p>An error occurred while processing your stx template.</p>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<div class="error-details">
|
|
129
|
+
<h3>Error Details</h3>
|
|
130
|
+
<p><strong>File:</strong> <span class="file-path">${escapeHtml(filePath)}</span></p>
|
|
131
|
+
<p><strong>Error:</strong> ${escapeHtml(enhancedError.message)}</p>
|
|
132
|
+
${errorLine ? `<p><strong>Line:</strong> ${escapeHtml(String(errorLine))}</p>` : ""}
|
|
133
|
+
${errorContext ? `<p><strong>Context:</strong> ${escapeHtml(String(errorContext))}</p>` : ""}
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
${enhancedError.stack ? `
|
|
137
|
+
<div class="error-details">
|
|
138
|
+
<h3>Stack Trace</h3>
|
|
139
|
+
<pre class="error-code">${escapeHtml(enhancedError.stack)}</pre>
|
|
140
|
+
</div>` : ""}
|
|
141
|
+
|
|
142
|
+
<div class="help-section">
|
|
143
|
+
<h3>Troubleshooting Tips</h3>
|
|
144
|
+
<ul>
|
|
145
|
+
<li>Check the syntax of your stx directives (e.g., @if, @foreach)</li>
|
|
146
|
+
<li>Verify that all variables used in the template are properly defined</li>
|
|
147
|
+
<li>Ensure script tags have valid JavaScript/TypeScript syntax</li>
|
|
148
|
+
<li>Run <code>stx debug ${escapeHtml(path.basename(filePath))}</code> for detailed analysis</li>
|
|
149
|
+
<li>Enable debug mode in your stx config for more detailed error messages</li>
|
|
150
|
+
</ul>
|
|
151
|
+
</div>
|
|
152
|
+
</body>
|
|
153
|
+
</html>` : `<!DOCTYPE html>
|
|
154
|
+
<html lang="en">
|
|
155
|
+
<head>
|
|
156
|
+
<meta charset="UTF-8">
|
|
157
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
158
|
+
<title>Error</title>
|
|
159
|
+
<style>
|
|
160
|
+
body { font-family: system-ui, -apple-system, sans-serif; max-width: 600px; margin: 80px auto; padding: 20px; text-align: center; color: #333; }
|
|
161
|
+
</style>
|
|
162
|
+
</head>
|
|
163
|
+
<body>
|
|
164
|
+
<h1>Something went wrong</h1>
|
|
165
|
+
<p>An internal error occurred. Please try again later.</p>
|
|
166
|
+
</body>
|
|
167
|
+
</html>`,
|
|
168
|
+
loader: "html"
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
export default plugin;
|