├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── content_issue.yml │ └── documentation_bug_report.md ├── PULL_REQUEST_TEMPLATE.md ├── linters │ └── semgrep │ │ └── pull-request-target-code-checkout.yaml ├── tagging │ ├── script.js │ └── tagsByIssueSection.json └── workflows │ ├── ci.yml │ ├── close-stale-issues.yaml │ ├── issue-label-tag.yml │ ├── link-check.yml │ └── semgrep.yaml ├── .gitignore ├── .npmignore ├── .npmrc ├── .prettierignore ├── .prettierrc.json ├── .tool-versions ├── .vscode └── settings.json ├── CODEOWNERS ├── LICENSE ├── README.md ├── apps └── nextra │ ├── .env.example │ ├── .prettierignore │ ├── README.md │ ├── components │ ├── api-reference │ │ ├── ApiReference.tsx │ │ ├── DynamicApiReference.tsx │ │ ├── index.ts │ │ └── utils.ts │ ├── beta-notice │ │ ├── IndexerBetaNotice.tsx │ │ └── index.tsx │ ├── buttons │ │ └── Button.tsx │ ├── card │ │ ├── Card.tsx │ │ └── index.tsx │ ├── codeblock │ │ ├── Codeblock.tsx │ │ └── index.tsx │ ├── diagrams │ │ ├── cache.tsx │ │ ├── infinite.tsx │ │ ├── pagination.tsx │ │ ├── use-draw.ts │ │ └── welcome.tsx │ ├── error │ │ ├── Error.tsx │ │ ├── LocaleError.tsx │ │ └── index.tsx │ ├── external.mdx │ ├── faucet │ │ ├── FaucetForm.tsx │ │ └── index.tsx │ ├── features.module.css │ ├── features.tsx │ ├── framework-reference │ │ └── index.tsx │ ├── graphql │ │ ├── DynamicGraphQL.tsx │ │ ├── GraphQLSkeleton.tsx │ │ ├── NonDynamicGraphQL.tsx │ │ ├── OLD_GraphQL.tsx │ │ ├── index.tsx │ │ ├── nft │ │ │ ├── DynamicNFTGraphQL.tsx │ │ │ └── NFTGraphQL.tsx │ │ └── util.ts │ ├── index.tsx │ ├── landing │ │ ├── codeSnippets.ts │ │ ├── components │ │ │ ├── Accordion.tsx │ │ │ ├── Button.tsx │ │ │ ├── Carousel.tsx │ │ │ ├── CodeBlock.tsx │ │ │ ├── GradientText.tsx │ │ │ ├── Icons.tsx │ │ │ ├── Illustrations │ │ │ │ ├── ChainIllustration.tsx │ │ │ │ ├── ParallelExecutionIllustration.tsx │ │ │ │ ├── PerformanceIllustration.tsx │ │ │ │ └── ValidatorsIllustration.tsx │ │ │ ├── LargeCarousel.tsx │ │ │ └── Section.tsx │ │ ├── index.tsx │ │ └── sections │ │ │ ├── BlockchainSection.tsx │ │ │ ├── DevelopersSection.tsx │ │ │ ├── FooterSection.tsx │ │ │ ├── MoveSection.tsx │ │ │ ├── TestimonialsSection.tsx │ │ │ ├── TitleSection.tsx │ │ │ └── ToolingSection.tsx │ ├── login-button │ │ └── index.tsx │ ├── media │ │ └── index.tsx │ ├── move-reference │ │ ├── ModuleSelectContainer.tsx │ │ ├── MoveReference.tsx │ │ ├── MoveReferenceProvider.tsx │ │ ├── index.tsx │ │ ├── shared.ts │ │ └── useMoveContent.tsx │ ├── preload-search │ │ ├── DynamicPreloadSearch.tsx │ │ ├── PreloadSearch.tsx │ │ └── index.ts │ ├── remote-codeblock │ │ ├── RemoteCodeblock.tsx │ │ ├── index.tsx │ │ ├── types.ts │ │ └── utils.ts │ ├── select │ │ ├── Select.tsx │ │ └── index.tsx │ ├── tabs │ │ ├── Tabs.tsx │ │ ├── index.tsx │ │ └── tabs.module.css │ ├── themed-image │ │ ├── ThemedImage.tsx │ │ └── index.tsx │ └── video.tsx │ ├── docs.config.js │ ├── generate-language-sitemaps.cjs │ ├── generate-sitemap-index.cjs │ ├── hooks │ └── useAuth.ts │ ├── lib │ └── firebase.ts │ ├── next-env.d.ts │ ├── next-sitemap.config.mjs │ ├── next.config.mjs │ ├── oklchColorsPlugin.cjs │ ├── package.json │ ├── pages │ ├── 404.tsx │ ├── _app.tsx │ ├── _document.tsx │ ├── api │ │ ├── Inter-SemiBold.otf │ │ ├── Satoshi-Medium.otf │ │ ├── compile-mdx.tsx │ │ └── og.png.tsx │ ├── en │ │ ├── _meta.ts │ │ ├── build │ │ │ ├── _meta.tsx │ │ │ ├── apis.mdx │ │ │ ├── apis │ │ │ │ ├── _meta.tsx │ │ │ │ ├── aptos-labs-developer-portal.mdx │ │ │ │ ├── data-providers.mdx │ │ │ │ ├── faucet-api.mdx │ │ │ │ ├── fullnode-rest-api-reference.mdx │ │ │ │ └── fullnode-rest-api.mdx │ │ │ ├── cli.mdx │ │ │ ├── cli │ │ │ │ ├── _meta.tsx │ │ │ │ ├── formatting-move-contracts.mdx │ │ │ │ ├── install-cli │ │ │ │ │ ├── _meta.ts │ │ │ │ │ ├── install-cli-linux.mdx │ │ │ │ │ ├── install-cli-mac.mdx │ │ │ │ │ ├── install-cli-specific-version.mdx │ │ │ │ │ └── install-cli-windows.mdx │ │ │ │ ├── managing-a-network-node.mdx │ │ │ │ ├── public-network.mdx │ │ │ │ ├── replay-past-transactions.mdx │ │ │ │ ├── running-a-local-network.mdx │ │ │ │ ├── setup-cli.mdx │ │ │ │ ├── setup-cli │ │ │ │ │ └── install-move-prover.mdx │ │ │ │ ├── start-from-template.mdx │ │ │ │ ├── trying-things-on-chain.mdx │ │ │ │ ├── trying-things-on-chain │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── create-test-accounts.mdx │ │ │ │ │ ├── ledger.mdx │ │ │ │ │ └── looking-up-account-info.mdx │ │ │ │ ├── working-with-move-contracts.mdx │ │ │ │ └── working-with-move-contracts │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── arguments-in-json-tutorial.mdx │ │ │ │ │ ├── local-simulation-benchmarking-and-gas-profiling.mdx │ │ │ │ │ └── multi-signature-tutorial.mdx │ │ │ ├── create-aptos-dapp.mdx │ │ │ ├── create-aptos-dapp │ │ │ │ ├── _meta.tsx │ │ │ │ └── faq.mdx │ │ │ ├── get-started.mdx │ │ │ ├── get-started │ │ │ │ ├── _meta.tsx │ │ │ │ ├── developer-setup.mdx │ │ │ │ ├── ethereum-cheatsheet.mdx │ │ │ │ └── solana-cheatsheet.mdx │ │ │ ├── guides.mdx │ │ │ ├── guides │ │ │ │ ├── _meta.tsx │ │ │ │ ├── aptos-keyless.mdx │ │ │ │ ├── aptos-keyless │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── federated-keyless.mdx │ │ │ │ │ ├── federated-keyless │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── integration-guide.mdx │ │ │ │ │ │ ├── key-considerations.mdx │ │ │ │ │ │ ├── other.mdx │ │ │ │ │ │ └── simple-example.mdx │ │ │ │ │ ├── how-keyless-works.mdx │ │ │ │ │ ├── integration-guide.mdx │ │ │ │ │ ├── introduction.mdx │ │ │ │ │ ├── oidc-support.mdx │ │ │ │ │ ├── other.mdx │ │ │ │ │ └── simple-example.mdx │ │ │ │ ├── build-e2e-dapp.mdx │ │ │ │ ├── build-e2e-dapp │ │ │ │ │ ├── 1-create-smart-contract.mdx │ │ │ │ │ ├── 2-set-up-the-frontend.mdx │ │ │ │ │ ├── 3-fetch-data-from-chain.mdx │ │ │ │ │ ├── 4-submit-data-to-chain.mdx │ │ │ │ │ ├── 5-handle-tasks.mdx │ │ │ │ │ └── _meta.tsx │ │ │ │ ├── exchanges.mdx │ │ │ │ ├── first-coin.mdx │ │ │ │ ├── first-fungible-asset.mdx │ │ │ │ ├── first-move-module.mdx │ │ │ │ ├── first-multisig.mdx │ │ │ │ ├── first-transaction.mdx │ │ │ │ ├── key-rotation.mdx │ │ │ │ ├── multisig-managed-fungible-asset.mdx │ │ │ │ ├── oracles.mdx │ │ │ │ ├── sponsored-transactions.mdx │ │ │ │ ├── system-integrators-guide.mdx │ │ │ │ ├── transaction-management.mdx │ │ │ │ └── your-first-nft.mdx │ │ │ ├── indexer.mdx │ │ │ ├── indexer │ │ │ │ ├── _meta.tsx │ │ │ │ ├── indexer-api.mdx │ │ │ │ ├── indexer-api │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── account-transactions.mdx │ │ │ │ │ ├── ans-lookup.mdx │ │ │ │ │ ├── architecture.mdx │ │ │ │ │ ├── fungible-asset-balances.mdx │ │ │ │ │ ├── fungible-asset-info.mdx │ │ │ │ │ ├── get-delegators.mdx │ │ │ │ │ ├── get-nft-collections.mdx │ │ │ │ │ ├── get-nfts.mdx │ │ │ │ │ ├── indexer-reference.mdx │ │ │ │ │ ├── self-hosted.mdx │ │ │ │ │ └── token-metadata.mdx │ │ │ │ ├── indexer-sdk.mdx │ │ │ │ ├── indexer-sdk │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── advanced-tutorials │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── processor-test.mdx │ │ │ │ │ │ ├── test-transactions.mdx │ │ │ │ │ │ ├── txn-importer.mdx │ │ │ │ │ │ └── txn-script.mdx │ │ │ │ │ ├── documentation.mdx │ │ │ │ │ ├── documentation │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── connect-steps.mdx │ │ │ │ │ │ ├── create-processor.mdx │ │ │ │ │ │ ├── define-schema.mdx │ │ │ │ │ │ ├── run-processor.mdx │ │ │ │ │ │ ├── setup.mdx │ │ │ │ │ │ ├── steps.mdx │ │ │ │ │ │ ├── steps │ │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ │ ├── parsing-txns.mdx │ │ │ │ │ │ │ └── transaction-stream.mdx │ │ │ │ │ │ └── version-tracking.mdx │ │ │ │ │ └── quickstart.mdx │ │ │ │ ├── legacy.mdx │ │ │ │ ├── legacy │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── custom-data-model.mdx │ │ │ │ │ ├── indexer-fullnode.mdx │ │ │ │ │ └── migration.mdx │ │ │ │ ├── nft-aggregator.mdx │ │ │ │ ├── nft-aggregator │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── analytics-api.mdx │ │ │ │ │ ├── graphql-api.mdx │ │ │ │ │ ├── marketplaces.mdx │ │ │ │ │ ├── marketplaces │ │ │ │ │ │ ├── bluemove.mdx │ │ │ │ │ │ ├── rarible.mdx │ │ │ │ │ │ ├── topaz.mdx │ │ │ │ │ │ ├── tradeport.mdx │ │ │ │ │ │ └── wapal.mdx │ │ │ │ │ └── nft-aggregator-table.mdx │ │ │ │ ├── txn-stream.mdx │ │ │ │ └── txn-stream │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── aptos-hosted-txn-stream.mdx │ │ │ │ │ ├── local-development.mdx │ │ │ │ │ └── self-hosted.mdx │ │ │ ├── sdks.mdx │ │ │ ├── sdks │ │ │ │ ├── _meta.tsx │ │ │ │ ├── community-sdks.mdx │ │ │ │ ├── community-sdks │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── kotlin-sdk.mdx │ │ │ │ │ ├── kotlin-sdk │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── account.mdx │ │ │ │ │ │ ├── building-transactions.mdx │ │ │ │ │ │ ├── client-configuration.mdx │ │ │ │ │ │ ├── fetch-data-via-sdk.mdx │ │ │ │ │ │ ├── for-ios-devs │ │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ │ ├── aptos-kit.mdx │ │ │ │ │ │ │ └── getting-started.mdx │ │ │ │ │ │ ├── quickstart.mdx │ │ │ │ │ │ └── sponsored-transactions.mdx │ │ │ │ │ ├── swift-sdk.mdx │ │ │ │ │ └── unity-opendive-sdk.mdx │ │ │ │ ├── cpp-sdk.mdx │ │ │ │ ├── dotnet-sdk.mdx │ │ │ │ ├── dotnet-sdk │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── accounts │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── ed25519.mdx │ │ │ │ │ │ ├── keyless.mdx │ │ │ │ │ │ └── multikey.mdx │ │ │ │ │ ├── dotnet-examples.mdx │ │ │ │ │ ├── getting-started.mdx │ │ │ │ │ ├── godot-integration.mdx │ │ │ │ │ ├── queries │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ └── view.mdx │ │ │ │ │ ├── transactions │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── basic-transactions.mdx │ │ │ │ │ │ └── sponsored-transactions.mdx │ │ │ │ │ └── unity-integration.mdx │ │ │ │ ├── go-sdk.mdx │ │ │ │ ├── go-sdk │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── account.mdx │ │ │ │ │ ├── building-transactions.mdx │ │ │ │ │ ├── building-transactions │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── batching-transactions.mdx │ │ │ │ │ │ ├── bcs-format.mdx │ │ │ │ │ │ ├── multi-agent-transactions.mdx │ │ │ │ │ │ ├── simulating-transactions.mdx │ │ │ │ │ │ └── sponsoring-transactions.mdx │ │ │ │ │ ├── fetch-data-via-sdk.mdx │ │ │ │ │ └── go-examples.mdx │ │ │ │ ├── python-sdk.mdx │ │ │ │ ├── rust-sdk.mdx │ │ │ │ ├── ts-sdk.mdx │ │ │ │ ├── ts-sdk │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── account.mdx │ │ │ │ │ ├── account │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── account-abstraction.mdx │ │ │ │ │ │ └── derivable-account-abstraction.mdx │ │ │ │ │ ├── building-transactions.mdx │ │ │ │ │ ├── building-transactions │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ ├── batching-transactions.mdx │ │ │ │ │ │ ├── bcs-format.mdx │ │ │ │ │ │ ├── multi-agent-transactions.mdx │ │ │ │ │ │ ├── script-composer.mdx │ │ │ │ │ │ ├── simulating-transactions.mdx │ │ │ │ │ │ └── sponsoring-transactions.mdx │ │ │ │ │ ├── confidential-asset.mdx │ │ │ │ │ ├── fetch-data-via-sdk.mdx │ │ │ │ │ ├── legacy-ts-sdk.mdx │ │ │ │ │ ├── legacy-ts-sdk │ │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ │ └── migration-guide.mdx │ │ │ │ │ ├── quickstart.mdx │ │ │ │ │ ├── ts-examples.mdx │ │ │ │ │ └── type-safe-contract.mdx │ │ │ │ ├── unity-sdk.mdx │ │ │ │ ├── wallet-adapter.mdx │ │ │ │ └── wallet-adapter │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── browser-extension-wallets.mdx │ │ │ │ │ ├── dapp.mdx │ │ │ │ │ ├── wallet-standards.mdx │ │ │ │ │ ├── wallets.mdx │ │ │ │ │ └── x-chain-accounts.mdx │ │ │ ├── smart-contracts.mdx │ │ │ └── smart-contracts │ │ │ │ ├── _meta.tsx │ │ │ │ ├── aptos-coin.mdx │ │ │ │ ├── aptos-standards.mdx │ │ │ │ ├── aptos-token.mdx │ │ │ │ ├── bcs.mdx │ │ │ │ ├── book.mdx │ │ │ │ ├── book │ │ │ │ ├── SUMMARY.mdx │ │ │ │ ├── _meta.tsx │ │ │ │ ├── abilities.mdx │ │ │ │ ├── abort-and-assert.mdx │ │ │ │ ├── address.mdx │ │ │ │ ├── bool.mdx │ │ │ │ ├── coding-conventions.mdx │ │ │ │ ├── conditionals.mdx │ │ │ │ ├── constants.mdx │ │ │ │ ├── enums.mdx │ │ │ │ ├── equality.mdx │ │ │ │ ├── friends.mdx │ │ │ │ ├── functions.mdx │ │ │ │ ├── generics.mdx │ │ │ │ ├── global-storage-operators.mdx │ │ │ │ ├── global-storage-structure.mdx │ │ │ │ ├── integers.mdx │ │ │ │ ├── loops.mdx │ │ │ │ ├── modules-and-scripts.mdx │ │ │ │ ├── move-2.mdx │ │ │ │ ├── move-tutorial.mdx │ │ │ │ ├── package-upgrades.mdx │ │ │ │ ├── packages.mdx │ │ │ │ ├── references.mdx │ │ │ │ ├── signer.mdx │ │ │ │ ├── standard-library.mdx │ │ │ │ ├── structs-and-resources.mdx │ │ │ │ ├── tuples.mdx │ │ │ │ ├── unit-testing.mdx │ │ │ │ ├── uses.mdx │ │ │ │ ├── variables.mdx │ │ │ │ └── vector.mdx │ │ │ │ ├── compiler_v2.mdx │ │ │ │ ├── compiling.mdx │ │ │ │ ├── confidential-asset.mdx │ │ │ │ ├── create-package.mdx │ │ │ │ ├── cryptography.mdx │ │ │ │ ├── debugging.mdx │ │ │ │ ├── deployment.mdx │ │ │ │ ├── digital-asset.mdx │ │ │ │ ├── error-codes.mdx │ │ │ │ ├── fungible-asset.mdx │ │ │ │ ├── linter.mdx │ │ │ │ ├── maps.mdx │ │ │ │ ├── modules-on-aptos.mdx │ │ │ │ ├── move-reference.mdx │ │ │ │ ├── move-security-guidelines.mdx │ │ │ │ ├── object │ │ │ │ ├── _meta.tsx │ │ │ │ ├── creating-objects.mdx │ │ │ │ └── using-objects.mdx │ │ │ │ ├── objects.mdx │ │ │ │ ├── prover.mdx │ │ │ │ ├── prover │ │ │ │ ├── _meta.tsx │ │ │ │ ├── prover-guide.mdx │ │ │ │ ├── spec-lang.mdx │ │ │ │ └── supporting-resources.mdx │ │ │ │ ├── randomness.mdx │ │ │ │ ├── reference.mdx │ │ │ │ ├── resource-accounts.mdx │ │ │ │ ├── scripts.mdx │ │ │ │ ├── scripts │ │ │ │ ├── _meta.tsx │ │ │ │ ├── compiling-scripts.mdx │ │ │ │ ├── running-scripts.mdx │ │ │ │ ├── script-tutorial.mdx │ │ │ │ └── writing-scripts.mdx │ │ │ │ ├── smart-vector.mdx │ │ │ │ ├── table.mdx │ │ │ │ ├── third-party-dependencies.mdx │ │ │ │ ├── tokens.mdx │ │ │ │ ├── vector.mdx │ │ │ │ └── why-move.mdx │ │ ├── developer-platforms │ │ │ ├── _meta.ts │ │ │ ├── contribute.mdx │ │ │ └── contribute │ │ │ │ ├── _meta.ts │ │ │ │ ├── components │ │ │ │ ├── _meta.ts │ │ │ │ ├── callout.mdx │ │ │ │ ├── card.mdx │ │ │ │ ├── codeblock.mdx │ │ │ │ ├── filetree.mdx │ │ │ │ ├── graphql-editor.mdx │ │ │ │ ├── image.mdx │ │ │ │ ├── latex.mdx │ │ │ │ ├── link.mdx │ │ │ │ ├── markdown.mdx │ │ │ │ ├── mermaid.mdx │ │ │ │ ├── npm2yarn.mdx │ │ │ │ ├── organize-files.mdx │ │ │ │ ├── remote-codeblock.mdx │ │ │ │ ├── ssg.mdx │ │ │ │ ├── steps.mdx │ │ │ │ ├── table.mdx │ │ │ │ ├── tabs.mdx │ │ │ │ └── themed-image.mdx │ │ │ │ ├── examples │ │ │ │ ├── _meta.ts │ │ │ │ └── pairings.mdx │ │ │ │ └── setup │ │ │ │ ├── SEO.mdx │ │ │ │ ├── _meta.ts │ │ │ │ ├── analytics.mdx │ │ │ │ ├── deployment.mdx │ │ │ │ ├── docs-config.mdx │ │ │ │ ├── i18n.mdx │ │ │ │ ├── maintenance.mdx │ │ │ │ ├── mdx.mdx │ │ │ │ ├── migrating-from-docusaurus.mdx │ │ │ │ ├── organize-files-advanced.mdx │ │ │ │ ├── organize-files.mdx │ │ │ │ └── troubleshooting.mdx │ │ ├── index.mdx │ │ └── network │ │ │ ├── _meta.ts │ │ │ ├── blockchain.mdx │ │ │ ├── blockchain │ │ │ ├── _meta.ts │ │ │ ├── accounts.mdx │ │ │ ├── aptos-white-paper.mdx │ │ │ ├── base-gas.mdx │ │ │ ├── blockchain-deep-dive.mdx │ │ │ ├── blocks.mdx │ │ │ ├── delegated-staking.mdx │ │ │ ├── events.mdx │ │ │ ├── execution.mdx │ │ │ ├── fullnodes.mdx │ │ │ ├── gas-txn-fee.mdx │ │ │ ├── governance.mdx │ │ │ ├── move.mdx │ │ │ ├── node-networks-sync.mdx │ │ │ ├── resources.mdx │ │ │ ├── staking.mdx │ │ │ ├── txns-states.mdx │ │ │ └── validator-nodes.mdx │ │ │ ├── faucet.mdx │ │ │ ├── glossary.mdx │ │ │ ├── nodes.mdx │ │ │ ├── nodes │ │ │ ├── _meta.tsx │ │ │ ├── bootstrap-fullnode.mdx │ │ │ ├── bootstrap-fullnode │ │ │ │ ├── aptos-db-restore.mdx │ │ │ │ └── bootstrap-fullnode.mdx │ │ │ ├── building-from-source.mdx │ │ │ ├── configure.mdx │ │ │ ├── configure │ │ │ │ ├── _meta.tsx │ │ │ │ ├── consensus-observer.mdx │ │ │ │ ├── data-pruning.mdx │ │ │ │ ├── node-files-all-networks.mdx │ │ │ │ ├── node-files-all-networks │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── node-files-devnet.mdx │ │ │ │ │ ├── node-files-mainnet.mdx │ │ │ │ │ └── node-files-testnet.mdx │ │ │ │ ├── state-sync.mdx │ │ │ │ └── telemetry.mdx │ │ │ ├── full-node.mdx │ │ │ ├── full-node │ │ │ │ ├── _category_.json │ │ │ │ ├── _meta.tsx │ │ │ │ ├── deployments.mdx │ │ │ │ ├── deployments │ │ │ │ │ ├── _meta.tsx │ │ │ │ │ ├── using-docker.mdx │ │ │ │ │ ├── using-gcp.mdx │ │ │ │ │ └── using-source-code.mdx │ │ │ │ ├── modify.mdx │ │ │ │ ├── modify │ │ │ │ │ ├── fullnode-network-connections.mdx │ │ │ │ │ ├── network-identity-fullnode.mdx │ │ │ │ │ └── update-fullnode-with-new-releases.mdx │ │ │ │ ├── pfn-requirements.mdx │ │ │ │ └── verify-pfn.mdx │ │ │ ├── localnet.mdx │ │ │ ├── localnet │ │ │ │ ├── _meta.tsx │ │ │ │ ├── local-development-network.mdx │ │ │ │ └── run-a-localnet.mdx │ │ │ ├── measure.mdx │ │ │ ├── measure │ │ │ │ ├── important-metrics.mdx │ │ │ │ ├── node-health-checker-faq.mdx │ │ │ │ ├── node-health-checker.mdx │ │ │ │ └── node-inspection-service.mdx │ │ │ ├── networks.mdx │ │ │ ├── validator-node.mdx │ │ │ └── validator-node │ │ │ │ ├── _meta.tsx │ │ │ │ ├── connect-nodes.mdx │ │ │ │ ├── connect-nodes │ │ │ │ ├── _meta.tsx │ │ │ │ ├── connect-to-aptos-network.mdx │ │ │ │ ├── delegation-pool-operations.mdx │ │ │ │ ├── staking-pool-operations.mdx │ │ │ │ └── staking-pool-voter.mdx │ │ │ │ ├── deploy-nodes.mdx │ │ │ │ ├── deploy-nodes │ │ │ │ ├── _meta.tsx │ │ │ │ ├── using-aws.mdx │ │ │ │ ├── using-azure.mdx │ │ │ │ ├── using-docker.mdx │ │ │ │ ├── using-gcp.mdx │ │ │ │ └── using-source-code.mdx │ │ │ │ ├── modify-nodes.mdx │ │ │ │ ├── modify-nodes │ │ │ │ ├── _meta.tsx │ │ │ │ ├── rotate-consensus-key.mdx │ │ │ │ ├── shutting-down-nodes.mdx │ │ │ │ └── update-validator-node.mdx │ │ │ │ ├── node-requirements.mdx │ │ │ │ ├── operator.mdx │ │ │ │ ├── verify-nodes.mdx │ │ │ │ └── verify-nodes │ │ │ │ ├── _meta.tsx │ │ │ │ ├── leaderboard-metrics.mdx │ │ │ │ └── node-liveness-criteria.mdx │ │ │ └── releases.mdx │ └── zh │ │ ├── _meta.ts │ │ ├── build │ │ ├── _meta.tsx │ │ ├── apis.mdx │ │ ├── apis │ │ │ ├── _meta.tsx │ │ │ ├── aptos-labs-developer-portal.mdx │ │ │ ├── data-providers.mdx │ │ │ ├── faucet-api.mdx │ │ │ ├── fullnode-rest-api-reference.mdx │ │ │ └── fullnode-rest-api.mdx │ │ ├── cli.mdx │ │ ├── cli │ │ │ ├── _meta.tsx │ │ │ ├── formatting-move-contracts.mdx │ │ │ ├── install-cli │ │ │ │ ├── _meta.ts │ │ │ │ ├── install-cli-linux.mdx │ │ │ │ ├── install-cli-mac.mdx │ │ │ │ ├── install-cli-specific-version.mdx │ │ │ │ └── install-cli-windows.mdx │ │ │ ├── managing-a-network-node.mdx │ │ │ ├── public-network.mdx │ │ │ ├── replay-past-transactions.mdx │ │ │ ├── running-a-local-network.mdx │ │ │ ├── setup-cli.mdx │ │ │ ├── setup-cli │ │ │ │ └── install-move-prover.mdx │ │ │ ├── start-from-template.mdx │ │ │ ├── trying-things-on-chain.mdx │ │ │ ├── trying-things-on-chain │ │ │ │ ├── _meta.tsx │ │ │ │ ├── create-test-accounts.mdx │ │ │ │ └── looking-up-account-info.mdx │ │ │ ├── working-with-move-contracts.mdx │ │ │ └── working-with-move-contracts │ │ │ │ ├── _meta.tsx │ │ │ │ └── arguments-in-json-tutorial.mdx │ │ ├── create-aptos-dapp.mdx │ │ ├── create-aptos-dapp │ │ │ ├── _meta.tsx │ │ │ └── faq.mdx │ │ ├── get-started.mdx │ │ ├── get-started │ │ │ ├── _meta.tsx │ │ │ ├── developer-setup.mdx │ │ │ ├── ethereum-cheatsheet.mdx │ │ │ └── solana-cheatsheet.mdx │ │ ├── guides.mdx │ │ ├── guides │ │ │ ├── _meta.tsx │ │ │ ├── aptos-keyless │ │ │ │ ├── _meta.tsx │ │ │ │ └── federated-keyless │ │ │ │ │ └── _meta.tsx │ │ │ └── build-e2e-dapp │ │ │ │ └── _meta.tsx │ │ ├── indexer.mdx │ │ ├── sdks.mdx │ │ ├── sdks │ │ │ ├── ts-sdk.mdx │ │ │ └── ts-sdk │ │ │ │ ├── _meta.tsx │ │ │ │ ├── account.mdx │ │ │ │ ├── account │ │ │ │ ├── _meta.tsx │ │ │ │ ├── account-abstraction.mdx │ │ │ │ └── derivable-account-abstraction.mdx │ │ │ │ ├── building-transactions.mdx │ │ │ │ ├── building-transactions │ │ │ │ ├── _meta.tsx │ │ │ │ ├── batching-transactions.mdx │ │ │ │ ├── bcs-format.mdx │ │ │ │ ├── multi-agent-transactions.mdx │ │ │ │ ├── script-composer.mdx │ │ │ │ ├── simulating-transactions.mdx │ │ │ │ └── sponsoring-transactions.mdx │ │ │ │ ├── confidential-asset.mdx │ │ │ │ ├── fetch-data-via-sdk.mdx │ │ │ │ ├── legacy-ts-sdk.mdx │ │ │ │ ├── legacy-ts-sdk │ │ │ │ ├── _meta.tsx │ │ │ │ └── migration-guide.mdx │ │ │ │ ├── quickstart.mdx │ │ │ │ ├── ts-examples.mdx │ │ │ │ └── type-safe-contract.mdx │ │ ├── smart-contracts.mdx │ │ └── smart-contracts │ │ │ ├── _meta.tsx │ │ │ ├── aptos-coin.mdx │ │ │ ├── aptos-standards.mdx │ │ │ ├── aptos-token.mdx │ │ │ ├── bcs.mdx │ │ │ ├── book.mdx │ │ │ ├── book │ │ │ ├── SUMMARY.mdx │ │ │ ├── _meta.tsx │ │ │ ├── abilities.mdx │ │ │ ├── abort-and-assert.mdx │ │ │ ├── address.mdx │ │ │ ├── bool.mdx │ │ │ ├── coding-conventions.mdx │ │ │ ├── conditionals.mdx │ │ │ ├── constants.mdx │ │ │ ├── enums.mdx │ │ │ ├── equality.mdx │ │ │ ├── friends.mdx │ │ │ ├── functions.mdx │ │ │ ├── generics.mdx │ │ │ ├── global-storage-operators.mdx │ │ │ ├── global-storage-structure.mdx │ │ │ ├── integers.mdx │ │ │ ├── loops.mdx │ │ │ ├── modules-and-scripts.mdx │ │ │ ├── move-2.mdx │ │ │ ├── move-tutorial.mdx │ │ │ ├── package-upgrades.mdx │ │ │ ├── packages.mdx │ │ │ ├── references.mdx │ │ │ ├── signer.mdx │ │ │ ├── standard-library.mdx │ │ │ ├── structs-and-resources.mdx │ │ │ ├── tuples.mdx │ │ │ ├── unit-testing.mdx │ │ │ ├── uses.mdx │ │ │ ├── variables.mdx │ │ │ └── vector.mdx │ │ │ ├── compiler_v2.mdx │ │ │ ├── compiling.mdx │ │ │ ├── confidential-asset.mdx │ │ │ ├── create-package.mdx │ │ │ ├── cryptography.mdx │ │ │ ├── debugging.mdx │ │ │ ├── deployment.mdx │ │ │ ├── digital-asset.mdx │ │ │ ├── error-codes.mdx │ │ │ ├── fungible-asset.mdx │ │ │ ├── linter.mdx │ │ │ ├── maps.mdx │ │ │ ├── modules-on-aptos.mdx │ │ │ ├── move-reference.mdx │ │ │ ├── move-security-guidelines.mdx │ │ │ ├── object │ │ │ └── _meta.tsx │ │ │ ├── objects.mdx │ │ │ ├── prover.mdx │ │ │ ├── prover │ │ │ └── _meta.tsx │ │ │ ├── randomness.mdx │ │ │ ├── reference.mdx │ │ │ ├── resource-accounts.mdx │ │ │ ├── scripts.mdx │ │ │ ├── scripts │ │ │ └── _meta.tsx │ │ │ ├── smart-vector.mdx │ │ │ ├── table.mdx │ │ │ ├── third-party-dependencies.mdx │ │ │ ├── tokens.mdx │ │ │ ├── vector.mdx │ │ │ └── why-move.mdx │ │ ├── index.mdx │ │ └── network │ │ ├── _meta.ts │ │ ├── nodes.mdx │ │ └── nodes │ │ ├── _meta.tsx │ │ ├── aptos-api-spec.mdx │ │ ├── bootstrap-fullnode.mdx │ │ ├── bootstrap-fullnode │ │ ├── aptos-db-restore.mdx │ │ └── bootstrap-fullnode.mdx │ │ ├── building-from-source.mdx │ │ ├── configure.mdx │ │ ├── configure │ │ ├── _meta.tsx │ │ ├── data-pruning.mdx │ │ ├── node-files-all-networks.mdx │ │ ├── node-files-all-networks │ │ │ ├── _meta.tsx │ │ │ ├── node-files-devnet.mdx │ │ │ ├── node-files-mainnet.mdx │ │ │ └── node-files-testnet.mdx │ │ ├── state-sync.mdx │ │ └── telemetry.mdx │ │ ├── full-node.mdx │ │ ├── full-node │ │ ├── _category_.json │ │ ├── _meta.tsx │ │ ├── deployments.mdx │ │ ├── deployments │ │ │ ├── _meta.tsx │ │ │ ├── using-docker.mdx │ │ │ ├── using-gcp.mdx │ │ │ └── using-source-code.mdx │ │ ├── modify.mdx │ │ ├── modify │ │ │ ├── fullnode-network-connections.mdx │ │ │ ├── network-identity-fullnode.mdx │ │ │ └── update-fullnode-with-new-releases.mdx │ │ ├── pfn-requirements.mdx │ │ └── verify-pfn.mdx │ │ ├── identity-and-configuration.mdx │ │ ├── localnet.mdx │ │ ├── localnet │ │ ├── _meta.tsx │ │ ├── local-development-network.mdx │ │ └── run-a-localnet.mdx │ │ ├── measure.mdx │ │ ├── measure │ │ ├── important-metrics.mdx │ │ ├── node-health-checker-faq.mdx │ │ ├── node-health-checker.mdx │ │ └── node-inspection-service.mdx │ │ ├── networks.mdx │ │ ├── validator-node.mdx │ │ └── validator-node │ │ ├── _meta.tsx │ │ ├── connect-nodes.mdx │ │ ├── connect-nodes │ │ ├── _meta.tsx │ │ ├── connect-to-aptos-network.mdx │ │ ├── delegation-pool-operations.mdx │ │ ├── staking-pool-operations.mdx │ │ └── staking-pool-voter.mdx │ │ ├── deploy-nodes.mdx │ │ ├── deploy-nodes │ │ ├── _meta.tsx │ │ ├── using-aws.mdx │ │ ├── using-azure.mdx │ │ ├── using-docker.mdx │ │ ├── using-gcp.mdx │ │ └── using-source-code.mdx │ │ ├── modify-nodes.mdx │ │ ├── modify-nodes │ │ ├── _meta.tsx │ │ ├── shutting-down-nodes.mdx │ │ └── update-validator-node.mdx │ │ ├── node-requirements.mdx │ │ ├── operator.mdx │ │ ├── verify-nodes.mdx │ │ └── verify-nodes │ │ ├── _meta.tsx │ │ ├── leaderboard-metrics.mdx │ │ └── node-liveness-criteria.mdx │ ├── postbuild.js │ ├── postcss.config.cjs │ ├── public │ ├── docs │ │ ├── advanced.svg │ │ ├── ans_entrypoint_example.png │ │ ├── ans_entrypoint_modal_example.png │ │ ├── ans_entrypoint_with_other_name.png │ │ ├── apple.svg │ │ ├── aptos-black.svg │ │ ├── aptos-db-restore.png │ │ ├── aptos-indexing-dark.svg │ │ ├── aptos-indexing.svg │ │ ├── aptos-keyless │ │ │ ├── apple-dev-program.png │ │ │ ├── google-create-credentials.png │ │ │ ├── google-credentials-nav.png │ │ │ ├── keyless-account.png │ │ │ ├── keyless-overview.png │ │ │ ├── keyless-proof.png │ │ │ ├── keyless-signing.png │ │ │ └── keyless_relation.png │ │ ├── aptos-token-standard-flow-dark.svg │ │ ├── aptos-token-standard-flow.svg │ │ ├── aptos-white.svg │ │ ├── build-e2e-dapp-img-1-1.png │ │ ├── build-e2e-dapp-img-1.png │ │ ├── build-e2e-dapp-img-2.png │ │ ├── build-e2e-dapp-img-3.png │ │ ├── ca-diagram-dark.png │ │ ├── ca-diagram-light.png │ │ ├── cad-video.gif │ │ ├── digital-asset-dark.svg │ │ ├── digital-asset-light.svg │ │ ├── digital-asset.excalidraw │ │ ├── fa-diagram-dark.png │ │ ├── fa-diagram-light.png │ │ ├── fa-diagram.excalidraw │ │ ├── gas-profiling-cost-break-down-table.png │ │ ├── gas-profiling-flamegraph-0.png │ │ ├── gas-profiling-flamegraph-1.png │ │ ├── gas-profiling-flamegraph-2.png │ │ ├── github-dark.svg │ │ ├── github-light.svg │ │ ├── indexer-architecture-dark.svg │ │ ├── indexer-architecture-light.svg │ │ ├── indexer-architecture.excalidraw │ │ ├── indexer-custom-processor-dark.svg │ │ ├── indexer-custom-processor-light.svg │ │ ├── indexer-custom-processor.excalidraw │ │ ├── linux.svg │ │ ├── module-event.png │ │ ├── multisig_chart.svg │ │ ├── stake-state-dark.svg │ │ ├── stake-state.svg │ │ ├── staking-dark.svg │ │ ├── staking-light.svg │ │ ├── transactions-and-state-dark.svg │ │ ├── transactions-and-state.svg │ │ ├── ts-sdk-architecture-dark.png │ │ ├── ts-sdk-architecture-light.png │ │ ├── tutorial-gcp-logging1.png │ │ ├── tutorial-gcp-logging2.png │ │ ├── tutorial-gcp-logging3.png │ │ ├── tutorial-gcp-logging4.png │ │ ├── tutorial-gcp-logging5.png │ │ ├── tutorial-gcp-mon1.png │ │ ├── tutorial-gcp-mon2.png │ │ ├── v-fn-network.svg │ │ ├── validator-state-dark.svg │ │ ├── validator-state.svg │ │ ├── validator.svg │ │ ├── voting-resolution-flow-dark.svg │ │ ├── voting-resolution-flow.svg │ │ ├── wallet-adapter.svg │ │ └── windows.svg │ ├── favicon │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── favicon.png │ │ ├── favicon.svg │ │ ├── safari-pinned-tab.svg │ │ └── site.webmanifest │ ├── fonts │ │ └── Satoshi-Variable.woff2 │ ├── gas-profiling │ │ ├── sample-report-2 │ │ │ ├── assets │ │ │ │ └── exec_io.svg │ │ │ └── index.html │ │ └── sample-report │ │ │ ├── assets │ │ │ ├── exec_io.svg │ │ │ └── storage.svg │ │ │ └── index.html │ ├── landing │ │ ├── aptin-labs.jpeg │ │ ├── cellana.svg │ │ ├── graphql-logo.svg │ │ ├── indexer-illustration-dark.svg │ │ ├── indexer-illustration-light.svg │ │ ├── sdk-illustration-dark.svg │ │ ├── sdk-illustration-light.svg │ │ ├── testimonial-logo.png │ │ ├── typescript-logo.svg │ │ └── zabava.png │ ├── language-icons │ │ ├── c++.svg │ │ ├── csharp.svg │ │ ├── css.svg │ │ ├── discord.svg │ │ ├── graphql.svg │ │ ├── information-circle.svg │ │ ├── javascript.svg │ │ ├── markdown.svg │ │ ├── mdx.svg │ │ ├── moon.svg │ │ ├── move.svg │ │ ├── python.svg │ │ ├── rust.svg │ │ ├── terminal.svg │ │ ├── terraform.svg │ │ └── typescript.svg │ ├── robots.txt │ ├── scoop │ │ └── aptos.json │ ├── screenshots │ │ ├── bq_sql.png │ │ ├── explorer_account.png │ │ ├── explorer_coins.png │ │ ├── explorer_devnet.png │ │ ├── explorer_modules.png │ │ ├── explorer_resources.png │ │ └── move_blockchain.png │ ├── scripts │ │ ├── install_cli.ps1 │ │ ├── install_cli.py │ │ ├── install_cli.sh │ │ └── prover_setup.sh │ ├── sitemap-en.xml │ ├── sitemap-ja.xml │ ├── sitemap-zh.xml │ └── sitemap.xml │ ├── styles.css │ ├── tailwind.config.cjs │ ├── theme.config.tsx │ ├── tsconfig.json │ ├── utils │ ├── cn.ts │ ├── generateLocaleMap.mts │ ├── highlightCode.ts │ ├── language │ │ └── language.tsx │ ├── locale.ts │ └── useIsomorphicLayoutEffect.ts │ └── vercel.json ├── package.json ├── packages ├── aptos-nextra-components │ ├── .eslintignore │ ├── .gitignore │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── utils │ │ │ ├── cn.ts │ │ │ ├── index.ts │ │ │ └── mdast │ │ │ ├── examples │ │ │ ├── account.error.md │ │ │ ├── account.expect.md │ │ │ ├── account.md │ │ │ ├── account_snippet.expect.md │ │ │ ├── account_snippet.md │ │ │ ├── keyRotation.expect.md │ │ │ ├── keyRotation.md │ │ │ ├── object_snippet.expect.md │ │ │ ├── object_snippet.md │ │ │ ├── vector.expect.md │ │ │ ├── vector.md │ │ │ ├── vector_snippet.expect.md │ │ │ └── vector_snippet.md │ │ │ ├── fsast.ts │ │ │ ├── index.ts │ │ │ ├── mdast.test.ts │ │ │ └── mdast.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── aptos-nextra-config │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── katex │ │ │ ├── index.ts │ │ │ └── macros.ts │ │ └── nav │ │ │ ├── index.ts │ │ │ └── nav.tsx │ ├── tsconfig.json │ └── tsup.config.ts ├── eslint-config │ ├── README.md │ ├── library.js │ ├── next.js │ ├── package.json │ └── react-internal.js ├── github-fetch │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── src │ │ ├── github.spec.ts │ │ ├── github.ts │ │ ├── index.ts │ │ └── utils.ts │ └── tsconfig.json └── typescript-config │ ├── base.json │ ├── nextjs.json │ ├── package.json │ └── react-library.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── prebuild.js ├── tsconfig.json ├── turbo.json └── update-relative-links.py /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | end_of_line = lf 4 | indent_style = space 5 | indent_size = 2 6 | max_line_length = 80 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | root = true 10 | 11 | # Ensure that we don't trim trailing whitespace in markdown files which can cause strange results 12 | [*.md] 13 | trim_trailing_whitespace = false -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // This configuration only applies to the package manager root. 2 | /** @type {import("eslint").Linter.Config} */ 3 | module.exports = { 4 | ignorePatterns: ["apps/**", "packages/**", "workers/**"], 5 | extends: ["@repo/eslint-config/library.js"], 6 | parser: "@typescript-eslint/parser", 7 | parserOptions: { 8 | project: true, 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.md -whitespace 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Questions and Help (on Aptos Developer Discussions) 4 | url: (https://github.com/aptos-labs/aptos-developer-discussions/discussions 5 | about: Support and other Questions are handled by the team and the community on Aptos Developer Discussions. 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/content_issue.yml: -------------------------------------------------------------------------------- 1 | name: Documentation Content Issue 2 | description: Raise an issue with the content on https://aptos.dev 3 | labels: ["documentation"] 4 | body: 5 | - type: input 6 | id: url 7 | attributes: 8 | label: Url 9 | description: "Please provide the primary URL where the content is missing or incorrect. You may add other URLs if needed below." 10 | placeholder: "(e.g., https://aptos.dev/en/network/blockchain" 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: description 15 | attributes: 16 | label: Describe the content issue 17 | placeholder: (e.g., Smart Contracts do not describe what a Smart Vector is) 18 | validations: 19 | required: true 20 | - type: dropdown 21 | id: section 22 | attributes: 23 | multiple: true 24 | label: "Section" 25 | options: 26 | - "move-and-smart-contracts" 27 | - "apis" 28 | - "sdks" 29 | - "indexer" 30 | - "cli" 31 | - "create-aptos-dapp" 32 | - "blockchain" 33 | - "nodes" 34 | validations: 35 | required: true 36 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Description 2 | 3 | ### Checklist 4 | 5 | 6 | - If any existing pages were renamed or removed: 7 | - [ ] Were redirects added to [next.config.mjs](../apps/nextra/next.config.mjs)? 8 | - [ ] Did you update any relative links that pointed to the renamed / removed pages? 9 | - Do all Lints pass? 10 | - [ ] Have you ran `pnpm fmt`? 11 | - [ ] Have you ran `pnpm lint`? 12 | -------------------------------------------------------------------------------- /.github/tagging/script.js: -------------------------------------------------------------------------------- 1 | const tagsByIssueSection = require("./tagsByIssueSection.json"); 2 | 3 | module.exports = async ({ inputSectionsStr, github, context }) => { 4 | console.log("Running tagging script") 5 | console.log(`Input: ${inputSectionsStr}`) 6 | 7 | const inputSections = inputSectionsStr.split(",").map(s => s.trim()) 8 | const body = inputSections 9 | .map(section => tagsByIssueSection[section]) 10 | .filter(Boolean) 11 | .join(" ") 12 | 13 | console.log(`Creating comment via github REST API: ${body}`) 14 | const result = await github.rest.issues.createComment({ 15 | issue_number: context.issue.number, 16 | owner: context.repo.owner, 17 | repo: context.repo.repo, 18 | body 19 | }) 20 | console.log(`Result: ${result.status}`) 21 | } 22 | -------------------------------------------------------------------------------- /.github/tagging/tagsByIssueSection.json: -------------------------------------------------------------------------------- 1 | { 2 | "apis": "@aptos-labs/developer-platform", 3 | "blockchain": "@aptos-labs/blockchain-eng", 4 | "cli": "@gregnazario", 5 | "create-aptos-dapp": "@0xmaayan", 6 | "indexer": "@aptos-labs/ecosystem-infra", 7 | "move-and-smart-contracts": "@aptos-labs/move-eng", 8 | "nodes": "@aptos-labs/prod-eng", 9 | "sdks": "@aptos-labs/developer-platform" 10 | } 11 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | lint: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v4 17 | - uses: pnpm/action-setup@v4 18 | with: 19 | version: 9.15.1 20 | - uses: actions/setup-node@v4 21 | with: 22 | node-version: '23' 23 | cache: 'pnpm' 24 | registry-url: "https://registry.npmjs.org" 25 | - run: pnpm install --frozen-lockfile 26 | - run: pnpm lint 27 | -------------------------------------------------------------------------------- /.github/workflows/close-stale-issues.yaml: -------------------------------------------------------------------------------- 1 | name: "Close stale issues and PRs" 2 | on: 3 | schedule: 4 | - cron: "30 1 * * *" 5 | workflow_dispatch: 6 | 7 | permissions: 8 | # contents: write # only for delete-branch option 9 | issues: write 10 | pull-requests: write 11 | 12 | jobs: 13 | stale: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/stale@v9 17 | with: 18 | days-before-stale: 45 19 | days-before-close: 15 20 | operations-per-run: 500 21 | stale-issue-message: "This issue is stale because it has been open 45 days with no activity. Remove the `stale` label or comment - otherwise this will be closed in 15 days." 22 | stale-pr-message: "This issue is stale because it has been open 45 days with no activity. Remove the `stale` label, comment or push a commit - otherwise this will be closed in 15 days." 23 | exempt-issue-labels: stale-exempt 24 | exempt-pr-labels: stale-exempt 25 | -------------------------------------------------------------------------------- /.github/workflows/semgrep.yaml: -------------------------------------------------------------------------------- 1 | name: Semgrep 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | types: [labeled, opened, synchronize, reopened, auto_merge_enabled] 7 | schedule: 8 | - cron: "0 * * * *" 9 | 10 | jobs: 11 | semgrep: 12 | name: semgrep/ci 13 | runs-on: ubuntu-latest 14 | 15 | container: 16 | image: returntocorp/semgrep 17 | options: --user root 18 | 19 | # Skip any PR created by dependabot to avoid permission issues: 20 | if: (github.actor != 'dependabot[bot]') 21 | 22 | steps: 23 | - uses: actions/checkout@v4 24 | - run: semgrep ci 25 | env: 26 | SEMGREP_RULES: >- 27 | ./.github/linters/semgrep/pull-request-target-code-checkout.yaml 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # OSX 4 | *.DS_Store 5 | venv 6 | 7 | # Generated files 8 | .docusaurus/ 9 | .cache-loader 10 | .idea/ 11 | apps/nextra/next-env.d.ts 12 | apps/nextra/utils/generated/ 13 | 14 | # ignore autogenerated docs 15 | static/docs/rustdocs/ 16 | 17 | # Dependencies 18 | node_modules 19 | .pnp 20 | .pnp.js 21 | 22 | # Local env files 23 | .env 24 | .env.local 25 | .env.development.local 26 | .env.test.local 27 | .env.production.local 28 | 29 | # Testing 30 | coverage 31 | 32 | # Turbo 33 | .turbo 34 | 35 | # Vercel 36 | .vercel 37 | 38 | # Build Outputs 39 | .next/ 40 | out/ 41 | apps/*/build/ 42 | packages/*/build/ 43 | dist/ 44 | 45 | 46 | # Debug 47 | npm-debug.log* 48 | yarn-debug.log* 49 | yarn-error.log* 50 | 51 | # Misc 52 | .DS_Store 53 | *.pem 54 | .temp/* 55 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aptos-labs/developer-docs/aa294842eba8de38bb864b39edf27a5e7729f38b/.npmignore -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | strict-peer-dependencies=false 3 | registry=https://registry.npmjs.org 4 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Symlinked SDKs 2 | static/sdks 3 | 4 | # Docusaurus 5 | build/ 6 | i18n/ 7 | node_modules/ 8 | 9 | # Generated files 10 | .docusaurus/ 11 | 12 | # ignore autogenerated docs 13 | static/docs/rustdocs/ 14 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [] 3 | } 4 | -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | pnpm 9.15.1 2 | nodejs 23.4.0 3 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "eslint.workingDirectories": [ 3 | { 4 | "mode": "auto" 5 | } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # This is the overarching CODEOWNERS file for Aptos.dev documentation. 2 | # It exists to help route review requests and ensure proper review of changes. 3 | # We include each subdirectory and relevant owners below: 4 | # Global rule: 5 | * @gregnazario @hariria @igor-p 6 | 7 | ## Nodes 8 | apps/nextra/pages/en/network/nodes/** @rustielin @michelle-aptos @aptos-labs/prod-eng 9 | 10 | ## Blockchain 11 | apps/nextra/pages/en/network/blockchain/** @aptos-labs/blockchain-eng 12 | 13 | ## Indexer 14 | apps/nextra/pages/en/build/indexer/** @aptos-labs/ecosystem-infra 15 | 16 | ## SDKs 17 | apps/nextra/pages/en/build/sdks/** @gregnazario @aptos-labs/developer-platform 18 | 19 | ## create-aptos-dapp 20 | apps/nextra/pages/en/build/create-aptos-dapp/** @0xmaayan 21 | 22 | ## CLI 23 | apps/nextra/pages/en/build/cli/** @gregnazario 24 | 25 | ## Smart Contracts 26 | apps/nextra/pages/en/build/smart-contracts/** @aptos-labs/move-eng 27 | -------------------------------------------------------------------------------- /apps/nextra/.env.example: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_ORIGIN="http://localhost:3030" 2 | -------------------------------------------------------------------------------- /apps/nextra/.prettierignore: -------------------------------------------------------------------------------- 1 | .next 2 | node_modules 3 | .turbo 4 | next-env.d.ts 5 | generated 6 | -------------------------------------------------------------------------------- /apps/nextra/components/api-reference/DynamicApiReference.tsx: -------------------------------------------------------------------------------- 1 | import dynamic from "next/dynamic"; 2 | 3 | export const DynamicApiReference = dynamic(() => import("./ApiReference"), { 4 | ssr: false, 5 | }); 6 | -------------------------------------------------------------------------------- /apps/nextra/components/api-reference/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./ApiReference"; 2 | export * from "./utils"; 3 | export * from "./DynamicApiReference"; 4 | -------------------------------------------------------------------------------- /apps/nextra/components/api-reference/utils.ts: -------------------------------------------------------------------------------- 1 | export async function fetchApiReference() { 2 | const url = 3 | "https://raw.githubusercontent.com/aptos-labs/aptos-core/main/api/doc/spec.json"; 4 | const result = await fetch(url); 5 | const reference = await result.json(); 6 | 7 | return { 8 | props: { 9 | ssg: { 10 | reference, 11 | }, 12 | }, 13 | }; 14 | } 15 | 16 | /** 17 | * Convert to Dark Mode 18 | * 19 | * Some components do not have a "system" theme like Nextra does 20 | * e.g., Nextra has `"light" | "dark" | "system"`. 21 | * 22 | * This converts Nextra's theme into a theme that is compatible for components 23 | * which only have `"light" | "dark"` 24 | */ 25 | export const convertDarkMode = (mode?: string): "dark" | "light" => { 26 | // Convert "system" to the appropriate dark/light mode 27 | if (mode === "system") { 28 | // Check the system preference for dark mode 29 | const isDarkMode = 30 | window.matchMedia && 31 | window.matchMedia("(prefers-color-scheme: dark)").matches; 32 | return isDarkMode ? "dark" : "light"; 33 | } 34 | 35 | // Return the mode if it's already "dark" or "light" 36 | return (mode || "light") as "dark" | "light"; 37 | }; 38 | 39 | export default fetchApiReference; 40 | -------------------------------------------------------------------------------- /apps/nextra/components/beta-notice/IndexerBetaNotice.tsx: -------------------------------------------------------------------------------- 1 | import { Callout } from "nextra/components"; 2 | 3 | export function IndexerBetaNotice() { 4 | return ( 5 | 6 | The Indexer API, Transaction Stream Service, and Custom Processors are 7 | currently in beta. Please report any problems you encounter by creating an 8 | issue in the{" "} 9 | 14 | aptos-indexer-processors 15 | {" "} 16 | repo. 17 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /apps/nextra/components/beta-notice/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./IndexerBetaNotice"; 2 | -------------------------------------------------------------------------------- /apps/nextra/components/buttons/Button.tsx: -------------------------------------------------------------------------------- 1 | export interface PrimaryOutlineButtonProps { 2 | href: string; 3 | children: React.ReactNode; 4 | } 5 | 6 | export function PrimaryOutlineButton({ 7 | children, 8 | href, 9 | }: PrimaryOutlineButtonProps) { 10 | return ( 11 | 19 | {children} 20 | 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /apps/nextra/components/card/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Card"; 2 | -------------------------------------------------------------------------------- /apps/nextra/components/codeblock/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Codeblock"; 2 | -------------------------------------------------------------------------------- /apps/nextra/components/diagrams/use-draw.ts: -------------------------------------------------------------------------------- 1 | import { useRouter } from "nextra/hooks"; 2 | 3 | export function useDraw(paths = {}, name = "") { 4 | const { locale, defaultLocale } = useRouter() as { 5 | locale: string; 6 | defaultLocale: string; 7 | }; 8 | 9 | if (!Object.hasOwn(paths, defaultLocale)) { 10 | throw new Error( 11 | `Please provide '${defaultLocale}' locale inside '${paths}'.`, 12 | ); 13 | } 14 | 15 | if ( 16 | typeof paths[locale] === "string" && 17 | typeof paths[defaultLocale] === "string" 18 | ) { 19 | return paths[locale] || paths[defaultLocale]; 20 | } 21 | 22 | return paths[locale]?.[name] || paths[defaultLocale][name]; 23 | } 24 | -------------------------------------------------------------------------------- /apps/nextra/components/error/LocaleError.tsx: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | 3 | export interface LocaleErrorProps { 4 | redirectUrl: string; 5 | } 6 | 7 | export default function LocaleError({ redirectUrl }: LocaleErrorProps) { 8 | return ( 9 |
10 |

