UNPKG

@tpluscode/rdfine

Version:
37 lines (36 loc) 1.09 kB
import { propertyDecorator } from './decoratorFactory.js'; export default function (options = {}) { const type = options.type || String; return propertyDecorator({ ...options, fromTerm(obj) { return this.env.rdfine().convert.fromLiteral(type, obj); }, toTerm(value) { return this.env.rdfine().convert.toLiteral(value, options.datatype); }, valueTypeName: type.name, assertSetValue: (value) => { if (value instanceof Date) { return true; } if (typeof value === 'object') { let term; if ('id' in value) { return false; } if ('term' in value) { term = value.term; } else { term = value; } return term.termType === 'Literal'; } return true; }, compare(left, right) { return left === right; }, }); }