@od-oneapp/analytics 2026.2.1501-canary.1 → 2026.2.1701

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/{ai-Co8hBoEj.mjs → ai-YMnynb-t.mjs} +2 -2
  2. package/{ai-Co8hBoEj.mjs.map → ai-YMnynb-t.mjs.map} +1 -1
  3. package/{client-C_4MPbIp.mjs → client-CcFTauAh.mjs} +1 -1
  4. package/{client-C_4MPbIp.mjs.map → client-CcFTauAh.mjs.map} +1 -1
  5. package/{client-BOIcr_5V.mjs → client-CeOLjbac.mjs} +1 -1
  6. package/{client-BOIcr_5V.mjs.map → client-CeOLjbac.mjs.map} +1 -1
  7. package/{client-BiJJm6CH.mjs → client-D339NFJS.mjs} +1 -1
  8. package/{client-BiJJm6CH.mjs.map → client-D339NFJS.mjs.map} +1 -1
  9. package/client-next.d.mts +7 -7
  10. package/client-next.mjs +10 -10
  11. package/client.d.mts +9 -9
  12. package/client.mjs +115 -7
  13. package/client.mjs.map +1 -1
  14. package/{config-BUMHyePt.d.mts → config-DPS6bSYo.d.mts} +2 -2
  15. package/{config-BUMHyePt.d.mts.map → config-DPS6bSYo.d.mts.map} +1 -1
  16. package/{config-6Mwe7b2O.mjs → config-P6P5adJg.mjs} +1 -1
  17. package/{config-6Mwe7b2O.mjs.map → config-P6P5adJg.mjs.map} +1 -1
  18. package/{ecommerce-DGG1FbiH.mjs → ecommerce-Cgu4wlux.mjs} +2 -2
  19. package/{ecommerce-DGG1FbiH.mjs.map → ecommerce-Cgu4wlux.mjs.map} +1 -1
  20. package/{emitters-BvEelkxS.mjs → emitters-6-nKo8i-.mjs} +1 -1
  21. package/{emitters-BvEelkxS.mjs.map → emitters-6-nKo8i-.mjs.map} +1 -1
  22. package/{emitters-BAXagFjt.d.mts → emitters-DldkVSPp.d.mts} +2 -2
  23. package/{emitters-BAXagFjt.d.mts.map → emitters-DldkVSPp.d.mts.map} +1 -1
  24. package/index-BfNWgfa5.d.mts +1494 -0
  25. package/index-BfNWgfa5.d.mts.map +1 -0
  26. package/{index-Cnz0VecZ.d.mts → index-BkIWe--N.d.mts} +2 -2
  27. package/{index-Cnz0VecZ.d.mts.map → index-BkIWe--N.d.mts.map} +1 -1
  28. package/{index-qlFPt3-1.d.mts → index-jPzXRn52.d.mts} +3 -3
  29. package/{index-qlFPt3-1.d.mts.map → index-jPzXRn52.d.mts.map} +1 -1
  30. package/{manager-B6kowr9x.d.mts → manager-DvRRjza6.d.mts} +9 -3
  31. package/{manager-B6kowr9x.d.mts.map → manager-DvRRjza6.d.mts.map} +1 -1
  32. package/package.json +7 -2
  33. package/{posthog-bootstrap-DDToYA4X.mjs → posthog-bootstrap-CYfIy_WS.mjs} +7 -6
  34. package/posthog-bootstrap-CYfIy_WS.mjs.map +1 -0
  35. package/{posthog-bootstrap-CRl1Pk_E.d.mts → posthog-bootstrap-DWxFrxlt.d.mts} +3 -3
  36. package/{posthog-bootstrap-CRl1Pk_E.d.mts.map → posthog-bootstrap-DWxFrxlt.d.mts.map} +1 -1
  37. package/providers-http-client.d.mts +1 -1
  38. package/providers-http-client.mjs +1 -1
  39. package/providers-http-server.d.mts +1 -1
  40. package/providers-http-server.mjs +1 -1
  41. package/server-edge.d.mts +3 -3
  42. package/server-edge.mjs +2 -2
  43. package/server-next.d.mts +11 -10
  44. package/server-next.d.mts.map +1 -1
  45. package/server-next.mjs +6 -6
  46. package/server.d.mts +10 -10
  47. package/server.mjs +6 -6
  48. package/service-Duqnlppl.mjs +1049 -0
  49. package/service-Duqnlppl.mjs.map +1 -0
  50. package/shared.d.mts +4 -4
  51. package/shared.mjs +3 -3
  52. package/{types-DnfdguWa.d.mts → types-BxBnNQ0V.d.mts} +1 -1
  53. package/{types-DnfdguWa.d.mts.map → types-BxBnNQ0V.d.mts.map} +1 -1
  54. package/{types-Brm88i6e.d.mts → types-CBvxUEaF.d.mts} +1 -1
  55. package/{types-Brm88i6e.d.mts.map → types-CBvxUEaF.d.mts.map} +1 -1
  56. package/types.d.mts +3 -3
  57. package/{vercel-types-Crq8m8c1.d.mts → vercel-types-lwakUfoI.d.mts} +1 -1
  58. package/{vercel-types-Crq8m8c1.d.mts.map → vercel-types-lwakUfoI.d.mts.map} +1 -1
  59. package/logs-B4zFs5kX.mjs +0 -108
  60. package/logs-B4zFs5kX.mjs.map +0 -1
  61. package/posthog-bootstrap-DDToYA4X.mjs.map +0 -1
  62. package/validation-DZc_nvoN.d.mts +0 -24
  63. package/validation-DZc_nvoN.d.mts.map +0 -1
  64. package/validation-Dll9R6h6.mjs +0 -315
  65. package/validation-Dll9R6h6.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-Duqnlppl.mjs","names":[],"sources":["../../../integrations/segment/src/analytics-provider/server.ts","../../../integrations/vercel/src/analytics-provider/server.ts","../src/server/manager.ts","../src/shared/utils/validation.ts","../src/shared/ingestion/schemas.ts","../src/shared/ingestion/service.ts"],"sourcesContent":["/**\n * @fileoverview Segment server-side (Node.js) analytics provider\n *\n * Provides server-side integration with Segment Analytics using @segment/analytics-next.\n * Implements the @od-oneapp/analytics AnalyticsProvider interface for use in the analytics\n * manager's provider registry.\n *\n * @module @integrations/segment/analytics-provider/server\n */\n\nimport type {\n AnalyticsContext,\n AnalyticsProvider,\n GroupTraits,\n PageProperties,\n Properties,\n ProviderConfig,\n SegmentConfig,\n UserTraits,\n} from './types';\n\n// Type for Analytics server instance\ninterface AnalyticsServerInstance {\n track: (params: { event: string; properties?: Properties }) => Promise<unknown>;\n identify: (params: { userId: string; traits?: UserTraits }) => Promise<unknown>;\n page: (params: { name?: string; properties?: PageProperties }) => Promise<unknown>;\n group: (params: { groupId: string; traits?: GroupTraits }) => Promise<unknown>;\n alias: (params: { userId: string; previousId: string }) => Promise<unknown>;\n}\n\nexport class SegmentServerProvider implements AnalyticsProvider {\n readonly name = 'segment';\n private analytics: AnalyticsServerInstance | null = null;\n private config: SegmentConfig;\n private isInitialized = false;\n\n constructor(config: ProviderConfig) {\n if (!config.writeKey) {\n throw new Error('Segment writeKey is required');\n }\n\n this.config = {\n options: config.options as Record<string, unknown>,\n writeKey: config.writeKey,\n };\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) return;\n\n const { Analytics } = await import(\n /* webpackChunkName: \"segment-analytics\" */\n '@segment/analytics-next'\n );\n\n this.analytics = new Analytics({\n writeKey: this.config.writeKey,\n ...this.config.options,\n } as ConstructorParameters<typeof Analytics>[0]) as unknown as AnalyticsServerInstance;\n\n this.isInitialized = true;\n }\n\n async track(\n event: string,\n properties: Properties = {},\n _context?: AnalyticsContext,\n ): Promise<void> {\n if (!this.analytics) return;\n await this.analytics.track({ event, properties });\n }\n\n async identify(\n userId: string,\n traits: UserTraits = {},\n _context?: AnalyticsContext,\n ): Promise<void> {\n if (!this.analytics) return;\n await this.analytics.identify({ userId, traits });\n }\n\n async page(\n name?: string,\n properties: PageProperties = {},\n _context?: AnalyticsContext,\n ): Promise<void> {\n if (!this.analytics) return;\n await this.analytics.page({ ...(name && { name }), properties });\n }\n\n async group(\n groupId: string,\n traits: GroupTraits = {},\n _context?: AnalyticsContext,\n ): Promise<void> {\n if (!this.analytics) return;\n await this.analytics.group({ groupId, traits });\n }\n\n async alias(userId: string, previousId: string, _context?: AnalyticsContext): Promise<void> {\n if (!this.analytics) return;\n await this.analytics.alias({ userId, previousId });\n }\n}\n","/**\n * @fileoverview Vercel Analytics server-side (Node.js) provider\n *\n * Provides minimal server-side integration with Vercel Analytics. Implements the\n * @od-oneapp/analytics AnalyticsProvider interface. Vercel Analytics is primarily\n * client-side focused; server-side tracking is limited.\n *\n * @module @integrations/vercel/analytics-provider/server\n */\n\nimport type {\n AnalyticsProvider,\n GroupTraits,\n PageProperties,\n Properties,\n ProviderConfig,\n UserTraits,\n} from './types';\n\nexport class VercelServerProvider implements AnalyticsProvider {\n readonly name = 'vercel';\n private isInitialized = false;\n private readonly config: ProviderConfig;\n\n constructor(config: ProviderConfig) {\n this.config = config;\n }\n\n async initialize(): Promise<void> {\n if (this.isInitialized) return;\n this.isInitialized = true;\n }\n\n async track(event: string, properties: Properties = {}): Promise<void> {\n if (!this.isInitialized) return;\n\n void event;\n void properties;\n void this.config;\n // Server-side tracking is limited — most tracking happens client-side.\n }\n\n async identify(userId: string, traits: UserTraits = {}): Promise<void> {\n await this.track('User Identified', { userId, ...traits });\n }\n\n async page(name?: string, properties: PageProperties = {}): Promise<void> {\n await this.track('Page View (Server)', { page: name, ...properties });\n }\n\n async group(groupId: string, traits: GroupTraits = {}): Promise<void> {\n await this.track('Group Identified', { groupId, ...traits });\n }\n\n async alias(userId: string, previousId: string): Promise<void> {\n await this.track('User Aliased', { previousId, userId });\n }\n}\n","/**\n * @fileoverview Server analytics manager with static provider registry\n * Server analytics manager with static provider registry\n */\n\nimport { SegmentServerProvider } from '@integrations/segment/analytics-provider/server';\nimport { VercelServerProvider } from '@integrations/vercel/analytics-provider/server';\n\nimport { ConsoleProvider } from '../providers/console/server';\nimport { HttpServerProvider } from '../providers/http/server';\nimport { createAnalyticsManager } from '../shared/utils/manager';\n\nimport type { AnalyticsConfig, AnalyticsManager, ProviderRegistry } from '../shared/types/types';\n\n// Static provider registry for server environments\nconst SERVER_PROVIDERS: ProviderRegistry = {\n console: config => new ConsoleProvider(config),\n http: config => new HttpServerProvider(config),\n segment: config => new SegmentServerProvider(config),\n vercel: config => new VercelServerProvider(config),\n};\n\n/**\n * Create and initialize a server analytics instance\n * This is the primary way to create analytics for server-side applications\n *\n * @example\n * ```typescript\n * const analytics = await createServerAnalytics({\n * providers: {\n * segment: { writeKey: process.env.SEGMENT_KEY! },\n * },\n * });\n * await analytics.page('/admin', { title: 'Admin Dashboard' });\n * ```\n * @param config - Analytics configuration including providers and settings\n * @returns Promise resolving to initialized analytics manager\n */\nexport async function createServerAnalytics(config: AnalyticsConfig): Promise<AnalyticsManager> {\n const manager = createAnalyticsManager(config, SERVER_PROVIDERS);\n await manager.initialize();\n return manager;\n}\n\n/**\n * Create a server analytics instance without initializing\n * Useful when you need to control initialization timing\n *\n * @example\n * ```typescript\n * const analytics = createServerAnalyticsUninitialized(config);\n * if (shouldEmit) {\n * await analytics.initialize();\n * await analytics.track('CRON Completed');\n * }\n * ```\n * @param config - Analytics configuration including providers and settings\n * @returns Uninitialized analytics manager instance\n */\nexport function createServerAnalyticsUninitialized(config: AnalyticsConfig): AnalyticsManager {\n return createAnalyticsManager(config, SERVER_PROVIDERS);\n}\n","/**\n * @fileoverview Validation utilities for analytics configuration\n *\n * This module provides comprehensive validation for analytics configurations,\n * including provider validation, environment-specific checks, and helpful\n * warnings for common misconfigurations.\n *\n * **Features**:\n * - Configuration structure validation\n * - Provider-specific field validation\n * - Environment variable validation\n * - Environment-specific warnings\n * - Detailed error reporting\n *\n * @module @od-oneapp/analytics/shared/utils/validation\n */\n\nimport { logError, logInfo, logWarn } from '@repo/shared/logger';\n\nimport { PROVIDER_REQUIREMENTS } from './config';\n\nimport type { AnalyticsConfig, ProviderConfig } from '../types/types';\n\n/**\n * Validation error structure.\n *\n * Represents a single validation error with field, message, and provider context.\n */\nexport interface ValidationError {\n /** Field name that failed validation */\n field: string;\n /** Human-readable error message */\n message: string;\n /** Provider name (or 'global' for config-level errors) */\n provider: string;\n}\n\n/**\n * Validation result structure.\n *\n * Contains validation errors, warnings, and overall validity status.\n */\nexport interface ValidationResult {\n /** Array of validation errors */\n errors: ValidationError[];\n /** Whether the configuration is valid (no errors) */\n isValid: boolean;\n /** Array of warning messages */\n warnings: string[];\n}\n\n/**\n * Comprehensive configuration validation.\n *\n * Validates the entire analytics configuration structure, including:\n * - Configuration object structure\n * - Providers object existence\n * - Individual provider configurations\n * - Environment-specific warnings\n *\n * Accepts `unknown` input for defensive validation of potentially malformed configs.\n *\n * @param {unknown} config - Analytics configuration to validate\n * @returns {ValidationResult} Validation result with errors, warnings, and validity status\n *\n * @example\n * ```typescript\n * const result = validateAnalyticsConfig(config);\n * if (!result.isValid) {\n * console.error('Validation errors:', result.errors);\n * }\n * if (result.warnings.length > 0) {\n * console.warn('Warnings:', result.warnings);\n * }\n * ```\n */\nexport function validateAnalyticsConfig(config: unknown): ValidationResult {\n const errors: ValidationError[] = [];\n const warnings: string[] = [];\n\n // Check if config exists and is an object\n if (!config || typeof config !== 'object') {\n errors.push({\n provider: 'global',\n field: 'config',\n message: 'Analytics configuration is required and must be an object',\n });\n return { isValid: false, errors, warnings };\n }\n\n const typedConfig = config as AnalyticsConfig;\n\n // Check if providers object exists\n if (!typedConfig.providers || typeof typedConfig.providers !== 'object') {\n errors.push({\n provider: 'global',\n field: 'providers',\n message: 'Providers configuration is required and must be an object',\n });\n return { isValid: false, errors, warnings };\n }\n\n // Check if at least one provider is configured\n const providerCount = Object.keys(typedConfig.providers).length;\n if (providerCount === 0) {\n warnings.push('No providers configured. Analytics will not track any events.');\n }\n\n // Validate each provider\n for (const [providerName, providerConfig] of Object.entries(typedConfig.providers)) {\n const providerErrors = validateProvider(providerName, providerConfig);\n errors.push(...providerErrors);\n }\n\n // Environment-specific warnings\n const isBrowser = typeof window !== 'undefined';\n\n // Mixpanel warning for client-side usage\n if (isBrowser && typedConfig.providers.mixpanel) {\n warnings.push(\n 'Mixpanel provider configured on client-side. Consider using server-side for better performance.',\n );\n }\n\n if (!isBrowser && typedConfig.providers.vercel) {\n warnings.push(\n 'Vercel Analytics has limited server-side support. Consider using client-side for better features.',\n );\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings,\n };\n}\n\n/**\n * Validate a single provider configuration.\n *\n * Checks that the provider is known and that all required fields are present.\n *\n * @param {string} providerName - Name of the provider to validate\n * @param {ProviderConfig} config - Provider configuration to validate\n * @returns {ValidationError[]} Array of validation errors (empty if valid)\n *\n * @example\n * ```typescript\n * const errors = validateProvider('posthog', { apiKey: 'phc_xxx' });\n * if (errors.length > 0) {\n * console.error('Provider errors:', errors);\n * }\n * ```\n */\nexport function validateProvider(providerName: string, config: ProviderConfig): ValidationError[] {\n const errors: ValidationError[] = [];\n\n // Check if provider is known\n const knownProviders = ['segment', 'posthog', 'vercel', 'console', 'mixpanel'];\n if (!knownProviders.includes(providerName)) {\n errors.push({\n provider: providerName,\n field: 'name',\n message: `Unknown provider '${providerName}'. Known providers: ${knownProviders.join(', ')}`,\n });\n return errors;\n }\n\n // Check required fields\n const requiredFields = PROVIDER_REQUIREMENTS[providerName] ?? [];\n for (const field of requiredFields) {\n const value = config[field as keyof ProviderConfig];\n\n if (!value) {\n errors.push({\n provider: providerName,\n field,\n message: `Required field '${field}' is missing for provider '${providerName}'`,\n });\n } else if (typeof value === 'string' && value.trim() === '') {\n errors.push({\n provider: providerName,\n field,\n message: `Required field '${field}' cannot be empty for provider '${providerName}'`,\n });\n }\n }\n\n // Provider-specific validation\n switch (providerName) {\n case 'segment':\n if (config.writeKey && !isValidSegmentWriteKey(config.writeKey)) {\n errors.push({\n provider: providerName,\n field: 'writeKey',\n message: 'Segment writeKey appears to be invalid format',\n });\n }\n break;\n\n case 'posthog':\n if (config.apiKey && !isValidPostHogApiKey(config.apiKey)) {\n errors.push({\n provider: providerName,\n field: 'apiKey',\n message: 'PostHog apiKey appears to be invalid format',\n });\n }\n break;\n }\n\n return errors;\n}\n\n/**\n * Validate environment variables for analytics.\n *\n * Checks common analytics environment variables for:\n * - Empty values\n * - Placeholder text\n * - Development environment warnings\n *\n * @returns {ValidationResult} Validation result with warnings about environment variables\n *\n * @example\n * ```typescript\n * const result = validateEnvironmentVariables();\n * if (result.warnings.length > 0) {\n * console.warn('Environment warnings:', result.warnings);\n * }\n * ```\n */\nexport function validateEnvironmentVariables(): ValidationResult {\n const errors: ValidationError[] = [];\n const warnings: string[] = [];\n\n // Check for common environment variables\n const envVars = {\n POSTHOG_API_KEY: process.env.POSTHOG_API_KEY,\n SEGMENT_WRITE_KEY: process.env.SEGMENT_WRITE_KEY,\n };\n\n for (const [varName, value] of Object.entries(envVars)) {\n if (value && typeof value === 'string') {\n if (value.trim() === '') {\n warnings.push(`Environment variable ${varName} is set but empty`);\n } else if (value.includes('your-') || value.includes('paste-')) {\n warnings.push(`Environment variable ${varName} appears to contain placeholder text`);\n }\n }\n }\n\n // Warn about development environment\n if (\n process.env.NODE_ENV === 'development' &&\n !envVars.SEGMENT_WRITE_KEY &&\n !envVars.POSTHOG_API_KEY\n ) {\n warnings.push(\n 'No analytics environment variables detected in development. Consider using console provider for debugging.',\n );\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings,\n };\n}\n\n/**\n * Validates Segment write key format.\n *\n * Checks that the write key matches Segment's expected format:\n * - Exactly 32 alphanumeric characters\n * - Not a placeholder value\n *\n * @param {string} writeKey - Write key to validate\n * @returns {boolean} `true` if valid, `false` otherwise\n *\n * @internal\n */\nfunction isValidSegmentWriteKey(writeKey: string): boolean {\n // Segment write keys are exactly 32 characters, alphanumeric\n if (!/^[\\dA-Za-z]{32}$/.test(writeKey)) {\n return false;\n }\n\n // Check for common placeholder patterns\n const placeholders = ['your-write-key', 'paste-key-here', 'xxxxxxxx', 'example'];\n if (placeholders.some(p => writeKey.toLowerCase().includes(p.toLowerCase()))) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Validates PostHog API key format.\n *\n * Checks that the API key matches PostHog's expected format:\n * - Starts with `phc_` prefix\n * - Followed by 43 alphanumeric/dash/underscore characters\n * - Not a placeholder value\n *\n * @param {string} apiKey - API key to validate\n * @returns {boolean} `true` if valid, `false` otherwise\n *\n * @internal\n */\nfunction isValidPostHogApiKey(apiKey: string): boolean {\n // PostHog keys: phc_ prefix + 43 alphanumeric/dash/underscore characters\n if (!/^phc_[\\w-]{43}$/.test(apiKey)) {\n return false;\n }\n\n // Check for placeholder patterns\n const placeholders = ['your-api-key', 'paste-key-here', 'xxxxxxxx', 'example'];\n if (placeholders.some(p => apiKey.toLowerCase().includes(p.toLowerCase()))) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Utility to throw validation errors (for strict validation).\n *\n * Validates the configuration and throws an error if validation fails.\n * Useful for ensuring configuration is valid before using analytics.\n *\n * @param {AnalyticsConfig} config - Analytics configuration to validate\n * @throws {Error} If configuration validation fails\n *\n * @example\n * ```typescript\n * try {\n * validateConfigOrThrow(config);\n * // Configuration is valid, proceed\n * } catch (error) {\n * console.error('Invalid config:', error.message);\n * }\n * ```\n */\nexport function validateConfigOrThrow(config: AnalyticsConfig): void {\n const result = validateAnalyticsConfig(config);\n\n if (!result.isValid) {\n const errorMessages = result.errors\n .map(error => `${error.provider}.${error.field}: ${error.message}`)\n .join('\\n');\n\n throw new Error(`Analytics configuration validation failed:\\n${errorMessages}`);\n }\n\n // Log warnings but don't throw\n if (result.warnings.length > 0 && config.onError) {\n config.onError(new Error('Analytics configuration warnings'), {\n provider: 'analytics',\n method: 'validateConfig',\n warnings: result.warnings,\n });\n }\n}\n\n/**\n * Development helper to check configuration.\n *\n * Logs configuration details and validation results for debugging.\n * Only useful in development environments.\n *\n * @param {AnalyticsConfig} config - Analytics configuration to debug\n * @returns {Promise<void>} Promise that resolves when debugging is complete\n *\n * @example\n * ```typescript\n * if (process.env.NODE_ENV === 'development') {\n * await debugConfig(config);\n * }\n * ```\n */\nexport async function debugConfig(config: AnalyticsConfig): Promise<void> {\n const result = validateAnalyticsConfig(config);\n\n logInfo('Analytics Configuration Debug', {\n config,\n validationResult: result,\n });\n\n if (result.errors.length > 0) {\n logError('Analytics configuration errors: Validation failed', {\n errors: result.errors,\n });\n }\n\n if (result.warnings.length > 0) {\n logWarn('Analytics configuration warnings', { warnings: result.warnings });\n }\n}\n","/**\n * @fileoverview Event Ingestion Schemas and Validation\n *\n * Defines Zod schemas for validating event ingestion payloads. These schemas\n * ensure type-safe, secure event ingestion with proper validation.\n *\n * **Key Features**:\n * - CloudEvents-style fields for future interoperability\n * - Support for single events and batched arrays\n * - Strict validation of required fields\n * - Typed extensions per event category\n *\n * @module @od-oneapp/analytics/shared/ingestion/schemas\n */\n\nimport { z } from 'zod';\n\n// =============================================================================\n// Base Schemas\n// =============================================================================\n\n/**\n * Property value schema - safe, serializable values only.\n */\nexport const PropertyValueSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.date(), // Accept Date objects only; ISO strings are already handled as strings\n]);\n\n/**\n * Property object schema with nested structure support.\n */\nexport const PropertyObjectSchema: z.ZodType<Record<string, unknown>> = z.record(\n z.string(),\n z.lazy(() =>\n z.union([PropertyValueSchema, z.array(PropertyValueSchema), z.record(z.string(), z.unknown())]),\n ),\n);\n\n/**\n * Emitter context schema - contextual information about the environment.\n */\nexport const EmitterContextSchema = z\n .object({\n /** Application information */\n app: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n build: z.string().optional(),\n namespace: z.string().optional(),\n })\n .optional(),\n\n /** Campaign/UTM information */\n campaign: z\n .object({\n name: z.string().optional(),\n source: z.string().optional(),\n medium: z.string().optional(),\n term: z.string().optional(),\n content: z.string().optional(),\n })\n .passthrough()\n .optional(),\n\n /** Device information */\n device: z\n .object({\n id: z.string().optional(),\n manufacturer: z.string().optional(),\n model: z.string().optional(),\n name: z.string().optional(),\n type: z.string().optional(),\n version: z.string().optional(),\n })\n .optional(),\n\n /** User's IP address */\n ip: z.string().optional(),\n\n /** Library making the request */\n library: z\n .object({\n name: z.string(),\n version: z.string(),\n })\n .optional(),\n\n /** User's locale (e.g., 'en-US') */\n locale: z.string().optional(),\n\n /** Network information */\n network: z\n .object({\n bluetooth: z.boolean().optional(),\n carrier: z.string().optional(),\n cellular: z.boolean().optional(),\n wifi: z.boolean().optional(),\n })\n .optional(),\n\n /** OS information */\n os: z\n .object({\n name: z.string().optional(),\n version: z.string().optional(),\n })\n .optional(),\n\n /** Page information */\n page: z\n .object({\n path: z.string().optional(),\n // Use permissive string validation for referrer/url since real-world values\n // may be malformed, truncated, or non-standard (e.g., data: URIs, about:blank)\n referrer: z.string().optional(),\n search: z.string().optional(),\n title: z.string().optional(),\n url: z.string().optional(),\n })\n .optional(),\n\n /** Screen information */\n screen: z\n .object({\n density: z.number().optional(),\n height: z.number().int().positive().optional(),\n width: z.number().int().positive().optional(),\n })\n .optional(),\n\n /** User's timezone (tzdata string) */\n timezone: z.string().optional(),\n\n /** Group/account ID */\n groupId: z.string().optional(),\n\n /** User agent string */\n userAgent: z.string().optional(),\n\n /** Channel where request originated */\n channel: z.enum(['server', 'browser', 'mobile', 'api']).optional(),\n\n /** Location context */\n location: z\n .object({\n city: z.string().optional(),\n country: z.string().optional(),\n latitude: z.number().optional(),\n longitude: z.number().optional(),\n region: z.string().optional(),\n })\n .optional(),\n })\n .passthrough();\n\n// =============================================================================\n// Event Type Schemas\n// =============================================================================\n\n/**\n * Base payload schema - common fields for all event types.\n */\nconst BasePayloadSchema = z\n .object({\n /** Anonymous ID if user is not identified */\n anonymousId: z.string().max(255).optional(),\n\n /** User ID (at least one of userId or anonymousId required) */\n userId: z.string().max(255).optional(),\n\n /** Timestamp when the event occurred */\n timestamp: z.union([z.string().datetime(), z.date()]).optional(),\n\n /** Original timestamp before processing */\n originalTimestamp: z.union([z.string().datetime(), z.date()]).optional(),\n\n /** Context and control fields */\n context: EmitterContextSchema.optional(),\n\n /** Message ID for deduplication */\n messageId: z.string().uuid().optional(),\n })\n .refine(data => Boolean(data.anonymousId) || Boolean(data.userId), {\n message: 'Either anonymousId or userId must be provided',\n });\n\n/**\n * Track event payload schema.\n * Uses safeExtend() because BasePayloadSchema has refinements (Zod v4 requirement).\n */\nexport const TrackEventSchema = BasePayloadSchema.safeExtend({\n type: z.literal('track'),\n event: z.string().min(1).max(255),\n properties: PropertyObjectSchema.optional(),\n});\n\n/**\n * Identify event payload schema.\n * Uses safeExtend() because BasePayloadSchema has refinements (Zod v4 requirement).\n */\nexport const IdentifyEventSchema = BasePayloadSchema.safeExtend({\n type: z.literal('identify'),\n userId: z.string().min(1).max(255),\n traits: PropertyObjectSchema.optional(),\n});\n\n/**\n * Page event payload schema.\n * Uses safeExtend() because BasePayloadSchema has refinements (Zod v4 requirement).\n */\nexport const PageEventSchema = BasePayloadSchema.safeExtend({\n type: z.literal('page'),\n name: z.string().max(255).optional(),\n category: z.string().max(255).optional(),\n properties: PropertyObjectSchema.optional(),\n});\n\n/**\n * Screen event payload schema.\n * Uses safeExtend() because BasePayloadSchema has refinements (Zod v4 requirement).\n */\nexport const ScreenEventSchema = BasePayloadSchema.safeExtend({\n type: z.literal('screen'),\n name: z.string().max(255).optional(),\n category: z.string().max(255).optional(),\n properties: PropertyObjectSchema.optional(),\n});\n\n/**\n * Group event payload schema.\n * Uses safeExtend() because BasePayloadSchema has refinements (Zod v4 requirement).\n */\nexport const GroupEventSchema = BasePayloadSchema.safeExtend({\n type: z.literal('group'),\n groupId: z.string().min(1).max(255),\n traits: PropertyObjectSchema.optional(),\n});\n\n/**\n * Alias event payload schema.\n * Uses safeExtend() because BasePayloadSchema has refinements (Zod v4 requirement).\n */\nexport const AliasEventSchema = BasePayloadSchema.safeExtend({\n type: z.literal('alias'),\n userId: z.string().min(1).max(255),\n previousId: z.string().min(1).max(255),\n});\n\n/**\n * Union of all event payload schemas.\n */\nexport const EventPayloadSchema = z.discriminatedUnion('type', [\n TrackEventSchema,\n IdentifyEventSchema,\n PageEventSchema,\n ScreenEventSchema,\n GroupEventSchema,\n AliasEventSchema,\n]);\n\n// =============================================================================\n// Ingestion Request Schemas\n// =============================================================================\n\n/**\n * Single event ingestion request schema.\n */\nexport const SingleEventRequestSchema = EventPayloadSchema;\n\n/**\n * Batch event ingestion request schema.\n *\n * The batch size limit is enforced at the service level via `maxBatchSize` config\n * (default: 100) rather than in the schema, allowing for flexible configuration.\n */\nexport const BatchEventRequestSchema = z.object({\n batch: z.array(EventPayloadSchema).min(1),\n});\n\n/**\n * Combined ingestion request schema - accepts single event or batch.\n */\nexport const IngestionRequestSchema = z.union([BatchEventRequestSchema, SingleEventRequestSchema]);\n\n// =============================================================================\n// Ingestion Response Schemas\n// =============================================================================\n\n/**\n * Event processing result.\n */\nexport const EventResultSchema = z.object({\n /** Server-generated event ID */\n id: z.string().uuid(),\n\n /** Original message ID if provided */\n messageId: z.string().uuid().optional(),\n\n /** Event type */\n type: z.enum(['track', 'identify', 'page', 'screen', 'group', 'alias']),\n\n /** Processing status */\n status: z.enum(['accepted', 'rejected']),\n\n /** Error message if rejected */\n error: z.string().optional(),\n});\n\n/**\n * Successful ingestion response schema.\n */\nexport const IngestionSuccessResponseSchema = z.object({\n /** Whether the request was successful */\n success: z.literal(true),\n\n /** Number of events accepted */\n accepted: z.number().int().nonnegative(),\n\n /** Number of events rejected */\n rejected: z.number().int().nonnegative(),\n\n /** Per-event results */\n results: z.array(EventResultSchema),\n\n /** Server timestamp when events were received */\n receivedAt: z.string().datetime(),\n});\n\n/**\n * Error response schema.\n */\nexport const IngestionErrorResponseSchema = z.object({\n /** Whether the request was successful */\n success: z.literal(false),\n\n /** Error code */\n code: z.string(),\n\n /** Error message */\n error: z.string(),\n\n /** Field-level validation errors */\n fieldErrors: z\n .array(\n z.object({\n path: z.array(z.union([z.string(), z.number()])),\n message: z.string(),\n }),\n )\n .optional(),\n});\n\n/**\n * Combined response schema.\n */\nexport const IngestionResponseSchema = z.union([\n IngestionSuccessResponseSchema,\n IngestionErrorResponseSchema,\n]);\n\n// =============================================================================\n// Type Exports\n// =============================================================================\n\nexport type PropertyValue = z.infer<typeof PropertyValueSchema>;\nexport type PropertyObject = z.infer<typeof PropertyObjectSchema>;\nexport type EmitterContext = z.infer<typeof EmitterContextSchema>;\nexport type TrackEvent = z.infer<typeof TrackEventSchema>;\nexport type IdentifyEvent = z.infer<typeof IdentifyEventSchema>;\nexport type PageEvent = z.infer<typeof PageEventSchema>;\nexport type ScreenEvent = z.infer<typeof ScreenEventSchema>;\nexport type GroupEvent = z.infer<typeof GroupEventSchema>;\nexport type AliasEvent = z.infer<typeof AliasEventSchema>;\nexport type EventPayload = z.infer<typeof EventPayloadSchema>;\nexport type SingleEventRequest = z.infer<typeof SingleEventRequestSchema>;\nexport type BatchEventRequest = z.infer<typeof BatchEventRequestSchema>;\nexport type IngestionRequest = z.infer<typeof IngestionRequestSchema>;\nexport type EventResult = z.infer<typeof EventResultSchema>;\nexport type IngestionSuccessResponse = z.infer<typeof IngestionSuccessResponseSchema>;\nexport type IngestionErrorResponse = z.infer<typeof IngestionErrorResponseSchema>;\nexport type IngestionResponse = z.infer<typeof IngestionResponseSchema>;\n","/**\n * @fileoverview Event Ingestion Service\n *\n * Provides server-side event ingestion functionality. Handles validation,\n * normalization, and forwarding of events to the analytics system.\n *\n * **Key Features**:\n * - Validates incoming events against Zod schemas\n * - Normalizes event payloads with defaults\n * - Forwards events to AnalyticsManager\n * - Tracks ingestion metrics\n * - Handles batch processing efficiently\n *\n * @module @od-oneapp/analytics/shared/ingestion/service\n */\n\nimport { logDebug, logError, logInfo, logWarn } from '@repo/shared/logs';\n\nimport { sanitizeProperties, validateEventName } from '../utils/security';\n\nimport { BatchEventRequestSchema, EventPayloadSchema, IngestionRequestSchema } from './schemas';\n\nimport type {\n BatchEventRequest,\n EmitterContext,\n EventPayload,\n EventResult,\n IngestionErrorResponse,\n IngestionRequest,\n IngestionSuccessResponse,\n} from './schemas';\nimport type { EmitterPayload } from '../emitters/emitter-types';\nimport type { AnalyticsManager } from '../types/types';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Ingestion context provided by the caller (usually the API route handler).\n */\nexport interface IngestionContext {\n /** Source identifier (app/module/emitter id) */\n source: string;\n\n /** Tenant/project ID for multi-tenancy */\n tenantId?: string;\n\n /** User ID from auth context */\n userId?: string;\n\n /** Account/organization ID */\n accountId?: string;\n\n /** Client IP address */\n ip?: string;\n\n /** Client user agent */\n userAgent?: string;\n\n /** Environment (dev/stage/prod) */\n environment?: string;\n\n /** Trace ID for observability */\n traceId?: string;\n\n /** Correlation ID for request tracing */\n correlationId?: string;\n\n /** API version */\n apiVersion?: string;\n\n /** SDK version from client */\n sdkVersion?: string;\n}\n\n/**\n * Ingestion service configuration.\n */\nexport interface IngestionServiceConfig {\n /** Maximum events per batch (default: 100) */\n maxBatchSize?: number;\n\n /** Maximum payload size in bytes (default: 1MB) */\n maxPayloadSize?: number;\n\n /** Whether to strip PII from properties (default: true in production) */\n stripPII?: boolean;\n\n /** Whether to strip HTML from properties (default: true) */\n stripHTML?: boolean;\n\n /** Timeout for processing each event in ms (default: 5000) */\n eventTimeout?: number;\n\n /** Concurrency for batch processing (default: 10) */\n batchConcurrency?: number;\n}\n\n/**\n * Ingestion metrics for observability.\n */\nexport interface IngestionMetrics {\n /** Total events received */\n totalReceived: number;\n\n /** Events accepted */\n accepted: number;\n\n /** Events rejected */\n rejected: number;\n\n /** Events by type */\n byType: Record<string, number>;\n\n /** Processing time in ms */\n processingTimeMs: number;\n}\n\n// =============================================================================\n// Default Configuration\n// =============================================================================\n\nconst DEFAULT_CONFIG: Required<IngestionServiceConfig> = {\n maxBatchSize: 100,\n maxPayloadSize: 1024 * 1024, // 1MB\n stripPII: true, // Default to safe; callers can override\n stripHTML: true,\n eventTimeout: 5000,\n batchConcurrency: 10,\n};\n\n// =============================================================================\n// Utility Functions\n// =============================================================================\n\n/**\n * Generate a UUID v4.\n */\nfunction generateUUID(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Get current ISO timestamp.\n */\nfunction getCurrentTimestamp(): string {\n return new Date().toISOString();\n}\n\n/**\n * Check if request is a batch request.\n */\nfunction isBatchRequest(request: IngestionRequest): request is BatchEventRequest {\n return 'batch' in request && Array.isArray(request.batch);\n}\n\n/**\n * Normalize an event payload with defaults and server metadata.\n */\nfunction normalizeEvent(\n event: EventPayload,\n context: IngestionContext,\n receivedAt: string,\n): EventPayload {\n const normalized = { ...event };\n\n // Generate message ID if not provided\n if (!normalized.messageId) {\n normalized.messageId = generateUUID();\n }\n\n // Set timestamp if not provided\n if (!normalized.timestamp) {\n normalized.timestamp = receivedAt;\n }\n\n // Preserve original timestamp\n if (!normalized.originalTimestamp) {\n normalized.originalTimestamp = normalized.timestamp;\n }\n\n // Merge context with server-provided context\n const mergedContext: EmitterContext = {\n ...normalized.context,\n channel: normalized.context?.channel ?? 'api',\n ip: context.ip ?? normalized.context?.ip,\n userAgent: context.userAgent ?? normalized.context?.userAgent,\n library: normalized.context?.library ?? {\n name: context.source,\n version: context.sdkVersion ?? 'unknown',\n },\n };\n\n normalized.context = mergedContext;\n\n // Set userId from auth context if not provided\n if (!normalized.userId && context.userId) {\n normalized.userId = context.userId;\n }\n\n return normalized;\n}\n\n/**\n * Convert EventPayload to EmitterPayload format for AnalyticsManager.\n * Explicitly maps fields to ensure type safety.\n */\nfunction toEmitterPayload(event: EventPayload): EmitterPayload {\n // Explicitly construct the EmitterPayload from EventPayload fields\n // to maintain type safety and avoid unsafe double casts\n const basePayload = {\n userId: event.userId,\n anonymousId: event.anonymousId,\n timestamp: event.timestamp,\n context: event.context,\n messageId: event.messageId,\n };\n\n switch (event.type) {\n case 'track':\n return {\n type: 'track',\n event: event.event,\n properties: event.properties,\n ...basePayload,\n } as EmitterPayload;\n case 'identify':\n return {\n type: 'identify',\n traits: event.traits,\n ...basePayload,\n } as EmitterPayload;\n case 'page':\n return {\n type: 'page',\n name: event.name,\n category: event.category,\n properties: event.properties,\n ...basePayload,\n } as EmitterPayload;\n case 'screen':\n return {\n type: 'screen',\n name: event.name,\n category: event.category,\n properties: event.properties,\n ...basePayload,\n } as EmitterPayload;\n case 'group':\n return {\n type: 'group',\n groupId: event.groupId,\n traits: event.traits,\n ...basePayload,\n } as EmitterPayload;\n case 'alias':\n return {\n type: 'alias',\n previousId: event.previousId,\n ...basePayload,\n } as EmitterPayload;\n default:\n // This should never happen due to discriminated union validation\n throw new Error(`Unknown event type: ${(event as { type: string }).type}`);\n }\n}\n\n// =============================================================================\n// Ingestion Service Class\n// =============================================================================\n\n/**\n * Event Ingestion Service.\n *\n * Handles validation, normalization, and forwarding of analytics events.\n * Designed for high-volume ingestion with batching and rate limiting support.\n *\n * @example\n * ```typescript\n * const service = new IngestionService(analyticsManager);\n *\n * const result = await service.ingest(requestBody, {\n * source: 'web-app',\n * tenantId: 'tenant-123',\n * userId: 'user-456',\n * });\n *\n * if (result.success) {\n * console.log(`Accepted ${result.accepted} events`);\n * }\n * ```\n */\nexport class IngestionService {\n private readonly config: Required<IngestionServiceConfig>;\n\n constructor(\n private readonly analyticsManager: AnalyticsManager,\n config: IngestionServiceConfig = {},\n ) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Parse and validate the ingestion request payload.\n *\n * @param payload - Raw request payload (parsed JSON)\n * @returns Parsed and validated request, or error response\n */\n parseRequest(\n payload: unknown,\n ): { success: true; data: IngestionRequest } | { success: false; error: IngestionErrorResponse } {\n // Validate payload size (rough estimate)\n try {\n const payloadSize = JSON.stringify(payload).length;\n if (payloadSize > this.config.maxPayloadSize) {\n return {\n success: false,\n error: {\n success: false,\n code: 'PAYLOAD_TOO_LARGE',\n error: `Payload size ${payloadSize} exceeds maximum ${this.config.maxPayloadSize} bytes`,\n },\n };\n }\n } catch {\n return {\n success: false,\n error: {\n success: false,\n code: 'INVALID_JSON',\n error: 'Failed to serialize payload for size check',\n },\n };\n }\n\n // Validate against schema\n const result = IngestionRequestSchema.safeParse(payload);\n\n if (!result.success) {\n const fieldErrors = result.error.issues.map(err => ({\n path: err.path.map(p => (typeof p === 'symbol' ? String(p) : p)),\n message: err.message,\n }));\n\n return {\n success: false,\n error: {\n success: false,\n code: 'VALIDATION_ERROR',\n error: 'Request validation failed',\n fieldErrors,\n },\n };\n }\n\n // Check batch size\n if (isBatchRequest(result.data) && result.data.batch.length > this.config.maxBatchSize) {\n return {\n success: false,\n error: {\n success: false,\n code: 'BATCH_TOO_LARGE',\n error: `Batch size ${result.data.batch.length} exceeds maximum ${this.config.maxBatchSize}`,\n },\n };\n }\n\n return { success: true, data: result.data };\n }\n\n /**\n * Ingest events from a validated request.\n *\n * @param request - Validated ingestion request\n * @param context - Ingestion context from the caller\n * @returns Ingestion response with per-event results\n */\n async ingest(\n request: IngestionRequest,\n context: IngestionContext,\n ): Promise<IngestionSuccessResponse> {\n const startTime = process.hrtime.bigint();\n const receivedAt = getCurrentTimestamp();\n\n // Extract events from request (single or batch)\n const events: EventPayload[] = isBatchRequest(request) ? request.batch : [request];\n\n const results: EventResult[] = [];\n const metrics: IngestionMetrics = {\n totalReceived: events.length,\n accepted: 0,\n rejected: 0,\n byType: {},\n processingTimeMs: 0,\n };\n\n // Process events\n const processedEvents: EmitterPayload[] = [];\n\n for (const event of events) {\n const eventId = generateUUID();\n\n try {\n // Validate event name for track events\n if (event.type === 'track') {\n const validation = validateEventName(event.event);\n if (!validation.valid) {\n results.push({\n id: eventId,\n messageId: event.messageId,\n type: event.type,\n status: 'rejected',\n error: `Invalid event name: ${validation.reason}`,\n });\n metrics.rejected++;\n continue;\n }\n }\n\n // Normalize event\n const normalized = normalizeEvent(event, context, receivedAt);\n\n // Sanitize properties\n if ('properties' in normalized && normalized.properties) {\n const sanitized = sanitizeProperties(normalized.properties, {\n stripPII: this.config.stripPII,\n stripHTML: this.config.stripHTML,\n allowDangerousKeys: false,\n });\n (normalized as { properties: Record<string, unknown> }).properties = sanitized.data;\n\n if (sanitized.warnings.length > 0) {\n logDebug('Event properties sanitized', {\n eventId,\n warnings: sanitized.warnings,\n });\n }\n }\n\n if ('traits' in normalized && normalized.traits) {\n const sanitized = sanitizeProperties(normalized.traits, {\n stripPII: this.config.stripPII,\n stripHTML: this.config.stripHTML,\n allowDangerousKeys: false,\n });\n (normalized as { traits: Record<string, unknown> }).traits = sanitized.data;\n }\n\n // Convert to emitter payload and queue for processing\n const emitterPayload = toEmitterPayload(normalized);\n processedEvents.push(emitterPayload);\n\n results.push({\n id: eventId,\n messageId: normalized.messageId,\n type: event.type,\n status: 'accepted',\n });\n\n metrics.accepted++;\n metrics.byType[event.type] = (metrics.byType[event.type] ?? 0) + 1;\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n\n results.push({\n id: eventId,\n messageId: event.messageId,\n type: event.type,\n status: 'rejected',\n error: errorMessage,\n });\n\n metrics.rejected++;\n\n logWarn('Event processing failed', {\n eventId,\n type: event.type,\n error: errorMessage,\n });\n }\n }\n\n // Forward accepted events to analytics manager (non-blocking)\n // Note: This provides at-most-once delivery semantics. Events may be lost\n // if the analytics manager fails. For guaranteed delivery, consider using\n // a durable queue (Redis, SQS) for critical events.\n if (processedEvents.length > 0) {\n // Use emitBatch for efficient processing\n void (async () => {\n try {\n await this.analyticsManager.emitBatch(processedEvents, {\n timeout: this.config.eventTimeout,\n concurrency: this.config.batchConcurrency,\n failFast: false, // Process all events even if some fail\n });\n } catch (error) {\n logError('Failed to emit events to analytics manager', {\n error: error instanceof Error ? error.message : 'Unknown error',\n eventCount: processedEvents.length,\n traceId: context.traceId,\n });\n }\n })();\n }\n\n // Calculate processing time\n const endTime = process.hrtime.bigint();\n metrics.processingTimeMs = Number(endTime - startTime) / 1_000_000;\n\n // Log metrics\n logInfo('Event ingestion completed', {\n traceId: context.traceId,\n source: context.source,\n tenantId: context.tenantId,\n totalReceived: metrics.totalReceived,\n accepted: metrics.accepted,\n rejected: metrics.rejected,\n processingTimeMs: metrics.processingTimeMs.toFixed(2),\n byType: metrics.byType,\n });\n\n return {\n success: true,\n accepted: metrics.accepted,\n rejected: metrics.rejected,\n results,\n receivedAt,\n };\n }\n\n /**\n * Process a raw request body through parsing and ingestion.\n *\n * Convenience method that combines parseRequest and ingest.\n *\n * @param payload - Raw request payload\n * @param context - Ingestion context\n * @returns Ingestion response (success or error)\n */\n async processRequest(\n payload: unknown,\n context: IngestionContext,\n ): Promise<IngestionSuccessResponse | IngestionErrorResponse> {\n const parseResult = this.parseRequest(payload);\n\n if (!parseResult.success) {\n return parseResult.error;\n }\n\n return this.ingest(parseResult.data, context);\n }\n}\n\n// =============================================================================\n// Factory Functions\n// =============================================================================\n\n/**\n * Create an ingestion service instance.\n *\n * @param analyticsManager - Initialized AnalyticsManager instance\n * @param config - Optional service configuration\n * @returns Configured IngestionService instance\n *\n * @example\n * ```typescript\n * import { createServerAnalytics } from '@od-oneapp/analytics/server';\n * import { createIngestionService } from '@od-oneapp/analytics/server';\n *\n * const analytics = await createServerAnalytics(config);\n * const ingestionService = createIngestionService(analytics);\n * ```\n */\nexport function createIngestionService(\n analyticsManager: AnalyticsManager,\n config?: IngestionServiceConfig,\n): IngestionService {\n return new IngestionService(analyticsManager, config);\n}\n\n/**\n * Validate a single event payload.\n *\n * Useful for pre-validation before queuing events.\n *\n * @param payload - Event payload to validate\n * @returns Validation result with parsed data or errors\n */\nexport function validateEventPayload(\n payload: unknown,\n): { success: true; data: EventPayload } | { success: false; errors: string[] } {\n const result = EventPayloadSchema.safeParse(payload);\n\n if (!result.success) {\n return {\n success: false,\n errors: result.error.issues.map(\n e => `${e.path.map(p => (typeof p === 'symbol' ? String(p) : p)).join('.')}: ${e.message}`,\n ),\n };\n }\n\n return { success: true, data: result.data };\n}\n\n/**\n * Validate a batch of event payloads.\n *\n * @param payloads - Array of event payloads to validate\n * @returns Validation result with parsed data or errors\n */\nexport function validateBatchPayload(\n payloads: unknown[],\n): { success: true; data: EventPayload[] } | { success: false; errors: string[] } {\n const result = BatchEventRequestSchema.safeParse({ batch: payloads });\n\n if (!result.success) {\n return {\n success: false,\n errors: result.error.issues.map(\n e => `${e.path.map(p => (typeof p === 'symbol' ? String(p) : p)).join('.')}: ${e.message}`,\n ),\n };\n }\n\n return { success: true, data: result.data.batch };\n}\n"],"mappings":"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"}
