jsoniq
Version:
JSONiq implementation for JavaScript
30 lines (28 loc) • 4.75 kB
JavaScript
;
/// <reference path="../../../typings/tsd.d.ts" />
var cp = require("child_process");
var JSONiq_1 = require("../../../lib/JSONiq");
function expectQuery(source, jsoniq) {
let query = new JSONiq_1.default(source);
let filename = jsoniq ? "test.jq" : "test.xq";
query.setFileName(filename);
let it = query.compile();
let js = JSONiq_1.default.serializeDebug(it);
let child = cp.execSync("node", { input: js });
return expect(child.toString() === "" ? [] :
child.toString().trim().split("\n").map(v => {
return JSON.parse(v);
}));
}
exports.expectQuery = expectQuery;
function expectSerializedQuery(source, jsoniq) {
let query = new JSONiq_1.default(source);
let filename = jsoniq ? "test.jq" : "test.xq";
query.setFileName(filename);
let it = query.compile();
let js = JSONiq_1.default.serializeDebug(it);
let child = cp.execSync("node", { input: js });
return expect(child.toString().trim().split("\n").join(" "));
}
exports.expectSerializedQuery = expectSerializedQuery;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RzL25vZGUvcnVudGltZS9VdGlscy50cyJdLCJuYW1lcyI6WyJleHBlY3RRdWVyeSIsImV4cGVjdFNlcmlhbGl6ZWRRdWVyeSJdLCJtYXBwaW5ncyI6IjtBQUFBLGtEQUFrRDtBQUNsRCxJQUFZLEVBQUUsV0FBTSxlQUFlLENBQUMsQ0FBQTtBQUVwQyx1QkFBbUIscUJBQXFCLENBQUMsQ0FBQTtBQUV6QyxxQkFBNEIsTUFBYyxFQUFFLE1BQWdCO0lBQ3hEQSxJQUFJQSxLQUFLQSxHQUFHQSxJQUFJQSxnQkFBTUEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0E7SUFDL0JBLElBQUlBLFFBQVFBLEdBQUdBLE1BQU1BLEdBQUdBLFNBQVNBLEdBQUdBLFNBQVNBLENBQUNBO0lBQzlDQSxLQUFLQSxDQUFDQSxXQUFXQSxDQUFDQSxRQUFRQSxDQUFDQSxDQUFDQTtJQUM1QkEsSUFBSUEsRUFBRUEsR0FBR0EsS0FBS0EsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0E7SUFDekJBLElBQUlBLEVBQUVBLEdBQUdBLGdCQUFNQSxDQUFDQSxjQUFjQSxDQUFDQSxFQUFFQSxDQUFDQSxDQUFDQTtJQUNuQ0EsSUFBSUEsS0FBS0EsR0FBR0EsRUFBRUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsTUFBTUEsRUFBRUEsRUFBRUEsS0FBS0EsRUFBRUEsRUFBRUEsRUFBRUEsQ0FBQ0EsQ0FBQ0E7SUFDL0NBLE1BQU1BLENBQUNBLE1BQU1BLENBQ1RBLEtBQUtBLENBQUNBLFFBQVFBLEVBQUVBLEtBQUtBLEVBQUVBLEdBQUdBLEVBQUVBO1FBQzVCQSxLQUFLQSxDQUFDQSxRQUFRQSxFQUFFQSxDQUFDQSxJQUFJQSxFQUFFQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxDQUFDQTtZQUNyQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDekJBLENBQUNBLENBQUNBLENBQ0xBLENBQUNBO0FBQ05BLENBQUNBO0FBYmUsbUJBQVcsY0FhMUIsQ0FBQTtBQUVELCtCQUFzQyxNQUFjLEVBQUUsTUFBZ0I7SUFDbEVDLElBQUlBLEtBQUtBLEdBQUdBLElBQUlBLGdCQUFNQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQTtJQUMvQkEsSUFBSUEsUUFBUUEsR0FBR0EsTUFBTUEsR0FBR0EsU0FBU0EsR0FBR0EsU0FBU0EsQ0FBQ0E7SUFDOUNBLEtBQUtBLENBQUNBLFdBQVdBLENBQUNBLFFBQVFBLENBQUNBLENBQUNBO0lBQzVCQSxJQUFJQSxFQUFFQSxHQUFHQSxLQUFLQSxDQUFDQSxPQUFPQSxFQUFFQSxDQUFDQTtJQUN6QkEsSUFBSUEsRUFBRUEsR0FBR0EsZ0JBQU1BLENBQUNBLGNBQWNBLENBQUNBLEVBQUVBLENBQUNBLENBQUNBO0lBQ25DQSxJQUFJQSxLQUFLQSxHQUFHQSxFQUFFQSxDQUFDQSxRQUFRQSxDQUFDQSxNQUFNQSxFQUFFQSxFQUFFQSxLQUFLQSxFQUFFQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQTtJQUMvQ0EsTUFBTUEsQ0FBQ0EsTUFBTUEsQ0FDVEEsS0FBS0EsQ0FBQ0EsUUFBUUEsRUFBRUEsQ0FBQ0EsSUFBSUEsRUFBRUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FDaERBLENBQUNBO0FBQ05BLENBQUNBO0FBVmUsNkJBQXFCLHdCQVVwQyxDQUFBIiwiZmlsZSI6InRlc3RzL25vZGUvcnVudGltZS9VdGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi8uLi8uLi90eXBpbmdzL3RzZC5kLnRzXCIgLz5cbmltcG9ydCAqIGFzIGNwIGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5cbmltcG9ydCBKU09OaXEgZnJvbSBcIi4uLy4uLy4uL2xpYi9KU09OaXFcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGVjdFF1ZXJ5KHNvdXJjZTogc3RyaW5nLCBqc29uaXE/OiBib29sZWFuKTogamFzbWluZS5NYXRjaGVycyB7XG4gICAgbGV0IHF1ZXJ5ID0gbmV3IEpTT05pcShzb3VyY2UpO1xuICAgIGxldCBmaWxlbmFtZSA9IGpzb25pcSA/IFwidGVzdC5qcVwiIDogXCJ0ZXN0LnhxXCI7XG4gICAgcXVlcnkuc2V0RmlsZU5hbWUoZmlsZW5hbWUpO1xuICAgIGxldCBpdCA9IHF1ZXJ5LmNvbXBpbGUoKTtcbiAgICBsZXQganMgPSBKU09OaXEuc2VyaWFsaXplRGVidWcoaXQpO1xuICAgIGxldCBjaGlsZCA9IGNwLmV4ZWNTeW5jKFwibm9kZVwiLCB7IGlucHV0OiBqcyB9KTtcbiAgICByZXR1cm4gZXhwZWN0KFxuICAgICAgICBjaGlsZC50b1N0cmluZygpID09PSBcIlwiID8gW10gOlxuICAgICAgICBjaGlsZC50b1N0cmluZygpLnRyaW0oKS5zcGxpdChcIlxcblwiKS5tYXAodiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2KTtcbiAgICAgICAgfSlcbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwZWN0U2VyaWFsaXplZFF1ZXJ5KHNvdXJjZTogc3RyaW5nLCBqc29uaXE/OiBib29sZWFuKTogamFzbWluZS5NYXRjaGVycyB7XG4gICAgbGV0IHF1ZXJ5ID0gbmV3IEpTT05pcShzb3VyY2UpO1xuICAgIGxldCBmaWxlbmFtZSA9IGpzb25pcSA/IFwidGVzdC5qcVwiIDogXCJ0ZXN0LnhxXCI7XG4gICAgcXVlcnkuc2V0RmlsZU5hbWUoZmlsZW5hbWUpO1xuICAgIGxldCBpdCA9IHF1ZXJ5LmNvbXBpbGUoKTtcbiAgICBsZXQganMgPSBKU09OaXEuc2VyaWFsaXplRGVidWcoaXQpO1xuICAgIGxldCBjaGlsZCA9IGNwLmV4ZWNTeW5jKFwibm9kZVwiLCB7IGlucHV0OiBqcyB9KTtcbiAgICByZXR1cm4gZXhwZWN0KFxuICAgICAgICBjaGlsZC50b1N0cmluZygpLnRyaW0oKS5zcGxpdChcIlxcblwiKS5qb2luKFwiIFwiKVxuICAgICk7XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=