@nuxt/scripts 1.0.0-beta.7 → 1.0.0-rc.2
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/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/B3kN3DAy.js +1 -0
- package/dist/devtools-client/_nuxt/B8PEiB0p.js +1 -0
- package/dist/devtools-client/_nuxt/C8jhSQ8l.js +1 -0
- package/dist/devtools-client/_nuxt/CJD6wrkT.js +188 -0
- package/dist/devtools-client/_nuxt/CfOsp0mU.js +1 -0
- package/dist/devtools-client/_nuxt/DKL6PHO3.js +1 -0
- package/dist/devtools-client/_nuxt/ajngqPCs.js +1 -0
- package/dist/devtools-client/_nuxt/builds/latest.json +1 -0
- package/dist/devtools-client/_nuxt/builds/meta/cb4e67c6-e8b7-4205-95b7-708fd96ffab6.json +1 -0
- package/dist/devtools-client/_nuxt/dlaR8P-P.js +1 -0
- package/dist/devtools-client/_nuxt/entry.BwpOBArY.css +1 -0
- package/dist/devtools-client/_nuxt/error-404.CvOVjXeC.css +1 -0
- package/dist/devtools-client/_nuxt/error-500.BIm53nmx.css +1 -0
- package/dist/devtools-client/_nuxt/first-party.C8Ha4JLM.css +1 -0
- package/dist/devtools-client/_nuxt/index.CA-OpSj0.css +1 -0
- package/dist/devtools-client/_nuxt/registry.B9lnjF_b.css +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 +29 -84
- package/dist/module.d.ts +121 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +940 -755
- package/dist/registry.d.mts +91 -4
- package/dist/registry.d.ts +93 -0
- package/dist/registry.mjs +668 -326
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.d.vue.ts +19 -87
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue +79 -180
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue.d.ts +19 -87
- 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 +70 -73
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarker.vue.d.ts +24 -42
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.d.vue.ts +42 -5
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue +83 -37
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsMarkerClusterer.vue.d.ts +42 -5
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.d.vue.ts +77 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue +223 -0
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsOverlayView.vue.d.ts +77 -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 +166 -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/useGoogleMapsResource.d.ts +48 -0
- package/dist/runtime/components/GoogleMaps/useGoogleMapsResource.js +51 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.d.vue.ts +84 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.vue +89 -0
- package/dist/runtime/components/ScriptBlueskyEmbed.vue.d.ts +84 -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 +9 -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 -13
- package/dist/runtime/components/ScriptXEmbed.vue +15 -8
- package/dist/runtime/components/ScriptXEmbed.vue.d.ts +10 -13
- 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 +148 -8
- package/dist/runtime/composables/useScriptEventPage.js +2 -2
- 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/registry/bing-uet.d.ts +20 -0
- package/dist/runtime/registry/bing-uet.js +29 -0
- package/dist/runtime/registry/bluesky-embed.d.ts +116 -0
- package/dist/runtime/registry/bluesky-embed.js +72 -0
- package/dist/runtime/registry/clarity.d.ts +10 -15
- package/dist/runtime/registry/clarity.js +22 -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 +3 -5
- package/dist/runtime/registry/google-analytics.js +3 -8
- 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 +3 -28
- package/dist/runtime/registry/google-tag-manager.js +4 -27
- package/dist/runtime/registry/gravatar.d.ts +26 -0
- package/dist/runtime/registry/gravatar.js +36 -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 +3 -12
- package/dist/runtime/registry/matomo-analytics.js +3 -12
- package/dist/runtime/registry/meta-pixel.d.ts +4 -6
- package/dist/runtime/registry/meta-pixel.js +2 -4
- package/dist/runtime/registry/mixpanel-analytics.d.ts +22 -0
- package/dist/runtime/registry/mixpanel-analytics.js +46 -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 +10 -12
- package/dist/runtime/registry/posthog.js +3 -12
- 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 +982 -0
- package/dist/runtime/registry/schemas.js +937 -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 +4 -7
- package/dist/runtime/registry/tiktok-pixel.js +2 -6
- 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 -17
- package/dist/runtime/registry/x-embed.js +3 -18
- 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 +16 -0
- package/dist/runtime/server/bluesky-embed.js +59 -0
- package/dist/runtime/server/google-maps-geocode-proxy.d.ts +2 -0
- package/dist/runtime/server/google-maps-geocode-proxy.js +34 -0
- package/dist/runtime/server/google-static-maps-proxy.js +2 -13
- 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.js +8 -41
- package/dist/runtime/server/instagram-embed-image.js +6 -53
- package/dist/runtime/server/instagram-embed.d.ts +16 -0
- package/dist/runtime/server/instagram-embed.js +176 -35
- package/dist/runtime/server/proxy-handler.js +101 -83
- package/dist/runtime/server/utils/image-proxy.d.ts +12 -0
- package/dist/runtime/server/utils/image-proxy.js +70 -0
- package/dist/runtime/server/utils/privacy.d.ts +1 -10
- package/dist/runtime/server/utils/privacy.js +60 -40
- package/dist/runtime/server/x-embed-image.js +5 -49
- package/dist/runtime/server/x-embed.js +3 -2
- package/dist/runtime/types.d.ts +277 -53
- package/dist/runtime/types.js +0 -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 +3875 -0
- package/dist/types-source.d.mts +17 -0
- package/dist/types-source.d.ts +17 -0
- package/dist/types-source.mjs +3835 -0
- package/dist/types.d.mts +4 -2
- package/package.json +35 -61
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import { computed, onBeforeUnmount, onMounted, ref, watch } from "vue";
|
|
3
2
|
import { defu } from "defu";
|
|
4
3
|
import { useHead } from "nuxt/app";
|
|
4
|
+
import { computed, onBeforeUnmount, onMounted, ref, watch } from "vue";
|
|
5
5
|
import { useScriptTriggerElement } from "../composables/useScriptTriggerElement";
|
|
6
6
|
import { useScriptYouTubePlayer } from "../registry/youtube-player";
|
|
7
7
|
import ScriptAriaLoadingIndicator from "./ScriptAriaLoadingIndicator.vue";
|
|
@@ -22,6 +22,7 @@ const props = defineProps({
|
|
|
22
22
|
placeholderObjectFit: { type: String, required: false, default: "cover" }
|
|
23
23
|
});
|
|
24
24
|
const emits = defineEmits(["ready", "state-change", "playback-quality-change", "playback-rate-change", "error", "api-change"]);
|
|
25
|
+
defineSlots();
|
|
25
26
|
const events = [
|
|
26
27
|
"onReady",
|
|
27
28
|
"onStateChange",
|
|
@@ -30,6 +31,7 @@ const events = [
|
|
|
30
31
|
"onError",
|
|
31
32
|
"onApiChange"
|
|
32
33
|
];
|
|
34
|
+
const CAMEL_CASE_RE = /([A-Z])/g;
|
|
33
35
|
const rootEl = ref();
|
|
34
36
|
const youtubeEl = ref();
|
|
35
37
|
const ready = ref(false);
|
|
@@ -70,9 +72,11 @@ onMounted(() => {
|
|
|
70
72
|
onLoaded(async (instance) => {
|
|
71
73
|
if (!isTriggered.value && trigger instanceof Promise) {
|
|
72
74
|
const triggered = await trigger;
|
|
73
|
-
if (!triggered)
|
|
75
|
+
if (!triggered)
|
|
76
|
+
return;
|
|
74
77
|
}
|
|
75
|
-
if (!youtubeEl.value)
|
|
78
|
+
if (!youtubeEl.value)
|
|
79
|
+
return;
|
|
76
80
|
const YouTube = instance.YT instanceof Promise ? await instance.YT : instance.YT;
|
|
77
81
|
await new Promise((resolve) => {
|
|
78
82
|
if (typeof YT.Player === "undefined")
|
|
@@ -80,7 +84,8 @@ onMounted(() => {
|
|
|
80
84
|
else
|
|
81
85
|
resolve();
|
|
82
86
|
});
|
|
83
|
-
if (!youtubeEl.value)
|
|
87
|
+
if (!youtubeEl.value)
|
|
88
|
+
return;
|
|
84
89
|
player.value = new YT.Player(youtubeEl.value, {
|
|
85
90
|
host: !props.cookies ? "https://www.youtube-nocookie.com" : "https://www.youtube.com",
|
|
86
91
|
videoId: props.videoId,
|
|
@@ -89,7 +94,7 @@ onMounted(() => {
|
|
|
89
94
|
playerVars: props.playerVars,
|
|
90
95
|
...props.playerOptions,
|
|
91
96
|
events: Object.fromEntries(events.map((event) => [event, (e) => {
|
|
92
|
-
const emitEventName = event.replace(
|
|
97
|
+
const emitEventName = event.replace(CAMEL_CASE_RE, "-$1").replace("on-", "").toLowerCase();
|
|
93
98
|
emits(emitEventName, e);
|
|
94
99
|
if (event === "onReady") {
|
|
95
100
|
ready.value = true;
|
|
@@ -151,6 +156,8 @@ const placeholderAttrs = computed(() => {
|
|
|
151
156
|
src: isFallbackPlaceHolder.value ? fallbackPlaceHolder.value : placeholder.value,
|
|
152
157
|
alt: "",
|
|
153
158
|
loading: props.aboveTheFold ? "eager" : "lazy",
|
|
159
|
+
// @ts-expect-error untyped
|
|
160
|
+
fetchpriority: props.aboveTheFold ? "high" : void 0,
|
|
154
161
|
style: {
|
|
155
162
|
width: "100%",
|
|
156
163
|
objectFit: props.placeholderObjectFit,
|
|
@@ -27,19 +27,14 @@ type __VLS_Props = {
|
|
|
27
27
|
*/
|
|
28
28
|
placeholderObjectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
|
|
29
29
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
awaitingLoad?: (props: typeof __VLS_10) => any;
|
|
39
|
-
} & {
|
|
40
|
-
error?: (props: typeof __VLS_12) => any;
|
|
41
|
-
} & {
|
|
42
|
-
default?: (props: typeof __VLS_14) => any;
|
|
30
|
+
type __VLS_Slots = {
|
|
31
|
+
default?: () => any;
|
|
32
|
+
placeholder?: (props: {
|
|
33
|
+
placeholder: string;
|
|
34
|
+
}) => any;
|
|
35
|
+
loading?: () => any;
|
|
36
|
+
awaitingLoad?: () => any;
|
|
37
|
+
error?: () => any;
|
|
43
38
|
};
|
|
44
39
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
|
|
45
40
|
player: Ref<YT.Player | undefined, YT.Player | undefined>;
|
|
@@ -61,12 +56,12 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
|
|
|
61
56
|
trigger: ElementScriptTrigger;
|
|
62
57
|
width: number;
|
|
63
58
|
height: number;
|
|
64
|
-
playerVars: YT.PlayerVars;
|
|
65
59
|
ratio: string;
|
|
60
|
+
placeholderObjectFit: "cover" | "contain" | "fill" | "none" | "scale-down";
|
|
61
|
+
playerVars: YT.PlayerVars;
|
|
66
62
|
cookies: boolean;
|
|
67
63
|
thumbnailSize: YoutubeThumbnailSize;
|
|
68
64
|
webp: boolean;
|
|
69
|
-
placeholderObjectFit: "cover" | "contain" | "fill" | "none" | "scale-down";
|
|
70
65
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
71
66
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
72
67
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,9 +1,100 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveTrigger } from "#build/nuxt-scripts-trigger-resolver";
|
|
2
2
|
import { useScript as _useScript } from "@unhead/vue/scripts";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { defu } from "defu";
|
|
4
|
+
import { injectHead, onNuxtReady, useHead, useNuxtApp, useRuntimeConfig } from "nuxt/app";
|
|
5
|
+
import { markRaw, ref } from "vue";
|
|
5
6
|
import { logger } from "../logger.js";
|
|
6
|
-
|
|
7
|
+
function resolveProxyPrefix() {
|
|
8
|
+
const devtoolsConfig = useRuntimeConfig().public["nuxt-scripts-devtools"];
|
|
9
|
+
return devtoolsConfig?.proxyPrefix || "/_scripts/p";
|
|
10
|
+
}
|
|
11
|
+
function toNetworkRequest(entry, proxyPrefix) {
|
|
12
|
+
const isProxied = entry.name.includes(`${proxyPrefix}/`);
|
|
13
|
+
return {
|
|
14
|
+
url: entry.name,
|
|
15
|
+
startTime: entry.startTime,
|
|
16
|
+
duration: entry.duration,
|
|
17
|
+
transferSize: entry.transferSize,
|
|
18
|
+
encodedBodySize: entry.encodedBodySize,
|
|
19
|
+
decodedBodySize: entry.decodedBodySize,
|
|
20
|
+
initiatorType: entry.initiatorType,
|
|
21
|
+
dns: entry.domainLookupEnd - entry.domainLookupStart,
|
|
22
|
+
connect: entry.connectEnd - entry.connectStart,
|
|
23
|
+
ssl: entry.secureConnectionStart > 0 ? entry.connectEnd - entry.secureConnectionStart : 0,
|
|
24
|
+
ttfb: entry.responseStart - entry.requestStart,
|
|
25
|
+
download: entry.responseEnd - entry.responseStart,
|
|
26
|
+
isProxied
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function createDomainMatcher(domains, proxyPrefix) {
|
|
30
|
+
const localHostname = window.location.hostname;
|
|
31
|
+
return function matchesScript(entry) {
|
|
32
|
+
try {
|
|
33
|
+
const entryUrl = new URL(entry.name, window.location.origin);
|
|
34
|
+
if (entryUrl.hostname !== localHostname && domains.has(entryUrl.hostname))
|
|
35
|
+
return true;
|
|
36
|
+
const proxyPath = `${proxyPrefix}/`;
|
|
37
|
+
const proxyIdx = entryUrl.pathname.indexOf(proxyPath);
|
|
38
|
+
if (proxyIdx !== -1) {
|
|
39
|
+
const afterPrefix = entryUrl.pathname.slice(proxyIdx + proxyPath.length);
|
|
40
|
+
const proxyDomain = afterPrefix.split("/")[0];
|
|
41
|
+
if (proxyDomain && domains.has(proxyDomain))
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
} catch {
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function observeNetworkRequests(payload, domains, onUpdate) {
|
|
50
|
+
if (typeof PerformanceObserver === "undefined")
|
|
51
|
+
return () => {
|
|
52
|
+
};
|
|
53
|
+
const proxyPrefix = resolveProxyPrefix();
|
|
54
|
+
const matchesScript = createDomainMatcher(domains, proxyPrefix);
|
|
55
|
+
const seen = /* @__PURE__ */ new Set();
|
|
56
|
+
function entryKey(entry) {
|
|
57
|
+
return `${entry.name}@${entry.startTime}`;
|
|
58
|
+
}
|
|
59
|
+
function processEntry(entry) {
|
|
60
|
+
const key = entryKey(entry);
|
|
61
|
+
if (seen.has(key))
|
|
62
|
+
return false;
|
|
63
|
+
if (!matchesScript(entry))
|
|
64
|
+
return false;
|
|
65
|
+
seen.add(key);
|
|
66
|
+
payload.networkRequests.push(toNetworkRequest(entry, proxyPrefix));
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
for (const entry of performance.getEntriesByType("resource"))
|
|
70
|
+
processEntry(entry);
|
|
71
|
+
const observer = new PerformanceObserver((list) => {
|
|
72
|
+
let added = false;
|
|
73
|
+
for (const entry of list.getEntries()) {
|
|
74
|
+
if (processEntry(entry))
|
|
75
|
+
added = true;
|
|
76
|
+
}
|
|
77
|
+
if (added)
|
|
78
|
+
onUpdate();
|
|
79
|
+
});
|
|
80
|
+
observer.observe({ type: "resource", buffered: false });
|
|
81
|
+
return () => observer.disconnect();
|
|
82
|
+
}
|
|
83
|
+
function extractExternalHostname(src) {
|
|
84
|
+
if (!src)
|
|
85
|
+
return "";
|
|
86
|
+
try {
|
|
87
|
+
const hostname = new URL(src, window.location.origin).hostname;
|
|
88
|
+
return hostname === window.location.hostname ? "" : hostname;
|
|
89
|
+
} catch {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function ensureScripts(nuxtApp) {
|
|
94
|
+
if (!nuxtApp.$scripts) {
|
|
95
|
+
nuxtApp.$scripts = {};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
7
98
|
function useNuxtScriptRuntimeConfig() {
|
|
8
99
|
return useRuntimeConfig().public["nuxt-scripts"];
|
|
9
100
|
}
|
|
@@ -22,16 +113,44 @@ export function useScript(input, options) {
|
|
|
22
113
|
script: [{ src, type: "text/partytown" }]
|
|
23
114
|
});
|
|
24
115
|
const nuxtApp2 = useNuxtApp();
|
|
25
|
-
nuxtApp2
|
|
116
|
+
ensureScripts(nuxtApp2);
|
|
26
117
|
const status = ref("loaded");
|
|
118
|
+
let disconnectObserver = () => {
|
|
119
|
+
};
|
|
27
120
|
const stub = {
|
|
28
121
|
id: src,
|
|
29
122
|
status,
|
|
30
123
|
load: () => Promise.resolve({}),
|
|
31
|
-
remove: () =>
|
|
124
|
+
remove: () => {
|
|
125
|
+
disconnectObserver();
|
|
126
|
+
return false;
|
|
127
|
+
},
|
|
32
128
|
entry: void 0
|
|
33
129
|
};
|
|
34
130
|
nuxtApp2.$scripts[src] = stub;
|
|
131
|
+
if (import.meta.dev && import.meta.client) {
|
|
132
|
+
let syncScripts = function() {
|
|
133
|
+
nuxtApp2._scripts[src] = payload;
|
|
134
|
+
nuxtApp2.hooks.callHook("scripts:updated", { scripts: nuxtApp2._scripts });
|
|
135
|
+
};
|
|
136
|
+
nuxtApp2._scripts = nuxtApp2._scripts || {};
|
|
137
|
+
const scriptHostname = extractExternalHostname(src);
|
|
138
|
+
const domains = /* @__PURE__ */ new Set([
|
|
139
|
+
...scriptHostname ? [scriptHostname] : [],
|
|
140
|
+
...options.devtools?.domains || []
|
|
141
|
+
]);
|
|
142
|
+
const payload = {
|
|
143
|
+
...options.devtools,
|
|
144
|
+
src,
|
|
145
|
+
$script: stub,
|
|
146
|
+
events: [
|
|
147
|
+
{ type: "status", status: "loaded", at: Date.now() }
|
|
148
|
+
],
|
|
149
|
+
networkRequests: []
|
|
150
|
+
};
|
|
151
|
+
disconnectObserver = observeNetworkRequests(payload, domains, syncScripts);
|
|
152
|
+
syncScripts();
|
|
153
|
+
}
|
|
35
154
|
return stub;
|
|
36
155
|
}
|
|
37
156
|
if (import.meta.dev && options.bundle === "unsupported") {
|
|
@@ -50,7 +169,7 @@ export function useScript(input, options) {
|
|
|
50
169
|
if (!options.head) {
|
|
51
170
|
throw new Error("useScript() has been called without Nuxt context.");
|
|
52
171
|
}
|
|
53
|
-
nuxtApp
|
|
172
|
+
ensureScripts(nuxtApp);
|
|
54
173
|
const exists = !!nuxtApp.$scripts?.[id];
|
|
55
174
|
const err = options._validate?.();
|
|
56
175
|
if (import.meta.dev && import.meta.client && err) {
|
|
@@ -109,7 +228,8 @@ export function useScript(input, options) {
|
|
|
109
228
|
...options.devtools,
|
|
110
229
|
src: input.src,
|
|
111
230
|
$script: null,
|
|
112
|
-
events: []
|
|
231
|
+
events: [],
|
|
232
|
+
networkRequests: []
|
|
113
233
|
};
|
|
114
234
|
nuxtApp._scripts = nuxtApp._scripts || {};
|
|
115
235
|
if (!nuxtApp._scripts[instance.id]) {
|
|
@@ -149,8 +269,28 @@ export function useScript(input, options) {
|
|
|
149
269
|
trigger: options?.trigger,
|
|
150
270
|
at: Date.now()
|
|
151
271
|
});
|
|
272
|
+
const scriptHostname = extractExternalHostname(input.src);
|
|
273
|
+
const domains = /* @__PURE__ */ new Set([
|
|
274
|
+
...scriptHostname ? [scriptHostname] : [],
|
|
275
|
+
...options.devtools?.domains || []
|
|
276
|
+
]);
|
|
277
|
+
let disconnectObserver = observeNetworkRequests(payload, domains, syncScripts);
|
|
278
|
+
const _origRemove = instance.remove;
|
|
279
|
+
const _origReload = instance.reload;
|
|
280
|
+
instance.remove = () => {
|
|
281
|
+
disconnectObserver();
|
|
282
|
+
return _origRemove();
|
|
283
|
+
};
|
|
284
|
+
instance.reload = async () => {
|
|
285
|
+
disconnectObserver();
|
|
286
|
+
const result = await _origReload();
|
|
287
|
+
disconnectObserver = observeNetworkRequests(payload, domains, syncScripts);
|
|
288
|
+
return result;
|
|
289
|
+
};
|
|
152
290
|
syncScripts();
|
|
153
291
|
}
|
|
154
292
|
}
|
|
293
|
+
markRaw(instance);
|
|
294
|
+
instance.toJSON = () => ({ id: instance.id, status: instance.status.value });
|
|
155
295
|
return instance;
|
|
156
296
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useNuxtApp, useRoute
|
|
2
|
-
import {
|
|
1
|
+
import { injectHead, useNuxtApp, useRoute } from "nuxt/app";
|
|
2
|
+
import { onScopeDispose, ref } from "vue";
|
|
3
3
|
export function useScriptEventPage(onChange) {
|
|
4
4
|
const nuxt = useNuxtApp();
|
|
5
5
|
const route = useRoute();
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
1
2
|
import type { ConsentScriptTriggerOptions } from '../types.js';
|
|
2
3
|
interface UseConsentScriptTriggerApi extends Promise<void> {
|
|
3
4
|
/**
|
|
4
5
|
* A function that can be called to accept the consent and load the script.
|
|
5
6
|
*/
|
|
6
7
|
accept: () => void;
|
|
8
|
+
/**
|
|
9
|
+
* A function that can be called to revoke consent and signal the script should be unloaded.
|
|
10
|
+
*/
|
|
11
|
+
revoke: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Reactive reference to the consent state
|
|
14
|
+
*/
|
|
15
|
+
consented: Ref<boolean>;
|
|
7
16
|
}
|
|
8
17
|
/**
|
|
9
18
|
* Load a script once consent has been provided either through a resolvable `consent` or calling the `accept` method.
|
|
19
|
+
* Supports revoking consent via the reactive `consented` ref. Consumers should watch `consented` to react to revocation.
|
|
10
20
|
* @param options
|
|
11
21
|
*/
|
|
12
22
|
export declare function useScriptTriggerConsent(options?: ConsentScriptTriggerOptions): UseConsentScriptTriggerApi;
|
|
@@ -1,14 +1,37 @@
|
|
|
1
|
+
import { onNuxtReady, requestIdleCallback, tryUseNuxtApp } from "nuxt/app";
|
|
1
2
|
import { isRef, ref, toValue, watch } from "vue";
|
|
2
|
-
import { tryUseNuxtApp, onNuxtReady, requestIdleCallback } from "nuxt/app";
|
|
3
3
|
export function useScriptTriggerConsent(options) {
|
|
4
|
-
if (import.meta.server)
|
|
5
|
-
|
|
4
|
+
if (import.meta.server) {
|
|
5
|
+
const p = new Promise(() => {
|
|
6
6
|
});
|
|
7
|
+
p.accept = () => {
|
|
8
|
+
};
|
|
9
|
+
p.revoke = () => {
|
|
10
|
+
};
|
|
11
|
+
p.consented = ref(false);
|
|
12
|
+
return p;
|
|
13
|
+
}
|
|
7
14
|
const consented = ref(false);
|
|
8
15
|
const nuxtApp = tryUseNuxtApp();
|
|
16
|
+
if (options?.consent) {
|
|
17
|
+
if (isRef(options?.consent)) {
|
|
18
|
+
watch(options.consent, (_val) => {
|
|
19
|
+
const val = toValue(_val);
|
|
20
|
+
consented.value = Boolean(val);
|
|
21
|
+
}, { immediate: true });
|
|
22
|
+
} else if (typeof options?.consent === "boolean") {
|
|
23
|
+
consented.value = options?.consent;
|
|
24
|
+
} else if (options?.consent instanceof Promise) {
|
|
25
|
+
options.consent.then((res) => {
|
|
26
|
+
consented.value = typeof res === "boolean" ? res : true;
|
|
27
|
+
}).catch(() => {
|
|
28
|
+
consented.value = false;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
9
32
|
const promise = new Promise((resolve) => {
|
|
10
|
-
watch(consented, (
|
|
11
|
-
if (
|
|
33
|
+
watch(consented, (newValue, oldValue) => {
|
|
34
|
+
if (newValue && !oldValue) {
|
|
12
35
|
const runner = nuxtApp?.runWithContext || ((cb) => cb());
|
|
13
36
|
if (options?.postConsentTrigger instanceof Promise) {
|
|
14
37
|
options.postConsentTrigger.then(() => runner(resolve));
|
|
@@ -32,24 +55,14 @@ export function useScriptTriggerConsent(options) {
|
|
|
32
55
|
}
|
|
33
56
|
runner(resolve);
|
|
34
57
|
}
|
|
35
|
-
});
|
|
36
|
-
if (options?.consent) {
|
|
37
|
-
if (isRef(options?.consent)) {
|
|
38
|
-
watch(options.consent, (_val) => {
|
|
39
|
-
const val = toValue(_val);
|
|
40
|
-
consented.value = Boolean(val);
|
|
41
|
-
}, { immediate: true });
|
|
42
|
-
} else if (typeof options?.consent === "boolean") {
|
|
43
|
-
consented.value = options?.consent;
|
|
44
|
-
} else if (options?.consent instanceof Promise) {
|
|
45
|
-
options?.consent.then((res) => {
|
|
46
|
-
consented.value = typeof res === "boolean" ? res : true;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
58
|
+
}, { immediate: true });
|
|
50
59
|
});
|
|
51
60
|
promise.accept = () => {
|
|
52
61
|
consented.value = true;
|
|
53
62
|
};
|
|
63
|
+
promise.revoke = () => {
|
|
64
|
+
consented.value = false;
|
|
65
|
+
};
|
|
66
|
+
promise.consented = consented;
|
|
54
67
|
return promise;
|
|
55
68
|
}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
useEventListener,
|
|
3
3
|
useIntersectionObserver
|
|
4
4
|
} from "@vueuse/core";
|
|
5
|
-
import {
|
|
5
|
+
import { tryOnMounted, tryOnScopeDispose } from "@vueuse/shared";
|
|
6
6
|
import { watch } from "vue";
|
|
7
7
|
function useElementVisibilityPromise(element) {
|
|
8
8
|
let observer;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { tryOnScopeDispose } from "@vueuse/shared";
|
|
2
1
|
import { useTimeoutFn } from "@vueuse/core";
|
|
2
|
+
import { tryOnScopeDispose } from "@vueuse/shared";
|
|
3
3
|
import { onNuxtReady } from "nuxt/app";
|
|
4
4
|
export function useScriptTriggerIdleTimeout(options) {
|
|
5
5
|
if (import.meta.server) {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dev-only client plugin that bridges script state to the standalone devtools API.
|
|
3
|
+
* When `_standaloneDevtools` is enabled, this plugin listens for `scripts:updated`
|
|
4
|
+
* and POSTs a serializable snapshot of script state to `/__nuxt-scripts-api/state`.
|
|
5
|
+
* Also syncs the current route path so standalone devtools can show which page the user is on.
|
|
6
|
+
*/
|
|
7
|
+
declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { defineNuxtPlugin, useNuxtApp, useRuntimeConfig } from "nuxt/app";
|
|
2
|
+
export default defineNuxtPlugin(() => {
|
|
3
|
+
const nuxtApp = useNuxtApp();
|
|
4
|
+
const config = useRuntimeConfig();
|
|
5
|
+
const version = config.public["nuxt-scripts"]?.version;
|
|
6
|
+
const firstPartyData = config.public["nuxt-scripts-devtools"] || null;
|
|
7
|
+
let lastScripts = {};
|
|
8
|
+
function pushState(scripts) {
|
|
9
|
+
if (scripts)
|
|
10
|
+
lastScripts = scripts;
|
|
11
|
+
const route = nuxtApp.$router?.currentRoute?.value;
|
|
12
|
+
if (route?.path?.startsWith("/__nuxt-scripts"))
|
|
13
|
+
return;
|
|
14
|
+
fetch("/__nuxt-scripts-api/state", {
|
|
15
|
+
method: "POST",
|
|
16
|
+
headers: { "Content-Type": "application/json" },
|
|
17
|
+
body: JSON.stringify({
|
|
18
|
+
scripts: serializeScripts(lastScripts),
|
|
19
|
+
version,
|
|
20
|
+
firstPartyData,
|
|
21
|
+
route: route ? { path: route.path, fullPath: route.fullPath, query: route.query } : null
|
|
22
|
+
})
|
|
23
|
+
}).catch(() => {
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
nuxtApp.hooks.hook("scripts:updated", (ctx) => {
|
|
27
|
+
pushState(ctx.scripts);
|
|
28
|
+
});
|
|
29
|
+
nuxtApp.$router?.afterEach(() => {
|
|
30
|
+
pushState();
|
|
31
|
+
});
|
|
32
|
+
pushState(nuxtApp._scripts || {});
|
|
33
|
+
});
|
|
34
|
+
function serializeScripts(scripts) {
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const [key, script] of Object.entries(scripts)) {
|
|
37
|
+
result[key] = {
|
|
38
|
+
src: script.src,
|
|
39
|
+
key: script.key,
|
|
40
|
+
registryKey: script.registryKey,
|
|
41
|
+
registryMeta: script.registryMeta,
|
|
42
|
+
loadedFrom: script.loadedFrom && script.loadedFrom !== "unknown" ? script.loadedFrom : void 0,
|
|
43
|
+
events: script.events,
|
|
44
|
+
networkRequests: script.networkRequests,
|
|
45
|
+
// Serialize $script status as a plain string (methods won't transfer)
|
|
46
|
+
$script: script.$script ? { status: typeof script.$script.status === "object" ? script.$script.status.value : script.$script.status } : { status: "unknown" }
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RegistryScriptInput } from '#nuxt-scripts/types';
|
|
2
|
+
import { BingUetOptions } from './schemas.js';
|
|
3
|
+
export { BingUetOptions };
|
|
4
|
+
export type BingUetInput = RegistryScriptInput<typeof BingUetOptions, true, false>;
|
|
5
|
+
export interface BingUetApi {
|
|
6
|
+
uetq: {
|
|
7
|
+
push: (event: string | Record<string, any>) => void;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
declare global {
|
|
11
|
+
interface Window {
|
|
12
|
+
UET: new (options: {
|
|
13
|
+
ti: string;
|
|
14
|
+
enableAutoSpaTracking?: boolean;
|
|
15
|
+
q?: any[];
|
|
16
|
+
}) => BingUetApi['uetq'];
|
|
17
|
+
uetq: any[] | BingUetApi['uetq'];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export declare function useScriptBingUet<T extends BingUetApi>(_options?: BingUetInput): import("#nuxt-scripts/types").UseScriptContext<T>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useRegistryScript } from "../utils.js";
|
|
2
|
+
import { BingUetOptions } from "./schemas.js";
|
|
3
|
+
export { BingUetOptions };
|
|
4
|
+
export function useScriptBingUet(_options) {
|
|
5
|
+
return useRegistryScript("bingUet", (options) => ({
|
|
6
|
+
scriptInput: {
|
|
7
|
+
src: "https://bat.bing.com/bat.js",
|
|
8
|
+
crossorigin: false
|
|
9
|
+
},
|
|
10
|
+
schema: import.meta.dev ? BingUetOptions : void 0,
|
|
11
|
+
scriptOptions: {
|
|
12
|
+
use() {
|
|
13
|
+
if (options?.id && typeof window.UET === "function" && Array.isArray(window.uetq)) {
|
|
14
|
+
const uetOptions = {
|
|
15
|
+
ti: options.id,
|
|
16
|
+
enableAutoSpaTracking: options.enableAutoSpaTracking ?? true,
|
|
17
|
+
q: window.uetq
|
|
18
|
+
};
|
|
19
|
+
window.uetq = new window.UET(uetOptions);
|
|
20
|
+
window.uetq.push("pageLoad");
|
|
21
|
+
}
|
|
22
|
+
return { uetq: window.uetq };
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
clientInit: import.meta.server ? void 0 : () => {
|
|
26
|
+
window.uetq = window.uetq || [];
|
|
27
|
+
}
|
|
28
|
+
}), _options);
|
|
29
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { RegistryScriptInput } from '#nuxt-scripts/types';
|
|
2
|
+
import { BlueskyEmbedOptions } from './schemas.js';
|
|
3
|
+
export { BlueskyEmbedOptions };
|
|
4
|
+
export interface BlueskyEmbedPostData {
|
|
5
|
+
uri: string;
|
|
6
|
+
cid: string;
|
|
7
|
+
author: {
|
|
8
|
+
did: string;
|
|
9
|
+
handle: string;
|
|
10
|
+
displayName: string;
|
|
11
|
+
avatar: string;
|
|
12
|
+
labels: Array<{
|
|
13
|
+
val: string;
|
|
14
|
+
}>;
|
|
15
|
+
verification?: {
|
|
16
|
+
verifiedStatus: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
record: {
|
|
20
|
+
$type: string;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
text: string;
|
|
23
|
+
langs?: string[];
|
|
24
|
+
facets?: Array<{
|
|
25
|
+
features: Array<{
|
|
26
|
+
$type: string;
|
|
27
|
+
uri?: string;
|
|
28
|
+
did?: string;
|
|
29
|
+
tag?: string;
|
|
30
|
+
}>;
|
|
31
|
+
index: {
|
|
32
|
+
byteStart: number;
|
|
33
|
+
byteEnd: number;
|
|
34
|
+
};
|
|
35
|
+
}>;
|
|
36
|
+
embed?: {
|
|
37
|
+
$type: string;
|
|
38
|
+
images?: Array<{
|
|
39
|
+
alt: string;
|
|
40
|
+
image: {
|
|
41
|
+
ref: {
|
|
42
|
+
$link: string;
|
|
43
|
+
};
|
|
44
|
+
mimeType: string;
|
|
45
|
+
size: number;
|
|
46
|
+
};
|
|
47
|
+
aspectRatio?: {
|
|
48
|
+
width: number;
|
|
49
|
+
height: number;
|
|
50
|
+
};
|
|
51
|
+
}>;
|
|
52
|
+
external?: {
|
|
53
|
+
uri: string;
|
|
54
|
+
title: string;
|
|
55
|
+
description: string;
|
|
56
|
+
thumb?: {
|
|
57
|
+
ref: {
|
|
58
|
+
$link: string;
|
|
59
|
+
};
|
|
60
|
+
mimeType: string;
|
|
61
|
+
size: number;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
embed?: {
|
|
67
|
+
$type: string;
|
|
68
|
+
images?: Array<{
|
|
69
|
+
thumb: string;
|
|
70
|
+
fullsize: string;
|
|
71
|
+
alt: string;
|
|
72
|
+
aspectRatio?: {
|
|
73
|
+
width: number;
|
|
74
|
+
height: number;
|
|
75
|
+
};
|
|
76
|
+
}>;
|
|
77
|
+
external?: {
|
|
78
|
+
uri: string;
|
|
79
|
+
title: string;
|
|
80
|
+
description: string;
|
|
81
|
+
thumb?: string;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
likeCount: number;
|
|
85
|
+
repostCount: number;
|
|
86
|
+
replyCount: number;
|
|
87
|
+
quoteCount: number;
|
|
88
|
+
indexedAt: string;
|
|
89
|
+
labels: Array<{
|
|
90
|
+
val: string;
|
|
91
|
+
}>;
|
|
92
|
+
}
|
|
93
|
+
export type BlueskyEmbedInput = RegistryScriptInput<typeof BlueskyEmbedOptions, false, false>;
|
|
94
|
+
/**
|
|
95
|
+
* Extract the handle/DID and post rkey from a Bluesky post URL
|
|
96
|
+
*/
|
|
97
|
+
export declare function extractBlueskyPostId(url: string): {
|
|
98
|
+
actor: string;
|
|
99
|
+
rkey: string;
|
|
100
|
+
} | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* Proxy a Bluesky image URL through the server
|
|
103
|
+
*/
|
|
104
|
+
export declare function proxyBlueskyImageUrl(url: string, proxyEndpoint?: string): string;
|
|
105
|
+
/**
|
|
106
|
+
* Format a Bluesky post date for display
|
|
107
|
+
*/
|
|
108
|
+
export declare function formatBlueskyDate(dateString: string): string;
|
|
109
|
+
/**
|
|
110
|
+
* Format a number for display (e.g., 1234 -> 1.2K)
|
|
111
|
+
*/
|
|
112
|
+
export declare function formatCount(count: number): string;
|
|
113
|
+
/**
|
|
114
|
+
* Convert Bluesky facets (byte-range rich text annotations) to HTML
|
|
115
|
+
*/
|
|
116
|
+
export declare function facetsToHtml(text: string, facets?: BlueskyEmbedPostData['record']['facets']): string;
|