mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* adds clusters api configs * adds clusters api configs * adds api types * adds props routes and titles for cluster pages * adds query param enum for clusters api * adds clusters svg * adds dynamic page routes * adds clusters entity ui in ui/shared/entities * adds functions to detect input type; will be used to check whether a user is searching for a cluster name vs a evm address * adds stubs for loading skeleton view * adds pagination hook * adds query param hooks for clusters trpc endpoints * adds query param hooks for clusters trpc endpoints * adds components that make up the /clusters ui * adds components for /cluster ui * adds clusters api endpoint to query by cluster id * implements call to cluster id endpoint to get ac tive chain count * adds clusters search types and in api category * creates clusters search hook and wraps useQuickSearchQuery hook * replaces useQuickSearchQuery for useSearchWithClusters hook for both functionality * add search suggestion ui * adds optional chaining to handle react re-render when search type changes * adds cluster ui to ui/pages/address on address details * prevents clicking on cluster suggestion if address is non EVM * adds util functions for testability along with tests, for action bar component logic * refactor - extract clusters display logic wit h tests * refactor: extract page utilities from Clusters.tsx with tests * adds jest testing infra for react components * adds hook testing coverage * adds component and integration tests * adds detectInputType util tests * removes generic parameters from clusters pagination types * replaces any type with proper cluster config types * adds cluster routes to metadata and analytics mappings * updates order and stacks action bar items vertically when mobile view * repositions clusters logo * refactors search logic to render community clusters in search sugge st * adding clusters env vars - add NEXT_PUBLIC_CLUSTERS_API_HOST and NEXT_PUBLIC_CLUSTERS_CDN_URL env vars - configure clusters api integration in configs/app/apis.ts and features/clusters.ts - adds clusters env vars to test env (.env.jest and .env.localhost) - update CI deploy configs for both review envs - add env vars validation schema - document new vars in ENVS.md with usage examples * centers directory/leaderboard toggle in mobile view * resizes and sets proper color to logo in entity component * hides clusters nav when clusters env is missing * removes duplicate trailing slashes in cluster community names * Bump `react` to v19 (#2782) Co-authored-by: tom <[email protected]> * change links to ton explorer * fix internal links in ENVS.md file * tx info: tac operation stage could be an array * fix display of ad banner * tac ui updates * add more "button click" events * update clock icon * update screenshots * fix age filter reset * change tac operation status once again * fix address icon tooltip content * [skip ci] label released issues workflow: don't override release tag if it exists * puzzle-15 (#2471) * puzzle-15 * puzzle-review * puzzle game * puzzle fixes * separate puzzle feature in readme * fix testnet and rollup stage badges * New styles for pagination and "Add / Remove" buttons (#2791) * update styles for add / remove buttons * update pagination styles * change border color for filled inputs * change row gap for alerts * update icons and screenshots * fix tests * update buttons for contract method form * update screenshot * Gas tracker: bug fixes and improvements (#2792) * Gas tracker page: hide `Gas price history` if chart is not enabled Fixes #2781 * change default value for NEXT_PUBLIC_GAS_TRACKER_UNITS for testnets * fix env for pw tests * Public tags form improvements (#2796) * adjust validation of comment field * add icon url to public tag form * update screenshots * fix ts * NFT marketplaces: make `collection_url` and `instance_url ` optional (#2797) Fixes #2614 * Bump brace-expansion from 1.1.11 to 1.1.12 in /deploy/tools/affected-tests (#2801) Bump brace-expansion in /deploy/tools/affected-tests Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.11 to 1.1.12. - [Release notes](https://github.com/juliangruber/brace-expansion/releases) - [Commits](https://github.com/juliangruber/brace-expansion/compare/1.1.11...v1.1.12) --- updated-dependencies: - dependency-name: brace-expansion dependency-version: 1.1.12 dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * allow toaster to render custom description * Encode the address hash for links to the TON chain (#2813) Encode the address hash for links to the TON chain. * Support redirects for known address discrepancies (#2799) * Support redirects for known address discrepancies Fixes #2793 * fix redirect to internal txs in the block * add address user ops redirect * Celo: support L2 epochs (#2784) * epochs page * epoch rewards distribution * epoch election rewards * address epoch rewards * block epoch tag * add some tests * adjust epoch details for L1 epochs * support non-finalized epochs * fixes after design review * add truncation to block numbers on mobile * update epochs table layout * update timestamp hint * fix bug with subheading of first epoch * fixes of mobile view * update screenshots * Icons in footer links (#2809) * Icons in footer links Fixes #2539 * fix envs validator * Metadata: send address to fetchers once visited (#2814) * Metadata: send address to fetchers once visited Fixes #2723 * fix ts * replaces jest-dom matchers with standard matchers * makes /clusters page default view the directory instead of leaderboard, including jest coverage * updates columnn name from backing to total backing, in leaderboard display * alphabetically reorders clusters export * adds Cluster section to the Table of Cont ents at top of page * removes redundant Flex component wrapper around ClustersEntity * uses standard toolkit values for border radius and color * uses getFeaturePayload util instead of type coercion * extends ImageProps interface to ClusterIconProps, and uses getFeaturePayload util instead of type coercion * adds evm address regexp in regexp.ts as single source of truth * updates imports for files that used form validator address regexp to use single source of truth * removes unused args, unnecessary type coercions and memoizations. upper snake case constant values. * sets correct action bar height using ACTION_BAR_HEIGHT_DESKTOP constant * implements TimeFormatToggle to Joined column * simplifies conditionals and removes unnecessary Box component wrapper * displays standard 404 error screen on erroneous ClusterDetails query * standardizes details page to display ETH value and time in line with rest of app * removes redundant debouncing * moves useQueryParams hook to lib/router and updates imports and test to account * moves config.features.cluster s.isEnabled to top of the function and utilizes select function of useQuery in useAp iQuery * removes unnecessary 3rd column and isContractVerified since it is always false * checks clusters enable for placeholder * makes isClusterClickable condition more generic for future repurpose * splits isEvmAddress out to general purpose utility in lib/address, update imports and test * moves all cluster hooks and tests to lib/clusters folder * wraps action bar with standard button wrapper * makes nextjs-routes mock condition stricter * adds mock clusters api data * adds pw tests for cluster detail page * adds pw tests for clusters directory page * adds pw tests for clustersentity ui component * adds mock envs for pw tests * adds clusters api host and cdn url to env.pw * fixes resolve react-hooks/rules-of-hooks violation in cluster search while keeping search optimization * throws error instead of using app error component * uses semantic token to reference color as per standard method in chakra ui * removes empty or loading state pw tests * pw tests - uses mockAssetResponse for icons, removes redundant tests, and updates vie wport to narrow test case * migrates all clusters pw tests from page.route to mockApiResponse * updates docker generated pw screenshots * removes object cloning in useSearchWithClusters hook * uses standardized chakra name for backgroundColor * resolves Clusters.pw.tsx docker screen generation issues and updates screenshots * removes unneeded screenshots for Cluster.pw.tsx * standardizes mobile testing approach with +@mobile tag by removing explicit viewport config, updates screenshots * reverts expanded pw test coverage for ClustersEntity * removes all clusters pw screenshots * removes nested describe which was resulting in a failed test * uploads latest docker generated screenshots for pw * force trigger for conflict check * removes repeating var from blockchainNavItems array * fix screenshot merge conflicts - use upstream versions * updates yarn.lock with upstream lib * fix jest tests by mocking useQuery directly to resolve QueryClient context issues * creates global mock object and proper typing to reduce duplication * updates clusters pw screenshots with docker generation. update helia to 3.2.0 and pinned esbuild to 0.21.5. update docker dep script. * updates yarn.lock * removes unused imports from upstream/main * add vite aliases for @libp2p/utils and @helia/verified-fetch to resolve playwright build failures * updates pw screenshots for hero banner, home page and desktop header * downgrades helia to v2.6.12 * revert changes in yarn.lock file related to helia package * updates yarn.lock with helia downgrade * revert changes in yarn.lock * move clusters to the tab on the name service page * fix tests * small tweaks * update screenshots --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Richard Oh <[email protected]> Co-authored-by: Max Alekseenko <[email protected]> Co-authored-by: isstuev <[email protected]> Co-authored-by: Igor Stuev <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Richard J Oh <[email protected]>
201 lines
7.8 KiB
JSON
201 lines
7.8 KiB
JSON
{
|
|
"name": "blockscout-frontend",
|
|
"version": "1.0.0",
|
|
"private": false,
|
|
"homepage": "https://github.com/blockscout/frontend#readme",
|
|
"engines": {
|
|
"node": "22.11.0",
|
|
"npm": "10.9.0"
|
|
},
|
|
"scripts": {
|
|
"dev": "./tools/scripts/dev.sh",
|
|
"dev:preset": "./tools/scripts/dev.preset.sh",
|
|
"dev:preset:sync": "tsc -p ./tools/preset-sync/tsconfig.json && node ./tools/preset-sync/index.js",
|
|
"build": "next build",
|
|
"build:next": "./deploy/scripts/download_assets.sh ./public/assets/configs && yarn svg:build-sprite && ./deploy/scripts/make_envs_script.sh && next build",
|
|
"build:docker": "./tools/scripts/build.docker.sh",
|
|
"start": "next start",
|
|
"start:docker:local": "docker run -p 3000:3000 --env-file .env.local blockscout-frontend:local",
|
|
"start:docker:preset": "./tools/scripts/docker.preset.sh",
|
|
"chakra:snippets:add": "chakra snippet add --outdir ./toolkit/chakra",
|
|
"chakra:typegen": "chakra typegen ./toolkit/theme/theme.ts",
|
|
"lint:eslint": "eslint .",
|
|
"lint:eslint:fix": "eslint . --fix",
|
|
"lint:tsc": "tsc -p ./tsconfig.json",
|
|
"lint:envs-validator:test": "cd ./deploy/tools/envs-validator && ./test.sh",
|
|
"prepare": "husky install",
|
|
"svg:format": "svgo -r ./icons",
|
|
"svg:build-sprite": "./deploy/scripts/build_sprite.sh",
|
|
"test:pw": "./tools/scripts/pw.sh",
|
|
"test:pw:local": "export NODE_PATH=$(pwd)/node_modules && yarn test:pw",
|
|
"test:pw:docker": "docker run --rm --ipc=host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.49.0-noble ./tools/scripts/pw.docker.sh",
|
|
"test:pw:docker:deps": "docker run --rm --ipc=host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.49.0-noble ./tools/scripts/pw.docker.deps.sh",
|
|
"test:pw:ci": "yarn test:pw --project=$PW_PROJECT",
|
|
"test:pw:detect-affected": "node ./deploy/tools/affected-tests/index.js",
|
|
"test:jest": "jest",
|
|
"test:jest:watch": "jest --watch",
|
|
"favicon:generate:dev": "./tools/scripts/favicon-generator.dev.sh",
|
|
"og-image:generate:dev": "./tools/scripts/og-image-generator.dev.sh",
|
|
"sitemap:generate:dev": "./tools/scripts/sitemap-generator.dev.sh",
|
|
"monitoring:prometheus:local": "docker run --name blockscout_prometheus -d -p 127.0.0.1:9090:9090 -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus",
|
|
"monitoring:grafana:local": "docker run -d -p 4000:3000 --name=blockscout_grafana --user $(id -u) --volume $(pwd)/grafana:/var/lib/grafana grafana/grafana-enterprise",
|
|
"postinstall": "chakra typegen ./toolkit/theme/theme.ts"
|
|
},
|
|
"dependencies": {
|
|
"@blockscout/bens-types": "1.4.1",
|
|
"@blockscout/multichain-aggregator-types": "1.6.0-alpha.2",
|
|
"@blockscout/points-types": "1.3.0-alpha.2",
|
|
"@blockscout/stats-types": "2.10.0-alpha",
|
|
"@blockscout/tac-operation-lifecycle-types": "0.0.1-alpha.6",
|
|
"@blockscout/visualizer-types": "0.2.0",
|
|
"@blockscout/zetachain-cctx-types": "^1.0.0-rc.6",
|
|
"@chakra-ui/react": "3.15.0",
|
|
"@cloudnouns/kit": "1.1.6",
|
|
"@emotion/react": "11.14.0",
|
|
"@growthbook/growthbook-react": "0.21.0",
|
|
"@helia/verified-fetch": "2.6.12",
|
|
"@hypelab/sdk-react": "^1.0.0",
|
|
"@metamask/post-message-stream": "^7.0.0",
|
|
"@metamask/providers": "^10.2.1",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@next/bundle-analyzer": "15.5.2",
|
|
"@opentelemetry/api": "^1.4.1",
|
|
"@opentelemetry/auto-instrumentations-node": "0.43.0",
|
|
"@opentelemetry/exporter-jaeger": "1.27.0",
|
|
"@opentelemetry/exporter-metrics-otlp-proto": "0.49.1",
|
|
"@opentelemetry/exporter-trace-otlp-http": "0.49.1",
|
|
"@opentelemetry/resources": "1.22.0",
|
|
"@opentelemetry/sdk-node": "0.49.1",
|
|
"@opentelemetry/sdk-trace-node": "1.22.0",
|
|
"@opentelemetry/semantic-conventions": "1.22.0",
|
|
"@reown/appkit": "1.7.0",
|
|
"@reown/appkit-adapter-wagmi": "1.7.0",
|
|
"@rollbar/react": "0.12.1",
|
|
"@scure/base": "1.1.9",
|
|
"@slise/embed-react": "^2.2.0",
|
|
"@tanstack/react-query": "5.55.4",
|
|
"@tanstack/react-query-devtools": "5.55.4",
|
|
"@types/papaparse": "^5.3.5",
|
|
"@types/react-scroll": "^1.8.4",
|
|
"@uidotdev/usehooks": "2.4.1",
|
|
"airtable": "^0.12.2",
|
|
"bignumber.js": "^9.1.0",
|
|
"blo": "^1.1.1",
|
|
"brotli-compress": "1.3.3",
|
|
"chakra-react-select": "^4.4.3",
|
|
"crypto-js": "^4.2.0",
|
|
"d3": "^7.6.1",
|
|
"dappscout-iframe": "0.3.0",
|
|
"dayjs": "^1.11.5",
|
|
"dom-to-image": "^2.6.0",
|
|
"es-toolkit": "1.39.10",
|
|
"esbuild": "0.21.5",
|
|
"focus-visible": "^5.2.0",
|
|
"gradient-avatar": "git+https://github.com/blockscout/gradient-avatar.git",
|
|
"graphiql": "^4.1.2",
|
|
"graphql": "^16.8.1",
|
|
"graphql-ws": "^5.11.3",
|
|
"js-cookie": "^3.0.1",
|
|
"magic-bytes.js": "1.8.0",
|
|
"mixpanel-browser": "2.67.0",
|
|
"monaco-editor": "^0.34.1",
|
|
"next": "15.5.2",
|
|
"next-themes": "0.4.4",
|
|
"nextjs-routes": "^1.0.8",
|
|
"node-fetch": "^3.2.9",
|
|
"papaparse": "^5.3.2",
|
|
"path-to-regexp": "8.1.0",
|
|
"phoenix": "^1.6.15",
|
|
"pino-http": "^8.2.1",
|
|
"pino-pretty": "^9.1.1",
|
|
"prom-client": "15.1.1",
|
|
"qrcode": "^1.5.1",
|
|
"react": "19.1.0",
|
|
"react-device-detect": "^2.2.3",
|
|
"react-dom": "19.1.0",
|
|
"react-google-recaptcha": "3.1.0",
|
|
"react-hook-form": "7.52.1",
|
|
"react-icons": "5.4.0",
|
|
"react-identicons": "^1.2.5",
|
|
"react-intersection-observer": "^9.5.2",
|
|
"react-jazzicon": "^1.0.4",
|
|
"react-number-format": "^5.3.1",
|
|
"react-scroll": "^1.8.7",
|
|
"rollbar": "2.26.4",
|
|
"swagger-ui-react": "5.28.0",
|
|
"use-font-face-observer": "^1.3.0",
|
|
"valibot": "0.38.0",
|
|
"viem": "2.23.14",
|
|
"wagmi": "2.14.15",
|
|
"xss": "^1.0.14"
|
|
},
|
|
"devDependencies": {
|
|
"@chakra-ui/cli": "3.15.0",
|
|
"@eslint/compat": "1.2.2",
|
|
"@eslint/js": "9.14.0",
|
|
"@next/eslint-plugin-next": "15.0.3",
|
|
"@playwright/experimental-ct-react": "1.49.0",
|
|
"@playwright/test": "1.49.0",
|
|
"@stylistic/eslint-plugin": "5.2.3",
|
|
"@svgr/webpack": "^6.5.1",
|
|
"@tanstack/eslint-plugin-query": "5.60.1",
|
|
"@testing-library/react": "^14.0.0",
|
|
"@total-typescript/ts-reset": "^0.4.0",
|
|
"@types/crypto-js": "^4.1.1",
|
|
"@types/csp-dev": "^1.0.0",
|
|
"@types/d3": "^7.4.0",
|
|
"@types/dom-to-image": "^2.6.4",
|
|
"@types/jest": "29.2.1",
|
|
"@types/js-cookie": "^3.0.2",
|
|
"@types/mixpanel-browser": "^2.38.1",
|
|
"@types/node": "20.16.7",
|
|
"@types/phoenix": "^1.5.4",
|
|
"@types/qrcode": "^1.5.0",
|
|
"@types/react": "19.1.7",
|
|
"@types/react-dom": "19.1.6",
|
|
"@types/react-google-recaptcha": "^2.1.5",
|
|
"@types/swagger-ui-react": "5.18.0",
|
|
"@types/ws": "^8.5.3",
|
|
"@typescript-eslint/eslint-plugin": "^5.60.0",
|
|
"@vitejs/plugin-react": "^4.0.0",
|
|
"css-loader": "^6.7.3",
|
|
"dotenv-cli": "^6.0.0",
|
|
"eslint": "9.14.0",
|
|
"eslint-config-next": "15.0.3",
|
|
"eslint-plugin-import": "2.31.0",
|
|
"eslint-plugin-import-helpers": "2.0.1",
|
|
"eslint-plugin-jest": "28.9.0",
|
|
"eslint-plugin-jsx-a11y": "6.10.2",
|
|
"eslint-plugin-no-cyrillic-string": "^1.0.5",
|
|
"eslint-plugin-playwright": "2.0.1",
|
|
"eslint-plugin-react": "7.37.2",
|
|
"eslint-plugin-react-hooks": "5.0.0",
|
|
"eslint-plugin-regexp": "2.6.0",
|
|
"globals": "15.12.0",
|
|
"husky": "^8.0.0",
|
|
"jest": "^29.2.1",
|
|
"jest-environment-jsdom": "^29.2.1",
|
|
"jest-fetch-mock": "^3.0.3",
|
|
"lint-staged": ">=10",
|
|
"mockdate": "^3.0.5",
|
|
"style-loader": "^3.3.1",
|
|
"svg-icons-cli": "^0.0.5",
|
|
"svgo": "^2.8.0",
|
|
"ts-jest": "^29.0.3",
|
|
"ts-node": "^10.9.1",
|
|
"typescript": "5.9.2",
|
|
"typescript-eslint": "8.41.0",
|
|
"vite-plugin-svgr": "^2.2.2",
|
|
"vite-tsconfig-paths": "4.3.2",
|
|
"ws": "^8.17.1"
|
|
},
|
|
"lint-staged": {
|
|
"*.{js,jsx,ts,tsx}": "eslint --cache --fix"
|
|
},
|
|
"resolutions": {
|
|
"@types/react": "18.3.12",
|
|
"@types/react-dom": "18.3.1"
|
|
},
|
|
"packageManager": "[email protected]+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
|
}
|