package/shared.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { c as ProviderConfig, d as TrackingOptions, i as AnalyticsProvider, n as AnalyticsContext, r as AnalyticsManager, t as AnalyticsConfig } from "./types-DnfdguWa.mjs";
2
- import { i as page, n as group, o as track, r as identify, t as alias } from "./emitters-BAXagFjt.mjs";
3
- import { t as index_d_exports$1 } from "./index-qlFPt3-1.mjs";
4
- import { t as index_d_exports } from "./index-Cnz0VecZ.mjs";
1
+ import { c as ProviderConfig, d as TrackingOptions, i as AnalyticsProvider, n as AnalyticsContext, r as AnalyticsManager, t as AnalyticsConfig } from "./types-BxBnNQ0V.mjs";
2
+ import { i as page, n as group, o as track, r as identify, t as alias } from "./emitters-DldkVSPp.mjs";
3
+ import { t as index_d_exports$1 } from "./index-jPzXRn52.mjs";
4
+ import { t as index_d_exports } from "./index-BkIWe--N.mjs";
5
5
 
6
6
  //#region src/shared.d.ts
7
7
  declare function createAnalytics(config: AnalyticsConfig): Promise<AnalyticsManager>;
package/shared.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { i as page, n as group, o as track, r as identify, t as alias } from "./emitters-BvEelkxS.mjs";
2
- import { t as ecommerce_exports } from "./ecommerce-DGG1FbiH.mjs";
3
- import { t as ai_exports } from "./ai-Co8hBoEj.mjs";
1
+ import { i as page, n as group, o as track, r as identify, t as alias } from "./emitters-6-nKo8i-.mjs";
2
+ import { t as ecommerce_exports } from "./ecommerce-Cgu4wlux.mjs";
3
+ import { t as ai_exports } from "./ai-YMnynb-t.mjs";
4
4
 
