@alinex/datastore
Version:
Read, work and write data structures from and to differents locations and formats.
36 lines • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.format = exports.parse = void 0;
const path_1 = require("path");
const debug_1 = require("debug");
const CSON = require("cson-parser");
const coffee = require("coffeescript");
const Format = require("./index");
const debug = debug_1.default('datastore:format:coffee');
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}`);
let text = buffer.toString();
try {
text = 'module.exports =\n ' + text.replace(/\n/g, '\n ');
let m = new module.constructor();
m._compile(coffee.compile(text), 'inline.coffee');
return Promise.resolve(Format.cast(m.exports, 'date'));
}
catch (error) {
error.data = buffer.toString();
return Promise.reject(error);
}
};
exports.parse = parse;
const format = function (parsedUri, data) {
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}`);
return Promise.resolve(Buffer.from(CSON.stringify(data, null, 4)));
};
exports.format = format;
//# sourceMappingURL=coffee.js.map