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
JavaScript
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