UNPKG

@alinex/datastore

Version:

Read, work and write data structures from and to differents locations and formats.

41 lines 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.format = exports.parse = void 0; const path_1 = require("path"); const debug_1 = require("debug"); const vm = require("vm"); const serialize = require("serialize-to-js"); const beautify = require("js-beautify"); const debug = debug_1.default('datastore:format:js'); const parse = function (parsedUri, buffer) { if (!parsedUri.pathname) return Promise.reject(`No pathname given in ${parsedUri.href}`); const pathname = parsedUri.hash || path_1.basename(parsedUri.pathname); debug(`parsing ${pathname}`); const content = buffer.toString().replace(/(module.exports\s*=\s*|export\s+default\s+)/, ''); try { return Promise.resolve(vm.runInNewContext(`x=${content}`)); } catch (err) { err.data = buffer.toString(); return Promise.reject(err); } ; }; exports.parse = parse; const format = function (parsedUri, data, options) { if (!parsedUri.pathname) return Promise.reject(`No pathname given in ${parsedUri.href}`); const pathname = parsedUri.hash || path_1.basename(parsedUri.pathname); debug(`formatting for ${pathname}`); let content = serialize(data); const module = ['.mjs', '.ts'].includes(path_1.extname(pathname).toLowerCase()) ? 'export default ' : options && options.module ? 'module.exports = ' : ''; content = module + content; return Promise.resolve(Buffer.from(beautify(content, { indent_size: 2 }))); }; exports.format = format; //# sourceMappingURL=js.js.map