Skip to content

script-utils/demo-vault-coverage

Static coverage/freshness checks that keep a plugin’s in-repo demo-vault/ in sync with its public surface.

A plugin can ship a curated demo vault at demo-vault/ in its repo root. These helpers reflect the real public API/config/docs straight from source and assert — WITHOUT launching Obsidian — that every feature is demonstrated in the notes and that the notes reference no API member that no longer exists (rename drift). The runtime behavior of the plugin is covered by its other integration tests, not by the demo vault; the vault is a learning resource, and these checks only guard that it stays truthful.

Two layers are exposed: - DemoVaultCoverageChecker — a framework-agnostic core that reads the corpus, parses interface / class / enum members and exported functions, and returns diagnostic arrays (what is undemonstrated / stale / unlinked). - registerDemoVaultCoverageSuite — a thin wrapper that registers a vitest suite over the core, so a plugin’s demo-vault.no-app.integration.test.ts is a single declarative call.

ClassDescription
DemoVaultCoverageCheckerReflects a plugin’s public surface from source and checks its in-repo demo-vault/ stays in sync with it. Every method is a pure query over files under the repo root (the demo corpus is read once and cached), so the checker is trivially unit-testable against a fixture repo and carries no test-framework dependency.
InterfaceDescription
DemoVaultConfigInterfaceCoverageSpecReflects a config interface whose options are demonstrated by their bare name.
DemoVaultCoverageCheckerConstructorParamsThe parameters for the DemoVaultCoverageChecker constructor.
DemoVaultCoverageCheckerFindStaleReferencesParamsThe parameters for DemoVaultCoverageChecker.findStaleReferences.
DemoVaultCoverageCheckerFindUndemonstratedMembersParamsThe parameters for DemoVaultCoverageChecker.findUndemonstratedMembers.
DemoVaultCoverageCheckerFindUnlinkedFeatureDocsParamsThe parameters for DemoVaultCoverageChecker.findUnlinkedFeatureDocs.
DemoVaultCoverageCheckerGetExportedFunctionNamesParamsThe parameters for DemoVaultCoverageChecker.getExportedFunctionNames.
DemoVaultCoverageCheckerGetInterfaceMembersParamsThe parameters for DemoVaultCoverageChecker.getInterfaceMembers.
DemoVaultDocsCoverageSpecConfigures the feature-doc linking check.
DemoVaultFunctionsCoverageSpecReflects a module’s exported functions, each demonstrated by its bare name in the demo corpus.
DemoVaultInterfaceCoverageSpecReflects a single interface’s members and demonstrates them via `$\{receiver\}.<member>` references.
DemoVaultNonTrivialGuardSpecConfigures the guard that the reflected surface is non-trivial (protects against a parsing regression silently emptying every other check).
InterfaceMembersThe parsed members of a source interface, class, or enum.
RegisterDemoVaultCoverageSuiteParamsThe parameters for registerDemoVaultCoverageSuite.
FunctionDescription
registerDemoVaultCoverageSuiteRegisters a vitest suite that keeps a plugin’s in-repo demo-vault/ in sync with its public surface. Call it once from a plugin’s demo-vault.no-app.integration.test.ts; it registers one test per check, delegating to DemoVaultCoverageChecker.
TypeDescription
DemoVaultInterfaceMemberKindWhether an interface’s demonstrated members are its methods or its properties.