From ec06e5a5ca990e182ceecdaeaf4b2d1a69920155 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Fri, 20 May 2022 11:16:24 -0400 Subject: [PATCH] Default to an address on top contracts. --- playgrounds/js/api/index.js.map | 4 ++-- playgrounds/js/app/routes/top-contracts.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/playgrounds/js/api/index.js.map b/playgrounds/js/api/index.js.map index 8f1bad2..3a88a4a 100644 --- a/playgrounds/js/api/index.js.map +++ b/playgrounds/js/api/index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["", "../node_modules/@remix-run/dev/compiler/shims/react.ts", "../app/entry.server.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/root.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/thorchain-tx-impermanent-loss.tsx", "../app/components/button.tsx", "../app/components/error-msg.tsx", "../app/components/input.tsx", "../app/components/loader.tsx", "../app/components/page-title.tsx", "../app/components/logo.tsx", "../app/components/query-preview.tsx", "../app/components/query-result-table.tsx", "../app/components/query-stats.tsx", "../app/components/app-footer.tsx", "../app/components/queries/thorchain-tx-im-loss.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/top-contracts.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/nft-mints.tsx", "/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/index.tsx", "server-assets-manifest:@remix-run/dev/assets-manifest", "server-entry-module:@remix-run/dev/server-build"], - "sourcesContent": ["export * from \"@remix-run/dev/server-build\";", "// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as React from \"react\";\nexport { React };\n", "import type { EntryContext } from \"@remix-run/node\";\nimport { RemixServer } from \"@remix-run/react\";\nimport { renderToString } from \"react-dom/server\";\n\nexport default function handleRequest(\n request: Request,\n responseStatusCode: number,\n responseHeaders: Headers,\n remixContext: EntryContext\n) {\n let markup = renderToString(\n \n );\n\n responseHeaders.set(\"Content-Type\", \"text/html\");\n\n return new Response(\"\" + markup, {\n status: responseStatusCode,\n headers: responseHeaders,\n });\n}\n", "import type { LinksFunction, MetaFunction } from \"@remix-run/node\";\nimport {\n Links,\n LiveReload,\n Meta,\n Outlet,\n Scripts,\n ScrollRestoration,\n useLoaderData,\n} from \"@remix-run/react\";\nimport styles from \"./tailwind.css\";\n\nconst description = \"Flipside SDK. Blockchain Data Where You Want It.\";\nconst image = \"https://sdk.flipsidecrypto.xyz/sdk-site-preview.png\";\n\nexport const meta: MetaFunction = () => ({\n charset: \"utf-8\",\n title: \"Flipside SDK\",\n viewport: \"width=device-width,initial-scale=1\",\n description: description,\n \"og:title\": \"Flipside SDK\",\n \"og:description\": description,\n \"og:image\": image,\n \"og:url\": \"https://sdk.flipsidecrypto.xyz\",\n \"og:type\": \"website\",\n \"twitter:card\": \"summary_large_image\",\n \"twitter:title\": \"Flipside SDK\",\n \"twitter:description\": description,\n \"twitter:image\": image,\n \"twitter:url\": \"https://sdk.flipsidecrypto.xyz\",\n \"twitter:domain\": \"sdk.flipsidecrypto.xyz\",\n});\n\nexport const links: LinksFunction = () => [{ rel: \"stylesheet\", href: styles }];\n\nexport async function loader({ request }: { request: Request }) {\n return {\n ENV: {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n GA_TRACKING_ID: process.env.GA_TRACKING_ID,\n },\n };\n}\n\nexport default function App() {\n const data = useLoaderData<{\n ENV: Record;\n }>();\n return (\n \n \n \n );\n}\n\nfunction Document({\n children,\n title,\n env,\n}: {\n children: React.ReactNode;\n title?: string;\n env?: Record;\n}) {\n return (\n \n \n {env ? (\n \n ) : null}\n\n \n \n {title ? {title} : null}\n \n \n {process.env.NODE_ENV === \"development\" ||\n !env?.GA_TRACKING_ID ? null : (\n \n )}\n \n\n \n {children}\n \n \n \n \n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\nimport {\n thorchainTxImLoss,\n thorchainTxImLossHtml,\n} from \"~/components/queries/thorchain-tx-im-loss\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const txId = url.searchParams.get(\"tx_id\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlTxId:\n txId ||\n \"FB7127F67C55F786D196CD92A0E451675F669046BED92C0BADEB33B36286A7C3\",\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlTxId } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [txId, setTxId] = useState(urlTxId);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (txId: string) => {\n const nextTxId = txId;\n setLoading(true);\n const query: Query = {\n sql: thorchainTxImLoss(nextTxId),\n ttlMinutes: 120,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setTxId(nextTxId);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (txId) {\n await onQuery(txId);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextTxId = e.currentTarget.elements.tx_id.value;\n await onQuery(nextTxId);\n };\n\n return (\n <>\n
\n \n {thorchainTxImLossHtml(txId)}\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"tx_id\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setTxId(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { Link, LinkProps } from \"@remix-run/react\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\ntype Props = {\n cta: string;\n};\nexport function Button({ cta }: Props) {\n return (\n \n {cta}\n \n );\n}\n\ninterface ButtonProps {\n innerStyle?: Record;\n children: React.ReactNode | React.ReactNode[];\n}\n\nfunction getClassName(className?: string) {\n return clsx(\n \"rounded-full before:rounded-full px-2 border-2 border-white/80 inline-flex text-center transition-all hover:-translate-y-1\",\n className\n );\n}\n\nfunction ButtonInner({\n children,\n style,\n}: {\n children: React.ReactNode;\n style?: Record;\n}) {\n return (\n \n {children}\n \n );\n}\n\nfunction Button2({\n children,\n className,\n innerStyle,\n ...buttonProps\n}: ButtonProps & JSX.IntrinsicElements[\"button\"]) {\n return (\n \n );\n}\n\nfunction ButtonLink({\n children,\n className,\n ...linkProps\n}: ButtonProps & LinkProps) {\n return (\n \n {children}\n \n );\n}\n\nfunction LinkButton({\n children,\n className,\n ...linkProps\n}: ButtonProps & JSX.IntrinsicElements[\"a\"]) {\n return (\n \n {children}\n \n );\n}\n\nfunction GradientButton({\n children,\n ...linkProps\n}: ButtonProps & JSX.IntrinsicElements[\"a\"]) {\n return (\n \n {children}\n \n );\n}\n\nexport { Button2, ButtonLink, LinkButton, GradientButton };\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet | null;\n};\n\nexport function ErrorMsg({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (!queryResultSet.error) {\n return <>;\n }\n return (\n
\n

Error

\n
{queryResultSet?.error.message}
\n
\n );\n}\n", "type Props = {\n onChange(value: string): void;\n placeholder: string;\n name: string;\n defaultValue: string | number | readonly string[] | undefined;\n};\n\nexport function Input({ onChange, placeholder, name, defaultValue }: Props) {\n return (\n onChange(e.currentTarget.value)}\n />\n );\n}\n", "type LoaderProps = {\n isLoading: boolean;\n children: React.ReactNode;\n};\n\nexport function Loader({ isLoading, children }: LoaderProps) {\n if (isLoading) {\n return
loading...
;\n }\n return <>{children};\n}\n", "import { Link } from \"@remix-run/react\";\nimport { FlipsideLogo } from \"./logo\";\n\ntype Props = {\n title: string;\n};\n\nexport function PageTitle({ title }: Props) {\n return (\n
\n \n \n \n
\n \n [back]\n \n

