UNPKG

alcaeus-model

Version:

rdfine models for Alcaeus, Hydra client

42 lines (41 loc) 2.02 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { namespace } from '@tpluscode/rdfine'; import { hydra, rdf } from '@tpluscode/rdf-ns-builders'; function getUri(factory, resource) { if (typeof resource === 'string') { return factory.namedNode(resource).term; } if ('id' in resource) { return resource.id; } return resource; } export function MemberAssertionMixin(Base) { let MemberAssertionClass = class MemberAssertionClass extends Base { matches({ subject = '', predicate = rdf.type, object = '' }) { const predicateId = getUri(this.pointer, predicate); const objectId = getUri(this.pointer, object); const subjectId = getUri(this.pointer, subject); if (object && this.object && this.property) { const predicateIsRdfType = rdf.type.equals(predicateId); return predicateIsRdfType && objectId.equals(this.object.id) && predicateId.equals(this.property.id); } if (subject && predicate && this.subject && this.property) { return subjectId.equals(this.subject.id) && predicateId.equals(this.property.id); } return false; } }; MemberAssertionClass = __decorate([ namespace(hydra) ], MemberAssertionClass); return MemberAssertionClass; } MemberAssertionMixin.shouldApply = (res) => { return res.pointer.in([hydra.manages, hydra.memberAssertion]).terms.length > 0; };