@hestia-earth/schema
Version:
HESTIA Schema
74 lines (73 loc) • 3.29 kB
JavaScript
;
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.schemaFromTermType = exports.refToSchemaType = exports.typeToSchemaType = exports.isExpandable = exports.isBlankNode = exports.isNode = exports.isTypeBlankNode = exports.isTypeNode = exports.isTypeValid = exports.jsonldPath = void 0;
var types_1 = require("../types");
var termTypes_1 = require("../termTypes");
var jsonldPath = function (type, id) { return "".concat(type, "/").concat(id, ".jsonld"); };
exports.jsonldPath = jsonldPath;
var isTypeValid = function (node) { return Object.values(types_1.SchemaType).includes(node['@type'] || node.type); };
exports.isTypeValid = isTypeValid;
var isTypeNode = function (type) { return Object.values(types_1.NodeType).includes(type); };
exports.isTypeNode = isTypeNode;
var isTypeBlankNode = function (type) { return (0, exports.isTypeValid)({ type: type }) && !(0, exports.isTypeNode)(type); };
exports.isTypeBlankNode = isTypeBlankNode;
var isNode = function (node) { return (0, exports.isTypeNode)(node['@type'] || node.type); };
exports.isNode = isNode;
var isBlankNode = function (node) { return (0, exports.isTypeBlankNode)(node['@type'] || node.type); };
exports.isBlankNode = isBlankNode;
var isExpandable = function (val) {
return !!val &&
!(val instanceof Date) &&
typeof val === 'object' &&
(Array.isArray(val) ? val.every(exports.isExpandable) : Object.values(types_1.SchemaType).includes(val.type || val['@type']));
};
exports.isExpandable = isExpandable;
var typeToSchemaType = function (type) {
return Object.values(types_1.SchemaType).find(function (val) { return val.toLowerCase() === (type || '').toLowerCase(); });
};
exports.typeToSchemaType = typeToSchemaType;
var refToSchemaType = function (ref) {
if (ref === void 0) { ref = ''; }
return ref
? ref.startsWith('http')
? ref
: (0, exports.typeToSchemaType)(ref.substring(2).replace('-deep', '').replace('.json#', ''))
: undefined;
};
exports.refToSchemaType = refToSchemaType;
/**
* Get a list of possible places where the `termType` can be used.
* @param termType The `termType`.
* @returns
*/
var schemaFromTermType = function (termType) {
return termTypes_1.schemaTermTypes.flatMap(function (_a) {
var type = _a.type, mappings = _a.mappings;
return Object.entries(mappings)
.filter(function (_a) {
var _b = __read(_a, 2), key = _b[0], termTypes = _b[1];
return key !== 'all' && Array.isArray(termTypes) && termTypes.includes(termType);
})
.map(function (_a) {
var _b = __read(_a, 1), key = _b[0];
return ({ type: type, key: key });
});
});
};
exports.schemaFromTermType = schemaFromTermType;