{title}

\n
\n
\n );\n}\n", "import React from \"react\";\n\ntype LogoProps = {\n width: number;\n height: number;\n className?: string;\n};\n\nfunction FlipsideLogo({ className, width, height }: LogoProps) {\n return (\n \n \n \n );\n}\n\nexport { FlipsideLogo };\n", "type Props = {\n children: React.ReactNode;\n};\nexport function QueryPreview({ children }: Props) {\n return (\n \n {children}\n \n );\n}\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet;\n};\n\nexport function QueryResultTable({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (queryResultSet.error) {\n return <>;\n }\n\n return (\n \n \n \n {queryResultSet.columns.map((column, i) => {\n return (\n \n );\n })}\n \n \n \n {queryResultSet.rows.map((row, i) => {\n return (\n \n {row.map((cell, j) => (\n \n ))}\n \n );\n })}\n \n
\n {column}\n
\n {cell}\n
\n );\n}\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet | null;\n};\n\nexport function QueryStats({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (queryResultSet.error) {\n return <>;\n }\n\n return (\n
\n

\n Query Stats\n

\n
\n \n \n
\n
\n );\n}\n\ntype StatProps = {\n name: string;\n stat: string;\n};\n\nfunction Stat({ name, stat }: StatProps) {\n return (\n \n
{name}
\n
{stat}
\n \n );\n}\n", "import { AiFillGithub } from \"react-icons/ai\";\nimport { GiPartyPopper } from \"react-icons/gi\";\nimport { FlipsideLogo } from \"./logo\";\n\nexport function AppFooter() {\n return (\n <>\n
\n
\n \n
\n
\n \n

\n © COPYRIGHT {new Date().getFullYear()} FLIPSIDE CRYPTO\n

\n
\n
\n \n );\n}\n", "export function thorchainTxImLoss(txId: string) {\n return `\n WITH tx_info AS (\n SELECT \n block_timestamp,\n pool_name,\n rune_amount,\n rune_amount_usd,\n asset_amount,\n asset_amount_usd\n FROM thorchain.liquidity_actions\n WHERE tx_id = '${txId}'\n ),\n\n current_prices AS (\n SELECT\n pool_name,\n asset_usd AS current_asset_price,\n rune_usd AS current_rune_price\n FROM thorchain.prices\n WHERE block_id = (SELECT max(block_id) \n FROM thorchain.prices WHERE pool_name = (SELECT pool_name FROM tx_info))\n ),\n\n il_profit AS (\n SELECT\n tx_info.pool_name,\n rune_amount AS initial_rune_amount,\n rune_amount_usd AS initial_rune_usd,\n rune_amount_usd/rune_amount AS intial_rune_price,\n asset_amount AS initial_asset_amount,\n asset_amount_usd AS initial_asset_usd,\n asset_amount_usd/asset_amount AS initial_asset_price,\n rune_amount_usd + asset_amount_usd AS initial_total_usd,\n sqrt(rune_amount * asset_amount * (current_asset_price / current_rune_price)) AS current_rune_amt,\n sqrt(rune_amount * asset_amount * (current_asset_price / current_rune_price)) * current_rune_price AS current_rune_usd,\n current_rune_price,\n sqrt(rune_amount * asset_amount / (current_asset_price / current_rune_price)) AS current_asset_amt,\n sqrt(rune_amount * asset_amount / (current_asset_price / current_rune_price)) * current_asset_price AS current_asset_usd,\n current_asset_price,\n current_rune_usd + current_asset_usd AS current_total_usd,\n current_total_usd - initial_total_usd AS il_or_profit\n FROM tx_info\n JOIN current_prices ON tx_info.pool_name = current_prices.pool_name\n )\n SELECT \n il_profit.pool_name as pool_name,\n il_profit.il_or_profit as il_or_profit\n FROM il_profit\n `;\n}\n\nexport function thorchainTxImLossHtml(txId: string) {\n return (\n <>\n WITH tx_info AS (\n
SELECT\n
block_timestamp,\n
pool_name,\n
rune_amount,\n
rune_amount_usd,\n
asset_amount,\n
asset_amount_usd\n
\n FROM thorchain.liquidity_actions\n
\n WHERE tx_id = '{txId}'\n
\n ),\n
\n current_prices AS (\n
\n SELECT\n
\n pool_name,\n
\n asset_usd AS current_asset_price,\n
\n rune_usd AS current_rune_price\n
\n FROM thorchain.prices\n
\n WHERE block_id = (SELECT max(block_id)\n
FROM thorchain.prices WHERE pool_name = (SELECT pool_name FROM\n tx_info))\n
\n ),\n
\n il_profit AS (\n
\n SELECT\n
\n tx_info.pool_name,\n
\n rune_amount AS initial_rune_amount,\n
\n rune_amount_usd AS initial_rune_usd,\n
\n rune_amount_usd/rune_amount AS intial_rune_price,\n
\n asset_amount AS initial_asset_amount,\n
\n asset_amount_usd AS initial_asset_usd,\n
\n asset_amount_usd/asset_amount AS initial_asset_price,\n
\n rune_amount_usd + asset_amount_usd AS initial_total_usd,\n
\n sqrt(rune_amount * asset_amount * (current_asset_price /\n current_rune_price)) AS current_rune_amt,\n
\n sqrt(rune_amount * asset_amount * (current_asset_price /\n current_rune_price)) * current_rune_price AS current_rune_usd,\n
\n current_rune_price,\n
\n sqrt(rune_amount * asset_amount / (current_asset_price /\n current_rune_price)) AS current_asset_amt,\n
\n sqrt(rune_amount * asset_amount / (current_asset_price /\n current_rune_price)) * current_asset_price AS current_asset_usd,\n
\n current_asset_price,\n
\n current_rune_usd + current_asset_usd AS current_total_usd,\n
\n current_total_usd - initial_total_usd AS il_or_profit\n
\n FROM tx_info\n
\n JOIN current_prices ON tx_info.pool_name = current_prices.pool_name\n
)\n
\n SELECT\n
\n il_profit.pool_name as pool_name,\n
\n il_profit.il_or_profit as il_or_profit\n
\n FROM il_profit\n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const address = url.searchParams.get(\"address\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlAddress: address,\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlAddress } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [address, setAddress] = useState(urlAddress);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (addr: string) => {\n const nextAddress = addr;\n setLoading(true);\n const query: Query = {\n sql: `SELECT contract_name, count(1) as event_count \n FROM flipside_prod_db.ethereum_core.fact_event_logs \n WHERE ORIGIN_FROM_ADDRESS = LOWER('${nextAddress}')\n GROUP BY 1 \n ORDER BY 2 desc`,\n ttlMinutes: 120,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setAddress(nextAddress);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (address) {\n await onQuery(address);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextAddress = e.currentTarget.elements.address.value;\n await onQuery(nextAddress);\n };\n\n return (\n <>\n
\n \n \n SELECT\n
contract_name,\n
count(1) as event_count,\n
mint_price_usd\n
\n FROM\n
flipside_prod_db.ethereum_core.fact_event_logs\n
\n WHERE\n
origin_from_address =\n LOWER('{address}')\n
\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"address\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setAddress(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const address = url.searchParams.get(\"address\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlAddress: address || \"0x90f11bcf68f44a7edc142186fced2314da35655d\",\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlAddress } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [address, setAddress] = useState(urlAddress);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (addr: string) => {\n const nextAddress = addr;\n setLoading(true);\n const query: Query = {\n sql: `select nft_address, mint_price_eth, mint_price_usd from flipside_prod_db.ethereum_core.ez_nft_mints where nft_to_address = LOWER('${nextAddress}')`,\n ttlMinutes: 120,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setAddress(nextAddress);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (address) {\n await onQuery(address);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextAddress = e.currentTarget.elements.address.value;\n await onQuery(nextAddress);\n };\n\n return (\n <>\n
\n \n \n SELECT\n
nft_address,\n
mint_price_eth,\n
mint_price_usd\n
\n FROM\n
flipside_prod_db.ethereum_core.ez_nft_mints\n
\n WHERE\n
nft_to_address=\n LOWER('{address}')\n
\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"address\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setAddress(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { Link } from \"@remix-run/react\";\nimport { FlipsideLogo } from \"~/components/logo\";\nimport { AppFooter } from \"~/components/app-footer\";\nimport { GiPartyPopper } from \"react-icons/gi\";\nimport { AiFillGithub } from \"react-icons/ai\";\n\nexport default function Index() {\n return (\n <>\n
\n \n

\n FlipsideCrypto SDK\n

\n
\n \n yarn add @flipsidecrypto/sdk\n \n \n \n \n
\n

\n \n \n Blockchain Data Where You Want It -- Join the Alpha\n \n

\n\n

\n \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47 try it! \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\n

\n
    \n
  1. \n \n NFT Mints\n

    \n what NFTs have been minted at an address?\n

    \n \n
  2. \n
  3. \n \n Top Contracts\n

    \n what contract does a particular address interact with the most?\n

    \n \n
  4. \n
  5. \n \n Thorchain Impermanent Loss Calculator\n

    \n calculate your position's most recent IL after a liquidity add\n

    \n \n
  6. \n
\n
\n \n \n );\n}\n", "export default {'version':'76eab9c7','entry':{'module':'/build/entry.client-GW5EOPBU.js','imports':['/build/_shared/chunk-DXUJXU74.js']},'routes':{'root':{'id':'root','parentId':undefined,'path':'','index':undefined,'caseSensitive':undefined,'module':'/build/root-CIIXLBP6.js','imports':undefined,'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/index':{'id':'routes/index','parentId':'root','path':undefined,'index':true,'caseSensitive':undefined,'module':'/build/routes/index-IXMFZ3TU.js','imports':['/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':false,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/nft-mints':{'id':'routes/nft-mints','parentId':'root','path':'nft-mints','index':undefined,'caseSensitive':undefined,'module':'/build/routes/nft-mints-AEHYK24E.js','imports':['/build/_shared/chunk-Y5KNW24Z.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/thorchain-tx-impermanent-loss':{'id':'routes/thorchain-tx-impermanent-loss','parentId':'root','path':'thorchain-tx-impermanent-loss','index':undefined,'caseSensitive':undefined,'module':'/build/routes/thorchain-tx-impermanent-loss-JTEYNBHX.js','imports':['/build/_shared/chunk-Y5KNW24Z.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/top-contracts':{'id':'routes/top-contracts','parentId':'root','path':'top-contracts','index':undefined,'caseSensitive':undefined,'module':'/build/routes/top-contracts-QOXDZGDM.js','imports':['/build/_shared/chunk-Y5KNW24Z.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false}},'url':'/build/manifest-76EAB9C7.js'};", "\nimport * as entryServer from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/entry.server.tsx\";\nimport * as route0 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/root.tsx\";\nimport * as route1 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/thorchain-tx-impermanent-loss.tsx\";\nimport * as route2 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/top-contracts.tsx\";\nimport * as route3 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/nft-mints.tsx\";\nimport * as route4 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/index.tsx\";\n export { default as assets } from \"@remix-run/dev/assets-manifest\";\n export const entry = { module: entryServer };\n export const routes = {\n \"root\": {\n id: \"root\",\n parentId: undefined,\n path: \"\",\n index: undefined,\n caseSensitive: undefined,\n module: route0\n },\n \"routes/thorchain-tx-impermanent-loss\": {\n id: \"routes/thorchain-tx-impermanent-loss\",\n parentId: \"root\",\n path: \"thorchain-tx-impermanent-loss\",\n index: undefined,\n caseSensitive: undefined,\n module: route1\n },\n \"routes/top-contracts\": {\n id: \"routes/top-contracts\",\n parentId: \"root\",\n path: \"top-contracts\",\n index: undefined,\n caseSensitive: undefined,\n module: route2\n },\n \"routes/nft-mints\": {\n id: \"routes/nft-mints\",\n parentId: \"root\",\n path: \"nft-mints\",\n index: undefined,\n caseSensitive: undefined,\n module: route3\n },\n \"routes/index\": {\n id: \"routes/index\",\n parentId: \"root\",\n path: undefined,\n index: true,\n caseSensitive: undefined,\n module: route4\n }\n };"], - "mappings": "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", + "sourcesContent": ["export * from \"@remix-run/dev/server-build\";", "// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as React from \"react\";\nexport { React };\n", "import type { EntryContext } from \"@remix-run/node\";\nimport { RemixServer } from \"@remix-run/react\";\nimport { renderToString } from \"react-dom/server\";\n\nexport default function handleRequest(\n request: Request,\n responseStatusCode: number,\n responseHeaders: Headers,\n remixContext: EntryContext\n) {\n let markup = renderToString(\n \n );\n\n responseHeaders.set(\"Content-Type\", \"text/html\");\n\n return new Response(\"\" + markup, {\n status: responseStatusCode,\n headers: responseHeaders,\n });\n}\n", "import type { LinksFunction, MetaFunction } from \"@remix-run/node\";\nimport {\n Links,\n LiveReload,\n Meta,\n Outlet,\n Scripts,\n ScrollRestoration,\n useLoaderData,\n} from \"@remix-run/react\";\nimport styles from \"./tailwind.css\";\n\nconst description = \"Flipside SDK. Blockchain Data Where You Want It.\";\nconst image = \"https://sdk.flipsidecrypto.xyz/sdk-site-preview-zoomed.png\";\n\nexport const meta: MetaFunction = () => ({\n charset: \"utf-8\",\n title: \"Flipside SDK\",\n viewport: \"width=device-width,initial-scale=1\",\n description: description,\n \"og:title\": \"Flipside SDK\",\n \"og:description\": description,\n \"og:image\": image,\n \"og:url\": \"https://sdk.flipsidecrypto.xyz\",\n \"og:type\": \"website\",\n \"twitter:card\": \"summary_large_image\",\n \"twitter:title\": \"Flipside SDK\",\n \"twitter:description\": description,\n \"twitter:image\": image,\n \"twitter:url\": \"https://sdk.flipsidecrypto.xyz\",\n \"twitter:domain\": \"sdk.flipsidecrypto.xyz\",\n});\n\nexport const links: LinksFunction = () => [{ rel: \"stylesheet\", href: styles }];\n\nexport async function loader({ request }: { request: Request }) {\n return {\n ENV: {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n GA_TRACKING_ID: process.env.GA_TRACKING_ID,\n },\n };\n}\n\nexport default function App() {\n const data = useLoaderData<{\n ENV: Record;\n }>();\n return (\n \n \n \n );\n}\n\nfunction Document({\n children,\n title,\n env,\n}: {\n children: React.ReactNode;\n title?: string;\n env?: Record;\n}) {\n return (\n \n \n {env ? (\n \n ) : null}\n\n \n \n {title ? {title} : null}\n \n \n {process.env.NODE_ENV === \"development\" ||\n !env?.GA_TRACKING_ID ? null : (\n \n )}\n \n\n \n {children}\n \n \n \n \n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\nimport {\n thorchainTxImLoss,\n thorchainTxImLossHtml,\n} from \"~/components/queries/thorchain-tx-im-loss\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const txId = url.searchParams.get(\"tx_id\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlTxId:\n txId ||\n \"FB7127F67C55F786D196CD92A0E451675F669046BED92C0BADEB33B36286A7C3\",\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlTxId } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [txId, setTxId] = useState(urlTxId);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (txId: string) => {\n const nextTxId = txId;\n setLoading(true);\n const query: Query = {\n sql: thorchainTxImLoss(nextTxId),\n ttlMinutes: 120,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setTxId(nextTxId);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (txId) {\n await onQuery(txId);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextTxId = e.currentTarget.elements.tx_id.value;\n await onQuery(nextTxId);\n };\n\n return (\n <>\n
\n \n {thorchainTxImLossHtml(txId)}\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"tx_id\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setTxId(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { Link, LinkProps } from \"@remix-run/react\";\nimport clsx from \"clsx\";\nimport React from \"react\";\n\ntype Props = {\n cta: string;\n};\nexport function Button({ cta }: Props) {\n return (\n \n {cta}\n \n );\n}\n\ninterface ButtonProps {\n innerStyle?: Record;\n children: React.ReactNode | React.ReactNode[];\n}\n\nfunction getClassName(className?: string) {\n return clsx(\n \"rounded-full before:rounded-full px-2 border-2 border-white/80 inline-flex text-center transition-all hover:-translate-y-1\",\n className\n );\n}\n\nfunction ButtonInner({\n children,\n style,\n}: {\n children: React.ReactNode;\n style?: Record;\n}) {\n return (\n \n {children}\n \n );\n}\n\nfunction Button2({\n children,\n className,\n innerStyle,\n ...buttonProps\n}: ButtonProps & JSX.IntrinsicElements[\"button\"]) {\n return (\n \n );\n}\n\nfunction ButtonLink({\n children,\n className,\n ...linkProps\n}: ButtonProps & LinkProps) {\n return (\n \n {children}\n \n );\n}\n\nfunction LinkButton({\n children,\n className,\n ...linkProps\n}: ButtonProps & JSX.IntrinsicElements[\"a\"]) {\n return (\n \n {children}\n \n );\n}\n\nfunction GradientButton({\n children,\n ...linkProps\n}: ButtonProps & JSX.IntrinsicElements[\"a\"]) {\n return (\n \n {children}\n \n );\n}\n\nexport { Button2, ButtonLink, LinkButton, GradientButton };\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet | null;\n};\n\nexport function ErrorMsg({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (!queryResultSet.error) {\n return <>;\n }\n return (\n
\n

Error

\n
{queryResultSet?.error.message}
\n
\n );\n}\n", "type Props = {\n onChange(value: string): void;\n placeholder: string;\n name: string;\n defaultValue: string | number | readonly string[] | undefined;\n};\n\nexport function Input({ onChange, placeholder, name, defaultValue }: Props) {\n return (\n onChange(e.currentTarget.value)}\n />\n );\n}\n", "type LoaderProps = {\n isLoading: boolean;\n children: React.ReactNode;\n};\n\nexport function Loader({ isLoading, children }: LoaderProps) {\n if (isLoading) {\n return
loading...
;\n }\n return <>{children};\n}\n", "import { Link } from \"@remix-run/react\";\nimport { FlipsideLogo } from \"./logo\";\n\ntype Props = {\n title: string;\n};\n\nexport function PageTitle({ title }: Props) {\n return (\n
\n \n \n \n
\n \n [back]\n \n

