@nuxt/scripts 1.0.0-beta.7 → 1.0.0-rc.10
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/bin/cli.mjs +2 -0
- package/dist/cli.d.mts +2 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.mjs +50 -0
- package/dist/devtools-client/200.html +1 -0
- package/dist/devtools-client/404.html +1 -0
- package/dist/devtools-client/_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2 +0 -0
- package/dist/devtools-client/_fonts/4qBuU9MRVUlPZNPSF7Xom_sK8RBEnfYu-9VXFrdq8A8-8TDwLE1HAj1sQn7XxVWtM_7sIaPM-DTdO3Pf8U2DF1U.woff2 +0 -0
- package/dist/devtools-client/_fonts/6dYsbWUd_BpKJ7mdDihgOcya1gHXLpJBuMYXux3WMjE-q3fYNS8YbW5n7ZeXI2vSNgkRWW5VDPKAl51SNTjG2qk.woff2 +0 -0
- package/dist/devtools-client/_fonts/Lr-hqqZZsYmCt0ITUlr1CUrWim9fsKvoDFZliMxgNHY-iTa_Yt_PzhOY9TX7ZXdSlEPim6iRt92xhECwaxWxd5w.woff2 +0 -0
- package/dist/devtools-client/_fonts/OknHvWI6KtYn1JQBzX7eSpNDBQ8520F9TvSUJYkVf6A-xeZn9253svK_8Q2LD0XEruY_MnEsuCRO5LenPoggC0Y.woff2 +0 -0
- package/dist/devtools-client/_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2 +0 -0
- package/dist/devtools-client/_fonts/UA7OtwYHwGN_HjcVGTdmiQxUit7FlqkCwxVUWSeXVnQ-B4OXCFOL_tWrYODpQTc07aMaj0c2cewTOmBRWR9tD-A.woff2 +0 -0
- package/dist/devtools-client/_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2 +0 -0
- package/dist/devtools-client/_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2 +0 -0
- package/dist/devtools-client/_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2 +0 -0
- package/dist/devtools-client/_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2 +0 -0
- package/dist/devtools-client/_fonts/qxAYvKsXWeYv731eb-h5TRurcdIP_W44mpNdX-HABAk-zUDeMEFlNtNbrwvT9JxLEBg0TphGy70O6RfIoIX_ZwU.woff2 +0 -0
- package/dist/devtools-client/_nuxt/B8PEiB0p.js +1 -0
- package/dist/devtools-client/_nuxt/BgPDxVUn.js +1 -0
- package/dist/devtools-client/_nuxt/BmlapxLP.js +1 -0
- package/dist/devtools-client/_nuxt/CM2vefXI.js +188 -0
- package/dist/devtools-client/_nuxt/DAF5Qk9P.js +1 -0
- package/dist/devtools-client/_nuxt/Dx6HhVmj.js +1 -0
- package/dist/devtools-client/_nuxt/S8LiR9M1.js +1 -0
- package/dist/devtools-client/_nuxt/builds/latest.json +1 -0
- package/dist/devtools-client/_nuxt/builds/meta/5458a3f2-af35-479c-8852-bf6f92fed611.json +1 -0
- package/dist/devtools-client/_nuxt/entry.BKkVrcJj.css +1 -0
- package/dist/devtools-client/_nuxt/error-404.d44aGwWI.css +1 -0
- package/dist/devtools-client/_nuxt/error-500.NthMfIEt.css +1 -0
- package/dist/devtools-client/_nuxt/first-party.C8Ha4JLM.css +1 -0
- package/dist/devtools-client/_nuxt/index.DZD1lwyI.css +1 -0
- package/dist/devtools-client/_nuxt/registry.B9lnjF_b.css +1 -0
- package/dist/devtools-client/_nuxt/vBkR1GJq.js +1 -0
- package/dist/devtools-client/_nuxt/wDzz0qaB.js +1 -0
- package/dist/devtools-client/docs/index.html +1 -0
- package/dist/devtools-client/first-party/index.html +1 -0
- package/dist/devtools-client/index.html +1 -0
- package/dist/devtools-client/registry/index.html +1 -0
- package/dist/module.d.mts +89 -80
- package/dist/module.d.ts +185 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +1056 -756
- package/dist/registry.d.mts +92 -4
- package/dist/registry.d.ts +94 -0
- package/dist/registry.mjs +668 -326
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.d.vue.ts +77 -165
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue +148 -227
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue.d.ts +77 -165
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.d.vue.ts +6 -55
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.vue +12 -83
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsAdvancedMarkerElement.vue.d.ts +6 -55
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.d.vue.ts +5 -1
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.vue +24 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsCircle.vue.d.ts +5 -1
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.d.vue.ts +43 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.vue +60 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.vue.d.ts +43 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.d.vue.ts +4 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.vue +22 -26
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsHeatmapLayer.vue.d.ts +4 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.d.vue.ts +11 -8
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.vue +57 -57
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsInfoWindow.vue.d.ts +11 -8
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.d.vue.ts +24 -42
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue +71 -74
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue.d.ts +24 -42
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.d.vue.ts +19 -20
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue +85 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue.d.ts +19 -20
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.d.vue.ts +98 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue +263 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue.d.ts +98 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.d.vue.ts +10 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.vue +9 -41
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPinElement.vue.d.ts +10 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.d.vue.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.vue +23 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.vue.d.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.d.vue.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.vue +23 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.vue.d.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.d.vue.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.vue +24 -38
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.vue.d.ts +7 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.d.vue.ts +200 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.vue +170 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.vue.d.ts +200 -0
- package/dist/runtime/components/GoogleMaps/bindGoogleMapsEvents.d.ts +13 -0
- package/dist/runtime/components/GoogleMaps/bindGoogleMapsEvents.js +8 -0
- package/dist/runtime/components/GoogleMaps/injectionKeys.d.ts +10 -0
- package/dist/runtime/components/GoogleMaps/injectionKeys.js +2 -0
- package/dist/runtime/components/GoogleMaps/types.d.ts +42 -0
- package/dist/runtime/components/GoogleMaps/types.js +1 -0
- package/dist/runtime/components/GoogleMaps/useGoogleMapsResource.d.ts +98 -0
- package/dist/runtime/components/GoogleMaps/useGoogleMapsResource.js +126 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.d.vue.ts +83 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.vue +91 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.vue.d.ts +83 -0
- package/dist/runtime/components/ScriptCarbonAds.d.vue.ts +4 -7
- package/dist/runtime/components/ScriptCarbonAds.vue +1 -0
- package/dist/runtime/components/ScriptCarbonAds.vue.d.ts +4 -7
- package/dist/runtime/components/ScriptCrisp.d.vue.ts +7 -11
- package/dist/runtime/components/ScriptCrisp.vue +2 -1
- package/dist/runtime/components/ScriptCrisp.vue.d.ts +7 -11
- package/dist/runtime/components/ScriptGoogleAdsense.d.vue.ts +4 -7
- package/dist/runtime/components/ScriptGoogleAdsense.vue +2 -1
- package/dist/runtime/components/ScriptGoogleAdsense.vue.d.ts +4 -7
- package/dist/runtime/components/ScriptGravatar.d.vue.ts +22 -0
- package/dist/runtime/components/ScriptGravatar.vue +46 -0
- package/dist/runtime/components/ScriptGravatar.vue.d.ts +22 -0
- package/dist/runtime/components/ScriptInstagramEmbed.d.vue.ts +12 -15
- package/dist/runtime/components/ScriptInstagramEmbed.vue +11 -3
- package/dist/runtime/components/ScriptInstagramEmbed.vue.d.ts +12 -15
- package/dist/runtime/components/ScriptIntercom.d.vue.ts +7 -11
- package/dist/runtime/components/ScriptIntercom.vue +5 -3
- package/dist/runtime/components/ScriptIntercom.vue.d.ts +7 -11
- package/dist/runtime/components/ScriptLemonSqueezy.d.vue.ts +2 -3
- package/dist/runtime/components/ScriptLemonSqueezy.vue +1 -0
- package/dist/runtime/components/ScriptLemonSqueezy.vue.d.ts +2 -3
- package/dist/runtime/components/ScriptPayPalButtons.d.vue.ts +43 -37
- package/dist/runtime/components/ScriptPayPalButtons.vue +49 -79
- package/dist/runtime/components/ScriptPayPalButtons.vue.d.ts +43 -37
- package/dist/runtime/components/ScriptPayPalMessages.d.vue.ts +37 -28
- package/dist/runtime/components/ScriptPayPalMessages.vue +47 -50
- package/dist/runtime/components/ScriptPayPalMessages.vue.d.ts +37 -28
- package/dist/runtime/components/ScriptStripePricingTable.d.vue.ts +5 -9
- package/dist/runtime/components/ScriptStripePricingTable.vue +3 -2
- package/dist/runtime/components/ScriptStripePricingTable.vue.d.ts +5 -9
- package/dist/runtime/components/ScriptVimeoPlayer.d.vue.ts +17 -11
- package/dist/runtime/components/ScriptVimeoPlayer.vue +14 -10
- package/dist/runtime/components/ScriptVimeoPlayer.vue.d.ts +17 -11
- package/dist/runtime/components/ScriptXEmbed.d.vue.ts +10 -14
- package/dist/runtime/components/ScriptXEmbed.vue +21 -12
- package/dist/runtime/components/ScriptXEmbed.vue.d.ts +10 -14
- package/dist/runtime/components/ScriptYouTubePlayer.d.vue.ts +10 -15
- package/dist/runtime/components/ScriptYouTubePlayer.vue +12 -5
- package/dist/runtime/components/ScriptYouTubePlayer.vue.d.ts +10 -15
- package/dist/runtime/composables/useScript.js +159 -8
- package/dist/runtime/composables/useScriptEventPage.js +2 -2
- package/dist/runtime/composables/useScriptProxyToken.d.ts +12 -0
- package/dist/runtime/composables/useScriptProxyToken.js +4 -0
- package/dist/runtime/composables/useScriptProxyUrl.d.ts +12 -0
- package/dist/runtime/composables/useScriptProxyUrl.js +27 -0
- package/dist/runtime/composables/useScriptTriggerConsent.d.ts +10 -0
- package/dist/runtime/composables/useScriptTriggerConsent.js +33 -20
- package/dist/runtime/composables/useScriptTriggerElement.js +1 -1
- package/dist/runtime/composables/useScriptTriggerIdleTimeout.js +1 -1
- package/dist/runtime/devtools-standalone-bridge.client.d.ts +8 -0
- package/dist/runtime/devtools-standalone-bridge.client.js +50 -0
- package/dist/runtime/plugins/proxy-token.server.d.ts +10 -0
- package/dist/runtime/plugins/proxy-token.server.js +17 -0
- package/dist/runtime/registry/bing-uet.d.ts +198 -0
- package/dist/runtime/registry/bing-uet.js +43 -0
- package/dist/runtime/registry/bluesky-embed.d.ts +112 -0
- package/dist/runtime/registry/bluesky-embed.js +68 -0
- package/dist/runtime/registry/clarity.d.ts +16 -17
- package/dist/runtime/registry/clarity.js +33 -31
- package/dist/runtime/registry/cloudflare-web-analytics.d.ts +2 -13
- package/dist/runtime/registry/cloudflare-web-analytics.js +2 -14
- package/dist/runtime/registry/crisp.d.ts +10 -40
- package/dist/runtime/registry/crisp.js +2 -33
- package/dist/runtime/registry/databuddy-analytics.d.ts +2 -35
- package/dist/runtime/registry/databuddy-analytics.js +20 -45
- package/dist/runtime/registry/fathom-analytics.d.ts +7 -26
- package/dist/runtime/registry/fathom-analytics.js +3 -25
- package/dist/runtime/registry/google-adsense.d.ts +3 -11
- package/dist/runtime/registry/google-adsense.js +2 -11
- package/dist/runtime/registry/google-analytics.d.ts +9 -7
- package/dist/runtime/registry/google-analytics.js +15 -9
- package/dist/runtime/registry/google-maps.d.ts +3 -9
- package/dist/runtime/registry/google-maps.js +2 -8
- package/dist/runtime/registry/google-recaptcha.d.ts +2 -6
- package/dist/runtime/registry/google-recaptcha.js +4 -12
- package/dist/runtime/registry/google-sign-in.d.ts +2 -13
- package/dist/runtime/registry/google-sign-in.js +2 -22
- package/dist/runtime/registry/google-tag-manager.d.ts +8 -29
- package/dist/runtime/registry/google-tag-manager.js +14 -28
- package/dist/runtime/registry/gravatar.d.ts +26 -0
- package/dist/runtime/registry/gravatar.js +33 -0
- package/dist/runtime/registry/hotjar.d.ts +4 -6
- package/dist/runtime/registry/hotjar.js +2 -5
- package/dist/runtime/registry/instagram-embed.d.ts +3 -18
- package/dist/runtime/registry/instagram-embed.js +4 -19
- package/dist/runtime/registry/intercom.d.ts +5 -13
- package/dist/runtime/registry/intercom.js +2 -12
- package/dist/runtime/registry/matomo-analytics.d.ts +12 -15
- package/dist/runtime/registry/matomo-analytics.js +31 -13
- package/dist/runtime/registry/meta-pixel.d.ts +12 -8
- package/dist/runtime/registry/meta-pixel.js +12 -5
- package/dist/runtime/registry/mixpanel-analytics.d.ts +32 -0
- package/dist/runtime/registry/mixpanel-analytics.js +58 -0
- package/dist/runtime/registry/npm.d.ts +3 -7
- package/dist/runtime/registry/npm.js +2 -9
- package/dist/runtime/registry/paypal.d.ts +4 -25
- package/dist/runtime/registry/paypal.js +3 -66
- package/dist/runtime/registry/plausible-analytics.js +19 -14
- package/dist/runtime/registry/posthog.d.ts +18 -14
- package/dist/runtime/registry/posthog.js +18 -16
- package/dist/runtime/registry/reddit-pixel.d.ts +5 -6
- package/dist/runtime/registry/reddit-pixel.js +2 -4
- package/dist/runtime/registry/rybbit-analytics.d.ts +2 -14
- package/dist/runtime/registry/rybbit-analytics.js +10 -20
- package/dist/runtime/registry/schemas.d.ts +1047 -0
- package/dist/runtime/registry/schemas.js +1004 -0
- package/dist/runtime/registry/segment.d.ts +2 -5
- package/dist/runtime/registry/segment.js +2 -5
- package/dist/runtime/registry/snapchat-pixel.d.ts +5 -34
- package/dist/runtime/registry/snapchat-pixel.js +2 -20
- package/dist/runtime/registry/stripe.d.ts +3 -4
- package/dist/runtime/registry/stripe.js +2 -4
- package/dist/runtime/registry/tiktok-pixel.d.ts +20 -9
- package/dist/runtime/registry/tiktok-pixel.js +24 -7
- package/dist/runtime/registry/umami-analytics.d.ts +2 -31
- package/dist/runtime/registry/umami-analytics.js +2 -36
- package/dist/runtime/registry/vercel-analytics.d.ts +29 -0
- package/dist/runtime/registry/vercel-analytics.js +84 -0
- package/dist/runtime/registry/vimeo-player.d.ts +2 -2
- package/dist/runtime/registry/vimeo-player.js +1 -1
- package/dist/runtime/registry/x-embed.d.ts +3 -21
- package/dist/runtime/registry/x-embed.js +2 -21
- package/dist/runtime/registry/x-pixel.d.ts +4 -7
- package/dist/runtime/registry/x-pixel.js +2 -5
- package/dist/runtime/registry/youtube-player.d.ts +7 -7
- package/dist/runtime/registry/youtube-player.js +1 -1
- package/dist/runtime/server/bluesky-embed-image.d.ts +2 -0
- package/dist/runtime/server/bluesky-embed-image.js +7 -0
- package/dist/runtime/server/bluesky-embed.d.ts +2 -0
- package/dist/runtime/server/bluesky-embed.js +78 -0
- package/dist/runtime/server/google-maps-geocode-proxy.d.ts +2 -0
- package/dist/runtime/server/google-maps-geocode-proxy.js +38 -0
- package/dist/runtime/server/google-static-maps-proxy.d.ts +1 -1
- package/dist/runtime/server/google-static-maps-proxy.js +18 -23
- package/dist/runtime/server/gravatar-proxy.d.ts +2 -0
- package/dist/runtime/server/gravatar-proxy.js +46 -0
- package/dist/runtime/server/instagram-embed-asset.d.ts +1 -1
- package/dist/runtime/server/instagram-embed-asset.js +8 -41
- package/dist/runtime/server/instagram-embed-image.d.ts +1 -1
- package/dist/runtime/server/instagram-embed-image.js +6 -53
- package/dist/runtime/server/instagram-embed.d.ts +1 -0
- package/dist/runtime/server/instagram-embed.js +82 -40
- package/dist/runtime/server/proxy-handler.js +102 -85
- package/dist/runtime/server/utils/cached-upstream.d.ts +55 -0
- package/dist/runtime/server/utils/cached-upstream.js +65 -0
- package/dist/runtime/server/utils/embed-rewriters.d.ts +19 -0
- package/dist/runtime/server/utils/embed-rewriters.js +41 -0
- package/dist/runtime/server/utils/image-proxy.d.ts +14 -0
- package/dist/runtime/server/utils/image-proxy.js +73 -0
- package/dist/runtime/server/utils/instagram-embed.d.ts +16 -0
- package/dist/runtime/server/utils/instagram-embed.js +153 -0
- package/dist/runtime/server/utils/privacy.d.ts +1 -10
- package/dist/runtime/server/utils/privacy.js +60 -40
- package/dist/runtime/server/utils/proxy-url.d.ts +9 -0
- package/dist/runtime/server/utils/proxy-url.js +21 -0
- package/dist/runtime/server/utils/sign-constants.d.ts +16 -0
- package/dist/runtime/server/utils/sign-constants.js +5 -0
- package/dist/runtime/server/utils/sign.d.ts +101 -0
- package/dist/runtime/server/utils/sign.js +91 -0
- package/dist/runtime/server/utils/withSigning.d.ts +23 -0
- package/dist/runtime/server/utils/withSigning.js +19 -0
- package/dist/runtime/server/x-embed-image.d.ts +1 -1
- package/dist/runtime/server/x-embed-image.js +5 -49
- package/dist/runtime/server/x-embed.js +26 -6
- package/dist/runtime/types.d.ts +311 -55
- package/dist/runtime/types.js +1 -2
- package/dist/runtime/utils/pure.d.ts +1 -1
- package/dist/runtime/utils.d.ts +6 -4
- package/dist/runtime/utils.js +31 -14
- package/dist/stats.d.mts +202 -0
- package/dist/stats.d.ts +202 -0
- package/dist/stats.mjs +3835 -0
- package/dist/types-source.d.mts +17 -0
- package/dist/types-source.d.ts +17 -0
- package/dist/types-source.mjs +3787 -0
- package/dist/types.d.mts +4 -2
- package/package.json +41 -63
- package/README.md +0 -86
- package/dist/client/200.html +0 -1
- package/dist/client/404.html +0 -1
- package/dist/client/_nuxt/BJa0m50V.js +0 -1
- package/dist/client/_nuxt/BPQ3VLAy.js +0 -1
- package/dist/client/_nuxt/Ci5iXYuB.js +0 -1
- package/dist/client/_nuxt/DaI2y8Uz.js +0 -162
- package/dist/client/_nuxt/builds/latest.json +0 -1
- package/dist/client/_nuxt/builds/meta/9b4fb16a-3c62-48b0-8295-126cb077b5d3.json +0 -1
- package/dist/client/_nuxt/entry.D45OuV0w.css +0 -1
- package/dist/client/_nuxt/error-404.B57D-jUQ.css +0 -1
- package/dist/client/_nuxt/error-500.DTHUW7BI.css +0 -1
- package/dist/client/_nuxt/vPLZfVXe.js +0 -1
- package/dist/client/index.html +0 -1
- package/dist/runtime/components/ScriptPayPalMarks.d.vue.ts +0 -52
- package/dist/runtime/components/ScriptPayPalMarks.vue +0 -69
- package/dist/runtime/components/ScriptPayPalMarks.vue.d.ts +0 -52
- package/dist/runtime/validation/mock.d.ts +0 -42
- package/dist/runtime/validation/mock.js +0 -21
- package/dist/runtime/validation/valibot.d.ts +0 -1
- package/dist/runtime/validation/valibot.js +0 -1
- /package/dist/{client → devtools-client}/_nuxt/CVO1_9PV.js +0 -0
- /package/dist/{client → devtools-client}/_nuxt/Cp-IABpG.js +0 -0
- /package/dist/{client → devtools-client}/_nuxt/D0r3Knsf.js +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createError, defineEventHandler } from "h3";
|
|
2
|
+
import { useRuntimeConfig } from "nitropack/runtime";
|
|
3
|
+
import { verifyProxyRequest } from "./sign.js";
|
|
4
|
+
export function withSigning(handler) {
|
|
5
|
+
return defineEventHandler(async (event) => {
|
|
6
|
+
const runtimeConfig = useRuntimeConfig(event);
|
|
7
|
+
const scriptsConfig = runtimeConfig["nuxt-scripts"];
|
|
8
|
+
const secret = scriptsConfig?.proxySecret;
|
|
9
|
+
if (!secret)
|
|
10
|
+
return handler(event);
|
|
11
|
+
if (!verifyProxyRequest(event, secret, scriptsConfig?.pageTokenMaxAge)) {
|
|
12
|
+
throw createError({
|
|
13
|
+
statusCode: 403,
|
|
14
|
+
statusMessage: "Invalid signature"
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return handler(event);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<
|
|
1
|
+
declare const _default: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<Buffer<ArrayBufferLike>>>;
|
|
2
2
|
export default _default;
|
|
@@ -1,53 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const query = getQuery(event);
|
|
5
|
-
const url = query.url;
|
|
6
|
-
if (!url) {
|
|
7
|
-
throw createError({
|
|
8
|
-
statusCode: 400,
|
|
9
|
-
statusMessage: "Image URL is required"
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
let parsedUrl;
|
|
13
|
-
try {
|
|
14
|
-
parsedUrl = new URL(url);
|
|
15
|
-
} catch {
|
|
16
|
-
throw createError({
|
|
17
|
-
statusCode: 400,
|
|
18
|
-
statusMessage: "Invalid image URL"
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
if (parsedUrl.protocol !== "http:" && parsedUrl.protocol !== "https:") {
|
|
22
|
-
throw createError({
|
|
23
|
-
statusCode: 400,
|
|
24
|
-
statusMessage: "Invalid URL scheme"
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
const allowedDomains = [
|
|
1
|
+
import { createImageProxyHandler } from "./utils/image-proxy.js";
|
|
2
|
+
export default createImageProxyHandler({
|
|
3
|
+
allowedDomains: [
|
|
28
4
|
"pbs.twimg.com",
|
|
29
5
|
"abs.twimg.com",
|
|
30
6
|
"video.twimg.com"
|
|
31
|
-
]
|
|
32
|
-
|
|
33
|
-
throw createError({
|
|
34
|
-
statusCode: 403,
|
|
35
|
-
statusMessage: "Domain not allowed"
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
const response = await $fetch.raw(url, {
|
|
39
|
-
timeout: 5e3,
|
|
40
|
-
headers: {
|
|
41
|
-
"Accept": "image/webp,image/jpeg,image/png,image/*,*/*;q=0.8",
|
|
42
|
-
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
|
|
43
|
-
}
|
|
44
|
-
}).catch((error) => {
|
|
45
|
-
throw createError({
|
|
46
|
-
statusCode: error.statusCode || 500,
|
|
47
|
-
statusMessage: error.statusMessage || "Failed to fetch image"
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
setHeader(event, "Content-Type", response.headers.get("content-type") || "image/jpeg");
|
|
51
|
-
setHeader(event, "Cache-Control", "public, max-age=3600, s-maxage=3600");
|
|
52
|
-
return response._data;
|
|
7
|
+
],
|
|
8
|
+
userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
|
|
53
9
|
});
|
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
import { createError, defineEventHandler, getQuery, setHeader } from "h3";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { useRuntimeConfig } from "nitropack/runtime";
|
|
3
|
+
import { createCachedJsonFetch } from "./utils/cached-upstream.js";
|
|
4
|
+
import { rewriteTweetImages } from "./utils/embed-rewriters.js";
|
|
5
|
+
import { withSigning } from "./utils/withSigning.js";
|
|
6
|
+
const TWEET_ID_RE = /^\d+$/;
|
|
7
|
+
const EMBED_X_SUFFIX_RE = /\/embed\/x$/;
|
|
8
|
+
const TWEET_ID_FROM_URL_RE = /[?&]id=(\d+)/;
|
|
9
|
+
const cachedTweetFetch = createCachedJsonFetch(
|
|
10
|
+
"nuxt-scripts-x-tweet",
|
|
11
|
+
600,
|
|
12
|
+
(url) => {
|
|
13
|
+
const match = url.match(TWEET_ID_FROM_URL_RE);
|
|
14
|
+
return match?.[1] || url;
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
export default withSigning(defineEventHandler(async (event) => {
|
|
4
18
|
const query = getQuery(event);
|
|
5
19
|
const tweetId = query.id;
|
|
6
|
-
if (!tweetId ||
|
|
20
|
+
if (!tweetId || !TWEET_ID_RE.test(tweetId)) {
|
|
7
21
|
throw createError({
|
|
8
22
|
statusCode: 400,
|
|
9
23
|
statusMessage: "Valid Tweet ID is required"
|
|
10
24
|
});
|
|
11
25
|
}
|
|
12
|
-
const randomToken =
|
|
26
|
+
const randomToken = Array.from(Array.from({ length: 11 }), () => (Math.random() * 36).toString(36)[2]).join("");
|
|
13
27
|
const params = new URLSearchParams({ id: tweetId, token: randomToken });
|
|
14
|
-
const
|
|
28
|
+
const tweetRaw = await cachedTweetFetch(
|
|
15
29
|
`https://cdn.syndication.twimg.com/tweet-result?${params.toString()}`,
|
|
16
30
|
{
|
|
17
31
|
headers: {
|
|
@@ -25,7 +39,13 @@ export default defineEventHandler(async (event) => {
|
|
|
25
39
|
statusMessage: error.statusMessage || "Failed to fetch tweet"
|
|
26
40
|
});
|
|
27
41
|
});
|
|
42
|
+
const tweetData = structuredClone(tweetRaw);
|
|
43
|
+
const handlerPath = event.path?.split("?")[0] || "";
|
|
44
|
+
const prefix = handlerPath.replace(EMBED_X_SUFFIX_RE, "") || "/_scripts";
|
|
45
|
+
const imagePath = `${prefix}/embed/x-image`;
|
|
46
|
+
const secret = useRuntimeConfig(event)["nuxt-scripts"]?.proxySecret;
|
|
47
|
+
rewriteTweetImages(tweetData, imagePath, secret);
|
|
28
48
|
setHeader(event, "Content-Type", "application/json");
|
|
29
49
|
setHeader(event, "Cache-Control", "public, max-age=600, s-maxage=600");
|
|
30
50
|
return tweetData;
|
|
31
|
-
});
|
|
51
|
+
}));
|
package/dist/runtime/types.d.ts
CHANGED
|
@@ -1,44 +1,78 @@
|
|
|
1
|
+
import type { UseScriptInput, UseScriptOptions, VueScriptInstance } from '@unhead/vue';
|
|
1
2
|
import type { Script } from '@unhead/vue/types';
|
|
2
|
-
import type { UseScriptInput, VueScriptInstance, UseScriptOptions } from '@unhead/vue';
|
|
3
|
-
import type { ComputedRef, Ref } from 'vue';
|
|
4
|
-
import type { InferInput, ObjectSchema, ValiError } from 'valibot';
|
|
5
3
|
import type { Import } from 'unimport';
|
|
6
|
-
import type {
|
|
4
|
+
import type { InferInput, ObjectEntries, ObjectSchema, UnionSchema, ValiError } from 'valibot';
|
|
5
|
+
import type { ComputedRef, Ref } from 'vue';
|
|
6
|
+
import type { BingUetInput } from './registry/bing-uet.js';
|
|
7
|
+
import type { BlueskyEmbedInput } from './registry/bluesky-embed.js';
|
|
8
|
+
import type { ClarityInput } from './registry/clarity.js';
|
|
7
9
|
import type { CloudflareWebAnalyticsInput } from './registry/cloudflare-web-analytics.js';
|
|
10
|
+
import type { CrispInput } from './registry/crisp.js';
|
|
8
11
|
import type { DatabuddyAnalyticsInput } from './registry/databuddy-analytics.js';
|
|
9
|
-
import type { MetaPixelInput } from './registry/meta-pixel.js';
|
|
10
12
|
import type { FathomAnalyticsInput } from './registry/fathom-analytics.js';
|
|
13
|
+
import type { GoogleAdsenseInput } from './registry/google-adsense.js';
|
|
14
|
+
import type { GoogleAnalyticsInput } from './registry/google-analytics.js';
|
|
15
|
+
import type { GoogleMapsInput } from './registry/google-maps.js';
|
|
16
|
+
import type { GoogleRecaptchaInput } from './registry/google-recaptcha.js';
|
|
17
|
+
import type { GoogleSignInInput } from './registry/google-sign-in.js';
|
|
18
|
+
import type { GoogleTagManagerInput } from './registry/google-tag-manager.js';
|
|
19
|
+
import type { GravatarInput } from './registry/gravatar.js';
|
|
11
20
|
import type { HotjarInput } from './registry/hotjar.js';
|
|
21
|
+
import type { InstagramEmbedInput } from './registry/instagram-embed.js';
|
|
12
22
|
import type { IntercomInput } from './registry/intercom.js';
|
|
13
|
-
import type {
|
|
23
|
+
import type { LemonSqueezyInput } from './registry/lemon-squeezy.js';
|
|
14
24
|
import type { MatomoAnalyticsInput } from './registry/matomo-analytics.js';
|
|
15
|
-
import type {
|
|
16
|
-
import type {
|
|
17
|
-
import type { XPixelInput } from './registry/x-pixel.js';
|
|
18
|
-
import type { SnapTrPixelInput } from './registry/snapchat-pixel.js';
|
|
19
|
-
import type { YouTubePlayerInput } from './registry/youtube-player.js';
|
|
20
|
-
import type { PlausibleAnalyticsInput } from './registry/plausible-analytics.js';
|
|
25
|
+
import type { MetaPixelInput } from './registry/meta-pixel.js';
|
|
26
|
+
import type { MixpanelAnalyticsInput } from './registry/mixpanel-analytics.js';
|
|
21
27
|
import type { NpmInput } from './registry/npm.js';
|
|
22
|
-
import type { LemonSqueezyInput } from './registry/lemon-squeezy.js';
|
|
23
|
-
import type { GoogleAdsenseInput } from './registry/google-adsense.js';
|
|
24
|
-
import type { ClarityInput } from './registry/clarity.js';
|
|
25
|
-
import type { CrispInput } from './registry/crisp.js';
|
|
26
|
-
import type { GoogleAnalyticsInput } from './registry/google-analytics.js';
|
|
27
|
-
import type { GoogleTagManagerInput } from './registry/google-tag-manager.js';
|
|
28
|
-
import type { UmamiAnalyticsInput } from './registry/umami-analytics.js';
|
|
29
|
-
import type { RybbitAnalyticsInput } from './registry/rybbit-analytics.js';
|
|
30
|
-
import type { RedditPixelInput } from './registry/reddit-pixel.js';
|
|
31
28
|
import type { PayPalInput } from './registry/paypal.js';
|
|
29
|
+
import type { PlausibleAnalyticsInput } from './registry/plausible-analytics.js';
|
|
32
30
|
import type { PostHogInput } from './registry/posthog.js';
|
|
33
|
-
import type {
|
|
31
|
+
import type { RedditPixelInput } from './registry/reddit-pixel.js';
|
|
32
|
+
import type { RybbitAnalyticsInput } from './registry/rybbit-analytics.js';
|
|
33
|
+
import type { SegmentInput } from './registry/segment.js';
|
|
34
|
+
import type { SnapTrPixelInput } from './registry/snapchat-pixel.js';
|
|
35
|
+
import type { StripeInput } from './registry/stripe.js';
|
|
34
36
|
import type { TikTokPixelInput } from './registry/tiktok-pixel.js';
|
|
37
|
+
import type { UmamiAnalyticsInput } from './registry/umami-analytics.js';
|
|
38
|
+
import type { VercelAnalyticsInput } from './registry/vercel-analytics.js';
|
|
39
|
+
import type { VimeoPlayerInput } from './registry/vimeo-player.js';
|
|
40
|
+
import type { XEmbedInput } from './registry/x-embed.js';
|
|
41
|
+
import type { XPixelInput } from './registry/x-pixel.js';
|
|
42
|
+
import type { YouTubePlayerInput } from './registry/youtube-player.js';
|
|
43
|
+
import type { ProxyPrivacyInput } from './server/utils/privacy.js';
|
|
44
|
+
export type { Cluster, ClusterStats, MarkerClustererContext, MarkerClustererInstance, MarkerClustererOptions } from './components/GoogleMaps/types.js';
|
|
45
|
+
export { MARKER_CLUSTERER_INJECTION_KEY } from './components/GoogleMaps/types.js';
|
|
35
46
|
export type WarmupStrategy = false | 'preload' | 'preconnect' | 'dns-prefetch';
|
|
36
|
-
|
|
47
|
+
/**
|
|
48
|
+
* GCMv2 consent category value.
|
|
49
|
+
* @see https://developers.google.com/tag-platform/security/guides/consent
|
|
50
|
+
*/
|
|
51
|
+
export type ConsentCategoryValue = 'granted' | 'denied';
|
|
52
|
+
/**
|
|
53
|
+
* Canonical GCMv2 consent state shape used by vendors that natively consume
|
|
54
|
+
* Consent Mode v2 (Google Analytics, Google Tag Manager, Bing UET).
|
|
55
|
+
*/
|
|
56
|
+
export interface ConsentState {
|
|
57
|
+
ad_storage?: ConsentCategoryValue;
|
|
58
|
+
ad_user_data?: ConsentCategoryValue;
|
|
59
|
+
ad_personalization?: ConsentCategoryValue;
|
|
60
|
+
analytics_storage?: ConsentCategoryValue;
|
|
61
|
+
functionality_storage?: ConsentCategoryValue;
|
|
62
|
+
personalization_storage?: ConsentCategoryValue;
|
|
63
|
+
security_storage?: ConsentCategoryValue;
|
|
64
|
+
}
|
|
65
|
+
export type UseScriptContext<T extends Record<symbol | string, any>, C = unknown> = VueScriptInstance<T> & {
|
|
37
66
|
/**
|
|
38
67
|
* Remove and reload the script. Useful for scripts that need to re-execute
|
|
39
68
|
* after SPA navigation (e.g., DOM-scanning scripts like iubenda).
|
|
40
69
|
*/
|
|
41
70
|
reload: () => Promise<T>;
|
|
71
|
+
/**
|
|
72
|
+
* Vendor-native consent controls attached by registry scripts.
|
|
73
|
+
* Shape depends on the vendor (GCMv2 update, binary grant/revoke, three-state, etc.).
|
|
74
|
+
*/
|
|
75
|
+
consent?: C;
|
|
42
76
|
};
|
|
43
77
|
export type NuxtUseScriptOptions<T extends Record<symbol | string, any> = {}> = Omit<UseScriptOptions<T>, 'trigger'> & {
|
|
44
78
|
/**
|
|
@@ -58,16 +92,16 @@ export type NuxtUseScriptOptions<T extends Record<symbol | string, any> = {}> =
|
|
|
58
92
|
*
|
|
59
93
|
* Note: Using 'force' may significantly increase build time as scripts will be re-downloaded on every build.
|
|
60
94
|
*
|
|
61
|
-
* @deprecated
|
|
95
|
+
* @deprecated Bundling is now auto-enabled per-script via capabilities. Set `bundle: false` per-script to disable.
|
|
62
96
|
*/
|
|
63
97
|
bundle?: boolean | 'force';
|
|
64
98
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
99
|
+
* Control proxying for this script.
|
|
100
|
+
* When `false`, collection requests go directly to the third-party server.
|
|
101
|
+
* When `true`, collection requests are proxied through `/_scripts/p/`.
|
|
102
|
+
* Defaults based on whether the script has a `proxy` capability in the registry.
|
|
69
103
|
*/
|
|
70
|
-
|
|
104
|
+
proxy?: boolean;
|
|
71
105
|
/**
|
|
72
106
|
* Load the script in a web worker using Partytown.
|
|
73
107
|
* When enabled, adds `type="text/partytown"` to the script tag.
|
|
@@ -104,6 +138,11 @@ export type NuxtUseScriptOptions<T extends Record<symbol | string, any> = {}> =
|
|
|
104
138
|
* @internal
|
|
105
139
|
*/
|
|
106
140
|
registryMeta?: Record<string, string>;
|
|
141
|
+
/**
|
|
142
|
+
* Known third-party domains this script communicates with.
|
|
143
|
+
* @internal
|
|
144
|
+
*/
|
|
145
|
+
domains?: string[];
|
|
107
146
|
};
|
|
108
147
|
/**
|
|
109
148
|
* @internal
|
|
@@ -137,10 +176,26 @@ export interface ConsentScriptTriggerOptions {
|
|
|
137
176
|
*/
|
|
138
177
|
postConsentTrigger?: ExcludePromises<NuxtUseScriptOptions['trigger']> | (() => Promise<any>);
|
|
139
178
|
}
|
|
179
|
+
export interface NuxtDevToolsNetworkRequest {
|
|
180
|
+
url: string;
|
|
181
|
+
startTime: number;
|
|
182
|
+
duration: number;
|
|
183
|
+
transferSize: number;
|
|
184
|
+
encodedBodySize: number;
|
|
185
|
+
decodedBodySize: number;
|
|
186
|
+
initiatorType: string;
|
|
187
|
+
dns: number;
|
|
188
|
+
connect: number;
|
|
189
|
+
ssl: number;
|
|
190
|
+
ttfb: number;
|
|
191
|
+
download: number;
|
|
192
|
+
isProxied: boolean;
|
|
193
|
+
}
|
|
140
194
|
export interface NuxtDevToolsScriptInstance {
|
|
141
195
|
registryKey?: string;
|
|
142
196
|
registryMeta?: Record<string, string>;
|
|
143
197
|
src: string;
|
|
198
|
+
domains?: string[];
|
|
144
199
|
$script: VueScriptInstance<any>;
|
|
145
200
|
events: {
|
|
146
201
|
type: string;
|
|
@@ -150,19 +205,25 @@ export interface NuxtDevToolsScriptInstance {
|
|
|
150
205
|
trigger?: NuxtUseScriptOptions['trigger'];
|
|
151
206
|
at: number;
|
|
152
207
|
}[];
|
|
208
|
+
networkRequests: NuxtDevToolsNetworkRequest[];
|
|
153
209
|
}
|
|
154
210
|
export interface ScriptRegistry {
|
|
211
|
+
bingUet?: BingUetInput;
|
|
212
|
+
blueskyEmbed?: BlueskyEmbedInput;
|
|
213
|
+
carbonAds?: true;
|
|
155
214
|
crisp?: CrispInput;
|
|
156
215
|
clarity?: ClarityInput;
|
|
157
216
|
cloudflareWebAnalytics?: CloudflareWebAnalyticsInput;
|
|
158
217
|
databuddyAnalytics?: DatabuddyAnalyticsInput;
|
|
159
218
|
metaPixel?: MetaPixelInput;
|
|
160
219
|
fathomAnalytics?: FathomAnalyticsInput;
|
|
220
|
+
instagramEmbed?: InstagramEmbedInput;
|
|
161
221
|
plausibleAnalytics?: PlausibleAnalyticsInput;
|
|
162
222
|
googleAdsense?: GoogleAdsenseInput;
|
|
163
223
|
googleAnalytics?: GoogleAnalyticsInput;
|
|
164
224
|
googleMaps?: GoogleMapsInput;
|
|
165
225
|
googleRecaptcha?: GoogleRecaptchaInput;
|
|
226
|
+
googleSignIn?: GoogleSignInInput;
|
|
166
227
|
lemonSqueezy?: LemonSqueezyInput;
|
|
167
228
|
googleTagManager?: GoogleTagManagerInput;
|
|
168
229
|
hotjar?: HotjarInput;
|
|
@@ -170,58 +231,163 @@ export interface ScriptRegistry {
|
|
|
170
231
|
paypal?: PayPalInput;
|
|
171
232
|
posthog?: PostHogInput;
|
|
172
233
|
matomoAnalytics?: MatomoAnalyticsInput;
|
|
234
|
+
mixpanelAnalytics?: MixpanelAnalyticsInput;
|
|
173
235
|
rybbitAnalytics?: RybbitAnalyticsInput;
|
|
174
236
|
redditPixel?: RedditPixelInput;
|
|
175
237
|
segment?: SegmentInput;
|
|
176
238
|
stripe?: StripeInput;
|
|
177
239
|
tiktokPixel?: TikTokPixelInput;
|
|
240
|
+
xEmbed?: XEmbedInput;
|
|
178
241
|
xPixel?: XPixelInput;
|
|
179
242
|
snapchatPixel?: SnapTrPixelInput;
|
|
180
243
|
youtubePlayer?: YouTubePlayerInput;
|
|
244
|
+
vercelAnalytics?: VercelAnalyticsInput;
|
|
181
245
|
vimeoPlayer?: VimeoPlayerInput;
|
|
182
246
|
umamiAnalytics?: UmamiAnalyticsInput;
|
|
247
|
+
gravatar?: GravatarInput;
|
|
248
|
+
npm?: NpmInput;
|
|
183
249
|
[key: `${string}-npm`]: NpmInput;
|
|
184
250
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
251
|
+
/**
|
|
252
|
+
* Built-in registry script keys — not affected by module augmentation.
|
|
253
|
+
* Use this to type-check records that must enumerate all built-in scripts (logos, meta, etc.).
|
|
254
|
+
*/
|
|
255
|
+
export type BuiltInRegistryScriptKey = 'bingUet' | 'blueskyEmbed' | 'carbonAds' | 'crisp' | 'clarity' | 'cloudflareWebAnalytics' | 'databuddyAnalytics' | 'metaPixel' | 'fathomAnalytics' | 'instagramEmbed' | 'plausibleAnalytics' | 'googleAdsense' | 'googleAnalytics' | 'googleMaps' | 'googleRecaptcha' | 'googleSignIn' | 'lemonSqueezy' | 'googleTagManager' | 'hotjar' | 'intercom' | 'paypal' | 'posthog' | 'matomoAnalytics' | 'mixpanelAnalytics' | 'rybbitAnalytics' | 'redditPixel' | 'segment' | 'stripe' | 'tiktokPixel' | 'xEmbed' | 'xPixel' | 'snapchatPixel' | 'youtubePlayer' | 'vercelAnalytics' | 'vimeoPlayer' | 'umamiAnalytics' | 'gravatar' | 'npm';
|
|
256
|
+
/**
|
|
257
|
+
* Union of all explicit registry script keys (excludes npm pattern).
|
|
258
|
+
* Includes both built-in and augmented keys.
|
|
259
|
+
*/
|
|
260
|
+
export type RegistryScriptKey = Exclude<keyof ScriptRegistry, `${string}-npm`>;
|
|
261
|
+
type RegistryConfigInput<T> = 0 extends 1 & T ? Record<string, any> : [T] extends [true] ? Record<string, never> : T;
|
|
262
|
+
export type NuxtConfigScriptRegistryEntry<T> = true | false | 'mock' | (RegistryConfigInput<T> & {
|
|
263
|
+
trigger?: NuxtUseScriptOptionsSerializable['trigger'] | false;
|
|
264
|
+
proxy?: boolean;
|
|
265
|
+
bundle?: boolean;
|
|
266
|
+
partytown?: boolean;
|
|
267
|
+
privacy?: ProxyPrivacyInput;
|
|
268
|
+
});
|
|
269
|
+
type _NuxtConfigScriptRegistryEntries = {
|
|
270
|
+
[K in keyof ScriptRegistry as K extends `${string}-npm` ? never : K]?: NuxtConfigScriptRegistryEntry<ScriptRegistry[K]>;
|
|
271
|
+
};
|
|
272
|
+
export interface NuxtConfigScriptRegistry extends _NuxtConfigScriptRegistryEntries {
|
|
273
|
+
[key: string]: any;
|
|
274
|
+
}
|
|
189
275
|
export type UseFunctionType<T, U> = T extends {
|
|
190
276
|
use: infer V;
|
|
191
277
|
} ? V extends (...args: any) => any ? ReturnType<V> : U : U;
|
|
192
|
-
|
|
193
|
-
export type EmptyOptionsSchema = typeof _emptyOptions;
|
|
278
|
+
export type EmptyOptionsSchema = ObjectSchema<ObjectEntries, undefined>;
|
|
194
279
|
type ScriptInput = Script;
|
|
195
|
-
export type InferIfSchema<T> = T extends ObjectSchema<any, any> ? InferInput<T> : T;
|
|
196
|
-
export
|
|
280
|
+
export type InferIfSchema<T> = T extends ObjectSchema<any, any> | UnionSchema<any, any> ? InferInput<T> : T;
|
|
281
|
+
export interface RegistryScriptInputExtras<Bundelable extends boolean = true, Usable extends boolean = false> {
|
|
197
282
|
/**
|
|
198
283
|
* A unique key to use for the script, this can be used to load multiple of the same script with different options.
|
|
199
284
|
*/
|
|
200
285
|
key?: string;
|
|
201
286
|
scriptInput?: ScriptInput;
|
|
202
287
|
scriptOptions?: Omit<NuxtUseScriptOptions, Bundelable extends true ? '' : 'bundle' | Usable extends true ? '' : 'use'>;
|
|
203
|
-
}
|
|
288
|
+
}
|
|
289
|
+
export type RegistryScriptInput<T = EmptyOptionsSchema, Bundelable extends boolean = true, Usable extends boolean = false> = Partial<InferIfSchema<T>> & RegistryScriptInputExtras<Bundelable, Usable>;
|
|
290
|
+
export interface RegistryScriptServerHandler {
|
|
291
|
+
route: string;
|
|
292
|
+
handler: string;
|
|
293
|
+
middleware?: boolean;
|
|
204
294
|
/**
|
|
205
|
-
*
|
|
295
|
+
* Whether this handler verifies HMAC signatures via `withSigning()`.
|
|
296
|
+
*
|
|
297
|
+
* When any enabled script registers a handler with `requiresSigning: true`,
|
|
298
|
+
* the module enforces that `NUXT_SCRIPTS_PROXY_SECRET` is set in production,
|
|
299
|
+
* and the `/_scripts/sign` endpoint will accept this route as a signable path.
|
|
206
300
|
*/
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
301
|
+
requiresSigning?: boolean;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Declares what optimization modes a script supports and what's active by default.
|
|
305
|
+
* Each flag is an independent capability that must be explicitly opted into.
|
|
306
|
+
*/
|
|
307
|
+
export interface ScriptCapabilities {
|
|
308
|
+
/** Script can be downloaded at build time and served from `/_scripts/assets/`. */
|
|
309
|
+
bundle?: boolean;
|
|
310
|
+
/**
|
|
311
|
+
* Collection requests can be proxied through `/_scripts/p/`.
|
|
312
|
+
* When combined with `bundle`: AST URL rewriting + runtime intercept.
|
|
313
|
+
* Without `bundle` (npm mode): autoInject sets SDK endpoint to proxy URL.
|
|
314
|
+
*/
|
|
315
|
+
proxy?: boolean;
|
|
316
|
+
/** Script can run in a web worker via Partytown. */
|
|
317
|
+
partytown?: boolean;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* A third-party domain the script communicates with.
|
|
321
|
+
* Used for proxy routing, AST rewriting, and connection warming (dns-prefetch/preconnect).
|
|
322
|
+
*/
|
|
323
|
+
export interface ScriptDomain {
|
|
324
|
+
/** The domain hostname (e.g., 'www.google-analytics.com') */
|
|
325
|
+
domain: string;
|
|
326
|
+
/**
|
|
327
|
+
* Whether this domain is used lazily (e.g., only after user interaction or SDK initialization).
|
|
328
|
+
* When `true`, connection warming uses `dns-prefetch` instead of `preconnect`.
|
|
329
|
+
* @default false
|
|
330
|
+
*/
|
|
331
|
+
lazy?: boolean;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Bundle capability config. When present, the script can be downloaded at
|
|
335
|
+
* build time and served from `/_scripts/assets/`.
|
|
336
|
+
*/
|
|
337
|
+
export interface BundleCapability {
|
|
338
|
+
/** Custom URL resolution. If omitted, the script's `src` is used. */
|
|
339
|
+
resolve?: (options?: any) => string | false;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Proxy capability config. When present, collection requests can be
|
|
343
|
+
* proxied through `/_scripts/p/`.
|
|
344
|
+
* When combined with bundle: AST URL rewriting + runtime intercept.
|
|
345
|
+
* Without bundle (npm/config mode): autoInject sets SDK endpoint to proxy URL.
|
|
346
|
+
*/
|
|
347
|
+
export interface ProxyCapability {
|
|
348
|
+
/** Third-party domains this script communicates with. */
|
|
349
|
+
domains: (string | ScriptDomain)[];
|
|
350
|
+
/** Privacy controls for proxied requests. */
|
|
351
|
+
privacy: import('../runtime/server/utils/privacy').ProxyPrivacyInput;
|
|
352
|
+
/** Auto-inject proxy endpoint into the script's SDK config. */
|
|
353
|
+
autoInject?: ProxyAutoInject;
|
|
354
|
+
/** AST-level SDK patches applied during URL rewriting. */
|
|
355
|
+
sdkPatches?: SdkPatch[];
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Declarative SDK patch applied during AST rewriting.
|
|
359
|
+
* Replaces fragile regex-based postProcess with targeted AST visitors.
|
|
360
|
+
*/
|
|
361
|
+
export type SdkPatch = {
|
|
362
|
+
type: 'neutralize-domain-check';
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Replace `<expr>.split("<separator>")[0]` patterns used by SDKs that derive
|
|
366
|
+
* their API host from `document.currentScript.src`. When bundled, the script src
|
|
367
|
+
* changes, breaking this derivation. This patch replaces the expression with
|
|
368
|
+
* the correct proxy path.
|
|
369
|
+
*/
|
|
370
|
+
| {
|
|
371
|
+
type: 'replace-src-split';
|
|
372
|
+
separator: string;
|
|
373
|
+
fromDomain: string;
|
|
374
|
+
appendPath?: string;
|
|
375
|
+
};
|
|
376
|
+
/**
|
|
377
|
+
* Partytown capability config. When present, the script can run in a
|
|
378
|
+
* web worker via Partytown.
|
|
379
|
+
*/
|
|
380
|
+
export interface PartytownCapability {
|
|
381
|
+
/** Global API forward declarations for Partytown. */
|
|
382
|
+
forwards: string[];
|
|
383
|
+
}
|
|
211
384
|
export interface RegistryScript {
|
|
212
|
-
import?: Import;
|
|
213
|
-
scriptBundling?: false | ((options?: any) => string | false);
|
|
214
385
|
/**
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
* - `false` - Explicitly disable first-party routing for this script
|
|
218
|
-
* - `undefined` - Use the default key derived from the function name
|
|
219
|
-
*
|
|
220
|
-
* When set to a string, the script's URLs will be rewritten and collection
|
|
221
|
-
* endpoints will be routed through your server when `scripts.firstParty` is enabled.
|
|
222
|
-
* @internal
|
|
386
|
+
* The config key used in `scripts.registry` in nuxt.config (e.g., 'googleAnalytics', 'plausibleAnalytics').
|
|
387
|
+
* Used for direct lookup from config to script.
|
|
223
388
|
*/
|
|
224
|
-
|
|
389
|
+
registryKey?: RegistryScriptKey;
|
|
390
|
+
import?: Import;
|
|
225
391
|
label?: string;
|
|
226
392
|
src?: string | false;
|
|
227
393
|
category?: string;
|
|
@@ -229,7 +395,97 @@ export interface RegistryScript {
|
|
|
229
395
|
light: string;
|
|
230
396
|
dark: string;
|
|
231
397
|
};
|
|
398
|
+
/** Server handlers (routes/middleware) to register when this script is enabled. */
|
|
399
|
+
serverHandlers?: RegistryScriptServerHandler[];
|
|
400
|
+
/** Valibot schema for the script's input options. */
|
|
401
|
+
schema?: ObjectSchema<ObjectEntries, any>;
|
|
402
|
+
/** Default env var field names and values for NUXT_PUBLIC_SCRIPTS_<SCRIPT>_<KEY> resolution. */
|
|
403
|
+
envDefaults?: Record<string, string>;
|
|
404
|
+
/**
|
|
405
|
+
* Bundle capability. Script can be downloaded at build time and served locally.
|
|
406
|
+
* - `true`: bundleable using the script's `src` URL
|
|
407
|
+
* - `{ resolve }`: bundleable with a custom URL resolution function
|
|
408
|
+
* - absent: not bundleable
|
|
409
|
+
*/
|
|
410
|
+
bundle?: BundleCapability | true;
|
|
411
|
+
/**
|
|
412
|
+
* Proxy capability. Collection requests are proxied through `/_scripts/p/`.
|
|
413
|
+
* - `ProxyCapability`: proxy-capable with inline config (domains, privacy, etc.)
|
|
414
|
+
* - `RegistryScriptKey` string: alias, inherits proxy config from the referenced script
|
|
415
|
+
* - absent: not proxy-capable
|
|
416
|
+
*/
|
|
417
|
+
proxy?: ProxyCapability | RegistryScriptKey;
|
|
418
|
+
/**
|
|
419
|
+
* Partytown capability. Script can run in a web worker via Partytown.
|
|
420
|
+
* - `PartytownCapability`: partytown-capable with forward declarations
|
|
421
|
+
* - absent: not partytown-capable
|
|
422
|
+
*/
|
|
423
|
+
partytown?: PartytownCapability;
|
|
232
424
|
}
|
|
233
425
|
export type ElementScriptTrigger = 'immediate' | 'visible' | string | string[] | false;
|
|
234
426
|
export type RegistryScripts = RegistryScript[];
|
|
235
|
-
export {
|
|
427
|
+
export interface ProxyRewrite {
|
|
428
|
+
/** Domain and path to match (e.g., 'www.google-analytics.com/g/collect') */
|
|
429
|
+
from: string;
|
|
430
|
+
/** Local path to rewrite to (e.g., '/_scripts/p/ga/g/collect') */
|
|
431
|
+
to: string;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Global privacy override for all proxied requests.
|
|
435
|
+
*
|
|
436
|
+
* By default (`undefined`), each script uses its own privacy controls declared in the registry.
|
|
437
|
+
* Setting this overrides all per-script defaults:
|
|
438
|
+
*
|
|
439
|
+
* - `true`: full anonymization (IP, UA, language, screen, timezone, hardware)
|
|
440
|
+
* - `false`: passthrough (still strips sensitive auth headers)
|
|
441
|
+
* - `{ ip: false }`: selective override per flag
|
|
442
|
+
*/
|
|
443
|
+
export type FirstPartyPrivacy = ProxyPrivacyInput;
|
|
444
|
+
/**
|
|
445
|
+
* Auto-inject proxy endpoint into the script's SDK config.
|
|
446
|
+
* Used by scripts that let you configure the collection endpoint (PostHog, Plausible, etc.).
|
|
447
|
+
*
|
|
448
|
+
* Simple form: `{ field, target }` where target is appended to proxyPrefix.
|
|
449
|
+
* Complex form: `{ field, resolve }` for dynamic endpoint computation.
|
|
450
|
+
*/
|
|
451
|
+
export interface ProxyAutoInject {
|
|
452
|
+
/** The config field name to set (e.g., 'apiHost', 'endpoint') */
|
|
453
|
+
field: string;
|
|
454
|
+
/** Domain and path appended to proxyPrefix. Sugar for `resolve: (p) => p + '/' + target`. */
|
|
455
|
+
target?: string;
|
|
456
|
+
/** Compute the proxy endpoint value from the proxyPrefix and script config. Use for dynamic logic (e.g., region-based endpoints). */
|
|
457
|
+
resolve?: (proxyPrefix: string, config: Record<string, any>) => string;
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Resolved auto-inject config with a guaranteed computeValue function.
|
|
461
|
+
* Used in ProxyConfig output after normalization.
|
|
462
|
+
*/
|
|
463
|
+
export interface ResolvedProxyAutoInject {
|
|
464
|
+
configField: string;
|
|
465
|
+
computeValue: (proxyPrefix: string, config: Record<string, any>) => string;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Proxy configuration for third-party scripts.
|
|
469
|
+
* Each supported script declares its domains, privacy controls, and optional SDK-specific hooks.
|
|
470
|
+
*
|
|
471
|
+
* The AST rewriter derives rewrite rules automatically from domains:
|
|
472
|
+
* { from: domain, to: proxyPrefix + '/' + domain }
|
|
473
|
+
*
|
|
474
|
+
* The runtime intercept plugin catches any remaining dynamic URLs at the
|
|
475
|
+
* fetch/sendBeacon/XHR/Image call site.
|
|
476
|
+
*/
|
|
477
|
+
export interface ProxyConfig {
|
|
478
|
+
/** Third-party domains to proxy. AST rewrites are derived automatically. */
|
|
479
|
+
domains: string[];
|
|
480
|
+
/**
|
|
481
|
+
* Per-script privacy controls. Each script declares what it needs.
|
|
482
|
+
* - `true` (default) = full anonymize: IP, UA, language, screen, timezone, hardware fingerprints
|
|
483
|
+
* - `false` = passthrough (still strips sensitive auth headers)
|
|
484
|
+
* - `{ ip: false }` = selective (unset flags default to `false`)
|
|
485
|
+
*/
|
|
486
|
+
privacy: ProxyPrivacyInput;
|
|
487
|
+
/** Auto-inject proxy endpoint config into the script's SDK options (resolved form) */
|
|
488
|
+
autoInject?: ResolvedProxyAutoInject;
|
|
489
|
+
/** AST-level SDK patches applied during URL rewriting. */
|
|
490
|
+
sdkPatches?: SdkPatch[];
|
|
491
|
+
}
|
package/dist/runtime/types.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
const _emptyOptions = object({});
|
|
1
|
+
export { MARKER_CLUSTERER_INJECTION_KEY } from "./components/GoogleMaps/types.js";
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
export interface ProxyRewrite {
|
|
5
5
|
/** Domain and path to match (e.g., 'www.google-analytics.com/g/collect') */
|
|
6
6
|
from: string;
|
|
7
|
-
/** Local path to rewrite to (e.g., '/_scripts/
|
|
7
|
+
/** Local path to rewrite to (e.g., '/_scripts/p/ga/g/collect') */
|
|
8
8
|
to: string;
|
|
9
9
|
}
|
package/dist/runtime/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EmptyOptionsSchema, InferIfSchema, NuxtUseScriptOptions, RegistryScriptInput, ScriptRegistry, UseFunctionType, UseScriptContext } from '#nuxt-scripts/types';
|
|
2
2
|
import type { UseScriptInput } from '@unhead/vue';
|
|
3
|
-
import type {
|
|
3
|
+
import type { ObjectSchema, UnionSchema } from 'valibot';
|
|
4
4
|
export type MaybePromise<T> = Promise<T> | T;
|
|
5
5
|
type OptionsFn<O> = (options: InferIfSchema<O>, ctx: {
|
|
6
6
|
scriptInput?: UseScriptInput & {
|
|
@@ -9,10 +9,12 @@ type OptionsFn<O> = (options: InferIfSchema<O>, ctx: {
|
|
|
9
9
|
}) => ({
|
|
10
10
|
scriptInput?: UseScriptInput;
|
|
11
11
|
scriptOptions?: NuxtUseScriptOptions;
|
|
12
|
-
schema?: O extends ObjectSchema<any, any> ? O : undefined;
|
|
12
|
+
schema?: O extends ObjectSchema<any, any> | UnionSchema<any, any> ? O : undefined;
|
|
13
13
|
clientInit?: () => void | Promise<any>;
|
|
14
14
|
scriptMode?: 'external' | 'npm';
|
|
15
15
|
});
|
|
16
16
|
export declare function scriptRuntimeConfig<T extends keyof ScriptRegistry>(key: T): ScriptRegistry[T];
|
|
17
|
+
export declare function scriptsPrefix(): string;
|
|
18
|
+
export declare function requireRegistryEndpoint(componentName: string, registryKey: string): void;
|
|
17
19
|
export declare function useRegistryScript<T extends Record<string | symbol, any>, O = EmptyOptionsSchema>(registryKey: keyof ScriptRegistry | string, optionsFn: OptionsFn<O>, _userOptions?: RegistryScriptInput<O>): UseScriptContext<UseFunctionType<NuxtUseScriptOptions<T>, T>>;
|
|
18
|
-
export
|
|
20
|
+
export {};
|