const InteropService_Importer_Base = require("lib/services/InteropService_Importer_Base"); const InteropService_Importer_Raw = require("lib/services/InteropService_Importer_Raw"); const BaseItem = require("lib/models/BaseItem.js"); const BaseModel = require("lib/BaseModel.js"); const Resource = require("lib/models/Resource.js"); const Folder = require("lib/models/Folder.js"); const NoteTag = require("lib/models/NoteTag.js"); const Note = require("lib/models/Note.js"); const Tag = require("lib/models/Tag.js"); const { basename, filename } = require("lib/path-utils.js"); const fs = require("fs-extra"); const md5 = require("md5"); const { sprintf } = require("sprintf-js"); const { shim } = require("lib/shim"); const { _ } = require("lib/locale"); const { fileExtension } = require("lib/path-utils"); const { uuid } = require("lib/uuid.js"); const { importEnex } = require("lib/import-enex"); class InteropService_Importer_Jex extends InteropService_Importer_Base { async exec(result) { const tempDir = await this.temporaryDirectory_(true); try { await require("tar").extract({ strict: true, portable: true, file: this.sourcePath_, cwd: tempDir, }); } catch (error) { let msg = ["Cannot untar file " + this.sourcePath_, error.message]; if (error.data) msg.push(JSON.stringify(error.data)); let e = new Error(msg.join(": ")); throw e; } if (!("defaultFolderTitle" in this.options_)) this.options_.defaultFolderTitle = filename(this.sourcePath_); const importer = new InteropService_Importer_Raw(); await importer.init(tempDir, this.options_); result = await importer.exec(result); await fs.remove(tempDir); return result; } } module.exports = InteropService_Importer_Jex;