{title}

\n
\n
\n );\n}\n", "import React from \"react\";\n\ntype LogoProps = {\n width: number;\n height: number;\n className?: string;\n};\n\nfunction FlipsideLogo({ className, width, height }: LogoProps) {\n return (\n \n \n \n );\n}\n\nexport { FlipsideLogo };\n", "type Props = {\n children: React.ReactNode;\n};\nexport function QueryPreview({ children }: Props) {\n return (\n \n {children}\n \n );\n}\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet;\n};\n\nexport function QueryResultTable({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (queryResultSet.error) {\n return <>;\n }\n\n return (\n \n \n \n {queryResultSet.columns.map((column, i) => {\n return (\n \n );\n })}\n \n \n \n {queryResultSet.rows.map((row, i) => {\n return (\n \n {row.map((cell, j) => (\n \n ))}\n \n );\n })}\n \n
\n {column}\n
\n {cell}\n
\n );\n}\n", "import { QueryResultSet } from \"flipside\";\n\ntype Props = {\n queryResultSet: QueryResultSet | null;\n};\n\nexport function QueryStats({ queryResultSet }: Props) {\n if (!queryResultSet) {\n return <>;\n }\n\n if (queryResultSet.error) {\n return <>;\n }\n\n return (\n
\n

\n Query Stats\n

