UNPKG

based-auth

Version:

A Next.js/Node.js authentication and wallet API kit for Ethereum and Solana, with utilities for serialization and contract interaction, designed for serverless and API route usage.

1 lines 28.5 kB
{"version":3,"file":"get-user-profile-BApNPXZg.mjs","sources":["../../shared/src/constants.ts","../../shared/src/utils/connect-database.ts","../../shared/src/models/UserProfile.ts","../../shared/src/utils/get-user-profile.ts"],"sourcesContent":["import { ChainSymbols } from \"based-auth/chains\";\r\nimport { ethABI01, solABI01 } from \"./assets\";\r\nimport { NetworkSymbols } from \"based-auth/networks\";\r\n\r\nexport const isMainnet = process.env.NEXT_PUBLIC_APP_ENV === \"mainnet\";\r\n\r\nexport const currencies = {\r\n native: \"native\",\r\n usd: \"usd\",\r\n};\r\n\r\nexport const maxUint8 = 2n ** 8n - 1n;\r\nexport const maxUint24 = 2n ** 24n - 1n;\r\nexport const maxUint64 = 2n ** 64n - 1n;\r\nexport const maxUint40 = 2n ** 40n - 1n;\r\n\r\nexport const ITEMS_PER_PAGE = 12;\r\nexport const CONTENT_HASH_ALGORITHM = \"sha256\";\r\n\r\nexport const IPFS_PARAMETER_LIMIT = 10;\r\nexport const IPFS_SIZE_LIMIT = \"1500kb\";\r\n\r\nexport const SUB_BOARD_TITLE_LIMIT = 10;\r\nexport const LOGO_SIZE = 128;\r\nexport const SEO_IMAGE_SIZE = 1024;\r\nexport const BANNER_WIDTH = 900;\r\nexport const BANNER_HEIGHT = 200;\r\nexport const LOGO_FILE_LIMIT = 1024 ** 2;\r\nexport const BANNER_FILE_LIMIT = 3 * 1024 ** 2;\r\n\r\nexport const PERCENT_DECIMALS = 4;\r\nexport const NATIVE_PRICE_DECIMALS = 9;\r\n\r\nexport const HOT_PERCENT = \"85\";\r\n\r\nexport const DESCRIPTION_LIMIT = 2500;\r\n\r\nexport const FIFTEEN_MINUTES = 15 * 60 * 1000;\r\nexport const ONE_DAY = 24 * 3600_000;\r\n\r\nexport const SEED_LENGTH = 25;\r\nexport const COPIED_TIEMOUT = 800;\r\n\r\nexport const CDN_URL =\r\n process.env.NEXT_PUBLIC_CDN || \"https://cdn.basedbid.com\";\r\n\r\nexport const ORIGINAL_IPFS_URL = \"https://ipfs.io/ipfs\";\r\nexport const IPFS_URI =\r\n process.env.NEXT_PUBLIC_IPFS_GETWAY ||\r\n \"https://won-finger-heart.quicknode-ipfs.com/ipfs\";\r\n\r\nexport const PATH_IPFS = process.env.PATH_IPFS || \"/ipfs\";\r\n\r\nexport const HOST_URL =\r\n process.env.NEXT_PUBLIC_DOMAIN || \"https://basedbid.com\";\r\n\r\nexport const SOCKET_URL = process.env.NEXT_PUBLIC_SOCKET_URL || \"/\";\r\nexport const WAIT_FOR_RPC = Number(process.env.WAIT_FOR_RPC || 2000);\r\n\r\nexport const allowedDomains = [\r\n \"http://localhost:3000\",\r\n \"https://basedbid.com\",\r\n \"https://www.basedbid.com\",\r\n \"https://testnet.basedbid.com\",\r\n \"https://devnet.basedbid.com\",\r\n];\r\n\r\nexport const tokenMetadataProgramAddress =\r\n \"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\";\r\n\r\nexport const wSolMintAddress = \"So11111111111111111111111111111111111111112\";\r\n\r\nexport const adminAddresses = {\r\n [ChainSymbols.eth]: \"0xcb98eafa8aCF87545c6773748d256eBFf7B0a128\",\r\n [ChainSymbols.solDevnet]: \"A9CwtR7VWSYKNxAD19smWMWNshJooGLMWS81jd5h8KWL\",\r\n [ChainSymbols.sol]: \"\",\r\n [ChainSymbols.bsc]: \"\",\r\n [ChainSymbols.tbsc]: \"\",\r\n [ChainSymbols.sui]: \"\",\r\n [ChainSymbols.suiDevnet]: \"\",\r\n [ChainSymbols.ton]: \"\",\r\n [ChainSymbols.tonDevnet]: \"\",\r\n [ChainSymbols.base]: \"\",\r\n [ChainSymbols.uni]: \"\",\r\n};\r\n\r\nexport const KEEP_ALIVE_INTERVAL = {\r\n [ChainSymbols.tbsc]: 3000,\r\n [ChainSymbols.solDevnet]: 1000,\r\n [ChainSymbols.eth]: 12000,\r\n [ChainSymbols.sol]: 1000,\r\n [ChainSymbols.base]: 2000,\r\n [ChainSymbols.uni]: 14000,\r\n [ChainSymbols.bsc]: 3000,\r\n [ChainSymbols.ton]: 5000,\r\n [ChainSymbols.tonDevnet]: 5000,\r\n [ChainSymbols.sui]: 1000,\r\n [ChainSymbols.suiDevnet]: 1000,\r\n};\r\n\r\nexport const stateValues = {\r\n stopStatusAccount: \"9VVKh47HG62wcWhUiFB8XRD36z52xHpu99ASCJHESi8n\",\r\n lock: \"HMpEqW77cgeRuH6unUGBfP6RyoeiLgbYeHCAtqa3ksjA\",\r\n tokenAccountSeed: \"token_account\",\r\n platformSeed: \"platform\",\r\n metadataSeed: \"metadata\",\r\n buyerSeed: \"buyer\",\r\n tokenSeed: \"token\",\r\n mintSeed: \"mint\",\r\n wSolMint: \"So11111111111111111111111111111111111111112\",\r\n metadataProgramId: \"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\",\r\n};\r\n\r\nexport const constValues: {\r\n [key: string]: {\r\n maxUint: bigint;\r\n zeroAddress: string;\r\n functionNames: Record<string, string>;\r\n };\r\n} = {\r\n [NetworkSymbols.eth]: {\r\n maxUint: 2n ** 256n - 1n,\r\n zeroAddress: \"0x0000000000000000000000000000000000000000\",\r\n functionNames: {\r\n createSimpleMeme: \"createSimpleMeme\",\r\n createMeme: \"createMeme\",\r\n getAmountOutETH: \"getAmountOutETH\",\r\n getAmountOutTokens: \"getAmountOutTokens\",\r\n updateWhitelistForMemeToken: \"updateWhitelistForMemeToken\",\r\n applySubBoard: \"applySubBoard\",\r\n updateSubBoardMetaData: \"updateSubBoardMetaData\",\r\n updateSubBoardFee: \"updateSubBoardFee\",\r\n },\r\n },\r\n [NetworkSymbols.sol]: {\r\n maxUint: 2n ** 64n - 1n,\r\n zeroAddress: \"11111111111111111111111111111111\",\r\n functionNames: {\r\n createSimpleMeme: \"createSimpleMeme\",\r\n createMeme: \"createMeme\",\r\n getAmountOutETH: \"getAmountOutSol\",\r\n getAmountOutTokens: \"getAmountOutTokens\",\r\n updateWhitelistForMemeToken: \"updateWhitelistForMemeToken\",\r\n applySubBoard: \"applySubBoard\",\r\n updateSubBoardMetaData: \"updateSubBoardMetaData\",\r\n updateSubBoardFee: \"updateSubBoardFee\",\r\n },\r\n },\r\n};\r\n\r\nexport const solAccounts: Record<\r\n ChainSymbols.sol | ChainSymbols.solDevnet,\r\n {\r\n appStorage: string;\r\n admin: string;\r\n raydiumV5: string;\r\n raydiumFee: string;\r\n }\r\n> = {\r\n [ChainSymbols.sol]: {\r\n appStorage: \"\",\r\n admin: adminAddresses[ChainSymbols.sol],\r\n raydiumV5: \"CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C\",\r\n raydiumFee: \"DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8\",\r\n },\r\n [ChainSymbols.solDevnet]: {\r\n appStorage: \"735eZhxFGoS37r7d8qjnfEvVS18uyZdCa7GBEnHePe9H\",\r\n admin: adminAddresses[ChainSymbols.solDevnet],\r\n raydiumV5: \"CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW\",\r\n raydiumFee: \"G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2\",\r\n },\r\n};\r\n\r\nexport const contractInfo: Record<\r\n ChainSymbols,\r\n {\r\n address: string;\r\n versions: { abi: any; block: number }[];\r\n }\r\n> = {\r\n [ChainSymbols.tbsc]: {\r\n address: \"0x96c37708fADAE2FCad8c333cB84C7c858E1dc01f\",\r\n versions: [\r\n {\r\n abi: ethABI01,\r\n block: 59042092,\r\n },\r\n ],\r\n },\r\n [ChainSymbols.solDevnet]: {\r\n address: \"3M3VLQ5FCjn1A7s1nhoniNYPEhFp9zCZBE32FLV6eyf2\",\r\n versions: [\r\n {\r\n abi: solABI01,\r\n block: 396243830,\r\n },\r\n ],\r\n },\r\n [ChainSymbols.sol]: {\r\n address: \"3M3VLQ5FCjn1A7s1nhoniNYPEhFp9zCZBE32FLV6eyf2\",\r\n versions: [],\r\n },\r\n [ChainSymbols.eth]: { address: \"\", versions: [] },\r\n [ChainSymbols.uni]: { address: \"\", versions: [] },\r\n [ChainSymbols.base]: { address: \"\", versions: [] },\r\n [ChainSymbols.bsc]: { address: \"\", versions: [] },\r\n [ChainSymbols.sui]: { address: \"\", versions: [] },\r\n [ChainSymbols.suiDevnet]: { address: \"\", versions: [] },\r\n [ChainSymbols.ton]: { address: \"\", versions: [] },\r\n [ChainSymbols.tonDevnet]: { address: \"\", versions: [] },\r\n};\r\n\r\nexport const rpcs = {\r\n [ChainSymbols.tbsc]: [\r\n {\r\n url: \"wss://bsc-testnet.blockpi.network/v1/ws/cd61e00aed93674ae0d608f823e2c2d05a52752d\",\r\n block: 5000,\r\n },\r\n ],\r\n [ChainSymbols.bsc]: [\r\n {\r\n url: \"wss://hidden-proportionate-aura.bsc.quiknode.pro/fc68f3fa6402d7c442f8e91f12c21de2c953d38e/\",\r\n block: 500000,\r\n },\r\n {\r\n url: \"wss://bsc.blockpi.network/v1/ws/44ee6379a352148c518c452e9ab05ff9db820294\",\r\n block: 500000,\r\n },\r\n ],\r\n [ChainSymbols.eth]: [\r\n {\r\n url: \"wss://little-broken-darkness.quiknode.pro/f85e866a4c8f0f3efa7c7bf0ec13e7fbca89a53c/\",\r\n block: 500000,\r\n },\r\n {\r\n url: \"wss://yolo-weathered-seed.quiknode.pro/4cb47a5c576555d953130952142ce72d72ab3feb/\",\r\n block: 500000,\r\n },\r\n {\r\n url: \"wss://ethereum.blockpi.network/v1/ws/7d5ca4a66a7ee2c83665faeff88e28b900b8e13b\",\r\n block: 500000,\r\n },\r\n ],\r\n [ChainSymbols.base]: [\r\n {\r\n url: \"wss://newest-autumn-friday.base-mainnet.quiknode.pro/04f163456de87269c6223cfe09df05b682c1cbe8/\",\r\n block: 500000,\r\n },\r\n {\r\n url: \"wss://fabled-special-wish.base-mainnet.quiknode.pro/6a79b883b4d8ea93ecd86acaf4b1d3a3eeaf5480/\",\r\n block: 500000,\r\n },\r\n {\r\n url: \"wss://base.blockpi.network/v1/ws/e7c7b85c7b5b718e6916e5e9017a51795f333e24\",\r\n block: 500000,\r\n },\r\n ],\r\n [ChainSymbols.uni]: [\r\n {\r\n url: \"wss://unichain-sepolia.blockpi.network/v1/ws/7a76de3edb42d4fe3af8e70eb09fc040b858c91d\",\r\n block: 500000,\r\n },\r\n ],\r\n [ChainSymbols.sui]: [\r\n {\r\n url: \"wss://sui.blockpi.network/v1/ws/4f4fdc33254600c03ca59e0f4b4ed615dbf58938\",\r\n block: 500000,\r\n },\r\n ],\r\n [ChainSymbols.solDevnet]: [\r\n {\r\n url: \"https://solana-devnet.core.chainstack.com/0083ce65be7bc1b5beac2efba5be3c7b\",\r\n block: 1000,\r\n },\r\n ],\r\n [ChainSymbols.sol]: [\r\n {\r\n url: \"https://late-indulgent-surf.solana-mainnet.quiknode.pro/06bfbf9317a2dac06f06abf1087a9ea64cd0da56/\",\r\n block: 1000,\r\n },\r\n {\r\n url: \"https://shy-omniscient-breeze.solana-mainnet.quiknode.pro/faf344b6f231bee3540b30de516ae70826cbe150\",\r\n block: 1000,\r\n },\r\n ],\r\n [ChainSymbols.suiDevnet]: [],\r\n [ChainSymbols.ton]: [],\r\n [ChainSymbols.tonDevnet]: [],\r\n};\r\n\r\nexport const RAISE_TOKENS = {\r\n [ChainSymbols.tbsc]: [\r\n {\r\n address: \"0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd\",\r\n symbol: \"BNB\",\r\n decimals: 18,\r\n },\r\n {\r\n address: \"0x8301F2213c0eeD49a7E28Ae4c3e91722919B8B47\",\r\n symbol: \"USDT\",\r\n decimals: 18,\r\n },\r\n ],\r\n [ChainSymbols.eth]: [\r\n {\r\n address: \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n {\r\n address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\r\n symbol: \"USDC\",\r\n decimals: 6,\r\n },\r\n ],\r\n [ChainSymbols.bsc]: [\r\n {\r\n address: \"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c\",\r\n symbol: \"BNB\",\r\n decimals: 18,\r\n },\r\n {\r\n address: \"0x55d398326f99059fF775485246999027B3197955\",\r\n symbol: \"USDT\",\r\n decimals: 18,\r\n },\r\n ],\r\n [ChainSymbols.uni]: [\r\n {\r\n address: \"0x4200000000000000000000000000000000000006\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n {\r\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\r\n symbol: \"USDC\",\r\n decimals: 6,\r\n },\r\n ],\r\n [ChainSymbols.base]: [\r\n {\r\n address: \"0x4200000000000000000000000000000000000006\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n {\r\n address: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\r\n symbol: \"USDC\",\r\n decimals: 6,\r\n },\r\n ],\r\n [ChainSymbols.solDevnet]: [\r\n {\r\n address: wSolMintAddress,\r\n symbol: \"SOL\",\r\n decimals: 9,\r\n },\r\n {\r\n address: \"Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr\",\r\n symbol: \"USDC\",\r\n decimals: 9,\r\n },\r\n ],\r\n [ChainSymbols.sol]: [\r\n {\r\n address: \"So11111111111111111111111111111111111111112\",\r\n symbol: \"SOL\",\r\n decimals: 9,\r\n },\r\n {\r\n address: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\r\n symbol: \"USDC\",\r\n decimals: 9,\r\n },\r\n ],\r\n};\r\n\r\nexport const SWAP_ROUTERS = {\r\n [ChainSymbols.tbsc]: [\r\n {\r\n id: \"pancakeswap\",\r\n label: \"PancakeSwap\",\r\n url: \"https://pancakeswap.finance/swap?chain=bscTestnet&outputCurrency=\",\r\n v2: {\r\n router: \"0xD99D1c33F9fC3444f8101754aBC46c52416550D1\",\r\n factory: \"0x6725F303b657a9451d8BA641348b6761A6CC7a17\",\r\n },\r\n v3: {\r\n positionManager: \"0x427bF5b37357632377eCbEC9de3626C71A5396c1\",\r\n router: \"0x9a489505a00cE272eAa5e07Dba6491314CaE3796\",\r\n factory: \"0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865\",\r\n fee: [100, 500, 2500, 10000],\r\n },\r\n },\r\n ],\r\n [ChainSymbols.eth]: [\r\n {\r\n id: \"uniswap\",\r\n label: \"UniSwap\",\r\n url: \"https://app.uniswap.org/#/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\r\n factory: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\r\n },\r\n v3: {\r\n positionManager: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\",\r\n router: \"0xE592427A0AEce92De3Edee1F18E0157C05861564\",\r\n factory: \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\r\n fee: [100, 500, 3000, 10000],\r\n },\r\n },\r\n {\r\n id: \"pancakeswap\",\r\n label: \"PancakeSwap\",\r\n url: \"https://pancakeswap.finance/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0xEfF92A263d31888d860bD50809A8D171709b7b1c\",\r\n factory: \"0x1097053Fd2ea711dad45caCcc45EfF7548fCB362\",\r\n },\r\n v3: {\r\n positionManager: \"0x46A15B0b27311cedF172AB29E4f4766fbE7F4364\",\r\n router: \"0x13f4EA83D0bd40E75C8222255bc855a974568Dd4\",\r\n factory: \"0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865\",\r\n fee: [100, 500, 2500, 10000],\r\n },\r\n },\r\n ],\r\n [ChainSymbols.bsc]: [\r\n {\r\n id: \"pancakeswap\",\r\n label: \"PancakeSwap\",\r\n url: \"https://pancakeswap.finance/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0x10ED43C718714eb63d5aA57B78B54704E256024E\",\r\n factory: \"0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73\",\r\n },\r\n v3: {\r\n positionManager: \"0x46A15B0b27311cedF172AB29E4f4766fbE7F4364\",\r\n router: \"0x13f4EA83D0bd40E75C8222255bc855a974568Dd4\",\r\n factory: \"0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865\",\r\n fee: [100, 500, 2500, 10000],\r\n },\r\n },\r\n {\r\n id: \"uniswap\",\r\n label: \"UniSwap\",\r\n url: \"https://app.uniswap.org/#/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24\",\r\n factory: \"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6\",\r\n },\r\n v3: {\r\n positionManager: \"0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613\",\r\n router: \"0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613\",\r\n factory: \"0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7\",\r\n fee: [100, 500, 3000, 10000],\r\n },\r\n },\r\n {\r\n id: \"howswap\",\r\n label: \"HowSwap\",\r\n url: \"https://howswap.com/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0x84dfe8dA2c41e8d536748Bc0195D7fE6A39D3fae\",\r\n factory: \"0xF4866c04a88Cb593374865D73D7cF5B5B3A9c641\",\r\n },\r\n },\r\n {\r\n id: \"melegaswap\",\r\n label: \"MelegaSwap\",\r\n url: \"https://melega.finance/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0xc25033218D181b27D4a2944Fbb04FC055da4EAB3\",\r\n factory: \"0xb7E5848e1d0CB457f2026670fCb9BbdB7e9E039C\",\r\n },\r\n },\r\n {\r\n id: \"apeswap\",\r\n label: \"Apeswap\",\r\n url: \"https://apeswap.finance/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0xcF0feBd3f17CEf5b47b0cD257aCf6025c5BFf3b7\",\r\n factory: \"0x0841BD0B734E4F5853f0dD8d7Ea041c241fb0Da6\",\r\n },\r\n },\r\n {\r\n id: \"babydogeswap\",\r\n label: \"Babydogeswap\",\r\n url: \"https://babydogeswap.com/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0xC9a0F685F39d05D835c369036251ee3aEaaF3c47\",\r\n factory: \"0x4693B62E5fc9c0a45F89D62e6300a03C85f43137\",\r\n },\r\n },\r\n ],\r\n [ChainSymbols.base]: [\r\n {\r\n id: \"uniswap\",\r\n label: \"UniSwap\",\r\n url: \"https://app.uniswap.org/#/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24\",\r\n factory: \"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6\",\r\n },\r\n v3: {\r\n positionManager: \"0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1\",\r\n router: \"0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1\",\r\n factory: \"0x33128a8fC17869897dcE68Ed026d694621f6FDfD\",\r\n fee: [100, 500, 3000, 10000],\r\n },\r\n },\r\n {\r\n id: \"pancakeswap\",\r\n label: \"PancakeSwap\",\r\n url: \"https://pancakeswap.finance/swap?chain=base&outputCurrency=\",\r\n v2: {\r\n router: \"0x8cFe327CEc66d1C090Dd72bd0FF11d690C33a2Eb\",\r\n factory: \"0x02a84c1b3BBD7401a5f7fa98a384EBC70bB5749E\",\r\n },\r\n },\r\n ],\r\n [ChainSymbols.uni]: [\r\n {\r\n id: \"uniswap\",\r\n label: \"UniSwap\",\r\n url: \"https://app.uniswap.org/#/swap?outputCurrency=\",\r\n v2: {\r\n router: \"0x284F11109359a7e1306C3e447ef14D38400063FF\",\r\n factory: \"0x1F98400000000000000000000000000000000002\",\r\n },\r\n v3: {\r\n positionManager: \"0x943e6e07a7E8E791dAFC44083e54041D743C46E9\",\r\n router: \"0x73855d06DE49d0fe4A9c42636Ba96c62da12FF9C\",\r\n factory: \"0x1F98400000000000000000000000000000000003\",\r\n fee: [100, 500, 3000, 10000],\r\n },\r\n },\r\n ],\r\n [ChainSymbols.sol]: [\r\n {\r\n id: \"raydium\",\r\n label: \"Raydium\",\r\n url: \"https://raydium.io/swap/?inputMint=sol&outputMint=\",\r\n v3: {\r\n router: solAccounts[ChainSymbols.sol].raydiumV5,\r\n },\r\n },\r\n ],\r\n [ChainSymbols.solDevnet]: [\r\n {\r\n id: \"raydium\",\r\n label: \"Raydium\",\r\n url: \"https://raydium.io/swap/?inputMint=sol&outputMint=\",\r\n v3: {\r\n router: solAccounts[ChainSymbols.solDevnet].raydiumV5,\r\n },\r\n },\r\n ],\r\n};\r\n","import mongoose from \"mongoose\";\r\n\r\nconst cached: {\r\n connection: typeof mongoose | null;\r\n promise: Promise<typeof mongoose> | null;\r\n} = {\r\n connection: null,\r\n promise: null,\r\n};\r\n\r\nexport interface DatabaseConfig {\r\n uri: string;\r\n options?: mongoose.ConnectOptions;\r\n}\r\n\r\nexport const connectToDatabase = async (\r\n config: DatabaseConfig = {\r\n uri: process.env.MONGO_URI || \"\",\r\n options: {},\r\n }\r\n): Promise<void> => {\r\n try {\r\n if (!config.uri) {\r\n throw new Error(\"MONGO_URI environment variable is not set\");\r\n }\r\n if (cached.connection) {\r\n return;\r\n }\r\n if (!cached.promise) {\r\n const opts = {};\r\n cached.promise = mongoose.connect(config.uri, opts);\r\n }\r\n try {\r\n cached.connection = await cached.promise;\r\n } catch (e) {\r\n cached.promise = null;\r\n throw e;\r\n }\r\n } catch (error) {\r\n console.error(\"MongoDB connection error:\", error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const disconnectFromDatabase = async (): Promise<void> => {\r\n try {\r\n await mongoose.disconnect();\r\n cached.connection = null;\r\n cached.promise = null;\r\n console.log(\"Disconnected from MongoDB\");\r\n } catch (error) {\r\n console.error(\"Error disconnecting from MongoDB:\", error);\r\n throw error;\r\n }\r\n};\r\n","import { Schema, model, models, Document, Model, Types } from \"mongoose\";\r\nimport { NetworkSymbols } from \"based-auth/networks\";\r\nimport { UserRole } from \"based-shared/types\";\r\n\r\nexport interface IUserMetaInfo {\r\n website: string;\r\n twitter: string;\r\n telegram: string;\r\n discord: string;\r\n}\r\n\r\nexport interface IUser {\r\n network: NetworkSymbols;\r\n address: string;\r\n social: string;\r\n provider: string;\r\n}\r\n\r\nexport interface IUserProfile extends Document {\r\n _id: Types.ObjectId;\r\n id: string;\r\n name: string;\r\n bio: string;\r\n image: string;\r\n banner: string;\r\n metaInfo: IUserMetaInfo;\r\n role: UserRole;\r\n lastNetwork: string;\r\n lastSignedIn: Date;\r\n lastAddress: string;\r\n followers: {\r\n network: string;\r\n address: string;\r\n }[];\r\n users: IUser[];\r\n}\r\n\r\nconst userProfileSchema = new Schema(\r\n {\r\n name: {\r\n type: String,\r\n default: \"\",\r\n required: true,\r\n index: true,\r\n },\r\n bio: {\r\n type: String,\r\n default: \"\",\r\n },\r\n image: {\r\n type: String,\r\n default: \"\",\r\n },\r\n banner: {\r\n type: String,\r\n default: \"\",\r\n },\r\n metaInfo: {\r\n website: {\r\n type: String,\r\n default: \"\",\r\n },\r\n twitter: {\r\n type: String,\r\n default: \"\",\r\n },\r\n telegram: {\r\n type: String,\r\n default: \"\",\r\n },\r\n discord: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n lastNetwork: {\r\n type: String,\r\n default: \"\",\r\n },\r\n lastSignedIn: {\r\n type: Date,\r\n default: Date.now,\r\n },\r\n lastAddress: {\r\n type: String,\r\n default: \"\",\r\n },\r\n followers: [\r\n {\r\n type: Schema.Types.ObjectId,\r\n ref: \"UserProfile\",\r\n },\r\n ],\r\n users: [\r\n {\r\n network: {\r\n type: String,\r\n enum: Object.values(NetworkSymbols),\r\n required: true,\r\n },\r\n address: {\r\n type: String,\r\n required: true,\r\n },\r\n social: {\r\n type: String,\r\n default: \"\",\r\n },\r\n provider: {\r\n type: String,\r\n default: \"\",\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n timestamps: true,\r\n toObject: {\r\n getters: true,\r\n versionKey: false,\r\n transform: (doc, ret: any) => {\r\n ret.id = ret._id.toString();\r\n ret.users = ret.users.map(({ _id, ...remains }: any) => ({\r\n ...remains,\r\n id: _id.toString(),\r\n }));\r\n delete ret._id;\r\n delete ret.__v;\r\n return ret;\r\n },\r\n },\r\n }\r\n);\r\n\r\nuserProfileSchema.index(\r\n { \"users.network\": 1, \"users.address\": 1 },\r\n { unique: true }\r\n);\r\n\r\nexport const UserProfileModel: Model<IUserProfile> =\r\n models?.UserProfile || model<IUserProfile>(\"UserProfile\", userProfileSchema);\r\n","import { connectToDatabase } from \"based-shared/utils/connect-database\";\r\nimport { UserProfileModel } from \"based-shared/models/UserProfile\";\r\n\r\nexport async function getUserProfile(address: string, network: string) {\r\n await connectToDatabase();\r\n const user = await UserProfileModel.findOne({\r\n \"users.address\": address,\r\n \"users.network\": network,\r\n });\r\n return user;\r\n}\r\n"],"names":["isMainnet","SUB_BOARD_TITLE_LIMIT","wSolMintAddress","adminAddresses","ChainSymbols","NetworkSymbols","solAccounts","rpcs","cached","connectToDatabase","config","opts","mongoose","e","error","userProfileSchema","Schema","doc","ret","_id","remains","UserProfileModel","_a","models","model","getUserProfile","address","network"],"mappings":"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"}