@nuxt/scripts 1.0.5 → 1.1.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.
Files changed (73) hide show
  1. package/dist/devtools-client/200.html +1 -1
  2. package/dist/devtools-client/404.html +1 -1
  3. package/dist/devtools-client/_nuxt/{xOsbuyp3.js → 1wb58MKb.js} +1 -1
  4. package/dist/devtools-client/_nuxt/{CApasjik.js → BbLmrp_o.js} +1 -1
  5. package/dist/devtools-client/_nuxt/{zmRZ2I-R.js → Cx46cS8a.js} +1 -1
  6. package/dist/devtools-client/_nuxt/{CTPc9yIZ.js → D-M51CV3.js} +1 -1
  7. package/dist/devtools-client/_nuxt/D4HTNcLU.js +188 -0
  8. package/dist/devtools-client/_nuxt/{Dj5q49Yv.js → DU3BlAm5.js} +1 -1
  9. package/dist/devtools-client/_nuxt/{CbCcQNvm.js → DiaY4J4_.js} +1 -1
  10. package/dist/devtools-client/_nuxt/builds/latest.json +1 -1
  11. package/dist/devtools-client/_nuxt/builds/meta/0b4ab733-07a6-40b2-b25e-aca95fa55188.json +1 -0
  12. package/dist/devtools-client/_nuxt/error-404.D2T48gBS.css +1 -0
  13. package/dist/devtools-client/_nuxt/error-500.sMTZJbsP.css +1 -0
  14. package/dist/devtools-client/docs/index.html +1 -1
  15. package/dist/devtools-client/first-party/index.html +1 -1
  16. package/dist/devtools-client/index.html +1 -1
  17. package/dist/devtools-client/registry/index.html +1 -1
  18. package/dist/module.d.mts +7 -1
  19. package/dist/module.d.ts +7 -1
  20. package/dist/module.json +1 -1
  21. package/dist/module.mjs +266 -34
  22. package/dist/registry.mjs +76 -5
  23. package/dist/runtime/components/GoogleMaps/ScriptGoogleMaps.vue +50 -7
  24. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.d.vue.ts +2 -2
  25. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsGeoJson.vue.d.ts +2 -2
  26. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.d.vue.ts +2 -2
  27. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolygon.vue.d.ts +2 -2
  28. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.d.vue.ts +2 -2
  29. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsPolyline.vue.d.ts +2 -2
  30. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.d.vue.ts +2 -2
  31. package/dist/runtime/components/GoogleMaps/ScriptGoogleMapsRectangle.vue.d.ts +2 -2
  32. package/dist/runtime/components/ScriptCalendlyInlineWidget.d.vue.ts +59 -0
  33. package/dist/runtime/components/ScriptCalendlyInlineWidget.vue +79 -0
  34. package/dist/runtime/components/ScriptCalendlyInlineWidget.vue.d.ts +59 -0
  35. package/dist/runtime/components/ScriptPayPalButtons.d.vue.ts +1 -1
  36. package/dist/runtime/components/ScriptPayPalButtons.vue.d.ts +1 -1
  37. package/dist/runtime/components/ScriptPayPalMessages.d.vue.ts +1 -1
  38. package/dist/runtime/components/ScriptPayPalMessages.vue.d.ts +1 -1
  39. package/dist/runtime/composables/useScript.js +48 -0
  40. package/dist/runtime/debug.d.ts +1 -0
  41. package/dist/runtime/debug.js +1 -0
  42. package/dist/runtime/devtools-standalone-bridge.client.js +3 -1
  43. package/dist/runtime/logger.js +4 -0
  44. package/dist/runtime/registry/_gcm-consent.d.ts +14 -0
  45. package/dist/runtime/registry/_gcm-consent.js +24 -0
  46. package/dist/runtime/registry/ahrefs-analytics.d.ts +39 -0
  47. package/dist/runtime/registry/ahrefs-analytics.js +18 -0
  48. package/dist/runtime/registry/calendly.d.ts +76 -0
  49. package/dist/runtime/registry/calendly.js +63 -0
  50. package/dist/runtime/registry/google-analytics.d.ts +5 -6
  51. package/dist/runtime/registry/google-analytics.js +9 -12
  52. package/dist/runtime/registry/google-tag-manager.d.ts +5 -6
  53. package/dist/runtime/registry/google-tag-manager.js +18 -20
  54. package/dist/runtime/registry/linkedin-insight.d.ts +35 -0
  55. package/dist/runtime/registry/linkedin-insight.js +49 -0
  56. package/dist/runtime/registry/schemas.d.ts +165 -6
  57. package/dist/runtime/registry/schemas.js +125 -7
  58. package/dist/runtime/registry/tiktok-pixel.d.ts +28 -2
  59. package/dist/runtime/registry/tiktok-pixel.js +18 -1
  60. package/dist/runtime/registry/usercentrics.d.ts +85 -0
  61. package/dist/runtime/registry/usercentrics.js +54 -0
  62. package/dist/runtime/server/proxy-handler.js +13 -4
  63. package/dist/runtime/types.d.ts +40 -1
  64. package/dist/runtime/utils.d.ts +8 -2
  65. package/dist/runtime/utils.js +5 -1
  66. package/dist/stats.mjs +19 -0
  67. package/dist/types-source.mjs +280 -15
  68. package/dist/types.d.mts +1 -1
  69. package/package.json +11 -8
  70. package/dist/devtools-client/_nuxt/BNvWpYaC.js +0 -188
  71. package/dist/devtools-client/_nuxt/builds/meta/caa75c14-abb0-4d9e-8f1a-440e91f4b1eb.json +0 -1
  72. package/dist/devtools-client/_nuxt/error-404.upckUYZO.css +0 -1
  73. package/dist/devtools-client/_nuxt/error-500.DS4SeCFl.css +0 -1
