diff --git a/.gitignore b/.gitignore index 792af78ec..a201b1c9a 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ lib dist docs -.rts2_cache_cjs -.rts2_cache_esm +.rts2_cache_cjs/ +.rts2_cache_esm/ .rts2_cache_umd/ + diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index 53380f7c1..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { ChainID, getAddressFromPrivateKey, TransactionVersion, } from '@blockstack/stacks-transactions';\r\nimport { ECPair } from 'bitcoinjs-lib';\r\nimport { ecPairToHexString } from 'blockstack';\r\nconst networkDerivationPath = `m/44'/5757'/0'/0/0`;\r\nexport const derivationPaths = {\r\n [ChainID.Mainnet]: networkDerivationPath,\r\n [ChainID.Testnet]: networkDerivationPath,\r\n};\r\nexport function getDerivationPath(chain) {\r\n return derivationPaths[chain];\r\n}\r\nexport function deriveStxAddressChain(chain) {\r\n return (rootNode) => {\r\n const childKey = rootNode.derivePath(getDerivationPath(chain));\r\n if (!childKey.privateKey) {\r\n throw new Error('Unable to derive private key from `rootNode`, bip32 master keychain');\r\n }\r\n const ecPair = ECPair.fromPrivateKey(childKey.privateKey);\r\n const privateKey = ecPairToHexString(ecPair);\r\n const txVersion = chain === ChainID.Mainnet ? TransactionVersion.Mainnet : TransactionVersion.Testnet;\r\n return {\r\n childKey,\r\n address: getAddressFromPrivateKey(privateKey, txVersion),\r\n privateKey,\r\n };\r\n };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/address-derivation/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAkB,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;IACxC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;CACzC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CAAC,QAAwB,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GACb,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACtF,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC;YACxD,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/address-derivation/index.d.ts","writeByteOrderMark":false,"text":"import { ChainID } from '@blockstack/stacks-transactions';\r\nimport { BIP32Interface } from 'bitcoinjs-lib';\r\nexport declare const derivationPaths: {\r\n 1: string;\r\n 2147483648: string;\r\n};\r\nexport declare function getDerivationPath(chain: ChainID): string;\r\nexport declare function deriveStxAddressChain(chain: ChainID): (rootNode: BIP32Interface) => {\r\n childKey: BIP32Interface;\r\n address: string;\r\n privateKey: string;\r\n};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index 0c4968ffd..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { generateMnemonic as generateBip39Mnemonic, mnemonicToSeed } from 'bip39';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { encrypt } from '../encryption/encrypt';\r\nimport { encryptMnemonic } from 'blockstack';\r\nexport async function generateMnemonicRootKeychain(entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return {\r\n rootNode,\r\n plaintextMnemonic,\r\n };\r\n}\r\nexport async function generateEncryptedMnemonicRootKeychain(password, entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n const ciphertextBuffer = await encrypt(plaintextMnemonic, password);\r\n const encryptedMnemonicPhrase = ciphertextBuffer.toString('hex');\r\n return {\r\n rootNode,\r\n encryptedMnemonicPhrase,\r\n };\r\n}\r\nexport async function deriveRootKeychainFromMnemonic(plaintextMnemonic) {\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return rootNode;\r\n}\r\nexport async function encryptMnemonicFormatted(plaintextMnemonic, password) {\r\n const encryptedMnemonic = await encryptMnemonic(plaintextMnemonic, password);\r\n const encryptedMnemonicHex = encryptedMnemonic.toString('hex');\r\n return { encryptedMnemonic, encryptedMnemonicHex };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/mnemonic/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAA8B;IAC/E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO;QACL,QAAQ;QACR,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,QAAgB,EAChB,OAA8B;IAE9B,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO;QACL,QAAQ;QACR,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,iBAAyB;IAC5E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,iBAAyB,EAAE,QAAgB;IACxF,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACrD,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/mnemonic/index.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { bip32 } from 'bitcoinjs-lib';\r\nexport declare type AllowedKeyEntropyBits = 128 | 256;\r\nexport declare function generateMnemonicRootKeychain(entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n plaintextMnemonic: string;\r\n}>;\r\nexport declare function generateEncryptedMnemonicRootKeychain(password: string, entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n encryptedMnemonicPhrase: string;\r\n}>;\r\nexport declare function deriveRootKeychainFromMnemonic(plaintextMnemonic: string): Promise;\r\nexport declare function encryptMnemonicFormatted(plaintextMnemonic: string, password: string): Promise<{\r\n encryptedMnemonic: Buffer;\r\n encryptedMnemonicHex: string;\r\n}>;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index e617263c8..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { encryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport async function encrypt(phrase, password) {\r\n const result = await encryptMnemonic(phrase, password);\r\n return result;\r\n}\r\n//# sourceMappingURL=encrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"encrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/encrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;KAKK;AACL,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/encrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport declare function encrypt(phrase: string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index 93330eccf..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\nexport default {\r\n Wallet,\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,eAAe;IACb,MAAM;CACP,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/index.d.ts","writeByteOrderMark":false,"text":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\ndeclare const _default: {\r\n Wallet: typeof Wallet;\r\n};\r\nexport default _default;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index 673790086..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { mnemonicToSeed } from 'bip39';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { getBlockchainIdentities, makeIdentity, assertIsTruthy, recursiveRestoreIdentities, } from '../utils';\r\nimport Identity from '../identity';\r\nimport { decrypt } from '../encryption/decrypt';\r\nimport { connectToGaiaHub, encryptContent, getPublicKeyFromPrivate, decryptContent, } from 'blockstack';\r\nimport { generateEncryptedMnemonicRootKeychain, deriveRootKeychainFromMnemonic, encryptMnemonicFormatted, } from '../mnemonic';\r\nimport { deriveStxAddressChain } from '../address-derivation';\r\nimport { makeReadOnlyGaiaConfig, DEFAULT_GAIA_HUB, uploadToGaiaHub } from '../utils/gaia';\r\nimport { WalletSigner } from './signer';\r\nconst CONFIG_INDEX = 45;\r\nexport class Wallet {\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }) {\r\n this.chain = chain;\r\n this.encryptedBackupPhrase = encryptedBackupPhrase;\r\n this.identityPublicKeychain = identityPublicKeychain;\r\n this.bitcoinPublicKeychain = bitcoinPublicKeychain;\r\n this.firstBitcoinAddress = firstBitcoinAddress;\r\n this.identityKeypairs = identityKeypairs;\r\n this.identityAddresses = identityAddresses;\r\n this.identities = identities.map(identity => new Identity(identity));\r\n this.configPrivateKey = configPrivateKey;\r\n this.stacksPrivateKey = stacksPrivateKey;\r\n this.walletConfig = walletConfig;\r\n }\r\n static generateFactory(bitsEntropy) {\r\n return async (password, chain) => {\r\n const { rootNode, encryptedMnemonicPhrase } = await generateEncryptedMnemonicRootKeychain(password, bitsEntropy);\r\n return this.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicPhrase,\r\n rootNode,\r\n chain,\r\n });\r\n };\r\n }\r\n static async generate(password, chain) {\r\n return await this.generateFactory(128)(password, chain);\r\n }\r\n static async generateStrong(password, chain) {\r\n return await this.generateFactory(256)(password, chain);\r\n }\r\n static async restore(password, seedPhrase, chain) {\r\n const rootNode = await deriveRootKeychainFromMnemonic(seedPhrase);\r\n const { encryptedMnemonicHex } = await encryptMnemonicFormatted(seedPhrase, password);\r\n const wallet = await Wallet.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicHex,\r\n rootNode,\r\n chain,\r\n });\r\n return await wallet.restoreIdentities({ rootNode, gaiaReadURL: DEFAULT_GAIA_HUB });\r\n }\r\n static async createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate = 1, }) {\r\n const derivedIdentitiesKey = rootNode.deriveHardened(CONFIG_INDEX).privateKey;\r\n if (!derivedIdentitiesKey) {\r\n throw new TypeError('Unable to derive config key for wallet identities');\r\n }\r\n const configPrivateKey = derivedIdentitiesKey.toString('hex');\r\n const { childKey: stxAddressKeychain } = deriveStxAddressChain(chain)(rootNode);\r\n const walletAttrs = await getBlockchainIdentities(rootNode, identitiesToGenerate);\r\n return new Wallet({\r\n ...walletAttrs,\r\n chain,\r\n configPrivateKey,\r\n stacksPrivateKey: stxAddressKeychain.toBase58(),\r\n encryptedBackupPhrase,\r\n });\r\n }\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n async restoreIdentities({ rootNode, gaiaReadURL, }) {\r\n const gaiaConfig = makeReadOnlyGaiaConfig({\r\n readURL: gaiaReadURL,\r\n privateKey: this.configPrivateKey,\r\n });\r\n await this.fetchConfig(gaiaConfig);\r\n if (this.walletConfig) {\r\n const getIdentities = this.walletConfig.identities.map(async (identityConfig, index) => {\r\n let identity = this.identities[index];\r\n if (!identity) {\r\n identity = await makeIdentity(rootNode, index);\r\n }\r\n if (identityConfig.username) {\r\n identity.usernames = [identityConfig.username];\r\n identity.defaultUsername = identityConfig.username;\r\n }\r\n return identity;\r\n });\r\n const identities = await Promise.all(getIdentities);\r\n this.identities = identities;\r\n return this;\r\n }\r\n await this.identities[0].refresh();\r\n const newIdentities = await recursiveRestoreIdentities({ rootNode });\r\n this.identities = this.identities.concat(newIdentities);\r\n return this;\r\n }\r\n async createNewIdentity(password) {\r\n const plainTextBuffer = await decrypt(Buffer.from(this.encryptedBackupPhrase, 'hex'), password);\r\n const seed = await mnemonicToSeed(plainTextBuffer);\r\n const rootNode = bip32.fromSeed(seed);\r\n const index = this.identities.length;\r\n const identity = await makeIdentity(rootNode, index);\r\n this.identities.push(identity);\r\n this.identityKeypairs.push(identity.keyPair);\r\n this.identityAddresses.push(identity.address);\r\n return identity;\r\n }\r\n async createGaiaConfig(gaiaHubUrl) {\r\n return connectToGaiaHub(gaiaHubUrl, this.configPrivateKey);\r\n }\r\n async fetchConfig(gaiaConfig) {\r\n try {\r\n const response = await fetch(`${gaiaConfig.url_prefix}${gaiaConfig.address}/wallet-config.json`);\r\n const encrypted = await response.text();\r\n const configJSON = (await decryptContent(encrypted, {\r\n privateKey: this.configPrivateKey,\r\n }));\r\n const config = JSON.parse(configJSON);\r\n this.walletConfig = config;\r\n return config;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n }\r\n async getOrCreateConfig({ gaiaConfig, skipUpload, }) {\r\n if (this.walletConfig) {\r\n return this.walletConfig;\r\n }\r\n const config = await this.fetchConfig(gaiaConfig);\r\n if (config) {\r\n return config;\r\n }\r\n const newConfig = {\r\n identities: this.identities.map(i => ({\r\n username: i.defaultUsername,\r\n address: i.address,\r\n apps: {},\r\n })),\r\n };\r\n this.walletConfig = newConfig;\r\n if (!skipUpload) {\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n return newConfig;\r\n }\r\n async updateConfig(gaiaConfig) {\r\n const publicKey = getPublicKeyFromPrivate(this.configPrivateKey);\r\n const encrypted = await encryptContent(JSON.stringify(this.walletConfig), { publicKey });\r\n await uploadToGaiaHub('wallet-config.json', encrypted, gaiaConfig);\r\n }\r\n async updateConfigWithAuth({ identityIndex, app, gaiaConfig, }) {\r\n const { walletConfig } = this;\r\n assertIsTruthy(walletConfig);\r\n this.identities.forEach((identity, index) => {\r\n const configIdentity = walletConfig.identities[index];\r\n if (configIdentity) {\r\n configIdentity.apps = configIdentity.apps || {};\r\n configIdentity.username = identity.defaultUsername;\r\n configIdentity.address = identity.address;\r\n walletConfig.identities[index] = configIdentity;\r\n }\r\n else {\r\n this.walletConfig?.identities.push({\r\n username: identity.defaultUsername,\r\n address: identity.address,\r\n apps: {},\r\n });\r\n }\r\n });\r\n const identity = walletConfig.identities[identityIndex];\r\n identity.apps = identity.apps || {};\r\n identity.apps[app.origin] = app;\r\n walletConfig.identities[identityIndex] = identity;\r\n this.walletConfig = walletConfig;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n async updateConfigForReuseWarning({ gaiaConfig }) {\r\n assertIsTruthy(this.walletConfig);\r\n this.walletConfig.hideWarningForReusingIdentity = true;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n getSigner() {\r\n return new WalletSigner({ privateKey: this.stacksPrivateKey });\r\n }\r\n}\r\nexport default Wallet;\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/index.d.ts","writeByteOrderMark":false,"text":"import { bip32, BIP32Interface } from 'bitcoinjs-lib';\r\nimport { ChainID } from '@blockstack/stacks-transactions';\r\nimport { IdentityKeyPair } from '../utils';\r\nimport Identity from '../identity';\r\nimport { AllowedKeyEntropyBits } from '../mnemonic';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nimport { WalletSigner } from './signer';\r\nexport interface ConfigApp {\r\n origin: string;\r\n scopes: string[];\r\n lastLoginAt: number;\r\n appIcon: string;\r\n name: string;\r\n}\r\ninterface ConfigIdentity {\r\n username?: string;\r\n address: string;\r\n apps: {\r\n [origin: string]: ConfigApp;\r\n };\r\n}\r\nexport interface WalletConfig {\r\n identities: ConfigIdentity[];\r\n hideWarningForReusingIdentity?: boolean;\r\n}\r\nexport interface ConstructorOptions {\r\n chain: ChainID;\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n encryptedBackupPhrase: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n}\r\nexport declare class Wallet {\r\n chain: ChainID;\r\n encryptedBackupPhrase: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n identityPublicKeychain: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }: ConstructorOptions);\r\n static generateFactory(bitsEntropy: AllowedKeyEntropyBits): (password: string, chain: ChainID) => Promise;\r\n static generate(password: string, chain: ChainID): Promise;\r\n static generateStrong(password: string, chain: ChainID): Promise;\r\n static restore(password: string, seedPhrase: string, chain: ChainID): Promise;\r\n static createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate, }: {\r\n encryptedBackupPhrase: string;\r\n rootNode: BIP32Interface;\r\n chain: ChainID;\r\n identitiesToGenerate?: number;\r\n }): Promise;\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n restoreIdentities({ rootNode, gaiaReadURL, }: {\r\n rootNode: bip32.BIP32Interface;\r\n gaiaReadURL: string;\r\n }): Promise;\r\n createNewIdentity(password: string): Promise;\r\n createGaiaConfig(gaiaHubUrl: string): Promise;\r\n fetchConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n getOrCreateConfig({ gaiaConfig, skipUpload, }: {\r\n gaiaConfig: GaiaHubConfig;\r\n skipUpload?: boolean;\r\n }): Promise;\r\n updateConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n updateConfigWithAuth({ identityIndex, app, gaiaConfig, }: {\r\n identityIndex: number;\r\n app: ConfigApp;\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n updateConfigForReuseWarning({ gaiaConfig }: {\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n getSigner(): WalletSigner;\r\n}\r\nexport default Wallet;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index a38d6780d..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { decrypt as triplesecDecrypt } from 'triplesec';\r\nimport { decryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport async function decrypt(dataBuffer, password) {\r\n const result = await decryptMnemonic(dataBuffer, password, triplesecDecrypt);\r\n return result;\r\n}\r\n//# sourceMappingURL=decrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/triplesec/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"decrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/decrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAA2B,EAAE,QAAgB;IACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/decrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport declare function decrypt(dataBuffer: Buffer | string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index afbcca7e2..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -{"code":"import IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport { createSha2Hash } from 'blockstack/lib/encryption/sha2Hash';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { parseZoneFile } from 'zone-file';\r\nimport Identity from '../identity';\r\nimport { AssertionError } from 'assert';\r\nimport { Subdomains, registrars } from '../profiles';\r\nconst IDENTITY_KEYCHAIN = 888;\r\nconst BLOCKSTACK_ON_BITCOIN = 0;\r\nexport function getIdentityPrivateKeychain(rootNode) {\r\n return rootNode.deriveHardened(IDENTITY_KEYCHAIN).deriveHardened(BLOCKSTACK_ON_BITCOIN);\r\n}\r\nconst EXTERNAL_ADDRESS = 'EXTERNAL_ADDRESS';\r\nconst CHANGE_ADDRESS = 'CHANGE_ADDRESS';\r\nexport function getBitcoinPrivateKeychain(rootNode) {\r\n const BIP_44_PURPOSE = 44;\r\n const BITCOIN_COIN_TYPE = 0;\r\n const ACCOUNT_INDEX = 0;\r\n return rootNode\r\n .deriveHardened(BIP_44_PURPOSE)\r\n .deriveHardened(BITCOIN_COIN_TYPE)\r\n .deriveHardened(ACCOUNT_INDEX);\r\n}\r\nexport function getBitcoinAddressNode(bitcoinKeychain, addressIndex = 0, chainType = EXTERNAL_ADDRESS) {\r\n let chain = null;\r\n if (chainType === EXTERNAL_ADDRESS) {\r\n chain = 0;\r\n }\r\n else if (chainType === CHANGE_ADDRESS) {\r\n chain = 1;\r\n }\r\n else {\r\n throw new Error('Invalid chain type');\r\n }\r\n return bitcoinKeychain.derive(chain).derive(addressIndex);\r\n}\r\nexport async function getIdentityOwnerAddressNode(identityPrivateKeychain, identityIndex = 0) {\r\n if (identityPrivateKeychain.isNeutered()) {\r\n throw new Error('You need the private key to generate identity addresses');\r\n }\r\n const publicKeyHex = Buffer.from(identityPrivateKeychain.publicKey.toString('hex'));\r\n const sha2Hash = await createSha2Hash();\r\n const saltData = await sha2Hash.digest(publicKeyHex, 'sha256');\r\n const salt = saltData.toString('hex');\r\n return new IdentityAddressOwnerNode(identityPrivateKeychain.deriveHardened(identityIndex), salt);\r\n}\r\nexport function getAddress(node) {\r\n return publicKeyToAddress(node.publicKey);\r\n}\r\nexport function deriveIdentityKeyPair(identityOwnerAddressNode) {\r\n const address = identityOwnerAddressNode.getAddress();\r\n const identityKey = identityOwnerAddressNode.getIdentityKey();\r\n const identityKeyID = identityOwnerAddressNode.getIdentityKeyID();\r\n const appsNode = identityOwnerAddressNode.getAppsNode();\r\n const stxNode = identityOwnerAddressNode.getSTXNode();\r\n const keyPair = {\r\n key: identityKey,\r\n keyID: identityKeyID,\r\n address,\r\n appsNodeKey: appsNode.toBase58(),\r\n stxNodeKey: stxNode.toBase58(),\r\n salt: identityOwnerAddressNode.getSalt(),\r\n };\r\n return keyPair;\r\n}\r\nexport async function getBlockchainIdentities(rootNode, identitiesToGenerate) {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const bitcoinPrivateKeychainNode = getBitcoinPrivateKeychain(rootNode);\r\n const identityPublicKeychainNode = identityPrivateKeychainNode.neutered();\r\n const identityPublicKeychain = identityPublicKeychainNode.toBase58();\r\n const bitcoinPublicKeychainNode = bitcoinPrivateKeychainNode.neutered();\r\n const bitcoinPublicKeychain = bitcoinPublicKeychainNode.toBase58();\r\n const firstBitcoinAddress = getAddress(getBitcoinAddressNode(bitcoinPublicKeychainNode));\r\n const identityAddresses = [];\r\n const identityKeypairs = [];\r\n const identities = [];\r\n // We pre-generate a number of identity addresses so that we\r\n // don't have to prompt the user for the password on each new profile\r\n for (let addressIndex = 0; addressIndex < identitiesToGenerate; addressIndex++) {\r\n const identity = await makeIdentity(rootNode, addressIndex);\r\n identities.push(identity);\r\n identityKeypairs.push(identity.keyPair);\r\n identityAddresses.push(identity.address);\r\n }\r\n return {\r\n identityPublicKeychain,\r\n bitcoinPublicKeychain,\r\n firstBitcoinAddress,\r\n identityAddresses,\r\n identityKeypairs,\r\n identities,\r\n };\r\n}\r\nexport const makeIdentity = async (rootNode, index) => {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const identityOwnerAddressNode = await getIdentityOwnerAddressNode(identityPrivateKeychainNode, index);\r\n const identityKeyPair = deriveIdentityKeyPair(identityOwnerAddressNode);\r\n const identity = new Identity({\r\n keyPair: identityKeyPair,\r\n address: identityKeyPair.address,\r\n usernames: [],\r\n });\r\n return identity;\r\n};\r\nexport function assertIsTruthy(val) {\r\n if (!val) {\r\n throw new AssertionError({ expected: true, actual: val });\r\n }\r\n}\r\nexport var IdentityNameValidityError;\r\n(function (IdentityNameValidityError) {\r\n IdentityNameValidityError[\"MINIMUM_LENGTH\"] = \"error_minimum_length\";\r\n IdentityNameValidityError[\"MAXIMUM_LENGTH\"] = \"error_maximum_length\";\r\n IdentityNameValidityError[\"ILLEGAL_CHARACTER\"] = \"error_illegal_character\";\r\n IdentityNameValidityError[\"UNAVAILABLE\"] = \"error_name_unavailable\";\r\n})(IdentityNameValidityError || (IdentityNameValidityError = {}));\r\nconst containsLegalCharacters = (name) => /^[a-z0-9_]+$/.test(name);\r\nexport const validateSubdomainFormat = (identityName) => {\r\n const nameLength = identityName.length;\r\n if (nameLength < 8) {\r\n return IdentityNameValidityError.MINIMUM_LENGTH;\r\n }\r\n if (nameLength > 37) {\r\n return IdentityNameValidityError.MAXIMUM_LENGTH;\r\n }\r\n if (!containsLegalCharacters(identityName)) {\r\n return IdentityNameValidityError.ILLEGAL_CHARACTER;\r\n }\r\n return null;\r\n};\r\nexport const validateSubdomainAvailability = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const url = `${registrars[subdomain].apiUrl}/${name.toLowerCase()}.${subdomain}`;\r\n const resp = await fetch(url);\r\n const data = await resp.json();\r\n return data;\r\n};\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport const recursiveRestoreIdentities = async ({ rootNode, index = 1, identities = [], }) => {\r\n const identity = await makeIdentity(rootNode, index);\r\n await identity.refresh();\r\n if (identity.defaultUsername) {\r\n identities.push(identity);\r\n return recursiveRestoreIdentities({ rootNode, index: index + 1, identities });\r\n }\r\n return identities;\r\n};\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport const validateSubdomain = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const error = validateSubdomainFormat(name);\r\n if (error) {\r\n return error;\r\n }\r\n try {\r\n const data = await validateSubdomainAvailability(name, subdomain);\r\n if (data.status !== 'available') {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n }\r\n catch (error) {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n return null;\r\n};\r\nexport const getProfileURLFromZoneFile = async (name) => {\r\n const url = `https://core.blockstack.org/v1/names/${name}`;\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const nameInfo = await res.json();\r\n const zone = parseZoneFile(nameInfo.zonefile);\r\n return zone.uri[0].target;\r\n }\r\n return;\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/sha2Hash.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/zone-file/lib/index.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/assert/assert.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/index.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,wBAAwB,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,MAAM,UAAU,0BAA0B,CAAC,QAAwB;IACjE,OAAO,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAExC,MAAM,UAAU,yBAAyB,CAAC,QAAwB;IAChE,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,iBAAiB,GAAG,CAAC,CAAC;IAC5B,MAAM,aAAa,GAAG,CAAC,CAAC;IAExB,OAAO,QAAQ;SACZ,cAAc,CAAC,cAAc,CAAC;SAC9B,cAAc,CAAC,iBAAiB,CAAC;SACjC,cAAc,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,eAA+B,EAC/B,YAAY,GAAG,CAAC,EAChB,SAAS,GAAG,gBAAgB;IAE5B,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,IAAI,SAAS,KAAK,gBAAgB,EAAE;QAClC,KAAK,GAAG,CAAC,CAAC;KACX;SAAM,IAAI,SAAS,KAAK,cAAc,EAAE;QACvC,KAAK,GAAG,CAAC,CAAC;KACX;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;IAED,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,uBAAuC,EACvC,aAAa,GAAG,CAAC;IAEjB,IAAI,uBAAuB,CAAC,UAAU,EAAE,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;KAC5E;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpF,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEtC,OAAO,IAAI,wBAAwB,CAAC,uBAAuB,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAoB;IAC7C,OAAO,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5C,CAAC;AAWD,MAAM,UAAU,qBAAqB,CACnC,wBAAkD;IAElD,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,wBAAwB,CAAC,cAAc,EAAE,CAAC;IAC9D,MAAM,aAAa,GAAG,wBAAwB,CAAC,gBAAgB,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,OAAO,GAAG,wBAAwB,CAAC,UAAU,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,aAAa;QACpB,OAAO;QACP,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,wBAAwB,CAAC,OAAO,EAAE;KACzC,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAwB,EACxB,oBAA4B;IAE5B,MAAM,2BAA2B,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACzE,MAAM,0BAA0B,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAEvE,MAAM,0BAA0B,GAAG,2BAA2B,CAAC,QAAQ,EAAE,CAAC;IAC1E,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,QAAQ,EAAE,CAAC;IAErE,MAAM,yBAAyB,GAAG,0BAA0B,CAAC,QAAQ,EAAE,CAAC;IACxE,MAAM,qBAAqB,GAAG,yBAAyB,CAAC,QAAQ,EAAE,CAAC;IAEnE,MAAM,mBAAmB,GAAG,UAAU,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEzF,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAe,EAAE,CAAC;IAElC,4DAA4D;IAC5D,qEAAqE;IACrE,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,oBAAoB,EAAE,YAAY,EAAE,EAAE;QAC9E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5D,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC1C;IAED,OAAO;QACL,sBAAsB;QACtB,qBAAqB;QACrB,mBAAmB;QACnB,iBAAiB;QACjB,gBAAgB;QAChB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,QAAwB,EAAE,KAAa,EAAE,EAAE;IAC5E,MAAM,2BAA2B,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACzE,MAAM,wBAAwB,GAAG,MAAM,2BAA2B,CAChE,2BAA2B,EAC3B,KAAK,CACN,CAAC;IACF,MAAM,eAAe,GAAG,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,SAAS,EAAE,EAAE;KACd,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAI,GAAQ;IACxC,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;KAC3D;AACH,CAAC;AAED,MAAM,CAAN,IAAY,yBAKX;AALD,WAAY,yBAAyB;IACnC,oEAAuC,CAAA;IACvC,oEAAuC,CAAA;IACvC,0EAA6C,CAAA;IAC7C,mEAAsC,CAAA;AACxC,CAAC,EALW,yBAAyB,KAAzB,yBAAyB,QAKpC;AAED,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,YAAoB,EAAoC,EAAE;IAChG,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAEvC,IAAI,UAAU,GAAG,CAAC,EAAE;QAClB,OAAO,yBAAyB,CAAC,cAAc,CAAC;KACjD;IAED,IAAI,UAAU,GAAG,EAAE,EAAE;QACnB,OAAO,yBAAyB,CAAC,cAAc,CAAC;KACjD;IAED,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE;QAC1C,OAAO,yBAAyB,CAAC,iBAAiB,CAAC;KACpD;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAChD,IAAY,EACZ,YAAwB,UAAU,CAAC,UAAU,EAC7C,EAAE;IACF,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;IACjF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAQF;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,EAC/C,QAAQ,EACR,KAAK,GAAG,CAAC,EACT,UAAU,GAAG,EAAE,GACgB,EAAuB,EAAE;IACxD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IACzB,IAAI,QAAQ,CAAC,eAAe,EAAE;QAC5B,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,0BAA0B,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;KAC/E;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,IAAY,EACZ,YAAwB,UAAU,CAAC,UAAU,EAC7C,EAAE;IACF,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,KAAK,EAAE;QACT,OAAO,KAAK,CAAC;KACd;IAED,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,6BAA6B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;YAC/B,OAAO,yBAAyB,CAAC,WAAW,CAAC;SAC9C;KACF;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,yBAAyB,CAAC,WAAW,CAAC;KAC9C;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC9D,MAAM,GAAG,GAAG,wCAAwC,IAAI,EAAE,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,EAAE,EAAE;QACV,MAAM,QAAQ,GAAqB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;KAC3B;IACD,OAAO;AACT,CAAC,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/index.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nimport IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport Identity from '../identity';\r\nimport { Subdomains } from '../profiles';\r\nexport declare function getIdentityPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinAddressNode(bitcoinKeychain: BIP32Interface, addressIndex?: number, chainType?: string): BIP32Interface;\r\nexport declare function getIdentityOwnerAddressNode(identityPrivateKeychain: BIP32Interface, identityIndex?: number): Promise;\r\nexport declare function getAddress(node: BIP32Interface): string;\r\nexport interface IdentityKeyPair {\r\n key: string;\r\n keyID: string;\r\n address: string;\r\n appsNodeKey: string;\r\n stxNodeKey: string;\r\n salt: string;\r\n}\r\nexport declare function deriveIdentityKeyPair(identityOwnerAddressNode: IdentityAddressOwnerNode): IdentityKeyPair;\r\nexport declare function getBlockchainIdentities(rootNode: BIP32Interface, identitiesToGenerate: number): Promise<{\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityAddresses: string[];\r\n identityKeypairs: IdentityKeyPair[];\r\n identities: Identity[];\r\n}>;\r\nexport declare const makeIdentity: (rootNode: BIP32Interface, index: number) => Promise;\r\nexport declare function assertIsTruthy(val: any): asserts val is NonNullable;\r\nexport declare enum IdentityNameValidityError {\r\n MINIMUM_LENGTH = \"error_minimum_length\",\r\n MAXIMUM_LENGTH = \"error_maximum_length\",\r\n ILLEGAL_CHARACTER = \"error_illegal_character\",\r\n UNAVAILABLE = \"error_name_unavailable\"\r\n}\r\nexport declare const validateSubdomainFormat: (identityName: string) => IdentityNameValidityError | null;\r\nexport declare const validateSubdomainAvailability: (name: string, subdomain?: Subdomains) => Promise;\r\ninterface RecursiveMakeIdentitiesOptions {\r\n rootNode: BIP32Interface;\r\n index?: number;\r\n identities?: Identity[];\r\n}\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport declare const recursiveRestoreIdentities: ({ rootNode, index, identities, }: RecursiveMakeIdentitiesOptions) => Promise;\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport declare const validateSubdomain: (name: string, subdomain?: Subdomains) => Promise;\r\nexport declare const getProfileURLFromZoneFile: (name: string) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index aaef254cd..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { getLegacyAppNode } from 'blockstack/lib/wallet';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { getAddress } from '../utils';\r\nconst APPS_NODE_INDEX = 0;\r\nconst SIGNING_NODE_INDEX = 1;\r\nconst ENCRYPTION_NODE_INDEX = 2;\r\nconst STX_NODE_INDEX = 6;\r\nexport default class IdentityAddressOwnerNode {\r\n constructor(ownerHdNode, salt) {\r\n this.hdNode = ownerHdNode;\r\n this.salt = salt;\r\n }\r\n getNode() {\r\n return this.hdNode;\r\n }\r\n getSalt() {\r\n return this.salt;\r\n }\r\n getIdentityKey() {\r\n if (!this.hdNode.privateKey) {\r\n throw new Error('Node does not have private key');\r\n }\r\n return this.hdNode.privateKey.toString('hex');\r\n }\r\n getIdentityKeyID() {\r\n return this.hdNode.publicKey.toString('hex');\r\n }\r\n getAppsNode() {\r\n return this.hdNode.deriveHardened(APPS_NODE_INDEX);\r\n }\r\n getAddress() {\r\n return getAddress(this.hdNode);\r\n }\r\n getEncryptionNode() {\r\n return this.hdNode.deriveHardened(ENCRYPTION_NODE_INDEX);\r\n }\r\n getSigningNode() {\r\n return this.hdNode.deriveHardened(SIGNING_NODE_INDEX);\r\n }\r\n getSTXNode() {\r\n return this.hdNode.deriveHardened(STX_NODE_INDEX);\r\n }\r\n getAppNode(appDomain) {\r\n return getLegacyAppNode(this.hdNode, this.salt, appDomain);\r\n }\r\n getAppPrivateKey(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n if (!appNode.privateKey) {\r\n throw new Error('App node does not have private key');\r\n }\r\n return appNode.privateKey.toString('hex');\r\n }\r\n getAppAddress(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n return publicKeyToAddress(appNode.publicKey);\r\n }\r\n}\r\n//# sourceMappingURL=identity-address-owner-node.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/wallet.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts"],"map":"{\"version\":3,\"file\":\"identity-address-owner-node.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/nodes/identity-address-owner-node.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAK3C,YAAY,WAA2B,EAAE,IAAY;QACnD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/nodes/identity-address-owner-node.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nexport default class IdentityAddressOwnerNode {\r\n hdNode: BIP32Interface;\r\n salt: string;\r\n constructor(ownerHdNode: BIP32Interface, salt: string);\r\n getNode(): BIP32Interface;\r\n getSalt(): string;\r\n getIdentityKey(): string;\r\n getIdentityKeyID(): string;\r\n getAppsNode(): BIP32Interface;\r\n getAddress(): string;\r\n getEncryptionNode(): BIP32Interface;\r\n getSigningNode(): BIP32Interface;\r\n getSTXNode(): BIP32Interface;\r\n getAppNode(appDomain: string): BIP32Interface;\r\n getAppPrivateKey(appDomain: string): string;\r\n getAppAddress(appDomain: string): string;\r\n}\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index 1104190d1..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { signProfileToken, wrapProfileToken, connectToGaiaHub, makeProfileZoneFile, } from 'blockstack';\r\nimport { uploadToGaiaHub } from './utils/gaia';\r\nconst PERSON_TYPE = 'Person';\r\nconst CONTEXT = 'http://schema.org';\r\nconst IMAGE_TYPE = 'ImageObject';\r\nexport const DEFAULT_PROFILE = {\r\n '@type': 'Person',\r\n '@context': 'http://schema.org',\r\n};\r\nconst DEFAULT_PROFILE_FILE_NAME = 'profile.json';\r\nexport var Subdomains;\r\n(function (Subdomains) {\r\n Subdomains[\"TEST\"] = \"test-personal.id\";\r\n Subdomains[\"BLOCKSTACK\"] = \"id.blockstack\";\r\n})(Subdomains || (Subdomains = {}));\r\nexport const registrars = {\r\n [Subdomains.TEST]: {\r\n registerUrl: 'https://test-registrar.blockstack.org/register',\r\n apiUrl: 'https://test-registrar.blockstack.org/v1/names',\r\n },\r\n [Subdomains.BLOCKSTACK]: {\r\n registerUrl: 'https://registrar.blockstack.org/register',\r\n apiUrl: 'https://registrar.blockstack.org/v1/names',\r\n },\r\n};\r\nexport function signProfileForUpload(profile, keypair) {\r\n const privateKey = keypair.key;\r\n const publicKey = keypair.keyID;\r\n const token = signProfileToken(profile, privateKey, { publicKey });\r\n const tokenRecord = wrapProfileToken(token);\r\n const tokenRecords = [tokenRecord];\r\n return JSON.stringify(tokenRecords, null, 2);\r\n}\r\nexport async function uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig) {\r\n const identityHubConfig = gaiaHubConfig || (await connectToGaiaHub(gaiaHubUrl, identity.keyPair.key));\r\n const uploadResponse = await uploadToGaiaHub(DEFAULT_PROFILE_FILE_NAME, signedProfileTokenData, identityHubConfig);\r\n return uploadResponse;\r\n}\r\nconst sendUsernameToRegistrar = async ({ username, subdomain, zoneFile, identity, }) => {\r\n const { registerUrl } = registrars[subdomain];\r\n const registrationRequestBody = JSON.stringify({\r\n name: username,\r\n owner_address: identity.address,\r\n zonefile: zoneFile,\r\n });\r\n const requestHeaders = {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n };\r\n const response = await fetch(registerUrl, {\r\n method: 'POST',\r\n headers: requestHeaders,\r\n body: registrationRequestBody,\r\n });\r\n if (!response.ok) {\r\n return Promise.reject({\r\n error: 'Failed to register username',\r\n status: response.status,\r\n });\r\n }\r\n return response.json();\r\n};\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport const registerSubdomain = async ({ identity, gaiaHubUrl, username, subdomain, }) => {\r\n const profile = identity.profile || DEFAULT_PROFILE;\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n const profileUrl = await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData);\r\n const fullUsername = `${username}.${subdomain}`;\r\n const zoneFile = makeProfileZoneFile(fullUsername, profileUrl);\r\n await sendUsernameToRegistrar({\r\n username,\r\n subdomain,\r\n zoneFile,\r\n identity,\r\n });\r\n identity.defaultUsername = fullUsername;\r\n identity.usernames.push(fullUsername);\r\n return identity;\r\n};\r\nexport const signAndUploadProfile = async ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }) => {\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig);\r\n};\r\nexport const fetchProfile = async ({ identity, gaiaUrl, }) => {\r\n try {\r\n const url = await identity.profileUrl(gaiaUrl);\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const json = await res.json();\r\n const { decodedToken } = json[0];\r\n return decodedToken.payload?.claim;\r\n }\r\n if (res.status === 404) {\r\n return null;\r\n }\r\n throw new Error('Network error when fetching profile');\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n};\r\n//# sourceMappingURL=profiles.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"profiles.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/profiles.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/profiles.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils';\r\nimport Identity from './identity';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\ndeclare const PERSON_TYPE = \"Person\";\r\ndeclare const CONTEXT = \"http://schema.org\";\r\ndeclare const IMAGE_TYPE = \"ImageObject\";\r\nexport interface ProfileImage {\r\n '@type': typeof IMAGE_TYPE;\r\n name: string;\r\n contentUrl: string;\r\n}\r\nexport interface Profile {\r\n '@type': typeof PERSON_TYPE;\r\n '@context': typeof CONTEXT;\r\n apps?: {\r\n [origin: string]: string;\r\n };\r\n appsMeta?: {\r\n [origin: string]: {\r\n publicKey: string;\r\n storage: string;\r\n };\r\n };\r\n name?: string;\r\n image?: ProfileImage[];\r\n [key: string]: any;\r\n}\r\nexport declare const DEFAULT_PROFILE: Profile;\r\nexport declare enum Subdomains {\r\n TEST = \"test-personal.id\",\r\n BLOCKSTACK = \"id.blockstack\"\r\n}\r\nexport declare const registrars: {\r\n \"test-personal.id\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n \"id.blockstack\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n};\r\nexport declare function signProfileForUpload(profile: Profile, keypair: IdentityKeyPair): string;\r\nexport declare function uploadProfile(gaiaHubUrl: string, identity: Identity, signedProfileTokenData: string, gaiaHubConfig?: GaiaHubConfig): Promise;\r\ninterface RegisterParams {\r\n identity: Identity;\r\n /** The gaia hub URL to use for profile.json upload */\r\n gaiaHubUrl: string;\r\n /** The username portion of this subdomain, i.e. only the portion of the name before any periods */\r\n username: string;\r\n /** The \"domain\" used for this subdomain. Can be any of the `Subdomains` enum. */\r\n subdomain: Subdomains;\r\n}\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport declare const registerSubdomain: ({ identity, gaiaHubUrl, username, subdomain, }: RegisterParams) => Promise;\r\nexport declare const signAndUploadProfile: ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }: {\r\n profile: Profile;\r\n gaiaHubUrl: string;\r\n identity: Identity;\r\n gaiaHubConfig?: GaiaHubConfig | undefined;\r\n}) => Promise;\r\nexport declare const fetchProfile: ({ identity, gaiaUrl, }: {\r\n identity: Identity;\r\n gaiaUrl: string;\r\n}) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index 7edbdd5e7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { bip32, ECPair } from 'bitcoinjs-lib';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { makeAuthResponse } from 'blockstack/lib/auth/authMessages';\r\nimport { getProfileURLFromZoneFile } from './utils';\r\nimport { makeGaiaAssociationToken, DEFAULT_GAIA_HUB, getHubInfo, connectToGaiaHubWithConfig, } from './utils/gaia';\r\nimport IdentityAddressOwnerNode from './nodes/identity-address-owner-node';\r\nimport { fetchProfile, DEFAULT_PROFILE, signAndUploadProfile } from './profiles';\r\nimport { ecPairToAddress } from 'blockstack';\r\nexport class Identity {\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }) {\r\n this.keyPair = keyPair;\r\n this.address = address;\r\n this.usernames = usernames || [];\r\n this.defaultUsername = defaultUsername;\r\n this.profile = profile;\r\n }\r\n async makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes = [], stxAddress, }) {\r\n const appPrivateKey = this.appPrivateKey(appDomain);\r\n const hubInfo = await getHubInfo(gaiaUrl);\r\n const profileUrl = await this.profileUrl(hubInfo.read_url_prefix);\r\n const profile = (await fetchProfile({ identity: this, gaiaUrl: hubInfo.read_url_prefix })) || DEFAULT_PROFILE;\r\n if (scopes.includes('publish_data')) {\r\n if (!profile.apps) {\r\n profile.apps = {};\r\n }\r\n const challengeSigner = ECPair.fromPrivateKey(Buffer.from(appPrivateKey, 'hex'));\r\n const storageUrl = `${hubInfo.read_url_prefix}${ecPairToAddress(challengeSigner)}/`;\r\n profile.apps[appDomain] = storageUrl;\r\n if (!profile.appsMeta) {\r\n profile.appsMeta = {};\r\n }\r\n profile.appsMeta[appDomain] = {\r\n storage: storageUrl,\r\n publicKey: challengeSigner.publicKey.toString('hex'),\r\n };\r\n const gaiaHubConfig = connectToGaiaHubWithConfig({\r\n hubInfo,\r\n privateKey: this.keyPair.key,\r\n gaiaHubUrl: gaiaUrl,\r\n });\r\n await signAndUploadProfile({ profile, identity: this, gaiaHubUrl: gaiaUrl, gaiaHubConfig });\r\n }\r\n this.profile = profile;\r\n const compressedAppPublicKey = getPublicKeyFromPrivate(appPrivateKey.slice(0, 64));\r\n const associationToken = makeGaiaAssociationToken(this.keyPair.key, compressedAppPublicKey);\r\n return makeAuthResponse(this.keyPair.key, {\r\n ...(this.profile || {}),\r\n stxAddress,\r\n }, this.defaultUsername || '', {\r\n profileUrl,\r\n }, undefined, appPrivateKey, undefined, transitPublicKey, gaiaUrl, undefined, associationToken);\r\n }\r\n appPrivateKey(appDomain) {\r\n const { salt, appsNodeKey } = this.keyPair;\r\n const appsNode = new IdentityAddressOwnerNode(bip32.fromBase58(appsNodeKey), salt);\r\n return appsNode.getAppPrivateKey(appDomain);\r\n }\r\n async profileUrl(gaiaUrl) {\r\n if (this.defaultUsername) {\r\n try {\r\n const url = await getProfileURLFromZoneFile(this.defaultUsername);\r\n if (url)\r\n return url;\r\n }\r\n catch (error) {\r\n if (process.env.NODE_ENV !== 'test') {\r\n console.warn('Error fetching profile URL from zone file:', error);\r\n }\r\n }\r\n }\r\n return `${gaiaUrl}${this.address}/profile.json`;\r\n }\r\n async fetchNames() {\r\n const getNamesUrl = `https://core.blockstack.org/v1/addresses/bitcoin/${this.address}`;\r\n const res = await fetch(getNamesUrl);\r\n const data = await res.json();\r\n const { names } = data;\r\n return names;\r\n }\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n async refresh(opts = { gaiaUrl: DEFAULT_GAIA_HUB }) {\r\n try {\r\n const names = await this.fetchNames();\r\n if (names) {\r\n if (names[0] && !this.defaultUsername) {\r\n this.defaultUsername = names[0];\r\n }\r\n names.forEach(name => {\r\n const existingIndex = this.usernames.findIndex(u => u === name);\r\n if (existingIndex === -1) {\r\n this.usernames.push(name);\r\n }\r\n });\r\n }\r\n const profile = await fetchProfile({ identity: this, gaiaUrl: opts.gaiaUrl });\r\n if (profile) {\r\n this.profile = profile;\r\n }\r\n return;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n }\r\n}\r\nexport default Identity;\r\n//# sourceMappingURL=identity.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/auth/authMessages.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"identity.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/identity.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/identity.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils/index';\r\nimport { Profile } from './profiles';\r\ninterface IdentityConstructorOptions {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n usernames?: string[];\r\n defaultUsername?: string;\r\n profile?: Profile;\r\n}\r\ninterface RefreshOptions {\r\n gaiaUrl: string;\r\n}\r\nexport declare class Identity {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n defaultUsername?: string;\r\n usernames: string[];\r\n profile?: Profile;\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }: IdentityConstructorOptions);\r\n makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes, stxAddress, }: {\r\n appDomain: string;\r\n gaiaUrl: string;\r\n transitPublicKey: string;\r\n scopes?: string[];\r\n stxAddress?: string;\r\n }): Promise;\r\n appPrivateKey(appDomain: string): string;\r\n profileUrl(gaiaUrl: string): Promise;\r\n fetchNames(): Promise;\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n refresh(opts?: RefreshOptions): Promise;\r\n}\r\nexport default Identity;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index d1e50fabe..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { makeContractCall, makeContractDeploy, StacksTestnet, makeSTXTokenTransfer, getAddressFromPrivateKey, } from '@blockstack/stacks-transactions';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { assertIsTruthy } from '../utils';\r\nimport BN from 'bn.js';\r\nexport class WalletSigner {\r\n constructor({ privateKey }) {\r\n this.privateKey = privateKey;\r\n }\r\n getSTXAddress(version) {\r\n return getAddressFromPrivateKey(this.getSTXPrivateKey(), version);\r\n }\r\n getSTXPrivateKey() {\r\n const node = bip32.fromBase58(this.privateKey);\r\n assertIsTruthy(node.privateKey);\r\n return node.privateKey;\r\n }\r\n getNetwork() {\r\n const network = new StacksTestnet();\r\n network.coreApiUrl = 'https://sidecar.staging.blockstack.xyz';\r\n return network;\r\n }\r\n async fetchAccount({ version, rpcClient, }) {\r\n const address = this.getSTXAddress(version);\r\n const account = await rpcClient.fetchAccount(address);\r\n return account;\r\n }\r\n async signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractCall({\r\n contractAddress,\r\n contractName,\r\n functionName,\r\n functionArgs,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n nonce: new BN(nonce),\r\n network: this.getNetwork(),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractDeploy({\r\n contractName,\r\n codeBody: codeBody,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeSTXTokenTransfer({\r\n recipient,\r\n amount: new BN(amount),\r\n memo,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n}\r\n//# sourceMappingURL=signer.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/rpc-client/dist/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/bn.js/index.d.ts"],"map":"{\"version\":3,\"file\":\"signer.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/signer.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/signer.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { TransactionVersion, ClarityValue, StacksTestnet, PostConditionMode, PostCondition, StacksNetwork } from '@blockstack/stacks-transactions';\r\nimport RPCClient from '@blockstack/rpc-client';\r\ninterface ContractCallOptions {\r\n contractName: string;\r\n contractAddress: string;\r\n functionName: string;\r\n functionArgs: ClarityValue[];\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface ContractDeployOptions {\r\n contractName: string;\r\n codeBody: string;\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface STXTransferOptions {\r\n recipient: string;\r\n amount: string;\r\n memo?: string;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\nexport declare class WalletSigner {\r\n privateKey: string;\r\n constructor({ privateKey }: {\r\n privateKey: string;\r\n });\r\n getSTXAddress(version: TransactionVersion): string;\r\n getSTXPrivateKey(): Buffer;\r\n getNetwork(): StacksTestnet;\r\n fetchAccount({ version, rpcClient, }: {\r\n version: TransactionVersion;\r\n rpcClient: RPCClient;\r\n }): Promise;\r\n signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }: ContractCallOptions): Promise;\r\n signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }: ContractDeployOptions): Promise;\r\n signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }: STXTransferOptions): Promise;\r\n}\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index 796e4be36..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { TokenSigner } from 'jsontokens';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { ecPairToAddress, hexStringToECPair } from 'blockstack';\r\nexport const DEFAULT_GAIA_HUB = 'https://gaia.blockstack.org/hub/';\r\nexport const getHubInfo = async (hubUrl) => {\r\n const response = await fetch(`${hubUrl}/hub_info`);\r\n const data = await response.json();\r\n return data;\r\n};\r\nexport const getHubPrefix = async (hubUrl) => {\r\n const { read_url_prefix } = await getHubInfo(hubUrl);\r\n return read_url_prefix;\r\n};\r\nexport const makeGaiaAssociationToken = (secretKeyHex, childPublicKeyHex) => {\r\n const LIFETIME_SECONDS = 365 * 24 * 3600;\r\n const signerKeyHex = secretKeyHex.slice(0, 64);\r\n const compressedPublicKeyHex = getPublicKeyFromPrivate(signerKeyHex);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n childToAssociate: childPublicKeyHex,\r\n iss: compressedPublicKeyHex,\r\n exp: LIFETIME_SECONDS + new Date().getTime() / 1000,\r\n iat: Date.now() / 1000,\r\n salt,\r\n };\r\n const tokenSigner = new TokenSigner('ES256K', signerKeyHex);\r\n const token = tokenSigner.sign(payload);\r\n return token;\r\n};\r\nexport const connectToGaiaHubWithConfig = ({ hubInfo, privateKey, gaiaHubUrl, }) => {\r\n const readURL = hubInfo.read_url_prefix;\r\n const token = makeGaiaAuthToken({ hubInfo, privateKey, gaiaHubUrl });\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token,\r\n server: gaiaHubUrl,\r\n };\r\n};\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport const makeReadOnlyGaiaConfig = ({ readURL, privateKey, }) => {\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token: 'not_used',\r\n server: 'not_used',\r\n };\r\n};\r\nconst makeGaiaAuthToken = ({ hubInfo, privateKey, gaiaHubUrl }) => {\r\n const challengeText = hubInfo.challenge_text;\r\n const iss = getPublicKeyFromPrivate(privateKey);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n gaiaHubUrl,\r\n iss,\r\n salt,\r\n };\r\n if (challengeText) {\r\n payload.gaiaChallenge = challengeText;\r\n }\r\n const token = new TokenSigner('ES256K', privateKey).sign(payload);\r\n return `v1:${token}`;\r\n};\r\nexport const uploadToGaiaHub = async (filename, contents, hubConfig) => {\r\n const contentType = 'application/json';\r\n const response = await fetch(`${hubConfig.server}/store/${hubConfig.address}/${filename}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': contentType,\r\n Authorization: `bearer ${hubConfig.token}`,\r\n },\r\n body: contents,\r\n referrer: 'no-referrer',\r\n referrerPolicy: 'no-referrer',\r\n });\r\n const { publicURL } = await response.json();\r\n return publicURL;\r\n};\r\n//# sourceMappingURL=gaia.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/jsontokens/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"gaia.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/gaia.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/gaia.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nexport declare const DEFAULT_GAIA_HUB = \"https://gaia.blockstack.org/hub/\";\r\ninterface HubInfo {\r\n challenge_text?: string;\r\n read_url_prefix: string;\r\n}\r\nexport declare const getHubInfo: (hubUrl: string) => Promise;\r\nexport declare const getHubPrefix: (hubUrl: string) => Promise;\r\nexport declare const makeGaiaAssociationToken: (secretKeyHex: string, childPublicKeyHex: string) => string;\r\ninterface ConnectToGaiaOptions {\r\n hubInfo: HubInfo;\r\n privateKey: string;\r\n gaiaHubUrl: string;\r\n}\r\nexport declare const connectToGaiaHubWithConfig: ({ hubInfo, privateKey, gaiaHubUrl, }: ConnectToGaiaOptions) => GaiaHubConfig;\r\ninterface ReadOnlyGaiaConfigOptions {\r\n readURL: string;\r\n privateKey: string;\r\n}\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport declare const makeReadOnlyGaiaConfig: ({ readURL, privateKey, }: ReadOnlyGaiaConfigOptions) => GaiaHubConfig;\r\nexport declare const uploadToGaiaHub: (filename: string, contents: Blob | Buffer | ArrayBufferView | string, hubConfig: GaiaHubConfig) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/018dd99255a534837916033f04b396b3c5b771ad b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/018dd99255a534837916033f04b396b3c5b771ad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/061a2a662a532413fb382823dd2453c8537b4338 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/061a2a662a532413fb382823dd2453c8537b4338 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/314c9c585547e1ee805fe1597f307af31b72559c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/314c9c585547e1ee805fe1597f307af31b72559c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/420b2f97ccbc239de9691385af956534d4545c2c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/420b2f97ccbc239de9691385af956534d4545c2c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/9ed2612615091d088e52b934dbdc159280dc237c b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/9ed2612615091d088e52b934dbdc159280dc237c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/fae54f93545510c8db4ed307ea8397a19112446a b/packages/keychain/.rts2_cache_cjs/rpt2_273b57ed789d9596378db5e57a855ddb61d1560e/types/cache/fae54f93545510c8db4ed307ea8397a19112446a deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index 53380f7c1..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { ChainID, getAddressFromPrivateKey, TransactionVersion, } from '@blockstack/stacks-transactions';\r\nimport { ECPair } from 'bitcoinjs-lib';\r\nimport { ecPairToHexString } from 'blockstack';\r\nconst networkDerivationPath = `m/44'/5757'/0'/0/0`;\r\nexport const derivationPaths = {\r\n [ChainID.Mainnet]: networkDerivationPath,\r\n [ChainID.Testnet]: networkDerivationPath,\r\n};\r\nexport function getDerivationPath(chain) {\r\n return derivationPaths[chain];\r\n}\r\nexport function deriveStxAddressChain(chain) {\r\n return (rootNode) => {\r\n const childKey = rootNode.derivePath(getDerivationPath(chain));\r\n if (!childKey.privateKey) {\r\n throw new Error('Unable to derive private key from `rootNode`, bip32 master keychain');\r\n }\r\n const ecPair = ECPair.fromPrivateKey(childKey.privateKey);\r\n const privateKey = ecPairToHexString(ecPair);\r\n const txVersion = chain === ChainID.Mainnet ? TransactionVersion.Mainnet : TransactionVersion.Testnet;\r\n return {\r\n childKey,\r\n address: getAddressFromPrivateKey(privateKey, txVersion),\r\n privateKey,\r\n };\r\n };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/address-derivation/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAkB,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;IACxC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;CACzC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CAAC,QAAwB,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GACb,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACtF,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC;YACxD,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/address-derivation/index.d.ts","writeByteOrderMark":false,"text":"import { ChainID } from '@blockstack/stacks-transactions';\r\nimport { BIP32Interface } from 'bitcoinjs-lib';\r\nexport declare const derivationPaths: {\r\n 1: string;\r\n 2147483648: string;\r\n};\r\nexport declare function getDerivationPath(chain: ChainID): string;\r\nexport declare function deriveStxAddressChain(chain: ChainID): (rootNode: BIP32Interface) => {\r\n childKey: BIP32Interface;\r\n address: string;\r\n privateKey: string;\r\n};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index 0c4968ffd..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { generateMnemonic as generateBip39Mnemonic, mnemonicToSeed } from 'bip39';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { encrypt } from '../encryption/encrypt';\r\nimport { encryptMnemonic } from 'blockstack';\r\nexport async function generateMnemonicRootKeychain(entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return {\r\n rootNode,\r\n plaintextMnemonic,\r\n };\r\n}\r\nexport async function generateEncryptedMnemonicRootKeychain(password, entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n const ciphertextBuffer = await encrypt(plaintextMnemonic, password);\r\n const encryptedMnemonicPhrase = ciphertextBuffer.toString('hex');\r\n return {\r\n rootNode,\r\n encryptedMnemonicPhrase,\r\n };\r\n}\r\nexport async function deriveRootKeychainFromMnemonic(plaintextMnemonic) {\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return rootNode;\r\n}\r\nexport async function encryptMnemonicFormatted(plaintextMnemonic, password) {\r\n const encryptedMnemonic = await encryptMnemonic(plaintextMnemonic, password);\r\n const encryptedMnemonicHex = encryptedMnemonic.toString('hex');\r\n return { encryptedMnemonic, encryptedMnemonicHex };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/mnemonic/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAA8B;IAC/E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO;QACL,QAAQ;QACR,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,QAAgB,EAChB,OAA8B;IAE9B,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO;QACL,QAAQ;QACR,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,iBAAyB;IAC5E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,iBAAyB,EAAE,QAAgB;IACxF,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACrD,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/mnemonic/index.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { bip32 } from 'bitcoinjs-lib';\r\nexport declare type AllowedKeyEntropyBits = 128 | 256;\r\nexport declare function generateMnemonicRootKeychain(entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n plaintextMnemonic: string;\r\n}>;\r\nexport declare function generateEncryptedMnemonicRootKeychain(password: string, entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n encryptedMnemonicPhrase: string;\r\n}>;\r\nexport declare function deriveRootKeychainFromMnemonic(plaintextMnemonic: string): Promise;\r\nexport declare function encryptMnemonicFormatted(plaintextMnemonic: string, password: string): Promise<{\r\n encryptedMnemonic: Buffer;\r\n encryptedMnemonicHex: string;\r\n}>;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index e617263c8..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { encryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport async function encrypt(phrase, password) {\r\n const result = await encryptMnemonic(phrase, password);\r\n return result;\r\n}\r\n//# sourceMappingURL=encrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"encrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/encrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;KAKK;AACL,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/encrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport declare function encrypt(phrase: string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index 93330eccf..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\nexport default {\r\n Wallet,\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,eAAe;IACb,MAAM;CACP,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/index.d.ts","writeByteOrderMark":false,"text":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\ndeclare const _default: {\r\n Wallet: typeof Wallet;\r\n};\r\nexport default _default;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index 673790086..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { mnemonicToSeed } from 'bip39';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { getBlockchainIdentities, makeIdentity, assertIsTruthy, recursiveRestoreIdentities, } from '../utils';\r\nimport Identity from '../identity';\r\nimport { decrypt } from '../encryption/decrypt';\r\nimport { connectToGaiaHub, encryptContent, getPublicKeyFromPrivate, decryptContent, } from 'blockstack';\r\nimport { generateEncryptedMnemonicRootKeychain, deriveRootKeychainFromMnemonic, encryptMnemonicFormatted, } from '../mnemonic';\r\nimport { deriveStxAddressChain } from '../address-derivation';\r\nimport { makeReadOnlyGaiaConfig, DEFAULT_GAIA_HUB, uploadToGaiaHub } from '../utils/gaia';\r\nimport { WalletSigner } from './signer';\r\nconst CONFIG_INDEX = 45;\r\nexport class Wallet {\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }) {\r\n this.chain = chain;\r\n this.encryptedBackupPhrase = encryptedBackupPhrase;\r\n this.identityPublicKeychain = identityPublicKeychain;\r\n this.bitcoinPublicKeychain = bitcoinPublicKeychain;\r\n this.firstBitcoinAddress = firstBitcoinAddress;\r\n this.identityKeypairs = identityKeypairs;\r\n this.identityAddresses = identityAddresses;\r\n this.identities = identities.map(identity => new Identity(identity));\r\n this.configPrivateKey = configPrivateKey;\r\n this.stacksPrivateKey = stacksPrivateKey;\r\n this.walletConfig = walletConfig;\r\n }\r\n static generateFactory(bitsEntropy) {\r\n return async (password, chain) => {\r\n const { rootNode, encryptedMnemonicPhrase } = await generateEncryptedMnemonicRootKeychain(password, bitsEntropy);\r\n return this.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicPhrase,\r\n rootNode,\r\n chain,\r\n });\r\n };\r\n }\r\n static async generate(password, chain) {\r\n return await this.generateFactory(128)(password, chain);\r\n }\r\n static async generateStrong(password, chain) {\r\n return await this.generateFactory(256)(password, chain);\r\n }\r\n static async restore(password, seedPhrase, chain) {\r\n const rootNode = await deriveRootKeychainFromMnemonic(seedPhrase);\r\n const { encryptedMnemonicHex } = await encryptMnemonicFormatted(seedPhrase, password);\r\n const wallet = await Wallet.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicHex,\r\n rootNode,\r\n chain,\r\n });\r\n return await wallet.restoreIdentities({ rootNode, gaiaReadURL: DEFAULT_GAIA_HUB });\r\n }\r\n static async createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate = 1, }) {\r\n const derivedIdentitiesKey = rootNode.deriveHardened(CONFIG_INDEX).privateKey;\r\n if (!derivedIdentitiesKey) {\r\n throw new TypeError('Unable to derive config key for wallet identities');\r\n }\r\n const configPrivateKey = derivedIdentitiesKey.toString('hex');\r\n const { childKey: stxAddressKeychain } = deriveStxAddressChain(chain)(rootNode);\r\n const walletAttrs = await getBlockchainIdentities(rootNode, identitiesToGenerate);\r\n return new Wallet({\r\n ...walletAttrs,\r\n chain,\r\n configPrivateKey,\r\n stacksPrivateKey: stxAddressKeychain.toBase58(),\r\n encryptedBackupPhrase,\r\n });\r\n }\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n async restoreIdentities({ rootNode, gaiaReadURL, }) {\r\n const gaiaConfig = makeReadOnlyGaiaConfig({\r\n readURL: gaiaReadURL,\r\n privateKey: this.configPrivateKey,\r\n });\r\n await this.fetchConfig(gaiaConfig);\r\n if (this.walletConfig) {\r\n const getIdentities = this.walletConfig.identities.map(async (identityConfig, index) => {\r\n let identity = this.identities[index];\r\n if (!identity) {\r\n identity = await makeIdentity(rootNode, index);\r\n }\r\n if (identityConfig.username) {\r\n identity.usernames = [identityConfig.username];\r\n identity.defaultUsername = identityConfig.username;\r\n }\r\n return identity;\r\n });\r\n const identities = await Promise.all(getIdentities);\r\n this.identities = identities;\r\n return this;\r\n }\r\n await this.identities[0].refresh();\r\n const newIdentities = await recursiveRestoreIdentities({ rootNode });\r\n this.identities = this.identities.concat(newIdentities);\r\n return this;\r\n }\r\n async createNewIdentity(password) {\r\n const plainTextBuffer = await decrypt(Buffer.from(this.encryptedBackupPhrase, 'hex'), password);\r\n const seed = await mnemonicToSeed(plainTextBuffer);\r\n const rootNode = bip32.fromSeed(seed);\r\n const index = this.identities.length;\r\n const identity = await makeIdentity(rootNode, index);\r\n this.identities.push(identity);\r\n this.identityKeypairs.push(identity.keyPair);\r\n this.identityAddresses.push(identity.address);\r\n return identity;\r\n }\r\n async createGaiaConfig(gaiaHubUrl) {\r\n return connectToGaiaHub(gaiaHubUrl, this.configPrivateKey);\r\n }\r\n async fetchConfig(gaiaConfig) {\r\n try {\r\n const response = await fetch(`${gaiaConfig.url_prefix}${gaiaConfig.address}/wallet-config.json`);\r\n const encrypted = await response.text();\r\n const configJSON = (await decryptContent(encrypted, {\r\n privateKey: this.configPrivateKey,\r\n }));\r\n const config = JSON.parse(configJSON);\r\n this.walletConfig = config;\r\n return config;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n }\r\n async getOrCreateConfig({ gaiaConfig, skipUpload, }) {\r\n if (this.walletConfig) {\r\n return this.walletConfig;\r\n }\r\n const config = await this.fetchConfig(gaiaConfig);\r\n if (config) {\r\n return config;\r\n }\r\n const newConfig = {\r\n identities: this.identities.map(i => ({\r\n username: i.defaultUsername,\r\n address: i.address,\r\n apps: {},\r\n })),\r\n };\r\n this.walletConfig = newConfig;\r\n if (!skipUpload) {\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n return newConfig;\r\n }\r\n async updateConfig(gaiaConfig) {\r\n const publicKey = getPublicKeyFromPrivate(this.configPrivateKey);\r\n const encrypted = await encryptContent(JSON.stringify(this.walletConfig), { publicKey });\r\n await uploadToGaiaHub('wallet-config.json', encrypted, gaiaConfig);\r\n }\r\n async updateConfigWithAuth({ identityIndex, app, gaiaConfig, }) {\r\n const { walletConfig } = this;\r\n assertIsTruthy(walletConfig);\r\n this.identities.forEach((identity, index) => {\r\n const configIdentity = walletConfig.identities[index];\r\n if (configIdentity) {\r\n configIdentity.apps = configIdentity.apps || {};\r\n configIdentity.username = identity.defaultUsername;\r\n configIdentity.address = identity.address;\r\n walletConfig.identities[index] = configIdentity;\r\n }\r\n else {\r\n this.walletConfig?.identities.push({\r\n username: identity.defaultUsername,\r\n address: identity.address,\r\n apps: {},\r\n });\r\n }\r\n });\r\n const identity = walletConfig.identities[identityIndex];\r\n identity.apps = identity.apps || {};\r\n identity.apps[app.origin] = app;\r\n walletConfig.identities[identityIndex] = identity;\r\n this.walletConfig = walletConfig;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n async updateConfigForReuseWarning({ gaiaConfig }) {\r\n assertIsTruthy(this.walletConfig);\r\n this.walletConfig.hideWarningForReusingIdentity = true;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n getSigner() {\r\n return new WalletSigner({ privateKey: this.stacksPrivateKey });\r\n }\r\n}\r\nexport default Wallet;\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/index.d.ts","writeByteOrderMark":false,"text":"import { bip32, BIP32Interface } from 'bitcoinjs-lib';\r\nimport { ChainID } from '@blockstack/stacks-transactions';\r\nimport { IdentityKeyPair } from '../utils';\r\nimport Identity from '../identity';\r\nimport { AllowedKeyEntropyBits } from '../mnemonic';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nimport { WalletSigner } from './signer';\r\nexport interface ConfigApp {\r\n origin: string;\r\n scopes: string[];\r\n lastLoginAt: number;\r\n appIcon: string;\r\n name: string;\r\n}\r\ninterface ConfigIdentity {\r\n username?: string;\r\n address: string;\r\n apps: {\r\n [origin: string]: ConfigApp;\r\n };\r\n}\r\nexport interface WalletConfig {\r\n identities: ConfigIdentity[];\r\n hideWarningForReusingIdentity?: boolean;\r\n}\r\nexport interface ConstructorOptions {\r\n chain: ChainID;\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n encryptedBackupPhrase: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n}\r\nexport declare class Wallet {\r\n chain: ChainID;\r\n encryptedBackupPhrase: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n identityPublicKeychain: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }: ConstructorOptions);\r\n static generateFactory(bitsEntropy: AllowedKeyEntropyBits): (password: string, chain: ChainID) => Promise;\r\n static generate(password: string, chain: ChainID): Promise;\r\n static generateStrong(password: string, chain: ChainID): Promise;\r\n static restore(password: string, seedPhrase: string, chain: ChainID): Promise;\r\n static createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate, }: {\r\n encryptedBackupPhrase: string;\r\n rootNode: BIP32Interface;\r\n chain: ChainID;\r\n identitiesToGenerate?: number;\r\n }): Promise;\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n restoreIdentities({ rootNode, gaiaReadURL, }: {\r\n rootNode: bip32.BIP32Interface;\r\n gaiaReadURL: string;\r\n }): Promise;\r\n createNewIdentity(password: string): Promise;\r\n createGaiaConfig(gaiaHubUrl: string): Promise;\r\n fetchConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n getOrCreateConfig({ gaiaConfig, skipUpload, }: {\r\n gaiaConfig: GaiaHubConfig;\r\n skipUpload?: boolean;\r\n }): Promise;\r\n updateConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n updateConfigWithAuth({ identityIndex, app, gaiaConfig, }: {\r\n identityIndex: number;\r\n app: ConfigApp;\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n updateConfigForReuseWarning({ gaiaConfig }: {\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n getSigner(): WalletSigner;\r\n}\r\nexport default Wallet;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index a38d6780d..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { decrypt as triplesecDecrypt } from 'triplesec';\r\nimport { decryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport async function decrypt(dataBuffer, password) {\r\n const result = await decryptMnemonic(dataBuffer, password, triplesecDecrypt);\r\n return result;\r\n}\r\n//# sourceMappingURL=decrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/triplesec/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"decrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/decrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAA2B,EAAE,QAAgB;IACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/decrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport declare function decrypt(dataBuffer: Buffer | string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index afbcca7e2..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -{"code":"import IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport { createSha2Hash } from 'blockstack/lib/encryption/sha2Hash';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { parseZoneFile } from 'zone-file';\r\nimport Identity from '../identity';\r\nimport { AssertionError } from 'assert';\r\nimport { Subdomains, registrars } from '../profiles';\r\nconst IDENTITY_KEYCHAIN = 888;\r\nconst BLOCKSTACK_ON_BITCOIN = 0;\r\nexport function getIdentityPrivateKeychain(rootNode) {\r\n return rootNode.deriveHardened(IDENTITY_KEYCHAIN).deriveHardened(BLOCKSTACK_ON_BITCOIN);\r\n}\r\nconst EXTERNAL_ADDRESS = 'EXTERNAL_ADDRESS';\r\nconst CHANGE_ADDRESS = 'CHANGE_ADDRESS';\r\nexport function getBitcoinPrivateKeychain(rootNode) {\r\n const BIP_44_PURPOSE = 44;\r\n const BITCOIN_COIN_TYPE = 0;\r\n const ACCOUNT_INDEX = 0;\r\n return rootNode\r\n .deriveHardened(BIP_44_PURPOSE)\r\n .deriveHardened(BITCOIN_COIN_TYPE)\r\n .deriveHardened(ACCOUNT_INDEX);\r\n}\r\nexport function getBitcoinAddressNode(bitcoinKeychain, addressIndex = 0, chainType = EXTERNAL_ADDRESS) {\r\n let chain = null;\r\n if (chainType === EXTERNAL_ADDRESS) {\r\n chain = 0;\r\n }\r\n else if (chainType === CHANGE_ADDRESS) {\r\n chain = 1;\r\n }\r\n else {\r\n throw new Error('Invalid chain type');\r\n }\r\n return bitcoinKeychain.derive(chain).derive(addressIndex);\r\n}\r\nexport async function getIdentityOwnerAddressNode(identityPrivateKeychain, identityIndex = 0) {\r\n if (identityPrivateKeychain.isNeutered()) {\r\n throw new Error('You need the private key to generate identity addresses');\r\n }\r\n const publicKeyHex = Buffer.from(identityPrivateKeychain.publicKey.toString('hex'));\r\n const sha2Hash = await createSha2Hash();\r\n const saltData = await sha2Hash.digest(publicKeyHex, 'sha256');\r\n const salt = saltData.toString('hex');\r\n return new IdentityAddressOwnerNode(identityPrivateKeychain.deriveHardened(identityIndex), salt);\r\n}\r\nexport function getAddress(node) {\r\n return publicKeyToAddress(node.publicKey);\r\n}\r\nexport function deriveIdentityKeyPair(identityOwnerAddressNode) {\r\n const address = identityOwnerAddressNode.getAddress();\r\n const identityKey = identityOwnerAddressNode.getIdentityKey();\r\n const identityKeyID = identityOwnerAddressNode.getIdentityKeyID();\r\n const appsNode = identityOwnerAddressNode.getAppsNode();\r\n const stxNode = identityOwnerAddressNode.getSTXNode();\r\n const keyPair = {\r\n key: identityKey,\r\n keyID: identityKeyID,\r\n address,\r\n appsNodeKey: appsNode.toBase58(),\r\n stxNodeKey: stxNode.toBase58(),\r\n salt: identityOwnerAddressNode.getSalt(),\r\n };\r\n return keyPair;\r\n}\r\nexport async function getBlockchainIdentities(rootNode, identitiesToGenerate) {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const bitcoinPrivateKeychainNode = getBitcoinPrivateKeychain(rootNode);\r\n const identityPublicKeychainNode = identityPrivateKeychainNode.neutered();\r\n const identityPublicKeychain = identityPublicKeychainNode.toBase58();\r\n const bitcoinPublicKeychainNode = bitcoinPrivateKeychainNode.neutered();\r\n const bitcoinPublicKeychain = bitcoinPublicKeychainNode.toBase58();\r\n const firstBitcoinAddress = getAddress(getBitcoinAddressNode(bitcoinPublicKeychainNode));\r\n const identityAddresses = [];\r\n const identityKeypairs = [];\r\n const identities = [];\r\n // We pre-generate a number of identity addresses so that we\r\n // don't have to prompt the user for the password on each new profile\r\n for (let addressIndex = 0; addressIndex < identitiesToGenerate; addressIndex++) {\r\n const identity = await makeIdentity(rootNode, addressIndex);\r\n identities.push(identity);\r\n identityKeypairs.push(identity.keyPair);\r\n identityAddresses.push(identity.address);\r\n }\r\n return {\r\n identityPublicKeychain,\r\n bitcoinPublicKeychain,\r\n firstBitcoinAddress,\r\n identityAddresses,\r\n identityKeypairs,\r\n identities,\r\n };\r\n}\r\nexport const makeIdentity = async (rootNode, index) => {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const identityOwnerAddressNode = await getIdentityOwnerAddressNode(identityPrivateKeychainNode, index);\r\n const identityKeyPair = deriveIdentityKeyPair(identityOwnerAddressNode);\r\n const identity = new Identity({\r\n keyPair: identityKeyPair,\r\n address: identityKeyPair.address,\r\n usernames: [],\r\n });\r\n return identity;\r\n};\r\nexport function assertIsTruthy(val) {\r\n if (!val) {\r\n throw new AssertionError({ expected: true, actual: val });\r\n }\r\n}\r\nexport var IdentityNameValidityError;\r\n(function (IdentityNameValidityError) {\r\n IdentityNameValidityError[\"MINIMUM_LENGTH\"] = \"error_minimum_length\";\r\n IdentityNameValidityError[\"MAXIMUM_LENGTH\"] = \"error_maximum_length\";\r\n IdentityNameValidityError[\"ILLEGAL_CHARACTER\"] = \"error_illegal_character\";\r\n IdentityNameValidityError[\"UNAVAILABLE\"] = \"error_name_unavailable\";\r\n})(IdentityNameValidityError || (IdentityNameValidityError = {}));\r\nconst containsLegalCharacters = (name) => /^[a-z0-9_]+$/.test(name);\r\nexport const validateSubdomainFormat = (identityName) => {\r\n const nameLength = identityName.length;\r\n if (nameLength < 8) {\r\n return IdentityNameValidityError.MINIMUM_LENGTH;\r\n }\r\n if (nameLength > 37) {\r\n return IdentityNameValidityError.MAXIMUM_LENGTH;\r\n }\r\n if (!containsLegalCharacters(identityName)) {\r\n return IdentityNameValidityError.ILLEGAL_CHARACTER;\r\n }\r\n return null;\r\n};\r\nexport const validateSubdomainAvailability = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const url = `${registrars[subdomain].apiUrl}/${name.toLowerCase()}.${subdomain}`;\r\n const resp = await fetch(url);\r\n const data = await resp.json();\r\n return data;\r\n};\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport const recursiveRestoreIdentities = async ({ rootNode, index = 1, identities = [], }) => {\r\n const identity = await makeIdentity(rootNode, index);\r\n await identity.refresh();\r\n if (identity.defaultUsername) {\r\n identities.push(identity);\r\n return recursiveRestoreIdentities({ rootNode, index: index + 1, identities });\r\n }\r\n return identities;\r\n};\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport const validateSubdomain = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const error = validateSubdomainFormat(name);\r\n if (error) {\r\n return error;\r\n }\r\n try {\r\n const data = await validateSubdomainAvailability(name, subdomain);\r\n if (data.status !== 'available') {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n }\r\n catch (error) {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n return null;\r\n};\r\nexport const getProfileURLFromZoneFile = async (name) => {\r\n const url = `https://core.blockstack.org/v1/names/${name}`;\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const nameInfo = await res.json();\r\n const zone = parseZoneFile(nameInfo.zonefile);\r\n return zone.uri[0].target;\r\n }\r\n return;\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/sha2Hash.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/zone-file/lib/index.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/assert/assert.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/index.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nimport IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport Identity from '../identity';\r\nimport { Subdomains } from '../profiles';\r\nexport declare function getIdentityPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinAddressNode(bitcoinKeychain: BIP32Interface, addressIndex?: number, chainType?: string): BIP32Interface;\r\nexport declare function getIdentityOwnerAddressNode(identityPrivateKeychain: BIP32Interface, identityIndex?: number): Promise;\r\nexport declare function getAddress(node: BIP32Interface): string;\r\nexport interface IdentityKeyPair {\r\n key: string;\r\n keyID: string;\r\n address: string;\r\n appsNodeKey: string;\r\n stxNodeKey: string;\r\n salt: string;\r\n}\r\nexport declare function deriveIdentityKeyPair(identityOwnerAddressNode: IdentityAddressOwnerNode): IdentityKeyPair;\r\nexport declare function getBlockchainIdentities(rootNode: BIP32Interface, identitiesToGenerate: number): Promise<{\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityAddresses: string[];\r\n identityKeypairs: IdentityKeyPair[];\r\n identities: Identity[];\r\n}>;\r\nexport declare const makeIdentity: (rootNode: BIP32Interface, index: number) => Promise;\r\nexport declare function assertIsTruthy(val: any): asserts val is NonNullable;\r\nexport declare enum IdentityNameValidityError {\r\n MINIMUM_LENGTH = \"error_minimum_length\",\r\n MAXIMUM_LENGTH = \"error_maximum_length\",\r\n ILLEGAL_CHARACTER = \"error_illegal_character\",\r\n UNAVAILABLE = \"error_name_unavailable\"\r\n}\r\nexport declare const validateSubdomainFormat: (identityName: string) => IdentityNameValidityError | null;\r\nexport declare const validateSubdomainAvailability: (name: string, subdomain?: Subdomains) => Promise;\r\ninterface RecursiveMakeIdentitiesOptions {\r\n rootNode: BIP32Interface;\r\n index?: number;\r\n identities?: Identity[];\r\n}\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport declare const recursiveRestoreIdentities: ({ rootNode, index, identities, }: RecursiveMakeIdentitiesOptions) => Promise;\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport declare const validateSubdomain: (name: string, subdomain?: Subdomains) => Promise;\r\nexport declare const getProfileURLFromZoneFile: (name: string) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index aaef254cd..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { getLegacyAppNode } from 'blockstack/lib/wallet';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { getAddress } from '../utils';\r\nconst APPS_NODE_INDEX = 0;\r\nconst SIGNING_NODE_INDEX = 1;\r\nconst ENCRYPTION_NODE_INDEX = 2;\r\nconst STX_NODE_INDEX = 6;\r\nexport default class IdentityAddressOwnerNode {\r\n constructor(ownerHdNode, salt) {\r\n this.hdNode = ownerHdNode;\r\n this.salt = salt;\r\n }\r\n getNode() {\r\n return this.hdNode;\r\n }\r\n getSalt() {\r\n return this.salt;\r\n }\r\n getIdentityKey() {\r\n if (!this.hdNode.privateKey) {\r\n throw new Error('Node does not have private key');\r\n }\r\n return this.hdNode.privateKey.toString('hex');\r\n }\r\n getIdentityKeyID() {\r\n return this.hdNode.publicKey.toString('hex');\r\n }\r\n getAppsNode() {\r\n return this.hdNode.deriveHardened(APPS_NODE_INDEX);\r\n }\r\n getAddress() {\r\n return getAddress(this.hdNode);\r\n }\r\n getEncryptionNode() {\r\n return this.hdNode.deriveHardened(ENCRYPTION_NODE_INDEX);\r\n }\r\n getSigningNode() {\r\n return this.hdNode.deriveHardened(SIGNING_NODE_INDEX);\r\n }\r\n getSTXNode() {\r\n return this.hdNode.deriveHardened(STX_NODE_INDEX);\r\n }\r\n getAppNode(appDomain) {\r\n return getLegacyAppNode(this.hdNode, this.salt, appDomain);\r\n }\r\n getAppPrivateKey(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n if (!appNode.privateKey) {\r\n throw new Error('App node does not have private key');\r\n }\r\n return appNode.privateKey.toString('hex');\r\n }\r\n getAppAddress(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n return publicKeyToAddress(appNode.publicKey);\r\n }\r\n}\r\n//# sourceMappingURL=identity-address-owner-node.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/wallet.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts"],"map":"{\"version\":3,\"file\":\"identity-address-owner-node.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/nodes/identity-address-owner-node.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAK3C,YAAY,WAA2B,EAAE,IAAY;QACnD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/nodes/identity-address-owner-node.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nexport default class IdentityAddressOwnerNode {\r\n hdNode: BIP32Interface;\r\n salt: string;\r\n constructor(ownerHdNode: BIP32Interface, salt: string);\r\n getNode(): BIP32Interface;\r\n getSalt(): string;\r\n getIdentityKey(): string;\r\n getIdentityKeyID(): string;\r\n getAppsNode(): BIP32Interface;\r\n getAddress(): string;\r\n getEncryptionNode(): BIP32Interface;\r\n getSigningNode(): BIP32Interface;\r\n getSTXNode(): BIP32Interface;\r\n getAppNode(appDomain: string): BIP32Interface;\r\n getAppPrivateKey(appDomain: string): string;\r\n getAppAddress(appDomain: string): string;\r\n}\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index 1104190d1..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { signProfileToken, wrapProfileToken, connectToGaiaHub, makeProfileZoneFile, } from 'blockstack';\r\nimport { uploadToGaiaHub } from './utils/gaia';\r\nconst PERSON_TYPE = 'Person';\r\nconst CONTEXT = 'http://schema.org';\r\nconst IMAGE_TYPE = 'ImageObject';\r\nexport const DEFAULT_PROFILE = {\r\n '@type': 'Person',\r\n '@context': 'http://schema.org',\r\n};\r\nconst DEFAULT_PROFILE_FILE_NAME = 'profile.json';\r\nexport var Subdomains;\r\n(function (Subdomains) {\r\n Subdomains[\"TEST\"] = \"test-personal.id\";\r\n Subdomains[\"BLOCKSTACK\"] = \"id.blockstack\";\r\n})(Subdomains || (Subdomains = {}));\r\nexport const registrars = {\r\n [Subdomains.TEST]: {\r\n registerUrl: 'https://test-registrar.blockstack.org/register',\r\n apiUrl: 'https://test-registrar.blockstack.org/v1/names',\r\n },\r\n [Subdomains.BLOCKSTACK]: {\r\n registerUrl: 'https://registrar.blockstack.org/register',\r\n apiUrl: 'https://registrar.blockstack.org/v1/names',\r\n },\r\n};\r\nexport function signProfileForUpload(profile, keypair) {\r\n const privateKey = keypair.key;\r\n const publicKey = keypair.keyID;\r\n const token = signProfileToken(profile, privateKey, { publicKey });\r\n const tokenRecord = wrapProfileToken(token);\r\n const tokenRecords = [tokenRecord];\r\n return JSON.stringify(tokenRecords, null, 2);\r\n}\r\nexport async function uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig) {\r\n const identityHubConfig = gaiaHubConfig || (await connectToGaiaHub(gaiaHubUrl, identity.keyPair.key));\r\n const uploadResponse = await uploadToGaiaHub(DEFAULT_PROFILE_FILE_NAME, signedProfileTokenData, identityHubConfig);\r\n return uploadResponse;\r\n}\r\nconst sendUsernameToRegistrar = async ({ username, subdomain, zoneFile, identity, }) => {\r\n const { registerUrl } = registrars[subdomain];\r\n const registrationRequestBody = JSON.stringify({\r\n name: username,\r\n owner_address: identity.address,\r\n zonefile: zoneFile,\r\n });\r\n const requestHeaders = {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n };\r\n const response = await fetch(registerUrl, {\r\n method: 'POST',\r\n headers: requestHeaders,\r\n body: registrationRequestBody,\r\n });\r\n if (!response.ok) {\r\n return Promise.reject({\r\n error: 'Failed to register username',\r\n status: response.status,\r\n });\r\n }\r\n return response.json();\r\n};\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport const registerSubdomain = async ({ identity, gaiaHubUrl, username, subdomain, }) => {\r\n const profile = identity.profile || DEFAULT_PROFILE;\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n const profileUrl = await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData);\r\n const fullUsername = `${username}.${subdomain}`;\r\n const zoneFile = makeProfileZoneFile(fullUsername, profileUrl);\r\n await sendUsernameToRegistrar({\r\n username,\r\n subdomain,\r\n zoneFile,\r\n identity,\r\n });\r\n identity.defaultUsername = fullUsername;\r\n identity.usernames.push(fullUsername);\r\n return identity;\r\n};\r\nexport const signAndUploadProfile = async ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }) => {\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig);\r\n};\r\nexport const fetchProfile = async ({ identity, gaiaUrl, }) => {\r\n try {\r\n const url = await identity.profileUrl(gaiaUrl);\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const json = await res.json();\r\n const { decodedToken } = json[0];\r\n return decodedToken.payload?.claim;\r\n }\r\n if (res.status === 404) {\r\n return null;\r\n }\r\n throw new Error('Network error when fetching profile');\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n};\r\n//# sourceMappingURL=profiles.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"profiles.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/profiles.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/profiles.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils';\r\nimport Identity from './identity';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\ndeclare const PERSON_TYPE = \"Person\";\r\ndeclare const CONTEXT = \"http://schema.org\";\r\ndeclare const IMAGE_TYPE = \"ImageObject\";\r\nexport interface ProfileImage {\r\n '@type': typeof IMAGE_TYPE;\r\n name: string;\r\n contentUrl: string;\r\n}\r\nexport interface Profile {\r\n '@type': typeof PERSON_TYPE;\r\n '@context': typeof CONTEXT;\r\n apps?: {\r\n [origin: string]: string;\r\n };\r\n appsMeta?: {\r\n [origin: string]: {\r\n publicKey: string;\r\n storage: string;\r\n };\r\n };\r\n name?: string;\r\n image?: ProfileImage[];\r\n [key: string]: any;\r\n}\r\nexport declare const DEFAULT_PROFILE: Profile;\r\nexport declare enum Subdomains {\r\n TEST = \"test-personal.id\",\r\n BLOCKSTACK = \"id.blockstack\"\r\n}\r\nexport declare const registrars: {\r\n \"test-personal.id\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n \"id.blockstack\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n};\r\nexport declare function signProfileForUpload(profile: Profile, keypair: IdentityKeyPair): string;\r\nexport declare function uploadProfile(gaiaHubUrl: string, identity: Identity, signedProfileTokenData: string, gaiaHubConfig?: GaiaHubConfig): Promise;\r\ninterface RegisterParams {\r\n identity: Identity;\r\n /** The gaia hub URL to use for profile.json upload */\r\n gaiaHubUrl: string;\r\n /** The username portion of this subdomain, i.e. only the portion of the name before any periods */\r\n username: string;\r\n /** The \"domain\" used for this subdomain. Can be any of the `Subdomains` enum. */\r\n subdomain: Subdomains;\r\n}\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport declare const registerSubdomain: ({ identity, gaiaHubUrl, username, subdomain, }: RegisterParams) => Promise;\r\nexport declare const signAndUploadProfile: ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }: {\r\n profile: Profile;\r\n gaiaHubUrl: string;\r\n identity: Identity;\r\n gaiaHubConfig?: GaiaHubConfig | undefined;\r\n}) => Promise;\r\nexport declare const fetchProfile: ({ identity, gaiaUrl, }: {\r\n identity: Identity;\r\n gaiaUrl: string;\r\n}) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index 7edbdd5e7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { bip32, ECPair } from 'bitcoinjs-lib';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { makeAuthResponse } from 'blockstack/lib/auth/authMessages';\r\nimport { getProfileURLFromZoneFile } from './utils';\r\nimport { makeGaiaAssociationToken, DEFAULT_GAIA_HUB, getHubInfo, connectToGaiaHubWithConfig, } from './utils/gaia';\r\nimport IdentityAddressOwnerNode from './nodes/identity-address-owner-node';\r\nimport { fetchProfile, DEFAULT_PROFILE, signAndUploadProfile } from './profiles';\r\nimport { ecPairToAddress } from 'blockstack';\r\nexport class Identity {\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }) {\r\n this.keyPair = keyPair;\r\n this.address = address;\r\n this.usernames = usernames || [];\r\n this.defaultUsername = defaultUsername;\r\n this.profile = profile;\r\n }\r\n async makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes = [], stxAddress, }) {\r\n const appPrivateKey = this.appPrivateKey(appDomain);\r\n const hubInfo = await getHubInfo(gaiaUrl);\r\n const profileUrl = await this.profileUrl(hubInfo.read_url_prefix);\r\n const profile = (await fetchProfile({ identity: this, gaiaUrl: hubInfo.read_url_prefix })) || DEFAULT_PROFILE;\r\n if (scopes.includes('publish_data')) {\r\n if (!profile.apps) {\r\n profile.apps = {};\r\n }\r\n const challengeSigner = ECPair.fromPrivateKey(Buffer.from(appPrivateKey, 'hex'));\r\n const storageUrl = `${hubInfo.read_url_prefix}${ecPairToAddress(challengeSigner)}/`;\r\n profile.apps[appDomain] = storageUrl;\r\n if (!profile.appsMeta) {\r\n profile.appsMeta = {};\r\n }\r\n profile.appsMeta[appDomain] = {\r\n storage: storageUrl,\r\n publicKey: challengeSigner.publicKey.toString('hex'),\r\n };\r\n const gaiaHubConfig = connectToGaiaHubWithConfig({\r\n hubInfo,\r\n privateKey: this.keyPair.key,\r\n gaiaHubUrl: gaiaUrl,\r\n });\r\n await signAndUploadProfile({ profile, identity: this, gaiaHubUrl: gaiaUrl, gaiaHubConfig });\r\n }\r\n this.profile = profile;\r\n const compressedAppPublicKey = getPublicKeyFromPrivate(appPrivateKey.slice(0, 64));\r\n const associationToken = makeGaiaAssociationToken(this.keyPair.key, compressedAppPublicKey);\r\n return makeAuthResponse(this.keyPair.key, {\r\n ...(this.profile || {}),\r\n stxAddress,\r\n }, this.defaultUsername || '', {\r\n profileUrl,\r\n }, undefined, appPrivateKey, undefined, transitPublicKey, gaiaUrl, undefined, associationToken);\r\n }\r\n appPrivateKey(appDomain) {\r\n const { salt, appsNodeKey } = this.keyPair;\r\n const appsNode = new IdentityAddressOwnerNode(bip32.fromBase58(appsNodeKey), salt);\r\n return appsNode.getAppPrivateKey(appDomain);\r\n }\r\n async profileUrl(gaiaUrl) {\r\n if (this.defaultUsername) {\r\n try {\r\n const url = await getProfileURLFromZoneFile(this.defaultUsername);\r\n if (url)\r\n return url;\r\n }\r\n catch (error) {\r\n if (process.env.NODE_ENV !== 'test') {\r\n console.warn('Error fetching profile URL from zone file:', error);\r\n }\r\n }\r\n }\r\n return `${gaiaUrl}${this.address}/profile.json`;\r\n }\r\n async fetchNames() {\r\n const getNamesUrl = `https://core.blockstack.org/v1/addresses/bitcoin/${this.address}`;\r\n const res = await fetch(getNamesUrl);\r\n const data = await res.json();\r\n const { names } = data;\r\n return names;\r\n }\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n async refresh(opts = { gaiaUrl: DEFAULT_GAIA_HUB }) {\r\n try {\r\n const names = await this.fetchNames();\r\n if (names) {\r\n if (names[0] && !this.defaultUsername) {\r\n this.defaultUsername = names[0];\r\n }\r\n names.forEach(name => {\r\n const existingIndex = this.usernames.findIndex(u => u === name);\r\n if (existingIndex === -1) {\r\n this.usernames.push(name);\r\n }\r\n });\r\n }\r\n const profile = await fetchProfile({ identity: this, gaiaUrl: opts.gaiaUrl });\r\n if (profile) {\r\n this.profile = profile;\r\n }\r\n return;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n }\r\n}\r\nexport default Identity;\r\n//# sourceMappingURL=identity.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/auth/authMessages.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"identity.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/identity.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/identity.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils/index';\r\nimport { Profile } from './profiles';\r\ninterface IdentityConstructorOptions {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n usernames?: string[];\r\n defaultUsername?: string;\r\n profile?: Profile;\r\n}\r\ninterface RefreshOptions {\r\n gaiaUrl: string;\r\n}\r\nexport declare class Identity {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n defaultUsername?: string;\r\n usernames: string[];\r\n profile?: Profile;\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }: IdentityConstructorOptions);\r\n makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes, stxAddress, }: {\r\n appDomain: string;\r\n gaiaUrl: string;\r\n transitPublicKey: string;\r\n scopes?: string[];\r\n stxAddress?: string;\r\n }): Promise;\r\n appPrivateKey(appDomain: string): string;\r\n profileUrl(gaiaUrl: string): Promise;\r\n fetchNames(): Promise;\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n refresh(opts?: RefreshOptions): Promise;\r\n}\r\nexport default Identity;\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index d1e50fabe..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { makeContractCall, makeContractDeploy, StacksTestnet, makeSTXTokenTransfer, getAddressFromPrivateKey, } from '@blockstack/stacks-transactions';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { assertIsTruthy } from '../utils';\r\nimport BN from 'bn.js';\r\nexport class WalletSigner {\r\n constructor({ privateKey }) {\r\n this.privateKey = privateKey;\r\n }\r\n getSTXAddress(version) {\r\n return getAddressFromPrivateKey(this.getSTXPrivateKey(), version);\r\n }\r\n getSTXPrivateKey() {\r\n const node = bip32.fromBase58(this.privateKey);\r\n assertIsTruthy(node.privateKey);\r\n return node.privateKey;\r\n }\r\n getNetwork() {\r\n const network = new StacksTestnet();\r\n network.coreApiUrl = 'https://sidecar.staging.blockstack.xyz';\r\n return network;\r\n }\r\n async fetchAccount({ version, rpcClient, }) {\r\n const address = this.getSTXAddress(version);\r\n const account = await rpcClient.fetchAccount(address);\r\n return account;\r\n }\r\n async signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractCall({\r\n contractAddress,\r\n contractName,\r\n functionName,\r\n functionArgs,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n nonce: new BN(nonce),\r\n network: this.getNetwork(),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractDeploy({\r\n contractName,\r\n codeBody: codeBody,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeSTXTokenTransfer({\r\n recipient,\r\n amount: new BN(amount),\r\n memo,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n}\r\n//# sourceMappingURL=signer.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/rpc-client/dist/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/bn.js/index.d.ts"],"map":"{\"version\":3,\"file\":\"signer.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/signer.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAGlB,aAAa,EACb,oBAAoB,EAEpB,wBAAwB,GAGzB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,MAAM,OAAO,CAAC;AAkCvB,MAAM,OAAO,YAAY;IAGvB,YAAY,EAAE,UAAU,EAA0B;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,OAA2B;QACvC,OAAO,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,gBAAgB;QACd,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,cAAc,CAAS,IAAI,CAAC,UAAU,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,UAAU;QACR,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,OAAO,CAAC,UAAU,GAAG,wCAAwC,CAAC;QAC9D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EACjB,OAAO,EACP,SAAS,GAIV;QACC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EACrB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,iBAAiB,EACjB,cAAc,GACM;QACpB,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC;YAChC,eAAe;YACf,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClD,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC;YACpB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,iBAAiB;YACjB,cAAc;SACf,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EACvB,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,cAAc,GACQ;QACtB,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC;YAClC,YAAY;YACZ,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC;YACpB,iBAAiB;YACjB,cAAc;SACf,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EACpB,SAAS,EACT,MAAM,EACN,IAAI,EACJ,KAAK,EACL,iBAAiB,EACjB,cAAc,GACK;QACnB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC;YACpC,SAAS;YACT,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC;YACtB,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC;YACpB,iBAAiB;YACjB,cAAc;SACf,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;CACF\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/signer.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { TransactionVersion, ClarityValue, StacksTestnet, PostConditionMode, PostCondition, StacksNetwork } from '@blockstack/stacks-transactions';\r\nimport RPCClient from '@blockstack/rpc-client';\r\ninterface ContractCallOptions {\r\n contractName: string;\r\n contractAddress: string;\r\n functionName: string;\r\n functionArgs: ClarityValue[];\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface ContractDeployOptions {\r\n contractName: string;\r\n codeBody: string;\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface STXTransferOptions {\r\n recipient: string;\r\n amount: string;\r\n memo?: string;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\nexport declare class WalletSigner {\r\n privateKey: string;\r\n constructor({ privateKey }: {\r\n privateKey: string;\r\n });\r\n getSTXAddress(version: TransactionVersion): string;\r\n getSTXPrivateKey(): Buffer;\r\n getNetwork(): StacksTestnet;\r\n fetchAccount({ version, rpcClient, }: {\r\n version: TransactionVersion;\r\n rpcClient: RPCClient;\r\n }): Promise;\r\n signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }: ContractCallOptions): Promise;\r\n signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }: ContractDeployOptions): Promise;\r\n signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }: STXTransferOptions): Promise;\r\n}\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index 796e4be36..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { TokenSigner } from 'jsontokens';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { ecPairToAddress, hexStringToECPair } from 'blockstack';\r\nexport const DEFAULT_GAIA_HUB = 'https://gaia.blockstack.org/hub/';\r\nexport const getHubInfo = async (hubUrl) => {\r\n const response = await fetch(`${hubUrl}/hub_info`);\r\n const data = await response.json();\r\n return data;\r\n};\r\nexport const getHubPrefix = async (hubUrl) => {\r\n const { read_url_prefix } = await getHubInfo(hubUrl);\r\n return read_url_prefix;\r\n};\r\nexport const makeGaiaAssociationToken = (secretKeyHex, childPublicKeyHex) => {\r\n const LIFETIME_SECONDS = 365 * 24 * 3600;\r\n const signerKeyHex = secretKeyHex.slice(0, 64);\r\n const compressedPublicKeyHex = getPublicKeyFromPrivate(signerKeyHex);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n childToAssociate: childPublicKeyHex,\r\n iss: compressedPublicKeyHex,\r\n exp: LIFETIME_SECONDS + new Date().getTime() / 1000,\r\n iat: Date.now() / 1000,\r\n salt,\r\n };\r\n const tokenSigner = new TokenSigner('ES256K', signerKeyHex);\r\n const token = tokenSigner.sign(payload);\r\n return token;\r\n};\r\nexport const connectToGaiaHubWithConfig = ({ hubInfo, privateKey, gaiaHubUrl, }) => {\r\n const readURL = hubInfo.read_url_prefix;\r\n const token = makeGaiaAuthToken({ hubInfo, privateKey, gaiaHubUrl });\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token,\r\n server: gaiaHubUrl,\r\n };\r\n};\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport const makeReadOnlyGaiaConfig = ({ readURL, privateKey, }) => {\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token: 'not_used',\r\n server: 'not_used',\r\n };\r\n};\r\nconst makeGaiaAuthToken = ({ hubInfo, privateKey, gaiaHubUrl }) => {\r\n const challengeText = hubInfo.challenge_text;\r\n const iss = getPublicKeyFromPrivate(privateKey);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n gaiaHubUrl,\r\n iss,\r\n salt,\r\n };\r\n if (challengeText) {\r\n payload.gaiaChallenge = challengeText;\r\n }\r\n const token = new TokenSigner('ES256K', privateKey).sign(payload);\r\n return `v1:${token}`;\r\n};\r\nexport const uploadToGaiaHub = async (filename, contents, hubConfig) => {\r\n const contentType = 'application/json';\r\n const response = await fetch(`${hubConfig.server}/store/${hubConfig.address}/${filename}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': contentType,\r\n Authorization: `bearer ${hubConfig.token}`,\r\n },\r\n body: contents,\r\n referrer: 'no-referrer',\r\n referrerPolicy: 'no-referrer',\r\n });\r\n const { publicURL } = await response.json();\r\n return publicURL;\r\n};\r\n//# sourceMappingURL=gaia.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/jsontokens/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"gaia.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/gaia.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,WAAW,EAAQ,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGhE,MAAM,CAAC,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAOnE,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,WAAW,CAAC,CAAC;IACnD,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;IACnD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,YAAoB,EACpB,iBAAyB,EACjB,EAAE;IACV,MAAM,gBAAgB,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG;QACd,gBAAgB,EAAE,iBAAiB;QACnC,GAAG,EAAE,sBAAsB;QAC3B,GAAG,EAAE,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;QACnD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;QACtB,IAAI;KACL,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,OAAO,EACP,UAAU,EACV,UAAU,GACW,EAAiB,EAAE;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,eAAe,CAC7B,iBAAiB,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACvE,CAAC;IACF,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,8BAA8B,EAAE,GAAG;QACnC,OAAO;QACP,KAAK;QACL,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC,CAAC;AAOF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,OAAO,EACP,UAAU,GACgB,EAAiB,EAAE;IAC7C,MAAM,OAAO,GAAG,eAAe,CAC7B,iBAAiB,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACvE,CAAC;IACF,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,8BAA8B,EAAE,GAAG;QACnC,OAAO;QACP,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC,CAAC;AASF,MAAM,iBAAiB,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAwB,EAAE,EAAE;IACtF,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAC7C,MAAM,GAAG,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAEhD,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAoB;QAC/B,UAAU;QACV,GAAG;QACH,IAAI;KACL,CAAC;IACF,IAAI,aAAa,EAAE;QACjB,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;KACvC;IACD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,OAAO,MAAM,KAAK,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,QAAgB,EAChB,QAAkD,EAClD,SAAwB,EACP,EAAE;IACnB,MAAM,WAAW,GAAG,kBAAkB,CAAC;IAEvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,UAAU,SAAS,CAAC,OAAO,IAAI,QAAQ,EAAE,EAAE;QACzF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,WAAW;YAC3B,aAAa,EAAE,UAAU,SAAS,CAAC,KAAK,EAAE;SAC3C;QACD,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,aAAa;KAC9B,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/gaia.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nexport declare const DEFAULT_GAIA_HUB = \"https://gaia.blockstack.org/hub/\";\r\ninterface HubInfo {\r\n challenge_text?: string;\r\n read_url_prefix: string;\r\n}\r\nexport declare const getHubInfo: (hubUrl: string) => Promise;\r\nexport declare const getHubPrefix: (hubUrl: string) => Promise;\r\nexport declare const makeGaiaAssociationToken: (secretKeyHex: string, childPublicKeyHex: string) => string;\r\ninterface ConnectToGaiaOptions {\r\n hubInfo: HubInfo;\r\n privateKey: string;\r\n gaiaHubUrl: string;\r\n}\r\nexport declare const connectToGaiaHubWithConfig: ({ hubInfo, privateKey, gaiaHubUrl, }: ConnectToGaiaOptions) => GaiaHubConfig;\r\ninterface ReadOnlyGaiaConfigOptions {\r\n readURL: string;\r\n privateKey: string;\r\n}\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport declare const makeReadOnlyGaiaConfig: ({ readURL, privateKey, }: ReadOnlyGaiaConfigOptions) => GaiaHubConfig;\r\nexport declare const uploadToGaiaHub: (filename: string, contents: Blob | Buffer | ArrayBufferView | string, hubConfig: GaiaHubConfig) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/018dd99255a534837916033f04b396b3c5b771ad b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/018dd99255a534837916033f04b396b3c5b771ad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/061a2a662a532413fb382823dd2453c8537b4338 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/061a2a662a532413fb382823dd2453c8537b4338 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/314c9c585547e1ee805fe1597f307af31b72559c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/314c9c585547e1ee805fe1597f307af31b72559c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/420b2f97ccbc239de9691385af956534d4545c2c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/420b2f97ccbc239de9691385af956534d4545c2c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/9ed2612615091d088e52b934dbdc159280dc237c b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/9ed2612615091d088e52b934dbdc159280dc237c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/fae54f93545510c8db4ed307ea8397a19112446a b/packages/keychain/.rts2_cache_cjs/rpt2_a33312e0d9f810593399d07ffcd902d8d8963f87/types/cache/fae54f93545510c8db4ed307ea8397a19112446a deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index 53380f7c1..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { ChainID, getAddressFromPrivateKey, TransactionVersion, } from '@blockstack/stacks-transactions';\r\nimport { ECPair } from 'bitcoinjs-lib';\r\nimport { ecPairToHexString } from 'blockstack';\r\nconst networkDerivationPath = `m/44'/5757'/0'/0/0`;\r\nexport const derivationPaths = {\r\n [ChainID.Mainnet]: networkDerivationPath,\r\n [ChainID.Testnet]: networkDerivationPath,\r\n};\r\nexport function getDerivationPath(chain) {\r\n return derivationPaths[chain];\r\n}\r\nexport function deriveStxAddressChain(chain) {\r\n return (rootNode) => {\r\n const childKey = rootNode.derivePath(getDerivationPath(chain));\r\n if (!childKey.privateKey) {\r\n throw new Error('Unable to derive private key from `rootNode`, bip32 master keychain');\r\n }\r\n const ecPair = ECPair.fromPrivateKey(childKey.privateKey);\r\n const privateKey = ecPairToHexString(ecPair);\r\n const txVersion = chain === ChainID.Mainnet ? TransactionVersion.Mainnet : TransactionVersion.Testnet;\r\n return {\r\n childKey,\r\n address: getAddressFromPrivateKey(privateKey, txVersion),\r\n privateKey,\r\n };\r\n };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/address-derivation/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAkB,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;IACxC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;CACzC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CAAC,QAAwB,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GACb,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACtF,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC;YACxD,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/address-derivation/index.d.ts","writeByteOrderMark":false,"text":"import { ChainID } from '@blockstack/stacks-transactions';\r\nimport { BIP32Interface } from 'bitcoinjs-lib';\r\nexport declare const derivationPaths: {\r\n 1: string;\r\n 2147483648: string;\r\n};\r\nexport declare function getDerivationPath(chain: ChainID): string;\r\nexport declare function deriveStxAddressChain(chain: ChainID): (rootNode: BIP32Interface) => {\r\n childKey: BIP32Interface;\r\n address: string;\r\n privateKey: string;\r\n};\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index 0c4968ffd..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { generateMnemonic as generateBip39Mnemonic, mnemonicToSeed } from 'bip39';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { encrypt } from '../encryption/encrypt';\r\nimport { encryptMnemonic } from 'blockstack';\r\nexport async function generateMnemonicRootKeychain(entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return {\r\n rootNode,\r\n plaintextMnemonic,\r\n };\r\n}\r\nexport async function generateEncryptedMnemonicRootKeychain(password, entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n const ciphertextBuffer = await encrypt(plaintextMnemonic, password);\r\n const encryptedMnemonicPhrase = ciphertextBuffer.toString('hex');\r\n return {\r\n rootNode,\r\n encryptedMnemonicPhrase,\r\n };\r\n}\r\nexport async function deriveRootKeychainFromMnemonic(plaintextMnemonic) {\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return rootNode;\r\n}\r\nexport async function encryptMnemonicFormatted(plaintextMnemonic, password) {\r\n const encryptedMnemonic = await encryptMnemonic(plaintextMnemonic, password);\r\n const encryptedMnemonicHex = encryptedMnemonic.toString('hex');\r\n return { encryptedMnemonic, encryptedMnemonicHex };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/mnemonic/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAA8B;IAC/E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO;QACL,QAAQ;QACR,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,QAAgB,EAChB,OAA8B;IAE9B,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO;QACL,QAAQ;QACR,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,iBAAyB;IAC5E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,iBAAyB,EAAE,QAAgB;IACxF,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACrD,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/mnemonic/index.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { bip32 } from 'bitcoinjs-lib';\r\nexport declare type AllowedKeyEntropyBits = 128 | 256;\r\nexport declare function generateMnemonicRootKeychain(entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n plaintextMnemonic: string;\r\n}>;\r\nexport declare function generateEncryptedMnemonicRootKeychain(password: string, entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n encryptedMnemonicPhrase: string;\r\n}>;\r\nexport declare function deriveRootKeychainFromMnemonic(plaintextMnemonic: string): Promise;\r\nexport declare function encryptMnemonicFormatted(plaintextMnemonic: string, password: string): Promise<{\r\n encryptedMnemonic: Buffer;\r\n encryptedMnemonicHex: string;\r\n}>;\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index e617263c8..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { encryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport async function encrypt(phrase, password) {\r\n const result = await encryptMnemonic(phrase, password);\r\n return result;\r\n}\r\n//# sourceMappingURL=encrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"encrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/encrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;KAKK;AACL,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/encrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport declare function encrypt(phrase: string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index 93330eccf..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\nexport default {\r\n Wallet,\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,eAAe;IACb,MAAM;CACP,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/index.d.ts","writeByteOrderMark":false,"text":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\ndeclare const _default: {\r\n Wallet: typeof Wallet;\r\n};\r\nexport default _default;\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index 673790086..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { mnemonicToSeed } from 'bip39';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { getBlockchainIdentities, makeIdentity, assertIsTruthy, recursiveRestoreIdentities, } from '../utils';\r\nimport Identity from '../identity';\r\nimport { decrypt } from '../encryption/decrypt';\r\nimport { connectToGaiaHub, encryptContent, getPublicKeyFromPrivate, decryptContent, } from 'blockstack';\r\nimport { generateEncryptedMnemonicRootKeychain, deriveRootKeychainFromMnemonic, encryptMnemonicFormatted, } from '../mnemonic';\r\nimport { deriveStxAddressChain } from '../address-derivation';\r\nimport { makeReadOnlyGaiaConfig, DEFAULT_GAIA_HUB, uploadToGaiaHub } from '../utils/gaia';\r\nimport { WalletSigner } from './signer';\r\nconst CONFIG_INDEX = 45;\r\nexport class Wallet {\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }) {\r\n this.chain = chain;\r\n this.encryptedBackupPhrase = encryptedBackupPhrase;\r\n this.identityPublicKeychain = identityPublicKeychain;\r\n this.bitcoinPublicKeychain = bitcoinPublicKeychain;\r\n this.firstBitcoinAddress = firstBitcoinAddress;\r\n this.identityKeypairs = identityKeypairs;\r\n this.identityAddresses = identityAddresses;\r\n this.identities = identities.map(identity => new Identity(identity));\r\n this.configPrivateKey = configPrivateKey;\r\n this.stacksPrivateKey = stacksPrivateKey;\r\n this.walletConfig = walletConfig;\r\n }\r\n static generateFactory(bitsEntropy) {\r\n return async (password, chain) => {\r\n const { rootNode, encryptedMnemonicPhrase } = await generateEncryptedMnemonicRootKeychain(password, bitsEntropy);\r\n return this.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicPhrase,\r\n rootNode,\r\n chain,\r\n });\r\n };\r\n }\r\n static async generate(password, chain) {\r\n return await this.generateFactory(128)(password, chain);\r\n }\r\n static async generateStrong(password, chain) {\r\n return await this.generateFactory(256)(password, chain);\r\n }\r\n static async restore(password, seedPhrase, chain) {\r\n const rootNode = await deriveRootKeychainFromMnemonic(seedPhrase);\r\n const { encryptedMnemonicHex } = await encryptMnemonicFormatted(seedPhrase, password);\r\n const wallet = await Wallet.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicHex,\r\n rootNode,\r\n chain,\r\n });\r\n return await wallet.restoreIdentities({ rootNode, gaiaReadURL: DEFAULT_GAIA_HUB });\r\n }\r\n static async createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate = 1, }) {\r\n const derivedIdentitiesKey = rootNode.deriveHardened(CONFIG_INDEX).privateKey;\r\n if (!derivedIdentitiesKey) {\r\n throw new TypeError('Unable to derive config key for wallet identities');\r\n }\r\n const configPrivateKey = derivedIdentitiesKey.toString('hex');\r\n const { childKey: stxAddressKeychain } = deriveStxAddressChain(chain)(rootNode);\r\n const walletAttrs = await getBlockchainIdentities(rootNode, identitiesToGenerate);\r\n return new Wallet({\r\n ...walletAttrs,\r\n chain,\r\n configPrivateKey,\r\n stacksPrivateKey: stxAddressKeychain.toBase58(),\r\n encryptedBackupPhrase,\r\n });\r\n }\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n async restoreIdentities({ rootNode, gaiaReadURL, }) {\r\n const gaiaConfig = makeReadOnlyGaiaConfig({\r\n readURL: gaiaReadURL,\r\n privateKey: this.configPrivateKey,\r\n });\r\n await this.fetchConfig(gaiaConfig);\r\n if (this.walletConfig) {\r\n const getIdentities = this.walletConfig.identities.map(async (identityConfig, index) => {\r\n let identity = this.identities[index];\r\n if (!identity) {\r\n identity = await makeIdentity(rootNode, index);\r\n }\r\n if (identityConfig.username) {\r\n identity.usernames = [identityConfig.username];\r\n identity.defaultUsername = identityConfig.username;\r\n }\r\n return identity;\r\n });\r\n const identities = await Promise.all(getIdentities);\r\n this.identities = identities;\r\n return this;\r\n }\r\n await this.identities[0].refresh();\r\n const newIdentities = await recursiveRestoreIdentities({ rootNode });\r\n this.identities = this.identities.concat(newIdentities);\r\n return this;\r\n }\r\n async createNewIdentity(password) {\r\n const plainTextBuffer = await decrypt(Buffer.from(this.encryptedBackupPhrase, 'hex'), password);\r\n const seed = await mnemonicToSeed(plainTextBuffer);\r\n const rootNode = bip32.fromSeed(seed);\r\n const index = this.identities.length;\r\n const identity = await makeIdentity(rootNode, index);\r\n this.identities.push(identity);\r\n this.identityKeypairs.push(identity.keyPair);\r\n this.identityAddresses.push(identity.address);\r\n return identity;\r\n }\r\n async createGaiaConfig(gaiaHubUrl) {\r\n return connectToGaiaHub(gaiaHubUrl, this.configPrivateKey);\r\n }\r\n async fetchConfig(gaiaConfig) {\r\n try {\r\n const response = await fetch(`${gaiaConfig.url_prefix}${gaiaConfig.address}/wallet-config.json`);\r\n const encrypted = await response.text();\r\n const configJSON = (await decryptContent(encrypted, {\r\n privateKey: this.configPrivateKey,\r\n }));\r\n const config = JSON.parse(configJSON);\r\n this.walletConfig = config;\r\n return config;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n }\r\n async getOrCreateConfig({ gaiaConfig, skipUpload, }) {\r\n if (this.walletConfig) {\r\n return this.walletConfig;\r\n }\r\n const config = await this.fetchConfig(gaiaConfig);\r\n if (config) {\r\n return config;\r\n }\r\n const newConfig = {\r\n identities: this.identities.map(i => ({\r\n username: i.defaultUsername,\r\n address: i.address,\r\n apps: {},\r\n })),\r\n };\r\n this.walletConfig = newConfig;\r\n if (!skipUpload) {\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n return newConfig;\r\n }\r\n async updateConfig(gaiaConfig) {\r\n const publicKey = getPublicKeyFromPrivate(this.configPrivateKey);\r\n const encrypted = await encryptContent(JSON.stringify(this.walletConfig), { publicKey });\r\n await uploadToGaiaHub('wallet-config.json', encrypted, gaiaConfig);\r\n }\r\n async updateConfigWithAuth({ identityIndex, app, gaiaConfig, }) {\r\n const { walletConfig } = this;\r\n assertIsTruthy(walletConfig);\r\n this.identities.forEach((identity, index) => {\r\n const configIdentity = walletConfig.identities[index];\r\n if (configIdentity) {\r\n configIdentity.apps = configIdentity.apps || {};\r\n configIdentity.username = identity.defaultUsername;\r\n configIdentity.address = identity.address;\r\n walletConfig.identities[index] = configIdentity;\r\n }\r\n else {\r\n this.walletConfig?.identities.push({\r\n username: identity.defaultUsername,\r\n address: identity.address,\r\n apps: {},\r\n });\r\n }\r\n });\r\n const identity = walletConfig.identities[identityIndex];\r\n identity.apps = identity.apps || {};\r\n identity.apps[app.origin] = app;\r\n walletConfig.identities[identityIndex] = identity;\r\n this.walletConfig = walletConfig;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n async updateConfigForReuseWarning({ gaiaConfig }) {\r\n assertIsTruthy(this.walletConfig);\r\n this.walletConfig.hideWarningForReusingIdentity = true;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n getSigner() {\r\n return new WalletSigner({ privateKey: this.stacksPrivateKey });\r\n }\r\n}\r\nexport default Wallet;\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/index.d.ts","writeByteOrderMark":false,"text":"import { bip32, BIP32Interface } from 'bitcoinjs-lib';\r\nimport { ChainID } from '@blockstack/stacks-transactions';\r\nimport { IdentityKeyPair } from '../utils';\r\nimport Identity from '../identity';\r\nimport { AllowedKeyEntropyBits } from '../mnemonic';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nimport { WalletSigner } from './signer';\r\nexport interface ConfigApp {\r\n origin: string;\r\n scopes: string[];\r\n lastLoginAt: number;\r\n appIcon: string;\r\n name: string;\r\n}\r\ninterface ConfigIdentity {\r\n username?: string;\r\n address: string;\r\n apps: {\r\n [origin: string]: ConfigApp;\r\n };\r\n}\r\nexport interface WalletConfig {\r\n identities: ConfigIdentity[];\r\n hideWarningForReusingIdentity?: boolean;\r\n}\r\nexport interface ConstructorOptions {\r\n chain: ChainID;\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n encryptedBackupPhrase: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n}\r\nexport declare class Wallet {\r\n chain: ChainID;\r\n encryptedBackupPhrase: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n identityPublicKeychain: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }: ConstructorOptions);\r\n static generateFactory(bitsEntropy: AllowedKeyEntropyBits): (password: string, chain: ChainID) => Promise;\r\n static generate(password: string, chain: ChainID): Promise;\r\n static generateStrong(password: string, chain: ChainID): Promise;\r\n static restore(password: string, seedPhrase: string, chain: ChainID): Promise;\r\n static createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate, }: {\r\n encryptedBackupPhrase: string;\r\n rootNode: BIP32Interface;\r\n chain: ChainID;\r\n identitiesToGenerate?: number;\r\n }): Promise;\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n restoreIdentities({ rootNode, gaiaReadURL, }: {\r\n rootNode: bip32.BIP32Interface;\r\n gaiaReadURL: string;\r\n }): Promise;\r\n createNewIdentity(password: string): Promise;\r\n createGaiaConfig(gaiaHubUrl: string): Promise;\r\n fetchConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n getOrCreateConfig({ gaiaConfig, skipUpload, }: {\r\n gaiaConfig: GaiaHubConfig;\r\n skipUpload?: boolean;\r\n }): Promise;\r\n updateConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n updateConfigWithAuth({ identityIndex, app, gaiaConfig, }: {\r\n identityIndex: number;\r\n app: ConfigApp;\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n updateConfigForReuseWarning({ gaiaConfig }: {\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n getSigner(): WalletSigner;\r\n}\r\nexport default Wallet;\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index a38d6780d..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { decrypt as triplesecDecrypt } from 'triplesec';\r\nimport { decryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport async function decrypt(dataBuffer, password) {\r\n const result = await decryptMnemonic(dataBuffer, password, triplesecDecrypt);\r\n return result;\r\n}\r\n//# sourceMappingURL=decrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/triplesec/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"decrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/decrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAA2B,EAAE,QAAgB;IACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/decrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport declare function decrypt(dataBuffer: Buffer | string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index afbcca7e2..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -{"code":"import IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport { createSha2Hash } from 'blockstack/lib/encryption/sha2Hash';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { parseZoneFile } from 'zone-file';\r\nimport Identity from '../identity';\r\nimport { AssertionError } from 'assert';\r\nimport { Subdomains, registrars } from '../profiles';\r\nconst IDENTITY_KEYCHAIN = 888;\r\nconst BLOCKSTACK_ON_BITCOIN = 0;\r\nexport function getIdentityPrivateKeychain(rootNode) {\r\n return rootNode.deriveHardened(IDENTITY_KEYCHAIN).deriveHardened(BLOCKSTACK_ON_BITCOIN);\r\n}\r\nconst EXTERNAL_ADDRESS = 'EXTERNAL_ADDRESS';\r\nconst CHANGE_ADDRESS = 'CHANGE_ADDRESS';\r\nexport function getBitcoinPrivateKeychain(rootNode) {\r\n const BIP_44_PURPOSE = 44;\r\n const BITCOIN_COIN_TYPE = 0;\r\n const ACCOUNT_INDEX = 0;\r\n return rootNode\r\n .deriveHardened(BIP_44_PURPOSE)\r\n .deriveHardened(BITCOIN_COIN_TYPE)\r\n .deriveHardened(ACCOUNT_INDEX);\r\n}\r\nexport function getBitcoinAddressNode(bitcoinKeychain, addressIndex = 0, chainType = EXTERNAL_ADDRESS) {\r\n let chain = null;\r\n if (chainType === EXTERNAL_ADDRESS) {\r\n chain = 0;\r\n }\r\n else if (chainType === CHANGE_ADDRESS) {\r\n chain = 1;\r\n }\r\n else {\r\n throw new Error('Invalid chain type');\r\n }\r\n return bitcoinKeychain.derive(chain).derive(addressIndex);\r\n}\r\nexport async function getIdentityOwnerAddressNode(identityPrivateKeychain, identityIndex = 0) {\r\n if (identityPrivateKeychain.isNeutered()) {\r\n throw new Error('You need the private key to generate identity addresses');\r\n }\r\n const publicKeyHex = Buffer.from(identityPrivateKeychain.publicKey.toString('hex'));\r\n const sha2Hash = await createSha2Hash();\r\n const saltData = await sha2Hash.digest(publicKeyHex, 'sha256');\r\n const salt = saltData.toString('hex');\r\n return new IdentityAddressOwnerNode(identityPrivateKeychain.deriveHardened(identityIndex), salt);\r\n}\r\nexport function getAddress(node) {\r\n return publicKeyToAddress(node.publicKey);\r\n}\r\nexport function deriveIdentityKeyPair(identityOwnerAddressNode) {\r\n const address = identityOwnerAddressNode.getAddress();\r\n const identityKey = identityOwnerAddressNode.getIdentityKey();\r\n const identityKeyID = identityOwnerAddressNode.getIdentityKeyID();\r\n const appsNode = identityOwnerAddressNode.getAppsNode();\r\n const stxNode = identityOwnerAddressNode.getSTXNode();\r\n const keyPair = {\r\n key: identityKey,\r\n keyID: identityKeyID,\r\n address,\r\n appsNodeKey: appsNode.toBase58(),\r\n stxNodeKey: stxNode.toBase58(),\r\n salt: identityOwnerAddressNode.getSalt(),\r\n };\r\n return keyPair;\r\n}\r\nexport async function getBlockchainIdentities(rootNode, identitiesToGenerate) {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const bitcoinPrivateKeychainNode = getBitcoinPrivateKeychain(rootNode);\r\n const identityPublicKeychainNode = identityPrivateKeychainNode.neutered();\r\n const identityPublicKeychain = identityPublicKeychainNode.toBase58();\r\n const bitcoinPublicKeychainNode = bitcoinPrivateKeychainNode.neutered();\r\n const bitcoinPublicKeychain = bitcoinPublicKeychainNode.toBase58();\r\n const firstBitcoinAddress = getAddress(getBitcoinAddressNode(bitcoinPublicKeychainNode));\r\n const identityAddresses = [];\r\n const identityKeypairs = [];\r\n const identities = [];\r\n // We pre-generate a number of identity addresses so that we\r\n // don't have to prompt the user for the password on each new profile\r\n for (let addressIndex = 0; addressIndex < identitiesToGenerate; addressIndex++) {\r\n const identity = await makeIdentity(rootNode, addressIndex);\r\n identities.push(identity);\r\n identityKeypairs.push(identity.keyPair);\r\n identityAddresses.push(identity.address);\r\n }\r\n return {\r\n identityPublicKeychain,\r\n bitcoinPublicKeychain,\r\n firstBitcoinAddress,\r\n identityAddresses,\r\n identityKeypairs,\r\n identities,\r\n };\r\n}\r\nexport const makeIdentity = async (rootNode, index) => {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const identityOwnerAddressNode = await getIdentityOwnerAddressNode(identityPrivateKeychainNode, index);\r\n const identityKeyPair = deriveIdentityKeyPair(identityOwnerAddressNode);\r\n const identity = new Identity({\r\n keyPair: identityKeyPair,\r\n address: identityKeyPair.address,\r\n usernames: [],\r\n });\r\n return identity;\r\n};\r\nexport function assertIsTruthy(val) {\r\n if (!val) {\r\n throw new AssertionError({ expected: true, actual: val });\r\n }\r\n}\r\nexport var IdentityNameValidityError;\r\n(function (IdentityNameValidityError) {\r\n IdentityNameValidityError[\"MINIMUM_LENGTH\"] = \"error_minimum_length\";\r\n IdentityNameValidityError[\"MAXIMUM_LENGTH\"] = \"error_maximum_length\";\r\n IdentityNameValidityError[\"ILLEGAL_CHARACTER\"] = \"error_illegal_character\";\r\n IdentityNameValidityError[\"UNAVAILABLE\"] = \"error_name_unavailable\";\r\n})(IdentityNameValidityError || (IdentityNameValidityError = {}));\r\nconst containsLegalCharacters = (name) => /^[a-z0-9_]+$/.test(name);\r\nexport const validateSubdomainFormat = (identityName) => {\r\n const nameLength = identityName.length;\r\n if (nameLength < 8) {\r\n return IdentityNameValidityError.MINIMUM_LENGTH;\r\n }\r\n if (nameLength > 37) {\r\n return IdentityNameValidityError.MAXIMUM_LENGTH;\r\n }\r\n if (!containsLegalCharacters(identityName)) {\r\n return IdentityNameValidityError.ILLEGAL_CHARACTER;\r\n }\r\n return null;\r\n};\r\nexport const validateSubdomainAvailability = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const url = `${registrars[subdomain].apiUrl}/${name.toLowerCase()}.${subdomain}`;\r\n const resp = await fetch(url);\r\n const data = await resp.json();\r\n return data;\r\n};\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport const recursiveRestoreIdentities = async ({ rootNode, index = 1, identities = [], }) => {\r\n const identity = await makeIdentity(rootNode, index);\r\n await identity.refresh();\r\n if (identity.defaultUsername) {\r\n identities.push(identity);\r\n return recursiveRestoreIdentities({ rootNode, index: index + 1, identities });\r\n }\r\n return identities;\r\n};\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport const validateSubdomain = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const error = validateSubdomainFormat(name);\r\n if (error) {\r\n return error;\r\n }\r\n try {\r\n const data = await validateSubdomainAvailability(name, subdomain);\r\n if (data.status !== 'available') {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n }\r\n catch (error) {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n return null;\r\n};\r\nexport const getProfileURLFromZoneFile = async (name) => {\r\n const url = `https://core.blockstack.org/v1/names/${name}`;\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const nameInfo = await res.json();\r\n const zone = parseZoneFile(nameInfo.zonefile);\r\n return zone.uri[0].target;\r\n }\r\n return;\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/sha2Hash.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/zone-file/lib/index.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/assert/assert.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/index.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nimport IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport Identity from '../identity';\r\nimport { Subdomains } from '../profiles';\r\nexport declare function getIdentityPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinAddressNode(bitcoinKeychain: BIP32Interface, addressIndex?: number, chainType?: string): BIP32Interface;\r\nexport declare function getIdentityOwnerAddressNode(identityPrivateKeychain: BIP32Interface, identityIndex?: number): Promise;\r\nexport declare function getAddress(node: BIP32Interface): string;\r\nexport interface IdentityKeyPair {\r\n key: string;\r\n keyID: string;\r\n address: string;\r\n appsNodeKey: string;\r\n stxNodeKey: string;\r\n salt: string;\r\n}\r\nexport declare function deriveIdentityKeyPair(identityOwnerAddressNode: IdentityAddressOwnerNode): IdentityKeyPair;\r\nexport declare function getBlockchainIdentities(rootNode: BIP32Interface, identitiesToGenerate: number): Promise<{\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityAddresses: string[];\r\n identityKeypairs: IdentityKeyPair[];\r\n identities: Identity[];\r\n}>;\r\nexport declare const makeIdentity: (rootNode: BIP32Interface, index: number) => Promise;\r\nexport declare function assertIsTruthy(val: any): asserts val is NonNullable;\r\nexport declare enum IdentityNameValidityError {\r\n MINIMUM_LENGTH = \"error_minimum_length\",\r\n MAXIMUM_LENGTH = \"error_maximum_length\",\r\n ILLEGAL_CHARACTER = \"error_illegal_character\",\r\n UNAVAILABLE = \"error_name_unavailable\"\r\n}\r\nexport declare const validateSubdomainFormat: (identityName: string) => IdentityNameValidityError | null;\r\nexport declare const validateSubdomainAvailability: (name: string, subdomain?: Subdomains) => Promise;\r\ninterface RecursiveMakeIdentitiesOptions {\r\n rootNode: BIP32Interface;\r\n index?: number;\r\n identities?: Identity[];\r\n}\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport declare const recursiveRestoreIdentities: ({ rootNode, index, identities, }: RecursiveMakeIdentitiesOptions) => Promise;\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport declare const validateSubdomain: (name: string, subdomain?: Subdomains) => Promise;\r\nexport declare const getProfileURLFromZoneFile: (name: string) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index aaef254cd..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { getLegacyAppNode } from 'blockstack/lib/wallet';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { getAddress } from '../utils';\r\nconst APPS_NODE_INDEX = 0;\r\nconst SIGNING_NODE_INDEX = 1;\r\nconst ENCRYPTION_NODE_INDEX = 2;\r\nconst STX_NODE_INDEX = 6;\r\nexport default class IdentityAddressOwnerNode {\r\n constructor(ownerHdNode, salt) {\r\n this.hdNode = ownerHdNode;\r\n this.salt = salt;\r\n }\r\n getNode() {\r\n return this.hdNode;\r\n }\r\n getSalt() {\r\n return this.salt;\r\n }\r\n getIdentityKey() {\r\n if (!this.hdNode.privateKey) {\r\n throw new Error('Node does not have private key');\r\n }\r\n return this.hdNode.privateKey.toString('hex');\r\n }\r\n getIdentityKeyID() {\r\n return this.hdNode.publicKey.toString('hex');\r\n }\r\n getAppsNode() {\r\n return this.hdNode.deriveHardened(APPS_NODE_INDEX);\r\n }\r\n getAddress() {\r\n return getAddress(this.hdNode);\r\n }\r\n getEncryptionNode() {\r\n return this.hdNode.deriveHardened(ENCRYPTION_NODE_INDEX);\r\n }\r\n getSigningNode() {\r\n return this.hdNode.deriveHardened(SIGNING_NODE_INDEX);\r\n }\r\n getSTXNode() {\r\n return this.hdNode.deriveHardened(STX_NODE_INDEX);\r\n }\r\n getAppNode(appDomain) {\r\n return getLegacyAppNode(this.hdNode, this.salt, appDomain);\r\n }\r\n getAppPrivateKey(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n if (!appNode.privateKey) {\r\n throw new Error('App node does not have private key');\r\n }\r\n return appNode.privateKey.toString('hex');\r\n }\r\n getAppAddress(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n return publicKeyToAddress(appNode.publicKey);\r\n }\r\n}\r\n//# sourceMappingURL=identity-address-owner-node.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/wallet.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts"],"map":"{\"version\":3,\"file\":\"identity-address-owner-node.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/nodes/identity-address-owner-node.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAK3C,YAAY,WAA2B,EAAE,IAAY;QACnD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/nodes/identity-address-owner-node.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nexport default class IdentityAddressOwnerNode {\r\n hdNode: BIP32Interface;\r\n salt: string;\r\n constructor(ownerHdNode: BIP32Interface, salt: string);\r\n getNode(): BIP32Interface;\r\n getSalt(): string;\r\n getIdentityKey(): string;\r\n getIdentityKeyID(): string;\r\n getAppsNode(): BIP32Interface;\r\n getAddress(): string;\r\n getEncryptionNode(): BIP32Interface;\r\n getSigningNode(): BIP32Interface;\r\n getSTXNode(): BIP32Interface;\r\n getAppNode(appDomain: string): BIP32Interface;\r\n getAppPrivateKey(appDomain: string): string;\r\n getAppAddress(appDomain: string): string;\r\n}\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index 1104190d1..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { signProfileToken, wrapProfileToken, connectToGaiaHub, makeProfileZoneFile, } from 'blockstack';\r\nimport { uploadToGaiaHub } from './utils/gaia';\r\nconst PERSON_TYPE = 'Person';\r\nconst CONTEXT = 'http://schema.org';\r\nconst IMAGE_TYPE = 'ImageObject';\r\nexport const DEFAULT_PROFILE = {\r\n '@type': 'Person',\r\n '@context': 'http://schema.org',\r\n};\r\nconst DEFAULT_PROFILE_FILE_NAME = 'profile.json';\r\nexport var Subdomains;\r\n(function (Subdomains) {\r\n Subdomains[\"TEST\"] = \"test-personal.id\";\r\n Subdomains[\"BLOCKSTACK\"] = \"id.blockstack\";\r\n})(Subdomains || (Subdomains = {}));\r\nexport const registrars = {\r\n [Subdomains.TEST]: {\r\n registerUrl: 'https://test-registrar.blockstack.org/register',\r\n apiUrl: 'https://test-registrar.blockstack.org/v1/names',\r\n },\r\n [Subdomains.BLOCKSTACK]: {\r\n registerUrl: 'https://registrar.blockstack.org/register',\r\n apiUrl: 'https://registrar.blockstack.org/v1/names',\r\n },\r\n};\r\nexport function signProfileForUpload(profile, keypair) {\r\n const privateKey = keypair.key;\r\n const publicKey = keypair.keyID;\r\n const token = signProfileToken(profile, privateKey, { publicKey });\r\n const tokenRecord = wrapProfileToken(token);\r\n const tokenRecords = [tokenRecord];\r\n return JSON.stringify(tokenRecords, null, 2);\r\n}\r\nexport async function uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig) {\r\n const identityHubConfig = gaiaHubConfig || (await connectToGaiaHub(gaiaHubUrl, identity.keyPair.key));\r\n const uploadResponse = await uploadToGaiaHub(DEFAULT_PROFILE_FILE_NAME, signedProfileTokenData, identityHubConfig);\r\n return uploadResponse;\r\n}\r\nconst sendUsernameToRegistrar = async ({ username, subdomain, zoneFile, identity, }) => {\r\n const { registerUrl } = registrars[subdomain];\r\n const registrationRequestBody = JSON.stringify({\r\n name: username,\r\n owner_address: identity.address,\r\n zonefile: zoneFile,\r\n });\r\n const requestHeaders = {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n };\r\n const response = await fetch(registerUrl, {\r\n method: 'POST',\r\n headers: requestHeaders,\r\n body: registrationRequestBody,\r\n });\r\n if (!response.ok) {\r\n return Promise.reject({\r\n error: 'Failed to register username',\r\n status: response.status,\r\n });\r\n }\r\n return response.json();\r\n};\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport const registerSubdomain = async ({ identity, gaiaHubUrl, username, subdomain, }) => {\r\n const profile = identity.profile || DEFAULT_PROFILE;\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n const profileUrl = await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData);\r\n const fullUsername = `${username}.${subdomain}`;\r\n const zoneFile = makeProfileZoneFile(fullUsername, profileUrl);\r\n await sendUsernameToRegistrar({\r\n username,\r\n subdomain,\r\n zoneFile,\r\n identity,\r\n });\r\n identity.defaultUsername = fullUsername;\r\n identity.usernames.push(fullUsername);\r\n return identity;\r\n};\r\nexport const signAndUploadProfile = async ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }) => {\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig);\r\n};\r\nexport const fetchProfile = async ({ identity, gaiaUrl, }) => {\r\n try {\r\n const url = await identity.profileUrl(gaiaUrl);\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const json = await res.json();\r\n const { decodedToken } = json[0];\r\n return decodedToken.payload?.claim;\r\n }\r\n if (res.status === 404) {\r\n return null;\r\n }\r\n throw new Error('Network error when fetching profile');\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n};\r\n//# sourceMappingURL=profiles.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"profiles.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/profiles.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/profiles.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils';\r\nimport Identity from './identity';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\ndeclare const PERSON_TYPE = \"Person\";\r\ndeclare const CONTEXT = \"http://schema.org\";\r\ndeclare const IMAGE_TYPE = \"ImageObject\";\r\nexport interface ProfileImage {\r\n '@type': typeof IMAGE_TYPE;\r\n name: string;\r\n contentUrl: string;\r\n}\r\nexport interface Profile {\r\n '@type': typeof PERSON_TYPE;\r\n '@context': typeof CONTEXT;\r\n apps?: {\r\n [origin: string]: string;\r\n };\r\n appsMeta?: {\r\n [origin: string]: {\r\n publicKey: string;\r\n storage: string;\r\n };\r\n };\r\n name?: string;\r\n image?: ProfileImage[];\r\n [key: string]: any;\r\n}\r\nexport declare const DEFAULT_PROFILE: Profile;\r\nexport declare enum Subdomains {\r\n TEST = \"test-personal.id\",\r\n BLOCKSTACK = \"id.blockstack\"\r\n}\r\nexport declare const registrars: {\r\n \"test-personal.id\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n \"id.blockstack\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n};\r\nexport declare function signProfileForUpload(profile: Profile, keypair: IdentityKeyPair): string;\r\nexport declare function uploadProfile(gaiaHubUrl: string, identity: Identity, signedProfileTokenData: string, gaiaHubConfig?: GaiaHubConfig): Promise;\r\ninterface RegisterParams {\r\n identity: Identity;\r\n /** The gaia hub URL to use for profile.json upload */\r\n gaiaHubUrl: string;\r\n /** The username portion of this subdomain, i.e. only the portion of the name before any periods */\r\n username: string;\r\n /** The \"domain\" used for this subdomain. Can be any of the `Subdomains` enum. */\r\n subdomain: Subdomains;\r\n}\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport declare const registerSubdomain: ({ identity, gaiaHubUrl, username, subdomain, }: RegisterParams) => Promise;\r\nexport declare const signAndUploadProfile: ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }: {\r\n profile: Profile;\r\n gaiaHubUrl: string;\r\n identity: Identity;\r\n gaiaHubConfig?: GaiaHubConfig | undefined;\r\n}) => Promise;\r\nexport declare const fetchProfile: ({ identity, gaiaUrl, }: {\r\n identity: Identity;\r\n gaiaUrl: string;\r\n}) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index 7edbdd5e7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { bip32, ECPair } from 'bitcoinjs-lib';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { makeAuthResponse } from 'blockstack/lib/auth/authMessages';\r\nimport { getProfileURLFromZoneFile } from './utils';\r\nimport { makeGaiaAssociationToken, DEFAULT_GAIA_HUB, getHubInfo, connectToGaiaHubWithConfig, } from './utils/gaia';\r\nimport IdentityAddressOwnerNode from './nodes/identity-address-owner-node';\r\nimport { fetchProfile, DEFAULT_PROFILE, signAndUploadProfile } from './profiles';\r\nimport { ecPairToAddress } from 'blockstack';\r\nexport class Identity {\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }) {\r\n this.keyPair = keyPair;\r\n this.address = address;\r\n this.usernames = usernames || [];\r\n this.defaultUsername = defaultUsername;\r\n this.profile = profile;\r\n }\r\n async makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes = [], stxAddress, }) {\r\n const appPrivateKey = this.appPrivateKey(appDomain);\r\n const hubInfo = await getHubInfo(gaiaUrl);\r\n const profileUrl = await this.profileUrl(hubInfo.read_url_prefix);\r\n const profile = (await fetchProfile({ identity: this, gaiaUrl: hubInfo.read_url_prefix })) || DEFAULT_PROFILE;\r\n if (scopes.includes('publish_data')) {\r\n if (!profile.apps) {\r\n profile.apps = {};\r\n }\r\n const challengeSigner = ECPair.fromPrivateKey(Buffer.from(appPrivateKey, 'hex'));\r\n const storageUrl = `${hubInfo.read_url_prefix}${ecPairToAddress(challengeSigner)}/`;\r\n profile.apps[appDomain] = storageUrl;\r\n if (!profile.appsMeta) {\r\n profile.appsMeta = {};\r\n }\r\n profile.appsMeta[appDomain] = {\r\n storage: storageUrl,\r\n publicKey: challengeSigner.publicKey.toString('hex'),\r\n };\r\n const gaiaHubConfig = connectToGaiaHubWithConfig({\r\n hubInfo,\r\n privateKey: this.keyPair.key,\r\n gaiaHubUrl: gaiaUrl,\r\n });\r\n await signAndUploadProfile({ profile, identity: this, gaiaHubUrl: gaiaUrl, gaiaHubConfig });\r\n }\r\n this.profile = profile;\r\n const compressedAppPublicKey = getPublicKeyFromPrivate(appPrivateKey.slice(0, 64));\r\n const associationToken = makeGaiaAssociationToken(this.keyPair.key, compressedAppPublicKey);\r\n return makeAuthResponse(this.keyPair.key, {\r\n ...(this.profile || {}),\r\n stxAddress,\r\n }, this.defaultUsername || '', {\r\n profileUrl,\r\n }, undefined, appPrivateKey, undefined, transitPublicKey, gaiaUrl, undefined, associationToken);\r\n }\r\n appPrivateKey(appDomain) {\r\n const { salt, appsNodeKey } = this.keyPair;\r\n const appsNode = new IdentityAddressOwnerNode(bip32.fromBase58(appsNodeKey), salt);\r\n return appsNode.getAppPrivateKey(appDomain);\r\n }\r\n async profileUrl(gaiaUrl) {\r\n if (this.defaultUsername) {\r\n try {\r\n const url = await getProfileURLFromZoneFile(this.defaultUsername);\r\n if (url)\r\n return url;\r\n }\r\n catch (error) {\r\n if (process.env.NODE_ENV !== 'test') {\r\n console.warn('Error fetching profile URL from zone file:', error);\r\n }\r\n }\r\n }\r\n return `${gaiaUrl}${this.address}/profile.json`;\r\n }\r\n async fetchNames() {\r\n const getNamesUrl = `https://core.blockstack.org/v1/addresses/bitcoin/${this.address}`;\r\n const res = await fetch(getNamesUrl);\r\n const data = await res.json();\r\n const { names } = data;\r\n return names;\r\n }\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n async refresh(opts = { gaiaUrl: DEFAULT_GAIA_HUB }) {\r\n try {\r\n const names = await this.fetchNames();\r\n if (names) {\r\n if (names[0] && !this.defaultUsername) {\r\n this.defaultUsername = names[0];\r\n }\r\n names.forEach(name => {\r\n const existingIndex = this.usernames.findIndex(u => u === name);\r\n if (existingIndex === -1) {\r\n this.usernames.push(name);\r\n }\r\n });\r\n }\r\n const profile = await fetchProfile({ identity: this, gaiaUrl: opts.gaiaUrl });\r\n if (profile) {\r\n this.profile = profile;\r\n }\r\n return;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n }\r\n}\r\nexport default Identity;\r\n//# sourceMappingURL=identity.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/auth/authMessages.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"identity.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/identity.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/identity.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils/index';\r\nimport { Profile } from './profiles';\r\ninterface IdentityConstructorOptions {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n usernames?: string[];\r\n defaultUsername?: string;\r\n profile?: Profile;\r\n}\r\ninterface RefreshOptions {\r\n gaiaUrl: string;\r\n}\r\nexport declare class Identity {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n defaultUsername?: string;\r\n usernames: string[];\r\n profile?: Profile;\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }: IdentityConstructorOptions);\r\n makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes, stxAddress, }: {\r\n appDomain: string;\r\n gaiaUrl: string;\r\n transitPublicKey: string;\r\n scopes?: string[];\r\n stxAddress?: string;\r\n }): Promise;\r\n appPrivateKey(appDomain: string): string;\r\n profileUrl(gaiaUrl: string): Promise;\r\n fetchNames(): Promise;\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n refresh(opts?: RefreshOptions): Promise;\r\n}\r\nexport default Identity;\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index d1e50fabe..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { makeContractCall, makeContractDeploy, StacksTestnet, makeSTXTokenTransfer, getAddressFromPrivateKey, } from '@blockstack/stacks-transactions';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { assertIsTruthy } from '../utils';\r\nimport BN from 'bn.js';\r\nexport class WalletSigner {\r\n constructor({ privateKey }) {\r\n this.privateKey = privateKey;\r\n }\r\n getSTXAddress(version) {\r\n return getAddressFromPrivateKey(this.getSTXPrivateKey(), version);\r\n }\r\n getSTXPrivateKey() {\r\n const node = bip32.fromBase58(this.privateKey);\r\n assertIsTruthy(node.privateKey);\r\n return node.privateKey;\r\n }\r\n getNetwork() {\r\n const network = new StacksTestnet();\r\n network.coreApiUrl = 'https://sidecar.staging.blockstack.xyz';\r\n return network;\r\n }\r\n async fetchAccount({ version, rpcClient, }) {\r\n const address = this.getSTXAddress(version);\r\n const account = await rpcClient.fetchAccount(address);\r\n return account;\r\n }\r\n async signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractCall({\r\n contractAddress,\r\n contractName,\r\n functionName,\r\n functionArgs,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n nonce: new BN(nonce),\r\n network: this.getNetwork(),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractDeploy({\r\n contractName,\r\n codeBody: codeBody,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeSTXTokenTransfer({\r\n recipient,\r\n amount: new BN(amount),\r\n memo,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n}\r\n//# sourceMappingURL=signer.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/rpc-client/dist/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/bn.js/index.d.ts"],"map":"{\"version\":3,\"file\":\"signer.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/signer.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/signer.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { TransactionVersion, ClarityValue, StacksTestnet, PostConditionMode, PostCondition, StacksNetwork } from '@blockstack/stacks-transactions';\r\nimport RPCClient from '@blockstack/rpc-client';\r\ninterface ContractCallOptions {\r\n contractName: string;\r\n contractAddress: string;\r\n functionName: string;\r\n functionArgs: ClarityValue[];\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface ContractDeployOptions {\r\n contractName: string;\r\n codeBody: string;\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface STXTransferOptions {\r\n recipient: string;\r\n amount: string;\r\n memo?: string;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\nexport declare class WalletSigner {\r\n privateKey: string;\r\n constructor({ privateKey }: {\r\n privateKey: string;\r\n });\r\n getSTXAddress(version: TransactionVersion): string;\r\n getSTXPrivateKey(): Buffer;\r\n getNetwork(): StacksTestnet;\r\n fetchAccount({ version, rpcClient, }: {\r\n version: TransactionVersion;\r\n rpcClient: RPCClient;\r\n }): Promise;\r\n signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }: ContractCallOptions): Promise;\r\n signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }: ContractDeployOptions): Promise;\r\n signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }: STXTransferOptions): Promise;\r\n}\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index 796e4be36..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { TokenSigner } from 'jsontokens';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { ecPairToAddress, hexStringToECPair } from 'blockstack';\r\nexport const DEFAULT_GAIA_HUB = 'https://gaia.blockstack.org/hub/';\r\nexport const getHubInfo = async (hubUrl) => {\r\n const response = await fetch(`${hubUrl}/hub_info`);\r\n const data = await response.json();\r\n return data;\r\n};\r\nexport const getHubPrefix = async (hubUrl) => {\r\n const { read_url_prefix } = await getHubInfo(hubUrl);\r\n return read_url_prefix;\r\n};\r\nexport const makeGaiaAssociationToken = (secretKeyHex, childPublicKeyHex) => {\r\n const LIFETIME_SECONDS = 365 * 24 * 3600;\r\n const signerKeyHex = secretKeyHex.slice(0, 64);\r\n const compressedPublicKeyHex = getPublicKeyFromPrivate(signerKeyHex);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n childToAssociate: childPublicKeyHex,\r\n iss: compressedPublicKeyHex,\r\n exp: LIFETIME_SECONDS + new Date().getTime() / 1000,\r\n iat: Date.now() / 1000,\r\n salt,\r\n };\r\n const tokenSigner = new TokenSigner('ES256K', signerKeyHex);\r\n const token = tokenSigner.sign(payload);\r\n return token;\r\n};\r\nexport const connectToGaiaHubWithConfig = ({ hubInfo, privateKey, gaiaHubUrl, }) => {\r\n const readURL = hubInfo.read_url_prefix;\r\n const token = makeGaiaAuthToken({ hubInfo, privateKey, gaiaHubUrl });\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token,\r\n server: gaiaHubUrl,\r\n };\r\n};\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport const makeReadOnlyGaiaConfig = ({ readURL, privateKey, }) => {\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token: 'not_used',\r\n server: 'not_used',\r\n };\r\n};\r\nconst makeGaiaAuthToken = ({ hubInfo, privateKey, gaiaHubUrl }) => {\r\n const challengeText = hubInfo.challenge_text;\r\n const iss = getPublicKeyFromPrivate(privateKey);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n gaiaHubUrl,\r\n iss,\r\n salt,\r\n };\r\n if (challengeText) {\r\n payload.gaiaChallenge = challengeText;\r\n }\r\n const token = new TokenSigner('ES256K', privateKey).sign(payload);\r\n return `v1:${token}`;\r\n};\r\nexport const uploadToGaiaHub = async (filename, contents, hubConfig) => {\r\n const contentType = 'application/json';\r\n const response = await fetch(`${hubConfig.server}/store/${hubConfig.address}/${filename}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': contentType,\r\n Authorization: `bearer ${hubConfig.token}`,\r\n },\r\n body: contents,\r\n referrer: 'no-referrer',\r\n referrerPolicy: 'no-referrer',\r\n });\r\n const { publicURL } = await response.json();\r\n return publicURL;\r\n};\r\n//# sourceMappingURL=gaia.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/jsontokens/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"gaia.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/gaia.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/gaia.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nexport declare const DEFAULT_GAIA_HUB = \"https://gaia.blockstack.org/hub/\";\r\ninterface HubInfo {\r\n challenge_text?: string;\r\n read_url_prefix: string;\r\n}\r\nexport declare const getHubInfo: (hubUrl: string) => Promise;\r\nexport declare const getHubPrefix: (hubUrl: string) => Promise;\r\nexport declare const makeGaiaAssociationToken: (secretKeyHex: string, childPublicKeyHex: string) => string;\r\ninterface ConnectToGaiaOptions {\r\n hubInfo: HubInfo;\r\n privateKey: string;\r\n gaiaHubUrl: string;\r\n}\r\nexport declare const connectToGaiaHubWithConfig: ({ hubInfo, privateKey, gaiaHubUrl, }: ConnectToGaiaOptions) => GaiaHubConfig;\r\ninterface ReadOnlyGaiaConfigOptions {\r\n readURL: string;\r\n privateKey: string;\r\n}\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport declare const makeReadOnlyGaiaConfig: ({ readURL, privateKey, }: ReadOnlyGaiaConfigOptions) => GaiaHubConfig;\r\nexport declare const uploadToGaiaHub: (filename: string, contents: Blob | Buffer | ArrayBufferView | string, hubConfig: GaiaHubConfig) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/018dd99255a534837916033f04b396b3c5b771ad b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/018dd99255a534837916033f04b396b3c5b771ad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/061a2a662a532413fb382823dd2453c8537b4338 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/061a2a662a532413fb382823dd2453c8537b4338 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/314c9c585547e1ee805fe1597f307af31b72559c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/314c9c585547e1ee805fe1597f307af31b72559c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/420b2f97ccbc239de9691385af956534d4545c2c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/420b2f97ccbc239de9691385af956534d4545c2c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/9ed2612615091d088e52b934dbdc159280dc237c b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/9ed2612615091d088e52b934dbdc159280dc237c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/fae54f93545510c8db4ed307ea8397a19112446a b/packages/keychain/.rts2_cache_esm/rpt2_a272a6c535598ab7b17b094cebbf6a630f0a4a2b/types/cache/fae54f93545510c8db4ed307ea8397a19112446a deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index 53380f7c1..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { ChainID, getAddressFromPrivateKey, TransactionVersion, } from '@blockstack/stacks-transactions';\r\nimport { ECPair } from 'bitcoinjs-lib';\r\nimport { ecPairToHexString } from 'blockstack';\r\nconst networkDerivationPath = `m/44'/5757'/0'/0/0`;\r\nexport const derivationPaths = {\r\n [ChainID.Mainnet]: networkDerivationPath,\r\n [ChainID.Testnet]: networkDerivationPath,\r\n};\r\nexport function getDerivationPath(chain) {\r\n return derivationPaths[chain];\r\n}\r\nexport function deriveStxAddressChain(chain) {\r\n return (rootNode) => {\r\n const childKey = rootNode.derivePath(getDerivationPath(chain));\r\n if (!childKey.privateKey) {\r\n throw new Error('Unable to derive private key from `rootNode`, bip32 master keychain');\r\n }\r\n const ecPair = ECPair.fromPrivateKey(childKey.privateKey);\r\n const privateKey = ecPairToHexString(ecPair);\r\n const txVersion = chain === ChainID.Mainnet ? TransactionVersion.Mainnet : TransactionVersion.Testnet;\r\n return {\r\n childKey,\r\n address: getAddressFromPrivateKey(privateKey, txVersion),\r\n privateKey,\r\n };\r\n };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/address-derivation/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAkB,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;IACxC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;CACzC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CAAC,QAAwB,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GACb,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACtF,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC;YACxD,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/address-derivation/index.d.ts","writeByteOrderMark":false,"text":"import { ChainID } from '@blockstack/stacks-transactions';\r\nimport { BIP32Interface } from 'bitcoinjs-lib';\r\nexport declare const derivationPaths: {\r\n 1: string;\r\n 2147483648: string;\r\n};\r\nexport declare function getDerivationPath(chain: ChainID): string;\r\nexport declare function deriveStxAddressChain(chain: ChainID): (rootNode: BIP32Interface) => {\r\n childKey: BIP32Interface;\r\n address: string;\r\n privateKey: string;\r\n};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index 0c4968ffd..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { generateMnemonic as generateBip39Mnemonic, mnemonicToSeed } from 'bip39';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { encrypt } from '../encryption/encrypt';\r\nimport { encryptMnemonic } from 'blockstack';\r\nexport async function generateMnemonicRootKeychain(entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return {\r\n rootNode,\r\n plaintextMnemonic,\r\n };\r\n}\r\nexport async function generateEncryptedMnemonicRootKeychain(password, entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n const ciphertextBuffer = await encrypt(plaintextMnemonic, password);\r\n const encryptedMnemonicPhrase = ciphertextBuffer.toString('hex');\r\n return {\r\n rootNode,\r\n encryptedMnemonicPhrase,\r\n };\r\n}\r\nexport async function deriveRootKeychainFromMnemonic(plaintextMnemonic) {\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return rootNode;\r\n}\r\nexport async function encryptMnemonicFormatted(plaintextMnemonic, password) {\r\n const encryptedMnemonic = await encryptMnemonic(plaintextMnemonic, password);\r\n const encryptedMnemonicHex = encryptedMnemonic.toString('hex');\r\n return { encryptedMnemonic, encryptedMnemonicHex };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/mnemonic/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAA8B;IAC/E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO;QACL,QAAQ;QACR,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,QAAgB,EAChB,OAA8B;IAE9B,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO;QACL,QAAQ;QACR,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,iBAAyB;IAC5E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,iBAAyB,EAAE,QAAgB;IACxF,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACrD,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/mnemonic/index.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { bip32 } from 'bitcoinjs-lib';\r\nexport declare type AllowedKeyEntropyBits = 128 | 256;\r\nexport declare function generateMnemonicRootKeychain(entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n plaintextMnemonic: string;\r\n}>;\r\nexport declare function generateEncryptedMnemonicRootKeychain(password: string, entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n encryptedMnemonicPhrase: string;\r\n}>;\r\nexport declare function deriveRootKeychainFromMnemonic(plaintextMnemonic: string): Promise;\r\nexport declare function encryptMnemonicFormatted(plaintextMnemonic: string, password: string): Promise<{\r\n encryptedMnemonic: Buffer;\r\n encryptedMnemonicHex: string;\r\n}>;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index e617263c8..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { encryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport async function encrypt(phrase, password) {\r\n const result = await encryptMnemonic(phrase, password);\r\n return result;\r\n}\r\n//# sourceMappingURL=encrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"encrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/encrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;KAKK;AACL,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/encrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport declare function encrypt(phrase: string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index 93330eccf..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\nexport default {\r\n Wallet,\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,eAAe;IACb,MAAM;CACP,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/index.d.ts","writeByteOrderMark":false,"text":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\ndeclare const _default: {\r\n Wallet: typeof Wallet;\r\n};\r\nexport default _default;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index 673790086..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { mnemonicToSeed } from 'bip39';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { getBlockchainIdentities, makeIdentity, assertIsTruthy, recursiveRestoreIdentities, } from '../utils';\r\nimport Identity from '../identity';\r\nimport { decrypt } from '../encryption/decrypt';\r\nimport { connectToGaiaHub, encryptContent, getPublicKeyFromPrivate, decryptContent, } from 'blockstack';\r\nimport { generateEncryptedMnemonicRootKeychain, deriveRootKeychainFromMnemonic, encryptMnemonicFormatted, } from '../mnemonic';\r\nimport { deriveStxAddressChain } from '../address-derivation';\r\nimport { makeReadOnlyGaiaConfig, DEFAULT_GAIA_HUB, uploadToGaiaHub } from '../utils/gaia';\r\nimport { WalletSigner } from './signer';\r\nconst CONFIG_INDEX = 45;\r\nexport class Wallet {\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }) {\r\n this.chain = chain;\r\n this.encryptedBackupPhrase = encryptedBackupPhrase;\r\n this.identityPublicKeychain = identityPublicKeychain;\r\n this.bitcoinPublicKeychain = bitcoinPublicKeychain;\r\n this.firstBitcoinAddress = firstBitcoinAddress;\r\n this.identityKeypairs = identityKeypairs;\r\n this.identityAddresses = identityAddresses;\r\n this.identities = identities.map(identity => new Identity(identity));\r\n this.configPrivateKey = configPrivateKey;\r\n this.stacksPrivateKey = stacksPrivateKey;\r\n this.walletConfig = walletConfig;\r\n }\r\n static generateFactory(bitsEntropy) {\r\n return async (password, chain) => {\r\n const { rootNode, encryptedMnemonicPhrase } = await generateEncryptedMnemonicRootKeychain(password, bitsEntropy);\r\n return this.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicPhrase,\r\n rootNode,\r\n chain,\r\n });\r\n };\r\n }\r\n static async generate(password, chain) {\r\n return await this.generateFactory(128)(password, chain);\r\n }\r\n static async generateStrong(password, chain) {\r\n return await this.generateFactory(256)(password, chain);\r\n }\r\n static async restore(password, seedPhrase, chain) {\r\n const rootNode = await deriveRootKeychainFromMnemonic(seedPhrase);\r\n const { encryptedMnemonicHex } = await encryptMnemonicFormatted(seedPhrase, password);\r\n const wallet = await Wallet.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicHex,\r\n rootNode,\r\n chain,\r\n });\r\n return await wallet.restoreIdentities({ rootNode, gaiaReadURL: DEFAULT_GAIA_HUB });\r\n }\r\n static async createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate = 1, }) {\r\n const derivedIdentitiesKey = rootNode.deriveHardened(CONFIG_INDEX).privateKey;\r\n if (!derivedIdentitiesKey) {\r\n throw new TypeError('Unable to derive config key for wallet identities');\r\n }\r\n const configPrivateKey = derivedIdentitiesKey.toString('hex');\r\n const { childKey: stxAddressKeychain } = deriveStxAddressChain(chain)(rootNode);\r\n const walletAttrs = await getBlockchainIdentities(rootNode, identitiesToGenerate);\r\n return new Wallet({\r\n ...walletAttrs,\r\n chain,\r\n configPrivateKey,\r\n stacksPrivateKey: stxAddressKeychain.toBase58(),\r\n encryptedBackupPhrase,\r\n });\r\n }\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n async restoreIdentities({ rootNode, gaiaReadURL, }) {\r\n const gaiaConfig = makeReadOnlyGaiaConfig({\r\n readURL: gaiaReadURL,\r\n privateKey: this.configPrivateKey,\r\n });\r\n await this.fetchConfig(gaiaConfig);\r\n if (this.walletConfig) {\r\n const getIdentities = this.walletConfig.identities.map(async (identityConfig, index) => {\r\n let identity = this.identities[index];\r\n if (!identity) {\r\n identity = await makeIdentity(rootNode, index);\r\n }\r\n if (identityConfig.username) {\r\n identity.usernames = [identityConfig.username];\r\n identity.defaultUsername = identityConfig.username;\r\n }\r\n return identity;\r\n });\r\n const identities = await Promise.all(getIdentities);\r\n this.identities = identities;\r\n return this;\r\n }\r\n await this.identities[0].refresh();\r\n const newIdentities = await recursiveRestoreIdentities({ rootNode });\r\n this.identities = this.identities.concat(newIdentities);\r\n return this;\r\n }\r\n async createNewIdentity(password) {\r\n const plainTextBuffer = await decrypt(Buffer.from(this.encryptedBackupPhrase, 'hex'), password);\r\n const seed = await mnemonicToSeed(plainTextBuffer);\r\n const rootNode = bip32.fromSeed(seed);\r\n const index = this.identities.length;\r\n const identity = await makeIdentity(rootNode, index);\r\n this.identities.push(identity);\r\n this.identityKeypairs.push(identity.keyPair);\r\n this.identityAddresses.push(identity.address);\r\n return identity;\r\n }\r\n async createGaiaConfig(gaiaHubUrl) {\r\n return connectToGaiaHub(gaiaHubUrl, this.configPrivateKey);\r\n }\r\n async fetchConfig(gaiaConfig) {\r\n try {\r\n const response = await fetch(`${gaiaConfig.url_prefix}${gaiaConfig.address}/wallet-config.json`);\r\n const encrypted = await response.text();\r\n const configJSON = (await decryptContent(encrypted, {\r\n privateKey: this.configPrivateKey,\r\n }));\r\n const config = JSON.parse(configJSON);\r\n this.walletConfig = config;\r\n return config;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n }\r\n async getOrCreateConfig({ gaiaConfig, skipUpload, }) {\r\n if (this.walletConfig) {\r\n return this.walletConfig;\r\n }\r\n const config = await this.fetchConfig(gaiaConfig);\r\n if (config) {\r\n return config;\r\n }\r\n const newConfig = {\r\n identities: this.identities.map(i => ({\r\n username: i.defaultUsername,\r\n address: i.address,\r\n apps: {},\r\n })),\r\n };\r\n this.walletConfig = newConfig;\r\n if (!skipUpload) {\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n return newConfig;\r\n }\r\n async updateConfig(gaiaConfig) {\r\n const publicKey = getPublicKeyFromPrivate(this.configPrivateKey);\r\n const encrypted = await encryptContent(JSON.stringify(this.walletConfig), { publicKey });\r\n await uploadToGaiaHub('wallet-config.json', encrypted, gaiaConfig);\r\n }\r\n async updateConfigWithAuth({ identityIndex, app, gaiaConfig, }) {\r\n const { walletConfig } = this;\r\n assertIsTruthy(walletConfig);\r\n this.identities.forEach((identity, index) => {\r\n const configIdentity = walletConfig.identities[index];\r\n if (configIdentity) {\r\n configIdentity.apps = configIdentity.apps || {};\r\n configIdentity.username = identity.defaultUsername;\r\n configIdentity.address = identity.address;\r\n walletConfig.identities[index] = configIdentity;\r\n }\r\n else {\r\n this.walletConfig?.identities.push({\r\n username: identity.defaultUsername,\r\n address: identity.address,\r\n apps: {},\r\n });\r\n }\r\n });\r\n const identity = walletConfig.identities[identityIndex];\r\n identity.apps = identity.apps || {};\r\n identity.apps[app.origin] = app;\r\n walletConfig.identities[identityIndex] = identity;\r\n this.walletConfig = walletConfig;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n async updateConfigForReuseWarning({ gaiaConfig }) {\r\n assertIsTruthy(this.walletConfig);\r\n this.walletConfig.hideWarningForReusingIdentity = true;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n getSigner() {\r\n return new WalletSigner({ privateKey: this.stacksPrivateKey });\r\n }\r\n}\r\nexport default Wallet;\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/index.d.ts","writeByteOrderMark":false,"text":"import { bip32, BIP32Interface } from 'bitcoinjs-lib';\r\nimport { ChainID } from '@blockstack/stacks-transactions';\r\nimport { IdentityKeyPair } from '../utils';\r\nimport Identity from '../identity';\r\nimport { AllowedKeyEntropyBits } from '../mnemonic';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nimport { WalletSigner } from './signer';\r\nexport interface ConfigApp {\r\n origin: string;\r\n scopes: string[];\r\n lastLoginAt: number;\r\n appIcon: string;\r\n name: string;\r\n}\r\ninterface ConfigIdentity {\r\n username?: string;\r\n address: string;\r\n apps: {\r\n [origin: string]: ConfigApp;\r\n };\r\n}\r\nexport interface WalletConfig {\r\n identities: ConfigIdentity[];\r\n hideWarningForReusingIdentity?: boolean;\r\n}\r\nexport interface ConstructorOptions {\r\n chain: ChainID;\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n encryptedBackupPhrase: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n}\r\nexport declare class Wallet {\r\n chain: ChainID;\r\n encryptedBackupPhrase: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n identityPublicKeychain: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }: ConstructorOptions);\r\n static generateFactory(bitsEntropy: AllowedKeyEntropyBits): (password: string, chain: ChainID) => Promise;\r\n static generate(password: string, chain: ChainID): Promise;\r\n static generateStrong(password: string, chain: ChainID): Promise;\r\n static restore(password: string, seedPhrase: string, chain: ChainID): Promise;\r\n static createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate, }: {\r\n encryptedBackupPhrase: string;\r\n rootNode: BIP32Interface;\r\n chain: ChainID;\r\n identitiesToGenerate?: number;\r\n }): Promise;\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n restoreIdentities({ rootNode, gaiaReadURL, }: {\r\n rootNode: bip32.BIP32Interface;\r\n gaiaReadURL: string;\r\n }): Promise;\r\n createNewIdentity(password: string): Promise;\r\n createGaiaConfig(gaiaHubUrl: string): Promise;\r\n fetchConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n getOrCreateConfig({ gaiaConfig, skipUpload, }: {\r\n gaiaConfig: GaiaHubConfig;\r\n skipUpload?: boolean;\r\n }): Promise;\r\n updateConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n updateConfigWithAuth({ identityIndex, app, gaiaConfig, }: {\r\n identityIndex: number;\r\n app: ConfigApp;\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n updateConfigForReuseWarning({ gaiaConfig }: {\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n getSigner(): WalletSigner;\r\n}\r\nexport default Wallet;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index a38d6780d..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { decrypt as triplesecDecrypt } from 'triplesec';\r\nimport { decryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport async function decrypt(dataBuffer, password) {\r\n const result = await decryptMnemonic(dataBuffer, password, triplesecDecrypt);\r\n return result;\r\n}\r\n//# sourceMappingURL=decrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/triplesec/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"decrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/decrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAA2B,EAAE,QAAgB;IACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/decrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport declare function decrypt(dataBuffer: Buffer | string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index afbcca7e2..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -{"code":"import IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport { createSha2Hash } from 'blockstack/lib/encryption/sha2Hash';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { parseZoneFile } from 'zone-file';\r\nimport Identity from '../identity';\r\nimport { AssertionError } from 'assert';\r\nimport { Subdomains, registrars } from '../profiles';\r\nconst IDENTITY_KEYCHAIN = 888;\r\nconst BLOCKSTACK_ON_BITCOIN = 0;\r\nexport function getIdentityPrivateKeychain(rootNode) {\r\n return rootNode.deriveHardened(IDENTITY_KEYCHAIN).deriveHardened(BLOCKSTACK_ON_BITCOIN);\r\n}\r\nconst EXTERNAL_ADDRESS = 'EXTERNAL_ADDRESS';\r\nconst CHANGE_ADDRESS = 'CHANGE_ADDRESS';\r\nexport function getBitcoinPrivateKeychain(rootNode) {\r\n const BIP_44_PURPOSE = 44;\r\n const BITCOIN_COIN_TYPE = 0;\r\n const ACCOUNT_INDEX = 0;\r\n return rootNode\r\n .deriveHardened(BIP_44_PURPOSE)\r\n .deriveHardened(BITCOIN_COIN_TYPE)\r\n .deriveHardened(ACCOUNT_INDEX);\r\n}\r\nexport function getBitcoinAddressNode(bitcoinKeychain, addressIndex = 0, chainType = EXTERNAL_ADDRESS) {\r\n let chain = null;\r\n if (chainType === EXTERNAL_ADDRESS) {\r\n chain = 0;\r\n }\r\n else if (chainType === CHANGE_ADDRESS) {\r\n chain = 1;\r\n }\r\n else {\r\n throw new Error('Invalid chain type');\r\n }\r\n return bitcoinKeychain.derive(chain).derive(addressIndex);\r\n}\r\nexport async function getIdentityOwnerAddressNode(identityPrivateKeychain, identityIndex = 0) {\r\n if (identityPrivateKeychain.isNeutered()) {\r\n throw new Error('You need the private key to generate identity addresses');\r\n }\r\n const publicKeyHex = Buffer.from(identityPrivateKeychain.publicKey.toString('hex'));\r\n const sha2Hash = await createSha2Hash();\r\n const saltData = await sha2Hash.digest(publicKeyHex, 'sha256');\r\n const salt = saltData.toString('hex');\r\n return new IdentityAddressOwnerNode(identityPrivateKeychain.deriveHardened(identityIndex), salt);\r\n}\r\nexport function getAddress(node) {\r\n return publicKeyToAddress(node.publicKey);\r\n}\r\nexport function deriveIdentityKeyPair(identityOwnerAddressNode) {\r\n const address = identityOwnerAddressNode.getAddress();\r\n const identityKey = identityOwnerAddressNode.getIdentityKey();\r\n const identityKeyID = identityOwnerAddressNode.getIdentityKeyID();\r\n const appsNode = identityOwnerAddressNode.getAppsNode();\r\n const stxNode = identityOwnerAddressNode.getSTXNode();\r\n const keyPair = {\r\n key: identityKey,\r\n keyID: identityKeyID,\r\n address,\r\n appsNodeKey: appsNode.toBase58(),\r\n stxNodeKey: stxNode.toBase58(),\r\n salt: identityOwnerAddressNode.getSalt(),\r\n };\r\n return keyPair;\r\n}\r\nexport async function getBlockchainIdentities(rootNode, identitiesToGenerate) {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const bitcoinPrivateKeychainNode = getBitcoinPrivateKeychain(rootNode);\r\n const identityPublicKeychainNode = identityPrivateKeychainNode.neutered();\r\n const identityPublicKeychain = identityPublicKeychainNode.toBase58();\r\n const bitcoinPublicKeychainNode = bitcoinPrivateKeychainNode.neutered();\r\n const bitcoinPublicKeychain = bitcoinPublicKeychainNode.toBase58();\r\n const firstBitcoinAddress = getAddress(getBitcoinAddressNode(bitcoinPublicKeychainNode));\r\n const identityAddresses = [];\r\n const identityKeypairs = [];\r\n const identities = [];\r\n // We pre-generate a number of identity addresses so that we\r\n // don't have to prompt the user for the password on each new profile\r\n for (let addressIndex = 0; addressIndex < identitiesToGenerate; addressIndex++) {\r\n const identity = await makeIdentity(rootNode, addressIndex);\r\n identities.push(identity);\r\n identityKeypairs.push(identity.keyPair);\r\n identityAddresses.push(identity.address);\r\n }\r\n return {\r\n identityPublicKeychain,\r\n bitcoinPublicKeychain,\r\n firstBitcoinAddress,\r\n identityAddresses,\r\n identityKeypairs,\r\n identities,\r\n };\r\n}\r\nexport const makeIdentity = async (rootNode, index) => {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const identityOwnerAddressNode = await getIdentityOwnerAddressNode(identityPrivateKeychainNode, index);\r\n const identityKeyPair = deriveIdentityKeyPair(identityOwnerAddressNode);\r\n const identity = new Identity({\r\n keyPair: identityKeyPair,\r\n address: identityKeyPair.address,\r\n usernames: [],\r\n });\r\n return identity;\r\n};\r\nexport function assertIsTruthy(val) {\r\n if (!val) {\r\n throw new AssertionError({ expected: true, actual: val });\r\n }\r\n}\r\nexport var IdentityNameValidityError;\r\n(function (IdentityNameValidityError) {\r\n IdentityNameValidityError[\"MINIMUM_LENGTH\"] = \"error_minimum_length\";\r\n IdentityNameValidityError[\"MAXIMUM_LENGTH\"] = \"error_maximum_length\";\r\n IdentityNameValidityError[\"ILLEGAL_CHARACTER\"] = \"error_illegal_character\";\r\n IdentityNameValidityError[\"UNAVAILABLE\"] = \"error_name_unavailable\";\r\n})(IdentityNameValidityError || (IdentityNameValidityError = {}));\r\nconst containsLegalCharacters = (name) => /^[a-z0-9_]+$/.test(name);\r\nexport const validateSubdomainFormat = (identityName) => {\r\n const nameLength = identityName.length;\r\n if (nameLength < 8) {\r\n return IdentityNameValidityError.MINIMUM_LENGTH;\r\n }\r\n if (nameLength > 37) {\r\n return IdentityNameValidityError.MAXIMUM_LENGTH;\r\n }\r\n if (!containsLegalCharacters(identityName)) {\r\n return IdentityNameValidityError.ILLEGAL_CHARACTER;\r\n }\r\n return null;\r\n};\r\nexport const validateSubdomainAvailability = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const url = `${registrars[subdomain].apiUrl}/${name.toLowerCase()}.${subdomain}`;\r\n const resp = await fetch(url);\r\n const data = await resp.json();\r\n return data;\r\n};\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport const recursiveRestoreIdentities = async ({ rootNode, index = 1, identities = [], }) => {\r\n const identity = await makeIdentity(rootNode, index);\r\n await identity.refresh();\r\n if (identity.defaultUsername) {\r\n identities.push(identity);\r\n return recursiveRestoreIdentities({ rootNode, index: index + 1, identities });\r\n }\r\n return identities;\r\n};\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport const validateSubdomain = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const error = validateSubdomainFormat(name);\r\n if (error) {\r\n return error;\r\n }\r\n try {\r\n const data = await validateSubdomainAvailability(name, subdomain);\r\n if (data.status !== 'available') {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n }\r\n catch (error) {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n return null;\r\n};\r\nexport const getProfileURLFromZoneFile = async (name) => {\r\n const url = `https://core.blockstack.org/v1/names/${name}`;\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const nameInfo = await res.json();\r\n const zone = parseZoneFile(nameInfo.zonefile);\r\n return zone.uri[0].target;\r\n }\r\n return;\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/sha2Hash.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/zone-file/lib/index.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/assert/assert.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/index.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nimport IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport Identity from '../identity';\r\nimport { Subdomains } from '../profiles';\r\nexport declare function getIdentityPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinAddressNode(bitcoinKeychain: BIP32Interface, addressIndex?: number, chainType?: string): BIP32Interface;\r\nexport declare function getIdentityOwnerAddressNode(identityPrivateKeychain: BIP32Interface, identityIndex?: number): Promise;\r\nexport declare function getAddress(node: BIP32Interface): string;\r\nexport interface IdentityKeyPair {\r\n key: string;\r\n keyID: string;\r\n address: string;\r\n appsNodeKey: string;\r\n stxNodeKey: string;\r\n salt: string;\r\n}\r\nexport declare function deriveIdentityKeyPair(identityOwnerAddressNode: IdentityAddressOwnerNode): IdentityKeyPair;\r\nexport declare function getBlockchainIdentities(rootNode: BIP32Interface, identitiesToGenerate: number): Promise<{\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityAddresses: string[];\r\n identityKeypairs: IdentityKeyPair[];\r\n identities: Identity[];\r\n}>;\r\nexport declare const makeIdentity: (rootNode: BIP32Interface, index: number) => Promise;\r\nexport declare function assertIsTruthy(val: any): asserts val is NonNullable;\r\nexport declare enum IdentityNameValidityError {\r\n MINIMUM_LENGTH = \"error_minimum_length\",\r\n MAXIMUM_LENGTH = \"error_maximum_length\",\r\n ILLEGAL_CHARACTER = \"error_illegal_character\",\r\n UNAVAILABLE = \"error_name_unavailable\"\r\n}\r\nexport declare const validateSubdomainFormat: (identityName: string) => IdentityNameValidityError | null;\r\nexport declare const validateSubdomainAvailability: (name: string, subdomain?: Subdomains) => Promise;\r\ninterface RecursiveMakeIdentitiesOptions {\r\n rootNode: BIP32Interface;\r\n index?: number;\r\n identities?: Identity[];\r\n}\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport declare const recursiveRestoreIdentities: ({ rootNode, index, identities, }: RecursiveMakeIdentitiesOptions) => Promise;\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport declare const validateSubdomain: (name: string, subdomain?: Subdomains) => Promise;\r\nexport declare const getProfileURLFromZoneFile: (name: string) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index aaef254cd..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { getLegacyAppNode } from 'blockstack/lib/wallet';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { getAddress } from '../utils';\r\nconst APPS_NODE_INDEX = 0;\r\nconst SIGNING_NODE_INDEX = 1;\r\nconst ENCRYPTION_NODE_INDEX = 2;\r\nconst STX_NODE_INDEX = 6;\r\nexport default class IdentityAddressOwnerNode {\r\n constructor(ownerHdNode, salt) {\r\n this.hdNode = ownerHdNode;\r\n this.salt = salt;\r\n }\r\n getNode() {\r\n return this.hdNode;\r\n }\r\n getSalt() {\r\n return this.salt;\r\n }\r\n getIdentityKey() {\r\n if (!this.hdNode.privateKey) {\r\n throw new Error('Node does not have private key');\r\n }\r\n return this.hdNode.privateKey.toString('hex');\r\n }\r\n getIdentityKeyID() {\r\n return this.hdNode.publicKey.toString('hex');\r\n }\r\n getAppsNode() {\r\n return this.hdNode.deriveHardened(APPS_NODE_INDEX);\r\n }\r\n getAddress() {\r\n return getAddress(this.hdNode);\r\n }\r\n getEncryptionNode() {\r\n return this.hdNode.deriveHardened(ENCRYPTION_NODE_INDEX);\r\n }\r\n getSigningNode() {\r\n return this.hdNode.deriveHardened(SIGNING_NODE_INDEX);\r\n }\r\n getSTXNode() {\r\n return this.hdNode.deriveHardened(STX_NODE_INDEX);\r\n }\r\n getAppNode(appDomain) {\r\n return getLegacyAppNode(this.hdNode, this.salt, appDomain);\r\n }\r\n getAppPrivateKey(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n if (!appNode.privateKey) {\r\n throw new Error('App node does not have private key');\r\n }\r\n return appNode.privateKey.toString('hex');\r\n }\r\n getAppAddress(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n return publicKeyToAddress(appNode.publicKey);\r\n }\r\n}\r\n//# sourceMappingURL=identity-address-owner-node.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/wallet.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts"],"map":"{\"version\":3,\"file\":\"identity-address-owner-node.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/nodes/identity-address-owner-node.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAK3C,YAAY,WAA2B,EAAE,IAAY;QACnD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/nodes/identity-address-owner-node.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nexport default class IdentityAddressOwnerNode {\r\n hdNode: BIP32Interface;\r\n salt: string;\r\n constructor(ownerHdNode: BIP32Interface, salt: string);\r\n getNode(): BIP32Interface;\r\n getSalt(): string;\r\n getIdentityKey(): string;\r\n getIdentityKeyID(): string;\r\n getAppsNode(): BIP32Interface;\r\n getAddress(): string;\r\n getEncryptionNode(): BIP32Interface;\r\n getSigningNode(): BIP32Interface;\r\n getSTXNode(): BIP32Interface;\r\n getAppNode(appDomain: string): BIP32Interface;\r\n getAppPrivateKey(appDomain: string): string;\r\n getAppAddress(appDomain: string): string;\r\n}\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index 1104190d1..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { signProfileToken, wrapProfileToken, connectToGaiaHub, makeProfileZoneFile, } from 'blockstack';\r\nimport { uploadToGaiaHub } from './utils/gaia';\r\nconst PERSON_TYPE = 'Person';\r\nconst CONTEXT = 'http://schema.org';\r\nconst IMAGE_TYPE = 'ImageObject';\r\nexport const DEFAULT_PROFILE = {\r\n '@type': 'Person',\r\n '@context': 'http://schema.org',\r\n};\r\nconst DEFAULT_PROFILE_FILE_NAME = 'profile.json';\r\nexport var Subdomains;\r\n(function (Subdomains) {\r\n Subdomains[\"TEST\"] = \"test-personal.id\";\r\n Subdomains[\"BLOCKSTACK\"] = \"id.blockstack\";\r\n})(Subdomains || (Subdomains = {}));\r\nexport const registrars = {\r\n [Subdomains.TEST]: {\r\n registerUrl: 'https://test-registrar.blockstack.org/register',\r\n apiUrl: 'https://test-registrar.blockstack.org/v1/names',\r\n },\r\n [Subdomains.BLOCKSTACK]: {\r\n registerUrl: 'https://registrar.blockstack.org/register',\r\n apiUrl: 'https://registrar.blockstack.org/v1/names',\r\n },\r\n};\r\nexport function signProfileForUpload(profile, keypair) {\r\n const privateKey = keypair.key;\r\n const publicKey = keypair.keyID;\r\n const token = signProfileToken(profile, privateKey, { publicKey });\r\n const tokenRecord = wrapProfileToken(token);\r\n const tokenRecords = [tokenRecord];\r\n return JSON.stringify(tokenRecords, null, 2);\r\n}\r\nexport async function uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig) {\r\n const identityHubConfig = gaiaHubConfig || (await connectToGaiaHub(gaiaHubUrl, identity.keyPair.key));\r\n const uploadResponse = await uploadToGaiaHub(DEFAULT_PROFILE_FILE_NAME, signedProfileTokenData, identityHubConfig);\r\n return uploadResponse;\r\n}\r\nconst sendUsernameToRegistrar = async ({ username, subdomain, zoneFile, identity, }) => {\r\n const { registerUrl } = registrars[subdomain];\r\n const registrationRequestBody = JSON.stringify({\r\n name: username,\r\n owner_address: identity.address,\r\n zonefile: zoneFile,\r\n });\r\n const requestHeaders = {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n };\r\n const response = await fetch(registerUrl, {\r\n method: 'POST',\r\n headers: requestHeaders,\r\n body: registrationRequestBody,\r\n });\r\n if (!response.ok) {\r\n return Promise.reject({\r\n error: 'Failed to register username',\r\n status: response.status,\r\n });\r\n }\r\n return response.json();\r\n};\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport const registerSubdomain = async ({ identity, gaiaHubUrl, username, subdomain, }) => {\r\n const profile = identity.profile || DEFAULT_PROFILE;\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n const profileUrl = await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData);\r\n const fullUsername = `${username}.${subdomain}`;\r\n const zoneFile = makeProfileZoneFile(fullUsername, profileUrl);\r\n await sendUsernameToRegistrar({\r\n username,\r\n subdomain,\r\n zoneFile,\r\n identity,\r\n });\r\n identity.defaultUsername = fullUsername;\r\n identity.usernames.push(fullUsername);\r\n return identity;\r\n};\r\nexport const signAndUploadProfile = async ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }) => {\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig);\r\n};\r\nexport const fetchProfile = async ({ identity, gaiaUrl, }) => {\r\n try {\r\n const url = await identity.profileUrl(gaiaUrl);\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const json = await res.json();\r\n const { decodedToken } = json[0];\r\n return decodedToken.payload?.claim;\r\n }\r\n if (res.status === 404) {\r\n return null;\r\n }\r\n throw new Error('Network error when fetching profile');\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n};\r\n//# sourceMappingURL=profiles.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"profiles.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/profiles.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/profiles.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils';\r\nimport Identity from './identity';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\ndeclare const PERSON_TYPE = \"Person\";\r\ndeclare const CONTEXT = \"http://schema.org\";\r\ndeclare const IMAGE_TYPE = \"ImageObject\";\r\nexport interface ProfileImage {\r\n '@type': typeof IMAGE_TYPE;\r\n name: string;\r\n contentUrl: string;\r\n}\r\nexport interface Profile {\r\n '@type': typeof PERSON_TYPE;\r\n '@context': typeof CONTEXT;\r\n apps?: {\r\n [origin: string]: string;\r\n };\r\n appsMeta?: {\r\n [origin: string]: {\r\n publicKey: string;\r\n storage: string;\r\n };\r\n };\r\n name?: string;\r\n image?: ProfileImage[];\r\n [key: string]: any;\r\n}\r\nexport declare const DEFAULT_PROFILE: Profile;\r\nexport declare enum Subdomains {\r\n TEST = \"test-personal.id\",\r\n BLOCKSTACK = \"id.blockstack\"\r\n}\r\nexport declare const registrars: {\r\n \"test-personal.id\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n \"id.blockstack\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n};\r\nexport declare function signProfileForUpload(profile: Profile, keypair: IdentityKeyPair): string;\r\nexport declare function uploadProfile(gaiaHubUrl: string, identity: Identity, signedProfileTokenData: string, gaiaHubConfig?: GaiaHubConfig): Promise;\r\ninterface RegisterParams {\r\n identity: Identity;\r\n /** The gaia hub URL to use for profile.json upload */\r\n gaiaHubUrl: string;\r\n /** The username portion of this subdomain, i.e. only the portion of the name before any periods */\r\n username: string;\r\n /** The \"domain\" used for this subdomain. Can be any of the `Subdomains` enum. */\r\n subdomain: Subdomains;\r\n}\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport declare const registerSubdomain: ({ identity, gaiaHubUrl, username, subdomain, }: RegisterParams) => Promise;\r\nexport declare const signAndUploadProfile: ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }: {\r\n profile: Profile;\r\n gaiaHubUrl: string;\r\n identity: Identity;\r\n gaiaHubConfig?: GaiaHubConfig | undefined;\r\n}) => Promise;\r\nexport declare const fetchProfile: ({ identity, gaiaUrl, }: {\r\n identity: Identity;\r\n gaiaUrl: string;\r\n}) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index 7edbdd5e7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { bip32, ECPair } from 'bitcoinjs-lib';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { makeAuthResponse } from 'blockstack/lib/auth/authMessages';\r\nimport { getProfileURLFromZoneFile } from './utils';\r\nimport { makeGaiaAssociationToken, DEFAULT_GAIA_HUB, getHubInfo, connectToGaiaHubWithConfig, } from './utils/gaia';\r\nimport IdentityAddressOwnerNode from './nodes/identity-address-owner-node';\r\nimport { fetchProfile, DEFAULT_PROFILE, signAndUploadProfile } from './profiles';\r\nimport { ecPairToAddress } from 'blockstack';\r\nexport class Identity {\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }) {\r\n this.keyPair = keyPair;\r\n this.address = address;\r\n this.usernames = usernames || [];\r\n this.defaultUsername = defaultUsername;\r\n this.profile = profile;\r\n }\r\n async makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes = [], stxAddress, }) {\r\n const appPrivateKey = this.appPrivateKey(appDomain);\r\n const hubInfo = await getHubInfo(gaiaUrl);\r\n const profileUrl = await this.profileUrl(hubInfo.read_url_prefix);\r\n const profile = (await fetchProfile({ identity: this, gaiaUrl: hubInfo.read_url_prefix })) || DEFAULT_PROFILE;\r\n if (scopes.includes('publish_data')) {\r\n if (!profile.apps) {\r\n profile.apps = {};\r\n }\r\n const challengeSigner = ECPair.fromPrivateKey(Buffer.from(appPrivateKey, 'hex'));\r\n const storageUrl = `${hubInfo.read_url_prefix}${ecPairToAddress(challengeSigner)}/`;\r\n profile.apps[appDomain] = storageUrl;\r\n if (!profile.appsMeta) {\r\n profile.appsMeta = {};\r\n }\r\n profile.appsMeta[appDomain] = {\r\n storage: storageUrl,\r\n publicKey: challengeSigner.publicKey.toString('hex'),\r\n };\r\n const gaiaHubConfig = connectToGaiaHubWithConfig({\r\n hubInfo,\r\n privateKey: this.keyPair.key,\r\n gaiaHubUrl: gaiaUrl,\r\n });\r\n await signAndUploadProfile({ profile, identity: this, gaiaHubUrl: gaiaUrl, gaiaHubConfig });\r\n }\r\n this.profile = profile;\r\n const compressedAppPublicKey = getPublicKeyFromPrivate(appPrivateKey.slice(0, 64));\r\n const associationToken = makeGaiaAssociationToken(this.keyPair.key, compressedAppPublicKey);\r\n return makeAuthResponse(this.keyPair.key, {\r\n ...(this.profile || {}),\r\n stxAddress,\r\n }, this.defaultUsername || '', {\r\n profileUrl,\r\n }, undefined, appPrivateKey, undefined, transitPublicKey, gaiaUrl, undefined, associationToken);\r\n }\r\n appPrivateKey(appDomain) {\r\n const { salt, appsNodeKey } = this.keyPair;\r\n const appsNode = new IdentityAddressOwnerNode(bip32.fromBase58(appsNodeKey), salt);\r\n return appsNode.getAppPrivateKey(appDomain);\r\n }\r\n async profileUrl(gaiaUrl) {\r\n if (this.defaultUsername) {\r\n try {\r\n const url = await getProfileURLFromZoneFile(this.defaultUsername);\r\n if (url)\r\n return url;\r\n }\r\n catch (error) {\r\n if (process.env.NODE_ENV !== 'test') {\r\n console.warn('Error fetching profile URL from zone file:', error);\r\n }\r\n }\r\n }\r\n return `${gaiaUrl}${this.address}/profile.json`;\r\n }\r\n async fetchNames() {\r\n const getNamesUrl = `https://core.blockstack.org/v1/addresses/bitcoin/${this.address}`;\r\n const res = await fetch(getNamesUrl);\r\n const data = await res.json();\r\n const { names } = data;\r\n return names;\r\n }\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n async refresh(opts = { gaiaUrl: DEFAULT_GAIA_HUB }) {\r\n try {\r\n const names = await this.fetchNames();\r\n if (names) {\r\n if (names[0] && !this.defaultUsername) {\r\n this.defaultUsername = names[0];\r\n }\r\n names.forEach(name => {\r\n const existingIndex = this.usernames.findIndex(u => u === name);\r\n if (existingIndex === -1) {\r\n this.usernames.push(name);\r\n }\r\n });\r\n }\r\n const profile = await fetchProfile({ identity: this, gaiaUrl: opts.gaiaUrl });\r\n if (profile) {\r\n this.profile = profile;\r\n }\r\n return;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n }\r\n}\r\nexport default Identity;\r\n//# sourceMappingURL=identity.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/auth/authMessages.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"identity.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/identity.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,UAAU,EACV,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,wBAAwB,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAW,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAc7C,MAAM,OAAO,QAAQ;IAOnB,YAAY,EACV,OAAO,EACP,OAAO,EACP,SAAS,EACT,eAAe,EACf,OAAO,GACoB;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EACrB,SAAS,EACT,OAAO,EACP,gBAAgB,EAChB,MAAM,GAAG,EAAE,EACX,UAAU,GAOX;QACC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAClE,MAAM,OAAO,GACX,CAAC,MAAM,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,eAAe,CAAC;QAChG,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACjB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;aACnB;YACD,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;YACjF,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC;YACpF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACrB,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;aACvB;YACD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG;gBAC5B,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;aACrD,CAAC;YACF,MAAM,aAAa,GAAG,0BAA0B,CAAC;gBAC/C,OAAO;gBACP,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;gBAC5B,UAAU,EAAE,OAAO;aACpB,CAAC,CAAC;YACH,MAAM,oBAAoB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;SAC7F;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAE5F,OAAO,gBAAgB,CACrB,IAAI,CAAC,OAAO,CAAC,GAAG,EAChB;YACE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACvB,UAAU;SACX,EACD,IAAI,CAAC,eAAe,IAAI,EAAE,EAC1B;YACE,UAAU;SACX,EACD,SAAS,EACT,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,wBAAwB,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;QACnF,OAAO,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAClE,IAAI,GAAG;oBAAE,OAAO,GAAG,CAAC;aACrB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;oBACnC,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;iBACnE;aACF;SACF;QACD,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,OAAO,eAAe,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,WAAW,GAAG,oDAAoD,IAAI,CAAC,OAAO,EAAE,CAAC;QACvF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAwB,IAAI,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,OAAO,EAAE,gBAAgB,EAAE;QAChE,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACtC,IAAI,KAAK,EAAE;gBACT,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;oBACrC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;iBACjC;gBACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACnB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBAChE,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;wBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC3B;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;aACxB;YACD,OAAO;SACR;QAAC,OAAO,KAAK,EAAE;YACd,OAAO;SACR;IACH,CAAC;CACF;AAED,eAAe,QAAQ,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/identity.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils/index';\r\nimport { Profile } from './profiles';\r\ninterface IdentityConstructorOptions {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n usernames?: string[];\r\n defaultUsername?: string;\r\n profile?: Profile;\r\n}\r\ninterface RefreshOptions {\r\n gaiaUrl: string;\r\n}\r\nexport declare class Identity {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n defaultUsername?: string;\r\n usernames: string[];\r\n profile?: Profile;\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }: IdentityConstructorOptions);\r\n makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes, stxAddress, }: {\r\n appDomain: string;\r\n gaiaUrl: string;\r\n transitPublicKey: string;\r\n scopes?: string[];\r\n stxAddress?: string;\r\n }): Promise;\r\n appPrivateKey(appDomain: string): string;\r\n profileUrl(gaiaUrl: string): Promise;\r\n fetchNames(): Promise;\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n refresh(opts?: RefreshOptions): Promise;\r\n}\r\nexport default Identity;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index d1e50fabe..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { makeContractCall, makeContractDeploy, StacksTestnet, makeSTXTokenTransfer, getAddressFromPrivateKey, } from '@blockstack/stacks-transactions';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { assertIsTruthy } from '../utils';\r\nimport BN from 'bn.js';\r\nexport class WalletSigner {\r\n constructor({ privateKey }) {\r\n this.privateKey = privateKey;\r\n }\r\n getSTXAddress(version) {\r\n return getAddressFromPrivateKey(this.getSTXPrivateKey(), version);\r\n }\r\n getSTXPrivateKey() {\r\n const node = bip32.fromBase58(this.privateKey);\r\n assertIsTruthy(node.privateKey);\r\n return node.privateKey;\r\n }\r\n getNetwork() {\r\n const network = new StacksTestnet();\r\n network.coreApiUrl = 'https://sidecar.staging.blockstack.xyz';\r\n return network;\r\n }\r\n async fetchAccount({ version, rpcClient, }) {\r\n const address = this.getSTXAddress(version);\r\n const account = await rpcClient.fetchAccount(address);\r\n return account;\r\n }\r\n async signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractCall({\r\n contractAddress,\r\n contractName,\r\n functionName,\r\n functionArgs,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n nonce: new BN(nonce),\r\n network: this.getNetwork(),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractDeploy({\r\n contractName,\r\n codeBody: codeBody,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeSTXTokenTransfer({\r\n recipient,\r\n amount: new BN(amount),\r\n memo,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n}\r\n//# sourceMappingURL=signer.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/rpc-client/dist/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/bn.js/index.d.ts"],"map":"{\"version\":3,\"file\":\"signer.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/signer.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/signer.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { TransactionVersion, ClarityValue, StacksTestnet, PostConditionMode, PostCondition, StacksNetwork } from '@blockstack/stacks-transactions';\r\nimport RPCClient from '@blockstack/rpc-client';\r\ninterface ContractCallOptions {\r\n contractName: string;\r\n contractAddress: string;\r\n functionName: string;\r\n functionArgs: ClarityValue[];\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface ContractDeployOptions {\r\n contractName: string;\r\n codeBody: string;\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface STXTransferOptions {\r\n recipient: string;\r\n amount: string;\r\n memo?: string;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\nexport declare class WalletSigner {\r\n privateKey: string;\r\n constructor({ privateKey }: {\r\n privateKey: string;\r\n });\r\n getSTXAddress(version: TransactionVersion): string;\r\n getSTXPrivateKey(): Buffer;\r\n getNetwork(): StacksTestnet;\r\n fetchAccount({ version, rpcClient, }: {\r\n version: TransactionVersion;\r\n rpcClient: RPCClient;\r\n }): Promise;\r\n signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }: ContractCallOptions): Promise;\r\n signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }: ContractDeployOptions): Promise;\r\n signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }: STXTransferOptions): Promise;\r\n}\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index 796e4be36..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { TokenSigner } from 'jsontokens';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { ecPairToAddress, hexStringToECPair } from 'blockstack';\r\nexport const DEFAULT_GAIA_HUB = 'https://gaia.blockstack.org/hub/';\r\nexport const getHubInfo = async (hubUrl) => {\r\n const response = await fetch(`${hubUrl}/hub_info`);\r\n const data = await response.json();\r\n return data;\r\n};\r\nexport const getHubPrefix = async (hubUrl) => {\r\n const { read_url_prefix } = await getHubInfo(hubUrl);\r\n return read_url_prefix;\r\n};\r\nexport const makeGaiaAssociationToken = (secretKeyHex, childPublicKeyHex) => {\r\n const LIFETIME_SECONDS = 365 * 24 * 3600;\r\n const signerKeyHex = secretKeyHex.slice(0, 64);\r\n const compressedPublicKeyHex = getPublicKeyFromPrivate(signerKeyHex);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n childToAssociate: childPublicKeyHex,\r\n iss: compressedPublicKeyHex,\r\n exp: LIFETIME_SECONDS + new Date().getTime() / 1000,\r\n iat: Date.now() / 1000,\r\n salt,\r\n };\r\n const tokenSigner = new TokenSigner('ES256K', signerKeyHex);\r\n const token = tokenSigner.sign(payload);\r\n return token;\r\n};\r\nexport const connectToGaiaHubWithConfig = ({ hubInfo, privateKey, gaiaHubUrl, }) => {\r\n const readURL = hubInfo.read_url_prefix;\r\n const token = makeGaiaAuthToken({ hubInfo, privateKey, gaiaHubUrl });\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token,\r\n server: gaiaHubUrl,\r\n };\r\n};\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport const makeReadOnlyGaiaConfig = ({ readURL, privateKey, }) => {\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token: 'not_used',\r\n server: 'not_used',\r\n };\r\n};\r\nconst makeGaiaAuthToken = ({ hubInfo, privateKey, gaiaHubUrl }) => {\r\n const challengeText = hubInfo.challenge_text;\r\n const iss = getPublicKeyFromPrivate(privateKey);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n gaiaHubUrl,\r\n iss,\r\n salt,\r\n };\r\n if (challengeText) {\r\n payload.gaiaChallenge = challengeText;\r\n }\r\n const token = new TokenSigner('ES256K', privateKey).sign(payload);\r\n return `v1:${token}`;\r\n};\r\nexport const uploadToGaiaHub = async (filename, contents, hubConfig) => {\r\n const contentType = 'application/json';\r\n const response = await fetch(`${hubConfig.server}/store/${hubConfig.address}/${filename}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': contentType,\r\n Authorization: `bearer ${hubConfig.token}`,\r\n },\r\n body: contents,\r\n referrer: 'no-referrer',\r\n referrerPolicy: 'no-referrer',\r\n });\r\n const { publicURL } = await response.json();\r\n return publicURL;\r\n};\r\n//# sourceMappingURL=gaia.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/jsontokens/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"gaia.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/gaia.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,WAAW,EAAQ,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGhE,MAAM,CAAC,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAOnE,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,WAAW,CAAC,CAAC;IACnD,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;IACnD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,YAAoB,EACpB,iBAAyB,EACjB,EAAE;IACV,MAAM,gBAAgB,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG;QACd,gBAAgB,EAAE,iBAAiB;QACnC,GAAG,EAAE,sBAAsB;QAC3B,GAAG,EAAE,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;QACnD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;QACtB,IAAI;KACL,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,OAAO,EACP,UAAU,EACV,UAAU,GACW,EAAiB,EAAE;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,eAAe,CAC7B,iBAAiB,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACvE,CAAC;IACF,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,8BAA8B,EAAE,GAAG;QACnC,OAAO;QACP,KAAK;QACL,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC,CAAC;AAOF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,OAAO,EACP,UAAU,GACgB,EAAiB,EAAE;IAC7C,MAAM,OAAO,GAAG,eAAe,CAC7B,iBAAiB,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACvE,CAAC;IACF,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,8BAA8B,EAAE,GAAG;QACnC,OAAO;QACP,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC,CAAC;AASF,MAAM,iBAAiB,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAwB,EAAE,EAAE;IACtF,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAC7C,MAAM,GAAG,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAEhD,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAoB;QAC/B,UAAU;QACV,GAAG;QACH,IAAI;KACL,CAAC;IACF,IAAI,aAAa,EAAE;QACjB,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;KACvC;IACD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,OAAO,MAAM,KAAK,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,QAAgB,EAChB,QAAkD,EAClD,SAAwB,EACP,EAAE;IACnB,MAAM,WAAW,GAAG,kBAAkB,CAAC;IAEvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,UAAU,SAAS,CAAC,OAAO,IAAI,QAAQ,EAAE,EAAE;QACzF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,WAAW;YAC3B,aAAa,EAAE,UAAU,SAAS,CAAC,KAAK,EAAE;SAC3C;QACD,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,aAAa;QACvB,cAAc,EAAE,aAAa;KAC9B,CAAC,CAAC;IACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/gaia.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nexport declare const DEFAULT_GAIA_HUB = \"https://gaia.blockstack.org/hub/\";\r\ninterface HubInfo {\r\n challenge_text?: string;\r\n read_url_prefix: string;\r\n}\r\nexport declare const getHubInfo: (hubUrl: string) => Promise;\r\nexport declare const getHubPrefix: (hubUrl: string) => Promise;\r\nexport declare const makeGaiaAssociationToken: (secretKeyHex: string, childPublicKeyHex: string) => string;\r\ninterface ConnectToGaiaOptions {\r\n hubInfo: HubInfo;\r\n privateKey: string;\r\n gaiaHubUrl: string;\r\n}\r\nexport declare const connectToGaiaHubWithConfig: ({ hubInfo, privateKey, gaiaHubUrl, }: ConnectToGaiaOptions) => GaiaHubConfig;\r\ninterface ReadOnlyGaiaConfigOptions {\r\n readURL: string;\r\n privateKey: string;\r\n}\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport declare const makeReadOnlyGaiaConfig: ({ readURL, privateKey, }: ReadOnlyGaiaConfigOptions) => GaiaHubConfig;\r\nexport declare const uploadToGaiaHub: (filename: string, contents: Blob | Buffer | ArrayBufferView | string, hubConfig: GaiaHubConfig) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/018dd99255a534837916033f04b396b3c5b771ad b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/018dd99255a534837916033f04b396b3c5b771ad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/061a2a662a532413fb382823dd2453c8537b4338 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/061a2a662a532413fb382823dd2453c8537b4338 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/314c9c585547e1ee805fe1597f307af31b72559c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/314c9c585547e1ee805fe1597f307af31b72559c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/420b2f97ccbc239de9691385af956534d4545c2c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/420b2f97ccbc239de9691385af956534d4545c2c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/9ed2612615091d088e52b934dbdc159280dc237c b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/9ed2612615091d088e52b934dbdc159280dc237c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/fae54f93545510c8db4ed307ea8397a19112446a b/packages/keychain/.rts2_cache_umd/rpt2_078b1409aa37b9a43a876ab13b825a11ed9e808c/types/cache/fae54f93545510c8db4ed307ea8397a19112446a deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index 53380f7c1..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { ChainID, getAddressFromPrivateKey, TransactionVersion, } from '@blockstack/stacks-transactions';\r\nimport { ECPair } from 'bitcoinjs-lib';\r\nimport { ecPairToHexString } from 'blockstack';\r\nconst networkDerivationPath = `m/44'/5757'/0'/0/0`;\r\nexport const derivationPaths = {\r\n [ChainID.Mainnet]: networkDerivationPath,\r\n [ChainID.Testnet]: networkDerivationPath,\r\n};\r\nexport function getDerivationPath(chain) {\r\n return derivationPaths[chain];\r\n}\r\nexport function deriveStxAddressChain(chain) {\r\n return (rootNode) => {\r\n const childKey = rootNode.derivePath(getDerivationPath(chain));\r\n if (!childKey.privateKey) {\r\n throw new Error('Unable to derive private key from `rootNode`, bip32 master keychain');\r\n }\r\n const ecPair = ECPair.fromPrivateKey(childKey.privateKey);\r\n const privateKey = ecPairToHexString(ecPair);\r\n const txVersion = chain === ChainID.Mainnet ? TransactionVersion.Mainnet : TransactionVersion.Testnet;\r\n return {\r\n childKey,\r\n address: getAddressFromPrivateKey(privateKey, txVersion),\r\n privateKey,\r\n };\r\n };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/address-derivation/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACL,OAAO,EACP,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAkB,MAAM,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;IACxC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB;CACzC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CAAC,QAAwB,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GACb,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACtF,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC;YACxD,UAAU;SACX,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/address-derivation/index.d.ts","writeByteOrderMark":false,"text":"import { ChainID } from '@blockstack/stacks-transactions';\r\nimport { BIP32Interface } from 'bitcoinjs-lib';\r\nexport declare const derivationPaths: {\r\n 1: string;\r\n 2147483648: string;\r\n};\r\nexport declare function getDerivationPath(chain: ChainID): string;\r\nexport declare function deriveStxAddressChain(chain: ChainID): (rootNode: BIP32Interface) => {\r\n childKey: BIP32Interface;\r\n address: string;\r\n privateKey: string;\r\n};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index 0c4968ffd..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { generateMnemonic as generateBip39Mnemonic, mnemonicToSeed } from 'bip39';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { encrypt } from '../encryption/encrypt';\r\nimport { encryptMnemonic } from 'blockstack';\r\nexport async function generateMnemonicRootKeychain(entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return {\r\n rootNode,\r\n plaintextMnemonic,\r\n };\r\n}\r\nexport async function generateEncryptedMnemonicRootKeychain(password, entropy) {\r\n const plaintextMnemonic = generateBip39Mnemonic(entropy, randomBytes);\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n const ciphertextBuffer = await encrypt(plaintextMnemonic, password);\r\n const encryptedMnemonicPhrase = ciphertextBuffer.toString('hex');\r\n return {\r\n rootNode,\r\n encryptedMnemonicPhrase,\r\n };\r\n}\r\nexport async function deriveRootKeychainFromMnemonic(plaintextMnemonic) {\r\n const seedBuffer = await mnemonicToSeed(plaintextMnemonic);\r\n const rootNode = bip32.fromSeed(seedBuffer);\r\n return rootNode;\r\n}\r\nexport async function encryptMnemonicFormatted(plaintextMnemonic, password) {\r\n const encryptedMnemonic = await encryptMnemonic(plaintextMnemonic, password);\r\n const encryptedMnemonicHex = encryptedMnemonic.toString('hex');\r\n return { encryptedMnemonic, encryptedMnemonicHex };\r\n}\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/mnemonic/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAA8B;IAC/E,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO;QACL,QAAQ;QACR,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,QAAgB,EAChB,OAA8B;IAE9B,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO;QACL,QAAQ;QACR,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,iBAAyB;IAC5E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,iBAAyB,EAAE,QAAgB;IACxF,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACrD,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/mnemonic/index.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { bip32 } from 'bitcoinjs-lib';\r\nexport declare type AllowedKeyEntropyBits = 128 | 256;\r\nexport declare function generateMnemonicRootKeychain(entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n plaintextMnemonic: string;\r\n}>;\r\nexport declare function generateEncryptedMnemonicRootKeychain(password: string, entropy: AllowedKeyEntropyBits): Promise<{\r\n rootNode: bip32.BIP32Interface;\r\n encryptedMnemonicPhrase: string;\r\n}>;\r\nexport declare function deriveRootKeychainFromMnemonic(plaintextMnemonic: string): Promise;\r\nexport declare function encryptMnemonicFormatted(plaintextMnemonic: string, password: string): Promise<{\r\n encryptedMnemonic: Buffer;\r\n encryptedMnemonicHex: string;\r\n}>;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index e617263c8..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { encryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport async function encrypt(phrase, password) {\r\n const result = await encryptMnemonic(phrase, password);\r\n return result;\r\n}\r\n//# sourceMappingURL=encrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"encrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/encrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;KAKK;AACL,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/encrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Encrypt a raw mnemonic phrase to be password protected\r\n * @param phrase - Raw mnemonic phrase\r\n * @param password - Password to encrypt mnemonic with\r\n * @return The encrypted phrase\r\n * */\r\nexport declare function encrypt(phrase: string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index 93330eccf..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\nexport default {\r\n Wallet,\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/encrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/index.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,eAAe;IACb,MAAM;CACP,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/index.d.ts","writeByteOrderMark":false,"text":"import Wallet from './wallet';\r\nexport * from './utils';\r\nexport * from './mnemonic';\r\nexport * from './address-derivation';\r\nexport { default as Wallet } from './wallet';\r\nexport * from './wallet';\r\nexport * from './wallet/signer';\r\nexport { decrypt } from './encryption/decrypt';\r\nexport { encrypt } from './encryption/encrypt';\r\nexport * from './profiles';\r\nexport * from './identity';\r\ndeclare const _default: {\r\n Wallet: typeof Wallet;\r\n};\r\nexport default _default;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index 673790086..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { mnemonicToSeed } from 'bip39';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { getBlockchainIdentities, makeIdentity, assertIsTruthy, recursiveRestoreIdentities, } from '../utils';\r\nimport Identity from '../identity';\r\nimport { decrypt } from '../encryption/decrypt';\r\nimport { connectToGaiaHub, encryptContent, getPublicKeyFromPrivate, decryptContent, } from 'blockstack';\r\nimport { generateEncryptedMnemonicRootKeychain, deriveRootKeychainFromMnemonic, encryptMnemonicFormatted, } from '../mnemonic';\r\nimport { deriveStxAddressChain } from '../address-derivation';\r\nimport { makeReadOnlyGaiaConfig, DEFAULT_GAIA_HUB, uploadToGaiaHub } from '../utils/gaia';\r\nimport { WalletSigner } from './signer';\r\nconst CONFIG_INDEX = 45;\r\nexport class Wallet {\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }) {\r\n this.chain = chain;\r\n this.encryptedBackupPhrase = encryptedBackupPhrase;\r\n this.identityPublicKeychain = identityPublicKeychain;\r\n this.bitcoinPublicKeychain = bitcoinPublicKeychain;\r\n this.firstBitcoinAddress = firstBitcoinAddress;\r\n this.identityKeypairs = identityKeypairs;\r\n this.identityAddresses = identityAddresses;\r\n this.identities = identities.map(identity => new Identity(identity));\r\n this.configPrivateKey = configPrivateKey;\r\n this.stacksPrivateKey = stacksPrivateKey;\r\n this.walletConfig = walletConfig;\r\n }\r\n static generateFactory(bitsEntropy) {\r\n return async (password, chain) => {\r\n const { rootNode, encryptedMnemonicPhrase } = await generateEncryptedMnemonicRootKeychain(password, bitsEntropy);\r\n return this.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicPhrase,\r\n rootNode,\r\n chain,\r\n });\r\n };\r\n }\r\n static async generate(password, chain) {\r\n return await this.generateFactory(128)(password, chain);\r\n }\r\n static async generateStrong(password, chain) {\r\n return await this.generateFactory(256)(password, chain);\r\n }\r\n static async restore(password, seedPhrase, chain) {\r\n const rootNode = await deriveRootKeychainFromMnemonic(seedPhrase);\r\n const { encryptedMnemonicHex } = await encryptMnemonicFormatted(seedPhrase, password);\r\n const wallet = await Wallet.createAccount({\r\n encryptedBackupPhrase: encryptedMnemonicHex,\r\n rootNode,\r\n chain,\r\n });\r\n return await wallet.restoreIdentities({ rootNode, gaiaReadURL: DEFAULT_GAIA_HUB });\r\n }\r\n static async createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate = 1, }) {\r\n const derivedIdentitiesKey = rootNode.deriveHardened(CONFIG_INDEX).privateKey;\r\n if (!derivedIdentitiesKey) {\r\n throw new TypeError('Unable to derive config key for wallet identities');\r\n }\r\n const configPrivateKey = derivedIdentitiesKey.toString('hex');\r\n const { childKey: stxAddressKeychain } = deriveStxAddressChain(chain)(rootNode);\r\n const walletAttrs = await getBlockchainIdentities(rootNode, identitiesToGenerate);\r\n return new Wallet({\r\n ...walletAttrs,\r\n chain,\r\n configPrivateKey,\r\n stacksPrivateKey: stxAddressKeychain.toBase58(),\r\n encryptedBackupPhrase,\r\n });\r\n }\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n async restoreIdentities({ rootNode, gaiaReadURL, }) {\r\n const gaiaConfig = makeReadOnlyGaiaConfig({\r\n readURL: gaiaReadURL,\r\n privateKey: this.configPrivateKey,\r\n });\r\n await this.fetchConfig(gaiaConfig);\r\n if (this.walletConfig) {\r\n const getIdentities = this.walletConfig.identities.map(async (identityConfig, index) => {\r\n let identity = this.identities[index];\r\n if (!identity) {\r\n identity = await makeIdentity(rootNode, index);\r\n }\r\n if (identityConfig.username) {\r\n identity.usernames = [identityConfig.username];\r\n identity.defaultUsername = identityConfig.username;\r\n }\r\n return identity;\r\n });\r\n const identities = await Promise.all(getIdentities);\r\n this.identities = identities;\r\n return this;\r\n }\r\n await this.identities[0].refresh();\r\n const newIdentities = await recursiveRestoreIdentities({ rootNode });\r\n this.identities = this.identities.concat(newIdentities);\r\n return this;\r\n }\r\n async createNewIdentity(password) {\r\n const plainTextBuffer = await decrypt(Buffer.from(this.encryptedBackupPhrase, 'hex'), password);\r\n const seed = await mnemonicToSeed(plainTextBuffer);\r\n const rootNode = bip32.fromSeed(seed);\r\n const index = this.identities.length;\r\n const identity = await makeIdentity(rootNode, index);\r\n this.identities.push(identity);\r\n this.identityKeypairs.push(identity.keyPair);\r\n this.identityAddresses.push(identity.address);\r\n return identity;\r\n }\r\n async createGaiaConfig(gaiaHubUrl) {\r\n return connectToGaiaHub(gaiaHubUrl, this.configPrivateKey);\r\n }\r\n async fetchConfig(gaiaConfig) {\r\n try {\r\n const response = await fetch(`${gaiaConfig.url_prefix}${gaiaConfig.address}/wallet-config.json`);\r\n const encrypted = await response.text();\r\n const configJSON = (await decryptContent(encrypted, {\r\n privateKey: this.configPrivateKey,\r\n }));\r\n const config = JSON.parse(configJSON);\r\n this.walletConfig = config;\r\n return config;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n }\r\n async getOrCreateConfig({ gaiaConfig, skipUpload, }) {\r\n if (this.walletConfig) {\r\n return this.walletConfig;\r\n }\r\n const config = await this.fetchConfig(gaiaConfig);\r\n if (config) {\r\n return config;\r\n }\r\n const newConfig = {\r\n identities: this.identities.map(i => ({\r\n username: i.defaultUsername,\r\n address: i.address,\r\n apps: {},\r\n })),\r\n };\r\n this.walletConfig = newConfig;\r\n if (!skipUpload) {\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n return newConfig;\r\n }\r\n async updateConfig(gaiaConfig) {\r\n const publicKey = getPublicKeyFromPrivate(this.configPrivateKey);\r\n const encrypted = await encryptContent(JSON.stringify(this.walletConfig), { publicKey });\r\n await uploadToGaiaHub('wallet-config.json', encrypted, gaiaConfig);\r\n }\r\n async updateConfigWithAuth({ identityIndex, app, gaiaConfig, }) {\r\n const { walletConfig } = this;\r\n assertIsTruthy(walletConfig);\r\n this.identities.forEach((identity, index) => {\r\n const configIdentity = walletConfig.identities[index];\r\n if (configIdentity) {\r\n configIdentity.apps = configIdentity.apps || {};\r\n configIdentity.username = identity.defaultUsername;\r\n configIdentity.address = identity.address;\r\n walletConfig.identities[index] = configIdentity;\r\n }\r\n else {\r\n this.walletConfig?.identities.push({\r\n username: identity.defaultUsername,\r\n address: identity.address,\r\n apps: {},\r\n });\r\n }\r\n });\r\n const identity = walletConfig.identities[identityIndex];\r\n identity.apps = identity.apps || {};\r\n identity.apps[app.origin] = app;\r\n walletConfig.identities[identityIndex] = identity;\r\n this.walletConfig = walletConfig;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n async updateConfigForReuseWarning({ gaiaConfig }) {\r\n assertIsTruthy(this.walletConfig);\r\n this.walletConfig.hideWarningForReusingIdentity = true;\r\n await this.updateConfig(gaiaConfig);\r\n }\r\n getSigner() {\r\n return new WalletSigner({ privateKey: this.stacksPrivateKey });\r\n }\r\n}\r\nexport default Wallet;\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/bip39/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/encryption/decrypt.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/mnemonic/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/address-derivation/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/wallet/signer.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/index.d.ts","writeByteOrderMark":false,"text":"import { bip32, BIP32Interface } from 'bitcoinjs-lib';\r\nimport { ChainID } from '@blockstack/stacks-transactions';\r\nimport { IdentityKeyPair } from '../utils';\r\nimport Identity from '../identity';\r\nimport { AllowedKeyEntropyBits } from '../mnemonic';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nimport { WalletSigner } from './signer';\r\nexport interface ConfigApp {\r\n origin: string;\r\n scopes: string[];\r\n lastLoginAt: number;\r\n appIcon: string;\r\n name: string;\r\n}\r\ninterface ConfigIdentity {\r\n username?: string;\r\n address: string;\r\n apps: {\r\n [origin: string]: ConfigApp;\r\n };\r\n}\r\nexport interface WalletConfig {\r\n identities: ConfigIdentity[];\r\n hideWarningForReusingIdentity?: boolean;\r\n}\r\nexport interface ConstructorOptions {\r\n chain: ChainID;\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n encryptedBackupPhrase: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n}\r\nexport declare class Wallet {\r\n chain: ChainID;\r\n encryptedBackupPhrase: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityKeypairs: IdentityKeyPair[];\r\n identityAddresses: string[];\r\n identityPublicKeychain: string;\r\n identities: Identity[];\r\n configPrivateKey: string;\r\n stacksPrivateKey: string;\r\n walletConfig?: WalletConfig;\r\n constructor({ chain, encryptedBackupPhrase, identityPublicKeychain, bitcoinPublicKeychain, firstBitcoinAddress, identityKeypairs, identityAddresses, identities, configPrivateKey, stacksPrivateKey, walletConfig, }: ConstructorOptions);\r\n static generateFactory(bitsEntropy: AllowedKeyEntropyBits): (password: string, chain: ChainID) => Promise;\r\n static generate(password: string, chain: ChainID): Promise;\r\n static generateStrong(password: string, chain: ChainID): Promise;\r\n static restore(password: string, seedPhrase: string, chain: ChainID): Promise;\r\n static createAccount({ encryptedBackupPhrase, rootNode, chain, identitiesToGenerate, }: {\r\n encryptedBackupPhrase: string;\r\n rootNode: BIP32Interface;\r\n chain: ChainID;\r\n identitiesToGenerate?: number;\r\n }): Promise;\r\n /**\r\n * Restore all previously used identities. This is meant to be used when 'restoring' a wallet.\r\n * First, it will check for a `walletConfig`. If present, then we use that to determine how\r\n * many identities to generate, and auto-populate their username.\r\n *\r\n * If `walletConfig` is empty, then this is being restored from an authenticator that doesn't\r\n * support `walletConfig`. In that case, we will recursively generate identities, and check for\r\n * on-chain names.\r\n *\r\n */\r\n restoreIdentities({ rootNode, gaiaReadURL, }: {\r\n rootNode: bip32.BIP32Interface;\r\n gaiaReadURL: string;\r\n }): Promise;\r\n createNewIdentity(password: string): Promise;\r\n createGaiaConfig(gaiaHubUrl: string): Promise;\r\n fetchConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n getOrCreateConfig({ gaiaConfig, skipUpload, }: {\r\n gaiaConfig: GaiaHubConfig;\r\n skipUpload?: boolean;\r\n }): Promise;\r\n updateConfig(gaiaConfig: GaiaHubConfig): Promise;\r\n updateConfigWithAuth({ identityIndex, app, gaiaConfig, }: {\r\n identityIndex: number;\r\n app: ConfigApp;\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n updateConfigForReuseWarning({ gaiaConfig }: {\r\n gaiaConfig: GaiaHubConfig;\r\n }): Promise;\r\n getSigner(): WalletSigner;\r\n}\r\nexport default Wallet;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index a38d6780d..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { decrypt as triplesecDecrypt } from 'triplesec';\r\nimport { decryptMnemonic } from 'blockstack/lib/encryption/wallet';\r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport async function decrypt(dataBuffer, password) {\r\n const result = await decryptMnemonic(dataBuffer, password, triplesecDecrypt);\r\n return result;\r\n}\r\n//# sourceMappingURL=decrypt.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/triplesec/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/wallet.d.ts"],"map":"{\"version\":3,\"file\":\"decrypt.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/encryption/decrypt.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAA2B,EAAE,QAAgB;IACzE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/encryption/decrypt.d.ts","writeByteOrderMark":false,"text":"/// \r\n/**\r\n * Decrypt an encrypted mnemonic phrase with a password.\r\n * Legacy triplesec encrypted payloads are also supported.\r\n * @param data - Buffer or hex-encoded string of the encrypted mnemonic\r\n * @param password - Password for data\r\n * @return the raw mnemonic phrase\r\n */\r\nexport declare function decrypt(dataBuffer: Buffer | string, password: string): Promise;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index afbcca7e2..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -{"code":"import IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport { createSha2Hash } from 'blockstack/lib/encryption/sha2Hash';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { parseZoneFile } from 'zone-file';\r\nimport Identity from '../identity';\r\nimport { AssertionError } from 'assert';\r\nimport { Subdomains, registrars } from '../profiles';\r\nconst IDENTITY_KEYCHAIN = 888;\r\nconst BLOCKSTACK_ON_BITCOIN = 0;\r\nexport function getIdentityPrivateKeychain(rootNode) {\r\n return rootNode.deriveHardened(IDENTITY_KEYCHAIN).deriveHardened(BLOCKSTACK_ON_BITCOIN);\r\n}\r\nconst EXTERNAL_ADDRESS = 'EXTERNAL_ADDRESS';\r\nconst CHANGE_ADDRESS = 'CHANGE_ADDRESS';\r\nexport function getBitcoinPrivateKeychain(rootNode) {\r\n const BIP_44_PURPOSE = 44;\r\n const BITCOIN_COIN_TYPE = 0;\r\n const ACCOUNT_INDEX = 0;\r\n return rootNode\r\n .deriveHardened(BIP_44_PURPOSE)\r\n .deriveHardened(BITCOIN_COIN_TYPE)\r\n .deriveHardened(ACCOUNT_INDEX);\r\n}\r\nexport function getBitcoinAddressNode(bitcoinKeychain, addressIndex = 0, chainType = EXTERNAL_ADDRESS) {\r\n let chain = null;\r\n if (chainType === EXTERNAL_ADDRESS) {\r\n chain = 0;\r\n }\r\n else if (chainType === CHANGE_ADDRESS) {\r\n chain = 1;\r\n }\r\n else {\r\n throw new Error('Invalid chain type');\r\n }\r\n return bitcoinKeychain.derive(chain).derive(addressIndex);\r\n}\r\nexport async function getIdentityOwnerAddressNode(identityPrivateKeychain, identityIndex = 0) {\r\n if (identityPrivateKeychain.isNeutered()) {\r\n throw new Error('You need the private key to generate identity addresses');\r\n }\r\n const publicKeyHex = Buffer.from(identityPrivateKeychain.publicKey.toString('hex'));\r\n const sha2Hash = await createSha2Hash();\r\n const saltData = await sha2Hash.digest(publicKeyHex, 'sha256');\r\n const salt = saltData.toString('hex');\r\n return new IdentityAddressOwnerNode(identityPrivateKeychain.deriveHardened(identityIndex), salt);\r\n}\r\nexport function getAddress(node) {\r\n return publicKeyToAddress(node.publicKey);\r\n}\r\nexport function deriveIdentityKeyPair(identityOwnerAddressNode) {\r\n const address = identityOwnerAddressNode.getAddress();\r\n const identityKey = identityOwnerAddressNode.getIdentityKey();\r\n const identityKeyID = identityOwnerAddressNode.getIdentityKeyID();\r\n const appsNode = identityOwnerAddressNode.getAppsNode();\r\n const stxNode = identityOwnerAddressNode.getSTXNode();\r\n const keyPair = {\r\n key: identityKey,\r\n keyID: identityKeyID,\r\n address,\r\n appsNodeKey: appsNode.toBase58(),\r\n stxNodeKey: stxNode.toBase58(),\r\n salt: identityOwnerAddressNode.getSalt(),\r\n };\r\n return keyPair;\r\n}\r\nexport async function getBlockchainIdentities(rootNode, identitiesToGenerate) {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const bitcoinPrivateKeychainNode = getBitcoinPrivateKeychain(rootNode);\r\n const identityPublicKeychainNode = identityPrivateKeychainNode.neutered();\r\n const identityPublicKeychain = identityPublicKeychainNode.toBase58();\r\n const bitcoinPublicKeychainNode = bitcoinPrivateKeychainNode.neutered();\r\n const bitcoinPublicKeychain = bitcoinPublicKeychainNode.toBase58();\r\n const firstBitcoinAddress = getAddress(getBitcoinAddressNode(bitcoinPublicKeychainNode));\r\n const identityAddresses = [];\r\n const identityKeypairs = [];\r\n const identities = [];\r\n // We pre-generate a number of identity addresses so that we\r\n // don't have to prompt the user for the password on each new profile\r\n for (let addressIndex = 0; addressIndex < identitiesToGenerate; addressIndex++) {\r\n const identity = await makeIdentity(rootNode, addressIndex);\r\n identities.push(identity);\r\n identityKeypairs.push(identity.keyPair);\r\n identityAddresses.push(identity.address);\r\n }\r\n return {\r\n identityPublicKeychain,\r\n bitcoinPublicKeychain,\r\n firstBitcoinAddress,\r\n identityAddresses,\r\n identityKeypairs,\r\n identities,\r\n };\r\n}\r\nexport const makeIdentity = async (rootNode, index) => {\r\n const identityPrivateKeychainNode = getIdentityPrivateKeychain(rootNode);\r\n const identityOwnerAddressNode = await getIdentityOwnerAddressNode(identityPrivateKeychainNode, index);\r\n const identityKeyPair = deriveIdentityKeyPair(identityOwnerAddressNode);\r\n const identity = new Identity({\r\n keyPair: identityKeyPair,\r\n address: identityKeyPair.address,\r\n usernames: [],\r\n });\r\n return identity;\r\n};\r\nexport function assertIsTruthy(val) {\r\n if (!val) {\r\n throw new AssertionError({ expected: true, actual: val });\r\n }\r\n}\r\nexport var IdentityNameValidityError;\r\n(function (IdentityNameValidityError) {\r\n IdentityNameValidityError[\"MINIMUM_LENGTH\"] = \"error_minimum_length\";\r\n IdentityNameValidityError[\"MAXIMUM_LENGTH\"] = \"error_maximum_length\";\r\n IdentityNameValidityError[\"ILLEGAL_CHARACTER\"] = \"error_illegal_character\";\r\n IdentityNameValidityError[\"UNAVAILABLE\"] = \"error_name_unavailable\";\r\n})(IdentityNameValidityError || (IdentityNameValidityError = {}));\r\nconst containsLegalCharacters = (name) => /^[a-z0-9_]+$/.test(name);\r\nexport const validateSubdomainFormat = (identityName) => {\r\n const nameLength = identityName.length;\r\n if (nameLength < 8) {\r\n return IdentityNameValidityError.MINIMUM_LENGTH;\r\n }\r\n if (nameLength > 37) {\r\n return IdentityNameValidityError.MAXIMUM_LENGTH;\r\n }\r\n if (!containsLegalCharacters(identityName)) {\r\n return IdentityNameValidityError.ILLEGAL_CHARACTER;\r\n }\r\n return null;\r\n};\r\nexport const validateSubdomainAvailability = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const url = `${registrars[subdomain].apiUrl}/${name.toLowerCase()}.${subdomain}`;\r\n const resp = await fetch(url);\r\n const data = await resp.json();\r\n return data;\r\n};\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport const recursiveRestoreIdentities = async ({ rootNode, index = 1, identities = [], }) => {\r\n const identity = await makeIdentity(rootNode, index);\r\n await identity.refresh();\r\n if (identity.defaultUsername) {\r\n identities.push(identity);\r\n return recursiveRestoreIdentities({ rootNode, index: index + 1, identities });\r\n }\r\n return identities;\r\n};\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport const validateSubdomain = async (name, subdomain = Subdomains.BLOCKSTACK) => {\r\n const error = validateSubdomainFormat(name);\r\n if (error) {\r\n return error;\r\n }\r\n try {\r\n const data = await validateSubdomainAvailability(name, subdomain);\r\n if (data.status !== 'available') {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n }\r\n catch (error) {\r\n return IdentityNameValidityError.UNAVAILABLE;\r\n }\r\n return null;\r\n};\r\nexport const getProfileURLFromZoneFile = async (name) => {\r\n const url = `https://core.blockstack.org/v1/names/${name}`;\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const nameInfo = await res.json();\r\n const zone = parseZoneFile(nameInfo.zonefile);\r\n return zone.uri[0].target;\r\n }\r\n return;\r\n};\r\n//# sourceMappingURL=index.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/sha2Hash.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/zone-file/lib/index.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/assert/assert.js","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts"],"map":"{\"version\":3,\"file\":\"index.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/index.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/index.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nimport IdentityAddressOwnerNode from '../nodes/identity-address-owner-node';\r\nimport Identity from '../identity';\r\nimport { Subdomains } from '../profiles';\r\nexport declare function getIdentityPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinPrivateKeychain(rootNode: BIP32Interface): BIP32Interface;\r\nexport declare function getBitcoinAddressNode(bitcoinKeychain: BIP32Interface, addressIndex?: number, chainType?: string): BIP32Interface;\r\nexport declare function getIdentityOwnerAddressNode(identityPrivateKeychain: BIP32Interface, identityIndex?: number): Promise;\r\nexport declare function getAddress(node: BIP32Interface): string;\r\nexport interface IdentityKeyPair {\r\n key: string;\r\n keyID: string;\r\n address: string;\r\n appsNodeKey: string;\r\n stxNodeKey: string;\r\n salt: string;\r\n}\r\nexport declare function deriveIdentityKeyPair(identityOwnerAddressNode: IdentityAddressOwnerNode): IdentityKeyPair;\r\nexport declare function getBlockchainIdentities(rootNode: BIP32Interface, identitiesToGenerate: number): Promise<{\r\n identityPublicKeychain: string;\r\n bitcoinPublicKeychain: string;\r\n firstBitcoinAddress: string;\r\n identityAddresses: string[];\r\n identityKeypairs: IdentityKeyPair[];\r\n identities: Identity[];\r\n}>;\r\nexport declare const makeIdentity: (rootNode: BIP32Interface, index: number) => Promise;\r\nexport declare function assertIsTruthy(val: any): asserts val is NonNullable;\r\nexport declare enum IdentityNameValidityError {\r\n MINIMUM_LENGTH = \"error_minimum_length\",\r\n MAXIMUM_LENGTH = \"error_maximum_length\",\r\n ILLEGAL_CHARACTER = \"error_illegal_character\",\r\n UNAVAILABLE = \"error_name_unavailable\"\r\n}\r\nexport declare const validateSubdomainFormat: (identityName: string) => IdentityNameValidityError | null;\r\nexport declare const validateSubdomainAvailability: (name: string, subdomain?: Subdomains) => Promise;\r\ninterface RecursiveMakeIdentitiesOptions {\r\n rootNode: BIP32Interface;\r\n index?: number;\r\n identities?: Identity[];\r\n}\r\n/**\r\n * Restore identities by recursively making a new identity, and checking if it has a username.\r\n *\r\n * As soon as a username is not found for an identity, the recursion stops.\r\n */\r\nexport declare const recursiveRestoreIdentities: ({ rootNode, index, identities, }: RecursiveMakeIdentitiesOptions) => Promise;\r\n/**\r\n * Validate the format and availability of a subdomain. Will return an error of enum\r\n * IdentityNameValidityError if an error is present. If no errors are found, will return null.\r\n * @param name the subdomain to be registered\r\n * @param subdomain a valid Subdomains enum\r\n */\r\nexport declare const validateSubdomain: (name: string, subdomain?: Subdomains) => Promise;\r\nexport declare const getProfileURLFromZoneFile: (name: string) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index aaef254cd..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { getLegacyAppNode } from 'blockstack/lib/wallet';\r\nimport { publicKeyToAddress } from 'blockstack/lib/keys';\r\nimport { getAddress } from '../utils';\r\nconst APPS_NODE_INDEX = 0;\r\nconst SIGNING_NODE_INDEX = 1;\r\nconst ENCRYPTION_NODE_INDEX = 2;\r\nconst STX_NODE_INDEX = 6;\r\nexport default class IdentityAddressOwnerNode {\r\n constructor(ownerHdNode, salt) {\r\n this.hdNode = ownerHdNode;\r\n this.salt = salt;\r\n }\r\n getNode() {\r\n return this.hdNode;\r\n }\r\n getSalt() {\r\n return this.salt;\r\n }\r\n getIdentityKey() {\r\n if (!this.hdNode.privateKey) {\r\n throw new Error('Node does not have private key');\r\n }\r\n return this.hdNode.privateKey.toString('hex');\r\n }\r\n getIdentityKeyID() {\r\n return this.hdNode.publicKey.toString('hex');\r\n }\r\n getAppsNode() {\r\n return this.hdNode.deriveHardened(APPS_NODE_INDEX);\r\n }\r\n getAddress() {\r\n return getAddress(this.hdNode);\r\n }\r\n getEncryptionNode() {\r\n return this.hdNode.deriveHardened(ENCRYPTION_NODE_INDEX);\r\n }\r\n getSigningNode() {\r\n return this.hdNode.deriveHardened(SIGNING_NODE_INDEX);\r\n }\r\n getSTXNode() {\r\n return this.hdNode.deriveHardened(STX_NODE_INDEX);\r\n }\r\n getAppNode(appDomain) {\r\n return getLegacyAppNode(this.hdNode, this.salt, appDomain);\r\n }\r\n getAppPrivateKey(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n if (!appNode.privateKey) {\r\n throw new Error('App node does not have private key');\r\n }\r\n return appNode.privateKey.toString('hex');\r\n }\r\n getAppAddress(appDomain) {\r\n const appNode = this.getAppNode(appDomain);\r\n return publicKeyToAddress(appNode.publicKey);\r\n }\r\n}\r\n//# sourceMappingURL=identity-address-owner-node.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/wallet.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts"],"map":"{\"version\":3,\"file\":\"identity-address-owner-node.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/nodes/identity-address-owner-node.ts\"],\"names\":[],\"mappings\":\"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,CAAC,OAAO,OAAO,wBAAwB;IAK3C,YAAY,WAA2B,EAAE,IAAY;QACnD,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;QACR,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/nodes/identity-address-owner-node.d.ts","writeByteOrderMark":false,"text":"import { BIP32Interface } from 'bitcoinjs-lib';\r\nexport default class IdentityAddressOwnerNode {\r\n hdNode: BIP32Interface;\r\n salt: string;\r\n constructor(ownerHdNode: BIP32Interface, salt: string);\r\n getNode(): BIP32Interface;\r\n getSalt(): string;\r\n getIdentityKey(): string;\r\n getIdentityKeyID(): string;\r\n getAppsNode(): BIP32Interface;\r\n getAddress(): string;\r\n getEncryptionNode(): BIP32Interface;\r\n getSigningNode(): BIP32Interface;\r\n getSTXNode(): BIP32Interface;\r\n getAppNode(appDomain: string): BIP32Interface;\r\n getAppPrivateKey(appDomain: string): string;\r\n getAppAddress(appDomain: string): string;\r\n}\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index 1104190d1..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { signProfileToken, wrapProfileToken, connectToGaiaHub, makeProfileZoneFile, } from 'blockstack';\r\nimport { uploadToGaiaHub } from './utils/gaia';\r\nconst PERSON_TYPE = 'Person';\r\nconst CONTEXT = 'http://schema.org';\r\nconst IMAGE_TYPE = 'ImageObject';\r\nexport const DEFAULT_PROFILE = {\r\n '@type': 'Person',\r\n '@context': 'http://schema.org',\r\n};\r\nconst DEFAULT_PROFILE_FILE_NAME = 'profile.json';\r\nexport var Subdomains;\r\n(function (Subdomains) {\r\n Subdomains[\"TEST\"] = \"test-personal.id\";\r\n Subdomains[\"BLOCKSTACK\"] = \"id.blockstack\";\r\n})(Subdomains || (Subdomains = {}));\r\nexport const registrars = {\r\n [Subdomains.TEST]: {\r\n registerUrl: 'https://test-registrar.blockstack.org/register',\r\n apiUrl: 'https://test-registrar.blockstack.org/v1/names',\r\n },\r\n [Subdomains.BLOCKSTACK]: {\r\n registerUrl: 'https://registrar.blockstack.org/register',\r\n apiUrl: 'https://registrar.blockstack.org/v1/names',\r\n },\r\n};\r\nexport function signProfileForUpload(profile, keypair) {\r\n const privateKey = keypair.key;\r\n const publicKey = keypair.keyID;\r\n const token = signProfileToken(profile, privateKey, { publicKey });\r\n const tokenRecord = wrapProfileToken(token);\r\n const tokenRecords = [tokenRecord];\r\n return JSON.stringify(tokenRecords, null, 2);\r\n}\r\nexport async function uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig) {\r\n const identityHubConfig = gaiaHubConfig || (await connectToGaiaHub(gaiaHubUrl, identity.keyPair.key));\r\n const uploadResponse = await uploadToGaiaHub(DEFAULT_PROFILE_FILE_NAME, signedProfileTokenData, identityHubConfig);\r\n return uploadResponse;\r\n}\r\nconst sendUsernameToRegistrar = async ({ username, subdomain, zoneFile, identity, }) => {\r\n const { registerUrl } = registrars[subdomain];\r\n const registrationRequestBody = JSON.stringify({\r\n name: username,\r\n owner_address: identity.address,\r\n zonefile: zoneFile,\r\n });\r\n const requestHeaders = {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n };\r\n const response = await fetch(registerUrl, {\r\n method: 'POST',\r\n headers: requestHeaders,\r\n body: registrationRequestBody,\r\n });\r\n if (!response.ok) {\r\n return Promise.reject({\r\n error: 'Failed to register username',\r\n status: response.status,\r\n });\r\n }\r\n return response.json();\r\n};\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport const registerSubdomain = async ({ identity, gaiaHubUrl, username, subdomain, }) => {\r\n const profile = identity.profile || DEFAULT_PROFILE;\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n const profileUrl = await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData);\r\n const fullUsername = `${username}.${subdomain}`;\r\n const zoneFile = makeProfileZoneFile(fullUsername, profileUrl);\r\n await sendUsernameToRegistrar({\r\n username,\r\n subdomain,\r\n zoneFile,\r\n identity,\r\n });\r\n identity.defaultUsername = fullUsername;\r\n identity.usernames.push(fullUsername);\r\n return identity;\r\n};\r\nexport const signAndUploadProfile = async ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }) => {\r\n const signedProfileTokenData = signProfileForUpload(profile, identity.keyPair);\r\n await uploadProfile(gaiaHubUrl, identity, signedProfileTokenData, gaiaHubConfig);\r\n};\r\nexport const fetchProfile = async ({ identity, gaiaUrl, }) => {\r\n try {\r\n const url = await identity.profileUrl(gaiaUrl);\r\n const res = await fetch(url);\r\n if (res.ok) {\r\n const json = await res.json();\r\n const { decodedToken } = json[0];\r\n return decodedToken.payload?.claim;\r\n }\r\n if (res.status === 404) {\r\n return null;\r\n }\r\n throw new Error('Network error when fetching profile');\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n};\r\n//# sourceMappingURL=profiles.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/identity.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"profiles.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/profiles.ts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAI/C,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC7B,MAAM,OAAO,GAAG,mBAAmB,CAAC;AACpC,MAAM,UAAU,GAAG,aAAa,CAAC;AAyBjC,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,mBAAmB;CAChC,CAAC;AAEF,MAAM,yBAAyB,GAAG,cAAc,CAAC;AAEjD,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,0CAA4B,CAAA;AAC9B,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACjB,WAAW,EAAE,gDAAgD;QAC7D,MAAM,EAAE,gDAAgD;KACzD;IACD,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QACvB,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE,2CAA2C;KACpD;CACF,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,OAAwB;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAEhC,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAkB,EAClB,QAAkB,EAClB,sBAA8B,EAC9B,aAA6B;IAE7B,MAAM,iBAAiB,GACrB,aAAa,IAAI,CAAC,MAAM,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9E,MAAM,cAAc,GAAG,MAAM,eAAe,CAC1C,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,CAClB,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC;AASD,MAAM,uBAAuB,GAAG,KAAK,EAAE,EACrC,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,GACc,EAAE,EAAE;IAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAE9C,MAAM,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,QAAQ;QACd,aAAa,EAAE,QAAQ,CAAC,OAAO;QAC/B,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG;QACrB,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACxC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,uBAAuB;KAC9B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;QAChB,OAAO,OAAO,CAAC,MAAM,CAAC;YACpB,KAAK,EAAE,6BAA6B;YACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;KACJ;IAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC,CAAC;AAYF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,GACM,EAAE,EAAE;IACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,eAAe,CAAC;IACpD,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;IACrF,MAAM,YAAY,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,uBAAuB,CAAC;QAC5B,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IACH,QAAQ,CAAC,eAAe,GAAG,YAAY,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,GAMd,EAAE,EAAE;IACH,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/E,MAAM,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,sBAAsB,EAAE,aAAa,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,EACjC,QAAQ,EACR,OAAO,GAIR,EAAE,EAAE;IACH,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,GAAG,CAAC,EAAE,EAAE;YACV,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,OAAO,YAAY,CAAC,OAAO,EAAE,KAAgB,CAAC;SAC/C;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;YACtB,OAAO,IAAI,CAAC;SACb;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;KACxD;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAC\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/profiles.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils';\r\nimport Identity from './identity';\r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\ndeclare const PERSON_TYPE = \"Person\";\r\ndeclare const CONTEXT = \"http://schema.org\";\r\ndeclare const IMAGE_TYPE = \"ImageObject\";\r\nexport interface ProfileImage {\r\n '@type': typeof IMAGE_TYPE;\r\n name: string;\r\n contentUrl: string;\r\n}\r\nexport interface Profile {\r\n '@type': typeof PERSON_TYPE;\r\n '@context': typeof CONTEXT;\r\n apps?: {\r\n [origin: string]: string;\r\n };\r\n appsMeta?: {\r\n [origin: string]: {\r\n publicKey: string;\r\n storage: string;\r\n };\r\n };\r\n name?: string;\r\n image?: ProfileImage[];\r\n [key: string]: any;\r\n}\r\nexport declare const DEFAULT_PROFILE: Profile;\r\nexport declare enum Subdomains {\r\n TEST = \"test-personal.id\",\r\n BLOCKSTACK = \"id.blockstack\"\r\n}\r\nexport declare const registrars: {\r\n \"test-personal.id\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n \"id.blockstack\": {\r\n registerUrl: string;\r\n apiUrl: string;\r\n };\r\n};\r\nexport declare function signProfileForUpload(profile: Profile, keypair: IdentityKeyPair): string;\r\nexport declare function uploadProfile(gaiaHubUrl: string, identity: Identity, signedProfileTokenData: string, gaiaHubConfig?: GaiaHubConfig): Promise;\r\ninterface RegisterParams {\r\n identity: Identity;\r\n /** The gaia hub URL to use for profile.json upload */\r\n gaiaHubUrl: string;\r\n /** The username portion of this subdomain, i.e. only the portion of the name before any periods */\r\n username: string;\r\n /** The \"domain\" used for this subdomain. Can be any of the `Subdomains` enum. */\r\n subdomain: Subdomains;\r\n}\r\n/**\r\n * Register a subdomain for a given identity\r\n */\r\nexport declare const registerSubdomain: ({ identity, gaiaHubUrl, username, subdomain, }: RegisterParams) => Promise;\r\nexport declare const signAndUploadProfile: ({ profile, gaiaHubUrl, identity, gaiaHubConfig, }: {\r\n profile: Profile;\r\n gaiaHubUrl: string;\r\n identity: Identity;\r\n gaiaHubConfig?: GaiaHubConfig | undefined;\r\n}) => Promise;\r\nexport declare const fetchProfile: ({ identity, gaiaUrl, }: {\r\n identity: Identity;\r\n gaiaUrl: string;\r\n}) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index 7edbdd5e7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { bip32, ECPair } from 'bitcoinjs-lib';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { makeAuthResponse } from 'blockstack/lib/auth/authMessages';\r\nimport { getProfileURLFromZoneFile } from './utils';\r\nimport { makeGaiaAssociationToken, DEFAULT_GAIA_HUB, getHubInfo, connectToGaiaHubWithConfig, } from './utils/gaia';\r\nimport IdentityAddressOwnerNode from './nodes/identity-address-owner-node';\r\nimport { fetchProfile, DEFAULT_PROFILE, signAndUploadProfile } from './profiles';\r\nimport { ecPairToAddress } from 'blockstack';\r\nexport class Identity {\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }) {\r\n this.keyPair = keyPair;\r\n this.address = address;\r\n this.usernames = usernames || [];\r\n this.defaultUsername = defaultUsername;\r\n this.profile = profile;\r\n }\r\n async makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes = [], stxAddress, }) {\r\n const appPrivateKey = this.appPrivateKey(appDomain);\r\n const hubInfo = await getHubInfo(gaiaUrl);\r\n const profileUrl = await this.profileUrl(hubInfo.read_url_prefix);\r\n const profile = (await fetchProfile({ identity: this, gaiaUrl: hubInfo.read_url_prefix })) || DEFAULT_PROFILE;\r\n if (scopes.includes('publish_data')) {\r\n if (!profile.apps) {\r\n profile.apps = {};\r\n }\r\n const challengeSigner = ECPair.fromPrivateKey(Buffer.from(appPrivateKey, 'hex'));\r\n const storageUrl = `${hubInfo.read_url_prefix}${ecPairToAddress(challengeSigner)}/`;\r\n profile.apps[appDomain] = storageUrl;\r\n if (!profile.appsMeta) {\r\n profile.appsMeta = {};\r\n }\r\n profile.appsMeta[appDomain] = {\r\n storage: storageUrl,\r\n publicKey: challengeSigner.publicKey.toString('hex'),\r\n };\r\n const gaiaHubConfig = connectToGaiaHubWithConfig({\r\n hubInfo,\r\n privateKey: this.keyPair.key,\r\n gaiaHubUrl: gaiaUrl,\r\n });\r\n await signAndUploadProfile({ profile, identity: this, gaiaHubUrl: gaiaUrl, gaiaHubConfig });\r\n }\r\n this.profile = profile;\r\n const compressedAppPublicKey = getPublicKeyFromPrivate(appPrivateKey.slice(0, 64));\r\n const associationToken = makeGaiaAssociationToken(this.keyPair.key, compressedAppPublicKey);\r\n return makeAuthResponse(this.keyPair.key, {\r\n ...(this.profile || {}),\r\n stxAddress,\r\n }, this.defaultUsername || '', {\r\n profileUrl,\r\n }, undefined, appPrivateKey, undefined, transitPublicKey, gaiaUrl, undefined, associationToken);\r\n }\r\n appPrivateKey(appDomain) {\r\n const { salt, appsNodeKey } = this.keyPair;\r\n const appsNode = new IdentityAddressOwnerNode(bip32.fromBase58(appsNodeKey), salt);\r\n return appsNode.getAppPrivateKey(appDomain);\r\n }\r\n async profileUrl(gaiaUrl) {\r\n if (this.defaultUsername) {\r\n try {\r\n const url = await getProfileURLFromZoneFile(this.defaultUsername);\r\n if (url)\r\n return url;\r\n }\r\n catch (error) {\r\n if (process.env.NODE_ENV !== 'test') {\r\n console.warn('Error fetching profile URL from zone file:', error);\r\n }\r\n }\r\n }\r\n return `${gaiaUrl}${this.address}/profile.json`;\r\n }\r\n async fetchNames() {\r\n const getNamesUrl = `https://core.blockstack.org/v1/addresses/bitcoin/${this.address}`;\r\n const res = await fetch(getNamesUrl);\r\n const data = await res.json();\r\n const { names } = data;\r\n return names;\r\n }\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n async refresh(opts = { gaiaUrl: DEFAULT_GAIA_HUB }) {\r\n try {\r\n const names = await this.fetchNames();\r\n if (names) {\r\n if (names[0] && !this.defaultUsername) {\r\n this.defaultUsername = names[0];\r\n }\r\n names.forEach(name => {\r\n const existingIndex = this.usernames.findIndex(u => u === name);\r\n if (existingIndex === -1) {\r\n this.usernames.push(name);\r\n }\r\n });\r\n }\r\n const profile = await fetchProfile({ identity: this, gaiaUrl: opts.gaiaUrl });\r\n if (profile) {\r\n this.profile = profile;\r\n }\r\n return;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n }\r\n}\r\nexport default Identity;\r\n//# sourceMappingURL=identity.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/auth/authMessages.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/gaia.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/nodes/identity-address-owner-node.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/profiles.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts"],"map":"{\"version\":3,\"file\":\"identity.js\",\"sourceRoot\":\"\",\"sources\":[\"../../src/identity.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/identity.d.ts","writeByteOrderMark":false,"text":"import { IdentityKeyPair } from './utils/index';\r\nimport { Profile } from './profiles';\r\ninterface IdentityConstructorOptions {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n usernames?: string[];\r\n defaultUsername?: string;\r\n profile?: Profile;\r\n}\r\ninterface RefreshOptions {\r\n gaiaUrl: string;\r\n}\r\nexport declare class Identity {\r\n keyPair: IdentityKeyPair;\r\n address: string;\r\n defaultUsername?: string;\r\n usernames: string[];\r\n profile?: Profile;\r\n constructor({ keyPair, address, usernames, defaultUsername, profile, }: IdentityConstructorOptions);\r\n makeAuthResponse({ appDomain, gaiaUrl, transitPublicKey, scopes, stxAddress, }: {\r\n appDomain: string;\r\n gaiaUrl: string;\r\n transitPublicKey: string;\r\n scopes?: string[];\r\n stxAddress?: string;\r\n }): Promise;\r\n appPrivateKey(appDomain: string): string;\r\n profileUrl(gaiaUrl: string): Promise;\r\n fetchNames(): Promise;\r\n /**\r\n * Fetch existing information related to this identity, like username and profile information\r\n */\r\n refresh(opts?: RefreshOptions): Promise;\r\n}\r\nexport default Identity;\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index d1e50fabe..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { makeContractCall, makeContractDeploy, StacksTestnet, makeSTXTokenTransfer, getAddressFromPrivateKey, } from '@blockstack/stacks-transactions';\r\nimport { bip32 } from 'bitcoinjs-lib';\r\nimport { assertIsTruthy } from '../utils';\r\nimport BN from 'bn.js';\r\nexport class WalletSigner {\r\n constructor({ privateKey }) {\r\n this.privateKey = privateKey;\r\n }\r\n getSTXAddress(version) {\r\n return getAddressFromPrivateKey(this.getSTXPrivateKey(), version);\r\n }\r\n getSTXPrivateKey() {\r\n const node = bip32.fromBase58(this.privateKey);\r\n assertIsTruthy(node.privateKey);\r\n return node.privateKey;\r\n }\r\n getNetwork() {\r\n const network = new StacksTestnet();\r\n network.coreApiUrl = 'https://sidecar.staging.blockstack.xyz';\r\n return network;\r\n }\r\n async fetchAccount({ version, rpcClient, }) {\r\n const address = this.getSTXAddress(version);\r\n const account = await rpcClient.fetchAccount(address);\r\n return account;\r\n }\r\n async signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractCall({\r\n contractAddress,\r\n contractName,\r\n functionName,\r\n functionArgs,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n nonce: new BN(nonce),\r\n network: this.getNetwork(),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeContractDeploy({\r\n contractName,\r\n codeBody: codeBody,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n async signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }) {\r\n const tx = await makeSTXTokenTransfer({\r\n recipient,\r\n amount: new BN(amount),\r\n memo,\r\n senderKey: this.getSTXPrivateKey().toString('hex'),\r\n network: this.getNetwork(),\r\n nonce: new BN(nonce),\r\n postConditionMode,\r\n postConditions,\r\n });\r\n return tx;\r\n }\r\n}\r\n//# sourceMappingURL=signer.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/stacks-transactions/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@blockstack/rpc-client/dist/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/node_modules/bitcoinjs-lib/types/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/src/utils/index.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/@types/bn.js/index.d.ts"],"map":"{\"version\":3,\"file\":\"signer.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/wallet/signer.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/wallet/signer.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { TransactionVersion, ClarityValue, StacksTestnet, PostConditionMode, PostCondition, StacksNetwork } from '@blockstack/stacks-transactions';\r\nimport RPCClient from '@blockstack/rpc-client';\r\ninterface ContractCallOptions {\r\n contractName: string;\r\n contractAddress: string;\r\n functionName: string;\r\n functionArgs: ClarityValue[];\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface ContractDeployOptions {\r\n contractName: string;\r\n codeBody: string;\r\n version: TransactionVersion;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\ninterface STXTransferOptions {\r\n recipient: string;\r\n amount: string;\r\n memo?: string;\r\n nonce: number;\r\n postConditions?: PostCondition[];\r\n postConditionMode?: PostConditionMode;\r\n network?: StacksNetwork;\r\n}\r\nexport declare class WalletSigner {\r\n privateKey: string;\r\n constructor({ privateKey }: {\r\n privateKey: string;\r\n });\r\n getSTXAddress(version: TransactionVersion): string;\r\n getSTXPrivateKey(): Buffer;\r\n getNetwork(): StacksTestnet;\r\n fetchAccount({ version, rpcClient, }: {\r\n version: TransactionVersion;\r\n rpcClient: RPCClient;\r\n }): Promise;\r\n signContractCall({ contractName, contractAddress, functionName, functionArgs, nonce, postConditionMode, postConditions, }: ContractCallOptions): Promise;\r\n signContractDeploy({ contractName, codeBody, nonce, postConditionMode, postConditions, }: ContractDeployOptions): Promise;\r\n signSTXTransfer({ recipient, amount, memo, nonce, postConditionMode, postConditions, }: STXTransferOptions): Promise;\r\n}\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index 796e4be36..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/code/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -{"code":"import { TokenSigner } from 'jsontokens';\r\nimport { getPublicKeyFromPrivate } from 'blockstack/lib/keys';\r\nimport { randomBytes } from 'blockstack/lib/encryption/cryptoRandom';\r\nimport { ecPairToAddress, hexStringToECPair } from 'blockstack';\r\nexport const DEFAULT_GAIA_HUB = 'https://gaia.blockstack.org/hub/';\r\nexport const getHubInfo = async (hubUrl) => {\r\n const response = await fetch(`${hubUrl}/hub_info`);\r\n const data = await response.json();\r\n return data;\r\n};\r\nexport const getHubPrefix = async (hubUrl) => {\r\n const { read_url_prefix } = await getHubInfo(hubUrl);\r\n return read_url_prefix;\r\n};\r\nexport const makeGaiaAssociationToken = (secretKeyHex, childPublicKeyHex) => {\r\n const LIFETIME_SECONDS = 365 * 24 * 3600;\r\n const signerKeyHex = secretKeyHex.slice(0, 64);\r\n const compressedPublicKeyHex = getPublicKeyFromPrivate(signerKeyHex);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n childToAssociate: childPublicKeyHex,\r\n iss: compressedPublicKeyHex,\r\n exp: LIFETIME_SECONDS + new Date().getTime() / 1000,\r\n iat: Date.now() / 1000,\r\n salt,\r\n };\r\n const tokenSigner = new TokenSigner('ES256K', signerKeyHex);\r\n const token = tokenSigner.sign(payload);\r\n return token;\r\n};\r\nexport const connectToGaiaHubWithConfig = ({ hubInfo, privateKey, gaiaHubUrl, }) => {\r\n const readURL = hubInfo.read_url_prefix;\r\n const token = makeGaiaAuthToken({ hubInfo, privateKey, gaiaHubUrl });\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token,\r\n server: gaiaHubUrl,\r\n };\r\n};\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport const makeReadOnlyGaiaConfig = ({ readURL, privateKey, }) => {\r\n const address = ecPairToAddress(hexStringToECPair(privateKey + (privateKey.length === 64 ? '01' : '')));\r\n return {\r\n url_prefix: readURL,\r\n max_file_upload_size_megabytes: 100,\r\n address,\r\n token: 'not_used',\r\n server: 'not_used',\r\n };\r\n};\r\nconst makeGaiaAuthToken = ({ hubInfo, privateKey, gaiaHubUrl }) => {\r\n const challengeText = hubInfo.challenge_text;\r\n const iss = getPublicKeyFromPrivate(privateKey);\r\n const salt = randomBytes(16).toString('hex');\r\n const payload = {\r\n gaiaHubUrl,\r\n iss,\r\n salt,\r\n };\r\n if (challengeText) {\r\n payload.gaiaChallenge = challengeText;\r\n }\r\n const token = new TokenSigner('ES256K', privateKey).sign(payload);\r\n return `v1:${token}`;\r\n};\r\nexport const uploadToGaiaHub = async (filename, contents, hubConfig) => {\r\n const contentType = 'application/json';\r\n const response = await fetch(`${hubConfig.server}/store/${hubConfig.address}/${filename}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': contentType,\r\n Authorization: `bearer ${hubConfig.token}`,\r\n },\r\n body: contents,\r\n referrer: 'no-referrer',\r\n referrerPolicy: 'no-referrer',\r\n });\r\n const { publicURL } = await response.json();\r\n return publicURL;\r\n};\r\n//# sourceMappingURL=gaia.js.map","references":["/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/jsontokens/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/keys.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/encryption/cryptoRandom.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/index.d.ts","/Users/Yukan/Desktop/work/blockstack/stacks.js/node_modules/blockstack/lib/storage/hub.d.ts"],"map":"{\"version\":3,\"file\":\"gaia.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/utils/gaia.ts\"],\"names\":[],\"mappings\":\"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\"}","dts":{"name":"/Users/Yukan/Desktop/work/blockstack/stacks.js/packages/keychain/utils/gaia.d.ts","writeByteOrderMark":false,"text":"/// \r\nimport { GaiaHubConfig } from 'blockstack/lib/storage/hub';\r\nexport declare const DEFAULT_GAIA_HUB = \"https://gaia.blockstack.org/hub/\";\r\ninterface HubInfo {\r\n challenge_text?: string;\r\n read_url_prefix: string;\r\n}\r\nexport declare const getHubInfo: (hubUrl: string) => Promise;\r\nexport declare const getHubPrefix: (hubUrl: string) => Promise;\r\nexport declare const makeGaiaAssociationToken: (secretKeyHex: string, childPublicKeyHex: string) => string;\r\ninterface ConnectToGaiaOptions {\r\n hubInfo: HubInfo;\r\n privateKey: string;\r\n gaiaHubUrl: string;\r\n}\r\nexport declare const connectToGaiaHubWithConfig: ({ hubInfo, privateKey, gaiaHubUrl, }: ConnectToGaiaOptions) => GaiaHubConfig;\r\ninterface ReadOnlyGaiaConfigOptions {\r\n readURL: string;\r\n privateKey: string;\r\n}\r\n/**\r\n * When you already know the Gaia read URL, make a Gaia config that doesn't have to fetch `/hub_info`\r\n */\r\nexport declare const makeReadOnlyGaiaConfig: ({ readURL, privateKey, }: ReadOnlyGaiaConfigOptions) => GaiaHubConfig;\r\nexport declare const uploadToGaiaHub: (filename: string, contents: Blob | Buffer | ArrayBufferView | string, hubConfig: GaiaHubConfig) => Promise;\r\nexport {};\r\n"}} diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/semanticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/13205ad398a43e460b6d020ace429ae0e402d81c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/1a8c0b6b5298dfc08d6fb8f612117758f72c926c +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/45640da831af9251e3e0a267bb25325b1a5f1c6d +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/583c0db565c43efc8d8092079c22a079d6a6616a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/68faf2e2e76e8c0b8d3f6b3d1b0f769f3e210b06 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/8c894a8f1f8464e6eeca424a3f197b1c3a8baa5a +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/98e2ad19af17ce694186201b537c60c71e2375eb +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/cfe0e5d47dbef6cb464e0b40939f015ab4348e19 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/e1a34eceff5cefebe7e287b9c11f870a3860728b +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/ee82aa9feb8685e9267176ef94f3c7a3f70999b0 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/f77f65834a206228f8276350a71aa5e8683e1dd1 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 deleted file mode 100644 index fe51488c7..000000000 --- a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/syntacticDiagnostics/cache/fa8e5a38ce41162270b1ceba3dc7776b1a57eb33 +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/018dd99255a534837916033f04b396b3c5b771ad b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/018dd99255a534837916033f04b396b3c5b771ad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/061a2a662a532413fb382823dd2453c8537b4338 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/061a2a662a532413fb382823dd2453c8537b4338 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/0a3685808888de90b1b3ecb36564030637748ab4 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/0a446c325cb8c24fe811c6b19aab7ab275c0db86 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/15bd539a8b73339bee06677ee708a3282bbc9381 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/20a495fb1dfe731713dfda92e7a4719aab33fa3f deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/28bd272a34625bd8e74ee2237a679979e14acd69 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/298c4c482e5e8695fe5b439f9bd4a710f5476742 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/2c3d9cd8ceb5c0183b19b2b638e291bc525011ce deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/314c9c585547e1ee805fe1597f307af31b72559c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/314c9c585547e1ee805fe1597f307af31b72559c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/3610ab0cae618e49ed640a6de622cab1867a3279 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/39f625af48fcdb5e736b8a9ab0f109480c95510e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/420b2f97ccbc239de9691385af956534d4545c2c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/420b2f97ccbc239de9691385af956534d4545c2c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/4796d97ff3ea5e5caa9fe28a603eb51d36712156 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/4b0bf9b03b333369e35cfa3d0b3c209bcaeb4102 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/4cfe53f7d2be6c72b1495a9756434179a44adac5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/4f4b91b5ea480a58d20a40be48fe5eeef8cec235 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/52c95394db9042c340e050a9daf07c220e13c1a9 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/5636ae99aac5467ffdd23e74452bc16e2f851a89 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/5b3ce567ec9254d08d8f4a28e1de72024ba6b311 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/5d505bd6033614b83472130afc442eb22c6f5b82 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/68a97be92cadc023d3b6c6b48771d54104a78627 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/747cee4b5246f21f7ceafab1c30bbe1c04e0a8f5 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/74d99e3f4913186c7d910fdb89fd70b4c52c0165 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/77be180552308ee56eca33fa0bb84265c89dbfa0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/7ddb0f66786a3703f3f195c455a12bff889c8bcd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/7f9c457a28805a67029ffd99e65c70684da51c50 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/808e8c20e1197288fb985d7783266d2f2e22f6f2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/81beb3f96fea6641c58362feec8bbd0bfc8388eb deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/826f10c8f5ae490a156c6929d4b35933ba672a51 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/875bcbf69bfdbe6fd33dceca271e7a29b3cb6a54 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/8ce3136d5e93f85302e65da07c4490e75920e111 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/8ed0c355c44d51d3dec8e3367d6d7378f1b1e331 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/952b3e2542bee782b990d0b76011cd46028160a2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/98cea4347c2c64de95d06bb8d324c781f54b78c0 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/9a77639b5f3a7e3514cf67391c5346777e65ca11 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/9ed2612615091d088e52b934dbdc159280dc237c b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/9ed2612615091d088e52b934dbdc159280dc237c deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/a1afc86caf79df50b054cb5aeceb661e6c52dcad deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/a2503f6faa05b23568c7de81fbc06a2f8a9c5653 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/a57444ecf97c5452d43fd234f345ed3cb6d284dd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/a7d095190f82312241dfeb26daa76e95c4ea07d8 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/af470c7a1abb2658e06e01a602fccbcdfeca5351 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/b76be8f94a8337c1ece3bcfc01c0959eb2714479 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/bb232be6f4e91036318a1c4c8bab84163fee3069 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/c3d05c43e37392271aa3b4b0f9b30f425dc65f94 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/cb06d8f5731aa84e96067f43359e74f9836130af deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/cb9a36baab558a41562633e18c5201d5d5568cdc deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/cd8445e3b03d9c3b1dec11ef365aff4222641c73 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/d19188fc31e61bc54c1f1846312e66f6e09a3f0e deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/d7ca5917d30929d28c7417f16f9a01a37bbfcdb7 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/df3accc7b1f17bfe1818f68f26a3c075ca29d4bd deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/e037b1c1df5b9423d795f7a6a8876408105d8566 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/ee827e2392a2ccd738741679fcd76b97d0516c90 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/f2dfa032b844e39c4a65c35652abc193da342e75 deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/fae54f93545510c8db4ed307ea8397a19112446a b/packages/keychain/.rts2_cache_umd/rpt2_bcb599879d2f4a927633b5387708a3f988eb56e3/types/cache/fae54f93545510c8db4ed307ea8397a19112446a deleted file mode 100644 index e69de29bb..000000000