@tpluscode/rdfine
Version:
RDF/JS idiomatic, native, effective
22 lines (21 loc) • 682 B
JavaScript
function setNamespace(clazz, ns) {
clazz.__ns = ns;
}
const legacyNamespace = (ns, clazz) => {
setNamespace(clazz, ns);
return clazz;
};
const standardNamespace = (ns, descriptor) => {
const { kind, elements } = descriptor;
return {
kind,
elements,
// This callback is called once the class is otherwise fully defined
finisher(clazz) {
setNamespace(clazz, ns);
},
};
};
export const namespace = (stringOrNamespace) => (classOrDescriptor) => (typeof classOrDescriptor === 'function')
? legacyNamespace(stringOrNamespace, classOrDescriptor)
: standardNamespace(stringOrNamespace, classOrDescriptor);