@@ -1,4 +1,33 @@
1
1
  const types = {
2
+ "_gcm-consent": [
3
+ {
4
+ name: "GcmConsentContract",
5
+ kind: "interface",
6
+ code: "export interface GcmConsentContract {\n /** Forward a `consent`,`<action>`, `<state>` call to the script's transport (dataLayer or gtag). */\n push: (proxy: any, action: 'default' | 'update', state: ConsentState) => void\n}"
7
+ }
8
+ ],
9
+ "ahrefs-analytics": [
10
+ {
11
+ name: "AhrefsAnalyticsOptions",
12
+ kind: "const",
13
+ code: "export const AhrefsAnalyticsOptions = object({\n /**\n * Your Ahrefs Web Analytics project key. Set as the `data-key` attribute\n * on the loaded `analytics.js` script tag.\n * @see https://ahrefs.com/web-analytics\n */\n key: pipe(string(), minLength(1)),\n})"
14
+ },
15
+ {
16
+ name: "AhrefsAnalyticsSendEventOptions",
17
+ kind: "interface",
18
+ code: "export interface AhrefsAnalyticsSendEventOptions {\n /** Custom dimensions sent under `props`. */\n props?: Record<string, string>\n /** Arbitrary metadata sent under `meta`. */\n meta?: Record<string, unknown>\n /** Optional callback invoked once the beacon request completes. */\n callback?: (result?: { status?: number }) => void\n}"
19
+ },
20
+ {
21
+ name: "AhrefsAnalyticsInstance",
22
+ kind: "interface",
23
+ code: "export interface AhrefsAnalyticsInstance {\n /**\n * Manually send an event to Ahrefs Analytics. The script auto-fires\n * page-view events on initial load and on `history.pushState`/`popstate`,\n * so SPA navigations are tracked without calling this.\n */\n sendEvent: (name: string, options?: AhrefsAnalyticsSendEventOptions) => void\n}"
24
+ },
25
+ {
26
+ name: "AhrefsAnalyticsApi",
27
+ kind: "interface",
28
+ code: "export interface AhrefsAnalyticsApi {\n AhrefsAnalytics: AhrefsAnalyticsInstance\n}"
29
+ }
30
+ ],
2
31
  "bing-uet": [
3
32
  {
4
33
  name: "BingUetOptions",
@@ -93,6 +122,48 @@ const types = {
93
122
  code: "interface ScriptBlueskyEmbedSlots {\n default?: (props: object) => any\n loading?: () => any\n error?: (props: object) => any\n}"
94
123
  }
95
124
  ],
125
+ calendly: [
126
+ {
127
+ name: "CalendlyOptions",
128
+ kind: "const",
129
+ code: "export const CalendlyOptions = object({\n /**\n * The Calendly event URL to embed.\n * Required for inline, popup, and badge widgets when called via the composable.\n * @example 'https://calendly.com/your-name/30min'\n * @see https://help.calendly.com/hc/en-us/articles/223147027\n */\n url: optional(string()),\n /**\n * Pre-fill invitee fields on the booking form.\n * @see https://help.calendly.com/hc/en-us/articles/360020052833\n */\n prefill: optional(object({\n name: optional(string()),\n email: optional(string()),\n firstName: optional(string()),\n lastName: optional(string()),\n /** Custom answers keyed by `a1`, `a2`, ... matching custom question order. */\n customAnswers: optional(record(string(), string())),\n })),\n /**\n * UTM parameters appended to the booking URL for marketing attribution.\n * @see https://help.calendly.com/hc/en-us/articles/360020052833\n */\n utm: optional(object({\n utmCampaign: optional(string()),\n utmSource: optional(string()),\n utmMedium: optional(string()),\n utmContent: optional(string()),\n utmTerm: optional(string()),\n })),\n /**\n * Theme and layout overrides applied to the booking page.\n * @see https://help.calendly.com/hc/en-us/articles/360020052833\n */\n pageSettings: optional(object({\n backgroundColor: optional(string()),\n hideEventTypeDetails: optional(boolean()),\n hideLandingPageDetails: optional(boolean()),\n primaryColor: optional(string()),\n textColor: optional(string()),\n })),\n /**\n * CSS selector for the element that hosts the inline widget.\n * Required when the widget is initialised inline; the element should have a\n * minimum height of around 700px so the booking iframe is fully visible.\n */\n parentElement: optional(string()),\n})"
130
+ },
131
+ {
132
+ name: "CalendlyPrefill",
133
+ kind: "interface",
134
+ code: "interface CalendlyPrefill {\n name?: string\n email?: string\n firstName?: string\n lastName?: string\n customAnswers?: Record<string, string>\n}"
135
+ },
136
+ {
137
+ name: "CalendlyUtm",
138
+ kind: "interface",
139
+ code: "interface CalendlyUtm {\n utmCampaign?: string\n utmSource?: string\n utmMedium?: string\n utmContent?: string\n utmTerm?: string\n}"
140
+ },
141
+ {
142
+ name: "CalendlyPageSettings",
143
+ kind: "interface",
144
+ code: "interface CalendlyPageSettings {\n backgroundColor?: string\n hideEventTypeDetails?: boolean\n hideLandingPageDetails?: boolean\n hideGdprBanner?: boolean\n primaryColor?: string\n textColor?: string\n}"
145
+ },
146
+ {
147
+ name: "CalendlyInlineWidgetOptions",
148
+ kind: "interface",
149
+ code: "export interface CalendlyInlineWidgetOptions {\n url: string\n parentElement: HTMLElement\n prefill?: CalendlyPrefill\n utm?: CalendlyUtm\n pageSettings?: CalendlyPageSettings\n}"
150
+ },
151
+ {
152
+ name: "CalendlyPopupWidgetOptions",
153
+ kind: "interface",
154
+ code: "export interface CalendlyPopupWidgetOptions {\n url: string\n rootElement?: HTMLElement\n text?: string\n color?: string\n textColor?: string\n branding?: boolean\n prefill?: CalendlyPrefill\n utm?: CalendlyUtm\n pageSettings?: CalendlyPageSettings\n}"
155
+ },
156
+ {
157
+ name: "CalendlyBadgeWidgetOptions",
158
+ kind: "interface",
159
+ code: "export interface CalendlyBadgeWidgetOptions {\n url: string\n text?: string\n color?: string\n textColor?: string\n branding?: boolean\n prefill?: CalendlyPrefill\n utm?: CalendlyUtm\n pageSettings?: CalendlyPageSettings\n}"
160
+ },
161
+ {
162
+ name: "CalendlyApi",
163
+ kind: "interface",
164
+ code: "export interface CalendlyApi {\n Calendly: {\n initInlineWidget: (options: CalendlyInlineWidgetOptions) => void\n initPopupWidget: (options: CalendlyPopupWidgetOptions) => void\n initBadgeWidget: (options: CalendlyBadgeWidgetOptions) => void\n showPopupWidget: (url: string) => void\n closePopupWidget: () => void\n initPopupWidgetWithText: (options: CalendlyPopupWidgetOptions) => void\n q?: unknown[]\n }\n}"
165
+ }
166
+ ],
96
167
  clarity: [
97
168
  {
98
169
  name: "ClarityOptions",
@@ -259,12 +330,12 @@ const types = {
259
330
  {
260
331
  name: "GoogleAnalyticsOptions",
261
332
  kind: "const",
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})"
333
+ 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(s) fired as `gtag('consent', 'default', state)` before\n * `gtag('js', ...)`. Pass an array to fire multiple defaults — for example, different\n * defaults per `region` (more specific regions override broader ones at runtime).\n * @see https://developers.google.com/tag-platform/security/guides/consent?consentmode=advanced#region-specific-behavior\n */\n defaultConsent: optional(union([gcmConsentState, array(gcmConsentState)])),\n})"
263
334
  },
264
335
  {
265
336
  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}"
337
+ kind: "type",
338
+ code: "export type GoogleAnalyticsConsent = GcmConsentApi"
268
339
  }
269
340
  ],
270
341
  "google-maps": [
@@ -502,12 +573,12 @@ const types = {
502
573
  {
503
574
  name: "GoogleTagManagerOptions",
504
575
  kind: "const",
505
- 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})"
576
+ 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 GCMv2 consent state(s) fired as `['consent','default', state]` onto the dataLayer\n * before the `gtm.js` event. Pass an array to fire multiple defaults — for example,\n * different defaults per `region` (more specific regions override broader ones at runtime).\n * @see https://developers.google.com/tag-platform/tag-manager/templates/consent-apis\n * @see https://developers.google.com/tag-platform/security/guides/consent?consentmode=advanced#region-specific-behavior\n */\n defaultConsent: optional(union([gcmConsentState, array(gcmConsentState)])),\n})"
506
577
  },
507
578
  {
508
579
  name: "GoogleTagManagerConsent",
509
- kind: "interface",
510
- code: "export interface GoogleTagManagerConsent {\n /** Push `['consent','update', state]` onto dataLayer with GCMv2 partial state. */\n update: (state: ConsentState) => void\n}"
580
+ kind: "type",
581
+ code: "export type GoogleTagManagerConsent = GcmConsentApi"
511
582
  }
512
583
  ],
