UNPKG

@thirdweb-dev/wallets

Version:

<p align="center"> <br /> <a href="https://thirdweb.com"><img src="https://github.com/thirdweb-dev/js/blob/main/packages/sdk/logo.svg?raw=true" width="200" alt=""/></a> <br /> </p> <h1 align="center">thirdweb Wallet SDK</h1> <p align="center"> <a href="ht

108 lines (101 loc) 4.32 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var classPrivateFieldSet = require('../../../../dist/classPrivateFieldSet-4a4973f9.cjs.prod.js'); var evm_wallets_abstract_dist_thirdwebDevWalletsEvmWalletsAbstract = require('../../abstract/dist/thirdweb-dev-wallets-evm-wallets-abstract.cjs.prod.js'); var ethers = require('ethers'); require('../../../../dist/defineProperty-6ca2d9a5.cjs.prod.js'); require('eventemitter3'); require('@thirdweb-dev/sdk'); function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n["default"] = e; return Object.freeze(n); } var _signer = /*#__PURE__*/new WeakMap(); var _options = /*#__PURE__*/new WeakMap(); /** * Create a wallet instance using a private key stored in AWS Secrets Manager. * * @example * ```javascript * import { ThirdwebSDK } from "@thirdweb-dev/sdk" * import { AwsSecretsManagerWallet } from "@thirdweb-dev/sdk/evm/wallets" * * const wallet = new AwsSecretsManagerWallet({ * secretName: "my-secret", * secretKeyName: "private-key", * awsConfig: { * region: "us-east-1", * credentials: { * accessKeyId: process.env.AWS_ACCESS_KEY_ID, * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, * }, * } * }); * * const sdk = await ThirdwebSDK.fromWallet(wallet, "mainnet"); * ``` */ class AwsSecretsManagerWallet extends evm_wallets_abstract_dist_thirdwebDevWalletsEvmWalletsAbstract.AbstractWallet { constructor(options) { super(); classPrivateFieldSet._classPrivateFieldInitSpec(this, _signer, { writable: true, value: void 0 }); classPrivateFieldSet._classPrivateFieldInitSpec(this, _options, { writable: true, value: void 0 }); classPrivateFieldSet._classPrivateFieldSet(this, _options, options); } async getSigner() { if (!classPrivateFieldSet._classPrivateFieldGet(this, _signer)) { // construct our promise that will resolve to a signer (eventually) classPrivateFieldSet._classPrivateFieldSet(this, _signer, new Promise(async (resolve, reject) => { try { const { GetSecretValueCommand, SecretsManagerClient } = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@aws-sdk/client-secrets-manager')); }); const client = new SecretsManagerClient(classPrivateFieldSet._classPrivateFieldGet(this, _options).awsConfig || {}); const res = await client.send(new GetSecretValueCommand({ SecretId: classPrivateFieldSet._classPrivateFieldGet(this, _options).secretId, VersionStage: "AWSCURRENT" // VersionStage defaults to AWSCURRENT if unspecified })); if (!res || !res.SecretString) { throw new Error(`No secret found at ${classPrivateFieldSet._classPrivateFieldGet(this, _options).secretId}`); } let privateKey; try { privateKey = JSON.parse(res.SecretString)[classPrivateFieldSet._classPrivateFieldGet(this, _options).secretKeyName]; } catch { throw new Error(`Secret ${classPrivateFieldSet._classPrivateFieldGet(this, _options).secretId} is not a valid JSON object! Please convert secret to a JSON object with key ${classPrivateFieldSet._classPrivateFieldGet(this, _options).secretKeyName}.`); } if (!privateKey) { throw new Error(`Secret ${classPrivateFieldSet._classPrivateFieldGet(this, _options).secretId} does not have key ${classPrivateFieldSet._classPrivateFieldGet(this, _options).secretKeyName}`); } resolve(new ethers.Wallet(privateKey)); } catch (err) { // remove the cached promise so we can try again classPrivateFieldSet._classPrivateFieldSet(this, _signer, undefined); reject(err); } })); } return classPrivateFieldSet._classPrivateFieldGet(this, _signer); } } exports.AwsSecretsManagerWallet = AwsSecretsManagerWallet;