diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 361a8b80fbf..e76ef2ef148 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build and lint +name: Build on: workflow_call: diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml new file mode 100644 index 00000000000..8efaf84c51a --- /dev/null +++ b/.github/workflows/links.yml @@ -0,0 +1,19 @@ +--- +name: Check for link errors + +on: + workflow_call: + +jobs: + linkCheck: + name: Link Checking + runs-on: ubuntu-latest + strategy: + matrix: + file-extensions: [".md", ".mdx"] + steps: + - uses: actions/checkout@v4 + - name: LinkCheck + uses: ConsenSys/docs-gha/linkcheck@main + with: + FILE_EXTENSION: ${{ matrix.file-extensions }} \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 62cf38be3b8..6812ac84659 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,12 +1,12 @@ --- -name: Check for lint, spelling and link errors +name: Check for lint errors on: workflow_call: jobs: lint: - name: Lint Code Base, Spelling, Link Check + name: Lint Code Base runs-on: ubuntu-latest permissions: contents: read @@ -15,18 +15,3 @@ jobs: - name: Lint uses: ConsenSys/docs-gha/lint@main - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - linkCheck: - name: Link Checking - runs-on: ubuntu-latest - strategy: - matrix: - file-extensions: [".md", ".mdx"] - steps: - - uses: actions/checkout@v4 - - name: LinkCheck - uses: ConsenSys/docs-gha/linkcheck@main - with: - FILE_EXTENSION: ${{ matrix.file-extensions }} \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f933489361a..9f950ceb080 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,6 +34,7 @@ jobs: - check-workflows - build - lint + - links outputs: PASSED: ${{ steps.set-output.outputs.PASSED }} steps: diff --git a/package-lock.json b/package-lock.json index 9f755c18961..bd64d80ca47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,10 @@ "devDependencies": { "@commitlint/cli": "^18.2.0", "@commitlint/config-conventional": "^18.1.0", + "@docusaurus/eslint-plugin": "^3.5.2", "@docusaurus/module-type-aliases": "^3.5.2", + "@docusaurus/tsconfig": "^3.5.2", + "@docusaurus/types": "^3.5.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^10.0.4", "@semantic-release/git": "^10.0.1", @@ -3110,6 +3113,144 @@ "node": ">=18.0" } }, + "node_modules/@docusaurus/eslint-plugin": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/eslint-plugin/-/eslint-plugin-3.5.2.tgz", + "integrity": "sha512-9zBtXQwRgj2unY+peS5HIISvG7kDQDoWl8dZ+sN41B2qIctNUWpBFkFAPHZSPy2cvEDQwWshNpPYDjp+sv+CVA==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.62.0", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "eslint": ">=6" + } + }, + "node_modules/@docusaurus/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@docusaurus/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@docusaurus/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@docusaurus/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@docusaurus/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@docusaurus/eslint-plugin/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@docusaurus/eslint-plugin/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/@docusaurus/logger": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.5.2.tgz", @@ -3565,6 +3706,12 @@ "node": ">=18.0" } }, + "node_modules/@docusaurus/tsconfig": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.5.2.tgz", + "integrity": "sha512-rQ7toURCFnWAIn8ubcquDs0ewhPwviMzxh6WpRjBW7sJVCXb6yzwUaY3HMNa0VXCFw+qkIbFywrMTf+Pb4uHWQ==", + "dev": true + }, "node_modules/@docusaurus/types": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.5.2.tgz", @@ -26476,6 +26623,27 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 1024a5fd48b..62f42c1590a 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,10 @@ "devDependencies": { "@commitlint/cli": "^18.2.0", "@commitlint/config-conventional": "^18.1.0", + "@docusaurus/eslint-plugin": "^3.5.2", "@docusaurus/module-type-aliases": "^3.5.2", + "@docusaurus/tsconfig": "^3.5.2", + "@docusaurus/types": "^3.5.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^10.0.4", "@semantic-release/git": "^10.0.1", diff --git a/src/components/HomepageCards/index.tsx b/src/components/HomepageCards/index.tsx index 9b5cef3f755..1b70b0d6123 100644 --- a/src/components/HomepageCards/index.tsx +++ b/src/components/HomepageCards/index.tsx @@ -1,6 +1,7 @@ import React from "react"; import clsx from "clsx"; import Link from "@docusaurus/Link"; +import Heading from '@theme/Heading' // import styles from "./styles.module.css"; type CardItem = { @@ -51,7 +52,7 @@ function Card({ title, link, description, buttonName, buttonType }: CardItem) {
-

{title}

+ {title}

{description}

@@ -77,7 +78,7 @@ export default function HomepageCards(): JSX.Element { return (
-

Hyperledger Besu Ethereum client

+ Hyperledger Besu Ethereum client

Hyperledger Besu is an open source Ethereum client developed under the Apache 2.0 license and written in Java. It runs on public and private diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 6867b1d3e14..7f744e03430 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,17 +1,19 @@ import React from "react"; import Layout from "@theme/Layout"; +import Link from "@docusaurus/Link"; +import Heading from '@theme/Heading' import HomepageCards from "@site/src/components/HomepageCards"; function HomepageText() { return (

-

What does Besu support?

+ What does Besu support?

Besu includes a{" "} - + command line interface - {" "} - and JSON-RPC API for + {" "} + and JSON-RPC API for running, maintaining, debugging, and monitoring nodes in an Ethereum network. You can use the API via RPC over HTTP or via WebSocket. Besu also supports Pub/Sub. @@ -19,34 +21,34 @@ function HomepageText() {

Besu supports common smart contract and dapp development, deployment, and operational use cases, using tools such as{" "} - Hardhat,{" "} - Remix, and{" "} - web3j. The client supports common + Hardhat,{" "} + Remix, and{" "} + web3j. The client supports common JSON-RPC API methods such as eth, net,{" "} web3, debug, and miner.

Besu doesn't support key management inside the client. You can use{" "} - Web3Signer with + Web3Signer with Besu to access your keystore and sign transactions.

-

Questions?

+ Questions?

If you have any questions about Besu, ask on the besu channel on{" "} - Hyperledger Discord. + Hyperledger Discord.

Learn more about the{" "} - Hyperledger Foundation. + Hyperledger Foundation. You can{" "} - + contribute to the documentation - {" "} + {" "} or to{" "} - + Besu itself - + .