UNPKG

gill

Version:

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

1 lines 10.9 kB
{"version":3,"sources":["../../src/node/const.ts","../../src/node/load-keypair.ts","../../src/node/load-keypair-base58.ts","../../src/node/save-keypair.ts"],"names":["createSignerFromKeyPair","resolve","homedir"],"mappings":"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","file":"index.node.mjs","sourcesContent":["/** Default Solana tool suite local keypair path */\nexport const DEFAULT_CLI_KEYPAIR_PATH = \"~/.config/solana/id.json\";\n","import { readFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { resolve } from \"node:path\";\n\nimport { createKeyPairFromBytes, createSignerFromKeyPair, type KeyPairSigner } from \"@solana/kit\";\nimport { DEFAULT_CLI_KEYPAIR_PATH } from \"./const\";\nimport type { loadKeypairFromEnvironmentBase58, loadKeypairSignerFromEnvironmentBase58 } from \"./load-keypair-base58\";\n\n/**\n * Load a `CryptoKeyPair` from a filesystem wallet json file\n * (i.e. those generated by the `solana-keygen` command)\n *\n * @param filePath - file path to a json keypair file, default={@link DEFAULT_CLI_KEYPAIR_PATH}\n */\nexport async function loadKeypairFromFile(filePath: string = DEFAULT_CLI_KEYPAIR_PATH): Promise<CryptoKeyPair> {\n const resolvedPath = resolve(filePath.startsWith(\"~\") ? filePath.replace(\"~\", homedir()) : filePath);\n return createKeyPairFromBytes(Uint8Array.from(JSON.parse(readFileSync(resolvedPath, \"utf8\"))));\n}\n\n/**\n * Load a `KeyPairSigner` from a filesystem wallet json file\n * (i.e. those generated by the `solana-keygen` command)\n *\n * @param filePath - file path to a json keypair file, default={@link DEFAULT_CLI_KEYPAIR_PATH}\n */\nexport async function loadKeypairSignerFromFile(filePath: string = DEFAULT_CLI_KEYPAIR_PATH): Promise<KeyPairSigner> {\n return createSignerFromKeyPair(await loadKeypairFromFile(filePath));\n}\n\n/**\n * Load a `CryptoKeyPair` from an environment variable\n * (i.e. those generated by the `solana-keygen` command)\n *\n * Note: for base58 encoded keypairs in environment variables use {@link loadKeypairFromEnvironmentBase58}\n *\n * @param variableName - environment variable name accessible via `process.env[variableName]`\n */\nexport async function loadKeypairFromEnvironment<TName extends keyof NodeJS.ProcessEnv | string>(\n variableName: TName,\n): Promise<CryptoKeyPair> {\n if (!process.env[variableName]) {\n throw new Error(`Environment variable '${variableName}' not set`);\n }\n return createKeyPairFromBytes(Uint8Array.from(JSON.parse(process.env[variableName])));\n}\n\n/**\n * Load a `KeyPairSigner` from a environment variable\n * (i.e. those generated by the `solana-keygen` command)\n *\n * Note: for base58 encoded keypairs in environment variables use {@link loadKeypairSignerFromEnvironmentBase58}\n *\n * @param variableName - environment variable name accessible via `process.env[variableName]`\n */\nexport async function loadKeypairSignerFromEnvironment<TName extends keyof NodeJS.ProcessEnv | string>(\n variableName: TName,\n): Promise<KeyPairSigner> {\n return createSignerFromKeyPair(await loadKeypairFromEnvironment(variableName));\n}\n","import { createSignerFromKeyPair, type KeyPairSigner } from \"@solana/kit\";\nimport { createKeypairFromBase58 } from \"../core\";\n\n/**\n * Load a `CryptoKeyPair` from an environment variable containing a base58 encoded keypair\n *\n * @param variableName - environment variable name accessible via `process.env[variableName]`\n */\nexport async function loadKeypairFromEnvironmentBase58<TName extends keyof NodeJS.ProcessEnv | string>(\n variableName: TName,\n): Promise<CryptoKeyPair> {\n if (!process.env[variableName]) {\n throw new Error(`Environment variable '${variableName}' not set`);\n }\n return createKeypairFromBase58(process.env[variableName]);\n}\n\n/**\n * Load a `KeyPairSigner` from an environment variable containing a base58 encoded keypair\n *\n * @param variableName - environment variable name accessible via `process.env[variableName]`\n */\nexport async function loadKeypairSignerFromEnvironmentBase58<TName extends keyof NodeJS.ProcessEnv | string>(\n variableName: TName,\n): Promise<KeyPairSigner> {\n return createSignerFromKeyPair(await loadKeypairFromEnvironmentBase58(variableName));\n}\n","import { appendFileSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { resolve } from \"node:path\";\n\nimport { createKeyPairSignerFromBytes, type KeyPairSigner } from \"@solana/kit\";\nimport { extractBytesFromKeyPair } from \"../core\";\nimport { loadKeypairSignerFromFile } from \"./load-keypair\";\n\n/**\n * Save an extractable `CryptoKeyPair` to a filesystem wallet json file\n * (i.e. same format as those generated by the `solana-keygen` command)\n *\n * @param keypair - an extractable `CryptoKeyPair`\n * @param filePath - path to file where the keypair will be saved\n */\nexport async function saveKeypairToFile(keypair: CryptoKeyPair, filePath: string): Promise<boolean> {\n if (!filePath.endsWith(\".json\")) {\n throw new Error(\"Must provide a json file path to save keypair to\");\n }\n\n const resolvedPath = resolve(filePath.startsWith(\"~\") ? filePath.replace(\"~\", homedir()) : filePath);\n\n // initialized in multiple steps to help deallocate the bytes faster\n let bytes: Uint8Array | null;\n bytes = await extractBytesFromKeyPair(keypair);\n writeFileSync(resolvedPath, \"[\" + Array.from(bytes).toString() + \"]\", \"utf8\");\n\n // attempt to reload the saved file to ensure the save was correctly formatted\n const [input, output] = await Promise.all([\n createKeyPairSignerFromBytes(bytes),\n loadKeypairSignerFromFile(resolvedPath),\n ]);\n\n // help force the key bytes to be deallocated faster\n bytes = null;\n\n return input.address === output.address;\n}\n\n/**\n * Save an extractable `KeyPairSigner` to a filesystem wallet json file\n * (i.e. same format as those generated by the `solana-keygen` command)\n *\n * @param keypairSigner - an extractable `KeyPairSigner`\n * @param filePath - path to file where the keypair will be saved\n */\nexport async function saveKeypairSignerToFile(keypairSigner: KeyPairSigner, filePath: string): Promise<boolean> {\n return saveKeypairToFile(keypairSigner.keyPair, filePath);\n}\n\n/**\n * Save an extractable `CryptoKeyPair` to a local environment file (e.g. `.env`)\n * (i.e. same format as those generated by the `solana-keygen` command)\n *\n * @param keypair - an extractable `CryptoKeyPair`\n * @param variableName - environment variable name accessible via `process.env[variableName]` after env file is loaded\n * @param envFilePath - environment variable file path, default = `.env` in the current working directory\n */\nexport async function saveKeypairToEnvFile(\n keypair: CryptoKeyPair,\n variableName: string,\n envFilePath: string = \".env\",\n): Promise<void> {\n if (process.env[variableName]) {\n throw new Error(`Environment variable '${variableName}' already exist.`);\n }\n\n const resolvedPath = resolve(envFilePath.startsWith(\"~\") ? envFilePath.replace(\"~\", homedir()) : envFilePath);\n\n // initialized in multiple steps to help deallocate the bytes faster\n let bytes: Uint8Array | null;\n bytes = await extractBytesFromKeyPair(keypair);\n const signer = await createKeyPairSignerFromBytes(bytes);\n\n appendFileSync(\n resolvedPath,\n `\\n# Solana Address: ${signer.address}` + `\\n${variableName}=[${Array.from(bytes).toString()}]`,\n \"utf8\",\n );\n\n // help force the key bytes to be deallocated faster\n bytes = null;\n}\n\n/**\n * Save an extractable `KeyPairSigner` to a filesystem wallet json file\n * (i.e. same format as those generated by the `solana-keygen` command)\n *\n * @param keypairSigner - an extractable `KeyPairSigner`\n * @param variableName - environment variable name accessible via `process.env[variableName]` after env file is loaded\n * @param envFilePath - environment variable file path, default = `.env` in the current working directory\n */\nexport async function saveKeypairSignerToEnvFile(\n keypairSigner: KeyPairSigner,\n variableName: string,\n envFilePath: string = \".env\",\n): Promise<void> {\n return saveKeypairToEnvFile(keypairSigner.keyPair, variableName, envFilePath);\n}\n"]}