@moonpay/cli 1.95.1 → 1.95.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-745VA5DS.js → chunk-AU32FL5L.js} +2 -2
- package/dist/chunk-BDM2U2ST.js +59 -0
- package/dist/{chunk-TTV2RQ6O.js → chunk-DMCAJZWM.js} +1 -1
- package/dist/{chunk-MOJDU2IZ.js → chunk-WKZIYMFB.js} +1 -1
- package/dist/chunk-YZTBTAFU.js +2 -0
- package/dist/{client-OX7ML2LX.js → client-VRIXGTN7.js} +1 -1
- package/dist/index.js +8 -8
- package/dist/{ledger-IUOQQ35J.js → ledger-L6J5DMBE.js} +2 -2
- package/dist/{mcp-4ZMDZ4UK.js → mcp-QWOKRZ6W.js} +1 -1
- package/dist/{serve-EJABLQP3.js → serve-Z4X3GZ3S.js} +1 -1
- package/dist/{store-PONLTJIU.js → store-MRCV5K7Y.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-GIKLJBXV.js +0 -2
- package/dist/chunk-VISYJSCY.js +0 -59
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
process.noDeprecation = true; import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
|
|
2
|
-
import{a as G,b as T,c as L,d as Z,h as D,p as Q}from"./chunk-
|
|
2
|
+
import{a as G,b as T,c as L,d as Z,h as D,p as Q}from"./chunk-DMCAJZWM.js";import{a as V,f as I}from"./chunk-LMDE72OE.js";import{existsSync as H,readFileSync as J,writeFileSync as ge,renameSync as Y}from"fs";import{join as S}from"path";import{homedir as we}from"os";import{randomBytes as ve}from"crypto";import*as i from"@open-wallet-standard/core";import q from"bs58";T();import{z as s}from"zod";var M={"eip155:1":"ethereum","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp":"solana","bip122:000000000019d6689c085ae165831e93":"bitcoin","tron:mainnet":"tron","ton:mainnet":"ton","fil:mainnet":"filecoin"};function R(e){return e==="evm"?"ethereum":e}var E=s.object({solana:s.string().optional(),ethereum:s.string().optional(),bitcoin:s.string().optional(),tron:s.string().optional(),ton:s.string().optional(),filecoin:s.string().optional()}),X=["base","arbitrum","robinhood","polygon","optimism","bnb","bnb-testnet","avalanche","tempo","tempo-moderato","ethereum-sepolia","base-sepolia","arbitrum-sepolia","polygon-amoy"];function Te(e){let t={};if(e.solana&&(t.solana=e.solana,t["solana-devnet"]=e.solana),e.ethereum){t.ethereum=e.ethereum;for(let r of X)t[r]=e.ethereum}return e.bitcoin&&(t.bitcoin=e.bitcoin),e.tron&&(t.tron=e.tron),e.ton&&(t.ton=e.ton),e.filecoin&&(t.filecoin=e.filecoin),t}var ee=s.object({name:s.string(),type:s.literal("hd"),mnemonic:s.string().optional(),addresses:E,createdAt:s.string()}),te=s.object({name:s.string(),type:s.literal("imported"),chain:s.string().optional(),privateKey:s.string().optional(),addresses:E,createdAt:s.string()}),U=s.enum(["ledger"]),$=s.object({name:s.string(),type:s.literal("hardware"),device:U,addresses:E,createdAt:s.string()}),De=s.discriminatedUnion("type",[ee,te,$]),Me=s.object({name:s.string(),type:s.enum(["hd","imported","hardware"]),device:U.optional(),addresses:s.record(s.string(),s.string()),createdAt:s.string()});import{createHash as _}from"crypto";import{HDKey as x}from"@scure/bip32";import{mnemonicToSeedSync as y}from"@scure/bip39";import{keccak_256 as B}from"@noble/hashes/sha3";import{derivePath as j}from"ed25519-hd-key";import*as O from"bitcoinjs-lib";import re from"ecpair";import*as K from"@bitcoinerlab/secp256k1";import{Keypair as ne}from"@solana/web3.js";import oe from"bs58";import{WalletContractV5R1 as ie}from"@ton/ton";import{keyPairFromSeed as se}from"@ton/crypto";import*as z from"@open-wallet-standard/core";var ae=re(K);function N(e,t,r=0){switch(t){case"solana":return le(e,r);case"ethereum":return ce(e,r);case"bitcoin":return pe(e,r);case"tron":return ue(e,r);case"ton":return ye(e,r);case"filecoin":return he(e,r);default:throw new Error(`Unsupported key family for derivation: ${t}`)}}function le(e,t){let r=y(e),n=`m/44'/501'/${t}'/0'`,{key:o}=j(n,Buffer.from(r).toString("hex")),a=ne.fromSeed(Uint8Array.from(o));return{privateKey:a.secretKey,address:a.publicKey.toBase58()}}function ce(e,t){let r=y(e),n=x.fromMasterSeed(r),o=`m/44'/60'/${t}'/0/0`,a=n.derive(o);if(!a.privateKey)throw new Error("Failed to derive EVM private key");let l=de(a.publicKey);return{privateKey:a.privateKey,address:l}}function de(e){let t=K.pointCompress(e,!1),n=B(t.slice(1)).slice(-20),o="0x"+Buffer.from(n).toString("hex");return fe(o)}function fe(e){let t=e.toLowerCase().replace("0x",""),r=Buffer.from(B(Buffer.from(t,"utf8"))).toString("hex"),n="0x";for(let o=0;o<t.length;o++)n+=parseInt(r[o],16)>=8?t[o].toUpperCase():t[o];return n}function pe(e,t){let r=y(e),n=x.fromMasterSeed(r),o=`m/84'/0'/${t}'/0/0`,a=n.derive(o);if(!a.privateKey)throw new Error("Failed to derive Bitcoin private key");let l=ae.fromPrivateKey(Buffer.from(a.privateKey)),{address:f}=O.payments.p2wpkh({pubkey:Buffer.from(l.publicKey)});if(!f)throw new Error("Failed to derive Bitcoin address");return{privateKey:a.privateKey,address:f}}function ue(e,t){let r=y(e),n=x.fromMasterSeed(r),o=`m/44'/195'/${t}'/0/0`,a=n.derive(o);if(!a.privateKey)throw new Error("Failed to derive Tron private key");let l=me(a.publicKey);return{privateKey:a.privateKey,address:l}}function me(e){let t=K.pointCompress(e,!1),n=B(t.slice(1)).slice(-20),o=Buffer.concat([Buffer.from([65]),Buffer.from(n)]),a=_("sha256").update(o).digest(),l=_("sha256").update(a).digest(),f=Buffer.concat([o,l.slice(0,4)]);return oe.encode(f)}function ye(e,t){let r=y(e),n=`m/44'/607'/${t}'/0'`,{key:o}=j(n,Buffer.from(r).toString("hex")),a=se(Buffer.from(o)),l=ie.create({publicKey:Buffer.from(a.publicKey)});return{privateKey:a.secretKey,address:l.address.toString({bounceable:!1})}}function he(e,t){let r=y(e),n=x.fromMasterSeed(r),o=`m/44'/461'/${t}'/0/0`,a=n.derive(o);if(!a.privateKey)throw new Error("Failed to derive Filecoin private key");let l=z.deriveAddress(e,"filecoin",t);return{privateKey:a.privateKey,address:l}}Q();var b=S(we(),".config","moonpay"),C=S(b,"hardware-wallets.json");function c(){return b}function We(e){let t={};for(let r of e){let n=M[r.chainId];n&&(t[n]=r.address)}return t}function h(e){let t=We(e.accounts);if(!t.filecoin)try{let r=i.exportWallet(e.id,null,c());r&&!r.startsWith("{")&&(t.filecoin=i.deriveAddress(r,"filecoin"))}catch{}return{name:e.name,type:"hd",addresses:t,createdAt:e.createdAt}}function m(){if(!H(C))return[];try{return(JSON.parse(J(C,"utf-8")).wallets??[]).map(t=>$.parse(t))}catch{return[]}}function xe(e,t){D();let r=S(b,`.tmp.${ve(4).toString("hex")}`);ge(r,JSON.stringify(t,null,2),{mode:384}),Y(r,e)}function g(e){xe(C,{wallets:e})}var w=S(b,"wallets.json");function F(){if(H(w)){process.stderr.write(`Migrating legacy wallets...
|
|
3
3
|
`);let{migrated:e,skipped:t}=Ke();process.stderr.write(`Migrated ${e} wallet(s), skipped ${t}.
|
|
4
|
-
`)}}function Ke(){if(!H(w))throw new Error("No legacy wallets.json found \u2014 nothing to migrate.");let{getEncryptionKey:e}=(Z(),I(L)),{decrypt:t,encryptedFileSchema:r}=(T(),I(G)),n=e();if(!n)throw new Error("Encryption key not found. Set MOONPAY_ENCRYPTION_KEY or ensure OS keychain is accessible.");let o=JSON.parse(J(w,"utf-8")),a=r.parse(o),l=t(a,n),f=JSON.parse(l).wallets??[],p=c(),W=m(),P=0,k=0;for(let d of f){try{i.getWallet(d.name,p),k++;continue}catch{}if(W.some(u=>u.name===d.name)){k++;continue}if(d.type==="hardware")W.push({name:d.name,type:"hardware",device:d.device,addresses:d.addresses,createdAt:d.createdAt});else if(d.type==="hd"&&d.mnemonic)i.importWalletMnemonic(d.name,d.mnemonic,null,null,p);else if(d.type==="imported"&&d.privateKey){let u=d.privateKey;if(!/^[0-9a-fA-F]+$/.test(u)){let A=q.decode(u);u=Buffer.from(A.length===64?A.slice(0,32):A).toString("hex")}i.importWalletPrivateKey(d.name,u,null,p,null,u,u)}P++}return W.length>0&&g(W),Y(w,w+".migrated"),{migrated:P,skipped:k}}function Se(e){F(),v(e);let t=i.createWallet(e,null,24,c());return h(t)}function be(e,t){v(e);let r=i.importWalletMnemonic(e,t,null,null,c());return h(r)}function ke(e,t,r){return v(e),h(i.importWalletPrivateKey(e,t,null,c(),r))}function Ae(){F();let e=[];try{e=i.listWallets(c())}catch{}return[...e.map(r=>h(r)),...m()]}function Ee(e){F();let t=c();try{let r=i.getWallet(e,t);return h(r)}catch{}try{for(let r of i.listWallets(t))for(let n of r.accounts)if(n.address===e)return h(r)}catch{}for(let r of m()){if(r.name===e)return r;for(let n of Object.values(r.addresses))if(n===e)return r}return null}function ot(e){let t=Ee(e);if(!t)throw new Error(`Wallet "${e}" not found`);return t}function $e(e){try{i.deleteWallet(e,c());return}catch{}let t=m(),r=t.findIndex(n=>n.name===e);if(r===-1)throw new Error(`Wallet "${e}" not found`);t.splice(r,1),g(t)}function it(e,t){if(e===t)return;v(t);try{i.getWallet(e,c()),i.renameWallet(e,t,c());return}catch(o){if(o instanceof Error&&!o.message.includes("not found"))throw o}let r=m(),n=r.find(o=>o.name===e);if(!n)throw new Error(`Wallet "${e}" not found`);n.name=t,g(r)}function st(e){return i.exportWallet(e,null,c())}function Be(e){v(e.name);let t=m();t.push(e),g(t)}function at(e,t){let r=m(),n=r.find(o=>o.name===e);if(!n)throw new Error(`Hardware wallet "${e}" not found`);n.addresses=t,g(r)}function lt(e,t,r){return i.signTransaction(e,t,r,null,null,c())}function ct(e,t,r,n){return i.signMessage(e,t,r,null,n??null,null,c())}function dt(e,t,r){return i.signTypedData(e,t,r,null,null,c())}async function ft(e,t){if(e.type==="hardware")throw new Error(`Wallet "${e.name}" is a hardware wallet. Signing must happen on the device.`);let{moonpay:r}=await import("./client-
|
|
4
|
+
`)}}function Ke(){if(!H(w))throw new Error("No legacy wallets.json found \u2014 nothing to migrate.");let{getEncryptionKey:e}=(Z(),I(L)),{decrypt:t,encryptedFileSchema:r}=(T(),I(G)),n=e();if(!n)throw new Error("Encryption key not found. Set MOONPAY_ENCRYPTION_KEY or ensure OS keychain is accessible.");let o=JSON.parse(J(w,"utf-8")),a=r.parse(o),l=t(a,n),f=JSON.parse(l).wallets??[],p=c(),W=m(),P=0,k=0;for(let d of f){try{i.getWallet(d.name,p),k++;continue}catch{}if(W.some(u=>u.name===d.name)){k++;continue}if(d.type==="hardware")W.push({name:d.name,type:"hardware",device:d.device,addresses:d.addresses,createdAt:d.createdAt});else if(d.type==="hd"&&d.mnemonic)i.importWalletMnemonic(d.name,d.mnemonic,null,null,p);else if(d.type==="imported"&&d.privateKey){let u=d.privateKey;if(!/^[0-9a-fA-F]+$/.test(u)){let A=q.decode(u);u=Buffer.from(A.length===64?A.slice(0,32):A).toString("hex")}i.importWalletPrivateKey(d.name,u,null,p,null,u,u)}P++}return W.length>0&&g(W),Y(w,w+".migrated"),{migrated:P,skipped:k}}function Se(e){F(),v(e);let t=i.createWallet(e,null,24,c());return h(t)}function be(e,t){v(e);let r=i.importWalletMnemonic(e,t,null,null,c());return h(r)}function ke(e,t,r){return v(e),h(i.importWalletPrivateKey(e,t,null,c(),r))}function Ae(){F();let e=[];try{e=i.listWallets(c())}catch{}return[...e.map(r=>h(r)),...m()]}function Ee(e){F();let t=c();try{let r=i.getWallet(e,t);return h(r)}catch{}try{for(let r of i.listWallets(t))for(let n of r.accounts)if(n.address===e)return h(r)}catch{}for(let r of m()){if(r.name===e)return r;for(let n of Object.values(r.addresses))if(n===e)return r}return null}function ot(e){let t=Ee(e);if(!t)throw new Error(`Wallet "${e}" not found`);return t}function $e(e){try{i.deleteWallet(e,c());return}catch{}let t=m(),r=t.findIndex(n=>n.name===e);if(r===-1)throw new Error(`Wallet "${e}" not found`);t.splice(r,1),g(t)}function it(e,t){if(e===t)return;v(t);try{i.getWallet(e,c()),i.renameWallet(e,t,c());return}catch(o){if(o instanceof Error&&!o.message.includes("not found"))throw o}let r=m(),n=r.find(o=>o.name===e);if(!n)throw new Error(`Wallet "${e}" not found`);n.name=t,g(r)}function st(e){return i.exportWallet(e,null,c())}function Be(e){v(e.name);let t=m();t.push(e),g(t)}function at(e,t){let r=m(),n=r.find(o=>o.name===e);if(!n)throw new Error(`Hardware wallet "${e}" not found`);n.addresses=t,g(r)}function lt(e,t,r){return i.signTransaction(e,t,r,null,null,c())}function ct(e,t,r,n){return i.signMessage(e,t,r,null,n??null,null,c())}function dt(e,t,r){return i.signTypedData(e,t,r,null,null,c())}async function ft(e,t){if(e.type==="hardware")throw new Error(`Wallet "${e.name}" is a hardware wallet. Signing must happen on the device.`);let{moonpay:r}=await import("./client-VRIXGTN7.js"),n=await r.chain.retrieve({chain:t}),o=R(n.keyFamily),a=i.exportWallet(e.name,null,c());if(a.includes(" "))return N(a,o);let l;if(a.startsWith("{")){let p=JSON.parse(a);l=o==="solana"||o==="ton"?p.ed25519:p.secp256k1}else l=a;let f=Uint8Array.from(Buffer.from(l,"hex"));if(o==="solana"&&f.length===32){let p=V("tweetnacl");f=Uint8Array.from(p.sign.keyPair.fromSeed(f).secretKey)}return{privateKey:f,address:e.addresses[o]??""}}var Ce=Ae,pt=$e;function He(e){if(e.type==="hardware"){Be(e);return}if(e.type==="hd"&&e.mnemonic){be(e.name,e.mnemonic);return}if(e.type==="imported"&&e.privateKey){let t=e.privateKey;if(t.startsWith("0x"))t=t.slice(2);else if(!/^[0-9a-fA-F]+$/.test(t)){let r=q.decode(t);t=Buffer.from(r.length===64?r.slice(0,32):r).toString("hex")}ke(e.name,t,"solana");return}Se(e.name)}function ut(e){for(let t of e)He(t)}function mt(e){let t=Ce();e(t),g(t.filter(r=>r.type==="hardware"))}function v(e){try{throw i.getWallet(e,c()),new Error(`Wallet "${e}" already exists`)}catch(t){if(t instanceof Error&&t.message.includes("already exists"))throw t}if(m().some(t=>t.name===e))throw new Error(`Wallet "${e}" already exists`)}export{R as a,E as b,Te as c,U as d,Me as e,N as f,c as g,F as h,Ke as i,Se as j,be as k,ke as l,Ae as m,Ee as n,ot as o,$e as p,it as q,st as r,Be as s,at as t,lt as u,ct as v,dt as w,ft as x,Ce as y,pt as z,He as A,ut as B,mt as C};
|