@nuxt/scripts 1.0.0-rc.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devtools-client/200.html +1 -1
- package/dist/devtools-client/404.html +1 -1
- package/dist/devtools-client/_nuxt/{BBS9G2Kb.js → Br5kvbNb.js} +1 -1
- package/dist/devtools-client/_nuxt/C25MBdR1.js +1 -0
- package/dist/devtools-client/_nuxt/{DCBsJT4N.js → Cg_OIb5q.js} +1 -1
- package/dist/devtools-client/_nuxt/{B4uHpJPz.js → D2o5loaz.js} +1 -1
- package/dist/devtools-client/_nuxt/De7Wf2b9.js +188 -0
- package/dist/devtools-client/_nuxt/{Cxq4HLPL.js → DnVCfhVR.js} +1 -1
- package/dist/devtools-client/_nuxt/builds/latest.json +1 -1
- package/dist/devtools-client/_nuxt/builds/meta/9d868e70-bc5a-425c-8c84-8defe5186920.json +1 -0
- package/dist/devtools-client/_nuxt/{entry.BwpOBArY.css → entry.BSxy0W1q.css} +1 -1
- package/dist/devtools-client/_nuxt/index.DZD1lwyI.css +1 -0
- package/dist/devtools-client/_nuxt/{DvZScWzI.js → pN4-T8ZD.js} +1 -1
- package/dist/devtools-client/docs/index.html +1 -1
- package/dist/devtools-client/first-party/index.html +1 -1
- package/dist/devtools-client/index.html +1 -1
- package/dist/devtools-client/registry/index.html +1 -1
- package/dist/module.d.mts +15 -0
- package/dist/module.d.ts +15 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +35 -8
- package/dist/registry.mjs +3 -3
- package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsStaticMap.vue +6 -2
- package/dist/runtime/components/ScriptBlueskyEmbed.d.vue.ts +0 -1
- package/dist/runtime/components/ScriptBlueskyEmbed.vue +12 -10
- package/dist/runtime/components/ScriptBlueskyEmbed.vue.d.ts +0 -1
- package/dist/runtime/components/ScriptInstagramEmbed.vue +3 -1
- package/dist/runtime/components/ScriptXEmbed.d.vue.ts +0 -1
- package/dist/runtime/components/ScriptXEmbed.vue +11 -9
- package/dist/runtime/components/ScriptXEmbed.vue.d.ts +0 -1
- package/dist/runtime/composables/useScript.js +17 -6
- 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/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 +6 -2
- package/dist/runtime/registry/bing-uet.js +13 -1
- package/dist/runtime/registry/bluesky-embed.d.ts +0 -4
- package/dist/runtime/registry/bluesky-embed.js +0 -4
- package/dist/runtime/registry/clarity.d.ts +6 -2
- package/dist/runtime/registry/clarity.js +12 -1
- package/dist/runtime/registry/google-analytics.d.ts +6 -2
- package/dist/runtime/registry/google-analytics.js +12 -1
- package/dist/runtime/registry/google-tag-manager.d.ts +6 -2
- package/dist/runtime/registry/google-tag-manager.js +10 -1
- package/dist/runtime/registry/gravatar.js +10 -13
- package/dist/runtime/registry/matomo-analytics.d.ts +9 -3
- package/dist/runtime/registry/matomo-analytics.js +28 -1
- package/dist/runtime/registry/meta-pixel.d.ts +8 -2
- package/dist/runtime/registry/meta-pixel.js +10 -1
- package/dist/runtime/registry/mixpanel-analytics.d.ts +12 -2
- package/dist/runtime/registry/mixpanel-analytics.js +16 -4
- package/dist/runtime/registry/posthog.d.ts +8 -2
- package/dist/runtime/registry/posthog.js +15 -4
- package/dist/runtime/registry/schemas.d.ts +65 -0
- package/dist/runtime/registry/schemas.js +75 -8
- package/dist/runtime/registry/tiktok-pixel.d.ts +16 -2
- package/dist/runtime/registry/tiktok-pixel.js +22 -1
- package/dist/runtime/registry/x-embed.d.ts +0 -4
- package/dist/runtime/registry/x-embed.js +0 -4
- package/dist/runtime/server/bluesky-embed-image.d.ts +1 -1
- package/dist/runtime/server/bluesky-embed.d.ts +1 -15
- package/dist/runtime/server/bluesky-embed.js +22 -4
- package/dist/runtime/server/google-maps-geocode-proxy.js +8 -5
- package/dist/runtime/server/google-static-maps-proxy.d.ts +1 -1
- package/dist/runtime/server/google-static-maps-proxy.js +13 -8
- package/dist/runtime/server/gravatar-proxy.d.ts +1 -1
- package/dist/runtime/server/gravatar-proxy.js +6 -7
- package/dist/runtime/server/instagram-embed-asset.d.ts +1 -1
- package/dist/runtime/server/instagram-embed-image.d.ts +1 -1
- package/dist/runtime/server/instagram-embed.js +22 -10
- 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 +3 -1
- package/dist/runtime/server/utils/image-proxy.js +8 -6
- package/dist/runtime/server/utils/instagram-embed.d.ts +4 -4
- package/dist/runtime/server/utils/instagram-embed.js +10 -9
- 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 +2 -10
- package/dist/runtime/server/utils/sign.js +8 -5
- package/dist/runtime/server/utils/withSigning.js +3 -2
- package/dist/runtime/server/x-embed-image.d.ts +1 -1
- package/dist/runtime/server/x-embed.js +20 -2
- package/dist/runtime/types.d.ts +24 -1
- package/dist/types-source.mjs +104 -11
- package/package.json +2 -2
- package/dist/devtools-client/_nuxt/CQR4zIAm.js +0 -1
- package/dist/devtools-client/_nuxt/DTxy5P8N.js +0 -188
- package/dist/devtools-client/_nuxt/builds/meta/bd58b869-1eb5-4c50-871c-707f9b71e8f9.json +0 -1
- package/dist/devtools-client/_nuxt/index.CA-OpSj0.css +0 -1
package/dist/types-source.mjs
CHANGED
|
@@ -3,7 +3,7 @@ const types = {
|
|
|
3
3
|
{
|
|
4
4
|
name: "BingUetOptions",
|
|
5
5
|
kind: "const",
|
|
6
|
-
code: "export const BingUetOptions = object({\n /**\n * Your Bing UET tag ID.\n * @see https://help.ads.microsoft.com/#apex/ads/en/56682/2-500\n */\n id: string(),\n /**\n * Enable automatic SPA page tracking.\n * @default true\n */\n enableAutoSpaTracking: optional(boolean()),\n})"
|
|
6
|
+
code: "export const BingUetOptions = object({\n /**\n * Your Bing UET tag ID.\n * @see https://help.ads.microsoft.com/#apex/ads/en/56682/2-500\n */\n id: string(),\n /**\n * Enable automatic SPA page tracking.\n * @default true\n */\n enableAutoSpaTracking: optional(boolean()),\n /**\n * Default consent state fired as `uetq.push('consent', 'default', ...)` before UET init.\n * @see https://help.ads.microsoft.com/#apex/ads/en/60119/1-500\n */\n defaultConsent: optional(object({\n ad_storage: optional(consentCategoryValue),\n })),\n})"
|
|
7
7
|
},
|
|
8
8
|
{
|
|
9
9
|
name: "BingUetConsentStatus",
|
|
@@ -64,6 +64,11 @@ const types = {
|
|
|
64
64
|
name: "BingUetApi",
|
|
65
65
|
kind: "interface",
|
|
66
66
|
code: "export interface BingUetApi {\n uetq: BingUetQueue\n}"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "BingUetConsent",
|
|
70
|
+
kind: "interface",
|
|
71
|
+
code: "export interface BingUetConsent {\n /** Push `['consent','update', state]` with the `ad_storage` signal. */\n update: (state: BingUetConsentOptions) => void\n}"
|
|
67
72
|
}
|
|
68
73
|
],
|
|
69
74
|
"bluesky-embed": [
|
|
@@ -92,7 +97,7 @@ const types = {
|
|
|
92
97
|
{
|
|
93
98
|
name: "ClarityOptions",
|
|
94
99
|
kind: "const",
|
|
95
|
-
code: "export const ClarityOptions = object({\n /**\n * The Clarity token.\n * @see https://learn.microsoft.com/en-us/clarity/setup-clarity\n */\n id: pipe(string(), minLength(10)),\n})"
|
|
100
|
+
code: "export const ClarityOptions = object({\n /**\n * The Clarity token.\n * @see https://learn.microsoft.com/en-us/clarity/setup-clarity\n */\n id: pipe(string(), minLength(10)),\n /**\n * Default consent state applied before Clarity starts.\n * - `boolean` - enable / disable cookies.\n * - `Record<string, string>` - advanced consent vector (see Clarity docs).\n * @see https://learn.microsoft.com/en-us/clarity/setup-and-installation/cookie-consent\n */\n defaultConsent: optional(union([boolean(), record(string(), string())])),\n})"
|
|
96
101
|
},
|
|
97
102
|
{
|
|
98
103
|
name: "ClarityFunctions",
|
|
@@ -103,6 +108,11 @@ const types = {
|
|
|
103
108
|
name: "ClarityApi",
|
|
104
109
|
kind: "interface",
|
|
105
110
|
code: "export interface ClarityApi {\n clarity: ClarityFunctions & {\n q: any[]\n v: string\n }\n}"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: "ClarityConsent",
|
|
114
|
+
kind: "interface",
|
|
115
|
+
code: "export interface ClarityConsent {\n /** Call `clarity('consent', value)` with either a boolean (default) or Clarity's advanced vector. */\n set: (value: boolean | Record<string, string>) => void\n}"
|
|
106
116
|
}
|
|
107
117
|
],
|
|
108
118
|
"cloudflare-web-analytics": [
|
|
@@ -249,7 +259,12 @@ const types = {
|
|
|
249
259
|
{
|
|
250
260
|
name: "GoogleAnalyticsOptions",
|
|
251
261
|
kind: "const",
|
|
252
|
-
code: "export const GoogleAnalyticsOptions = object({\n /**\n * The GA4 measurement ID.\n * @example 'G-XXXXXXXX'\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs\n */\n id: optional(string()),\n /**\n * Global name for the dataLayer variable.\n * @default 'dataLayer'\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs/setting-up-gtag#rename_the_data_layer\n */\n l: optional(string()),\n})"
|
|
262
|
+
code: "export const GoogleAnalyticsOptions = object({\n /**\n * The GA4 measurement ID.\n * @example 'G-XXXXXXXX'\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs\n */\n id: optional(string()),\n /**\n * Global name for the dataLayer variable.\n * @default 'dataLayer'\n * @see https://developers.google.com/analytics/devguides/collection/gtagjs/setting-up-gtag#rename_the_data_layer\n */\n l: optional(string()),\n /**\n * Default GCMv2 consent state fired as `gtag('consent', 'default', ...)` before `gtag('js', ...)`.\n * @see https://developers.google.com/tag-platform/security/guides/consent\n */\n defaultConsent: optional(gcmConsentState),\n})"
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
name: "GoogleAnalyticsConsent",
|
|
266
|
+
kind: "interface",
|
|
267
|
+
code: "export interface GoogleAnalyticsConsent {\n /** Send `gtag('consent','update', state)` with GCMv2 partial state. */\n update: (state: ConsentState) => void\n}"
|
|
253
268
|
}
|
|
254
269
|
],
|
|
255
270
|
"google-maps": [
|
|
@@ -483,6 +498,11 @@ const types = {
|
|
|
483
498
|
name: "GoogleTagManagerOptions",
|
|
484
499
|
kind: "const",
|
|
485
500
|
code: "export const GoogleTagManagerOptions = object({\n /**\n * GTM container ID (format: GTM-XXXXXX)\n * @see https://developers.google.com/tag-platform/tag-manager/web#install-the-container\n */\n id: string(),\n\n /**\n * Optional dataLayer variable name\n * @default 'dataLayer'\n * @see https://developers.google.com/tag-platform/tag-manager/web/datalayer#rename_the_data_layer\n */\n l: optional(string()),\n\n /**\n * Authentication token for environment-specific container versions\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n auth: optional(string()),\n\n /**\n * Preview environment name\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n preview: optional(string()),\n\n /** Forces GTM cookies to take precedence when true */\n cookiesWin: optional(union([boolean(), literal('x')])),\n\n /**\n * Enables debug mode when true\n * @see https://support.google.com/tagmanager/answer/6107056\n */\n debug: optional(union([boolean(), literal('x')])),\n\n /**\n * No Personal Advertising - disables advertising features when true\n * @see https://developers.google.com/tag-platform/tag-manager/templates/consent-apis\n */\n npa: optional(union([boolean(), literal('1')])),\n\n /** Custom dataLayer name (alternative to \"l\" property) */\n dataLayer: optional(string()),\n\n /**\n * Environment name for environment-specific container\n * @see https://support.google.com/tagmanager/answer/6328337\n */\n envName: optional(string()),\n\n /** Referrer policy for analytics requests */\n authReferrerPolicy: optional(string()),\n\n /**\n * Default consent settings for GTM\n * @see https://developers.google.com/tag-platform/tag-manager/templates/consent-apis\n */\n defaultConsent: optional(record(string(), union([string(), number()]))),\n})"
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
name: "GoogleTagManagerConsent",
|
|
504
|
+
kind: "interface",
|
|
505
|
+
code: "export interface GoogleTagManagerConsent {\n /** Push `['consent','update', state]` onto dataLayer with GCMv2 partial state. */\n update: (state: ConsentState) => void\n}"
|
|
486
506
|
}
|
|
487
507
|
],
|
|
488
508
|
gravatar: [
|
|
@@ -584,12 +604,17 @@ const types = {
|
|
|
584
604
|
{
|
|
585
605
|
name: "MatomoAnalyticsOptions",
|
|
586
606
|
kind: "const",
|
|
587
|
-
code: "export const MatomoAnalyticsOptions = object({\n /**\n * The URL of your self-hosted Matomo instance.\n * Either `matomoUrl` or `cloudId` is required.\n * @example 'https://matomo.example.com'\n * @see https://developer.matomo.org/guides/tracking-javascript-guide\n */\n matomoUrl: optional(string()),\n /**\n * Your Matomo site ID.\n * @default '1'\n */\n siteId: optional(union([string(), number()])),\n /**\n * Your Matomo Cloud ID (the subdomain portion of your `*.matomo.cloud` URL).\n * Either `matomoUrl` or `cloudId` is required.\n * @example 'mysite.matomo.cloud'\n */\n cloudId: optional(string()),\n /**\n * A custom tracker URL. Overrides the default tracker endpoint derived from `matomoUrl` or `cloudId`.\n */\n trackerUrl: optional(string()),\n /**\n * Whether to track the initial page view on load.\n * @deprecated Use `watch: true` (default) for automatic page view tracking.\n */\n trackPageView: optional(boolean()),\n /**\n * Enable download and outlink tracking.\n */\n enableLinkTracking: optional(boolean()),\n /**\n * Disable all tracking cookies for cookieless analytics.\n */\n disableCookies: optional(boolean()),\n /**\n * Automatically track page views on route change.\n * @default true\n */\n watch: optional(boolean()),\n})"
|
|
607
|
+
code: "export const MatomoAnalyticsOptions = object({\n /**\n * The URL of your self-hosted Matomo instance.\n * Either `matomoUrl` or `cloudId` is required.\n * @example 'https://matomo.example.com'\n * @see https://developer.matomo.org/guides/tracking-javascript-guide\n */\n matomoUrl: optional(string()),\n /**\n * Your Matomo site ID.\n * @default '1'\n */\n siteId: optional(union([string(), number()])),\n /**\n * Your Matomo Cloud ID (the subdomain portion of your `*.matomo.cloud` URL).\n * Either `matomoUrl` or `cloudId` is required.\n * @example 'mysite.matomo.cloud'\n */\n cloudId: optional(string()),\n /**\n * A custom tracker URL. Overrides the default tracker endpoint derived from `matomoUrl` or `cloudId`.\n */\n trackerUrl: optional(string()),\n /**\n * Whether to track the initial page view on load.\n * @deprecated Use `watch: true` (default) for automatic page view tracking.\n */\n trackPageView: optional(boolean()),\n /**\n * Enable download and outlink tracking.\n */\n enableLinkTracking: optional(boolean()),\n /**\n * Disable all tracking cookies for cookieless analytics.\n */\n disableCookies: optional(boolean()),\n /**\n * Automatically track page views on route change.\n * @default true\n */\n watch: optional(boolean()),\n /**\n * Default tracking-consent state applied BEFORE the tracker is initialised.\n * - `'required'` — call `requireConsent` without granting (user must opt in later).\n * - `'given'` — call `requireConsent` then `setConsentGiven`.\n * - `'not-required'` — no consent gating (default Matomo behaviour).\n * @see https://developer.matomo.org/guides/tracking-consent\n */\n defaultConsent: optional(union([literal('required'), literal('given'), literal('not-required')])),\n})"
|
|
588
608
|
},
|
|
589
609
|
{
|
|
590
610
|
name: "MatomoAnalyticsApi",
|
|
591
611
|
kind: "interface",
|
|
592
|
-
code: "interface MatomoAnalyticsApi {\n _paq: unknown[]\n}"
|
|
612
|
+
code: "export interface MatomoAnalyticsApi {\n _paq: unknown[]\n}"
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
name: "MatomoConsent",
|
|
616
|
+
kind: "interface",
|
|
617
|
+
code: "export interface MatomoConsent {\n /** Push `setConsentGiven`. Requires `defaultConsent: 'required' | 'given'` at registration to have an effect. */\n give: () => void\n /** Push `forgetConsentGiven`. Requires `defaultConsent: 'required' | 'given'` at registration to have an effect. */\n forget: () => void\n}"
|
|
593
618
|
}
|
|
594
619
|
],
|
|
595
620
|
"meta-pixel": [
|
|
@@ -626,19 +651,29 @@ const types = {
|
|
|
626
651
|
{
|
|
627
652
|
name: "MetaPixelOptions",
|
|
628
653
|
kind: "const",
|
|
629
|
-
code: "export const MetaPixelOptions = object({\n /**\n * Your Meta (Facebook) Pixel ID.\n * @see https://developers.facebook.com/docs/meta-pixel/get-started\n */\n id: union([string(), number()]),\n})"
|
|
654
|
+
code: "export const MetaPixelOptions = object({\n /**\n * Your Meta (Facebook) Pixel ID.\n * @see https://developers.facebook.com/docs/meta-pixel/get-started\n */\n id: union([string(), number()]),\n /**\n * Default consent state. `'granted'` fires `fbq('consent', 'grant')`,\n * `'denied'` fires `fbq('consent', 'revoke')`, both called before `fbq('init', id)`.\n * @see https://www.facebook.com/business/help/1151321516677370\n */\n defaultConsent: optional(union([literal('granted'), literal('denied')])),\n})"
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
name: "MetaPixelConsent",
|
|
658
|
+
kind: "interface",
|
|
659
|
+
code: "export interface MetaPixelConsent {\n /** Call `fbq('consent','grant')`. */\n grant: () => void\n /** Call `fbq('consent','revoke')`. */\n revoke: () => void\n}"
|
|
630
660
|
}
|
|
631
661
|
],
|
|
632
662
|
"mixpanel-analytics": [
|
|
633
663
|
{
|
|
634
664
|
name: "MixpanelAnalyticsOptions",
|
|
635
665
|
kind: "const",
|
|
636
|
-
code: "export const MixpanelAnalyticsOptions = object({\n /**\n * Your Mixpanel project token.\n * @see https://docs.mixpanel.com/docs/tracking-methods/sdks/javascript#1-initialize-the-library\n */\n token: string(),\n})"
|
|
666
|
+
code: "export const MixpanelAnalyticsOptions = object({\n /**\n * Your Mixpanel project token.\n * @see https://docs.mixpanel.com/docs/tracking-methods/sdks/javascript#1-initialize-the-library\n */\n token: string(),\n /**\n * Default tracking-consent state for Mixpanel.\n * - `'opt-out'`: passed as `opt_out_tracking_by_default: true` to `mixpanel.init`, so tracking is suppressed from the first call.\n * - `'opt-in'`: queued via `mixpanel.push(['opt_in_tracking'])` so the real SDK runs it immediately after load.\n * @see https://docs.mixpanel.com/docs/privacy/opt-out-of-tracking\n */\n defaultConsent: optional(union([literal('opt-in'), literal('opt-out')])),\n})"
|
|
637
667
|
},
|
|
638
668
|
{
|
|
639
669
|
name: "MixpanelAnalyticsApi",
|
|
640
670
|
kind: "interface",
|
|
641
|
-
code: "export interface MixpanelAnalyticsApi {\n mixpanel: {\n track: (event: string, properties?: Record<string, any>) => void\n identify: (distinctId: string) => void\n reset: () => void\n people: {\n set: (properties: Record<string, any>) => void\n }\n register: (properties: Record<string, any>) => void\n init: (token: string, config?: Record<string, any>) => void\n }\n}"
|
|
671
|
+
code: "export interface MixpanelAnalyticsApi {\n mixpanel: {\n track: (event: string, properties?: Record<string, any>) => void\n identify: (distinctId: string) => void\n reset: () => void\n people: {\n set: (properties: Record<string, any>) => void\n }\n register: (properties: Record<string, any>) => void\n init: (token: string, config?: Record<string, any>) => void\n /** Opt the user in to tracking. Available after the real SDK loads. */\n opt_in_tracking?: () => void\n /** Opt the user out of tracking. Available after the real SDK loads. */\n opt_out_tracking?: () => void\n }\n}"
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
name: "MixpanelConsent",
|
|
675
|
+
kind: "interface",
|
|
676
|
+
code: "export interface MixpanelConsent {\n /** Call `mixpanel.opt_in_tracking()`. */\n optIn: () => void\n /** Call `mixpanel.opt_out_tracking()`. For boot-time opt-out, use `defaultConsent: 'opt-out'` instead. */\n optOut: () => void\n}"
|
|
642
677
|
}
|
|
643
678
|
],
|
|
644
679
|
npm: [
|
|
@@ -721,12 +756,17 @@ const types = {
|
|
|
721
756
|
{
|
|
722
757
|
name: "PostHogOptions",
|
|
723
758
|
kind: "const",
|
|
724
|
-
code: "export const PostHogOptions = object({\n /**\n * Your PostHog project API key.\n * @see https://posthog.com/docs/libraries/js#usage\n */\n apiKey: string(),\n /**\n * Your PostHog data region.\n * @default 'us'\n * @see https://posthog.com/docs/libraries/js#config\n */\n region: optional(union([literal('us'), literal('eu')])),\n /**\n * Custom API host URL. Overrides the default derived from `region`.\n * Useful for self-hosted instances or reverse proxies.\n */\n apiHost: optional(string()),\n /**\n * Enable autocapture of clicks, form submissions, and page views.\n * @default true\n */\n autocapture: optional(boolean()),\n /**\n * Capture page views automatically. Set to `'history_change'` to only capture on history changes.\n * @default true\n */\n capturePageview: optional(union([boolean(), literal('history_change')])),\n /**\n * Capture page leave events automatically.\n * @default true\n */\n capturePageleave: optional(boolean()),\n /**\n * Disable session recording.\n */\n disableSessionRecording: optional(boolean()),\n /**\n * Additional PostHog configuration options passed directly to `posthog.init()`.\n * @see https://posthog.com/docs/libraries/js#config\n */\n config: optional(record(string(), any())),\n})"
|
|
759
|
+
code: "export const PostHogOptions = object({\n /**\n * Your PostHog project API key.\n * @see https://posthog.com/docs/libraries/js#usage\n */\n apiKey: string(),\n /**\n * Your PostHog data region.\n * @default 'us'\n * @see https://posthog.com/docs/libraries/js#config\n */\n region: optional(union([literal('us'), literal('eu')])),\n /**\n * Custom API host URL. Overrides the default derived from `region`.\n * Useful for self-hosted instances or reverse proxies.\n */\n apiHost: optional(string()),\n /**\n * Enable autocapture of clicks, form submissions, and page views.\n * @default true\n */\n autocapture: optional(boolean()),\n /**\n * Capture page views automatically. Set to `'history_change'` to only capture on history changes.\n * @default true\n */\n capturePageview: optional(union([boolean(), literal('history_change')])),\n /**\n * Capture page leave events automatically.\n * @default true\n */\n capturePageleave: optional(boolean()),\n /**\n * Disable session recording.\n */\n disableSessionRecording: optional(boolean()),\n /**\n * Additional PostHog configuration options passed directly to `posthog.init()`.\n * @see https://posthog.com/docs/libraries/js#config\n */\n config: optional(record(string(), any())),\n /**\n * Default capture-consent state for PostHog.\n * - `'opt-out'`: passed as `opt_out_capturing_by_default: true` to `posthog.init`, so capturing is suppressed from the first event.\n * - `'opt-in'`: applied after `posthog.init` via `posthog.opt_in_capturing()` on the returned instance.\n * @see https://posthog.com/docs/privacy/opting-out\n */\n defaultConsent: optional(union([literal('opt-in'), literal('opt-out')])),\n})"
|
|
725
760
|
},
|
|
726
761
|
{
|
|
727
762
|
name: "PostHogApi",
|
|
728
763
|
kind: "interface",
|
|
729
764
|
code: "export interface PostHogApi {\n posthog: PostHog\n}"
|
|
765
|
+
},
|
|
766
|
+
{
|
|
767
|
+
name: "PostHogConsent",
|
|
768
|
+
kind: "interface",
|
|
769
|
+
code: "export interface PostHogConsent {\n /** Call `posthog.opt_in_capturing()`. */\n optIn: () => void\n /** Call `posthog.opt_out_capturing()`. For boot-time opt-out, use `defaultConsent: 'opt-out'` instead. */\n optOut: () => void\n}"
|
|
730
770
|
}
|
|
731
771
|
],
|
|
732
772
|
"reddit-pixel": [
|
|
@@ -873,12 +913,17 @@ const types = {
|
|
|
873
913
|
{
|
|
874
914
|
name: "TikTokPixelApi",
|
|
875
915
|
kind: "interface",
|
|
876
|
-
code: "export interface TikTokPixelApi {\n ttq: TtqFns & {\n push: TtqFns\n loaded: boolean\n queue: any[]\n }\n}"
|
|
916
|
+
code: "export interface TikTokPixelApi {\n ttq: TtqFns & {\n push: TtqFns\n loaded: boolean\n queue: any[]\n /** Opt user in to tracking. Queued before the script loads; live once `events.js` binds. */\n grantConsent: () => void\n /** Opt user out of tracking. Queued before the script loads; live once `events.js` binds. */\n revokeConsent: () => void\n /** Defer consent until an explicit grant/revoke. Queued before the script loads; live once `events.js` binds. */\n holdConsent: () => void\n }\n}"
|
|
877
917
|
},
|
|
878
918
|
{
|
|
879
919
|
name: "TikTokPixelOptions",
|
|
880
920
|
kind: "const",
|
|
881
|
-
code: "export const TikTokPixelOptions = object({\n /**\n * Your TikTok Pixel ID.\n * @see https://ads.tiktok.com/help/article/get-started-pixel\n */\n id: string(),\n /**\n * Whether to automatically track a page view on initialization.\n * @default true\n */\n trackPageView: optional(boolean()),\n})"
|
|
921
|
+
code: "export const TikTokPixelOptions = object({\n /**\n * Your TikTok Pixel ID.\n * @see https://ads.tiktok.com/help/article/get-started-pixel\n */\n id: string(),\n /**\n * Whether to automatically track a page view on initialization.\n * @default true\n */\n trackPageView: optional(boolean()),\n /**\n * Default consent state, applied before `ttq('init', id)`.\n * - `'granted'` fires `ttq.grantConsent()`\n * - `'denied'` fires `ttq.revokeConsent()`\n * - `'hold'` fires `ttq.holdConsent()` to defer until an explicit update\n * @see https://business-api.tiktok.com/portal/docs?id=1739585600931842\n */\n defaultConsent: optional(union([literal('granted'), literal('denied'), literal('hold')])),\n})"
|
|
922
|
+
},
|
|
923
|
+
{
|
|
924
|
+
name: "TikTokPixelConsent",
|
|
925
|
+
kind: "interface",
|
|
926
|
+
code: "export interface TikTokPixelConsent {\n /** Call `ttq.grantConsent()`. */\n grant: () => void\n /** Call `ttq.revokeConsent()`. */\n revoke: () => void\n /** Call `ttq.holdConsent()` to defer the decision. */\n hold: () => void\n}"
|
|
882
927
|
}
|
|
883
928
|
],
|
|
884
929
|
"umami-analytics": [
|
|
@@ -1065,6 +1110,12 @@ const schemaFields = {
|
|
|
1065
1110
|
type: "string",
|
|
1066
1111
|
required: true,
|
|
1067
1112
|
description: "The Clarity token."
|
|
1113
|
+
},
|
|
1114
|
+
{
|
|
1115
|
+
name: "defaultConsent",
|
|
1116
|
+
type: "boolean | Record<string, string>",
|
|
1117
|
+
required: false,
|
|
1118
|
+
description: "Default consent state applied before Clarity starts. - `boolean` - enable / disable cookies. - `Record<string, string>` - advanced consent vector (see Clarity docs)."
|
|
1068
1119
|
}
|
|
1069
1120
|
],
|
|
1070
1121
|
CloudflareWebAnalyticsOptions: [
|
|
@@ -1383,6 +1434,12 @@ const schemaFields = {
|
|
|
1383
1434
|
required: false,
|
|
1384
1435
|
description: "Global name for the dataLayer variable.",
|
|
1385
1436
|
defaultValue: "'dataLayer'"
|
|
1437
|
+
},
|
|
1438
|
+
{
|
|
1439
|
+
name: "defaultConsent",
|
|
1440
|
+
type: "unknown",
|
|
1441
|
+
required: false,
|
|
1442
|
+
description: "Default GCMv2 consent state fired as `gtag('consent', 'default', ...)` before `gtag('js', ...)`."
|
|
1386
1443
|
}
|
|
1387
1444
|
],
|
|
1388
1445
|
GoogleMapsOptions: [
|
|
@@ -1714,6 +1771,12 @@ const schemaFields = {
|
|
|
1714
1771
|
required: false,
|
|
1715
1772
|
description: "Automatically track page views on route change.",
|
|
1716
1773
|
defaultValue: "true"
|
|
1774
|
+
},
|
|
1775
|
+
{
|
|
1776
|
+
name: "defaultConsent",
|
|
1777
|
+
type: "'required' | 'given' | 'not-required'",
|
|
1778
|
+
required: false,
|
|
1779
|
+
description: "Default tracking-consent state applied BEFORE the tracker is initialised. - `'required'` — call `requireConsent` without granting (user must opt in later). - `'given'` — call `requireConsent` then `setConsentGiven`. - `'not-required'` — no consent gating (default Matomo behaviour)."
|
|
1717
1780
|
}
|
|
1718
1781
|
],
|
|
1719
1782
|
MetaPixelOptions: [
|
|
@@ -1722,6 +1785,12 @@ const schemaFields = {
|
|
|
1722
1785
|
type: "string | number",
|
|
1723
1786
|
required: true,
|
|
1724
1787
|
description: "Your Meta (Facebook) Pixel ID."
|
|
1788
|
+
},
|
|
1789
|
+
{
|
|
1790
|
+
name: "defaultConsent",
|
|
1791
|
+
type: "'granted' | 'denied'",
|
|
1792
|
+
required: false,
|
|
1793
|
+
description: "Default consent state. `'granted'` fires `fbq('consent', 'grant')`, `'denied'` fires `fbq('consent', 'revoke')`, both called before `fbq('init', id)`."
|
|
1725
1794
|
}
|
|
1726
1795
|
],
|
|
1727
1796
|
NpmOptions: [
|
|
@@ -1804,6 +1873,12 @@ const schemaFields = {
|
|
|
1804
1873
|
type: "Record<string, any>",
|
|
1805
1874
|
required: false,
|
|
1806
1875
|
description: "Additional PostHog configuration options passed directly to `posthog.init()`."
|
|
1876
|
+
},
|
|
1877
|
+
{
|
|
1878
|
+
name: "defaultConsent",
|
|
1879
|
+
type: "'opt-in' | 'opt-out'",
|
|
1880
|
+
required: false,
|
|
1881
|
+
description: "Default capture-consent state for PostHog. - `'opt-out'`: passed as `opt_out_capturing_by_default: true` to `posthog.init`, so capturing is suppressed from the first event. - `'opt-in'`: applied after `posthog.init` via `posthog.opt_in_capturing()` on the returned instance."
|
|
1807
1882
|
}
|
|
1808
1883
|
],
|
|
1809
1884
|
RedditPixelOptions: [
|
|
@@ -1902,6 +1977,12 @@ const schemaFields = {
|
|
|
1902
1977
|
type: "string",
|
|
1903
1978
|
required: true,
|
|
1904
1979
|
description: "Your Mixpanel project token."
|
|
1980
|
+
},
|
|
1981
|
+
{
|
|
1982
|
+
name: "defaultConsent",
|
|
1983
|
+
type: "'opt-in' | 'opt-out'",
|
|
1984
|
+
required: false,
|
|
1985
|
+
description: "Default tracking-consent state for Mixpanel. - `'opt-out'`: passed as `opt_out_tracking_by_default: true` to `mixpanel.init`, so tracking is suppressed from the first call. - `'opt-in'`: queued via `mixpanel.push(['opt_in_tracking'])` so the real SDK runs it immediately after load."
|
|
1905
1986
|
}
|
|
1906
1987
|
],
|
|
1907
1988
|
BingUetOptions: [
|
|
@@ -1917,6 +1998,12 @@ const schemaFields = {
|
|
|
1917
1998
|
required: false,
|
|
1918
1999
|
description: "Enable automatic SPA page tracking.",
|
|
1919
2000
|
defaultValue: "true"
|
|
2001
|
+
},
|
|
2002
|
+
{
|
|
2003
|
+
name: "defaultConsent",
|
|
2004
|
+
type: "object",
|
|
2005
|
+
required: false,
|
|
2006
|
+
description: "Default consent state fired as `uetq.push('consent', 'default', ...)` before UET init."
|
|
1920
2007
|
}
|
|
1921
2008
|
],
|
|
1922
2009
|
SegmentOptions: [
|
|
@@ -2044,6 +2131,12 @@ const schemaFields = {
|
|
|
2044
2131
|
required: false,
|
|
2045
2132
|
description: "Whether to automatically track a page view on initialization.",
|
|
2046
2133
|
defaultValue: "true"
|
|
2134
|
+
},
|
|
2135
|
+
{
|
|
2136
|
+
name: "defaultConsent",
|
|
2137
|
+
type: "'granted' | 'denied' | 'hold'",
|
|
2138
|
+
required: false,
|
|
2139
|
+
description: "Default consent state, applied before `ttq('init', id)`. - `'granted'` fires `ttq.grantConsent()` - `'denied'` fires `ttq.revokeConsent()` - `'hold'` fires `ttq.holdConsent()` to defer until an explicit update"
|
|
2047
2140
|
}
|
|
2048
2141
|
],
|
|
2049
2142
|
UmamiAnalyticsOptions: [
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuxt/scripts",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0
|
|
4
|
+
"version": "1.0.0",
|
|
5
5
|
"description": "Load third-party scripts with better performance, privacy and DX in Nuxt Apps.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Harlan Wilton",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"pathe": "^2.0.3",
|
|
118
118
|
"pkg-types": "^2.3.0",
|
|
119
119
|
"sirv": "^3.0.2",
|
|
120
|
-
"std-env": "^4.
|
|
120
|
+
"std-env": "^4.1.0",
|
|
121
121
|
"ufo": "^1.6.3",
|
|
122
122
|
"ultrahtml": "^1.6.0",
|
|
123
123
|
"unplugin": "^3.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as j,o as s,c as n,n as k,h as o,a as e,t as r,x as $,_ as F,b as y,j as D,d as v,m as x,y as A,z as K,F as _,l as G,w as C,r as S,g as z,A as M,B as Z,C as X,D as q,E as tt,G as W,H as P,I as et,J,K as R,L as st,M as Q,N as at,O as ot,P as I,Q as nt,i as lt,R as V,S as rt,T as it}from"./DTxy5P8N.js";const ct={class:"capitalize"},dt=j({__name:"ScriptStatus",props:{status:{},error:{}},setup(l){const p=$(()=>l.error?l.error==="TypeError: Failed to fetch"?"CORS Error":l.error:l.status||"unknown"),u=$(()=>{if(l.error||l.status==="error")return"status-error";switch(l.status){case"loaded":return"status-loaded";case"loading":return"status-loading";case"awaitingLoad":return"status-awaiting";case"validation-failed":return"status-validation";default:return"status-unknown"}});return(g,h)=>(s(),n("div",{class:k(["script-status",o(u)])},[h[0]||(h[0]=e("span",{class:"script-status-dot"},null,-1)),e("span",ct,r(o(p)),1)],2))}}),ut=Object.assign(F(dt,[["__scopeId","data-v-5cf865ba"]]),{__name:"ScriptStatus"}),mt={key:0,class:"script-metric"},pt=j({__name:"ScriptSize",props:{size:{}},setup(l){return(p,u)=>{const g=D;return l.size?(s(),n("span",mt,[y(g,{name:"i-carbon-meter",class:"text-[10px] opacity-50"}),v(" "+r(l.size),1)])):x("",!0)}}}),_t=Object.assign(F(pt,[["__scopeId","data-v-b147450b"]]),{__name:"ScriptSize"}),xt={key:0,class:"script-metric"},ft=j({__name:"ScriptLoadTime",props:{loadTime:{}},setup(l){return(p,u)=>{const g=D;return l.loadTime?(s(),n("span",xt,[y(g,{name:"i-carbon-timer",class:"text-[10px] opacity-50"}),v(" "+r(l.loadTime),1)])):x("",!0)}}}),yt=Object.assign(F(ft,[["__scopeId","data-v-c6837c50"]]),{__name:"ScriptLoadTime"}),vt={key:0,class:"panel-grids flex flex-col items-center justify-center py-8 gap-1.5 rounded-b-xl"},gt={key:1,class:"waterfall-container"},bt={class:"waterfall-stats"},ht={class:"waterfall-stat"},kt={class:"waterfall-stat-value"},wt={class:"waterfall-stat"},$t={class:"waterfall-stat-value"},St={class:"waterfall-stat"},Lt={class:"waterfall-stat-value"},Ct={class:"waterfall-proxied-badge"},Tt={class:"waterfall-stat-value"},jt={class:"text-xs space-y-1 max-w-60"},zt={class:"opacity-70"},Bt={class:"px-1 py-px rounded bg-white/10 text-[10px]"},Pt={key:0,class:"opacity-70"},Rt={class:"flex items-center gap-1"},Ft={class:"text-xs space-y-0.5"},Mt={class:"font-mono font-semibold"},It={class:"opacity-70"},Dt={key:0,class:"opacity-60"},Ot={key:1,class:"text-emerald-400"},Nt={class:"waterfall-table"},Ut={class:"waterfall-legend"},Ht={class:"waterfall-rows"},Et={class:"waterfall-url"},At={class:"waterfall-bar-track"},Kt={class:"waterfall-duration"},Wt={class:"text-xs space-y-1.5 max-w-80"},Vt={class:"font-mono text-[11px] break-all opacity-90"},Jt={class:"flex items-center gap-2 opacity-70"},Qt={class:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5"},Gt={class:"flex items-center gap-1 opacity-60"},Xt={class:"tabular-nums text-right"},Yt={key:0,class:"flex items-center gap-1 text-emerald-400"},Zt=j({__name:"NetworkWaterfall",props:{requests:{},domains:{default:()=>[]},proxyRoutes:{default:()=>[]},privacyLevel:{},proxyPrefix:{},isFirstParty:{type:Boolean,default:!1}},setup(l){const p=[{key:"dns",label:"DNS",color:"oklch(70% 0.15 165)"},{key:"connect",label:"Connect",color:"oklch(72% 0.14 75)"},{key:"ssl",label:"SSL",color:"oklch(65% 0.15 300)"},{key:"ttfb",label:"TTFB",color:"oklch(65% 0.13 250)"},{key:"download",label:"Download",color:"oklch(72% 0.12 200)"}],u=$(()=>[...l.requests].sort((i,t)=>i.startTime-t.startTime)),g=$(()=>{if(!u.value.length)return{min:0,max:1};const i=u.value[0].startTime,t=Math.max(...u.value.map(d=>d.startTime+d.duration));return{min:i,max:t||i+1}}),h=$(()=>l.requests.reduce((i,t)=>i+t.transferSize,0)),B=$(()=>g.value.max-g.value.min),b=$(()=>l.requests.filter(i=>i.isProxied).length),m=$(()=>{const i=new Map;for(const t of l.requests){const d=T(t.url),f=i.get(d)||{count:0,transfer:0,proxied:!1};f.count++,f.transfer+=t.transferSize,t.isProxied&&(f.proxied=!0),i.set(d,f)}return[...i.entries()].sort((t,d)=>d[1].transfer-t[1].transfer).map(([t,d])=>({domain:t,...d,isKnown:l.domains.includes(t),proxyRoute:l.proxyRoutes.find(f=>f.target.includes(t))}))}),w=/\/_scripts\/p\/([^/]+)/;function T(i){try{return new URL(i).hostname}catch{return i.match(w)?.[1]||"localhost"}}function O(i){const{min:t,max:d}=g.value,f=d-t;return{left:`${(i.startTime-t)/f*100}%`,width:`${Math.max(i.duration/f*100,.5)}%`}}function N(i,t){if(i.duration===0)return"0%";const d=i[t.key];return`${Math.max(d/i.duration*100,d>0?2:0)}%`}function U(i){try{const t=new URL(i),d=t.pathname+t.search;return d.length>50?`${d.slice(0,47)}...`:d}catch{return i.length>50?`${i.slice(0,47)}...`:i}}function H(i){return{script:"Script",xmlhttprequest:"XHR",fetch:"Fetch",img:"Image",css:"Stylesheet",beacon:"Beacon"}[i]||i}function E(i){return{script:"i-carbon-code",xmlhttprequest:"i-carbon-send-alt",fetch:"i-carbon-send-alt",img:"i-carbon-image",css:"i-carbon-paint-brush",beacon:"i-carbon-satellite-radar"}[i]||"i-carbon-document"}function a(i){return i.transferSize===0&&i.decodedBodySize>0?304:200}return(i,t)=>{const d=D,f=G;return l.requests.length?(s(),n("div",gt,[e("div",bt,[e("span",ht,[e("span",kt,r(l.requests.length),1),t[1]||(t[1]=e("span",{class:"waterfall-stat-label"},"req",-1))]),t[7]||(t[7]=e("span",{class:"waterfall-sep"},null,-1)),e("span",wt,[e("span",$t,r(o(A)(o(h))),1)]),t[8]||(t[8]=e("span",{class:"waterfall-sep"},null,-1)),e("span",St,[e("span",Lt,r(o(K)(Math.round(o(B)))),1)]),l.isFirstParty&&o(b)>0?(s(),n(_,{key:0},[t[5]||(t[5]=e("span",{class:"waterfall-sep"},null,-1)),y(f,null,{content:C(()=>[e("div",jt,[t[4]||(t[4]=e("div",{class:"font-semibold"}," First-Party Proxy ",-1)),e("div",zt,[v(r(o(b))+" request"+r(o(b)!==1?"s":"")+" routed through ",1),e("code",Bt,r(l.proxyPrefix||"/_scripts/p"),1)]),l.privacyLevel?(s(),n("div",Pt,[t[3]||(t[3]=v(" Privacy: ",-1)),e("span",{class:k(l.privacyLevel==="full"?"text-emerald-400":l.privacyLevel==="partial"?"text-amber-400":"")},r(l.privacyLevel),3)])):x("",!0)])]),default:C(()=>[e("span",Ct,[y(d,{name:"i-carbon-security",class:"text-[10px]"}),e("span",Tt,r(o(b))+"/"+r(l.requests.length),1),t[2]||(t[2]=v(" proxied ",-1))])]),_:1})],64)):x("",!0),o(m).length>1?(s(),n(_,{key:1},[t[6]||(t[6]=e("span",{class:"waterfall-sep"},null,-1)),e("div",Rt,[(s(!0),n(_,null,S(o(m),c=>(s(),z(f,{key:c.domain},{content:C(()=>[e("div",Ft,[e("div",Mt,r(c.domain),1),e("div",It,r(c.count)+" req · "+r(o(A)(c.transfer)),1),c.proxyRoute?(s(),n("div",Dt,r(c.proxyRoute.target)+" → "+r(c.proxyRoute.local),1)):x("",!0),c.proxied?(s(),n("div",Ot," Proxied through first-party ")):x("",!0)])]),default:C(()=>[e("span",{class:k(["domain-pill",c.proxied?"domain-pill-proxied":""])},[c.proxied?(s(),z(d,{key:0,name:"i-carbon-security",class:"text-[8px]"})):x("",!0),v(" "+r(c.domain),1)],2)]),_:2},1024))),128))])],64)):x("",!0)]),e("div",Nt,[e("div",Ut,[(s(),n(_,null,S(p,c=>e("div",{key:c.key,class:"waterfall-legend-item"},[e("span",{class:"waterfall-legend-dot",style:M({background:c.color})},null,4),v(" "+r(c.label),1)])),64))]),e("div",Ht,[(s(!0),n(_,null,S(o(u),(c,Y)=>(s(),z(f,{key:Y},{content:C(()=>[e("div",Wt,[e("div",Vt,r(c.url),1),e("div",Jt,[e("span",null,r(H(c.initiatorType)),1),t[10]||(t[10]=e("span",{class:"opacity-30"},"·",-1)),e("span",null,r(o(K)(Math.round(c.duration))),1),c.transferSize>0?(s(),n(_,{key:0},[t[9]||(t[9]=e("span",{class:"opacity-30"},"·",-1)),e("span",null,r(o(A)(c.transferSize)),1)],64)):x("",!0)]),e("div",Qt,[(s(),n(_,null,S(p,L=>(s(),n(_,{key:L.key},[c[L.key]>.1?(s(),n(_,{key:0},[e("div",Gt,[e("span",{class:"w-1.5 h-1.5 rounded-sm inline-block",style:M({background:L.color})},null,4),v(" "+r(L.label),1)]),e("div",Xt,r(c[L.key].toFixed(1))+"ms ",1)],64)):x("",!0)],64))),64))]),c.isProxied?(s(),n("div",Yt,[y(d,{name:"i-carbon-security",class:"text-[10px]"}),t[11]||(t[11]=v(" Proxied through first-party ",-1))])):x("",!0)])]),default:C(()=>[e("div",{class:k(["waterfall-row",c.isProxied?"waterfall-row-proxied":""])},[e("div",{class:k(["waterfall-status",a(c)===304?"waterfall-status-304":"waterfall-status-200"])},r(a(c)),3),y(d,{name:c.isProxied?"i-carbon-security":E(c.initiatorType),class:k(["waterfall-row-icon",c.isProxied?"waterfall-row-icon-proxied":""])},null,8,["name","class"]),e("div",Et,r(U(c.url)),1),e("div",At,[e("div",{class:"waterfall-bar",style:M(O(c))},[(s(),n(_,null,S(p,L=>e("div",{key:L.key,style:M({width:N(c,L),background:L.color}),class:"h-full"},null,4)),64))],4)]),e("div",Kt,r(o(K)(Math.round(c.duration))),1)],2)]),_:2},1024))),128))])])])):(s(),n("div",vt,[y(d,{name:"i-carbon-network-4",class:"text-xl text-(--color-text-subtle)"}),t[0]||(t[0]=e("p",{class:"text-xs text-(--color-text-subtle)"}," Requests appear as the script loads ",-1))]))}}}),qt=Object.assign(F(Zt,[["__scopeId","data-v-a64c8d9a"]]),{__name:"NetworkWaterfall"});function te(l=2e3){const{copy:p,copied:u}=Z({legacy:!0,copiedDuring:l});return{copy:p,copied:u}}const ee=j({__name:"DevtoolsCopyButton",props:{text:{}},setup(l){const{copy:p,copied:u}=te();return(g,h)=>{const B=X,b=G;return s(),z(b,{text:o(u)?"Copied!":"Copy"},{default:C(()=>[y(B,{icon:o(u)?"carbon:checkmark":"carbon:copy","aria-label":o(u)?"Copied":"Copy to clipboard",class:k(o(u)?"text-[var(--seo-green)]":""),onClick:h[0]||(h[0]=m=>o(p)(l.text))},null,8,["icon","aria-label","class"])]),_:1},8,["text"])}}}),se=Object.assign(ee,{__name:"DevtoolsCopyButton"}),ae=["innerHTML"],oe=j({__name:"OCodeBlock",props:{code:{},lang:{},lines:{type:Boolean,default:!1},transformRendered:{type:Function}},setup(l){const p=q(()=>l.code,l.lang),u=$(()=>l.transformRendered?l.transformRendered(p.value||""):p.value);return(g,h)=>(s(),n("pre",{class:k(["code-block p-5",l.lines?"code-block-lines":""]),innerHTML:o(u)},null,10,ae))}}),ne=Object.assign(oe,{__name:"OCodeBlock"}),le={class:"devtools-snippet"},re={key:0,class:"devtools-snippet-header"},ie={class:"devtools-snippet-label"},ce=j({__name:"DevtoolsSnippet",props:{label:{},code:{},lang:{default:"js"}},setup(l){return(p,u)=>{const g=se,h=ne;return s(),n("div",le,[l.label||p.$slots.header?(s(),n("div",re,[tt(p.$slots,"header",{},()=>[e("code",ie,r(l.label),1)],!0),y(g,{text:l.code},null,8,["text"])])):x("",!0),y(h,{code:l.code,lang:l.lang,class:"devtools-snippet-block"},null,8,["code","lang"])])}}}),de=Object.assign(F(ce,[["__scopeId","data-v-265ccc31"]]),{__name:"DevtoolsSnippet"}),ue={class:"py-1"},me={key:0,class:"panel-grids rounded-xl flex flex-col items-center justify-center py-16 gap-3"},pe={class:"w-12 h-12 rounded-xl bg-(--color-surface-elevated) border border-(--color-border) flex items-center justify-center"},_e={class:"filter-bar"},xe=["onClick"],fe={class:"filter-chip-count"},ye={class:"stagger-children space-y-3"},ve={class:"px-4 py-3 flex items-center justify-between gap-3"},ge={class:"flex items-center gap-2.5 min-w-0"},be={class:"w-7 h-7 rounded-lg bg-(--color-surface-sunken) border border-(--color-border-subtle) flex items-center justify-center flex-shrink-0 overflow-hidden"},he=["src"],ke=["innerHTML"],we=["src"],$e={class:"min-w-0"},Se={class:"flex items-center gap-2"},Le=["href","title"],Ce=["href"],Te={class:"px-4 pb-3 flex items-center gap-2 flex-wrap"},je={key:0,class:"status-enabled"},ze={key:1,class:"inline-flex items-center gap-1 text-[11px] text-(--color-text-subtle) font-mono"},Be={class:"border-t border-(--color-border-subtle)"},Pe={class:"flex items-center border-b border-(--color-border-subtle)"},Re=["onClick"],Fe={key:0,class:"text-[9px] px-1 py-px rounded-full bg-(--color-surface-sunken) tabular-nums font-mono"},Me={key:0,class:"p-3"},Ie={key:0,class:"text-xs text-(--color-text-subtle) py-2 text-center"},De={key:1,class:"event-timeline"},Oe={class:"event-time"},Ne={key:0,class:"flex items-center gap-2 min-w-0"},Ue={class:"text-[11px] text-(--color-text-subtle) truncate"},He={key:1,class:"event-fn"},Ee={key:1},Ae={key:2,class:"p-3"},Ke=j({__name:"index",setup(l){const p=[{label:"Events",value:"events",icon:"i-carbon-list"},{label:"Network",value:"network",icon:"i-carbon-network-4"},{label:"API",value:"api",icon:"i-carbon-code"}],u=it("all"),g=$(()=>{const b=Object.values(W.value||{}),m=b.filter(T=>R(T)!=="awaitingLoad").length,w=b.filter(T=>R(T)==="awaitingLoad").length;return{total:b.length,active:m,awaiting:w}}),h=$(()=>{const b=W.value||{};return u.value==="all"?b:Object.fromEntries(Object.entries(b).filter(([,m])=>{const w=R(m);return u.value==="active"?w!=="awaitingLoad":w==="awaitingLoad"}))});function B(b){switch(b){case"loaded":return"status-badge-loaded";case"loading":return"status-badge-loading";case"awaitingLoad":return"status-badge-awaiting";case"removed":case"error":return"status-badge-error";case"validation-failed":return"status-badge-validation";default:return"status-badge-default"}}return(b,m)=>{const w=D,T=X,O=ut,N=_t,U=yt,H=qt,E=de;return s(),n("div",ue,[Object.keys(o(W)||{}).length?(s(),n(_,{key:1},[e("div",_e,[(s(!0),n(_,null,S([{key:"all",label:"All",count:o(g).total},{key:"active",label:"Active",count:o(g).active},{key:"awaiting",label:"Awaiting",count:o(g).awaiting}],a=>(s(),n("button",{key:a.key,class:k(["filter-chip",o(u)===a.key?"filter-chip-active":""]),onClick:i=>u.value=a.key},[v(r(a.label)+" ",1),e("span",fe,r(a.count),1)],10,xe))),128))]),e("div",ye,[(s(!0),n(_,null,S(o(h),(a,i)=>(s(),n("div",{key:i,class:"card overflow-hidden"},[e("div",ve,[e("div",ge,[e("div",be,[o(P)(a)&&typeof o(P)(a)=="string"&&o(P)(a).startsWith("http")?(s(),n("img",{key:0,class:"w-5 h-5 object-contain",src:o(P)(a),alt:""},null,8,he)):o(P)(a)?(s(),n("div",{key:1,class:"w-5 h-5 flex items-center [&>svg]:max-w-5 [&>svg]:max-h-5",innerHTML:o(P)(a)},null,8,ke)):a.src&&!a.src.startsWith("/")?(s(),n("img",{key:2,src:`https://www.google.com/s2/favicons?domain=${o(et)(a.src)}`,class:"w-4 h-4 rounded-sm",alt:""},null,8,we)):(s(),z(w,{key:3,name:"i-carbon-script",class:"text-sm text-(--color-text-subtle)"}))]),e("div",$e,[e("div",Se,[e("a",{href:a.src,target:"_blank",class:"text-sm font-semibold tracking-tight truncate link-external",title:a.src},r(a.registry?.label||a.key||a.src),9,Le),a.docs?(s(),n("a",{key:0,href:a.docs,target:"_blank",class:"text-[10px] font-medium text-(--color-text-subtle) hover:text-(--color-text-muted) transition-colors"}," docs ",8,Ce)):x("",!0)])])]),o(J)(a)&&o(R)(a)==="awaitingLoad"?(s(),z(T,{key:0,size:"xs",color:"primary",variant:"soft",icon:"i-carbon-play-filled-alt",onClick:t=>a.$script.load()},{default:C(()=>[...m[2]||(m[2]=[v(" Load ",-1)])]),_:1},8,["onClick"])):o(J)(a)&&o(R)(a)==="loaded"?(s(),z(T,{key:1,size:"xs",color:"neutral",variant:"ghost",icon:"i-carbon-close",onClick:t=>a.$script.remove()},{default:C(()=>[...m[3]||(m[3]=[v(" Remove ",-1)])]),_:1},8,["onClick"])):x("",!0)]),e("div",Te,[y(O,{status:o(R)(a),error:o(st)[a.src]},null,8,["status","error"]),o(Q)(a.registryKey)?(s(),n("span",je,[y(w,{name:"i-carbon-security",class:"text-xs"}),m[4]||(m[4]=v(" First-Party ",-1))])):x("",!0),y(N,{size:o(at)[a.src]},null,8,["size"]),y(U,{"load-time":a.loadTime},null,8,["load-time"]),a.loadedFrom&&a.loadedFrom!=="unknown"?(s(),n("span",ze,[m[5]||(m[5]=e("svg",{xmlns:"http://www.w3.org/2000/svg",height:"10",viewBox:"0 0 256 221",class:"opacity-60"},[e("path",{fill:"#41B883",d:"M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0z"}),e("path",{fill:"#41B883",d:"m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0z"}),e("path",{fill:"#35495E",d:"M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0z"})],-1)),v(" "+r(a.loadedFrom),1)])):x("",!0),(s(!0),n(_,null,S(Object.keys(a.registryMeta||{}),t=>(s(),n("span",{key:t,class:"text-[11px] text-(--color-text-subtle) font-mono"},r(t)+": "+r(a.registryMeta[t]),1))),128))]),e("div",Be,[e("div",Pe,[(s(),n(_,null,S(p,t=>e("button",{key:t.value,class:k(["sub-tab",o(I)(a.src)===t.value?"sub-tab-active":""]),onClick:d=>o(ot)(a.src,t.value)},[y(w,{name:t.icon,class:"text-xs"},null,8,["name"]),v(" "+r(t.label)+" ",1),t.value==="network"&&a.networkRequests?.length?(s(),n("span",Fe,r(a.networkRequests.length),1)):x("",!0)],10,Re)),64))]),o(I)(a.src)==="events"?(s(),n("div",Me,[a.events?.length?(s(),n("div",De,[(s(!0),n(_,null,S(a.events,(t,d)=>(s(),n("div",{key:d,class:"event-row"},[e("div",Oe,r(o(nt)(t.at)),1),t.type==="status"?(s(),n(_,{key:0},[t.status==="validation-failed"?(s(),n("div",Ne,[e("span",{class:k(["event-badge",B(t.status)])},r(t.status),3),e("span",Ue,r(t.args.issues.map(f=>`${f.path?.map(c=>c.key).join(".")}: ${f.message}`).join(", ")),1)])):(s(),n("span",{key:1,class:k(["event-badge",B(t.status)])},r(t.status),3))],64)):t.type==="fn-call"?(s(),n("span",He,[t.args?(s(),n(_,{key:0},[v(r(`${t.fn}(${t.args?.map(f=>JSON.stringify(f,null,2)).join(", ")||""})`),1)],64)):(s(),n(_,{key:1},[m[6]||(m[6]=e("span",{class:"opacity-40"},"QUEUED",-1)),v(" "+r(t.fn),1)],64))])):x("",!0)]))),128))])):(s(),n("div",Ie," No events recorded "))])):o(I)(a.src)==="network"?(s(),n("div",Ee,[y(H,{requests:a.networkRequests||[],domains:o(V)(a.registryKey)?.domains,"proxy-routes":o(V)(a.registryKey)?.routes,"privacy-level":o(V)(a.registryKey)?.privacyLevel,"proxy-prefix":o(lt)?.proxyPrefix,"is-first-party":o(Q)(a.registryKey)},null,8,["requests","domains","proxy-routes","privacy-level","proxy-prefix","is-first-party"])])):o(I)(a.src)==="api"?(s(),n("div",Ae,[y(E,{code:o(rt)(a.$script?.instance),lang:"js"},null,8,["code"])])):x("",!0)])]))),128))])],64)):(s(),n("div",me,[e("div",pe,[y(w,{name:"i-carbon-script",class:"text-2xl text-(--color-text-subtle)"})]),m[0]||(m[0]=e("p",{class:"text-sm font-medium text-(--color-text-muted)"}," No scripts loaded ",-1)),m[1]||(m[1]=e("p",{class:"text-xs text-(--color-text-subtle)"}," Scripts will appear here as they are registered ",-1))]))])}}}),Ve=F(Ke,[["__scopeId","data-v-1d33b8c9"]]);export{Ve as default};
|