@developer-overheid-nl/adr-rulesets
v0.1.1
Published
Spectral rulesets for the NL GOV API Design Rules (ADR)
Readme
@developer-overheid-nl/adr-rulesets
Spectral rulesets for the NL GOV API Design Rules (ADR).
Installation
pnpm add @developer-overheid-nl/adr-rulesets @stoplight/spectral-coreUsage
import { Spectral } from '@stoplight/spectral-core';
import { adr21 } from '@developer-overheid-nl/adr-rulesets';
const spectral = new Spectral();
spectral.setRuleset(adr21);
const results = await spectral.run(openApiDocument);Available rulesets:
| Export | ADR version | Import path |
| ---------- | ----------- | ------------------------------------------------------ |
| adr20 | 2.0 | @developer-overheid-nl/adr-rulesets/rulesets/adr-20 |
| adr21 | 2.1 | @developer-overheid-nl/adr-rulesets/rulesets/adr-21 |
| adr22 | 2.2 | @developer-overheid-nl/adr-rulesets/rulesets/adr-22 |
| adrDraft | draft | @developer-overheid-nl/adr-rulesets/rulesets/adr-draft |
Each ruleset module also exports its URI (ADR_20_URI, ADR_21_URI, …).
Older versions (adr20, adr21) also report rules that are errors in a newer
ADR version as warnings, so you get notice before they become hard errors.
Versions
adrVersions lists every ADR version this package ships, ordered oldest → newest, so consumers
do not have to maintain their own list:
import { adrVersions } from '@developer-overheid-nl/adr-rulesets/versions';
// [{ id: '2.0.2', status: 'final', uri: ADR_20_URI, ruleset: adr20 }, …,
// { id: 'werkversie', status: 'draft', uri: ADR_DRAFT_URI, ruleset: adrDraft }]
const latestFinal = adrVersions.findLast(version => version.status === 'final');It is also exported from the package root, together with the AdrVersion, AdrVersionId and
AdrVersionStatus types.
Development
pnpm install
pnpm generate # regenerate adr-21, adr-22, adr-draft and the future-warnings from the published linter.yaml files
pnpm buildReleasing
Releases use changesets for versioning and the changelog.
- For every user-facing change, add a changeset in the PR:
pnpm changeset(choose patch/minor/major and describe the change). - To release, check what version the open changesets add up to (
pnpm changeset status --verbose), then tag the latest commit onmainwith it and push the tag:git tag v0.1.1 && git push origin v0.1.1. - The Publish workflow applies the changesets, checks that the resulting version matches the tag, builds and publishes to npm with provenance. It then commits the version bump and
CHANGELOG.mdback tomainand moves the tag onto that commit. Prerelease versions (e.g.1.0.0-beta.1) go to thebetadist-tag.
