- Introduce explicit source interfaces: sources.PollSource and sources.StreamSource, with shared sources.Input (Name() only). - Remove mandatory Kind() from the base source contract to support sources that emit multiple kinds. - Add config.SourceMode (poll, stream, or omitted/auto) and SourceConfig.Kinds (plural expected kinds), while keeping legacy SourceConfig.Kind for compatibility. - Enforce mode semantics in config validation (poll requires every, stream forbids every) and detect mode/driver mismatches in sources.Registry. - Update docs and tests for the new source model and config behavior.
15 lines
620 B
Go
15 lines
620 B
Go
// Package sources defines feedkit's input-source abstraction.
|
|
//
|
|
// A source ingests upstream input and emits one or more event.Event values.
|
|
//
|
|
// feedkit supports two source modes:
|
|
// - PollSource: scheduler invokes Poll on a cadence.
|
|
// - StreamSource: source runs continuously and pushes events as input arrives.
|
|
//
|
|
// Source drivers are domain-specific and registered into Registry by driver name.
|
|
// Registry can then build configured sources from config.SourceConfig.
|
|
//
|
|
// A single source may emit 0..N events per poll or stream iteration, and those
|
|
// events may span multiple event kinds.
|
|
package sources
|