semantic-analysis
Version:
Extensible semantic Structured Data analysis library for Microdata and JSON-LD
57 lines • 2.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.prepareExport = void 0;
var tslib_1 = require("tslib");
var fs_1 = tslib_1.__importDefault(require("fs"));
var path_1 = tslib_1.__importDefault(require("path"));
var item_1 = require("../structured-data/item");
exports.prepareExport = function (result) {
var _a;
return ({
results: item_1.toSerializable(result),
url: (_a = result.document) === null || _a === void 0 ? void 0 : _a.url,
});
};
var Exporter = /** @class */ (function () {
/* Initialization */
function Exporter(extractionDirectory) {
this.extractionDirectory = path_1.default.resolve(extractionDirectory);
if (!fs_1.default.existsSync(this.extractionDirectory)) {
console.debug("Creating directory " + this.extractionDirectory);
fs_1.default.mkdirSync(this.extractionDirectory);
}
}
/* API */
Exporter.prototype.export = function (results) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var timestamp, safeUrl, url, urlFormat, base, source, json, html, jsonWriting, htmlWriting, exported;
return tslib_1.__generator(this, function (_a) {
timestamp = Date.now();
try {
url = new URL(results.document.url);
urlFormat = url.host + "/" + url.pathname + url.search;
safeUrl = urlFormat.replace(/[^a-z0-9]/gi, '_').toLowerCase();
}
catch (_b) {
safeUrl = '';
}
base = timestamp + "_" + safeUrl;
source = results.document.source;
json = base + ".json";
html = base + ".html";
jsonWriting = fs_1.default.promises.writeFile(path_1.default.join(this.extractionDirectory, json), JSON.stringify(exports.prepareExport(results)), 'utf8');
htmlWriting = source ?
fs_1.default.promises.writeFile(path_1.default.join(this.extractionDirectory, html), source, 'utf8') : Promise.resolve();
exported = tslib_1.__assign(tslib_1.__assign({}, exports.prepareExport(results)), { paths: { json: json, html: html } });
return [2 /*return*/, Promise.all([jsonWriting, htmlWriting])
.then(function () { return exported; })
.catch(function (reason) {
throw tslib_1.__assign({ error: reason }, exported);
})];
});
});
};
return Exporter;
}());
exports.default = Exporter;
//# sourceMappingURL=Exporter.js.map