UNPKG

gill

Version:

a modern javascript/typescript client library for interacting with the Solana blockchain

75 lines (73 loc) 3.58 kB
import { createKeypairFromBase58, extractBytesFromKeyPair } from '../chunk-HVCY6BNF.node.mjs'; import { readFileSync, writeFileSync, appendFileSync } from 'node:fs'; import { homedir } from 'node:os'; import { resolve } from 'node:path'; import { createKeyPairFromBytes, createSignerFromKeyPair, createKeyPairSignerFromBytes } from '@solana/kit'; // src/node/const.ts var DEFAULT_CLI_KEYPAIR_PATH = "~/.config/solana/id.json"; async function loadKeypairFromFile(filePath = DEFAULT_CLI_KEYPAIR_PATH) { const resolvedPath = resolve(filePath.startsWith("~") ? filePath.replace("~", homedir()) : filePath); return createKeyPairFromBytes(Uint8Array.from(JSON.parse(readFileSync(resolvedPath, "utf8")))); } async function loadKeypairSignerFromFile(filePath = DEFAULT_CLI_KEYPAIR_PATH) { return createSignerFromKeyPair(await loadKeypairFromFile(filePath)); } async function loadKeypairFromEnvironment(variableName) { if (!process.env[variableName]) { throw new Error(`Environment variable '${variableName}' not set`); } return createKeyPairFromBytes(Uint8Array.from(JSON.parse(process.env[variableName]))); } async function loadKeypairSignerFromEnvironment(variableName) { return createSignerFromKeyPair(await loadKeypairFromEnvironment(variableName)); } async function loadKeypairFromEnvironmentBase58(variableName) { if (!process.env[variableName]) { throw new Error(`Environment variable '${variableName}' not set`); } return createKeypairFromBase58(process.env[variableName]); } async function loadKeypairSignerFromEnvironmentBase58(variableName) { return createSignerFromKeyPair(await loadKeypairFromEnvironmentBase58(variableName)); } async function saveKeypairToFile(keypair, filePath) { if (!filePath.endsWith(".json")) { throw new Error("Must provide a json file path to save keypair to"); } const resolvedPath = resolve(filePath.startsWith("~") ? filePath.replace("~", homedir()) : filePath); let bytes; bytes = await extractBytesFromKeyPair(keypair); writeFileSync(resolvedPath, "[" + Array.from(bytes).toString() + "]", "utf8"); const [input, output] = await Promise.all([ createKeyPairSignerFromBytes(bytes), loadKeypairSignerFromFile(resolvedPath) ]); bytes = null; return input.address === output.address; } async function saveKeypairSignerToFile(keypairSigner, filePath) { return saveKeypairToFile(keypairSigner.keyPair, filePath); } async function saveKeypairToEnvFile(keypair, variableName, envFilePath = ".env") { if (process.env[variableName]) { throw new Error(`Environment variable '${variableName}' already exist.`); } const resolvedPath = resolve(envFilePath.startsWith("~") ? envFilePath.replace("~", homedir()) : envFilePath); let bytes; bytes = await extractBytesFromKeyPair(keypair); const signer = await createKeyPairSignerFromBytes(bytes); appendFileSync( resolvedPath, ` # Solana Address: ${signer.address} ${variableName}=[${Array.from(bytes).toString()}]`, "utf8" ); bytes = null; } async function saveKeypairSignerToEnvFile(keypairSigner, variableName, envFilePath = ".env") { return saveKeypairToEnvFile(keypairSigner.keyPair, variableName, envFilePath); } export { DEFAULT_CLI_KEYPAIR_PATH, loadKeypairFromEnvironment, loadKeypairFromEnvironmentBase58, loadKeypairFromFile, loadKeypairSignerFromEnvironment, loadKeypairSignerFromEnvironmentBase58, loadKeypairSignerFromFile, saveKeypairSignerToEnvFile, saveKeypairSignerToFile, saveKeypairToEnvFile, saveKeypairToFile }; //# sourceMappingURL=index.node.mjs.map //# sourceMappingURL=index.node.mjs.map