@selfage/message
Version:
Runtime lib for generated messages to parse, copy, serialize and deserialize messages.
81 lines • 11.8 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const path = require("path");
const serializer_1 = require("./serializer");
const commander_1 = require("commander");
function toUnixPath(originalPath) {
return originalPath.split(path.sep).join(path.posix.sep);
}
function getImportFilePath(file) {
return `./${path.posix.relative(toUnixPath(__dirname), path.posix.join(toUnixPath(process.cwd()), toUnixPath(file)))}`;
}
async function serialize(jsonString, encoding, file, name) {
let message = JSON.parse(jsonString);
let importedFile = await Promise.resolve(`${getImportFilePath(file)}`).then(s => __importStar(require(s)));
let binary = (0, serializer_1.serializeMessage)(message, importedFile[name]);
console.log(Buffer.from(binary).toString(encoding));
}
async function deserialize(encodedString, encoding, file, name) {
let binary = Buffer.from(encodedString, encoding);
let importedFile = await Promise.resolve(`${getImportFilePath(file)}`).then(s => __importStar(require(s)));
console.log(JSON.stringify((0, serializer_1.deserializeMessage)(binary, importedFile[name])));
}
async function main() {
let packageConfig = JSON.parse((await fs.promises.readFile(path.join(__dirname, "package.json"))).toString());
let program = new commander_1.Command();
program.version(packageConfig.version);
program
.command("serialize <string>")
.alias("srl")
.description(`Serialize a message represented as a JSON string into bytes encoded as a hexadecimal/base64-encoded string.`)
.requiredOption("-e, --encoding <encoding>", `Specify the output encoding. Usually "hex" or "base64". But any encoding Nodejs Buffer supports will do.`)
.requiredOption("-d, --descriptor-file <file>", `The JS/TS file that contains the target message's descriptor, excluding .js/.ts suffix.`)
.requiredOption("-n, --descriptor-name <name>", `The variable name in the descriptor file.`)
.action((jsonString, options) => serialize(jsonString, options.encoding, options.descriptorFile, options.descriptorName));
program
.command("deserialize <string>")
.alias("dsl")
.description(`Deserialize bytes encoded as a hexadecimal/base64-encoded string into a message represented as a JSON string.`)
.requiredOption("-e, --encoding <encoding>", `Specify the input encoding. Usually "hex" or "base64". But any encoding Nodejs Buffer supports will do.`)
.requiredOption("-d, --descriptor-file <file>", `The JS/TS file that contains the target message's descriptor, excluding .js/.ts suffix.`)
.requiredOption("-n, --descriptor-name <name>", `The variable name in the descriptor file.`)
.action((encodedString, options) => deserialize(encodedString, options.encoding, options.descriptorFile, options.descriptorName));
await program.parseAsync();
}
main();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EseUJBQTBCO0FBQzFCLDZCQUE4QjtBQUM5Qiw2Q0FBb0U7QUFDcEUseUNBQW9DO0FBRXBDLFNBQVMsVUFBVSxDQUFDLFlBQW9CO0lBQ3RDLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsSUFBWTtJQUNyQyxPQUFPLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekgsQ0FBQztBQUVELEtBQUssVUFBVSxTQUFTLENBQ3RCLFVBQWtCLEVBQ2xCLFFBQTBCLEVBQzFCLElBQVksRUFDWixJQUFZO0lBRVosSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxJQUFJLFlBQVksR0FBRyx5QkFBYSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsdUNBQUMsQ0FBQztJQUN6RCxJQUFJLE1BQU0sR0FBRyxJQUFBLDZCQUFnQixFQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELEtBQUssVUFBVSxXQUFXLENBQ3hCLGFBQXFCLEVBQ3JCLFFBQTBCLEVBQzFCLElBQVksRUFDWixJQUFZO0lBRVosSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEQsSUFBSSxZQUFZLEdBQUcseUJBQWEsaUJBQWlCLENBQUMsSUFBSSxDQUFDLHVDQUFDLENBQUM7SUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUEsK0JBQWtCLEVBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUk7SUFDakIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDNUIsQ0FDRSxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ2pFLENBQUMsUUFBUSxFQUFFLENBQ2IsQ0FBQztJQUNGLElBQUksT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO0lBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLE9BQU87U0FDSixPQUFPLENBQUMsb0JBQW9CLENBQUM7U0FDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNaLFdBQVcsQ0FDViw2R0FBNkcsQ0FDOUc7U0FDQSxjQUFjLENBQ2IsMkJBQTJCLEVBQzNCLDBHQUEwRyxDQUMzRztTQUNBLGNBQWMsQ0FDYiw4QkFBOEIsRUFDOUIseUZBQXlGLENBQzFGO1NBQ0EsY0FBYyxDQUNiLDhCQUE4QixFQUM5QiwyQ0FBMkMsQ0FDNUM7U0FDQSxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FDOUIsU0FBUyxDQUNQLFVBQVUsRUFDVixPQUFPLENBQUMsUUFBUSxFQUNoQixPQUFPLENBQUMsY0FBYyxFQUN0QixPQUFPLENBQUMsY0FBYyxDQUN2QixDQUNGLENBQUM7SUFDSixPQUFPO1NBQ0osT0FBTyxDQUFDLHNCQUFzQixDQUFDO1NBQy9CLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDWixXQUFXLENBQ1YsK0dBQStHLENBQ2hIO1NBQ0EsY0FBYyxDQUNiLDJCQUEyQixFQUMzQix5R0FBeUcsQ0FDMUc7U0FDQSxjQUFjLENBQ2IsOEJBQThCLEVBQzlCLHlGQUF5RixDQUMxRjtTQUNBLGNBQWMsQ0FDYiw4QkFBOEIsRUFDOUIsMkNBQTJDLENBQzVDO1NBQ0EsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ2pDLFdBQVcsQ0FDVCxhQUFhLEVBQ2IsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLGNBQWMsRUFDdEIsT0FBTyxDQUFDLGNBQWMsQ0FDdkIsQ0FDRixDQUFDO0lBQ0osTUFBTSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IGZzID0gcmVxdWlyZShcImZzXCIpO1xuaW1wb3J0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmltcG9ydCB7IGRlc2VyaWFsaXplTWVzc2FnZSwgc2VyaWFsaXplTWVzc2FnZSB9IGZyb20gXCIuL3NlcmlhbGl6ZXJcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmZ1bmN0aW9uIHRvVW5peFBhdGgob3JpZ2luYWxQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gb3JpZ2luYWxQYXRoLnNwbGl0KHBhdGguc2VwKS5qb2luKHBhdGgucG9zaXguc2VwKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW1wb3J0RmlsZVBhdGgoZmlsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAuLyR7cGF0aC5wb3NpeC5yZWxhdGl2ZSh0b1VuaXhQYXRoKF9fZGlybmFtZSksIHBhdGgucG9zaXguam9pbih0b1VuaXhQYXRoKHByb2Nlc3MuY3dkKCkpLCB0b1VuaXhQYXRoKGZpbGUpKSl9YDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VyaWFsaXplKFxuICBqc29uU3RyaW5nOiBzdHJpbmcsXG4gIGVuY29kaW5nOiBcImhleFwiIHwgXCJiYXNlNjRcIixcbiAgZmlsZTogc3RyaW5nLFxuICBuYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IG1lc3NhZ2UgPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuICBsZXQgaW1wb3J0ZWRGaWxlID0gYXdhaXQgaW1wb3J0KGdldEltcG9ydEZpbGVQYXRoKGZpbGUpKTtcbiAgbGV0IGJpbmFyeSA9IHNlcmlhbGl6ZU1lc3NhZ2UobWVzc2FnZSwgaW1wb3J0ZWRGaWxlW25hbWVdKTtcbiAgY29uc29sZS5sb2coQnVmZmVyLmZyb20oYmluYXJ5KS50b1N0cmluZyhlbmNvZGluZykpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZXNlcmlhbGl6ZShcbiAgZW5jb2RlZFN0cmluZzogc3RyaW5nLFxuICBlbmNvZGluZzogXCJoZXhcIiB8IFwiYmFzZTY0XCIsXG4gIGZpbGU6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBiaW5hcnkgPSBCdWZmZXIuZnJvbShlbmNvZGVkU3RyaW5nLCBlbmNvZGluZyk7XG4gIGxldCBpbXBvcnRlZEZpbGUgPSBhd2FpdCBpbXBvcnQoZ2V0SW1wb3J0RmlsZVBhdGgoZmlsZSkpO1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkZXNlcmlhbGl6ZU1lc3NhZ2UoYmluYXJ5LCBpbXBvcnRlZEZpbGVbbmFtZV0pKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBwYWNrYWdlQ29uZmlnID0gSlNPTi5wYXJzZShcbiAgICAoXG4gICAgICBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShwYXRoLmpvaW4oX19kaXJuYW1lLCBcInBhY2thZ2UuanNvblwiKSlcbiAgICApLnRvU3RyaW5nKCksXG4gICk7XG4gIGxldCBwcm9ncmFtID0gbmV3IENvbW1hbmQoKTtcbiAgcHJvZ3JhbS52ZXJzaW9uKHBhY2thZ2VDb25maWcudmVyc2lvbik7XG4gIHByb2dyYW1cbiAgICAuY29tbWFuZChcInNlcmlhbGl6ZSA8c3RyaW5nPlwiKVxuICAgIC5hbGlhcyhcInNybFwiKVxuICAgIC5kZXNjcmlwdGlvbihcbiAgICAgIGBTZXJpYWxpemUgYSBtZXNzYWdlIHJlcHJlc2VudGVkIGFzIGEgSlNPTiBzdHJpbmcgaW50byBieXRlcyBlbmNvZGVkIGFzIGEgaGV4YWRlY2ltYWwvYmFzZTY0LWVuY29kZWQgc3RyaW5nLmAsXG4gICAgKVxuICAgIC5yZXF1aXJlZE9wdGlvbihcbiAgICAgIFwiLWUsIC0tZW5jb2RpbmcgPGVuY29kaW5nPlwiLFxuICAgICAgYFNwZWNpZnkgdGhlIG91dHB1dCBlbmNvZGluZy4gVXN1YWxseSBcImhleFwiIG9yIFwiYmFzZTY0XCIuIEJ1dCBhbnkgZW5jb2RpbmcgTm9kZWpzIEJ1ZmZlciBzdXBwb3J0cyB3aWxsIGRvLmAsXG4gICAgKVxuICAgIC5yZXF1aXJlZE9wdGlvbihcbiAgICAgIFwiLWQsIC0tZGVzY3JpcHRvci1maWxlIDxmaWxlPlwiLFxuICAgICAgYFRoZSBKUy9UUyBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHRhcmdldCBtZXNzYWdlJ3MgZGVzY3JpcHRvciwgZXhjbHVkaW5nIC5qcy8udHMgc3VmZml4LmAsXG4gICAgKVxuICAgIC5yZXF1aXJlZE9wdGlvbihcbiAgICAgIFwiLW4sIC0tZGVzY3JpcHRvci1uYW1lIDxuYW1lPlwiLFxuICAgICAgYFRoZSB2YXJpYWJsZSBuYW1lIGluIHRoZSBkZXNjcmlwdG9yIGZpbGUuYCxcbiAgICApXG4gICAgLmFjdGlvbigoanNvblN0cmluZywgb3B0aW9ucykgPT5cbiAgICAgIHNlcmlhbGl6ZShcbiAgICAgICAganNvblN0cmluZyxcbiAgICAgICAgb3B0aW9ucy5lbmNvZGluZyxcbiAgICAgICAgb3B0aW9ucy5kZXNjcmlwdG9yRmlsZSxcbiAgICAgICAgb3B0aW9ucy5kZXNjcmlwdG9yTmFtZSxcbiAgICAgICksXG4gICAgKTtcbiAgcHJvZ3JhbVxuICAgIC5jb21tYW5kKFwiZGVzZXJpYWxpemUgPHN0cmluZz5cIilcbiAgICAuYWxpYXMoXCJkc2xcIilcbiAgICAuZGVzY3JpcHRpb24oXG4gICAgICBgRGVzZXJpYWxpemUgYnl0ZXMgZW5jb2RlZCBhcyBhIGhleGFkZWNpbWFsL2Jhc2U2NC1lbmNvZGVkIHN0cmluZyBpbnRvIGEgbWVzc2FnZSByZXByZXNlbnRlZCBhcyBhIEpTT04gc3RyaW5nLmAsXG4gICAgKVxuICAgIC5yZXF1aXJlZE9wdGlvbihcbiAgICAgIFwiLWUsIC0tZW5jb2RpbmcgPGVuY29kaW5nPlwiLFxuICAgICAgYFNwZWNpZnkgdGhlIGlucHV0IGVuY29kaW5nLiBVc3VhbGx5IFwiaGV4XCIgb3IgXCJiYXNlNjRcIi4gQnV0IGFueSBlbmNvZGluZyBOb2RlanMgQnVmZmVyIHN1cHBvcnRzIHdpbGwgZG8uYCxcbiAgICApXG4gICAgLnJlcXVpcmVkT3B0aW9uKFxuICAgICAgXCItZCwgLS1kZXNjcmlwdG9yLWZpbGUgPGZpbGU+XCIsXG4gICAgICBgVGhlIEpTL1RTIGZpbGUgdGhhdCBjb250YWlucyB0aGUgdGFyZ2V0IG1lc3NhZ2UncyBkZXNjcmlwdG9yLCBleGNsdWRpbmcgLmpzLy50cyBzdWZmaXguYCxcbiAgICApXG4gICAgLnJlcXVpcmVkT3B0aW9uKFxuICAgICAgXCItbiwgLS1kZXNjcmlwdG9yLW5hbWUgPG5hbWU+XCIsXG4gICAgICBgVGhlIHZhcmlhYmxlIG5hbWUgaW4gdGhlIGRlc2NyaXB0b3IgZmlsZS5gLFxuICAgIClcbiAgICAuYWN0aW9uKChlbmNvZGVkU3RyaW5nLCBvcHRpb25zKSA9PlxuICAgICAgZGVzZXJpYWxpemUoXG4gICAgICAgIGVuY29kZWRTdHJpbmcsXG4gICAgICAgIG9wdGlvbnMuZW5jb2RpbmcsXG4gICAgICAgIG9wdGlvbnMuZGVzY3JpcHRvckZpbGUsXG4gICAgICAgIG9wdGlvbnMuZGVzY3JpcHRvck5hbWUsXG4gICAgICApLFxuICAgICk7XG4gIGF3YWl0IHByb2dyYW0ucGFyc2VBc3luYygpO1xufVxuXG5tYWluKCk7XG4iXX0=