jsoniq
Version:
JSONiq implementation for JavaScript
53 lines (51 loc) • 6.57 kB
JavaScript
;
/// <reference path="../../typings/tsd.d.ts" />
var fs = require("fs");
var cli = require("commander");
var JSONiq_1 = require("../JSONiq");
var cp = require("child_process");
var pkg = require("../../../package.json");
cli
.command("run <file>")
.description("run JSONiq query")
.action(file => {
var query = new JSONiq_1.default(fs.readFileSync(file, "utf-8"));
query.setFileName(file);
var it = query.compile();
var source = JSONiq_1.default.serialize(it);
var child = cp.execSync("node", { input: source });
process.stdout.write(child.toString());
});
cli
.command("compile <file>")
.description("compile JSONiq query")
.action(file => {
var query = new JSONiq_1.default(fs.readFileSync(file, "utf-8"));
query.setFileName(file);
var it = query.compile();
var code = JSONiq_1.default.serialize(it);
fs.writeFileSync(file.substring(0, file.length - 3) + ".js", code, "utf-8");
});
cli
.command("plan <file>")
.description("Print query plan")
.action(file => {
var query = new JSONiq_1.default(fs.readFileSync(file, "utf-8"));
query.setFileName(file);
var it = query.compile();
console.log(JSONiq_1.default.serialize(it));
});
cli
.command("ast <file>")
.description("Print query plan")
.action(file => {
var query = new JSONiq_1.default(fs.readFileSync(file, "utf-8"));
query.setFileName(file);
console.log(query.parse().toXML());
});
cli.version(pkg.version);
cli.parse(process.argv);
if (!cli.args.length) {
cli.help();
}
//# sourceMappingURL=data:application/json;base64,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LENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsQ0FBQztBQUVILEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXpCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25CLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNmLENBQUMiLCJmaWxlIjoibGliL2NsaS9NYWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uLy4uL3R5cGluZ3MvdHNkLmQudHNcIiAvPlxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBjbGkgZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IEpTT05pcSBmcm9tIFwiLi4vSlNPTmlxXCI7XG5pbXBvcnQgKiBhcyBjcCBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuXG52YXIgcGtnID0gcmVxdWlyZShcIi4uLy4uLy4uL3BhY2thZ2UuanNvblwiKTtcblxuY2xpXG4uY29tbWFuZChcInJ1biA8ZmlsZT5cIilcbi5kZXNjcmlwdGlvbihcInJ1biBKU09OaXEgcXVlcnlcIilcbi5hY3Rpb24oZmlsZSA9PiB7XG4gICAgdmFyIHF1ZXJ5ID0gbmV3IEpTT05pcShmcy5yZWFkRmlsZVN5bmMoZmlsZSwgXCJ1dGYtOFwiKSk7XG4gICAgcXVlcnkuc2V0RmlsZU5hbWUoZmlsZSk7XG4gICAgdmFyIGl0ID0gcXVlcnkuY29tcGlsZSgpO1xuICAgIHZhciBzb3VyY2UgPSBKU09OaXEuc2VyaWFsaXplKGl0KTtcbiAgICB2YXIgY2hpbGQgPSBjcC5leGVjU3luYyhcIm5vZGVcIiwgeyBpbnB1dDogc291cmNlIH0pO1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGNoaWxkLnRvU3RyaW5nKCkpO1xufSk7XG5cbmNsaVxuICAgIC5jb21tYW5kKFwiY29tcGlsZSA8ZmlsZT5cIilcbiAgICAuZGVzY3JpcHRpb24oXCJjb21waWxlIEpTT05pcSBxdWVyeVwiKVxuICAgIC5hY3Rpb24oZmlsZSA9PiB7XG4gICAgICAgIHZhciBxdWVyeSA9IG5ldyBKU09OaXEoZnMucmVhZEZpbGVTeW5jKGZpbGUsIFwidXRmLThcIikpO1xuICAgICAgICBxdWVyeS5zZXRGaWxlTmFtZShmaWxlKTtcbiAgICAgICAgdmFyIGl0ID0gcXVlcnkuY29tcGlsZSgpO1xuICAgICAgICB2YXIgY29kZSA9IEpTT05pcS5zZXJpYWxpemUoaXQpO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGZpbGUuc3Vic3RyaW5nKDAsIGZpbGUubGVuZ3RoIC0gMykgKyBcIi5qc1wiLCBjb2RlLCBcInV0Zi04XCIpO1xuICAgIH0pO1xuXG5jbGlcbi5jb21tYW5kKFwicGxhbiA8ZmlsZT5cIilcbi5kZXNjcmlwdGlvbihcIlByaW50IHF1ZXJ5IHBsYW5cIilcbi5hY3Rpb24oZmlsZSA9PiB7XG4gICAgdmFyIHF1ZXJ5ID0gbmV3IEpTT05pcShmcy5yZWFkRmlsZVN5bmMoZmlsZSwgXCJ1dGYtOFwiKSk7XG4gICAgcXVlcnkuc2V0RmlsZU5hbWUoZmlsZSk7XG4gICAgdmFyIGl0ID0gcXVlcnkuY29tcGlsZSgpO1xuICAgIGNvbnNvbGUubG9nKEpTT05pcS5zZXJpYWxpemUoaXQpKTtcbn0pO1xuXG5jbGlcbi5jb21tYW5kKFwiYXN0IDxmaWxlPlwiKVxuLmRlc2NyaXB0aW9uKFwiUHJpbnQgcXVlcnkgcGxhblwiKVxuLmFjdGlvbihmaWxlID0+IHtcbiAgICB2YXIgcXVlcnkgPSBuZXcgSlNPTmlxKGZzLnJlYWRGaWxlU3luYyhmaWxlLCBcInV0Zi04XCIpKTtcbiAgICBxdWVyeS5zZXRGaWxlTmFtZShmaWxlKTtcbiAgICBjb25zb2xlLmxvZyhxdWVyeS5wYXJzZSgpLnRvWE1MKCkpO1xufSk7XG5cbmNsaS52ZXJzaW9uKHBrZy52ZXJzaW9uKTtcblxuY2xpLnBhcnNlKHByb2Nlc3MuYXJndik7XG5pZiAoIWNsaS5hcmdzLmxlbmd0aCkge1xuICAgIGNsaS5oZWxwKCk7XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=