UNPKG

vasku

Version:

TVM-Solidity contract development framework

80 lines (79 loc) 3.04 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.namedKeys = exports.generateOrReadKeys = exports.readKeys = void 0; const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const global_1 = require("../global"); const constants_1 = require("../contract/constants"); const generateRandomKeyPair_1 = require("../utils/generateRandomKeyPair"); /** * Read key pair from JSON file * @param file Absolute path to file * @example * readKeys('/home/user/keys/GiverV2.keys.json') * @return * { * public: '61d08f0f1aa152095b6b2e19f31bf09d84a5ae6037be9247d0e54a3926d46593', * secret: '2c7645b1201c0dd84dd38c3fe0e3a70e7de0d4ef77333f33a916280d9994205c' * } */ function readKeys(file) { try { return JSON.parse(fs_extra_1.default.readFileSync(file, { encoding: 'utf8' })); } catch (e) { const exceptionMessage = e.toString(); throw new Error(`Can't read key pair from "${file}"\n${exceptionMessage}`); } } exports.readKeys = readKeys; /** * Generate random key pair if key file does not exist * If file exists calls readKeys() * @param file Absolute path to file * @param client SDK client * @example * createOrReadKeys('/home/user/keys/GiverV2.keys.json') * @return * { * public: '61d08f0f1aa152095b6b2e19f31bf09d84a5ae6037be9247d0e54a3926d46593', * secret: '2c7645b1201c0dd84dd38c3fe0e3a70e7de0d4ef77333f33a916280d9994205c' * } */ async function generateOrReadKeys(file, client) { const cl = client ?? global_1.Global.client; if (cl === undefined) throw constants_1.error.noClient; if (fs_extra_1.default.existsSync(file)) return readKeys(file); const keys = await (0, generateRandomKeyPair_1.generateRandomKeyPair)(cl); const directory = path_1.default.dirname(file); fs_extra_1.default.mkdirSync(directory, { recursive: true }); fs_extra_1.default.writeFileSync(file, JSON.stringify(keys, null, 2)); return keys; } exports.generateOrReadKeys = generateOrReadKeys; /** * Generate JSON file with random key pair in keys directory if key file does not exist * @param name File name without extension e.g. `wallet` * @param directory Keys relative path e.g. `./keys` * @param client SDK client * @example * namedKeys('root') * @return * { * public: '61d08f0f1aa152095b6b2e19f31bf09d84a5ae6037be9247d0e54a3926d46593', * secret: '2c7645b1201c0dd84dd38c3fe0e3a70e7de0d4ef77333f33a916280d9994205c' * } */ async function namedKeys(name, directory, client) { const dir = directory ?? global_1.Global.config?.paths.keys; if (dir === undefined) throw new Error('Keys directory is undefined'); const file = path_1.default.resolve(process.cwd(), dir, `${name}.json`); return await generateOrReadKeys(file, client); } exports.namedKeys = namedKeys;