UNPKG

@solana-developers/helpers

Version:
123 lines 5.07 kB
"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 (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeKeypairs = exports.addKeypairToEnvFile = exports.getKeypairFromEnvironment = exports.getKeypairFromFile = exports.keypairToSecretKeyJSON = void 0; const web3_js_1 = require("@solana/web3.js"); const bs58_1 = __importDefault(require("bs58")); // Default value from Solana CLI const DEFAULT_FILEPATH = "~/.config/solana/id.json"; const keypairToSecretKeyJSON = (keypair) => { return JSON.stringify(Array.from(keypair.secretKey)); }; exports.keypairToSecretKeyJSON = keypairToSecretKeyJSON; const getKeypairFromFile = async (filepath) => { // Node-specific imports const path = await Promise.resolve().then(() => __importStar(require("node:path"))); // Work out correct file name if (!filepath) { filepath = DEFAULT_FILEPATH; } if (filepath[0] === "~") { const home = process.env.HOME || null; if (home) { filepath = path.join(home, filepath.slice(1)); } } // Get contents of file let fileContents; try { // Node-specific imports const { readFile } = await Promise.resolve().then(() => __importStar(require("node:fs/promises"))); const fileContentsBuffer = await readFile(filepath); fileContents = fileContentsBuffer.toString(); } catch (error) { throw new Error(`Could not read keypair from file at '${filepath}'`); } // Parse contents of file let parsedFileContents; try { parsedFileContents = Uint8Array.from(JSON.parse(fileContents)); } catch (thrownObject) { const error = thrownObject; if (!error.message.includes("Unexpected token")) { throw error; } throw new Error(`Invalid secret key file at '${filepath}'!`); } return web3_js_1.Keypair.fromSecretKey(parsedFileContents); }; exports.getKeypairFromFile = getKeypairFromFile; const getKeypairFromEnvironment = (variableName) => { const secretKeyString = process.env[variableName]; if (!secretKeyString) { throw new Error(`Please set '${variableName}' in environment.`); } // Try the shorter base58 format first let decodedSecretKey; try { decodedSecretKey = bs58_1.default.decode(secretKeyString); return web3_js_1.Keypair.fromSecretKey(decodedSecretKey); } catch (throwObject) { const error = throwObject; if (!error.message.includes("Non-base58 character")) { throw new Error(`Invalid secret key in environment variable '${variableName}'!`); } } // Try the longer JSON format try { decodedSecretKey = Uint8Array.from(JSON.parse(secretKeyString)); } catch (error) { throw new Error(`Invalid secret key in environment variable '${variableName}'!`); } return web3_js_1.Keypair.fromSecretKey(decodedSecretKey); }; exports.getKeypairFromEnvironment = getKeypairFromEnvironment; const addKeypairToEnvFile = async (keypair, variableName, envFileName) => { // Node-specific imports const { appendFile } = await Promise.resolve().then(() => __importStar(require("node:fs/promises"))); if (!envFileName) { envFileName = ".env"; } const existingSecretKey = process.env[variableName]; if (existingSecretKey) { throw new Error(`'${variableName}' already exists in env file.`); } const secretKeyString = (0, exports.keypairToSecretKeyJSON)(keypair); await appendFile(envFileName, `\n# Solana Address: ${keypair.publicKey.toBase58()}\n${variableName}=${secretKeyString}`); }; exports.addKeypairToEnvFile = addKeypairToEnvFile; // Shout out to Dean from WBA for this technique const makeKeypairs = (amount) => { return Array.from({ length: amount }, () => web3_js_1.Keypair.generate()); }; exports.makeKeypairs = makeKeypairs; //# sourceMappingURL=keypair.js.map