@salesforcedevs/sfdocs-liquid-lint-variables-keys
v1.1.2
Published
Warn (non-blocking) when a {{ }} output cannot be resolved by any repo variable, topic data, loop, assign, capture, or include, using the doc-framework runtime as the source of truth.
Maintainers
Keywords
Readme
@salesforcedevs/sfdocs-liquid-lint-variables-keys
Warns (non-blocking) when a {{ }} output cannot be resolved by any means the runtime supports —
repository variables, topic data, for loops, assign/capture, or included partials — and would
therefore render as literal text.
Why this exists
Whether a {{ }} output resolves depends on runtime scope (loops, assigns, includes, topic data), not
just on static config. Only the real render engine can answer "does this resolve by any means?". To
avoid drift, this rule does not reimplement that logic: the consumer injects a check function
backed by the doc-framework runtime, and the rule reports whatever that checker leaves unresolved.
Relationship to variables-reference
liquid-variables-referenceis the error-level rule: a{{ variables.<namespace>... }}whose<namespace>is not declared incontent-config.ymlcan never resolve, so it blocks.- This rule is the warning-level complement: a key that is missing from a declared namespace (or any other unresolved output such as a loop variable) renders as literal text but does not block.
To keep the two from overlapping, this rule skips undeclared-namespace references. The runtime reports
such a miss truncated to the namespace (variables.<ns>, exactly two segments), while a missing key
keeps its key (variables.<ns>.<key>); only the latter is warned here.
Behavior
- No-op (silent) when no
checkfunction is injected — the rule cannot resolve scope on its own and will not guess. - No-op when the file contains no
{{output tags. - Declared namespace file paths are resolved from
content-config.yml(relative to the content root) and passed to the checker so it can load repository variables.
Usage
const variablesKeys = require('@salesforcedevs/sfdocs-liquid-lint-variables-keys');
const { detectUnresolvedVariables } = require('@salesforcedevs/sfdocs-doc-framework');
remark().use(variablesKeys, { check: detectUnresolvedVariables });