UNPKG

@selfage/message

Version:

Runtime lib for generated messages to parse, copy, serialize and deserialize messages.

81 lines 11.8 kB
#!/usr/bin/env node "use strict"; 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=