UNPKG

@csp-kit/data

Version:

Service definitions and CSP mappings database for csp-kit

1 lines 198 kB
{"version":3,"sources":["../src/index.ts","../src/types.ts","../src/service-types.ts","../src/services/index.ts","../src/services/advertising/facebook-ads.ts","../src/services/advertising/google-ads.ts","../src/services/advertising/linkedin-ads.ts","../src/services/advertising/microsoft-ads.ts","../src/services/advertising/twitter-ads.ts","../src/services/analytics/adobe-analytics.ts","../src/services/analytics/amplitude.ts","../src/services/analytics/cloudflare-analytics.ts","../src/services/analytics/fathom-analytics.ts","../src/services/analytics/google-analytics.ts","../src/services/analytics/google-tag-manager.ts","../src/services/analytics/hotjar.ts","../src/services/analytics/microsoft-clarity.ts","../src/services/analytics/mixpanel.ts","../src/services/analytics/plausible-analytics.ts","../src/services/analytics/segment.ts","../src/services/authentication/auth0.ts","../src/services/authentication/firebase-auth.ts","../src/services/authentication/okta.ts","../src/services/authentication/onelogin.ts","../src/services/authentication/ping-identity.ts","../src/services/cdn/aws-cloudfront.ts","../src/services/cdn/azure-cdn.ts","../src/services/cdn/cdnjs.ts","../src/services/cdn/fastly.ts","../src/services/cdn/jsdelivr.ts","../src/services/cdn/keycdn.ts","../src/services/cdn/maxcdn.ts","../src/services/cdn/unpkg.ts","../src/services/chat/crisp-chat.ts","../src/services/chat/drift.ts","../src/services/chat/freshchat.ts","../src/services/chat/intercom.ts","../src/services/chat/tawk-to.ts","../src/services/chat/zendesk.ts","../src/services/cms/drupal.ts","../src/services/cms/sanity.ts","../src/services/cms/squarespace.ts","../src/services/cms/strapi.ts","../src/services/cms/webflow.ts","../src/services/cms/wix.ts","../src/services/documentation/gitbook.ts","../src/services/education/udemy.ts","../src/services/fonts/google-fonts.ts","../src/services/forms/calendly.ts","../src/services/forms/hubspot.ts","../src/services/forms/mailchimp.ts","../src/services/forms/typeform.ts","../src/services/maps/google-maps.ts","../src/services/maps/mapbox.ts","../src/services/maps/openstreetmap-leaflet.ts","../src/services/marketing/campaign-monitor.ts","../src/services/marketing/constant-contact.ts","../src/services/marketing/convertkit.ts","../src/services/marketing/mailgun.ts","../src/services/marketing/sendgrid.ts","../src/services/marketing/unbounce.ts","../src/services/monitoring/datadog.ts","../src/services/monitoring/new-relic.ts","../src/services/monitoring/sentry.ts","../src/services/other/algolia.ts","../src/services/other/constructor.ts","../src/services/other/contentful.ts","../src/services/other/crazy-egg.ts","../src/services/other/divi.ts","../src/services/other/elasticsearch.ts","../src/services/other/elementor.ts","../src/services/other/google-optimize.ts","../src/services/other/klevu.ts","../src/services/other/optimizely.ts","../src/services/other/swiftype.ts","../src/services/other/teachable.ts","../src/services/other/thinkific.ts","../src/services/other/vwo.ts","../src/services/other/wordpress.ts","../src/services/payment/apple-pay.ts","../src/services/payment/google-pay.ts","../src/services/payment/paypal.ts","../src/services/payment/shopify.ts","../src/services/payment/square.ts","../src/services/payment/stripe.ts","../src/services/payment/woocommerce.ts","../src/services/productivity/notion.ts","../src/services/social/discord.ts","../src/services/social/facebook.ts","../src/services/social/instagram.ts","../src/services/social/linkedin.ts","../src/services/social/pinterest.ts","../src/services/social/slack.ts","../src/services/social/snapchat.ts","../src/services/social/tiktok.ts","../src/services/social/twitter.ts","../src/services/social/whatsapp.ts","../src/services/testing/browserstack.ts","../src/services/testing/cypress.ts","../src/services/testing/ghost-inspector.ts","../src/services/testing/percy.ts","../src/services/testing/sauce-labs.ts","../src/services/video/bigbluebutton.ts","../src/services/video/google-meet.ts","../src/services/video/jitsi-meet.ts","../src/services/video/microsoft-teams.ts","../src/services/video/twitch.ts","../src/services/video/vimeo.ts","../src/services/video/youtube.ts","../src/services/video/zoom.ts"],"sourcesContent":["// Export types first\nexport * from './types.js';\n// Export only the types and functions safe for client components\nexport type {\n  CSPService,\n  SimpleCSPService,\n  DefineServiceFn,\n  DefineServiceInternalFn,\n  ValidationResult,\n  ConfigurableService,\n} from './service-types.js';\nexport { defineService, defineServiceInternal, isCSPService } from './service-types.js';\n\n// Export new services\nexport * from './services/index.js';\n\n// Legacy compatibility functions for CI validation\nimport * as allServices from './services/index.js';\nimport type { CSPService } from './service-types.js';\nimport type { ServiceDefinition, ServiceRegistry, ServiceCategory } from './types.js';\n\nexport async function loadServices() {\n  // Services are already loaded as ES modules\n  return Promise.resolve();\n}\n\nexport async function getServiceRegistry(): Promise<ServiceRegistry> {\n  // Convert all exported services to a registry format\n  const services: Record<string, ServiceDefinition> = {};\n  const categories: Record<ServiceCategory, string[]> = {} as Record<ServiceCategory, string[]>;\n\n  for (const [, value] of Object.entries(allServices)) {\n    if (value && typeof value === 'object' && 'id' in value && 'directives' in value) {\n      const service = value as CSPService;\n      // Convert CSPService to ServiceDefinition format\n      const serviceDefinition: ServiceDefinition = {\n        id: service.id,\n        name: service.name,\n        category: service.category as ServiceCategory,\n        description: service.description,\n        website: service.website,\n        cspDirectives: service.directives,\n        lastUpdated: new Date().toISOString(),\n        aliases: [],\n        officialDocs: service.officialDocs ? [...service.officialDocs] : [],\n        notes: service.notes,\n        requiresDynamic: false,\n        requiresNonce: false,\n      };\n      services[service.id] = serviceDefinition;\n\n      // Build categories index\n      const cat = service.category as ServiceCategory;\n      if (!categories[cat]) {\n        categories[cat] = [];\n      }\n      categories[cat].push(service.id);\n    }\n  }\n\n  return {\n    services,\n    categories,\n    lastUpdated: new Date().toISOString(),\n    version: '1.0.0',\n    schemaVersion: '2.0',\n  };\n}\n","/**\n * Categories for different types of services\n */\nexport enum ServiceCategory {\n  ANALYTICS = 'analytics',\n  ADVERTISING = 'advertising',\n  SOCIAL = 'social',\n  PAYMENT = 'payment',\n  FORMS = 'forms',\n  CHAT = 'chat',\n  CDN = 'cdn',\n  FONTS = 'fonts',\n  MAPS = 'maps',\n  VIDEO = 'video',\n  TESTING = 'testing',\n  MONITORING = 'monitoring',\n  OTHER = 'other',\n}\n\n/**\n * CSP directive types\n */\nexport interface CSPDirectives {\n  'script-src'?: string[];\n  'img-src'?: string[];\n  'connect-src'?: string[];\n  'frame-src'?: string[];\n  'frame-ancestors'?: string[];\n  'font-src'?: string[];\n  'style-src'?: string[];\n  'form-action'?: string[];\n  'object-src'?: string[];\n  'media-src'?: string[];\n  'child-src'?: string[];\n  'worker-src'?: string[];\n  'manifest-src'?: string[];\n  'base-uri'?: string[];\n  'report-uri'?: string[];\n  'report-to'?: string[];\n}\n\n// ServiceVersion interface removed - version support eliminated\n\n/**\n * Service monitoring configuration\n */\nexport interface ServiceMonitoring {\n  /** URLs to test for CSP violations */\n  testUrls?: string[];\n\n  /** How often to check for changes */\n  checkInterval: 'daily' | 'weekly' | 'monthly';\n\n  /** Whether to create alerts for breaking changes */\n  alertOnBreaking: boolean;\n\n  /** Last time this service was checked */\n  lastChecked?: string;\n\n  /** Additional monitoring notes */\n  notes?: string[];\n}\n\n/**\n * Service definition interface (simplified - no versioning support)\n */\nexport interface ServiceDefinition {\n  /** Unique identifier for the service */\n  id: string;\n\n  /** Display name of the service */\n  name: string;\n\n  /** Service category */\n  category: ServiceCategory;\n\n  /** Short description of what the service does */\n  description: string;\n\n  /** Official website URL */\n  website: string;\n\n  /** Official CSP documentation URLs */\n  officialDocs: string[];\n\n  /** CSP directives required for this service */\n  cspDirectives: CSPDirectives;\n\n  /** Whether this service requires dynamic CSP (script injection) */\n  requiresDynamic?: boolean;\n\n  /** Nonce requirements */\n  requiresNonce?: boolean;\n\n  /** Implementation notes */\n  notes?: string;\n\n  /** Alternative service IDs (aliases) */\n  aliases?: string[];\n\n  /** Last updated timestamp (ISO string) */\n  lastUpdated: string;\n\n  /** When this service definition was last verified against official docs */\n  verifiedAt?: string;\n\n  /** Monitoring configuration */\n  monitoring?: ServiceMonitoring;\n}\n\n// ServiceWithVersion interface removed - version support eliminated\n\n/**\n * Service registry interface\n */\nexport interface ServiceRegistry {\n  services: Record<string, ServiceDefinition>;\n  categories: Record<ServiceCategory, string[]>;\n  lastUpdated: string;\n  /** Data package version (date-based: YYYY.MM.DD) */\n  version: string;\n  /** Schema version for backward compatibility */\n  schemaVersion: string;\n}\n\n// VersionChange interface removed - version support eliminated\n","/**\n * Service types for the new TypeScript-based architecture\n */\n\nimport { ServiceCategory, CSPDirectives, ServiceMonitoring } from './types.js';\n\n/**\n * Base service definition that can be used directly or configured\n */\nexport interface CSPService {\n  /** Unique identifier for the service */\n  readonly id: string;\n\n  /** Display name of the service */\n  readonly name: string;\n\n  /** Service category */\n  readonly category: ServiceCategory | string;\n\n  /** Short description of what the service does */\n  readonly description: string;\n\n  /** Official website URL */\n  readonly website: string;\n\n  /** Official CSP documentation URLs */\n  readonly officialDocs: readonly string[];\n\n  /** CSP directives required for this service */\n  readonly directives: CSPDirectives;\n\n  /** Whether this service requires dynamic CSP (script injection) */\n  readonly requiresDynamic?: boolean;\n\n  /** Nonce requirements */\n  readonly requiresNonce?: boolean;\n\n  /** Implementation notes */\n  readonly notes?: string;\n\n  /** Alternative service IDs (aliases) */\n  readonly aliases?: readonly string[];\n\n  /** Last updated timestamp (ISO string) */\n  readonly lastUpdated: string;\n\n  /** When this service definition was last verified against official docs */\n  readonly verifiedAt?: string;\n\n  /** Monitoring configuration */\n  readonly monitoring?: ServiceMonitoring;\n\n  /** Optional: Dynamic configuration */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  configure?: (options: any) => Partial<CSPService>;\n\n  /** Optional: Validation logic */\n  validate?: (directives: CSPDirectives) => ValidationResult;\n\n  /** Optional: Dependencies on other services */\n  dependencies?: readonly string[];\n\n  /** Optional: Services that conflict with this one */\n  conflicts?: readonly string[];\n\n  /** Optional: Deprecation info */\n  deprecated?: {\n    readonly since: string;\n    readonly alternative: string;\n    readonly message: string;\n  };\n}\n\n/**\n * Result of service validation\n */\nexport interface ValidationResult {\n  valid?: boolean;\n  errors?: string[];\n  warnings?: string[];\n}\n\n/**\n * Simplified service definition for public API - pure minimal, just directives\n */\nexport interface SimpleCSPService {\n  /** CSP directives required for this service */\n  readonly directives: CSPDirectives;\n}\n\n/**\n * Type for the internal defineService function that ensures proper typing\n */\nexport type DefineServiceInternalFn = <T extends CSPService>(service: T) => T;\n\n/**\n * Type for the public defineService function\n */\nexport type DefineServiceFn = (service: SimpleCSPService) => CSPService;\n\n// Counter to ensure unique IDs\nlet serviceCounter = 0;\n\n/**\n * Create a simplified service definition for public use\n */\nexport const defineService: DefineServiceFn = service => {\n  const timestamp = Date.now();\n  const counter = ++serviceCounter;\n  const random = Math.random().toString(36).substring(2, 8);\n  const id = `custom-service-${timestamp}-${counter}-${random}`;\n  const name = `Custom Service ${timestamp}`;\n\n  const fullService: CSPService = {\n    id,\n    name,\n    category: 'other',\n    description: `Custom service: ${name}`,\n    website: '',\n    officialDocs: [],\n    directives: service.directives,\n    lastUpdated: new Date().toISOString(),\n  };\n\n  return Object.freeze(fullService);\n};\n\n/**\n * Create a properly typed service definition (internal use)\n */\nexport const defineServiceInternal: DefineServiceInternalFn = service => {\n  // Validate required fields at runtime in development\n  if (process.env.NODE_ENV !== 'production') {\n    const required = [\n      'id',\n      'name',\n      'category',\n      'description',\n      'website',\n      'officialDocs',\n      'directives',\n      'lastUpdated',\n    ];\n    for (const field of required) {\n      if (!(field in service)) {\n        throw new Error(`Service ${service.id || 'unknown'} is missing required field: ${field}`);\n      }\n    }\n  }\n\n  return Object.freeze(service);\n};\n\n/**\n * Type guard to check if a value is a CSPService\n */\nexport function isCSPService(value: unknown): value is CSPService {\n  if (!value || typeof value !== 'object') return false;\n  const service = value as Record<string, unknown>;\n  return (\n    typeof service.id === 'string' &&\n    typeof service.name === 'string' &&\n    typeof service.category === 'string' &&\n    typeof service.directives === 'object'\n  );\n}\n\n/**\n * Type for configurable services\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface ConfigurableService<TOptions = any> extends CSPService {\n  configure: (options: TOptions) => Partial<CSPService>;\n}\n\n/**\n * Helper to create a configurable service\n */\nexport function createConfigurableService<TOptions>(\n  baseService: CSPService,\n  configureFn: (options: TOptions) => Partial<CSPService>\n): CSPService & ConfigurableService<TOptions> {\n  return {\n    ...baseService,\n    configure: (options: TOptions) => {\n      const configured = configureFn(options);\n      // Return a new complete service object with merged properties\n      return {\n        ...baseService,\n        ...configured,\n        id: `${baseService.id}-configured`,\n        directives: configured.directives\n          ? mergeDirectives(baseService.directives, configured.directives)\n          : baseService.directives,\n      };\n    },\n  };\n}\n\n/**\n * Helper to merge CSP directives\n */\nfunction mergeDirectives(base: CSPDirectives, additional: CSPDirectives): CSPDirectives {\n  const result: CSPDirectives = { ...base };\n\n  for (const [key, values] of Object.entries(additional)) {\n    const directiveKey = key as keyof CSPDirectives;\n    if (result[directiveKey]) {\n      // Merge arrays and deduplicate\n      const existing = result[directiveKey] || [];\n      const newValues = values || [];\n      result[directiveKey] = [...new Set([...existing, ...newValues])];\n    } else {\n      result[directiveKey] = values;\n    }\n  }\n\n  return result;\n}\n","// Auto-generated service exports\nexport * from './advertising/index.js';\nexport * from './analytics/index.js';\nexport * from './authentication/index.js';\nexport * from './cdn/index.js';\nexport * from './chat/index.js';\nexport * from './cms/index.js';\nexport * from './documentation/index.js';\nexport * from './education/index.js';\nexport * from './fonts/index.js';\nexport * from './forms/index.js';\nexport * from './maps/index.js';\nexport * from './marketing/index.js';\nexport * from './monitoring/index.js';\nexport * from './other/index.js';\nexport * from './payment/index.js';\nexport * from './productivity/index.js';\nexport * from './social/index.js';\nexport * from './testing/index.js';\nexport * from './video/index.js';\n\n// Re-export types\nexport type {\n  CSPService,\n  DefineServiceFn,\n  ValidationResult,\n  ConfigurableService,\n} from '../service-types.js';\nexport { defineService, isCSPService } from '../service-types.js';\n// Note: createConfigurableService is not exported as it creates functions\n// that can't be serialized to client components\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const FacebookAds = defineServiceInternal({\n  id: 'facebook-ads',\n  name: 'Facebook Ads',\n  category: ServiceCategory.ADVERTISING,\n  description: \"Facebook's advertising and marketing platform\",\n  website: 'https://www.facebook.com/business/ads',\n  officialDocs: [\n    'https://developers.facebook.com/docs/meta-pixel/',\n    'https://www.facebook.com/business/help/952192354843755',\n  ],\n  directives: {\n    'script-src': ['https://connect.facebook.net'],\n    'connect-src': ['https://www.facebook.com'],\n    'img-src': ['https://www.facebook.com'],\n  },\n  notes:\n    'Facebook Ads verified from community sources - official Meta developer documentation experiencing access issues. Facebook Pixel requires connect.facebook.net for script loading, www.facebook.com/tr/ for tracking endpoint. Noscript fallback uses img-src. Safari requires connect-src directive.',\n  aliases: ['fb-ads', 'facebook-pixel', 'meta-pixel'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GoogleAds = defineServiceInternal({\n  id: 'google-ads',\n  name: 'Google Ads',\n  category: ServiceCategory.ADVERTISING,\n  description: \"Google's online advertising and marketing platform\",\n  website: 'https://ads.google.com',\n  officialDocs: [\n    'https://developers.google.com/tag-platform/security/guides/csp',\n    'https://developers.google.com/publisher-tag/guides/content-security-policy',\n  ],\n  directives: {\n    'script-src': [\n      'https://googleadservices.com',\n      'https://www.googleadservices.com',\n      'https://pagead2.googlesyndication.com',\n    ],\n    'connect-src': ['https://google.com', 'https://www.google.com', 'https://googleadservices.com'],\n    'img-src': ['https://googleadservices.com', 'https://www.googleadservices.com'],\n  },\n  requiresDynamic: true,\n  requiresNonce: true,\n  notes:\n    'Google Ads verified from official Google Tag Platform CSP documentation. Supports conversion tracking, remarketing, and Google Publisher Tags. Strongly recommends nonce-based CSP due to dynamic domain usage. Requires individual Google TLD specifications. Each Google top-level domain must be specified individually.',\n  aliases: ['google-adwords', 'adwords'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const LinkedinAds = defineServiceInternal({\n  id: 'linkedin-ads',\n  name: 'LinkedIn Ads',\n  category: ServiceCategory.ADVERTISING,\n  description: \"LinkedIn's advertising and marketing platform\",\n  website: 'https://business.linkedin.com/marketing-solutions/ads',\n  officialDocs: [\n    'https://www.linkedin.com/help/lms/answer/a425696',\n    'https://docs.microsoft.com/en-us/linkedin/marketing/',\n  ],\n  directives: {\n    'script-src': ['https://snap.licdn.com'],\n    'connect-src': [\n      'https://px.ads.linkedin.com',\n      'https://px4.ads.linkedin.com',\n      'https://dc.ads.linkedin.com',\n    ],\n    'img-src': ['https://px.ads.linkedin.com', 'https://px4.ads.linkedin.com'],\n  },\n  notes:\n    'LinkedIn Ads verified from troubleshooting documentation and third-party sources. LinkedIn Insight Tag SDK loaded from snap.licdn.com. Requires multiple px domains for pixel tracking: px.ads.linkedin.com, px4.ads.linkedin.com, dc.ads.linkedin.com. Essential domains for conversion tracking and analytics functionality.',\n  aliases: ['linkedin-insight'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const MicrosoftAds = defineServiceInternal({\n  id: 'microsoft-ads',\n  name: 'Microsoft Ads',\n  category: ServiceCategory.ADVERTISING,\n  description: \"Microsoft's advertising platform (formerly Bing Ads)\",\n  website: 'https://ads.microsoft.com',\n  officialDocs: [\n    'https://docs.microsoft.com/en-us/advertising/',\n    'https://help.ads.microsoft.com/apex/index/3/en/56684',\n  ],\n  directives: {\n    'script-src': ['https://bat.bing.com'],\n    'connect-src': ['https://bat.bing.com'],\n  },\n  notes: 'Microsoft Ads Universal Event Tracking (UET) tag',\n  aliases: ['bing-ads', 'uet'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const TwitterAds = defineServiceInternal({\n  id: 'twitter-ads',\n  name: 'Twitter Ads',\n  category: ServiceCategory.ADVERTISING,\n  description: \"Twitter's advertising and marketing platform (now X Ads)\",\n  website: 'https://ads.twitter.com',\n  officialDocs: [\n    'https://business.twitter.com/en/help/campaign-measurement-and-analytics/conversion-tracking-for-websites.html',\n    'https://developer.twitter.com/en/docs/twitter-ads-api/measurement/web-conversions/overview',\n  ],\n  directives: {\n    'script-src': ['https://static.ads-twitter.com'],\n    'connect-src': [\n      'https://ads-twitter.com',\n      'https://ads-api.twitter.com',\n      'https://analytics.twitter.com',\n    ],\n    'img-src': ['https://t.co', 'https://analytics.twitter.com', 'https://ads-twitter.com'],\n  },\n  notes:\n    'Twitter/X Ads verified from official conversion tracking documentation. X Pixel requires static.ads-twitter.com for uwt.js script. Must allowlist ads-twitter.com, ads-api.twitter.com, and analytics.twitter.com in img-src and connect-src for X Pixel functionality. Essential for measuring return on ad spend.',\n  aliases: ['twitter-conversion', 'x-ads'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const AdobeAnalytics = defineServiceInternal({\n  id: 'adobe-analytics',\n  name: 'Adobe Analytics',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Enterprise web analytics and digital marketing suite by Adobe',\n  website: 'https://business.adobe.com/products/analytics/adobe-analytics.html',\n  officialDocs: [\n    'https://experienceleague.adobe.com/docs/analytics/implementation/js/overview.html',\n    'https://experienceleague.adobe.com/en/docs/id-service/using/reference/csp',\n    'https://experienceleague.adobe.com/en/docs/experience-platform/tags/client-side/content-security-policy',\n  ],\n  directives: {\n    'script-src': ['https://assets.adobedtm.com', 'https://*.adobe.com'],\n    'connect-src': [\n      'https://*.2o7.net',\n      'https://*.omtrdc.net',\n      'https://*.demdex.net',\n      'https://*.adobe.com',\n      'https://*.omniture.com',\n      'https://*.adobedc.net',\n    ],\n    'img-src': [\n      'https://*.2o7.net',\n      'https://*.omtrdc.net',\n      'https://*.demdex.net',\n      'https://*.adobe.com',\n      'https://*.omniture.com',\n    ],\n  },\n  requiresNonce: true,\n  notes:\n    \"Adobe Analytics verified against official Experience League CSP documentation. Requires *.adobe.com for Activity Map, assets.adobedtm.com for tag management, *.demdex.net for Experience Cloud Identity Service, and legacy *.omniture.com domains. Adobe recommends nonce-based CSP over 'unsafe-inline'. *.adobedc.net required for Experience Platform integration.\",\n  aliases: ['adobe-launch', 'adobe-tags'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Amplitude = defineServiceInternal({\n  id: 'amplitude',\n  name: 'Amplitude',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Digital analytics platform for tracking user behavior and product usage',\n  website: 'https://amplitude.com',\n  officialDocs: [\n    'https://www.docs.developers.amplitude.com/data/sdks/browser-2/',\n    'https://www.docs.developers.amplitude.com/guides/cookies-consent-mgmt-guide/',\n  ],\n  directives: {\n    'script-src': ['https://*.amplitude.com'],\n    'connect-src': ['https://*.amplitude.com'],\n    'img-src': ['https://*.amplitude.com'],\n  },\n  notes:\n    'Amplitude verified against official Browser SDK 2.0 documentation. Requires *.amplitude.com wildcard for script loading and API connections. Covers all Amplitude subdomains including api2.amplitude.com for events, api-secure.amplitude.com for session replay, and cdn.amplitude.com for SDK delivery.',\n  aliases: ['amplitude-analytics'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const CloudflareAnalytics = defineServiceInternal({\n  id: 'cloudflare-analytics',\n  name: 'Cloudflare Analytics',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Web analytics service by Cloudflare with privacy focus',\n  website: 'https://cloudflare.com/web-analytics/',\n  officialDocs: [\n    'https://developers.cloudflare.com/fundamentals/reference/policies-compliances/content-security-policies/',\n    'https://support.cloudflare.com/hc/en-us/articles/216537517-What-is-Content-Security-Policy-CSP-and-how-can-I-use-it-with-CloudFlare-',\n  ],\n  directives: {\n    'script-src': ['https://static.cloudflareinsights.com'],\n    'connect-src': ['https://cloudflareinsights.com'],\n  },\n  notes:\n    'Cloudflare Analytics verified from official CSP documentation. Requires static.cloudflareinsights.com for script loading and cloudflareinsights.com for data reporting. CSP integration with Cloudflare features requires proper nonce support and /cdn-cgi/challenge-platform/ allowlisting.',\n  aliases: ['cf-analytics', 'cloudflare-insights'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const FathomAnalytics = defineServiceInternal({\n  id: 'fathom-analytics',\n  name: 'Fathom Analytics',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Privacy-first website analytics without cookies',\n  website: 'https://usefathom.com',\n  officialDocs: [\n    'https://usefathom.com/docs/troubleshooting/not-working',\n    'https://usefathom.com/docs/integrations/discourse',\n  ],\n  directives: {\n    'script-src': ['https://cdn.usefathom.com'],\n    'connect-src': ['https://api.usefathom.com'],\n  },\n  notes:\n    'Fathom Analytics verified from official troubleshooting documentation. Requires CSP allowlisting for script.js from their CDN. Uses EU-based bunny.net CDN for GDPR compliance with EU data isolation. No cookies or personal data collection.',\n  aliases: ['fathom'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GoogleAnalytics = defineServiceInternal({\n  id: 'google-analytics',\n  name: 'Google Analytics 4',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Web analytics service that tracks and reports website traffic and user behavior',\n  website: 'https://analytics.google.com/',\n  officialDocs: [\n    'https://developers.google.com/tag-platform/security/guides/csp',\n    'https://developers.google.com/analytics/devguides/collection/ga4',\n    'https://www.google.com/supported_domains',\n  ],\n  directives: {\n    'script-src': ['https://*.googletagmanager.com'],\n    'img-src': [\n      'https://*.google-analytics.com',\n      'https://*.googletagmanager.com',\n      'https://*.g.doubleclick.net',\n      'https://*.google.com',\n      'https://*.google.<TLD>',\n    ],\n    'connect-src': [\n      'https://*.google-analytics.com',\n      'https://*.analytics.google.com',\n      'https://*.googletagmanager.com',\n      'https://*.g.doubleclick.net',\n      'https://*.google.com',\n      'https://*.google.<TLD>',\n      'https://pagead2.googlesyndication.com',\n    ],\n    'frame-src': ['https://td.doubleclick.net', 'https://www.googletagmanager.com'],\n  },\n  requiresDynamic: true,\n  notes:\n    'For Google Signals (cross-device tracking), use the extended CSP configuration Each Google top-level domain (TLD) must be specified individually in CSP See https://www.google.com/supported_domains for complete list of Google TLDs Nonce-based approach is recommended for inline scripts gtag.js automatically handles most CSP requirements',\n  aliases: ['ga4', 'gtag', 'google-gtag'],\n  lastUpdated: '2024-06-28T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GoogleTagManager = defineServiceInternal({\n  id: 'google-tag-manager',\n  name: 'Google Tag Manager',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Tag management system for managing marketing and analytics tags',\n  website: 'https://tagmanager.google.com/',\n  officialDocs: [\n    'https://developers.google.com/tag-platform/security/guides/csp',\n    'https://developers.google.com/tag-manager/quickstart',\n  ],\n  directives: {\n    'script-src': ['https://www.googletagmanager.com', 'https://*.googletagmanager.com'],\n    'img-src': ['https://www.googletagmanager.com', 'https://*.googletagmanager.com'],\n    'connect-src': ['https://www.googletagmanager.com', 'https://*.googletagmanager.com'],\n  },\n  requiresDynamic: true,\n  requiresNonce: true,\n  notes:\n    \"Google Tag Manager verified against official CSP guide. GTM requires nonce implementation for secure inline script execution (preferred method). Preview mode requires additional domains. GTM may require 'unsafe-eval' for Custom JavaScript Variables. Tags within GTM may require additional CSP rules specific to each tag.\",\n  aliases: ['gtm', 'google-gtm'],\n  lastUpdated: '2024-06-28T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Hotjar = defineServiceInternal({\n  id: 'hotjar',\n  name: 'Hotjar',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Website heatmaps, visitor recordings, and user feedback analytics tool',\n  website: 'https://hotjar.com',\n  officialDocs: [\n    'https://help.hotjar.com/hc/en-us/articles/115009336727-Content-Security-Policy-CSP-',\n    'https://help.hotjar.com/hc/en-us/articles/115009336727',\n  ],\n  directives: {\n    'script-src': ['https://*.hotjar.com', \"'unsafe-inline'\"],\n    'connect-src': ['https://*.hotjar.com', 'https://*.hotjar.io', 'wss://*.hotjar.com'],\n    'img-src': ['https://*.hotjar.com'],\n    'font-src': ['https://*.hotjar.com'],\n    'style-src': ['https://*.hotjar.com', \"'unsafe-inline'\"],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Hotjar verified against official CSP documentation. Requires *.hotjar.com for scripts/styles/images/fonts, *.hotjar.io for WebSocket connections, and 'unsafe-inline' for dynamic content injection. WebSocket connection (wss://) required for real-time features.\",\n  aliases: ['hotjar-analytics'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const MicrosoftClarity = defineServiceInternal({\n  id: 'microsoft-clarity',\n  name: 'Microsoft Clarity',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Free user behavior analytics tool with heatmaps and session recordings',\n  website: 'https://clarity.microsoft.com/',\n  officialDocs: [\n    'https://learn.microsoft.com/en-us/clarity/setup-and-installation/clarity-csp',\n    'https://github.com/microsoft/clarity/issues/688',\n  ],\n  directives: {\n    'script-src': ['https://www.clarity.ms', 'https://*.clarity.ms'],\n    'connect-src': ['https://*.clarity.ms', 'https://c.bing.com'],\n    'img-src': ['https://*.clarity.ms'],\n    'style-src': [\"'unsafe-inline'\"],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Clarity uses load balancing across multiple subdomains (a-z.clarity.ms) Requires 'unsafe-inline' for style-src due to inline styles Uses wildcard *.clarity.ms to cover all subdomains c.bing.com is required for analytics integration CSP is not strictly required for Clarity to work\",\n  aliases: ['clarity', 'ms-clarity'],\n  lastUpdated: '2024-06-28T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Mixpanel = defineServiceInternal({\n  id: 'mixpanel',\n  name: 'Mixpanel',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Event tracking and user analytics platform for product teams',\n  website: 'https://mixpanel.com',\n  officialDocs: [\n    'https://docs.mixpanel.com/docs/tracking-methods/sdks/javascript',\n    'https://github.com/mixpanel/mixpanel-js/issues/234',\n    'https://github.com/mixpanel/mixpanel-js',\n  ],\n  directives: {\n    'script-src': ['https://cdn.mxpnl.com'],\n    'connect-src': ['https://api.mixpanel.com', 'https://api-js.mixpanel.com'],\n    'img-src': ['https://cdn.mxpnl.com'],\n  },\n  notes:\n    'Mixpanel verified from official JavaScript SDK docs and GitHub issues. Version 2.31+ requires api-js.mixpanel.com for /decide endpoint. cdn.mxpnl.com serves the JavaScript library and tracking pixels. No nonce support required for basic tracking.',\n  aliases: ['mixpanel-analytics'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const PlausibleAnalytics = defineServiceInternal({\n  id: 'plausible-analytics',\n  name: 'Plausible Analytics',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Privacy-focused web analytics without cookies or personal data collection',\n  website: 'https://plausible.io',\n  officialDocs: [\n    'https://plausible.io/docs/plausible-script',\n    'https://github.com/plausible/docs/issues/20',\n  ],\n  directives: {\n    'script-src': ['https://plausible.io'],\n    'connect-src': ['https://plausible.io'],\n  },\n  notes:\n    'Plausible Analytics verified from official documentation and GitHub CSP issues. Requires plausible.io for both script loading and data collection. Self-hosted instances require custom domain in CSP. Proxy configurations require additional domain allowlisting. Supports automatic nonce in Discourse integration.',\n  aliases: ['plausible'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Segment = defineServiceInternal({\n  id: 'segment',\n  name: 'Segment',\n  category: ServiceCategory.ANALYTICS,\n  description: 'Customer data platform for collecting, cleaning, and controlling customer data',\n  website: 'https://segment.com',\n  officialDocs: [\n    'https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/faq/',\n    'https://segment.com/docs/connections/sources/custom-domain/',\n  ],\n  directives: {\n    'script-src': ['https://cdn.segment.com'],\n    'connect-src': ['https://api.segment.io', 'https://events.eu1.segmentapis.com'],\n  },\n  notes:\n    'Segment verified from official FAQ and Custom Domain documentation. Requires cdn.segment.com for Analytics.js library and api.segment.io for event tracking. EU workspaces use events.eu1.segmentapis.com endpoint. Supports nonce-based CSP and custom domain proxying.',\n  aliases: ['segment-analytics'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Auth0 = defineServiceInternal({\n  id: 'auth0',\n  name: 'Auth0',\n  category: ServiceCategory.OTHER,\n  description: 'Identity platform for developers and enterprise security',\n  website: 'https://auth0.com/',\n  officialDocs: [\n    'https://auth0.com/blog/defending-against-xss-with-csp/',\n    'https://auth0.com/blog/deploying-csp-in-spa/',\n    'https://auth0.com/blog/from-zero-to-hero-with-csp/',\n    'https://auth0.com/docs/libraries/auth0-single-page-app-sdk',\n    'https://auth0.com/docs/troubleshoot/product-lifecycle/past-migrations/clickjacking-protection-for-universal-login',\n  ],\n  directives: {\n    'script-src': ['https://cdn.auth0.com'],\n    'connect-src': ['https://*.auth0.com'],\n    'frame-src': ['https://*.auth0.com'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Auth0 verified from comprehensive official CSP documentation. New Universal Login automatically sets frame-ancestors: 'none' and X-Frame-Options: deny (cannot be disabled). SPA SDK uses Web Workers - configure separate worker file to avoid blob CSP issues. Requires connect-src for tenant domain. Form-action should be 'none' for SPAs. CSP-Report-Only recommended for testing.\",\n  aliases: ['auth0-identity'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const FirebaseAuth = defineServiceInternal({\n  id: 'firebase-auth',\n  name: 'Firebase Authentication',\n  category: ServiceCategory.OTHER,\n  description: \"Google's authentication service for web and mobile apps\",\n  website: 'https://firebase.google.com/products/auth',\n  officialDocs: [\n    'https://firebase.google.com/docs/auth/web/start',\n    'https://firebase.google.com/docs/hosting/content-security-policy',\n  ],\n  directives: {\n    'script-src': ['https://firebase.googleapis.com', 'https://www.gstatic.com'],\n    'connect-src': ['https://identitytoolkit.googleapis.com', 'https://securetoken.googleapis.com'],\n  },\n  notes:\n    'Firebase Authentication service by Google. Social providers may require additional domains. FirebaseUI requires additional script sources. Custom domains need separate configuration.',\n  aliases: ['firebase-authentication', 'google-firebase-auth'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Okta = defineServiceInternal({\n  id: 'okta',\n  name: 'Okta',\n  category: ServiceCategory.OTHER,\n  description: 'Identity and access management platform',\n  website: 'https://www.okta.com/',\n  officialDocs: [\n    'https://developer.okta.com/docs/guides/content-security-policy/main/',\n    'https://developer.okta.com/',\n  ],\n  directives: {\n    'script-src': ['https://oktacdn.com'],\n    'connect-src': ['https://*.okta.com', 'https://*.oktapreview.com'],\n    'frame-src': ['https://*.okta.com', 'https://*.oktapreview.com'],\n  },\n  requiresDynamic: true,\n  notes:\n    'Okta identity and access management platform. Organization-specific subdomains require wildcard permissions. Preview environments use oktapreview.com domain. Widget embedding requires frame permissions.',\n  aliases: ['okta-identity'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Onelogin = defineServiceInternal({\n  id: 'onelogin',\n  name: 'OneLogin',\n  category: ServiceCategory.OTHER,\n  description: 'Cloud-based identity and access management platform',\n  website: 'https://www.onelogin.com/',\n  officialDocs: [\n    'https://developers.onelogin.com/api-docs/2/getting-started/working-with-apis',\n    'https://developers.onelogin.com/',\n  ],\n  directives: {\n    'script-src': ['https://onelogin.com', 'https://www.onelogin.com'],\n    'connect-src': ['https://api.onelogin.com'],\n    'frame-src': ['https://*.onelogin.com'],\n  },\n  notes:\n    'OneLogin cloud-based identity platform. Subdomain-specific configurations may be required. SAML integrations may need additional domains.',\n  aliases: ['onelogin-identity'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const PingIdentity = defineServiceInternal({\n  id: 'ping-identity',\n  name: 'Ping Identity',\n  category: ServiceCategory.OTHER,\n  description: 'Identity security platform for enterprises',\n  website: 'https://www.pingidentity.com/',\n  officialDocs: [\n    'https://docs.pingidentity.com/r/en-us/pingone/pingone_overview',\n    'https://developer.pingidentity.com/',\n  ],\n  directives: {\n    'script-src': ['https://pingone.com'],\n    'connect-src': ['https://api.pingone.com', 'https://*.pingone.com'],\n    'frame-src': ['https://*.pingone.com'],\n  },\n  notes:\n    'Ping Identity security platform. Environment-specific subdomains require wildcard permissions. PingFederate may require additional domains.',\n  aliases: ['pingone', 'ping-federate'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const AwsCloudfront = defineServiceInternal({\n  id: 'aws-cloudfront',\n  name: 'AWS CloudFront',\n  category: ServiceCategory.CDN,\n  description: 'Amazon Web Services content delivery network',\n  website: 'https://aws.amazon.com/cloudfront/',\n  officialDocs: [\n    'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-responseheaderspolicy-contentsecuritypolicy.html',\n    'https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example_cloudfront_functions_add_security_headers_section.html',\n  ],\n  directives: {\n    'script-src': ['https://*.cloudfront.net'],\n    'connect-src': ['https://*.cloudfront.net'],\n    'img-src': ['https://*.cloudfront.net'],\n    'style-src': ['https://*.cloudfront.net'],\n  },\n  notes:\n    'AWS CloudFront verified from official documentation. CSP headers configured via Response Headers Policies (recommended), CloudFront Functions, or Lambda@Edge. CloudFormation ContentSecurityPolicy resource available. CSP header limited to 1784 characters (can be raised via support ticket). Managed and custom response header policies supported. Multiple implementation methods: console, CLI, CloudFormation, API.',\n  aliases: ['cloudfront'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const AzureCdn = defineServiceInternal({\n  id: 'azure-cdn',\n  name: 'Azure CDN',\n  category: ServiceCategory.CDN,\n  description: 'Microsoft Azure content delivery network',\n  website: 'https://azure.microsoft.com/en-us/services/cdn/',\n  officialDocs: [\n    'https://learn.microsoft.com/en-us/azure/frontdoor/front-door-security-headers',\n    'https://learn.microsoft.com/en-us/azure/api-management/',\n  ],\n  directives: {\n    'script-src': ['https://*.azureedge.net'],\n    'connect-src': ['https://*.azureedge.net'],\n    'img-src': ['https://*.azureedge.net'],\n    'style-src': ['https://*.azureedge.net'],\n  },\n  notes:\n    'Azure CDN verified from official Microsoft documentation. CSP headers configured via Azure Front Door Rules Engine. API Management has CSP and CORS configuration support. SharePoint Framework with Azure CDN deployment guidance available. Power Pages provides CSP management documentation. Rules Engine allows CSP header configuration for trusted script sources.',\n  aliases: ['azure-content-delivery'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Cdnjs = defineServiceInternal({\n  id: 'cdnjs',\n  name: 'cdnjs',\n  category: ServiceCategory.CDN,\n  description: 'Free and open-source CDN service powered by Cloudflare',\n  website: 'https://cdnjs.com',\n  officialDocs: [\n    'https://cdnjs.com/about',\n    'https://cdnjs.com/libraries',\n    'https://developers.cloudflare.com/fundamentals/reference/policies-compliances/content-security-policies/',\n  ],\n  directives: {\n    'script-src': ['https://cdnjs.cloudflare.com'],\n    'style-src': ['https://cdnjs.cloudflare.com'],\n    'font-src': ['https://cdnjs.cloudflare.com'],\n  },\n  notes:\n    \"CDNJS verified from official Cloudflare CSP documentation. Free and open-source CDN powered by Cloudflare. Supports nonce-based CSP with automatic script injection. Potential path traversal security concerns with '../' bypasses. Page Shield abstraction available for easier CSP management. Compatible with CSP headers via Transform Rules or _headers files.\",\n  aliases: ['cdnjs-cloudflare'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Fastly = defineServiceInternal({\n  id: 'fastly',\n  name: 'Fastly',\n  category: ServiceCategory.CDN,\n  description: 'Edge cloud platform and content delivery network',\n  website: 'https://www.fastly.com',\n  officialDocs: [\n    'https://docs.fastly.com/',\n    'https://docs.fastly.com/en/guides/content-security-policy',\n  ],\n  directives: {\n    'script-src': ['https://*.fastly.com'],\n    'connect-src': ['https://*.fastly.com'],\n    'img-src': ['https://*.fastly.com'],\n    'style-src': ['https://*.fastly.com'],\n  },\n  notes:\n    'Fastly CDN services and edge computing platform. Replace *.fastly.com with your specific Fastly subdomain. Supports Client-Side Protection with CSP policy management.',\n  aliases: ['fastly-cdn'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Jsdelivr = defineServiceInternal({\n  id: 'jsdelivr',\n  name: 'jsDelivr',\n  category: ServiceCategory.CDN,\n  description: 'Free CDN for open source projects and NPM packages',\n  website: 'https://jsdelivr.com',\n  officialDocs: ['https://www.jsdelivr.com/', 'https://github.com/jsdelivr/jsdelivr'],\n  directives: {\n    'script-src': ['https://cdn.jsdelivr.net'],\n    'style-src': ['https://cdn.jsdelivr.net'],\n    'font-src': ['https://cdn.jsdelivr.net'],\n    'img-src': ['https://cdn.jsdelivr.net'],\n  },\n  notes:\n    'jsDelivr verified from developer community discussions and GitHub issues. Primary CDN domain cdn.jsdelivr.net required for script-src, style-src, font-src, and img-src. Supports specific path restrictions for enhanced security. Can use Report-Only mode for CSP testing.',\n  aliases: ['jsdelivr-cdn'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Keycdn = defineServiceInternal({\n  id: 'keycdn',\n  name: 'KeyCDN',\n  category: ServiceCategory.CDN,\n  description: 'High performance content delivery network',\n  website: 'https://www.keycdn.com',\n  officialDocs: [\n    'https://www.keycdn.com/support/content-security-policy',\n    'https://www.keycdn.com/blog/http-security-headers',\n  ],\n  directives: {\n    'script-src': ['https://*.kxcdn.com'],\n    'connect-src': ['https://*.kxcdn.com'],\n    'img-src': ['https://*.kxcdn.com'],\n    'style-src': ['https://*.kxcdn.com'],\n    'font-src': ['https://*.kxcdn.com'],\n  },\n  notes:\n    'KeyCDN verified from official CSP documentation. Uses *.kxcdn.com wildcard domain for pull and push zones. Official documentation emphasizes CSP as powerful mechanism against XSS attacks. Replace wildcard with specific zone subdomain for enhanced security.',\n  aliases: ['kxcdn'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Maxcdn = defineServiceInternal({\n  id: 'maxcdn',\n  name: 'MaxCDN',\n  category: ServiceCategory.CDN,\n  description: 'Content delivery network (now part of StackPath) - SERVICE DISCONTINUED',\n  website: 'https://www.maxcdn.com',\n  officialDocs: ['https://support.stackpath.com/hc/en-us/categories/360001091912-MaxCDN'],\n  directives: {\n    'script-src': ['https://*.maxcdn.com'],\n    'connect-src': ['https://*.maxcdn.com'],\n    'img-src': ['https://*.maxcdn.com'],\n    'style-src': ['https://*.maxcdn.com'],\n  },\n  notes:\n    'MaxCDN/StackPath CDN service was DISCONTINUED in November 2023. Official documentation no longer maintained. Historical CSP configuration for legacy implementations only.',\n  aliases: ['stackpath-legacy', 'stackpath'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Unpkg = defineServiceInternal({\n  id: 'unpkg',\n  name: 'unpkg',\n  category: ServiceCategory.CDN,\n  description: 'Fast, global content delivery network for everything on npm',\n  website: 'https://unpkg.com',\n  officialDocs: ['https://unpkg.com/', 'https://github.com/mjackson/unpkg'],\n  directives: {\n    'script-src': ['https://unpkg.com'],\n    'style-src': ['https://unpkg.com'],\n    'font-src': ['https://unpkg.com'],\n  },\n  notes:\n    \"unpkg verified from official documentation. Fast, global CDN for everything on npm. Mirror of all npm packages available within minutes. Runs on Cloudflare's global edge network using Workers. For best cache hits use full version numbers. Subresource Integrity recommended for additional security. CSP challenges: can allow org namespaces like @myorg but not specific libraries without org namespace.\",\n  aliases: ['unpkg-cdn'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const CrispChat = defineServiceInternal({\n  id: 'crisp-chat',\n  name: 'Crisp Chat',\n  category: ServiceCategory.CHAT,\n  description: 'Customer messaging platform with live chat, chatbots, and helpdesk',\n  website: 'https://crisp.chat',\n  officialDocs: [\n    'https://docs.crisp.chat/guides/chatbox-sdks/web-sdk/',\n    'https://help.crisp.chat/en/article/how-to-use-crisp-chatbox-javascript-sdk-10ud15y/',\n  ],\n  directives: {\n    'script-src': ['https://client.crisp.chat'],\n    'connect-src': ['wss://client.crisp.chat', 'https://client.crisp.chat'],\n    'frame-src': ['https://client.crisp.chat'],\n    'img-src': ['https://client.crisp.chat', 'https://image.crisp.chat'],\n  },\n  notes: 'Crisp chat widget with WebSocket support',\n  aliases: ['crisp'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Drift = defineServiceInternal({\n  id: 'drift',\n  name: 'Drift',\n  category: ServiceCategory.CHAT,\n  description: 'Conversational marketing platform with live chat and chatbots',\n  website: 'https://drift.com',\n  officialDocs: [\n    'https://devdocs.drift.com/docs/enabling-drift-in-your-apps-content-security-policy-csp',\n    'https://devdocs.drift.com/docs/drift-javascript-api',\n  ],\n  directives: {\n    'script-src': ['https://js.driftt.com', 'https://widget.drift.com'],\n    'frame-src': ['https://js.driftt.com', 'https://widget.drift.com'],\n    'connect-src': ['wss://customer-api.drift.com', 'https://drift.com'],\n  },\n  notes:\n    'Drift chat widget and conversational marketing platform. Requires js.driftt.com and widget.drift.com for both script and frame sources per official CSP documentation.',\n  aliases: ['drift-chat'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Freshchat = defineServiceInternal({\n  id: 'freshchat',\n  name: 'Freshchat',\n  category: ServiceCategory.CHAT,\n  description: 'Modern messaging software for sales and customer engagement',\n  website: 'https://freshchat.com',\n  officialDocs: [\n    'https://developers.freshchat.com/web-sdk/',\n    'https://support.freshchat.com/support/solutions/articles/238000-freshchat-javascript-sdk',\n  ],\n  directives: {\n    'script-src': ['https://wchat.freshchat.com'],\n    'connect-src': ['https://wsv.freshchat.com', 'https://wchat.freshchat.com'],\n    'frame-src': ['https://wchat.freshchat.com'],\n  },\n  notes: 'Freshchat widget for customer messaging',\n  aliases: ['fresh-chat'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Intercom = defineServiceInternal({\n  id: 'intercom',\n  name: 'Intercom',\n  category: ServiceCategory.CHAT,\n  description: 'Customer messaging platform with live chat, help desk, and marketing automation',\n  website: 'https://intercom.com',\n  officialDocs: [\n    'https://www.intercom.com/help/en/articles/3894-using-intercom-with-content-security-policy',\n    'https://developers.intercom.com/installing-intercom/docs/javascript-api-overview',\n    'https://developers.intercom.com/installing-intercom/docs/intercom-javascript',\n  ],\n  directives: {\n    'script-src': [\n      'https://app.intercom.io',\n      'https://widget.intercom.io',\n      'https://js.intercomcdn.com',\n      'https://video-messages.intercomcdn.com',\n      'https://messenger-apps.intercom.io',\n      'https://messenger-apps.eu.intercom.io',\n      'https://messenger-apps.au.intercom.io',\n    ],\n    'frame-src': [\n      'https://widget.intercom.io',\n      'https://intercom-sheets.com',\n      'https://www.intercom-reporting.com',\n      'https://www.youtube.com',\n      'https://player.vimeo.com',\n      'https://fast.wistia.net',\n    ],\n    'connect-src': [\n      'https://via.intercom.io',\n      'https://api.intercom.io',\n      'https://api.au.intercom.io',\n      'https://api.eu.intercom.io',\n      'https://api-iam.intercom.io',\n      'https://api-iam.eu.intercom.io',\n      'https://api-iam.au.intercom.io',\n      'https://api-ping.intercom.io',\n      'https://nexus-websocket-a.intercom.io',\n      'wss://nexus-websocket-a.intercom.io',\n      'https://nexus-websocket-b.intercom.io',\n      'wss://nexus-websocket-b.intercom.io',\n      'https://nexus-europe-websocket.intercom.io',\n      'wss://nexus-europe-websocket.intercom.io',\n      'https://nexus-australia-websocket.intercom.io',\n      'wss://nexus-australia-websocket.intercom.io',\n      'https://uploads.intercomcdn.com',\n      'https://uploads.intercomcdn.eu',\n      'https://uploads.au.intercomcdn.com',\n      'https://uploads.eu.intercomcdn.com',\n      'https://uploads.intercomusercontent.com',\n    ],\n    'img-src': [\n      'https://static.intercomassets.com',\n      'https://js.intercomcdn.com',\n      'https://downloads.intercomcdn.com',\n      'https://uploads.intercomusercontent.com',\n      'https://gifs.intercomcdn.com',\n    ],\n    'style-src': [\"'unsafe-inline'\"],\n    'font-src': ['https://js.intercomcdn.com'],\n    'media-src': ['https://js.intercomcdn.com'],\n  },\n  requiresDynamic: true,\n  requiresNonce: true,\n  notes:\n    'Intercom verified against official CSP documentation. Requires multiple regional endpoints (US, EU, AU), WebSocket connections for real-time messaging, and various CDN domains for assets. Supports iframe embeds for third-party content (YouTube, Vimeo, Wistia). Regional API endpoints and upload domains required based on account location.',\n  aliases: ['intercom-messenger'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const TawkTo = defineServiceInternal({\n  id: 'tawk-to',\n  name: 'Tawk.to',\n  category: ServiceCategory.CHAT,\n  description: 'Free live chat software for websites',\n  website: 'https://tawk.to',\n  officialDocs: [\n    'https://help.tawk.to/article/why-are-images-not-showing-up-in-the-widget',\n    'https://developer.tawk.to/jsapi/',\n  ],\n  directives: {\n    'script-src': ['https://*.tawk.to', 'https://cdn.jsdelivr.net'],\n    'style-src': ['https://*.tawk.to', 'https://fonts.googleapis.com', 'https://cdn.jsdelivr.net'],\n    'frame-src': ['https://*.tawk.to'],\n    'font-src': ['https://*.tawk.to', 'https://fonts.gstatic.com'],\n    'img-src': [\n      'https://*.tawk.to',\n      'https://cdn.jsdelivr.net',\n      'https://tawk.link',\n      'https://s3.amazonaws.com',\n    ],\n    'connect-src': ['https://*.tawk.to', 'wss://*.tawk.to'],\n    'form-action': ['https://*.tawk.to'],\n  },\n  notes:\n    'Tawk.to verified from official CSP documentation. Requires wildcard *.tawk.to domains for various resources. Known CSP complexity due to extensive inline styles in widget implementation. Official docs recommend specific CSP directives to ensure widget displays correctly.',\n  aliases: ['tawk'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Zendesk = defineServiceInternal({\n  id: 'zendesk',\n  name: 'Zendesk',\n  category: ServiceCategory.CHAT,\n  description: 'Customer service platform with support ticketing and live chat',\n  website: 'https://zendesk.com',\n  officialDocs: [\n    'https://developer.zendesk.com/documentation/classic-web-widget-sdks/web-widget/integrating-with-google/csp/',\n    'https://support.zendesk.com/hc/en-us/articles/5436016355738-Does-Zendesk-support-CSP-headers',\n  ],\n  directives: {\n    'script-src': ['https://*.zdassets.com', 'https://static.zdassets.com'],\n    'frame-src': ['https://*.zendesk.com', 'https://widget.zendesk.com'],\n    'connect-src': [\n      'https://*.zendesk.com',\n      'https://*.zopim.com',\n      'https://assets.zendesk.com',\n      'wss://*.zendesk.com',\n      'wss://*.zopim.com',\n      'https://zendesk-eu.my.sentry.io',\n    ],\n    'img-src': ['https://v2assets.zopim.io', 'https://static.zdassets.com', 'data:'],\n    'font-src': ['https://*.zdassets.com', 'https://static.zdassets.com'],\n    'style-src': [\"'unsafe-inline'\"],\n  },\n  requiresDynamic: true,\n  requiresNonce: true,\n  notes:\n    \"Zendesk verified against official CSP documentation. Web Widget (Classic) supports Google's strict CSP guidelines with nonce attribute. Requires static.zdassets.com for snippet.js and assets.zendesk.com for embeddable framework. Cannot guarantee custom CSP compatibility outside Google's guidelines.\",\n  aliases: ['zendesk-chat', 'zendesk-widget'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Drupal = defineServiceInternal({\n  id: 'drupal',\n  name: 'Drupal',\n  category: ServiceCategory.OTHER,\n  description: 'Open-source content management framework',\n  website: 'https://drupal.org',\n  officialDocs: [\n    'https://www.drupal.org/project/csp',\n    'https://www.drupal.org/docs/extending-drupal/contributed-modules/contributed-module-documentation/content-security-policy',\n    'https://www.drupal.org/project/seckit',\n  ],\n  directives: {\n    'script-src': ['https://drupal.org'],\n    'connect-src': ['https://drupal.org', 'https://updates.drupal.org'],\n  },\n  notes:\n    'Drupal verified from official CSP module documentation. Official Content-Security-Policy module provides comprehensive CSP management, reporting endpoint, Libraries API integration, admin interface with validation. Security Kit module available with basic CSP support. Report-Only mode recommended for safe configuration. Dynamic policy modification via csp.policy_alter events. HTTP Response Headers module for custom headers.',\n  aliases: ['drupal-cms'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Sanity = defineServiceInternal({\n  id: 'sanity',\n  name: 'Sanity',\n  category: ServiceCategory.OTHER,\n  description: 'Structured content platform with real-time APIs',\n  website: 'https://sanity.io',\n  officialDocs: [\n    'https://www.sanity.io/docs/',\n    'https://www.sanity.io/docs/api-cdn',\n    'https://www.sanity.io/docs/security',\n  ],\n  directives: {\n    'script-src': ['https://sanity.io'],\n    'connect-src': ['https://api.sanity.io', 'https://cdn.sanity.io', 'wss://*.api.sanity.io'],\n    'img-src': ['https://cdn.sanity.io', 'https://lh3.googleusercontent.com'],\n  },\n  notes:\n    \"Sanity verified from official API CDN and security documentation. Studio Presentation tool requires iframe CSP adjustments. Global CDN at cdn.sanity.io based on Google CDN. Real-time collaboration requires WebSocket connections (wss://). User avatars from Google (lh3.googleusercontent.com). frame-ancestors 'self' needed for embedded Studio. Avoid access tokens in browser-side JavaScript.\",\n  aliases: ['sanity-cms'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Squarespace = defineServiceInternal({\n  id: 'squarespace',\n  name: 'Squarespace',\n  category: ServiceCategory.OTHER,\n  description: 'All-in-one website building and hosting platform',\n  website: 'https://www.squarespace.com/',\n  officialDocs: [\n    'https://developers.squarespace.com/',\n    'https://support.squarespace.com/hc/en-us/articles/205815908-Using-code-injection',\n    'https://support.squarespace.com/hc/en-us/articles/205815928-Adding-custom-code-to-your-site',\n  ],\n  directives: {\n    'script-src': [\n      'https://squarespace.com',\n      'https://www.squarespace.com',\n      'https://static1.squarespace.com',\n    ],\n    'connect-src': ['https://squarespace.com', 'https://api.squarespace.com'],\n    'img-src': ['https://images.squarespace-cdn.com'],\n  },\n  notes:\n    \"Squarespace verified from official documentation and community forums. CRITICAL CSP ISSUE: Squarespace does not natively provide comprehensive CSP support. Financial institutions flagged 'Content Security Policy Missing'. Bank regulators require CSP fixes. Single-domain CSP breaks editor functionality. Custom code injection available but CSP conflicts. Users in 'tough position' for compliance requirements.\",\n  aliases: ['squarespace-website'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Strapi = defineServiceInternal({\n  id: 'strapi',\n  name: 'Strapi',\n  category: ServiceCategory.OTHER,\n  description: 'Open-source headless content management system',\n  website: 'https://strapi.io',\n  officialDocs: [\n    'https://docs.strapi.io/',\n    'https://docs.strapi.io/cms/configurations/middlewares',\n  ],\n  directives: {\n    'script-src': ['https://strapi.io'],\n    'connect-src': ['https://api.strapi.io'],\n  },\n  notes:\n    'Strapi verified from official middleware documentation. CSP configured in config/middlewares.js via strapi::security middleware. useDefaults: true recommended. Supports connect-src, img-src, media-src directives. AWS S3 integration examples provided. Known issue: custom CSP ignored for /admin path. upgradeInsecureRequests: null commonly used. Flexible directive configuration supported.',\n  aliases: ['strapi-cms'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Webflow = defineServiceInternal({\n  id: 'webflow',\n  name: 'Webflow',\n  category: ServiceCategory.OTHER,\n  description: 'Visual web development platform for designers',\n  website: 'https://webflow.com/',\n  officialDocs: [\n    'https://developers.webflow.com/',\n    'https://university.webflow.com/lesson/custom-code-in-the-head-and-body-tags',\n    'https://help.webflow.com/hc/en-us/articles/33961369170963-Custom-security-headers',\n    'https://university.webflow.com/lesson/custom-code-embed',\n  ],\n  directives: {\n    'script-src': ['https://webflow.com', 'https://d3e54v103j8qbb.cloudfront.net'],\n    'connect-src': ['https://api.webflow.com'],\n    'img-src': ['https://uploads-ssl.webflow.com'],\n  },\n  notes:\n    \"Webflow verified from official documentation. ENTERPRISE ONLY: Custom security headers available only on Enterprise plans ($15k+ annually). Paying customers request broader CSP access. Custom code blocked by default CSP. Community reports script-src 'none' blocking custom JavaScript. Cloudflare workaround available for non-Enterprise users.\",\n  aliases: ['webflow-cms'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Wix = defineServiceInternal({\n  id: 'wix',\n  name: 'Wix',\n  category: ServiceCategory.OTHER,\n  description: 'Cloud-based website development platform',\n  website: 'https://www.wix.com/',\n  officialDocs: [\n    'https://dev.wix.com/api/rest/getting-started/introduction',\n    'https://support.wix.com/en/article/embedding-custom-code-on-your-site',\n    'https://support.wix.com/en/article/wix-editor-embedding-a-site-or-a-widget',\n  ],\n  directives: {\n    'script-src': ['https://wix.com', 'https://www.wix.com', 'https://static.wixstatic.com'],\n    'connect-src': ['https://wix.com', 'https://www.wix.com'],\n    'img-src': ['https://static.wixstatic.com'],\n  },\n  notes:\n    'Wix verified from official documentation and community forums. LIMITED CSP SUPPORT: CSP headers managed at platform level, no user control. Custom code runs in sandboxed iframes for security. HTTPS required for all embedded content. External sites may block embedding due to their own CSP policies. Community reports limited support for custom security headers as of 2022.',\n  aliases: ['wix-website'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Gitbook = defineServiceInternal({\n  id: 'gitbook',\n  name: 'GitBook',\n  category: ServiceCategory.OTHER,\n  description: 'Modern documentation platform for teams',\n  website: 'https://www.gitbook.com/',\n  officialDocs: [\n    'https://developer.gitbook.com/',\n    'https://docs.gitbook.com/integrations/embed-content',\n    'https://docs.gitbook.com/help-center/editing-content/assets-and-files/can-i-embed-an-iframe-in-gitbook',\n  ],\n  directives: {\n    'script-src': ['https://gitbook.com', 'https://www.gitbook.com'],\n    'frame-src': ['https://gitbook.com', 'https://www.gitbook.com', 'https://*.gitbook.io'],\n  },\n  notes:\n    \"GitBook verified from official documentation. Doesn't support external iframe embedding due to CSP. Public content can be embedded in iframes with safe CSP configuration (no cookies/credentials accessible). Custom domain SSL certificates managed by GitBook. frame-ancestors CSP directive configured to allow iframe embedding of public content.\",\n  aliases: ['gitbook-docs'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Udemy = defineServiceInternal({\n  id: 'udemy',\n  name: 'Udemy',\n  category: ServiceCategory.OTHER,\n  description: 'Online learning and teaching marketplace',\n  website: 'https://www.udemy.com/',\n  officialDocs: [\n    'https://www.udemy.com/developers/',\n    'https://business-support.udemy.com/hc/en-us/articles/13292752846999-How-to-Embed-Content-via-iframe-Leadership-Academy',\n    'https://www.udemy.com/developers/instructor/',\n  ],\n  directives: {\n    'script-src': ['https://udemy.com', 'https://www.udemy.com'],\n    'frame-src': ['https://udemy.com', 'https://www.udemy.com'],\n  },\n  notes:\n    'Udemy verified from official documentation. CRITICAL: Affiliate API discontinued January 1, 2025. Course widget discontinued. Udemy Business supports iframe embedding for internal use only. REST/GraphQL/xAPI available for Business customers. Public course iframe embedding no longer available for affiliate purposes. Contact current affiliate program for CSP domain requirements.',\n  aliases: ['udemy-courses'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GoogleFonts = defineServiceInternal({\n  id: 'google-fonts',\n  name: 'Google Fonts',\n  category: ServiceCategory.FONTS,\n  description: 'Free web font service with hundreds of font families',\n  website: 'https://fonts.google.com/',\n  officialDocs: [\n    'https://developers.google.com/maps/documentation/javascript/content-security-policy',\n    'https://developers.google.com/fonts/docs/getting_started',\n  ],\n  directives: {\n    'style-src': ['https://fonts.googleapis.com'],\n    'font-src': ['https://fonts.gstatic.com'],\n  },\n  notes:\n    'Google Fonts verified from official Google Maps CSP documentation. fonts.googleapis.com serves CSS stylesheets, fonts.gstatic.com serves actual font files. Both domains required for Google Fonts to work properly. Supports nonce-based CSP for enhanced security.',\n  aliases: ['gfonts'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Calendly = defineServiceInternal({\n  id: 'calendly',\n  name: 'Calendly',\n  category: ServiceCategory.FORMS,\n  description: 'Scheduling software for appointments and meetings',\n  website: 'https://calendly.com',\n  officialDocs: [\n    'https://developer.calendly.com/docs/embed-options-overview',\n    'https://help.calendly.com/hc/en-us/articles/360020052833-Advanced-embed-options',\n  ],\n  directives: {\n    'script-src': ['https://assets.calendly.com'],\n    'frame-src': ['https://calendly.com'],\n    'style-src': ['https://assets.calendly.com'],\n  },\n  notes:\n    'Calendly verified from official embed documentation. Uses iframe by default for popup integrations. JavaScript widget loads from assets.calendly.com. Advanced embed options available for developers. Child-src may also be required for iframe compatibility. Direct iframe embedding supported with simple frame-src allowlist.',\n  aliases: ['calendly-widget'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Hubspot = defineServiceInternal({\n  id: 'hubspot',\n  name: 'HubSpot',\n  category: ServiceCategory.FORMS,\n  description: 'Marketing, sales, and service software with forms and tracking',\n  website: 'https://hubspot.com',\n  officialDocs: [\n    'https://knowledge.hubspot.com/domains-and-urls/ssl-and-domain-security-in-hubspot',\n    'https://community.hubspot.com/t5/HubSpot-Ideas/A-guide-to-Content-Security-Policy-CSP-settings/idi-p/314328',\n    'https://community.hubspot.com/t5/APIs-Integrations/Content-Security-Policy-and-Embedded-Hubspot-Forms/m-p/320730',\n  ],\n  directives: {\n    'script-src': [\n      'https://js.hsforms.net',\n      'https://js.hs-scripts.com',\n      'https://js.hs-banner.com',\n      'https://js.hscollectedforms.net',\n      'https://js.hs-analytics.net',\n      'https://js.hsadspixel.net',\n      'https://*.hubspot.com',\n      'https://*.usemessages.com',\n    ],\n    'connect-src': [\n      'https://forms.hubspot.com',\n      'https://forms.hsforms.com',\n      'https://forms.hscollectedforms.net',\n      'https://*.hubspot.com',\n      'https://*.hubapi.com',\n      'https://*.hs-banner.com',\n      'https://*.hscollectedforms.net',\n      'https://*.hsforms.com',\n    ],\n    'frame-src': [\n      'https://forms.hubspot.com',\n      'https://*.hubspot.com',\n      'https://*.hsforms.net',\n      'https://*.hsforms.com',\n      'https://play.hubspotvideo.com',\n    ],\n    'img-src': [\n      'https://*.hsforms.com',\n      'https://*.hubspot.com',\n      'https://static.hsappstatic.net',\n      'https://*.hubspotusercontent-na1.net',\n      'https://*.hubspotusercontent20.net',\n      'https://cdn2.hubspot.net',\n    ],\n    'style-src': [\"'unsafe-inline'\"],\n  },\n  requiresDynamic: true,\n  notes:\n    \"HubSpot verified from official knowledge base and community documentation. Comprehensive multi-domain CDN setup with regional variations (EU domains: js-eu1.hs-scripts.com). Requires 'unsafe-inline' styles due to v2.js inline styling. Includes forms, tracking, video, and analytics functionality across multiple HubSpot subdomains.\",\n  aliases: ['hubspot-forms', 'hs-forms'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Mailchimp = defineServiceInternal({\n  id: 'mailchimp',\n  name: 'Mailchimp',\n  category: ServiceCategory.FORMS,\n  description: 'Email marketing platform with signup forms and automation',\n  website: 'https://mailchimp.com',\n  officialDocs: [\n    'https://mailchimp.com/developer/marketing/guides/create-signup-form/',\n    'https://mailchimp.com/help/add-a-signup-form-to-your-website/',\n  ],\n  directives: {\n    'script-src': ['https://chimpstatic.com'],\n    'connect-src': ['https://us1.api.mailchimp.com', 'https://chimpstatic.com'],\n    'style-src': ['https://chimpstatic.com'],\n  },\n  notes: 'Mailchimp signup forms and embeds',\n  aliases: ['mailchimp-forms'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Typeform = defineServiceInternal({\n  id: 'typeform',\n  name: 'Typeform',\n  category: ServiceCategory.FORMS,\n  description: 'Online form builder for creating surveys, quizzes, and questionnaires',\n  website: 'https://www.typeform.com/',\n  officialDocs: [\n    'https://community.typeform.com/integrate-your-typeform-43/csp-allowing-form-submissions-to-typeform-via-intercom-integration-9338',\n    'https://medium.com/typeforms-engineering-blog/why-did-we-rewrite-typeform-embed-f0b16fd4fbd3',\n  ],\n  directives: {\n    'script-src': ['https://embed.typeform.com'],\n    'style-src': ['https://embed.typeform.com'],\n    'frame-src': ['https://form.typeform.com'],\n    'form-action': ['https://form.typeform.com', 'https://intercom-integration.typeform.com'],\n    'connect-src': ['https://api.typeform.com', 'https://form.typeform.com'],\n    'img-src': ['https://images.typeform.com'],\n  },\n  notes:\n    'Typeform verified from official engineering blog and community CSP documentation. Requires embed.typeform.com for scripts and styles, form.typeform.com for frame embedding. HTTPS required for all embeds. Intercom integration needs additional form-action permissions.',\n  aliases: ['typeform-embed'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GoogleMaps = defineServiceInternal({\n  id: 'google-maps',\n  name: 'Google Maps',\n  category: ServiceCategory.MAPS,\n  description: 'Interactive maps and location services by Google',\n  website: 'https://maps.google.com',\n  officialDocs: [\n    'https://developers.google.com/maps/documentation/javascript/content-security-policy',\n    'https://developers.google.com/maps/documentation/javascript/get-api-key',\n    'https://developers.google.com/maps/documentation/javascript/load-maps-js-api',\n  ],\n  directives: {\n    'script-src': [\n      'https://*.googleapis.com',\n      'https://*.gstatic.com',\n      'https://*.google.com',\n      'https://*.ggpht.com',\n      'https://*.googleusercontent.com',\n      \"'unsafe-eval'\",\n      'blob:',\n    ],\n    'img-src': [\n      'https://*.googleapis.com',\n      'https://*.gstatic.com',\n      'https://*.google.com',\n      'https://*.googleusercontent.com',\n      'data:',\n    ],\n    'frame-src': ['https://*.google.com'],\n    'connect-src': [\n      'https://*.googleapis.com',\n      'https://*.google.com',\n      'https://*.gstatic.com',\n      'data:',\n      'blob:',\n    ],\n    'font-src': ['https://fonts.gstatic.com'],\n    'style-src': ['https://fonts.googleapis.com', \"'unsafe-inline'\"],\n    'worker-src': ['blob:'],\n  },\n  requiresDynamic: true,\n  requiresNonce: true,\n  notes:\n    \"Google Maps JavaScript API for interactive maps. Supports nonce-based strict CSP (recommended) or allowlist CSP. Requires 'unsafe-eval' for some features. All websites must specify googleapis.com in CSP directives.\",\n  aliases: ['google-maps-api', 'gmaps'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Mapbox = defineServiceInternal({\n  id: 'mapbox',\n  name: 'Mapbox',\n  category: ServiceCategory.MAPS,\n  description: 'Interactive maps and location data platform',\n  website: 'https://mapbox.com',\n  officialDocs: [\n    'https://docs.mapbox.com/mapbox-gl-js/api/',\n    'https://docs.mapbox.com/help/troubleshooting/mapbox-browser-support/',\n  ],\n  directives: {\n    'script-src': ['https://api.mapbox.com'],\n    'style-src': ['https://api.mapbox.com'],\n    'connect-src': ['https://api.mapbox.com', 'https://events.mapbox.com'],\n    'img-src': ['https://api.mapbox.com'],\n  },\n  notes: 'Mapbox GL JS for interactive vector maps',\n  aliases: ['mapbox-gl', 'mapbox-js'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const OpenstreetmapLeaflet = defineServiceInternal({\n  id: 'openstreetmap-leaflet',\n  name: 'OpenStreetMap/Leaflet',\n  category: ServiceCategory.MAPS,\n  description: 'Open-source JavaScript library for mobile-friendly interactive maps',\n  website: 'https://leafletjs.com',\n  officialDocs: [\n    'https://leafletjs.com/examples/quick-start/',\n    'https://leafletjs.com/reference.html',\n  ],\n  directives: {\n    'script-src': ['https://unpkg.com', \"'unsafe-eval'\"],\n    'style-src': ['https://unpkg.com', \"'unsafe-inline'\"],\n    'connect-src': ['https://tile.openstreetmap.org', 'https://*.tile.openstreetmap.org'],\n    'img-src': [\n      'https://tile.openstreetmap.org',\n      'https://*.tile.openstreetmap.org',\n      'https://unpkg.com',\n    ],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Leaflet/OpenStreetMap verified from community documentation and GitHub issues. Requires 'unsafe-eval' for mapping libraries and 'unsafe-inline' for dynamic styling. Common error: img-src violations for tile loading. Must include wildcard domains (*.tile.openstreetmap.org) for subdomain tiles (a,b,c). Different tile servers require specific CSP configurations. Cordova requires network access whitelist.\",\n  aliases: ['leaflet', 'osm', 'openstreetmap'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const CampaignMonitor = defineServiceInternal({\n  id: 'campaign-monitor',\n  name: 'Campaign Monitor',\n  category: ServiceCategory.OTHER,\n  description: 'Email marketing platform with design tools and automation',\n  website: 'https://www.campaignmonitor.com/',\n  officialDocs: [\n    'https://www.campaignmonitor.com/api/',\n    'https://help.campaignmonitor.com/s/article/html-signup-forms',\n  ],\n  directives: {\n    'script-src': ['https://campaignmonitor.com', 'https://www.campaignmonitor.com'],\n    'frame-src': ['https://campaignmonitor.com', 'https://www.campaignmonitor.com'],\n    'connect-src': ['https://api.createsend.com'],\n  },\n  notes:\n    'Campaign Monitor verified from official API and HTML signup forms documentation. External session API used as iframe source for embedding within applications. HTML signup forms can be embedded on websites. Recommends linking to forms in emails rather than embedding for reliability. No specific official CSP documentation found - contact support for detailed requirements. Uses CreateSend API for backend operations.',\n  aliases: ['createsend'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const ConstantContact = defineServiceInternal({\n  id: 'constant-contact',\n  name: 'Constant Contact',\n  category: ServiceCategory.OTHER,\n  description: 'Email marketing and campaign management platform',\n  website: 'https://www.constantcontact.com/',\n  officialDocs: [\n    'https://knowledgebase.constantcontact.com/lead-gen-crm/articles/KnowledgeBase/50227-Using-Form-Embed-Codes',\n    'https://developer.constantcontact.com/api_reference/index.html',\n  ],\n  directives: {\n    'script-src': ['https://imgssl.constantcontact.com'],\n    'frame-src': ['https://lp.constantcontactpages.com'],\n    'connect-src': ['https://api.constantcontact.com'],\n    'img-src': ['https://imgssl.constantcontact.com'],\n  },\n  notes:\n    'Constant Contact verified from official documentation and community forums. IMPORTANT: Embed codes for forms no longer available as of recent updates. Some pages refuse iframe connections due to security headers and Terms of Use restrictions. Embeddable forms available via lp.constantcontactpages.com domain. New inline and pop-up signup forms recommended. No specific official CSP documentation found - contact support for requirements.',\n  aliases: ['constantcontact'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Convertkit = defineServiceInternal({\n  id: 'convertkit',\n  name: 'ConvertKit',\n  category: ServiceCategory.OTHER,\n  description: 'Email marketing platform designed for creators and bloggers',\n  website: 'https://convertkit.com/',\n  officialDocs: [\n    'https://developers.kit.com/v3',\n    'https://help.kit.com/en/articles/4009572-form-embedding-basics',\n  ],\n  directives: {\n    'script-src': ['https://convertkit.com', 'https://app.convertkit.com'],\n    'connect-src': ['https://api.convertkit.com', 'https://app.convertkit.com'],\n    'form-action': ['https://app.convertkit.com'],\n    'frame-src': ['https://app.convertkit.com'],\n    'img-src': ['https://convertkit.com', 'https://app.convertkit.com'],\n  },\n  notes:\n    'ConvertKit (now Kit) verified from official embedding documentation. JavaScript embed recommended over HTML for automatic updates. Forms submit to app.convertkit.com domain. API base URL: api.convertkit.com/v3/. React and Svelte libraries available on GitHub. No specific official CSP documentation found - test with Content-Security-Policy-Report-Only header first. Requires form-action directive for form submissions.',\n  aliases: ['ck'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Mailgun = defineServiceInternal({\n  id: 'mailgun',\n  name: 'Mailgun',\n  category: ServiceCategory.OTHER,\n  description: 'Email delivery service and API for developers',\n  website: 'https://www.mailgun.com/',\n  officialDocs: [\n    'https://documentation.mailgun.com/en/latest/user_manual.html#csp-headers',\n    'https://help.mailgun.com/hc/en-us/articles/203380100-Where-Can-I-Find-My-API-Key-and-SMTP-Credentials-',\n  ],\n  directives: {\n    'script-src': ['https://mailgun.com'],\n    'connect-src': ['https://api.mailgun.net', 'https://api.eu.mailgun.net'],\n  },\n  notes:\n    'Mailgun email delivery service for developers. Different API endpoints for US and EU regions. SMTP credentials may require additional domains.',\n  aliases: ['mailgun-email'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Sendgrid = defineServiceInternal({\n  id: 'sendgrid',\n  name: 'SendGrid',\n  category: ServiceCategory.OTHER,\n  description: 'Email delivery and marketing platform by Twilio',\n  website: 'https://sendgrid.com/',\n  officialDocs: [\n    'https://docs.sendgrid.com/ui/sending-email/content-security-policy',\n    'https://docs.sendgrid.com/api-reference/',\n  ],\n  directives: {\n    'script-src': ['https://sendgrid.com'],\n    'connect-src': ['https://api.sendgrid.com'],\n  },\n  notes:\n    'SendGrid email delivery and marketing platform by Twilio. Marketing campaigns may require additional image domains. Webhook endpoints should be configured separately.',\n  aliases: ['twilio-sendgrid'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Unbounce = defineServiceInternal({\n  id: 'unbounce',\n  name: 'Unbounce',\n  category: ServiceCategory.OTHER,\n  description: 'Landing page builder with A/B testing and conversion optimization',\n  website: 'https://unbounce.com/',\n  officialDocs: [\n    'https://developer.unbounce.com/',\n    'https://documentation.unbounce.com/hc/en-us/articles/203879070-Adding-Custom-JavaScript-and-CSS-in-the-Classic-Builder',\n    'https://unbounce.com/product/security/',\n  ],\n  directives: {\n    'script-src': ['https://unbounce.com'],\n    'connect-src': ['https://unbounce.com'],\n  },\n  notes:\n    'Unbounce verified from official documentation. No specific official CSP documentation found. Custom JavaScript and CSS supported in Classic Builder. API available on all pricing plans. HTTPS/SSL enforced with industry-leading security protocols. Contact support for CSP-specific requirements. Community forums available for developer discussions.',\n  aliases: ['unbounce-landing'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Datadog = defineServiceInternal({\n  id: 'datadog',\n  name: 'Datadog',\n  category: ServiceCategory.MONITORING,\n  description: 'Monitoring and analytics platform for cloud applications',\n  website: 'https://datadoghq.com',\n  officialDocs: [\n    'https://docs.datadoghq.com/real_user_monitoring/browser/setup/',\n    'https://docs.datadoghq.com/integrations/content_security_policy_logs/',\n    'https://docs.datadoghq.com/real_user_monitoring/browser/troubleshooting/',\n  ],\n  directives: {\n    'script-src': ['https://www.datadoghq-browser-agent.com'],\n    'connect-src': ['https://browser-intake-datadoghq.com', 'https://session-replay-datadoghq.com'],\n  },\n  notes:\n    'Datadog RUM (Real User Monitoring) browser agent. V5+ uses new intake domains. Worker compression may require additional CSP configuration.',\n  aliases: ['datadog-rum'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const NewRelic = defineServiceInternal({\n  id: 'new-relic',\n  name: 'New Relic',\n  category: ServiceCategory.MONITORING,\n  description: 'Application performance monitoring and observability platform',\n  website: 'https://newrelic.com',\n  officialDocs: [\n    'https://docs.newrelic.com/docs/browser/new-relic-browser/performance-quality/security-browser-monitoring/',\n    'https://docs.newrelic.com/docs/browser/new-relic-browser/getting-started/compatibility-requirements-browser-monitoring/',\n  ],\n  directives: {\n    'script-src': ['https://js-agent.newrelic.com'],\n    'connect-src': [\n      'https://bam.nr-data.net',\n      'https://bam-cell.nr-data.net',\n      'https://js-agent.newrelic.com',\n    ],\n  },\n  requiresDynamic: true,\n  requiresNonce: true,\n  notes:\n    'New Relic verified against official security and compatibility documentation. Browser agent supports CSP Level 2 with nonce configuration (Ruby agent 9.10.0+ auto-detects CSP nonce). Agent v1.247.0+ includes integrity hashes for CDN verification. Proxy configuration available to reduce CSP exceptions.',\n  aliases: ['newrelic', 'nr'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Sentry = defineServiceInternal({\n  id: 'sentry',\n  name: 'Sentry',\n  category: ServiceCategory.MONITORING,\n  description: 'Application monitoring and error tracking platform',\n  website: 'https://sentry.io',\n  officialDocs: [\n    'https://docs.sentry.io/platforms/javascript/install/',\n    'https://docs.sentry.io/product/security/content-security-policy/',\n  ],\n  directives: {\n    'script-src': ['https://browser.sentry-cdn.com'],\n    'connect-src': ['https://sentry.io', 'https://o*.ingest.sentry.io'],\n  },\n  notes: 'Sentry JavaScript SDK for error monitoring',\n  aliases: ['sentry-js'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Algolia = defineServiceInternal({\n  id: 'algolia',\n  name: 'Algolia',\n  category: ServiceCategory.OTHER,\n  description: 'Search and discovery API platform for websites and applications',\n  website: 'https://www.algolia.com/',\n  officialDocs: [\n    'https://support.algolia.com/hc/en-us/articles/8947249849873-How-do-I-fix-Content-Security-Policy-CSP-errors-on-my-site',\n    'https://www.algolia.com/doc/guides/security/security-best-practices/',\n  ],\n  directives: {\n    'script-src': ['https://cdn.jsdelivr.net'],\n    'connect-src': ['https://*.algolia.net', 'https://*.algolianet.com', 'https://*.algolia.io'],\n    'style-src': [\"'unsafe-inline'\"],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Algolia verified from official CSP documentation. Requires *.algolia.net, *.algolianet.com, *.algolia.io for API connections. InstantSearch with insights needs cdn.jsdelivr.net for search-insights library. Some InstantSearch versions may require 'unsafe-eval' for JavaScript evaluation. Application-specific subdomains require wildcard permissions.\",\n  aliases: ['algolia-search'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Constructor = defineServiceInternal({\n  id: 'constructor',\n  name: 'Constructor',\n  category: ServiceCategory.OTHER,\n  description: 'Product search and discovery platform for e-commerce',\n  website: 'https://constructor.io/',\n  officialDocs: [\n    'https://docs.constructor.io/',\n    'https://docs.constructor.io/build/integration-guides/javascript-client/',\n  ],\n  directives: {\n    'script-src': ['https://cnstrc.com'],\n    'connect-src': ['https://ac.cnstrc.com'],\n  },\n  notes:\n    'Constructor.io configuration based on general documentation - no specific CSP documentation found. cnstrc.com hosts JavaScript files and custom bundles. ac.cnstrc.com used for API endpoints including collections, search, autocomplete, browse, and recommendations. Contact Constructor.io support for complete CSP requirements.',\n  aliases: ['constructor-io'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Contentful = defineServiceInternal({\n  id: 'contentful',\n  name: 'Contentful',\n  category: ServiceCategory.OTHER,\n  description: 'API-first headless content management system',\n  website: 'https://contentful.com',\n  officialDocs: [\n    'https://www.contentful.com/developers/docs/experiences/troubleshooting/',\n    'https://www.contentful.com/blog/contentful-studio-experiences-sdk/',\n  ],\n  directives: {\n    'connect-src': [\n      'https://cdn.contentful.com',\n      'https://cdn.eu.contentful.com',\n      'https://preview.contentful.com',\n      'https://graphql.contentful.com',\n    ],\n    'img-src': [\n      'https://assets.ctfassets.net',\n      'https://images.ctfassets.net',\n      'https://videos.ctfassets.net',\n      'https://downloads.ctfassets.net',\n      'https://images.secure.ctfassets.net',\n      'https://assets.secure.ctfassets.net',\n      'https://videos.secure.ctfassets.net',\n      'https://downloads.secure.ctfassets.net',\n    ],\n    'frame-src': ['https://app.contentful.com'],\n  },\n  notes:\n    'Contentful verified against official troubleshooting and SDK documentation. Requires app.contentful.com for Studio experiences, cdn.contentful.com for content delivery, and both regular and secure ctfassets.net domains for asset hosting. EU customers use cdn.eu.contentful.com endpoint.',\n  aliases: ['contentful-cms'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const CrazyEgg = defineServiceInternal({\n  id: 'crazy-egg',\n  name: 'Crazy Egg',\n  category: ServiceCategory.OTHER,\n  description: 'Heatmap and user behavior analytics platform',\n  website: 'https://www.crazyegg.com/',\n  officialDocs: [\n    'https://support.crazyegg.com/hc/en-us/articles/115003890728-Content-Security-Policy-CSP-',\n    'https://www.crazyegg.com/help/',\n  ],\n  directives: {\n    'script-src': ['https://script.crazyegg.com'],\n    'style-src': [\"'unsafe-inline'\"],\n    'connect-src': ['https://crazyegg.com'],\n    'img-src': ['https://crazyegg.com'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Crazy Egg verified from official CSP documentation. Requires script.crazyegg.com for tracking scripts and crazyegg.com for data collection. Heatmap overlays may require 'unsafe-inline' styles for dynamic visualization. Recording features may need additional permissions.\",\n  aliases: ['crazyegg'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Divi = defineServiceInternal({\n  id: 'divi',\n  name: 'Divi',\n  category: ServiceCategory.OTHER,\n  description: 'WordPress theme and visual page builder by Elegant Themes',\n  website: 'https://www.elegantthemes.com/gallery/divi/',\n  officialDocs: [\n    'https://www.elegantthemes.com/documentation/divi/',\n    'https://github.com/elegantthemes/create-divi-extension/issues/328',\n  ],\n  directives: {\n    'script-src': ['https://elegantthemes.com', \"'unsafe-inline'\", \"'unsafe-eval'\"],\n    'style-src': ['https://elegantthemes.com', \"'unsafe-inline'\"],\n    'worker-src': ['blob:'],\n    'connect-src': ['https://elegantthemes.com'],\n    'img-src': ['https://elegantthemes.com', 'data:'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Divi verified from GitHub issues and community reports. No official CSP documentation available. Known CSP compatibility issues - requires 'unsafe-inline' and 'unsafe-eval' for theme builder functionality. Worker-src blob: needed for bundle.js. Theme updates and third-party modules may need additional domains. Consider relaxed CSP for Divi pages.\",\n  aliases: ['divi-theme', 'elegant-themes'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Elasticsearch = defineServiceInternal({\n  id: 'elasticsearch',\n  name: 'Elasticsearch',\n  category: ServiceCategory.OTHER,\n  description: 'Distributed search and analytics engine with Kibana visualization',\n  website: 'https://www.elastic.co/elasticsearch/',\n  officialDocs: [\n    'https://www.elastic.co/guide/en/kibana/current/Security-production-considerations.html',\n    'https://www.elastic.co/guide/en/kibana/current/settings.html',\n  ],\n  directives: {\n    'script-src': [\"'unsafe-eval'\", \"'self'\"],\n    'worker-src': ['blob:', \"'self'\"],\n    'style-src': [\"'unsafe-inline'\", \"'self'\"],\n    'connect-src': ['https://*.elastic.co'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Elasticsearch/Kibana verified from official security documentation. Kibana uses CSP strict mode (csp.strict: true) to block browsers that don't enforce basic CSP. Requires 'unsafe-eval' and 'unsafe-inline' for functionality. Self-hosted instances need custom domain configuration. Elastic Cloud uses cluster-specific subdomains.\",\n  aliases: ['elastic-search', 'kibana'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Elementor = defineServiceInternal({\n  id: 'elementor',\n  name: 'Elementor',\n  category: ServiceCategory.OTHER,\n  description: 'WordPress website builder and page builder plugin',\n  website: 'https://elementor.com/',\n  officialDocs: [\n    'https://elementor.com/help/requirements/',\n    'https://github.com/elementor/elementor/issues/15192',\n  ],\n  directives: {\n    'script-src': ['https://elementor.com', \"'unsafe-inline'\"],\n    'frame-ancestors': [\"'self'\"],\n    'connect-src': ['https://my.elementor.com', 'https://api.elementor.com'],\n    'img-src': ['https://elementor.com', 'data:'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Elementor verified from system requirements and GitHub issues. Known CSP compatibility issues - requires 'unsafe-inline' for dynamic scripts. frame-ancestors must be 'self' (not 'none') for editor preview iframe. Pro version and widget libraries may need additional domains. Consider disabling strict CSP for Elementor pages.\",\n  aliases: ['elementor-wordpress'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GoogleOptimize = defineServiceInternal({\n  id: 'google-optimize',\n  name: 'Google Optimize',\n  category: ServiceCategory.OTHER,\n  description: \"Google's A/B testing and website optimization platform (deprecated September 2023)\",\n  website: 'https://optimize.google.com/',\n  officialDocs: [\n    'https://support.google.com/optimize/answer/7359264',\n    'https://developers.google.com/optimize/',\n  ],\n  directives: {\n    'script-src': ['https://www.googleoptimize.com'],\n    'connect-src': ['https://www.googleoptimize.com'],\n  },\n  requiresDynamic: true,\n  notes:\n    'Google Optimize service was DEPRECATED on September 30, 2023. Official documentation no longer maintained. Historical CSP configuration for legacy implementations only. Migrate to Google Analytics 4 experiments or other A/B testing platforms.',\n  aliases: ['google-optimize-360'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Klevu = defineServiceInternal({\n  id: 'klevu',\n  name: 'Klevu',\n  category: ServiceCategory.OTHER,\n  description: 'AI-powered search and discovery platform for e-commerce',\n  website: 'https://www.klevu.com/',\n  officialDocs: [\n    'https://docs.klevu.com/',\n    'https://github.com/klevultd/frontend-sdk',\n    'https://www.klevu.com/gdpr/',\n  ],\n  directives: {\n    'script-src': ['https://js.klevu.com', 'https://*.ksearchnet.com'],\n    'connect-src': ['https://*.klevu.com', 'https://*.ksearchnet.com'],\n    'img-src': ['https://*.klevu.com', 'https://*.ksearchnet.com'],\n    'style-src': ['https://*.klevu.com', 'https://*.ksearchnet.com'],\n  },\n  requiresDynamic: true,\n  notes:\n    'Klevu verified from official documentation and GDPR policy. Uses wildcard domains *.klevu.com and *.ksearchnet.com for CDN, API endpoints, analytics, and search services. Key domains include js.klevu.com, stats.klevu.com, and customer-specific *.ksearchnet.com endpoints.',\n  aliases: ['klevu-search'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-05T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Optimizely = defineServiceInternal({\n  id: 'optimizely',\n  name: 'Optimizely',\n  category: ServiceCategory.OTHER,\n  description: 'A/B testing and experimentation platform for digital optimization',\n  website: 'https://www.optimizely.com/',\n  officialDocs: [\n    'https://docs.developers.optimizely.com/web/docs/content-security-policy',\n    'https://docs.developers.optimizely.com/',\n  ],\n  directives: {\n    'script-src': ['https://cdn.optimizely.com'],\n    'style-src': [\"'unsafe-inline'\"],\n    'connect-src': ['https://logx.optimizely.com', 'https://p13nlog.dz.optimizely.com'],\n    'img-src': ['https://cdn.optimizely.com'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Optimizely verified from official CSP documentation. Requires cdn.optimizely.com for JavaScript SDK, logx.optimizely.com and p13nlog.dz.optimizely.com for event tracking. Experiment variations may require 'unsafe-inline' for dynamic style modifications. Custom events tracking needs additional connect sources.\",\n  aliases: ['optimizely-web'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Swiftype = defineServiceInternal({\n  id: 'swiftype',\n  name: 'Swiftype',\n  category: ServiceCategory.OTHER,\n  description: 'Search platform for websites (now part of Elastic Enterprise Search)',\n  website: 'https://swiftype.com/',\n  officialDocs: [\n    'https://swiftype.com/documentation/',\n    'https://www.elastic.co/guide/en/enterprise-search/current/index.html',\n    'https://swiftype.com/documentation/site-search/overview',\n  ],\n  directives: {\n    'script-src': ['https://s.swiftypecdn.com'],\n    'connect-src': [\n      'https://search-api.swiftype.com',\n      'https://api.swiftype.com',\n      'https://*.api.swiftype.com',\n    ],\n    'img-src': ['https://ma.swiftypecdn.com'],\n  },\n  notes:\n    'Swiftype verified from official documentation. Uses s.swiftypecdn.com for JavaScript embed, search-api.swiftype.com and api.swiftype.com for API calls. Service now part of Elastic Enterprise Search. Legacy implementations may still require these domains.',\n  aliases: ['swiftype-search'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-05T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Teachable = defineServiceInternal({\n  id: 'teachable',\n  name: 'Teachable',\n  category: ServiceCategory.OTHER,\n  description: 'Online course creation and hosting platform',\n  website: 'https://teachable.com/',\n  officialDocs: [\n    'https://support.teachable.com/hc/en-us/articles/222637507-Embed-Forms-and-Other-Content-into-Lessons',\n    'https://support.teachable.com/hc/en-us/articles/219090947-Teachable-s-API',\n  ],\n  directives: {\n    'script-src': ['https://teachable.com', 'https://*.teachable.com'],\n    'frame-src': ['https://teachable.com', 'https://*.teachable.com'],\n    'connect-src': ['https://api.teachable.com'],\n  },\n  notes:\n    'Teachable course platform configuration based on general embedding documentation. Official CSP documentation not available. Course embeds and forms require frame-src permissions. Custom domains may need additional CSP entries. Supports embedding forms and materials via HTML/JavaScript code snippets.',\n  aliases: ['teachable-courses'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Thinkific = defineServiceInternal({\n  id: 'thinkific',\n  name: 'Thinkific',\n  category: ServiceCategory.OTHER,\n  description: 'Online course creation and student management platform',\n  website: 'https://www.thinkific.com/',\n  officialDocs: [\n    'https://developers.thinkific.com/api/api-documentation/',\n    'https://support.thinkific.com/hc/en-us/articles/360030350314-Thinkific-API',\n  ],\n  directives: {\n    'script-src': ['https://thinkific.com', 'https://*.thinkific.com'],\n    'frame-src': ['https://thinkific.com', 'https://*.thinkific.com'],\n    'connect-src': ['https://api.thinkific.com'],\n  },\n  notes:\n    'Thinkific course platform configuration based on API and general documentation. Official CSP documentation not readily available. Course player requires frame embedding permissions. White-label solutions may use custom domains requiring additional CSP entries.',\n  aliases: ['thinkific-courses'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Vwo = defineServiceInternal({\n  id: 'vwo',\n  name: 'VWO',\n  category: ServiceCategory.OTHER,\n  description: 'A/B testing and conversion optimization platform',\n  website: 'https://vwo.com/',\n  officialDocs: [\n    'https://help.vwo.com/hc/en-us/articles/360033730594-Content-Security-Policy-CSP-and-VWO',\n    'https://developers.vwo.com/',\n  ],\n  directives: {\n    'script-src': ['https://dev.visualwebsiteoptimizer.com'],\n    'style-src': [\"'unsafe-inline'\"],\n    'connect-src': ['https://dev.visualwebsiteoptimizer.com'],\n    'img-src': ['https://dev.visualwebsiteoptimizer.com'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"VWO verified from official CSP documentation. A/B testing platform requires dev.visualwebsiteoptimizer.com for scripts and API calls. Test variations may require 'unsafe-inline' styles for dynamic content modifications. Heatmaps and session recordings may need additional permissions.\",\n  aliases: ['visual-website-optimizer'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Wordpress = defineServiceInternal({\n  id: 'wordpress',\n  name: 'WordPress',\n  category: ServiceCategory.OTHER,\n  description: 'Open-source content management system and blogging platform',\n  website: 'https://wordpress.org',\n  officialDocs: [\n    'https://developer.wordpress.org/',\n    'https://wordpress.org/plugins/tags/content-security-policy/',\n    'https://wordpress.org/plugins/cookies-and-content-security-policy/',\n    'https://wpvip.com/blog/content-security-policy-guide/',\n  ],\n  directives: {\n    'script-src': ['https://w.org', 'https://s.w.org'],\n    'connect-src': ['https://api.wordpress.org'],\n    'img-src': ['https://s.w.org'],\n  },\n  notes:\n    \"WordPress verified from official plugin directory and VIP documentation. Multiple CSP plugins available: Content Security Policy Manager, Cookies and Content Security Policy, HTTP Headers. Admin area favors inline scripts - may require 'unsafe-inline'. Themes/plugins can break with strict CSP. Different policies for admin vs frontend recommended. Extensive testing required after CSP implementation.\",\n  aliases: ['wp'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const ApplePay = defineServiceInternal({\n  id: 'apple-pay',\n  name: 'Apple Pay',\n  category: ServiceCategory.PAYMENT,\n  description: \"Apple's digital payment and digital wallet service\",\n  website: 'https://developer.apple.com/apple-pay/',\n  officialDocs: [\n    'https://developer.apple.com/documentation/applepayontheweb/apple-pay-js-api',\n    'https://developer.apple.com/documentation/applepayontheweb/displaying-apple-pay-buttons-using-javascript',\n  ],\n  directives: {\n    'script-src': ['https://applepay.cdn-apple.com'],\n    'connect-src': ['https://apple-pay-gateway.apple.com'],\n    'frame-src': ['https://applepay.cdn-apple.com'],\n  },\n  notes:\n    'Apple Pay verified from official JavaScript API documentation. Requires applepay.cdn-apple.com for SDK and iframe content, apple-pay-gateway.apple.com for merchant validation. SDK requires crossorigin attribute. Domain verification through Apple Developer Portal required. TLS 1.2+ with specific cipher suites mandatory.',\n  aliases: ['applepay'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GooglePay = defineServiceInternal({\n  id: 'google-pay',\n  name: 'Google Pay',\n  category: ServiceCategory.PAYMENT,\n  description: \"Google's digital payment platform and digital wallet\",\n  website: 'https://pay.google.com',\n  officialDocs: [\n    'https://developers.google.com/pay/api/web/overview',\n    'https://developers.google.com/tag-platform/security/guides/csp',\n  ],\n  directives: {\n    'script-src': ['https://pay.google.com'],\n    'connect-src': ['https://payments.google.com', 'https://googleapis.com'],\n    'img-src': ['https://www.gstatic.com', 'https://cdn.firebasestudio.dev'],\n  },\n  requiresNonce: true,\n  notes:\n    \"Google Pay verified from official API overview and Google's CSP guide. Requires pay.google.com for JavaScript SDK, googleapis.com for API connections, and gstatic.com for static assets. Google recommends strict CSP with nonces for security. Firebase Studio CDN used for UI elements.\",\n  aliases: ['googlepay', 'gpay'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Paypal = defineServiceInternal({\n  id: 'paypal',\n  name: 'PayPal',\n  category: ServiceCategory.PAYMENT,\n  description: 'Online payment service that allows payments and money transfers',\n  website: 'https://paypal.com',\n  officialDocs: [\n    'https://developer.paypal.com/sdk/js/csp/',\n    'https://developer.paypal.com/docs/checkout/reference/security/',\n    'https://developer.paypal.com/docs/checkout/integration-features/content-security-policy/',\n  ],\n  directives: {\n    'script-src': [\n      'https://www.paypal.com',\n      'https://*.paypal.com',\n      'https://*.paypalobjects.com',\n      'https://*.venmo.com',\n    ],\n    'frame-src': [\n      'https://www.paypal.com',\n      'https://*.paypal.com',\n      'https://*.paypalobjects.com',\n      'https://*.venmo.com',\n    ],\n    'connect-src': [\n      'https://www.paypal.com',\n      'https://api.paypal.com',\n      'https://*.paypal.com',\n      'https://*.paypalobjects.com',\n      'https://*.venmo.com',\n      'https://*.braintreegateway.com',\n      'https://*.braintree-api.com',\n    ],\n    'img-src': [\n      'https://www.paypalobjects.com',\n      'https://t.paypal.com',\n      'https://*.paypal.com',\n      'https://*.paypalobjects.com',\n      'https://*.venmo.com',\n    ],\n    'style-src': [\n      'https://*.paypal.com',\n      'https://*.paypalobjects.com',\n      'https://*.venmo.com',\n      \"'unsafe-inline'\",\n    ],\n  },\n  requiresDynamic: true,\n  requiresNonce: true,\n  notes:\n    'PayPal verified against official CSP documentation. Includes JavaScript SDK, Checkout, Fastlane, and Venmo integration domains. Supports nonce-based CSP (data-csp-nonce attribute). Includes Braintree gateway domains for advanced payment processing. FraudNet integration may require additional domains.',\n  aliases: ['paypal-checkout'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Shopify = defineServiceInternal({\n  id: 'shopify',\n  name: 'Shopify',\n  category: ServiceCategory.PAYMENT,\n  description: 'E-commerce platform with integrated payment processing',\n  website: 'https://shopify.com',\n  officialDocs: [\n    'https://shopify.dev/docs/apps/build/security/set-up-iframe-protection',\n    'https://shopify.dev/docs/storefronts/headless/hydrogen/content-security-policy',\n    'https://shopify.dev/docs/api/hydrogen/2024-10/utilities/createcontentsecuritypolicy',\n  ],\n  directives: {\n    'script-src': ['https://cdn.shopify.com', 'https://*.shopify.com'],\n    'connect-src': ['https://checkout.shopify.com', 'https://shop.app', 'https://*.shopify.com'],\n    'frame-ancestors': ['https://*.myshopify.com', 'https://admin.shopify.com'],\n    'img-src': ['https://cdn.shopify.com', 'https://*.shopify.com'],\n  },\n  requiresDynamic: true,\n  requiresNonce: true,\n  notes:\n    'Shopify verified from official developer documentation. Requires dynamic frame-ancestors per shop domain (https://[shop].myshopify.com https://admin.shopify.com). Embedded apps must implement shop-specific CSP headers. Hydrogen storefronts use script nonces and include cdn.shopify.com by default. App Store submission requires proper iframe protection with shop domain verification.',\n  aliases: ['shopify-checkout'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Square = defineServiceInternal({\n  id: 'square',\n  name: 'Square',\n  category: ServiceCategory.PAYMENT,\n  description: 'Square payment processing and commerce platform',\n  website: 'https://squareup.com',\n  officialDocs: [\n    'https://developer.squareup.com/forums/t/whitelisted-square-domains-for-content-security-policy-web-payments-sdk/8186',\n    'https://developer.squareup.com/forums/t/content-security-policy-csp-questions-for-web-payments-sdk/11628',\n  ],\n  directives: {\n    'script-src': ['https://js.squareup.com'],\n    'connect-src': ['https://connect.squareup.com', 'https://pci-connect.squareup.com'],\n    'frame-src': ['https://js.squareup.com'],\n  },\n  notes:\n    'Square verified from developer forums discussing CSP requirements. Web Payments SDK requires HTTPS and CSP headers as of October 2025. Known CSP gaps in official documentation - developers report issues with 3DS verification frames and undocumented domains like geoissuer.card. CSP implementation requires testing to identify all needed domains.',\n  aliases: ['square-payments'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Stripe = defineServiceInternal({\n  id: 'stripe',\n  name: 'Stripe',\n  category: ServiceCategory.PAYMENT,\n  description:\n    'Online payment processing platform for internet businesses including Stripe.js, Checkout, Connect, and 3D Secure authentication',\n  website: 'https://stripe.com',\n  officialDocs: [\n    'https://stripe.com/docs/js',\n    'https://stripe.com/docs/security/guide#content-security-policy',\n    'https://stripe.com/docs/security/guide',\n  ],\n  directives: {\n    'script-src': [\n      'https://js.stripe.com',\n      'https://*.js.stripe.com',\n      'https://maps.googleapis.com',\n    ],\n    'frame-src': ['https://js.stripe.com', 'https://*.js.stripe.com', 'https://hooks.stripe.com'],\n    'connect-src': [\n      'https://api.stripe.com',\n      'https://maps.googleapis.com',\n      'https://q.stripe.com',\n      'https://errors.stripe.com',\n    ],\n    'img-src': ['https://*.stripe.com'],\n  },\n  notes:\n    'Stripe.js v3 library for secure payment processing. Includes domains for Google Maps (used in payment forms), error reporting (q.stripe.com), and wildcard subdomains for CDN delivery.',\n  aliases: ['stripe-js'],\n  lastUpdated: '2025-07-03T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Woocommerce = defineServiceInternal({\n  id: 'woocommerce',\n  name: 'WooCommerce',\n  category: ServiceCategory.PAYMENT,\n  description: 'WordPress-based e-commerce platform and payment processing',\n  website: 'https://woocommerce.com',\n  officialDocs: [\n    'https://developer.woocommerce.com/',\n    'https://woocommerce.com/document/woocommerce-rest-api/',\n    'https://wordpress.org/support/topic/using-a-strict-content-security-policy-while-allowing-woocommerce-plugin-to-work/',\n  ],\n  directives: {\n    'script-src': ['https://woocommerce.com', \"'unsafe-inline'\"],\n    'connect-src': ['https://woocommerce.com', 'https://checkout.woocommerce.com'],\n    'style-src': [\"'unsafe-inline'\"],\n  },\n  requiresDynamic: true,\n  notes:\n    \"WooCommerce verified from community documentation and WordPress support forums. E-commerce plugin with known CSP compatibility challenges - may require 'unsafe-inline' for checkout functionality. WordPress CSP plugins like 'Cookies and Content Security Policy' can help manage WooCommerce CSP requirements. Implementation typically requires WordPress-level CSP configuration rather than dedicated WooCommerce CSP plugin.\",\n  aliases: ['woo'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Notion = defineServiceInternal({\n  id: 'notion',\n  name: 'Notion',\n  category: ServiceCategory.OTHER,\n  description: 'All-in-one workspace for notes, docs, and collaboration',\n  website: 'https://www.notion.so/',\n  officialDocs: [\n    'https://developers.notion.com/',\n    'https://www.notion.so/help/embed-and-connect-other-apps',\n  ],\n  directives: {\n    'script-src': ['https://notion.so', 'https://www.notion.so'],\n    'frame-src': ['https://notion.so', 'https://www.notion.so'],\n  },\n  notes:\n    \"Notion verified from official embedding documentation. Blocks iframe embedding with X-Frame-Options: sameorigin and CSP frame-ancestors 'self' https://mail.notion.so only. Third-party services like notioniframe.com available for workarounds. API has limited embed block types in public API. Notion uses Iframely service for embedding 1,900+ external domains.\",\n  aliases: ['notion-workspace'],\n  lastUpdated: '2024-06-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Discord = defineServiceInternal({\n  id: 'discord',\n  name: 'Discord',\n  category: ServiceCategory.SOCIAL,\n  description: 'Discord chat platform with widget embeds and invites',\n  website: 'https://discord.com',\n  officialDocs: [\n    'https://discord.com/developers/docs/resources/widget',\n    'https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks',\n  ],\n  directives: {\n    'script-src': ['https://discord.com'],\n    'frame-src': ['https://discord.com'],\n    'img-src': ['https://cdn.discordapp.com'],\n  },\n  notes:\n    'Discord verified from official widget documentation. Widget doesn\\'t set CSP headers causing embedding problems. Activities require Discord proxy with URL mapping to bypass CSP restrictions. Chrome supports credentialless=\"true\" but Firefox doesn\\'t. Community reports CSP compatibility issues with Activities - proxy server workarounds needed.',\n  aliases: ['discord-widget'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Facebook = defineServiceInternal({\n  id: 'facebook',\n  name: 'Facebook',\n  category: ServiceCategory.SOCIAL,\n  description:\n    'Facebook social media platform integration including Like buttons, Comments, and Login',\n  website: 'https://facebook.com',\n  officialDocs: [\n    'https://developers.facebook.com/docs/javascript/quickstart/',\n    'https://developers.facebook.com/docs/plugins/',\n  ],\n  directives: {\n    'script-src': ['https://connect.facebook.net'],\n    'frame-src': ['https://www.facebook.com'],\n    'connect-src': ['https://www.facebook.com', 'https://connect.facebook.net'],\n    'img-src': ['https://www.facebook.com', 'https://scontent.xx.fbcdn.net'],\n  },\n  notes:\n    'Facebook SDK for JavaScript, Like buttons, Comments widget. Note: Official CSP documentation from Facebook is currently inaccessible - many developer pages return errors. Configuration verified from community sources and Stack Overflow discussions.',\n  aliases: ['facebook-sdk', 'fb'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-05T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Instagram = defineServiceInternal({\n  id: 'instagram',\n  name: 'Instagram',\n  category: ServiceCategory.SOCIAL,\n  description: 'Instagram photo and video sharing platform integration for embedded posts',\n  website: 'https://instagram.com',\n  officialDocs: [\n    'https://developers.facebook.com/docs/instagram-basic-display-api/',\n    'https://developers.facebook.com/docs/instagram-api/',\n  ],\n  directives: {\n    'script-src': ['https://platform.instagram.com'],\n    'frame-src': ['https://www.instagram.com'],\n    'connect-src': ['https://www.instagram.com'],\n    'img-src': [\n      'https://scontent.cdninstagram.com',\n      'https://instagram.com',\n      'https://www.instagram.com',\n    ],\n  },\n  notes:\n    'Instagram verified from developer community discussions and Stack Overflow. Requires platform.instagram.com for embeds.js script loading. Official Meta documentation unavailable during verification due to site issues. Known CSP race condition with async script loading - blockquote element must be in DOM before script execution.',\n  aliases: ['instagram-embed'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Linkedin = defineServiceInternal({\n  id: 'linkedin',\n  name: 'LinkedIn',\n  category: ServiceCategory.SOCIAL,\n  description:\n    'LinkedIn professional networking platform integration for share buttons and company follow',\n  website: 'https://linkedin.com',\n  officialDocs: [\n    'https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/share-on-linkedin',\n    'https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/plugins/share-plugin',\n    'https://www.linkedin.com/developers/tools',\n  ],\n  directives: {\n    'script-src': ['https://platform.linkedin.com', 'https://www.linkedin.com'],\n    'frame-src': ['https://www.linkedin.com'],\n    'connect-src': ['https://www.linkedin.com'],\n    'img-src': ['https://media.licdn.com'],\n  },\n  notes:\n    'LinkedIn verified from Microsoft Learn documentation and developer resources. Requires domain configuration in LinkedIn Developer Console for Valid SDK Domains. JavaScript API requires specific domain allowlisting for security. Share plugin and company follow buttons use platform.linkedin.com and www.linkedin.com domains.',\n  aliases: ['linkedin-widgets'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Pinterest = defineServiceInternal({\n  id: 'pinterest',\n  name: 'Pinterest',\n  category: ServiceCategory.SOCIAL,\n  description: 'Pinterest social media platform with Pin It buttons and widgets',\n  website: 'https://pinterest.com',\n  officialDocs: [\n    'https://developers.pinterest.com/docs/web-features/buttons/',\n    'https://help.pinterest.com/en/business/article/save-button',\n    'https://developers.pinterest.com/tools/widget-builder/',\n  ],\n  directives: {\n    'script-src': ['https://assets.pinterest.com', 'https://log.pinterest.com'],\n    'frame-src': ['https://assets.pinterest.com', 'https://www.pinterest.com'],\n    'img-src': [\n      'https://i.pinimg.com',\n      'https://assets.pinterest.com',\n      'https://s.pinimg.com',\n      'https://log.pinterest.com',\n      'data:',\n    ],\n    'connect-src': ['https://assets.pinterest.com', 'https://log.pinterest.com'],\n  },\n  notes:\n    \"Pinterest verified from developer community and CSP discussions. Requires assets.pinterest.com for pinit.js script, log.pinterest.com for analytics/logging. Uses base64 images (data: URIs) for Pinterest logo. Known CSP complexity due to 'weird things' the JavaScript does during execution.\",\n  aliases: ['pinterest-widget'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Slack = defineServiceInternal({\n  id: 'slack',\n  name: 'Slack',\n  category: ServiceCategory.SOCIAL,\n  description: 'Slack workspace communication platform with embeds and integrations',\n  website: 'https://slack.com',\n  officialDocs: [\n    'https://api.slack.com/docs/slack-button',\n    'https://api.slack.com/legacy/slack-button',\n  ],\n  directives: {\n    'script-src': ['https://platform.slack-edge.com'],\n    'frame-src': ['https://slack.com'],\n    'img-src': ['https://slack.com', 'https://platform.slack-edge.com'],\n  },\n  notes:\n    'Slack buttons and workspace embeds. Official CSP documentation not readily available - configuration based on general API documentation. platform.slack-edge.com serves embed scripts, slack.com for iframe content.',\n  aliases: ['slack-button'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Snapchat = defineServiceInternal({\n  id: 'snapchat',\n  name: 'Snapchat',\n  category: ServiceCategory.SOCIAL,\n  description: 'Snapchat social media platform with Snap Pixel and embeds',\n  website: 'https://snapchat.com',\n  officialDocs: [\n    'https://businesshelp.snapchat.com/s/article/pixel-direct-implementation',\n    'https://developers.snap.com/api/marketing-api/Ads-API/snap-pixel',\n  ],\n  directives: {\n    'script-src': ['https://sc-static.net'],\n    'frame-src': [\n      'https://tr.snapchat.com',\n      'https://tr-shadow.snapchat.com',\n      'https://snap.adbrn.com',\n    ],\n    'connect-src': ['https://tr.snapchat.com', 'https://tr-shadow.snapchat.com'],\n    'form-action': ['https://tr.snapchat.com'],\n  },\n  notes:\n    'Snapchat verified from business help and third-party documentation (RudderStack). Snap Pixel requires sc-static.net for SDK loading, tr.snapchat.com for tracking. Cross-device impact measurement for advertising campaigns. Official Snapchat documentation sites experienced loading issues during verification.',\n  aliases: ['snapchat-pixel', 'snap-pixel'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Tiktok = defineServiceInternal({\n  id: 'tiktok',\n  name: 'TikTok',\n  category: ServiceCategory.SOCIAL,\n  description: 'TikTok social media platform with video embeds and tracking',\n  website: 'https://tiktok.com',\n  officialDocs: [\n    'https://developers.tiktok.com/doc/embed-player',\n    'https://developers.tiktok.com/doc/embed-creator-profiles',\n    'https://ads.tiktok.com/help/article/get-started-pixel',\n  ],\n  directives: {\n    'script-src': [\n      'https://www.tiktok.com',\n      'https://sf16-website-login.neutral.ttwstatic.com',\n      'https://analytics.tiktok.com',\n    ],\n    'frame-src': ['https://www.tiktok.com'],\n    'connect-src': ['https://analytics.tiktok.com', 'https://www.tiktok.com'],\n    'img-src': [\n      'https://www.tiktok.com',\n      'https://p16-sign-sg.tiktokcdn.com',\n      'https://sf16-website-login.neutral.ttwstatic.com',\n    ],\n  },\n  notes:\n    'TikTok verified from developer documentation and ads platform guides. Requires www.tiktok.com for embed.js script and iframe embeds. TikTok Ads Manager mentions CSP considerations when setting up pixel. oEmbed API available for video embedding. Player uses postMessage communication.',\n  aliases: ['tiktok-pixel'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Twitter = defineServiceInternal({\n  id: 'twitter',\n  name: 'Twitter',\n  category: ServiceCategory.SOCIAL,\n  description: 'Twitter social media platform integration for embedded tweets and buttons',\n  website: 'https://twitter.com',\n  officialDocs: [\n    'https://developer.x.com/en/docs/x-for-websites/embedded-tweets/guides/cms-best-practices',\n    'https://developer.x.com/en/docs/x-for-websites',\n  ],\n  directives: {\n    'script-src': ['https://platform.twitter.com'],\n    'frame-src': ['https://platform.twitter.com'],\n    'connect-src': ['https://api.twitter.com'],\n    'img-src': ['https://pbs.twimg.com', 'https://abs.twimg.com'],\n    'style-src': ['https://platform.twitter.com'],\n  },\n  notes:\n    \"Twitter/X verified from official developer documentation. Requires platform.twitter.com for widgets.js and iframe content. CSP parameter 'csp=on' available to disable features that might trigger CSP warnings. Supports embedded tweets, timelines, and follow buttons with oEmbed API integration.\",\n  aliases: ['twitter-widgets', 'x'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Whatsapp = defineServiceInternal({\n  id: 'whatsapp',\n  name: 'WhatsApp',\n  category: ServiceCategory.SOCIAL,\n  description: 'WhatsApp messaging platform with chat widgets and business integrations',\n  website: 'https://whatsapp.com',\n  officialDocs: [\n    'https://developers.facebook.com/docs/whatsapp/',\n    'https://business.whatsapp.com/products/business-platform',\n  ],\n  directives: {\n    'script-src': ['https://web.whatsapp.com'],\n    'frame-src': ['https://web.whatsapp.com'],\n    'connect-src': ['https://web.whatsapp.com'],\n  },\n  notes: 'WhatsApp Business chat widgets and embeds',\n  aliases: ['whatsapp-business', 'whatsapp-chat'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Browserstack = defineServiceInternal({\n  id: 'browserstack',\n  name: 'BrowserStack',\n  category: ServiceCategory.TESTING,\n  description: 'Cross-browser testing platform for web and mobile applications',\n  website: 'https://www.browserstack.com',\n  officialDocs: [\n    'https://www.browserstack.com/docs/percy/common-issue/handling-csp',\n    'https://www.browserstack.com/docs/enterprise/domain-verification',\n    'https://www.browserstack.com/docs/live/local-testing',\n  ],\n  directives: {\n    'script-src': ['https://www.browserstack.com'],\n    'connect-src': ['https://api.browserstack.com', 'https://hub-cloud.browserstack.com'],\n    'frame-src': ['https://www.browserstack.com'],\n  },\n  notes:\n    'BrowserStack verified from official documentation. Testing platform recommends disabling CSP for precise screenshots, then re-enabling for security. Enterprise domain controls available for IP whitelisting. Iframe content capture may require CORS header adjustments. Official CSP domain list should be requested from BrowserStack support.',\n  aliases: ['bs'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Cypress = defineServiceInternal({\n  id: 'cypress',\n  name: 'Cypress',\n  category: ServiceCategory.TESTING,\n  description: 'End-to-end testing framework for web applications',\n  website: 'https://www.cypress.io',\n  officialDocs: [\n    'https://docs.cypress.io/app/references/content-security-policy',\n    'https://docs.cypress.io/guides/guides/content-security-policy',\n    'https://docs.cypress.io/app/references/experiments',\n  ],\n  directives: {\n    'script-src': ['https://download.cypress.io', \"'unsafe-eval'\"],\n    'connect-src': ['https://api.cypress.io', 'https://dashboard.cypress.io'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Cypress verified from official documentation. Testing framework that requires script injection for DOM interaction. By default, Cypress strips CSP headers to prevent blocking. Use experimentalCspAllowList configuration for CSP testing. Requires 'unsafe-eval' for test execution. Document.domain injection discontinued in v14.0.0 - use cy.origin() for cross-origin testing.\",\n  aliases: ['cy'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GhostInspector = defineServiceInternal({\n  id: 'ghost-inspector',\n  name: 'Ghost Inspector',\n  category: ServiceCategory.TESTING,\n  description: 'Automated browser testing and website monitoring service',\n  website: 'https://ghostinspector.com',\n  officialDocs: [\n    'https://docs.ghostinspector.com/test-running-ip-addresses/',\n    'https://docs.ghostinspector.com/test-settings/',\n    'https://docs.ghostinspector.com/faq/',\n  ],\n  directives: {\n    'script-src': ['https://ghostinspector.com'],\n    'connect-src': ['https://api.ghostinspector.com', 'https://ghostinspector.com'],\n  },\n  notes:\n    \"Ghost Inspector verified from official documentation. Automated testing platform provides IP addresses for firewall whitelisting. Tests originate from specific documented IP ranges. User agent appends 'Ghost Inspector' for identification. No specific CSP domain documentation found - contact Ghost Inspector support for current CSP requirements.\",\n  aliases: ['ghost-test'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Percy = defineServiceInternal({\n  id: 'percy',\n  name: 'Percy',\n  category: ServiceCategory.TESTING,\n  description: 'Visual testing and review platform for web applications',\n  website: 'https://percy.io',\n  officialDocs: [\n    'https://www.browserstack.com/docs/percy/common-issue/handling-csp',\n    'https://docs.percy.io/docs/enterprise-firewalls',\n    'https://docs.percy.io/docs/capturing-multiple-asset-hosts-cli',\n  ],\n  directives: {\n    'script-src': ['https://percy.io'],\n    'connect-src': ['https://percy.io', 'https://api.percy.io'],\n  },\n  notes:\n    'Percy verified from official BrowserStack documentation. Visual testing platform (now part of BrowserStack) recommends temporarily disabling CSP during screenshot capture for accurate results, then re-enabling for security. Requires outbound access to percy.io domain. Use allowed-hostnames config for multi-domain asset capture. CI environment must allow outbound internet access to percy.io.',\n  aliases: ['percy-visual'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const SauceLabs = defineServiceInternal({\n  id: 'sauce-labs',\n  name: 'Sauce Labs',\n  category: ServiceCategory.TESTING,\n  description: 'Cloud-based testing platform for web and mobile applications',\n  website: 'https://saucelabs.com',\n  officialDocs: [\n    'https://docs.saucelabs.com/basics/data-center-endpoints/',\n    'https://docs.saucelabs.com/secure-connections/sauce-connect/security-authentication/',\n    'https://wiki.saucelabs.com/display/DOCS/Whitelisted+Domains+for+Sauce+Connect+Proxy',\n  ],\n  directives: {\n    'script-src': ['https://saucelabs.com', 'https://*.saucelabs.com'],\n    'connect-src': [\n      'https://api.saucelabs.com',\n      'https://ondemand.saucelabs.com',\n      'https://*.saucelabs.com',\n      'https://*.miso.saucelabs.com',\n    ],\n  },\n  notes:\n    'Sauce Labs verified from official documentation. Multi-data-center testing platform with regional endpoints (US-West-1, US-East-1, EU-Central-1). Requires Sauce Connect Proxy domains (*.miso.saucelabs.com) for tunnel connections. Recommends hostname whitelisting over IP addresses. Official CSP-specific guidance should be requested from Sauce Labs support.',\n  aliases: ['saucelabs'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Bigbluebutton = defineServiceInternal({\n  id: 'bigbluebutton',\n  name: 'BigBlueButton',\n  category: ServiceCategory.VIDEO,\n  description: 'Open-source web conferencing system for distance education',\n  website: 'https://bigbluebutton.org',\n  officialDocs: ['https://docs.bigbluebutton.org/', 'https://docs.bigbluebutton.org/dev/api.html'],\n  directives: {\n    'script-src': ['https://*.bigbluebutton.org'],\n    'frame-src': ['https://*.bigbluebutton.org'],\n    'connect-src': ['https://*.bigbluebutton.org', 'wss://*.bigbluebutton.org'],\n  },\n  notes:\n    'BigBlueButton verified from community documentation and GitHub issues. Limited official CSP documentation available. iframe embedding requires SSL for WebRTC (camera, microphone, screen sharing). X-Frame-Options set to SAMEORIGIN by default in Greenlight. iframe needs allow permissions for geolocation, microphone, camera, display-capture. WebSocket connections required for real-time communication. iframe embedding not supported by default - may need provider request.',\n  aliases: ['bbb'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const GoogleMeet = defineServiceInternal({\n  id: 'google-meet',\n  name: 'Google Meet',\n  category: ServiceCategory.VIDEO,\n  description: \"Google's video conferencing and online meeting platform\",\n  website: 'https://meet.google.com',\n  officialDocs: [\n    'https://developers.google.com/meet/',\n    'https://developers.google.com/meet/add-ons',\n  ],\n  directives: {\n    'script-src': ['https://meet.google.com'],\n    'frame-src': ['https://meet.google.com'],\n    'connect-src': ['https://meet.google.com'],\n  },\n  notes:\n    \"Google Meet verified from community documentation. CRITICAL LIMITATION: Google Meet does NOT allow iframe embedding - returns 'meet.google.com refused to connect' errors. No official API/SDK for direct website integration. Must be used in new tab rather than embedded. frame-ancestors CSP directive blocks iframe embedding for security. Google official policy prevents iframe integration.\",\n  aliases: ['gmeet'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const JitsiMeet = defineServiceInternal({\n  id: 'jitsi-meet',\n  name: 'Jitsi Meet',\n  category: ServiceCategory.VIDEO,\n  description: 'Open-source video conferencing platform',\n  website: 'https://meet.jit.si',\n  officialDocs: [\n    'https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-iframe',\n    'https://github.com/jitsi/jitsi-meet/blob/master/doc/api.md',\n  ],\n  directives: {\n    'script-src': ['https://meet.jit.si', \"'unsafe-inline'\"],\n    'style-src': [\"'unsafe-inline'\"],\n    'frame-src': ['https://meet.jit.si'],\n    'connect-src': ['https://meet.jit.si', 'wss://meet.jit.si'],\n    'img-src': ['https:', 'data:'],\n    'media-src': [\"'self'\", 'data:'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Jitsi Meet verified from official iframe API documentation and community forums. CRITICAL SECURITY LIMITATION: Requires 'unsafe-inline' for script-src and style-src - will not function without it. Known CSP security weakness. Nonce implementation discussed but not implemented. WebSocket connections for real-time communication. iframe API well-documented for embedding.\",\n  aliases: ['jitsi'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const MicrosoftTeams = defineServiceInternal({\n  id: 'microsoft-teams',\n  name: 'Microsoft Teams',\n  category: ServiceCategory.VIDEO,\n  description: \"Microsoft's collaboration and video conferencing platform\",\n  website: 'https://teams.microsoft.com',\n  officialDocs: [\n    'https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/tab-requirements',\n    'https://devblogs.microsoft.com/microsoft365dev/action-required-ensure-your-microsoft-teams-apps-are-ready-for-upcoming-domain-changes/',\n    'https://learn.microsoft.com/en-us/answers/questions/1785610/what-domain-do-i-specify-in-my-csp-headers-for-tea',\n  ],\n  directives: {\n    'script-src': ['https://statics.teams.cdn.office.net', 'https://*.teams.microsoft.com'],\n    'frame-src': [\n      'https://teams.microsoft.com',\n      'https://*.teams.microsoft.com',\n      'https://*.teams.microsoft.us',\n      'https://local.teams.office.com',\n    ],\n    'frame-ancestors': [\n      'https://*.cloud.microsoft',\n      'https://teams.microsoft.com',\n      'https://*.teams.microsoft.com',\n      'https://*.teams.microsoft.us',\n      'https://local.teams.office.com',\n      'https://*.office.com',\n      'https://*.officeapps.live.com',\n      'https://*.microsoft.com',\n      'https://onedrive.live.com',\n      'https://*.onedrive.live.com',\n    ],\n    'connect-src': ['https://teams.microsoft.com', 'https://*.teams.microsoft.com'],\n  },\n  notes:\n    'Microsoft Teams verified from official Microsoft Learn documentation. Critical: Teams apps are migrating to *.cloud.microsoft domain by June 2024 - update CSP frame-ancestors to include this domain for future compatibility. Requires TeamsJS library v2.19+ and comprehensive frame-ancestors directive for Microsoft 365 integration across multiple hosting domains.',\n  aliases: ['teams', 'ms-teams'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Twitch = defineServiceInternal({\n  id: 'twitch',\n  name: 'Twitch',\n  category: ServiceCategory.VIDEO,\n  description: 'Twitch live streaming platform for embedded video players and chat',\n  website: 'https://twitch.tv',\n  officialDocs: [\n    'https://dev.twitch.tv/docs/embed/',\n    'https://dev.twitch.tv/docs/embed/video-and-clips/',\n    'https://discuss.dev.twitch.com/t/new-extensions-policy-for-content-security-policy-csp-directives-and-timeline-for-enforcement/33695',\n  ],\n  directives: {\n    'script-src': ['https://player.twitch.tv', 'https://embed.twitch.tv'],\n    'frame-src': ['https://player.twitch.tv', 'https://embed.twitch.tv', 'https://clips.twitch.tv'],\n    'img-src': ['https://static-cdn.jtvnw.net', 'https://clips-media-assets2.twitch.tv'],\n    'connect-src': [\n      'https://gql.twitch.tv',\n      'https://api.twitch.tv',\n      'https://irc-ws.chat.twitch.tv',\n    ],\n  },\n  notes:\n    'Twitch verified from official developer documentation and forums. Requires SSL certificates for embedding domains and parent parameter for domain verification. Extensions use iframe sandboxing with dynamically constructed CSP. CSP policy updated in 2024 for Extensions enforcement. Chat integration requires websocket connections to irc-ws.chat.twitch.tv.',\n  aliases: ['twitch-player'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Vimeo = defineServiceInternal({\n  id: 'vimeo',\n  name: 'Vimeo',\n  category: ServiceCategory.VIDEO,\n  description: 'Vimeo video hosting platform for embedded video players',\n  website: 'https://vimeo.com',\n  officialDocs: [\n    'https://developer.vimeo.com/player/sdk/basics',\n    'https://help.vimeo.com/hc/en-us/articles/12426259908881-How-to-embed-my-video',\n  ],\n  directives: {\n    'frame-src': ['https://player.vimeo.com'],\n    'script-src': ['https://f.vimeocdn.com', 'https://www.gstatic.com'],\n    'img-src': [\n      'https://i.vimeocdn.com',\n      'https://secure-b.vimeocdn.com',\n      'https://f.vimeocdn.com',\n      'https://player.vimeo.com',\n    ],\n    'media-src': ['https://player.vimeo.com'],\n    'connect-src': ['https://player.vimeo.com'],\n  },\n  notes:\n    'Vimeo verified from developer community and GitHub issues. Requires player.vimeo.com for iframe embeds, f.vimeocdn.com for player.module.js and vendor.module.js, gstatic.com for Chromecast. Extensive domain requirements due to various Vimeo subdomains and CDN usage. CSP complexity noted by developers.',\n  aliases: ['vimeo-player'],\n  lastUpdated: '2024-12-29T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Youtube = defineServiceInternal({\n  id: 'youtube',\n  name: 'YouTube',\n  category: ServiceCategory.VIDEO,\n  description: 'Video hosting and embedding service',\n  website: 'https://www.youtube.com/',\n  officialDocs: ['https://developers.google.com/youtube/iframe_api_reference'],\n  directives: {\n    'script-src': ['https://www.youtube.com/iframe_api'],\n    'frame-src': [\n      'https://www.youtube.com/embed/',\n      'http://www.youtube.com/embed/',\n      'https://www.youtube-nocookie.com/embed/',\n    ],\n    'img-src': [\n      'https://i.ytimg.com',\n      'https://i9.ytimg.com',\n      'https://ytimg.googleusercontent.com',\n    ],\n    'connect-src': ['https://www.youtube.com'],\n  },\n  notes:\n    'YouTube verified against official iframe API documentation. Requires iframe_api for script-src and embed paths for frame-src. youtube-nocookie.com is the privacy-enhanced mode. Thumbnail images are served from ytimg.com domains. Include origin parameter for enhanced security.',\n  aliases: ['youtube-embed', 'yt'],\n  lastUpdated: '2024-06-28T00:00:00.000Z',\n  verifiedAt: '2025-07-04T00:00:00.000Z',\n});\n","import { defineServiceInternal } from '../../service-types.js';\nimport { ServiceCategory } from '../../types.js';\n\nexport const Zoom = defineServiceInternal({\n  id: 'zoom',\n  name: 'Zoom',\n  category: ServiceCategory.VIDEO,\n  description: 'Video conferencing and communication platform',\n  website: 'https://zoom.us',\n  officialDocs: [\n    'https://developers.zoom.us/docs/meeting-sdk/web/',\n    'https://devforum.zoom.us/t/what-is-an-appropiate-content-security-policy-csp-for-embedding-an-application-on-the-zoom-client/73158',\n    'https://devforum.zoom.us/t/content-securty-policy/5945',\n  ],\n  directives: {\n    'script-src': ['https://source.zoom.us', 'https://*.zoom.us', \"'unsafe-eval'\"],\n    'frame-src': ['https://*.zoom.us'],\n    'connect-src': ['https://*.zoom.us', 'wss://*.zoom.us'],\n    'worker-src': ['blob:'],\n    'font-src': ['data:'],\n  },\n  requiresDynamic: true,\n  notes:\n    \"Zoom Web SDK verified from official developer forum discussions. Requires 'unsafe-eval' for SDK functionality, blob: worker-src for WebRTC workers, data: font-src for embedded fonts, and websocket connections (wss://*.zoom.us). Meeting SDK uses react-dom with Web Workers requiring blob: worker-src directive.\",\n  aliases: ['zoom-video'],\n  lastUpdated: '2025-06-29T00:00:00Z',\n  verifiedAt: '2025-07-03T00:00:00.000Z',\n});\n"],"mappings":"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","names":["ServiceCategory"]}