UNPKG

semantic-network

Version:

A utility library for manipulating a list of links that form a semantic interface to a network of resources.

38 lines 1.53 kB
import { LinkUtil } from 'semantic-link'; import { CanonicalOrSelf } from './comparators/canonicalOrSelf'; import { TrackedRepresentationUtil } from './trackedRepresentationUtil'; import { instanceOfTrackedRepresentation } from './instanceOf/instanceOfTrackedRepresentation'; export class EqualityUtil { /** * Checks if two resource identities are the same. * * @default {@link CanonicalOrSelf} */ static matches(lvalue, rvalue, relationshipType = CanonicalOrSelf) { const lUri = LinkUtil.getUri(lvalue, relationshipType); const rUri = LinkUtil.getUri(rvalue, relationshipType); if (lUri && rUri) { return lUri === rUri; } return false; } /** * Checks if the identity and the version both match */ static matchesIdAndETag(lvalue, rvalue, relationshipType) { if (EqualityUtil.matches(lvalue, rvalue, relationshipType)) { return EqualityUtil.matchesETag(lvalue, rvalue); } return false; } /** * Checks if there is no difference in eTags (both empty also equals same) */ static matchesETag(lvalue, rvalue) { const lEtag = instanceOfTrackedRepresentation(lvalue) && TrackedRepresentationUtil.getETag(lvalue) || ''; const rEtag = instanceOfTrackedRepresentation(rvalue) && TrackedRepresentationUtil.getETag(rvalue) || ''; return lEtag === rEtag; } } export const defaultEqualityMatcher = EqualityUtil.matches; //# sourceMappingURL=equalityUtil.js.map