513
584
  gravatar: [
@@ -605,6 +676,33 @@ const types = {
605
676
  code: "interface ScriptLemonSqueezySlots {\n default?: () => any\n}"
606
677
  }
607
678
  ],
679
+ "linkedin-insight": [
680
+ {
681
+ name: "LinkedInInsightOptions",
682
+ kind: "const",
683
+ code: "export const LinkedInInsightOptions = object({\n /**\n * Your LinkedIn Insight Tag Partner ID, or an array of Partner IDs to push\n * onto window._linkedin_data_partner_ids. The first ID is used as the\n * primary _linkedin_partner_id global.\n * @example '111143'\n * @example ['111143', '111154']\n * @see https://www.linkedin.com/help/lms/answer/a417869/access-your-linkedin-partner-id\n */\n id: union([pipe(string(), minLength(1)), pipe(array(pipe(string(), minLength(1))), minLength(1))]),\n /**\n * Optional page-load event ID for Conversions API deduplication. Assigned\n * to window._linkedin_event_id BEFORE the Insight Tag base code runs. Must\n * match the eventId sent with the corresponding server-side Conversions\n * API event.\n *\n * Per-event conversion deduplication uses the per-call event_id passed to\n * lintrk('track', { conversion_id, event_id }) instead.\n * @see https://learn.microsoft.com/en-us/linkedin/marketing/conversions/deduplication\n */\n eventId: optional(string()),\n /**\n * Auto-fire lintrk('track') on Vue Router route changes (SPA virtual page\n * views). When true, suppresses the script's built-in auto-page-view via\n * window._wait_for_lintrk and tracks every navigation including the\n * initial page through Nuxt's page:finish hook. When false, the script\n * fires its own page-view exactly once on load and SPA navigations are\n * not tracked unless lintrk('track') is called manually.\n * @default false\n */\n enableAutoSpaTracking: optional(boolean()),\n})"
684
+ },
685
+ {
686
+ name: "LintrkTrackParams",
687
+ kind: "interface",
688
+ code: "interface LintrkTrackParams {\n conversion_id?: number\n event_id?: string\n commandCallback?: () => void\n [key: string]: any\n}"
689
+ },
690
+ {
691
+ name: "LintrkUserData",
692
+ kind: "interface",
693
+ code: "interface LintrkUserData {\n /** Plain email; the script SHA-256 hashes it before sending. */\n email: string\n}"
694
+ },
695
+ {
696
+ name: "LintrkFns",
697
+ kind: "type",
698
+ code: "type LintrkFns\n = & ((cmd: 'track', params?: LintrkTrackParams) => void)\n & ((cmd: 'setUserData', data: LintrkUserData) => void)\n & ((cmd: (string & {}), ...args: any[]) => void)"
699
+ },
700
+ {
701
+ name: "LinkedInInsightApi",
702
+ kind: "interface",
703
+ code: "export interface LinkedInInsightApi {\n lintrk: LintrkFns & { q?: unknown[] }\n}"
704
+ }
705
+ ],
608
706
  "matomo-analytics": [
609
707
  {
610
708
  name: "MatomoAnalyticsOptions",
@@ -898,22 +996,27 @@ const types = {
898
996
  {
899
997
  name: "StandardEvents",
900
998
  kind: "type",
901
- code: "type StandardEvents\n = 'ViewContent'\n | 'ClickButton'\n | 'Search'\n | 'AddToWishlist'\n | 'AddToCart'\n | 'InitiateCheckout'\n | 'AddPaymentInfo'\n | 'CompletePayment'\n | 'PlaceAnOrder'\n | 'Contact'\n | 'Download'\n | 'SubmitForm'\n | 'CompleteRegistration'\n | 'Subscribe'"
999
+ code: "type StandardEvents\n = 'ViewContent'\n | 'ClickButton'\n | 'Search'\n | 'AddToWishlist'\n | 'AddToCart'\n | 'InitiateCheckout'\n | 'AddPaymentInfo'\n | 'CompletePayment'\n | 'PlaceAnOrder'\n | 'Purchase'\n | 'Contact'\n | 'Download'\n | 'SubmitForm'\n | 'CompleteRegistration'\n | 'Subscribe'\n | 'StartTrial'\n | 'ApplicationApproval'\n | 'CustomizeProduct'\n | 'FindLocation'\n | 'Schedule'\n | 'SubmitApplication'"
902
1000
  },
903
1001
  {
904
1002
  name: "EventProperties",
905
1003
  kind: "interface",
906
- code: "interface EventProperties {\n content_id?: string\n content_type?: string\n content_name?: string\n contents?: Array<{ content_id: string, content_type?: string, content_name?: string, price?: number, quantity?: number }>\n currency?: string\n value?: number\n description?: string\n query?: string\n [key: string]: any\n}"
1004
+ code: "interface EventProperties {\n content_id?: string\n content_type?: string\n content_name?: string\n contents?: Array<{ content_id: string, content_type?: string, content_name?: string, price?: number, quantity?: number }>\n currency?: string\n value?: number\n description?: string\n query?: string\n /** Order/transaction identifier; complements `event_id` for transaction-level dedup. */\n order_id?: string\n [key: string]: any\n}"
907
1005
  },
908
1006
  {
909
1007
  name: "IdentifyProperties",
910
1008
  kind: "interface",
911
- code: "interface IdentifyProperties {\n email?: string\n phone_number?: string\n external_id?: string\n}"
1009
+ code: "interface IdentifyProperties {\n email?: string\n phone_number?: string\n external_id?: string\n first_name?: string\n last_name?: string\n city?: string\n state?: string\n country?: string\n zip_code?: string\n}"
1010
+ },
1011
+ {
1012
+ name: "TrackOptions",
1013
+ kind: "interface",
1014
+ code: "interface TrackOptions {\n /** Used to deduplicate events sent from both the browser Pixel and the server-side Events API. */\n event_id?: string\n /**\n * Sandbox test-event identifier. When set, events route to TikTok's Test Events panel\n * without affecting production reporting.\n */\n test_event_code?: string\n [key: string]: any\n}"
912
1015
  },
913
1016
  {
914
1017
  name: "TtqFns",
915
1018
  kind: "type",
916
- code: "type TtqFns\n = ((cmd: 'track', event: StandardEvents | (string & {}), properties?: EventProperties) => void)\n & ((cmd: 'page') => void)\n & ((cmd: 'identify', properties: IdentifyProperties) => void)\n & ((cmd: (string & {}), ...args: any[]) => void)"
1019
+ code: "type TtqFns\n = ((cmd: 'track', event: StandardEvents | (string & {}), properties?: EventProperties, options?: TrackOptions) => void)\n & ((cmd: 'page') => void)\n & ((cmd: 'identify', properties: IdentifyProperties) => void)\n & ((cmd: (string & {}), ...args: any[]) => void)"
917
1020
  },
918
1021
  {
919
1022
  name: "TikTokPixelApi",
@@ -923,7 +1026,7 @@ const types = {
923
1026
  {
924
1027
  name: "TikTokPixelOptions",
925
1028
  kind: "const",
926
- 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})"
1029
+ 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 /**\n * Data residency region for the Pixel SDK.\n * - `'global'` (default) -> `analytics.tiktok.com`\n * - `'us'` -> `analytics.us.tiktok.com` (US enterprise data residency)\n */\n region: optional(union([literal('global'), literal('us')])),\n})"
927
1030
  },
928
1031
  {
929
1032
  name: "TikTokPixelConsent",
@@ -943,6 +1046,33 @@ const types = {
943
1046
  code: "export interface UmamiAnalyticsApi {\n track: ((payload?: Record<string, any>) => void) & ((event_name: string, event_data: Record<string, any>) => void)\n identify: (session_data?: Record<string, any> | string) => void\n}"
944
1047
  }
945
1048
  ],
1049
+ usercentrics: [
1050
+ {
1051
+ name: "UsercentricsOptions",
1052
+ kind: "const",
1053
+ code: "export const UsercentricsOptions = object({\n /**\n * Your Usercentrics CMP v3 ruleset ID. Find it in the admin under\n * Implementation; the snippet's `data-ruleset-id` value.\n */\n rulesetId: pipe(string(), minLength(1)),\n /**\n * Inject the Usercentrics autoblocker (`autoblocker.js`) ahead of the loader.\n * Enable when your ruleset relies on Auto Blocking (vs. Manual Blocking) to\n * gate third-party scripts before consent is granted.\n * @default false\n */\n autoblocker: optional(boolean()),\n /**\n * Override the language displayed by the CMP UI (BCP-47 code, e.g. `'en'`, `'de'`).\n */\n language: optional(string()),\n})"
1054
+ },
1055
+ {
1056
+ name: "UsercentricsCmpEventDetail",
1057
+ kind: "interface",
1058
+ code: "export interface UsercentricsCmpEventDetail {\n type: string\n source?: string\n [key: string]: any\n}"
1059
+ },
1060
+ {
1061
+ name: "UsercentricsCmp",
1062
+ kind: "interface",
1063
+ code: "export interface UsercentricsCmp {\n isInitialized: () => Promise<boolean>\n isConsentRequired: () => Promise<boolean>\n showFirstLayer: () => Promise<void>\n showSecondLayer: () => Promise<void>\n showServiceDetails: (id: string) => Promise<void>\n showAutoblockerMoreInfoView: () => Promise<void>\n closeCmp: () => Promise<void>\n acceptAllConsents: () => Promise<void>\n denyAllConsents: () => Promise<void>\n saveConsents: () => Promise<void>\n updateCategoriesConsents: (consents: Array<{ categorySlug: string, consent: boolean }>) => Promise<void>\n updateServicesConsents: (consents: Array<{ templateId: string, consent: boolean }>) => Promise<void>\n updateTcfConsents: (...args: unknown[]) => Promise<void>\n refreshScripts: () => Promise<void>\n clearUserSession: () => Promise<void>\n getConsentDetails: () => Promise<Record<string, any>>\n getCmpConfig: () => Promise<Record<string, any>>\n getActiveLanguage: () => Promise<string>\n getControllerId: () => Promise<string>\n changeLanguage: (lang: string) => Promise<void>\n [key: string]: any\n}"
1064
+ },
1065
+ {
1066
+ name: "UsercentricsApi",
1067
+ kind: "interface",
1068
+ code: "export interface UsercentricsApi {\n ucCmp: UsercentricsCmp\n}"
1069
+ },
1070
+ {
1071
+ name: "UsercentricsConsent",
1072
+ kind: "interface",
1073
+ code: "export interface UsercentricsConsent {\n /**\n * Resolves once the CMP API is ready (`UC_CMP_API_READY`) or immediately if\n * it already is. Resolves with `window.__ucCmp` so callers can query\n * consent state without polling.\n */\n whenReady: () => Promise<UsercentricsCmp>\n /**\n * Subscribe to `UC_UI_CMP_EVENT` browser events (the v3 consent change\n * event). Returns a teardown function. The callback receives the event\n * detail, e.g. `{ type: 'ACCEPT_ALL' | 'DENY_ALL' | 'SAVE', ... }`.\n */\n onConsentChange: (cb: (detail: UsercentricsCmpEventDetail, event: Event) => void) => () => void\n /** Open the privacy settings (first layer banner). */\n showFirstLayer: () => Promise<void> | void\n /** Open the detailed settings (second layer modal). */\n showSecondLayer: () => Promise<void> | void\n /** Accept all consents. */\n acceptAll: () => Promise<void> | void\n /** Reject all consents. */\n denyAll: () => Promise<void> | void\n}"
1074
+ }
1075
+ ],
946
1076
  "vercel-analytics": [
947
1077
  {
948
1078
  name: "VercelAnalyticsOptions",
@@ -1087,6 +1217,61 @@ const types = {
1087
1217
  ]
1088
1218
  };
1089
1219
  const schemaFields = {
1220
+ gcmConsentState: [
1221
+ {
1222
+ name: "ad_storage",
1223
+ type: "unknown",
1224
+ required: false
1225
+ },
1226
+ {
1227
+ name: "ad_user_data",
1228
+ type: "unknown",
1229
+ required: false
1230
+ },
1231
+ {
1232
+ name: "ad_personalization",
1233
+ type: "unknown",
1234
+ required: false
1235
+ },
1236
+ {
1237
+ name: "analytics_storage",
1238
+ type: "unknown",
1239
+ required: false
1240
+ },
1241
+ {
1242
+ name: "functionality_storage",
1243
+ type: "unknown",
1244
+ required: false
1245
+ },
1246
+ {
1247
+ name: "personalization_storage",
1248
+ type: "unknown",
1249
+ required: false
1250
+ },
1251
+ {
1252
+ name: "security_storage",
1253
+ type: "unknown",
1254
+ required: false
1255
+ },
1256
+ {
1257
+ name: "wait_for_update",
1258
+ type: "number",
1259
+ required: false
1260
+ },
1261
+ {
1262
+ name: "region",
1263
+ type: "string[]",
1264
+ required: false
1265
+ }
1266
+ ],
1267
+ AhrefsAnalyticsOptions: [
1268
+ {
1269
+ name: "key",
1270
+ type: "string",
1271
+ required: true,
1272
+ description: "Your Ahrefs Web Analytics project key. Set as the `data-key` attribute on the loaded `analytics.js` script tag."
1273
+ }
1274
+ ],
1090
1275
  BlueskyEmbedOptions: [
1091
1276
  {
1092
1277
  name: "postUrl",
@@ -1442,9 +1627,9 @@ const schemaFields = {
1442
1627
  },
1443
1628
  {
1444
1629
  name: "defaultConsent",
1445
- type: "unknown",
1630
+ type: "unknown | unknown[]",
1446
1631
  required: false,
1447
- description: "Default GCMv2 consent state fired as `gtag('consent', 'default', ...)` before `gtag('js', ...)`."
1632
+ description: "Default GCMv2 consent state(s) fired as `gtag('consent', 'default', state)` before `gtag('js', ...)`. Pass an array to fire multiple defaults — for example, different defaults per `region` (more specific regions override broader ones at runtime)."
1448
1633
  }
1449
1634
  ],
1450
1635
  GoogleMapsOptions: [
@@ -1631,9 +1816,9 @@ const schemaFields = {
1631
1816
  },
1632
1817
  {
1633
1818
  name: "defaultConsent",
1634
- type: "Record<string, string | number>",
1819
+ type: "unknown | unknown[]",
1635
1820
  required: false,
1636
- description: "Default consent settings for GTM"
1821
+ description: "Default GCMv2 consent state(s) fired as `['consent','default', state]` onto the dataLayer before the `gtm.js` event. Pass an array to fire multiple defaults — for example, different defaults per `region` (more specific regions override broader ones at runtime)."
1637
1822
  }
1638
1823
  ],
1639
1824
  HotjarOptions: [
@@ -2011,6 +2196,80 @@ const schemaFields = {
2011
2196
  description: "Default consent state fired as `uetq.push('consent', 'default', ...)` before UET init."
2012
2197
  }
2013
2198
  ],
2199
+ LinkedInInsightOptions: [
2200
+ {
2201
+ name: "id",
2202
+ type: "string | string[]",
2203
+ required: true,
2204
+ description: "Your LinkedIn Insight Tag Partner ID, or an array of Partner IDs to push onto window._linkedin_data_partner_ids. The first ID is used as the primary _linkedin_partner_id global."
2205
+ },
2206
+ {
2207
+ name: "eventId",
2208
+ type: "string",
2209
+ required: false,
2210
+ description: "Optional page-load event ID for Conversions API deduplication. Assigned to window._linkedin_event_id BEFORE the Insight Tag base code runs. Must match the eventId sent with the corresponding server-side Conversions API event. Per-event conversion deduplication uses the per-call event_id passed to lintrk('track', { conversion_id, event_id }) instead."
2211
+ },
2212
+ {
2213
+ name: "enableAutoSpaTracking",
2214
+ type: "boolean",
2215
+ required: false,
2216
+ description: "Auto-fire lintrk('track') on Vue Router route changes (SPA virtual page views). When true, suppresses the script's built-in auto-page-view via window._wait_for_lintrk and tracks every navigation including the initial page through Nuxt's page:finish hook. When false, the script fires its own page-view exactly once on load and SPA navigations are not tracked unless lintrk('track') is called manually.",
2217
+ defaultValue: "false"
2218
+ }
2219
+ ],
2220
+ UsercentricsOptions: [
2221
+ {
2222
+ name: "rulesetId",
2223
+ type: "string",
2224
+ required: true,
2225
+ description: "Your Usercentrics CMP v3 ruleset ID. Find it in the admin under Implementation; the snippet's `data-ruleset-id` value."
2226
+ },
2227
+ {
2228
+ name: "autoblocker",
2229
+ type: "boolean",
2230
+ required: false,
2231
+ description: "Inject the Usercentrics autoblocker (`autoblocker.js`) ahead of the loader. Enable when your ruleset relies on Auto Blocking (vs. Manual Blocking) to gate third-party scripts before consent is granted.",
2232
+ defaultValue: "false"
2233
+ },
2234
+ {
2235
+ name: "language",
2236
+ type: "string",
2237
+ required: false,
2238
+ description: "Override the language displayed by the CMP UI (BCP-47 code, e.g. `'en'`, `'de'`)."
2239
+ }
2240
+ ],
2241
+ CalendlyOptions: [
2242
+ {
2243
+ name: "url",
2244
+ type: "string",
2245
+ required: false,
2246
+ description: "The Calendly event URL to embed. Required for inline, popup, and badge widgets when called via the composable."
2247
+ },
2248
+ {
2249
+ name: "prefill",
2250
+ type: "object",
2251
+ required: false,
2252
+ description: "Pre-fill invitee fields on the booking form."
2253
+ },
2254
+ {
2255
+ name: "utm",
2256
+ type: "object",
2257
+ required: false,
2258
+ description: "UTM parameters appended to the booking URL for marketing attribution."
2259
+ },
2260
+ {
2261
+ name: "pageSettings",
2262
+ type: "object",
2263
+ required: false,
2264
+ description: "Theme and layout overrides applied to the booking page."
2265
+ },
2266
+ {
2267
+ name: "parentElement",
2268
+ type: "string",
2269
+ required: false,
2270
+ description: "CSS selector for the element that hosts the inline widget. Required when the widget is initialised inline; the element should have a minimum height of around 700px so the booking iframe is fully visible."
2271
+ }
2272
+ ],
2014
2273
  SegmentOptions: [
2015
2274
  {
2016
2275
  name: "writeKey",
@@ -2142,6 +2401,12 @@ const schemaFields = {
2142
2401
  type: "'granted' | 'denied' | 'hold'",
2143
2402
  required: false,
2144
2403
  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"
2404
+ },
2405
+ {
2406
+ name: "region",
2407
+ type: "'global' | 'us'",
2408
+ required: false,
2409
+ description: "Data residency region for the Pixel SDK. - `'global'` (default) -> `analytics.tiktok.com` - `'us'` -> `analytics.us.tiktok.com` (US enterprise data residency)"
2145
2410
  }
2146
2411
  ],
2147
2412
  UmamiAnalyticsOptions: [
package/dist/types.d.mts CHANGED
@@ -6,6 +6,6 @@ declare module '@nuxt/schema' {
6
6
 
7
7
  export { type FirstPartyPrivacy } from '../dist/runtime/types.js'
8
8
 
9
- export { type applyAutoInject, default, type isProxyDisabled, type resolveConfiguredProxyDomains, type resolveProxySecret } from './module.mjs'
9
+ export { type applyAutoInject, default, type findMissingRequiredFields, type isProxyDisabled, type resolveConfiguredProxyDomains, type resolveProxySecret } from './module.mjs'
10
10
 
11
11
  export { type ModuleHooks, type ModuleOptions, type ResolvedProxySecret } from './module.mjs'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nuxt/scripts",
3
3
  "type": "module",
4
- "version": "1.0.5",
4
+ "version": "1.1.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",
@@ -103,17 +103,16 @@
103
103
  },
104
104
  "dependencies": {
105
105
  "@nuxt/devtools-kit": "^3.2.4",
106
- "@nuxt/kit": "^4.4.4",
107
- "@vueuse/core": "^14.2.1",
108
- "@vueuse/shared": "^14.2.1",
106
+ "@vueuse/core": "^14.3.0",
107
+ "@vueuse/shared": "^14.3.0",
109
108
  "consola": "^3.4.2",
110
109
  "defu": "^6.1.7",
111
110
  "h3": "^1.15.11",
112
111
  "magic-string": "^0.30.21",
113
112
  "ofetch": "^1.5.1",
114
113
  "ohash": "^2.0.11",
115
- "oxc-parser": "^0.128.0",
116
- "oxc-walker": "^0.7.0",
114
+ "oxc-parser": "^0.130.0",
115
+ "oxc-walker": "^1.0.0",
117
116
  "pathe": "^2.0.3",
118
117
  "pkg-types": "^2.3.1",
119
118
  "sirv": "^3.0.2",
@@ -122,10 +121,14 @@
122
121
  "ultrahtml": "^1.6.0",
123
122
  "unplugin": "^3.0.0",
124
123
  "unstorage": "^1.17.5",
125
- "valibot": "^1.3.1"
124
+ "valibot": "^1.4.0"
126
125
  },
127
126
  "devDependencies": {
128
- "@nuxt/module-builder": "^1.0.2"
127
+ "@nuxt/kit": "^4.4.5",
128
+ "@nuxt/module-builder": "^1.0.2",
129
+ "rollup": "^4.60.3",
130
+ "unbuild": "^3.6.1",
131
+ "unimport": "^6.2.0"
129
132
  },
130
133
  "scripts": {
131
134
  "build": "nuxt-module-build build",