@comake/skl-js-engine
Version:
Standard Knowledge Language Javascript Engine
64 lines • 2.51 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Mapper = void 0;
/* eslint-disable @typescript-eslint/naming-convention */
const RmlParser = __importStar(require("@comake/rmlmapper-js"));
const jsonld_1 = __importDefault(require("jsonld"));
class Mapper {
constructor(args) {
this.functions = args?.functions;
}
async apply(data, mapping, frame) {
const result = await this.doMapping(data, mapping);
const frameResult = await this.frame(result, frame);
return frameResult;
}
async doMapping(data, mapping) {
const sources = { 'input.json': JSON.stringify(data) };
const options = { functions: this.functions };
const mappingNodeObject = Array.isArray(mapping)
? { '@graph': mapping }
: mapping;
return await RmlParser.parseJsonLd(mappingNodeObject, sources, options);
}
async frame(jsonldDoc, overrideFrame) {
let frame = {
'@context': {},
'@embed': '@always'
};
frame = {
...frame,
...overrideFrame,
'@context': { ...frame['@context'], ...overrideFrame?.['@context'] }
};
return await jsonld_1.default.frame(jsonldDoc, frame);
}
}
exports.Mapper = Mapper;
//# sourceMappingURL=Mapper.js.map