@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
package/dist/csp.d.ts
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Security Policy (CSP) Module
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for generating and managing Content Security Policy headers
|
|
5
|
+
* and meta tags to protect against XSS and other injection attacks.
|
|
6
|
+
*
|
|
7
|
+
* ## Features
|
|
8
|
+
*
|
|
9
|
+
* - Generate CSP headers from configuration
|
|
10
|
+
* - Inject CSP meta tags into HTML
|
|
11
|
+
* - Nonce generation for inline scripts/styles
|
|
12
|
+
* - Preset configurations for common use cases
|
|
13
|
+
* - Template directives for CSP integration
|
|
14
|
+
*
|
|
15
|
+
* ## Usage
|
|
16
|
+
*
|
|
17
|
+
* ### Configuration in stx.config.ts
|
|
18
|
+
*
|
|
19
|
+
* ```typescript
|
|
20
|
+
* export default {
|
|
21
|
+
* csp: {
|
|
22
|
+
* enabled: true,
|
|
23
|
+
* directives: {
|
|
24
|
+
* 'default-src': ["'self'"],
|
|
25
|
+
* 'script-src': ["'self'", "'strict-dynamic'"],
|
|
26
|
+
* 'style-src': ["'self'", "'unsafe-inline'"],
|
|
27
|
+
* 'img-src': ["'self'", 'data:', 'https:'],
|
|
28
|
+
* 'connect-src': ["'self'", 'https://api.example.com'],
|
|
29
|
+
* },
|
|
30
|
+
* useNonce: true,
|
|
31
|
+
* addMetaTag: true,
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* ### Using Presets
|
|
37
|
+
*
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import { getCspPreset, generateCspHeader } from 'stx'
|
|
40
|
+
*
|
|
41
|
+
* const config = getCspPreset('strict')
|
|
42
|
+
* const header = generateCspHeader(config.directives)
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* ### Template Directives
|
|
46
|
+
*
|
|
47
|
+
* ```html
|
|
48
|
+
* <!-- Insert CSP meta tag -->
|
|
49
|
+
* @csp
|
|
50
|
+
*
|
|
51
|
+
* <!-- Get current nonce for inline scripts -->
|
|
52
|
+
* <script nonce="{{ cspNonce }}">
|
|
53
|
+
* console.log('Safe inline script')
|
|
54
|
+
* </script>
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* ### HTTP Headers
|
|
58
|
+
*
|
|
59
|
+
* ```typescript
|
|
60
|
+
* import { generateCspHeader } from 'stx'
|
|
61
|
+
*
|
|
62
|
+
* // In your server handler
|
|
63
|
+
* const cspHeader = generateCspHeader(config.csp.directives)
|
|
64
|
+
* response.setHeader('Content-Security-Policy', cspHeader)
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
import type { CspConfig, CspDirectives, CspPreset, CustomDirective, StxOptions } from './types';
|
|
68
|
+
/**
|
|
69
|
+
* Generate a cryptographically secure nonce for CSP
|
|
70
|
+
*
|
|
71
|
+
* @param length - Length of nonce in bytes (default 16)
|
|
72
|
+
* @returns Base64-encoded nonce string
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const nonce = generateNonce()
|
|
77
|
+
* // Returns something like: "4AiRXmSkM+XRG3E2Y1fO9Q=="
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function generateNonce(length?: number): string;
|
|
81
|
+
/**
|
|
82
|
+
* Get or create a nonce for the current request context
|
|
83
|
+
*
|
|
84
|
+
* Uses WeakMap to ensure nonce is request-scoped and can be garbage collected.
|
|
85
|
+
* If no context is provided, generates a new nonce each time.
|
|
86
|
+
*
|
|
87
|
+
* @param context - Request context object for nonce scoping
|
|
88
|
+
* @param config - CSP configuration (may include custom nonce generator)
|
|
89
|
+
* @returns The nonce for the current context
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* // In a request handler
|
|
94
|
+
* const ctx = { requestId: '123' }
|
|
95
|
+
* const nonce = getNonce(ctx, cspConfig)
|
|
96
|
+
* // Same nonce returned for same context object
|
|
97
|
+
* const sameNonce = getNonce(ctx, cspConfig)
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare function getNonce(context?: object, config?: CspConfig): string;
|
|
101
|
+
/**
|
|
102
|
+
* Clear the nonce for a context (useful for testing or manual cleanup)
|
|
103
|
+
*
|
|
104
|
+
* @param context - Request context to clear nonce for
|
|
105
|
+
*/
|
|
106
|
+
export declare function clearNonce(context: object): void;
|
|
107
|
+
/**
|
|
108
|
+
* Generate a CSP header string from directive configuration
|
|
109
|
+
*
|
|
110
|
+
* @param directives - CSP directive configuration
|
|
111
|
+
* @param nonce - Optional nonce to inject into script-src and style-src
|
|
112
|
+
* @returns CSP header string
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const header = generateCspHeader({
|
|
117
|
+
* 'default-src': ["'self'"],
|
|
118
|
+
* 'script-src': ["'self'", 'https://cdn.example.com'],
|
|
119
|
+
* 'upgrade-insecure-requests': true,
|
|
120
|
+
* })
|
|
121
|
+
* // Returns: "default-src 'self'; script-src 'self' https://cdn.example.com; upgrade-insecure-requests"
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function generateCspHeader(directives: CspDirectives, nonce?: string): string;
|
|
125
|
+
/**
|
|
126
|
+
* Generate CSP meta tag HTML
|
|
127
|
+
*
|
|
128
|
+
* @param directives - CSP directive configuration
|
|
129
|
+
* @param nonce - Optional nonce to inject
|
|
130
|
+
* @returns HTML meta tag string
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const metaTag = generateCspMetaTag({
|
|
135
|
+
* 'default-src': ["'self'"],
|
|
136
|
+
* })
|
|
137
|
+
* // Returns: '<meta http-equiv="Content-Security-Policy" content="default-src \'self\'">'
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare function generateCspMetaTag(directives: CspDirectives, nonce?: string): string;
|
|
141
|
+
/**
|
|
142
|
+
* Strict CSP preset - Maximum security, may require nonces for inline content
|
|
143
|
+
*
|
|
144
|
+
* - No unsafe-inline or unsafe-eval
|
|
145
|
+
* - Uses strict-dynamic for scripts
|
|
146
|
+
* - Blocks object/embed
|
|
147
|
+
* - Restricts form actions to same origin
|
|
148
|
+
*/
|
|
149
|
+
export declare const strictCspPreset: CspDirectives;
|
|
150
|
+
/**
|
|
151
|
+
* Moderate CSP preset - Balanced security and compatibility
|
|
152
|
+
*
|
|
153
|
+
* - Allows unsafe-inline for styles (common requirement)
|
|
154
|
+
* - Blocks unsafe-eval
|
|
155
|
+
* - Allows data: URIs for images
|
|
156
|
+
*/
|
|
157
|
+
export declare const moderateCspPreset: CspDirectives;
|
|
158
|
+
/**
|
|
159
|
+
* Relaxed CSP preset - Basic protection, maximum compatibility
|
|
160
|
+
*
|
|
161
|
+
* - Allows unsafe-inline for both scripts and styles
|
|
162
|
+
* - Still blocks unsafe-eval and object embeds
|
|
163
|
+
*/
|
|
164
|
+
export declare const relaxedCspPreset: CspDirectives;
|
|
165
|
+
/**
|
|
166
|
+
* API-only CSP preset - For JSON API responses
|
|
167
|
+
*
|
|
168
|
+
* - Blocks all content loading (APIs shouldn't render HTML)
|
|
169
|
+
* - Prevents framing
|
|
170
|
+
*/
|
|
171
|
+
export declare const apiCspPreset: CspDirectives;
|
|
172
|
+
/**
|
|
173
|
+
* Get a CSP preset configuration by name
|
|
174
|
+
*
|
|
175
|
+
* @param preset - Name of the preset
|
|
176
|
+
* @returns CSP configuration object
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* const config = getCspPreset('strict')
|
|
181
|
+
* // Returns full CspConfig with strict directives
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export declare function getCspPreset(preset: CspPreset): CspConfig;
|
|
185
|
+
/**
|
|
186
|
+
* Merge two CSP directive configurations
|
|
187
|
+
*
|
|
188
|
+
* Sources from the second config are added to the first.
|
|
189
|
+
* Boolean directives are OR'd together.
|
|
190
|
+
*
|
|
191
|
+
* @param base - Base CSP directives
|
|
192
|
+
* @param override - Override/additional directives
|
|
193
|
+
* @returns Merged CSP directives
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* const merged = mergeCspDirectives(
|
|
198
|
+
* { 'default-src': ["'self'"], 'script-src': ["'self'"] },
|
|
199
|
+
* { 'script-src': ['https://cdn.example.com'], 'img-src': ['https:'] }
|
|
200
|
+
* )
|
|
201
|
+
* // Result: {
|
|
202
|
+
* // 'default-src': ["'self'"],
|
|
203
|
+
* // 'script-src': ["'self'", "https://cdn.example.com"],
|
|
204
|
+
* // 'img-src': ["https:"]
|
|
205
|
+
* // }
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
export declare function mergeCspDirectives(base: CspDirectives, override: CspDirectives): CspDirectives;
|
|
209
|
+
/**
|
|
210
|
+
* Inject CSP meta tag into HTML head
|
|
211
|
+
*
|
|
212
|
+
* @param html - HTML content
|
|
213
|
+
* @param config - CSP configuration
|
|
214
|
+
* @param context - Request context for nonce scoping
|
|
215
|
+
* @returns HTML with CSP meta tag injected
|
|
216
|
+
*/
|
|
217
|
+
export declare function injectCspMetaTag(html: string, config: CspConfig, context?: object): string;
|
|
218
|
+
/**
|
|
219
|
+
* Add nonce attribute to all inline script and style tags
|
|
220
|
+
*
|
|
221
|
+
* @param html - HTML content
|
|
222
|
+
* @param nonce - Nonce value to add
|
|
223
|
+
* @returns HTML with nonce attributes added
|
|
224
|
+
*/
|
|
225
|
+
export declare function addNonceToInlineContent(html: string, nonce: string): string;
|
|
226
|
+
/**
|
|
227
|
+
* Process CSP-related directives in templates
|
|
228
|
+
*
|
|
229
|
+
* Handles:
|
|
230
|
+
* - @csp - Insert CSP meta tag
|
|
231
|
+
* - @cspNonce - Output current nonce value
|
|
232
|
+
*
|
|
233
|
+
* @param template - Template content
|
|
234
|
+
* @param context - Template context
|
|
235
|
+
* @param _filePath - Source file path
|
|
236
|
+
* @param options - STX options
|
|
237
|
+
* @returns Processed template
|
|
238
|
+
*/
|
|
239
|
+
export declare function processCspDirectives(template: string, context: Record<string, any>, _filePath: string, options: StxOptions): string;
|
|
240
|
+
/**
|
|
241
|
+
* CSP meta tag directive
|
|
242
|
+
* Usage: @csp
|
|
243
|
+
*/
|
|
244
|
+
export declare const cspDirective: CustomDirective;
|
|
245
|
+
/**
|
|
246
|
+
* CSP nonce directive
|
|
247
|
+
* Usage: @cspNonce
|
|
248
|
+
*/
|
|
249
|
+
export declare const cspNonceDirective: CustomDirective;
|
|
250
|
+
/**
|
|
251
|
+
* Register CSP-related custom directives
|
|
252
|
+
*
|
|
253
|
+
* @returns Array of custom directives for CSP
|
|
254
|
+
*/
|
|
255
|
+
export declare function registerCspDirectives(): CustomDirective[];
|
|
256
|
+
/**
|
|
257
|
+
* Validate CSP directive configuration
|
|
258
|
+
*
|
|
259
|
+
* @param directives - CSP directives to validate
|
|
260
|
+
* @returns Array of validation warnings
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* ```typescript
|
|
264
|
+
* const warnings = validateCspDirectives({
|
|
265
|
+
* 'script-src': ["'unsafe-inline'", "'unsafe-eval'"],
|
|
266
|
+
* })
|
|
267
|
+
* // Returns warnings about unsafe usage
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
export declare function validateCspDirectives(directives: CspDirectives): string[];
|
|
271
|
+
/**
|
|
272
|
+
* Get the appropriate CSP header name based on configuration
|
|
273
|
+
*
|
|
274
|
+
* @param reportOnly - Whether to use report-only mode
|
|
275
|
+
* @returns Header name string
|
|
276
|
+
*/
|
|
277
|
+
export declare function getCspHeaderName(reportOnly?: boolean): string;
|
|
278
|
+
/**
|
|
279
|
+
* Create CSP headers object for HTTP response
|
|
280
|
+
*
|
|
281
|
+
* @param config - CSP configuration
|
|
282
|
+
* @param context - Request context for nonce scoping
|
|
283
|
+
* @returns Headers object ready to spread into response
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* ```typescript
|
|
287
|
+
* const headers = createCspHeaders(cspConfig, requestContext)
|
|
288
|
+
* return new Response(body, { headers: { ...headers } })
|
|
289
|
+
* ```
|
|
290
|
+
*/
|
|
291
|
+
export declare function createCspHeaders(config: CspConfig, context?: object): Record<string, string>;
|
|
292
|
+
/**
|
|
293
|
+
* Default CSP configuration - moderate preset
|
|
294
|
+
*/
|
|
295
|
+
export declare const defaultCspConfig: CspConfig;
|
package/dist/csp.js
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
const DEFAULT_NONCE_LENGTH = 16, nonceStorage = new WeakMap;
|
|
2
|
+
export function generateNonce(length = DEFAULT_NONCE_LENGTH) {
|
|
3
|
+
const bytes = new Uint8Array(length);
|
|
4
|
+
crypto.getRandomValues(bytes);
|
|
5
|
+
return btoa(String.fromCharCode(...bytes));
|
|
6
|
+
}
|
|
7
|
+
export function getNonce(context, config) {
|
|
8
|
+
if (!context)
|
|
9
|
+
return config?.nonceGenerator?.() ?? generateNonce();
|
|
10
|
+
let nonce = nonceStorage.get(context);
|
|
11
|
+
if (!nonce) {
|
|
12
|
+
nonce = config?.nonceGenerator?.() ?? generateNonce();
|
|
13
|
+
nonceStorage.set(context, nonce);
|
|
14
|
+
}
|
|
15
|
+
return nonce;
|
|
16
|
+
}
|
|
17
|
+
export function clearNonce(context) {
|
|
18
|
+
nonceStorage.delete(context);
|
|
19
|
+
}
|
|
20
|
+
export function generateCspHeader(directives, nonce) {
|
|
21
|
+
const parts = [];
|
|
22
|
+
for (const [directive, value] of Object.entries(directives)) {
|
|
23
|
+
if (value === void 0 || value === null)
|
|
24
|
+
continue;
|
|
25
|
+
if (typeof value === "boolean") {
|
|
26
|
+
if (value)
|
|
27
|
+
parts.push(directive);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
let sources = [...value];
|
|
32
|
+
if (nonce && (directive === "script-src" || directive === "style-src")) {
|
|
33
|
+
sources = sources.filter((s) => !s.startsWith("'nonce-"));
|
|
34
|
+
sources.push(`'nonce-${nonce}'`);
|
|
35
|
+
}
|
|
36
|
+
if (sources.length > 0)
|
|
37
|
+
parts.push(`${directive} ${sources.join(" ")}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return parts.join("; ");
|
|
41
|
+
}
|
|
42
|
+
export function generateCspMetaTag(directives, nonce) {
|
|
43
|
+
return `<meta http-equiv="Content-Security-Policy" content="${generateCspHeader(directives, nonce).replace(/&/g, "&").replace(/"/g, """)}">`;
|
|
44
|
+
}
|
|
45
|
+
export const strictCspPreset = {
|
|
46
|
+
"default-src": ["'self'"],
|
|
47
|
+
"script-src": ["'self'", "'strict-dynamic'"],
|
|
48
|
+
"style-src": ["'self'"],
|
|
49
|
+
"img-src": ["'self'", "data:", "https:"],
|
|
50
|
+
"font-src": ["'self'", "https:", "data:"],
|
|
51
|
+
"connect-src": ["'self'"],
|
|
52
|
+
"media-src": ["'self'"],
|
|
53
|
+
"object-src": ["'none'"],
|
|
54
|
+
"frame-src": ["'none'"],
|
|
55
|
+
"base-uri": ["'self'"],
|
|
56
|
+
"form-action": ["'self'"],
|
|
57
|
+
"frame-ancestors": ["'self'"],
|
|
58
|
+
"upgrade-insecure-requests": !0
|
|
59
|
+
}, moderateCspPreset = {
|
|
60
|
+
"default-src": ["'self'"],
|
|
61
|
+
"script-src": ["'self'"],
|
|
62
|
+
"style-src": ["'self'", "'unsafe-inline'"],
|
|
63
|
+
"img-src": ["'self'", "data:", "https:"],
|
|
64
|
+
"font-src": ["'self'", "https:", "data:"],
|
|
65
|
+
"connect-src": ["'self'", "https:"],
|
|
66
|
+
"media-src": ["'self'"],
|
|
67
|
+
"object-src": ["'none'"],
|
|
68
|
+
"frame-src": ["'self'"],
|
|
69
|
+
"base-uri": ["'self'"],
|
|
70
|
+
"form-action": ["'self'"],
|
|
71
|
+
"upgrade-insecure-requests": !0
|
|
72
|
+
}, relaxedCspPreset = {
|
|
73
|
+
"default-src": ["'self'"],
|
|
74
|
+
"script-src": ["'self'", "'unsafe-inline'"],
|
|
75
|
+
"style-src": ["'self'", "'unsafe-inline'"],
|
|
76
|
+
"img-src": ["'self'", "data:", "https:", "http:"],
|
|
77
|
+
"font-src": ["'self'", "https:", "http:", "data:"],
|
|
78
|
+
"connect-src": ["'self'", "https:", "http:", "ws:", "wss:"],
|
|
79
|
+
"media-src": ["'self'", "https:", "http:"],
|
|
80
|
+
"object-src": ["'none'"],
|
|
81
|
+
"frame-src": ["'self'", "https:"],
|
|
82
|
+
"base-uri": ["'self'"]
|
|
83
|
+
}, apiCspPreset = {
|
|
84
|
+
"default-src": ["'none'"],
|
|
85
|
+
"frame-ancestors": ["'none'"]
|
|
86
|
+
};
|
|
87
|
+
export function getCspPreset(preset) {
|
|
88
|
+
return {
|
|
89
|
+
enabled: !0,
|
|
90
|
+
directives: {
|
|
91
|
+
strict: strictCspPreset,
|
|
92
|
+
moderate: moderateCspPreset,
|
|
93
|
+
relaxed: relaxedCspPreset,
|
|
94
|
+
api: apiCspPreset
|
|
95
|
+
}[preset] || moderateCspPreset,
|
|
96
|
+
useNonce: preset === "strict",
|
|
97
|
+
addMetaTag: !0
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
export function mergeCspDirectives(base, override) {
|
|
101
|
+
const result = { ...base };
|
|
102
|
+
for (const [key, value] of Object.entries(override)) {
|
|
103
|
+
const directive = key, baseValue = result[directive];
|
|
104
|
+
if (value === void 0 || value === null)
|
|
105
|
+
continue;
|
|
106
|
+
if (typeof value === "boolean")
|
|
107
|
+
result[directive] = baseValue || value;
|
|
108
|
+
else if (Array.isArray(value)) {
|
|
109
|
+
const baseArray = Array.isArray(baseValue) ? baseValue : [], merged = [...new Set([...baseArray, ...value])];
|
|
110
|
+
result[directive] = merged;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
export function injectCspMetaTag(html, config, context) {
|
|
116
|
+
if (!config.enabled || !config.addMetaTag)
|
|
117
|
+
return html;
|
|
118
|
+
if (html.includes('http-equiv="Content-Security-Policy"'))
|
|
119
|
+
return html;
|
|
120
|
+
if (!html.includes("<head>") && !html.includes("<head "))
|
|
121
|
+
return html;
|
|
122
|
+
const nonce = config.useNonce ? getNonce(context, config) : void 0, metaTag = generateCspMetaTag(config.directives, nonce);
|
|
123
|
+
return html.replace(/<head([^>]*)>/, `<head$1>
|
|
124
|
+
${metaTag}`);
|
|
125
|
+
}
|
|
126
|
+
export function addNonceToInlineContent(html, nonce) {
|
|
127
|
+
let result = html;
|
|
128
|
+
result = result.replace(/<script(?![^>]*\ssrc=)([^>]*)>/gi, (match, attrs) => {
|
|
129
|
+
if (attrs.includes("nonce="))
|
|
130
|
+
return match;
|
|
131
|
+
return `<script nonce="${nonce}"${attrs}>`;
|
|
132
|
+
});
|
|
133
|
+
result = result.replace(/<style([^>]*)>/gi, (match, attrs) => {
|
|
134
|
+
if (attrs.includes("nonce="))
|
|
135
|
+
return match;
|
|
136
|
+
return `<style nonce="${nonce}"${attrs}>`;
|
|
137
|
+
});
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
export function processCspDirectives(template, context, _filePath, options) {
|
|
141
|
+
let output = template;
|
|
142
|
+
const cspConfig = options.csp;
|
|
143
|
+
output = output.replace(/@csp\b/g, () => {
|
|
144
|
+
if (!cspConfig?.enabled || !cspConfig.directives)
|
|
145
|
+
return "<!-- CSP not configured -->";
|
|
146
|
+
const nonce = cspConfig.useNonce ? getNonce(context, cspConfig) : void 0;
|
|
147
|
+
return generateCspMetaTag(cspConfig.directives, nonce);
|
|
148
|
+
});
|
|
149
|
+
output = output.replace(/@cspNonce\b/g, () => {
|
|
150
|
+
if (!cspConfig?.enabled || !cspConfig.useNonce)
|
|
151
|
+
return "";
|
|
152
|
+
return getNonce(context, cspConfig);
|
|
153
|
+
});
|
|
154
|
+
if (cspConfig?.enabled && cspConfig.useNonce)
|
|
155
|
+
context.cspNonce = getNonce(context, cspConfig);
|
|
156
|
+
return output;
|
|
157
|
+
}
|
|
158
|
+
export const cspDirective = {
|
|
159
|
+
name: "csp",
|
|
160
|
+
handler: (_content, _params, context, _filePath) => {
|
|
161
|
+
const cspConfig = context.__stx_options?.csp;
|
|
162
|
+
if (!cspConfig?.enabled || !cspConfig.directives)
|
|
163
|
+
return "<!-- CSP not configured -->";
|
|
164
|
+
const nonce = cspConfig.useNonce ? getNonce(context, cspConfig) : void 0;
|
|
165
|
+
return generateCspMetaTag(cspConfig.directives, nonce);
|
|
166
|
+
},
|
|
167
|
+
hasEndTag: !1,
|
|
168
|
+
description: "Insert Content-Security-Policy meta tag"
|
|
169
|
+
}, cspNonceDirective = {
|
|
170
|
+
name: "cspNonce",
|
|
171
|
+
handler: (_content, _params, context, _filePath) => {
|
|
172
|
+
const cspConfig = context.__stx_options?.csp;
|
|
173
|
+
if (!cspConfig?.enabled || !cspConfig.useNonce)
|
|
174
|
+
return "";
|
|
175
|
+
return getNonce(context, cspConfig);
|
|
176
|
+
},
|
|
177
|
+
hasEndTag: !1,
|
|
178
|
+
description: "Output the current CSP nonce value"
|
|
179
|
+
};
|
|
180
|
+
export function registerCspDirectives() {
|
|
181
|
+
return [
|
|
182
|
+
cspDirective,
|
|
183
|
+
cspNonceDirective
|
|
184
|
+
];
|
|
185
|
+
}
|
|
186
|
+
export function validateCspDirectives(directives) {
|
|
187
|
+
const warnings = [];
|
|
188
|
+
if (directives["script-src"]?.includes("'unsafe-inline'"))
|
|
189
|
+
warnings.push("CSP: Using unsafe-inline in script-src significantly reduces XSS protection");
|
|
190
|
+
if (directives["script-src"]?.includes("'unsafe-eval'"))
|
|
191
|
+
warnings.push("CSP: Using unsafe-eval in script-src allows eval() and related functions");
|
|
192
|
+
if (!directives["default-src"])
|
|
193
|
+
warnings.push("CSP: No default-src specified. Recommend adding default-src as a fallback");
|
|
194
|
+
if (directives["default-src"]?.includes("*"))
|
|
195
|
+
warnings.push("CSP: Using * in default-src provides minimal protection");
|
|
196
|
+
if (!directives["object-src"] && !directives["default-src"]?.includes("'none'"))
|
|
197
|
+
warnings.push("CSP: Consider adding object-src: none to block plugins");
|
|
198
|
+
if (!directives["base-uri"])
|
|
199
|
+
warnings.push("CSP: Consider adding base-uri to prevent base tag injection attacks");
|
|
200
|
+
for (const [directive, sources] of Object.entries(directives))
|
|
201
|
+
if (Array.isArray(sources) && sources.includes("http:"))
|
|
202
|
+
warnings.push(`CSP: Using http: in ${directive} allows insecure resources`);
|
|
203
|
+
return warnings;
|
|
204
|
+
}
|
|
205
|
+
export function getCspHeaderName(reportOnly = !1) {
|
|
206
|
+
return reportOnly ? "Content-Security-Policy-Report-Only" : "Content-Security-Policy";
|
|
207
|
+
}
|
|
208
|
+
export function createCspHeaders(config, context) {
|
|
209
|
+
if (!config.enabled)
|
|
210
|
+
return {};
|
|
211
|
+
const nonce = config.useNonce ? getNonce(context, config) : void 0, headerValue = generateCspHeader(config.directives, nonce);
|
|
212
|
+
return { [getCspHeaderName(config.reportOnly)]: headerValue };
|
|
213
|
+
}
|
|
214
|
+
export const defaultCspConfig = {
|
|
215
|
+
enabled: !1,
|
|
216
|
+
reportOnly: !1,
|
|
217
|
+
directives: moderateCspPreset,
|
|
218
|
+
useNonce: !1,
|
|
219
|
+
addMetaTag: !0
|
|
220
|
+
};
|
package/dist/csrf.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a CSRF token
|
|
3
|
+
*/
|
|
4
|
+
export declare function generateCsrfToken(length?: number): string;
|
|
5
|
+
/**
|
|
6
|
+
* Get the current CSRF token, generating one if it doesn't exist
|
|
7
|
+
*/
|
|
8
|
+
export declare function getCsrfToken(): string;
|
|
9
|
+
/**
|
|
10
|
+
* Reset the CSRF token (mainly for testing)
|
|
11
|
+
*/
|
|
12
|
+
export declare function resetCsrfToken(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Set a specific CSRF token (useful for server frameworks that have their own token generation)
|
|
15
|
+
*/
|
|
16
|
+
export declare function setCsrfToken(token: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Generate a CSRF input field HTML
|
|
19
|
+
*/
|
|
20
|
+
export declare function csrfField(inputName?: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Process @csrf directives in templates
|
|
23
|
+
*/
|
|
24
|
+
export declare function processCsrfDirectives(template: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Verify a CSRF token.
|
|
27
|
+
*
|
|
28
|
+
* When called with one argument, compares against the module-global token.
|
|
29
|
+
* When called with two arguments, compares submitted vs expected (for per-request usage).
|
|
30
|
+
*
|
|
31
|
+
* Per-request usage avoids the global state race condition under concurrent requests:
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const expected = req.session.csrfToken
|
|
34
|
+
* const submitted = req.body._token
|
|
35
|
+
* if (!verifyCsrfToken(submitted, expected)) { ... }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function verifyCsrfToken(token: string, expectedToken?: string): boolean;
|
package/dist/csrf.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import crypto from "node:crypto";
|
|
3
|
+
const DEFAULT_TOKEN_LENGTH = 40, DEFAULT_INPUT_NAME = "_token";
|
|
4
|
+
let csrfToken = null;
|
|
5
|
+
export function generateCsrfToken(length = DEFAULT_TOKEN_LENGTH) {
|
|
6
|
+
const token = crypto.randomBytes(Math.ceil(length / 2)).toString("hex").slice(0, length);
|
|
7
|
+
csrfToken = token;
|
|
8
|
+
return token;
|
|
9
|
+
}
|
|
10
|
+
export function getCsrfToken() {
|
|
11
|
+
if (!csrfToken)
|
|
12
|
+
generateCsrfToken();
|
|
13
|
+
return csrfToken;
|
|
14
|
+
}
|
|
15
|
+
export function resetCsrfToken() {
|
|
16
|
+
csrfToken = null;
|
|
17
|
+
}
|
|
18
|
+
export function setCsrfToken(token) {
|
|
19
|
+
csrfToken = token;
|
|
20
|
+
}
|
|
21
|
+
export function csrfField(inputName = DEFAULT_INPUT_NAME) {
|
|
22
|
+
const token = getCsrfToken();
|
|
23
|
+
return `<input type="hidden" name="${inputName}" value="${token}">`;
|
|
24
|
+
}
|
|
25
|
+
export function processCsrfDirectives(template) {
|
|
26
|
+
return template.replace(/@csrf(?:\((['"])([^'"]*)\1\))?/g, (_, quote, inputName) => {
|
|
27
|
+
return csrfField(inputName || DEFAULT_INPUT_NAME);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function verifyCsrfToken(token, expectedToken) {
|
|
31
|
+
const expected = expectedToken ?? csrfToken;
|
|
32
|
+
if (!expected)
|
|
33
|
+
return !1;
|
|
34
|
+
const tokenBuf = Buffer.from(token), csrfBuf = Buffer.from(expected);
|
|
35
|
+
if (tokenBuf.length !== csrfBuf.length)
|
|
36
|
+
return !1;
|
|
37
|
+
return crypto.timingSafeEqual(tokenBuf, csrfBuf);
|
|
38
|
+
}
|