Skip to content

feat!: 0.2.0 — surface specific UnmatchedReason from matchQuery (BREAKING)#1

Merged
BetelGuese merged 4 commits intomainfrom
feat/surface-specific-unmatched-reason
Apr 24, 2026
Merged

feat!: 0.2.0 — surface specific UnmatchedReason from matchQuery (BREAKING)#1
BetelGuese merged 4 commits intomainfrom
feat/surface-specific-unmatched-reason

Conversation

@BetelGuese
Copy link
Copy Markdown
Contributor

Summary

  • matchQuery now propagates the specific UnmatchedReason from the last failing candidate, exposing format_mismatch, vct_mismatch, doctype_mismatch, missing_claims, value_mismatch, and trusted_authority_mismatch to callers.
  • 'no_credential_found' is now reserved for the empty-credentials-list case.
  • JSDoc on matchQuery documents the new semantics.

Breaking change

Callers asserting reason === 'no_credential_found' on non-empty credential inputs will break. Migration: assert on the specific reason or on !match.satisfied.

Test plan

  • npm test — 116/116 green (test count +3 for value_mismatch positive/negative + empty-credentials lock)
  • npm run type-check — clean
  • npm run build — clean
  • npm pack --dry-run — no extraneous files

Ships as `@openeudi/dcql@0.2.0`. Downstream consumer `@openeudi/openid4vp` is being updated in a follow-up PR to remove its classifier workaround.

@BetelGuese BetelGuese merged commit 42c1ef4 into main Apr 24, 2026
3 checks passed
@BetelGuese BetelGuese deleted the feat/surface-specific-unmatched-reason branch April 24, 2026 18:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant