gill
Version:
a modern javascript/typescript client library for interacting with the Solana blockchain
75 lines (73 loc) • 3.58 kB
JavaScript
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