{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/schemas/mapping.ts","../src/schemas/setup.ts","../src/examples/index.ts","../src/examples/env.ts","../src/examples/step.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\nimport { MappingSchema } from './mapping';\nimport { SetupSchema } from './setup';\n\nexport { SettingsSchema, KafkaSettingsSchema, type Settings } from './settings';\nexport { MappingSchema, type Mapping } from './mapping';\nexport { SetupSchema, type Setup } from './setup';\n\n// JSON Schema\nexport const settings = zodToSchema(SettingsSchema);\nexport const mapping = zodToSchema(MappingSchema);\nexport const setup = zodToSchema(SetupSchema);\n","import { z } from '@walkeros/core/dev';\n\nconst SASLSchema = z.object({\n  mechanism: z\n    .enum(['plain', 'scram-sha-256', 'scram-sha-512', 'aws', 'oauthbearer'])\n    .describe('SASL authentication mechanism.'),\n  username: z\n    .string()\n    .optional()\n    .describe('Username for plain/scram mechanisms.'),\n  password: z\n    .string()\n    .optional()\n    .describe('Password for plain/scram mechanisms.'),\n  accessKeyId: z\n    .string()\n    .optional()\n    .describe('AWS access key ID for IAM auth (mechanism: aws).'),\n  secretAccessKey: z\n    .string()\n    .optional()\n    .describe('AWS secret access key for IAM auth (mechanism: aws).'),\n  sessionToken: z\n    .string()\n    .optional()\n    .describe('AWS session token for temporary credentials (mechanism: aws).'),\n  authorizationIdentity: z\n    .string()\n    .optional()\n    .describe('AWS authorization identity (mechanism: aws).'),\n});\n\nconst RetrySchema = z.object({\n  maxRetryTime: z\n    .number()\n    .int()\n    .positive()\n    .optional()\n    .describe('Max total retry wait in ms. Default: 30000.'),\n  initialRetryTime: z\n    .number()\n    .int()\n    .positive()\n    .optional()\n    .describe('First retry delay in ms. Default: 300.'),\n  retries: z\n    .number()\n    .int()\n    .min(0)\n    .optional()\n    .describe('Max retry count. Default: 5.'),\n});\n\nexport const KafkaSettingsSchema = z.object({\n  brokers: z\n    .array(z.string().min(1))\n    .min(1)\n    .describe('Kafka broker addresses (host:port). At least one required.'),\n  clientId: z\n    .string()\n    .optional()\n    .describe('Kafka client ID. Default: walkeros.'),\n  ssl: z\n    .union([z.boolean(), z.record(z.string(), z.unknown())])\n    .optional()\n    .describe(\n      'TLS configuration. Set true for default TLS, or provide a tls.ConnectionOptions object for mTLS.',\n    ),\n  sasl: SASLSchema.optional().describe(\n    'SASL authentication config. Required for Confluent Cloud, AWS MSK with IAM, etc.',\n  ),\n  connectionTimeout: z\n    .number()\n    .int()\n    .positive()\n    .optional()\n    .describe('Connection timeout in ms. Default: 1000.'),\n  requestTimeout: z\n    .number()\n    .int()\n    .positive()\n    .optional()\n    .describe('Request timeout in ms. Default: 30000.'),\n  topic: z.string().min(1).describe('Target Kafka topic name.'),\n  acks: z\n    .number()\n    .int()\n    .min(-1)\n    .max(1)\n    .optional()\n    .describe(\n      'Acknowledgement level. -1 = all replicas, 0 = fire-and-forget, 1 = leader only. Default: -1.',\n    ),\n  timeout: z\n    .number()\n    .int()\n    .positive()\n    .optional()\n    .describe('Broker response timeout in ms. Default: 30000.'),\n  compression: z\n    .enum(['none', 'gzip', 'snappy', 'lz4', 'zstd'])\n    .optional()\n    .describe(\n      'Message compression codec. Default: gzip. Snappy/LZ4/ZSTD require additional npm packages.',\n    ),\n  idempotent: z\n    .boolean()\n    .optional()\n    .describe(\n      'Enable idempotent producer for exactly-once delivery. Default: false.',\n    ),\n  allowAutoTopicCreation: z\n    .boolean()\n    .optional()\n    .describe('Allow auto-creation of topics on the broker. Default: false.'),\n  key: z\n    .string()\n    .optional()\n    .describe(\n      'Mapping value path for message key derivation (e.g. user.id, data.userId). Default: entity_action.',\n    ),\n  headers: z\n    .record(z.string(), z.string())\n    .optional()\n    .describe('Static headers added to every message.'),\n  retry: RetrySchema.optional().describe(\n    'Retry configuration for transient failures.',\n  ),\n});\n\nexport const SettingsSchema = z.object({\n  kafka: KafkaSettingsSchema.describe(\n    'Kafka connection and producer settings.',\n  ),\n});\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","import { z } from '@walkeros/core/dev';\n\nexport const MappingSchema = z.object({\n  key: z\n    .string()\n    .optional()\n    .describe(\n      'Override message key mapping path for this rule (e.g. data.id). Takes precedence over settings.kafka.key.',\n    ),\n  topic: z\n    .string()\n    .optional()\n    .describe(\n      'Override Kafka topic for this rule. Takes precedence over settings.kafka.topic.',\n    ),\n});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\n","// Zod schema for the Kafka destination's setup options.\n//\n// The runtime contract (in `setup.ts`) requires `numPartitions` and\n// `replicationFactor` and rejects the boolean form `setup: true` with an\n// actionable error. The \"no safe defaults\" rule is enforced at runtime, not\n// in this schema: configs frequently arrive from JSON where TS cannot enforce\n// required fields, and the runtime check is the single source of truth. This\n// schema therefore keeps both fields optional in shape, with the descriptions\n// noting the runtime requirement so MCP / IntelliSense surfaces the constraint\n// to authors.\nimport { z } from '@walkeros/core/dev';\n\nconst SchemaRegistrySchema = z.object({\n  url: z.string().url().describe('Schema Registry URL.'),\n  subject: z\n    .string()\n    .min(1)\n    .describe('Subject name, conventionally <topic>-value.'),\n  schemaType: z.enum(['AVRO', 'JSON', 'PROTOBUF']).describe('Schema type.'),\n  schema: z.string().min(1).describe('The schema, stringified.'),\n  compatibility: z\n    .enum([\n      'BACKWARD',\n      'FORWARD',\n      'FULL',\n      'NONE',\n      'BACKWARD_TRANSITIVE',\n      'FORWARD_TRANSITIVE',\n      'FULL_TRANSITIVE',\n    ])\n    .optional()\n    .describe('Subject compatibility level set after registration.'),\n  auth: z\n    .object({ username: z.string(), password: z.string() })\n    .optional()\n    .describe('Optional Basic auth credentials.'),\n});\n\nexport const SetupSchema = z.object({\n  topic: z\n    .string()\n    .min(1)\n    .optional()\n    .describe('Topic name. Falls back to settings.kafka.topic if omitted.'),\n  numPartitions: z\n    .number()\n    .int()\n    .positive()\n    .optional()\n    .describe(\n      'Number of partitions. Required at runtime. No safe default; choose based on expected throughput and consumer parallelism.',\n    ),\n  replicationFactor: z\n    .number()\n    .int()\n    .positive()\n    .optional()\n    .describe(\n      'Replication factor. Required at runtime. Must be <= broker count. No safe default.',\n    ),\n  configEntries: z\n    .record(z.string(), z.string())\n    .optional()\n    .describe(\n      'Topic-level config entries, e.g. { \"retention.ms\": \"604800000\" }.',\n    ),\n  schemaRegistry: SchemaRegistrySchema.optional().describe(\n    'Optional Confluent Schema Registry binding.',\n  ),\n  validateOnly: z\n    .boolean()\n    .optional()\n    .describe(\n      'Use kafkajs validateOnly mode (broker-side dry-run). Default: false.',\n    ),\n});\n\nexport type Setup = z.infer<typeof SetupSchema>;\n\nexport { SchemaRegistrySchema };\n","export * as env from './env';\nexport * as step from './step';\n","import type {\n  Env,\n  KafkaAdminMock,\n  KafkaClientConstructor,\n  KafkaClientMock,\n  KafkaProducerMock,\n  ProducerRecord,\n  ProducerConfig,\n  KafkaClientConfig,\n  CompressionTypesMap,\n} from '../types';\n\n// Narrow helper type aliases so the mock SDK is typed explicitly without `any`.\ntype ProducerConnect = () => Promise<void>;\ntype ProducerDisconnect = () => Promise<void>;\ntype ProducerSend = (record: ProducerRecord) => Promise<unknown>;\ntype KafkaProducerFactory = (config?: ProducerConfig) => KafkaProducerMock;\n\nconst asyncConnect: ProducerConnect = () => Promise.resolve();\nconst asyncDisconnect: ProducerDisconnect = () => Promise.resolve();\nconst asyncSend: ProducerSend = () => Promise.resolve([]);\n\nfunction createMockProducer(): KafkaProducerMock {\n  return {\n    connect: asyncConnect,\n    disconnect: asyncDisconnect,\n    send: asyncSend,\n  };\n}\n\nconst mockProducerFactory: KafkaProducerFactory = () => createMockProducer();\n\nfunction createMockAdmin(): KafkaAdminMock {\n  return {\n    connect: () => Promise.resolve(),\n    disconnect: () => Promise.resolve(),\n    createTopics: () => Promise.resolve(true),\n    fetchTopicMetadata: ({ topics }) =>\n      Promise.resolve({\n        topics: (topics ?? []).map((name) => ({\n          name,\n          partitions: [{ partitionId: 0, leader: 0, replicas: [0], isr: [0] }],\n        })),\n      }),\n    describeConfigs: ({ resources }) =>\n      Promise.resolve({\n        resources: resources.map((r) => ({\n          resourceName: r.name,\n          configEntries: [],\n        })),\n      }),\n  };\n}\n\nclass MockKafkaClient implements KafkaClientMock {\n  constructor(_config: KafkaClientConfig) {}\n  producer(config?: ProducerConfig): KafkaProducerMock {\n    return mockProducerFactory(config);\n  }\n  admin(): KafkaAdminMock {\n    return createMockAdmin();\n  }\n}\n\nconst MockKafkaConstructor: KafkaClientConstructor = MockKafkaClient;\n\nconst MockCompressionTypes: CompressionTypesMap = {\n  None: 0,\n  GZIP: 1,\n  Snappy: 2,\n  LZ4: 3,\n  ZSTD: 4,\n};\n\nexport const push: Env = {\n  Kafka: {\n    Kafka: MockKafkaConstructor,\n    CompressionTypes: MockCompressionTypes,\n  },\n};\n\nexport const simulation = ['call:producer.send'];\n","import type { Flow } from '@walkeros/core';\nimport { getEvent } from '@walkeros/core';\nimport type { Settings } from '../types';\n\n/**\n * Extended step example that may carry destination-level settings overrides.\n */\nexport type KafkaStepExample = Flow.StepExample & {\n  settings?: Partial<Settings>;\n};\n\n/**\n * Default event -- full WalkerOS.Event serialized as JSON to the configured\n * topic. Message key defaults to entity_action when no key path is set.\n */\nexport const defaultEvent: KafkaStepExample = {\n  title: 'Default event',\n  description:\n    'An event is produced to the configured Kafka topic with the full JSON body and entity_action as the message key.',\n  in: getEvent('page view', {\n    timestamp: 1700000100,\n  }),\n  out: [\n    [\n      'producer.send',\n      {\n        topic: 'walkeros-events',\n        messages: [\n          {\n            key: 'page_view',\n            value: 'json:event',\n            headers: { 'content-type': 'application/json' },\n            timestamp: '1700000100',\n          },\n        ],\n        acks: -1,\n        compression: 1,\n      },\n    ],\n  ],\n};\n\n/**\n * Mapped event name -- rule.name renames the event, which also changes the\n * default message key when no key mapping is configured.\n */\nexport const mappedEventName: KafkaStepExample = {\n  title: 'Renamed event',\n  description:\n    'A mapping renames the event which also changes the default Kafka message key used for partitioning.',\n  in: getEvent('order complete', {\n    timestamp: 1700000101,\n  }),\n  mapping: {\n    name: 'purchase',\n  },\n  out: [\n    [\n      'producer.send',\n      {\n        topic: 'walkeros-events',\n        messages: [\n          {\n            key: 'purchase',\n            value: 'json:event',\n            headers: { 'content-type': 'application/json' },\n            timestamp: '1700000101',\n          },\n        ],\n        acks: -1,\n        compression: 1,\n      },\n    ],\n  ],\n};\n\n/**\n * Mapped data -- data.map transforms the event payload. Value is the mapped\n * object serialized as JSON.\n */\nexport const mappedData: KafkaStepExample = {\n  title: 'Mapped payload',\n  description:\n    'A data mapping transforms the event payload before producing it as the Kafka message value.',\n  in: getEvent('order complete', {\n    timestamp: 1700000102,\n    data: { id: 'ORD-400', total: 99.99, currency: 'EUR' },\n  }),\n  mapping: {\n    name: 'purchase',\n    data: {\n      map: {\n        order_id: 'data.id',\n        revenue: 'data.total',\n        currency: 'data.currency',\n      },\n    },\n  },\n  out: [\n    [\n      'producer.send',\n      {\n        topic: 'walkeros-events',\n        messages: [\n          {\n            key: 'purchase',\n            value: 'json:data',\n            headers: { 'content-type': 'application/json' },\n            timestamp: '1700000102',\n          },\n        ],\n        acks: -1,\n        compression: 1,\n      },\n    ],\n  ],\n};\n\n/**\n * Key from user -- settings.kafka.key path resolves the message key from\n * the event (here user.id).\n */\nexport const keyFromUser: KafkaStepExample = {\n  title: 'Key from user id',\n  description:\n    'A settings.kafka.key path resolves the message key from the event, here using user.id for per-user partitioning.',\n  in: getEvent('user signup', {\n    timestamp: 1700000103,\n    user: { id: 'usr-789' },\n    data: { plan: 'pro' },\n  }),\n  settings: {\n    kafka: {\n      brokers: ['localhost:9092'],\n      topic: 'walkeros-events',\n      key: 'user.id',\n    },\n  },\n  out: [\n    [\n      'producer.send',\n      {\n        topic: 'walkeros-events',\n        messages: [\n          {\n            key: 'usr-789',\n            value: 'json:event',\n            headers: { 'content-type': 'application/json' },\n            timestamp: '1700000103',\n          },\n        ],\n        acks: -1,\n        compression: 1,\n      },\n    ],\n  ],\n};\n\n/**\n * Topic override -- rule.settings.topic routes this rule to a different\n * topic than the destination default.\n */\nexport const topicOverride: KafkaStepExample = {\n  title: 'Topic override',\n  description:\n    'A mapping rule overrides the destination topic so specific events are routed to a dedicated stream.',\n  in: getEvent('order complete', {\n    timestamp: 1700000104,\n    data: { id: 'ORD-500', total: 42 },\n  }),\n  mapping: {\n    settings: {\n      topic: 'orders-stream',\n    },\n  },\n  out: [\n    [\n      'producer.send',\n      {\n        topic: 'orders-stream',\n        messages: [\n          {\n            key: 'order_complete',\n            value: 'json:event',\n            headers: { 'content-type': 'application/json' },\n            timestamp: '1700000104',\n          },\n        ],\n        acks: -1,\n        compression: 1,\n      },\n    ],\n  ],\n};\n\n/**\n * Ignored event -- mapping.ignore: true produces no producer.send call.\n */\nexport const ignoredEvent: KafkaStepExample = {\n  public: false,\n  in: getEvent('debug noise', {\n    timestamp: 1700000105,\n  }),\n  mapping: { ignore: true },\n  out: [],\n};\n"],"mappings":"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","names":["z","z"]}