refactor: make PublicKeyCredentialSource extend CredentialRecord#804
Merged
refactor: make PublicKeyCredentialSource extend CredentialRecord#804
Conversation
This change improves backward compatibility by using inheritance instead of union types. PublicKeyCredentialSource now extends CredentialRecord, allowing code that type-hints CredentialRecord to automatically accept both types. Key changes: - PublicKeyCredentialSource is now an empty class extending CredentialRecord - Repository interfaces use CredentialRecord instead of union types - Deprecated interfaces (PublicKeyCredentialSourceRepositoryInterface, CanSaveCredentialSource) now extend their new counterparts - All ceremony steps and validators updated to use CredentialRecord only - CredentialRecordConverter utility updated to handle inheritance This resolves the concern raised in discussion #803 where downstream packages needed union types to support both v5.2 and v5.3.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR improves backward compatibility by making
PublicKeyCredentialSourceextendCredentialRecordinstead of using union types throughout the codebase.Key changes:
PublicKeyCredentialSourceis now an empty class extendingCredentialRecord(still deprecated)CredentialRecordinstead of union types (CredentialRecord|PublicKeyCredentialSource)PublicKeyCredentialSourceRepositoryInterface,CanSaveCredentialSource) now extend their new counterpartsCredentialRecordonlyCredentialRecordConverterutility updated to handle inheritanceMotivation
This resolves the concern raised in discussion #803 by @jasonvarga. With this change, downstream packages can simply type-hint
CredentialRecordand it will automatically accept bothCredentialRecordandPublicKeyCredentialSourceinstances thanks to inheritance.Before: Code needed union types
CredentialRecord|PublicKeyCredentialSourceto support both types.After: Code can use
CredentialRecordand PHP's inheritance handles the rest.Test plan