Expand description
Compose the top-level JSON Schema for a whole faucet.yaml config (#213).
faucet schema source <name> already emits per-connector schemas, but there
was no single schema for the entire config document. This module builds
one by taking the derived PipelineConfig
schema (which covers version / name / pipeline / matrix /
execution / auth / vars / params / schedule / lineage / quality / dlq /
… — every block whose type derives JsonSchema) and layering per-connector
discrimination on top: the source / sink positions become a oneOf over
the compiled-in connector kinds, each branch pinning type: <kind> and
embedding that connector’s own config schema.
Editors (the VS Code YAML extension, JetBrains) consume the emitted schema
for autocomplete, inline docs, and as-you-type validation via a
# yaml-language-server: $schema=… header.
Interpolation tolerance. faucet configs pervasively use ${env:…} /
${vars:…} / ${now.*} placeholders — a string standing in for a typed
value. So every embedded connector-config subtree is relaxed: required
is dropped, additionalProperties is opened, and every declared scalar type
also accepts a string. This keeps property/description autocomplete while
never rejecting a valid-but-interpolated config. The strict top-level grammar
(unknown-key rejection, version, block shapes) is preserved.
Functions§
- config_
schema - Build the composed top-level config schema.