5
5
  //#region src/shared.ts
6
6
  /**
@@ -351,4 +351,4 @@ interface AnalyticsManager {
351
351
  }
352
352
  //#endregion
353
353
  export { GroupTraits as A, EmitterPagePayload as C, EmitterTrackPayload as D, EmitterScreenPayload as E, UserTraits as F, Properties as M, PropertyObject as N, EmitterUserTraits as O, PropertyValue as P, EmitterOptions as S, EmitterProduct as T, EmitterEventProperties as _, EcommerceEventSpec as a, EmitterIdentifyPayload as b, ProviderConfig as c, TrackingOptions as d, AnalyticsEmitter as f, EmitterContext as g, EmitterConfig as h, AnalyticsProvider as i, PageProperties as j, IntegrationConfig as k, ProviderFactory as l, EmitterBasePayload as m, AnalyticsContext as n, ErrorContext as o, EmitterAliasPayload as p, AnalyticsManager as r, PostHogBootstrap as s, AnalyticsConfig as t, ProviderRegistry as u, EmitterGroupPayload as v, EmitterPayload as w, EmitterIntegrations as x, EmitterGroupTraits as y };
354
- //# sourceMappingURL=types-DnfdguWa.d.mts.map
354
+ //# sourceMappingURL=types-BxBnNQ0V.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-DnfdguWa.d.mts","names":[],"sources":["../src/shared/types/base-types.ts","../src/shared/emitters/emitter-types.ts","../src/shared/types/types.ts"],"mappings":";KAgBY,aAAA,+BAA4C,IAAA;AAAA,UAOvC,cAAA;EAAA,CACd,GAAA,WAAc,aAAA,GAAgB,aAAA,KAAkB,cAAA;AAAA;AAAA,KAQvC,UAAA,GAAa,cAAA;AAAA,KAOb,UAAA,GAAa,MAAA,SAAe,aAAA,GAAgB,aAAA;AAAA,KAO5C,WAAA,GAAc,MAAA,SAAe,aAAA,GAAgB,aAAA;AAAA,KAO7C,cAAA,GAAiB,MAAA,SAAe,aAAA,GAAgB,aAAA,KAAkB,cAAA;;;UCP7D,cAAA;EAIf,MAAA;EAKA,GAAA;IAEE,IAAA;IAEA,OAAA;IAEA,KAAA;IAEA,SAAA;EAAA;EAOF,QAAA;IAEE,IAAA;IAEA,MAAA;IAEA,MAAA;IAEA,IAAA;IAEA,OAAA;IAAA,CAEC,GAAA;EAAA;EAMH,MAAA;IAEE,EAAA;IAEA,aAAA;IAEA,iBAAA;IAEA,YAAA;IAEA,KAAA;IAEA,IAAA;IAEA,IAAA;IAEA,OAAA;IAEA,KAAA;EAAA;EAMF,EAAA;EAKA,OAAA;IAEE,IAAA;IAEA,OAAA;EAAA;EAMF,MAAA;EAKA,OAAA;IAEE,SAAA;IAEA,OAAA;IAEA,QAAA;IAEA,IAAA;EAAA;EAMF,EAAA;IAEE,IAAA;IAEA,OAAA;EAAA;EAMF,IAAA;IAEE,IAAA;IAEA,QAAA;IAEA,MAAA;IAEA,KAAA;IAEA,GAAA;EAAA;EAMF,QAAA;IAEE,EAAA;IAEA,IAAA;IAEA,IAAA;IAEA,GAAA;IAEA,IAAA;EAAA;EAMF,MAAA;IAEE,OAAA;IAEA,MAAA;IAEA,KAAA;EAAA;EAMF,QAAA;EAKA,OAAA;EAKA,MAAA,GAAS,UAAA;EAKT,SAAA;EAKA,aAAA;IAEE,MAAA;MACE,KAAA;MACA,OAAA;IAAA;IAGF,MAAA;IAEA,QAAA;IAEA,OAAA;IAEA,KAAA;IAEA,eAAA;IAEA,aAAA;IAEA,eAAA;MACE,KAAA;MACA,OAAA;IAAA;IAGF,KAAA;EAAA;EAMF,OAAA;EAKA,QAAA;IAEE,IAAA;IAEA,OAAA;IAEA,QAAA;IAEA,SAAA;IAEA,MAAA;IAEA,KAAA;EAAA;EAAA,CAMD,GAAA;AAAA;AAAA,KAUS,iBAAA,aAA8B,MAAA,SAAe,aAAA,GAAgB,aAAA;AAAA,UAmBxD,cAAA;EAIf,WAAA;EAKA,QAAA,OAAe,IAAA;EAIf,OAAA,GAAU,cAAA;EAKV,YAAA,GAAe,MAAA,SAAe,iBAAA;EAK9B,SAAA,GAAY,IAAA;AAAA;AAAA,UAmBG,mBAAA;EAAA,CAId,WAAA,WAAsB,iBAAA;EAIvB,GAAA;AAAA;AAAA,UAUe,kBAAA;EAIf,IAAA;EAKA,WAAA;EAIA,MAAA;EAKA,iBAAA,GAAoB,IAAA;EAIpB,UAAA,GAAa,IAAA;EAIb,MAAA,GAAS,IAAA;EAIT,SAAA,GAAY,IAAA;EAKZ,OAAA,GAAU,cAAA;EAIV,YAAA,GAAe,mBAAA;EAKf,SAAA;EAIA,OAAA;AAAA;AAAA,UAkBe,sBAAA,SAA+B,kBAAA;EAI9C,MAAA,GAAS,UAAA;EACT,IAAA;EACA,MAAA;AAAA;AAAA,UAkBe,mBAAA,SAA4B,kBAAA;EAI3C,KAAA;EAIA,UAAA,GAAa,UAAA;EACb,IAAA;AAAA;AAAA,UAkBe,kBAAA,SAA2B,kBAAA;EAI1C,QAAA;EAIA,IAAA;EAIA,UAAA,GAAa,UAAA;EACb,IAAA;AAAA;AAAA,UAkBe,oBAAA,SAA6B,kBAAA;EAI5C,IAAA;EAIA,UAAA,GAAa,UAAA;EACb,IAAA;AAAA;AAAA,UAkBe,mBAAA,SAA4B,kBAAA;EAI3C,OAAA;EAIA,MAAA,GAAS,WAAA;EACT,IAAA;AAAA;AAAA,UAkBe,mBAAA,SAA4B,kBAAA;EAI3C,UAAA;EACA,IAAA;EACA,MAAA;AAAA;AAAA,KASU,cAAA,GACR,sBAAA,GACA,mBAAA,GACA,kBAAA,GACA,oBAAA,GACA,mBAAA,GACA,mBAAA;AAAA,UAkBa,iBAAA;EAEf,KAAA;EAEA,SAAA;EAEA,QAAA;EAEA,IAAA;EAEA,KAAA;EAEA,QAAA;EAGA,GAAA;EAEA,QAAA,GAAW,IAAA;EAEX,MAAA;EAGA,OAAA;IAEE,MAAA;IAEA,IAAA;IAEA,KAAA;IAEA,UAAA;IAEA,OAAA;EAAA;EAIF,OAAA;IAEE,IAAA;IAEA,EAAA;IAEA,QAAA;IAEA,cAAA;IAEA,IAAA;EAAA;EAIF,MAAA;EAEA,SAAA,GAAY,IAAA;EAEZ,WAAA;EAEA,EAAA;EAEA,OAAA;EAAA,CAMC,GAAA,WACG,aAAA,GACA,aAAA,KACA,iBAAA,cACA,iBAAA;AAAA;AAAA,UAuBW,cAAA;EAEf,EAAA;EAEA,IAAA;EAEA,KAAA;EAEA,QAAA;EAEA,QAAA;EAEA,KAAA;EAEA,OAAA;EAAA,CAKC,GAAA,WAAc,aAAA,GAAgB,aAAA;AAAA;AAAA,UAmBhB,sBAAA;EAEf,QAAA;EAEA,OAAA;EAEA,KAAA;EAGA,QAAA,GAAW,cAAA;EAGX,QAAA;EAEA,WAAA;EAEA,KAAA;EAGA,KAAA;EAGA,SAAA;EAEA,SAAA;EAAA,CAMC,GAAA,WAAc,aAAA,GAAgB,aAAA,KAAkB,cAAA;AAAA;AAAA,UAmBlC,kBAAA;EAEf,MAAA;EAEA,SAAA,GAAY,IAAA;EAEZ,WAAA;EAEA,SAAA;EAEA,QAAA;EAEA,IAAA;EAEA,IAAA;EAEA,OAAA;EAAA,CAMC,GAAA,WAAc,aAAA,GAAgB,aAAA;AAAA;AAAA,UAqBhB,gBAAA;EASf,KAAA,CACE,MAAA,UACA,UAAA,WACA,OAAA,GAAU,cAAA,EACV,QAAA,OAAe,IAAA,8BACP,OAAA;EASV,KAAA,CACE,OAAA,UACA,MAAA,GAAS,WAAA,EACT,OAAA,GAAU,cAAA,EACV,QAAA,OAAe,IAAA,8BACP,OAAA;EASV,QAAA,CACE,MAAA,UACA,MAAA,GAAS,UAAA,EACT,OAAA,GAAU,cAAA,EACV,QAAA,OAAe,IAAA,8BACP,OAAA;EAUV,IAAA,CACE,QAAA,WACA,IAAA,WACA,UAAA,GAAa,UAAA,EACb,OAAA,GAAU,cAAA,EACV,QAAA,OAAe,IAAA,8BACP,OAAA;EASV,MAAA,CACE,IAAA,WACA,UAAA,GAAa,UAAA,EACb,OAAA,GAAU,cAAA,EACV,QAAA,OAAe,IAAA,8BACP,OAAA;EASV,KAAA,CACE,KAAA,UACA,UAAA,GAAa,UAAA,EACb,OAAA,GAAU,cAAA,EACV,QAAA,OAAe,IAAA,8BACP,OAAA;AAAA;AAAA,UAsBK,aAAA;EAIf,MAAA;EAIA,QAAA;EAIA,SAAA;EAIA,KAAA;EAIA,cAAA,GAAiB,OAAA,CAAQ,cAAA;EAIzB,QAAA;EAIA,aAAA;EAIA,YAAA,GAAe,MAAA,SAAe,iBAAA;EAI9B,WAAA;EAIA,UAAA;AAAA;;;UC15Be,gBAAA;EACf,UAAA;EACA,cAAA;EACA,YAAA,GAAe,MAAA;EACf,mBAAA,GAAsB,MAAA;AAAA;AAAA,UASP,cAAA;EAEf,MAAA;EACA,aAAA;EACA,KAAA;EACA,QAAA;EACA,OAAA;EAGA,MAAA;EACA,OAAA,GAAU,MAAA;AAAA;AAAA,UAsBK,iBAAA;EAAA,SACN,IAAA;EAKT,UAAA,CAAW,MAAA,EAAQ,cAAA,GAAiB,OAAA;EAKpC,KAAA,CAAM,KAAA,UAAe,UAAA,EAAY,UAAA,EAAY,OAAA,GAAU,gBAAA,GAAmB,OAAA;EAK1E,QAAA,EAAU,MAAA,UAAgB,MAAA,EAAQ,UAAA,EAAY,OAAA,GAAU,gBAAA,GAAmB,OAAA;EAK3E,IAAA,EAAM,IAAA,UAAc,UAAA,EAAY,cAAA,EAAgB,OAAA,GAAU,gBAAA,GAAmB,OAAA;EAK7E,MAAA,EAAQ,IAAA,UAAc,UAAA,EAAY,cAAA,EAAgB,OAAA,GAAU,gBAAA,GAAmB,OAAA;EAK/E,KAAA,EAAO,OAAA,UAAiB,MAAA,EAAQ,WAAA,EAAa,OAAA,GAAU,gBAAA,GAAmB,OAAA;EAK1E,KAAA,EAAO,MAAA,UAAgB,UAAA,UAAoB,OAAA,GAAU,gBAAA,GAAmB,OAAA;EAKxE,UAAA,EAAY,OAAA,EAAS,gBAAA;AAAA;AAAA,UASN,YAAA;EACf,QAAA;EACA,MAAA;EAAA,CACC,GAAA;AAAA;AAAA,UASc,eAAA;EAIf,KAAA;EAKA,MAAA;IAEM,iBAAA;IACA,YAAA;IACA,aAAA;IACA,YAAA,oBAAgC,OAAA;IAChC,OAAA;MAEM,SAAA,GAAY,gBAAA;MACZ,MAAA;MACA,IAAA;IAAA;IAAA,CAGL,GAAA;EAAA;EAOP,OAAA,KAAY,KAAA,WAAgB,OAAA,EAAS,YAAA;EAKrC,MAAA,KAAW,OAAA;EAKX,SAAA,EAAW,MAAA,SAAe,cAAA;AAAA;AAAA,UASX,eAAA;EAIf,SAAA,GAAY,MAAA,SAAe,cAAA;EAK3B,IAAA;EAKA,OAAA;EAKA,OAAA,GAAU,gBAAA;AAAA;AAAA,KAQA,eAAA,IAAmB,MAAA,EAAQ,cAAA,KAAmB,iBAAA;AAAA,KAO9C,gBAAA,GAAmB,MAAA,SAAe,eAAA;AAAA,UAS7B,gBAAA;EACf,MAAA;EACA,SAAA;EACA,cAAA;EACA,WAAA;EACA,MAAA,GAAS,UAAA;EAAA,CACR,GAAA;AAAA;AAAA,UAWc,kBAAA;EACf,IAAA;EACA,UAAA,EAAY,UAAA;EACZ,QAAA;AAAA;AAAA,UAee,gBAAA;EAIf,UAAA,IAAc,gBAAA;EAKd,UAAA,IAAc,OAAA;EAKd,UAAA,CAAW,OAAA,EAAS,gBAAA;EAKpB,aAAA,KAAkB,OAAA,EAAS,cAAA,KAAmB,OAAA;EAK9C,IAAA,CAAK,OAAA,EAAS,cAAA,EAAgB,OAAA;IAAY,OAAA;EAAA,IAAqB,OAAA;EAK/D,SAAA,CACE,QAAA,EAAU,cAAA,IACV,OAAA;IAAY,OAAA;IAAkB,WAAA;IAAsB,QAAA;EAAA,IACnD,OAAA;EAOH,KAAA,CAAM,OAAA,EAAS,mBAAA,GAAsB,OAAA;EACrC,KAAA,CAAM,KAAA,UAAe,UAAA,GAAa,UAAA,EAAY,OAAA,GAAU,eAAA,GAAkB,OAAA;EAO1E,QAAA,CAAS,OAAA,EAAS,sBAAA,GAAyB,OAAA;EAC3C,QAAA,CAAS,MAAA,UAAgB,MAAA,GAAS,UAAA,EAAY,OAAA,GAAU,eAAA,GAAkB,OAAA;EAO1E,IAAA,CAAK,OAAA,EAAS,kBAAA,GAAqB,OAAA;EACnC,IAAA,CAAK,IAAA,WAAe,UAAA,GAAa,cAAA,EAAgB,OAAA,GAAU,eAAA,GAAkB,OAAA;EAO7E,MAAA,EAAQ,OAAA,EAAS,oBAAA,GAAuB,OAAA;EACxC,MAAA,EAAQ,IAAA,WAAe,UAAA,GAAa,cAAA,EAAgB,OAAA,GAAU,eAAA,GAAkB,OAAA;EAOhF,KAAA,CAAM,OAAA,EAAS,mBAAA,GAAsB,OAAA;EACrC,KAAA,CAAM,OAAA,UAAiB,MAAA,GAAS,WAAA,EAAa,OAAA,GAAU,eAAA,GAAkB,OAAA;EAOzE,KAAA,CAAM,OAAA,EAAS,mBAAA,GAAsB,OAAA;EACrC,KAAA,CAAM,MAAA,UAAgB,UAAA,UAAoB,OAAA,GAAU,eAAA,GAAkB,OAAA;EAKtE,kBAAA;EAKA,WAAA,CAAY,IAAA,WAAe,iBAAA;EAK3B,KAAA;EAKA,QAAA,IAAY,OAAA;EAMZ,qBAAA,CAAsB,OAAA,EAAS,cAAA,GAAiB,OAAA;EAMhD,cAAA,CAAe,SAAA,EAAW,kBAAA,GAAqB,OAAA;AAAA"}
1
+ {"version":3,"file":"types-BxBnNQ0V.d.mts","names":[],"sources":["../src/shared/types/base-types.ts","../src/shared/emitters/emitter-types.ts","../src/shared/types/types.ts"],"mappings":"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"}
@@ -213,4 +213,4 @@ interface EcommerceEventSpec<T = any> {
213
213
  type EcommerceEventProperties = BaseProductProperties | ExtendedProductProperties | ProductListProperties | CartProperties | CheckoutProperties | OrderProperties | CouponProperties | WishlistProperties | (BaseProductProperties & SharingProperties) | (CartProperties & SharingProperties) | ReviewProperties;
214
214
  //#endregion
215
215
  export { SearchResultsProperties as C, ReviewProperties as S, WishlistProperties as T, ProductListProperties as _, CheckoutProgressProperties as a, RegistryProperties as b, ECOMMERCE_EVENTS as c, EcommerceEventSpec as d, EngagementProperties as f, ProductComparisonProperties as g, OrderStatusProperties as h, CartUpdateProperties as i, EcommerceEventName as l, OrderProperties as m, CartAbandonmentProperties as n, CheckoutProperties as o, ExtendedProductProperties as p, CartProperties as r, CouponProperties as s, BaseProductProperties as t, EcommerceEventProperties as u, RecommendationProperties as v, SharingProperties as w, ReturnProperties as x, RegistryItemProperties as y };
216
- //# sourceMappingURL=types-Brm88i6e.d.mts.map
216
+ //# sourceMappingURL=types-CBvxUEaF.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-Brm88i6e.d.mts","names":[],"sources":["../src/shared/emitters/ecommerce/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types-CBvxUEaF.d.mts","names":[],"sources":["../src/shared/emitters/ecommerce/types.ts"],"mappings":"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"}
package/types.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { C as EmitterPagePayload, D as EmitterTrackPayload, S as EmitterOptions, b as EmitterIdentifyPayload, c as ProviderConfig, d as TrackingOptions, g as EmitterContext, i as AnalyticsProvider, n as AnalyticsContext, p as EmitterAliasPayload, r as AnalyticsManager, t as AnalyticsConfig, u as ProviderRegistry, v as EmitterGroupPayload, w as EmitterPayload } from "./types-DnfdguWa.mjs";
2
- import { d as EcommerceEventSpec, m as OrderProperties, p as ExtendedProductProperties, r as CartProperties, t as BaseProductProperties } from "./types-Brm88i6e.mjs";
3
- import { a as ConsoleConfig, c as PostHogConfig, i as SegmentOptions, l as PostHogOptions, n as VercelOptions, o as ConsoleOptions, r as SegmentConfig, s as BootstrapData, t as VercelConfig } from "./vercel-types-Crq8m8c1.mjs";
1
+ import { C as EmitterPagePayload, D as EmitterTrackPayload, S as EmitterOptions, b as EmitterIdentifyPayload, c as ProviderConfig, d as TrackingOptions, g as EmitterContext, i as AnalyticsProvider, n as AnalyticsContext, p as EmitterAliasPayload, r as AnalyticsManager, t as AnalyticsConfig, u as ProviderRegistry, v as EmitterGroupPayload, w as EmitterPayload } from "./types-BxBnNQ0V.mjs";
2
+ import { d as EcommerceEventSpec, m as OrderProperties, p as ExtendedProductProperties, r as CartProperties, t as BaseProductProperties } from "./types-CBvxUEaF.mjs";
3
+ import { a as ConsoleConfig, c as PostHogConfig, i as SegmentOptions, l as PostHogOptions, n as VercelOptions, o as ConsoleOptions, r as SegmentConfig, s as BootstrapData, t as VercelConfig } from "./vercel-types-lwakUfoI.mjs";
4
4
  export { type AnalyticsConfig, type AnalyticsContext, type AnalyticsManager, type AnalyticsProvider, type BaseProductProperties, type BootstrapData, type CartProperties, type ConsoleConfig, type ConsoleOptions, type EcommerceEventSpec, type EmitterAliasPayload, type EmitterContext, type EmitterGroupPayload, type EmitterIdentifyPayload, type EmitterOptions, type EmitterPagePayload, type EmitterPayload, type EmitterTrackPayload, type ExtendedProductProperties, type OrderProperties, type PostHogConfig, type PostHogOptions, type ProviderConfig, type ProviderRegistry, type SegmentConfig, type SegmentOptions, type TrackingOptions, type VercelConfig, type VercelOptions };
@@ -99,4 +99,4 @@ interface VercelConfig {
99
99
  type VercelOptions = Record<string, any>;
100
100
  //#endregion
101
101
  export { ConsoleConfig as a, PostHogConfig as c, SegmentOptions as i, PostHogOptions as l, VercelOptions as n, ConsoleOptions as o, SegmentConfig as r, BootstrapData as s, VercelConfig as t };
102
- //# sourceMappingURL=vercel-types-Crq8m8c1.d.mts.map
102
+ //# sourceMappingURL=vercel-types-lwakUfoI.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vercel-types-Crq8m8c1.d.mts","names":[],"sources":["../src/shared/types/posthog-types.ts","../src/shared/types/console-types.ts","../src/shared/types/segment-types.ts","../src/shared/types/vercel-types.ts"],"mappings":";UAKiB,aAAA;EACf,MAAA;EACA,OAAA;IAEE,QAAA;IACA,OAAA;IACA,WAAA;IACA,gBAAA;IACA,iBAAA;IACA,yBAAA;IACA,sBAAA;IACA,WAAA;IACA,gBAAA;IACA,MAAA,IAAU,OAAA;IAGV,eAAA;IACA,gBAAA;IACA,WAAA;IAGA,YAAA;IACA,gBAAA;IACA,uBAAA;IAGA,iBAAA;MACE,aAAA;MACA,gBAAA;QACE,KAAA;QACA,IAAA;QACA,gBAAA;QACA,KAAA;QACA,KAAA;QACA,MAAA;QACA,QAAA;QACA,KAAA;QACA,MAAA;QACA,GAAA;QACA,IAAA;QACA,IAAA;QACA,GAAA;QACA,IAAA;MAAA;MAEF,wBAAA;MACA,YAAA;MACA,gBAAA;MACA,aAAA;MACA,QAAA;QACE,iBAAA;QACA,UAAA;MAAA;IAAA;IAKJ,WAAA,IAAe,KAAA;IACf,mBAAA,IAAuB,UAAA,OAAiB,KAAA;IAGxC,KAAA;IACA,uBAAA;IAGA,OAAA;IACA,aAAA;IAGA,aAAA;MACE,KAAA,GAAQ,YAAA;MACR,IAAA;QACE,UAAA;QACA,IAAA;MAAA;IAAA;IAKJ,SAAA,GAAY,aAAA;EAAA;AAAA;AAAA,UAaC,aAAA;EACf,UAAA;AAAA;AAAA,KAmCU,cAAA,GAAiB,MAAA;;;UC7HZ,aAAA;EACf,OAAA;IAEM,MAAA;IACA,YAAA;IACA,QAAA;IACA,MAAA;EAAA;AAAA;AAAA,KAKI,cAAA,GAAiB,MAAA;;;UCXZ,aAAA;EACf,OAAA;IACE,YAAA,GAAe,MAAA;IACf,OAAA,GAAU,MAAA;IACV,WAAA;EAAA;EAEF,QAAA;AAAA;AAAA,KAGU,cAAA,GAAiB,MAAA;;;UCTZ,YAAA;EAGf,OAAA;IACE,IAAA;IACA,KAAA;IACA,UAAA,IAAc,KAAA;EAAA;AAAA;AAAA,KAON,aAAA,GAAgB,MAAA"}
1
+ {"version":3,"file":"vercel-types-lwakUfoI.d.mts","names":[],"sources":["../src/shared/types/posthog-types.ts","../src/shared/types/console-types.ts","../src/shared/types/segment-types.ts","../src/shared/types/vercel-types.ts"],"mappings":";UAKiB,aAAA;EACf,MAAA;EACA,OAAA;IAEE,QAAA;IACA,OAAA;IACA,WAAA;IACA,gBAAA;IACA,iBAAA;IACA,yBAAA;IACA,sBAAA;IACA,WAAA;IACA,gBAAA;IACA,MAAA,IAAU,OAAA;IAGV,eAAA;IACA,gBAAA;IACA,WAAA;IAGA,YAAA;IACA,gBAAA;IACA,uBAAA;IAGA,iBAAA;MACE,aAAA;MACA,gBAAA;QACE,KAAA;QACA,IAAA;QACA,gBAAA;QACA,KAAA;QACA,KAAA;QACA,MAAA;QACA,QAAA;QACA,KAAA;QACA,MAAA;QACA,GAAA;QACA,IAAA;QACA,IAAA;QACA,GAAA;QACA,IAAA;MAAA;MAEF,wBAAA;MACA,YAAA;MACA,gBAAA;MACA,aAAA;MACA,QAAA;QACE,iBAAA;QACA,UAAA;MAAA;IAAA;IAKJ,WAAA,IAAe,KAAA;IACf,mBAAA,IAAuB,UAAA,OAAiB,KAAA;IAGxC,KAAA;IACA,uBAAA;IAGA,OAAA;IACA,aAAA;IAGA,aAAA;MACE,KAAA,GAAQ,YAAA;MACR,IAAA;QACE,UAAA;QACA,IAAA;MAAA;IAAA;IAKJ,SAAA,GAAY,aAAA;EAAA;AAAA;AAAA,UAaC,aAAA;EACf,UAAA;AAAA;AAAA,KAmCU,cAAA,GAAiB,MAAA;;;UC7HZ,aAAA;EACf,OAAA;IAEM,MAAA;IACA,YAAA;IACA,QAAA;IACA,MAAA;EAAA;AAAA;AAAA,KAKI,cAAA,GAAiB,MAAA;;;UCXZ,aAAA;EACf,OAAA;IACE,YAAA,GAAe,MAAA;IACf,OAAA,GAAU,MAAA;IACV,WAAA;EAAA;EAEF,QAAA;AAAA;AAAA,KAGU,cAAA,GAAiB,MAAA;;;UCTZ,YAAA;EAGf,OAAA;IACE,IAAA;IACA,KAAA;IACA,UAAA,IAAc,KAAA;EAAA;AAAA;AAAA,KAON,aAAA,GAAgB,MAAA"}
package/logs-B4zFs5kX.mjs DELETED
@@ -1,108 +0,0 @@
1
- //#region ../shared/src/logs.tsx
2
- /**
3
- * @fileoverview Canonical logger for the OneApp platform.
4
- *
5
- * This module provides isomorphic logging functions that work in any environment
6
- * (Browser, Node.js, Edge). Logs directly to console with runtime information.
7
- *
8
- * Preferred usage is to import from '@od-oneapp/shared/logs'.
9
- */
10
- /**
11
- * Get runtime environment information.
12
- *
13
- * Detects the current runtime environment (browser, Node.js, edge, Bun) and returns
14
- * detailed information about the environment type, version, and capabilities.
15
- *
16
- * @returns Runtime information object with type, version, and environment-specific details
17
- *
18
- * @example
19
- * ```typescript
20
- * const runtime = getRuntimeInfo();
21
- * // Returns: { type: 'node', version: '22.0.0', major: 22, minor: 0, isNode22Plus: true, isNextJs: true }
22
- * // or: { type: 'browser', isNextJs: true }
23
- * // or: { type: 'edge', variant: 'vercel' }
24
- * ```
25
- */
26
- const getRuntimeInfo = () => {
27
- if (typeof globalThis !== "undefined" && globalThis.EdgeRuntime) return {
28
- type: "edge",
29
- variant: "vercel"
30
- };
31
- if (typeof globalThis !== "undefined" && globalThis.caches && typeof globalThis.caches !== "undefined") return {
32
- type: "edge",
33
- variant: "cloudflare"
34
- };
35
- if (typeof process !== "undefined" && process.versions?.bun) return {
36
- type: "bun",
37
- version: process.versions.bun
38
- };
39
- if (typeof globalThis !== "undefined" && "window" in globalThis && typeof globalThis.window !== "undefined" && typeof globalThis.window?.document !== "undefined" && typeof globalThis.window?.navigator !== "undefined") return {
40
- type: "browser",
41
- isNextJs: Boolean(globalThis.window?.__NEXT_DATA__)
42
- };
43
- if (typeof process !== "undefined" && process.versions?.node) {
44
- const nodeVersion = parseInt(process.versions.node.split(".")[0] ?? "0");
45
- const nodeVersionMinor = parseInt(process.versions.node.split(".")[1] ?? "0");
46
- if (nodeVersion < 22) console.warn(`[Observability] Node ${process.versions.node} detected. Node 22+ is required for optimal performance and latest features.`);
47
- return {
48
- type: "node",
49
- version: process.versions.node,
50
- major: nodeVersion,
51
- minor: nodeVersionMinor,
52
- isNode22Plus: nodeVersion >= 22,
53
- isNextJs: Boolean(process.env.NEXT_RUNTIME) || Boolean(process.env.__NEXT_RUNTIME) || Boolean(process.env.NEXT_PUBLIC_VERCEL_ENV)
54
- };
55
- }
56
- return { type: "unknown" };
57
- };
58
- const runtimeInfo = getRuntimeInfo();
59
- /**
60
- * Create a generic log function factory.
61
- *
62
- * Factory function that creates log functions for different levels (debug, info, warn, error).
63
- * Logs directly to console with runtime information.
64
- */
65
- const createLogFunction = (level) => {
66
- return (message, context) => {
67
- let actualContext;
68
- let errorObj;
69
- if (context instanceof Error) errorObj = context;
70
- else actualContext = context;
71
- if (message instanceof Error) {
72
- const combinedContext = {
73
- ...actualContext,
74
- ...errorObj ? { secondaryError: errorObj.message } : {}
75
- };
76
- const consoleMethod = console[level];
77
- if (Object.keys(combinedContext).length > 0) consoleMethod(`[${runtimeInfo.type}]`, message, combinedContext);
78
- else consoleMethod(`[${runtimeInfo.type}]`, message);
79
- } else {
80
- const finalError = errorObj;
81
- const contextStr = actualContext ? JSON.stringify(actualContext) : "";
82
- const logMessage = contextStr ? `${message} ${contextStr}` : message;
83
- const consoleMethod = console[level];
84
- if (finalError) consoleMethod(`[${runtimeInfo.type}]`, logMessage, finalError);
85
- else consoleMethod(`[${runtimeInfo.type}]`, logMessage);
86
- }
87
- };
88
- };
89
- /**
90
- * Log a debug message (isomorphic - works in any environment).
91
- */
92
- const logDebug = createLogFunction("debug");
93
- /**
94
- * Log an info message (isomorphic - works in any environment).
95
- */
96
- const logInfo = createLogFunction("info");
97
- /**
98
- * Log a warning message (isomorphic - works in any environment).
99
- */
100
- const logWarn = createLogFunction("warn");
101
- /**
102
- * Log an error message (isomorphic - works in any environment).
103
- */
104
- const logError = createLogFunction("error");
105
-
106
- //#endregion
107
- export { logWarn as i, logError as n, logInfo as r, logDebug as t };
108
- //# sourceMappingURL=logs-B4zFs5kX.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs-B4zFs5kX.mjs","names":[],"sources":["../../shared/src/logs.tsx"],"sourcesContent":["/**\n * @fileoverview Canonical logger for the OneApp platform.\n *\n * This module provides isomorphic logging functions that work in any environment\n * (Browser, Node.js, Edge). Logs directly to console with runtime information.\n *\n * Preferred usage is to import from '@repo/shared/logs'.\n */\n\n/**\n * Get runtime environment information.\n *\n * Detects the current runtime environment (browser, Node.js, edge, Bun) and returns\n * detailed information about the environment type, version, and capabilities.\n *\n * @returns Runtime information object with type, version, and environment-specific details\n *\n * @example\n * ```typescript\n * const runtime = getRuntimeInfo();\n * // Returns: { type: 'node', version: '22.0.0', major: 22, minor: 0, isNode22Plus: true, isNextJs: true }\n * // or: { type: 'browser', isNextJs: true }\n * // or: { type: 'edge', variant: 'vercel' }\n * ```\n */\nexport const getRuntimeInfo = () => {\n // Edge runtime detection (Vercel Edge, Cloudflare Workers)\n // Note: Casting globalThis to check for runtime-specific properties not in standard TypeScript types\n if (\n typeof globalThis !== 'undefined' &&\n (globalThis as unknown as { EdgeRuntime?: unknown }).EdgeRuntime\n ) {\n return { type: 'edge', variant: 'vercel' };\n }\n if (\n typeof globalThis !== 'undefined' &&\n (globalThis as unknown as { caches?: unknown }).caches &&\n typeof (globalThis as unknown as { caches?: unknown }).caches !== 'undefined'\n ) {\n return { type: 'edge', variant: 'cloudflare' };\n }\n\n // Bun detection\n if (typeof process !== 'undefined' && process.versions?.bun) {\n return { type: 'bun', version: process.versions.bun };\n }\n\n // Browser detection (more robust)\n // Note: Casting globalThis to check for browser-specific properties not in standard Node.js types\n if (\n typeof globalThis !== 'undefined' &&\n 'window' in globalThis &&\n typeof (globalThis as unknown as { window?: unknown }).window !== 'undefined' &&\n typeof (globalThis as unknown as { window?: { document?: unknown } }).window?.document !==\n 'undefined' &&\n typeof (globalThis as unknown as { window?: { navigator?: unknown } }).window?.navigator !==\n 'undefined'\n ) {\n return {\n type: 'browser',\n isNextJs: Boolean(\n (globalThis as unknown as { window?: { __NEXT_DATA__?: unknown } }).window?.__NEXT_DATA__,\n ),\n };\n }\n\n // Node.js detection with version check\n if (typeof process !== 'undefined' && process.versions?.node) {\n const nodeVersion = parseInt(process.versions.node.split('.')[0] ?? '0');\n const nodeVersionMinor = parseInt(process.versions.node.split('.')[1] ?? '0');\n\n if (nodeVersion < 22) {\n // Note: Using console.warn here as observability system may not be initialized yet\n // eslint-disable-next-line no-console\n console.warn(\n `[Observability] Node ${process.versions.node} detected. Node 22+ is required for optimal performance and latest features.`,\n );\n }\n\n return {\n type: 'node',\n version: process.versions.node,\n major: nodeVersion,\n minor: nodeVersionMinor,\n isNode22Plus: nodeVersion >= 22,\n isNextJs:\n Boolean(process.env.NEXT_RUNTIME) ||\n Boolean(process.env.__NEXT_RUNTIME) ||\n Boolean(process.env.NEXT_PUBLIC_VERCEL_ENV),\n };\n }\n\n // Fallback\n return { type: 'unknown' };\n};\n\n// Cache the runtime info\nconst runtimeInfo = getRuntimeInfo();\n\n/**\n * Get cached runtime environment information.\n *\n * Returns the runtime information that was detected at module load time.\n * This is cached to avoid repeated detection checks.\n *\n * @returns Cached runtime information object\n */\nexport const getRuntimeEnvironment = () => runtimeInfo;\n\n/**\n * Detect if code is running in a browser environment\n * Extracted to shared utility to avoid duplication\n * @returns true if running in browser, false otherwise\n */\nexport function isBrowser(): boolean {\n // Note: Casting globalThis to check for browser-specific properties not in standard Node.js types\n return (\n typeof globalThis !== 'undefined' &&\n 'window' in globalThis &&\n typeof (globalThis as unknown as { window?: unknown }).window !== 'undefined' &&\n typeof (globalThis as unknown as { window?: { document?: unknown } }).window?.document !==\n 'undefined' &&\n typeof (globalThis as unknown as { window?: { navigator?: unknown } }).window?.navigator !==\n 'undefined'\n );\n}\n\n/**\n * Determine if console logging should be enabled based on environment\n * Centralized logic to avoid duplication across entry points\n * @param envNodeEnv - The NEXT_PUBLIC_NODE_ENV value\n * @param consoleEnabled - The NEXT_PUBLIC_OBSERVABILITY_CONSOLE_ENABLED value (explicit control)\n * @param debugEnabled - The NEXT_PUBLIC_OBSERVABILITY_DEBUG value\n * @returns boolean indicating if console should be enabled\n */\nexport function shouldEnableConsole(\n envNodeEnv?: string,\n consoleEnabled?: boolean,\n debugEnabled?: boolean,\n): boolean {\n const isDevelopment = envNodeEnv === 'development' || process.env.NODE_ENV === 'development';\n\n // Priority: explicit control > development mode > debug mode\n if (consoleEnabled !== undefined) {\n return consoleEnabled;\n }\n if (isDevelopment) {\n return true;\n }\n return debugEnabled ?? false;\n}\n\n/**\n * Create a generic log function factory.\n *\n * Factory function that creates log functions for different levels (debug, info, warn, error).\n * Logs directly to console with runtime information.\n */\nconst createLogFunction = (level: 'debug' | 'info' | 'warn' | 'error') => {\n return (message: string | Error, context?: Record<string, unknown> | Error): void => {\n // Determine the actual context object and error object\n let actualContext: Record<string, unknown> | undefined;\n let errorObj: Error | undefined;\n\n if (context instanceof Error) {\n errorObj = context;\n } else {\n actualContext = context;\n }\n\n if (message instanceof Error) {\n // If message is an Error, use it as the primary error\n const combinedContext = {\n ...actualContext,\n ...(errorObj ? { secondaryError: errorObj.message } : {}),\n };\n\n // eslint-disable-next-line no-console -- Logger implementation requires console access\n const consoleMethod = console[level];\n if (Object.keys(combinedContext).length > 0) {\n consoleMethod(`[${runtimeInfo.type}]`, message, combinedContext);\n } else {\n consoleMethod(`[${runtimeInfo.type}]`, message);\n }\n } else {\n // For string messages\n const finalError = errorObj;\n const contextStr = actualContext ? JSON.stringify(actualContext) : '';\n const logMessage = contextStr ? `${message} ${contextStr}` : message;\n\n // eslint-disable-next-line no-console -- Logger implementation requires console access\n const consoleMethod = console[level];\n if (finalError) {\n consoleMethod(`[${runtimeInfo.type}]`, logMessage, finalError);\n } else {\n consoleMethod(`[${runtimeInfo.type}]`, logMessage);\n }\n }\n };\n};\n\n/**\n * Log a debug message (isomorphic - works in any environment).\n */\nexport const logDebug = createLogFunction('debug');\n\n/**\n * Log an info message (isomorphic - works in any environment).\n */\nexport const logInfo = createLogFunction('info');\n\n/**\n * Log a message (alias for logInfo).\n */\nexport const log = logInfo;\n\n/**\n * Log a warning message (isomorphic - works in any environment).\n */\nexport const logWarn = createLogFunction('warn');\n\n/**\n * Log an error message (isomorphic - works in any environment).\n */\nexport const logError = createLogFunction('error');\n\n/**\n * Compatibility Logger class for components that use `new Logger('name')` pattern.\n * @deprecated Use logDebug, logInfo, logWarn, logError directly from @repo/shared/logs\n */\nexport class Logger {\n private prefix: string;\n\n constructor(name: string) {\n this.prefix = name;\n }\n\n debug(message: string, context?: Record<string, unknown>): void {\n logDebug(`[${this.prefix}] ${message}`, context);\n }\n\n info(message: string, context?: Record<string, unknown>): void {\n logInfo(`[${this.prefix}] ${message}`, context);\n }\n\n log(message: string, context?: Record<string, unknown>): void {\n this.info(message, context);\n }\n\n warn(message: string, context?: Record<string, unknown>): void {\n logWarn(`[${this.prefix}] ${message}`, context);\n }\n\n error(message: string | Error, context?: Record<string, unknown>): void {\n if (message instanceof Error) {\n logError(message, { prefix: this.prefix, ...context });\n } else {\n logError(new Error(message), { prefix: this.prefix, ...context });\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAa,uBAAuB;AAGlC,KACE,OAAO,eAAe,eACrB,WAAoD,YAErD,QAAO;EAAE,MAAM;EAAQ,SAAS;EAAU;AAE5C,KACE,OAAO,eAAe,eACrB,WAA+C,UAChD,OAAQ,WAA+C,WAAW,YAElE,QAAO;EAAE,MAAM;EAAQ,SAAS;EAAc;AAIhD,KAAI,OAAO,YAAY,eAAe,QAAQ,UAAU,IACtD,QAAO;EAAE,MAAM;EAAO,SAAS,QAAQ,SAAS;EAAK;AAKvD,KACE,OAAO,eAAe,eACtB,YAAY,cACZ,OAAQ,WAA+C,WAAW,eAClE,OAAQ,WAA8D,QAAQ,aAC5E,eACF,OAAQ,WAA+D,QAAQ,cAC7E,YAEF,QAAO;EACL,MAAM;EACN,UAAU,QACP,WAAmE,QAAQ,cAC7E;EACF;AAIH,KAAI,OAAO,YAAY,eAAe,QAAQ,UAAU,MAAM;EAC5D,MAAM,cAAc,SAAS,QAAQ,SAAS,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI;EACxE,MAAM,mBAAmB,SAAS,QAAQ,SAAS,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI;AAE7E,MAAI,cAAc,GAGhB,SAAQ,KACN,wBAAwB,QAAQ,SAAS,KAAK,8EAC/C;AAGH,SAAO;GACL,MAAM;GACN,SAAS,QAAQ,SAAS;GAC1B,OAAO;GACP,OAAO;GACP,cAAc,eAAe;GAC7B,UACE,QAAQ,QAAQ,IAAI,aAAa,IACjC,QAAQ,QAAQ,IAAI,eAAe,IACnC,QAAQ,QAAQ,IAAI,uBAAuB;GAC9C;;AAIH,QAAO,EAAE,MAAM,WAAW;;AAI5B,MAAM,cAAc,gBAAgB;;;;;;;AA6DpC,MAAM,qBAAqB,UAA+C;AACxE,SAAQ,SAAyB,YAAoD;EAEnF,IAAI;EACJ,IAAI;AAEJ,MAAI,mBAAmB,MACrB,YAAW;MAEX,iBAAgB;AAGlB,MAAI,mBAAmB,OAAO;GAE5B,MAAM,kBAAkB;IACtB,GAAG;IACH,GAAI,WAAW,EAAE,gBAAgB,SAAS,SAAS,GAAG,EAAE;IACzD;GAGD,MAAM,gBAAgB,QAAQ;AAC9B,OAAI,OAAO,KAAK,gBAAgB,CAAC,SAAS,EACxC,eAAc,IAAI,YAAY,KAAK,IAAI,SAAS,gBAAgB;OAEhE,eAAc,IAAI,YAAY,KAAK,IAAI,QAAQ;SAE5C;GAEL,MAAM,aAAa;GACnB,MAAM,aAAa,gBAAgB,KAAK,UAAU,cAAc,GAAG;GACnE,MAAM,aAAa,aAAa,GAAG,QAAQ,GAAG,eAAe;GAG7D,MAAM,gBAAgB,QAAQ;AAC9B,OAAI,WACF,eAAc,IAAI,YAAY,KAAK,IAAI,YAAY,WAAW;OAE9D,eAAc,IAAI,YAAY,KAAK,IAAI,WAAW;;;;;;;AAS1D,MAAa,WAAW,kBAAkB,QAAQ;;;;AAKlD,MAAa,UAAU,kBAAkB,OAAO;;;;AAUhD,MAAa,UAAU,kBAAkB,OAAO;;;;AAKhD,MAAa,WAAW,kBAAkB,QAAQ"}