We do not have the translated version of those docs at the moment

11 | 15 | ← Go back to English docs 16 | 17 |
18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /apps/nextra/components/error/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Error"; 2 | -------------------------------------------------------------------------------- /apps/nextra/components/external.mdx: -------------------------------------------------------------------------------- 1 | import { Callout } from 'nextra/components' 2 | 3 | 4 | This `` comes from `external.mdx` 5 | 6 | -------------------------------------------------------------------------------- /apps/nextra/components/features.module.css: -------------------------------------------------------------------------------- 1 | .features { 2 | display: grid; 3 | grid-template-columns: 1fr 1fr 1fr 1fr; 4 | gap: 1rem 2rem; 5 | margin: 2.5rem 0 2rem; 6 | } 7 | .feature { 8 | align-items: center; 9 | display: inline-flex; 10 | } 11 | .feature h4 { 12 | margin: 0 0 0 0.5rem; 13 | font-weight: 700; 14 | font-size: 1.1rem; 15 | white-space: nowrap; 16 | } 17 | @media (max-width: 860px) { 18 | .features { 19 | gap: 1rem 0.5rem; 20 | } 21 | .feature { 22 | padding-left: 0; 23 | justify-content: center; 24 | } 25 | .feature svg { 26 | width: 20px; 27 | } 28 | .feature h4 { 29 | font-size: 0.9rem; 30 | } 31 | } 32 | @media (max-width: 660px) { 33 | .features { 34 | grid-template-columns: 1fr 1fr; 35 | } 36 | } 37 | @media (max-width: 370px) { 38 | .feature h4 { 39 | font-size: 0.8rem; 40 | } 41 | .feature svg { 42 | width: 16px; 43 | stroke-width: 2.5px; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /apps/nextra/components/framework-reference/index.tsx: -------------------------------------------------------------------------------- 1 | export function AptosFrameworkReference() { 2 | return ( 3 | 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /apps/nextra/components/graphql/DynamicGraphQL.tsx: -------------------------------------------------------------------------------- 1 | import dynamic from "next/dynamic"; 2 | import GraphQLSkeleton from "./GraphQLSkeleton"; 3 | 4 | /** 5 | * Dynamic GraphQLEditor 6 | * 7 | * Next.js must render this as a client-side component. It is not server side renderable 8 | * largely due to access to the window object (localstorage) and client side state. 9 | * 10 | * Loading states are provided through the component 11 | */ 12 | export const GraphQLEditor = dynamic(() => import("./NonDynamicGraphQL"), { 13 | ssr: false, 14 | loading: () => , 15 | }); 16 | 17 | export default GraphQLEditor; 18 | -------------------------------------------------------------------------------- /apps/nextra/components/graphql/OLD_GraphQL.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import dynamic from "next/dynamic"; 3 | import type { Fetcher } from "@graphiql/toolkit"; 4 | import type { GraphiQLProps } from "graphiql"; 5 | import "graphiql/graphiql.min.css"; 6 | 7 | const GraphiQL: React.FunctionComponent = dynamic( 8 | () => import("graphiql"), 9 | { 10 | loading: () =>
Loading...
, 11 | ssr: false, 12 | }, 13 | ) as any; 14 | 15 | const fetcher: Fetcher = async (graphQLParams) => { 16 | const data = await fetch("https://api.mainnet.aptoslabs.com/v1/graphql", { 17 | method: "POST", 18 | headers: { 19 | Accept: "application/json", 20 | "Content-Type": "application/json", 21 | }, 22 | body: JSON.stringify(graphQLParams), 23 | credentials: "same-origin", 24 | }); 25 | return data.json().catch(() => data.text()); 26 | }; 27 | 28 | export const OLD_GraphQL = () => { 29 | return ; 30 | }; 31 | 32 | export default OLD_GraphQL; 33 | -------------------------------------------------------------------------------- /apps/nextra/components/graphql/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./OLD_GraphQL"; 2 | export * from "./DynamicGraphQL"; 3 | export * from "./nft/DynamicNFTGraphQL"; 4 | -------------------------------------------------------------------------------- /apps/nextra/components/graphql/nft/DynamicNFTGraphQL.tsx: -------------------------------------------------------------------------------- 1 | import dynamic from "next/dynamic"; 2 | import GraphQLSkeleton from "../GraphQLSkeleton"; 3 | 4 | /** 5 | * Dynamic NFTGraphQLEditor 6 | * 7 | * Next.js must render this as a client-side component. It is not server side renderable 8 | * largely due to access to the window object (localstorage) and client side state. 9 | * 10 | * Loading states are provided through the component 11 | */ 12 | export const NFTGraphQLEditor = dynamic(() => import("./NFTGraphQL"), { 13 | ssr: false, 14 | loading: () => , 15 | }); 16 | 17 | export default NFTGraphQLEditor; 18 | -------------------------------------------------------------------------------- /apps/nextra/components/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./card"; 2 | export * from "./tabs"; 3 | export * from "./themed-image"; 4 | export * from "./graphql"; 5 | export * from "./beta-notice"; 6 | export * from "./codeblock"; 7 | export * from "./remote-codeblock"; 8 | export * from "./api-reference"; 9 | export * from "./framework-reference"; 10 | export * from "./media"; 11 | export * from "./error"; 12 | export * from "./move-reference"; 13 | -------------------------------------------------------------------------------- /apps/nextra/components/landing/components/GradientText.tsx: -------------------------------------------------------------------------------- 1 | import { Slot } from "@radix-ui/react-slot"; 2 | import { HTMLAttributes, ReactNode, forwardRef } from "react"; 3 | import { cn } from "utils/cn"; 4 | 5 | export interface GradientTextProps extends HTMLAttributes { 6 | children: ReactNode; 7 | asChild?: boolean; 8 | } 9 | 10 | export const GradientText = forwardRef( 11 | ({ children, asChild, className, ...props }, ref) => { 12 | const Component = asChild ? Slot : "div"; 13 | return ( 14 | 24 | {children} 25 | 26 | ); 27 | }, 28 | ); 29 | GradientText.displayName = "GradientText"; 30 | -------------------------------------------------------------------------------- /apps/nextra/components/landing/components/Section.tsx: -------------------------------------------------------------------------------- 1 | export function Section({ children }: React.PropsWithChildren) { 2 | return ( 3 |
4 | {children} 5 |
6 | ); 7 | } 8 | 9 | export function SectionHeader({ children }: React.PropsWithChildren) { 10 | return ( 11 |

17 | {children} 18 |

19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /apps/nextra/components/login-button/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from "react"; 2 | import { Button } from "@components/landing/components/Button"; 3 | 4 | export function LoginButton({ 5 | handleLogin, 6 | provider, 7 | icon, 8 | className, 9 | }: { 10 | handleLogin: () => void; 11 | provider: string; 12 | icon?: ReactNode; 13 | className?: string; 14 | }) { 15 | return ( 16 | 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /apps/nextra/components/media/index.tsx: -------------------------------------------------------------------------------- 1 | export function YouTube({ title, id }: { title: string; id: string }) { 2 | return ( 3 | 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /apps/nextra/components/move-reference/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./MoveReference"; 2 | export * from "./ModuleSelectContainer"; 3 | export * from "./shared"; 4 | export * from "./MoveReferenceProvider"; 5 | -------------------------------------------------------------------------------- /apps/nextra/components/move-reference/shared.ts: -------------------------------------------------------------------------------- 1 | // MOVE MODULES 2 | export const PKGS = [ 3 | "move-stdlib", 4 | "aptos-stdlib", 5 | "aptos-framework", 6 | "aptos-token", 7 | "aptos-token-objects", 8 | ] as const; 9 | 10 | // GITHUB 11 | export const GITHUB_APTOS_CORE = 12 | "https://raw.githubusercontent.com/aptos-labs/aptos-core"; 13 | 14 | export const GITHUB_APTOS_CORE_CONTENT = `https://github.com/aptos-labs/aptos-core/blob`; 15 | 16 | // BRANCHES 17 | export const BRANCHES = ["mainnet", "testnet", "devnet", "main"] as const; 18 | export const DEFAULT_BRANCH = BRANCHES[0]; 19 | export const DEFAULT_FRAMEWORK = PKGS[0]; 20 | export const TENG_COMMIT = "0522837fab5552c027c9dfa73a89907e3980a131"; 21 | 22 | export type Branch = (typeof BRANCHES)[number]; 23 | export type Framework = (typeof PKGS)[number]; 24 | export type FrameworkData = { 25 | framework: Framework; 26 | pages: { id: string; name: string }[]; 27 | }; 28 | 29 | // BRANCH TITLES 30 | export const BRANCH_TITLES: Record = { 31 | mainnet: "Mainnet", 32 | testnet: "Testnet", 33 | devnet: "Devnet", 34 | main: "Main", 35 | }; 36 | -------------------------------------------------------------------------------- /apps/nextra/components/preload-search/DynamicPreloadSearch.tsx: -------------------------------------------------------------------------------- 1 | import dynamic from "next/dynamic"; 2 | 3 | export const DynamicPreloadSearch = dynamic(() => import("./PreloadSearch"), { 4 | ssr: false, 5 | }); 6 | -------------------------------------------------------------------------------- /apps/nextra/components/preload-search/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./PreloadSearch"; 2 | export * from "./DynamicPreloadSearch"; 3 | -------------------------------------------------------------------------------- /apps/nextra/components/remote-codeblock/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./RemoteCodeblock"; 2 | export * from "./types"; 3 | export * from "./utils"; 4 | -------------------------------------------------------------------------------- /apps/nextra/components/remote-codeblock/types.ts: -------------------------------------------------------------------------------- 1 | export interface CodeSnippet { 2 | filename: string; 3 | owner: string; 4 | repo: string; 5 | path: string; 6 | commit_sha: string; 7 | start_line: string; 8 | end_line?: string; 9 | code: string; 10 | github_permalink: string; 11 | used_in_latest_docs: boolean; 12 | updated_at: string; 13 | } 14 | 15 | export type ParsedCodeSnippet = CodeSnippet & { 16 | highlightedCode: TrustedHTML; 17 | language: string; 18 | }; 19 | 20 | export interface CodecacheResponse { 21 | data: T; 22 | status: "success" | "error"; 23 | status_code: 200 | 400 | 403; 24 | message?: string; 25 | } 26 | 27 | export interface CodecacheSSGProps { 28 | props: { 29 | ssg: { 30 | [github_permalink: string]: T; 31 | }; 32 | }; 33 | } 34 | -------------------------------------------------------------------------------- /apps/nextra/components/select/Select.tsx: -------------------------------------------------------------------------------- 1 | import { forwardRef } from "react"; 2 | 3 | export interface OptionProps { 4 | children: JSX.Element | string; 5 | selected?: boolean; 6 | value: string; 7 | } 8 | 9 | export function Option({ children, selected, value, ...props }: OptionProps) { 10 | return ( 11 | 14 | ); 15 | } 16 | 17 | interface GenericSelectProps 18 | extends React.PropsWithoutRef {} 19 | 20 | /** 21 | * Select Nextra Component 22 | * 23 | * @example 24 | * ```tsx 25 | * 30 | * ``` 31 | */ 32 | const SelectRoot = forwardRef( 33 | ({ children, defaultValue, ...props }, ref) => ( 34 | 37 | ), 38 | ); 39 | SelectRoot.displayName = "Select"; 40 | 41 | export const Select = Object.assign(SelectRoot, { Option }); 42 | -------------------------------------------------------------------------------- /apps/nextra/components/select/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Select"; 2 | -------------------------------------------------------------------------------- /apps/nextra/components/tabs/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./Tabs"; 2 | -------------------------------------------------------------------------------- /apps/nextra/components/themed-image/ThemedImage.tsx: -------------------------------------------------------------------------------- 1 | export interface ThemedImage { 2 | sources: { 3 | light: string; 4 | dark: string; 5 | }; 6 | alt: string; 7 | } 8 | 9 | /** 10 | * ThemedImage Nextra Component 11 | * 12 | * Enables users to add a component that displays corresponding images 13 | * based on the light / dark mode on the page. `light` and `dark` 14 | * are both used as the `src` fields for the component 15 | * 16 | * ```ts 17 | * 18 | * ``` 19 | */ 20 | export function ThemedImage({ sources, alt }: ThemedImage) { 21 | return ( 22 |
23 | {alt} 29 | {alt} 35 |
36 | ); 37 | } 38 | 39 | export default ThemedImage; 40 | -------------------------------------------------------------------------------- /apps/nextra/components/themed-image/index.tsx: -------------------------------------------------------------------------------- 1 | export * from "./ThemedImage"; 2 | -------------------------------------------------------------------------------- /apps/nextra/generate-sitemap-index.cjs: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const path = require("path"); 3 | 4 | const outputDir = path.resolve(__dirname, "public"); 5 | 6 | const loadConfig = async () => { 7 | const configModule = await import("./next-sitemap.config.mjs"); 8 | return configModule.default; 9 | }; 10 | 11 | const loadDocsConfig = async () => { 12 | const docsConfigModule = await import("./docs.config.js"); 13 | return docsConfigModule; 14 | }; 15 | 16 | const getAvailableLanguages = async () => { 17 | const config = await loadConfig(); 18 | const languages = config.languages; 19 | return languages.filter((lang) => 20 | fs.existsSync(path.resolve(outputDir, `sitemap-${lang}.xml`)), 21 | ); 22 | }; 23 | 24 | const generateSitemapIndex = async () => { 25 | const availableLanguages = await getAvailableLanguages(); 26 | const { getOrigin } = await loadDocsConfig(); 27 | const origin = getOrigin(); 28 | 29 | const sitemapIndexContent = ` 30 | 31 | ${availableLanguages.map((lang) => `${origin}/sitemap-${lang}.xml`).join("")} 32 | `; 33 | 34 | fs.writeFileSync(path.resolve(outputDir, "sitemap.xml"), sitemapIndexContent); 35 | console.log("Index sitemap written to public/sitemap.xml"); 36 | }; 37 | 38 | generateSitemapIndex(); 39 | -------------------------------------------------------------------------------- /apps/nextra/lib/firebase.ts: -------------------------------------------------------------------------------- 1 | import { initializeApp } from "firebase/app"; 2 | import { Auth, getAuth } from "firebase/auth"; 3 | 4 | // Your web app's Firebase configuration 5 | const firebaseConfig = { 6 | apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY, 7 | authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, 8 | projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID, 9 | appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID, 10 | }; 11 | 12 | // Initialize Firebase 13 | export let auth: Auth | null = null; 14 | 15 | try { 16 | const app = initializeApp(firebaseConfig); 17 | auth = getAuth(app); 18 | } catch (e) { 19 | console.error( 20 | "Could not instantiate firebase. Ensure that env variables are set!", 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /apps/nextra/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. 6 | -------------------------------------------------------------------------------- /apps/nextra/next-sitemap.config.mjs: -------------------------------------------------------------------------------- 1 | import { i18nConfig, getOrigin } from "./docs.config.js"; 2 | 3 | /** 4 | * @type {import('next-sitemap').IConfig} 5 | */ 6 | export default { 7 | siteUrl: getOrigin() || "https://preview.aptos.dev", 8 | changefreq: "daily", 9 | priority: 0.7, 10 | sitemapSize: 5000, 11 | generateRobotsTxt: true, 12 | outDir: "public", 13 | generateIndexSitemap: false, 14 | languages: Object.keys(i18nConfig).map((key) => i18nConfig[key].locale), 15 | }; 16 | -------------------------------------------------------------------------------- /apps/nextra/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import LocaleError from "@components/error/LocaleError"; 2 | import { Error } from "@components/index"; 3 | import Link from "next/link"; 4 | import { useRouter } from "nextra/hooks"; 5 | import { useEffect, useState } from "react"; 6 | import { checkIfEnglishPathAvailable } from "utils/locale"; 7 | 8 | export default function Page() { 9 | const { asPath } = useRouter(); 10 | const [pathname, setPathname] = useState(null); 11 | const { isEnglishPathAvailable, redirectUrl } = 12 | checkIfEnglishPathAvailable(pathname); 13 | 14 | useEffect(() => { 15 | if (typeof window !== "undefined") { 16 | setPathname(asPath); 17 | } 18 | }, [asPath]); 19 | 20 | const content = 21 | redirectUrl && isEnglishPathAvailable ? ( 22 | 23 | ) : ( 24 | 28 | ← Go back to home 29 | 30 | ); 31 | 32 | return ( 33 | 34 |
35 |
{content}
36 |
37 |
38 | ); 39 | } 40 | -------------------------------------------------------------------------------- /apps/nextra/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import { GoogleAnalytics } from "@next/third-parties/google"; 2 | import { docsConfig } from "@docs-config"; 3 | import "../styles.css"; 4 | import { DynamicPreloadSearch } from "@components/preload-search"; 5 | 6 | export const config = { 7 | runtime: "experimental-edge", 8 | }; 9 | 10 | /** 11 | * Learn more about using Google Analytics 4 with the 12 | * Next.js pages router here 13 | * @see https://nextjs.org/docs/pages/building-your-application/optimizing/third-party-libraries#google-analytics 14 | */ 15 | export default function App({ Component, pageProps }) { 16 | return ( 17 | <> 18 | 19 | {/* TODO: Andrew to revisit it https://aptos-org.slack.com/archives/C03EG004E56/p1747077993064609?thread_ts=1747077730.108909&cid=C03EG004E56 */} 20 | {/* */} 21 | 22 | 23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /apps/nextra/pages/_document.tsx: -------------------------------------------------------------------------------- 1 | import Document, { Head, Html, Main, NextScript } from "next/document"; 2 | import Script from "next/script"; 3 | import { SkipNavLink } from "nextra-theme-docs"; 4 | 5 | class MyDocument extends Document { 6 | render() { 7 | return ( 8 | 9 | 10 |