\n
\n \n \n
\n
\n );\n}\n\ntype StatProps = {\n name: string;\n stat: string;\n};\n\nfunction Stat({ name, stat }: StatProps) {\n return (\n \n
{name}
\n
{stat}
\n \n );\n}\n", "import { AiFillGithub } from \"react-icons/ai\";\nimport { GiPartyPopper } from \"react-icons/gi\";\nimport { FlipsideLogo } from \"./logo\";\n\nexport function AppFooter() {\n return (\n <>\n
\n
\n \n
\n
\n \n

\n © COPYRIGHT {new Date().getFullYear()} FLIPSIDE CRYPTO\n

\n
\n
\n \n );\n}\n", "export function thorchainTxImLoss(txId: string) {\n return `\n WITH tx_info AS (\n SELECT \n block_timestamp,\n pool_name,\n rune_amount,\n rune_amount_usd,\n asset_amount,\n asset_amount_usd\n FROM thorchain.liquidity_actions\n WHERE tx_id = '${txId}'\n ),\n\n current_prices AS (\n SELECT\n pool_name,\n asset_usd AS current_asset_price,\n rune_usd AS current_rune_price\n FROM thorchain.prices\n WHERE block_id = (SELECT max(block_id) \n FROM thorchain.prices WHERE pool_name = (SELECT pool_name FROM tx_info))\n ),\n\n il_profit AS (\n SELECT\n tx_info.pool_name,\n rune_amount AS initial_rune_amount,\n rune_amount_usd AS initial_rune_usd,\n rune_amount_usd/rune_amount AS intial_rune_price,\n asset_amount AS initial_asset_amount,\n asset_amount_usd AS initial_asset_usd,\n asset_amount_usd/asset_amount AS initial_asset_price,\n rune_amount_usd + asset_amount_usd AS initial_total_usd,\n sqrt(rune_amount * asset_amount * (current_asset_price / current_rune_price)) AS current_rune_amt,\n sqrt(rune_amount * asset_amount * (current_asset_price / current_rune_price)) * current_rune_price AS current_rune_usd,\n current_rune_price,\n sqrt(rune_amount * asset_amount / (current_asset_price / current_rune_price)) AS current_asset_amt,\n sqrt(rune_amount * asset_amount / (current_asset_price / current_rune_price)) * current_asset_price AS current_asset_usd,\n current_asset_price,\n current_rune_usd + current_asset_usd AS current_total_usd,\n current_total_usd - initial_total_usd AS il_or_profit\n FROM tx_info\n JOIN current_prices ON tx_info.pool_name = current_prices.pool_name\n )\n SELECT \n il_profit.pool_name as pool_name,\n il_profit.il_or_profit as il_or_profit\n FROM il_profit\n `;\n}\n\nexport function thorchainTxImLossHtml(txId: string) {\n return (\n <>\n WITH tx_info AS (\n
SELECT\n
block_timestamp,\n
pool_name,\n
rune_amount,\n
rune_amount_usd,\n
asset_amount,\n
asset_amount_usd\n
\n FROM thorchain.liquidity_actions\n
\n WHERE tx_id = '{txId}'\n
\n ),\n
\n current_prices AS (\n
\n SELECT\n
\n pool_name,\n
\n asset_usd AS current_asset_price,\n
\n rune_usd AS current_rune_price\n
\n FROM thorchain.prices\n
\n WHERE block_id = (SELECT max(block_id)\n
FROM thorchain.prices WHERE pool_name = (SELECT pool_name FROM\n tx_info))\n
\n ),\n
\n il_profit AS (\n
\n SELECT\n
\n tx_info.pool_name,\n
\n rune_amount AS initial_rune_amount,\n
\n rune_amount_usd AS initial_rune_usd,\n
\n rune_amount_usd/rune_amount AS intial_rune_price,\n
\n asset_amount AS initial_asset_amount,\n
\n asset_amount_usd AS initial_asset_usd,\n
\n asset_amount_usd/asset_amount AS initial_asset_price,\n
\n rune_amount_usd + asset_amount_usd AS initial_total_usd,\n
\n sqrt(rune_amount * asset_amount * (current_asset_price /\n current_rune_price)) AS current_rune_amt,\n
\n sqrt(rune_amount * asset_amount * (current_asset_price /\n current_rune_price)) * current_rune_price AS current_rune_usd,\n
\n current_rune_price,\n
\n sqrt(rune_amount * asset_amount / (current_asset_price /\n current_rune_price)) AS current_asset_amt,\n
\n sqrt(rune_amount * asset_amount / (current_asset_price /\n current_rune_price)) * current_asset_price AS current_asset_usd,\n
\n current_asset_price,\n
\n current_rune_usd + current_asset_usd AS current_total_usd,\n
\n current_total_usd - initial_total_usd AS il_or_profit\n
\n FROM tx_info\n
\n JOIN current_prices ON tx_info.pool_name = current_prices.pool_name\n
)\n
\n SELECT\n
\n il_profit.pool_name as pool_name,\n
\n il_profit.il_or_profit as il_or_profit\n
\n FROM il_profit\n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const address = url.searchParams.get(\"address\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlAddress: address || \"0x90f11bcf68f44a7edc142186fced2314da35655d\",\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlAddress } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [address, setAddress] = useState(urlAddress);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (addr: string) => {\n const nextAddress = addr;\n setLoading(true);\n const query: Query = {\n sql: `SELECT contract_name, count(1) as event_count \n FROM flipside_prod_db.ethereum_core.fact_event_logs \n WHERE ORIGIN_FROM_ADDRESS = LOWER('${nextAddress}')\n GROUP BY 1 \n ORDER BY 2 desc`,\n ttlMinutes: 120,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setAddress(nextAddress);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (address) {\n await onQuery(address);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextAddress = e.currentTarget.elements.address.value;\n await onQuery(nextAddress);\n };\n\n return (\n <>\n
\n \n \n SELECT\n
contract_name,\n
count(1) as event_count,\n
mint_price_usd\n
\n FROM\n
flipside_prod_db.ethereum_core.fact_event_logs\n
\n WHERE\n
origin_from_address =\n LOWER('{address}')\n
\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"address\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setAddress(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { useEffect, useState } from \"react\";\nimport { Flipside, QueryResultSet, Query } from \"@flipsidecrypto/sdk\";\nimport { Button } from \"~/components/button\";\nimport { ErrorMsg } from \"~/components/error-msg\";\nimport { Input } from \"~/components/input\";\nimport { Loader } from \"~/components/loader\";\nimport { PageTitle } from \"~/components/page-title\";\nimport { QueryPreview } from \"~/components/query-preview\";\nimport { QueryResultTable } from \"~/components/query-result-table\";\nimport { QueryStats } from \"~/components/query-stats\";\nimport { useLoaderData } from \"@remix-run/react\";\nimport { AppFooter } from \"~/components/app-footer\";\n\nexport async function loader({ request }: { request: Request }) {\n const url = new URL(request.url);\n const address = url.searchParams.get(\"address\");\n return {\n FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY,\n FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL,\n urlAddress: address || \"0x90f11bcf68f44a7edc142186fced2314da35655d\",\n };\n}\n\nexport default function Index() {\n const { FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL, urlAddress } = useLoaderData();\n let [queryResult, setQueryResult] = useState();\n let [address, setAddress] = useState(urlAddress);\n let [loading, setLoading] = useState(false);\n\n const flipside = new Flipside(FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL);\n\n const onQuery = async (addr: string) => {\n const nextAddress = addr;\n setLoading(true);\n const query: Query = {\n sql: `select nft_address, mint_price_eth, mint_price_usd from flipside_prod_db.ethereum_core.ez_nft_mints where nft_to_address = LOWER('${nextAddress}')`,\n ttlMinutes: 120,\n };\n\n const result = await flipside.query.run(query);\n\n setLoading(false);\n setAddress(nextAddress);\n setQueryResult(result);\n };\n\n useEffect(() => {\n async function onPageLoad() {\n if (address) {\n await onQuery(address);\n }\n }\n onPageLoad();\n }, []);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setLoading(true);\n // @ts-ignore\n const nextAddress = e.currentTarget.elements.address.value;\n await onQuery(nextAddress);\n };\n\n return (\n <>\n
\n \n \n SELECT\n
nft_address,\n
mint_price_eth,\n
mint_price_usd\n
\n FROM\n
flipside_prod_db.ethereum_core.ez_nft_mints\n
\n WHERE\n
nft_to_address=\n LOWER('{address}')\n
\n
\n
\n {\n let searchParams = new URLSearchParams(window.location.search);\n searchParams.set(\"address\", val);\n let newRelativePathQuery =\n window.location.pathname + \"?\" + searchParams.toString();\n history.pushState(null, \"\", newRelativePathQuery);\n setAddress(val);\n }}\n />\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n \n \n );\n}\n", "import { Link } from \"@remix-run/react\";\nimport { FlipsideLogo } from \"~/components/logo\";\nimport { AppFooter } from \"~/components/app-footer\";\nimport { GiPartyPopper } from \"react-icons/gi\";\nimport { AiFillGithub } from \"react-icons/ai\";\n\nexport default function Index() {\n return (\n <>\n
\n \n

\n FlipsideCrypto SDK\n

\n
\n \n yarn add @flipsidecrypto/sdk\n \n \n \n \n
\n

\n \n \n Blockchain Data Where You Want It -- Join the Alpha\n \n

\n\n

\n \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47 try it! \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\n

\n
    \n
  1. \n \n NFT Mints\n

    \n what NFTs have been minted at an address?\n

    \n \n
  2. \n
  3. \n \n Top Contracts\n

    \n what contract does a particular address interact with the most?\n

    \n \n
  4. \n
  5. \n \n Thorchain Impermanent Loss Calculator\n

    \n calculate your position's most recent IL after a liquidity add\n

    \n \n
  6. \n
\n
\n \n \n );\n}\n", "export default {'version':'acdb1eae','entry':{'module':'/build/entry.client-GW5EOPBU.js','imports':['/build/_shared/chunk-DXUJXU74.js']},'routes':{'root':{'id':'root','parentId':undefined,'path':'','index':undefined,'caseSensitive':undefined,'module':'/build/root-JMNTXT2Y.js','imports':undefined,'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/index':{'id':'routes/index','parentId':'root','path':undefined,'index':true,'caseSensitive':undefined,'module':'/build/routes/index-IXMFZ3TU.js','imports':['/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':false,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/nft-mints':{'id':'routes/nft-mints','parentId':'root','path':'nft-mints','index':undefined,'caseSensitive':undefined,'module':'/build/routes/nft-mints-AEHYK24E.js','imports':['/build/_shared/chunk-Y5KNW24Z.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/thorchain-tx-impermanent-loss':{'id':'routes/thorchain-tx-impermanent-loss','parentId':'root','path':'thorchain-tx-impermanent-loss','index':undefined,'caseSensitive':undefined,'module':'/build/routes/thorchain-tx-impermanent-loss-JTEYNBHX.js','imports':['/build/_shared/chunk-Y5KNW24Z.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false},'routes/top-contracts':{'id':'routes/top-contracts','parentId':'root','path':'top-contracts','index':undefined,'caseSensitive':undefined,'module':'/build/routes/top-contracts-TBWXOEDW.js','imports':['/build/_shared/chunk-Y5KNW24Z.js','/build/_shared/chunk-PVZ54OWD.js'],'hasAction':false,'hasLoader':true,'hasCatchBoundary':false,'hasErrorBoundary':false}},'url':'/build/manifest-ACDB1EAE.js'};", "\nimport * as entryServer from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/entry.server.tsx\";\nimport * as route0 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/root.tsx\";\nimport * as route1 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/thorchain-tx-impermanent-loss.tsx\";\nimport * as route2 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/top-contracts.tsx\";\nimport * as route3 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/nft-mints.tsx\";\nimport * as route4 from \"/Users/jim/code/flipside/sdk/playgrounds/js/app/routes/index.tsx\";\n export { default as assets } from \"@remix-run/dev/assets-manifest\";\n export const entry = { module: entryServer };\n export const routes = {\n \"root\": {\n id: \"root\",\n parentId: undefined,\n path: \"\",\n index: undefined,\n caseSensitive: undefined,\n module: route0\n },\n \"routes/thorchain-tx-impermanent-loss\": {\n id: \"routes/thorchain-tx-impermanent-loss\",\n parentId: \"root\",\n path: \"thorchain-tx-impermanent-loss\",\n index: undefined,\n caseSensitive: undefined,\n module: route1\n },\n \"routes/top-contracts\": {\n id: \"routes/top-contracts\",\n parentId: \"root\",\n path: \"top-contracts\",\n index: undefined,\n caseSensitive: undefined,\n module: route2\n },\n \"routes/nft-mints\": {\n id: \"routes/nft-mints\",\n parentId: \"root\",\n path: \"nft-mints\",\n index: undefined,\n caseSensitive: undefined,\n module: route3\n },\n \"routes/index\": {\n id: \"routes/index\",\n parentId: \"root\",\n path: undefined,\n index: true,\n caseSensitive: undefined,\n module: route4\n }\n };"], + "mappings": "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", "names": [] } diff --git a/playgrounds/js/app/routes/top-contracts.tsx b/playgrounds/js/app/routes/top-contracts.tsx index 3e60f9e..f2f61cd 100644 --- a/playgrounds/js/app/routes/top-contracts.tsx +++ b/playgrounds/js/app/routes/top-contracts.tsx @@ -17,7 +17,7 @@ export async function loader({ request }: { request: Request }) { return { FLIPSIDE_API_KEY: process.env.FLIPSIDE_API_KEY, FLIPSIDE_BASE_URL: process.env.FLIPSIDE_BASE_URL, - urlAddress: address, + urlAddress: address || "0x90f11bcf68f44a7edc142186fced2314da35655d", }; }