Sitelet https://github.com/ng-forge/ng-forge/tree/main/etc
Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Public API surface baselines

Each *.api.md file in this folder is a committed snapshot of one published entrypoint's exported type surface, generated by API Extractor. They act as a semver safety net: CI fails when a build's exported surface drifts from the committed baseline, so any change to the public API has to be reviewed and committed deliberately.

Guarded entrypoints

Baseline Entrypoint
dynamic-forms.api.md @ng-forge/dynamic-forms
dynamic-forms-integration.api.md @ng-forge/dynamic-forms/integration
dynamic-forms-material.api.md @ng-forge/dynamic-forms-material
dynamic-forms-bootstrap.api.md @ng-forge/dynamic-forms-bootstrap
dynamic-forms-primeng.api.md @ng-forge/dynamic-forms-primeng
dynamic-forms-ionic.api.md @ng-forge/dynamic-forms-ionic
dynamic-form-mcp.api.md @ng-forge/dynamic-form-mcp

The @ng-forge/dynamic-forms/internal and @ng-forge/dynamic-forms/testing surfaces are intentionally unguarded: they carry no semver guarantee.

Regenerating a baseline (when you change the surface on purpose)

If you intentionally add, remove, or rename an export, the api-check target will go red until you update the matching baseline:

# Regenerate one package's baseline(s)
nx run dynamic-forms-material:api-update

# Or regenerate everything
nx run-many -t api-update -p dynamic-forms dynamic-forms-material \
  dynamic-forms-bootstrap dynamic-forms-primeng dynamic-forms-ionic dynamic-form-mcp

api-update rebuilds the package, regenerates the report, and writes it back to this folder. Commit the resulting *.api.md diff alongside your change so the reviewer can see exactly how the public surface moved.

To verify a baseline without modifying it (the CI behaviour), use nx run <project>:api-check.

Config lives in config/api-extractor.base.json (shared) and packages/<pkg>/api-extractor.json (per entrypoint).

Scope and determinism notes

  • Reports are a pure type-surface snapshot. All API Extractor message annotations are kept out of the report (addToApiReportFile: false for ae-forgotten-export, ae-internal-missing-underscore, and ae-unresolved-link). This is deliberate: the "Warnings were encountered during analysis" block embeds the absolute build path of the .d.ts, which differs between a contributor's machine and CI (/home/runner/...) and would make the check drift across platforms. Stripping the annotations makes the baselines byte-identical everywhere.
  • Narrow trade-off: because ae-forgotten-export is no longer written to the report, the guard will not specifically flag the "a public type references a symbol that isn't itself exported" case. The resulting signature change is still caught (the declaration line still changes), so real surface drift is not missed; only that meta-warning is lost.
  • /schema is currently unguarded. It is a published entrypoint but was outside the original guard scope. Add a packages/dynamic-forms/api-extractor.schema.json config and a baseline if full coverage is wanted.
  • TS version skew (latent): API Extractor 7.58.7 bundles TypeScript 5.9.3 while the libraries emit .d.ts with a newer TypeScript (a *** newer than the bundled compiler engine warning prints during extraction). Harmless today; if a future TypeScript emits .d.ts syntax the bundled parser cannot read, bump @microsoft/api-extractor.