{"version":3,"sources":["../src/schemas.ts","../src/schemas/primitives.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/schemas/index.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["// Browser-safe schema-only exports\n// This file exports ONLY schemas without any Node.js dependencies\nexport { settings, mapping } from './schemas/index';\n","import { z } from '@walkeros/core/dev';\n\nexport const AccountTypeSchema = z.enum([\n  'GOOGLE_ADS',\n  'DISPLAY_VIDEO_ADVERTISER',\n  'DISPLAY_VIDEO_PARTNER',\n  'GOOGLE_ANALYTICS_PROPERTY',\n]);\n\nexport const EventSourceSchema = z.enum([\n  'WEB',\n  'APP',\n  'IN_STORE',\n  'PHONE',\n  'OTHER',\n]);\n\nexport const ConsentStatusSchema = z.enum([\n  'CONSENT_GRANTED',\n  'CONSENT_DENIED',\n]);\n\nexport const ConsentSchema = z.object({\n  adUserData: ConsentStatusSchema.describe(\n    'Consent for data collection and use',\n  ).optional(),\n  adPersonalization: ConsentStatusSchema.describe(\n    'Consent for ad personalization',\n  ).optional(),\n});\n\nexport const OperatingAccountSchema = z.object({\n  accountId: z\n    .string()\n    .min(1)\n    .describe('Account ID (e.g., \"123-456-7890\" for Google Ads)'),\n  accountType: AccountTypeSchema.describe('Type of account'),\n});\n\nexport const DestinationSchema = z.object({\n  operatingAccount: OperatingAccountSchema.describe(\n    'Operating account details',\n  ),\n  productDestinationId: z\n    .string()\n    .min(1)\n    .describe(\n      'Product-specific destination ID (conversion action or user list)',\n    ),\n});\n","import { z } from '@walkeros/core/dev';\nimport {\n  DestinationSchema,\n  EventSourceSchema,\n  ConsentSchema,\n} from './primitives';\n\n/**\n * Service account credentials schema\n */\nconst CredentialsSchema = z.object({\n  client_email: z.string().email().describe('Service account email'),\n  private_key: z\n    .string()\n    .min(1)\n    .describe('Service account private key (PEM format)'),\n});\n\nexport const SettingsSchema = z.object({\n  credentials: CredentialsSchema.optional().describe(\n    'Service account credentials (client_email + private_key). Recommended for serverless environments. (deprecated: use config.credentials)',\n  ),\n  keyFilename: z\n    .string()\n    .optional()\n    .describe(\n      'Path to service account JSON file. For local development or environments with filesystem access.',\n    ),\n  scopes: z\n    .array(z.string())\n    .optional()\n    .describe(\n      'OAuth scopes for Data Manager API. Defaults to datamanager scope.',\n    ),\n  destinations: z\n    .array(DestinationSchema)\n    .min(1)\n    .max(10)\n    .describe(\n      'Array of destination accounts and conversion actions/user lists (max 10)',\n    ),\n  eventSource: EventSourceSchema.optional()\n    .default('WEB')\n    .describe(\n      'Event source for all events. Defaults to WEB. Values: WEB, APP, IN_STORE, PHONE, OTHER',\n    ),\n  batchSize: z\n    .number()\n    .int()\n    .min(1)\n    .max(2000)\n    .describe(\n      'Maximum number of events to batch before sending (max 2000, like 100)',\n    )\n    .optional(),\n  batchInterval: z\n    .number()\n    .int()\n    .min(0)\n    .describe(\n      'Time in milliseconds to wait before auto-flushing batch (like 5000)',\n    )\n    .optional(),\n  validateOnly: z\n    .boolean()\n    .describe('If true, validate request without ingestion (testing mode)')\n    .optional(),\n  url: z\n    .string()\n    .url()\n    .describe(\n      'Override API endpoint for testing (like https://datamanager.googleapis.com/v1)',\n    )\n    .optional(),\n  consent: ConsentSchema.describe(\n    'Request-level consent for all events',\n  ).optional(),\n  testEventCode: z\n    .string()\n    .describe('Test event code for debugging (like TEST12345)')\n    .optional(),\n  logLevel: z\n    .enum(['debug', 'info', 'warn', 'error', 'none'])\n    .describe('Log level for debugging (debug shows all API calls)')\n    .optional(),\n  userData: z\n    .record(z.string(), z.unknown())\n    .describe(\n      \"Guided helper: User data mapping for all events (like { email: 'user.id', phone: 'data.phone' })\",\n    )\n    .optional(),\n  userId: z\n    .any()\n    .describe(\n      \"Guided helper: First-party user ID for all events (like 'user.id')\",\n    )\n    .optional(),\n  clientId: z\n    .any()\n    .describe(\n      \"Guided helper: GA4 client ID for all events (like 'user.device')\",\n    )\n    .optional(),\n  appInstanceId: z\n    .any()\n    .describe(\n      \"Guided helper: GA4 app instance ID (Firebase) for all events (like 'user.appInstanceId')\",\n    )\n    .optional(),\n  sessionAttributes: z\n    .any()\n    .describe(\n      \"Guided helper: Privacy-safe attribution for all events (like 'context.sessionAttributes')\",\n    )\n    .optional(),\n  consentAdUserData: z\n    .union([z.string(), z.boolean()])\n    .describe(\n      \"Consent mapping: Field name from event.consent (like 'marketing') or static boolean value\",\n    )\n    .optional(),\n  consentAdPersonalization: z\n    .union([z.string(), z.boolean()])\n    .describe(\n      \"Consent mapping: Field name from event.consent (like 'targeting') or static boolean value\",\n    )\n    .optional(),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\n// Data Manager uses flexible mapping via walkerOS mapping system\n// No event-specific mapping schema needed (similar to Meta CAPI pattern)\nexport const MappingSchema = z.object({});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","export * from './primitives';\nexport * from './settings';\nexport * from './mapping';\n\nimport { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\n\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\n","export * as env from './env';\nexport * as step from './step';\n","import type { OAuth2Client } from 'google-auth-library';\nimport type { Env } from '../types';\n\n/**\n * Example environment configurations for Google Data Manager destination.\n *\n * The destination invokes `env.fetch(url, { method, headers, body })` once\n * per push, with `Authorization: Bearer <accessToken>` obtained from\n * `env.authClient` via `getAccessToken`.\n *\n * For tests we use a stub `authClient` (jest mocks the `getAccessToken`\n * helper at module level) and a mock `fetch` returning a successful ingest\n * response.\n */\n\nasync function mockFetch(): Promise<Response> {\n  return {\n    ok: true,\n    status: 200,\n    json: async () => ({ requestId: 'mock-request-id', validationErrors: [] }),\n    text: async () => '',\n  } as unknown as Response;\n}\n\nconst mockAuthClient = {\n  getAccessToken: async () => ({ token: 'ya29.c.test_token' }),\n} as unknown as OAuth2Client;\n\nexport const push: Env = {\n  fetch: mockFetch,\n  authClient: mockAuthClient,\n};\n\nexport const simulation = ['fetch'];\n","import type { Flow } from '@walkeros/core';\nimport { getEvent } from '@walkeros/core';\n\n/**\n * Google Data Manager step examples.\n *\n * At push time, the destination calls\n * `env.fetch(url, { method, headers, body })` where:\n *   - `url` is `${settings.url}/events:ingest` (default\n *     `https://datamanager.googleapis.com/v1`)\n *   - `method` is `'POST'`\n *   - `headers` is `{ Authorization: 'Bearer <accessToken>', 'Content-Type': 'application/json' }`\n *   - `body` is the JSON-stringified `{ events: [dataManagerEvent], destinations }` payload\n *\n * The access token is obtained from `env.authClient` via `getAccessToken`.\n * The test fixture mocks both so the captured Authorization header is stable\n * (`Bearer ya29.c.test_token`).\n *\n * Event fields are emitted in the order the destination constructs them\n * (insertion order matters for `JSON.stringify` string equality):\n *   eventTimestamp, transactionId?, clientId?, userId?, userData?,\n *   adIdentifiers?, conversionValue?, currency?, cartData?, eventName?,\n *   [eventSource is appended last by push.ts when not already present].\n *\n * Emails are normalized (trim, lowercase, strip dots for Gmail) and hashed\n * with SHA-256.\n */\nconst ENDPOINT = 'https://datamanager.googleapis.com/v1/events:ingest';\nconst DESTINATIONS = [\n  {\n    operatingAccount: {\n      accountId: '123-456-7890',\n      accountType: 'GOOGLE_ADS',\n    },\n    productDestinationId: 'AW-CONVERSION-123',\n  },\n];\nconst INIT_OPTIONS = (body: string) => ({\n  method: 'POST',\n  headers: {\n    Authorization: 'Bearer ya29.c.test_token',\n    'Content-Type': 'application/json',\n  },\n  body,\n});\n\nexport const purchase: Flow.StepExample = {\n  title: 'Purchase',\n  description:\n    'A completed order is posted to Google Data Manager as a purchase conversion with hashed user identifiers.',\n  in: getEvent('order complete', {\n    id: 'ev-1700000900000',\n    timestamp: 1700000900000,\n    data: { id: 'ORD-600', total: 149.99, currency: 'EUR' },\n    user: { id: 'user-abc', email: 'buyer@example.com' },\n    source: { type: 'express', platform: 'server' },\n  }),\n  mapping: {\n    name: 'purchase',\n    data: {\n      map: {\n        transactionId: 'data.id',\n        conversionValue: 'data.total',\n        currency: { key: 'data.currency', value: 'USD' },\n        eventName: { value: 'purchase' },\n        userId: 'user.id',\n        email: 'user.email',\n      },\n    },\n  },\n  out: [\n    [\n      'fetch',\n      ENDPOINT,\n      INIT_OPTIONS(\n        JSON.stringify({\n          events: [\n            {\n              eventTimestamp: '2023-11-14T22:28:20.000Z',\n              transactionId: 'ORD-600',\n              userId: 'user-abc',\n              userData: {\n                userIdentifiers: [\n                  {\n                    // sha256('buyer@example.com')\n                    emailAddress:\n                      '6a6c26195c3682faa816966af789717c3bfa834eee6c599d667d2b3429c27cfd',\n                  },\n                ],\n              },\n              conversionValue: 149.99,\n              currency: 'EUR',\n              eventName: 'purchase',\n              eventSource: 'WEB',\n            },\n          ],\n          destinations: DESTINATIONS,\n          encoding: 'HEX',\n        }),\n      ),\n    ],\n  ],\n};\n\nexport const lead: Flow.StepExample = {\n  title: 'Lead',\n  description:\n    'A demo request form submission is sent to Data Manager as a generate_lead conversion with a hashed email.',\n  in: getEvent('form submit', {\n    id: 'ev-1700000901000',\n    timestamp: 1700000901000,\n    data: { type: 'demo-request' },\n    user: { email: 'prospect@example.com' },\n    source: { type: 'express', platform: 'server' },\n  }),\n  mapping: {\n    name: 'generate_lead',\n    data: {\n      map: {\n        transactionId: 'id',\n        eventName: { value: 'generate_lead' },\n        conversionValue: { value: 10 },\n        currency: { value: 'USD' },\n        email: 'user.email',\n      },\n    },\n  },\n  out: [\n    [\n      'fetch',\n      ENDPOINT,\n      INIT_OPTIONS(\n        JSON.stringify({\n          events: [\n            {\n              eventTimestamp: '2023-11-14T22:28:21.000Z',\n              transactionId: 'ev-1700000901000',\n              userData: {\n                userIdentifiers: [\n                  {\n                    // sha256('prospect@example.com')\n                    emailAddress:\n                      '395ec5f334be0ab5b28568a1e7f6ed5ea80e443fb1ce3d803340586a3df46642',\n                  },\n                ],\n              },\n              conversionValue: 10,\n              currency: 'USD',\n              eventName: 'generate_lead',\n              eventSource: 'WEB',\n            },\n          ],\n          destinations: DESTINATIONS,\n          encoding: 'HEX',\n        }),\n      ),\n    ],\n  ],\n};\n\nexport const ga4PageView: Flow.StepExample = {\n  title: 'Page view',\n  description:\n    'A page view is sent to Data Manager as a page_view event tied to the walker user id.',\n  in: getEvent('page view', {\n    id: 'ev-1700000902000',\n    timestamp: 1700000902000,\n    data: { title: 'Pricing', url: 'https://example.com/pricing' },\n    user: { id: 'visitor-55' },\n    source: { type: 'express', platform: 'server' },\n  }),\n  mapping: {\n    name: 'page_view',\n    data: {\n      map: {\n        transactionId: 'id',\n        eventName: { value: 'page_view' },\n        userId: 'user.id',\n      },\n    },\n  },\n  out: [\n    [\n      'fetch',\n      ENDPOINT,\n      INIT_OPTIONS(\n        JSON.stringify({\n          events: [\n            {\n              eventTimestamp: '2023-11-14T22:28:22.000Z',\n              transactionId: 'ev-1700000902000',\n              userId: 'visitor-55',\n              eventName: 'page_view',\n              eventSource: 'WEB',\n            },\n          ],\n          destinations: DESTINATIONS,\n          encoding: 'HEX',\n        }),\n      ),\n    ],\n  ],\n};\n"],"mappings":"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","names":["z","z","z"]}